bitboss-ui 2.0.21 → 2.0.22

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 (247) hide show
  1. package/dist/index107.js +5 -5
  2. package/dist/index115.js +1 -1
  3. package/dist/index117.js +5 -5
  4. package/dist/index119.js +1 -1
  5. package/dist/index123.js +1 -1
  6. package/dist/index124.js +1 -1
  7. package/dist/index125.js +1 -1
  8. package/dist/index127.js +1 -1
  9. package/dist/index129.js +2 -2
  10. package/dist/index130.js +1 -1
  11. package/dist/index14.js +1 -1
  12. package/dist/index16.js +3 -3
  13. package/dist/index18.js +2 -2
  14. package/dist/index199.js +81 -2
  15. package/dist/index199.js.map +1 -1
  16. package/dist/index20.js +14 -14
  17. package/dist/index200.js +8 -5
  18. package/dist/index200.js.map +1 -1
  19. package/dist/index201.js +3 -16
  20. package/dist/index201.js.map +1 -1
  21. package/dist/index202.js +2 -16
  22. package/dist/index202.js.map +1 -1
  23. package/dist/index203.js +44 -19
  24. package/dist/index203.js.map +1 -1
  25. package/dist/index205.js +13 -27
  26. package/dist/index205.js.map +1 -1
  27. package/dist/index206.js +158 -3
  28. package/dist/index206.js.map +1 -1
  29. package/dist/index207.js +84 -2
  30. package/dist/index207.js.map +1 -1
  31. package/dist/index209.js +3 -249
  32. package/dist/index209.js.map +1 -1
  33. package/dist/index210.js +35 -52
  34. package/dist/index210.js.map +1 -1
  35. package/dist/index211.js +5 -43
  36. package/dist/index211.js.map +1 -1
  37. package/dist/index212.js +7 -5
  38. package/dist/index212.js.map +1 -1
  39. package/dist/index213.js +281 -49
  40. package/dist/index213.js.map +1 -1
  41. package/dist/index214.js +14 -124
  42. package/dist/index214.js.map +1 -1
  43. package/dist/index215.js +13 -120
  44. package/dist/index215.js.map +1 -1
  45. package/dist/index216.js +19 -2
  46. package/dist/index216.js.map +1 -1
  47. package/dist/index217.js +19 -35
  48. package/dist/index217.js.map +1 -1
  49. package/dist/index218.js +25 -172
  50. package/dist/index218.js.map +1 -1
  51. package/dist/index219.js +3 -6
  52. package/dist/index219.js.map +1 -1
  53. package/dist/index22.js +15 -15
  54. package/dist/index220.js +2 -44
  55. package/dist/index220.js.map +1 -1
  56. package/dist/index221.js +252 -0
  57. package/dist/index221.js.map +1 -0
  58. package/dist/index222.js +52 -13
  59. package/dist/index222.js.map +1 -1
  60. package/dist/index223.js +44 -5
  61. package/dist/index223.js.map +1 -1
  62. package/dist/index224.js +5 -369
  63. package/dist/index224.js.map +1 -1
  64. package/dist/index225.js +48 -80
  65. package/dist/index225.js.map +1 -1
  66. package/dist/index226.js +2 -3
  67. package/dist/index226.js.map +1 -1
  68. package/dist/index227.js +4 -7
  69. package/dist/index227.js.map +1 -1
  70. package/dist/index228.js +2 -158
  71. package/dist/index228.js.map +1 -1
  72. package/dist/index229.js +125 -83
  73. package/dist/index229.js.map +1 -1
  74. package/dist/index230.js +126 -0
  75. package/dist/index230.js.map +1 -0
  76. package/dist/index231.js +2 -2
  77. package/dist/index231.js.map +1 -1
  78. package/dist/index232.js +174 -4
  79. package/dist/index232.js.map +1 -1
  80. package/dist/index233.js +5 -2
  81. package/dist/index233.js.map +1 -1
  82. package/dist/index234.js +369 -3
  83. package/dist/index234.js.map +1 -1
  84. package/dist/index235.js +2 -2
  85. package/dist/index235.js.map +1 -1
  86. package/dist/index236.js +2 -18
  87. package/dist/index236.js.map +1 -1
  88. package/dist/index237.js +17 -105
  89. package/dist/index237.js.map +1 -1
  90. package/dist/index238.js +109 -0
  91. package/dist/index238.js.map +1 -0
  92. package/dist/index24.js +5 -5
  93. package/dist/{index239.js → index240.js} +2 -2
  94. package/dist/{index239.js.map → index240.js.map} +1 -1
  95. package/dist/index244.js +6 -3
  96. package/dist/index244.js.map +1 -1
  97. package/dist/index245.js +15 -8
  98. package/dist/index245.js.map +1 -1
  99. package/dist/index246.js +9 -23
  100. package/dist/index246.js.map +1 -1
  101. package/dist/index247.js +3 -281
  102. package/dist/index247.js.map +1 -1
  103. package/dist/index248.js +9 -6
  104. package/dist/index248.js.map +1 -1
  105. package/dist/index249.js +23 -2
  106. package/dist/index249.js.map +1 -1
  107. package/dist/index250.js +224 -2
  108. package/dist/index250.js.map +1 -1
  109. package/dist/index251.js +3 -2
  110. package/dist/index251.js.map +1 -1
  111. package/dist/index253.js +7 -2
  112. package/dist/index253.js.map +1 -1
  113. package/dist/index254.js +3 -2
  114. package/dist/index254.js.map +1 -1
  115. package/dist/index255.js +12 -2
  116. package/dist/index255.js.map +1 -1
  117. package/dist/index256.js +9 -2
  118. package/dist/index256.js.map +1 -1
  119. package/dist/index257.js +9 -2
  120. package/dist/index257.js.map +1 -1
  121. package/dist/index258.js +17 -2
  122. package/dist/index258.js.map +1 -1
  123. package/dist/index259.js +2 -28
  124. package/dist/index259.js.map +1 -1
  125. package/dist/index26.js +1 -1
  126. package/dist/index260.js +61 -17
  127. package/dist/index260.js.map +1 -1
  128. package/dist/index261.js +8 -0
  129. package/dist/index261.js.map +1 -0
  130. package/dist/index262.js +429 -5
  131. package/dist/index262.js.map +1 -1
  132. package/dist/index263.js +89 -6
  133. package/dist/index263.js.map +1 -1
  134. package/dist/index264.js +6 -16
  135. package/dist/index264.js.map +1 -1
  136. package/dist/index265.js +2 -2
  137. package/dist/index266.js +2 -126
  138. package/dist/index266.js.map +1 -1
  139. package/dist/index267.js +2 -431
  140. package/dist/index267.js.map +1 -1
  141. package/dist/index268.js +2 -3
  142. package/dist/index268.js.map +1 -1
  143. package/dist/{index252.js → index269.js} +1 -1
  144. package/dist/index269.js.map +1 -0
  145. package/dist/index270.js +2 -22
  146. package/dist/index270.js.map +1 -1
  147. package/dist/index271.js +5 -0
  148. package/dist/index271.js.map +1 -0
  149. package/dist/index272.js +2 -89
  150. package/dist/index272.js.map +1 -1
  151. package/dist/index273.js +2 -200
  152. package/dist/index273.js.map +1 -1
  153. package/dist/index274.js +2 -436
  154. package/dist/index274.js.map +1 -1
  155. package/dist/index275.js +26 -125
  156. package/dist/index275.js.map +1 -1
  157. package/dist/index276.js +22 -3
  158. package/dist/index276.js.map +1 -1
  159. package/dist/index278.js +199 -8
  160. package/dist/index278.js.map +1 -1
  161. package/dist/index279.js +4 -9
  162. package/dist/index279.js.map +1 -1
  163. package/dist/index28.js +3 -3
  164. package/dist/index280.js +2 -17
  165. package/dist/index280.js.map +1 -1
  166. package/dist/index281.js +126 -4
  167. package/dist/index281.js.map +1 -1
  168. package/dist/index282.js +22 -9
  169. package/dist/index282.js.map +1 -1
  170. package/dist/index284.js +436 -2
  171. package/dist/index284.js.map +1 -1
  172. package/dist/index285.js +126 -65
  173. package/dist/index285.js.map +1 -1
  174. package/dist/index286.js +1 -1
  175. package/dist/index287.js +1 -1
  176. package/dist/index288.js +2 -2
  177. package/dist/index289.js +15 -5
  178. package/dist/index289.js.map +1 -1
  179. package/dist/index290.js +4 -15
  180. package/dist/index290.js.map +1 -1
  181. package/dist/index291.js +4 -79
  182. package/dist/index291.js.map +1 -1
  183. package/dist/index292.js +62 -0
  184. package/dist/index292.js.map +1 -0
  185. package/dist/index293.js +79 -7
  186. package/dist/index293.js.map +1 -1
  187. package/dist/index295.js +2 -4
  188. package/dist/index295.js.map +1 -1
  189. package/dist/index296.js +11 -4
  190. package/dist/index296.js.map +1 -1
  191. package/dist/index297.js +34 -58
  192. package/dist/index297.js.map +1 -1
  193. package/dist/index298.js +6 -6
  194. package/dist/index298.js.map +1 -1
  195. package/dist/index299.js +18 -34
  196. package/dist/index299.js.map +1 -1
  197. package/dist/index30.js +2 -2
  198. package/dist/index300.js +46 -10
  199. package/dist/index300.js.map +1 -1
  200. package/dist/index301.js +6 -46
  201. package/dist/index301.js.map +1 -1
  202. package/dist/index302.js +480 -2
  203. package/dist/index302.js.map +1 -1
  204. package/dist/index304.js +424 -0
  205. package/dist/index304.js.map +1 -0
  206. package/dist/index305.js +42 -416
  207. package/dist/index305.js.map +1 -1
  208. package/dist/index306.js +2 -47
  209. package/dist/index306.js.map +1 -1
  210. package/dist/index32.js +2 -2
  211. package/dist/index34.js +3 -3
  212. package/dist/index36.js +13 -13
  213. package/dist/index38.js +4 -4
  214. package/dist/index40.js +2 -2
  215. package/dist/index42.js +2 -2
  216. package/dist/index44.js +6 -6
  217. package/dist/index46.js +2 -2
  218. package/dist/index48.js +2 -2
  219. package/dist/index54.js +1 -1
  220. package/dist/index56.js +1 -1
  221. package/dist/index72.js +3 -3
  222. package/dist/index76.js +2 -2
  223. package/dist/index78.js +1 -1
  224. package/dist/index81.js +2 -2
  225. package/dist/index83.js +76 -65
  226. package/dist/index83.js.map +1 -1
  227. package/dist/index85.js +3 -3
  228. package/dist/index87.js +1 -1
  229. package/dist/style.css +1 -1
  230. package/package.json +1 -1
  231. package/dist/index204.js +0 -22
  232. package/dist/index204.js.map +0 -1
  233. package/dist/index208.js +0 -11
  234. package/dist/index208.js.map +0 -1
  235. package/dist/index241.js +0 -5
  236. package/dist/index241.js.map +0 -1
  237. package/dist/index252.js.map +0 -1
  238. package/dist/index277.js +0 -15
  239. package/dist/index277.js.map +0 -1
  240. package/dist/index283.js +0 -227
  241. package/dist/index283.js.map +0 -1
  242. package/dist/index294.js +0 -22
  243. package/dist/index294.js.map +0 -1
  244. package/dist/index303.js +0 -483
  245. package/dist/index303.js.map +0 -1
  246. package/dist/index307.js +0 -5
  247. package/dist/index307.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index205.js","sources":["../node_modules/dayjs/plugin/weekOfYear.js"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));"],"names":["e","t","module","this","i","n","r","f","s","a","o"],"mappings":";;;AAAA,GAAC,SAASA,GAAEC,GAAE;AAAsD,IAAAC,EAAe,UAAAD,EAAqI;AAAA,EAAA,GAAEE,GAAM,WAAU;AAAc,QAAIH,IAAE,QAAOC,IAAE;AAAO,WAAO,SAASG,GAAEC,GAAEC,GAAE;AAAC,UAAIC,IAAEF,EAAE;AAAU,MAAAE,EAAE,OAAK,SAASH,GAAE;AAAC,YAAYA,MAAT,WAAaA,IAAE,OAAaA,MAAP,KAAS,QAAO,KAAK,IAAI,KAAGA,IAAE,KAAK,KAAI,IAAI,KAAK;AAAE,YAAIC,IAAE,KAAK,QAAO,EAAG,aAAW;AAAE,YAAQ,KAAK,MAAO,MAAjB,MAAmB,KAAK,KAAI,IAAG,IAAG;AAAC,cAAIE,IAAED,EAAE,IAAI,EAAE,QAAQL,CAAC,EAAE,IAAI,GAAEA,CAAC,EAAE,KAAKI,CAAC,GAAEG,IAAEF,EAAE,IAAI,EAAE,MAAMN,CAAC;AAAE,cAAGO,EAAE,SAASC,CAAC,EAAE,QAAO;AAAA,QAAC;AAAC,YAAIC,IAAEH,EAAE,IAAI,EAAE,QAAQL,CAAC,EAAE,KAAKI,CAAC,EAAE,QAAQL,CAAC,EAAE,SAAS,GAAE,aAAa,GAAEU,IAAE,KAAK,KAAKD,GAAET,GAAE,EAAE;AAAE,eAAOU,IAAE,IAAEJ,EAAE,IAAI,EAAE,QAAQ,MAAM,EAAE,KAAI,IAAG,KAAK,KAAKI,CAAC;AAAA,MAAC,GAAEH,EAAE,QAAM,SAASP,GAAE;AAAC,eAAgBA,MAAT,WAAaA,IAAE,OAAM,KAAK,KAAKA,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index205.js","sources":["../src/components/CommonInputOuterContainer.vue"],"sourcesContent":["<template>\n\t<span class=\"bb-common-input-outer-container\">\n\t\t<slot name=\"prepend-outer\" />\n\t\t<slot />\n\t\t<slot name=\"append-outer\" />\n\t</span>\n</template>\n\n<script setup lang=\"ts\"></script>\n\n<style lang=\"postcss\">\n@import '@/assets/css/CommonInputInnerContainer';\n</style>\n"],"names":["_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1","_renderSlot"],"mappings":";;;;AACC,SAAAA,EAAAC,GAAAC,GAAA;SAC8BC,EAAA,GAAAC,EAAA,QAAAC,GAAA;AAAA,IAC7BC,EAAQL,EAAA,QAAA,eAAA;AAAA,IACRK,EAA4BL,EAAA,QAAA,SAAA;AAAA;;;;"}
