diff --git a/src/uix/soma/components/color-picker/color-picker-provider.svelte.ts b/src/uix/soma/components/color-picker/color-picker-provider.svelte.ts index 311bdf559..f686fbfb0 100644 --- a/src/uix/soma/components/color-picker/color-picker-provider.svelte.ts +++ b/src/uix/soma/components/color-picker/color-picker-provider.svelte.ts @@ -368,6 +368,13 @@ export class ColorPickerProvider { ...this.runtimePart.props, dir: this.opts.dir.current, 'aria-invalid': this.isInvalid || undefined, + // Mirror the morfo `data-state ∈ [open, closed]` disclosure + // contract (same shape as dialog / drawer / popover). The + // ColorPickerProvider doesn't receive `ref` on its opts, so + // the runtime's `syncAttrs` effect can't bind a target and + // emit this attr via `dom.apply`; we set it explicitly here + // so the contract is satisfied. + 'data-state': this.opts.open.current ? ('open' as const) : ('closed' as const), 'data-format': this.opts.format.current, 'data-invalid': boolToEmptyStrOrUndef(this.isInvalid), 'data-disabled': boolToEmptyStrOrUndef(this.isDisabled),