bitboss-ui 2.1.95 → 2.1.96

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 (197) hide show
  1. package/dist/components/BaseSelect/BaseSelect.vue.d.ts +13 -0
  2. package/dist/components/BbSelect/BbSelect.vue.d.ts +16 -0
  3. package/dist/components/FlatListBox.vue.d.ts +56 -0
  4. package/dist/components/GroupedListBox.vue.d.ts +67 -0
  5. package/dist/components/ListBox.vue.d.ts +58 -16
  6. package/dist/composables/useListboxFocus.d.ts +19 -0
  7. package/dist/index.css +1 -1
  8. package/dist/index108.js +9 -9
  9. package/dist/index109.js +17 -10
  10. package/dist/index115.js +1 -1
  11. package/dist/index121.js +4 -4
  12. package/dist/index123.js +13 -13
  13. package/dist/index131.js +1 -1
  14. package/dist/index133.js +5 -5
  15. package/dist/index135.js +1 -1
  16. package/dist/index137.js +2 -2
  17. package/dist/index14.js +1 -1
  18. package/dist/index140.js +1 -1
  19. package/dist/index142.js +2 -2
  20. package/dist/index144.js +1 -1
  21. package/dist/index16.js +5 -5
  22. package/dist/index18.js +3 -3
  23. package/dist/index20.js +8 -8
  24. package/dist/index216.js +138 -2
  25. package/dist/index217.js +2 -138
  26. package/dist/index218.js +2 -2
  27. package/dist/index219.js +1 -1
  28. package/dist/index22.js +14 -14
  29. package/dist/index220.js +1 -1
  30. package/dist/index221.js +5 -2
  31. package/dist/index222.js +5 -2
  32. package/dist/index223.js +5 -2
  33. package/dist/index224.js +5 -7
  34. package/dist/index225.js +3 -2
  35. package/dist/index226.js +2 -7
  36. package/dist/index227.js +6 -5
  37. package/dist/index228.js +8 -5
  38. package/dist/index229.js +268 -5
  39. package/dist/index230.js +52 -5
  40. package/dist/index231.js +52 -3
  41. package/dist/index232.js +32 -6
  42. package/dist/index233.js +58 -6
  43. package/dist/index234.js +12 -267
  44. package/dist/index235.js +4 -52
  45. package/dist/index236.js +19 -51
  46. package/dist/index237.js +195 -26
  47. package/dist/index239.js +134 -12
  48. package/dist/index24.js +11 -11
  49. package/dist/index241.js +32 -16
  50. package/dist/index242.js +26 -104
  51. package/dist/index244.js +2 -100
  52. package/dist/index245.js +4 -0
  53. package/dist/index246.js +51 -3
  54. package/dist/index247.js +17 -2
  55. package/dist/index248.js +106 -3
  56. package/dist/index250.js +100 -3
  57. package/dist/index252.js +3 -5
  58. package/dist/index253.js +5 -4
  59. package/dist/index254.js +5 -9
  60. package/dist/index255.js +5 -29
  61. package/dist/index256.js +2 -16
  62. package/dist/index257.js +34 -12
  63. package/dist/index258.js +85 -52
  64. package/dist/index26.js +3 -3
  65. package/dist/index260.js +27 -11
  66. package/dist/index261.js +15 -2
  67. package/dist/index262.js +12 -67
  68. package/dist/index263.js +15 -32
  69. package/dist/index264.js +188 -28
  70. package/dist/index265.js +5 -0
  71. package/dist/index266.js +8 -187
  72. package/dist/index267.js +18 -3
  73. package/dist/index268.js +12 -3
  74. package/dist/index269.js +4 -33
  75. package/dist/index270.js +103 -7
  76. package/dist/index271.js +13 -5
  77. package/dist/index272.js +11 -5
  78. package/dist/index273.js +5 -5
  79. package/dist/index274.js +2 -20
  80. package/dist/index275.js +3 -135
  81. package/dist/index277.js +22 -85
  82. package/dist/index278.js +11 -0
  83. package/dist/index279.js +23 -15
  84. package/dist/index28.js +1 -1
  85. package/dist/index280.js +2 -9
  86. package/dist/index281.js +7 -23
  87. package/dist/index282.js +6 -22
  88. package/dist/index283.js +33 -9
  89. package/dist/index284.js +13 -4
  90. package/dist/index285.js +59 -193
  91. package/dist/index287.js +3 -34
  92. package/dist/index288.js +6 -7
  93. package/dist/index289.js +14 -16
  94. package/dist/index290.js +9 -12
  95. package/dist/index291.js +20 -228
  96. package/dist/index293.js +3 -11
  97. package/dist/index294.js +3 -6
  98. package/dist/index295.js +3 -16
  99. package/dist/index296.js +2 -2
  100. package/dist/{index292.js → index297.js} +1 -1
  101. package/dist/index298.js +3 -3
  102. package/dist/index299.js +7 -280
  103. package/dist/index30.js +3 -3
  104. package/dist/index300.js +53 -2
  105. package/dist/index301.js +277 -13
  106. package/dist/index302.js +2 -2
  107. package/dist/index303.js +9 -9
  108. package/dist/index305.js +12 -23
  109. package/dist/index307.js +27 -2
  110. package/dist/index308.js +2 -2
  111. package/dist/index309.js +1 -1
  112. package/dist/index310.js +1 -1
  113. package/dist/index311.js +2 -28
  114. package/dist/index312.js +1 -1
  115. package/dist/index313.js +28 -3
  116. package/dist/index314.js +1 -1
  117. package/dist/index315.js +3 -4
  118. package/dist/index316.js +3 -17
  119. package/dist/index317.js +17 -3
  120. package/dist/index318.js +2 -3
  121. package/dist/index319.js +3 -125
  122. package/dist/index32.js +2 -2
  123. package/dist/index320.js +125 -2
  124. package/dist/index321.js +2 -15
  125. package/dist/index322.js +15 -2
  126. package/dist/index323.js +2 -19
  127. package/dist/index324.js +19 -2
  128. package/dist/index325.js +2 -3
  129. package/dist/index326.js +4 -3
  130. package/dist/index327.js +2 -5
  131. package/dist/index328.js +1 -1
  132. package/dist/index329.js +5 -4
  133. package/dist/index330.js +4 -4
  134. package/dist/index331.js +719 -6
  135. package/dist/index332.js +366 -2
  136. package/dist/index333.js +56 -57
  137. package/dist/index334.js +8 -58
  138. package/dist/index335.js +6 -719
  139. package/dist/index336.js +7 -365
  140. package/dist/index337.js +33 -55
  141. package/dist/index338.js +6 -7
  142. package/dist/index339.js +127 -17
  143. package/dist/index34.js +8 -8
  144. package/dist/index340.js +396 -7
  145. package/dist/index341.js +57 -14
  146. package/dist/index342.js +58 -5
  147. package/dist/index343.js +5 -6
  148. package/dist/index344.js +3 -34
  149. package/dist/index345.js +5 -6
  150. package/dist/index346.js +6 -128
  151. package/dist/index347.js +16 -395
  152. package/dist/index348.js +8 -7
  153. package/dist/index349.js +14 -5
  154. package/dist/index350.js +7 -8
  155. package/dist/index351.js +131 -225
  156. package/dist/index354.js +192 -133
  157. package/dist/index355.js +257 -46
  158. package/dist/index356.js +1 -1
  159. package/dist/index357.js +223 -436
  160. package/dist/index358.js +2 -128
  161. package/dist/index359.js +2 -520
  162. package/dist/index36.js +4 -4
  163. package/dist/index360.js +435 -44
  164. package/dist/index361.js +130 -0
  165. package/dist/index362.js +49 -0
  166. package/dist/index363.js +72 -0
  167. package/dist/index364.js +522 -0
  168. package/dist/index365.js +52 -0
  169. package/dist/index38.js +252 -232
  170. package/dist/index40.js +7 -7
  171. package/dist/index42.js +2 -2
  172. package/dist/index44.js +8 -8
  173. package/dist/index46.js +6 -6
  174. package/dist/index50.js +2 -2
  175. package/dist/index54.js +1 -1
  176. package/dist/index56.js +1 -1
  177. package/dist/index58.js +2 -2
  178. package/dist/index62.js +5 -5
  179. package/dist/index68.js +1 -1
  180. package/dist/index81.js +6 -6
  181. package/dist/index83.js +1 -1
  182. package/dist/index85.js +2 -2
  183. package/dist/index87.js +3 -3
  184. package/dist/index89.js +1 -1
  185. package/dist/index92.js +3 -3
  186. package/dist/index94.js +2 -2
  187. package/dist/index96.js +5 -5
  188. package/dist/index98.js +1 -1
  189. package/dist/types/Option.d.ts +5 -0
  190. package/dist/utilities/functions/groupBy.d.ts +4 -2
  191. package/dist/utilities/functions/indexBy.d.ts +9 -2
  192. package/package.json +1 -1
  193. package/dist/index238.js +0 -62
  194. package/dist/index240.js +0 -53
  195. package/dist/index259.js +0 -15
  196. /package/dist/{index251.js → index276.js} +0 -0
  197. /package/dist/{index249.js → index286.js} +0 -0
