@golemui/gui-lit 1.0.3 → 1.1.0

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/calendar-BuJgwvZx.js +254 -0
  3. package/{calendar.element-DcnTyvfg.js → calendar.element-M5MPJmap.js} +1 -1
  4. package/{currency.element-5GSakkxF.js → currency.element-CfFrAtrr.js} +4 -1
  5. package/{date-CDUlLuYy.js → date-Bj9mI3GU.js} +80 -29
  6. package/date-input-cJDkNnVw.js +184 -0
  7. package/date-picker.element-va_-LGZD.js +312 -0
  8. package/date-time-calendar-BzRfkLKU.js +361 -0
  9. package/date-time-calendar.element-DC4NK0y1.js +93 -0
  10. package/date-time-input-BXxsfuyZ.js +214 -0
  11. package/date-time-picker.element-Dy-8cb-_.js +380 -0
  12. package/date-time.element-Bv4XdzMi.js +87 -0
  13. package/{date.element-BZO0UQez.js → date.element-Consgsbb.js} +32 -27
  14. package/day-status-0-hJHrI7.js +530 -0
  15. package/{dropdown.element-CyJbVAA5.js → dropdown.element-WsD61Qel.js} +46 -36
  16. package/focus-leave.controller-2gV0pQd5.js +73 -0
  17. package/index.js +1199 -971
  18. package/index.umd.cjs +1582 -530
  19. package/lib/components/date-picker.element.d.ts +0 -11
  20. package/lib/components/date-time-calendar.element.d.ts +18 -0
  21. package/lib/components/date-time-picker.element.d.ts +18 -0
  22. package/lib/components/date-time.element.d.ts +18 -0
  23. package/lib/components/dropdown.element.d.ts +2 -0
  24. package/lib/components/range-calendar.element.d.ts +2 -1
  25. package/lib/components/range-date-picker.element.d.ts +0 -15
  26. package/lib/components/range-date-time-calendar.element.d.ts +18 -0
  27. package/lib/components/range-date-time-input.element.d.ts +18 -0
  28. package/lib/components/range-date-time-picker.element.d.ts +18 -0
  29. package/lib/components/range-time-input.element.d.ts +18 -0
  30. package/lib/components/range-time-picker.element.d.ts +18 -0
  31. package/lib/components/time-picker.element.d.ts +18 -0
  32. package/lib/components/time.element.d.ts +18 -0
  33. package/{list-D1oKnH89.js → list-CrLIL4by.js} +76 -61
  34. package/{list.element-Co3V3Cn5.js → list.element-DV82YxnJ.js} +22 -22
  35. package/package.json +6 -6
  36. package/part-templates-Db871PS3.js +677 -0
  37. package/pill-ranges-DCqDmpkk.js +48 -0
  38. package/{pills-B66qz_KX.js → pills-Be1UrLgq.js} +4 -1
  39. package/popup.controller-eUDxE6jD.js +71 -0
  40. package/range-calendar-CKPYeSGt.js +452 -0
  41. package/{range-calendar.element-_1bHW_c1.js → range-calendar.element-D6KYq18B.js} +24 -20
  42. package/range-commit-8-MmYUyo.js +14 -0
  43. package/range-date-input-D--AqBMv.js +292 -0
  44. package/{range-date-input.element-BqzAF0O3.js → range-date-input.element-D4nIXJbw.js} +8 -7
  45. package/range-date-picker.element-dhxPAAE6.js +386 -0
  46. package/range-date-time-calendar-yksWrR7b.js +720 -0
  47. package/range-date-time-calendar.element-C00aDefZ.js +95 -0
  48. package/range-date-time-input-B37TUoM3.js +322 -0
  49. package/range-date-time-input.element-DUnbv4ed.js +81 -0
  50. package/range-date-time-picker.element-Cbps6s_G.js +412 -0
  51. package/range-selection-CU3hxLJE.js +25 -0
  52. package/range-time-input-3lhqR1Ku.js +329 -0
  53. package/range-time-input.element-dU2iBdmJ.js +81 -0
  54. package/range-time-picker.element-v6nQsIPw.js +429 -0
  55. package/{select.element-jcDF1h-g.js → select.element-C0V-Bv3L.js} +94 -90
  56. package/{tags.element-CX3vQL8L.js → tags.element-DvwEpxpK.js} +1 -1
  57. package/time-input-BOhlBGJZ.js +181 -0
  58. package/time-list-Czo48bZm.js +217 -0
  59. package/time-picker-bFJ63ky8.js +261 -0
  60. package/time-picker.element-CYZVXgRS.js +85 -0
  61. package/time.element-fK3oLi49.js +82 -0
  62. package/abstract-calendar-D0-077XJ.js +0 -545
  63. package/calendar-BclCC9VJ.js +0 -96
  64. package/date-input-DCdGWRio.js +0 -268
  65. package/date-picker.element-k7AJFQ5W.js +0 -168
  66. package/range-calendar-CBINu84w.js +0 -255
  67. package/range-date-input-BYXzqnr1.js +0 -395
  68. package/range-date-picker.element-BCBefgvY.js +0 -182
