@golemui/gui-lit 1.0.2 → 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 (70) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/calendar-BuJgwvZx.js +254 -0
  3. package/{calendar.element-MubSE1bx.js → calendar.element-M5MPJmap.js} +1 -1
  4. package/{currency.element-BHXWcOEu.js → currency.element-CfFrAtrr.js} +20 -14
  5. package/{date-DTYg8sog.js → date-Bj9mI3GU.js} +106 -50
  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-BtVJSIRk.js → date.element-Consgsbb.js} +32 -27
  14. package/day-status-0-hJHrI7.js +530 -0
  15. package/{dropdown.element-DqzC6aXR.js → dropdown.element-WsD61Qel.js} +57 -48
  16. package/focus-leave.controller-2gV0pQd5.js +73 -0
  17. package/index.js +1209 -981
  18. package/index.umd.cjs +1574 -519
  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/{number.element-BhEyoOtc.js → number.element-CBr47IiY.js} +18 -16
  36. package/numeric-jmOOKz30.js +12 -0
  37. package/package.json +6 -6
  38. package/part-templates-Db871PS3.js +677 -0
  39. package/pill-ranges-DCqDmpkk.js +48 -0
  40. package/{pills-B66qz_KX.js → pills-Be1UrLgq.js} +4 -1
  41. package/popup.controller-eUDxE6jD.js +71 -0
  42. package/range-calendar-CKPYeSGt.js +452 -0
  43. package/{range-calendar.element-QTE6vGNP.js → range-calendar.element-D6KYq18B.js} +24 -20
  44. package/range-commit-8-MmYUyo.js +14 -0
  45. package/range-date-input-D--AqBMv.js +292 -0
  46. package/{range-date-input.element-Dj29D_OQ.js → range-date-input.element-D4nIXJbw.js} +8 -7
  47. package/range-date-picker.element-dhxPAAE6.js +386 -0
  48. package/range-date-time-calendar-yksWrR7b.js +720 -0
  49. package/range-date-time-calendar.element-C00aDefZ.js +95 -0
  50. package/range-date-time-input-B37TUoM3.js +322 -0
  51. package/range-date-time-input.element-DUnbv4ed.js +81 -0
  52. package/range-date-time-picker.element-Cbps6s_G.js +412 -0
  53. package/range-selection-CU3hxLJE.js +25 -0
  54. package/range-time-input-3lhqR1Ku.js +329 -0
  55. package/range-time-input.element-dU2iBdmJ.js +81 -0
  56. package/range-time-picker.element-v6nQsIPw.js +429 -0
  57. package/{select.element-jcDF1h-g.js → select.element-C0V-Bv3L.js} +94 -90
  58. package/{tags.element-CX3vQL8L.js → tags.element-DvwEpxpK.js} +1 -1
  59. package/time-input-BOhlBGJZ.js +181 -0
  60. package/time-list-Czo48bZm.js +217 -0
  61. package/time-picker-bFJ63ky8.js +261 -0
  62. package/time-picker.element-CYZVXgRS.js +85 -0
  63. package/time.element-fK3oLi49.js +82 -0
  64. package/abstract-calendar-BoqKPRmS.js +0 -545
  65. package/calendar-DTYKVYc3.js +0 -96
  66. package/date-input-BeQvyfln.js +0 -268
  67. package/date-picker.element-DabW_-0-.js +0 -166
  68. package/range-calendar-9skwbwlB.js +0 -255
  69. package/range-date-input-Uy8134vi.js +0 -395
  70. package/range-date-picker.element-CuKIBkIO.js +0 -182