package/dist/index206.js CHANGED
@@ -1,6 +1,161 @@
1
- import { hash as o } from "./index259.js";
2
- const t = (r, h = "bb") => `${h}${o(r)}`;
1
+ import { ref as a, computed as r, onBeforeMount as Y, onBeforeUnmount as Z, watch as H, nextTick as N } from "vue";
2
+ import { last as _ } from "./index220.js";
3
+ import { useArray as Q } from "./index255.js";
4
+ import { uniqBy as $ } from "./index256.js";
5
+ import { useItemValue as ee } from "./index257.js";
6
+ import { useItemText as te } from "./index258.js";
7
+ import { hash as v } from "./index219.js";
8
+ import { isNotNil as q } from "./index131.js";
9
+ import { waitFor as le } from "./index211.js";
10
+ import { isNil as oe } from "./index126.js";
11
+ const he = (l) => {
12
+ const i = a(""), F = a(), u = (e) => {
13
+ F.value = e, l.emit("update:modelValue", e);
14
+ }, d = a([]), {
15
+ array: k,
16
+ add: E,
17
+ remove: P,
18
+ set: y
19
+ } = Q(), {
20
+ array: S,
21
+ add: j,
22
+ remove: J
23
+ } = Q(), { getItemText: L } = te(), { getItemValue: U } = ee(), O = (e) => {
24
+ const t = !!(l.disabled.value || e.disabled), o = L(e, l.itemText), n = U(e, l.itemValue);
25
+ if (n === void 0)
26
+ throw new Error(
27
+ 'The result of extracting "value" from option was undefined. Affected item is ' + JSON.stringify(e) + " please check itemValue property is correct."
28
+ );
29
+ const X = v(n);
30
+ return {
31
+ item: e,
32
+ text: o,
33
+ value: n,
34
+ valueHash: X,
35
+ disabled: t,
36
+ selected: !1
37
+ };
38
+ }, T = (e) => (e.selected = q(b.value[e.valueHash]), e), V = r(() => {
39
+ const e = [].concat(
40
+ d.value.map((t) => T(O(t))),
41
+ S.value.map(T),
42
+ k.value.map(T)
43
+ );
44
+ return $(e, (t) => t.valueHash);
45
+ }), z = (e) => {
46
+ l.multiple ? (u(l.modelValue.value.concat(e.value)), l.stash && E(e), l.resetQueryOnOptionSelected && s()) : (l.stash && y(e), u(e.value), N(() => s()));
47
+ }, G = async (e) => {
48
+ if (J((t) => t.valueHash !== e.valueHash), P((t) => t.valueHash !== e.valueHash), l.multiple) {
49
+ const t = { ...b.value };
50
+ delete t[e.valueHash], u(Object.values(t));
51
+ } else
52
+ u(null), await N(), s();
53
+ }, b = r(() => {
54
+ const e = {}, t = [].concat(l.modelValue.value);
55
+ for (let o = 0; o < t.length; o++) {
56
+ const n = t[o];
57
+ e[v(n)] = n;
58
+ }
59
+ return e;
60
+ }), g = async ({ prefill: e = !1 }) => {
61
+ let t = [];
62
+ if (Array.isArray(l.items.value))
63
+ t = l.items.value;
64
+ else if (typeof l.items.value == "function") {
65
+ const o = ++c.value;
66
+ try {
67
+ t = await l.items.value(
68
+ i.value,
69
+ e,
70
+ l.modelValue.value
71
+ ), o < c.value && (await le(() => o === c.value), t = d.value);
72
+ } catch (n) {
73
+ console.error(n);
74
+ }
75
+ c.value--;
76
+ }
77
+ d.value = t;
78
+ }, B = r(() => {
79
+ const e = {};
80
+ for (let t = 0; t < V.value.length; t++) {
81
+ const o = V.value[t], { valueHash: n } = o;
82
+ e[n] = o;
83
+ }
84
+ return {
85
+ get: (t) => e[v(t)]
86
+ };
87
+ }), f = r(() => [].concat(l.modelValue.value).reduce((e, t) => {
88
+ const o = B.value.get(t);
89
+ return o && e.push(o), e;
90
+ }, [])), C = (e) => q(B.value.get(e)), s = () => {
91
+ if (l.multiple) {
92
+ i.value = "";
93
+ return;
94
+ }
95
+ let e;
96
+ f.value && (e = _(f.value)), i.value = (e == null ? void 0 : e.text) || "";
97
+ }, K = () => {
98
+ const e = i.value.trim(), t = O(e);
99
+ j(t), s();
100
+ }, c = a(0), M = r(() => [].concat(l.modelValue.value).reduce(
101
+ (e, t) => (C(t) ? e.coherent.push(t) : e.incoherent.push(t), e),
102
+ { coherent: [], incoherent: [] }
103
+ )), A = r(() => l.multiple && !l.modelValue.value.length || !l.multiple && oe(l.modelValue.value) ? !0 : !M.value.incoherent.length), R = () => {
104
+ l.enforceCoherence && !A.value && (l.multiple ? u(M.value.coherent) : u(null));
105
+ }, p = a(!1), I = a(!1), m = async () => {
106
+ I.value = !0, await g({ prefill: !0 }), R(), s(), p.value = !0, I.value = !1;
107
+ };
108
+ Y(async () => {
109
+ l.prefill && (await m(), l.stash && y(...f.value));
110
+ });
111
+ let h;
112
+ const W = () => {
113
+ h && clearTimeout(h), h = setTimeout(async () => {
114
+ try {
115
+ await g({ prefill: !1 });
116
+ } catch (e) {
117
+ console.error(e);
118
+ }
119
+ }, l.queryDebounceTime);
120
+ };
121
+ Z(() => clearTimeout(h));
122
+ let x;
123
+ H(
124
+ () => l.modelValue.value,
125
+ () => {
126
+ A.value || (x && clearTimeout(x), x = setTimeout(async () => {
127
+ m();
128
+ }, l.modelValueDebounceTime));
129
+ }
130
+ );
131
+ let w;
132
+ const D = async (e, t) => {
133
+ v(t) !== v(e) && p.value && (w && clearTimeout(w), w = setTimeout(async () => {
134
+ await m();
135
+ }, l.depsDebounceTime));
136
+ };
137
+ return H(() => l.items.value, D), H(() => l.dependencies.value, D), {
138
+ addCurrentQueryToManualItems: K,
139
+ alignQueryToState: s,
140
+ getOptions: g,
141
+ hasPrefilled: p,
142
+ innerLoading: c,
143
+ isPrefilling: I,
144
+ manualItems: S,
145
+ options: V,
146
+ prefillItems: m,
147
+ query: i,
148
+ searchByQuery: W,
149
+ selectedOptions: f,
150
+ selectOption: z,
151
+ setStash: y,
152
+ unselectOption: G,
153
+ updateModelValue: u,
154
+ valueIsSelected: C,
155
+ internalItems: d
156
+ };
157
+ };
3
158
  export {
4
- t as hash
159
+ he as useOptions
5
160
  };
