bitboss-ui 2.0.0 → 2.0.1

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 (166) hide show
  1. package/dist/index105.js +4 -4
  2. package/dist/index113.js +1 -1
  3. package/dist/index115.js +4 -4
  4. package/dist/index117.js +1 -1
  5. package/dist/index12.js +1 -1
  6. package/dist/index121.js +1 -1
  7. package/dist/index122.js +1 -1
  8. package/dist/index123.js +1 -1
  9. package/dist/index14.js +3 -3
  10. package/dist/index16.js +2 -2
  11. package/dist/index18.js +8 -8
  12. package/dist/index199.js +3 -3
  13. package/dist/index199.js.map +1 -1
  14. package/dist/index20.js +12 -12
  15. package/dist/index200.js +35 -3
  16. package/dist/index200.js.map +1 -1
  17. package/dist/index201.js +6 -35
  18. package/dist/index201.js.map +1 -1
  19. package/dist/index202.js +7 -6
  20. package/dist/index202.js.map +1 -1
  21. package/dist/index203.js +5 -7
  22. package/dist/index203.js.map +1 -1
  23. package/dist/index204.js +126 -5
  24. package/dist/index204.js.map +1 -1
  25. package/dist/index205.js +281 -2
  26. package/dist/index205.js.map +1 -1
  27. package/dist/index206.js +123 -4
  28. package/dist/index206.js.map +1 -1
  29. package/dist/index207.js +19 -2
  30. package/dist/index207.js.map +1 -1
  31. package/dist/index208.js +2 -281
  32. package/dist/index208.js.map +1 -1
  33. package/dist/index209.js +2 -16
  34. package/dist/index209.js.map +1 -1
  35. package/dist/index210.js +172 -14
  36. package/dist/index210.js.map +1 -1
  37. package/dist/index211.js +42 -19
  38. package/dist/index211.js.map +1 -1
  39. package/dist/index213.js +13 -27
  40. package/dist/index213.js.map +1 -1
  41. package/dist/index214.js +369 -8
  42. package/dist/index214.js.map +1 -1
  43. package/dist/index215.js +2 -2
  44. package/dist/index215.js.map +1 -1
  45. package/dist/index216.js +4 -158
  46. package/dist/index216.js.map +1 -1
  47. package/dist/index217.js +2 -84
  48. package/dist/index217.js.map +1 -1
  49. package/dist/index218.js +161 -0
  50. package/dist/index218.js.map +1 -0
  51. package/dist/index219.js +83 -125
  52. package/dist/index219.js.map +1 -1
  53. package/dist/index22.js +5 -5
  54. package/dist/index221.js +3 -2
  55. package/dist/index221.js.map +1 -1
  56. package/dist/index222.js +14 -172
  57. package/dist/index222.js.map +1 -1
  58. package/dist/index223.js +16 -42
  59. package/dist/index223.js.map +1 -1
  60. package/dist/{index212.js → index224.js} +3 -3
  61. package/dist/{index212.js.map → index224.js.map} +1 -1
  62. package/dist/index225.js +27 -13
  63. package/dist/index225.js.map +1 -1
  64. package/dist/index226.js +8 -369
  65. package/dist/index226.js.map +1 -1
  66. package/dist/index227.js +1 -1
  67. package/dist/index234.js +1 -1
  68. package/dist/index237.js +7 -222
  69. package/dist/index237.js.map +1 -1
  70. package/dist/index24.js +1 -1
  71. package/dist/index240.js +6 -431
  72. package/dist/index240.js.map +1 -1
  73. package/dist/index241.js +16 -89
  74. package/dist/index241.js.map +1 -1
  75. package/dist/index242.js +431 -6
  76. package/dist/index242.js.map +1 -1
  77. package/dist/index243.js +89 -16
  78. package/dist/index243.js.map +1 -1
  79. package/dist/index244.js +5 -4
  80. package/dist/index244.js.map +1 -1
  81. package/dist/index245.js +2 -200
  82. package/dist/index245.js.map +1 -1
  83. package/dist/index246.js +9 -6
  84. package/dist/index246.js.map +1 -1
  85. package/dist/index247.js +69 -2
  86. package/dist/index247.js.map +1 -1
  87. package/dist/index248.js +200 -2
  88. package/dist/index248.js.map +1 -1
  89. package/dist/index249.js +4 -2
  90. package/dist/index249.js.map +1 -1
  91. package/dist/index250.js +6 -2
  92. package/dist/index250.js.map +1 -1
  93. package/dist/index251.js +2 -2
  94. package/dist/index252.js +2 -2
  95. package/dist/index253.js +2 -3
  96. package/dist/index253.js.map +1 -1
  97. package/dist/index254.js +126 -12
  98. package/dist/index254.js.map +1 -1
  99. package/dist/index255.js +3 -9
  100. package/dist/index255.js.map +1 -1
  101. package/dist/index257.js +7 -17
  102. package/dist/index257.js.map +1 -1
  103. package/dist/index258.js +3 -9
  104. package/dist/index258.js.map +1 -1
  105. package/dist/index259.js +12 -2
  106. package/dist/index259.js.map +1 -1
  107. package/dist/index26.js +2 -2
  108. package/dist/index260.js +7 -124
  109. package/dist/index260.js.map +1 -1
  110. package/dist/index261.js +17 -3
  111. package/dist/index261.js.map +1 -1
  112. package/dist/index262.js +439 -0
  113. package/dist/index262.js.map +1 -0
  114. package/dist/index263.js +126 -6
  115. package/dist/index263.js.map +1 -1
  116. package/dist/index264.js +224 -2
  117. package/dist/index264.js.map +1 -1
  118. package/dist/index265.js +2 -69
  119. package/dist/index265.js.map +1 -1
  120. package/dist/index266.js +2 -436
  121. package/dist/index266.js.map +1 -1
  122. package/dist/index267.js +2 -127
  123. package/dist/index267.js.map +1 -1
  124. package/dist/index268.js +2 -3
  125. package/dist/index268.js.map +1 -1
  126. package/dist/index269.js +1 -1
  127. package/dist/index270.js +3 -211
  128. package/dist/index270.js.map +1 -1
  129. package/dist/index271.js +214 -0
  130. package/dist/index271.js.map +1 -0
  131. package/dist/index273.js +28 -5
  132. package/dist/index273.js.map +1 -1
  133. package/dist/index278.js +2 -11
  134. package/dist/index278.js.map +1 -1
  135. package/dist/index279.js +10 -34
  136. package/dist/index279.js.map +1 -1
  137. package/dist/index28.js +2 -2
  138. package/dist/index280.js +34 -46
  139. package/dist/index280.js.map +1 -1
  140. package/dist/index281.js +47 -2
  141. package/dist/index281.js.map +1 -1
  142. package/dist/index30.js +2 -2
  143. package/dist/index32.js +3 -3
  144. package/dist/index34.js +42 -41
  145. package/dist/index34.js.map +1 -1
  146. package/dist/index36.js +1 -1
  147. package/dist/index38.js +2 -2
  148. package/dist/index40.js +2 -2
  149. package/dist/index42.js +4 -4
  150. package/dist/index44.js +2 -2
  151. package/dist/index46.js +2 -2
  152. package/dist/index52.js +1 -1
  153. package/dist/index54.js +1 -1
  154. package/dist/index70.js +2 -2
  155. package/dist/index74.js +2 -2
  156. package/dist/index76.js +1 -1
  157. package/dist/index79.js +2 -2
  158. package/dist/index81.js +1 -1
  159. package/dist/index83.js +3 -3
  160. package/package.json +2 -2
  161. package/dist/index220.js +0 -126
  162. package/dist/index220.js.map +0 -1
  163. package/dist/index256.js +0 -12
  164. package/dist/index256.js.map +0 -1
  165. package/dist/index272.js +0 -31
  166. package/dist/index272.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index267.js","sources":["../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs"],"sourcesContent":["/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n"],"names":["sides","min","max","round","floor","createCoords","v","oppositeSideMap","oppositeAlignmentMap","clamp","start","value","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","x","y","width","height"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index267.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index268.js CHANGED