package/dist/index354.js CHANGED
@@ -1,136 +1,195 @@
1
- function c() {
2
- return typeof window < "u";
3
- }
4
- function u(t) {
5
- return p(t) ? (t.nodeName || "").toLowerCase() : "#document";
6
- }
7
- function i(t) {
8
- var e;
9
- return (t == null || (e = t.ownerDocument) == null ? void 0 : e.defaultView) || window;
10
- }
11
- function N(t) {
12
- var e;
13
- return (e = (p(t) ? t.ownerDocument : t.document) || window.document) == null ? void 0 : e.documentElement;
14
- }
15
- function p(t) {
16
- return c() ? t instanceof Node || t instanceof i(t).Node : !1;
17
- }
18
- function m(t) {
19
- return c() ? t instanceof Element || t instanceof i(t).Element : !1;
20
- }
21
- function w(t) {
22
- return c() ? t instanceof HTMLElement || t instanceof i(t).HTMLElement : !1;
23
- }
24
- function f(t) {
25
- return !c() || typeof ShadowRoot > "u" ? !1 : t instanceof ShadowRoot || t instanceof i(t).ShadowRoot;
26
- }
27
- const E = /* @__PURE__ */ new Set(["inline", "contents"]);
28
- function y(t) {
29
- const {
30
- overflow: e,
31
- overflowX: n,
32
- overflowY: o,
33
- display: r
34
- } = S(t);
35
- return /auto|scroll|overlay|hidden|clip/.test(e + o + n) && !E.has(r);
36
- }
37
- const T = /* @__PURE__ */ new Set(["table", "td", "th"]);
38
- function A(t) {
39
- return T.has(u(t));
40
- }
41
- const v = [":popover-open", ":modal"];
42
- function L(t) {
43
- return v.some((e) => {
44
- try {
45
- return t.matches(e);
46
- } catch {
47
- return !1;
48
- }
49
- });
50
- }
51
- const D = ["transform", "translate", "scale", "rotate", "perspective"], C = ["transform", "translate", "scale", "rotate", "perspective", "filter"], k = ["paint", "layout", "strict", "content"];
52
- function V(t) {
53
- const e = O(), n = m(t) ? S(t) : t;
54
- return D.some((o) => n[o] ? n[o] !== "none" : !1) || (n.containerType ? n.containerType !== "normal" : !1) || !e && (n.backdropFilter ? n.backdropFilter !== "none" : !1) || !e && (n.filter ? n.filter !== "none" : !1) || C.some((o) => (n.willChange || "").includes(o)) || k.some((o) => (n.contain || "").includes(o));
55
- }
56
- function B(t) {
57
- let e = s(t);
58
- for (; w(e) && !h(e); ) {
59
- if (V(e))
60
- return e;
61
- if (L(e))
62
- return null;
63
- e = s(e);
1
+ import { defineComponent as K, useTemplateRef as $, computed as a, watch as v, ref as Q, createElementBlock as s, openBlock as i, withModifiers as U, normalizeStyle as b, normalizeClass as L, createElementVNode as p, renderSlot as r, createTextVNode as z, toDisplayString as f, unref as D, Fragment as W, renderList as X } from "vue";
2
+ import { isNil as E } from "./index245.js";
3
+ import { isNotNil as Z } from "./index146.js";
4
+ import { useVirtualizer as w } from "./index362.js";
5
+ import { hash as N } from "./index225.js";
6
+ import { useLocale as ee } from "./index234.js";
7
+ import { useListboxFocus as te } from "./index363.js";
8
+ import { indexBy as oe } from "./index291.js";
9
+ const le = { class: "bb-listbox__outer-container scrollbar-border" }, ne = {
10
+ ref: "inner",
11
+ class: "bb-listbox__inner-container",
12
+ tabindex: "-1"
13
+ }, ae = {
14
+ key: 0,
15
+ class: "bb-listbox__loading"
16
+ }, se = {
17
+ key: 1,
18
+ class: "bb-listbox__no-data"
19
+ }, ie = ["aria-selected", "data-index"], ue = { class: "autocomplete-option__label" }, xe = /* @__PURE__ */ K({
20
+ __name: "FlatListBox",
21
+ props: {
22
+ compact: { type: Boolean },
23
+ options: {},
24
+ open: { type: Boolean },
25
+ loading: { type: Boolean },
26
+ multiple: { type: Boolean },
27
+ transitionDuration: { default: 250 },
28
+ loadingText: {},
29
+ noDataText: {},
30
+ optionHeight: {}
31
+ },
32
+ emits: ["option:selected", "option:unselected"],
33
+ setup(F, { expose: M, emit: R }) {
34
+ const n = F, x = R, { t: h } = ee(), u = $("inner"), V = $("listbox"), g = a(() => n.optionHeight ? n.optionHeight : n.compact ? 32 : 40), c = w({
35
+ get count() {
36
+ return n.options.length;
37
+ },
38
+ getScrollElement: () => u.value ?? null,
39
+ estimateSize: () => g.value,
40
+ overscan: 5
41
+ }), y = a(() => c.value.getVirtualItems()), C = a(() => c.value.getTotalSize());
42
+ console.log(y.value);
43
+ const _ = a(
44
+ () => n.options.map((e, l) => ({
45
+ index: l,
46
+ text: e.text,
47
+ value: e.value,
48
+ valueHash: e.valueHash,
49
+ item: e.item,
50
+ selected: !!e.selected,
51
+ disabled: !!e.disabled,
52
+ focused: l === d.value
53
+ }))
54
+ ), o = a(() => oe(_.value, "index")), m = a(() => _.value.length > 0), {
55
+ focusedIndex: d,
56
+ focusNext: I,
57
+ focusPrevious: O,
58
+ focusFirst: P,
59
+ focusLast: Y,
60
+ focusFirstSelected: j,
61
+ focusLastSelected: q,
62
+ focusByHash: A,
63
+ blur: H,
64
+ getHighlighted: G
65
+ } = te(() => n.options, { disabled: () => !n.open });
66
+ v(d, (e) => {
67
+ u.value && Z(e) && c.value.scrollToIndex(e, {
68
+ align: "center",
69
+ behavior: "smooth"
70
+ });
71
+ });
72
+ const k = () => {
73
+ if (E(d.value) || !n.open) return;
74
+ const e = o.value[d.value];
75
+ e.disabled || (e.selected ? x("option:unselected", e) : x("option:selected", e));
76
+ }, B = Q(0), T = () => {
77
+ u.value && (B.value = u.value.scrollHeight);
78
+ }, J = (e) => {
79
+ if (e.preventDefault(), u.value && e.target instanceof HTMLElement && V.value) {
80
+ let l = e.target, t = l.dataset.index;
81
+ for (; E(t) && l.parentElement; )
82
+ l = l.parentElement, t = l.dataset.index;
83
+ if (t) {
84
+ const S = o.value[+t];
85
+ S && !S.disabled && (d.value = +t, k());
86
+ }
87
+ }
88
+ };
89
+ return v(
90
+ () => n.open,
91
+ () => {
92
+ T();
93
+ },
94
+ { flush: "post" }
95
+ ), v(
96
+ () => n.options,
97
+ (e, l) => {
98
+ N(e.map((t) => t.valueHash)) !== N(l.map((t) => t.valueHash)) && (c.value.calculateRange(), T(), H());
99
+ },
100
+ { flush: "post" }
101
+ ), M({
102
+ focusNext: I,
103
+ focusPrevious: O,
104
+ focusFirst: P,
105
+ focusFirstSelected: j,
106
+ focusLast: Y,
107
+ focusLastSelected: q,
108
+ blur: H,
109
+ confirmOption: k,
110
+ focusByHash: A,
111
+ getHighlighted: G
112
+ }), (e, l) => (i(), s("span", {
113
+ class: L(["bb-listbox", {
114
+ "bb-listbox--compact": e.compact,
115
+ "bb-listbox--loading": e.loading,
116
+ "bb-listbox--multiple": e.multiple,
117
+ "bb-listbox--no-data": !m.value,
118
+ "bb-listbox--open": e.open
119
+ }]),
120
+ style: b({
121
+ "--transition-duration": `${e.transitionDuration}ms`,
122
+ "--overlay-min-height": `${B.value}px`,
123
+ "--option-height": `${g.value}px`
124
+ }),
125
+ onClick: U(J, ["stop"])
126
+ }, [
127
+ p("span", le, [
128
+ p("span", ne, [
129
+ r(e.$slots, "options:prepend"),
130
+ e.loading && !m.value ? (i(), s("span", ae, [
131
+ r(e.$slots, "loading", {}, () => [
132
+ z(f(e.loadingText || D(h)("common.loadingText").value), 1)
133
+ ])
134
+ ])) : m.value ? (i(), s("span", {
135
+ key: 2,
136
+ role: "listbox",
137
+ ref: "listbox",
138
+ style: b({
139
+ height: `${C.value}px`
140
+ }),
141
+ tabindex: "-1"
142
+ }, [
143
+ (i(!0), s(W, null, X(y.value, (t) => (i(), s("span", {
144
+ key: o.value[t.index].valueHash,
145
+ "aria-selected": o.value[t.index].focused ? !0 : void 0,
146
+ class: L({
147
+ "bb-listbox__option autocomplete-option": !0,
148
+ "autocomplete-option--focused": o.value[t.index].focused,
149
+ "autocomplete-option--selected": o.value[t.index].selected,
150
+ "autocomplete-option--disabled": o.value[t.index].disabled
151
+ }),
152
+ "data-index": t.index,
153
+ role: "option",
154
+ style: b({
155
+ transform: `translateY(${t.start}px)`
156
+ })
157
+ }, [
158
+ r(e.$slots, "option", {
159
+ disabled: o.value[t.index].disabled,
160
+ focused: o.value[t.index].focused,
161
+ index: t.index,
162
+ item: o.value[t.index].item,
163
+ selected: o.value[t.index].selected,
164
+ text: o.value[t.index].text,
165
+ value: o.value[t.index].value
166
+ }, () => [
167
+ l[0] || (l[0] = p("svg", {
168
+ class: "autocomplete-option__checkbox",
169
+ role: "presentation",
170
+ viewBox: "276.411 158.834 114.971 114.97"
171
+ }, [
172
+ p("path", {
173
+ d: "M 297.574 224.786 L 318.309 243.134 L 371.568 189.232",
174
+ fill: "none",
175
+ "stroke-linecap": "round",
176
+ "stroke-width": "14px"
177
+ })
178
+ ], -1)),
179
+ p("span", ue, f(o.value[t.index].text), 1)
180
+ ])
181
+ ], 14, ie))), 128))
182
+ ], 4)) : (i(), s("span", se, [
183
+ r(e.$slots, "no-data", {}, () => [
184
+ z(f(e.noDataText || D(h)("common.noDataText").value), 1)
185
+ ])
186
+ ])),
187
+ r(e.$slots, "options:append")
188
+ ], 512)
189
+ ])
190
+ ], 6));
64
191
  }
65
- return null;
66
- }
67
- function O() {
68
- return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none");
69
- }
70
- const R = /* @__PURE__ */ new Set(["html", "body", "#document"]);
71
- function h(t) {
72
- return R.has(u(t));
73
- }
74
- function S(t) {
75
- return i(t).getComputedStyle(t);
76
- }
77
- function F(t) {
78
- return m(t) ? {
79
- scrollLeft: t.scrollLeft,
80
- scrollTop: t.scrollTop
81
- } : {
82
- scrollLeft: t.scrollX,
83
- scrollTop: t.scrollY
84
- };
85
- }
86
- function s(t) {
87
- if (u(t) === "html")
88
- return t;
89
- const e = (
90
- // Step into the shadow DOM of the parent of a slotted node.
91
- t.assignedSlot || // DOM Element detected.
92
- t.parentNode || // ShadowRoot detected.
93
- f(t) && t.host || // Fallback.
94
- N(t)
95
- );
96
- return f(e) ? e.host : e;
97
- }
98
- function b(t) {
99
- const e = s(t);
100
- return h(e) ? t.ownerDocument ? t.ownerDocument.body : t.body : w(e) && y(e) ? e : b(e);
101
- }
102
- function d(t, e, n) {
103
- var o;
104
- e === void 0 && (e = []), n === void 0 && (n = !0);
105
- const r = b(t), g = r === ((o = t.ownerDocument) == null ? void 0 : o.body), l = i(r);
106
- if (g) {
107
- const a = _(l);
108
- return e.concat(l, l.visualViewport || [], y(r) ? r : [], a && n ? d(a) : []);
109
- }
110
- return e.concat(r, d(r, [], n));
111
- }
112
- function _(t) {
113
- return t.parent && Object.getPrototypeOf(t.parent) ? t.frameElement : null;
114
- }
192
+ });
115
193
  export {
116
- S as getComputedStyle,
117
- B as getContainingBlock,
118
- N as getDocumentElement,
119
- _ as getFrameElement,
120
- b as getNearestOverflowAncestor,
121
- u as getNodeName,
122
- F as getNodeScroll,
123
- d as getOverflowAncestors,
124
- s as getParentNode,
125
- i as getWindow,
126
- V as isContainingBlock,
127
- m as isElement,
128
- w as isHTMLElement,
129
- h as isLastTraversableNode,
130
- p as isNode,
131
- y as isOverflowElement,
132
- f as isShadowRoot,
133
- A as isTableElement,
134
- L as isTopLayer,
135
- O as isWebKit
194
+ xe as default
136
195
  };
package/dist/index355.js CHANGED
@@ -1,49 +1,260 @@
1
- import { elementScroll as f, observeElementOffset as s, observeElementRect as d, Virtualizer as p } from "./index359.js";
2
- import { defaultKeyExtractor as S, defaultRangeExtractor as V, measureElement as b } from "./index359.js";
3
- import { computed as g, unref as l, shallowRef as E, watch as o, triggerRef as i, onScopeDispose as v } from "vue";
4
- function w(e) {
5
- const t = new p(l(e)), a = E(t), u = t._didMount();
6
- return o(
7
- () => l(e).getScrollElement(),
8
- (r) => {
9
- r && t._willUpdate();
10
- },
11
- {
12
- immediate: !0
13
- }
14
- ), o(
15
- () => l(e),
16
- (r) => {
17
- t.setOptions({
18
- ...r,
19
- onChange: (c, m) => {
20
- var n;
21
- i(a), (n = r.onChange) == null || n.call(r, c, m);
1
+ import { defineComponent as pe, useTemplateRef as q, computed as i, watch as L, ref as ve, createElementBlock as r, openBlock as c, withModifiers as be, normalizeStyle as O, normalizeClass as G, createElementVNode as v, renderSlot as h, createTextVNode as J, toDisplayString as x, unref as g, Fragment as P, renderList as Y } from "vue";
2
+ import { isNil as f } from "./index245.js";
3
+ import { useVirtualizer as he } from "./index362.js";
4
+ import { useLocale as me } from "./index234.js";
5
+ import { useListboxFocus as xe } from "./index363.js";
6
+ import { indexBy as E } from "./index291.js";
7
+ const ge = { class: "bb-listbox__outer-container scrollbar-border" }, fe = {
8
+ ref: "inner",
9
+ class: "bb-listbox__inner-container",
10
+ tabindex: "-1"
11
+ }, He = {
12
+ key: 0,
13
+ class: "bb-listbox__loading"
14
+ }, _e = {
15
+ key: 1,
16
+ class: "bb-listbox__no-data"
17
+ }, ye = ["aria-activedescendant", "aria-multiselectable"], Ie = ["aria-labelledby", "aria-disabled"], $e = ["id"], ke = { class: "bb-listbox__group-header-label" }, Be = ["aria-selected", "aria-setsize", "aria-posinset", "id", "data-index"], Me = { class: "autocomplete-option__label" }, Ee = /* @__PURE__ */ pe({
18
+ __name: "GroupedListBox",
19
+ props: {
20
+ compact: { type: Boolean },
21
+ groups: {},
22
+ headerHeight: {},
23
+ loading: { type: Boolean },
24
+ loadingText: {},
25
+ multiple: { type: Boolean },
26
+ noDataText: {},
27
+ open: { type: Boolean },
28
+ optionHeight: {},
29
+ transitionDuration: { default: 250 }
30
+ },
31
+ emits: ["option:selected", "option:unselected"],
32
+ setup(K, { expose: Q, emit: U }) {
33
+ const s = K, V = U, { t: F } = me(), b = q("inner"), W = q("listbox"), H = i(() => s.optionHeight ? s.optionHeight : s.compact ? 32 : 40), _ = i(() => s.headerHeight ? s.headerHeight : s.compact ? 24 : 32), X = i(() => {
34
+ let e = 0;
35
+ return s.groups.map((a, t) => {
36
+ const l = a.id, p = e, d = a.options.length, k = _.value + d * H.value, B = `group-header-${a.id}`, M = typeof a.data == "string" ? a.data : JSON.stringify(a.data), S = a.options.every((z) => z.disabled), D = a.data, T = a.options;
37
+ return e += d, {
38
+ offset: p,
39
+ length: d,
40
+ height: k,
41
+ id: l,
42
+ headerId: B,
43
+ label: M,
44
+ index: t,
45
+ allOptionsAreDisabled: S,
46
+ data: D,
47
+ options: T
48
+ };
49
+ });
50
+ }), n = i(
51
+ () => E(X.value, "index")
52
+ ), m = i(() => s.groups.flatMap(
53
+ (e, a) => e.options.map((t, l) => {
54
+ const p = t.valueHash, d = n.value[a].offset + l, k = e.id, B = !!t.selected, M = !!t.disabled, S = t.item, D = t.text, T = t.value, z = d === u.value;
55
+ return {
56
+ id: p,
57
+ globalIndex: d,
58
+ groupIndex: a,
59
+ groupId: k,
60
+ indexInGroup: l,
61
+ selected: B,
62
+ disabled: M,
63
+ item: S,
64
+ text: D,
65
+ value: T,
66
+ valueHash: t.valueHash,
67
+ focused: z
68
+ };
69
+ })
70
+ )), o = i(() => E(m.value, "id")), y = i(
71
+ () => E(m.value, "globalIndex")
72
+ ), N = (e) => `listbox-option-${e}`, Z = i(() => {
73
+ if (f(u.value)) return;
74
+ const e = y.value[u.value];
75
+ if (e)
76
+ return N(e.valueHash);
77
+ }), I = i(() => m.value.length > 0), w = (e) => _.value + s.groups[e].options.length * H.value, $ = he({
78
+ get count() {
79
+ return s.groups.length;
80
+ },
81
+ getScrollElement: () => b.value ?? null,
82
+ estimateSize: (e) => w(e),
83
+ overscan: 2
84
+ }), ee = i(() => $.value.getVirtualItems()), te = i(() => $.value.getTotalSize()), {
85
+ focusedIndex: u,
86
+ focusNext: ae,
87
+ focusPrevious: le,
88
+ focusFirst: se,
89
+ focusLast: oe,
90
+ focusFirstSelected: ne,
91
+ focusLastSelected: ie,
92
+ focusByHash: ue,
93
+ blur: A,
94
+ getHighlighted: de
95
+ } = xe(
96
+ i(() => m.value),
97
+ { disabled: () => !s.open }
98
+ ), re = () => {
99
+ if (!b.value || f(u.value)) return;
100
+ const e = b.value.querySelector(
101
+ `[data-index="${u.value}"]`
102
+ );
103
+ e && e.scrollIntoView({ block: "nearest", behavior: "smooth" });
104
+ };
105
+ L(u, () => {
106
+ re();
107
+ });
108
+ const C = () => {
109
+ if (f(u.value) || !s.open) return;
110
+ const e = y.value[u.value];
111
+ if (!e || e.disabled) return;
112
+ const a = {
113
+ text: e.text,
114
+ value: e.value,
115
+ item: e.item,
116
+ valueHash: e.valueHash,
117
+ selected: e.selected,
118
+ disabled: e.disabled
119
+ };
120
+ e.selected ? V("option:unselected", a) : V("option:selected", a);
121
+ }, R = ve(0), j = () => {
122
+ b.value && (R.value = b.value.scrollHeight);
123
+ }, ce = (e) => {
124
+ if (e.preventDefault(), b.value && e.target instanceof HTMLElement && W.value) {
125
+ let a = e.target, t = a.dataset.index;
126
+ for (; f(t) && a.parentElement; )
127
+ a = a.parentElement, t = a.dataset.index;
128
+ if (t) {
129
+ const l = y.value[+t];
130
+ l && !l.disabled && (u.value = +t, C());
22
131
  }
23
- }), t._willUpdate(), i(a);
24
- },
25
- {
26
- immediate: !0
27
- }
28
- ), v(u), a;
29
- }
30
- function z(e) {
31
- return w(
32
- g(() => ({
33
- observeElementRect: d,
34
- observeElementOffset: s,
35
- scrollToFn: f,
36
- ...l(e)
37
- }))
38
- );
39
- }
132
+ }
133
+ };
134
+ return L(() => s.open, j, { flush: "post" }), L(
135
+ () => s.groups,
136
+ (e, a) => {
137
+ const t = e.flatMap((p) => p.options.map((d) => d.valueHash)).join(","), l = a.flatMap((p) => p.options.map((d) => d.valueHash)).join(",");
138
+ t !== l && ($.value.measure(), j(), A());
139
+ },
140
+ { flush: "post" }
141
+ ), Q({
142
+ focusNext: ae,
143
+ focusPrevious: le,
144
+ focusFirst: se,
145
+ focusFirstSelected: ne,
146
+ focusLast: oe,
147
+ focusLastSelected: ie,
148
+ blur: A,
149
+ confirmOption: C,
150
+ focusByHash: ue,
151
+ getHighlighted: de
152
+ }), (e, a) => (c(), r("span", {
153
+ class: G(["bb-listbox bb-listbox--grouped", {
154
+ "bb-listbox--compact": e.compact,
155
+ "bb-listbox--loading": e.loading,
156
+ "bb-listbox--multiple": e.multiple,
157
+ "bb-listbox--no-data": !I.value,
158
+ "bb-listbox--open": e.open
159
+ }]),
160
+ style: O({
161
+ "--transition-duration": `${e.transitionDuration}ms`,
162
+ "--overlay-min-height": `${R.value}px`,
163
+ "--option-height": `${H.value}px`,
164
+ "--group-header-height": `${_.value}px`
165
+ }),
166
+ onClick: be(ce, ["stop"])
167
+ }, [
168
+ v("span", ge, [
169
+ v("span", fe, [
170
+ h(e.$slots, "options:prepend"),
171
+ e.loading && !I.value ? (c(), r("span", He, [
172
+ h(e.$slots, "loading", {}, () => [
173
+ J(x(e.loadingText || g(F)("common.loadingText").value), 1)
174
+ ])
175
+ ])) : I.value ? (c(), r("span", {
176
+ key: 2,
177
+ role: "listbox",
178
+ ref: "listbox",
179
+ style: O({ height: `${te.value}px` }),
180
+ "aria-activedescendant": Z.value,
181
+ "aria-multiselectable": e.multiple ? !0 : void 0,
182
+ tabindex: "-1"
183
+ }, [
184
+ (c(!0), r(P, null, Y(ee.value, (t) => (c(), r("span", {
185
+ key: n.value[t.index].id,
186
+ style: O({ transform: `translateY(${t.start}px)` }),
187
+ role: "group",
188
+ "aria-labelledby": n.value[t.index].headerId,
189
+ "aria-disabled": n.value[t.index].allOptionsAreDisabled,
190
+ class: "bb-listbox__group"
191
+ }, [
192
+ v("span", {
193
+ class: "bb-listbox__group-header",
194
+ role: "presentation",
195
+ id: n.value[t.index].headerId
196
+ }, [
197
+ h(e.$slots, "group", {
198
+ text: n.value[t.index].label,
199
+ item: n.value[t.index].data,
200
+ index: t.index,
201
+ length: n.value[t.index].length,
202
+ disabled: n.value[t.index].allOptionsAreDisabled
203
+ }, () => [
204
+ v("span", ke, x(n.value[t.index].label), 1)
205
+ ])
206
+ ], 8, $e),
207
+ (c(!0), r(P, null, Y(n.value[t.index].options, (l) => (c(), r("span", {
208
+ key: l.valueHash,
209
+ "aria-selected": o.value[l.valueHash].selected ? !0 : void 0,
210
+ "aria-setsize": n.value[t.index].length,
211
+ "aria-posinset": o.value[l.valueHash].indexInGroup + 1,
212
+ id: N(l.valueHash),
213
+ class: G({
214
+ "bb-listbox__option autocomplete-option": !0,
215
+ "autocomplete-option--focused": g(u) === o.value[l.valueHash].globalIndex,
216
+ "autocomplete-option--selected": o.value[l.valueHash].selected,
217
+ "autocomplete-option--disabled": o.value[l.valueHash].disabled
218
+ }),
219
+ "data-index": o.value[l.valueHash].globalIndex,
220
+ role: "option"
221
+ }, [
222
+ h(e.$slots, "option", {
223
+ disabled: !!o.value[l.valueHash].disabled,
224
+ focused: g(u) === o.value[l.valueHash].globalIndex,
225
+ index: o.value[l.valueHash].globalIndex,
226
+ item: o.value[l.valueHash].item,
227
+ selected: !!o.value[l.valueHash].selected,
228
+ text: o.value[l.valueHash].text,
229
+ value: o.value[l.valueHash].value
230
+ }, () => [
231
+ a[0] || (a[0] = v("svg", {
232
+ class: "autocomplete-option__checkbox",
233
+ role: "presentation",
234
+ viewBox: "276.411 158.834 114.971 114.97"
235
+ }, [
236
+ v("path", {
237
+ d: "M 297.574 224.786 L 318.309 243.134 L 371.568 189.232",
238
+ fill: "none",
239
+ "stroke-linecap": "round",
240
+ "stroke-width": "14px"
241
+ })
242
+ ], -1)),
243
+ v("span", Me, x(o.value[l.valueHash].text), 1)
244
+ ])
245
+ ], 10, Be))), 128))
246
+ ], 12, Ie))), 128))
247
+ ], 12, ye)) : (c(), r("span", _e, [
248
+ h(e.$slots, "no-data", {}, () => [
249
+ J(x(e.noDataText || g(F)("common.noDataText").value), 1)
250
+ ])
251
+ ])),
252
+ h(e.$slots, "options:append")
253
+ ], 512)
254
+ ])
255
+ ], 6));
256
+ }
257
+ });
40
258
  export {
41
- p as Virtualizer,
42
- S as defaultKeyExtractor,
43
- V as defaultRangeExtractor,
44
- f as elementScroll,
45
- b as measureElement,
46
- s as observeElementOffset,
47
- d as observeElementRect,
48
- z as useVirtualizer
259
+ Ee as default
49
260
  };
package/dist/index356.js CHANGED
@@ -1,4 +1,4 @@
1
- import { commonjsGlobal as y } from "./index331.js";
1
+ import { commonjsGlobal as y } from "./index343.js";
2
2
  var p, _;
3
3
  function Z() {
4
4
  if (_) return p;