@golemui/gui-lit 1.0.3 → 1.1.1-rc.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 (83) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/{button.element-3a7rRHbA.js → button.element-CJay43iR.js} +16 -13
  3. package/calendar-D31xNsxx.js +267 -0
  4. package/{range-calendar.element-_1bHW_c1.js → calendar.element-BhFrCsns.js} +16 -16
  5. package/{checkbox.element-CVskoXEc.js → checkbox.element-DAAVB651.js} +49 -49
  6. package/{currency.element-5GSakkxF.js → currency.element-D8A2ObpM.js} +15 -11
  7. package/{date-CDUlLuYy.js → date-DBuYpvcO.js} +88 -29
  8. package/date-input-DLiMreSS.js +204 -0
  9. package/date-picker.element-DeUQtbLg.js +357 -0
  10. package/date-time-calendar-DzU-FtVl.js +374 -0
  11. package/date-time-calendar.element-BLBcVsFu.js +95 -0
  12. package/date-time-input-DZaz2heD.js +246 -0
  13. package/date-time-picker.element-BUbLdV6i.js +440 -0
  14. package/date-time.element-B5onfSBG.js +93 -0
  15. package/{date.element-BZO0UQez.js → date.element-BsKhLrEc.js} +27 -19
  16. package/day-status-CsWStVQV.js +554 -0
  17. package/{dropdown.element-CyJbVAA5.js → dropdown.element-CXpMwJsU.js} +53 -37
  18. package/{errors-QjKhr6mA.js → errors-Byb2dIhK.js} +3 -2
  19. package/focus-leave.controller-2gV0pQd5.js +73 -0
  20. package/index.js +1635 -948
  21. package/index.umd.cjs +2046 -601
  22. package/lib/components/date-picker.element.d.ts +0 -11
  23. package/lib/components/date-time-calendar.element.d.ts +18 -0
  24. package/lib/components/date-time-picker.element.d.ts +18 -0
  25. package/lib/components/date-time.element.d.ts +18 -0
  26. package/lib/components/dropdown.element.d.ts +2 -0
  27. package/lib/components/range-calendar.element.d.ts +2 -1
  28. package/lib/components/range-date-picker.element.d.ts +0 -15
  29. package/lib/components/range-date-time-calendar.element.d.ts +18 -0
  30. package/lib/components/range-date-time-input.element.d.ts +18 -0
  31. package/lib/components/range-date-time-picker.element.d.ts +18 -0
  32. package/lib/components/range-time-input.element.d.ts +18 -0
  33. package/lib/components/range-time-picker.element.d.ts +18 -0
  34. package/lib/components/time-picker.element.d.ts +18 -0
  35. package/lib/components/time.element.d.ts +18 -0
  36. package/list-D730tmGN.js +297 -0
  37. package/{list.element-Co3V3Cn5.js → list.element-eo3DIOrp.js} +23 -23
  38. package/{markdown.element-p-kC47D7.js → markdown.element-FbtwdnAv.js} +310 -218
  39. package/{number.element-CBr47IiY.js → number.element-BEpOCzXy.js} +76 -61
  40. package/package.json +6 -6
  41. package/part-templates-VORbpgs2.js +691 -0
  42. package/{password.element-n-R9RbkB.js → password.element-CBaB8h5b.js} +19 -17
  43. package/pill-ranges-DpvWwP-3.js +48 -0
  44. package/{pills-B66qz_KX.js → pills-BDMO2NiR.js} +84 -59
  45. package/popup.controller-B33OvX_y.js +86 -0
  46. package/{radiogroup.element-CeQn623u.js → radiogroup.element-KWzBx8mx.js} +55 -51
  47. package/range-calendar-DO_woqcF.js +466 -0
  48. package/{calendar.element-DcnTyvfg.js → range-calendar.element-DHLZhpnj.js} +37 -29
  49. package/range-commit-8-MmYUyo.js +14 -0
  50. package/range-date-input-Br7XqQPK.js +311 -0
  51. package/{range-date-input.element-BqzAF0O3.js → range-date-input.element-BdD4SlB4.js} +12 -8
  52. package/range-date-picker.element-DWRHiAoC.js +434 -0
  53. package/range-date-time-calendar-B3EMgN1E.js +734 -0
  54. package/range-date-time-calendar.element-Coea6RF4.js +97 -0
  55. package/range-date-time-input-Cu-T_nuC.js +353 -0
  56. package/range-date-time-input.element-Cti44iuW.js +87 -0
  57. package/range-date-time-picker.element-CDN2RL1y.js +472 -0
  58. package/range-selection-CU3hxLJE.js +25 -0
  59. package/range-time-input-BP9ZL9O8.js +348 -0
  60. package/range-time-input.element-B7wtHJoQ.js +84 -0
  61. package/range-time-picker.element-CPIAiQPC.js +470 -0
  62. package/{repeater.element-CtNgB4F5.js → repeater.element-BM1Keckd.js} +1 -1
  63. package/{select.element-jcDF1h-g.js → select.element-eepcXTpL.js} +117 -107
  64. package/{tabs.element-BvAyI71N.js → tabs.element-CvcIA8P3.js} +1 -0
  65. package/{tags.element-CX3vQL8L.js → tags.element-CPHgotb0.js} +21 -14
  66. package/templates-Dmr34nwp.js +88 -0
  67. package/{textarea.element-HThYqdR_.js → textarea.element-CiNEy9uq.js} +8 -7
  68. package/{textinput.element-CkXNzMUg.js → textinput.element-AL2Nr768.js} +10 -9
  69. package/time-input-5dkSm8UW.js +201 -0
  70. package/time-list-DLcq8BAp.js +217 -0
  71. package/time-picker-g337F8d0.js +299 -0
  72. package/time-picker.element-DLihegjg.js +89 -0
  73. package/time.element-BneqgMlQ.js +85 -0
  74. package/{toggle.element-C1kCw5H8.js → toggle.element-Cz91CRdp.js} +44 -43
  75. package/abstract-calendar-D0-077XJ.js +0 -545
  76. package/calendar-BclCC9VJ.js +0 -96
  77. package/date-input-DCdGWRio.js +0 -268
  78. package/date-picker.element-k7AJFQ5W.js +0 -168
  79. package/list-D1oKnH89.js +0 -283
  80. package/range-calendar-CBINu84w.js +0 -255
  81. package/range-date-input-BYXzqnr1.js +0 -395
  82. package/range-date-picker.element-BCBefgvY.js +0 -182
  83. package/templates-Dk1jxLwS.js +0 -75
