@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
@@ -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 g } 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 j = Object.defineProperty, O = Object.getOwnPropertyDescriptor, l = (e, t, i, s) => {
9
- for (var r = s > 1 ? void 0 : s ? O(t, i) : t, o = e.length - 1, h; o >= 0; o--)
10
- (h = e[o]) && (r = (s ? h(t, i, r) : h(r)) || r);
11
- return s && r && j(t, i, r), r;
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
  }
@@ -87,15 +87,20 @@ let a = class extends x {
87
87
  ), r = s.length > 0, h = (t.items || []).filter((n) => {
88
88
  if (n === null || typeof n != "object")
89
89
  return n != null && n.toString().toLowerCase().includes(e.toLowerCase());
90
- const _ = Object.keys(n), u = (p, f) => p || n[f].toString().toLowerCase().includes(e.toLowerCase());
90
+ const _ = Object.keys(n), u = (p, m) => p || n[m].toString().toLowerCase().includes(e.toLowerCase());
91
91
  return r ? _.filter((p) => s.includes(p)).reduce(u, !1) : _.reduce(u, !1);
92
92
  });
93
93
  this._filteredItems = [...h];
94
94
  } else
95
95
  this._isFiltering = !1, this._filteredItems = [...t.items];
96
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
+ }
97
102
  async _onFocus() {
98
- this._isListVisible = !0, await this.updateComplete, this._listRef.scrollToSelectedIndex();
103
+ this._ignoreNextFocus || (this._isListVisible = !0, await this.updateComplete, this._listRef.scrollToSelectedIndex());
99
104
  }
100
105
  _onFocusOutInput(e) {
101
106
  const t = e.relatedTarget;
@@ -107,8 +112,8 @@ let a = class extends x {
107
112
  render() {
108
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(
109
114
  e.itemRenderer,
110
- k
111
- ), o = this._selectedItem?.template !== null && typeof this._selectedItem?.template == "object" ? e.labelField ?? "label" : null, h = o ? this._selectedItem?.template[o] : this._selectedItem?.template, n = !!this.widget.on?.filter;
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;
112
117
  return g`
113
118
  <gui-label
114
119
  .targetElement=${[this._listRef, this._inputRef]}
@@ -121,7 +126,11 @@ let a = class extends x {
121
126
  .native=${!1}
122
127
  ></gui-label>
123
128
 
124
- <div class="gui-widget" aria-expanded=${this._isListVisible}>
129
+ <div
130
+ class="gui-widget"
131
+ aria-expanded=${this._isListVisible}
132
+ @keydown=${this._onWidgetKeyDown}
133
+ >
125
134
  <input
126
135
  type="text"
127
136
  id=${this.widget.uid}
@@ -132,13 +141,13 @@ let a = class extends x {
132
141
  ?disabled=${e.disabled}
133
142
  ?readonly=${e.readonly}
134
143
  placeholder=${e.placeholder ?? ""}
135
- autocomplete=${e.autocomplete || m}
144
+ autocomplete=${e.autocomplete || f}
136
145
  @keydown=${this._onKeyDown}
137
146
  @input=${this._onInput}
138
147
  @focusout=${this._onFocusOutInput}
139
148
  @focus=${this._onFocus}
140
- aria-labelledby=${e.label ? `${this.widget.uid}_label` : m}
141
- 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}
142
151
  />
143
152
  <span class="gui-dropdown__arrow"
144
153
  ><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 256 256">
@@ -167,8 +176,8 @@ let a = class extends x {
167
176
  @blur=${this._onBlur}
168
177
  @change=${this._onValueChange}
169
178
  >
170
- ${i.map((d, _) => {
171
- const u = this._range.start + _, p = e.value === d.value, f = this._focusedIndex === u, b = e.labelField ?? "label", $ = d.template !== null && typeof d.template == "object" && b && !e.itemRenderer ? d.template[b] : d.template;
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;
172
181
  return g`
173
182
  <div
174
183
  role="option"
@@ -177,15 +186,16 @@ let a = class extends x {
177
186
  id="${this.widget.uid}-item-${u}"
178
187
  style="height: ${e.itemHeight || 40}px"
179
188
  aria-selected=${p ? "true" : "false"}
180
- @click=${() => this._onClickItem(d, u)}
189
+ aria-disabled=${b ? "true" : "false"}
190
+ @click=${() => this._onClickItem(o, u)}
181
191
  >
182
192
  ${s({
183
- template: $,
184
- value: d.value,
193
+ template: v,
194
+ value: o.value,
185
195
  index: u,
186
196
  selected: p,
187
- disabled: !!e.disabled,
188
- focused: f
197
+ disabled: b,
198
+ focused: m
189
199
  })}
190
200
  </div>
191
201
  `;
@@ -197,16 +207,16 @@ let a = class extends x {
197
207
  .uid=${this.widget.uid}
198
208
  .errors=${e.errors}
199
209
  .touched=${e.touched}
200
- ></gui-errors>` : m}
210
+ ></gui-errors>` : f}
201
211
  `;
202
212
  }
203
213
  };
204
214
  l([
205
- F({ context: w }),
206
- D({ attribute: !1 })
215
+ x({ context: y }),
216
+ L({ attribute: !1 })
207
217
  ], a.prototype, "formContext", 2);
208
218
  l([
209
- C({ context: y })
219
+ C({ context: F })
210
220
  ], a.prototype, "adapter", 2);
211
221
  l([
212
222
  c()
@@ -230,13 +240,13 @@ l([
230
240
  c()
231
241
  ], a.prototype, "_selectedItem", 2);
232
242
  l([
233
- I("input")
243
+ $("input")
234
244
  ], a.prototype, "_inputRef", 2);
235
245
  l([
236
- I("gui-list")
246
+ $("gui-list")
237
247
  ], a.prototype, "_listRef", 2);
238
248
  a = l([
239
- L("gui-dropdown-input")
249
+ R("gui-dropdown-input")
240
250
  ], a);
241
251
  export {
242
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
+ };