css-houdini-drafts icon indicating copy to clipboard operation
css-houdini-drafts copied to clipboard

[css-properties-values-api-1] `CSSPropertyRule.initialValue` should not be nullable

Open cdoublev opened this issue 1 year ago • 1 comments

The spec says it is nullable / it may not be present:

initialValue, of type CSSOMString, readonly, nullable

The initial value associated with the @property rule, which may not be present.

https://drafts.css-houdini.org/css-properties-values-api-1/#dom-csspropertyrule-initialvalue

But also:

If the value of the syntax descriptor is the universal syntax definition, then the initial-value descriptor is optional. If omitted, the initial value of the property is the guaranteed-invalid value.

Otherwise, [...] The initial-value descriptor must be present.

https://drafts.css-houdini.org/css-properties-values-api-1/#initial-value-descriptor

So when the descriptor declaration is omitted, it seems the attribute should serialize the guaranteed-invalid value, which serializes to empty string.

In Chrome:

const styleSheet = new CSSStyleSheet()
styleSheet.insertRule(`
  @property --custom {
    inherits: false;
    syntax: "*";
  }
`)
styleSheet.cssRules.length; // 1
styleSheet.cssRules[0].initialValue; // null

cdoublev avatar Nov 08 '23 10:11 cdoublev

However you may want to return null to avoid serializing rule.cssText with initial-value: ; (not omitted, not invalid).

cdoublev avatar Nov 08 '23 10:11 cdoublev