@odx/foundation 1.0.0-beta.62 → 1.0.0-beta.63

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.
@@ -19,12 +19,8 @@ export declare class OdxDropdown extends PopoverHost {
19
19
  placement: DropdownPlacement;
20
20
  get options(): PopoverPlacementOptions;
21
21
  connectedCallback(): void;
22
- mountPopover(referenceElement?: HTMLElement | null): void;
22
+ mountPopover(referenceElement: HTMLElement | null): void;
23
23
  unmountPopover(referenceElement: HTMLElement): void;
24
- onBeforePopoverShow(): void;
25
- onPopoverShow(): void;
26
- onBeforePopoverHide(): void;
27
- onPopoverHide(): void;
28
24
  protected render(): TemplateResult;
29
25
  protected willUpdate(props: PropertyValues<this>): void;
30
26
  }
@@ -19,7 +19,7 @@ export declare const InlineMessageVariant: Pick<{
19
19
  export declare class OdxInlineMessage extends CustomElement {
20
20
  closable: boolean;
21
21
  emphasized: boolean;
22
- icon?: OdxIconName;
22
+ icon?: OdxIconName | null;
23
23
  variant: InlineMessageVariant;
24
24
  show(): void;
25
25
  hide(): Promise<void>;
@@ -10,7 +10,7 @@ export declare class OdxMenu extends PopoverHost {
10
10
  #private;
11
11
  getItems(): OdxMenuItem[];
12
12
  connectedCallback(): void;
13
- mountPopover(referenceElement?: HTMLElement): void;
13
+ mountPopover(referenceElement: HTMLElement | null): void;
14
14
  unmountPopover(referenceElement: HTMLElement): void;
15
15
  onBeforePopoverShow(): void;
16
16
  onPopoverShow(): void;
@@ -11,7 +11,7 @@ export declare class PopoverHost extends PopoverHost_base {
11
11
  constructor();
12
12
  connectedCallback(): void;
13
13
  disconnectedCallback(): void;
14
- mountPopover(referenceElement?: HTMLElement | null): void;
14
+ mountPopover(referenceElement: HTMLElement | null): void;
15
15
  unmountPopover(_referenceElement: HTMLElement): void;
16
16
  isPopoverOpen(): boolean;
17
17
  showPopover(): void;
@@ -14,7 +14,7 @@ export declare const StatusVariant: Pick<{
14
14
  readonly WARNING: "warning";
15
15
  readonly DANGER: "danger";
16
16
  readonly GHOST: "ghost";
17
- }, "NEUTRAL" | "ACCENT" | "SUCCESS" | "WARNING" | "DANGER">;
17
+ }, "NEUTRAL" | "PRIMARY" | "SUCCESS" | "WARNING" | "DANGER">;
18
18
  export declare class OdxStatus extends CustomElement {
19
19
  pulse: boolean;
20
20
  variant: StatusVariant;
@@ -31,7 +31,7 @@ export declare class OdxTooltip extends PopoverHost {
31
31
  connectedCallback(): void;
32
32
  onPopoverShow(): void;
33
33
  onBeforePopoverHide(): void;
34
- mountPopover(referenceElement?: HTMLElement | null): void;
34
+ mountPopover(referenceElement: HTMLElement | null): void;
35
35
  unmountPopover(referenceElement: HTMLElement): void;
36
36
  protected render(): TemplateResult;
37
37
  protected willUpdate(props: PropertyValues<this>): void;
@@ -116,6 +116,16 @@ const _OdxButton = class _OdxButton extends InteractiveElement {
116
116
  this.type = "button";
117
117
  this.size = ButtonSize.MD;
118
118
  this.variant = ButtonVariant.NEUTRAL;
119
+ this.#handleClick = (_event) => {
120
+ if (this.type === "submit") {
121
+ this.#internals.form?.requestSubmit();
122
+ return;
123
+ }
124
+ if (this.type === "reset") {
125
+ this.#internals.form?.reset();
126
+ return;
127
+ }
128
+ };
119
129
  if (!isServer) {
120
130
  this.addEventListener("click", this.#handleClick);
121
131
  }
@@ -138,16 +148,7 @@ const _OdxButton = class _OdxButton extends InteractiveElement {
138
148
  <slot name="badge"></slot>
139
149
  `;
140
150
  }
141
- #handleClick(_event) {
142
- if (this.type === "submit") {
143
- this.#internals.form?.requestSubmit();
144
- return;
145
- }
146
- if (this.type === "reset") {
147
- this.#internals.form?.reset();
148
- return;
149
- }
150
- }
151
+ #handleClick;
151
152
  };
152
153
  __decorateClass([
153
154
  property({ reflect: true, attribute: "align-badge" })
@@ -576,7 +577,14 @@ const _OdxBreadcrumbs = class _OdxBreadcrumbs extends CustomElement {
576
577
  }
577
578
  render() {
578
579
  if (Array.isArray(this.items)) {
579
- return this.#renderItems(this.items);
580
+ const items = this.items.filter((...args) => this.#isItemVisible(...args));
581
+ return repeat(
582
+ items,
583
+ (item) => item.href,
584
+ ({ label, href }) => html`
585
+ <odx-breadcrumbs-item><odx-link href=${href}>${label}</odx-link></odx-breadcrumbs-item>
586
+ `
587
+ );
580
588
  }
581
589
  return html`<slot @slotchange=${this.#updateContext}></slot>`;
582
590
  }
@@ -589,17 +597,6 @@ const _OdxBreadcrumbs = class _OdxBreadcrumbs extends CustomElement {
589
597
  #isItemVisible(_, index, items) {
590
598
  return index === 0 || index > items.length - this.max;
591
599
  }
592
- #renderItems(items) {
593
- return html`
594
- ${repeat(
595
- items.filter(this.#isItemVisible.bind(this)),
596
- (item) => item.href,
597
- ({ label, href }) => html`
598
- <odx-breadcrumbs-item><odx-link href=${href}>${label}</odx-link></odx-breadcrumbs-item>
599
- `
600
- )}
601
- `;
602
- }
603
600
  #updateContext() {
604
601
  for (const [index, item] of this.itemElements.entries()) {
605
602
  item.hidden = !this.#isItemVisible(item, index, this.itemElements);
@@ -966,11 +963,7 @@ class PopoverHost extends CanBeDisabled(CustomElement) {
966
963
  if (this.referenceElement && this.referenceElement !== referenceElement) {
967
964
  this.unmountPopover(this.referenceElement);
968
965
  }
969
- if (!referenceElement) {
970
- this.referenceElement = null;
971
- return;
972
- }
973
- this.referenceElement = referenceElement;
966
+ this.referenceElement = referenceElement ?? null;
974
967
  }
975
968
  unmountPopover(_referenceElement) {
976
969
  this.hidePopover();
@@ -1008,7 +1001,7 @@ class PopoverHost extends CanBeDisabled(CustomElement) {
1008
1001
  return isOpen;
1009
1002
  }
1010
1003
  #findReferenceElement(anchor) {
1011
- return findClosestDocument(this)?.getElementById(anchor);
1004
+ return findClosestDocument(this)?.getElementById(anchor) ?? null;
1012
1005
  }
1013
1006
  #connectObserver() {
1014
1007
  this.#disconnectObserver();
@@ -1078,26 +1071,12 @@ const _OdxDropdown = class _OdxDropdown extends PopoverHost {
1078
1071
  this.#updateAriaAttributes(referenceElement, this.id);
1079
1072
  referenceElement.addEventListener("click", this.#handleClick);
1080
1073
  referenceElement.addEventListener("keydown", this.#handleKeyboardEvent);
1081
- this.emit("mount", { detail: { referenceElement } });
1082
1074
  }
1083
1075
  unmountPopover(referenceElement) {
1084
1076
  super.unmountPopover(referenceElement);
1085
1077
  this.#updateAriaAttributes(referenceElement, null);
1086
1078
  referenceElement.removeEventListener("click", this.#handleClick);
1087
1079
  referenceElement.removeEventListener("keydown", this.#handleKeyboardEvent);
1088
- this.emit("unmount", { detail: { referenceElement } });
1089
- }
1090
- onBeforePopoverShow() {
1091
- this.emit("before-show");
1092
- }
1093
- onPopoverShow() {
1094
- this.emit("show");
1095
- }
1096
- onBeforePopoverHide() {
1097
- this.emit("before-hide");
1098
- }
1099
- onPopoverHide() {
1100
- this.emit("hide");
1101
1080
  }
1102
1081
  render() {
1103
1082
  return html`
@@ -1108,7 +1087,7 @@ const _OdxDropdown = class _OdxDropdown extends PopoverHost {
1108
1087
  }
1109
1088
  willUpdate(props) {
1110
1089
  super.willUpdate(props);
1111
- if (props.has("id")) {
1090
+ if (props.has("id") && this.referenceElement) {
1112
1091
  this.#updateAriaAttributes(this.referenceElement, this.id);
1113
1092
  }
1114
1093
  if (props.has("disabled")) {
@@ -1121,9 +1100,9 @@ const _OdxDropdown = class _OdxDropdown extends PopoverHost {
1121
1100
  }
1122
1101
  #updateAriaAttributes(referenceElement, id) {
1123
1102
  if (id) {
1124
- referenceElement?.setAttribute("aria-describedby", id);
1103
+ referenceElement.setAttribute("aria-describedby", id);
1125
1104
  } else {
1126
- referenceElement?.removeAttribute("aria-describedby");
1105
+ referenceElement.removeAttribute("aria-describedby");
1127
1106
  }
1128
1107
  }
1129
1108
  #handleClick;
@@ -1840,7 +1819,7 @@ const _OdxInlineMessage = class _OdxInlineMessage extends CustomElement {
1840
1819
  this.emit("after-close", { cancelable: false });
1841
1820
  }
1842
1821
  render() {
1843
- const resolvedIcon = this.icon || (this.variant ? iconMap[this.variant] : null);
1822
+ const resolvedIcon = this.icon === void 0 ? this.variant ? iconMap[this.variant] : null : this.icon;
1844
1823
  return html`
1845
1824
  ${when(resolvedIcon, (icon) => html`<odx-icon class="icon" name=${icon}></odx-icon>`)}
1846
1825
  <div class="base">
@@ -2541,13 +2520,10 @@ const _OdxModal = class _OdxModal extends CustomElement {
2541
2520
  this.#showRequested = true;
2542
2521
  const canShow = await this.canShow?.(this) ?? true;
2543
2522
  if (!canShow) return;
2544
- this.emit("before-show", { composed: false });
2545
2523
  await this.beforeShow?.(this);
2546
2524
  this.dialog.showModal();
2547
- this.emit("show", { composed: false });
2548
2525
  await waitForAnimations(this.dialog, true);
2549
2526
  await this.afterShow?.(this);
2550
- this.emit("after-show", { composed: false });
2551
2527
  this.open = true;
2552
2528
  this.#showRequested = false;
2553
2529
  }
@@ -2556,12 +2532,10 @@ const _OdxModal = class _OdxModal extends CustomElement {
2556
2532
  this.#closeRequested = true;
2557
2533
  const canClose = await this.canClose?.(this) ?? true;
2558
2534
  if (!canClose) return;
2559
- this.emit("before-hide", { composed: false });
2560
2535
  await this.beforeClose?.(this);
2561
2536
  this.dialog.close(returnValue);
2562
2537
  await waitForAnimations(this.dialog, true);
2563
2538
  await this.afterClose?.(this);
2564
- this.emit("after-hide", { composed: false });
2565
2539
  this.open = false;
2566
2540
  this.#closeRequested = false;
2567
2541
  }
@@ -3756,9 +3730,9 @@ __decorateClass([
3756
3730
  ], _OdxStack.prototype, "wrap", 2);
3757
3731
  let OdxStack = _OdxStack;
3758
3732
 
3759
- const styles$e = ":host{display:inline-block;cursor:default}[part=base]{border-radius:var(--odx-border-radius-circle);padding-block:0;padding-inline:var(--odx-size-37) var(--odx-size-50);block-size:var(--odx-size-150);color:inherit;font-weight:var(--odx-typography-font-weight-medium)}";
3733
+ const styles$e = ":host{display:inline-flex;gap:var(--odx-size-37);align-items:center;border-radius:var(--odx-border-radius-circle);background-color:var(--odx-color-background-level-1);cursor:default;padding-inline:var(--odx-size-37) var(--odx-size-50);block-size:var(--odx-size-150);font-weight:var(--odx-typography-font-weight-medium)}:host([variant=\"primary\"]){background-color:var(--odx-color-background-primary-muted)}:host([variant=\"danger\"]){background-color:var(--odx-color-background-danger-muted);color:var(--odx-color-foreground-danger-rest)}:host([variant=\"warning\"]){background-color:var(--odx-color-background-warning-muted)}:host([variant=\"success\"]){background-color:var(--odx-color-background-success-muted)}";
3760
3734
 
3761
- const StatusVariant = pick(Variant, ["NEUTRAL", "ACCENT", "SUCCESS", "WARNING", "DANGER"]);
3735
+ const StatusVariant = pick(Variant, ["NEUTRAL", "PRIMARY", "SUCCESS", "WARNING", "DANGER"]);
3762
3736
  const _OdxStatus = class _OdxStatus extends CustomElement {
3763
3737
  constructor() {
3764
3738
  super(...arguments);
@@ -3770,14 +3744,8 @@ const _OdxStatus = class _OdxStatus extends CustomElement {
3770
3744
  }
3771
3745
  render() {
3772
3746
  return html`
3773
- <odx-inline-message class="odx-stack odx-stack-horizontal odx-align-center" part="base" variant=${optionalAttr(this.variant)} .icon=${null}>
3774
- <odx-stack horizontal gap="xs" align="center">
3775
- <odx-badge compact ?pulse=${this.pulse} variant=${optionalAttr(this.variant)}></odx-badge>
3776
- <odx-text class="content" size="sm" emphasized odxPreventTextOverflow>
3777
- <slot></slot>
3778
- </odx-text>
3779
- </odx-stack>
3780
- </odx-inline-message>
3747
+ <odx-badge compact ?pulse=${this.pulse} variant=${optionalAttr(this.variant)}></odx-badge>
3748
+ <slot></slot>
3781
3749
  `;
3782
3750
  }
3783
3751
  };
@@ -3789,7 +3757,7 @@ __decorateClass([
3789
3757
  ], _OdxStatus.prototype, "variant", 2);
3790
3758
  let OdxStatus = _OdxStatus;
3791
3759
 
3792
- const styles$d = "@layer base{:host{--_indicator-space: var(--odx-size-12);--_track-color-background: var(--odx-color-background-control-rest);--_track-size: var(--odx-size-50);--_track-color-stroke: var(--odx-color-stroke-control-rest);--_thumb-color-background: var(--_track-color-background);--_thumb-color-stroke: var(--_track-color-stroke);--_thumb-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_thumb-position: 0;--_label-color-foreground: var(--odx-color-foreground-rest);display:inline-flex;margin:var(--odx-size-37) var(--odx-size-75);cursor:pointer;user-select:none}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;position:relative;place-items:center;transition:var(--odx-transition-reduced);transition-property:background-color,border-color,outline-color,translate;block-size:var(--odx-size-150)}.track,.thumb{transition:inherit;border:var(--odx-border-width-thin) solid var(--_thumb-color-stroke);border-radius:var(--odx-border-radius-circle)}.track{background-color:var(--_track-color-background);block-size:var(--_track-size);inline-size:var(--odx-size-225)}.thumb{display:flex;position:absolute;inset-inline-start:0;place-content:center;place-items:center;outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);box-shadow:var(--odx-shadow-level-0);background-color:var(--_thumb-color-background);block-size:var(--_thumb-size);inline-size:var(--_thumb-size);color:var(--_indicator-color-foreground);translate:var(--_thumb-position) 0}.label{display:inline-block;cursor:inherit}.content{transition-property:color;padding-inline-end:var(--odx-size-25);color:var(--_label-color-foreground)}}@layer state{:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:empty) .content{display:none}:host(:not(:is([checked],[disabled],[readonly])):hover){--_track-color-stroke: var(--odx-color-stroke-control-hover);--_thumb-color-background: var(--odx-color-background-control-hover)}:host(:focus-visible) .thumb{outline-color:var(--odx-color-stroke-focus-outer)}:host([checked]){--_track-color-background: var(--odx-color-background-control-selected);--_track-color-stroke: var(--odx-color-stroke-control-selected);--_thumb-position: calc(var(--odx-size-225) - 100%)}:host([checked]:not(:is([disabled],[readonly])):hover){--_track-color-background: var(--odx-color-background-control-selected-hover)}:host([disabled]){--_track-color-background: var(--odx-color-background-disabled-rest);--_track-color-stroke: var(--odx-color-disabled-stroke);--_label-color-foreground: var(--odx-color-foreground-disabled-rest);cursor:not-allowed;.thumb{box-shadow:none}}:host([disabled][checked]){--_track-color-background: var(--odx-color-background-disabled-selected)}:host([readonly]){cursor:default}}";
3760
+ const styles$d = "@layer base{:host{--_indicator-space: var(--odx-size-12);--_track-color-background: var(--odx-color-background-control-rest);--_track-size: var(--odx-size-50);--_track-color-stroke: var(--odx-color-stroke-control-rest);--_thumb-color-background: var(--_track-color-background);--_thumb-color-stroke: var(--_track-color-stroke);--_thumb-size: calc(var(--odx-size-150) - var(--_indicator-space) * 2);--_thumb-position: 0;--_label-color-foreground: var(--odx-color-foreground-rest);display:inline-flex;margin:var(--odx-size-37) var(--odx-size-75);cursor:pointer;user-select:none}:host,.indicator,.content{transition:var(--odx-transition-reduced)}.indicator{display:flex;position:relative;place-items:center;transition:var(--odx-transition-reduced);transition-property:background-color,border-color,outline-color,translate;block-size:var(--odx-size-150)}.track,.thumb{transition:inherit;border:var(--odx-border-width-thin) solid var(--_thumb-color-stroke);border-radius:var(--odx-border-radius-circle)}.track{background-color:var(--_track-color-background);block-size:var(--_track-size);inline-size:var(--odx-size-225)}.thumb{display:flex;position:absolute;inset-inline-start:0;place-content:center;place-items:center;outline:var(--odx-focus-ring-outline);outline-offset:var(--odx-focus-ring-offset);box-shadow:var(--odx-shadow-level-0);background-color:var(--_thumb-color-background);block-size:var(--_thumb-size);inline-size:var(--_thumb-size);color:var(--_indicator-color-foreground);translate:var(--_thumb-position) 0}.label{display:inline-block;cursor:inherit}.content{transition-property:color;padding-inline-end:var(--odx-size-25);color:var(--_label-color-foreground)}}@layer state{:host(:not(:empty)) .indicator{margin-inline-end:var(--odx-size-75)}:host(:empty) .content{display:none}:host(:not(:is([checked],[disabled],[readonly])):hover){--_track-color-stroke: var(--odx-color-stroke-control-hover);--_thumb-color-background: var(--odx-color-background-control-hover)}:host(:focus-visible) .thumb{outline-color:var(--odx-color-stroke-focus-outer)}:host([checked]){--_track-color-background: var(--odx-color-background-control-selected);--_track-color-stroke: var(--odx-color-stroke-control-selected);--_thumb-color-background: var(--_track-color-background);--_thumb-position: calc(var(--odx-size-225) - 100%)}:host([checked]:not(:is([disabled],[readonly])):hover){--_track-color-background: var(--odx-color-background-control-selected-hover)}:host([disabled]){--_track-color-background: var(--odx-color-background-disabled-rest);--_track-color-stroke: var(--odx-color-disabled-stroke);--_label-color-foreground: var(--odx-color-foreground-disabled-rest);cursor:not-allowed;.thumb{box-shadow:none}}:host([disabled][checked]){--_track-color-background: var(--odx-color-background-disabled-selected)}:host([readonly]){cursor:default}}";
3793
3761
 
3794
3762
  class OdxSwitch extends CheckboxFormControl {
3795
3763
  static {
@@ -3826,6 +3794,13 @@ const _OdxTableCheckboxCell = class _OdxTableCheckboxCell extends CanBeDisabled(
3826
3794
  super(...arguments);
3827
3795
  this.checked = false;
3828
3796
  this.indeterminate = false;
3797
+ this.#handleChange = (event) => {
3798
+ event.preventDefault();
3799
+ event.stopPropagation();
3800
+ this.checked = event.target.checked;
3801
+ this.indeterminate = false;
3802
+ this.emit("change");
3803
+ };
3829
3804
  }
3830
3805
  static {
3831
3806
  customElement("odx-table-checkbox-cell", styles$b)(_OdxTableCheckboxCell);
@@ -3840,13 +3815,7 @@ const _OdxTableCheckboxCell = class _OdxTableCheckboxCell extends CanBeDisabled(
3840
3815
  render() {
3841
3816
  return html`<odx-checkbox class="checkbox" ?checked=${this.checked} ?disabled=${this.disabled} ?indeterminate=${this.indeterminate} @change=${this.#handleChange}></odx-checkbox>`;
3842
3817
  }
3843
- #handleChange(event) {
3844
- event.preventDefault();
3845
- event.stopPropagation();
3846
- this.checked = event.target.checked;
3847
- this.indeterminate = false;
3848
- this.emit("change");
3849
- }
3818
+ #handleChange;
3850
3819
  };
3851
3820
  __decorateClass([
3852
3821
  query(".checkbox")
@@ -3909,6 +3878,9 @@ const _OdxTableRow = class _OdxTableRow extends CanBeDisabled(CustomElement) {
3909
3878
  if (!event.defaultPrevented) return;
3910
3879
  this.selected = !this.selected;
3911
3880
  };
3881
+ this.#handleSlotchange = ({ target }) => {
3882
+ this.selectable = target.assignedElements().some((element) => element.localName === OdxTableCheckboxCell.tagName);
3883
+ };
3912
3884
  }
3913
3885
  static {
3914
3886
  customElement("odx-table-row", styles$9)(_OdxTableRow);
@@ -3951,12 +3923,7 @@ const _OdxTableRow = class _OdxTableRow extends CanBeDisabled(CustomElement) {
3951
3923
  }
3952
3924
  #handleClick;
3953
3925
  #handleChange;
3954
- #handleSlotchange({ target }) {
3955
- this.selectable = target.assignedElements().some(this.#isCheckboxCell);
3956
- }
3957
- #isCheckboxCell(element) {
3958
- return element.localName === OdxTableCheckboxCell.tagName;
3959
- }
3926
+ #handleSlotchange;
3960
3927
  };
3961
3928
  __decorateClass([
3962
3929
  queryAssignedElements({ selector: OdxTableCheckboxCell.tagName, flatten: true })
@@ -4269,14 +4236,25 @@ const _OdxTooltip = class _OdxTooltip extends PopoverHost {
4269
4236
  super.mountPopover(referenceElement);
4270
4237
  if (!referenceElement) return;
4271
4238
  this.#updateAriaAttributes(referenceElement, this.id);
4272
- this.#addKeyboardListeners(referenceElement);
4273
- this.#addMouseListeners(referenceElement);
4239
+ if (this.manual) return;
4240
+ this.addEventListener("mouseleave", this.#handleMouseEvents);
4241
+ referenceElement.addEventListener("mouseenter", this.#handleMouseEvents);
4242
+ referenceElement.addEventListener("mouseleave", this.#handleReferenceMouseLeave);
4243
+ referenceElement.addEventListener("keyup", this.#handleKeyboardFocus);
4244
+ referenceElement.addEventListener("keydown", this.#handleKeyboardFocus);
4245
+ referenceElement.addEventListener("keyup", this.#handleKeyboardFocus);
4246
+ referenceElement.addEventListener("keydown", this.#handleKeyboardFocus);
4274
4247
  }
4275
4248
  unmountPopover(referenceElement) {
4276
4249
  super.unmountPopover(referenceElement);
4277
4250
  this.#updateAriaAttributes(referenceElement, null);
4278
- this.#removeKeyboardListeners(referenceElement);
4279
- this.#removeMouseListeners(referenceElement);
4251
+ referenceElement.removeEventListener("keyup", this.#handleKeyboardFocus);
4252
+ referenceElement.removeEventListener("keydown", this.#handleKeyboardFocus);
4253
+ this.removeEventListener("mouseleave", this.#handleMouseEvents);
4254
+ referenceElement.removeEventListener("mouseenter", this.#handleMouseEvents);
4255
+ referenceElement.removeEventListener("mouseleave", this.#handleReferenceMouseLeave);
4256
+ referenceElement.removeEventListener("keyup", this.#handleKeyboardFocus);
4257
+ referenceElement.removeEventListener("keydown", this.#handleKeyboardFocus);
4280
4258
  }
4281
4259
  render() {
4282
4260
  return html`
@@ -4294,35 +4272,11 @@ const _OdxTooltip = class _OdxTooltip extends PopoverHost {
4294
4272
  this.togglePopover(this.show);
4295
4273
  }
4296
4274
  }
4297
- #addKeyboardListeners(referenceElement) {
4298
- if (this.manual) return;
4299
- referenceElement.addEventListener("keyup", this.#handleKeyboardFocus);
4300
- referenceElement.addEventListener("keydown", this.#handleKeyboardFocus);
4301
- }
4302
- #removeKeyboardListeners(referenceElement) {
4303
- referenceElement.removeEventListener("keyup", this.#handleKeyboardFocus);
4304
- referenceElement.removeEventListener("keydown", this.#handleKeyboardFocus);
4305
- }
4306
- #addMouseListeners(referenceElement) {
4307
- if (this.manual) return;
4308
- this.addEventListener("mouseleave", this.#handleMouseEvents);
4309
- referenceElement.addEventListener("mouseenter", this.#handleMouseEvents);
4310
- referenceElement.addEventListener("mouseleave", this.#handleReferenceMouseLeave);
4311
- referenceElement.addEventListener("keyup", this.#handleKeyboardFocus);
4312
- referenceElement.addEventListener("keydown", this.#handleKeyboardFocus);
4313
- }
4314
- #removeMouseListeners(referenceElement) {
4315
- this.removeEventListener("mouseleave", this.#handleMouseEvents);
4316
- referenceElement.removeEventListener("mouseenter", this.#handleMouseEvents);
4317
- referenceElement.removeEventListener("mouseleave", this.#handleReferenceMouseLeave);
4318
- referenceElement.removeEventListener("keyup", this.#handleKeyboardFocus);
4319
- referenceElement.removeEventListener("keydown", this.#handleKeyboardFocus);
4320
- }
4321
4275
  #updateAriaAttributes(referenceElement, id) {
4322
4276
  if (id) {
4323
- referenceElement?.setAttribute("aria-describedby", id);
4277
+ referenceElement.setAttribute("aria-describedby", id);
4324
4278
  } else {
4325
- referenceElement?.removeAttribute("aria-describedby");
4279
+ referenceElement.removeAttribute("aria-describedby");
4326
4280
  }
4327
4281
  }
4328
4282
  #handleReferenceMouseLeave;
package/dist/main.js CHANGED
@@ -3,7 +3,7 @@ import { unsafeCSS, LitElement, html, isServer, nothing } from 'lit';
3
3
  import { property, queryAssignedElements, query } from 'lit/decorators.js';
4
4
  import { u as uniqBy, r as round, R as RovingTabindexController, m as minBy, c as computePosition, a as autoUpdate, t as throttle, o as offset, s as shift, f as flip, b as size, d as arrow, h as hide } from './vendor.js';
5
5
 
6
- const customElementStyles = "@layer reset,base,variant,state;@layer reset{:is(*){box-sizing:border-box;scrollbar-width:thin}:not(:defined){display:none}:before,:after{box-sizing:border-box}[popover]{outline:none;border:none}img,picture,video,canvas,svg{display:block;margin:0;max-width:100%}input,button,textarea,select{margin:0;font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;margin:0}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}}@layer base{odx-stack{display:block}.odx-stack{&.odx-stack-horizontal{flex-flow:row}&.odx-stack-wrap{flex-flow:column wrap}&.odx-stack-horizontal.odx-stack-wrap{flex-flow:row wrap}--flow: column;display:flex;flex-flow:var(--flow);max-inline-size:100%;align-items:stretch;justify-content:flex-start;gap:var(--odx-size-75);text-align:start}}@layer base{.odx-align-start{align-items:flex-start}.odx-align-center{align-items:center}.odx-align-end{align-items:end}.odx-justify-start{justify-content:flex-start}.odx-justify-end{justify-content:flex-end}.odx-justify-center{justify-content:center}.odx-justify-space-between{justify-content:space-between}.odx-justify-space-around{justify-content:space-around}.odx-justify-space-evenly{justify-content:space-evenly}}@layer base{.odx-gap-none{gap:0}.odx-gap-xs{gap:var(--odx-size-25)}.odx-gap-sm{gap:var(--odx-size-50)}.odx-gap-md{gap:var(--odx-size-75)}.odx-gap-lg{gap:var(--odx-size-150)}.odx-gap-xl{gap:var(--odx-size-225)}}@layer base{odx-icon{transition:var(--odx-transition-default);transition-property:transform}[odxPreventTextOverflow]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}odx-list-item:has(:is([odx-button],odx-list-item::part(control)):not([disabled]):active){--_color-background-pressed: var(--_color-background-hover)}[odx-button]:has(odx-icon:only-child),[odx-button]:has(odx-avatar:only-child){--_min-inline-size: 0}[indicator-position=start] odx-accordion-item::part(indicator){--rotate: -90deg;order:-1}[indicator-position=start] odx-accordion-item[expanded]::part(indicator){--rotate: 0}odx-input:has([slot=suffix])::part(base){padding-inline-end:var(--odx-size-px)}}@layer reset{:host{outline:none;border:none;border-color:transparent}}";
6
+ const customElementStyles = "@layer reset,base,variant,state;@layer reset{:is(*){box-sizing:border-box;scrollbar-width:thin}:not(:defined){display:none}:before,:after{box-sizing:border-box}[popover]{outline:none;border:none}img,picture,video,canvas,svg{display:block;margin:0;max-width:100%}input,button,textarea,select{margin:0;font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;margin:0}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}}@layer base{odx-stack{display:block}.odx-stack{&.odx-stack-horizontal{flex-flow:row}&.odx-stack-wrap{flex-flow:column wrap}&.odx-stack-horizontal.odx-stack-wrap{flex-flow:row wrap}--flow: column;display:flex;flex-flow:var(--flow);max-inline-size:100%;align-items:stretch;justify-content:flex-start;gap:var(--odx-size-75);text-align:start}}@layer base{.odx-align-start{align-items:flex-start}.odx-align-center{align-items:center}.odx-align-end{align-items:end}.odx-justify-start{justify-content:flex-start}.odx-justify-end{justify-content:flex-end}.odx-justify-center{justify-content:center}.odx-justify-space-between{justify-content:space-between}.odx-justify-space-around{justify-content:space-around}.odx-justify-space-evenly{justify-content:space-evenly}}@layer base{.odx-gap-none{gap:0}.odx-gap-xs{gap:var(--odx-size-25)}.odx-gap-sm{gap:var(--odx-size-50)}.odx-gap-md{gap:var(--odx-size-75)}.odx-gap-lg{gap:var(--odx-size-150)}.odx-gap-xl{gap:var(--odx-size-225)}}@layer base{odx-icon{transition:var(--odx-transition-default);transition-property:transform}[odxPreventTextOverflow]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}odx-list-item:has(:is([odx-button],odx-list-item::part(control)):not([disabled]):active){--_color-background-pressed: var(--_color-background-hover)}[odx-button]:has(odx-icon:only-child),[odx-button]:has(odx-avatar:only-child){--_min-inline-size: 0}[indicator-position=start] odx-accordion-item::part(indicator){--rotate: -90deg;order:-1}[indicator-position=start] odx-accordion-item[expanded]::part(indicator){--rotate: 0}odx-input:has([slot=suffix])::part(base){padding-inline-end:var(--odx-size-px)}odx-spinbox>input[type=number]{appearance:textfield;&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{appearance:none;margin:0}}}@layer reset{:host{outline:none;border:none;border-color:transparent}}";
7
7
 
8
8
  function customElement(tagName, ...styles) {
9
9
  return (target) => {
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- @layer reset,base,variant,state,theme;@layer reset{:is(*){box-sizing:border-box;scrollbar-width:thin}:not(:defined){display:none}:before,:after{box-sizing:border-box}[popover]{outline:none;border:none}img,picture,video,canvas,svg{display:block;margin:0;max-width:100%}input,button,textarea,select{margin:0;font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;margin:0}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}}@layer base{odx-stack{display:block}.odx-stack{&.odx-stack-horizontal{flex-flow:row}&.odx-stack-wrap{flex-flow:column wrap}&.odx-stack-horizontal.odx-stack-wrap{flex-flow:row wrap}--flow: column;display:flex;flex-flow:var(--flow);max-inline-size:100%;align-items:stretch;justify-content:flex-start;gap:var(--odx-size-75);text-align:start}}@layer base{.odx-align-start{align-items:flex-start}.odx-align-center{align-items:center}.odx-align-end{align-items:end}.odx-justify-start{justify-content:flex-start}.odx-justify-end{justify-content:flex-end}.odx-justify-center{justify-content:center}.odx-justify-space-between{justify-content:space-between}.odx-justify-space-around{justify-content:space-around}.odx-justify-space-evenly{justify-content:space-evenly}}@layer base{.odx-gap-none{gap:0}.odx-gap-xs{gap:var(--odx-size-25)}.odx-gap-sm{gap:var(--odx-size-50)}.odx-gap-md{gap:var(--odx-size-75)}.odx-gap-lg{gap:var(--odx-size-150)}.odx-gap-xl{gap:var(--odx-size-225)}}@layer base{odx-icon{transition:var(--odx-transition-default);transition-property:transform}[odxPreventTextOverflow]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}odx-list-item:has(:is([odx-button],odx-list-item::part(control)):not([disabled]):active){--_color-background-pressed: var(--_color-background-hover)}[odx-button]:has(odx-icon:only-child),[odx-button]:has(odx-avatar:only-child){--_min-inline-size: 0}[indicator-position=start] odx-accordion-item::part(indicator){--rotate: -90deg;order:-1}[indicator-position=start] odx-accordion-item[expanded]::part(indicator){--rotate: 0}odx-input:has([slot=suffix])::part(base){padding-inline-end:var(--odx-size-px)}}@layer base{h1,h2,h3,h4,h5,h6{display:block;line-height:var(--_line-height);font-family:var(--odx-typography-font-family-brand);font-size:var(--_font-size);font-weight:var(--odx-typography-font-weight-semibold)}h6{--_font-size: var(--odx-breakpoint-font-size-heading-6);--_line-height: var(--odx-breakpoint-line-height-heading-6)}h5{--_font-size: var(--odx-breakpoint-font-size-heading-5);--_line-height: var(--odx-breakpoint-line-height-heading-5)}h4{--_font-size: var(--odx-breakpoint-font-size-heading-4);--_line-height: var(--odx-breakpoint-line-height-heading-4)}h3{--_font-size: var(--odx-breakpoint-font-size-heading-3);--_line-height: var(--odx-breakpoint-line-height-heading-3)}h2{--_font-size: var(--odx-breakpoint-font-size-heading-2);--_line-height: var(--odx-breakpoint-line-height-heading-2)}h1{--_font-size: var(--odx-breakpoint-font-size-heading-1);--_line-height: var(--odx-breakpoint-line-height-heading-1)}}@layer base{:root{--odx-transition-default: all var(--odx-motion-duration-default) var(--odx-motion-easing-default);--odx-transition-slow: all var(--odx-motion-duration-slow) var(--odx-motion-easing-default);--odx-transition-reduced: all var(--odx-motion-duration-fast) var(--odx-motion-easing-reduced);--odx-page-max-inline-size: 1600px;--odx-page-max-inline-size-narrow: 1200px;--odx-page-max-inline-size-wide: 2400px;scrollbar-color:var(--odx-color-background-brand) var(--odx-palette-transparent)}html,body{margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--odx-color-background-base);line-height:var(--odx-typography-line-height-base);color:var(--odx-color-foreground-rest);font-family:var(--odx-typography-font-family-base),"Noto Sans",Kanit,sans-serif;font-size:var(--odx-typography-font-size-base)}}
1
+ @layer reset,base,variant,state,theme;@layer reset{:is(*){box-sizing:border-box;scrollbar-width:thin}:not(:defined){display:none}:before,:after{box-sizing:border-box}[popover]{outline:none;border:none}img,picture,video,canvas,svg{display:block;margin:0;max-width:100%}input,button,textarea,select{margin:0;font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;margin:0}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}}@layer base{odx-stack{display:block}.odx-stack{&.odx-stack-horizontal{flex-flow:row}&.odx-stack-wrap{flex-flow:column wrap}&.odx-stack-horizontal.odx-stack-wrap{flex-flow:row wrap}--flow: column;display:flex;flex-flow:var(--flow);max-inline-size:100%;align-items:stretch;justify-content:flex-start;gap:var(--odx-size-75);text-align:start}}@layer base{.odx-align-start{align-items:flex-start}.odx-align-center{align-items:center}.odx-align-end{align-items:end}.odx-justify-start{justify-content:flex-start}.odx-justify-end{justify-content:flex-end}.odx-justify-center{justify-content:center}.odx-justify-space-between{justify-content:space-between}.odx-justify-space-around{justify-content:space-around}.odx-justify-space-evenly{justify-content:space-evenly}}@layer base{.odx-gap-none{gap:0}.odx-gap-xs{gap:var(--odx-size-25)}.odx-gap-sm{gap:var(--odx-size-50)}.odx-gap-md{gap:var(--odx-size-75)}.odx-gap-lg{gap:var(--odx-size-150)}.odx-gap-xl{gap:var(--odx-size-225)}}@layer base{odx-icon{transition:var(--odx-transition-default);transition-property:transform}[odxPreventTextOverflow]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}odx-list-item:has(:is([odx-button],odx-list-item::part(control)):not([disabled]):active){--_color-background-pressed: var(--_color-background-hover)}[odx-button]:has(odx-icon:only-child),[odx-button]:has(odx-avatar:only-child){--_min-inline-size: 0}[indicator-position=start] odx-accordion-item::part(indicator){--rotate: -90deg;order:-1}[indicator-position=start] odx-accordion-item[expanded]::part(indicator){--rotate: 0}odx-input:has([slot=suffix])::part(base){padding-inline-end:var(--odx-size-px)}odx-spinbox>input[type=number]{appearance:textfield;&::-webkit-outer-spin-button,&::-webkit-inner-spin-button{appearance:none;margin:0}}}@layer base{h1,h2,h3,h4,h5,h6{display:block;line-height:var(--_line-height);font-family:var(--odx-typography-font-family-brand);font-size:var(--_font-size);font-weight:var(--odx-typography-font-weight-semibold)}h6{--_font-size: var(--odx-breakpoint-font-size-heading-6);--_line-height: var(--odx-breakpoint-line-height-heading-6)}h5{--_font-size: var(--odx-breakpoint-font-size-heading-5);--_line-height: var(--odx-breakpoint-line-height-heading-5)}h4{--_font-size: var(--odx-breakpoint-font-size-heading-4);--_line-height: var(--odx-breakpoint-line-height-heading-4)}h3{--_font-size: var(--odx-breakpoint-font-size-heading-3);--_line-height: var(--odx-breakpoint-line-height-heading-3)}h2{--_font-size: var(--odx-breakpoint-font-size-heading-2);--_line-height: var(--odx-breakpoint-line-height-heading-2)}h1{--_font-size: var(--odx-breakpoint-font-size-heading-1);--_line-height: var(--odx-breakpoint-line-height-heading-1)}}@layer base{:root{--odx-transition-default: all var(--odx-motion-duration-default) var(--odx-motion-easing-default);--odx-transition-slow: all var(--odx-motion-duration-slow) var(--odx-motion-easing-default);--odx-transition-reduced: all var(--odx-motion-duration-fast) var(--odx-motion-easing-reduced);--odx-page-max-inline-size: 1600px;--odx-page-max-inline-size-narrow: 1200px;--odx-page-max-inline-size-wide: 2400px;scrollbar-color:var(--odx-color-background-brand) var(--odx-palette-transparent)}html,body{margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--odx-color-background-base);line-height:var(--odx-typography-line-height-base);color:var(--odx-color-foreground-rest);font-family:var(--odx-typography-font-family-base),"Noto Sans",Kanit,sans-serif;font-size:var(--odx-typography-font-size-base)}}
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.62",
4
+ "version": "1.0.0-beta.63",
5
5
  "author": "Drägerwerk AG & Co.KGaA",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "homepage": "https://odx.draeger.com",
@@ -14,6 +14,13 @@
14
14
  "custom-elements.json"
15
15
  ],
16
16
  "type": "module",
17
+ "scripts": {
18
+ "build": "vite build",
19
+ "dev:tsc": "tsc --build --noEmit --watch",
20
+ "dev": "vite build --watch --mode=development",
21
+ "lint": "biome lint lib i18n styles components",
22
+ "generate:manifest": "cem analyze"
23
+ },
17
24
  "dependencies": {
18
25
  "@preact/signals-core": "1.8.0",
19
26
  "lit": "3.3.0"
@@ -28,6 +35,8 @@
28
35
  "@lit-labs/preact-signals": "1.0.3",
29
36
  "@lit/context": "1.1.5",
30
37
  "@odx/icons": "4.0.0-rc.29",
38
+ "@odx/storybook-utils": "workspace:*",
39
+ "@odx/typescript-config": "workspace:*",
31
40
  "@spectrum-web-components/reactive-controllers": "1.6.0",
32
41
  "@wc-toolkit/cem-inheritance": "1.0.4",
33
42
  "@wc-toolkit/cem-validator": "1.0.3",
@@ -40,9 +49,7 @@
40
49
  "ts-lit-plugin": "2.0.2",
41
50
  "vite": "6.3.5",
42
51
  "vite-plugin-dts": "4.5.3",
43
- "vite-plugin-no-bundle": "4.0.0",
44
- "@odx/storybook-utils": "0.0.0",
45
- "@odx/typescript-config": "0.0.0"
52
+ "vite-plugin-no-bundle": "4.0.0"
46
53
  },
47
54
  "sideEffects": [
48
55
  "dist/i18n.js",
@@ -74,12 +81,5 @@
74
81
  "publishConfig": {
75
82
  "access": "public",
76
83
  "tag": "latest"
77
- },
78
- "scripts": {
79
- "build": "vite build",
80
- "dev:tsc": "tsc --build --noEmit --watch",
81
- "dev": "vite build --watch --mode=development",
82
- "lint": "biome lint lib i18n styles components",
83
- "generate:manifest": "cem analyze"
84
84
  }
85
- }
85
+ }