@@ -1,18 +1,18 @@
1
- import { InputWidgetAdapter as v, formContext as w, inputContext as y } from "@golemui/lit";
2
- import { consume as F, provide as C } from "@lit/context";
3
- import { LitElement as x, nothing as m, html as f } from "lit";
4
- import { property as D, state as c, query as I, customElement as L } from "lit/decorators.js";
5
- import { Subject as R, debounceTime as V } from "rxjs";
6
- import { d as k } from "./list-D1oKnH89.js";
1
+ import { InputWidgetAdapter as w, formContext as y, inputContext as F } from "@golemui/lit";
2
+ import { consume as x, provide as C } from "@lit/context";
3
+ import { LitElement as D, nothing as f, html as g } from "lit";
4
+ import { property as L, state as c, query as $, customElement as R } from "lit/decorators.js";
5
+ import { Subject as V, debounceTime as k } from "rxjs";
6
+ import { d as j } from "./list-CrLIL4by.js";
7
7
  import "./errors-QjKhr6mA.js";
8
- var O = Object.defineProperty, j = Object.getOwnPropertyDescriptor, l = (e, t, i, s) => {
9
- for (var n = s > 1 ? void 0 : s ? j(t, i) : t, d = e.length - 1, o; d >= 0; d--)
10
- (o = e[d]) && (n = (s ? o(t, i, n) : o(n)) || n);
11
- return s && n && O(t, i, n), n;
8
+ var O = Object.defineProperty, S = Object.getOwnPropertyDescriptor, l = (e, t, i, s) => {
9
+ for (var r = s > 1 ? void 0 : s ? S(t, i) : t, d = e.length - 1, h; d >= 0; d--)
10
+ (h = e[d]) && (r = (s ? h(t, i, r) : h(r)) || r);
11
+ return s && r && O(t, i, r), r;
12
12
  };
13
- let a = class extends x {
13
+ let a = class extends D {
14
14
  constructor() {
15
- super(...arguments), this.adapter = new v(), this.debouncer = new R(), this.subscriptions = [], this._range = { start: 0, end: 10 }, this._filteredItems = [], this._listItems = [], this._focusedIndex = -1, this._isFiltering = !1, this._isListVisible = !1, this._selectedItem = void 0, this.onDocumentClick = (e) => {
15
+ super(...arguments), this.adapter = new w(), this.debouncer = new V(), this.subscriptions = [], this._range = { start: 0, end: 10 }, this._filteredItems = [], this._listItems = [], this._focusedIndex = -1, this._isFiltering = !1, this._isListVisible = !1, this._selectedItem = void 0, this._ignoreNextFocus = !1, this.onDocumentClick = (e) => {
16
16
  if (!this._isListVisible) return;
17
17
  const t = e.composedPath(), i = this._inputRef && t.includes(this._inputRef), s = this._listRef && t.includes(this._listRef);
18
18
  !i && !s && (this._isListVisible = !1);
@@ -32,7 +32,7 @@ let a = class extends x {
32
32
  const e = this.adapter.templateData;
33
33
  e.items && this._listItems?.length === 0 && this._filteredItems?.length === 0 && (this._filteredItems = e.items, this._listItems = e.items), this.requestUpdate();
34
34
  }),
35
- this.debouncer.pipe(V(this.adapter.templateData.inputDebounce ?? 500)).subscribe((e) => {
35
+ this.debouncer.pipe(k(this.adapter.templateData.inputDebounce ?? 500)).subscribe((e) => {
36
36
  this._filterItems(e);
37
37
  })
38
38
  );
@@ -56,7 +56,7 @@ let a = class extends x {
56
56
  this._focusedIndex = e.detail.index;
57
57
  }
58
58
  _onClickItem(e, t) {
59
- if (this.adapter.templateData.readonly) return;
59
+ if (this.adapter.templateData.readonly || e.disabled) return;
60
60
  const i = this.adapter.templateData;
61
61
  this.adapter.valueChanged(e.value), this.adapter.filterChanged(""), this._focusedIndex = t, this._selectedItem = e, this._isFiltering = !1, this._isListVisible = !1, this._listRef && (this._listRef.focusItemAtIndex(t), this._inputRef.value = i.valueField ? e.template[i.valueField] : e.template);
62
62
  }
@@ -83,20 +83,24 @@ let a = class extends x {
83
83
  if (this.adapter.filterChanged(e), e && !i) {
84
84
  this._isFiltering = !0, this._isListVisible = !0;
85
85
  const s = t.searchFields ?? [t.labelField, t.valueField].filter(
86
- (h) => !!h
87
- ), n = s.length > 0, o = (t.items || []).filter((h) => {
88
- const r = Object.keys(h);
89
- if (!r.length)
90
- return h.toString().toLowerCase().includes(e.toLowerCase());
91
- const u = (p, _) => p || h[_].toString().toLowerCase().includes(e.toLowerCase());
92
- return n ? r.filter((p) => s.includes(p)).reduce(u, !1) : r.reduce(u, !1);
86
+ (n) => !!n
87
+ ), r = s.length > 0, h = (t.items || []).filter((n) => {
88
+ if (n === null || typeof n != "object")
89
+ return n != null && n.toString().toLowerCase().includes(e.toLowerCase());
90
+ const _ = Object.keys(n), u = (p, m) => p || n[m].toString().toLowerCase().includes(e.toLowerCase());
91
+ return r ? _.filter((p) => s.includes(p)).reduce(u, !1) : _.reduce(u, !1);
93
92
  });
94
- this._filteredItems = [...o];
93
+ this._filteredItems = [...h];
95
94
  } else
96
95
  this._isFiltering = !1, this._filteredItems = [...t.items];
97
96
  }
97
+ _onWidgetKeyDown(e) {
98
+ e.key !== "Escape" || !this._isListVisible || (e.preventDefault(), e.stopPropagation(), this._isListVisible = !1, this._isFiltering = !1, this._ignoreNextFocus = !0, this._inputRef?.focus(), setTimeout(() => {
99
+ this._ignoreNextFocus = !1;
100
+ }));
101
+ }
98
102
  async _onFocus() {
99
- this._isListVisible = !0, await this.updateComplete, this._listRef.scrollToSelectedIndex();
103
+ this._ignoreNextFocus || (this._isListVisible = !0, await this.updateComplete, this._listRef.scrollToSelectedIndex());
100
104
  }
101
105
  _onFocusOutInput(e) {
102
106
  const t = e.relatedTarget;
@@ -108,9 +112,9 @@ let a = class extends x {
108
112
  render() {
109
113
  const e = this.adapter.templateData, t = e.touched && e.errors && e.errors.length > 0, i = this._listItems.slice(this._range.start, this._range.end), s = this.adapter.getItemRenderer(
110
114
  e.itemRenderer,
111
- k
112
- ), d = this._selectedItem?.template !== null && typeof this._selectedItem?.template == "object" ? e.labelField ?? "label" : null, o = d ? this._selectedItem?.template[d] : this._selectedItem?.template, h = !!this.widget.on?.filter;
113
- return f`
115
+ j
116
+ ), d = this._selectedItem?.template !== null && typeof this._selectedItem?.template == "object" ? e.labelField ?? "label" : null, h = d ? this._selectedItem?.template[d] : this._selectedItem?.template, n = !!this.widget.on?.filter;
117
+ return g`
114
118
  <gui-label
115
119
  .targetElement=${[this._listRef, this._inputRef]}
116
120
  .uid=${this.widget.uid}
@@ -122,24 +126,28 @@ let a = class extends x {
122
126
  .native=${!1}
123
127
  ></gui-label>
124
128
 
125
- <div class="gui-widget" aria-expanded=${this._isListVisible}>
129
+ <div
130
+ class="gui-widget"
131
+ aria-expanded=${this._isListVisible}
132
+ @keydown=${this._onWidgetKeyDown}
133
+ >
126
134
  <input
127
135
  type="text"
128
136
  id=${this.widget.uid}
129
137
  data-cy=${`${this.widget.uid}_textinput`}
130
138
  class="gui-widget-input"
131
- .value=${o ?? e.value ?? ""}
139
+ .value=${h ?? e.value ?? ""}
132
140
  ?required=${e.validator?.required}
133
141
  ?disabled=${e.disabled}
134
142
  ?readonly=${e.readonly}
135
143
  placeholder=${e.placeholder ?? ""}
136
- autocomplete=${e.autocomplete || m}
144
+ autocomplete=${e.autocomplete || f}
137
145
  @keydown=${this._onKeyDown}
138
146
  @input=${this._onInput}
139
147
  @focusout=${this._onFocusOutInput}
140
148
  @focus=${this._onFocus}
141
- aria-labelledby=${e.label ? `${this.widget.uid}_label` : m}
142
- aria-describedby=${e.hint ? `${this.widget.uid}_hint` : m}
149
+ aria-labelledby=${e.label ? `${this.widget.uid}_label` : f}
150
+ aria-describedby=${e.hint ? `${this.widget.uid}_hint` : f}
143
151
  />
144
152
  <span class="gui-dropdown__arrow"
145
153
  ><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 256 256">
@@ -153,7 +161,7 @@ let a = class extends x {
153
161
  .uid=${this.widget.uid}
154
162
  .value=${e.value ?? ""}
155
163
  .valueField=${e.valueField}
156
- .items=${this._isFiltering && !h ? this._filteredItems : e.items}
164
+ .items=${this._isFiltering && !n ? this._filteredItems : e.items}
157
165
  .itemHeight=${e.itemHeight}
158
166
  .height=${e.height}
159
167
  ?required=${e.validator?.required}
@@ -168,9 +176,9 @@ let a = class extends x {
168
176
  @blur=${this._onBlur}
169
177
  @change=${this._onValueChange}
170
178
  >
171
- ${i.map((r, g) => {
172
- const u = this._range.start + g, p = e.value === r.value, _ = this._focusedIndex === u, b = e.labelField ?? "label", $ = r.template !== null && typeof r.template == "object" && b && !e.itemRenderer ? r.template[b] : r.template;
173
- return f`
179
+ ${i.map((o, _) => {
180
+ const u = this._range.start + _, p = e.value === o.value, m = this._focusedIndex === u, b = !!e.disabled || !!o.disabled, I = e.labelField ?? "label", v = o.template !== null && typeof o.template == "object" && I && !e.itemRenderer ? o.template[I] : o.template;
181
+ return g`
174
182
  <div
175
183
  role="option"
176
184
  tabindex="-1"
@@ -178,15 +186,16 @@ let a = class extends x {
178
186
  id="${this.widget.uid}-item-${u}"
179
187
  style="height: ${e.itemHeight || 40}px"
180
188
  aria-selected=${p ? "true" : "false"}
181
- @click=${() => this._onClickItem(r, u)}
189
+ aria-disabled=${b ? "true" : "false"}
190
+ @click=${() => this._onClickItem(o, u)}
182
191
  >
183
192
  ${s({
184
- template: $,
185
- value: r.value,
193
+ template: v,
194
+ value: o.value,
186
195
  index: u,
187
196
  selected: p,
188
- disabled: !!e.disabled,
189
- focused: _
197
+ disabled: b,
198
+ focused: m
190
199
  })}
191
200
  </div>
192
201
  `;
@@ -194,20 +203,20 @@ let a = class extends x {
194
203
  </gui-list>
195
204
  </div>
196
205
 
197
- ${t ? f`<gui-errors
206
+ ${t ? g`<gui-errors
198
207
  .uid=${this.widget.uid}
199
208
  .errors=${e.errors}
200
209
  .touched=${e.touched}
201
- ></gui-errors>` : m}
210
+ ></gui-errors>` : f}
202
211
  `;
203
212
  }
204
213
  };
205
214
  l([
206
- F({ context: w }),
207
- D({ attribute: !1 })
215
+ x({ context: y }),
216
+ L({ attribute: !1 })
208
217
  ], a.prototype, "formContext", 2);
209
218
  l([
210
- C({ context: y })
219
+ C({ context: F })
211
220
  ], a.prototype, "adapter", 2);
212
221
  l([
213
222
  c()
@@ -231,13 +240,13 @@ l([
231
240
  c()
232
241
  ], a.prototype, "_selectedItem", 2);
233
242
  l([
234
- I("input")
243
+ $("input")
235
244
  ], a.prototype, "_inputRef", 2);
236
245
  l([
237
- I("gui-list")
246
+ $("gui-list")
238
247
  ], a.prototype, "_listRef", 2);
239
248
  a = l([
240
- L("gui-dropdown-input")
249
+ R("gui-dropdown-input")
241
250
  ], a);
242
251
  export {
243
252
  a as DropdownElement
@@ -0,0 +1,73 @@
1
+ import "lit";
2
+ function c(i, e, n, t, r = {}) {
3
+ const { includeStart: d = !1, outOfBounds: s = "index" } = r;
4
+ let a = d ? i : i + e;
5
+ for (; a >= 0 && a < n; ) {
6
+ if (!t(a))
7
+ return a;
8
+ a += e;
9
+ }
10
+ return s === "index" ? a : -1;
11
+ }
12
+ function u(i, e) {
13
+ const { columns: n, isRTL: t, pageSize: r } = e;
14
+ switch (i) {
15
+ case "ArrowUp":
16
+ return { kind: "delta", delta: -n };
17
+ case "ArrowDown":
18
+ return { kind: "delta", delta: n };
19
+ case "ArrowLeft":
20
+ return n === 1 ? { kind: "none" } : { kind: "delta", delta: t ? 1 : -1 };
21
+ case "ArrowRight":
22
+ return n === 1 ? { kind: "none" } : { kind: "delta", delta: t ? -1 : 1 };
23
+ case "PageUp":
24
+ return r === void 0 ? { kind: "none" } : { kind: "delta", delta: -r };
25
+ case "PageDown":
26
+ return r === void 0 ? { kind: "none" } : { kind: "delta", delta: r };
27
+ case "Home":
28
+ return { kind: "edge", edge: "first" };
29
+ case "End":
30
+ return { kind: "edge", edge: "last" };
31
+ default:
32
+ return { kind: "none" };
33
+ }
34
+ }
35
+ function l(i, e, n) {
36
+ return Math.max(1, Math.floor((i ?? 300) / (e || 40))) * (n || 1);
37
+ }
38
+ function h(i, e) {
39
+ const n = [];
40
+ for (let t = 0; t < i.length; t += e)
41
+ n.push(i.slice(t, t + e));
42
+ return n;
43
+ }
44
+ class f {
45
+ constructor(e, n) {
46
+ this.onFocusOut = (t) => {
47
+ this.handleFocusOut(t);
48
+ }, e.addController(this), this.host = e, this.options = n;
49
+ }
50
+ /** Runs the leave detection for a focusout event. */
51
+ handleFocusOut(e) {
52
+ this.isInside(e.relatedTarget) || (this._rafId !== void 0 && cancelAnimationFrame(this._rafId), this._rafId = requestAnimationFrame(() => {
53
+ this._rafId = void 0, this.isInside(document.activeElement) || this.options.onLeave();
54
+ }));
55
+ }
56
+ /** Cancels a pending deferred leave check, if any. */
57
+ cancelPendingLeave() {
58
+ this._rafId !== void 0 && (cancelAnimationFrame(this._rafId), this._rafId = void 0);
59
+ }
60
+ isInside(e) {
61
+ return !!e && this.host.contains(e);
62
+ }
63
+ hostDisconnected() {
64
+ this.cancelPendingLeave();
65
+ }
66
+ }
67
+ export {
68
+ f as G,
69
+ h as c,
70
+ u as g,
71
+ l,
72
+ c as n
73
+ };