@@ -1,6 +1,5 @@
1
- import o from "./index229.js";
2
- /* empty css */
1
+ var e = { exports: {} };
3
2
  export {
4
- o as default
3
+ e as __module
5
4
  };
6
5
  //# sourceMappingURL=index268.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index268.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"index268.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index269.js CHANGED
@@ -1,4 +1,4 @@
1
- import o from "./index231.js";
1
+ import o from "./index229.js";
2
2
  /* empty css */
3
3
  export {
4
4
  o as default
package/dist/index270.js CHANGED
@@ -1,214 +1,6 @@
1
- import { defineComponent as K, ref as h, computed as m, watch as N, openBlock as r, createElementBlock as c, normalizeClass as $, normalizeStyle as b, withModifiers as Q, createElementVNode as x, renderSlot as v, createTextVNode as D, toDisplayString as g, Fragment as U, renderList as X } from "vue";
2
- import { isNil as f } from "./index124.js";
3
- import { useVirtualizer as Z } from "./index280.js";
4
- import { isNotNil as ee } from "./index129.js";
5
- import { hash as H } from "./index234.js";
6
- const te = { class: "bb-listbox__outer-container" }, oe = {
7
- key: 0,
8
- class: "bb-listbox__loading"
9
- }, ne = {
10
- key: 1,
11
- class: "bb-listbox__no-data"
12
- }, le = ["aria-selected", "data-index"], ie = { class: "autocomplete-option__content" }, se = { class: "autocomplete-option__label" }, pe = /* @__PURE__ */ K({
13
- __name: "ListBox",
14
- props: {
15
- options: {},
16
- open: { type: Boolean },
17
- loading: { type: Boolean },
18
- transitionDuration: { default: 250 },
19
- loadingText: { default: "Caricamento..." },
20
- noDataText: { default: "Nessun elemento da visualizzare" }
21
- },
22
- emits: ["option:selected", "option:unselected"],
23
- setup(T, { expose: V, emit: B }) {
24
- const o = T, _ = B, s = h(null), C = (e) => "option_" + JSON.stringify(e).replace(/\W/g, "_"), i = m(
25
- () => o.options.map((e) => ({ ...e, id: C(e.value) }))
26
- ), p = Z({
27
- get count() {
28
- return o.options.length;
29
- },
30
- getScrollElement: () => s.value,
31
- estimateSize: () => 42,
32
- overscan: 5
33
- }), L = (e) => {
34
- e && p.value.measureElement(e);
35
- }, O = m(() => p.value.getVirtualItems()), F = m(() => p.value.getTotalSize()), n = h(null), a = m(
36
- () => o.open && o.options.some((e) => !e.disabled)
37
- ), y = (e = 1) => {
38
- const l = f(n.value) ? -1 : n.value;
39
- let t = (l + e) % o.options.length;
40
- for (; o.options[t].disabled && t !== l; )
41
- t = y(e + 1);
42
- return t;
43
- }, M = () => {
44
- if (!a.value) return;
45
- const e = y();
46
- n.value = e, u();
47
- }, I = (e = 1) => {
48
- const l = f(n.value) ? 0 : n.value;
49
- let t = (l - e + o.options.length) % o.options.length;
50
- for (; o.options[t].disabled && t !== l; )
51
- t = I(e + 1);
52
- return t;
53
- }, A = async () => {
54
- if (!a.value) return;
55
- const e = I();
56
- n.value = e, u();
57
- }, P = () => {
58
- if (!a.value) return;
59
- let e = 0;
60
- for (; o.options[e].disabled; )
61
- e++;
62
- n.value = e, u();
63
- }, R = () => {
64
- if (!a.value) return;
65
- let e = o.options.length - 1;
66
- for (; o.options[e].disabled && e !== 0; )
67
- e--;
68
- n.value = e, u();
69
- }, q = () => {
70
- if (!a.value) return;
71
- let e = 0;
72
- for (; o.options[e] && !o.options[e].selected && o.options.length !== e; )
73
- e++;
74
- n.value = e % o.options.length, u();
75
- }, J = () => {
76
- if (!a.value) return;
77
- let e = o.options.length - 1;
78
- for (; o.options[e].selected && e > 0; )
79
- e--;
80
- n.value = e === -1 ? o.options.length - 1 : e, u();
81
- }, W = (e) => {
82
- if (!a.value) return;
83
- const l = o.options.findIndex(
84
- (t) => t.valueHash === e
85
- );
86
- l >= 0 && (n.value = l), u();
87
- }, S = () => {
88
- n.value = null;
89
- }, u = () => {
90
- s.value && ee(n.value) && p.value.scrollToIndex(n.value, {
91
- align: "center",
92
- behavior: "smooth"
93
- });
94
- }, k = () => {
95
- if (f(n.value) || !o.open) return;
96
- const e = o.options[n.value];
97
- e.selected ? _("option:unselected", e) : _("option:selected", e);
98
- }, w = h(0), z = () => {
99
- s.value && (w.value = s.value.scrollHeight);
100
- }, Y = (e) => !e.disabled, j = (e) => {
101
- if (e.preventDefault(), s.value && e.target && e.target instanceof HTMLElement) {
102
- if (!s.value.querySelector('[role="listbox"]'))
103
- throw new Error("Could not find listbox in DOM tree.");
104
- let t = e.target, d = t.dataset.index;
105
- for (; f(d) && t.parentElement; )
106
- t = t.parentElement, d = t.dataset.index;
107
- if (d) {
108
- const E = o.options[+d];
109
- E && Y(E) && (n.value = +d, k());
110
- }
111
- }
112
- }, G = () => f(n.value) ? void 0 : o.options[n.value];
113
- return N(
114
- () => o.open,
115
- () => {
116
- z();
117
- },
118
- { flush: "post" }
119
- ), N(
120
- () => o.options,
121
- (e, l) => {
122
- H(e.map((t) => t.valueHash)) !== H(l.map((t) => t.valueHash)) && (p.value.calculateRange(), z(), S());
123
- },
124
- {
125
- flush: "post"
126
- }
127
- ), V({
128
- focusNext: M,
129
- focusPrevious: A,
130
- focusFirst: P,
131
- focusFirstSelected: q,
132
- focusLast: R,
133
- focusLastSelected: J,
134
- blur: S,
135
- confirmOption: k,
136
- focusByHash: W,
137
- getHighlighted: G
138
- }), (e, l) => (r(), c("div", {
139
- class: $(["bb-listbox", {
140
- "bb-listbox--open": e.open,
141
- "bb-listbox--loading": e.loading,
142
- "bb-listbox--no-data": !i.value.length
143
- }]),
144
- style: b({
145
- "--transition-duration": `${e.transitionDuration}ms`,
146
- "--overlay-min-height": `${w.value}px`
147
- }),
148
- onClick: Q(j, ["stop"])
149
- }, [
150
- x("div", te, [
151
- x("div", {
152
- ref_key: "inner",
153
- ref: s,
154
- class: "bb-listbox__inner-container"
155
- }, [
156
- v(e.$slots, "options:prepend"),
157
- e.loading && !e.options.length ? (r(), c("div", oe, [
158
- v(e.$slots, "loading", {}, () => [
159
- D(g(e.loadingText), 1)
160
- ])
161
- ])) : e.options.length ? (r(), c("div", {
162
- key: 2,
163
- role: "listbox",
164
- style: b({
165
- height: `${F.value}px`
166
- }),
167
- tabindex: "-1"
168
- }, [
169
- (r(!0), c(U, null, X(O.value, (t, d) => (r(), c("div", {
170
- key: i.value[t.index].value,
171
- ref_for: !0,
172
- ref: L,
173
- "aria-selected": n.value === d ? !0 : void 0,
174
- class: $({
175
- "bb-listbox__option autocomplete-option": !0,
176
- "autocomplete-option--focused": n.value === t.index,
177
- "autocomplete-option--selected": i.value[t.index].selected,
178
- "autocomplete-option--disabled": i.value[t.index].disabled
179
- }),
180
- "data-index": t.index,
181
- role: "option",
182
- style: b({
183
- transform: `translateY(${t.start}px)`
184
- })
185
- }, [
186
- x("span", ie, [
187
- v(e.$slots, "option", {
188
- disabled: !!i.value[t.index].disabled,
189
- focused: n.value === t.index,
190
- index: t.index,
191
- item: i.value[t.index].item,
192
- selected: !!i.value[t.index].selected,
193
- text: i.value[t.index].text,
194
- value: i.value[t.index].value
195
- }, () => [
196
- x("span", se, g(i.value[t.index].text), 1)
197
- ])
198
- ])
199
- ], 14, le))), 128))
200
- ], 4)) : (r(), c("div", ne, [
201
- v(e.$slots, "no-data", {}, () => [
202
- D(g(e.noDataText), 1)
203
- ])
204
- ])),
205
- v(e.$slots, "options:append")
206
- ], 512)
207
- ])
208
- ], 6));
209
- }
210
- });
1
+ import o from "./index231.js";
2
+ /* empty css */
211
3
  export {
212
- pe as default
4
+ o as default
213
5
  };
214
6
  //# sourceMappingURL=index270.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index270.js","sources":["../src/components/ListBox.vue"],"sourcesContent":["<template>\n\t<div\n\t\tclass=\"bb-listbox\"\n\t\t:class=\"{\n\t\t\t'bb-listbox--open': open,\n\t\t\t'bb-listbox--loading': loading,\n\t\t\t'bb-listbox--no-data': !mappedOptions.length,\n\t\t}\"\n\t\t:style=\"{\n\t\t\t'--transition-duration': `${transitionDuration}ms`,\n\t\t\t'--overlay-min-height': `${height}px`,\n\t\t}\"\n\t\t@click.stop=\"handleClick\"\n\t>\n\t\t<div class=\"bb-listbox__outer-container\">\n\t\t\t<div ref=\"inner\" class=\"bb-listbox__inner-container\">\n\t\t\t\t<slot name=\"options:prepend\"></slot>\n\t\t\t\t<div v-if=\"loading && !options.length\" class=\"bb-listbox__loading\">\n\t\t\t\t\t<slot :name=\"'loading'\">{{ loadingText }}</slot>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!options.length\" class=\"bb-listbox__no-data\">\n\t\t\t\t\t<slot :name=\"'no-data'\">{{ noDataText }}</slot>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-else\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t:style=\"{\n\t\t\t\t\t\theight: `${totalSize}px`,\n\t\t\t\t\t}\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"(row, index) in virtualRows\"\n\t\t\t\t\t\t:key=\"mappedOptions[row.index].value\"\n\t\t\t\t\t\t:ref=\"measureElement\"\n\t\t\t\t\t\t:aria-selected=\"focusedIndex === index ? true : undefined\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'bb-listbox__option autocomplete-option': true,\n\t\t\t\t\t\t\t'autocomplete-option--focused': focusedIndex === row.index,\n\t\t\t\t\t\t\t'autocomplete-option--selected':\n\t\t\t\t\t\t\t\tmappedOptions[row.index].selected,\n\t\t\t\t\t\t\t'autocomplete-option--disabled':\n\t\t\t\t\t\t\t\tmappedOptions[row.index].disabled,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:data-index=\"row.index\"\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\ttransform: `translateY(${row.start}px)`,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"autocomplete-option__content\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t:disabled=\"!!mappedOptions[row.index].disabled\"\n\t\t\t\t\t\t\t\t:focused=\"focusedIndex === row.index\"\n\t\t\t\t\t\t\t\t:index=\"row.index\"\n\t\t\t\t\t\t\t\t:item=\"mappedOptions[row.index].item\"\n\t\t\t\t\t\t\t\tname=\"option\"\n\t\t\t\t\t\t\t\t:selected=\"!!mappedOptions[row.index].selected\"\n\t\t\t\t\t\t\t\t:text=\"mappedOptions[row.index].text\"\n\t\t\t\t\t\t\t\t:value=\"mappedOptions[row.index].value\"\n\t\t\t\t\t\t\t\t><span class=\"autocomplete-option__label\">{{\n\t\t\t\t\t\t\t\t\tmappedOptions[row.index].text\n\t\t\t\t\t\t\t\t}}</span></slot\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"options:append\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { isNil } from '@/utilities/functions/isNil';\nimport { computed, ref, watch } from 'vue';\nimport { useVirtualizer } from '@tanstack/vue-virtual';\nimport { isNotNil } from '@/utilities/functions/isNotNil';\nimport type { Option } from '@/types/Option';\nimport { hash } from '@/utilities/functions/hash';\n\ntype Props = {\n\toptions: Option[];\n\topen?: boolean;\n\tloading?: boolean;\n\ttransitionDuration?: number;\n\tloadingText?: string;\n\tnoDataText?: string;\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttransitionDuration: 250,\n\tloadingText: 'Caricamento...',\n\tnoDataText: 'Nessun elemento da visualizzare',\n});\n\nconst emit = defineEmits<{\n\t(e: 'option:selected', option: Option): void;\n\t(e: 'option:unselected', option: Option): void;\n}>();\n\nconst inner = ref<HTMLElement | null>(null);\n\nconst makeStringID = (arg: any) =>\n\t'option_' + JSON.stringify(arg).replace(/\\W/g, '_');\n\nconst mappedOptions = computed(() =>\n\tprops.options.map((o) => {\n\t\treturn { ...o, id: makeStringID(o.value) };\n\t})\n);\n\nconst rowVirtualizer = useVirtualizer({\n\tget count() {\n\t\treturn props.options.length;\n\t},\n\tgetScrollElement: () => inner.value,\n\testimateSize: () => 42,\n\toverscan: 5,\n});\n\nconst measureElement = (el: HTMLElement) => {\n\tif (!el) {\n\t\treturn;\n\t}\n\trowVirtualizer.value.measureElement(el);\n\treturn undefined;\n};\n\nconst virtualRows = computed(() => rowVirtualizer.value.getVirtualItems());\nconst totalSize = computed(() => rowVirtualizer.value.getTotalSize());\n\n/**\n * START FOCUS HANDLING\n */\n\nconst focusedIndex = ref<null | number>(null);\n\nconst canFocus = computed(\n\t() => props.open && props.options.some((o) => !o.disabled)\n);\n\nconst findNextAvailableIndex = (offset = 1) => {\n\tconst initialValue = isNil(focusedIndex.value) ? -1 : focusedIndex.value!;\n\tlet newIndex = (initialValue + offset) % props.options.length;\n\twhile (props.options[newIndex].disabled && newIndex !== initialValue) {\n\t\tnewIndex = findNextAvailableIndex(offset + 1);\n\t}\n\treturn newIndex;\n};\n\nconst focusNext = () => {\n\tif (!canFocus.value) return;\n\tconst newIndex = findNextAvailableIndex();\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\nconst findPreviousAvailableIndex = (offset = 1) => {\n\tconst initialValue = isNil(focusedIndex.value) ? 0 : focusedIndex.value!;\n\tlet newIndex =\n\t\t(initialValue - offset + props.options.length) % props.options.length;\n\twhile (props.options[newIndex].disabled && newIndex !== initialValue) {\n\t\tnewIndex = findPreviousAvailableIndex(offset + 1);\n\t}\n\treturn newIndex;\n};\nconst focusPrevious = async () => {\n\tif (!canFocus.value) return;\n\tconst newIndex = findPreviousAvailableIndex();\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\n\nconst focusFirst = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = 0;\n\twhile (props.options[newIndex].disabled) {\n\t\tnewIndex++;\n\t}\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\n\nconst focusLast = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = props.options.length - 1;\n\twhile (props.options[newIndex].disabled && newIndex !== 0) {\n\t\tnewIndex--;\n\t}\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\nconst focusFirstSelected = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = 0;\n\twhile (\n\t\tprops.options[newIndex] &&\n\t\t!props.options[newIndex].selected &&\n\t\tprops.options.length !== newIndex\n\t) {\n\t\tnewIndex++;\n\t}\n\tfocusedIndex.value = newIndex % props.options.length;\n\tscrollSelectedIntoView();\n};\nconst focusLastSelected = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = props.options.length - 1;\n\twhile (props.options[newIndex].selected && newIndex > 0) {\n\t\tnewIndex--;\n\t}\n\tfocusedIndex.value = newIndex === -1 ? props.options.length - 1 : newIndex;\n\tscrollSelectedIntoView();\n};\n\nconst focusByHash = (hash: Option['valueHash']) => {\n\tif (!canFocus.value) return;\n\tconst linkedOptionIndex = props.options.findIndex(\n\t\t(o) => o.valueHash === hash\n\t);\n\tif (linkedOptionIndex >= 0) {\n\t\tfocusedIndex.value = linkedOptionIndex;\n\t}\n\tscrollSelectedIntoView();\n};\n\nconst blur = () => {\n\tfocusedIndex.value = null;\n};\n\nconst scrollSelectedIntoView = () => {\n\tif (inner.value && isNotNil(focusedIndex.value)) {\n\t\trowVirtualizer.value.scrollToIndex(focusedIndex.value, {\n\t\t\talign: 'center',\n\t\t\tbehavior: 'smooth',\n\t\t});\n\t}\n};\n\n/**\n * END FOCUS HANDLING\n */\n\nconst confirmOption = () => {\n\tif (isNil(focusedIndex.value) || !props.open) return;\n\tconst option = props.options[focusedIndex.value!];\n\tif (option.selected) {\n\t\temit('option:unselected', option);\n\t} else {\n\t\temit('option:selected', option);\n\t}\n};\n\nconst height = ref(0);\nconst getScrollHeight = () => {\n\tif (inner.value) {\n\t\theight.value = inner.value.scrollHeight;\n\t}\n};\n\nconst canBeSelected = (option: Option) => {\n\treturn !option.disabled;\n};\n\nconst handleClick = (event: MouseEvent) => {\n\tevent.preventDefault();\n\tif (inner.value && event.target && event.target instanceof HTMLElement) {\n\t\tconst listbox = inner.value.querySelector<HTMLElement>('[role=\"listbox\"]');\n\t\tif (!listbox) {\n\t\t\tthrow new Error('Could not find listbox in DOM tree.');\n\t\t}\n\t\tlet node: HTMLElement = event.target;\n\t\tlet index = node.dataset['index'];\n\t\twhile (isNil(index) && node.parentElement) {\n\t\t\tnode = node.parentElement;\n\t\t\tindex = node.dataset['index'];\n\t\t}\n\t\tif (index) {\n\t\t\tconst option = props.options[+index];\n\t\t\tif (option && canBeSelected(option)) {\n\t\t\t\tfocusedIndex.value = +index;\n\t\t\t\tconfirmOption();\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst getHighlighted = () => {\n\tif (isNil(focusedIndex.value)) return;\n\tconst option = props.options[focusedIndex.value!];\n\treturn option;\n};\n\nwatch(\n\t() => props.open,\n\t() => {\n\t\tgetScrollHeight();\n\t},\n\t{ flush: 'post' }\n);\n\nwatch(\n\t() => props.options,\n\t(value, previous) => {\n\t\tif (\n\t\t\thash(value.map((o) => o.valueHash)) !==\n\t\t\thash(previous.map((o) => o.valueHash))\n\t\t) {\n\t\t\trowVirtualizer.value.calculateRange();\n\t\t\tgetScrollHeight();\n\t\t\tblur();\n\t\t}\n\t},\n\t{\n\t\tflush: 'post',\n\t}\n);\n\ndefineExpose({\n\tfocusNext,\n\tfocusPrevious,\n\tfocusFirst,\n\tfocusFirstSelected,\n\tfocusLast,\n\tfocusLastSelected,\n\tblur,\n\tconfirmOption,\n\tfocusByHash,\n\tgetHighlighted,\n});\n</script>\n\n<style lang=\"postcss\">\n@import '@/assets/css/ListBox';\n</style>\n"],"names":["props","__props","emit","__emit","inner","ref","makeStringID","arg","mappedOptions","computed","o","rowVirtualizer","useVirtualizer","measureElement","el","virtualRows","totalSize","focusedIndex","canFocus","findNextAvailableIndex","offset","initialValue","isNil","newIndex","focusNext","scrollSelectedIntoView","findPreviousAvailableIndex","focusPrevious","focusFirst","focusLast","focusFirstSelected","focusLastSelected","focusByHash","hash","linkedOptionIndex","blur","isNotNil","confirmOption","option","height","getScrollHeight","canBeSelected","handleClick","event","node","index","getHighlighted","watch","value","previous","__expose"],"mappings":"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"}
1
+ {"version":3,"file":"index270.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,214 @@
1
+ import { defineComponent as K, ref as h, computed as m, watch as N, openBlock as r, createElementBlock as c, normalizeClass as $, normalizeStyle as b, withModifiers as Q, createElementVNode as x, renderSlot as v, createTextVNode as D, toDisplayString as g, Fragment as U, renderList as X } from "vue";
2
+ import { isNil as f } from "./index124.js";
3
+ import { useVirtualizer as Z } from "./index281.js";
4
+ import { isNotNil as ee } from "./index129.js";
5
+ import { hash as H } from "./index234.js";
6
+ const te = { class: "bb-listbox__outer-container" }, oe = {
7
+ key: 0,
8
+ class: "bb-listbox__loading"
9
+ }, ne = {
10
+ key: 1,
11
+ class: "bb-listbox__no-data"
12
+ }, le = ["aria-selected", "data-index"], ie = { class: "autocomplete-option__content" }, se = { class: "autocomplete-option__label" }, pe = /* @__PURE__ */ K({
13
+ __name: "ListBox",
14
+ props: {
15
+ options: {},
16
+ open: { type: Boolean },
17
+ loading: { type: Boolean },
18
+ transitionDuration: { default: 250 },
19
+ loadingText: { default: "Caricamento..." },
20
+ noDataText: { default: "Nessun elemento da visualizzare" }
21
+ },
22
+ emits: ["option:selected", "option:unselected"],
23
+ setup(T, { expose: V, emit: B }) {
24
+ const o = T, _ = B, s = h(null), C = (e) => "option_" + JSON.stringify(e).replace(/\W/g, "_"), i = m(
25
+ () => o.options.map((e) => ({ ...e, id: C(e.value) }))
26
+ ), p = Z({
27
+ get count() {
28
+ return o.options.length;
29
+ },
30
+ getScrollElement: () => s.value,
31
+ estimateSize: () => 42,
32
+ overscan: 5
33
+ }), L = (e) => {
34
+ e && p.value.measureElement(e);
35
+ }, O = m(() => p.value.getVirtualItems()), F = m(() => p.value.getTotalSize()), n = h(null), a = m(
36
+ () => o.open && o.options.some((e) => !e.disabled)
37
+ ), y = (e = 1) => {
38
+ const l = f(n.value) ? -1 : n.value;
39
+ let t = (l + e) % o.options.length;
40
+ for (; o.options[t].disabled && t !== l; )
41
+ t = y(e + 1);
42
+ return t;
43
+ }, M = () => {
44
+ if (!a.value) return;
45
+ const e = y();
46
+ n.value = e, u();
47
+ }, I = (e = 1) => {
48
+ const l = f(n.value) ? 0 : n.value;
49
+ let t = (l - e + o.options.length) % o.options.length;
50
+ for (; o.options[t].disabled && t !== l; )
51
+ t = I(e + 1);
52
+ return t;
53
+ }, A = async () => {
54
+ if (!a.value) return;
55
+ const e = I();
56
+ n.value = e, u();
57
+ }, P = () => {
58
+ if (!a.value) return;
59
+ let e = 0;
60
+ for (; o.options[e].disabled; )
61
+ e++;
62
+ n.value = e, u();
63
+ }, R = () => {
64
+ if (!a.value) return;
65
+ let e = o.options.length - 1;
66
+ for (; o.options[e].disabled && e !== 0; )
67
+ e--;
68
+ n.value = e, u();
69
+ }, q = () => {
70
+ if (!a.value) return;
71
+ let e = 0;
72
+ for (; o.options[e] && !o.options[e].selected && o.options.length !== e; )
73
+ e++;
74
+ n.value = e % o.options.length, u();
75
+ }, J = () => {
76
+ if (!a.value) return;
77
+ let e = o.options.length - 1;
78
+ for (; o.options[e].selected && e > 0; )
79
+ e--;
80
+ n.value = e === -1 ? o.options.length - 1 : e, u();
81
+ }, W = (e) => {
82
+ if (!a.value) return;
83
+ const l = o.options.findIndex(
84
+ (t) => t.valueHash === e
85
+ );
86
+ l >= 0 && (n.value = l), u();
87
+ }, S = () => {
88
+ n.value = null;
89
+ }, u = () => {
90
+ s.value && ee(n.value) && p.value.scrollToIndex(n.value, {
91
+ align: "center",
92
+ behavior: "smooth"
93
+ });
94
+ }, k = () => {
95
+ if (f(n.value) || !o.open) return;
96
+ const e = o.options[n.value];
97
+ e.selected ? _("option:unselected", e) : _("option:selected", e);
98
+ }, w = h(0), z = () => {
99
+ s.value && (w.value = s.value.scrollHeight);
100
+ }, Y = (e) => !e.disabled, j = (e) => {
101
+ if (e.preventDefault(), s.value && e.target && e.target instanceof HTMLElement) {
102
+ if (!s.value.querySelector('[role="listbox"]'))
103
+ throw new Error("Could not find listbox in DOM tree.");
104
+ let t = e.target, d = t.dataset.index;
105
+ for (; f(d) && t.parentElement; )
106
+ t = t.parentElement, d = t.dataset.index;
107
+ if (d) {
108
+ const E = o.options[+d];
109
+ E && Y(E) && (n.value = +d, k());
110
+ }
111
+ }
112
+ }, G = () => f(n.value) ? void 0 : o.options[n.value];
113
+ return N(
114
+ () => o.open,
115
+ () => {
116
+ z();
117
+ },
118
+ { flush: "post" }
119
+ ), N(
120
+ () => o.options,
121
+ (e, l) => {
122
+ H(e.map((t) => t.valueHash)) !== H(l.map((t) => t.valueHash)) && (p.value.calculateRange(), z(), S());
123
+ },
124
+ {
125
+ flush: "post"
126
+ }
127
+ ), V({
128
+ focusNext: M,
129
+ focusPrevious: A,
130
+ focusFirst: P,
131
+ focusFirstSelected: q,
132
+ focusLast: R,
133
+ focusLastSelected: J,
134
+ blur: S,
135
+ confirmOption: k,
136
+ focusByHash: W,
137
+ getHighlighted: G
138
+ }), (e, l) => (r(), c("div", {
139
+ class: $(["bb-listbox", {
140
+ "bb-listbox--open": e.open,
141
+ "bb-listbox--loading": e.loading,
142
+ "bb-listbox--no-data": !i.value.length
143
+ }]),
144
+ style: b({
145
+ "--transition-duration": `${e.transitionDuration}ms`,
146
+ "--overlay-min-height": `${w.value}px`
147
+ }),
148
+ onClick: Q(j, ["stop"])
149
+ }, [
150
+ x("div", te, [
151
+ x("div", {
152
+ ref_key: "inner",
153
+ ref: s,
154
+ class: "bb-listbox__inner-container"
155
+ }, [
156
+ v(e.$slots, "options:prepend"),
157
+ e.loading && !e.options.length ? (r(), c("div", oe, [
158
+ v(e.$slots, "loading", {}, () => [
159
+ D(g(e.loadingText), 1)
160
+ ])
161
+ ])) : e.options.length ? (r(), c("div", {
162
+ key: 2,
163
+ role: "listbox",
164
+ style: b({
165
+ height: `${F.value}px`
166
+ }),
167
+ tabindex: "-1"
168
+ }, [
169
+ (r(!0), c(U, null, X(O.value, (t, d) => (r(), c("div", {
170
+ key: i.value[t.index].value,
171
+ ref_for: !0,
172
+ ref: L,
173
+ "aria-selected": n.value === d ? !0 : void 0,
174
+ class: $({
175
+ "bb-listbox__option autocomplete-option": !0,
176
+ "autocomplete-option--focused": n.value === t.index,
177
+ "autocomplete-option--selected": i.value[t.index].selected,
178
+ "autocomplete-option--disabled": i.value[t.index].disabled
179
+ }),
180
+ "data-index": t.index,
181
+ role: "option",
182
+ style: b({
183
+ transform: `translateY(${t.start}px)`
184
+ })
185
+ }, [
186
+ x("span", ie, [
187
+ v(e.$slots, "option", {
188
+ disabled: !!i.value[t.index].disabled,
189
+ focused: n.value === t.index,
190
+ index: t.index,
191
+ item: i.value[t.index].item,
192
+ selected: !!i.value[t.index].selected,
193
+ text: i.value[t.index].text,
194
+ value: i.value[t.index].value
195
+ }, () => [
196
+ x("span", se, g(i.value[t.index].text), 1)
197
+ ])
198
+ ])
199
+ ], 14, le))), 128))
200
+ ], 4)) : (r(), c("div", ne, [
201
+ v(e.$slots, "no-data", {}, () => [
202
+ D(g(e.noDataText), 1)
203
+ ])
204
+ ])),
205
+ v(e.$slots, "options:append")
206
+ ], 512)
207
+ ])
208
+ ], 6));
209
+ }
210
+ });
211
+ export {
212
+ pe as default
213
+ };
214
+ //# sourceMappingURL=index271.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index271.js","sources":["../src/components/ListBox.vue"],"sourcesContent":["<template>\n\t<div\n\t\tclass=\"bb-listbox\"\n\t\t:class=\"{\n\t\t\t'bb-listbox--open': open,\n\t\t\t'bb-listbox--loading': loading,\n\t\t\t'bb-listbox--no-data': !mappedOptions.length,\n\t\t}\"\n\t\t:style=\"{\n\t\t\t'--transition-duration': `${transitionDuration}ms`,\n\t\t\t'--overlay-min-height': `${height}px`,\n\t\t}\"\n\t\t@click.stop=\"handleClick\"\n\t>\n\t\t<div class=\"bb-listbox__outer-container\">\n\t\t\t<div ref=\"inner\" class=\"bb-listbox__inner-container\">\n\t\t\t\t<slot name=\"options:prepend\"></slot>\n\t\t\t\t<div v-if=\"loading && !options.length\" class=\"bb-listbox__loading\">\n\t\t\t\t\t<slot :name=\"'loading'\">{{ loadingText }}</slot>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!options.length\" class=\"bb-listbox__no-data\">\n\t\t\t\t\t<slot :name=\"'no-data'\">{{ noDataText }}</slot>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-else\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t:style=\"{\n\t\t\t\t\t\theight: `${totalSize}px`,\n\t\t\t\t\t}\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"(row, index) in virtualRows\"\n\t\t\t\t\t\t:key=\"mappedOptions[row.index].value\"\n\t\t\t\t\t\t:ref=\"measureElement\"\n\t\t\t\t\t\t:aria-selected=\"focusedIndex === index ? true : undefined\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'bb-listbox__option autocomplete-option': true,\n\t\t\t\t\t\t\t'autocomplete-option--focused': focusedIndex === row.index,\n\t\t\t\t\t\t\t'autocomplete-option--selected':\n\t\t\t\t\t\t\t\tmappedOptions[row.index].selected,\n\t\t\t\t\t\t\t'autocomplete-option--disabled':\n\t\t\t\t\t\t\t\tmappedOptions[row.index].disabled,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:data-index=\"row.index\"\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\ttransform: `translateY(${row.start}px)`,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"autocomplete-option__content\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t:disabled=\"!!mappedOptions[row.index].disabled\"\n\t\t\t\t\t\t\t\t:focused=\"focusedIndex === row.index\"\n\t\t\t\t\t\t\t\t:index=\"row.index\"\n\t\t\t\t\t\t\t\t:item=\"mappedOptions[row.index].item\"\n\t\t\t\t\t\t\t\tname=\"option\"\n\t\t\t\t\t\t\t\t:selected=\"!!mappedOptions[row.index].selected\"\n\t\t\t\t\t\t\t\t:text=\"mappedOptions[row.index].text\"\n\t\t\t\t\t\t\t\t:value=\"mappedOptions[row.index].value\"\n\t\t\t\t\t\t\t\t><span class=\"autocomplete-option__label\">{{\n\t\t\t\t\t\t\t\t\tmappedOptions[row.index].text\n\t\t\t\t\t\t\t\t}}</span></slot\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"options:append\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { isNil } from '@/utilities/functions/isNil';\nimport { computed, ref, watch } from 'vue';\nimport { useVirtualizer } from '@tanstack/vue-virtual';\nimport { isNotNil } from '@/utilities/functions/isNotNil';\nimport type { Option } from '@/types/Option';\nimport { hash } from '@/utilities/functions/hash';\n\ntype Props = {\n\toptions: Option[];\n\topen?: boolean;\n\tloading?: boolean;\n\ttransitionDuration?: number;\n\tloadingText?: string;\n\tnoDataText?: string;\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttransitionDuration: 250,\n\tloadingText: 'Caricamento...',\n\tnoDataText: 'Nessun elemento da visualizzare',\n});\n\nconst emit = defineEmits<{\n\t(e: 'option:selected', option: Option): void;\n\t(e: 'option:unselected', option: Option): void;\n}>();\n\nconst inner = ref<HTMLElement | null>(null);\n\nconst makeStringID = (arg: any) =>\n\t'option_' + JSON.stringify(arg).replace(/\\W/g, '_');\n\nconst mappedOptions = computed(() =>\n\tprops.options.map((o) => {\n\t\treturn { ...o, id: makeStringID(o.value) };\n\t})\n);\n\nconst rowVirtualizer = useVirtualizer({\n\tget count() {\n\t\treturn props.options.length;\n\t},\n\tgetScrollElement: () => inner.value,\n\testimateSize: () => 42,\n\toverscan: 5,\n});\n\nconst measureElement = (el: HTMLElement) => {\n\tif (!el) {\n\t\treturn;\n\t}\n\trowVirtualizer.value.measureElement(el);\n\treturn undefined;\n};\n\nconst virtualRows = computed(() => rowVirtualizer.value.getVirtualItems());\nconst totalSize = computed(() => rowVirtualizer.value.getTotalSize());\n\n/**\n * START FOCUS HANDLING\n */\n\nconst focusedIndex = ref<null | number>(null);\n\nconst canFocus = computed(\n\t() => props.open && props.options.some((o) => !o.disabled)\n);\n\nconst findNextAvailableIndex = (offset = 1) => {\n\tconst initialValue = isNil(focusedIndex.value) ? -1 : focusedIndex.value!;\n\tlet newIndex = (initialValue + offset) % props.options.length;\n\twhile (props.options[newIndex].disabled && newIndex !== initialValue) {\n\t\tnewIndex = findNextAvailableIndex(offset + 1);\n\t}\n\treturn newIndex;\n};\n\nconst focusNext = () => {\n\tif (!canFocus.value) return;\n\tconst newIndex = findNextAvailableIndex();\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\nconst findPreviousAvailableIndex = (offset = 1) => {\n\tconst initialValue = isNil(focusedIndex.value) ? 0 : focusedIndex.value!;\n\tlet newIndex =\n\t\t(initialValue - offset + props.options.length) % props.options.length;\n\twhile (props.options[newIndex].disabled && newIndex !== initialValue) {\n\t\tnewIndex = findPreviousAvailableIndex(offset + 1);\n\t}\n\treturn newIndex;\n};\nconst focusPrevious = async () => {\n\tif (!canFocus.value) return;\n\tconst newIndex = findPreviousAvailableIndex();\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\n\nconst focusFirst = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = 0;\n\twhile (props.options[newIndex].disabled) {\n\t\tnewIndex++;\n\t}\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\n\nconst focusLast = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = props.options.length - 1;\n\twhile (props.options[newIndex].disabled && newIndex !== 0) {\n\t\tnewIndex--;\n\t}\n\tfocusedIndex.value = newIndex;\n\tscrollSelectedIntoView();\n};\nconst focusFirstSelected = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = 0;\n\twhile (\n\t\tprops.options[newIndex] &&\n\t\t!props.options[newIndex].selected &&\n\t\tprops.options.length !== newIndex\n\t) {\n\t\tnewIndex++;\n\t}\n\tfocusedIndex.value = newIndex % props.options.length;\n\tscrollSelectedIntoView();\n};\nconst focusLastSelected = () => {\n\tif (!canFocus.value) return;\n\tlet newIndex = props.options.length - 1;\n\twhile (props.options[newIndex].selected && newIndex > 0) {\n\t\tnewIndex--;\n\t}\n\tfocusedIndex.value = newIndex === -1 ? props.options.length - 1 : newIndex;\n\tscrollSelectedIntoView();\n};\n\nconst focusByHash = (hash: Option['valueHash']) => {\n\tif (!canFocus.value) return;\n\tconst linkedOptionIndex = props.options.findIndex(\n\t\t(o) => o.valueHash === hash\n\t);\n\tif (linkedOptionIndex >= 0) {\n\t\tfocusedIndex.value = linkedOptionIndex;\n\t}\n\tscrollSelectedIntoView();\n};\n\nconst blur = () => {\n\tfocusedIndex.value = null;\n};\n\nconst scrollSelectedIntoView = () => {\n\tif (inner.value && isNotNil(focusedIndex.value)) {\n\t\trowVirtualizer.value.scrollToIndex(focusedIndex.value, {\n\t\t\talign: 'center',\n\t\t\tbehavior: 'smooth',\n\t\t});\n\t}\n};\n\n/**\n * END FOCUS HANDLING\n */\n\nconst confirmOption = () => {\n\tif (isNil(focusedIndex.value) || !props.open) return;\n\tconst option = props.options[focusedIndex.value!];\n\tif (option.selected) {\n\t\temit('option:unselected', option);\n\t} else {\n\t\temit('option:selected', option);\n\t}\n};\n\nconst height = ref(0);\nconst getScrollHeight = () => {\n\tif (inner.value) {\n\t\theight.value = inner.value.scrollHeight;\n\t}\n};\n\nconst canBeSelected = (option: Option) => {\n\treturn !option.disabled;\n};\n\nconst handleClick = (event: MouseEvent) => {\n\tevent.preventDefault();\n\tif (inner.value && event.target && event.target instanceof HTMLElement) {\n\t\tconst listbox = inner.value.querySelector<HTMLElement>('[role=\"listbox\"]');\n\t\tif (!listbox) {\n\t\t\tthrow new Error('Could not find listbox in DOM tree.');\n\t\t}\n\t\tlet node: HTMLElement = event.target;\n\t\tlet index = node.dataset['index'];\n\t\twhile (isNil(index) && node.parentElement) {\n\t\t\tnode = node.parentElement;\n\t\t\tindex = node.dataset['index'];\n\t\t}\n\t\tif (index) {\n\t\t\tconst option = props.options[+index];\n\t\t\tif (option && canBeSelected(option)) {\n\t\t\t\tfocusedIndex.value = +index;\n\t\t\t\tconfirmOption();\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst getHighlighted = () => {\n\tif (isNil(focusedIndex.value)) return;\n\tconst option = props.options[focusedIndex.value!];\n\treturn option;\n};\n\nwatch(\n\t() => props.open,\n\t() => {\n\t\tgetScrollHeight();\n\t},\n\t{ flush: 'post' }\n);\n\nwatch(\n\t() => props.options,\n\t(value, previous) => {\n\t\tif (\n\t\t\thash(value.map((o) => o.valueHash)) !==\n\t\t\thash(previous.map((o) => o.valueHash))\n\t\t) {\n\t\t\trowVirtualizer.value.calculateRange();\n\t\t\tgetScrollHeight();\n\t\t\tblur();\n\t\t}\n\t},\n\t{\n\t\tflush: 'post',\n\t}\n);\n\ndefineExpose({\n\tfocusNext,\n\tfocusPrevious,\n\tfocusFirst,\n\tfocusFirstSelected,\n\tfocusLast,\n\tfocusLastSelected,\n\tblur,\n\tconfirmOption,\n\tfocusByHash,\n\tgetHighlighted,\n});\n</script>\n\n<style lang=\"postcss\">\n@import '@/assets/css/ListBox';\n</style>\n"],"names":["props","__props","emit","__emit","inner","ref","makeStringID","arg","mappedOptions","computed","o","rowVirtualizer","useVirtualizer","measureElement","el","virtualRows","totalSize","focusedIndex","canFocus","findNextAvailableIndex","offset","initialValue","isNil","newIndex","focusNext","scrollSelectedIntoView","findPreviousAvailableIndex","focusPrevious","focusFirst","focusLast","focusFirstSelected","focusLastSelected","focusByHash","hash","linkedOptionIndex","blur","isNotNil","confirmOption","option","height","getScrollHeight","canBeSelected","handleClick","event","node","index","getHighlighted","watch","value","previous","__expose"],"mappings":"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"}
package/dist/index273.js CHANGED
@@ -1,8 +1,31 @@
1
- const o = (l, n, f = (r) => r, u) => l.map((r) => Array.isArray(r[n]) ? [
2
- f(r, u),
3
- ...o(r[n], n, f, f(r, u))
4
- ] : [f(r, u)]).flat();
1
+ function y(t, r) {
2
+ return t > r ? 1 : -1;
3
+ }
4
+ function c(t, r) {
5
+ var n = 5381;
6
+ if (typeof t == "object" && t !== null && (t.toString === Object.prototype.toString || t.toString === Array.prototype.toString)) {
7
+ r || (r = /* @__PURE__ */ new WeakSet());
8
+ for (var p = Object.keys(t).sort(y), i = 0; i < p.length; i++) {
9
+ var s = p[i], e = t[s];
10
+ if (n = 33 * n ^ c(s, r), typeof e == "object" && e !== null && (t.toString === Object.prototype.toString || t.toString === Array.prototype.toString)) {
11
+ if (r.has(e)) continue;
12
+ r.add(e);
13
+ }
14
+ n = 33 * n ^ c(e, r);
15
+ }
16
+ return 33 * n ^ c(t.constructor, r);
17
+ }
18
+ var o = typeof t;
19
+ try {
20
+ t instanceof Date ? o += t.getTime() : o += String(t);
21
+ } catch {
22
+ o += String(Object.assign({}, t));
23
+ }
24
+ for (var a = 0; a < o.length; a++) n = 33 * n ^ o.charCodeAt(a);
25
+ return n;
26
+ }
5
27
  export {
6
- o as flattenTree
28
+ c as hash,
29
+ y as sortNumbers
7
30
  };
8
31
  //# sourceMappingURL=index273.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index273.js","sources":["../src/utilities/functions/flattenTree.ts"],"sourcesContent":["export const flattenTree = <T extends Record<string, any>, U>(\n\titems: T[],\n\tkeyName: keyof T,\n\tmapper: (item: T, parent?: U) => U = (x: any) => x,\n\tparent?: ReturnType<typeof mapper>\n): ReturnType<typeof mapper>[] => {\n\treturn items\n\t\t.map((item) => {\n\t\t\tif (Array.isArray(item[keyName])) {\n\t\t\t\treturn [\n\t\t\t\t\tmapper(item, parent),\n\t\t\t\t\t...flattenTree(item[keyName], keyName, mapper, mapper(item, parent)),\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn [mapper(item, parent)];\n\t\t})\n\t\t.flat();\n};\n"],"names":["flattenTree","items","keyName","mapper","x","parent","item"],"mappings":"AAAa,MAAAA,IAAc,CAC1BC,GACAC,GACAC,IAAqC,CAACC,MAAWA,GACjDC,MAEOJ,EACL,IAAI,CAACK,MACD,MAAM,QAAQA,EAAKJ,CAAO,CAAC,IACvB;AAAA,EACNC,EAAOG,GAAMD,CAAM;AAAA,EACnB,GAAGL,EAAYM,EAAKJ,CAAO,GAAGA,GAASC,GAAQA,EAAOG,GAAMD,CAAM,CAAC;AAAA,IAG9D,CAACF,EAAOG,GAAMD,CAAM,CAAC,CAC5B,EACA,KAAK;"}
1
+ {"version":3,"file":"index273.js","sources":["../node_modules/object-code/dist/index.mjs"],"sourcesContent":["function t(t,r){return t>r?1:-1}function r(o,e){var n=5381;if(\"object\"==typeof o&&null!==o&&(o.toString===Object.prototype.toString||o.toString===Array.prototype.toString)){e||(e=new WeakSet);for(var i=Object.keys(o).sort(t),a=0;a<i.length;a++){var c=i[a],g=o[c];if(n=33*n^r(c,e),\"object\"==typeof g&&null!==g&&(o.toString===Object.prototype.toString||o.toString===Array.prototype.toString)){if(e.has(g))continue;e.add(g)}n=33*n^r(g,e)}return 33*n^r(o.constructor,e)}var p=typeof o;try{o instanceof Date?p+=o.getTime():p+=String(o)}catch(t){p+=String(Object.assign({},o))}for(var f=0;f<p.length;f++)n=33*n^p.charCodeAt(f);return n}export{r as hash,t as sortNumbers};\n//# sourceMappingURL=index.mjs.map\n"],"names":["t","r","o","e","i","a","c","g","p","f"],"mappings":"AAAA,SAASA,EAAE,GAAE,GAAE;AAAC,SAAO,IAAE,IAAE,IAAE;AAAE;AAAC,SAASC,EAAEC,GAAEC,GAAE;AAAC,MAAI,IAAE;AAAK,MAAa,OAAOD,KAAjB,YAA2BA,MAAP,SAAWA,EAAE,aAAW,OAAO,UAAU,YAAUA,EAAE,aAAW,MAAM,UAAU,WAAU;AAAC,IAAAC,MAAIA,IAAE,oBAAI;AAAS,aAAQC,IAAE,OAAO,KAAKF,CAAC,EAAE,KAAKF,CAAC,GAAEK,IAAE,GAAEA,IAAED,EAAE,QAAOC,KAAI;AAAC,UAAIC,IAAEF,EAAEC,CAAC,GAAEE,IAAEL,EAAEI,CAAC;AAAE,UAAG,IAAE,KAAG,IAAEL,EAAEK,GAAEH,CAAC,GAAY,OAAOI,KAAjB,YAA2BA,MAAP,SAAWL,EAAE,aAAW,OAAO,UAAU,YAAUA,EAAE,aAAW,MAAM,UAAU,WAAU;AAAC,YAAGC,EAAE,IAAII,CAAC,EAAE;AAAS,QAAAJ,EAAE,IAAII,CAAC;AAAA,MAAC;AAAC,UAAE,KAAG,IAAEN,EAAEM,GAAEJ,CAAC;AAAA,IAAC;AAAC,WAAO,KAAG,IAAEF,EAAEC,EAAE,aAAYC,CAAC;AAAA,EAAC;AAAC,MAAIK,IAAE,OAAON;AAAE,MAAG;AAAC,IAAAA,aAAa,OAAKM,KAAGN,EAAE,QAAS,IAACM,KAAG,OAAON,CAAC;AAAA,EAAC,QAAS;AAAC,IAAAM,KAAG,OAAO,OAAO,OAAO,CAAE,GAACN,CAAC,CAAC;AAAA,EAAC;AAAC,WAAQO,IAAE,GAAEA,IAAED,EAAE,QAAOC,IAAI,KAAE,KAAG,IAAED,EAAE,WAAWC,CAAC;AAAE,SAAO;AAAC;","x_google_ignoreList":[0]}
package/dist/index278.js CHANGED
@@ -1,14 +1,5 @@
1
- function c(n, r, e) {
2
- const i = typeof r == "string" ? r.split(".") : r;
3
- let t = n;
4
- for (const o of i)
5
- if (t && typeof t == "object" && o in t)
6
- t = t[o];
7
- else
8
- return e;
9
- return t === void 0 ? e : t;
10
- }
1
+ import f from "./index247.js";
11
2
  export {
12
- c as get
3
+ f as default
13
4
  };
14
5
  //# sourceMappingURL=index278.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index278.js","sources":["../src/utilities/functions/get.ts"],"sourcesContent":["type Path<T, K extends keyof T> = K extends string\n\t? T[K] extends object\n\t\t? `${K}.${Path<T[K], keyof T[K]>}` | K\n\t\t: K\n\t: never;\n\nexport function get<T, P extends Path<T, keyof T>>(\n\tobj: T,\n\tpath: P,\n\tdefaultValue?: any\n): any {\n\tconst pathArray = (\n\t\ttypeof path === 'string' ? path.split('.') : path\n\t) as string[];\n\n\tlet current: any = obj;\n\n\tfor (const key of pathArray) {\n\t\tif (current && typeof current === 'object' && key in current) {\n\t\t\tcurrent = current[key];\n\t\t} else {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\n\treturn current === undefined ? defaultValue : current;\n}\n"],"names":["get","obj","path","defaultValue","pathArray","current","key"],"mappings":"AAMgB,SAAAA,EACfC,GACAC,GACAC,GACM;AACN,QAAMC,IACL,OAAOF,KAAS,WAAWA,EAAK,MAAM,GAAG,IAAIA;AAG9C,MAAIG,IAAeJ;AAEnB,aAAWK,KAAOF;AACjB,QAAIC,KAAW,OAAOA,KAAY,YAAYC,KAAOD;AACpD,MAAAA,IAAUA,EAAQC,CAAG;AAAA;AAEd,aAAAH;AAIF,SAAAE,MAAY,SAAYF,IAAeE;AAC/C;"}
1
+ {"version":3,"file":"index278.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}