6
161
  //# sourceMappingURL=index206.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index206.js","sources":["../src/utilities/functions/hash.ts"],"sourcesContent":["import { hash as _h } from 'object-code';\n\nexport const hash = (value: any, prefix = 'bb') => {\n\treturn `${prefix}${_h(value)}`;\n};\n"],"names":["hash","value","prefix","_h"],"mappings":";AAEO,MAAMA,IAAO,CAACC,GAAYC,IAAS,SAClC,GAAGA,CAAM,GAAGC,EAAGF,CAAK,CAAC;"}
1
+ {"version":3,"file":"index206.js","sources":["../src/composables/useOptions.ts"],"sourcesContent":["import {\n\tcomputed,\n\tnextTick,\n\tonBeforeMount,\n\tonBeforeUnmount,\n\tref,\n\twatch,\n\ttype Ref,\n} from 'vue';\nimport type { Option as BaseOption } from '@/types/Option';\nimport { last } from '@/utilities/functions/last';\nimport { useArray } from './useArray';\nimport { uniqBy } from '@/utilities/functions/uniqBy';\nimport { useItemValue } from './useItemValue';\nimport { useItemText } from './useItemText';\nimport { hash } from '@/utilities/functions/hash';\nimport { isNotNil } from '@/utilities/functions/isNotNil';\nimport { waitFor } from '@/utilities/functions/waitFor';\nimport { isNil } from '@/utilities/functions/isNil';\n\ntype Options = {\n\tmultiple: boolean;\n\tstash: boolean;\n\titemText: string | ((item: any) => string) | undefined;\n\titemValue: string | ((item: any) => string) | undefined;\n\tmodelValue: Ref<any>;\n\tresetQueryOnOptionSelected: boolean;\n\temit: any;\n\titems: Ref<any>;\n\tenforceCoherence: boolean;\n\tprefill: boolean;\n\tmodelValueDebounceTime: number;\n\tdepsDebounceTime: number;\n\tdependencies: Ref<any[]>;\n\tqueryDebounceTime: number;\n\tdisabled: Ref<boolean>;\n};\n\nexport const useOptions = (params: Options) => {\n\tconst query = ref<string>('');\n\n\tconst lastEmittedValue = ref();\n\tconst updateModelValue = (value: any) => {\n\t\tlastEmittedValue.value = value;\n\t\tparams.emit('update:modelValue', value);\n\t};\n\n\tconst internalItems = ref<any[]>([]);\n\tconst {\n\t\tarray: innerStash,\n\t\tadd: addToStash,\n\t\tremove: removeFromStash,\n\t\tset: setStash,\n\t} = useArray<BaseOption>();\n\n\tconst {\n\t\tarray: manualItems,\n\t\tadd: addToManualItems,\n\t\tremove: removeFromManualItems,\n\t} = useArray<BaseOption>();\n\n\tconst { getItemText } = useItemText();\n\tconst { getItemValue } = useItemValue();\n\tconst createOption = (item: any): BaseOption => {\n\t\tconst disabled = !!(params.disabled.value || item.disabled);\n\t\tconst text = getItemText(item, params.itemText);\n\t\tconst value = getItemValue(item, params.itemValue);\n\n\t\t// Undefined is not supported\n\t\tif (value === undefined)\n\t\t\tthrow new Error(\n\t\t\t\t'The result of extracting \"value\" from option was undefined. Affected item is ' +\n\t\t\t\t\tJSON.stringify(item) +\n\t\t\t\t\t' please check itemValue property is correct.'\n\t\t\t);\n\t\tconst valueHash = hash(value);\n\t\tconst selected = false;\n\t\treturn {\n\t\t\titem,\n\t\t\ttext,\n\t\t\tvalue,\n\t\t\tvalueHash,\n\t\t\tdisabled,\n\t\t\tselected,\n\t\t};\n\t};\n\n\tconst setSelected = (o: BaseOption) => {\n\t\to.selected = isNotNil(modelValueIndexedByHash.value[o.valueHash]);\n\t\treturn o;\n\t};\n\tconst options = computed<BaseOption[]>(() => {\n\t\tconst base = ([] as BaseOption[]).concat(\n\t\t\tinternalItems.value.map((item) => {\n\t\t\t\treturn setSelected(createOption(item));\n\t\t\t}),\n\t\t\tmanualItems.value.map(setSelected),\n\t\t\tinnerStash.value.map(setSelected)\n\t\t);\n\t\treturn uniqBy(base, (o) => o.valueHash);\n\t});\n\n\tconst selectOption = (option: BaseOption) => {\n\t\tif (params.multiple) {\n\t\t\tupdateModelValue(params.modelValue.value.concat(option.value));\n\t\t\tif (params.stash) {\n\t\t\t\taddToStash(option);\n\t\t\t}\n\n\t\t\tif (params.resetQueryOnOptionSelected) {\n\t\t\t\talignQueryToState();\n\t\t\t}\n\t\t} else {\n\t\t\tif (params.stash) {\n\t\t\t\tsetStash(option);\n\t\t\t}\n\t\t\tupdateModelValue(option.value);\n\t\t\tnextTick(() => alignQueryToState());\n\t\t}\n\t};\n\tconst unselectOption = async (option: BaseOption) => {\n\t\tremoveFromManualItems((o) => o.valueHash !== option.valueHash);\n\t\tremoveFromStash((o) => o.valueHash !== option.valueHash);\n\t\tif (params.multiple) {\n\t\t\tconst copy = { ...modelValueIndexedByHash.value };\n\t\t\tdelete copy[option.valueHash];\n\t\t\tupdateModelValue(Object.values(copy));\n\t\t} else {\n\t\t\tupdateModelValue(null);\n\t\t\tawait nextTick();\n\t\t\talignQueryToState();\n\t\t}\n\t};\n\n\t/**\n\t * Indexes modelValue to a map of hash - value pairs so we can easily track which values are selected\n\t */\n\tconst modelValueIndexedByHash = computed(() => {\n\t\tconst map: Record<string, any> = {};\n\t\tconst arr = [].concat(params.modelValue.value);\n\t\tfor (let index = 0; index < arr.length; index++) {\n\t\t\tconst element = arr[index];\n\t\t\tmap[hash(element)] = element;\n\t\t}\n\t\treturn map;\n\t});\n\n\tconst getOptions = async ({ prefill = false }) => {\n\t\tlet items: any[] = [];\n\t\tif (Array.isArray(params.items.value)) {\n\t\t\titems = params.items.value;\n\t\t} else {\n\t\t\tif (typeof params.items.value === 'function') {\n\t\t\t\tconst order = ++innerLoading.value;\n\t\t\t\ttry {\n\t\t\t\t\titems = await params.items.value(\n\t\t\t\t\t\tquery.value,\n\t\t\t\t\t\tprefill,\n\t\t\t\t\t\tparams.modelValue.value\n\t\t\t\t\t);\n\t\t\t\t\t// If by the time this resolves another call has already been made discard this result\n\t\t\t\t\tif (order < innerLoading.value) {\n\t\t\t\t\t\tawait waitFor(() => order === innerLoading.value);\n\t\t\t\t\t\titems = internalItems.value;\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t\tinnerLoading.value--;\n\t\t\t}\n\t\t}\n\t\tinternalItems.value = items as any;\n\t};\n\n\t/**\n\t * Indexes options by their hash so they can be retrieved\n\t */\n\tconst optionsIndexedByHash = computed(() => {\n\t\tconst map: Record<string, BaseOption> = {};\n\t\tfor (let index = 0; index < options.value.length; index++) {\n\t\t\tconst element = options.value[index];\n\t\t\tconst { valueHash } = element;\n\t\t\tmap[valueHash] = element;\n\t\t}\n\t\treturn {\n\t\t\tget: (value: any) => {\n\t\t\t\treturn map[hash(value)];\n\t\t\t},\n\t\t};\n\t});\n\n\t/**\n\t * For every item in modelValue find the linked option if it exists.\n\t * This is used to display chips.\n\t */\n\tconst selectedOptions = computed(() => {\n\t\treturn [].concat(params.modelValue.value).reduce((acc, h) => {\n\t\t\tconst found = optionsIndexedByHash.value.get(h);\n\t\t\tif (found) {\n\t\t\t\tacc.push(found);\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] as BaseOption[]);\n\t});\n\n\tconst valueIsSelected = (value: any) =>\n\t\tisNotNil(optionsIndexedByHash.value.get(value));\n\n\tconst alignQueryToState = () => {\n\t\tif (params.multiple) {\n\t\t\tquery.value = '';\n\t\t\treturn;\n\t\t}\n\t\tlet option: BaseOption | undefined;\n\t\tif (selectedOptions.value) {\n\t\t\toption = last(selectedOptions.value);\n\t\t}\n\t\tquery.value = option?.text || '';\n\t};\n\n\t/**\n\t * Add an option to the manual items and then reset the query\n\t */\n\tconst addCurrentQueryToManualItems = () => {\n\t\tconst text = query.value.trim();\n\t\tconst option = createOption(text);\n\t\taddToManualItems(option);\n\t\talignQueryToState();\n\t};\n\n\t/**\n\t * Use a number accumulator because if the fn takes 5 seconds\n\t * and after 2 seconds another search is run\n\t * When the first returns the second is still out for 2 seconds\n\t * and we want to track them both.\n\t * Debounce will not be enough.\n\t */\n\tconst innerLoading = ref(0);\n\n\t/**\n\t * Coherent values are values that have an option they can be linked to.\n\t * Divide coherent and incoherent values.\n\t */\n\n\tconst coherenceStatus = computed(() => {\n\t\treturn [].concat(params.modelValue.value).reduce(\n\t\t\t(acc, curr) => {\n\t\t\t\tif (valueIsSelected(curr)) {\n\t\t\t\t\tacc.coherent.push(curr);\n\t\t\t\t} else {\n\t\t\t\t\tacc.incoherent.push(curr);\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ coherent: [], incoherent: [] }\n\t\t);\n\t});\n\n\t/**\n\t * Model value is considered coherent when:\n\t * - multiple mode is empty\n\t * - single mode is null\n\t */\n\tconst modelValueIsCoherent = computed(() => {\n\t\tif (params.multiple && !params.modelValue.value.length) return true;\n\t\telse if (!params.multiple && isNil(params.modelValue.value)) return true;\n\t\treturn !coherenceStatus.value.incoherent.length;\n\t});\n\n\t/**\n\t * Realign selection state to the passed settings.\n\t * If modelValue has any value that is not coherent while\n\t * coherence is enforced the value should be removed\n\t */\n\tconst alignToCoherenceSettings = () => {\n\t\tif (params.enforceCoherence && !modelValueIsCoherent.value) {\n\t\t\tif (!params.multiple) updateModelValue(null);\n\t\t\telse updateModelValue(coherenceStatus.value.coherent);\n\t\t}\n\t};\n\n\t/**\n\t * Prefilling is the phase where the component understands it needs\n\t * to update its inner items due to a change in state, whether dependencies have changed, items or modelValue have changed.\n\t * It can be intended as the component aligning itself to what state is passed to it.\n\t */\n\tconst hasPrefilled = ref(false);\n\tconst isPrefilling = ref(false);\n\tconst prefillItems = async () => {\n\t\tisPrefilling.value = true;\n\t\tawait getOptions({ prefill: true });\n\t\talignToCoherenceSettings();\n\t\talignQueryToState();\n\t\thasPrefilled.value = true;\n\t\tisPrefilling.value = false;\n\t};\n\n\tonBeforeMount(async () => {\n\t\tif (params.prefill) {\n\t\t\tawait prefillItems();\n\t\t\tif (params.stash) {\n\t\t\t\tsetStash(...selectedOptions.value);\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Triggered on input when items is a function.\n\t */\n\n\tlet timeout: ReturnType<typeof setTimeout>;\n\tconst searchByQuery = () => {\n\t\tif (timeout) clearTimeout(timeout);\n\t\ttimeout = setTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tawait getOptions({ prefill: false });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t}, params.queryDebounceTime);\n\t};\n\tonBeforeUnmount(() => clearTimeout(timeout));\n\n\t/**\n\t * When modelValue changes split behavior for single and multiple selection:\n\t */\n\tlet modelValueTimeout: ReturnType<typeof setTimeout>;\n\twatch(\n\t\t() => params.modelValue.value,\n\t\t() => {\n\t\t\tif (modelValueIsCoherent.value) return;\n\t\t\tif (modelValueTimeout) clearTimeout(modelValueTimeout);\n\t\t\tmodelValueTimeout = setTimeout(async () => {\n\t\t\t\tprefillItems();\n\t\t\t}, params.modelValueDebounceTime);\n\t\t}\n\t);\n\n\t/**\n\t * START DEPENDENCY HANDLING\n\t * Explicit dependencies (props.dependencies) and implicit dependencies (props.items)\n\t * need to trigger a pipeline of realignment whenever they change\n\t */\n\tlet depsTimeout: ReturnType<typeof setTimeout>;\n\n\tconst handleDependencyChange = async (current: any, previous: any) => {\n\t\t// Circumvent arrays defined in the template by the parent triggering the watcher\n\t\tif (hash(previous) === hash(current)) return;\n\t\t// Do not track until prefill completes\n\t\tif (!hasPrefilled.value) return;\n\t\tif (depsTimeout) clearTimeout(depsTimeout);\n\t\tdepsTimeout = setTimeout(async () => {\n\t\t\tawait prefillItems();\n\t\t}, params.depsDebounceTime);\n\t};\n\n\t/**\n\t * This is triggered to refresh static items whenever the passed array changes.\n\t * If the parent defines an array in the template this is triggered\n\t * at every render so we take counter measures\n\t * Even if the entire array changes all the previously selected values are still in the stash.\n\t */\n\twatch(() => params.items.value, handleDependencyChange);\n\n\t/**\n\t * When dependencies change\n\t * If the input has not been prefilled yet just return\n\t * Check dependencies are the same by value and not reference\n\t * Otherwise we search again for options as they might be different base on dependencies.\n\t * If coherence is enforced we set the state accordingly\n\t */\n\twatch(() => params.dependencies.value, handleDependencyChange);\n\n\t/**\n\t * END DEPENDENCIES HANDLING\n\t */\n\n\treturn {\n\t\taddCurrentQueryToManualItems,\n\t\talignQueryToState,\n\t\tgetOptions,\n\t\thasPrefilled,\n\t\tinnerLoading,\n\t\tisPrefilling,\n\t\tmanualItems,\n\t\toptions,\n\t\tprefillItems,\n\t\tquery,\n\t\tsearchByQuery,\n\t\tselectedOptions,\n\t\tselectOption,\n\t\tsetStash,\n\t\tunselectOption,\n\t\tupdateModelValue,\n\t\tvalueIsSelected,\n\t\tinternalItems,\n\t};\n};\n"],"names":["useOptions","params","query","ref","lastEmittedValue","updateModelValue","value","internalItems","innerStash","addToStash","removeFromStash","setStash","useArray","manualItems","addToManualItems","removeFromManualItems","getItemText","useItemText","getItemValue","useItemValue","createOption","item","disabled","text","valueHash","hash","setSelected","o","isNotNil","modelValueIndexedByHash","options","computed","base","uniqBy","selectOption","option","alignQueryToState","nextTick","unselectOption","copy","map","arr","index","element","getOptions","prefill","items","order","innerLoading","waitFor","error","optionsIndexedByHash","selectedOptions","acc","h","found","valueIsSelected","last","addCurrentQueryToManualItems","coherenceStatus","curr","modelValueIsCoherent","isNil","alignToCoherenceSettings","hasPrefilled","isPrefilling","prefillItems","onBeforeMount","timeout","searchByQuery","onBeforeUnmount","modelValueTimeout","watch","depsTimeout","handleDependencyChange","current","previous"],"mappings":"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"}
package/dist/index207.js CHANGED
@@ -1,5 +1,87 @@
1
- const e = (t) => t[t.length - 1];
1
+ import { defineComponent as b, openBlock as n, createElementBlock as s, normalizeClass as r, createElementVNode as l, renderSlot as t, createTextVNode as o, toDisplayString as d, createCommentVNode as h, Fragment as c, renderList as m } from "vue";
2
+ const p = { class: "bb-cr-container__container" }, u = {
3
+ key: 0,
4
+ class: "bb-cr-container__loading-container"
5
+ }, g = {
6
+ key: 1,
7
+ class: "bb-cr-container__no-data-container"
8
+ }, _ = /* @__PURE__ */ b({
9
+ __name: "OptionsContainer",
10
+ props: {
11
+ direction: {},
12
+ hasErrors: { type: Boolean },
13
+ hideLabel: { type: Boolean },
14
+ loadingText: {},
15
+ loading: { type: Boolean },
16
+ noDataText: {},
17
+ options: {}
18
+ },
19
+ setup(k) {
20
+ return (a, $) => (n(), s("span", {
21
+ ref: "container",
22
+ class: r(["bb-cr-container", {
23
+ "bb-cr-container--errors": a.hasErrors,
24
+ "bb-cr-container--horizontal": a.direction === "horizontal",
25
+ "bb-cr-container--vertical": a.direction === "vertical"
26
+ }])
27
+ }, [
28
+ l("span", p, [
29
+ t(a.$slots, "prepend"),
30
+ !a.options.length && a.loading ? (n(), s("span", u, [
31
+ t(a.$slots, "loading", {}, () => [
32
+ o(d(a.loadingText), 1)
33
+ ])
34
+ ])) : a.options.length ? h("", !0) : (n(), s("span", g, [
35
+ t(a.$slots, "no-data", {}, () => [
36
+ o(d(a.noDataText), 1)
37
+ ])
38
+ ])),
39
+ (n(!0), s(c, null, m(a.options, (e, i) => (n(), s(c, {
40
+ key: (e == null ? void 0 : e.id) || i
41
+ }, [
42
+ t(a.$slots, "option:prepend", {
43
+ id: e.valueHash,
44
+ checked: !!e.selected,
45
+ disabled: !!e.disabled,
46
+ item: e.item,
47
+ text: e.text
48
+ }),
49
+ l("label", {
50
+ class: r(["bb-cr-container-option", { "bb-base-radio-selected": e.selected }])
51
+ }, [
52
+ t(a.$slots, "input", {
53
+ index: i,
54
+ option: e
55
+ }),
56
+ l("span", {
57
+ class: r({
58
+ "bb-cr-container-option__text": !0,
59
+ "bb-cr-container-option__text--hidden": a.hideLabel
60
+ })
61
+ }, [
62
+ t(a.$slots, "label", {
63
+ checked: !!e.selected,
64
+ item: e.item,
65
+ text: e.text
66
+ }, () => [
67
+ o(d(e.text), 1)
68
+ ])
69
+ ], 2)
70
+ ], 2),
71
+ t(a.$slots, "option:append", {
72
+ id: e.valueHash,
73
+ checked: !!e.selected,
74
+ disabled: !!e.disabled,
75
+ item: e.item,
76
+ text: e.text
77
+ })
78
+ ], 64))), 128)),
79
+ t(a.$slots, "append")
80
+ ])
81
+ ], 2));
82
+ }
83
+ });
2
84
  export {
3
- e as last
85
+ _ as default
4
86
  };
