@odx/foundation 1.0.0-beta.90 → 1.0.0-beta.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CanBeDisabled, CustomElement } from '../../lib/main.js';
|
|
2
|
-
import { TemplateResult } from 'lit';
|
|
2
|
+
import { PropertyValues, TemplateResult } from 'lit';
|
|
3
3
|
declare global {
|
|
4
4
|
interface HTMLElementTagNameMap {
|
|
5
5
|
'odx-card': OdxCard;
|
|
@@ -7,6 +7,8 @@ declare global {
|
|
|
7
7
|
}
|
|
8
8
|
declare const OdxCard_base: import('../../lib/main.js').Constructor<CanBeDisabled> & typeof CustomElement;
|
|
9
9
|
export declare class OdxCard extends OdxCard_base {
|
|
10
|
+
interactive: boolean;
|
|
11
|
+
protected updated(_changedProperties: PropertyValues): void;
|
|
10
12
|
protected render(): TemplateResult;
|
|
11
13
|
}
|
|
12
14
|
export {};
|
|
@@ -19,5 +19,6 @@ export declare class OdxSelect extends ListboxFormControl<OptionControl> {
|
|
|
19
19
|
showDropdown(): void;
|
|
20
20
|
hideDropdown(): void;
|
|
21
21
|
protected render(): TemplateResult;
|
|
22
|
+
protected updated(props: PropertyValues<this>): void;
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=select.d.ts.map
|
package/dist/components.js
CHANGED
|
@@ -430,7 +430,7 @@ __decorateClass([
|
|
|
430
430
|
], _OdxAreaHeader.prototype, "size", 2);
|
|
431
431
|
let OdxAreaHeader = _OdxAreaHeader;
|
|
432
432
|
|
|
433
|
-
const styles$18 = ":host{--color-background: var(--odx-color-background-transparent-pressed);--color-foreground: inherit;--_border-radius: var(--odx-border-radius-circle);--_size: var(--odx-size-225);--
|
|
433
|
+
const styles$18 = ":host{--color-background: var(--odx-color-background-transparent-pressed);--color-foreground: inherit;--_border-radius: var(--odx-border-radius-circle);--_size: var(--odx-size-225);--_font-size: var(--odx-typography-font-size-3);display:flex;position:relative;flex:0 0 auto;flex-direction:column;place-content:center;place-items:center;transition:var(--odx-transition-default);transition-property:background-color,box-shadow;border-radius:var(--_border-radius);background-color:var(--color-background);block-size:var(--_size);inline-size:var(--_size);overflow:clip;vertical-align:middle;color:var(--color-foreground);font-size:var(--_font-size);user-select:none}::slotted(img){position:absolute;inset:var(--odx-size-12);z-index:1;border-radius:var(--_border-radius);inline-size:calc(100% - var(--odx-size-25));pointer-events:none;object-fit:cover}::slotted(odx-icon){font-size:inherit}:host([shape=\"rectangle\"]){--_border-radius: var(--odx-border-radius-sm)}:host([variant=\"neutral\"]){--color-background: var(--odx-experience-color-secondary-rest)}:host([variant=\"primary\"]){--color-background: var(--odx-color-background-primary-rest);--color-foreground: var(--odx-color-foreground-inverse-static)}:host([size=\"sm\"]){--_size: var(--odx-size-150);--_font-size: var(--odx-typography-font-size-1);::slotted(img){inset:var(--odx-size-px);inline-size:calc(100% - var(--odx-size-12))}}:host([size=\"lg\"]){--_size: var(--odx-size-300);--_font-size: var(--odx-typography-font-size-5)}:host([size=\"xl\"]){--_size: var(--odx-size-400);--_font-size: var(--odx-typography-font-size-7)}";
|
|
434
434
|
|
|
435
435
|
const AvatarShape = pick(Shape, ["CIRCLE", "RECTANGLE"]);
|
|
436
436
|
const AvatarSize = pick(Size, ["SM", "MD", "LG", "XL"]);
|
|
@@ -664,24 +664,42 @@ __decorateClass([
|
|
|
664
664
|
], _OdxButtonGroup.prototype, "variant", 2);
|
|
665
665
|
let OdxButtonGroup = _OdxButtonGroup;
|
|
666
666
|
|
|
667
|
-
const styles$12 = ":host{--_card-padding: var(--odx-size-150);display:grid;grid-template-areas:\"image image\" \"avatar avatar\" \"
|
|
667
|
+
const styles$12 = ":host{--_card-padding: var(--odx-size-150);display:grid;grid-template-areas:\"image image\" \"avatar avatar\" \"header header-actions\" \"content content\" \"footer footer\";grid-template-columns:1fr auto;place-content:flex-start;transition:var(--odx-transition-reduced);transition-property:box-shadow,transform,border-color;outline:var(--odx-focus-ring-outline);border:var(--odx-border-width-thin) solid transparent;border-radius:var(--odx-border-radius-md);background-color:var(--odx-color-background-level-1);padding:var(--_card-padding);max-width:100%;overflow:clip}.header,.header-actions{display:flex;gap:var(--odx-size-50);place-items:center;margin-block-end:var(--odx-size-50)}.header{grid-area:header}.header-actions{grid-area:header-actions}.avatar{display:flex;grid-area:avatar;place-items:flex-end;margin-block-start:calc(-1 * var(--odx-size-50))}.image{position:relative;grid-area:image;margin:calc(-1 * (var(--_card-padding) + var(--odx-border-width-thin)))}.image:after{position:absolute;inset:0;transition:var(--odx-transition-default);opacity:0;background-color:var(--odx-color-background-transparent-hover);content:\"\";pointer-events:none;backdrop-filter:blur(var(--odx-elevation-blur))}.content{display:inline-block;grid-area:content}.footer{grid-area:footer}.image+*{margin-block-start:var(--odx-size-250)}.image+.avatar{block-size:0}.avatar+*{margin-block-start:var(--odx-size-50)}slot[name=header]::slotted(odx-avatar){align-self:flex-start}slot[name=image]::slotted(*){max-block-size:100%;inline-size:100%;pointer-events:none;object-fit:cover;aspect-ratio:16 / 9;user-select:none}slot[name=avatar]::slotted(*){margin:0}:host([interactive]){border-color:var(--odx-color-stroke-neutral-subtle);cursor:pointer;user-select:none}:host([interactive]:hover:not(:active)){transform:translateY(calc(-1 * var(--odx-size-12)));border-color:transparent;box-shadow:var(--odx-shadow-level-1);.image:after{opacity:1}}:host([interactive]:active){transform:translateY(0)}:host(:focus-visible){outline-color:var(--odx-color-stroke-focus-outer)}";
|
|
668
668
|
|
|
669
|
-
class
|
|
669
|
+
const _OdxCard = class _OdxCard extends CanBeDisabled(CustomElement) {
|
|
670
|
+
constructor() {
|
|
671
|
+
super(...arguments);
|
|
672
|
+
this.interactive = false;
|
|
673
|
+
}
|
|
670
674
|
static {
|
|
671
|
-
customElement("odx-card", styles$12)(
|
|
675
|
+
customElement("odx-card", styles$12)(_OdxCard);
|
|
676
|
+
}
|
|
677
|
+
updated(_changedProperties) {
|
|
678
|
+
super.updated(_changedProperties);
|
|
679
|
+
if (this.disabled) return;
|
|
680
|
+
if (this.interactive) {
|
|
681
|
+
this.tabIndex = 0;
|
|
682
|
+
} else {
|
|
683
|
+
this.removeAttribute("tabindex");
|
|
684
|
+
}
|
|
672
685
|
}
|
|
673
686
|
render() {
|
|
674
687
|
return html`
|
|
675
|
-
${optionalSlot(this, "header")}
|
|
688
|
+
${optionalSlot(this, "header-actions")}
|
|
676
689
|
${optionalSlot(this, "image")}
|
|
677
690
|
${optionalSlot(this, "avatar")}
|
|
678
|
-
${optionalSlot(this, "
|
|
679
|
-
<div
|
|
691
|
+
${optionalSlot(this, "header")}
|
|
692
|
+
<div class="content">
|
|
680
693
|
<slot></slot>
|
|
681
694
|
</div>
|
|
695
|
+
${optionalSlot(this, "footer")}
|
|
682
696
|
`;
|
|
683
697
|
}
|
|
684
|
-
}
|
|
698
|
+
};
|
|
699
|
+
__decorateClass([
|
|
700
|
+
property({ type: Boolean, reflect: true })
|
|
701
|
+
], _OdxCard.prototype, "interactive", 2);
|
|
702
|
+
let OdxCard = _OdxCard;
|
|
685
703
|
|
|
686
704
|
const styles$11 = ":host{--_indicator-space: var(--odx-size-12);--_indicator-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_indicator-color-background: var(--odx-color-background-control-rest);--_indicator-color-stroke: var(--odx-color-stroke-control-subtle);--_indicator-color-foreground: transparent;--_label-color-foreground: inherit;display:inline-flex;margin-block:var(--odx-size-37);border-radius:var(--odx-border-radius-controls);cursor:pointer;padding:var(--_indicator-space);user-select:none}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;flex-shrink:0;place-content:center;place-items:center;transition-property:background-color,border-color;outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);border:var(--odx-border-width-thin) solid var(--_indicator-color-stroke);border-radius:var(--odx-border-radius-controls);border-color:var(--_indicator-color-stroke);background-color:var(--_indicator-color-background);block-size:var(--_indicator-size);inline-size:var(--_indicator-size);color:var(--_indicator-color-foreground)}.label{display:inline-block}.content{transition-property:color;margin-block:calc(-1 * var(--_indicator-space));color:var(--_label-color-foreground)}:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:empty) .content{display:none}:host(:hover){--_indicator-color-stroke: var(--odx-color-stroke-control-hover);--_indicator-color-background: var(--odx-color-background-control-hover)}:host(:focus-visible) .indicator{outline-color:var(--odx-color-stroke-focus-outer)}:host(:is([checked],[indeterminate])){--_indicator-color-background: var(--odx-color-background-control-selected);--_indicator-color-foreground: var(--odx-color-foreground-inverse-static);--_indicator-color-stroke: var(--odx-color-stroke-control-selected)}:host(:is([checked],[indeterminate]):not(:is([readonly],[disabled])):hover){--_indicator-color-background: var(--odx-color-background-control-selected-hover)}:host([disabled]:not([readonly])){--_indicator-color-background: var(--odx-color-background-disabled-rest);--_indicator-color-stroke: var(--odx-color-background-disabled-rest);--_label-color-foreground: var(--odx-color-foreground-disabled-rest);cursor:not-allowed}:host([disabled]:not([readonly]):is([checked],[indeterminate])){--_indicator-color-background: var(--odx-color-background-disabled-selected);--_indicator-color-foreground: var(--odx-color-foreground-disabled-selected);--_indicator-color-stroke: var(--_indicator-color-background)}:host([readonly]){--_indicator-color-background: var(--odx-color-background-control-readonly);--_indicator-color-stroke: var(--odx-color-stroke-control-readonly);cursor:default}:host([readonly][checked]){--_indicator-color-foreground: var(--odx-color-foreground-rest)}";
|
|
687
705
|
|
|
@@ -1144,7 +1162,7 @@ const _OdxDropdown = class _OdxDropdown extends PopoverHost {
|
|
|
1144
1162
|
}
|
|
1145
1163
|
mountPopover(referenceElement) {
|
|
1146
1164
|
super.mountPopover(referenceElement);
|
|
1147
|
-
if (
|
|
1165
|
+
if (!referenceElement) return;
|
|
1148
1166
|
this.#updateAriaAttributes(referenceElement, this.id);
|
|
1149
1167
|
referenceElement.addEventListener("click", this.#handleClick);
|
|
1150
1168
|
referenceElement.addEventListener("keydown", this.#handleKeyboardEvent);
|
|
@@ -2745,7 +2763,7 @@ __decorateClass([
|
|
|
2745
2763
|
], _OdxNavigationItem.prototype, "selected", 2);
|
|
2746
2764
|
let OdxNavigationItem = _OdxNavigationItem;
|
|
2747
2765
|
|
|
2748
|
-
const styles$y = ":host{--_color-background: var(--odx-color-background-transparent);--_color-foreground: inherit;display:inline-flex;gap:var(--odx-size-75);place-items:center;transition:var(--odx-transition-reduced);transition-property:background-color,color;border-radius:var(--odx-border-radius-controls);background-color:var(--_color-background);cursor:pointer;padding:var(--odx-size-37) var(--odx-size-75);color:var(--_color-foreground);user-select:none}odx-checkbox{margin:0}.label{margin-inline-end:auto}:host(:hover){--_color-background: var(--odx-color-background-transparent-hover)}:host([odx-active]),:host(:active){--_color-background: var(--odx-color-background-transparent-pressed)}:host([selected]){--_color-background: var(--odx-color-background-transparent-selected)}:host([selected]:hover){--_color-background: var(--odx-color-background-transparent-selected-hover)}:host([disabled]){--_color-background: var(--odx-color-background-disabled-rest);--_color-foreground: var(--odx-color-foreground-disabled-rest);cursor:not-allowed;pointer-events:none}:host([selected][disabled]){--_color-background: var(--odx-color-background-disabled-selected);--_color-foreground: var(--odx-color-foreground-disabled-selected)}:host([selected][odx-active]),:host([selected]:active){--_color-background: var(--odx-color-background-transparent-selected-hover)}";
|
|
2766
|
+
const styles$y = ":host{--_color-background: var(--odx-color-background-transparent-rest);--_color-foreground: inherit;display:inline-flex;gap:var(--odx-size-75);place-items:center;transition:var(--odx-transition-reduced);transition-property:background-color,color;border-radius:var(--odx-border-radius-controls);background-color:var(--_color-background);cursor:pointer;padding:var(--odx-size-37) var(--odx-size-75);color:var(--_color-foreground);user-select:none}odx-checkbox{margin:0}.label{margin-inline-end:auto}:host(:hover:not([readonly])){--_color-background: var(--odx-color-background-transparent-hover)}:host([odx-active]:not([readonly])),:host(:active:not([readonly])){--_color-background: var(--odx-color-background-transparent-pressed)}:host([selected]){--_color-background: var(--odx-color-background-transparent-selected)}:host([selected]:hover:not([readonly])){--_color-background: var(--odx-color-background-transparent-selected-hover)}:host([disabled]){--_color-background: var(--odx-color-background-disabled-rest);--_color-foreground: var(--odx-color-foreground-disabled-rest);cursor:not-allowed;pointer-events:none}:host([readonly]){cursor:default}:host([selected][disabled]){--_color-background: var(--odx-color-background-disabled-selected);--_color-foreground: var(--odx-color-foreground-disabled-selected)}:host([selected][odx-active]:not([readonly])),:host([selected]:active:not([readonly])){--_color-background: var(--odx-color-background-transparent-selected-hover)}";
|
|
2749
2767
|
|
|
2750
2768
|
class OdxOption extends OptionControl {
|
|
2751
2769
|
static {
|
|
@@ -3226,7 +3244,7 @@ __decorateClass([
|
|
|
3226
3244
|
], _OdxSearchBar.prototype, "readonly", 2);
|
|
3227
3245
|
let OdxSearchBar = _OdxSearchBar;
|
|
3228
3246
|
|
|
3229
|
-
const styles$o = "@layer base{:host{--_color-background: var(--odx-color-background-control-rest);--_color-foreground: var(--odx-color-foreground-rest);--_color-stroke: var(--odx-color-stroke-control-rest);--_control-size: var(--odx-size-225);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-50);display:block;border-radius:var(--odx-border-radius-controls);cursor:pointer;max-inline-size:320px;overflow:hidden;color:var(--_color-foreground)}.base{display:flex;gap:var(--_padding-block);align-items:center;transition:var(--odx-transition-reduced);transition-property:background-color,border-color;border:var(--odx-border-width-thin) solid transparent;border-bottom-color:var(--_color-stroke);background-color:var(--_color-background);padding-inline:var(--_padding-inline);block-size:var(--_control-size);min-width:200px;overflow:hidden;text-align:start;user-select:none;&:focus-visible{outline:var(--odx-focus-ring-outline);outline-color:var(--odx-color-stroke-focus-outer)}}.value{margin-inline-end:auto;font-weight:var(--odx-typography-font-weight-medium)}.indicator{font-size:var(--odx-typography-font-size-6)}[part~=dropdown]{--max-block-size: 320px}odx-chip{--_border-radius: var(--odx-border-radius-controls)}slot[name=placeholder]{color:var(--odx-color-foreground-rest-subtle);font-weight:var(--odx-typography-font-weight-normal)}}@layer state{:host(:hover){--_color-background: var(--odx-color-background-control-hover);--_color-stroke: var(--odx-color-stroke-control-hover)}:host([multiple]):has(odx-chip) .base{padding-inline-start:var(--_padding-block)}:host([disabled]:not([readonly])){--_color-foreground: var(--odx-color-foreground-disabled-rest);--_color-background: var(--odx-color-background-disabled-rest);--_color-stroke: var(--odx-color-stroke-disabled-rest);cursor:not-allowed;slot[name=placeholder]{color:var(---_color-foreground)}}:host([readonly]){--_color-background: var(--odx-color-background-control-readonly);--_color-stroke: var(--odx-color-stroke-control-readonly);cursor:default;odx-chip{--_color-background: var(--odx-color-foreground-disabled-rest)}.indicator{color:var(--odx-color-foreground-rest-subtle)}}}";
|
|
3247
|
+
const styles$o = "@layer base{:host{--_color-background: var(--odx-color-background-control-rest);--_color-foreground: var(--odx-color-foreground-rest);--_color-stroke: var(--odx-color-stroke-control-rest);--_control-size: var(--odx-size-225);--_padding-block: var(--odx-size-37);--_padding-inline: var(--odx-size-50);display:block;border-radius:var(--odx-border-radius-controls);cursor:pointer;inline-size:100%;max-inline-size:320px;overflow:hidden;color:var(--_color-foreground)}.base{display:flex;gap:var(--_padding-block);align-items:center;transition:var(--odx-transition-reduced);transition-property:background-color,border-color;border:var(--odx-border-width-thin) solid transparent;border-bottom-color:var(--_color-stroke);background-color:var(--_color-background);padding-inline:var(--_padding-inline);block-size:var(--_control-size);min-width:200px;overflow:hidden;text-align:start;user-select:none;&:focus-visible{outline:var(--odx-focus-ring-outline);outline-color:var(--odx-color-stroke-focus-outer)}}.value{margin-inline-end:auto;font-weight:var(--odx-typography-font-weight-medium)}.indicator{font-size:var(--odx-typography-font-size-6)}[part~=dropdown]{--max-block-size: 320px}odx-chip{--_border-radius: var(--odx-border-radius-controls)}slot[name=placeholder]{color:var(--odx-color-foreground-rest-subtle);font-weight:var(--odx-typography-font-weight-normal)}}@layer state{:host(:hover){--_color-background: var(--odx-color-background-control-hover);--_color-stroke: var(--odx-color-stroke-control-hover)}:host([multiple]):has(odx-chip) .base{padding-inline-start:var(--_padding-block)}:host([disabled]:not([readonly])){--_color-foreground: var(--odx-color-foreground-disabled-rest);--_color-background: var(--odx-color-background-disabled-rest);--_color-stroke: var(--odx-color-stroke-disabled-rest);cursor:not-allowed;slot[name=placeholder]{color:var(---_color-foreground)}}:host([readonly]){--_color-background: var(--odx-color-background-control-readonly);--_color-stroke: var(--odx-color-stroke-control-readonly);cursor:default;odx-chip{--_color-background: var(--odx-color-foreground-disabled-rest)}.indicator{color:var(--odx-color-foreground-rest-subtle)}}}";
|
|
3230
3248
|
|
|
3231
3249
|
const _OdxSelect = class _OdxSelect extends ListboxFormControl {
|
|
3232
3250
|
constructor() {
|
|
@@ -3234,14 +3252,15 @@ const _OdxSelect = class _OdxSelect extends ListboxFormControl {
|
|
|
3234
3252
|
this.maxVisibleSelectedOptions = 2;
|
|
3235
3253
|
this.#handleSlotChange = () => {
|
|
3236
3254
|
super.handleSlotChange();
|
|
3237
|
-
|
|
3255
|
+
this.updateOptions((option) => {
|
|
3238
3256
|
option.type = this.multiple ? "checkbox" : null;
|
|
3239
|
-
}
|
|
3257
|
+
});
|
|
3240
3258
|
};
|
|
3241
3259
|
this.#handleBlur = () => {
|
|
3242
3260
|
this.hideDropdown();
|
|
3243
3261
|
};
|
|
3244
3262
|
this.#handleToggleAll = (event) => {
|
|
3263
|
+
if (this.disabled || this.readonly) return;
|
|
3245
3264
|
event.stopPropagation();
|
|
3246
3265
|
event.preventDefault();
|
|
3247
3266
|
this.value = this.value.length === this.options.length ? [] : this.options.map((option) => option.value);
|
|
@@ -3283,6 +3302,7 @@ const _OdxSelect = class _OdxSelect extends ListboxFormControl {
|
|
|
3283
3302
|
}
|
|
3284
3303
|
render() {
|
|
3285
3304
|
const allSelected = this.value.length === this.options.length;
|
|
3305
|
+
const dropdownDisabled = this.disabled || this.readonly && this.selectedOptions.length === 0;
|
|
3286
3306
|
return html`
|
|
3287
3307
|
<div class="base" tabindex="0" aria-haspopup="listbox">
|
|
3288
3308
|
<div class="value" odxPreventTextOverflow>
|
|
@@ -3298,17 +3318,25 @@ const _OdxSelect = class _OdxSelect extends ListboxFormControl {
|
|
|
3298
3318
|
)}
|
|
3299
3319
|
<odx-icon class="indicator" name="core::chevron-down"></odx-icon>
|
|
3300
3320
|
</div>
|
|
3301
|
-
<odx-dropdown part="dropdown" role="listbox"
|
|
3321
|
+
<odx-dropdown part="dropdown" role="listbox" ?disabled=${dropdownDisabled} match-reference-width>
|
|
3302
3322
|
${when(
|
|
3303
|
-
this.multiple,
|
|
3323
|
+
!dropdownDisabled && this.multiple,
|
|
3304
3324
|
() => html`
|
|
3305
|
-
<odx-option type="checkbox" @click=${this.#handleToggleAll} ?selected=${allSelected} aria-hidden="true">Toggle all</odx-option>
|
|
3325
|
+
<odx-option type="checkbox" @click=${this.#handleToggleAll} ?readonly=${this.readonly} ?selected=${allSelected} aria-hidden="true">Toggle all</odx-option>
|
|
3306
3326
|
`
|
|
3307
3327
|
)}
|
|
3308
3328
|
<slot @slotchange=${this.#handleSlotChange}></slot>
|
|
3309
3329
|
</odx-dropdown>
|
|
3310
3330
|
`;
|
|
3311
3331
|
}
|
|
3332
|
+
updated(props) {
|
|
3333
|
+
super.updated(props);
|
|
3334
|
+
if (props.has("readonly")) {
|
|
3335
|
+
this.updateOptions((option) => {
|
|
3336
|
+
option.readonly = this.readonly;
|
|
3337
|
+
});
|
|
3338
|
+
}
|
|
3339
|
+
}
|
|
3312
3340
|
#isClearable() {
|
|
3313
3341
|
return !(this.disabled || this.readonly || this.required) && this.selectedOptions.length > 0;
|
|
3314
3342
|
}
|
|
@@ -20,6 +20,6 @@ export declare abstract class ListboxFormControl<Option extends OptionControl> e
|
|
|
20
20
|
protected handleSlotChange(): void;
|
|
21
21
|
protected updateValue(option?: Option): void;
|
|
22
22
|
protected willUpdate(props: PropertyValues<this>): void;
|
|
23
|
-
protected
|
|
23
|
+
protected updateOptions(updateFn: (option: Option) => void): void;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=listbox-form-control.d.ts.map
|
package/dist/main.js
CHANGED
|
@@ -467,6 +467,7 @@ class OptionControl extends CanBeDisabled(CustomElement) {
|
|
|
467
467
|
this.role = null;
|
|
468
468
|
this.value = "";
|
|
469
469
|
this.selected = false;
|
|
470
|
+
this.readonly = false;
|
|
470
471
|
}
|
|
471
472
|
#label;
|
|
472
473
|
set label(value) {
|
|
@@ -479,7 +480,7 @@ class OptionControl extends CanBeDisabled(CustomElement) {
|
|
|
479
480
|
return !(this.disabled || this.hidden);
|
|
480
481
|
}
|
|
481
482
|
canSelect() {
|
|
482
|
-
return this.canActivate();
|
|
483
|
+
return this.canActivate() && !this.readonly;
|
|
483
484
|
}
|
|
484
485
|
isActive() {
|
|
485
486
|
return this.hasAttribute("odx-active") && !this.canActivate();
|
|
@@ -512,6 +513,9 @@ __decorateClass([
|
|
|
512
513
|
__decorateClass([
|
|
513
514
|
property({ type: Boolean, reflect: true, useDefault: true })
|
|
514
515
|
], OptionControl.prototype, "selected", 2);
|
|
516
|
+
__decorateClass([
|
|
517
|
+
property({ type: Boolean, reflect: true, useDefault: true })
|
|
518
|
+
], OptionControl.prototype, "readonly", 2);
|
|
515
519
|
__decorateClass([
|
|
516
520
|
property()
|
|
517
521
|
], OptionControl.prototype, "type", 2);
|
|
@@ -612,7 +616,10 @@ class ListboxFormControl extends FormControl {
|
|
|
612
616
|
willUpdate(props) {
|
|
613
617
|
super.willUpdate(props);
|
|
614
618
|
if (props.has("value")) {
|
|
615
|
-
this.
|
|
619
|
+
this.updateOptions((option) => {
|
|
620
|
+
if (!option.canSelect()) return;
|
|
621
|
+
option.selected = this.multiple ? this.value.includes(option.value) : this.value === option.value;
|
|
622
|
+
});
|
|
616
623
|
}
|
|
617
624
|
if (props.has("multiple")) {
|
|
618
625
|
this.#handleMultipleChange();
|
|
@@ -622,11 +629,9 @@ class ListboxFormControl extends FormControl {
|
|
|
622
629
|
this.setValidity({ valueMissing: this.required && this.value.length === 0 }, this.selectedOptions[0]);
|
|
623
630
|
}
|
|
624
631
|
}
|
|
625
|
-
|
|
626
|
-
if (this.disabled || this.options.length === 0) return;
|
|
632
|
+
updateOptions(updateFn) {
|
|
627
633
|
for (const option of this.options ?? []) {
|
|
628
|
-
|
|
629
|
-
option.selected = this.multiple ? this.value.includes(option.value) : this.value === option.value;
|
|
634
|
+
updateFn(option);
|
|
630
635
|
}
|
|
631
636
|
}
|
|
632
637
|
#handleOptionSelection(option) {
|
|
@@ -635,9 +640,9 @@ class ListboxFormControl extends FormControl {
|
|
|
635
640
|
}
|
|
636
641
|
#handleMultipleChange() {
|
|
637
642
|
const optionType = this.multiple ? "checkbox" : null;
|
|
638
|
-
|
|
643
|
+
this.updateOptions((option) => {
|
|
639
644
|
option.type = optionType;
|
|
640
|
-
}
|
|
645
|
+
});
|
|
641
646
|
if (!this.multiple && this.selectedOptions[0]) {
|
|
642
647
|
this.updateValue(this.selectedOptions[0]);
|
|
643
648
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odx/foundation",
|
|
3
3
|
"description": "A library of Web Component building blocks for ODX",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.91",
|
|
5
5
|
"author": "Drägerwerk AG & Co.KGaA",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
7
|
"homepage": "https://odx.draeger.com",
|