Sha256: 691e0f55b9541ccca83b0278bfbdd4bca7730924f0d1935dab39f7c3ddd82bea

Contents?: true

Size: 1.83 KB

Versions: 26

Compression:

Stored size: 1.83 KB

Contents

"use strict";

const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const { getLabelsForLabelable } = require("../helpers/form-controls");
const { parseFloatingPointNumber } = require("../helpers/strings");

class HTMLProgressElementImpl extends HTMLElementImpl {
  constructor(globalObject, args, privateData) {
    super(globalObject, args, privateData);
    this._labels = null;
  }

  get _isDeterminate() {
    return this.hasAttributeNS(null, "value");
  }

  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-progress-value
  get _value() {
    const valueAttr = this.getAttributeNS(null, "value");
    if (valueAttr !== null) {
      const parsedValue = parseFloatingPointNumber(valueAttr);
      if (parsedValue !== null && parsedValue > 0) {
        return parsedValue;
      }
    }
    return 0;
  }

  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-progress-current-value
  get _currentValue() {
    const value = this._value;
    return value > this._maximumValue ? this._maximumValue : value;
  }

  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-progress-maximum
  get _maximumValue() {
    const maxAttr = this.getAttributeNS(null, "max");
    if (maxAttr !== null) {
      const parsedMax = parseFloatingPointNumber(maxAttr);
      if (parsedMax !== null && parsedMax > 0) {
        return parsedMax;
      }
    }
    return 1.0;
  }

  get value() {
    if (this._isDeterminate) {
      return this._currentValue;
    }
    return 0;
  }
  set value(value) {
    this.setAttributeNS(null, "value", value);
  }

  get position() {
    if (!this._isDeterminate) {
      return -1;
    }

    return this._currentValue / this._maximumValue;
  }

  get labels() {
    return getLabelsForLabelable(this);
  }
}

module.exports = {
  implementation: HTMLProgressElementImpl
};

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.25 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.24 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.23 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.22 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.21 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.20 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.19 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.18 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.17 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.16 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.15 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.14 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.13 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.12 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.11 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.10 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.9 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.8 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js
clapton-0.0.7 lib/clapton/javascripts/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js