@@ -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";
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;
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 I, customElement as R } from "lit/decorators.js";
5
+ import { Subject as V, debounceTime as k } from "rxjs";
6
+ import { d as j } from "./list-D730tmGN.js";
7
+ import "./errors-Byb2dIhK.js";
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,9 +126,10 @@ 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 class="gui-widget" @keydown=${this._onWidgetKeyDown}>
125
130
  <input
126
131
  type="text"
132
+ role="combobox"
127
133
  id=${this.widget.uid}
128
134
  data-cy=${`${this.widget.uid}_textinput`}
129
135
  class="gui-widget-input"
@@ -132,23 +138,32 @@ let a = class extends x {
132
138
  ?disabled=${e.disabled}
133
139
  ?readonly=${e.readonly}
134
140
  placeholder=${e.placeholder ?? ""}
135
- autocomplete=${e.autocomplete || m}
141
+ autocomplete=${e.autocomplete || f}
136
142
  @keydown=${this._onKeyDown}
137
143
  @input=${this._onInput}
138
144
  @focusout=${this._onFocusOutInput}
139
145
  @focus=${this._onFocus}
140
- aria-labelledby=${e.label ? `${this.widget.uid}_label` : m}
141
- aria-describedby=${e.hint ? `${this.widget.uid}_hint` : m}
146
+ aria-expanded=${this._isListVisible ? "true" : "false"}
147
+ aria-controls=${`${this.widget.uid}-list`}
148
+ aria-autocomplete="list"
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
- ><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 256 256">
153
+ ><svg
154
+ xmlns="http://www.w3.org/2000/svg"
155
+ width="16"
156
+ height="16"
157
+ viewBox="0 0 256 256"
158
+ aria-hidden="true"
159
+ >
145
160
  <path
146
161
  d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"
147
162
  ></path></svg
148
163
  ></span>
149
164
 
150
165
  <gui-list
151
- id=${this.widget.uid}
166
+ id=${`${this.widget.uid}-list`}
152
167
  .uid=${this.widget.uid}
153
168
  .value=${e.value ?? ""}
154
169
  .valueField=${e.valueField}
@@ -167,8 +182,8 @@ let a = class extends x {
167
182
  @blur=${this._onBlur}
168
183
  @change=${this._onValueChange}
169
184
  >
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;
185
+ ${i.map((o, _) => {
186
+ const u = this._range.start + _, p = e.value === o.value, m = this._focusedIndex === u, b = !!e.disabled || !!o.disabled, $ = e.labelField ?? "label", v = o.template !== null && typeof o.template == "object" && $ && !e.itemRenderer ? o.template[$] : o.template;
172
187
  return g`
173
188
  <div
174
189
  role="option"
@@ -177,15 +192,16 @@ let a = class extends x {
177
192
  id="${this.widget.uid}-item-${u}"
178
193
  style="height: ${e.itemHeight || 40}px"
179
194
  aria-selected=${p ? "true" : "false"}
180
- @click=${() => this._onClickItem(d, u)}
195
+ aria-disabled=${b ? "true" : "false"}
196
+ @click=${() => this._onClickItem(o, u)}
181
197
  >
182
198
  ${s({
183
- template: $,
184
- value: d.value,
199
+ template: v,
200
+ value: o.value,
185
201
  index: u,
186
202
  selected: p,
187
- disabled: !!e.disabled,
188
- focused: f
203
+ disabled: b,
204
+ focused: m
189
205
  })}
190
206
  </div>
191
207
  `;
@@ -197,16 +213,16 @@ let a = class extends x {
197
213
  .uid=${this.widget.uid}
198
214
  .errors=${e.errors}
199
215
  .touched=${e.touched}
200
- ></gui-errors>` : m}
216
+ ></gui-errors>` : f}
201
217
  `;
202
218
  }
203
219
  };
204
220
  l([
205
- F({ context: w }),
206
- D({ attribute: !1 })
221
+ x({ context: y }),
222
+ L({ attribute: !1 })
207
223
  ], a.prototype, "formContext", 2);
208
224
  l([
209
- C({ context: y })
225
+ C({ context: F })
210
226
  ], a.prototype, "adapter", 2);
211
227
  l([
212
228
  c()
@@ -236,7 +252,7 @@ l([
236
252
  I("gui-list")
237
253
  ], a.prototype, "_listRef", 2);
238
254
  a = l([
239
- L("gui-dropdown-input")
255
+ R("gui-dropdown-input")
240
256
  ], a);
241
257
  export {
242
258
  a as DropdownElement
@@ -1,6 +1,6 @@
1
1
  import { LitElement as h, html as y } from "lit";
2
2
  import { property as r, customElement as c } from "lit/decorators.js";
3
- import { G as m, b as f, c as g } from "./templates-Dk1jxLwS.js";
3
+ import { G as m, b as f, c as g } from "./templates-Dmr34nwp.js";
4
4
  var v = Object.defineProperty, b = Object.getOwnPropertyDescriptor, o = (u, s, n, i) => {
5
5
  for (var e = i > 1 ? void 0 : i ? b(s, n) : s, l = u.length - 1, a; l >= 0; l--)
6
6
  (a = u[l]) && (e = (i ? a(s, n, e) : a(e)) || e);
@@ -17,7 +17,8 @@ let t = class extends h {
17
17
  errors: this.errors,
18
18
  readonly: this.readOnly,
19
19
  disabled: this.disabled,
20
- touched: this.touched
20
+ touched: this.touched,
21
+ required: this.required
21
22
  }
22
23
  })
23
24
  });
@@ -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
+ };