bitboss-ui 2.1.113 → 2.1.115
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/ai/BaseButton.md +448 -0
- package/dist/ai/BaseCheckbox.md +494 -0
- package/dist/ai/BaseCheckboxGroup.md +597 -0
- package/dist/ai/BaseColorInput.md +461 -0
- package/dist/ai/BaseDatePicker.md +739 -0
- package/dist/ai/BaseDatePickerInput.md +1517 -0
- package/dist/ai/BaseDialog.md +610 -0
- package/dist/ai/BaseInputContainer.md +570 -0
- package/dist/ai/BaseNumberInput.md +509 -0
- package/dist/ai/BaseRadio.md +405 -0
- package/dist/ai/BaseRadioGroup.md +535 -0
- package/dist/ai/BaseRating.md +489 -0
- package/dist/ai/BaseSelect.md +1720 -0
- package/dist/ai/BaseSlider.md +871 -0
- package/dist/ai/BaseSwitch.md +322 -0
- package/dist/ai/BaseSwitchGroup.md +298 -0
- package/dist/ai/BaseTag.md +624 -0
- package/dist/ai/BaseTextInput.md +392 -0
- package/dist/ai/BaseTextarea.md +398 -0
- package/dist/ai/BbAccordion.md +135 -0
- package/dist/ai/BbAlert.md +226 -0
- package/dist/ai/BbAvatar.md +200 -0
- package/dist/ai/BbBadge.md +185 -0
- package/dist/ai/BbBreadcrumbs.md +536 -0
- package/dist/ai/BbButton.md +687 -0
- package/dist/ai/BbCheckbox.md +280 -0
- package/dist/ai/BbCheckboxGroup.md +387 -0
- package/dist/ai/BbChip.md +148 -0
- package/dist/ai/BbCollapsible.md +119 -0
- package/dist/ai/BbColorInput.md +345 -0
- package/dist/ai/BbColorPalette.md +360 -0
- package/dist/ai/BbConfirm.md +160 -0
- package/dist/ai/BbDatePickerInput.md +414 -0
- package/dist/ai/BbDialog.md +135 -0
- package/dist/ai/BbDropdown.md +765 -0
- package/dist/ai/BbDropdownButton.md +629 -0
- package/dist/ai/BbDropzone.md +504 -0
- package/dist/ai/BbIcon.md +238 -0
- package/dist/ai/BbIntersection.md +121 -0
- package/dist/ai/BbNumberInput.md +372 -0
- package/dist/ai/BbOffCanvas.md +549 -0
- package/dist/ai/BbPagination.md +562 -0
- package/dist/ai/BbPopover.md +580 -0
- package/dist/ai/BbProgress.md +97 -0
- package/dist/ai/BbRadio.md +256 -0
- package/dist/ai/BbRadioGroup.md +373 -0
- package/dist/ai/BbRating.md +245 -0
- package/dist/ai/BbRatio.md +62 -0
- package/dist/ai/BbRows.md +307 -0
- package/dist/ai/BbSelect.md +562 -0
- package/dist/ai/BbSelectPopover.md +2010 -0
- package/dist/ai/BbSlider.md +274 -0
- package/dist/ai/BbSmoothHeight.md +167 -0
- package/dist/ai/BbSpinner.md +154 -0
- package/dist/ai/BbSwitch.md +151 -0
- package/dist/ai/BbSwitchGroup.md +237 -0
- package/dist/ai/BbTab.md +954 -0
- package/dist/ai/BbTable.md +1624 -0
- package/dist/ai/BbTag.md +315 -0
- package/dist/ai/BbTextInput.md +357 -0
- package/dist/ai/BbTextarea.md +277 -0
- package/dist/ai/BbToast.md +219 -0
- package/dist/ai/BbTooltip.md +353 -0
- package/dist/ai/BbTree.md +271 -0
- package/dist/ai/ChipsBox.md +211 -0
- package/dist/ai/ClearableButton.md +67 -0
- package/dist/ai/CommaBox.md +212 -0
- package/dist/ai/CommonInputInnerContainer.md +419 -0
- package/dist/ai/CommonInputOuterContainer.md +56 -0
- package/dist/ai/CommonPopover.md +446 -0
- package/dist/ai/ErrorIcon.md +61 -0
- package/dist/ai/FlatListBox.md +382 -0
- package/dist/ai/GroupedListBox.md +538 -0
- package/dist/ai/ListBox.md +234 -0
- package/dist/ai/OptionsContainer.md +257 -0
- package/dist/ai/index.md +124 -0
- package/dist/components/BaseButton/BaseButton.vue.d.ts +2 -163
- package/dist/components/BaseButton/types.d.ts +158 -0
- package/dist/components/BaseCheckbox/BaseCheckbox.vue.d.ts +4 -4
- package/dist/components/BaseCheckboxGroup/BaseCheckboxGroup.vue.d.ts +2 -2
- package/dist/components/BaseCheckboxGroup/types.d.ts +16 -9
- package/dist/components/BaseColorInput/BaseColorInput.vue.d.ts +12 -52
- package/dist/components/BaseDatePicker/BaseDatePicker.vue.d.ts +4 -76
- package/dist/components/BaseDatePicker/types.d.ts +100 -0
- package/dist/components/BaseDatePickerInput/BaseDatePickerInput.vue.d.ts +18 -315
- package/dist/components/BaseDatePickerInput/types.d.ts +206 -0
- package/dist/components/BaseDialog/BaseDialog.vue.d.ts +6 -156
- package/dist/components/BaseDialog/types.d.ts +180 -0
- package/dist/components/BaseInputContainer/BaseInputContainer.vue.d.ts +1 -107
- package/dist/components/BaseInputContainer/types.d.ts +126 -0
- package/dist/components/BaseNumberInput/BaseNumberInput.vue.d.ts +7 -170
- package/dist/components/BaseNumberInput/types.d.ts +191 -0
- package/dist/components/BaseRadio/BaseRadio.vue.d.ts +6 -119
- package/dist/components/BaseRadio/types.d.ts +173 -0
- package/dist/components/BaseRadioGroup/BaseRadioGroup.vue.d.ts +4 -274
- package/dist/components/BaseRadioGroup/types.d.ts +240 -0
- package/dist/components/BaseRating/BaseRating.vue.d.ts +5 -106
- package/dist/components/BaseRating/types.d.ts +144 -0
- package/dist/components/BaseSelect/BaseSelect.vue.d.ts +2 -363
- package/dist/components/BaseSelect/types.d.ts +457 -0
- package/dist/components/BaseSlider/BaseSlider.vue.d.ts +6 -178
- package/dist/components/BaseSlider/types.d.ts +201 -0
- package/dist/components/BaseSwitch/BaseSwitch.vue.d.ts +7 -35
- package/dist/components/BaseSwitch/types.d.ts +25 -0
- package/dist/components/BaseSwitchGroup/BaseSwitchGroup.vue.d.ts +5 -11
- package/dist/components/BaseSwitchGroup/types.d.ts +8 -0
- package/dist/components/BaseTag/BaseTag.vue.d.ts +27 -222
- package/dist/components/BaseTag/types.d.ts +136 -0
- package/dist/components/BaseTextInput/BaseTextInput.vue.d.ts +5 -141
- package/dist/components/BaseTextInput/types.d.ts +166 -0
- package/dist/components/BaseTextarea/BaseTextarea.vue.d.ts +5 -131
- package/dist/components/BaseTextarea/types.d.ts +151 -0
- package/dist/components/BbAccordion/BbAccordion.vue.d.ts +3 -51
- package/dist/components/BbAccordion/types.d.ts +32 -0
- package/dist/components/BbAlert/BbAlert.vue.d.ts +3 -50
- package/dist/components/BbAlert/types.d.ts +42 -0
- package/dist/components/BbAvatar/BbAvatar.vue.d.ts +3 -23
- package/dist/components/BbAvatar/types.d.ts +34 -0
- package/dist/components/BbBadge/BbBadge.vue.d.ts +3 -40
- package/dist/components/BbBadge/types.d.ts +30 -0
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.d.ts +14 -178
- package/dist/components/BbBreadcrumbs/types.d.ts +109 -0
- package/dist/components/BbButton/BbButton.vue.d.ts +4 -163
- package/dist/components/BbButton/types.d.ts +159 -0
- package/dist/components/BbCheckbox/BbCheckbox.vue.d.ts +7 -165
- package/dist/components/BbCheckbox/types.d.ts +130 -0
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +7 -324
- package/dist/components/BbCheckboxGroup/types.d.ts +189 -0
- package/dist/components/BbChip/BbChip.vue.d.ts +6 -28
- package/dist/components/BbChip/types.d.ts +23 -0
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +3 -24
- package/dist/components/BbCollapsible/types.d.ts +20 -0
- package/dist/components/BbColorInput/BbColorInput.vue.d.ts +10 -151
- package/dist/components/BbColorInput/types.d.ts +131 -0
- package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +2 -112
- package/dist/components/BbColorPalette/types.d.ts +127 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +6 -212
- package/dist/components/BbDatePickerInput/types.d.ts +180 -0
- package/dist/components/BbDialog/BbDialog.vue.d.ts +2 -2
- package/dist/components/BbDialog/types.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +21 -247
- package/dist/components/BbDropdown/types.d.ts +147 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +16 -209
- package/dist/components/BbDropdownButton/types.d.ts +114 -0
- package/dist/components/BbDropzone/BbDropzone.vue.d.ts +7 -86
- package/dist/components/BbDropzone/types.d.ts +67 -0
- package/dist/components/BbIcon/BbIcon.vue.d.ts +2 -26
- package/dist/components/BbIcon/types.d.ts +28 -0
- package/dist/components/BbIntersection/BbIntersection.vue.d.ts +3 -41
- package/dist/components/BbIntersection/types.d.ts +36 -0
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +44 -175
- package/dist/components/BbNumberInput/types.d.ts +130 -0
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +5 -93
- package/dist/components/BbOffCanvas/types.d.ts +97 -0
- package/dist/components/BbPagination/BbPagination.vue.d.ts +4 -87
- package/dist/components/BbPagination/types.d.ts +80 -0
- package/dist/components/BbPopover/BbPopover.vue.d.ts +9 -135
- package/dist/components/BbPopover/types.d.ts +99 -0
- package/dist/components/BbProgress/BbProgress.vue.d.ts +2 -14
- package/dist/components/BbProgress/types.d.ts +20 -0
- package/dist/components/BbRadio/BbRadio.vue.d.ts +7 -150
- package/dist/components/BbRadio/types.d.ts +117 -0
- package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +7 -322
- package/dist/components/BbRadioGroup/types.d.ts +182 -0
- package/dist/components/BbRating/BbRating.vue.d.ts +10 -113
- package/dist/components/BbRating/types.d.ts +105 -0
- package/dist/components/BbRatio/BbRatio.vue.d.ts +3 -18
- package/dist/components/BbRatio/types.d.ts +15 -0
- package/dist/components/BbSelect/BbSelect.vue.d.ts +7 -375
- package/dist/components/BbSelect/types.d.ts +351 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +1 -1
- package/dist/components/BbSelectPopover/types.d.ts +351 -0
- package/dist/components/BbSlider/BbSlider.vue.d.ts +10 -129
- package/dist/components/BbSlider/types.d.ts +123 -0
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +2 -23
- package/dist/components/BbSmoothHeight/types.d.ts +24 -0
- package/dist/components/BbSpinner/BbSpinner.vue.d.ts +3 -5
- package/dist/components/BbSpinner/types.d.ts +8 -0
- package/dist/components/BbSwitch/BbSwitch.vue.d.ts +9 -65
- package/dist/components/BbSwitch/types.d.ts +29 -0
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +7 -190
- package/dist/components/BbSwitchGroup/types.d.ts +81 -0
- package/dist/components/BbTab/BbTab.vue.d.ts +9 -247
- package/dist/components/BbTab/types.d.ts +186 -0
- package/dist/components/BbTag/BbTag.vue.d.ts +6 -156
- package/dist/components/BbTag/types.d.ts +158 -0
- package/dist/components/BbTextInput/BbTextInput.vue.d.ts +10 -152
- package/dist/components/BbTextInput/types.d.ts +137 -0
- package/dist/components/BbTextarea/BbTextarea.vue.d.ts +10 -142
- package/dist/components/BbTextarea/types.d.ts +123 -0
- package/dist/components/BbToast/BbToast.vue.d.ts +2 -6
- package/dist/components/BbToast/types.d.ts +8 -0
- package/dist/components/BbTooltip/BbTooltip.vue.d.ts +8 -65
- package/dist/components/BbTooltip/types.d.ts +55 -0
- package/dist/components/BbTree/BbTree.vue.d.ts +2 -65
- package/dist/components/BbTree/types.d.ts +69 -0
- package/dist/components/{ChipsBox.vue.d.ts → ChipsBox/ChipsBox.vue.d.ts} +5 -6
- package/dist/components/ChipsBox/types.d.ts +14 -0
- package/dist/components/{ClearableButton.vue.d.ts → ClearableButton/ClearableButton.vue.d.ts} +2 -0
- package/dist/components/ClearableButton/types.d.ts +3 -0
- package/dist/components/{CommaBox.vue.d.ts → CommaBox/CommaBox.vue.d.ts} +5 -6
- package/dist/components/CommaBox/types.d.ts +14 -0
- package/dist/components/CommonInputInnerContainer/CommonInputInnerContainer.vue.d.ts +25 -0
- package/dist/components/CommonInputInnerContainer/types.d.ts +47 -0
- package/dist/components/CommonInputOuterContainer/CommonInputOuterContainer.vue.d.ts +17 -0
- package/dist/components/CommonInputOuterContainer/types.d.ts +16 -0
- package/dist/components/{CommonPopover.vue.d.ts → CommonPopover/CommonPopover.vue.d.ts} +5 -30
- package/dist/components/CommonPopover/types.d.ts +43 -0
- package/dist/components/{ErrorIcon.vue.d.ts → ErrorIcon/ErrorIcon.vue.d.ts} +2 -0
- package/dist/components/ErrorIcon/types.d.ts +3 -0
- package/dist/components/FlatListBox/types.d.ts +97 -0
- package/dist/components/GroupedListBox/types.d.ts +118 -0
- package/dist/components/ListBox/ListBox.vue.d.ts +30 -0
- package/dist/components/ListBox/types.d.ts +133 -0
- package/dist/components/OptionsContainer/OptionsContainer.vue.d.ts +13 -0
- package/dist/components/OptionsContainer/types.d.ts +96 -0
- package/dist/composables/useBbConfig.d.ts +1 -1
- package/dist/composables/useConfirm.d.ts +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +18 -18
- package/dist/index109.js +9 -9
- package/dist/index110.js +50 -49
- package/dist/index114.js +1 -1
- package/dist/index118.js +1 -1
- package/dist/index122.js +1 -0
- package/dist/index124.js +4 -4
- package/dist/index126.js +13 -13
- package/dist/index132.js +22 -19
- package/dist/index134.js +1 -1
- package/dist/index136.js +5 -5
- package/dist/index138.js +1 -1
- package/dist/index14.js +1 -1
- package/dist/index140.js +18 -17
- package/dist/index144.js +1 -1
- package/dist/index146.js +2 -2
- package/dist/index149.js +2 -2
- package/dist/index16.js +3 -3
- package/dist/index18.js +3 -3
- package/dist/index20.js +70 -59
- package/dist/index22.js +14 -14
- package/dist/index221.js +138 -2
- package/dist/index222.js +2 -138
- package/dist/index224.js +5 -34
- package/dist/index225.js +7 -32
- package/dist/index226.js +32 -26
- package/dist/index227.js +7 -0
- package/dist/index228.js +5 -5
- package/dist/index229.js +5 -8
- package/dist/index230.js +5 -7
- package/dist/index231.js +3 -2
- package/dist/index232.js +2 -9
- package/dist/index233.js +6 -13
- package/dist/index234.js +8 -3
- package/dist/index235.js +268 -2
- package/dist/index236.js +52 -11
- package/dist/index237.js +50 -6
- package/dist/index238.js +32 -3
- package/dist/index239.js +60 -3
- package/dist/index24.js +10 -10
- package/dist/index240.js +13 -2
- package/dist/index241.js +187 -17
- package/dist/index242.js +3 -12
- package/dist/index243.js +2 -51
- package/dist/index244.js +2 -18
- package/dist/index245.js +2 -12
- package/dist/index246.js +12 -16
- package/dist/index247.js +11 -28
- package/dist/index248.js +48 -15
- package/dist/index249.js +17 -4
- package/dist/index250.js +2 -2
- package/dist/index252.js +2 -2
- package/dist/index254.js +3 -135
- package/dist/index255.js +4 -0
- package/dist/index256.js +4 -107
- package/dist/index257.js +19 -12
- package/dist/index258.js +6 -2
- package/dist/index259.js +16 -7
- package/dist/index26.js +3 -3
- package/dist/index260.js +86 -7
- package/dist/index262.js +32 -0
- package/dist/index263.js +18 -5
- package/dist/index264.js +12 -5
- package/dist/index265.js +18 -5
- package/dist/index266.js +2 -5
- package/dist/index267.js +7 -5
- package/dist/index268.js +7 -5
- package/dist/index269.js +3 -67
- package/dist/index270.js +4 -33
- package/dist/index271.js +5 -2
- package/dist/index272.js +5 -2
- package/dist/index273.js +5 -3
- package/dist/index274.js +135 -4
- package/dist/index276.js +9 -6
- package/dist/index277.js +7 -11
- package/dist/index278.js +23 -5
- package/dist/index279.js +3 -5
- package/dist/index28.js +57 -55
- package/dist/index280.js +21 -266
- package/dist/index281.js +364 -43
- package/dist/index283.js +32 -31
- package/dist/index284.js +3 -60
- package/dist/index285.js +25 -4
- package/dist/index286.js +3 -20
- package/dist/index287.js +18 -5
- package/dist/index288.js +12 -373
- package/dist/index289.js +109 -0
- package/dist/index290.js +11 -6
- package/dist/index291.js +66 -15
- package/dist/index292.js +32 -10
- package/dist/index294.js +5 -8
- package/dist/index295.js +9 -20
- package/dist/index296.js +2 -8
- package/dist/index297.js +9 -23
- package/dist/index298.js +52 -24
- package/dist/index299.js +5 -188
- package/dist/index30.js +3 -3
- package/dist/index300.js +21 -3
- package/dist/index301.js +28 -3
- package/dist/index303.js +9 -0
- package/dist/index304.js +2 -7
- package/dist/index305.js +280 -3
- package/dist/index306.js +2 -2
- package/dist/index307.js +16 -5
- package/dist/index308.js +2 -7
- package/dist/index309.js +16 -3
- package/dist/index310.js +2 -3
- package/dist/index311.js +27 -3
- package/dist/index312.js +2 -2
- package/dist/index313.js +2 -28
- package/dist/index314.js +2 -17
- package/dist/index315.js +2 -4
- package/dist/index316.js +1 -1
- package/dist/index317.js +28 -3
- package/dist/index318.js +2 -280
- package/dist/index319.js +7 -2
- package/dist/index32.js +2 -2
- package/dist/index320.js +719 -125
- package/dist/index321.js +366 -2
- package/dist/index322.js +56 -14
- package/dist/index323.js +4 -2
- package/dist/index324.js +3 -16
- package/dist/index325.js +17 -2
- package/dist/index326.js +3 -16
- package/dist/index327.js +3 -2
- package/dist/index328.js +3 -19
- package/dist/index329.js +3 -2
- package/dist/index330.js +120 -22
- package/dist/index331.js +2 -2
- package/dist/index332.js +15 -2
- package/dist/index333.js +2 -2
- package/dist/index334.js +19 -2
- package/dist/index335.js +2 -2
- package/dist/index336.js +5 -2
- package/dist/index337.js +5 -3
- package/dist/index338.js +2 -4
- package/dist/index339.js +4 -719
- package/dist/index34.js +8 -8
- package/dist/index340.js +2 -366
- package/dist/index341.js +3 -57
- package/dist/index342.js +3 -6
- package/dist/index343.js +6 -5
- package/dist/index344.js +6 -34
- package/dist/index345.js +17 -127
- package/dist/index346.js +7 -396
- package/dist/index347.js +14 -199
- package/dist/index348.js +5 -259
- package/dist/index349.js +6 -227
- package/dist/index352.js +35 -2
- package/dist/index353.js +129 -2
- package/dist/index354.js +378 -114
- package/dist/index355.js +92 -6
- package/dist/index356.js +226 -17
- package/dist/index357.js +22 -9
- package/dist/index359.js +7 -5
- package/dist/index36.js +4 -4
- package/dist/index360.js +200 -7
- package/dist/index361.js +255 -18
- package/dist/index362.js +136 -0
- package/dist/index363.js +2 -93
- package/dist/index364.js +2 -441
- package/dist/index365.js +427 -114
- package/dist/index366.js +127 -46
- package/dist/index367.js +44 -67
- package/dist/index368.js +66 -516
- package/dist/index369.js +515 -45
- package/dist/index370.js +52 -0
- package/dist/index38.js +133 -131
- package/dist/index40.js +8 -8
- package/dist/index42.js +2 -2
- package/dist/index44.js +16 -15
- package/dist/index46.js +4 -4
- package/dist/index50.js +28 -25
- package/dist/index54.js +1 -1
- package/dist/index56.js +1 -1
- package/dist/index58.js +2 -2
- package/dist/index60.js +2 -2
- package/dist/index62.js +5 -5
- package/dist/index66.js +3 -1
- package/dist/index68.js +1 -1
- package/dist/index74.js +4 -4
- package/dist/index82.js +6 -6
- package/dist/index84.js +1 -1
- package/dist/index86.js +2 -2
- package/dist/index88.js +3 -3
- package/dist/index90.js +1 -1
- package/dist/index93.js +3 -3
- package/dist/index95.js +2 -2
- package/dist/index97.js +5 -5
- package/dist/index99.js +1 -1
- package/dist/utilities/functions/parseSize.d.ts +1 -1
- package/package.json +5 -3
- package/dist/components/CommonInputInnerContainer.vue.d.ts +0 -81
- package/dist/components/CommonInputOuterContainer.vue.d.ts +0 -41
- package/dist/components/FlatListBox.vue.d.ts +0 -119
- package/dist/components/GroupedListBox.vue.d.ts +0 -153
- package/dist/components/ListBox.vue.d.ts +0 -170
- package/dist/components/OptionsContainer.vue.d.ts +0 -172
- package/dist/index261.js +0 -88
- package/dist/index275.js +0 -25
- package/dist/index282.js +0 -54
- package/dist/index293.js +0 -5
- package/dist/index302.js +0 -55
- package/dist/index358.js +0 -17
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# BbColorPalette
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<!-- Activator slot — skipped when an external activator ref is passed -->
|
|
8
|
+
<slot
|
|
9
|
+
v-if="!hasExternalActivator"
|
|
10
|
+
name="activator"
|
|
11
|
+
v-bind="{
|
|
12
|
+
props: { ref: setActivatorRef },
|
|
13
|
+
anchorProps: { ref: setAnchorRef },
|
|
14
|
+
open: isOpen,
|
|
15
|
+
color: modelValue,
|
|
16
|
+
disabled,
|
|
17
|
+
}"
|
|
18
|
+
/>
|
|
19
|
+
|
|
20
|
+
<!-- Palette popover -->
|
|
21
|
+
<CommonPopover
|
|
22
|
+
v-model="isOpen"
|
|
23
|
+
:anchor="effectiveAnchor"
|
|
24
|
+
:aria-label="t('colorInput.dialogLabel').value"
|
|
25
|
+
:arrow-padding="arrowPadding"
|
|
26
|
+
:boundary="boundary"
|
|
27
|
+
class="bb-color-palette__popover"
|
|
28
|
+
dialog
|
|
29
|
+
:eager="eager"
|
|
30
|
+
:flip="flip"
|
|
31
|
+
:hide-arrow="!showArrow"
|
|
32
|
+
:offset="offset"
|
|
33
|
+
:padding="padding"
|
|
34
|
+
:placement="placement"
|
|
35
|
+
:transition-duration="transitionDuration"
|
|
36
|
+
>
|
|
37
|
+
<ColorPallette
|
|
38
|
+
ref="paletteRef"
|
|
39
|
+
:alpha="alpha"
|
|
40
|
+
:inert="!isOpen"
|
|
41
|
+
:model-value="modelValue"
|
|
42
|
+
:picker="picker"
|
|
43
|
+
:swatches="swatches"
|
|
44
|
+
@update:model-value="emit('update:modelValue', $event)"
|
|
45
|
+
/>
|
|
46
|
+
</CommonPopover>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<script setup lang="ts">
|
|
50
|
+
import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';
|
|
51
|
+
import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
|
|
52
|
+
import { useLocale } from '@/composables/useLocale';
|
|
53
|
+
import ColorPallette from '../BaseColorInput/ColorPalette.vue';
|
|
54
|
+
import CommonPopover from '../CommonPopover/CommonPopover.vue';
|
|
55
|
+
import type {
|
|
56
|
+
BbColorPaletteProps,
|
|
57
|
+
BbColorPaletteEvents,
|
|
58
|
+
BbColorPaletteSlots,
|
|
59
|
+
} from './types';
|
|
60
|
+
export type { BbColorPaletteProps, BbColorPaletteEvents, BbColorPaletteSlots };
|
|
61
|
+
|
|
62
|
+
const props = withDefaults(defineProps<BbColorPaletteProps>(), {
|
|
63
|
+
alpha: false,
|
|
64
|
+
flip: true,
|
|
65
|
+
offset: 4,
|
|
66
|
+
padding: 6,
|
|
67
|
+
picker: false,
|
|
68
|
+
showArrow: false,
|
|
69
|
+
transitionDuration: 250,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const emit = defineEmits<BbColorPaletteEvents>();
|
|
73
|
+
|
|
74
|
+
defineSlots<BbColorPaletteSlots>();
|
|
75
|
+
|
|
76
|
+
const { t } = useLocale();
|
|
77
|
+
|
|
78
|
+
// ---- Palette ref (for focus management) ----------------------------------------
|
|
79
|
+
|
|
80
|
+
const paletteRef = ref<{ el: HTMLElement | null } | null>(null);
|
|
81
|
+
|
|
82
|
+
// ---- Activator element ---------------------------------------------------------
|
|
83
|
+
|
|
84
|
+
const activatorEl = ref<HTMLElement | undefined>();
|
|
85
|
+
const anchorEl = ref<HTMLElement | undefined>();
|
|
86
|
+
const hasExternalActivator = computed(() => props.activator != null);
|
|
87
|
+
|
|
88
|
+
/** Ref callback passed to the activator slot. */
|
|
89
|
+
const setActivatorRef = (reference: unknown) => {
|
|
90
|
+
activatorEl.value = extractDomContainer(reference) ?? undefined;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/** Ref callback for the anchor element when it differs from the activator. */
|
|
94
|
+
const setAnchorRef = (reference: unknown) => {
|
|
95
|
+
anchorEl.value = extractDomContainer(reference) ?? undefined;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// Sync external activator prop → activatorEl
|
|
99
|
+
watch(
|
|
100
|
+
() => props.activator,
|
|
101
|
+
(val) => {
|
|
102
|
+
activatorEl.value = extractDomContainer(val) ?? undefined;
|
|
103
|
+
},
|
|
104
|
+
{ immediate: true }
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
// Sync external anchor prop → anchorEl
|
|
108
|
+
watch(
|
|
109
|
+
() => props.anchor,
|
|
110
|
+
(val) => {
|
|
111
|
+
anchorEl.value =
|
|
112
|
+
val != null ? (extractDomContainer(val) ?? undefined) : undefined;
|
|
113
|
+
},
|
|
114
|
+
{ immediate: true }
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
// The element the popover positions itself relative to
|
|
118
|
+
const effectiveAnchor = computed(() => anchorEl.value ?? activatorEl.value);
|
|
119
|
+
|
|
120
|
+
// ---- Open state ----------------------------------------------------------------
|
|
121
|
+
|
|
122
|
+
const isOpen = ref(false);
|
|
123
|
+
let previousFocus: HTMLElement | null = null;
|
|
124
|
+
|
|
125
|
+
const onActivatorClick = (event: MouseEvent) => {
|
|
126
|
+
if (props.disabled || props.readonly) return;
|
|
127
|
+
event.stopPropagation();
|
|
128
|
+
isOpen.value = !isOpen.value;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
/** Close when the backdrop (dialog element itself) is clicked. */
|
|
132
|
+
const onClickDocument = (event: Event) => {
|
|
133
|
+
if (event.target instanceof HTMLDialogElement) {
|
|
134
|
+
isOpen.value = false;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// Side effects only: emit, document listener, focus management
|
|
139
|
+
watch(isOpen, async (val) => {
|
|
140
|
+
emit('update:open', val);
|
|
141
|
+
if (val) {
|
|
142
|
+
previousFocus =
|
|
143
|
+
document.activeElement instanceof HTMLElement
|
|
144
|
+
? document.activeElement
|
|
145
|
+
: null;
|
|
146
|
+
document.addEventListener('click', onClickDocument, { passive: true });
|
|
147
|
+
// Wait for the popover to be rendered, then move focus into the palette
|
|
148
|
+
await nextTick();
|
|
149
|
+
paletteRef.value?.el?.querySelector<HTMLElement>('[tabindex="0"]')?.focus();
|
|
150
|
+
} else {
|
|
151
|
+
document.removeEventListener('click', onClickDocument);
|
|
152
|
+
// Restore focus to the element that was active before the palette opened
|
|
153
|
+
previousFocus?.focus();
|
|
154
|
+
previousFocus = null;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// ---- Programmatic listeners on the activator element ---------------------------
|
|
159
|
+
|
|
160
|
+
let cleanupActivator: (() => void) | null = null;
|
|
161
|
+
|
|
162
|
+
watch(
|
|
163
|
+
activatorEl,
|
|
164
|
+
(el) => {
|
|
165
|
+
cleanupActivator?.();
|
|
166
|
+
cleanupActivator = null;
|
|
167
|
+
if (!el) return;
|
|
168
|
+
el.addEventListener('click', onActivatorClick);
|
|
169
|
+
cleanupActivator = () => {
|
|
170
|
+
el.removeEventListener('click', onActivatorClick);
|
|
171
|
+
el.removeAttribute('aria-haspopup');
|
|
172
|
+
el.removeAttribute('aria-expanded');
|
|
173
|
+
el.removeAttribute('aria-label');
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
{ immediate: true }
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
// ---- Reactive ARIA on the activator element ------------------------------------
|
|
180
|
+
// Runs for both slot and external-activator paths whenever the element, open
|
|
181
|
+
// state, or label changes — keeping attributes always in sync.
|
|
182
|
+
|
|
183
|
+
const effectiveLabel = computed(
|
|
184
|
+
() => props.label ?? t('colorInput.openPicker').value
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
watch(
|
|
188
|
+
[activatorEl, isOpen, effectiveLabel] as const,
|
|
189
|
+
([el, open, label]) => {
|
|
190
|
+
if (!el) return;
|
|
191
|
+
el.setAttribute('aria-haspopup', 'dialog');
|
|
192
|
+
el.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
193
|
+
el.setAttribute('aria-label', label);
|
|
194
|
+
},
|
|
195
|
+
{ immediate: true }
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
onBeforeUnmount(() => {
|
|
199
|
+
cleanupActivator?.();
|
|
200
|
+
document.removeEventListener('click', onClickDocument);
|
|
201
|
+
});
|
|
202
|
+
</script>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Types
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
import type { CommonProps } from '@/types/CommonProps';
|
|
209
|
+
|
|
210
|
+
export type BbColorPaletteProps = Pick<
|
|
211
|
+
CommonProps,
|
|
212
|
+
| 'arrowPadding'
|
|
213
|
+
| 'eager'
|
|
214
|
+
| 'offset'
|
|
215
|
+
| 'padding'
|
|
216
|
+
| 'placement'
|
|
217
|
+
| 'transitionDuration'
|
|
218
|
+
> & {
|
|
219
|
+
/**
|
|
220
|
+
* v-model: the current color as a `#RRGGBB` hex string (or `#RRGGBBAA` when
|
|
221
|
+
* `alpha` is enabled), or `null` when empty.
|
|
222
|
+
*/
|
|
223
|
+
modelValue: string | null;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Enable the alpha channel. The picker shows an opacity slider and emits
|
|
227
|
+
* `#RRGGBBAA` hex8 values.
|
|
228
|
+
*
|
|
229
|
+
* @defaultValue `false`
|
|
230
|
+
*/
|
|
231
|
+
alpha?: boolean;
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Controls swatches display in the picker:
|
|
235
|
+
* - `true` — show the built-in Material-palette swatches
|
|
236
|
+
* - `string[][]` — show custom swatches (each inner array = a column of shades)
|
|
237
|
+
* - `false` / omitted — no swatches section
|
|
238
|
+
*/
|
|
239
|
+
swatches?: boolean | string[][];
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* External activator element or component ref.
|
|
243
|
+
* When provided, the `activator` slot is not rendered and click listeners are
|
|
244
|
+
* attached programmatically to the referenced element — mirroring the
|
|
245
|
+
* BbDropdown activator API.
|
|
246
|
+
*/
|
|
247
|
+
activator?: HTMLElement | Record<string, any> | null;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Element or component ref the popover positions itself relative to.
|
|
251
|
+
* Defaults to the activator element when omitted, allowing the popover to
|
|
252
|
+
* be anchored to a larger container (e.g. the full input row) while a
|
|
253
|
+
* smaller element (e.g. a color dot) remains the click target.
|
|
254
|
+
*/
|
|
255
|
+
anchor?: HTMLElement | Record<string, any> | null;
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Constrains the popover within a bounding element.
|
|
259
|
+
* Accepts an HTMLElement, a Vue component ref, or a CSS selector string.
|
|
260
|
+
*/
|
|
261
|
+
boundary?: HTMLElement | Record<string, any> | string | null;
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Whether to flip the popover to the opposite side when there is not enough space.
|
|
265
|
+
*
|
|
266
|
+
* @defaultValue `true`
|
|
267
|
+
*/
|
|
268
|
+
flip?: boolean;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Show the popover arrow. Hidden by default since the palette has its own visual frame.
|
|
272
|
+
*
|
|
273
|
+
* @defaultValue `false`
|
|
274
|
+
*/
|
|
275
|
+
showArrow?: boolean;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Disable all interaction (activator and palette).
|
|
279
|
+
*/
|
|
280
|
+
disabled?: boolean;
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Prevent opening the palette while keeping the activator visible.
|
|
284
|
+
*/
|
|
285
|
+
readonly?: boolean;
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Accessible label applied to the activator element via `aria-label`.
|
|
289
|
+
* Defaults to the locale string for "Open color picker" when omitted.
|
|
290
|
+
*/
|
|
291
|
+
label?: string;
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Show an eyedropper button inside the palette to sample any color on screen.
|
|
295
|
+
* Uses the native EyeDropper API — hidden automatically on unsupported browsers.
|
|
296
|
+
*
|
|
297
|
+
* @defaultValue `false`
|
|
298
|
+
*/
|
|
299
|
+
picker?: boolean;
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export type BbColorPaletteEvents = {
|
|
303
|
+
/** Emitted when the color value changes. Payload is `#RRGGBB` or `#RRGGBBAA` (when alpha is enabled), or `null` when cleared. */
|
|
304
|
+
(e: 'update:modelValue', value: string | null): void;
|
|
305
|
+
/** Emitted whenever the popover opens or closes. */
|
|
306
|
+
(e: 'update:open', value: boolean): void;
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
/** Props spread onto the activator element to wire up the dropdown reference. */
|
|
310
|
+
export type BbColorPaletteActivatorProps = {
|
|
311
|
+
/** Ref callback to register the activator element. */
|
|
312
|
+
ref: (el: unknown) => void;
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
/** Props spread onto an optional anchor element when it differs from the activator. */
|
|
316
|
+
export type BbColorPaletteAnchorProps = {
|
|
317
|
+
/** Ref callback to register the anchor element. */
|
|
318
|
+
ref: (el: unknown) => void;
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
/** Props exposed by the `activator` slot. */
|
|
322
|
+
export type BbColorPaletteActivatorSlotProps = {
|
|
323
|
+
/**
|
|
324
|
+
* Spread onto your activator element to register the ref.
|
|
325
|
+
* ARIA attributes (`aria-haspopup`, `aria-expanded`, `aria-label`) are set
|
|
326
|
+
* programmatically so they stay correct for both the slot and external activator paths.
|
|
327
|
+
*/
|
|
328
|
+
props: BbColorPaletteActivatorProps;
|
|
329
|
+
/**
|
|
330
|
+
* Spread onto a wrapping element when you want the popover to anchor to
|
|
331
|
+
* something larger than the click target (e.g. the full input row).
|
|
332
|
+
* When unused the activator element is also the anchor.
|
|
333
|
+
*/
|
|
334
|
+
anchorProps: BbColorPaletteAnchorProps;
|
|
335
|
+
/** Whether the palette popover is currently open. */
|
|
336
|
+
open: boolean;
|
|
337
|
+
/** The current color value (mirrors `modelValue`). */
|
|
338
|
+
color: string | null;
|
|
339
|
+
/** Whether the palette is disabled. */
|
|
340
|
+
disabled?: boolean;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
export type BbColorPaletteSlots = {
|
|
344
|
+
/**
|
|
345
|
+
* Custom activator element.
|
|
346
|
+
* Apply `v-bind="props"` to the element you want to use as the trigger —
|
|
347
|
+
* this wires up the ref callback that lets BbColorPalette track the element.
|
|
348
|
+
*
|
|
349
|
+
* @example
|
|
350
|
+
* ```vue
|
|
351
|
+
* <BbColorPalette v-model="color">
|
|
352
|
+
* <template #activator="{ props: dotProps, open, color }">
|
|
353
|
+
* <button v-bind="dotProps" :style="{ background: color }">Pick</button>
|
|
354
|
+
* </template>
|
|
355
|
+
* </BbColorPalette>
|
|
356
|
+
* ```
|
|
357
|
+
*/
|
|
358
|
+
activator?: (props: BbColorPaletteActivatorSlotProps) => any;
|
|
359
|
+
};
|
|
360
|
+
```
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# BbConfirm
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<BaseDialog
|
|
8
|
+
:class="dialogClasses"
|
|
9
|
+
:hide-header="state.current?.hideHeader"
|
|
10
|
+
:model-value="state.processing"
|
|
11
|
+
:persistent="isBusy"
|
|
12
|
+
:show-close="!isBusy"
|
|
13
|
+
:size="state.current?.size"
|
|
14
|
+
:title="state.current?.title"
|
|
15
|
+
@update:model-value="onClose"
|
|
16
|
+
>
|
|
17
|
+
<div class="bb-confirm__content">
|
|
18
|
+
<BbSpinner v-if="state.loading" size="36" />
|
|
19
|
+
<div v-else-if="hasText" class="bb-confirm__text">
|
|
20
|
+
{{ state.current?.text }}
|
|
21
|
+
</div>
|
|
22
|
+
<!-- Teleport target for custom content injected via external components -->
|
|
23
|
+
<div v-show="showTeleport" class="bb-confirm__teleport"></div>
|
|
24
|
+
</div>
|
|
25
|
+
<template v-if="showActions" #footer>
|
|
26
|
+
<BbButton
|
|
27
|
+
v-if="state.current?.no !== false"
|
|
28
|
+
:loading="state.noBusy"
|
|
29
|
+
class="bb-confirm__no"
|
|
30
|
+
:disabled="state.yesBusy"
|
|
31
|
+
@click="onNoClick"
|
|
32
|
+
>
|
|
33
|
+
{{ state.current?.noText }}
|
|
34
|
+
</BbButton>
|
|
35
|
+
|
|
36
|
+
<BbButton
|
|
37
|
+
v-if="state.current?.yes !== false"
|
|
38
|
+
:loading="state.yesBusy"
|
|
39
|
+
class="bb-confirm__yes"
|
|
40
|
+
:disabled="state.noBusy"
|
|
41
|
+
@click="onYesClick"
|
|
42
|
+
>
|
|
43
|
+
{{ state.current?.yesText }}
|
|
44
|
+
</BbButton>
|
|
45
|
+
</template>
|
|
46
|
+
</BaseDialog>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<script setup lang="ts">
|
|
50
|
+
import { computed } from 'vue';
|
|
51
|
+
import {
|
|
52
|
+
confirmState as state,
|
|
53
|
+
processMessage,
|
|
54
|
+
} from '@/composables/useConfirm';
|
|
55
|
+
import BaseDialog from '../BaseDialog/BaseDialog.vue';
|
|
56
|
+
import BbSpinner from '../BbSpinner/BbSpinner.vue';
|
|
57
|
+
import BbButton from '../BbButton/BbButton.vue';
|
|
58
|
+
|
|
59
|
+
const isBusy = computed(
|
|
60
|
+
() => state.value.yesBusy || state.value.noBusy || state.value.loading
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
const hasText = computed(() => Boolean(state.value.current?.text));
|
|
64
|
+
|
|
65
|
+
const showTeleport = computed(
|
|
66
|
+
() => state.value.current && !state.value.current.text && !state.value.loading
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
const showActions = computed(
|
|
70
|
+
() => state.value.current?.actions !== false && !state.value.loading
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const dialogClasses = computed(() => [
|
|
74
|
+
'bb-confirm',
|
|
75
|
+
`bb-confirm--${state.value.current?.theme ?? 'default'}`,
|
|
76
|
+
]);
|
|
77
|
+
|
|
78
|
+
const onClose = (value: boolean) => {
|
|
79
|
+
if (!value) processMessage(false);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const onYesClick = () => processMessage(true);
|
|
83
|
+
|
|
84
|
+
const onNoClick = () => processMessage(false, true);
|
|
85
|
+
</script>
|
|
86
|
+
|
|
87
|
+
<style lang="postcss">
|
|
88
|
+
@import './index.css';
|
|
89
|
+
</style>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Styles
|
|
93
|
+
|
|
94
|
+
```css
|
|
95
|
+
.bb-confirm {
|
|
96
|
+
.bb-base-dialog {
|
|
97
|
+
&__overlay {
|
|
98
|
+
}
|
|
99
|
+
&__panel {
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&__content {
|
|
103
|
+
}
|
|
104
|
+
&__header {
|
|
105
|
+
--bb-dialog-py: 15px;
|
|
106
|
+
}
|
|
107
|
+
&__title {
|
|
108
|
+
}
|
|
109
|
+
&-close {
|
|
110
|
+
button {
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
&__content {
|
|
114
|
+
}
|
|
115
|
+
&__label {
|
|
116
|
+
}
|
|
117
|
+
&__icon {
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
&__body {
|
|
121
|
+
--bb-dialog-py: 12px;
|
|
122
|
+
overflow: clip;
|
|
123
|
+
|
|
124
|
+
.bb-confirm__content {
|
|
125
|
+
.bb-confirm__text {
|
|
126
|
+
}
|
|
127
|
+
> .bb-spinner {
|
|
128
|
+
display: block;
|
|
129
|
+
margin-left: auto;
|
|
130
|
+
margin-right: auto;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
&__description {
|
|
135
|
+
}
|
|
136
|
+
&__footer {
|
|
137
|
+
--bb-dialog-py: 15px;
|
|
138
|
+
&:not(:empty) {
|
|
139
|
+
text-align: right;
|
|
140
|
+
> :not(:last-child) {
|
|
141
|
+
margin-right: 12px;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.bb-confirm__no {
|
|
146
|
+
--color: var(--bb-panel);
|
|
147
|
+
--text-color: var(--bb-text);
|
|
148
|
+
border-color: var(--bb-border);
|
|
149
|
+
&:hover:not(:disabled),
|
|
150
|
+
&:focus-visible:not(:disabled) {
|
|
151
|
+
--color: var(--bb-primary);
|
|
152
|
+
--text-color: var(--bb-contrasting);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
.bb-confirm__yes {
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|