@7pmlabs/design-system 2.0.8 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/design-system.css +1 -1
- package/dist/design-system.js +65 -59
- package/dist/design-system100.js +1 -1
- package/dist/design-system100.js.map +1 -1
- package/dist/design-system101.js +87 -53
- package/dist/design-system101.js.map +1 -1
- package/dist/design-system103.js +5 -13
- package/dist/design-system103.js.map +1 -1
- package/dist/design-system104.js +53 -108
- package/dist/design-system104.js.map +1 -1
- package/dist/{design-system102.js → design-system105.js} +1 -1
- package/dist/{design-system102.js.map → design-system105.js.map} +1 -1
- package/dist/design-system106.js +13 -6
- package/dist/design-system106.js.map +1 -1
- package/dist/design-system107.js +93 -190
- package/dist/design-system107.js.map +1 -1
- package/dist/design-system109.js +2 -2
- package/dist/design-system109.js.map +1 -1
- package/dist/design-system110.js +183 -484
- package/dist/design-system110.js.map +1 -1
- package/dist/design-system112.js +5 -4
- package/dist/design-system112.js.map +1 -1
- package/dist/design-system113.js +507 -7
- package/dist/design-system113.js.map +1 -1
- package/dist/design-system115.js +8 -0
- package/dist/design-system115.js.map +1 -0
- package/dist/design-system116.js +7 -6
- package/dist/design-system116.js.map +1 -1
- package/dist/design-system117.js +154 -169
- package/dist/design-system117.js.map +1 -1
- package/dist/design-system119.js +2 -2
- package/dist/design-system119.js.map +1 -1
- package/dist/design-system120.js +210 -149
- package/dist/design-system120.js.map +1 -1
- package/dist/design-system122.js +5 -4
- package/dist/design-system122.js.map +1 -1
- package/dist/design-system123.js +160 -9
- package/dist/design-system123.js.map +1 -1
- package/dist/design-system125.js +8 -0
- package/dist/design-system125.js.map +1 -0
- package/dist/design-system126.js +176 -6
- package/dist/design-system126.js.map +1 -1
- package/dist/design-system128.js +8 -0
- package/dist/design-system128.js.map +1 -0
- package/dist/design-system129.js +213 -5
- package/dist/design-system129.js.map +1 -1
- package/dist/design-system131.js +5 -90
- package/dist/design-system131.js.map +1 -1
- package/dist/design-system132.js +166 -0
- package/dist/design-system132.js.map +1 -0
- package/dist/design-system134.js +5 -42
- package/dist/design-system134.js.map +1 -1
- package/dist/design-system135.js +12 -0
- package/dist/design-system135.js.map +1 -0
- package/dist/design-system136.js +274 -5
- package/dist/design-system136.js.map +1 -1
- package/dist/design-system138.js +9 -0
- package/dist/{design-system124.js.map → design-system138.js.map} +1 -1
- package/dist/design-system139.js +16 -5
- package/dist/design-system139.js.map +1 -1
- package/dist/design-system141.js +8 -0
- package/dist/{design-system127.js.map → design-system141.js.map} +1 -1
- package/dist/design-system142.js +12 -5
- package/dist/design-system142.js.map +1 -1
- package/dist/design-system143.js +78 -83
- package/dist/design-system143.js.map +1 -1
- package/dist/design-system145.js +1 -1
- package/dist/design-system145.js.map +1 -1
- package/dist/design-system146.js +42 -9
- package/dist/design-system146.js.map +1 -1
- package/dist/design-system148.js +3 -2
- package/dist/design-system148.js.map +1 -1
- package/dist/design-system149.js +230 -18
- package/dist/design-system149.js.map +1 -1
- package/dist/design-system151.js +5 -158
- package/dist/design-system151.js.map +1 -1
- package/dist/{design-system140.js → design-system152.js} +6 -6
- package/dist/{design-system140.js.map → design-system152.js.map} +1 -1
- package/dist/design-system154.js +5 -307
- package/dist/design-system154.js.map +1 -1
- package/dist/design-system155.js +98 -0
- package/dist/design-system155.js.map +1 -0
- package/dist/design-system157.js +5 -240
- package/dist/design-system157.js.map +1 -1
- package/dist/design-system158.js +12 -0
- package/dist/design-system158.js.map +1 -0
- package/dist/design-system159.js +37 -5
- package/dist/design-system159.js.map +1 -1
- package/dist/design-system160.js +4 -189
- package/dist/design-system160.js.map +1 -1
- package/dist/design-system161.js +24 -0
- package/dist/{design-system150.js.map → design-system161.js.map} +1 -1
- package/dist/design-system162.js +2 -3
- package/dist/design-system162.js.map +1 -1
- package/dist/design-system163.js +158 -3
- package/dist/design-system163.js.map +1 -1
- package/dist/{design-system153.js → design-system165.js} +2 -2
- package/dist/{design-system153.js.map → design-system165.js.map} +1 -1
- package/dist/design-system166.js +307 -6
- package/dist/design-system166.js.map +1 -1
- package/dist/{design-system156.js → design-system168.js} +2 -2
- package/dist/{design-system156.js.map → design-system168.js.map} +1 -1
- package/dist/design-system169.js +167 -6
- package/dist/design-system169.js.map +1 -1
- package/dist/design-system171.js +8 -0
- package/dist/design-system171.js.map +1 -0
- package/dist/design-system172.js +240 -6
- package/dist/design-system172.js.map +1 -1
- package/dist/design-system174.js +8 -0
- package/dist/design-system174.js.map +1 -0
- package/dist/design-system175.js +189 -6
- package/dist/design-system175.js.map +1 -1
- package/dist/design-system177.js +8 -0
- package/dist/design-system177.js.map +1 -0
- package/dist/design-system178.js +3 -5
- package/dist/design-system178.js.map +1 -1
- package/dist/design-system179.js +58 -11
- package/dist/design-system179.js.map +1 -1
- package/dist/design-system181.js +9 -0
- package/dist/design-system181.js.map +1 -0
- package/dist/design-system182.js +56 -6
- package/dist/design-system182.js.map +1 -1
- package/dist/design-system184.js +9 -0
- package/dist/{design-system167.js.map → design-system184.js.map} +1 -1
- package/dist/design-system185.js +69 -5
- package/dist/design-system185.js.map +1 -1
- package/dist/design-system187.js +9 -0
- package/dist/{design-system170.js.map → design-system187.js.map} +1 -1
- package/dist/design-system188.js +182 -5
- package/dist/design-system188.js.map +1 -1
- package/dist/design-system190.js +9 -0
- package/dist/design-system190.js.map +1 -0
- package/dist/design-system191.js +115 -5
- package/dist/design-system191.js.map +1 -1
- package/dist/design-system193.js +8 -0
- package/dist/{design-system176.js.map → design-system193.js.map} +1 -1
- package/dist/design-system194.js +11 -5
- package/dist/design-system194.js.map +1 -1
- package/dist/design-system195.js +453 -24
- package/dist/design-system195.js.map +1 -1
- package/dist/design-system197.js +5 -4
- package/dist/design-system197.js.map +1 -1
- package/dist/design-system198.js +20 -16
- package/dist/design-system198.js.map +1 -1
- package/dist/design-system200.js +1 -1
- package/dist/design-system200.js.map +1 -1
- package/dist/design-system201.js +70 -314
- package/dist/design-system201.js.map +1 -1
- package/dist/design-system203.js +1 -1
- package/dist/design-system203.js.map +1 -1
- package/dist/design-system204.js +24 -89
- package/dist/design-system204.js.map +1 -1
- package/dist/design-system206.js +1 -1
- package/dist/design-system206.js.map +1 -1
- package/dist/design-system207.js +26 -17
- package/dist/design-system207.js.map +1 -1
- package/dist/design-system209.js +5 -3
- package/dist/design-system209.js.map +1 -1
- package/dist/design-system210.js +22 -408
- package/dist/design-system210.js.map +1 -1
- package/dist/design-system212.js +1 -1
- package/dist/design-system212.js.map +1 -1
- package/dist/design-system213.js +24 -52
- package/dist/design-system213.js.map +1 -1
- package/dist/design-system215.js +1 -1
- package/dist/design-system215.js.map +1 -1
- package/dist/design-system216.js +329 -85
- package/dist/design-system216.js.map +1 -1
- package/dist/design-system218.js +5 -108
- package/dist/design-system218.js.map +1 -1
- package/dist/design-system219.js +103 -0
- package/dist/design-system219.js.map +1 -0
- package/dist/design-system221.js +5 -106
- package/dist/design-system221.js.map +1 -1
- package/dist/design-system222.js +22 -0
- package/dist/{design-system208.js.map → design-system222.js.map} +1 -1
- package/dist/design-system223.js +4 -6
- package/dist/design-system223.js.map +1 -1
- package/dist/design-system224.js +3 -737
- package/dist/design-system224.js.map +1 -1
- package/dist/design-system225.js +422 -0
- package/dist/design-system225.js.map +1 -0
- package/dist/design-system227.js +5 -11
- package/dist/design-system227.js.map +1 -1
- package/dist/design-system228.js +51 -517
- package/dist/design-system228.js.map +1 -1
- package/dist/design-system230.js +1 -1
- package/dist/design-system230.js.map +1 -1
- package/dist/design-system231.js +88 -3
- package/dist/design-system231.js.map +1 -1
- package/dist/design-system232.js +4 -46
- package/dist/design-system232.js.map +1 -1
- package/dist/design-system233.js +108 -4
- package/dist/design-system233.js.map +1 -1
- package/dist/{design-system220.js → design-system235.js} +2 -2
- package/dist/{design-system220.js.map → design-system235.js.map} +1 -1
- package/dist/design-system236.js +106 -5
- package/dist/design-system236.js.map +1 -1
- package/dist/design-system238.js +9 -0
- package/dist/design-system238.js.map +1 -0
- package/dist/design-system239.js +737 -5
- package/dist/design-system239.js.map +1 -1
- package/dist/{design-system226.js → design-system241.js} +2 -2
- package/dist/{design-system226.js.map → design-system241.js.map} +1 -1
- package/dist/design-system242.js +3 -5
- package/dist/design-system242.js.map +1 -1
- package/dist/design-system243.js +42 -50
- package/dist/design-system243.js.map +1 -1
- package/dist/design-system244.js +1 -1
- package/dist/design-system244.js.map +1 -1
- package/dist/design-system245.js +254 -141
- package/dist/design-system245.js.map +1 -1
- package/dist/design-system247.js +1 -1
- package/dist/design-system247.js.map +1 -1
- package/dist/design-system248.js +119 -7
- package/dist/design-system248.js.map +1 -1
- package/dist/design-system250.js +8 -0
- package/dist/design-system250.js.map +1 -0
- package/dist/design-system251.js +172 -5
- package/dist/design-system251.js.map +1 -1
- package/dist/design-system253.js +8 -0
- package/dist/design-system253.js.map +1 -0
- package/dist/design-system254.js +11 -6
- package/dist/design-system254.js.map +1 -1
- package/dist/design-system255.js +525 -9
- package/dist/design-system255.js.map +1 -1
- package/dist/design-system257.js +8 -0
- package/dist/design-system257.js.map +1 -0
- package/dist/design-system258.js +112 -6
- package/dist/design-system258.js.map +1 -1
- package/dist/design-system260.js +5 -374
- package/dist/design-system260.js.map +1 -1
- package/dist/design-system261.js +57 -0
- package/dist/design-system261.js.map +1 -0
- package/dist/design-system262.js +4 -6
- package/dist/design-system262.js.map +1 -1
- package/dist/design-system263.js +173 -0
- package/dist/design-system263.js.map +1 -0
- package/dist/design-system265.js +8 -0
- package/dist/design-system265.js.map +1 -0
- package/dist/design-system266.js +10 -0
- package/dist/design-system266.js.map +1 -0
- package/dist/{design-system249.js → design-system267.js} +2 -2
- package/dist/{design-system249.js.map → design-system267.js.map} +1 -1
- package/dist/design-system269.js +8 -0
- package/dist/design-system269.js.map +1 -0
- package/dist/{design-system252.js → design-system270.js} +1 -1
- package/dist/{design-system252.js.map → design-system270.js.map} +1 -1
- package/dist/design-system272.js +9 -0
- package/dist/design-system272.js.map +1 -0
- package/dist/design-system273.js +12 -0
- package/dist/design-system273.js.map +1 -0
- package/dist/{design-system256.js → design-system274.js} +2 -2
- package/dist/{design-system256.js.map → design-system274.js.map} +1 -1
- package/dist/design-system276.js +9 -0
- package/dist/design-system276.js.map +1 -0
- package/dist/{design-system259.js → design-system277.js} +1 -1
- package/dist/{design-system259.js.map → design-system277.js.map} +1 -1
- package/dist/design-system278.js +377 -0
- package/dist/design-system278.js.map +1 -0
- package/dist/design-system280.js +9 -0
- package/dist/design-system280.js.map +1 -0
- package/dist/design-system69.js +182 -13
- package/dist/design-system69.js.map +1 -1
- package/dist/design-system71.js +8 -0
- package/dist/design-system71.js.map +1 -0
- package/dist/design-system72.js +13 -5
- package/dist/design-system72.js.map +1 -1
- package/dist/design-system73.js +677 -139
- package/dist/design-system73.js.map +1 -1
- package/dist/design-system75.js +1 -1
- package/dist/design-system75.js.map +1 -1
- package/dist/design-system76.js +152 -23
- package/dist/design-system76.js.map +1 -1
- package/dist/design-system78.js +5 -49
- package/dist/design-system78.js.map +1 -1
- package/dist/design-system79.js +32 -0
- package/dist/design-system79.js.map +1 -0
- package/dist/design-system80.js +2 -3
- package/dist/design-system80.js.map +1 -1
- package/dist/design-system81.js +38 -188
- package/dist/design-system81.js.map +1 -1
- package/dist/design-system83.js +1 -1
- package/dist/design-system83.js.map +1 -1
- package/dist/design-system84.js +199 -7
- package/dist/design-system84.js.map +1 -1
- package/dist/design-system86.js +8 -0
- package/dist/design-system86.js.map +1 -0
- package/dist/design-system87.js +7 -5
- package/dist/design-system87.js.map +1 -1
- package/dist/design-system88.js +264 -48
- package/dist/design-system88.js.map +1 -1
- package/dist/design-system90.js +1 -1
- package/dist/design-system90.js.map +1 -1
- package/dist/design-system91.js +57 -11
- package/dist/design-system91.js.map +1 -1
- package/dist/design-system93.js +8 -0
- package/dist/design-system93.js.map +1 -0
- package/dist/design-system94.js +11 -5
- package/dist/design-system94.js.map +1 -1
- package/dist/design-system95.js +92 -59
- package/dist/design-system95.js.map +1 -1
- package/dist/design-system97.js +1 -1
- package/dist/design-system97.js.map +1 -1
- package/dist/design-system98.js +56 -78
- package/dist/design-system98.js.map +1 -1
- package/dist/types/components/BContextMenu/BContextMenu.spec.d.ts +1 -0
- package/dist/types/components/BContextMenu/BContextMenu.vue.d.ts +42 -0
- package/dist/types/components/BContextMenu/index.d.ts +2 -0
- package/dist/types/components/BContextMenu/types.d.ts +23 -0
- package/dist/types/components/BInputTags/BInputTags.spec.d.ts +1 -0
- package/dist/types/components/BInputTags/BInputTags.vue.d.ts +54 -0
- package/dist/types/components/BInputTags/index.d.ts +1 -0
- package/dist/types/components/BLink/BLink.spec.d.ts +1 -0
- package/dist/types/components/BLink/BLink.vue.d.ts +100 -0
- package/dist/types/components/BLink/index.d.ts +1 -0
- package/dist/types/components/BListbox/BListbox.spec.d.ts +1 -0
- package/dist/types/components/BListbox/BListbox.vue.d.ts +52 -0
- package/dist/types/components/BListbox/index.d.ts +1 -0
- package/dist/types/components/BModal/BModal.spec.d.ts +1 -0
- package/dist/types/components/BPinInput/BPinInput.spec.d.ts +1 -0
- package/dist/types/components/BPinInput/BPinInput.vue.d.ts +43 -0
- package/dist/types/components/BPinInput/index.d.ts +1 -0
- package/dist/types/components/BProgress/BProgress.vue.d.ts +47 -2
- package/dist/types/components/BTextarea/BTextarea.spec.d.ts +1 -0
- package/dist/types/components/BTextarea/BTextarea.vue.d.ts +77 -0
- package/dist/types/components/BTextarea/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +7 -1
- package/package.json +1 -1
- package/dist/design-system114.js +0 -212
- package/dist/design-system114.js.map +0 -1
- package/dist/design-system124.js +0 -277
- package/dist/design-system127.js +0 -19
- package/dist/design-system130.js +0 -15
- package/dist/design-system130.js.map +0 -1
- package/dist/design-system133.js +0 -8
- package/dist/design-system133.js.map +0 -1
- package/dist/design-system137.js +0 -236
- package/dist/design-system137.js.map +0 -1
- package/dist/design-system147.js +0 -40
- package/dist/design-system147.js.map +0 -1
- package/dist/design-system150.js +0 -7
- package/dist/design-system164.js +0 -61
- package/dist/design-system164.js.map +0 -1
- package/dist/design-system167.js +0 -59
- package/dist/design-system170.js +0 -72
- package/dist/design-system173.js +0 -185
- package/dist/design-system173.js.map +0 -1
- package/dist/design-system176.js +0 -118
- package/dist/design-system180.js +0 -465
- package/dist/design-system180.js.map +0 -1
- package/dist/design-system183.js +0 -38
- package/dist/design-system183.js.map +0 -1
- package/dist/design-system186.js +0 -91
- package/dist/design-system186.js.map +0 -1
- package/dist/design-system189.js +0 -38
- package/dist/design-system189.js.map +0 -1
- package/dist/design-system192.js +0 -31
- package/dist/design-system192.js.map +0 -1
- package/dist/design-system208.js +0 -7
- package/dist/design-system217.js +0 -7
- package/dist/design-system217.js.map +0 -1
- package/dist/design-system234.js +0 -286
- package/dist/design-system234.js.map +0 -1
- package/dist/design-system237.js +0 -122
- package/dist/design-system237.js.map +0 -1
- package/dist/design-system240.js +0 -115
- package/dist/design-system240.js.map +0 -1
- package/dist/design-system70.js +0 -699
- package/dist/design-system70.js.map +0 -1
- package/dist/design-system77.js +0 -7
- package/dist/design-system77.js.map +0 -1
- package/dist/design-system85.js +0 -276
- package/dist/design-system85.js.map +0 -1
- package/dist/design-system92.js +0 -102
- package/dist/design-system92.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system197.js","names":[],"sources":["../src/components/BSkeleton/BSkeletonInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { BSkeletonInputSize } from './types';\n\nconst {\n active = false,\n block = false,\n size = 'default',\n} = defineProps<{\n /** Animated shimmer effect. @default false */\n active?: boolean;\n /** Stretch to full width. @default false */\n block?: boolean;\n /** Input size. @default 'default' */\n size?: BSkeletonInputSize;\n}>();\n\nconst classes = computed(() => [\n 'b-skeleton-element',\n 'b-skeleton-input',\n `b-skeleton-input--${size}`,\n {\n 'b-skeleton-input--block': block,\n 'b-skeleton-element--active': active,\n },\n]);\n</script>\n\n<template>\n <span :class=\"classes\" role=\"presentation\" aria-hidden=\"true\" />\n</template>\n\n<style>\n.b-skeleton-input {\n display: inline-block;\n vertical-align: top;\n height: var(--b-skeleton-control-height, 32px);\n min-width: var(--b-skeleton-input-min-width, 160px);\n background: var(--b-skeleton-gradient-from-color, oklch(93% 0 0));\n border-radius: var(--b-skeleton-border-radius, 6px);\n}\n\n.b-skeleton-input--small {\n height: var(--b-skeleton-control-height-sm, 24px);\n min-width: 96px;\n border-radius: var(--b-skeleton-border-radius-sm, 4px);\n}\n\n.b-skeleton-input--large {\n height: var(--b-skeleton-control-height-lg, 40px);\n min-width: 200px;\n}\n\n.b-skeleton-input--block {\n display: block;\n width: 100%;\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"design-system197.js","names":[],"sources":["../src/components/BSelect/BSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { BCommonSize } from '@/types.ts';\nimport { computed, nextTick, ref, useAttrs, watch } from 'vue';\nimport {\n BSelectMode,\n BSelectPlacement,\n BSelectStatus,\n BSelectVariant,\n type BSelectFieldNames,\n type BSelectOption,\n} from './types.ts';\n\ndefineOptions({ inheritAttrs: false });\n\nconst attrs = useAttrs();\n\nconst {\n options = [],\n size = BCommonSize.Medium,\n variant = BSelectVariant.Outlined,\n defaultActiveFirstOption = true,\n allowClear = false,\n popupMatchSelectWidth = true,\n showSearch = false,\n listHeight = 256,\n loading = false,\n maxTagCount,\n maxCount,\n placement: _placement = BSelectPlacement.BottomLeft,\n filterOption = true,\n notFoundContent = 'No data',\n fieldNames,\n placeholder,\n mode,\n tokenSeparators,\n disabled,\n status,\n open,\n} = defineProps<{\n /** Data source options array. */\n options?: BSelectOption[];\n /** Size of the selector. */\n size?: `${BCommonSize}`;\n /** Visual variant. */\n variant?: `${BSelectVariant}`;\n /** Whether the component is disabled. */\n disabled?: boolean;\n /** Validation status. */\n status?: `${BSelectStatus}`;\n /** Placeholder text. */\n placeholder?: string;\n /** Selection mode: multiple or tags. */\n mode?: `${BSelectMode}`;\n /** Whether to activate the first option by default. */\n defaultActiveFirstOption?: boolean;\n /** Show clear button. */\n allowClear?: boolean;\n /** Controlled open state. */\n open?: boolean;\n /** Default open state (uncontrolled). */\n defaultOpen?: boolean;\n /** Whether to show search input. Automatically true in multiple/tags mode. */\n showSearch?: boolean;\n /** Whether dropdown width matches selector width. */\n popupMatchSelectWidth?: boolean | number;\n /** Max height of popup list in px. */\n listHeight?: number;\n /** Loading state. */\n loading?: boolean;\n /** Max tag count visible (multiple/tags mode). */\n maxTagCount?: number | 'responsive';\n /** Max selected items (multiple/tags mode). */\n maxCount?: number;\n /** Dropdown placement. */\n placement?: `${BSelectPlacement}`;\n /** Content shown when no options match. Set to null to hide. */\n notFoundContent?: string | null;\n /** Customize field names mapping. */\n fieldNames?: BSelectFieldNames;\n /** Filter options by input. true uses default, function for custom. */\n filterOption?: boolean | ((inputValue: string, option: BSelectOption) => boolean);\n /** Separators for tags mode to auto-tokenize. */\n tokenSeparators?: string[];\n /** Whether the selected option label is included in value. */\n labelInValue?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Fired when value changes. */\n change: [value: string | number | (string | number)[], option: BSelectOption | BSelectOption[]];\n /** Fired when an option is selected. */\n select: [value: string | number, option: BSelectOption];\n /** Fired when an option is deselected (multiple/tags). */\n deselect: [value: string | number, option: BSelectOption];\n /** Fired on focus. */\n focus: [event: FocusEvent];\n /** Fired on blur. */\n blur: [event: FocusEvent];\n /** Fired when clear button is clicked. */\n clear: [];\n /** Fired when dropdown opens/closes. */\n openChange: [open: boolean];\n /** Fired when searching (multiple/tags mode). */\n search: [value: string];\n /** Fired on dropdown scroll. */\n popupScroll: [event: Event];\n /** Fired on input keydown. */\n inputKeyDown: [event: KeyboardEvent];\n}>();\n\nconst model = defineModel<string | number | (string | number)[] | null | undefined>();\n\nconst { componentUID } = useComponentId();\nconst anchorName = computed(() => `--b-select-anchor-${componentUID.value}`);\nconst listboxId = computed(() => `b-select-listbox-${componentUID.value}`);\n\nconst selectorRef = ref<HTMLElement | null>(null);\nconst searchInputRef = ref<HTMLInputElement | null>(null);\nconst menuRef = ref<HTMLElement | null>(null);\nconst isOpen = ref(false);\nconst activeIndex = ref(-1);\nconst searchValue = ref('');\n\nconst labelField = computed(() => fieldNames?.label ?? 'label');\nconst valueField = computed(() => fieldNames?.value ?? 'value');\nconst optionsField = computed(() => fieldNames?.options ?? 'options');\n\nconst isSearchable = computed(() => {\n if (mode === BSelectMode.Multiple || mode === BSelectMode.Tags) return true;\n return showSearch;\n});\n\nconst getOptionLabel = (opt: BSelectOption): string => {\n const record = opt as unknown as Record<string, unknown>;\n const label = record[labelField.value];\n const value = record[valueField.value];\n return String(label ?? value ?? '');\n};\n\nconst getOptionValue = (opt: BSelectOption): string | number => {\n const record = opt as unknown as Record<string, unknown>;\n return record[valueField.value] as string | number;\n};\n\nconst flatOptions = computed((): BSelectOption[] => {\n const result: BSelectOption[] = [];\n for (const opt of options) {\n const record = opt as unknown as Record<string, unknown>;\n const nested = record[optionsField.value] as BSelectOption[] | undefined;\n if (nested && Array.isArray(nested)) {\n for (const child of nested) {\n result.push(child);\n }\n } else {\n result.push(opt);\n }\n }\n return result;\n});\n\nconst filteredOptions = computed((): BSelectOption[] => {\n if (!searchValue.value || !isSearchable.value) return flatOptions.value;\n if (filterOption === false) return flatOptions.value;\n if (typeof filterOption === 'function') {\n return flatOptions.value.filter((opt) => filterOption(searchValue.value, opt));\n }\n const query = searchValue.value.toLowerCase();\n return flatOptions.value.filter((opt) => {\n return getOptionLabel(opt).toLowerCase().includes(query);\n });\n});\n\nconst selectedValues = computed((): (string | number)[] => {\n if (model.value == null) return [];\n if (Array.isArray(model.value)) return model.value;\n return [model.value];\n});\n\nconst selectedOptions = computed((): BSelectOption[] => {\n return selectedValues.value\n .map((v) => flatOptions.value.find((opt) => getOptionValue(opt) === v))\n .filter(Boolean) as BSelectOption[];\n});\n\nconst displayLabel = computed((): string => {\n if (isMultipleMode.value) return '';\n if (selectedOptions.value.length === 0) return '';\n return getOptionLabel(selectedOptions.value[0]);\n});\n\nconst isMultipleMode = computed(() => {\n return mode === BSelectMode.Multiple || mode === BSelectMode.Tags;\n});\n\nconst visibleTags = computed(() => {\n if (maxTagCount == null || maxTagCount === 'responsive') return selectedOptions.value;\n return selectedOptions.value.slice(0, maxTagCount as number);\n});\n\nconst hiddenTagCount = computed(() => {\n if (maxTagCount == null || maxTagCount === 'responsive') return 0;\n return Math.max(0, selectedOptions.value.length - (maxTagCount as number));\n});\n\nconst isOptionSelected = (opt: BSelectOption): boolean => {\n return selectedValues.value.includes(getOptionValue(opt));\n};\n\nconst openMenu = () => {\n if (isOpen.value) return;\n menuRef.value?.showPopover();\n};\n\nconst closeMenu = () => {\n if (!isOpen.value) return;\n menuRef.value?.hidePopover();\n};\n\nconst handleToggle = ({ newState }: ToggleEvent) => {\n const nowOpen = newState === 'open';\n isOpen.value = nowOpen;\n emit('openChange', nowOpen);\n if (nowOpen) {\n if (defaultActiveFirstOption && filteredOptions.value.length > 0) {\n activeIndex.value = 0;\n }\n nextTick(() => {\n if (isSearchable.value) {\n searchInputRef.value?.focus();\n }\n });\n } else {\n activeIndex.value = -1;\n searchValue.value = '';\n }\n};\n\nconst selectSingleOption = (opt: BSelectOption) => {\n if (opt.disabled) return;\n const val = getOptionValue(opt);\n model.value = val;\n emit('select', val, opt);\n emit('change', val, opt);\n closeMenu();\n nextTick(() => selectorRef.value?.focus());\n};\n\nconst selectMultipleOption = (opt: BSelectOption) => {\n if (opt.disabled) return;\n const val = getOptionValue(opt);\n const current = selectedValues.value.slice();\n\n if (current.includes(val)) {\n const next = current.filter((v) => v !== val);\n model.value = next;\n emit('deselect', val, opt);\n emit(\n 'change',\n next,\n next.map((v) => flatOptions.value.find((o) => getOptionValue(o) === v)!).filter(Boolean),\n );\n } else {\n if (maxCount != null && current.length >= maxCount) return;\n const next = [...current, val];\n model.value = next;\n emit('select', val, opt);\n emit(\n 'change',\n next,\n next.map((v) => flatOptions.value.find((o) => getOptionValue(o) === v)!).filter(Boolean),\n );\n }\n searchValue.value = '';\n nextTick(() => searchInputRef.value?.focus());\n};\n\nconst selectOption = (opt: BSelectOption) => {\n if (isMultipleMode.value) {\n selectMultipleOption(opt);\n } else {\n selectSingleOption(opt);\n }\n};\n\nconst removeTag = (val: string | number) => {\n const opt = flatOptions.value.find((o) => getOptionValue(o) === val);\n const next = selectedValues.value.filter((v) => v !== val);\n model.value = next;\n if (opt) emit('deselect', val, opt);\n emit(\n 'change',\n next,\n next.map((v) => flatOptions.value.find((o) => getOptionValue(o) === v)!).filter(Boolean),\n );\n};\n\nconst handleClear = (e: Event) => {\n e.stopPropagation();\n if (isMultipleMode.value) {\n model.value = [];\n } else {\n model.value = undefined;\n }\n searchValue.value = '';\n emit('clear');\n emit(\n 'change',\n isMultipleMode.value ? [] : (undefined as unknown as string),\n [] as unknown as BSelectOption,\n );\n};\n\nconst handleSelectorClick = () => {\n if (disabled) return;\n if (isOpen.value) {\n closeMenu();\n } else {\n openMenu();\n }\n};\n\nconst handleSelectorFocus = (e: FocusEvent) => {\n emit('focus', e);\n};\n\nconst handleSelectorBlur = (e: FocusEvent) => {\n const related = e.relatedTarget as HTMLElement | null;\n if (menuRef.value?.contains(related)) return;\n if (selectorRef.value?.contains(related)) return;\n emit('blur', e);\n closeMenu();\n};\n\nconst handleSearchInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n searchValue.value = target.value;\n emit('search', target.value);\n\n if (mode === BSelectMode.Tags && tokenSeparators) {\n const separators = tokenSeparators;\n for (const sep of separators) {\n if (target.value.includes(sep)) {\n const parts = target.value.split(\n new RegExp(\n `[${separators.map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('')}]`,\n ),\n );\n for (const part of parts) {\n const trimmed = part.trim();\n if (trimmed && !selectedValues.value.includes(trimmed)) {\n const existing = flatOptions.value.find(\n (o) => getOptionValue(o) === trimmed || getOptionLabel(o) === trimmed,\n );\n if (existing) {\n selectMultipleOption(existing);\n } else {\n const current = selectedValues.value.slice();\n const next = [...current, trimmed];\n model.value = next;\n emit('select', trimmed, { value: trimmed, label: trimmed });\n emit(\n 'change',\n next,\n next.map(\n (v) =>\n flatOptions.value.find((o) => getOptionValue(o) === v) ?? {\n value: v,\n label: String(v),\n },\n ),\n );\n }\n }\n }\n searchValue.value = '';\n break;\n }\n }\n }\n\n if (!isOpen.value) openMenu();\n activeIndex.value = defaultActiveFirstOption ? 0 : -1;\n};\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n emit('inputKeyDown', e);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (!isOpen.value) {\n openMenu();\n return;\n }\n const opts = filteredOptions.value;\n const nextIdx = activeIndex.value + 1;\n for (let i = 0; i < opts.length; i++) {\n const idx = (nextIdx + i) % opts.length;\n if (!opts[idx].disabled) {\n activeIndex.value = idx;\n break;\n }\n }\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (!isOpen.value) {\n openMenu();\n return;\n }\n const opts = filteredOptions.value;\n const prevIdx = activeIndex.value - 1;\n for (let i = 0; i < opts.length; i++) {\n const idx = (((prevIdx - i) % opts.length) + opts.length) % opts.length;\n if (!opts[idx].disabled) {\n activeIndex.value = idx;\n break;\n }\n }\n break;\n }\n case 'Enter': {\n e.preventDefault();\n if (isOpen.value && activeIndex.value >= 0) {\n const opt = filteredOptions.value[activeIndex.value];\n if (opt && !opt.disabled) {\n selectOption(opt);\n }\n } else if (!isOpen.value) {\n openMenu();\n }\n break;\n }\n case ' ': {\n if (!isSearchable.value || !searchValue.value) {\n e.preventDefault();\n if (!isOpen.value) {\n openMenu();\n } else if (activeIndex.value >= 0) {\n const opt = filteredOptions.value[activeIndex.value];\n if (opt && !opt.disabled) {\n selectOption(opt);\n }\n }\n }\n break;\n }\n case 'Escape': {\n e.preventDefault();\n closeMenu();\n selectorRef.value?.focus();\n break;\n }\n case 'Backspace': {\n if (isMultipleMode.value && !searchValue.value && selectedValues.value.length > 0) {\n const lastVal = selectedValues.value[selectedValues.value.length - 1];\n removeTag(lastVal);\n }\n break;\n }\n case 'Tab': {\n if (isOpen.value) {\n closeMenu();\n }\n break;\n }\n }\n};\n\nconst handlePopupScroll = (e: Event) => {\n emit('popupScroll', e);\n};\n\nconst scrollActiveIntoView = () => {\n nextTick(() => {\n const active = menuRef.value?.querySelector('[data-active=\"true\"]');\n active?.scrollIntoView({ block: 'nearest' });\n });\n};\n\nwatch(activeIndex, scrollActiveIntoView);\n\nwatch(\n () => open,\n (val) => {\n if (val === true && !isOpen.value) openMenu();\n else if (val === false && isOpen.value) closeMenu();\n },\n);\n\nconst showClear = computed(() => {\n if (!allowClear || disabled) return false;\n if (isMultipleMode.value) return selectedValues.value.length > 0;\n return model.value != null && model.value !== '';\n});\n\ndefineExpose({\n focus: () => selectorRef.value?.focus(),\n blur: () => selectorRef.value?.blur(),\n});\n</script>\n\n<template>\n <div\n class=\"b-select b:relative b:inline-flex b:w-full\"\n :class=\"{ 'b-select--disabled': disabled }\"\n >\n <!-- Selector trigger -->\n <div\n ref=\"selectorRef\"\n v-bind=\"attrs\"\n class=\"b-select__selector b:box-border b:flex b:w-full b:cursor-pointer b:items-center b:gap-1 b:transition-all b:outline-none\"\n :class=\"[\n {\n 'b:min-h-6 b:px-2 b:text-sm': size === BCommonSize.Small,\n 'b:min-h-8 b:px-3 b:text-sm': size === BCommonSize.Medium,\n 'b:min-h-10 b:px-3 b:text-base': size === BCommonSize.Large,\n },\n {\n 'b:rounded-lg b:border-1 b:border-[var(--b-select-border-color)] b:bg-[var(--b-select-selector-bg)] b:hover:not-disabled:border-[var(--b-select-hover-border-color)] b:focus:not-disabled:border-[var(--b-select-active-border-color)] b:focus:not-disabled:shadow-[0_0_0_2px_var(--b-select-active-outline-color)]':\n variant === BSelectVariant.Outlined,\n 'b:rounded-lg b:border-1 b:border-transparent b:bg-[var(--b-select-filled-bg)] b:hover:not-disabled:bg-[var(--b-select-filled-bg)] b:focus:not-disabled:border-[var(--b-select-active-border-color)] b:focus:not-disabled:bg-[var(--b-select-selector-bg)] b:focus:not-disabled:shadow-[0_0_0_2px_var(--b-select-active-outline-color)]':\n variant === BSelectVariant.Filled,\n 'b:rounded-lg b:border-1 b:border-transparent b:bg-transparent':\n variant === BSelectVariant.Borderless,\n },\n {\n 'b:border-red-500! b:hover:not-disabled:border-red-400! b:focus:not-disabled:border-red-500! b:focus:not-disabled:shadow-[0_0_0_2px_rgba(255,38,5,0.06)]!':\n status === BSelectStatus.Error,\n 'b:border-yellow-500! b:hover:not-disabled:border-yellow-400! b:focus:not-disabled:border-yellow-500! b:focus:not-disabled:shadow-[0_0_0_2px_rgba(255,215,5,0.1)]!':\n status === BSelectStatus.Warning,\n },\n {\n 'b:cursor-not-allowed b:opacity-40': disabled,\n },\n {\n 'b-select__selector--open': isOpen,\n },\n ]\"\n :tabindex=\"disabled ? -1 : 0\"\n role=\"combobox\"\n :aria-expanded=\"isOpen\"\n :aria-controls=\"isOpen ? listboxId : undefined\"\n :aria-activedescendant=\"isOpen && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : undefined\"\n aria-haspopup=\"listbox\"\n :aria-label=\"placeholder ?? 'Select'\"\n :aria-disabled=\"disabled ?? false\"\n @click=\"handleSelectorClick\"\n @focus=\"handleSelectorFocus\"\n @blur=\"handleSelectorBlur\"\n @keydown=\"handleKeyDown\"\n >\n <!-- Multiple mode: tags -->\n <template v-if=\"isMultipleMode\">\n <span\n v-for=\"opt in visibleTags\"\n :key=\"getOptionValue(opt)\"\n class=\"b-select__tag b:inline-flex b:max-w-full b:items-center b:gap-0.5 b:rounded b:border-1 b:border-[var(--b-select-multiple-item-border-color)] b:bg-[var(--b-select-multiple-item-bg)] b:leading-none\"\n :class=\"[\n {\n 'b:h-4 b:px-1 b:text-xs': size === BCommonSize.Small,\n 'b:h-6 b:px-1.5 b:text-xs': size === BCommonSize.Medium,\n 'b:h-8 b:px-2 b:text-sm': size === BCommonSize.Large,\n },\n ]\"\n >\n <span class=\"b:truncate\">{{ getOptionLabel(opt) }}</span>\n <button\n type=\"button\"\n class=\"b-select__tag-close b:ml-0.5 b:flex b:h-3.5 b:w-3.5 b:cursor-pointer b:items-center b:justify-center b:rounded-full b:border-none b:bg-transparent b:text-[10px] b:text-zinc-400 b:hover:bg-zinc-200 b:hover:text-zinc-600\"\n :aria-label=\"`Remove ${getOptionLabel(opt)}`\"\n tabindex=\"-1\"\n @click.stop=\"removeTag(getOptionValue(opt))\"\n @mousedown.prevent\n >\n <svg aria-hidden=\"true\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"><path d=\"M1 1l6 6M7 1L1 7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/></svg>\n </button>\n </span>\n <span\n v-if=\"hiddenTagCount > 0\"\n class=\"b-select__tag b-select__tag--count b:relative b:z-1 b:inline-flex b:shrink-0 b:items-center b:rounded b:bg-[var(--b-select-multiple-count-bg)] b:px-1.5 b:text-xs b:leading-none b:text-[var(--b-select-multiple-count-color)]\"\n :class=\"[\n {\n 'b:h-4': size === BCommonSize.Small,\n 'b:h-6': size === BCommonSize.Medium,\n 'b:h-8': size === BCommonSize.Large,\n },\n ]\"\n >\n +{{ hiddenTagCount }}\n </span>\n <input\n ref=\"searchInputRef\"\n class=\"b-select__search b:min-w-4 b:flex-1 b:border-none b:bg-transparent b:text-sm b:outline-none b:placeholder:text-[var(--b-select-placeholder-color)]\"\n :value=\"searchValue\"\n :placeholder=\"selectedValues.length === 0 ? placeholder : undefined\"\n :disabled=\"disabled\"\n :aria-label=\"placeholder ?? 'Search options'\"\n autocomplete=\"off\"\n @input=\"handleSearchInput\"\n @keydown=\"handleKeyDown\"\n @focus=\"handleSelectorFocus\"\n @blur=\"handleSelectorBlur\"\n />\n </template>\n\n <!-- Single mode -->\n <template v-else>\n <span\n v-if=\"displayLabel && !searchValue\"\n class=\"b-select__value b:flex-1 b:truncate b:text-[color:var(--b-select-color)]\"\n >\n <slot name=\"selectedLabel\" :option=\"selectedOptions[0]\">\n {{ displayLabel }}\n </slot>\n </span>\n <span\n v-else-if=\"!searchValue && !displayLabel\"\n class=\"b-select__placeholder b:flex-1 b:truncate b:text-[var(--b-select-placeholder-color)]\"\n >\n {{ placeholder }}\n </span>\n <input\n v-if=\"isSearchable\"\n ref=\"searchInputRef\"\n class=\"b-select__search b:absolute b:inset-0 b:w-full b:border-none b:bg-transparent b:px-3 b:text-sm b:outline-none b:placeholder:text-[var(--b-select-placeholder-color)]\"\n :class=\"{ 'b:opacity-0': !isOpen }\"\n :value=\"searchValue\"\n :disabled=\"disabled\"\n :aria-label=\"placeholder ?? 'Search options'\"\n autocomplete=\"off\"\n tabindex=\"-1\"\n @input=\"handleSearchInput\"\n @keydown=\"handleKeyDown\"\n />\n </template>\n\n <!-- Clear button -->\n <button\n v-if=\"showClear\"\n type=\"button\"\n class=\"b-select__clear b:z-1 b:flex b:h-4 b:w-4 b:shrink-0 b:cursor-pointer b:items-center b:justify-center b:rounded-full b:border-none b:bg-[var(--b-select-clear-bg)] b:text-xs b:text-zinc-400 b:hover:text-zinc-600\"\n aria-label=\"Clear selection\"\n tabindex=\"-1\"\n @click=\"handleClear\"\n @mousedown.prevent\n >\n <svg aria-hidden=\"true\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"><path d=\"M1 1l6 6M7 1L1 7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/></svg>\n </button>\n\n <!-- Suffix arrow -->\n <span\n class=\"b-select__arrow b:ml-auto b:flex b:shrink-0 b:items-center b:text-zinc-400 b:transition-transform b:duration-200\"\n :class=\"{ 'b:rotate-180': isOpen }\"\n aria-hidden=\"true\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M2.5 4.5L6 8L9.5 4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n\n <!-- Loading spinner -->\n <span\n v-if=\"loading\"\n class=\"b-select__loading b:ml-1 b:flex b:shrink-0 b:animate-spin b:items-center b:text-zinc-400\"\n aria-hidden=\"true\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"5.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-dasharray=\"24\"\n stroke-linecap=\"round\"\n />\n </svg>\n </span>\n </div>\n\n <!-- Dropdown popup -->\n <div\n ref=\"menuRef\"\n :id=\"listboxId\"\n class=\"b-select__dropdown b:overflow-auto b:rounded-lg b:bg-[var(--b-select-selector-bg)] b:shadow-lg\"\n :class=\"{ 'b:w-[anchor-size(width)]': popupMatchSelectWidth === true }\"\n :style=\"[\n typeof popupMatchSelectWidth === 'number'\n ? { width: `${popupMatchSelectWidth}px` }\n : undefined,\n { maxHeight: `${listHeight}px` },\n ]\"\n popover\n role=\"listbox\"\n :aria-multiselectable=\"isMultipleMode || undefined\"\n :aria-label=\"placeholder ?? 'Options'\"\n @toggle=\"handleToggle\"\n @scroll=\"handlePopupScroll\"\n >\n <!-- Options -->\n <div v-if=\"filteredOptions.length > 0\" class=\"b:p-1\">\n <template v-for=\"(opt, idx) in filteredOptions\" :key=\"getOptionValue(opt)\">\n <div\n :id=\"`${listboxId}-option-${idx}`\"\n class=\"b-select__option b:cursor-pointer b:rounded-md b:px-[var(--b-select-option-padding-x)] b:py-[var(--b-select-option-padding-y)] b:text-[length:var(--b-select-option-font-size)] b:leading-[var(--b-select-option-line-height)] b:transition-colors\"\n :class=\"[\n {\n 'b:bg-[var(--b-select-option-active-bg)]': idx === activeIndex && !opt.disabled,\n 'b:bg-[var(--b-select-option-selected-bg)] b:font-[var(--b-select-option-selected-font-weight)] b:text-[color:var(--b-select-option-selected-color)]':\n isOptionSelected(opt) && idx !== activeIndex,\n 'b:bg-[var(--b-select-option-selected-bg)] b:font-[var(--b-select-option-selected-font-weight)]':\n isOptionSelected(opt) && idx === activeIndex,\n 'b:cursor-not-allowed b:opacity-40': opt.disabled,\n 'b:hover:bg-[var(--b-select-option-active-bg)]':\n !opt.disabled && idx !== activeIndex && !isOptionSelected(opt),\n },\n ]\"\n :data-active=\"idx === activeIndex\"\n :aria-selected=\"isOptionSelected(opt)\"\n :aria-disabled=\"opt.disabled ?? false\"\n role=\"option\"\n @mousedown.prevent=\"selectOption(opt)\"\n @mouseenter=\"activeIndex = idx\"\n >\n <slot name=\"option\" :option=\"opt\" :index=\"idx\" :selected=\"isOptionSelected(opt)\">\n <span class=\"b:flex b:items-center b:justify-between\">\n <span>{{ getOptionLabel(opt) }}</span>\n <svg\n v-if=\"isMultipleMode && isOptionSelected(opt)\"\n class=\"b:ml-2 b:h-3 b:w-3 b:text-[var(--b-select-active-border-color)]\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2 6L5 9L10 3\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </slot>\n </div>\n </template>\n </div>\n\n <!-- Not found content -->\n <div\n v-else-if=\"notFoundContent !== null\"\n class=\"b-select__empty b:px-4 b:py-6 b:text-center b:text-sm b:text-zinc-400\"\n >\n {{ notFoundContent }}\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.b-select {\n --b-select-active-border-color: #1677ff;\n --b-select-active-outline-color: rgba(5, 145, 255, 0.1);\n --b-select-hover-border-color: #4096ff;\n --b-select-border-color: #d9d9d9;\n --b-select-color: rgba(0, 0, 0, 0.88);\n --b-select-placeholder-color: #606870;\n --b-select-clear-bg: #ffffff;\n --b-select-selector-bg: #ffffff;\n --b-select-filled-bg: rgba(0, 0, 0, 0.04);\n --b-select-multiple-item-bg: rgba(0, 0, 0, 0.06);\n --b-select-multiple-count-bg: #f0f0f0;\n --b-select-multiple-count-color: #1f1f1f;\n --b-select-multiple-item-border-color: transparent;\n --b-select-multiple-item-border-color-disabled: transparent;\n --b-select-multiple-item-color-disabled: rgba(0, 0, 0, 0.25);\n --b-select-multiple-selector-bg-disabled: rgba(0, 0, 0, 0.04);\n --b-select-option-active-bg: rgba(0, 0, 0, 0.04);\n --b-select-option-font-size: 14px;\n --b-select-option-height: 32px;\n --b-select-option-line-height: 1.5714;\n --b-select-option-padding-x: 12px;\n --b-select-option-padding-y: 5px;\n --b-select-option-selected-bg: #e6f4ff;\n --b-select-option-selected-color: rgba(0, 0, 0, 0.88);\n --b-select-option-selected-font-weight: 600;\n --b-select-z-index-popup: 1050;\n}\n\n@media (prefers-color-scheme: dark) {\n .b-select {\n --b-select-active-border-color: #1668dc;\n --b-select-active-outline-color: rgba(22, 104, 220, 0.15);\n --b-select-hover-border-color: #3c89e8;\n --b-select-border-color: #424242;\n --b-select-color: rgba(255, 255, 255, 0.88);\n --b-select-placeholder-color: #9ca3af;\n --b-select-clear-bg: #1f1f1f;\n --b-select-selector-bg: #1f1f1f;\n --b-select-filled-bg: rgba(255, 255, 255, 0.08);\n --b-select-multiple-item-bg: rgba(255, 255, 255, 0.1);\n --b-select-multiple-count-bg: #353535;\n --b-select-multiple-count-color: #e0e0e0;\n --b-select-multiple-item-color-disabled: rgba(255, 255, 255, 0.25);\n --b-select-multiple-selector-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-select-option-active-bg: rgba(255, 255, 255, 0.08);\n --b-select-option-selected-bg: #111a2c;\n --b-select-option-selected-color: rgba(255, 255, 255, 0.88);\n }\n}\n\n[data-prefers-color='light'] .b-select {\n --b-select-active-border-color: #1677ff;\n --b-select-active-outline-color: rgba(5, 145, 255, 0.1);\n --b-select-hover-border-color: #4096ff;\n --b-select-border-color: #d9d9d9;\n --b-select-color: rgba(0, 0, 0, 0.88);\n --b-select-placeholder-color: #606870;\n --b-select-clear-bg: #ffffff;\n --b-select-selector-bg: #ffffff;\n --b-select-filled-bg: rgba(0, 0, 0, 0.04);\n --b-select-multiple-item-bg: rgba(0, 0, 0, 0.06);\n --b-select-multiple-count-bg: #f0f0f0;\n --b-select-multiple-count-color: #1f1f1f;\n --b-select-multiple-item-color-disabled: rgba(0, 0, 0, 0.25);\n --b-select-multiple-selector-bg-disabled: rgba(0, 0, 0, 0.04);\n --b-select-option-active-bg: rgba(0, 0, 0, 0.04);\n --b-select-option-selected-bg: #e6f4ff;\n --b-select-option-selected-color: rgba(0, 0, 0, 0.88);\n}\n\n[data-prefers-color='dark'] .b-select {\n --b-select-active-border-color: #1668dc;\n --b-select-active-outline-color: rgba(22, 104, 220, 0.15);\n --b-select-hover-border-color: #3c89e8;\n --b-select-border-color: #424242;\n --b-select-color: rgba(255, 255, 255, 0.88);\n --b-select-placeholder-color: #9ca3af;\n --b-select-clear-bg: #1f1f1f;\n --b-select-selector-bg: #1f1f1f;\n --b-select-filled-bg: rgba(255, 255, 255, 0.08);\n --b-select-multiple-item-bg: rgba(255, 255, 255, 0.1);\n --b-select-multiple-item-color-disabled: rgba(255, 255, 255, 0.25);\n --b-select-multiple-selector-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-select-option-active-bg: rgba(255, 255, 255, 0.08);\n --b-select-option-selected-bg: #111a2c;\n --b-select-option-selected-color: rgba(255, 255, 255, 0.88);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-select {\n --b-select-active-border-color: #1668dc;\n --b-select-active-outline-color: rgba(22, 104, 220, 0.15);\n --b-select-hover-border-color: #3c89e8;\n --b-select-border-color: #424242;\n --b-select-color: rgba(255, 255, 255, 0.88);\n --b-select-placeholder-color: #9ca3af;\n --b-select-clear-bg: #1f1f1f;\n --b-select-selector-bg: #1f1f1f;\n --b-select-filled-bg: rgba(255, 255, 255, 0.08);\n --b-select-multiple-item-bg: rgba(255, 255, 255, 0.1);\n --b-select-multiple-item-color-disabled: rgba(255, 255, 255, 0.25);\n --b-select-multiple-selector-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-select-option-active-bg: rgba(255, 255, 255, 0.08);\n --b-select-option-selected-bg: #111a2c;\n --b-select-option-selected-color: rgba(255, 255, 255, 0.88);\n }\n}\n\n.b-select__selector {\n anchor-name: v-bind('anchorName');\n}\n\n.b-select__dropdown {\n position: absolute;\n margin-top: 4px;\n z-index: var(--b-select-z-index-popup);\n\n position-anchor: v-bind('anchorName');\n position-try-fallbacks: --b-select-top;\n inset: auto;\n top: anchor(bottom);\n left: anchor(left);\n\n transition:\n display 0.2s,\n opacity 0.2s;\n transition-behavior: allow-discrete;\n opacity: 0;\n\n &:popover-open {\n opacity: 1;\n\n @starting-style {\n opacity: 0;\n }\n }\n}\n\n@position-try --b-select-top {\n inset: auto;\n bottom: anchor(top);\n left: anchor(left);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-select__dropdown {\n transition: none;\n }\n\n .b-select__arrow {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
|
package/dist/design-system198.js
CHANGED
|
@@ -1,31 +1,35 @@
|
|
|
1
|
-
import { computed as e, createElementBlock as t, defineComponent as n, normalizeClass as r,
|
|
2
|
-
//#region src/components/BSkeleton/
|
|
1
|
+
import { computed as e, createElementBlock as t, defineComponent as n, normalizeClass as r, normalizeStyle as i, openBlock as a } from "vue";
|
|
2
|
+
//#region src/components/BSkeleton/BSkeletonAvatar.vue?vue&type=script&setup=true&lang.ts
|
|
3
3
|
var o = /* @__PURE__ */ n({
|
|
4
|
-
__name: "
|
|
4
|
+
__name: "BSkeletonAvatar",
|
|
5
5
|
props: {
|
|
6
6
|
active: {
|
|
7
7
|
type: Boolean,
|
|
8
8
|
default: !1
|
|
9
9
|
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
default: !1
|
|
13
|
-
}
|
|
10
|
+
shape: { default: "circle" },
|
|
11
|
+
size: { default: "default" }
|
|
14
12
|
},
|
|
15
13
|
setup(n) {
|
|
16
|
-
let o = e(() =>
|
|
14
|
+
let o = e(() => {
|
|
15
|
+
if (typeof n.size == "number") return {
|
|
16
|
+
width: `${n.size}px`,
|
|
17
|
+
height: `${n.size}px`,
|
|
18
|
+
lineHeight: `${n.size}px`
|
|
19
|
+
};
|
|
20
|
+
}), s = e(() => [
|
|
17
21
|
"b-skeleton-element",
|
|
18
|
-
"b-skeleton-
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
22
|
+
"b-skeleton-avatar",
|
|
23
|
+
`b-skeleton-avatar--${n.shape}`,
|
|
24
|
+
typeof n.size == "string" ? `b-skeleton-avatar--${n.size}` : null,
|
|
25
|
+
{ "b-skeleton-element--active": n.active }
|
|
23
26
|
]);
|
|
24
|
-
return (e, n) => (
|
|
25
|
-
class: r(
|
|
27
|
+
return (e, n) => (a(), t("span", {
|
|
28
|
+
class: r(s.value),
|
|
29
|
+
style: i(o.value),
|
|
26
30
|
role: "presentation",
|
|
27
31
|
"aria-hidden": "true"
|
|
28
|
-
},
|
|
32
|
+
}, null, 6));
|
|
29
33
|
}
|
|
30
34
|
});
|
|
31
35
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system198.js","names":[],"sources":["../src/components/BSkeleton/
|
|
1
|
+
{"version":3,"file":"design-system198.js","names":[],"sources":["../src/components/BSkeleton/BSkeletonAvatar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { BSkeletonAvatarShape, BSkeletonAvatarSize } from './types';\n\nconst {\n active = false,\n shape = 'circle',\n size = 'default',\n} = defineProps<{\n /** Animated shimmer effect. @default false */\n active?: boolean;\n /** Avatar shape. @default 'circle' */\n shape?: BSkeletonAvatarShape;\n /** Avatar size: preset string or pixel number. @default 'default' */\n size?: BSkeletonAvatarSize;\n}>();\n\nconst sizeStyle = computed<Record<string, string> | undefined>(() => {\n if (typeof size === 'number') {\n return { width: `${size}px`, height: `${size}px`, lineHeight: `${size}px` };\n }\n return undefined;\n});\n\nconst classes = computed(() => [\n 'b-skeleton-element',\n 'b-skeleton-avatar',\n `b-skeleton-avatar--${shape}`,\n typeof size === 'string' ? `b-skeleton-avatar--${size}` : null,\n { 'b-skeleton-element--active': active },\n]);\n</script>\n\n<template>\n <span :class=\"classes\" :style=\"sizeStyle\" role=\"presentation\" aria-hidden=\"true\" />\n</template>\n\n<style>\n.b-skeleton-avatar {\n display: inline-block;\n vertical-align: top;\n width: var(--b-skeleton-avatar-size-default);\n height: var(--b-skeleton-avatar-size-default);\n background: var(--b-skeleton-gradient-from-color);\n}\n\n.b-skeleton-avatar--small {\n width: var(--b-skeleton-avatar-size-small);\n height: var(--b-skeleton-avatar-size-small);\n}\n\n.b-skeleton-avatar--large {\n width: var(--b-skeleton-avatar-size-large);\n height: var(--b-skeleton-avatar-size-large);\n}\n\n.b-skeleton-avatar--circle {\n border-radius: 50%;\n}\n\n.b-skeleton-avatar--square {\n border-radius: var(--b-skeleton-border-radius);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;EAiBA,IAAM,IAAY,QAAmD;AACnE,OAAI,OAAO,EAAA,QAAS,SAClB,QAAO;IAAE,OAAO,GAAG,EAAA,KAAK;IAAK,QAAQ,GAAG,EAAA,KAAK;IAAK,YAAY,GAAG,EAAA,KAAK;IAAK;IAG7E,EAEI,IAAU,QAAe;GAC7B;GACA;GACA,sBAAsB,EAAA;GACtB,OAAO,EAAA,QAAS,WAAW,sBAAsB,EAAA,SAAS;GAC1D,EAAE,8BAA8B,EAAA,QAAQ;GACzC,CAAC;yBAIA,EAAmF,QAAA;GAA5E,OAAK,EAAE,EAAA,MAAO;GAAG,OAAK,EAAE,EAAA,MAAS;GAAE,MAAK;GAAe,eAAY"}
|
package/dist/design-system200.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system200.js","names":[],"sources":["../src/components/BSkeleton/
|
|
1
|
+
{"version":3,"file":"design-system200.js","names":[],"sources":["../src/components/BSkeleton/BSkeletonAvatar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { BSkeletonAvatarShape, BSkeletonAvatarSize } from './types';\n\nconst {\n active = false,\n shape = 'circle',\n size = 'default',\n} = defineProps<{\n /** Animated shimmer effect. @default false */\n active?: boolean;\n /** Avatar shape. @default 'circle' */\n shape?: BSkeletonAvatarShape;\n /** Avatar size: preset string or pixel number. @default 'default' */\n size?: BSkeletonAvatarSize;\n}>();\n\nconst sizeStyle = computed<Record<string, string> | undefined>(() => {\n if (typeof size === 'number') {\n return { width: `${size}px`, height: `${size}px`, lineHeight: `${size}px` };\n }\n return undefined;\n});\n\nconst classes = computed(() => [\n 'b-skeleton-element',\n 'b-skeleton-avatar',\n `b-skeleton-avatar--${shape}`,\n typeof size === 'string' ? `b-skeleton-avatar--${size}` : null,\n { 'b-skeleton-element--active': active },\n]);\n</script>\n\n<template>\n <span :class=\"classes\" :style=\"sizeStyle\" role=\"presentation\" aria-hidden=\"true\" />\n</template>\n\n<style>\n.b-skeleton-avatar {\n display: inline-block;\n vertical-align: top;\n width: var(--b-skeleton-avatar-size-default);\n height: var(--b-skeleton-avatar-size-default);\n background: var(--b-skeleton-gradient-from-color);\n}\n\n.b-skeleton-avatar--small {\n width: var(--b-skeleton-avatar-size-small);\n height: var(--b-skeleton-avatar-size-small);\n}\n\n.b-skeleton-avatar--large {\n width: var(--b-skeleton-avatar-size-large);\n height: var(--b-skeleton-avatar-size-large);\n}\n\n.b-skeleton-avatar--circle {\n border-radius: 50%;\n}\n\n.b-skeleton-avatar--square {\n border-radius: var(--b-skeleton-border-radius);\n}\n</style>\n"],"mappings":""}
|
package/dist/design-system201.js
CHANGED
|
@@ -1,335 +1,91 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"aria-valuemin",
|
|
6
|
-
"aria-valuemax",
|
|
7
|
-
"aria-valuenow",
|
|
8
|
-
"aria-disabled",
|
|
9
|
-
"aria-orientation",
|
|
10
|
-
"aria-label"
|
|
11
|
-
], re = [
|
|
12
|
-
"tabindex",
|
|
13
|
-
"aria-valuemin",
|
|
14
|
-
"aria-valuemax",
|
|
15
|
-
"aria-valuenow",
|
|
16
|
-
"aria-disabled",
|
|
17
|
-
"aria-orientation",
|
|
18
|
-
"aria-label"
|
|
19
|
-
], g = {
|
|
1
|
+
import e from "./design-system200.js";
|
|
2
|
+
import { Fragment as t, computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, normalizeClass as c, normalizeStyle as l, openBlock as u, renderList as d, renderSlot as f } from "vue";
|
|
3
|
+
//#region src/components/BSkeleton/BSkeleton.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var p = {
|
|
20
5
|
key: 0,
|
|
21
|
-
class: "b-
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
class: "b-skeleton__header"
|
|
7
|
+
}, m = { class: "b-skeleton__content" }, h = {
|
|
8
|
+
key: 1,
|
|
9
|
+
class: "b-skeleton__paragraph",
|
|
10
|
+
"aria-hidden": "true"
|
|
11
|
+
}, g = /* @__PURE__ */ s({
|
|
12
|
+
__name: "BSkeleton",
|
|
13
|
+
props: {
|
|
14
|
+
active: {
|
|
27
15
|
type: Boolean,
|
|
28
16
|
default: !1
|
|
29
17
|
},
|
|
30
|
-
|
|
31
|
-
type: Boolean,
|
|
18
|
+
avatar: {
|
|
19
|
+
type: [Boolean, Object],
|
|
32
20
|
default: !1
|
|
33
21
|
},
|
|
34
|
-
|
|
35
|
-
type: Boolean,
|
|
36
|
-
default: !0
|
|
37
|
-
},
|
|
38
|
-
keyboard: {
|
|
22
|
+
loading: {
|
|
39
23
|
type: Boolean,
|
|
40
24
|
default: !0
|
|
41
25
|
},
|
|
42
|
-
|
|
43
|
-
min: { default: 0 },
|
|
44
|
-
range: {
|
|
26
|
+
paragraph: {
|
|
45
27
|
type: [Boolean, Object],
|
|
46
|
-
default: !
|
|
47
|
-
},
|
|
48
|
-
reverse: {
|
|
49
|
-
type: Boolean,
|
|
50
|
-
default: !1
|
|
28
|
+
default: !0
|
|
51
29
|
},
|
|
52
|
-
|
|
53
|
-
vertical: {
|
|
30
|
+
round: {
|
|
54
31
|
type: Boolean,
|
|
55
32
|
default: !1
|
|
56
33
|
},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
modelValue: { default: 0 },
|
|
61
|
-
modelModifiers: {}
|
|
62
|
-
}),
|
|
63
|
-
emits: /* @__PURE__ */ o(["change", "changeComplete"], ["update:modelValue"]),
|
|
64
|
-
setup(a, { expose: o, emit: _ }) {
|
|
65
|
-
let v = h(), y = ee(a, "modelValue"), b = _, x = d(null), S = d(null), C = d(null), w = d(!1), T = d(null), E = d({
|
|
66
|
-
lower: !1,
|
|
67
|
-
upper: !1
|
|
68
|
-
}), D = d(null), O = d(0), k = t(() => a.range !== !1), A = t(() => typeof a.range == "object" && a.range.draggableTrack), j = t(() => k.value ? y.value[0] : a.min), M = t(() => k.value ? y.value[1] : y.value);
|
|
69
|
-
function N(e) {
|
|
70
|
-
return a.max === a.min ? 0 : (e - a.min) / (a.max - a.min) * 100;
|
|
71
|
-
}
|
|
72
|
-
function P(e) {
|
|
73
|
-
return F(a.min + e / 100 * (a.max - a.min));
|
|
74
|
-
}
|
|
75
|
-
function F(e) {
|
|
76
|
-
if (a.step === null) {
|
|
77
|
-
if (!a.marks) return I(e);
|
|
78
|
-
let t = Object.keys(a.marks).map(Number), n = t[0] ?? a.min, r = Math.abs(e - n);
|
|
79
|
-
for (let i of t) {
|
|
80
|
-
let t = Math.abs(e - i);
|
|
81
|
-
t < r && (n = i, r = t);
|
|
82
|
-
}
|
|
83
|
-
return I(n);
|
|
84
|
-
}
|
|
85
|
-
return I(Math.round((e - a.min) / a.step) * a.step + a.min);
|
|
86
|
-
}
|
|
87
|
-
function I(e) {
|
|
88
|
-
return Math.min(a.max, Math.max(a.min, e));
|
|
34
|
+
title: {
|
|
35
|
+
type: [Boolean, Object],
|
|
36
|
+
default: !0
|
|
89
37
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}), ie = t(() => {
|
|
106
|
-
let e = L.value;
|
|
107
|
-
return a.vertical ? a.reverse ? { top: `${100 - e}%` } : { bottom: `${100 - e}%` } : a.reverse ? { right: `${e}%` } : { left: `${e}%` };
|
|
108
|
-
}), ae = t(() => {
|
|
109
|
-
let e = R.value;
|
|
110
|
-
return a.vertical ? a.reverse ? { top: `${100 - e}%` } : { bottom: `${100 - e}%` } : a.reverse ? { right: `${e}%` } : { left: `${e}%` };
|
|
111
|
-
}), B = t(() => a.marks ? Object.entries(a.marks).map(([e, t]) => {
|
|
112
|
-
let n = Number(e);
|
|
113
|
-
return {
|
|
114
|
-
value: n,
|
|
115
|
-
percent: N(n),
|
|
116
|
-
isActive: a.included && (k.value ? n >= j.value && n <= M.value : n <= M.value),
|
|
117
|
-
label: typeof t == "string" ? t : t.label,
|
|
118
|
-
style: typeof t == "object" ? t.style : void 0
|
|
119
|
-
};
|
|
120
|
-
}) : []), oe = t(() => {
|
|
121
|
-
if (!a.dots || a.step === null) return [];
|
|
122
|
-
let e = [];
|
|
123
|
-
for (let t = a.min; t <= a.max; t += a.step) {
|
|
124
|
-
let n = N(t), r = a.included && (k.value ? t >= j.value && t <= M.value : t <= M.value);
|
|
125
|
-
e.push({
|
|
126
|
-
value: t,
|
|
127
|
-
percent: n,
|
|
128
|
-
isActive: r
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
return e;
|
|
38
|
+
},
|
|
39
|
+
setup(s) {
|
|
40
|
+
let g = n(() => s.avatar !== !1 && s.avatar != null), _ = n(() => s.title !== !1 && s.title != null), v = n(() => s.paragraph !== !1 && s.paragraph != null), y = n(() => typeof s.avatar == "object" && s.avatar !== null ? s.avatar : {}), b = n(() => typeof s.title == "object" && s.title !== null ? s.title : {}), x = n(() => typeof s.paragraph == "object" && s.paragraph !== null ? s.paragraph : {}), S = n(() => T(b.value.width)), C = n(() => {
|
|
41
|
+
let e = x.value.rows;
|
|
42
|
+
return typeof e == "number" && e > 0 ? Math.floor(e) : 3;
|
|
43
|
+
}), w = n(() => {
|
|
44
|
+
let e = x.value.width, t = C.value, n = [];
|
|
45
|
+
for (let r = 0; r < t; r += 1) if (Array.isArray(e)) {
|
|
46
|
+
let t = e[r];
|
|
47
|
+
n.push(T(t) ?? "");
|
|
48
|
+
} else if (r === t - 1) {
|
|
49
|
+
let t = T(e);
|
|
50
|
+
n.push(t ?? "61%");
|
|
51
|
+
} else n.push("");
|
|
52
|
+
return n;
|
|
132
53
|
});
|
|
133
|
-
function
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
let
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
let e = L.value, n = R.value;
|
|
166
|
-
if (t >= e && t <= n) return;
|
|
167
|
-
}
|
|
168
|
-
G(r, n), b("changeComplete", (k.value, y.value));
|
|
169
|
-
}
|
|
170
|
-
function K(e, t) {
|
|
171
|
-
a.disabled || (t.preventDefault(), C.value = e, e === "track" && k.value && (D.value = [...y.value], O.value = W(t)), document.addEventListener("mousemove", q), document.addEventListener("mouseup", J), document.addEventListener("touchmove", q), document.addEventListener("touchend", J));
|
|
172
|
-
}
|
|
173
|
-
function q(e) {
|
|
174
|
-
if (!C.value || a.disabled) return;
|
|
175
|
-
let t = W(e);
|
|
176
|
-
if (C.value === "track" && D.value) {
|
|
177
|
-
let e = t - O.value, n = D.value[0], r = D.value[1], i = N(n) + e, o = N(r) + e, s = P(i), c = P(o);
|
|
178
|
-
s >= a.min && c <= a.max && (y.value = [s, c], b("change", [s, c]));
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
let n = P(t);
|
|
182
|
-
G(C.value, n);
|
|
183
|
-
}
|
|
184
|
-
function J() {
|
|
185
|
-
C.value && b("changeComplete", (k.value, y.value)), C.value = null, D.value = null, document.removeEventListener("mousemove", q), document.removeEventListener("mouseup", J), document.removeEventListener("touchmove", q), document.removeEventListener("touchend", J);
|
|
186
|
-
}
|
|
187
|
-
function Y(e, t) {
|
|
188
|
-
if (a.disabled || !a.keyboard) return;
|
|
189
|
-
let n = a.step ?? 1, r = 0;
|
|
190
|
-
switch (e.key) {
|
|
191
|
-
case "ArrowRight":
|
|
192
|
-
case "ArrowUp":
|
|
193
|
-
r = n;
|
|
194
|
-
break;
|
|
195
|
-
case "ArrowLeft":
|
|
196
|
-
case "ArrowDown":
|
|
197
|
-
r = -n;
|
|
198
|
-
break;
|
|
199
|
-
case "Home":
|
|
200
|
-
r = a.min - (t === "lower" ? j.value : M.value);
|
|
201
|
-
break;
|
|
202
|
-
case "End":
|
|
203
|
-
r = a.max - (t === "lower" ? j.value : M.value);
|
|
204
|
-
break;
|
|
205
|
-
default: return;
|
|
206
|
-
}
|
|
207
|
-
e.preventDefault(), G(t, F((t === "lower" ? j.value : M.value) + r)), b("changeComplete", (k.value, y.value));
|
|
208
|
-
}
|
|
209
|
-
function X(e) {
|
|
210
|
-
T.value = e, E.value[e] = !0;
|
|
211
|
-
}
|
|
212
|
-
function Z(e) {
|
|
213
|
-
T.value = null, E.value[e] = !1;
|
|
214
|
-
}
|
|
215
|
-
function Q(e) {
|
|
216
|
-
E.value[e] = !0;
|
|
217
|
-
}
|
|
218
|
-
function $(e) {
|
|
219
|
-
T.value !== e && C.value !== e && (E.value[e] = !1);
|
|
220
|
-
}
|
|
221
|
-
function de() {
|
|
222
|
-
w.value = !0;
|
|
223
|
-
}
|
|
224
|
-
function fe() {
|
|
225
|
-
w.value = !1;
|
|
226
|
-
}
|
|
227
|
-
function pe(e) {
|
|
228
|
-
a.disabled || !A.value || K("track", e);
|
|
229
|
-
}
|
|
230
|
-
function me() {
|
|
231
|
-
(S.value?.querySelector(".b-slider__handle"))?.focus();
|
|
232
|
-
}
|
|
233
|
-
function he() {
|
|
234
|
-
(S.value?.querySelector(".b-slider__handle:focus"))?.blur();
|
|
235
|
-
}
|
|
236
|
-
return o({
|
|
237
|
-
focus: me,
|
|
238
|
-
blur: he
|
|
239
|
-
}), l(() => {
|
|
240
|
-
document.removeEventListener("mousemove", q), document.removeEventListener("mouseup", J), document.removeEventListener("touchmove", q), document.removeEventListener("touchend", J);
|
|
241
|
-
}), (t, o) => (u(), r("div", {
|
|
242
|
-
ref_key: "rootRef",
|
|
243
|
-
ref: S,
|
|
244
|
-
class: s(["b-slider", [{
|
|
245
|
-
"b-slider--vertical": a.vertical,
|
|
246
|
-
"b-slider--disabled": a.disabled,
|
|
247
|
-
"b-slider--with-marks": !!a.marks,
|
|
248
|
-
"b-slider--reverse": a.reverse,
|
|
249
|
-
"b-slider--hovered": w.value
|
|
250
|
-
}]]),
|
|
251
|
-
onMouseenter: de,
|
|
252
|
-
onMouseleave: fe
|
|
253
|
-
}, [i("div", {
|
|
254
|
-
ref_key: "railRef",
|
|
255
|
-
ref: x,
|
|
256
|
-
class: "b-slider__rail",
|
|
257
|
-
onMousedown: ue
|
|
258
|
-
}, [
|
|
259
|
-
a.included ? (u(), r("div", {
|
|
260
|
-
key: 0,
|
|
261
|
-
class: "b-slider__track",
|
|
262
|
-
style: c(z.value),
|
|
263
|
-
onMousedown: te(pe, ["stop"])
|
|
264
|
-
}, null, 36)) : n("", !0),
|
|
265
|
-
(u(!0), r(e, null, f(oe.value, (e) => (u(), r("span", {
|
|
266
|
-
key: `dot-${e.value}`,
|
|
267
|
-
class: s(["b-slider__dot", { "b-slider__dot--active": e.isActive }]),
|
|
268
|
-
style: c(a.vertical ? a.reverse ? { top: `${100 - e.percent}%` } : { bottom: `${100 - e.percent}%` } : a.reverse ? { right: `${e.percent}%` } : { left: `${e.percent}%` })
|
|
269
|
-
}, null, 6))), 128)),
|
|
270
|
-
(u(!0), r(e, null, f(B.value, (e) => (u(), r("span", {
|
|
271
|
-
key: `mark-dot-${e.value}`,
|
|
272
|
-
class: s(["b-slider__dot", { "b-slider__dot--active": e.isActive }]),
|
|
273
|
-
style: c(a.vertical ? a.reverse ? { top: `${100 - e.percent}%` } : { bottom: `${100 - e.percent}%` } : a.reverse ? { right: `${e.percent}%` } : { left: `${e.percent}%` })
|
|
274
|
-
}, null, 6))), 128)),
|
|
275
|
-
k.value ? (u(), r("div", {
|
|
276
|
-
key: 1,
|
|
277
|
-
class: s(["b-slider__handle", { "b-slider__handle--active": C.value === "lower" || T.value === "lower" }]),
|
|
278
|
-
style: c(ie.value),
|
|
279
|
-
role: "slider",
|
|
280
|
-
tabindex: a.disabled ? -1 : 0,
|
|
281
|
-
"aria-valuemin": a.min,
|
|
282
|
-
"aria-valuemax": M.value,
|
|
283
|
-
"aria-valuenow": j.value,
|
|
284
|
-
"aria-disabled": a.disabled || void 0,
|
|
285
|
-
"aria-orientation": a.vertical ? "vertical" : "horizontal",
|
|
286
|
-
"aria-label": m(v)["aria-label"] ? `${m(v)["aria-label"]} - minimum` : "Minimum",
|
|
287
|
-
onMousedown: o[0] ||= (e) => K("lower", e),
|
|
288
|
-
onTouchstart: o[1] ||= (e) => K("lower", e),
|
|
289
|
-
onKeydown: o[2] ||= (e) => Y(e, "lower"),
|
|
290
|
-
onFocus: o[3] ||= (e) => X("lower"),
|
|
291
|
-
onBlur: o[4] ||= (e) => Z("lower"),
|
|
292
|
-
onMouseenter: o[5] ||= (e) => Q("lower"),
|
|
293
|
-
onMouseleave: o[6] ||= (e) => $("lower")
|
|
294
|
-
}, [H.value === null ? n("", !0) : (u(), r("div", {
|
|
295
|
-
key: 0,
|
|
296
|
-
class: s(["b-slider__tooltip", { "b-slider__tooltip--visible": se.value }]),
|
|
297
|
-
role: "tooltip"
|
|
298
|
-
}, p(H.value), 3))], 46, ne)) : n("", !0),
|
|
299
|
-
i("div", {
|
|
300
|
-
class: s(["b-slider__handle", { "b-slider__handle--active": C.value === "upper" || T.value === "upper" }]),
|
|
301
|
-
style: c(ae.value),
|
|
302
|
-
role: "slider",
|
|
303
|
-
tabindex: a.disabled ? -1 : 0,
|
|
304
|
-
"aria-valuemin": k.value ? j.value : a.min,
|
|
305
|
-
"aria-valuemax": a.max,
|
|
306
|
-
"aria-valuenow": M.value,
|
|
307
|
-
"aria-disabled": a.disabled || void 0,
|
|
308
|
-
"aria-orientation": a.vertical ? "vertical" : "horizontal",
|
|
309
|
-
"aria-label": m(v)["aria-label"] || (k.value ? "Maximum" : "Slider"),
|
|
310
|
-
onMousedown: o[7] ||= (e) => K("upper", e),
|
|
311
|
-
onTouchstart: o[8] ||= (e) => K("upper", e),
|
|
312
|
-
onKeydown: o[9] ||= (e) => Y(e, "upper"),
|
|
313
|
-
onFocus: o[10] ||= (e) => X("upper"),
|
|
314
|
-
onBlur: o[11] ||= (e) => Z("upper"),
|
|
315
|
-
onMouseenter: o[12] ||= (e) => Q("upper"),
|
|
316
|
-
onMouseleave: o[13] ||= (e) => $("upper")
|
|
317
|
-
}, [U.value === null ? n("", !0) : (u(), r("div", {
|
|
318
|
-
key: 0,
|
|
319
|
-
class: s(["b-slider__tooltip", { "b-slider__tooltip--visible": ce.value }]),
|
|
320
|
-
role: "tooltip"
|
|
321
|
-
}, p(U.value), 3))], 46, re)
|
|
322
|
-
], 544), a.marks ? (u(), r("div", g, [(u(!0), r(e, null, f(B.value, (e) => (u(), r("span", {
|
|
323
|
-
key: `mark-label-${e.value}`,
|
|
324
|
-
class: s(["b-slider__mark-text", { "b-slider__mark-text--active": e.isActive }]),
|
|
325
|
-
style: c({
|
|
326
|
-
...a.vertical ? a.reverse ? { top: `${100 - e.percent}%` } : { bottom: `${100 - e.percent}%` } : a.reverse ? { right: `${e.percent}%` } : { left: `${e.percent}%` },
|
|
327
|
-
...e.style
|
|
328
|
-
})
|
|
329
|
-
}, p(e.label), 7))), 128))])) : n("", !0)], 34));
|
|
54
|
+
function T(e) {
|
|
55
|
+
if (e != null) return typeof e == "number" ? `${e}px` : e;
|
|
56
|
+
}
|
|
57
|
+
let E = n(() => ["b-skeleton", {
|
|
58
|
+
"b-skeleton--active": s.active,
|
|
59
|
+
"b-skeleton--with-avatar": g.value,
|
|
60
|
+
"b-skeleton--round": s.round
|
|
61
|
+
}]);
|
|
62
|
+
return (n, b) => s.loading ? (u(), i("div", {
|
|
63
|
+
key: 0,
|
|
64
|
+
class: c(E.value),
|
|
65
|
+
role: "status",
|
|
66
|
+
"aria-live": "polite",
|
|
67
|
+
"aria-label": "Loading"
|
|
68
|
+
}, [g.value ? (u(), i("div", p, [o(e, {
|
|
69
|
+
active: s.active || y.value.active,
|
|
70
|
+
shape: y.value.shape,
|
|
71
|
+
size: y.value.size
|
|
72
|
+
}, null, 8, [
|
|
73
|
+
"active",
|
|
74
|
+
"shape",
|
|
75
|
+
"size"
|
|
76
|
+
])])) : r("", !0), a("div", m, [_.value ? (u(), i("h3", {
|
|
77
|
+
key: 0,
|
|
78
|
+
class: "b-skeleton__title",
|
|
79
|
+
style: l(S.value ? { width: S.value } : void 0),
|
|
80
|
+
"aria-hidden": "true"
|
|
81
|
+
}, null, 4)) : r("", !0), v.value ? (u(), i("ul", h, [(u(!0), i(t, null, d(w.value, (e, t) => (u(), i("li", {
|
|
82
|
+
key: t,
|
|
83
|
+
class: "b-skeleton__paragraph-row",
|
|
84
|
+
style: l(e ? { width: e } : void 0)
|
|
85
|
+
}, null, 4))), 128))])) : r("", !0)])], 2)) : f(n.$slots, "default", { key: 1 });
|
|
330
86
|
}
|
|
331
87
|
});
|
|
332
88
|
//#endregion
|
|
333
|
-
export {
|
|
89
|
+
export { g as default };
|
|
334
90
|
|
|
335
91
|
//# sourceMappingURL=design-system201.js.map
|