bitboss-ui 2.0.7 → 2.0.9
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.
- package/dist/index.js +139 -138
- package/dist/index.js.map +1 -1
- package/dist/index10.js +7 -78
- package/dist/index10.js.map +1 -1
- package/dist/{index100.js → index101.js} +3 -3
- package/dist/{index100.js.map → index101.js.map} +1 -1
- package/dist/{index102.js → index103.js} +3 -3
- package/dist/{index102.js.map → index103.js.map} +1 -1
- package/dist/{index104.js → index105.js} +8 -8
- package/dist/{index104.js.map → index105.js.map} +1 -1
- package/dist/{index106.js → index107.js} +9 -9
- package/dist/{index106.js.map → index107.js.map} +1 -1
- package/dist/{index108.js → index109.js} +3 -3
- package/dist/{index108.js.map → index109.js.map} +1 -1
- package/dist/index11.js +74 -35
- package/dist/index11.js.map +1 -1
- package/dist/{index110.js → index111.js} +3 -3
- package/dist/{index110.js.map → index111.js.map} +1 -1
- package/dist/{index112.js → index113.js} +3 -3
- package/dist/{index112.js.map → index113.js.map} +1 -1
- package/dist/{index114.js → index115.js} +3 -3
- package/dist/{index114.js.map → index115.js.map} +1 -1
- package/dist/{index116.js → index117.js} +8 -8
- package/dist/{index116.js.map → index117.js.map} +1 -1
- package/dist/{index118.js → index119.js} +2 -2
- package/dist/{index118.js.map → index119.js.map} +1 -1
- package/dist/index12.js +36 -189
- package/dist/index12.js.map +1 -1
- package/dist/index121.js +34 -38
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +38 -38
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +39 -42
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +43 -31
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +35 -2
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +2 -21
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +21 -2
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +2 -312
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +309 -21
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +189 -78
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +24 -2
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +2 -5
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +5 -9
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +8 -5
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +6 -3
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +1 -1
- package/dist/index136.js +1 -1
- package/dist/index137.js +1 -1
- package/dist/index138.js +1 -1
- package/dist/index139.js +1 -1
- package/dist/index14.js +85 -0
- package/dist/index14.js.map +1 -0
- package/dist/index140.js +1 -1
- package/dist/index141.js +1 -1
- package/dist/index142.js +1 -1
- package/dist/index143.js +1 -1
- package/dist/index144.js +1 -1
- package/dist/index145.js +1 -1
- package/dist/index146.js +1 -1
- package/dist/index147.js +1 -1
- package/dist/index148.js +1 -1
- package/dist/index149.js +1 -1
- package/dist/index150.js +1 -1
- package/dist/index151.js +1 -1
- package/dist/index152.js +1 -1
- package/dist/index153.js +1 -1
- package/dist/index154.js +1 -1
- package/dist/index155.js +1 -1
- package/dist/index156.js +1 -1
- package/dist/index157.js +1 -1
- package/dist/index158.js +1 -1
- package/dist/index159.js +1 -1
- package/dist/{index15.js → index16.js} +4 -4
- package/dist/{index15.js.map → index16.js.map} +1 -1
- package/dist/index160.js +2 -2
- package/dist/{index162.js → index161.js} +1 -1
- package/dist/index161.js.map +1 -0
- package/dist/index163.js +6 -0
- package/dist/index163.js.map +1 -0
- package/dist/index165.js +1 -1
- package/dist/index166.js +1 -1
- package/dist/index167.js +1 -1
- package/dist/index168.js +1 -1
- package/dist/index169.js +1 -1
- package/dist/index170.js +2 -2
- package/dist/index171.js +6 -0
- package/dist/index171.js.map +1 -0
- package/dist/index173.js +2 -3
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +1 -1
- package/dist/index175.js +1 -1
- package/dist/index176.js +1 -1
- package/dist/index177.js +1 -1
- package/dist/index178.js +1 -1
- package/dist/index179.js +1 -1
- package/dist/{index17.js → index18.js} +4 -4
- package/dist/{index17.js.map → index18.js.map} +1 -1
- package/dist/index180.js +1 -1
- package/dist/index181.js +1 -1
- package/dist/index182.js +1 -1
- package/dist/index183.js +1 -1
- package/dist/index184.js +1 -1
- package/dist/{index186.js → index185.js} +1 -1
- package/dist/index185.js.map +1 -0
- package/dist/index187.js +6 -0
- package/dist/index187.js.map +1 -0
- package/dist/index189.js +1 -1
- package/dist/index190.js +1 -1
- package/dist/index191.js +1 -1
- package/dist/index192.js +1 -1
- package/dist/index193.js +1 -1
- package/dist/index194.js +1 -1
- package/dist/index195.js +1 -1
- package/dist/index196.js +1 -1
- package/dist/index197.js +1 -1
- package/dist/index198.js +3 -81
- package/dist/index198.js.map +1 -1
- package/dist/{index19.js → index20.js} +19 -18
- package/dist/{index19.js.map → index20.js.map} +1 -1
- package/dist/index200.js +126 -2
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +5 -4
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +123 -2
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +19 -8
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +14 -124
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +16 -5
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +2 -123
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +2 -19
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +35 -16
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +172 -14
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +6 -2
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +44 -2
- package/dist/index211.js.map +1 -1
- package/dist/index213.js +12 -173
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +5 -6
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +369 -43
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +161 -0
- package/dist/index216.js.map +1 -0
- package/dist/index217.js +84 -13
- package/dist/index217.js.map +1 -1
- package/dist/index219.js +67 -355
- package/dist/index219.js.map +1 -1
- package/dist/{index21.js → index22.js} +21 -21
- package/dist/{index21.js.map → index22.js.map} +1 -1
- package/dist/index220.js +8 -19
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +3 -27
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +2 -3
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +4 -249
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +2 -52
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +3 -44
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +7 -5
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +19 -49
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +27 -3
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +3 -3
- package/dist/index229.js.map +1 -1
- package/dist/index230.js +249 -7
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +50 -156
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +38 -78
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +8 -0
- package/dist/index233.js.map +1 -0
- package/dist/index234.js +49 -2
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +2 -18
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +2 -106
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +21 -0
- package/dist/index237.js.map +1 -0
- package/dist/index238.js +53 -47
- package/dist/index238.js.map +1 -1
- package/dist/{index23.js → index24.js} +8 -8
- package/dist/{index23.js.map → index24.js.map} +1 -1
- package/dist/index240.js +100 -2
- package/dist/index240.js.map +1 -1
- package/dist/index242.js +9 -2
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +2 -3
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +3 -6
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +12 -16
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +8 -8
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +9 -23
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +17 -9
- package/dist/index248.js.map +1 -1
- package/dist/index257.js +1 -1
- package/dist/index258.js +1 -1
- package/dist/{index25.js → index26.js} +6 -6
- package/dist/{index25.js.map → index26.js.map} +1 -1
- package/dist/index263.js +224 -2
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +4 -2
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +9 -2
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +5 -1
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +16 -2
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +9 -2
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +23 -28
- package/dist/index269.js.map +1 -1
- package/dist/index270.js +199 -21
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +439 -0
- package/dist/index271.js.map +1 -0
- package/dist/index272.js +121 -218
- package/dist/index272.js.map +1 -1
- package/dist/index274.js +5 -200
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +2 -436
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +2 -127
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +2 -5
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +2 -2
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +2 -9
- package/dist/index279.js.map +1 -1
- package/dist/{index27.js → index28.js} +3 -3
- package/dist/{index27.js.map → index28.js.map} +1 -1
- package/dist/index280.js +2 -69
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +28 -3
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +22 -12
- package/dist/index282.js.map +1 -1
- package/dist/index284.js +2 -17
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +68 -2
- package/dist/index285.js.map +1 -1
- package/dist/index287.js +3 -211
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +211 -15
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +15 -4
- package/dist/index289.js.map +1 -1
- package/dist/index290.js +11 -4
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +34 -58
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +4 -35
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +4 -7
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +57 -17
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +2 -7
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +7 -2
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +6 -10
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +17 -45
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +50 -0
- package/dist/index299.js.map +1 -0
- package/dist/{index29.js → index30.js} +3 -3
- package/dist/{index29.js.map → index30.js.map} +1 -1
- package/dist/index301.js +416 -42
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +50 -0
- package/dist/index302.js.map +1 -0
- package/dist/{index31.js → index32.js} +4 -4
- package/dist/{index31.js.map → index32.js.map} +1 -1
- package/dist/{index33.js → index34.js} +5 -5
- package/dist/{index33.js.map → index34.js.map} +1 -1
- package/dist/{index35.js → index36.js} +23 -22
- package/dist/{index35.js.map → index36.js.map} +1 -1
- package/dist/{index37.js → index38.js} +7 -7
- package/dist/{index37.js.map → index38.js.map} +1 -1
- package/dist/{index39.js → index40.js} +3 -3
- package/dist/{index39.js.map → index40.js.map} +1 -1
- package/dist/{index41.js → index42.js} +4 -4
- package/dist/{index41.js.map → index42.js.map} +1 -1
- package/dist/{index43.js → index44.js} +12 -11
- package/dist/{index43.js.map → index44.js.map} +1 -1
- package/dist/{index45.js → index46.js} +4 -4
- package/dist/{index45.js.map → index46.js.map} +1 -1
- package/dist/{index47.js → index48.js} +3 -3
- package/dist/{index47.js.map → index48.js.map} +1 -1
- package/dist/index5.js +14 -40
- package/dist/index5.js.map +1 -1
- package/dist/{index49.js → index50.js} +4 -4
- package/dist/{index49.js.map → index50.js.map} +1 -1
- package/dist/{index51.js → index52.js} +3 -3
- package/dist/{index51.js.map → index52.js.map} +1 -1
- package/dist/{index53.js → index54.js} +3 -3
- package/dist/{index53.js.map → index54.js.map} +1 -1
- package/dist/{index55.js → index56.js} +3 -3
- package/dist/{index55.js.map → index56.js.map} +1 -1
- package/dist/{index57.js → index58.js} +2 -2
- package/dist/{index57.js.map → index58.js.map} +1 -1
- package/dist/index6.js +38 -76
- package/dist/index6.js.map +1 -1
- package/dist/{index59.js → index60.js} +14 -13
- package/dist/{index59.js.map → index60.js.map} +1 -1
- package/dist/{index61.js → index62.js} +3 -3
- package/dist/{index61.js.map → index62.js.map} +1 -1
- package/dist/{index63.js → index64.js} +3 -3
- package/dist/{index63.js.map → index64.js.map} +1 -1
- package/dist/{index65.js → index66.js} +5 -5
- package/dist/{index65.js.map → index66.js.map} +1 -1
- package/dist/{index67.js → index68.js} +3 -3
- package/dist/{index67.js.map → index68.js.map} +1 -1
- package/dist/index7.js +78 -62
- package/dist/index7.js.map +1 -1
- package/dist/{index69.js → index70.js} +2 -2
- package/dist/{index69.js.map → index70.js.map} +1 -1
- package/dist/{index71.js → index72.js} +9 -9
- package/dist/{index71.js.map → index72.js.map} +1 -1
- package/dist/{index73.js → index74.js} +3 -3
- package/dist/{index73.js.map → index74.js.map} +1 -1
- package/dist/{index75.js → index76.js} +5 -5
- package/dist/{index75.js.map → index76.js.map} +1 -1
- package/dist/index78.js +37 -120
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +130 -0
- package/dist/index79.js.map +1 -0
- package/dist/index8.js +60 -18
- package/dist/index8.js.map +1 -1
- package/dist/{index80.js → index81.js} +5 -5
- package/dist/{index80.js.map → index81.js.map} +1 -1
- package/dist/{index82.js → index83.js} +25 -24
- package/dist/{index82.js.map → index83.js.map} +1 -1
- package/dist/{index84.js → index85.js} +7 -7
- package/dist/{index84.js.map → index85.js.map} +1 -1
- package/dist/{index86.js → index87.js} +2 -2
- package/dist/{index86.js.map → index87.js.map} +1 -1
- package/dist/{index88.js → index89.js} +3 -3
- package/dist/{index88.js.map → index89.js.map} +1 -1
- package/dist/index9.js +19 -7
- package/dist/index9.js.map +1 -1
- package/dist/{index90.js → index91.js} +3 -3
- package/dist/{index90.js.map → index91.js.map} +1 -1
- package/dist/{index92.js → index93.js} +3 -3
- package/dist/{index92.js.map → index93.js.map} +1 -1
- package/dist/{index94.js → index95.js} +1 -1
- package/dist/index95.js.map +1 -0
- package/dist/{index96.js → index97.js} +3 -3
- package/dist/{index96.js.map → index97.js.map} +1 -1
- package/dist/{index98.js → index99.js} +3 -3
- package/dist/{index98.js.map → index99.js.map} +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/index120.js +0 -43
- package/dist/index120.js.map +0 -1
- package/dist/index162.js.map +0 -1
- package/dist/index164.js +0 -6
- package/dist/index164.js.map +0 -1
- package/dist/index172.js +0 -5
- package/dist/index172.js.map +0 -1
- package/dist/index186.js.map +0 -1
- package/dist/index188.js +0 -6
- package/dist/index188.js.map +0 -1
- package/dist/index212.js +0 -38
- package/dist/index212.js.map +0 -1
- package/dist/index218.js +0 -8
- package/dist/index218.js.map +0 -1
- package/dist/index241.js +0 -13
- package/dist/index241.js.map +0 -1
- package/dist/index283.js +0 -12
- package/dist/index283.js.map +0 -1
- package/dist/index300.js +0 -424
- package/dist/index300.js.map +0 -1
- package/dist/index4.js +0 -17
- package/dist/index4.js.map +0 -1
- package/dist/index77.js +0 -47
- package/dist/index77.js.map +0 -1
- package/dist/index94.js.map +0 -1
package/dist/index78.js
CHANGED
|
@@ -1,130 +1,47 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
/*
|
|
4
|
-
|
|
5
|
-
/* empty css */
|
|
6
|
-
const F = /* @__PURE__ */ w({
|
|
7
|
-
__name: "BbNumberInput",
|
|
1
|
+
import { defineComponent as h, ref as t, onMounted as m, onBeforeUnmount as p, openBlock as g, createBlock as b, resolveDynamicComponent as w, withCtx as _, renderSlot as I } from "vue";
|
|
2
|
+
import { throttle as c } from "./index225.js";
|
|
3
|
+
const M = /* @__PURE__ */ h({
|
|
4
|
+
__name: "BbIntersection",
|
|
8
5
|
props: {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
hasErrors: { type: Boolean },
|
|
16
|
-
hideLabel: { type: Boolean },
|
|
17
|
-
hint: {},
|
|
18
|
-
id: {},
|
|
19
|
-
label: {},
|
|
20
|
-
labelPosition: {},
|
|
21
|
-
loading: { type: Boolean },
|
|
22
|
-
max: {},
|
|
23
|
-
min: {},
|
|
24
|
-
modelValue: {},
|
|
25
|
-
name: {},
|
|
26
|
-
persistentHint: { type: Boolean },
|
|
27
|
-
placeholder: {},
|
|
28
|
-
"prepend:icon": {},
|
|
29
|
-
readonly: {},
|
|
30
|
-
required: { type: Boolean },
|
|
31
|
-
reverse: { type: Boolean },
|
|
32
|
-
step: {}
|
|
6
|
+
debounceTime: { default: 0 },
|
|
7
|
+
options: { default: () => ({
|
|
8
|
+
root: null,
|
|
9
|
+
threshold: [0, 0.2, 0.4, 0.6, 0.8, 1]
|
|
10
|
+
}) },
|
|
11
|
+
tag: { default: "div" }
|
|
33
12
|
},
|
|
34
|
-
emits: ["
|
|
35
|
-
setup(
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return c({
|
|
54
|
-
increase: () => {
|
|
55
|
-
var e;
|
|
56
|
-
(e = d.value) == null || e.increase();
|
|
57
|
-
},
|
|
58
|
-
decrease: () => {
|
|
59
|
-
var e;
|
|
60
|
-
(e = d.value) == null || e.decrease();
|
|
61
|
-
}
|
|
62
|
-
}), (e, L) => ($(), k(q, {
|
|
63
|
-
id: e.id,
|
|
64
|
-
class: "bb-number-input",
|
|
65
|
-
direction: e.direction,
|
|
66
|
-
errors: e.errors,
|
|
67
|
-
"has-errors": e.hasErrors,
|
|
68
|
-
"hide-label": e.hideLabel,
|
|
69
|
-
hint: e.hint,
|
|
70
|
-
label: e.label,
|
|
71
|
-
"label-position": e.labelPosition,
|
|
72
|
-
"model-value": e.modelValue,
|
|
73
|
-
name: e.name,
|
|
74
|
-
reverse: e.reverse,
|
|
75
|
-
"show-hint": h.value
|
|
13
|
+
emits: ["shown", "hidden", "intersected"],
|
|
14
|
+
setup(u, { emit: d }) {
|
|
15
|
+
const r = u, i = d, n = t(null), l = t(null), o = t(!1), s = t(!0), a = t(0);
|
|
16
|
+
m(() => {
|
|
17
|
+
n.value = new IntersectionObserver((e) => {
|
|
18
|
+
f(e[0]);
|
|
19
|
+
}, r.options), l.value && n.value.observe(l.value);
|
|
20
|
+
}), p(() => {
|
|
21
|
+
n.value && n.value.disconnect();
|
|
22
|
+
});
|
|
23
|
+
const f = c((e) => {
|
|
24
|
+
e.isIntersecting ? (a.value = Math.trunc(e.intersectionRatio * 100), e.intersectionRatio === 1 ? (o.value = !0, s.value = !1, i("shown")) : (o.value = !1, s.value = !1, v(Math.trunc(e.intersectionRatio * 100)))) : (o.value = !1, s.value = !0, i("hidden"));
|
|
25
|
+
}), v = c((e) => {
|
|
26
|
+
i("intersected", e);
|
|
27
|
+
}, r.debounceTime);
|
|
28
|
+
return (e, B) => (g(), b(w(e.tag), {
|
|
29
|
+
ref_key: "infinitescrolltrigger",
|
|
30
|
+
ref: l,
|
|
31
|
+
class: "bb-intersection"
|
|
76
32
|
}, {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
ref_key: "bni",
|
|
84
|
-
ref: d,
|
|
85
|
-
"append:icon": i["append:icon"],
|
|
86
|
-
"aria-describedby": B,
|
|
87
|
-
autocomplete: e.autocomplete,
|
|
88
|
-
autofocus: e.autofocus,
|
|
89
|
-
disabled: e.disabled,
|
|
90
|
-
"has-errors": y,
|
|
91
|
-
loading: e.loading,
|
|
92
|
-
max: e.max,
|
|
93
|
-
min: e.min,
|
|
94
|
-
"model-value": e.modelValue,
|
|
95
|
-
name: v,
|
|
96
|
-
placeholder: e.placeholder,
|
|
97
|
-
"prepend:icon": i["prepend:icon"],
|
|
98
|
-
readonly: e.readonly,
|
|
99
|
-
required: e.required,
|
|
100
|
-
step: e.step
|
|
101
|
-
}, f), {
|
|
102
|
-
"append-outer": r((n) => [
|
|
103
|
-
a(e.$slots, "append-outer", s(l(n)))
|
|
104
|
-
]),
|
|
105
|
-
append: r((n) => [
|
|
106
|
-
a(e.$slots, "append", s(l(n)))
|
|
107
|
-
]),
|
|
108
|
-
prefix: r((n) => [
|
|
109
|
-
a(e.$slots, "prefix", s(l(n)))
|
|
110
|
-
]),
|
|
111
|
-
prepend: r((n) => [
|
|
112
|
-
a(e.$slots, "prepend", s(l(n)))
|
|
113
|
-
]),
|
|
114
|
-
suffix: r((n) => [
|
|
115
|
-
a(e.$slots, "suffix", s(l(n)))
|
|
116
|
-
]),
|
|
117
|
-
"prepend-outer": r((n) => [
|
|
118
|
-
a(e.$slots, "prepend-outer", s(l(n)))
|
|
119
|
-
]),
|
|
120
|
-
_: 2
|
|
121
|
-
}, 1040, ["id", "append:icon", "aria-describedby", "autocomplete", "autofocus", "disabled", "has-errors", "loading", "max", "min", "model-value", "name", "placeholder", "prepend:icon", "readonly", "required", "step"])
|
|
33
|
+
default: _(() => [
|
|
34
|
+
I(e.$slots, "default", {
|
|
35
|
+
hidden: s.value,
|
|
36
|
+
percentage: a.value,
|
|
37
|
+
shown: o.value
|
|
38
|
+
})
|
|
122
39
|
]),
|
|
123
40
|
_: 3
|
|
124
|
-
},
|
|
41
|
+
}, 512));
|
|
125
42
|
}
|
|
126
43
|
});
|
|
127
44
|
export {
|
|
128
|
-
|
|
45
|
+
M as default
|
|
129
46
|
};
|
|
130
47
|
//# sourceMappingURL=index78.js.map
|
package/dist/index78.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index78.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index78.js","sources":["../src/components/BbIntersection/BbIntersection.vue"],"sourcesContent":["<template>\n\t<component :is=\"tag\" ref=\"infinitescrolltrigger\" class=\"bb-intersection\">\n\t\t<slot :hidden=\"hidden\" :percentage=\"percentage\" :shown=\"shown\"></slot>\n\t</component>\n</template>\n\n<script setup lang=\"ts\">\nimport type { NonVoidElementTag } from '@/types/CommonProps';\nimport { throttle } from '@/utilities/functions/throttle';\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\n\nexport type BbIntersectionProps = {\n\t/**\n\t * Time to wait before emitting intersection value\n\t */\n\tdebounceTime?: number;\n\t/**\n\t * Options used to confgiure the IntersectionObserver\n\t */\n\toptions?: IntersectionObserverInit; // eslint-disable-line no-undef\n} & NonVoidElementTag;\n\nconst props = withDefaults(defineProps<BbIntersectionProps>(), {\n\tdebounceTime: 0,\n\toptions: () => ({\n\t\troot: null,\n\t\tthreshold: [0, 0.2, 0.4, 0.6, 0.8, 1],\n\t}),\n\ttag: 'div',\n});\n\nexport type BbIntersectionEvents = {\n\t(e: 'shown'): void;\n\t(e: 'hidden'): void;\n\t(e: 'intersected', value: number): void;\n};\n\nconst emit = defineEmits<BbIntersectionEvents>();\n\ndefineSlots<{\n\tdefault?: (props: {\n\t\thidden: boolean;\n\t\tpercentage: number;\n\t\tshown: boolean;\n\t}) => any;\n}>();\n\nconst observer = ref<IntersectionObserver | null>(null);\nconst infinitescrolltrigger = ref<Element | null>(null);\nconst shown = ref(false);\nconst hidden = ref(true);\nconst percentage = ref(0);\n\nonMounted(() => {\n\tobserver.value = new IntersectionObserver((entries) => {\n\t\thandleIntersect(entries[0]);\n\t}, props.options);\n\tif (infinitescrolltrigger.value) {\n\t\tobserver.value.observe(infinitescrolltrigger.value);\n\t}\n});\nonBeforeUnmount(() => {\n\tif (observer.value) observer.value.disconnect();\n});\n\nconst handleIntersect = throttle((entry: IntersectionObserverEntry) => {\n\tif (entry.isIntersecting) {\n\t\tpercentage.value = Math.trunc(entry.intersectionRatio * 100);\n\t\tif (entry.intersectionRatio === 1) {\n\t\t\tshown.value = true;\n\t\t\thidden.value = false;\n\t\t\temit('shown');\n\t\t} else {\n\t\t\tshown.value = false;\n\t\t\thidden.value = false;\n\t\t\temitIntersected(Math.trunc(entry.intersectionRatio * 100));\n\t\t}\n\t} else {\n\t\tshown.value = false;\n\t\thidden.value = true;\n\t\temit('hidden');\n\t}\n});\n\nconst emitIntersected = throttle((percentage: number) => {\n\temit('intersected', percentage);\n}, props.debounceTime);\n</script>\n"],"names":["props","__props","emit","__emit","observer","ref","infinitescrolltrigger","shown","hidden","percentage","onMounted","entries","handleIntersect","onBeforeUnmount","throttle","entry","emitIntersected"],"mappings":";;;;;;;;;;;;;;AAsBA,UAAMA,IAAQC,GAeRC,IAAOC,GAUPC,IAAWC,EAAiC,IAAI,GAChDC,IAAwBD,EAAoB,IAAI,GAChDE,IAAQF,EAAI,EAAK,GACjBG,IAASH,EAAI,EAAI,GACjBI,IAAaJ,EAAI,CAAC;AAExB,IAAAK,EAAU,MAAM;AACf,MAAAN,EAAS,QAAQ,IAAI,qBAAqB,CAACO,MAAY;AACtC,QAAAC,EAAAD,EAAQ,CAAC,CAAC;AAAA,MAAA,GACxBX,EAAM,OAAO,GACZM,EAAsB,SAChBF,EAAA,MAAM,QAAQE,EAAsB,KAAK;AAAA,IACnD,CACA,GACDO,EAAgB,MAAM;AACrB,MAAIT,EAAS,SAAgBA,EAAA,MAAM,WAAW;AAAA,IAAA,CAC9C;AAEK,UAAAQ,IAAkBE,EAAS,CAACC,MAAqC;AACtE,MAAIA,EAAM,kBACTN,EAAW,QAAQ,KAAK,MAAMM,EAAM,oBAAoB,GAAG,GACvDA,EAAM,sBAAsB,KAC/BR,EAAM,QAAQ,IACdC,EAAO,QAAQ,IACfN,EAAK,OAAO,MAEZK,EAAM,QAAQ,IACdC,EAAO,QAAQ,IACfQ,EAAgB,KAAK,MAAMD,EAAM,oBAAoB,GAAG,CAAC,OAG1DR,EAAM,QAAQ,IACdC,EAAO,QAAQ,IACfN,EAAK,QAAQ;AAAA,IACd,CACA,GAEKc,IAAkBF,EAAS,CAACL,MAAuB;AACxD,MAAAP,EAAK,eAAeO,CAAU;AAAA,IAAA,GAC5BT,EAAM,YAAY;;;;;;;;;;;;;;;;;"}
|
package/dist/index79.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { defineComponent as w, ref as u, computed as g, openBlock as $, createBlock as k, withCtx as r, renderSlot as a, normalizeProps as s, guardReactiveProps as l, createVNode as V, mergeProps as P } from "vue";
|
|
2
|
+
import q from "./index26.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import C from "./index28.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
const F = /* @__PURE__ */ w({
|
|
7
|
+
__name: "BbNumberInput",
|
|
8
|
+
props: {
|
|
9
|
+
"append:icon": {},
|
|
10
|
+
autocomplete: {},
|
|
11
|
+
autofocus: {},
|
|
12
|
+
direction: {},
|
|
13
|
+
disabled: { type: Boolean },
|
|
14
|
+
errors: {},
|
|
15
|
+
hasErrors: { type: Boolean },
|
|
16
|
+
hideLabel: { type: Boolean },
|
|
17
|
+
hint: {},
|
|
18
|
+
id: {},
|
|
19
|
+
label: {},
|
|
20
|
+
labelPosition: {},
|
|
21
|
+
loading: { type: Boolean },
|
|
22
|
+
max: {},
|
|
23
|
+
min: {},
|
|
24
|
+
modelValue: {},
|
|
25
|
+
name: {},
|
|
26
|
+
persistentHint: { type: Boolean },
|
|
27
|
+
placeholder: {},
|
|
28
|
+
"prepend:icon": {},
|
|
29
|
+
readonly: {},
|
|
30
|
+
required: { type: Boolean },
|
|
31
|
+
reverse: { type: Boolean },
|
|
32
|
+
step: {}
|
|
33
|
+
},
|
|
34
|
+
emits: ["blur", "change", "click", "decrease", "focus", "increase", "input", "keydown", "mousedown", "mouseup", "update:modelValue"],
|
|
35
|
+
setup(m, { expose: c, emit: b }) {
|
|
36
|
+
const i = m, o = b, d = u(), p = u(!1), h = g(() => i.persistentHint || p.value), f = {
|
|
37
|
+
onBlur: (e) => {
|
|
38
|
+
p.value = !1, o("blur", e);
|
|
39
|
+
},
|
|
40
|
+
onChange: (e) => o("change", e),
|
|
41
|
+
onClick: (e) => o("click", e),
|
|
42
|
+
onDecrease: (e) => o("decrease", e),
|
|
43
|
+
onFocus: (e) => {
|
|
44
|
+
p.value = !0, o("focus", e);
|
|
45
|
+
},
|
|
46
|
+
onIncrease: (e) => o("increase", e),
|
|
47
|
+
onInput: (e) => o("input", e),
|
|
48
|
+
onKeydown: (e) => o("keydown", e),
|
|
49
|
+
onMousedown: (e) => o("mousedown", e),
|
|
50
|
+
onMouseup: (e) => o("mouseup", e),
|
|
51
|
+
"onUpdate:modelValue": (e) => o("update:modelValue", e)
|
|
52
|
+
};
|
|
53
|
+
return c({
|
|
54
|
+
increase: () => {
|
|
55
|
+
var e;
|
|
56
|
+
(e = d.value) == null || e.increase();
|
|
57
|
+
},
|
|
58
|
+
decrease: () => {
|
|
59
|
+
var e;
|
|
60
|
+
(e = d.value) == null || e.decrease();
|
|
61
|
+
}
|
|
62
|
+
}), (e, L) => ($(), k(q, {
|
|
63
|
+
id: e.id,
|
|
64
|
+
class: "bb-number-input",
|
|
65
|
+
direction: e.direction,
|
|
66
|
+
errors: e.errors,
|
|
67
|
+
"has-errors": e.hasErrors,
|
|
68
|
+
"hide-label": e.hideLabel,
|
|
69
|
+
hint: e.hint,
|
|
70
|
+
label: e.label,
|
|
71
|
+
"label-position": e.labelPosition,
|
|
72
|
+
"model-value": e.modelValue,
|
|
73
|
+
name: e.name,
|
|
74
|
+
reverse: e.reverse,
|
|
75
|
+
"show-hint": h.value
|
|
76
|
+
}, {
|
|
77
|
+
label: r((t) => [
|
|
78
|
+
a(e.$slots, "label", s(l(t)))
|
|
79
|
+
]),
|
|
80
|
+
input: r(({ id: t, name: v, hasErrors: y, ariaDescribedby: B }) => [
|
|
81
|
+
V(C, P({
|
|
82
|
+
id: t,
|
|
83
|
+
ref_key: "bni",
|
|
84
|
+
ref: d,
|
|
85
|
+
"append:icon": i["append:icon"],
|
|
86
|
+
"aria-describedby": B,
|
|
87
|
+
autocomplete: e.autocomplete,
|
|
88
|
+
autofocus: e.autofocus,
|
|
89
|
+
disabled: e.disabled,
|
|
90
|
+
"has-errors": y,
|
|
91
|
+
loading: e.loading,
|
|
92
|
+
max: e.max,
|
|
93
|
+
min: e.min,
|
|
94
|
+
"model-value": e.modelValue,
|
|
95
|
+
name: v,
|
|
96
|
+
placeholder: e.placeholder,
|
|
97
|
+
"prepend:icon": i["prepend:icon"],
|
|
98
|
+
readonly: e.readonly,
|
|
99
|
+
required: e.required,
|
|
100
|
+
step: e.step
|
|
101
|
+
}, f), {
|
|
102
|
+
"append-outer": r((n) => [
|
|
103
|
+
a(e.$slots, "append-outer", s(l(n)))
|
|
104
|
+
]),
|
|
105
|
+
append: r((n) => [
|
|
106
|
+
a(e.$slots, "append", s(l(n)))
|
|
107
|
+
]),
|
|
108
|
+
prefix: r((n) => [
|
|
109
|
+
a(e.$slots, "prefix", s(l(n)))
|
|
110
|
+
]),
|
|
111
|
+
prepend: r((n) => [
|
|
112
|
+
a(e.$slots, "prepend", s(l(n)))
|
|
113
|
+
]),
|
|
114
|
+
suffix: r((n) => [
|
|
115
|
+
a(e.$slots, "suffix", s(l(n)))
|
|
116
|
+
]),
|
|
117
|
+
"prepend-outer": r((n) => [
|
|
118
|
+
a(e.$slots, "prepend-outer", s(l(n)))
|
|
119
|
+
]),
|
|
120
|
+
_: 2
|
|
121
|
+
}, 1040, ["id", "append:icon", "aria-describedby", "autocomplete", "autofocus", "disabled", "has-errors", "loading", "max", "min", "model-value", "name", "placeholder", "prepend:icon", "readonly", "required", "step"])
|
|
122
|
+
]),
|
|
123
|
+
_: 3
|
|
124
|
+
}, 8, ["id", "direction", "errors", "has-errors", "hide-label", "hint", "label", "label-position", "model-value", "name", "reverse", "show-hint"]));
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
export {
|
|
128
|
+
F as default
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=index79.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index79.js","sources":["../src/components/BbNumberInput/BbNumberInput.vue"],"sourcesContent":["<template>\n\t<BaseInputContainer\n\t\t:id=\"id\"\n\t\tclass=\"bb-number-input\"\n\t\t:direction=\"direction\"\n\t\t:errors=\"errors\"\n\t\t:has-errors=\"hasErrors\"\n\t\t:hide-label=\"hideLabel\"\n\t\t:hint=\"hint\"\n\t\t:label=\"label\"\n\t\t:label-position=\"labelPosition\"\n\t\t:model-value=\"modelValue\"\n\t\t:name=\"name\"\n\t\t:reverse=\"reverse\"\n\t\t:show-hint=\"showHint\"\n\t>\n\t\t<template #label=\"data\"><slot name=\"label\" v-bind=\"data\"></slot></template>\n\t\t<template #input=\"{ id, name, hasErrors, ariaDescribedby }\">\n\t\t\t<BaseNumberInput\n\t\t\t\t:id=\"id\"\n\t\t\t\tref=\"bni\"\n\t\t\t\t:append:icon=\"props['append:icon']\"\n\t\t\t\t:aria-describedby=\"ariaDescribedby\"\n\t\t\t\t:autocomplete=\"autocomplete\"\n\t\t\t\t:autofocus=\"autofocus\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:has-errors=\"hasErrors\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t:max=\"max\"\n\t\t\t\t:min=\"min\"\n\t\t\t\t:model-value=\"modelValue\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:prepend:icon=\"props['prepend:icon']\"\n\t\t\t\t:readonly=\"readonly\"\n\t\t\t\t:required=\"required\"\n\t\t\t\t:step=\"step\"\n\t\t\t\tv-bind=\"eventListeners\"\n\t\t\t>\n\t\t\t\t<template #append-outer=\"data\"\n\t\t\t\t\t><slot name=\"append-outer\" v-bind=\"data\"\n\t\t\t\t/></template>\n\t\t\t\t<template #append=\"data\"><slot name=\"append\" v-bind=\"data\" /></template>\n\t\t\t\t<template #prefix=\"data\"><slot name=\"prefix\" v-bind=\"data\" /></template>\n\t\t\t\t<template #prepend=\"data\"\n\t\t\t\t\t><slot name=\"prepend\" v-bind=\"data\"\n\t\t\t\t/></template>\n\t\t\t\t<template #suffix=\"data\"><slot name=\"suffix\" v-bind=\"data\" /></template>\n\t\t\t\t<template #prepend-outer=\"data\"\n\t\t\t\t\t><slot name=\"prepend-outer\" v-bind=\"data\"\n\t\t\t\t/></template>\n\t\t\t</BaseNumberInput>\n\t\t</template>\n\t</BaseInputContainer>\n</template>\n\n<script setup lang=\"ts\">\nimport BaseInputContainer from '../BaseInputContainer/BaseInputContainer.vue';\nimport BaseNumberInput from '../BaseNumberInput/BaseNumberInput.vue';\nimport type {\n\tBaseNumberInputEvents,\n\tBaseNumberInputSlots,\n} from '../BaseNumberInput/BaseNumberInput.vue';\nimport {\n\tcomputed,\n\tref,\n\ttype HTMLAttributes,\n\ttype InputHTMLAttributes,\n} from 'vue';\n\nexport type BbNumberInputProps = {\n\t/**\n\t * Name of the icon to be added at the end of the input.\n\t */\n\t// eslint-disable-next-line vue/prop-name-casing\n\t'append:icon'?: string;\n\t/**\n\t * Guides to the browser as to the type of information expected in the field.\n\t */\n\tautocomplete?: InputHTMLAttributes['autocomplete'];\n\n\t/**\n\t * Sets autofocus on page load.\n\t */\n\tautofocus?: InputHTMLAttributes['autofocus'];\n\n\t/**\n\t * Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`.\n\t */\n\tdirection?: 'horizontal' | 'vertical' | 'auto' | string;\n\n\t/**\n\t * Disables the component\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Can be a string or an array of string containing the messages to display.\n\t */\n\terrors?: string | string[];\n\n\t/**\n\t * Define if the component should be in an error state.\n\t * It usually attaches a CSS class for styling purposes.\n\t */\n\thasErrors?: boolean;\n\n\t/**\n\t * Visually hides the label of the input while maintaining accessibility.\n\t */\n\thideLabel?: boolean;\n\n\t/**\n\t * Text box to be displayed near the input, usually to indicate instructions.\n\t */\n\thint?: string;\n\n\t/**\n\t * The identifier of the component.\n\t */\n\tid?: HTMLAttributes['id'];\n\n\t/**\n\t * Text content of the label of the element.\n\t */\n\tlabel: string;\n\n\t/**\n\t * Sets the text alignment of the label.\n\t */\n\tlabelPosition?: 'left' | 'center' | 'right';\n\n\t/**\n\t * Sets the component in a loading state, usually triggering some visual styles.\n\t */\n\tloading?: boolean;\n\n\t/**\n\t * Maximum value cap\n\t */\n\tmax?: number;\n\n\t/**\n\t * Minimum value cap\n\t */\n\tmin?: number;\n\n\t/**\n\t * Used by v-model\n\t */\n\tmodelValue: number | string | null;\n\n\t/**\n\t * Defines the name of the input.\n\t */\n\tname?: InputHTMLAttributes['name'];\n\n\t/**\n\t * Keeps the hint displayed.\n\t */\n\tpersistentHint?: boolean;\n\n\t/**\n\t * String displayed when there's no data.\n\t */\n\tplaceholder?: InputHTMLAttributes['placeholder'];\n\n\t/**\n\t * Name of the icon to be added at the start of the input.\n\t */\n\t// eslint-disable-next-line vue/prop-name-casing\n\t'prepend:icon'?: string;\n\n\t/**\n\t * Sets the input in a readonly state.\n\t */\n\treadonly?: InputHTMLAttributes['readonly'];\n\n\t/**\n\t * Sets the input as required.\n\t */\n\trequired?: boolean;\n\n\t/**\n\t * Reverses the layout. Applicable in every direction the order of the label and the input is swapped.\n\t */\n\treverse?: boolean;\n\n\t/**\n\t * Incremental unit used in the exposed `increase`\n\t * and `decrease` function. It's NOT APPLIED to manual input as a step of 5\n\t * will prevent the user from inserting a value like `115` because of rounding down.\n\t */\n\tstep?: number;\n};\n\nconst props = withDefaults(defineProps<BbNumberInputProps>(), {});\n\nexport type BbNumberInputEvents = BaseNumberInputEvents;\n\nconst emit = defineEmits<BbNumberInputEvents>();\n\ndefineSlots<\n\tBaseNumberInputSlots & {\n\t\tlabel?: (props: { text: string; hasErrors: boolean }) => any;\n\t}\n>();\n\nconst bni = ref();\n\nconst active = ref(false);\nconst showHint = computed(() => props.persistentHint || active.value);\n\n/**\n * These events are just propagated\n */\nconst eventListeners = {\n\tonBlur: (event: FocusEvent) => {\n\t\tactive.value = false;\n\t\temit('blur', event);\n\t},\n\tonChange: (event: Event) => emit('change', event),\n\tonClick: (event: MouseEvent) => emit('click', event),\n\tonDecrease: (event: number) => emit('decrease', event),\n\tonFocus: (event: FocusEvent) => {\n\t\tactive.value = true;\n\t\temit('focus', event);\n\t},\n\tonIncrease: (event: number) => emit('increase', event),\n\tonInput: (event: Event) => emit('input', event),\n\tonKeydown: (event: KeyboardEvent) => emit('keydown', event),\n\tonMousedown: (event: MouseEvent) => emit('mousedown', event),\n\tonMouseup: (event: MouseEvent) => emit('mouseup', event),\n\t'onUpdate:modelValue': (value: number | null) =>\n\t\temit('update:modelValue', value),\n};\n\nconst decrease = () => {\n\tbni.value?.decrease();\n};\n\nconst increase = () => {\n\tbni.value?.increase();\n};\n\ndefineExpose({\n\tincrease,\n\tdecrease,\n});\n</script>\n\n<style lang=\"postcss\">\n@import '@/assets/css/BbNumberInput';\n</style>\n"],"names":["props","__props","emit","__emit","bni","ref","active","showHint","computed","eventListeners","event","value","__expose","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoMA,UAAMA,IAAQC,GAIRC,IAAOC,GAQPC,IAAMC,KAENC,IAASD,EAAI,EAAK,GAClBE,IAAWC,EAAS,MAAMR,EAAM,kBAAkBM,EAAO,KAAK,GAK9DG,IAAiB;AAAA,MACtB,QAAQ,CAACC,MAAsB;AAC9B,QAAAJ,EAAO,QAAQ,IACfJ,EAAK,QAAQQ,CAAK;AAAA,MACnB;AAAA,MACA,UAAU,CAACA,MAAiBR,EAAK,UAAUQ,CAAK;AAAA,MAChD,SAAS,CAACA,MAAsBR,EAAK,SAASQ,CAAK;AAAA,MACnD,YAAY,CAACA,MAAkBR,EAAK,YAAYQ,CAAK;AAAA,MACrD,SAAS,CAACA,MAAsB;AAC/B,QAAAJ,EAAO,QAAQ,IACfJ,EAAK,SAASQ,CAAK;AAAA,MACpB;AAAA,MACA,YAAY,CAACA,MAAkBR,EAAK,YAAYQ,CAAK;AAAA,MACrD,SAAS,CAACA,MAAiBR,EAAK,SAASQ,CAAK;AAAA,MAC9C,WAAW,CAACA,MAAyBR,EAAK,WAAWQ,CAAK;AAAA,MAC1D,aAAa,CAACA,MAAsBR,EAAK,aAAaQ,CAAK;AAAA,MAC3D,WAAW,CAACA,MAAsBR,EAAK,WAAWQ,CAAK;AAAA,MACvD,uBAAuB,CAACC,MACvBT,EAAK,qBAAqBS,CAAK;AAAA,IAAA;AAWpB,WAAAC,EAAA;AAAA,MACZ,UALgB,MAAM;;AACtB,SAAAC,IAAAT,EAAI,UAAJ,QAAAS,EAAW;AAAA,MAAS;AAAA,MAKpB,UAVgB,MAAM;;AACtB,SAAAA,IAAAT,EAAI,UAAJ,QAAAS,EAAW;AAAA,MAAS;AAAA,IASpB,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index8.js
CHANGED
|
@@ -1,23 +1,65 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { getAsPercentage as p } from "./index127.js";
|
|
2
|
+
import { wait as w } from "./index128.js";
|
|
3
|
+
import { ref as c, computed as o, onBeforeUnmount as H } from "vue";
|
|
4
|
+
const Y = ({
|
|
5
|
+
duration: t,
|
|
6
|
+
onStart: f,
|
|
7
|
+
onFinish: i,
|
|
8
|
+
onStop: s
|
|
9
|
+
}) => {
|
|
10
|
+
if (!t)
|
|
11
|
+
throw new Error("You must define a duration for the coundown");
|
|
12
|
+
const e = c(t), u = c(0), M = o(() => p(u.value, t)), m = 100, r = c(!1), n = c(!1);
|
|
13
|
+
let a;
|
|
14
|
+
const I = () => {
|
|
15
|
+
u.value === t || r.value && !n.value || (f && f(), n.value = !1, r.value = !0, a = setInterval(() => {
|
|
16
|
+
e.value = Math.max(e.value - m, 0), u.value = Math.min(u.value + m, t), e.value === 0 && w(0).then(() => {
|
|
17
|
+
clearInterval(a), r.value = !1, s && s(), i && i();
|
|
18
|
+
});
|
|
19
|
+
}, m));
|
|
20
|
+
}, d = () => {
|
|
21
|
+
A(), I();
|
|
22
|
+
}, A = () => {
|
|
23
|
+
a && clearInterval(a), n.value || s && s(), e.value = t, u.value = 0, r.value = !1, n.value = !1;
|
|
24
|
+
}, g = () => {
|
|
25
|
+
a && clearInterval(a), n.value || s && s(), n.value = !0;
|
|
26
|
+
}, y = o(() => {
|
|
27
|
+
const l = Math.trunc(e.value / 864e5), v = Math.trunc((e.value - l * 864e5) / 36e5), h = Math.trunc(
|
|
28
|
+
(e.value - v * 36e5 - l * 864e5) / 6e4
|
|
29
|
+
), D = Math.trunc(
|
|
30
|
+
(e.value - h * 6e4 - v * 36e5 - l * 864e5) / 1e3
|
|
31
|
+
);
|
|
32
|
+
return {
|
|
33
|
+
days: l,
|
|
34
|
+
hours: v,
|
|
35
|
+
minutes: h,
|
|
36
|
+
seconds: D
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
return H(() => clearInterval(a)), {
|
|
40
|
+
/** Elapsed milliseconds since starting the timer */
|
|
41
|
+
elapsed: o(() => u.value),
|
|
42
|
+
/** Remaining milliseconds */
|
|
43
|
+
remaining: o(() => e.value),
|
|
44
|
+
/** Remaining as a formatted object for display */
|
|
45
|
+
remainingFormatted: y,
|
|
46
|
+
/** Percentage of elapsed time against duration */
|
|
47
|
+
progress: M,
|
|
48
|
+
/** Starts the timer */
|
|
49
|
+
start: I,
|
|
50
|
+
/** Reset the timer to intiial state and starts again */
|
|
51
|
+
restart: d,
|
|
52
|
+
/** Pauses the timer */
|
|
53
|
+
pause: g,
|
|
54
|
+
/** Reset the timer to initial state, if the timer is running it is stopped */
|
|
55
|
+
reset: A,
|
|
56
|
+
/** Boolean, is the timer running (paused doesn't change running state) */
|
|
57
|
+
running: r,
|
|
58
|
+
/** Boolean is the timer paused */
|
|
59
|
+
paused: n
|
|
18
60
|
};
|
|
19
61
|
};
|
|
20
62
|
export {
|
|
21
|
-
|
|
63
|
+
Y as useCountdown
|
|
22
64
|
};
|
|
23
65
|
//# sourceMappingURL=index8.js.map
|
package/dist/index8.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index8.js","sources":["../src/composables/
|
|
1
|
+
{"version":3,"file":"index8.js","sources":["../src/composables/useCountdown.ts"],"sourcesContent":["import { getAsPercentage } from '@/utilities/functions/percentage';\nimport { wait } from '@/utilities/functions/wait';\nimport { computed, onBeforeUnmount, ref } from 'vue';\n\ntype CounterParams = {\n\t/** Longevity of the countdown in milliseconds */\n\tduration: number;\n\t/** Function called every time the countdown starts or restarts */\n\tonStart?: (...args: any[]) => any;\n\t/** Function called anytime the timer stops or pauses */\n\tonStop?: (...args: any[]) => any;\n\t/** Function called on completion */\n\tonFinish?: (...args: any[]) => any;\n};\nexport const useCountdown = ({\n\tduration,\n\tonStart,\n\tonFinish,\n\tonStop,\n}: CounterParams) => {\n\tif (!duration) {\n\t\tthrow new Error('You must define a duration for the coundown');\n\t}\n\tconst remaining = ref(duration);\n\tconst elapsed = ref(0);\n\tconst progress = computed(() => getAsPercentage(elapsed.value, duration));\n\tconst tick = 100;\n\tconst running = ref(false);\n\tconst paused = ref(false);\n\n\tlet timeoutID: ReturnType<typeof setInterval>;\n\n\tconst start = () => {\n\t\tif (elapsed.value === duration || (running.value && !paused.value)) return;\n\t\tif (onStart) onStart();\n\t\tpaused.value = false;\n\t\trunning.value = true;\n\n\t\ttimeoutID = setInterval(() => {\n\t\t\tremaining.value = Math.max(remaining.value - tick, 0);\n\t\t\telapsed.value = Math.min(elapsed.value + tick, duration);\n\n\t\t\tif (remaining.value === 0) {\n\t\t\t\twait(0).then(() => {\n\t\t\t\t\tclearInterval(timeoutID);\n\t\t\t\t\trunning.value = false;\n\t\t\t\t\tif (onStop) onStop();\n\t\t\t\t\tif (onFinish) onFinish();\n\t\t\t\t});\n\t\t\t}\n\t\t}, tick);\n\t};\n\n\tconst restart = () => {\n\t\treset();\n\t\tstart();\n\t};\n\n\tconst reset = () => {\n\t\tif (timeoutID) clearInterval(timeoutID);\n\t\tif (!paused.value) {\n\t\t\tif (onStop) onStop();\n\t\t}\n\t\tremaining.value = duration;\n\t\telapsed.value = 0;\n\t\trunning.value = false;\n\t\tpaused.value = false;\n\t};\n\n\tconst pause = () => {\n\t\tif (timeoutID) clearInterval(timeoutID);\n\t\tif (!paused.value) {\n\t\t\tif (onStop) onStop();\n\t\t}\n\t\tpaused.value = true;\n\t};\n\n\tconst remainingFormatted = computed(() => {\n\t\tconst msInADay = 1000 * 60 * 60 * 24;\n\t\tconst msInAnHour = 1000 * 60 * 60;\n\t\tconst msInAMinute = 1000 * 60;\n\t\tconst msInASecond = 1000;\n\n\t\tconst days = Math.trunc(remaining.value / msInADay);\n\t\tconst hours = Math.trunc((remaining.value - days * msInADay) / msInAnHour);\n\t\tconst minutes = Math.trunc(\n\t\t\t(remaining.value - hours * msInAnHour - days * msInADay) / msInAMinute\n\t\t);\n\t\tconst seconds = Math.trunc(\n\t\t\t(remaining.value -\n\t\t\t\tminutes * msInAMinute -\n\t\t\t\thours * msInAnHour -\n\t\t\t\tdays * msInADay) /\n\t\t\t\tmsInASecond\n\t\t);\n\t\treturn {\n\t\t\tdays,\n\t\t\thours,\n\t\t\tminutes,\n\t\t\tseconds,\n\t\t};\n\t});\n\n\tonBeforeUnmount(() => clearInterval(timeoutID));\n\n\treturn {\n\t\t/** Elapsed milliseconds since starting the timer */\n\t\telapsed: computed(() => elapsed.value),\n\t\t/** Remaining milliseconds */\n\t\tremaining: computed(() => remaining.value),\n\t\t/** Remaining as a formatted object for display */\n\t\tremainingFormatted,\n\t\t/** Percentage of elapsed time against duration */\n\t\tprogress,\n\t\t/** Starts the timer */\n\t\tstart,\n\t\t/** Reset the timer to intiial state and starts again */\n\t\trestart,\n\t\t/** Pauses the timer */\n\t\tpause,\n\t\t/** Reset the timer to initial state, if the timer is running it is stopped */\n\t\treset,\n\t\t/** Boolean, is the timer running (paused doesn't change running state) */\n\t\trunning,\n\t\t/** Boolean is the timer paused */\n\t\tpaused,\n\t};\n};\n"],"names":["useCountdown","duration","onStart","onFinish","onStop","remaining","ref","elapsed","progress","computed","getAsPercentage","tick","running","paused","timeoutID","start","wait","restart","reset","pause","remainingFormatted","days","hours","minutes","seconds","onBeforeUnmount"],"mappings":";;;AAcO,MAAMA,IAAe,CAAC;AAAA,EAC5B,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AACD,MAAqB;AACpB,MAAI,CAACH;AACE,UAAA,IAAI,MAAM,6CAA6C;AAExD,QAAAI,IAAYC,EAAIL,CAAQ,GACxBM,IAAUD,EAAI,CAAC,GACfE,IAAWC,EAAS,MAAMC,EAAgBH,EAAQ,OAAON,CAAQ,CAAC,GAClEU,IAAO,KACPC,IAAUN,EAAI,EAAK,GACnBO,IAASP,EAAI,EAAK;AAEpB,MAAAQ;AAEJ,QAAMC,IAAQ,MAAM;AACnB,IAAIR,EAAQ,UAAUN,KAAaW,EAAQ,SAAS,CAACC,EAAO,UACxDX,KAAiBA,KACrBW,EAAO,QAAQ,IACfD,EAAQ,QAAQ,IAEhBE,IAAY,YAAY,MAAM;AAC7B,MAAAT,EAAU,QAAQ,KAAK,IAAIA,EAAU,QAAQM,GAAM,CAAC,GACpDJ,EAAQ,QAAQ,KAAK,IAAIA,EAAQ,QAAQI,GAAMV,CAAQ,GAEnDI,EAAU,UAAU,KAClBW,EAAA,CAAC,EAAE,KAAK,MAAM;AAClB,sBAAcF,CAAS,GACvBF,EAAQ,QAAQ,IACZR,KAAeA,KACfD,KAAmBA;MAAA,CACvB;AAAA,OAEAQ,CAAI;AAAA,EAAA,GAGFM,IAAU,MAAM;AACf,IAAAC,KACAH;EAAA,GAGDG,IAAQ,MAAM;AACf,IAAAJ,mBAAyBA,CAAS,GACjCD,EAAO,SACPT,KAAeA,KAEpBC,EAAU,QAAQJ,GAClBM,EAAQ,QAAQ,GAChBK,EAAQ,QAAQ,IAChBC,EAAO,QAAQ;AAAA,EAAA,GAGVM,IAAQ,MAAM;AACf,IAAAL,mBAAyBA,CAAS,GACjCD,EAAO,SACPT,KAAeA,KAEpBS,EAAO,QAAQ;AAAA,EAAA,GAGVO,IAAqBX,EAAS,MAAM;AAMzC,UAAMY,IAAO,KAAK,MAAMhB,EAAU,QAAQ,KAAQ,GAC5CiB,IAAQ,KAAK,OAAOjB,EAAU,QAAQgB,IAAO,SAAY,IAAU,GACnEE,IAAU,KAAK;AAAA,OACnBlB,EAAU,QAAQiB,IAAQ,OAAaD,IAAO,SAAY;AAAA,IAAA,GAEtDG,IAAU,KAAK;AAAA,OACnBnB,EAAU,QACVkB,IAAU,MACVD,IAAQ,OACRD,IAAO,SACP;AAAA,IAAA;AAEK,WAAA;AAAA,MACN,MAAAA;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,SAAAC;AAAA,IAAA;AAAA,EACD,CACA;AAEe,SAAAC,EAAA,MAAM,cAAcX,CAAS,CAAC,GAEvC;AAAA;AAAA,IAEN,SAASL,EAAS,MAAMF,EAAQ,KAAK;AAAA;AAAA,IAErC,WAAWE,EAAS,MAAMJ,EAAU,KAAK;AAAA;AAAA,IAEzC,oBAAAe;AAAA;AAAA,IAEA,UAAAZ;AAAA;AAAA,IAEA,OAAAO;AAAA;AAAA,IAEA,SAAAE;AAAA;AAAA,IAEA,OAAAE;AAAA;AAAA,IAEA,OAAAD;AAAA;AAAA,IAEA,SAAAN;AAAA;AAAA,IAEA,QAAAC;AAAA,EAAA;AAEF;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent as oe, ref as s, useAttrs as se, getCurrentInstance as ae, computed as v, nextTick as le, onBeforeUnmount as O, onMounted as ne, watch as ie, openBlock as _, createBlock as re, Teleport as ce, createElementVNode as a, mergeProps as S, createElementBlock as V, renderSlot as n, createTextVNode as ue, toDisplayString as z, createCommentVNode as T } from "vue";
|
|
2
|
-
import { useFocusTrap as de } from "./
|
|
3
|
-
import { useId as A } from "./
|
|
4
|
-
import { wait as E } from "./
|
|
5
|
-
import { useModalsState as p } from "./
|
|
2
|
+
import { useFocusTrap as de } from "./index208.js";
|
|
3
|
+
import { useId as A } from "./index9.js";
|
|
4
|
+
import { wait as E } from "./index128.js";
|
|
5
|
+
import { useModalsState as p } from "./index226.js";
|
|
6
6
|
const fe = ["inert"], ve = { class: "bb-offcanvas-close" }, pe = { class: "bb-offcanvas-close__content" }, be = { class: "bb-offcanvas-close__label" }, me = /* @__PURE__ */ a("span", { class: "bb-offcanvas-close__icon" }, [
|
|
7
7
|
/* @__PURE__ */ a("svg", {
|
|
8
8
|
fill: "none",
|
|
@@ -238,4 +238,4 @@ const fe = ["inert"], ve = { class: "bb-offcanvas-close" }, pe = { class: "bb-of
|
|
|
238
238
|
export {
|
|
239
239
|
we as default
|
|
240
240
|
};
|
|
241
|
-
//# sourceMappingURL=
|
|
241
|
+
//# sourceMappingURL=index81.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index80.js","sources":["../src/components/BbOffCanvas/BbOffCanvas.vue"],"sourcesContent":["<template>\n\t<teleport to=\"body\">\n\t\t<div v-bind=\"overlayAttributes\" ref=\"overlay\" :inert=\"closed\">\n\t\t\t<div v-bind=\"panelAttributes\" ref=\"panel\">\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"hasRenderedAtLeastOnce\"\n\t\t\t\t\tref=\"content\"\n\t\t\t\t\tclass=\"bb-offcanvas__content\"\n\t\t\t\t>\n\t\t\t\t\t<slot :close=\"onCloseClick\" name=\"content\">\n\t\t\t\t\t\t<div ref=\"header\" class=\"bb-offcanvas__header\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t:close=\"onCloseClick\"\n\t\t\t\t\t\t\t\tname=\"header\"\n\t\t\t\t\t\t\t\t:title=\"title\"\n\t\t\t\t\t\t\t\t:title-id=\"titleId\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span :id=\"titleId\" class=\"bb-offcanvas__title\">\n\t\t\t\t\t\t\t\t\t<slot name=\"title\" :text=\"title\">{{ title }}</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close\">\n\t\t\t\t\t\t\t\t\t<button v-if=\"showClose\" type=\"button\" @click=\"onCloseClick\">\n\t\t\t\t\t\t\t\t\t\t<slot name=\"close\" :text=\"closeLabel\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close__content\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close__label\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tcloseLabel\n\t\t\t\t\t\t\t\t\t\t\t\t}}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close__icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t><svg\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\td=\"M23 23L1 1M23 1L1 23\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div ref=\"body\" class=\"bb-offcanvas__body\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t:description-id=\"descriptionId\"\n\t\t\t\t\t\t\t\tname=\"description\"\n\t\t\t\t\t\t\t\t:text=\"description\"\n\t\t\t\t\t\t\t\t><div\n\t\t\t\t\t\t\t\t\tv-if=\"description\"\n\t\t\t\t\t\t\t\t\t:id=\"descriptionId\"\n\t\t\t\t\t\t\t\t\tclass=\"bb-offcanvas__description\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ description }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"flex: 10000 10000 0%\"></div>\n\t\t\t\t\t\t<div ref=\"footer\" class=\"bb-offcanvas__footer\">\n\t\t\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n\tcomputed,\n\tgetCurrentInstance,\n\tnextTick,\n\tonBeforeUnmount,\n\tonMounted,\n\tref,\n\tuseAttrs,\n\twatch,\n} from 'vue';\nimport { useFocusTrap } from '@vueuse/integrations/useFocusTrap';\nimport { useId } from '@/composables/useId';\nimport { wait } from '@/utilities/functions/wait';\nimport type { CommonProps, Size } from '@/types/CommonProps';\nimport { useModalsState } from '@/composables/useModalsState';\n\nexport type Sizes = {\n\tsm: number;\n\tmd: number;\n\tlg: number;\n};\n\nexport type BbOffCanvasProps = Pick<\n\tCommonProps,\n\t| 'closeLabel'\n\t| 'compact'\n\t| 'disabled'\n\t| 'eager'\n\t| 'panelClasses'\n\t| 'overlayClasses'\n\t| 'persistent'\n\t| 'showClose'\n\t| 'title'\n\t| 'transition'\n\t| 'transitionDuration'\n> &\n\tSize<Sizes> & {\n\t\t/**\n\t\t * Description of the content of the modal. Extremely useful for accessibility reasons.\n\t\t */\n\t\tdescription?: string;\n\t\t/**\n\t\t * Elements that obtains focus immediately after opening the offcanvas.\n\t\t * By default it's the first tabbable item.\n\t\t */\n\t\tfocusTarget?: string;\n\t\t/**\n\t\t * Displays the modala as fulscreen with no margin to the page\n\t\t */\n\t\tfullscreen?: boolean;\n\t\t/**\n\t\t * Defines the state open / closed of the modal.\n\t\t */\n\t\tmodelValue?: boolean | null;\n\t\t/**\n\t\t * Defines the direction the offcanvas should appear from\n\t\t */\n\t\tdirection?: 'left' | 'top' | 'right' | 'bottom';\n\t};\n\nconst props = withDefaults(defineProps<BbOffCanvasProps>(), {\n\tcloseLabel: 'Chiudi',\n\tdirection: 'left',\n\tshowClose: true,\n\tsize: 'sm',\n\ttransition: 'fade',\n\ttransitionDuration: 350,\n\tpanelClasses: () => [],\n\toverlayClasses: () => [],\n});\n\nexport type BbOffCanvasEvents = {\n\t(e: 'shown'): void;\n\t(e: 'hidden'): void;\n\t(e: 'update:modelValue', value: boolean): void;\n};\n\nconst emit = defineEmits<BbOffCanvasEvents>();\n\nexport type BbOffCanvasSlots = {\n\theader?: (props: {\n\t\ttitleId: typeof titleId;\n\t\tclose: typeof onCloseClick;\n\t\ttitle: BbOffCanvasProps['title'];\n\t}) => any;\n\ttitle?: (props: { text: BbOffCanvasProps['title'] }) => any;\n\tclose?: (props: { text: BbOffCanvasProps['closeLabel'] }) => any;\n\tdescription?: (props: {\n\t\tdescriptionId: typeof descriptionId;\n\t\ttext: BbOffCanvasProps['description'];\n\t}) => any;\n\tdefault?: (props: object) => any;\n\tcontent?: (props: { close: typeof onCloseClick }) => any;\n\tfooter?: (props: object) => any;\n};\n\ndefineSlots<BbOffCanvasSlots>();\n\nconst titleId = `title_${useId().id.value}`;\nconst descriptionId = `description_${useId().id.value}`;\n\nconst overlay = ref<HTMLElement | null>(null);\nconst panel = ref<HTMLElement | null>(null);\nconst content = ref<HTMLElement | null>(null);\nconst header = ref<HTMLElement | null>(null);\nconst body = ref<HTMLElement | null>(null);\nconst footer = ref<HTMLElement | null>(null);\nconst attrs = useAttrs();\n\n// @ts-expect-error possibly undef\nconst isNuxt = !!getCurrentInstance()?.proxy?.$nuxt;\n\nconst orderInStack = ref(0);\nconst isCurrent = computed(() => {\n\tconst { openedModals } = useModalsState();\n\treturn openedModals.value && openedModals.value === orderInStack.value;\n});\n\nconst { activate, deactivate } = useFocusTrap(panel, {\n\tinitialFocus: props.focusTarget ?? undefined,\n\tclickOutsideDeactivates: true,\n\t/* On esc deactivate the trap, return focus and then close the modal */\n\tescapeDeactivates: () => {\n\t\tnextTick(() => {\n\t\t\temit('update:modelValue', false);\n\t\t});\n\t\treturn true;\n\t},\n});\n\nconst closeLabel = computed(() => props.closeLabel);\n\nconst open = ref(false);\nconst opening = ref(false);\nconst closed = ref(true);\nconst closing = ref(false);\nconst hasRenderedAtLeastOnce = ref(props.eager || props.modelValue);\nconst lastFocusedElement = ref<Element | null>(null);\n\nconst busy = computed(() => opening.value || closing.value);\n\nconst restrictBody = () => {\n\tif (!globalThis.document) return;\n\tconst scrollBarWidth =\n\t\twindow.innerWidth - document.documentElement.clientWidth;\n\tdocument.body.style.overflow = 'hidden';\n\tdocument.body.style.paddingRight = `${scrollBarWidth}px`;\n};\nconst releaseBody = () => {\n\tif (!globalThis.document) return;\n\tdocument.body.style.overflow = 'auto';\n\tdocument.body.style.paddingRight = '0px';\n};\n\nonBeforeUnmount(() => {\n\tif (props.modelValue) {\n\t\tconst { openedModals, modalHasClosed } = useModalsState();\n\t\tif (openedModals.value) {\n\t\t\tmodalHasClosed();\n\t\t\torderInStack.value = 0;\n\t\t\treleaseBody();\n\t\t}\n\t}\n});\n\nonMounted(() => {\n\tif (!props.modelValue && !hasRenderedAtLeastOnce.value) return;\n\tif (isNuxt && !globalThis.document) return;\n\talignToModelValue();\n});\nonBeforeUnmount(() => {\n\tif (props.modelValue) {\n\t\tconst { openedModals, modalHasClosed } = useModalsState();\n\t\tif (openedModals.value) {\n\t\t\tmodalHasClosed();\n\t\t\torderInStack.value = 0;\n\t\t\treleaseBody();\n\t\t}\n\t}\n});\n\n/**\n * Every time modelValue changes align the display to it\n */\nwatch(\n\t() => props.modelValue,\n\t() => {\n\t\tif (!props.modelValue && !hasRenderedAtLeastOnce.value) return;\n\t\tif (isNuxt && !globalThis.document) return;\n\t\talignToModelValue();\n\t},\n\t{ flush: 'post' }\n);\n\n/**\n * When modelValue becomes true if the component wasn't rendered render it\n * and wait for it to be on the page (or transitions would not work).\n * Stash the latest focused element so we can return it later when it closes.\n * Focus on the panel upon opening.\n * ---\n * Notice all interactions update modelValue and then this function aligns the display to it\n */\nconst alignToModelValue = async () => {\n\tif (props.modelValue) {\n\t\tif (!hasRenderedAtLeastOnce.value) {\n\t\t\thasRenderedAtLeastOnce.value = true;\n\t\t}\n\n\t\tclosed.value = false;\n\t\tclosing.value = false;\n\t\topening.value = true;\n\n\t\t// This prevents overscroll chaining (additional scrolling to the body when the modal has been completely scrolled)\n\t\tconst { modalHasOpened, openedModals } = useModalsState();\n\t\tmodalHasOpened();\n\t\torderInStack.value = openedModals.value;\n\t\trestrictBody();\n\t\tawait wait(props.transitionDuration);\n\n\t\topening.value = false;\n\t\topen.value = true;\n\t\temit('shown');\n\t\tactivate();\n\t} else {\n\t\tdeactivate();\n\t\topening.value = false;\n\t\topen.value = false;\n\t\tclosing.value = true;\n\n\t\tconst { modalHasClosed, openedModals } = useModalsState();\n\t\tmodalHasClosed();\n\t\torderInStack.value = 0;\n\t\tif (!openedModals.value) {\n\t\t\treleaseBody();\n\t\t}\n\t\tawait wait(props.transitionDuration);\n\n\t\tclosing.value = false;\n\t\tclosed.value = true;\n\t\temit('hidden');\n\t\tif (lastFocusedElement.value instanceof HTMLElement) {\n\t\t\tlastFocusedElement.value.focus();\n\t\t}\n\t}\n};\n\n/**\n * Disable scrolling\n */\nconst onOverlayScroll = (event: Event) => {\n\tif (event.target === overlay.value) {\n\t\tevent.preventDefault();\n\t}\n};\n\n/**\n * Close the modal on overlay click if not persistent\n */\nconst onOverlayClick = (event: MouseEvent) => {\n\tif (props.disabled || busy.value) return;\n\tif (overlay.value) {\n\t\tif (event.target === overlay.value) {\n\t\t\tif (!props.persistent) {\n\t\t\t\temit('update:modelValue', false);\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * On click on the X button\n */\nconst onCloseClick = () => {\n\tif (props.disabled) return;\n\temit('update:modelValue', false);\n};\n\nconst overlayAttributes = computed(() => {\n\tconst classes = [\n\t\t{\n\t\t\t'bb-offcanvas bb-offcanvas__overlay': true,\n\t\t\t'bb-offcanvas--fullscreen': props.fullscreen,\n\t\t\t'bb-offcanvas--faded': !isCurrent.value,\n\t\t\t'bb-offcanvas--open': open.value,\n\t\t\t'bb-offcanvas--opening': opening.value,\n\t\t\t'bb-offcanvas--closed': closed.value,\n\t\t\t'bb-offcanvas--closing': closing.value,\n\t\t\t[`bb-offcanvas--transition-${props.transition}`]: true,\n\t\t\t[`bb-offcanvas--${props.direction}`]: true,\n\t\t},\n\t\tprops.overlayClasses,\n\t].flat();\n\tconst eventListeners = {\n\t\tonClick: onOverlayClick,\n\t\tonScroll: onOverlayScroll,\n\t\tonTouchmove: onOverlayScroll,\n\t\tonWheel: onOverlayScroll,\n\t\tonKeydown: onOverlayScroll,\n\t};\n\n\tconst style = {\n\t\ttransitionDuration: props.transitionDuration / 1000 + 's',\n\t};\n\treturn {\n\t\tclass: classes,\n\t\tstyle,\n\t\t...eventListeners,\n\t\t...attrs,\n\t};\n});\n\nconst panelAttributes = computed(() => {\n\tconst classes = [\n\t\t{\n\t\t\t'bb-offcanvas__panel': true,\n\t\t\t'bb-offcanvas__panel--compact': props.compact,\n\t\t},\n\t\tprops.panelClasses,\n\t].flat();\n\n\tconst accessibilityAttrs: {\n\t\t[key: string]: string | boolean;\n\t} = {\n\t\trole: 'dialog',\n\t\t'aria-modal': true,\n\t};\n\n\tif (hasRenderedAtLeastOnce.value) {\n\t\taccessibilityAttrs['aria-labelledby'] = titleId;\n\n\t\tif (props.description)\n\t\t\taccessibilityAttrs['aria-describedby'] = descriptionId;\n\t}\n\n\tlet maxWidth;\n\tlet maxHeight;\n\tlet height;\n\tconst sizes: Sizes = {\n\t\tsm: 384,\n\t\tmd: 652,\n\t\tlg: 896,\n\t};\n\tif (props.direction === 'left' || props.direction === 'right') {\n\t\tif (props.fullscreen) maxWidth = '100%';\n\t\telse if (typeof props.size === 'number') maxWidth = props.size + 'px';\n\t\telse if (props.size in sizes)\n\t\t\tmaxWidth = sizes[props.size as keyof Sizes] + 'px';\n\t\telse maxWidth = props.size + 'px';\n\t} else {\n\t\tif (props.fullscreen) height = '100%';\n\t\telse if (typeof props.size === 'number') height = props.size + 'px';\n\t\telse if (props.size in sizes)\n\t\t\theight = sizes[props.size as keyof Sizes] + 'px';\n\t\telse if (!Number.isNaN(Number(props.size))) height = props.size + 'px';\n\t\telse if (props.size === 'auto') height = 'auto';\n\t}\n\n\tconst style = {\n\t\tmaxWidth,\n\t\tmaxHeight,\n\t\theight,\n\t\ttransitionDuration: props.transitionDuration / 1000 + 's',\n\t};\n\n\treturn {\n\t\tclass: classes,\n\t\tstyle,\n\t\t...accessibilityAttrs,\n\t};\n});\n</script>\n\n<style lang=\"postcss\">\n@import '@/assets/css/BbOffCanvas';\n</style>\n"],"names":["props","__props","emit","__emit","titleId","useId","descriptionId","overlay","ref","panel","content","header","body","footer","attrs","useAttrs","isNuxt","_b","_a","getCurrentInstance","orderInStack","isCurrent","computed","openedModals","useModalsState","activate","deactivate","useFocusTrap","nextTick","closeLabel","open","opening","closed","closing","hasRenderedAtLeastOnce","lastFocusedElement","busy","restrictBody","scrollBarWidth","releaseBody","onBeforeUnmount","modalHasClosed","onMounted","alignToModelValue","watch","modalHasOpened","wait","onOverlayScroll","event","onOverlayClick","onCloseClick","overlayAttributes","classes","eventListeners","style","panelAttributes","accessibilityAttrs","maxWidth","maxHeight","height","sizes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index81.js","sources":["../src/components/BbOffCanvas/BbOffCanvas.vue"],"sourcesContent":["<template>\n\t<teleport to=\"body\">\n\t\t<div v-bind=\"overlayAttributes\" ref=\"overlay\" :inert=\"closed\">\n\t\t\t<div v-bind=\"panelAttributes\" ref=\"panel\">\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"hasRenderedAtLeastOnce\"\n\t\t\t\t\tref=\"content\"\n\t\t\t\t\tclass=\"bb-offcanvas__content\"\n\t\t\t\t>\n\t\t\t\t\t<slot :close=\"onCloseClick\" name=\"content\">\n\t\t\t\t\t\t<div ref=\"header\" class=\"bb-offcanvas__header\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t:close=\"onCloseClick\"\n\t\t\t\t\t\t\t\tname=\"header\"\n\t\t\t\t\t\t\t\t:title=\"title\"\n\t\t\t\t\t\t\t\t:title-id=\"titleId\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span :id=\"titleId\" class=\"bb-offcanvas__title\">\n\t\t\t\t\t\t\t\t\t<slot name=\"title\" :text=\"title\">{{ title }}</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close\">\n\t\t\t\t\t\t\t\t\t<button v-if=\"showClose\" type=\"button\" @click=\"onCloseClick\">\n\t\t\t\t\t\t\t\t\t\t<slot name=\"close\" :text=\"closeLabel\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close__content\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close__label\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tcloseLabel\n\t\t\t\t\t\t\t\t\t\t\t\t}}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"bb-offcanvas-close__icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t><svg\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\td=\"M23 23L1 1M23 1L1 23\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div ref=\"body\" class=\"bb-offcanvas__body\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t:description-id=\"descriptionId\"\n\t\t\t\t\t\t\t\tname=\"description\"\n\t\t\t\t\t\t\t\t:text=\"description\"\n\t\t\t\t\t\t\t\t><div\n\t\t\t\t\t\t\t\t\tv-if=\"description\"\n\t\t\t\t\t\t\t\t\t:id=\"descriptionId\"\n\t\t\t\t\t\t\t\t\tclass=\"bb-offcanvas__description\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ description }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"flex: 10000 10000 0%\"></div>\n\t\t\t\t\t\t<div ref=\"footer\" class=\"bb-offcanvas__footer\">\n\t\t\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n\tcomputed,\n\tgetCurrentInstance,\n\tnextTick,\n\tonBeforeUnmount,\n\tonMounted,\n\tref,\n\tuseAttrs,\n\twatch,\n} from 'vue';\nimport { useFocusTrap } from '@vueuse/integrations/useFocusTrap';\nimport { useId } from '@/composables/useId';\nimport { wait } from '@/utilities/functions/wait';\nimport type { CommonProps, Size } from '@/types/CommonProps';\nimport { useModalsState } from '@/composables/useModalsState';\n\nexport type Sizes = {\n\tsm: number;\n\tmd: number;\n\tlg: number;\n};\n\nexport type BbOffCanvasProps = Pick<\n\tCommonProps,\n\t| 'closeLabel'\n\t| 'compact'\n\t| 'disabled'\n\t| 'eager'\n\t| 'panelClasses'\n\t| 'overlayClasses'\n\t| 'persistent'\n\t| 'showClose'\n\t| 'title'\n\t| 'transition'\n\t| 'transitionDuration'\n> &\n\tSize<Sizes> & {\n\t\t/**\n\t\t * Description of the content of the modal. Extremely useful for accessibility reasons.\n\t\t */\n\t\tdescription?: string;\n\t\t/**\n\t\t * Elements that obtains focus immediately after opening the offcanvas.\n\t\t * By default it's the first tabbable item.\n\t\t */\n\t\tfocusTarget?: string;\n\t\t/**\n\t\t * Displays the modala as fulscreen with no margin to the page\n\t\t */\n\t\tfullscreen?: boolean;\n\t\t/**\n\t\t * Defines the state open / closed of the modal.\n\t\t */\n\t\tmodelValue?: boolean | null;\n\t\t/**\n\t\t * Defines the direction the offcanvas should appear from\n\t\t */\n\t\tdirection?: 'left' | 'top' | 'right' | 'bottom';\n\t};\n\nconst props = withDefaults(defineProps<BbOffCanvasProps>(), {\n\tcloseLabel: 'Chiudi',\n\tdirection: 'left',\n\tshowClose: true,\n\tsize: 'sm',\n\ttransition: 'fade',\n\ttransitionDuration: 350,\n\tpanelClasses: () => [],\n\toverlayClasses: () => [],\n});\n\nexport type BbOffCanvasEvents = {\n\t(e: 'shown'): void;\n\t(e: 'hidden'): void;\n\t(e: 'update:modelValue', value: boolean): void;\n};\n\nconst emit = defineEmits<BbOffCanvasEvents>();\n\nexport type BbOffCanvasSlots = {\n\theader?: (props: {\n\t\ttitleId: typeof titleId;\n\t\tclose: typeof onCloseClick;\n\t\ttitle: BbOffCanvasProps['title'];\n\t}) => any;\n\ttitle?: (props: { text: BbOffCanvasProps['title'] }) => any;\n\tclose?: (props: { text: BbOffCanvasProps['closeLabel'] }) => any;\n\tdescription?: (props: {\n\t\tdescriptionId: typeof descriptionId;\n\t\ttext: BbOffCanvasProps['description'];\n\t}) => any;\n\tdefault?: (props: object) => any;\n\tcontent?: (props: { close: typeof onCloseClick }) => any;\n\tfooter?: (props: object) => any;\n};\n\ndefineSlots<BbOffCanvasSlots>();\n\nconst titleId = `title_${useId().id.value}`;\nconst descriptionId = `description_${useId().id.value}`;\n\nconst overlay = ref<HTMLElement | null>(null);\nconst panel = ref<HTMLElement | null>(null);\nconst content = ref<HTMLElement | null>(null);\nconst header = ref<HTMLElement | null>(null);\nconst body = ref<HTMLElement | null>(null);\nconst footer = ref<HTMLElement | null>(null);\nconst attrs = useAttrs();\n\n// @ts-expect-error possibly undef\nconst isNuxt = !!getCurrentInstance()?.proxy?.$nuxt;\n\nconst orderInStack = ref(0);\nconst isCurrent = computed(() => {\n\tconst { openedModals } = useModalsState();\n\treturn openedModals.value && openedModals.value === orderInStack.value;\n});\n\nconst { activate, deactivate } = useFocusTrap(panel, {\n\tinitialFocus: props.focusTarget ?? undefined,\n\tclickOutsideDeactivates: true,\n\t/* On esc deactivate the trap, return focus and then close the modal */\n\tescapeDeactivates: () => {\n\t\tnextTick(() => {\n\t\t\temit('update:modelValue', false);\n\t\t});\n\t\treturn true;\n\t},\n});\n\nconst closeLabel = computed(() => props.closeLabel);\n\nconst open = ref(false);\nconst opening = ref(false);\nconst closed = ref(true);\nconst closing = ref(false);\nconst hasRenderedAtLeastOnce = ref(props.eager || props.modelValue);\nconst lastFocusedElement = ref<Element | null>(null);\n\nconst busy = computed(() => opening.value || closing.value);\n\nconst restrictBody = () => {\n\tif (!globalThis.document) return;\n\tconst scrollBarWidth =\n\t\twindow.innerWidth - document.documentElement.clientWidth;\n\tdocument.body.style.overflow = 'hidden';\n\tdocument.body.style.paddingRight = `${scrollBarWidth}px`;\n};\nconst releaseBody = () => {\n\tif (!globalThis.document) return;\n\tdocument.body.style.overflow = 'auto';\n\tdocument.body.style.paddingRight = '0px';\n};\n\nonBeforeUnmount(() => {\n\tif (props.modelValue) {\n\t\tconst { openedModals, modalHasClosed } = useModalsState();\n\t\tif (openedModals.value) {\n\t\t\tmodalHasClosed();\n\t\t\torderInStack.value = 0;\n\t\t\treleaseBody();\n\t\t}\n\t}\n});\n\nonMounted(() => {\n\tif (!props.modelValue && !hasRenderedAtLeastOnce.value) return;\n\tif (isNuxt && !globalThis.document) return;\n\talignToModelValue();\n});\nonBeforeUnmount(() => {\n\tif (props.modelValue) {\n\t\tconst { openedModals, modalHasClosed } = useModalsState();\n\t\tif (openedModals.value) {\n\t\t\tmodalHasClosed();\n\t\t\torderInStack.value = 0;\n\t\t\treleaseBody();\n\t\t}\n\t}\n});\n\n/**\n * Every time modelValue changes align the display to it\n */\nwatch(\n\t() => props.modelValue,\n\t() => {\n\t\tif (!props.modelValue && !hasRenderedAtLeastOnce.value) return;\n\t\tif (isNuxt && !globalThis.document) return;\n\t\talignToModelValue();\n\t},\n\t{ flush: 'post' }\n);\n\n/**\n * When modelValue becomes true if the component wasn't rendered render it\n * and wait for it to be on the page (or transitions would not work).\n * Stash the latest focused element so we can return it later when it closes.\n * Focus on the panel upon opening.\n * ---\n * Notice all interactions update modelValue and then this function aligns the display to it\n */\nconst alignToModelValue = async () => {\n\tif (props.modelValue) {\n\t\tif (!hasRenderedAtLeastOnce.value) {\n\t\t\thasRenderedAtLeastOnce.value = true;\n\t\t}\n\n\t\tclosed.value = false;\n\t\tclosing.value = false;\n\t\topening.value = true;\n\n\t\t// This prevents overscroll chaining (additional scrolling to the body when the modal has been completely scrolled)\n\t\tconst { modalHasOpened, openedModals } = useModalsState();\n\t\tmodalHasOpened();\n\t\torderInStack.value = openedModals.value;\n\t\trestrictBody();\n\t\tawait wait(props.transitionDuration);\n\n\t\topening.value = false;\n\t\topen.value = true;\n\t\temit('shown');\n\t\tactivate();\n\t} else {\n\t\tdeactivate();\n\t\topening.value = false;\n\t\topen.value = false;\n\t\tclosing.value = true;\n\n\t\tconst { modalHasClosed, openedModals } = useModalsState();\n\t\tmodalHasClosed();\n\t\torderInStack.value = 0;\n\t\tif (!openedModals.value) {\n\t\t\treleaseBody();\n\t\t}\n\t\tawait wait(props.transitionDuration);\n\n\t\tclosing.value = false;\n\t\tclosed.value = true;\n\t\temit('hidden');\n\t\tif (lastFocusedElement.value instanceof HTMLElement) {\n\t\t\tlastFocusedElement.value.focus();\n\t\t}\n\t}\n};\n\n/**\n * Disable scrolling\n */\nconst onOverlayScroll = (event: Event) => {\n\tif (event.target === overlay.value) {\n\t\tevent.preventDefault();\n\t}\n};\n\n/**\n * Close the modal on overlay click if not persistent\n */\nconst onOverlayClick = (event: MouseEvent) => {\n\tif (props.disabled || busy.value) return;\n\tif (overlay.value) {\n\t\tif (event.target === overlay.value) {\n\t\t\tif (!props.persistent) {\n\t\t\t\temit('update:modelValue', false);\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * On click on the X button\n */\nconst onCloseClick = () => {\n\tif (props.disabled) return;\n\temit('update:modelValue', false);\n};\n\nconst overlayAttributes = computed(() => {\n\tconst classes = [\n\t\t{\n\t\t\t'bb-offcanvas bb-offcanvas__overlay': true,\n\t\t\t'bb-offcanvas--fullscreen': props.fullscreen,\n\t\t\t'bb-offcanvas--faded': !isCurrent.value,\n\t\t\t'bb-offcanvas--open': open.value,\n\t\t\t'bb-offcanvas--opening': opening.value,\n\t\t\t'bb-offcanvas--closed': closed.value,\n\t\t\t'bb-offcanvas--closing': closing.value,\n\t\t\t[`bb-offcanvas--transition-${props.transition}`]: true,\n\t\t\t[`bb-offcanvas--${props.direction}`]: true,\n\t\t},\n\t\tprops.overlayClasses,\n\t].flat();\n\tconst eventListeners = {\n\t\tonClick: onOverlayClick,\n\t\tonScroll: onOverlayScroll,\n\t\tonTouchmove: onOverlayScroll,\n\t\tonWheel: onOverlayScroll,\n\t\tonKeydown: onOverlayScroll,\n\t};\n\n\tconst style = {\n\t\ttransitionDuration: props.transitionDuration / 1000 + 's',\n\t};\n\treturn {\n\t\tclass: classes,\n\t\tstyle,\n\t\t...eventListeners,\n\t\t...attrs,\n\t};\n});\n\nconst panelAttributes = computed(() => {\n\tconst classes = [\n\t\t{\n\t\t\t'bb-offcanvas__panel': true,\n\t\t\t'bb-offcanvas__panel--compact': props.compact,\n\t\t},\n\t\tprops.panelClasses,\n\t].flat();\n\n\tconst accessibilityAttrs: {\n\t\t[key: string]: string | boolean;\n\t} = {\n\t\trole: 'dialog',\n\t\t'aria-modal': true,\n\t};\n\n\tif (hasRenderedAtLeastOnce.value) {\n\t\taccessibilityAttrs['aria-labelledby'] = titleId;\n\n\t\tif (props.description)\n\t\t\taccessibilityAttrs['aria-describedby'] = descriptionId;\n\t}\n\n\tlet maxWidth;\n\tlet maxHeight;\n\tlet height;\n\tconst sizes: Sizes = {\n\t\tsm: 384,\n\t\tmd: 652,\n\t\tlg: 896,\n\t};\n\tif (props.direction === 'left' || props.direction === 'right') {\n\t\tif (props.fullscreen) maxWidth = '100%';\n\t\telse if (typeof props.size === 'number') maxWidth = props.size + 'px';\n\t\telse if (props.size in sizes)\n\t\t\tmaxWidth = sizes[props.size as keyof Sizes] + 'px';\n\t\telse maxWidth = props.size + 'px';\n\t} else {\n\t\tif (props.fullscreen) height = '100%';\n\t\telse if (typeof props.size === 'number') height = props.size + 'px';\n\t\telse if (props.size in sizes)\n\t\t\theight = sizes[props.size as keyof Sizes] + 'px';\n\t\telse if (!Number.isNaN(Number(props.size))) height = props.size + 'px';\n\t\telse if (props.size === 'auto') height = 'auto';\n\t}\n\n\tconst style = {\n\t\tmaxWidth,\n\t\tmaxHeight,\n\t\theight,\n\t\ttransitionDuration: props.transitionDuration / 1000 + 's',\n\t};\n\n\treturn {\n\t\tclass: classes,\n\t\tstyle,\n\t\t...accessibilityAttrs,\n\t};\n});\n</script>\n\n<style lang=\"postcss\">\n@import '@/assets/css/BbOffCanvas';\n</style>\n"],"names":["props","__props","emit","__emit","titleId","useId","descriptionId","overlay","ref","panel","content","header","body","footer","attrs","useAttrs","isNuxt","_b","_a","getCurrentInstance","orderInStack","isCurrent","computed","openedModals","useModalsState","activate","deactivate","useFocusTrap","nextTick","closeLabel","open","opening","closed","closing","hasRenderedAtLeastOnce","lastFocusedElement","busy","restrictBody","scrollBarWidth","releaseBody","onBeforeUnmount","modalHasClosed","onMounted","alignToModelValue","watch","modalHasOpened","wait","onOverlayScroll","event","onOverlayClick","onCloseClick","overlayAttributes","classes","eventListeners","style","panelAttributes","accessibilityAttrs","maxWidth","maxHeight","height","sizes"],"mappings":"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"}
|