@@ -7,23 +7,12 @@ export declare class DatePickerElement extends LitElement implements WithWidget
7
7
  widget: InputWidget<string>;
8
8
  formContext: LitFormContext<any>;
9
9
  adapter: InputWidgetAdapter<string, DatePickerProps>;
10
- dateInput?: HTMLElement;
11
- calendarInput?: HTMLElement;
12
- isCalendarOpen: boolean;
13
10
  subscriptions: Subscription[];
14
- onFocusOut: (event: FocusEvent) => void;
15
- onDocumentClick: (event: MouseEvent) => void;
16
11
  createRenderRoot(): this;
17
12
  updated(changedProperties: any): void;
18
13
  connectedCallback(): void;
19
14
  render(): import('lit-html').TemplateResult<1>;
20
15
  valueChanged(event: CustomEvent): void;
21
- onCalendarChange(event: CustomEvent): void;
22
- onBlurCalendar(): void;
23
16
  onInputError(event: CustomEvent): void;
24
- onKeyUp(event: Event): void;
25
- toggleCalendar(event: Event): void;
26
- openCalendar(): void;
27
- closeCalendar(): void;
28
17
  disconnectedCallback(): void;
29
18
  }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { DateTimeCalendarProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class DateTimeCalendarElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<string>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<string, DateTimeCalendarProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { DateTimePickerProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class DateTimePickerElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<string>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<string, DateTimePickerProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { DateTimeInputProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class DateTimeElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<string>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<string, DateTimeInputProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -18,6 +18,7 @@ export declare class DropdownElement extends LitElement implements WithWidget {
18
18
  private _selectedItem;
19
19
  private _inputRef;
20
20
  private _listRef;
21
+ private _ignoreNextFocus;
21
22
  onDocumentClick: (event: MouseEvent) => void;
22
23
  createRenderRoot(): this;
23
24
  updated(changedProperties: any): void;
@@ -31,6 +32,7 @@ export declare class DropdownElement extends LitElement implements WithWidget {
31
32
  private _onKeyDown;
32
33
  private _onInput;
33
34
  private _filterItems;
35
+ private _onWidgetKeyDown;
34
36
  private _onFocus;
35
37
  private _onFocusOutInput;
36
38
  private _onBlur;
@@ -12,6 +12,7 @@ export declare class RangeCalendarElement extends LitElement implements WithWidg
12
12
  updated(changedProperties: any): void;
13
13
  connectedCallback(): void;
14
14
  render(): import('lit-html').TemplateResult<1>;
15
- valueChanged(event: InputEvent): void;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
16
17
  disconnectedCallback(): void;
17
18
  }
@@ -7,27 +7,12 @@ export declare class RangeDatePickerElement extends LitElement implements WithWi
7
7
  widget: InputWidget<DateRange[]>;
8
8
  formContext: LitFormContext<any>;
9
9
  adapter: InputWidgetAdapter<DateRange[], RangeDatePickerProps>;
10
- dateInput?: HTMLElement;
11
- calendarInput?: HTMLElement;
12
- isCalendarOpen: boolean;
13
- focusDate: string | undefined;
14
10
  subscriptions: Subscription[];
15
- private _ignoreNextFocusOut;
16
- onFocusOut: (event: FocusEvent) => void;
17
- onDocumentClick: (event: MouseEvent) => void;
18
- onDropdownToggle: (event: Event) => void;
19
11
  createRenderRoot(): this;
20
12
  updated(changedProperties: any): void;
21
13
  connectedCallback(): void;
22
14
  render(): import('lit-html').TemplateResult<1>;
23
15
  valueChanged(event: CustomEvent): void;
24
- onBlurCalendar(): void;
25
16
  onInputError(event: CustomEvent): void;
26
- onPillClick(event: CustomEvent): void;
27
- onKeyUp(event: Event): void;
28
- toggleCalendar(event: Event): void;
29
- openCalendar(): void;
30
- closeCalendar(): void;
31
- private closePillsDropdown;
32
17
  disconnectedCallback(): void;
33
18
  }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { DateTimeRange, RangeDateTimeCalendarProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class RangeDateTimeCalendarElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<DateTimeRange[]>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<DateTimeRange[], RangeDateTimeCalendarProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { DateTimeRange, RangeDateTimeInputProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class RangeDateTimeInputElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<DateTimeRange[]>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<DateTimeRange[], RangeDateTimeInputProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { DateTimeRange, RangeDateTimePickerProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class RangeDateTimePickerElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<DateTimeRange[]>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<DateTimeRange[], RangeDateTimePickerProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { TimeRange, RangeTimeInputProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class RangeTimeInputElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<TimeRange[]>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<TimeRange[], RangeTimeInputProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { TimeRange, RangeTimePickerProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class RangeTimePickerElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<TimeRange[]>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<TimeRange[], RangeTimePickerProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { TimePickerProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class TimePickerElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<string>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<string, TimePickerProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { InputWidget, WithWidget } from '@golemui/core';
2
+ import { InputWidgetAdapter, LitFormContext } from '@golemui/lit';
3
+ import { TimeInputProps } from '@golemui/gui-shared/internals';
4
+ import { LitElement } from 'lit';
5
+ import { Subscription } from 'rxjs';
6
+ export declare class TimeElement extends LitElement implements WithWidget {
7
+ widget: InputWidget<string>;
8
+ formContext: LitFormContext<any>;
9
+ adapter: InputWidgetAdapter<string, TimeInputProps>;
10
+ subscriptions: Subscription[];
11
+ createRenderRoot(): this;
12
+ updated(changedProperties: any): void;
13
+ connectedCallback(): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ valueChanged(event: CustomEvent): void;
16
+ onInputError(event: CustomEvent): void;
17
+ disconnectedCallback(): void;
18
+ }
@@ -1,7 +1,7 @@
1
- import { html as c, LitElement as p, nothing as u } from "lit";
1
+ import { html as c, LitElement as p, nothing as h } from "lit";
2
2
  import { classMap as m } from "lit/directives/class-map.js";
3
3
  import "@golemui/core";
4
- import { property as a, state as d, query as f, customElement as v } from "lit/decorators.js";
4
+ import { property as a, state as u, query as f, customElement as v } from "lit/decorators.js";
5
5
  const T = (e) => {
6
6
  const t = {
7
7
  "gui-list__item": !0,
@@ -19,8 +19,8 @@ const T = (e) => {
19
19
  ${e.template}
20
20
  </div>
21
21
  `;
22
- }, g = (e) => e !== null && typeof e == "object" && Object.prototype.hasOwnProperty.call(e, "template") && Object.prototype.hasOwnProperty.call(e, "value");
23
- function b(e) {
22
+ }, b = (e) => e !== null && typeof e == "object" && Object.prototype.hasOwnProperty.call(e, "template") && Object.prototype.hasOwnProperty.call(e, "value");
23
+ function g(e) {
24
24
  const t = typeof e;
25
25
  return t === "string" || t === "number";
26
26
  }
@@ -30,42 +30,44 @@ const y = (e, { valueField: t }) => {
30
30
  const i = e, o = t ?? "value";
31
31
  return !!Object.prototype.hasOwnProperty.call(i, o);
32
32
  };
33
- function w(e, { valueField: t }) {
33
+ function I(e, { valueField: t }) {
34
34
  if (e === null || typeof e != "object")
35
35
  throw new Error("Provided value is not an object");
36
36
  const i = e, o = t ?? "value", s = Object.prototype.hasOwnProperty.call(i, o) ? o : void 0;
37
37
  if (!s)
38
38
  throw new Error("No valueField exists on the object");
39
- return (n) => {
40
- if (n === null || typeof n != "object")
39
+ return (r) => {
40
+ if (r === null || typeof r != "object")
41
41
  throw new Error("Item is not an object");
42
+ const d = r;
42
43
  return {
43
- template: n,
44
- value: s ? n[s] : ""
44
+ template: r,
45
+ value: s ? d[s] : "",
46
+ ...typeof d.disabled == "boolean" ? { disabled: d.disabled } : {}
45
47
  };
46
48
  };
47
49
  }
48
- const _ = (e, t) => {
49
- if (Array.isArray(e) && e.length > 0 && !g(e[0])) {
50
- if (b(e[0]))
50
+ const w = (e, t) => {
51
+ if (Array.isArray(e) && e.length > 0 && !b(e[0])) {
52
+ if (g(e[0]))
51
53
  return e.map((i) => ({
52
54
  template: i,
53
55
  value: i
54
56
  }));
55
57
  if (y(e[0], t)) {
56
- const i = w(e[0], t);
58
+ const i = I(e[0], t);
57
59
  return e.map(i);
58
60
  } else
59
61
  throw new Error("Invalid list item shape");
60
62
  }
61
63
  return e;
62
64
  };
63
- var I = Object.defineProperty, x = Object.getOwnPropertyDescriptor, l = (e, t, i, o) => {
64
- for (var s = o > 1 ? void 0 : o ? x(t, i) : t, n = e.length - 1, h; n >= 0; n--)
65
- (h = e[n]) && (s = (o ? h(t, i, s) : h(s)) || s);
66
- return o && s && I(t, i, s), s;
65
+ var _ = Object.defineProperty, x = Object.getOwnPropertyDescriptor, l = (e, t, i, o) => {
66
+ for (var s = o > 1 ? void 0 : o ? x(t, i) : t, r = e.length - 1, d; r >= 0; r--)
67
+ (d = e[r]) && (s = (o ? d(t, i, s) : d(s)) || s);
68
+ return o && s && _(t, i, s), s;
67
69
  };
68
- let r = class extends p {
70
+ let n = class extends p {
69
71
  constructor() {
70
72
  super(...arguments), this.uid = void 0, this.touched = !1, this.required = !1, this.disabled = !1, this.readOnly = !1, this.value = void 0, this.valueField = void 0, this.label = void 0, this.hint = void 0, this.items = [], this.itemHeight = void 0, this.height = void 0, this._items = [], this._scrollTop = 0, this._viewportHeight = 0, this._focusedIndex = -1, this.buffer = 5;
71
73
  }
@@ -83,16 +85,16 @@ let r = class extends p {
83
85
  id=${this.uid}
84
86
  tabindex=${this.disabled ? -1 : 0}
85
87
  class="gui-list__scroll-viewport"
86
- style="max-height: ${e}px; overflow-y: auto; position: relative; display: block;"
88
+ style="max-height: ${e}px; min-height: 40px; overflow-y: auto; position: relative; display: block;"
87
89
  @scroll="${this.onScroll}"
88
90
  @keydown="${this.onKeyDown}"
89
91
  @focus="${this.onFocus}"
90
92
  @focusout="${this.onFocusOut}"
91
- aria-required=${this.required ? "true" : u}
92
- aria-disabled=${this.disabled || this.readOnly ? "true" : u}
93
- aria-activedescendant="${s ?? u}"
94
- aria-label=${this.label ?? u}
95
- aria-description=${this.hint ?? u}
93
+ aria-required=${this.required ? "true" : h}
94
+ aria-disabled=${this.disabled || this.readOnly ? "true" : h}
95
+ aria-activedescendant="${s ?? h}"
96
+ aria-label=${this.label ?? h}
97
+ aria-description=${this.hint ?? h}
96
98
  >
97
99
  <div
98
100
  class="gui-list__spacer"
@@ -124,27 +126,31 @@ let r = class extends p {
124
126
  let s = !1;
125
127
  switch (e.key) {
126
128
  case "ArrowDown":
127
- this.setFocusedIndex(Math.min(this._focusedIndex + 1, o)), s = !0;
129
+ this.setFocusedIndex(this.findEnabledIndex(Math.min(this._focusedIndex + 1, o), 1)), s = !0;
128
130
  break;
129
131
  case "ArrowUp":
130
- this.setFocusedIndex(Math.max(this._focusedIndex - 1, 0)), s = !0;
132
+ this.setFocusedIndex(this.findEnabledIndex(Math.max(this._focusedIndex - 1, 0), -1)), s = !0;
131
133
  break;
132
134
  case "PageDown":
133
- this.setFocusedIndex(Math.min(this._focusedIndex + i, o)), s = !0;
135
+ this.setFocusedIndex(
136
+ this.findEnabledIndex(Math.min(this._focusedIndex + i, o), 1)
137
+ ), s = !0;
134
138
  break;
135
139
  case "PageUp":
136
- this.setFocusedIndex(Math.max(this._focusedIndex - i, 0)), s = !0;
140
+ this.setFocusedIndex(
141
+ this.findEnabledIndex(Math.max(this._focusedIndex - i, 0), -1)
142
+ ), s = !0;
137
143
  break;
138
144
  case "Home":
139
- this.setFocusedIndex(0), s = !0;
145
+ this.setFocusedIndex(this.findEnabledIndex(0, 1)), s = !0;
140
146
  break;
141
147
  case "End":
142
- this.setFocusedIndex(o), s = !0;
148
+ this.setFocusedIndex(this.findEnabledIndex(o, -1)), s = !0;
143
149
  break;
144
150
  case "Enter":
145
151
  case " ": {
146
- const n = this._items[this._focusedIndex];
147
- this._focusedIndex >= 0 && n != null && this.selectItem(n), s = !0;
152
+ const r = this._items[this._focusedIndex];
153
+ this._focusedIndex >= 0 && r != null && !r.disabled && this.selectItem(r), s = !0;
148
154
  break;
149
155
  }
150
156
  }
@@ -171,8 +177,8 @@ let r = class extends p {
171
177
  ), this.dispatchEvent(new CustomEvent("blur", { bubbles: !0, composed: !0 })));
172
178
  }
173
179
  scrollToIndex(e) {
174
- const t = this.itemHeight ?? 40, i = this.height ?? 300, o = e * t, s = o + t, n = this.viewportElement.scrollTop, h = n + i;
175
- o < n ? this.viewportElement.scrollTop = o : s > h && (this.viewportElement.scrollTop = s - i);
180
+ const t = this.itemHeight ?? 40, i = this.height ?? 300, o = e * t, s = o + t, r = this.viewportElement.scrollTop, d = r + i;
181
+ o < r ? this.viewportElement.scrollTop = o : s > d && (this.viewportElement.scrollTop = s - i);
176
182
  }
177
183
  selectItem(e) {
178
184
  this.dispatchEvent(
@@ -183,6 +189,15 @@ let r = class extends p {
183
189
  })
184
190
  );
185
191
  }
192
+ /**
193
+ * First enabled item index walking from `from` in `direction`, or -1 when
194
+ * every item that way is disabled — keyboard navigation skips disabled rows.
195
+ */
196
+ findEnabledIndex(e, t) {
197
+ for (let i = e; i >= 0 && i < this._items.length; i += t)
198
+ if (!this._items[i]?.disabled) return i;
199
+ return -1;
200
+ }
186
201
  setFocusedIndex(e) {
187
202
  e < 0 || e >= this.items.length || (this._focusedIndex = e, this.scrollToIndex(e), this.dispatchEvent(
188
203
  new CustomEvent("gui-focus-change", {
@@ -193,7 +208,7 @@ let r = class extends p {
193
208
  ));
194
209
  }
195
210
  updateItems() {
196
- this._items = _(this.items, { valueField: this.valueField }), this.dispatchEvent(
211
+ this._items = w(this.items, { valueField: this.valueField }), this.dispatchEvent(
197
212
  new CustomEvent("gui-update-items", {
198
213
  detail: this._items,
199
214
  bubbles: !0,
@@ -219,65 +234,65 @@ let r = class extends p {
219
234
  this._scrollTop = t.scrollTop;
220
235
  }
221
236
  calculateRange() {
222
- const e = this.itemHeight ?? 40, t = this.items?.length ?? 0, i = Math.ceil(this._viewportHeight / e), o = Math.floor(this._scrollTop / e), s = Math.max(0, o - this.buffer), n = Math.min(t, o + i + this.buffer), h = s * e;
223
- return { startIndex: s, endIndex: n, offsetY: h };
237
+ const e = this.itemHeight ?? 40, t = this.items?.length ?? 0, i = Math.ceil(this._viewportHeight / e), o = Math.floor(this._scrollTop / e), s = Math.max(0, o - this.buffer), r = Math.min(t, o + i + this.buffer), d = s * e;
238
+ return { startIndex: s, endIndex: r, offsetY: d };
224
239
  }
225
240
  };
226
241
  l([
227
242
  a({ type: String })
228
- ], r.prototype, "uid", 2);
243
+ ], n.prototype, "uid", 2);
229
244
  l([
230
245
  a({ type: Boolean })
231
- ], r.prototype, "touched", 2);
246
+ ], n.prototype, "touched", 2);
232
247
  l([
233
248
  a({ type: Boolean })
234
- ], r.prototype, "required", 2);
249
+ ], n.prototype, "required", 2);
235
250
  l([
236
251
  a({ type: Boolean })
237
- ], r.prototype, "disabled", 2);
252
+ ], n.prototype, "disabled", 2);
238
253
  l([
239
254
  a({ type: Boolean, attribute: "readonly" })
240
- ], r.prototype, "readOnly", 2);
255
+ ], n.prototype, "readOnly", 2);
241
256
  l([
242
257
  a({ type: String })
243
- ], r.prototype, "value", 2);
258
+ ], n.prototype, "value", 2);
244
259
  l([
245
260
  a({ type: String })
246
- ], r.prototype, "valueField", 2);
261
+ ], n.prototype, "valueField", 2);
247
262
  l([
248
263
  a({ type: String })
249
- ], r.prototype, "label", 2);
264
+ ], n.prototype, "label", 2);
250
265
  l([
251
266
  a({ type: String })
252
- ], r.prototype, "hint", 2);
267
+ ], n.prototype, "hint", 2);
253
268
  l([
254
269
  a({ type: Array })
255
- ], r.prototype, "items", 2);
270
+ ], n.prototype, "items", 2);
256
271
  l([
257
272
  a({ type: Number })
258
- ], r.prototype, "itemHeight", 2);
273
+ ], n.prototype, "itemHeight", 2);
259
274
  l([
260
275
  a({ type: Number })
261
- ], r.prototype, "height", 2);
276
+ ], n.prototype, "height", 2);
262
277
  l([
263
- d()
264
- ], r.prototype, "_items", 2);
278
+ u()
279
+ ], n.prototype, "_items", 2);
265
280
  l([
266
- d()
267
- ], r.prototype, "_scrollTop", 2);
281
+ u()
282
+ ], n.prototype, "_scrollTop", 2);
268
283
  l([
269
- d()
270
- ], r.prototype, "_viewportHeight", 2);
284
+ u()
285
+ ], n.prototype, "_viewportHeight", 2);
271
286
  l([
272
- d()
273
- ], r.prototype, "_focusedIndex", 2);
287
+ u()
288
+ ], n.prototype, "_focusedIndex", 2);
274
289
  l([
275
290
  f(".gui-list__scroll-viewport")
276
- ], r.prototype, "viewportElement", 2);
277
- r = l([
291
+ ], n.prototype, "viewportElement", 2);
292
+ n = l([
278
293
  v("gui-list")
279
- ], r);
280
- typeof customElements < "u" && !customElements.get("gui-list") && customElements.define("gui-list", r);
294
+ ], n);
295
+ typeof customElements < "u" && !customElements.get("gui-list") && customElements.define("gui-list", n);
281
296
  export {
282
297
  T as d
283
298
  };
@@ -1,18 +1,18 @@
1
- import { InputWidgetAdapter as f, formContext as _, inputContext as b } from "@golemui/lit";
2
- import { consume as $, provide as v } from "@lit/context";
3
- import { LitElement as I, nothing as o, html as u } from "lit";
4
- import { property as x, state as h, query as y, customElement as C } from "lit/decorators.js";
1
+ import { InputWidgetAdapter as b, formContext as _, inputContext as $ } from "@golemui/lit";
2
+ import { consume as v, provide as I } from "@lit/context";
3
+ import { LitElement as x, nothing as o, html as u } from "lit";
4
+ import { property as y, state as h, query as C, customElement as R } from "lit/decorators.js";
5
5
  import "rxjs";
6
- import { d as R } from "./list-D1oKnH89.js";
6
+ import { d as w } from "./list-CrLIL4by.js";
7
7
  import "./errors-QjKhr6mA.js";
8
- var w = Object.defineProperty, D = Object.getOwnPropertyDescriptor, r = (e, i, l, d) => {
9
- for (var t = d > 1 ? void 0 : d ? D(i, l) : i, n = e.length - 1, s; n >= 0; n--)
8
+ var D = Object.defineProperty, L = Object.getOwnPropertyDescriptor, r = (e, i, l, d) => {
9
+ for (var t = d > 1 ? void 0 : d ? L(i, l) : i, n = e.length - 1, s; n >= 0; n--)
10
10
  (s = e[n]) && (t = (d ? s(i, l, t) : s(t)) || t);
11
- return d && t && w(i, l, t), t;
11
+ return d && t && D(i, l, t), t;
12
12
  };
13
- let a = class extends I {
13
+ let a = class extends x {
14
14
  constructor() {
15
- super(...arguments), this.adapter = new f(), this.subscriptions = [], this._range = { start: 0, end: 10 }, this._listItems = [], this._focusedIndex = -1;
15
+ super(...arguments), this.adapter = new b(), this.subscriptions = [], this._range = { start: 0, end: 10 }, this._listItems = [], this._focusedIndex = -1;
16
16
  }
17
17
  createRenderRoot() {
18
18
  return this;
@@ -36,7 +36,7 @@ let a = class extends I {
36
36
  render() {
37
37
  const e = this.adapter.templateData, i = e.touched && e.errors && e.errors.length > 0, l = this._listItems.slice(this._range.start, this._range.end), d = this.adapter.getItemRenderer(
38
38
  e.itemRenderer,
39
- R
39
+ w
40
40
  );
41
41
  return u`
42
42
  <gui-label
@@ -71,7 +71,7 @@ let a = class extends I {
71
71
  @change=${this._valueChanged}
72
72
  >
73
73
  ${l.map((t, n) => {
74
- const s = this._range.start + n, p = e.value === t.value, g = this._focusedIndex === s, c = e.labelField ?? "label", m = t.template !== null && typeof t.template == "object" && c && !e.itemRenderer ? t.template[c] : t.template;
74
+ const s = this._range.start + n, p = e.value === t.value, m = this._focusedIndex === s, c = !!e.disabled || !!t.disabled, g = e.labelField ?? "label", f = t.template !== null && typeof t.template == "object" && g && !e.itemRenderer ? t.template[g] : t.template;
75
75
  return u`
76
76
  <div
77
77
  role="option"
@@ -80,16 +80,16 @@ let a = class extends I {
80
80
  id="${this.widget.uid}-item-${s}"
81
81
  style="height: ${e.itemHeight || 40}px"
82
82
  aria-selected=${p ? "true" : "false"}
83
- aria-disabled=${e.disabled ? "true" : "false"}
83
+ aria-disabled=${c ? "true" : "false"}
84
84
  @click=${() => this._onClickItem(t, s)}
85
85
  >
86
86
  ${d({
87
- template: m,
87
+ template: f,
88
88
  value: t.value,
89
89
  index: s,
90
90
  selected: p,
91
- disabled: !!e.disabled,
92
- focused: g
91
+ disabled: c,
92
+ focused: m
93
93
  })}
94
94
  </div>
95
95
  `;
@@ -114,18 +114,18 @@ let a = class extends I {
114
114
  this._focusedIndex = e.detail.index;
115
115
  }
116
116
  _onClickItem(e, i) {
117
- this.adapter.templateData.disabled || (this.adapter.valueChanged(e.value), this._focusedIndex = i, this._guiListRef && typeof this._guiListRef.focusItemAtIndex == "function" && this._guiListRef.focusItemAtIndex(i));
117
+ this.adapter.templateData.disabled || e.disabled || (this.adapter.valueChanged(e.value), this._focusedIndex = i, this._guiListRef && typeof this._guiListRef.focusItemAtIndex == "function" && this._guiListRef.focusItemAtIndex(i));
118
118
  }
119
119
  _valueChanged(e) {
120
120
  this.adapter.templateData.readonly || this.adapter.valueChanged(e.detail.value);
121
121
  }
122
122
  };
123
123
  r([
124
- $({ context: _ }),
125
- x({ attribute: !1 })
124
+ v({ context: _ }),
125
+ y({ attribute: !1 })
126
126
  ], a.prototype, "formContext", 2);
127
127
  r([
128
- v({ context: b })
128
+ I({ context: $ })
129
129
  ], a.prototype, "adapter", 2);
130
130
  r([
131
131
  h()
@@ -137,10 +137,10 @@ r([
137
137
  h()
138
138
  ], a.prototype, "_focusedIndex", 2);
139
139
  r([
140
- y("gui-list")
140
+ C("gui-list")
141
141
  ], a.prototype, "_guiListRef", 2);
142
142
  a = r([
143
- C("gui-list-input")
143
+ R("gui-list-input")
144
144
  ], a);
145
145
  export {
146
146
  a as ListElement