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,494 @@
|
|
|
1
|
+
# BaseCheckbox
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<span v-bind="containerAttributes">
|
|
8
|
+
<input v-if="!checked && submitWhenFalse" v-bind="hiddenInputAttributes" />
|
|
9
|
+
<input v-bind="inputAttributes" ref="checkboxInput" />
|
|
10
|
+
<span aria-hidden="true" class="bb-base-checkbox-container">
|
|
11
|
+
<slot name="icon" v-bind="slotAttributes">
|
|
12
|
+
<svg
|
|
13
|
+
class="bb-base-checkbox-container__icon"
|
|
14
|
+
viewBox="276.411 158.834 114.971 114.97"
|
|
15
|
+
>
|
|
16
|
+
<path
|
|
17
|
+
d="M 297.574 224.786 L 318.309 243.134 L 371.568 189.232"
|
|
18
|
+
fill="none"
|
|
19
|
+
stroke-linecap="round"
|
|
20
|
+
stroke-width="14px"
|
|
21
|
+
></path>
|
|
22
|
+
</svg>
|
|
23
|
+
</slot>
|
|
24
|
+
</span>
|
|
25
|
+
</span>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script setup lang="ts">
|
|
29
|
+
import { computed, ref, watch } from 'vue';
|
|
30
|
+
import { isCssColor } from '@/utilities/functions/isCssColor';
|
|
31
|
+
import { booleanishToBoolean } from '@/utilities/functions/booleanishToBoolean';
|
|
32
|
+
import { isEqual } from '@/utilities/functions/isEqual';
|
|
33
|
+
import type {
|
|
34
|
+
BaseCheckboxProps,
|
|
35
|
+
BaseCheckboxEvents,
|
|
36
|
+
BaseCheckboxIconSlotProps,
|
|
37
|
+
} from './types';
|
|
38
|
+
|
|
39
|
+
const props = withDefaults(defineProps<BaseCheckboxProps>(), {
|
|
40
|
+
trueValue: true,
|
|
41
|
+
falseValue: false,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const emit = defineEmits<BaseCheckboxEvents>();
|
|
45
|
+
|
|
46
|
+
defineSlots<{
|
|
47
|
+
/**
|
|
48
|
+
* Replaces the default checkmark SVG rendered inside the checkbox box.
|
|
49
|
+
*/
|
|
50
|
+
icon?: (props: BaseCheckboxIconSlotProps) => any;
|
|
51
|
+
}>();
|
|
52
|
+
|
|
53
|
+
const checkboxInput = ref<HTMLInputElement | null>(null);
|
|
54
|
+
|
|
55
|
+
const checked = computed(() => {
|
|
56
|
+
if (props.checked) return booleanishToBoolean(props.checked);
|
|
57
|
+
return isEqual(props.trueValue, props.modelValue);
|
|
58
|
+
});
|
|
59
|
+
const hasFocus = ref(false);
|
|
60
|
+
const hasFocusVisible = ref(false);
|
|
61
|
+
|
|
62
|
+
const handleBlur = (event: FocusEvent): void => {
|
|
63
|
+
hasFocus.value = false;
|
|
64
|
+
hasFocusVisible.value = false;
|
|
65
|
+
emit('blur', event);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const handleChange = (event: Event): void => {
|
|
69
|
+
if (event.target instanceof HTMLInputElement) {
|
|
70
|
+
const value = event.target.checked ? props.trueValue : props.falseValue;
|
|
71
|
+
emit('change', event);
|
|
72
|
+
emit('update:modelValue', value);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const handleFocus = (event: FocusEvent): void => {
|
|
77
|
+
hasFocus.value = true;
|
|
78
|
+
if (event.target instanceof HTMLInputElement) {
|
|
79
|
+
hasFocusVisible.value = event.target.matches(':focus-visible');
|
|
80
|
+
}
|
|
81
|
+
emit('focus', event);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const containerAttributes = computed(() => {
|
|
85
|
+
const attributes: Record<string, any> = {
|
|
86
|
+
class: {
|
|
87
|
+
'bb-base-checkbox': true,
|
|
88
|
+
'bb-base-checkbox--disabled': props.disabled,
|
|
89
|
+
'bb-base-checkbox--errors': props.hasErrors,
|
|
90
|
+
'bb-base-checkbox--indeterminate': props.indeterminate,
|
|
91
|
+
'bb-base-checkbox--readonly': props.readonly,
|
|
92
|
+
[`bb-base-checkbox--${props.color}`]:
|
|
93
|
+
props.color && !isCssColor(props.color),
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
if (props.color && isCssColor(props.color)) {
|
|
97
|
+
attributes['style'] = `--color: ${props.color}`;
|
|
98
|
+
}
|
|
99
|
+
return attributes;
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* This is used to keep the value compatible to common html expected values.
|
|
104
|
+
* Convert to string everything that's not but do not double encode strings
|
|
105
|
+
*/
|
|
106
|
+
const makeInputValue = (item: unknown): string =>
|
|
107
|
+
typeof item === 'string' ? item : JSON.stringify(item);
|
|
108
|
+
|
|
109
|
+
const hiddenInputAttributes = computed(() => {
|
|
110
|
+
const value = makeInputValue(props.falseValue);
|
|
111
|
+
return {
|
|
112
|
+
disabled: props.disabled,
|
|
113
|
+
name: props.name,
|
|
114
|
+
type: 'hidden',
|
|
115
|
+
value: value,
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const eventListeners = {
|
|
120
|
+
onBlur: handleBlur,
|
|
121
|
+
onChange: handleChange,
|
|
122
|
+
onFocus: handleFocus,
|
|
123
|
+
onClick: (event: MouseEvent) => emit('click', event),
|
|
124
|
+
onInput: (event: Event) => emit('input', event),
|
|
125
|
+
onKeydown: (event: KeyboardEvent) => emit('keydown', event),
|
|
126
|
+
onMousedown: (event: MouseEvent) => emit('mousedown', event),
|
|
127
|
+
onMouseup: (event: MouseEvent) => emit('mouseup', event),
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const inputAttributes = computed(() => {
|
|
131
|
+
const value = makeInputValue(props.trueValue);
|
|
132
|
+
|
|
133
|
+
return {
|
|
134
|
+
'aria-describedby': props.ariaDescribedby,
|
|
135
|
+
autofocus: props.autofocus,
|
|
136
|
+
checked: checked.value,
|
|
137
|
+
// There is no such thing as readonly checkbox so we disable and style it with css
|
|
138
|
+
disabled: props.disabled || props.readonly,
|
|
139
|
+
id: props.id,
|
|
140
|
+
indeterminate: props.indeterminate,
|
|
141
|
+
name: props.name,
|
|
142
|
+
required: props.required,
|
|
143
|
+
tabindex: props.disabled ? -1 : undefined,
|
|
144
|
+
type: 'checkbox',
|
|
145
|
+
value: value,
|
|
146
|
+
...eventListeners,
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const slotAttributes = computed(() => ({
|
|
151
|
+
checked: checked.value,
|
|
152
|
+
disabled: !!props.disabled,
|
|
153
|
+
falseValue: props.falseValue,
|
|
154
|
+
focused: hasFocus.value,
|
|
155
|
+
focusVisible: hasFocusVisible.value,
|
|
156
|
+
hasErrors: !!props.hasErrors,
|
|
157
|
+
id: props.id,
|
|
158
|
+
name: props.name,
|
|
159
|
+
parsedValue: inputAttributes.value.value,
|
|
160
|
+
readonly: !!props.readonly,
|
|
161
|
+
trueValue: props.trueValue,
|
|
162
|
+
value: checked.value ? props.trueValue : props.falseValue,
|
|
163
|
+
}));
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Indeterminate is a very volatile prop that is reset upon clicking,
|
|
167
|
+
* this keeps the state and the prop aligned
|
|
168
|
+
*/
|
|
169
|
+
watch(
|
|
170
|
+
() => [props.modelValue, props.checked, props.indeterminate],
|
|
171
|
+
() => {
|
|
172
|
+
if (checkboxInput.value) {
|
|
173
|
+
checkboxInput.value.indeterminate = !!props.indeterminate;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
</script>
|
|
178
|
+
<style lang="postcss">
|
|
179
|
+
@import './index.css';
|
|
180
|
+
</style>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Types
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
187
|
+
|
|
188
|
+
export type BaseCheckboxProps = {
|
|
189
|
+
/**
|
|
190
|
+
* ID of the element that describes this checkbox for assistive technologies.
|
|
191
|
+
* Forwarded to the input as `aria-describedby`.
|
|
192
|
+
*/
|
|
193
|
+
ariaDescribedby?: InputHTMLAttributes['aria-describedby'];
|
|
194
|
+
/**
|
|
195
|
+
* Automatically focuses the checkbox when the page/component loads.
|
|
196
|
+
* Use sparingly to avoid usability issues.
|
|
197
|
+
* @defaultValue `false`
|
|
198
|
+
*/
|
|
199
|
+
autofocus?: InputHTMLAttributes['autofocus'];
|
|
200
|
+
/**
|
|
201
|
+
* Forces the checkbox checked state (controlled prop). Accepts booleanish
|
|
202
|
+
* values (`true`/`false` or `'true'`/`'false'`). When omitted, the checked
|
|
203
|
+
* state is derived from `modelValue === trueValue`.
|
|
204
|
+
* @defaultValue `false`
|
|
205
|
+
*/
|
|
206
|
+
checked?: boolean | 'true' | 'false';
|
|
207
|
+
/**
|
|
208
|
+
* Visual color of the checkbox.
|
|
209
|
+
* - If a valid CSS color (HEX/RGB/HSL/etc.), it is applied via the `--color`
|
|
210
|
+
* CSS variable.
|
|
211
|
+
* - Otherwise, a BEM modifier class `bb-base-checkbox--{color}` is added for
|
|
212
|
+
* theme-based styling.
|
|
213
|
+
*/
|
|
214
|
+
color?: string;
|
|
215
|
+
/**
|
|
216
|
+
* Disables user interaction. Also applied when `readonly` is set, since
|
|
217
|
+
* native checkboxes do not support `readonly`.
|
|
218
|
+
* @defaultValue `false`
|
|
219
|
+
*/
|
|
220
|
+
disabled?: boolean;
|
|
221
|
+
/**
|
|
222
|
+
* Value submitted/emitted when the checkbox is unchecked. Accepts any
|
|
223
|
+
* serializable value. Serialized to a string for form submission.
|
|
224
|
+
* @defaultValue `false`
|
|
225
|
+
*/
|
|
226
|
+
falseValue?: any;
|
|
227
|
+
/**
|
|
228
|
+
* Puts the component into an error state (adds error styling class `bb-base-checkbox--errors`).
|
|
229
|
+
* @defaultValue `false`
|
|
230
|
+
*/
|
|
231
|
+
hasErrors?: boolean;
|
|
232
|
+
/**
|
|
233
|
+
* Identifier forwarded to the input.
|
|
234
|
+
*/
|
|
235
|
+
id?: HTMLAttributes['id'];
|
|
236
|
+
/**
|
|
237
|
+
* Renders the checkbox in the indeterminate state (neither checked nor
|
|
238
|
+
* unchecked). Note: the native `indeterminate` state resets on user click;
|
|
239
|
+
* this component re-applies it to keep UI and prop aligned.
|
|
240
|
+
* @defaultValue `false`
|
|
241
|
+
*/
|
|
242
|
+
indeterminate?: InputHTMLAttributes['indeterminate'];
|
|
243
|
+
/**
|
|
244
|
+
* Bound value for `v-model`. When it equals `trueValue` the checkbox is
|
|
245
|
+
* considered checked, otherwise unchecked.
|
|
246
|
+
*/
|
|
247
|
+
modelValue?: any;
|
|
248
|
+
/**
|
|
249
|
+
* Name attribute of the input, used during form submission.
|
|
250
|
+
*/
|
|
251
|
+
name?: InputHTMLAttributes['name'];
|
|
252
|
+
/**
|
|
253
|
+
* Puts the input in a read-only state. Since checkboxes do not support
|
|
254
|
+
* native `readonly`, the input is disabled while styled as read-only.
|
|
255
|
+
* @defaultValue `false`
|
|
256
|
+
*/
|
|
257
|
+
readonly?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* Marks the input as required for form validation.
|
|
260
|
+
* @defaultValue `false`
|
|
261
|
+
*/
|
|
262
|
+
required?: boolean;
|
|
263
|
+
/**
|
|
264
|
+
* When unchecked, submits a hidden input with `falseValue` so that a value
|
|
265
|
+
* is still posted with the form. When checked, the visible input submits
|
|
266
|
+
* `trueValue` as usual.
|
|
267
|
+
* @defaultValue `false`
|
|
268
|
+
*/
|
|
269
|
+
submitWhenFalse?: boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Value submitted/emitted when the checkbox is checked. Accepts any
|
|
272
|
+
* serializable value. Serialized to a string for form submission.
|
|
273
|
+
* @defaultValue `true`
|
|
274
|
+
*/
|
|
275
|
+
trueValue?: any;
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
export type BaseCheckboxEvents = {
|
|
279
|
+
/**
|
|
280
|
+
* Emitted when the native input loses focus.
|
|
281
|
+
* Forwards the original DOM `FocusEvent`.
|
|
282
|
+
*/
|
|
283
|
+
(e: 'blur', event: FocusEvent): void;
|
|
284
|
+
/**
|
|
285
|
+
* Emitted when the checkbox checked state changes.
|
|
286
|
+
* Forwards the original DOM `Event` from the input.
|
|
287
|
+
*/
|
|
288
|
+
(e: 'change', event: Event): void;
|
|
289
|
+
/**
|
|
290
|
+
* Emitted when the input receives a click interaction.
|
|
291
|
+
* Forwards the original DOM `MouseEvent`.
|
|
292
|
+
*/
|
|
293
|
+
(e: 'click', event: MouseEvent): void;
|
|
294
|
+
/**
|
|
295
|
+
* Emitted when the native input gains focus.
|
|
296
|
+
* Forwards the original DOM `FocusEvent`.
|
|
297
|
+
*/
|
|
298
|
+
(e: 'focus', event: FocusEvent): void;
|
|
299
|
+
/**
|
|
300
|
+
* Emitted on native input events from the checkbox input.
|
|
301
|
+
* Forwards the original DOM `Event`.
|
|
302
|
+
*/
|
|
303
|
+
(e: 'input', event: Event): void;
|
|
304
|
+
/**
|
|
305
|
+
* Emitted for keyboard interaction on the input.
|
|
306
|
+
* Forwards the original DOM `KeyboardEvent`.
|
|
307
|
+
*/
|
|
308
|
+
(e: 'keydown', event: KeyboardEvent): void;
|
|
309
|
+
/**
|
|
310
|
+
* Emitted when a pointing device button is pressed over the input.
|
|
311
|
+
* Forwards the original DOM `MouseEvent`.
|
|
312
|
+
*/
|
|
313
|
+
(e: 'mousedown', event: MouseEvent): void;
|
|
314
|
+
/**
|
|
315
|
+
* Emitted when a pointing device button is released over the input.
|
|
316
|
+
* Forwards the original DOM `MouseEvent`.
|
|
317
|
+
*/
|
|
318
|
+
(e: 'mouseup', event: MouseEvent): void;
|
|
319
|
+
/**
|
|
320
|
+
* Emitted on checked-state changes with the effective model value:
|
|
321
|
+
* - `trueValue` when checked
|
|
322
|
+
* - `falseValue` when unchecked
|
|
323
|
+
*/
|
|
324
|
+
(e: 'update:modelValue', value: any): void;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Props exposed by the `icon` slot.
|
|
329
|
+
*
|
|
330
|
+
* These values are normalized at runtime so consumers receive stable types
|
|
331
|
+
* (not optional/undefined booleans).
|
|
332
|
+
*/
|
|
333
|
+
export type BaseCheckboxIconSlotProps = {
|
|
334
|
+
/**
|
|
335
|
+
* Whether the checkbox is currently checked.
|
|
336
|
+
* @defaultValue `false`
|
|
337
|
+
*/
|
|
338
|
+
checked: boolean;
|
|
339
|
+
/**
|
|
340
|
+
* Whether the checkbox is disabled.
|
|
341
|
+
* Mirrors `props.disabled`.
|
|
342
|
+
* @defaultValue `false`
|
|
343
|
+
*/
|
|
344
|
+
disabled: boolean;
|
|
345
|
+
/**
|
|
346
|
+
* Value emitted/submitted when unchecked.
|
|
347
|
+
* Mirrors `props.falseValue`.
|
|
348
|
+
* @defaultValue `false`
|
|
349
|
+
*/
|
|
350
|
+
falseValue: any;
|
|
351
|
+
/**
|
|
352
|
+
* Whether the native input currently has focus.
|
|
353
|
+
* @defaultValue `false`
|
|
354
|
+
*/
|
|
355
|
+
focused: boolean;
|
|
356
|
+
/**
|
|
357
|
+
* Whether focus is keyboard-visible (`:focus-visible`).
|
|
358
|
+
* @defaultValue `false`
|
|
359
|
+
*/
|
|
360
|
+
focusVisible: boolean;
|
|
361
|
+
/**
|
|
362
|
+
* Whether the checkbox is in an error state.
|
|
363
|
+
* Mirrors `props.hasErrors`.
|
|
364
|
+
* @defaultValue `false`
|
|
365
|
+
*/
|
|
366
|
+
hasErrors: boolean;
|
|
367
|
+
/**
|
|
368
|
+
* The `id` attribute forwarded to the native input.
|
|
369
|
+
* Mirrors `props.id`.
|
|
370
|
+
*/
|
|
371
|
+
id: BaseCheckboxProps['id'];
|
|
372
|
+
/**
|
|
373
|
+
* The `name` attribute forwarded to the native input.
|
|
374
|
+
* Mirrors `props.name`.
|
|
375
|
+
*/
|
|
376
|
+
name: BaseCheckboxProps['name'];
|
|
377
|
+
/**
|
|
378
|
+
* Serialized `trueValue` used by native form submission.
|
|
379
|
+
*/
|
|
380
|
+
parsedValue: string;
|
|
381
|
+
/**
|
|
382
|
+
* Whether the checkbox is readonly.
|
|
383
|
+
* Mirrors `props.readonly`.
|
|
384
|
+
* @defaultValue `false`
|
|
385
|
+
*/
|
|
386
|
+
readonly: boolean;
|
|
387
|
+
/**
|
|
388
|
+
* Value emitted/submitted when checked.
|
|
389
|
+
* Mirrors `props.trueValue`.
|
|
390
|
+
* @defaultValue `true`
|
|
391
|
+
*/
|
|
392
|
+
trueValue: any;
|
|
393
|
+
/**
|
|
394
|
+
* Current effective value (`trueValue` when checked, otherwise `falseValue`).
|
|
395
|
+
*/
|
|
396
|
+
value: any;
|
|
397
|
+
};
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* @deprecated Use `BaseCheckboxIconSlotProps`.
|
|
401
|
+
*/
|
|
402
|
+
export type SlotAttributes = BaseCheckboxIconSlotProps;
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
## Styles
|
|
406
|
+
|
|
407
|
+
```css
|
|
408
|
+
.bb-base-checkbox {
|
|
409
|
+
--color: var(--bb-primary);
|
|
410
|
+
--check-color: var(--bb-contrasting);
|
|
411
|
+
display: inline-flex;
|
|
412
|
+
|
|
413
|
+
&:has(:focus-visible) {
|
|
414
|
+
.bb-base-checkbox-container__icon {
|
|
415
|
+
box-shadow: 0px 0px 0px var(--bb-ring-size) var(--bb-ring);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
input[type='checkbox'] {
|
|
420
|
+
border-width: 0;
|
|
421
|
+
clip: rect(0, 0, 0, 0);
|
|
422
|
+
height: 1px;
|
|
423
|
+
margin: -1px;
|
|
424
|
+
overflow: hidden;
|
|
425
|
+
padding: 0;
|
|
426
|
+
position: absolute;
|
|
427
|
+
white-space: nowrap;
|
|
428
|
+
width: 1px;
|
|
429
|
+
|
|
430
|
+
&:checked + .bb-base-checkbox-container {
|
|
431
|
+
.bb-base-checkbox-container__icon {
|
|
432
|
+
background-color: var(--color);
|
|
433
|
+
border-color: var(--color);
|
|
434
|
+
|
|
435
|
+
path {
|
|
436
|
+
stroke-dashoffset: 0;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
&:indeterminate
|
|
442
|
+
+ .bb-base-checkbox-container
|
|
443
|
+
.bb-base-checkbox-container__icon {
|
|
444
|
+
background-color: var(--color);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
&.bb-base-checkbox--disabled {
|
|
449
|
+
--check-color: color-mix(in srgb, var(--bb-panel), var(--bb-text) 40%);
|
|
450
|
+
|
|
451
|
+
input[type='checkbox'] + .bb-base-checkbox-container,
|
|
452
|
+
.bb-base-checkbox-container {
|
|
453
|
+
.bb-base-checkbox-container__icon {
|
|
454
|
+
background-color: var(--bb-panel-disabled);
|
|
455
|
+
border-color: var(--bb-border);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
&--errors {
|
|
460
|
+
}
|
|
461
|
+
&--readonly {
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.bb-base-checkbox-container {
|
|
465
|
+
align-items: center;
|
|
466
|
+
display: inline-flex;
|
|
467
|
+
user-select: none;
|
|
468
|
+
|
|
469
|
+
&__icon {
|
|
470
|
+
background-color: var(--bb-panel);
|
|
471
|
+
border-color: var(--bb-border);
|
|
472
|
+
border-radius: min(6px, var(--bb-radius));
|
|
473
|
+
border-style: solid;
|
|
474
|
+
border-width: 1px;
|
|
475
|
+
box-shadow: 0px 0px 0px 0px var(--bb-ring);
|
|
476
|
+
cursor: pointer;
|
|
477
|
+
display: inline-block;
|
|
478
|
+
height: var(--bb-checkbox-w);
|
|
479
|
+
transition-duration: 300ms;
|
|
480
|
+
transition-property:
|
|
481
|
+
color, background-color, border-color, text-decoration-color, box-shadow;
|
|
482
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
483
|
+
width: var(--bb-checkbox-w);
|
|
484
|
+
|
|
485
|
+
path {
|
|
486
|
+
stroke: var(--check-color);
|
|
487
|
+
stroke-dasharray: 105;
|
|
488
|
+
stroke-dashoffset: 105;
|
|
489
|
+
transition: stroke-dashoffset 0.3s;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
```
|