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,597 @@
|
|
|
1
|
+
# BaseCheckboxGroup
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<OptionsContainer
|
|
8
|
+
ref="container"
|
|
9
|
+
class="bb-base-checkbox-group"
|
|
10
|
+
:direction="direction"
|
|
11
|
+
:has-errors="hasErrors"
|
|
12
|
+
:hide-label="hideLabel"
|
|
13
|
+
:loading="!!loading"
|
|
14
|
+
:loading-text="loadingText"
|
|
15
|
+
:no-data-text="noDataText"
|
|
16
|
+
:options="options"
|
|
17
|
+
>
|
|
18
|
+
<template #prepend><slot name="prepend"></slot></template>
|
|
19
|
+
<template #loading><slot name="loading"></slot></template>
|
|
20
|
+
<template #no-data><slot name="no-data"></slot></template>
|
|
21
|
+
<template #label="data"><slot name="label" v-bind="data"></slot></template>
|
|
22
|
+
<template #option:prepend="data"
|
|
23
|
+
><slot name="option:prepend" v-bind="data"></slot
|
|
24
|
+
></template>
|
|
25
|
+
<template #input="{ option, index }">
|
|
26
|
+
<BaseCheckbox
|
|
27
|
+
:id="getId(option)"
|
|
28
|
+
:aria-describedby="ariaDescribedby"
|
|
29
|
+
:autofocus="autofocus && !index"
|
|
30
|
+
:checked="option.selected"
|
|
31
|
+
:color="color"
|
|
32
|
+
:disabled="option.disabled"
|
|
33
|
+
:has-errors="hasErrors"
|
|
34
|
+
:name="name"
|
|
35
|
+
:readonly="readonly"
|
|
36
|
+
:true-value="option.value"
|
|
37
|
+
v-bind="eventListeners"
|
|
38
|
+
@change="(event: Event) => onChange(event, option)"
|
|
39
|
+
><template #icon="data"
|
|
40
|
+
><slot
|
|
41
|
+
:item="option.item"
|
|
42
|
+
name="icon"
|
|
43
|
+
:text="option.text"
|
|
44
|
+
v-bind="data" /></template
|
|
45
|
+
></BaseCheckbox>
|
|
46
|
+
</template>
|
|
47
|
+
<template #option:append="data"
|
|
48
|
+
><slot name="option:append" v-bind="data"></slot
|
|
49
|
+
></template>
|
|
50
|
+
<template #append><slot name="append"></slot></template>
|
|
51
|
+
</OptionsContainer>
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
<script setup lang="ts" generic="T = any">
|
|
55
|
+
import { computed, ref, toRef } from 'vue';
|
|
56
|
+
import type { Option as BaseOption } from '@/types/Option';
|
|
57
|
+
import BaseCheckbox from '../BaseCheckbox/BaseCheckbox.vue';
|
|
58
|
+
import type { ComponentPublicInstance } from 'vue';
|
|
59
|
+
import type { Option } from '@/types/Option';
|
|
60
|
+
import type {
|
|
61
|
+
BaseCheckboxGroupEvents,
|
|
62
|
+
BaseCheckboxGroupProps,
|
|
63
|
+
BaseCheckboxGroupSlots,
|
|
64
|
+
} from './types';
|
|
65
|
+
import OptionsContainer from '../OptionsContainer/OptionsContainer.vue';
|
|
66
|
+
import { useItemsGetter } from '@/composables/useItemsGetter';
|
|
67
|
+
import { useIndexById } from '@/composables/useIndexById';
|
|
68
|
+
import { useBaseOptions } from '@/composables/useBaseOptions';
|
|
69
|
+
import { useCoherence } from '@/composables/useCoherence';
|
|
70
|
+
import { hash } from '@/utilities/functions/hash';
|
|
71
|
+
import { useHashedWatcher } from '@/composables/useHashedWatcher';
|
|
72
|
+
import { usePrefill } from '@/composables/usePrefill';
|
|
73
|
+
import { useLogger } from '@/composables/useLogger';
|
|
74
|
+
|
|
75
|
+
const props = withDefaults(defineProps<BaseCheckboxGroupProps<T>>(), {
|
|
76
|
+
depsDebounceTime: 0,
|
|
77
|
+
direction: 'horizontal',
|
|
78
|
+
items: () => [],
|
|
79
|
+
modelValueDebounceTime: 0,
|
|
80
|
+
max: Infinity,
|
|
81
|
+
multiple: true,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const emit = defineEmits<BaseCheckboxGroupEvents>();
|
|
85
|
+
const logger = useLogger();
|
|
86
|
+
|
|
87
|
+
defineSlots<BaseCheckboxGroupSlots<T>>();
|
|
88
|
+
|
|
89
|
+
if (props.multiple && !Array.isArray(props.modelValue)) {
|
|
90
|
+
logger.throw(
|
|
91
|
+
'BaseCheckboxGroup: multiple is set to "true" but modelValue is not an array.'
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const container = ref<ComponentPublicInstance>();
|
|
96
|
+
const active = ref(false);
|
|
97
|
+
|
|
98
|
+
const {
|
|
99
|
+
getter,
|
|
100
|
+
items: internalItems,
|
|
101
|
+
loading,
|
|
102
|
+
} = useItemsGetter({
|
|
103
|
+
items: toRef(props, 'items'),
|
|
104
|
+
debounce: 0,
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
const alignToCoherenceSettings = () => {
|
|
108
|
+
if (props.enforceCoherence && !coherent.value) {
|
|
109
|
+
emit('update:modelValue', coherentValue.value);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const { hasPrefilled } = usePrefill({
|
|
114
|
+
trigger: true,
|
|
115
|
+
currentValue: props.modelValue,
|
|
116
|
+
multiple: props.multiple,
|
|
117
|
+
fn: async (isPrefill) => {
|
|
118
|
+
await getter(isPrefill, props.modelValue);
|
|
119
|
+
alignToCoherenceSettings();
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const { data: modelValueIndexedByHash } = useIndexById({
|
|
124
|
+
items: computed(() => [].concat(props.modelValue)),
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const { options } = useBaseOptions({
|
|
128
|
+
disabled: toRef(props, 'disabled'),
|
|
129
|
+
items: internalItems,
|
|
130
|
+
itemText: props.itemText,
|
|
131
|
+
itemValue: props.itemValue,
|
|
132
|
+
max: props.max,
|
|
133
|
+
selectable: true,
|
|
134
|
+
selectedIndexedByHash: modelValueIndexedByHash,
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const onOptionSelected = async (option: BaseOption) => {
|
|
138
|
+
if (props.multiple) {
|
|
139
|
+
emit('update:modelValue', [].concat(props.modelValue).concat(option.value));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
emit('update:modelValue', option.value);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
const onOptionUnselected = async (option: BaseOption) => {
|
|
146
|
+
if (!props.multiple) {
|
|
147
|
+
emit('update:modelValue', null);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const copy = { ...modelValueIndexedByHash.value };
|
|
151
|
+
delete copy[option.valueHash];
|
|
152
|
+
emit('update:modelValue', Object.values(copy));
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
const { data: optionsIndexedByHash } = useIndexById({
|
|
156
|
+
items: options,
|
|
157
|
+
key: 'valueHash',
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
const { coherent, coherentValue } = useCoherence({
|
|
161
|
+
modelValue: toRef(props, 'modelValue'),
|
|
162
|
+
|
|
163
|
+
multiple: props.multiple,
|
|
164
|
+
iteratee: (item) => !!optionsIndexedByHash.value[hash(item)],
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* If multiple watchers are running we don't want to run the coherence watcher
|
|
169
|
+
* multiple times we only run it the last time
|
|
170
|
+
*/
|
|
171
|
+
let runningWatcher = 0;
|
|
172
|
+
useHashedWatcher(
|
|
173
|
+
() => props.modelValue,
|
|
174
|
+
async () => {
|
|
175
|
+
runningWatcher++;
|
|
176
|
+
if (!coherent.value) {
|
|
177
|
+
await getter(false, props.modelValue);
|
|
178
|
+
alignToCoherenceSettings();
|
|
179
|
+
}
|
|
180
|
+
runningWatcher--;
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
debounce: props.modelValueDebounceTime,
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
useHashedWatcher(
|
|
187
|
+
() => [props.dependencies, props.items],
|
|
188
|
+
async () => {
|
|
189
|
+
if (!hasPrefilled.value) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
runningWatcher++;
|
|
193
|
+
await getter(false, props.modelValue);
|
|
194
|
+
if (runningWatcher === 1) {
|
|
195
|
+
alignToCoherenceSettings();
|
|
196
|
+
}
|
|
197
|
+
runningWatcher--;
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
debounce: props.depsDebounceTime,
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
const getId = (option: Option) => {
|
|
205
|
+
if (!props.id) return undefined;
|
|
206
|
+
return [props.id, option.valueHash].filter(Boolean).join('-');
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
const onChange = (event: Event, option: Option) => {
|
|
210
|
+
emit('change', event);
|
|
211
|
+
if (!option.selected) {
|
|
212
|
+
onOptionSelected(option);
|
|
213
|
+
} else {
|
|
214
|
+
onOptionUnselected(option);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
const onFocus = (event: FocusEvent) => {
|
|
219
|
+
emit('focus', event);
|
|
220
|
+
if (!active.value) {
|
|
221
|
+
document.addEventListener('focusin', onDocumentFocus, { passive: true });
|
|
222
|
+
document.addEventListener('click', onDocumentClick, { passive: true });
|
|
223
|
+
active.value = true;
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const eventListeners = {
|
|
228
|
+
onBlur: (event: FocusEvent) => emit('blur', event),
|
|
229
|
+
onClick: (event: MouseEvent) => emit('click', event),
|
|
230
|
+
onFocus,
|
|
231
|
+
onInput: (event: Event) => emit('input', event),
|
|
232
|
+
onKeydown: (event: KeyboardEvent) => emit('keydown', event),
|
|
233
|
+
onMousedown: (event: MouseEvent) => emit('mousedown', event),
|
|
234
|
+
onMouseup: (event: MouseEvent) => emit('mouseup', event),
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
const handleInactive = (): void => {
|
|
238
|
+
emit('inactive');
|
|
239
|
+
active.value = false;
|
|
240
|
+
document.removeEventListener('focusin', onDocumentFocus);
|
|
241
|
+
document.removeEventListener('click', onDocumentClick);
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
const onDocumentFocus = (event: FocusEvent) => {
|
|
245
|
+
if (event.target instanceof HTMLElement) {
|
|
246
|
+
if (!container.value?.$el.contains(event.target)) {
|
|
247
|
+
handleInactive();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
const onDocumentClick = (event: MouseEvent) => {
|
|
253
|
+
if (event.target instanceof HTMLElement) {
|
|
254
|
+
if (!container.value?.$el.contains(event.target)) {
|
|
255
|
+
handleInactive();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
</script>
|
|
260
|
+
|
|
261
|
+
<style lang="postcss">
|
|
262
|
+
@import './index.css';
|
|
263
|
+
</style>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Types
|
|
267
|
+
|
|
268
|
+
```ts
|
|
269
|
+
import type {
|
|
270
|
+
HTMLAttributes,
|
|
271
|
+
InputHTMLAttributes,
|
|
272
|
+
MaybeRefOrGetter,
|
|
273
|
+
} from 'vue';
|
|
274
|
+
import type { BaseCheckboxIconSlotProps } from '../BaseCheckbox/types';
|
|
275
|
+
|
|
276
|
+
export type BaseCheckboxGroupProps<T = any> = {
|
|
277
|
+
/**
|
|
278
|
+
* ID of the element that describes the entire checkbox group for assistive
|
|
279
|
+
* technologies. Forwarded to each generated input as `aria-describedby`.
|
|
280
|
+
*/
|
|
281
|
+
ariaDescribedby?: InputHTMLAttributes['aria-describedby'];
|
|
282
|
+
/**
|
|
283
|
+
* Automatically focuses the first checkbox on mount when true.
|
|
284
|
+
* Applied only to the first option.
|
|
285
|
+
* @defaultValue `false`
|
|
286
|
+
*/
|
|
287
|
+
autofocus?: InputHTMLAttributes['autofocus'];
|
|
288
|
+
/**
|
|
289
|
+
* Visual color of the checkboxes.
|
|
290
|
+
* - If a valid CSS color (HEX/RGB/HSL/etc.), it is applied via the `--color`
|
|
291
|
+
* CSS variable.
|
|
292
|
+
* - Otherwise, a BEM modifier class `bb-base-checkbox--{color}` is added for
|
|
293
|
+
* theme-based styling.
|
|
294
|
+
*/
|
|
295
|
+
color?: string;
|
|
296
|
+
/**
|
|
297
|
+
* List of reactive values which, when changed, trigger items re-fetching.
|
|
298
|
+
* Useful to reload options based on external inputs.
|
|
299
|
+
* @defaultValue `[]`
|
|
300
|
+
*/
|
|
301
|
+
dependencies?: any[];
|
|
302
|
+
/**
|
|
303
|
+
* Debounce delay (ms) applied when reacting to `dependencies` changes.
|
|
304
|
+
* @defaultValue `0`
|
|
305
|
+
*/
|
|
306
|
+
depsDebounceTime?: number;
|
|
307
|
+
/**
|
|
308
|
+
* Direction of the group layout.
|
|
309
|
+
* - `horizontal`: options flow in rows
|
|
310
|
+
* - `vertical`: options stack in a column
|
|
311
|
+
* @defaultValue `'horizontal'`
|
|
312
|
+
*/
|
|
313
|
+
direction?: 'horizontal' | 'vertical';
|
|
314
|
+
/**
|
|
315
|
+
* Disables interaction for the whole group.
|
|
316
|
+
* @defaultValue `false`
|
|
317
|
+
*/
|
|
318
|
+
disabled?: boolean;
|
|
319
|
+
/**
|
|
320
|
+
* Enforces that `modelValue` contains only values present in `items`.
|
|
321
|
+
* Incoherent values are removed and `update:modelValue` is emitted with a
|
|
322
|
+
* coherent array. Please check out {@link https://ui-components-docs.vercel.app/it/guides/coherence | the docs} for more information.
|
|
323
|
+
* @defaultValue `false`
|
|
324
|
+
*/
|
|
325
|
+
enforceCoherence?: boolean;
|
|
326
|
+
/**
|
|
327
|
+
* Puts the component into an error state adds the error styling class.
|
|
328
|
+
* @defaultValue `false`
|
|
329
|
+
*/
|
|
330
|
+
hasErrors?: boolean;
|
|
331
|
+
/**
|
|
332
|
+
* Visually hides the label while keeping it accessible to screen readers.
|
|
333
|
+
* @defaultValue `false`
|
|
334
|
+
*/
|
|
335
|
+
hideLabel?: boolean;
|
|
336
|
+
/**
|
|
337
|
+
* Identifier of the group. Used to derive per-option IDs
|
|
338
|
+
* for accessible labeling.
|
|
339
|
+
*/
|
|
340
|
+
id?: HTMLAttributes['id'];
|
|
341
|
+
/**
|
|
342
|
+
* Items provider. Can be:
|
|
343
|
+
* - An array of items
|
|
344
|
+
* - A sync/async function `(prefill, modelValue) => items`
|
|
345
|
+
*
|
|
346
|
+
* When a function is provided, it is invoked on prefill and when dependencies
|
|
347
|
+
* change to load options dynamically.
|
|
348
|
+
* @defaultValue `[]`
|
|
349
|
+
*/
|
|
350
|
+
items:
|
|
351
|
+
| T[]
|
|
352
|
+
| ((prefill: boolean, modelValue?: any) => Promise<T[]>)
|
|
353
|
+
| ((prefill: boolean, modelValue?: any) => T[]);
|
|
354
|
+
/**
|
|
355
|
+
* Defines how to derive the display text from an item. Accepts a nested key path
|
|
356
|
+
* into the item or a function `(item) => string`.
|
|
357
|
+
* @example `'address.city.label'`
|
|
358
|
+
* @example `(item) => item.address.city.label`
|
|
359
|
+
* @defaultValue `JSON.stringify(item)`
|
|
360
|
+
*/
|
|
361
|
+
itemText?: T extends object
|
|
362
|
+
? string | ((item: T) => string)
|
|
363
|
+
: (item: T) => string;
|
|
364
|
+
/**
|
|
365
|
+
* Defines how to derive the value from an item. Accepts a nested key path into the
|
|
366
|
+
* item or a function `(item) => any`.
|
|
367
|
+
* @example `'address.city.value'`
|
|
368
|
+
* @example `(item) => item.address.city.value`
|
|
369
|
+
* @defaultValue `JSON.stringify(item)`
|
|
370
|
+
*/
|
|
371
|
+
itemValue?: T extends object
|
|
372
|
+
? string | ((item: T) => string)
|
|
373
|
+
: (item: T) => any;
|
|
374
|
+
/**
|
|
375
|
+
* Text displayed while items are loading.
|
|
376
|
+
* @defaultValue `'Loading...'`
|
|
377
|
+
*/
|
|
378
|
+
loadingText?: string;
|
|
379
|
+
/**
|
|
380
|
+
* Maximum number of selectable items.
|
|
381
|
+
* @defaultValue `Infinity`
|
|
382
|
+
*/
|
|
383
|
+
max?: number;
|
|
384
|
+
/**
|
|
385
|
+
* Selected values for the group. Used with `v-model`.
|
|
386
|
+
* Single value when `multiple` is false, array when `multiple` is true.
|
|
387
|
+
*/
|
|
388
|
+
modelValue: any;
|
|
389
|
+
/**
|
|
390
|
+
* Enables multi-selection behavior.
|
|
391
|
+
* When `true`, `modelValue` must be an array and emitted updates are arrays.
|
|
392
|
+
* When `false`, `modelValue` must be a single value (or `null`) and emitted
|
|
393
|
+
* updates are single values.
|
|
394
|
+
* @defaultValue `true`
|
|
395
|
+
*/
|
|
396
|
+
multiple?: boolean;
|
|
397
|
+
/**
|
|
398
|
+
* Debounce delay (ms) applied when reacting to `modelValue` changes.
|
|
399
|
+
* @defaultValue `0`
|
|
400
|
+
*/
|
|
401
|
+
modelValueDebounceTime?: number;
|
|
402
|
+
/**
|
|
403
|
+
* Name attribute applied to each input for form submission.
|
|
404
|
+
*/
|
|
405
|
+
name?: InputHTMLAttributes['name'];
|
|
406
|
+
/**
|
|
407
|
+
* Text displayed when there are no items to show.
|
|
408
|
+
* @defaultValue `'No data to display'`
|
|
409
|
+
*/
|
|
410
|
+
noDataText?: MaybeRefOrGetter<string>;
|
|
411
|
+
/**
|
|
412
|
+
* Makes all checkboxes read-only. Since checkboxes do not support native
|
|
413
|
+
* `readonly`, inputs are disabled while styled as read-only.
|
|
414
|
+
* @defaultValue `false`
|
|
415
|
+
*/
|
|
416
|
+
readonly?: boolean;
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
export type BaseCheckboxGroupEvents = {
|
|
420
|
+
/**
|
|
421
|
+
* Emitted when one of the generated checkbox inputs loses focus.
|
|
422
|
+
* Forwards the original DOM `FocusEvent`.
|
|
423
|
+
*/
|
|
424
|
+
(e: 'blur', event: FocusEvent): void;
|
|
425
|
+
/**
|
|
426
|
+
* Emitted when a checkbox option is toggled.
|
|
427
|
+
* Forwards the original DOM `Event` from the checkbox input.
|
|
428
|
+
*/
|
|
429
|
+
(e: 'change', event: Event): void;
|
|
430
|
+
/**
|
|
431
|
+
* Emitted when one of the generated checkbox inputs is clicked.
|
|
432
|
+
* Forwards the original DOM `MouseEvent`.
|
|
433
|
+
*/
|
|
434
|
+
(e: 'click', event: MouseEvent): void;
|
|
435
|
+
/**
|
|
436
|
+
* Emitted when one of the generated checkbox inputs receives focus.
|
|
437
|
+
* Forwards the original DOM `FocusEvent`.
|
|
438
|
+
*/
|
|
439
|
+
(e: 'focus', event: FocusEvent): void;
|
|
440
|
+
/**
|
|
441
|
+
* Emitted when focus/click moves outside the group after it was active.
|
|
442
|
+
* Useful for validation-on-blur flows at group level.
|
|
443
|
+
*/
|
|
444
|
+
(e: 'inactive'): void;
|
|
445
|
+
/**
|
|
446
|
+
* Emitted on native input events from generated checkbox inputs.
|
|
447
|
+
* Forwards the original DOM `Event`.
|
|
448
|
+
*/
|
|
449
|
+
(e: 'input', event: Event): void;
|
|
450
|
+
/**
|
|
451
|
+
* Emitted for keyboard interaction on generated checkbox inputs.
|
|
452
|
+
* Forwards the original DOM `KeyboardEvent`.
|
|
453
|
+
*/
|
|
454
|
+
(e: 'keydown', event: KeyboardEvent): void;
|
|
455
|
+
/**
|
|
456
|
+
* Emitted when a pointing device button is pressed over a checkbox input.
|
|
457
|
+
* Forwards the original DOM `MouseEvent`.
|
|
458
|
+
*/
|
|
459
|
+
(e: 'mousedown', event: MouseEvent): void;
|
|
460
|
+
/**
|
|
461
|
+
* Emitted when a pointing device button is released over a checkbox input.
|
|
462
|
+
* Forwards the original DOM `MouseEvent`.
|
|
463
|
+
*/
|
|
464
|
+
(e: 'mouseup', event: MouseEvent): void;
|
|
465
|
+
/**
|
|
466
|
+
* Emitted with the coherent next selection array whenever selection changes.
|
|
467
|
+
*/
|
|
468
|
+
(e: 'update:modelValue', value: any): void;
|
|
469
|
+
};
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Marker type for slots that do not expose scoped props.
|
|
473
|
+
*/
|
|
474
|
+
export type BaseCheckboxGroupEmptySlotProps = Record<string, never>;
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Props exposed by the `icon` slot for each option.
|
|
478
|
+
*/
|
|
479
|
+
export type BaseCheckboxGroupIconSlotProps<T> = BaseCheckboxIconSlotProps & {
|
|
480
|
+
/**
|
|
481
|
+
* Original source item for this option.
|
|
482
|
+
*/
|
|
483
|
+
item: T;
|
|
484
|
+
/**
|
|
485
|
+
* Resolved display text for this option.
|
|
486
|
+
*/
|
|
487
|
+
text: string;
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Props exposed by the `label` slot for each option.
|
|
492
|
+
*/
|
|
493
|
+
export type BaseCheckboxGroupLabelSlotProps<T> = {
|
|
494
|
+
/**
|
|
495
|
+
* Original source item for this option.
|
|
496
|
+
*/
|
|
497
|
+
item: T;
|
|
498
|
+
/**
|
|
499
|
+
* Resolved display text for this option.
|
|
500
|
+
*/
|
|
501
|
+
text: string;
|
|
502
|
+
/**
|
|
503
|
+
* Whether this option is currently selected.
|
|
504
|
+
*/
|
|
505
|
+
checked: boolean;
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Props exposed by option affix slots (`option:prepend` / `option:append`).
|
|
510
|
+
*/
|
|
511
|
+
export type BaseCheckboxGroupOptionAffixSlotProps<T> = {
|
|
512
|
+
/**
|
|
513
|
+
* Whether this option is currently selected.
|
|
514
|
+
*/
|
|
515
|
+
checked: boolean;
|
|
516
|
+
/**
|
|
517
|
+
* Whether this option is currently disabled.
|
|
518
|
+
*/
|
|
519
|
+
disabled: boolean;
|
|
520
|
+
/**
|
|
521
|
+
* Generated id for the underlying checkbox input, when available.
|
|
522
|
+
*/
|
|
523
|
+
id?: string;
|
|
524
|
+
/**
|
|
525
|
+
* Original source item for this option.
|
|
526
|
+
*/
|
|
527
|
+
item: T;
|
|
528
|
+
/**
|
|
529
|
+
* Resolved display text for this option.
|
|
530
|
+
*/
|
|
531
|
+
text: string;
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
export type BaseCheckboxGroupSlots<T> = {
|
|
535
|
+
/**
|
|
536
|
+
* Content rendered after the last option, inside the options container.
|
|
537
|
+
*/
|
|
538
|
+
append?: (props: BaseCheckboxGroupEmptySlotProps) => any;
|
|
539
|
+
/**
|
|
540
|
+
* Replaces the default checkmark icon for each checkbox option. Receives all `BaseCheckbox`
|
|
541
|
+
* slot attributes plus the source item and its display text.
|
|
542
|
+
*/
|
|
543
|
+
icon?: (props: BaseCheckboxGroupIconSlotProps<T>) => any;
|
|
544
|
+
/**
|
|
545
|
+
* Replaces the default label text for each option.
|
|
546
|
+
*/
|
|
547
|
+
label?: (props: BaseCheckboxGroupLabelSlotProps<T>) => any;
|
|
548
|
+
/**
|
|
549
|
+
* Content shown while options are loading (replaces the default loading text).
|
|
550
|
+
*/
|
|
551
|
+
loading?: (props: BaseCheckboxGroupEmptySlotProps) => any;
|
|
552
|
+
/**
|
|
553
|
+
* Content shown when no options are available (replaces the default "no data" text).
|
|
554
|
+
*/
|
|
555
|
+
'no-data'?: (props: BaseCheckboxGroupEmptySlotProps) => any;
|
|
556
|
+
/**
|
|
557
|
+
* Content rendered after each option's checkbox and label.
|
|
558
|
+
*/
|
|
559
|
+
'option:append'?: (props: BaseCheckboxGroupOptionAffixSlotProps<T>) => any;
|
|
560
|
+
/**
|
|
561
|
+
* Content rendered before each option's checkbox.
|
|
562
|
+
*/
|
|
563
|
+
'option:prepend'?: (props: BaseCheckboxGroupOptionAffixSlotProps<T>) => any;
|
|
564
|
+
/**
|
|
565
|
+
* Content rendered before the first option, inside the options container.
|
|
566
|
+
*/
|
|
567
|
+
prepend?: (props: BaseCheckboxGroupEmptySlotProps) => any;
|
|
568
|
+
};
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
## Styles
|
|
572
|
+
|
|
573
|
+
```css
|
|
574
|
+
.bb-base-checkbox-group {
|
|
575
|
+
&.bb-cr-container {
|
|
576
|
+
&--horizontal {
|
|
577
|
+
.bb-cr-container-option {
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
&--vertical {
|
|
581
|
+
.bb-cr-container-option {
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
&__container {
|
|
586
|
+
}
|
|
587
|
+
&-option {
|
|
588
|
+
> .bb-base-checkbox {
|
|
589
|
+
}
|
|
590
|
+
&__text {
|
|
591
|
+
&--hidden {
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
```
|