5
87
  //# sourceMappingURL=index207.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index207.js","sources":["../src/utilities/functions/last.ts"],"sourcesContent":["/** Takes an array and returns the last element of it */\nexport const last = <T>(arr: T[]): T | undefined => arr[arr.length - 1];\n"],"names":["last","arr"],"mappings":"AACO,MAAMA,IAAO,CAAIC,MAA4BA,EAAIA,EAAI,SAAS,CAAC;"}
1
+ {"version":3,"file":"index207.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index209.js CHANGED
@@ -1,252 +1,6 @@
1
- import { defineComponent as de, ref as A, computed as _, watch as le, openBlock as c, createElementBlock as u, normalizeClass as k, withKeys as f, withModifiers as p, createVNode as ce, withCtx as ue, createElementVNode as M, Fragment as O, renderList as S, toDisplayString as C, renderSlot as L, nextTick as fe } from "vue";
2
- import { chunk as pe } from "./index293.js";
3
- import { identity as be } from "./index216.js";
4
- import { isNotNil as me } from "./index131.js";
5
- import { last as ge } from "./index207.js";
6
- import { sort as T } from "./index294.js";
7
- import b from "./index200.js";
8
- import he from "./index212.js";
9
- const ye = ["onKeydown"], _e = { class: "bb-base-date-picker__header-container" }, ke = ["abbr"], Oe = ["id", "disabled", "tabindex"], Ce = /* @__PURE__ */ de({
10
- __name: "BaseDatePickerInputDaySelector",
11
- props: {
12
- cursor: {},
13
- current: { type: Boolean },
14
- disabled: { type: Boolean },
15
- firstDayOfWeek: {},
16
- modelValue: {},
17
- max: {},
18
- min: {},
19
- selectable: { type: Function },
20
- range: { type: Boolean },
21
- multiple: { type: Boolean },
22
- readonly: { type: Boolean }
23
- },
24
- emits: ["update:modelValue", "update:cursor"],
25
- setup(E, { emit: N }) {
26
- const a = E, s = N, g = A(null), x = b().startOf("day"), m = _(() => {
27
- let e = 1 / 0, r = -1 / 0, o = {};
28
- return a.modelValue && [].concat(a.modelValue).filter(be).map((i) => b(i).startOf("day")).map((i) => i.valueOf()).forEach((i, h) => {
29
- i < e && (e = i), i > r && (r = i), o[i] = h;
30
- }), {
31
- min: e,
32
- max: r,
33
- index: (t) => o[t.valueOf()],
34
- selected: (t) => me(o[t.valueOf()]),
35
- isFirstOfRange: (t) => t.valueOf() === e,
36
- isLastOfRange: (t) => t.valueOf() === r,
37
- isBetween: (t) => t.valueOf() > e && t.valueOf() < r
38
- };
39
- }), R = _(() => new Array(7).fill("").map((e, r) => b().day((r + a.firstDayOfWeek) % 7)).map((e) => ({
40
- accessibleLabel: e.format("dddd"),
41
- label: e.format("dd").slice(0, 1).toUpperCase(),
42
- id: e.toISOString(),
43
- original: e
44
- }))), v = _(() => {
45
- const e = a.cursor.year().toString(), r = a.cursor.month().toString();
46
- let t = a.cursor.clone().startOf("month").clone().startOf("week"), h = a.cursor.clone().endOf("month").clone().endOf("week"), Y = b(a.cursor).startOf("day"), D = [];
47
- for (let n = t; n.isBefore(h); n = n.add(1, "day"))
48
- D.push(n.clone());
49
- const Z = D.map((n) => {
50
- const y = n.toISOString(), ee = n.week().toString();
51
- let te = m.value.selected(n);
52
- const B = a.range && m.value.isFirstOfRange(n), I = a.range && m.value.isLastOfRange(n), re = a.range && !B && !I && m.value.isBetween(n), ae = n.month().toString() === r && n.year().toString() === e, oe = n.isSame(x), ne = n.isSame(Y), se = d(n), ie = n.get("D").toString();
53
- return {
54
- buttonId: "date_" + y,
55
- current: ne,
56
- disabled: se,
57
- first: B,
58
- highlighted: ae,
59
- id: y,
60
- label: ie,
61
- last: I,
62
- middle: re,
63
- original: n,
64
- selected: te,
65
- slotName: y,
66
- today: oe,
67
- week: ee
68
- };
69
- });
70
- return pe(Z, 7);
71
- }), d = (e) => {
72
- let r = !0;
73
- return a.min && r && (r = e.isSameOrAfter(b(a.min).startOf("day"))), a.max && r && (r = e.isSameOrBefore(b(a.max).startOf("day"))), typeof a.selectable == "function" && r && (r = a.selectable(e.toDate())), !r;
74
- }, w = A("left"), K = (e, r) => {
75
- e && r && (w.value = e.isBefore(r) ? "left" : "right");
76
- };
77
- le(
78
- () => a.cursor,
79
- (e, r) => {
80
- K(e, r);
81
- }
82
- );
83
- const V = (e) => s("update:cursor", e), l = async () => {
84
- if (!g.value) return;
85
- await fe();
86
- const e = ge([
87
- ...g.value.querySelectorAll(
88
- ".bb-base-date-picker__date--current button"
89
- )
90
- ]);
91
- e instanceof HTMLElement && e.focus();
92
- }, F = (e) => {
93
- if (!a.readonly && e.target instanceof HTMLButtonElement) {
94
- const [, r] = e.target.id.split("_"), o = b(r);
95
- if (a.cursor.month() !== o.month()) {
96
- V(o);
97
- return;
98
- }
99
- const t = v.value.flat().find((i) => i.id === r);
100
- if (t.disabled) return;
101
- V(o), H(t);
102
- }
103
- }, H = (e) => {
104
- a.range ? P(e) : a.multiple ? U(e) : W(e);
105
- }, P = (e) => {
106
- if (!Array.isArray(a.modelValue)) return;
107
- const r = e.original.toISOString();
108
- if (a.modelValue.length !== 1) s("update:modelValue", [r]);
109
- else {
110
- const o = T([a.modelValue[0], e.original.toISOString()]);
111
- s("update:modelValue", o);
112
- }
113
- }, U = (e) => {
114
- if (Array.isArray(a.modelValue))
115
- if (e.selected) {
116
- const r = e.original.toISOString(), o = a.modelValue.filter((t) => t !== r);
117
- s("update:modelValue", o);
118
- } else {
119
- const r = T([...a.modelValue, e.original.toISOString()]);
120
- s("update:modelValue", r);
121
- }
122
- }, W = (e) => {
123
- e.selected ? s("update:modelValue", null) : s("update:modelValue", e.original.toISOString());
124
- }, $ = () => {
125
- const e = a.cursor.clone().add(1, "day");
126
- d(e) || (s("update:cursor", e), l());
127
- }, j = () => {
128
- const e = a.cursor.clone().subtract(1, "day");
129
- d(e) || (s("update:cursor", e), l());
130
- }, q = () => {
131
- const e = a.cursor.clone().subtract(1, "week");
132
- d(e) || (s("update:cursor", e), l());
133
- }, z = () => {
134
- const e = a.cursor.clone().add(1, "week");
135
- d(e) || (s("update:cursor", e), l());
136
- }, G = () => {
137
- const e = a.cursor.clone().endOf("week");
138
- d(e) || (s("update:cursor", e), l());
139
- }, J = () => {
140
- const e = a.cursor.clone().startOf("week");
141
- d(e) || (s("update:cursor", e), l());
142
- }, Q = (e) => {
143
- if (e.shiftKey) {
144
- const r = a.cursor.clone().subtract(1, "year");
145
- if (d(r)) return;
146
- s("update:cursor", r);
147
- } else {
148
- const r = a.cursor.clone().subtract(1, "month");
149
- if (d(r)) return;
150
- s("update:cursor", r);
151
- }
152
- l();
153
- }, X = (e) => {
154
- if (e.shiftKey) {
155
- const r = a.cursor.clone().add(1, "year");
156
- if (d(r)) return;
157
- s("update:cursor", r);
158
- } else {
159
- const r = a.cursor.clone().add(1, "month");
160
- if (d(r)) return;
161
- s("update:cursor", r);
162
- }
163
- l();
164
- };
165
- return (e, r) => (c(), u("div", {
166
- ref_key: "calendar",
167
- ref: g,
168
- class: k(["bb-base-date-picker__days-selector", { "bb-base-date-picker__days-selector--hidden": !e.current }]),
169
- onKeydown: [
170
- f(p(z, ["prevent"]), ["down"]),
171
- f(p(G, ["prevent"]), ["end"]),
172
- f(p(J, ["prevent"]), ["home"]),
173
- f(p(j, ["prevent"]), ["left"]),
174
- f(p(X, ["prevent"]), ["page-down"]),
175
- f(p(Q, ["prevent"]), ["page-up"]),
176
- f(p($, ["prevent"]), ["right"]),
177
- f(p(q, ["prevent"]), ["up"])
178
- ]
179
- }, [
180
- ce(he, {
181
- direction: w.value,
182
- gap: 30
183
- }, {
184
- default: ue(() => [
185
- (c(), u("div", {
186
- key: e.cursor.month().toString(),
187
- class: "bb-base-date-picker__month"
188
- }, [
189
- M("div", _e, [
190
- (c(!0), u(O, null, S(R.value, (o) => (c(), u("div", {
191
- key: o.id,
192
- abbr: o.accessibleLabel,
193
- class: "bb-base-date-picker__header-cell"
194
- }, C(o.label), 9, ke))), 128))
195
- ]),
196
- (c(!0), u(O, null, S(v.value, (o) => (c(), u("div", {
197
- key: o[0].id,
198
- class: "bb-base-date-picker__week"
199
- }, [
200
- (c(!0), u(O, null, S(o, (t) => (c(), u("div", {
201
- key: t.id,
202
- class: k({
203
- "bb-base-date-picker__date--current": t.current,
204
- "bb-base-date-picker__date--disabled": e.disabled || t.disabled,
205
- "bb-base-date-picker__date--first": t.first,
206
- "bb-base-date-picker__date--highlighted": t.highlighted,
207
- "bb-base-date-picker__date--last": t.last,
208
- "bb-base-date-picker__date--middle": t.middle,
209
- "bb-base-date-picker__date--selected": t.selected,
210
- "bb-base-date-picker__date--today": t.today,
211
- "bb-base-date-picker__date": !0
212
- })
213
- }, [
214
- M("button", {
215
- id: t.buttonId,
216
- class: k("bb-base-date-picker__date-button"),
217
- disabled: e.disabled || t.disabled,
218
- tabindex: Number(t.current) - 1,
219
- type: "button",
220
- onClick: F
221
- }, C(t.label), 9, Oe),
222
- L(e.$slots, "day", {
223
- first: t.first,
224
- highlighted: t.highlighted,
225
- item: t.original,
226
- label: t.label,
227
- last: t.last,
228
- middle: t.middle,
229
- selected: t.selected
230
- }),
231
- L(e.$slots, t.slotName, {
232
- first: t.first,
233
- highlighted: t.highlighted,
234
- item: t.original,
235
- label: t.label,
236
- last: t.last,
237
- middle: t.middle,
238
- selected: t.selected
239
- })
240
- ], 2))), 128))
241
- ]))), 128))
242
- ]))
243
- ]),
244
- _: 3
245
- }, 8, ["direction"])
246
- ], 42, ye));
247
- }
248
- });
1
+ import t from "./index263.js";
2
+ const r = t;
249
3
  export {
250
- Ce as default
4
+ r as throttle
251
5
  };
252
6
  //# sourceMappingURL=index209.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index209.js","sources":["../src/components/BaseDatePicker/BaseDatePickerInputDaySelector.vue"],"sourcesContent":["<template>\n\t<div\n\t\tref=\"calendar\"\n\t\tclass=\"bb-base-date-picker__days-selector\"\n\t\t:class=\"{ 'bb-base-date-picker__days-selector--hidden': !current }\"\n\t\t@keydown.prevent.down=\"onArrowDown\"\n\t\t@keydown.prevent.end=\"onEnd\"\n\t\t@keydown.prevent.home=\"onHome\"\n\t\t@keydown.prevent.left=\"onArrowLeft\"\n\t\t@keydown.prevent.page-down=\"onPageDown\"\n\t\t@keydown.prevent.page-up=\"onPageUp\"\n\t\t@keydown.prevent.right=\"onArrowRight\"\n\t\t@keydown.prevent.up=\"onArrowUp\"\n\t>\n\t\t<SlideTransition :direction=\"direction\" :gap=\"30\">\n\t\t\t<div :key=\"cursor.month().toString()\" class=\"bb-base-date-picker__month\">\n\t\t\t\t<div class=\"bb-base-date-picker__header-container\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"header in mappedHeaders\"\n\t\t\t\t\t\t:key=\"header.id\"\n\t\t\t\t\t\t:abbr=\"header.accessibleLabel\"\n\t\t\t\t\t\tclass=\"bb-base-date-picker__header-cell\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ header.label }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"week in dates\"\n\t\t\t\t\t:key=\"week[0].id\"\n\t\t\t\t\tclass=\"bb-base-date-picker__week\"\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"cell in week\"\n\t\t\t\t\t\t:key=\"cell.id\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'bb-base-date-picker__date--current': cell.current,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--disabled': disabled || cell.disabled,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--first': cell.first,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--highlighted': cell.highlighted,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--last': cell.last,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--middle': cell.middle,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--selected': cell.selected,\n\t\t\t\t\t\t\t'bb-base-date-picker__date--today': cell.today,\n\t\t\t\t\t\t\t'bb-base-date-picker__date': true,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t:id=\"cell.buttonId\"\n\t\t\t\t\t\t\t:class=\"'bb-base-date-picker__date-button'\"\n\t\t\t\t\t\t\t:disabled=\"disabled || cell.disabled\"\n\t\t\t\t\t\t\t:tabindex=\"Number(cell.current) - 1\"\n\t\t\t\t\t\t\t:type=\"'button'\"\n\t\t\t\t\t\t\t@click=\"onButtonClick\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ cell.label }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t:first=\"cell.first\"\n\t\t\t\t\t\t\t:highlighted=\"cell.highlighted\"\n\t\t\t\t\t\t\t:item=\"cell.original\"\n\t\t\t\t\t\t\t:label=\"cell.label\"\n\t\t\t\t\t\t\t:last=\"cell.last\"\n\t\t\t\t\t\t\t:middle=\"cell.middle\"\n\t\t\t\t\t\t\t:name=\"'day'\"\n\t\t\t\t\t\t\t:selected=\"cell.selected\"\n\t\t\t\t\t\t></slot>\n\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t:first=\"cell.first\"\n\t\t\t\t\t\t\t:highlighted=\"cell.highlighted\"\n\t\t\t\t\t\t\t:item=\"cell.original\"\n\t\t\t\t\t\t\t:label=\"cell.label\"\n\t\t\t\t\t\t\t:last=\"cell.last\"\n\t\t\t\t\t\t\t:middle=\"cell.middle\"\n\t\t\t\t\t\t\t:name=\"cell.slotName\"\n\t\t\t\t\t\t\t:selected=\"cell.selected\"\n\t\t\t\t\t\t></slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SlideTransition>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { chunk } from '@/utilities/functions/chunk';\nimport { identity } from '@/utilities/functions/identity';\nimport { isNotNil } from '@/utilities/functions/isNotNil';\nimport { last } from '@/utilities/functions/last';\nimport { nextTick } from 'vue';\nimport { ref } from 'vue';\nimport { sort } from '@/utilities/functions/sort';\nimport { watch } from 'vue';\nimport dayjs from 'dayjs';\nimport SlideTransition from '../Transitions/Slide.vue';\nimport type { Dayjs } from 'dayjs';\n\ntype Props = {\n\tcursor: Dayjs;\n\tcurrent: boolean;\n\tdisabled: boolean;\n\tfirstDayOfWeek: number;\n\t/**\n\t * Used by v-model. Can be null, a single string, or an array of strings based on whether a range or single date is needed\n\t */\n\tmodelValue: string | string[] | null;\n\tmax?: Date | string | number;\n\tmin?: Date | string | number;\n\tselectable?: (date: Date) => boolean;\n\trange?: boolean;\n\tmultiple?: boolean;\n\treadonly?: boolean;\n};\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n\t(event: 'update:modelValue', value: any): void;\n\t(event: 'update:cursor', value: Dayjs): void;\n}>();\n\nconst calendar = ref<HTMLElement | null>(null);\n\nconst today = dayjs().startOf('day');\n\nconst modelValueMetadata = computed(() => {\n\tlet min = Infinity;\n\tlet max = -Infinity;\n\tlet selected: { [key: number]: number } = {};\n\n\tif (props.modelValue) {\n\t\tconst arr = ([] as (string | Date)[])\n\t\t\t.concat(props.modelValue)\n\t\t\t.filter(identity)\n\t\t\t.map((value) => dayjs(value).startOf('day'))\n\t\t\t.map((date) => date.valueOf());\n\t\tarr.forEach((item, index) => {\n\t\t\tif (item < min) min = item;\n\t\t\tif (item > max) max = item;\n\t\t\tselected[item] = index;\n\t\t});\n\t}\n\treturn {\n\t\tmin,\n\t\tmax,\n\t\tindex: (date: Dayjs) => selected[date.valueOf()],\n\t\tselected: (date: Dayjs) => isNotNil(selected[date.valueOf()]),\n\t\tisFirstOfRange: (date: Dayjs) => date.valueOf() === min,\n\t\tisLastOfRange: (date: Dayjs) => date.valueOf() === max,\n\t\tisBetween: (date: Dayjs) => date.valueOf() > min && date.valueOf() < max,\n\t};\n});\n\nconst mappedHeaders = computed(() => {\n\treturn (\n\t\tnew Array(7)\n\t\t\t.fill('')\n\t\t\t// Sort days based on first day of the week\n\t\t\t.map((_, index) => dayjs().day((index + props.firstDayOfWeek) % 7))\n\t\t\t.map((day) => {\n\t\t\t\treturn {\n\t\t\t\t\taccessibleLabel: day.format('dddd'),\n\t\t\t\t\tlabel: day.format('dd').slice(0, 1).toUpperCase(),\n\t\t\t\t\tid: day.toISOString(),\n\t\t\t\t\toriginal: day,\n\t\t\t\t};\n\t\t\t})\n\t);\n});\n\ntype Cell = {\n\tbuttonId: string;\n\tcurrent: boolean;\n\tdisabled: boolean;\n\tfirst: boolean;\n\thighlighted: boolean;\n\tid: string;\n\tlabel: string;\n\tlast: boolean;\n\tmiddle: boolean;\n\toriginal: Dayjs;\n\tselected: boolean;\n\tslotName: string;\n\tweek: string;\n\ttoday: boolean;\n};\n\nconst dates = computed<Cell[][]>(() => {\n\tconst year = props.cursor.year().toString();\n\tconst month = props.cursor.month().toString();\n\tlet startOfMonth = props.cursor.clone().startOf('month');\n\tlet firstValueToDisplay = startOfMonth.clone().startOf('week');\n\tlet endOfMonth = props.cursor.clone().endOf('month');\n\tlet lastValueToDisplay = endOfMonth.clone().endOf('week');\n\tlet currentAtMidnight = dayjs(props.cursor).startOf('day');\n\tlet datesInPage: Dayjs[] = [];\n\tfor (\n\t\tlet index = firstValueToDisplay;\n\t\tindex.isBefore(lastValueToDisplay);\n\t\tindex = index.add(1, 'day')\n\t) {\n\t\tdatesInPage.push(index.clone());\n\t}\n\tconst mapped = datesInPage.map<Cell>((date) => {\n\t\tconst id = date.toISOString();\n\t\tconst week = date.week().toString();\n\t\tlet selected = modelValueMetadata.value.selected(date);\n\n\t\tconst first = props.range && modelValueMetadata.value.isFirstOfRange(date);\n\t\tconst last = props.range && modelValueMetadata.value.isLastOfRange(date);\n\t\tconst middle =\n\t\t\tprops.range &&\n\t\t\t!first &&\n\t\t\t!last &&\n\t\t\tmodelValueMetadata.value.isBetween(date);\n\t\tconst highlighted =\n\t\t\tdate.month().toString() === month && date.year().toString() === year;\n\t\tconst isToday = date.isSame(today);\n\t\tconst current = date.isSame(currentAtMidnight);\n\t\tconst disabled = isDateDisabled(date);\n\t\tconst label = date.get('D').toString();\n\t\tconst buttonId = 'date_' + id;\n\n\t\treturn {\n\t\t\tbuttonId,\n\t\t\tcurrent,\n\t\t\tdisabled,\n\t\t\tfirst,\n\t\t\thighlighted,\n\t\t\tid,\n\t\t\tlabel,\n\t\t\tlast,\n\t\t\tmiddle,\n\t\t\toriginal: date,\n\t\t\tselected,\n\t\t\tslotName: id,\n\t\t\ttoday: isToday,\n\t\t\tweek,\n\t\t};\n\t});\n\treturn chunk(mapped, 7);\n});\n\nconst isDateDisabled = (date: Dayjs) => {\n\tlet passing = true;\n\tif (props.min) {\n\t\tpassing &&= date.isSameOrAfter(dayjs(props.min).startOf('day'));\n\t}\n\tif (props.max) {\n\t\tpassing &&= date.isSameOrBefore(dayjs(props.max).startOf('day'));\n\t}\n\tif (typeof props.selectable === 'function') {\n\t\tpassing &&= props.selectable(date.toDate());\n\t}\n\treturn !passing;\n};\n\nconst direction = ref<'left' | 'right'>('left');\nconst setSlideDirection = (\n\tcurrent: Dayjs | undefined,\n\tprevious: Dayjs | undefined\n) => {\n\tif (current && previous) {\n\t\tdirection.value = current.isBefore(previous) ? 'left' : 'right';\n\t}\n};\n\nwatch(\n\t() => props.cursor,\n\t(current, previous) => {\n\t\tsetSlideDirection(current, previous);\n\t}\n);\n\nconst updateCursor = (date: Dayjs) => emit('update:cursor', date);\n\nconst focusOnCursor = async () => {\n\tif (!calendar.value) return;\n\tawait nextTick();\n\tconst el = last([\n\t\t...calendar.value.querySelectorAll(\n\t\t\t'.bb-base-date-picker__date--current button'\n\t\t),\n\t]);\n\tif (el instanceof HTMLElement) {\n\t\tel.focus();\n\t}\n};\n\nconst onButtonClick = (event: MouseEvent) => {\n\tif (props.readonly) return;\n\tif (event.target instanceof HTMLButtonElement) {\n\t\tconst [, id] = event.target.id.split('_');\n\t\tconst d = dayjs(id);\n\t\tif (props.cursor.month() !== d.month()) {\n\t\t\tupdateCursor(d);\n\t\t\treturn;\n\t\t}\n\t\tconst date = dates.value.flat().find((el) => el.id === id)!;\n\t\tif (date.disabled) return;\n\t\tupdateCursor(d);\n\t\tonDateSelected(date);\n\t}\n};\n\nconst onDateSelected = (date: Cell) => {\n\tif (props.range) onDateSelectedRange(date);\n\telse if (props.multiple) onDateSelectedMultiple(date);\n\telse onDateSelectedSingle(date);\n};\n\nconst onDateSelectedRange = (date: Cell) => {\n\tif (!Array.isArray(props.modelValue)) return;\n\tconst value = date.original.toISOString();\n\tif (props.modelValue.length !== 1) emit('update:modelValue', [value]);\n\telse {\n\t\tconst arr = sort([props.modelValue[0], date.original.toISOString()]);\n\t\temit('update:modelValue', arr);\n\t}\n};\nconst onDateSelectedMultiple = (date: Cell) => {\n\tif (!Array.isArray(props.modelValue)) return;\n\tif (date.selected) {\n\t\tconst asString = date.original.toISOString();\n\t\tconst valueToEmit = props.modelValue.filter((el) => el !== asString);\n\t\temit('update:modelValue', valueToEmit);\n\t} else {\n\t\tconst arr = sort([...props.modelValue, date.original.toISOString()]);\n\t\temit('update:modelValue', arr);\n\t}\n};\nconst onDateSelectedSingle = (date: Cell) => {\n\tif (date.selected) emit('update:modelValue', null);\n\telse emit('update:modelValue', date.original.toISOString());\n};\n\nconst onArrowRight = () => {\n\tconst date = props.cursor.clone().add(1, 'day');\n\tif (isDateDisabled(date)) return;\n\temit('update:cursor', date);\n\tfocusOnCursor();\n};\nconst onArrowLeft = () => {\n\tconst date = props.cursor.clone().subtract(1, 'day');\n\tif (isDateDisabled(date)) return;\n\temit('update:cursor', date);\n\tfocusOnCursor();\n};\nconst onArrowUp = () => {\n\tconst date = props.cursor.clone().subtract(1, 'week');\n\tif (isDateDisabled(date)) return;\n\temit('update:cursor', date);\n\tfocusOnCursor();\n};\nconst onArrowDown = () => {\n\tconst date = props.cursor.clone().add(1, 'week');\n\tif (isDateDisabled(date)) return;\n\temit('update:cursor', date);\n\tfocusOnCursor();\n};\nconst onEnd = () => {\n\tconst date = props.cursor.clone().endOf('week');\n\tif (isDateDisabled(date)) return;\n\temit('update:cursor', date);\n\tfocusOnCursor();\n};\nconst onHome = () => {\n\tconst date = props.cursor.clone().startOf('week');\n\tif (isDateDisabled(date)) return;\n\temit('update:cursor', date);\n\tfocusOnCursor();\n};\nconst onPageUp = (event: KeyboardEvent) => {\n\tif (event.shiftKey) {\n\t\tconst date = props.cursor.clone().subtract(1, 'year');\n\t\tif (isDateDisabled(date)) return;\n\t\temit('update:cursor', date);\n\t} else {\n\t\tconst date = props.cursor.clone().subtract(1, 'month');\n\t\tif (isDateDisabled(date)) return;\n\t\temit('update:cursor', date);\n\t}\n\tfocusOnCursor();\n};\nconst onPageDown = (event: KeyboardEvent) => {\n\tif (event.shiftKey) {\n\t\tconst date = props.cursor.clone().add(1, 'year');\n\t\tif (isDateDisabled(date)) return;\n\t\temit('update:cursor', date);\n\t} else {\n\t\tconst date = props.cursor.clone().add(1, 'month');\n\t\tif (isDateDisabled(date)) return;\n\t\temit('update:cursor', date);\n\t}\n\tfocusOnCursor();\n};\n</script>\n\n<style lang=\"postcss\"></style>\n"],"names":["props","__props","emit","__emit","calendar","ref","today","dayjs","modelValueMetadata","computed","min","max","selected","identity","value","date","item","index","isNotNil","mappedHeaders","_","day","dates","year","month","firstValueToDisplay","lastValueToDisplay","currentAtMidnight","datesInPage","mapped","id","week","first","last","middle","highlighted","isToday","current","disabled","isDateDisabled","label","chunk","passing","direction","setSlideDirection","previous","watch","updateCursor","focusOnCursor","nextTick","el","onButtonClick","event","d","onDateSelected","onDateSelectedRange","onDateSelectedMultiple","arr","sort","asString","valueToEmit","onDateSelectedSingle","onArrowRight","onArrowLeft","onArrowUp","onArrowDown","onEnd","onHome","onPageUp","onPageDown"],"mappings":"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"}
1
+ {"version":3,"file":"index209.js","sources":["../src/utilities/functions/throttle.ts"],"sourcesContent":["import t from 'lodash.throttle';\n\nexport const throttle = t;\n"],"names":["throttle"],"mappings":";AAEO,MAAMA,IAAW;"}