bitboss-ui 2.1.114 → 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 +4 -5
- 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 -330
- 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/index124.js +4 -4
- package/dist/index126.js +12 -12
- 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/index16.js +3 -3
- package/dist/index18.js +3 -3
- package/dist/index20.js +9 -9
- package/dist/index22.js +14 -14
- package/dist/index226.js +34 -33
- package/dist/index227.js +5 -28
- package/dist/index228.js +7 -0
- package/dist/index229.js +5 -4
- package/dist/index230.js +5 -13
- package/dist/index231.js +3 -20
- package/dist/index232.js +2 -2
- package/dist/index233.js +6 -4
- package/dist/index234.js +6 -84
- package/dist/index235.js +270 -0
- package/dist/index236.js +52 -30
- package/dist/index237.js +52 -17
- package/dist/index238.js +31 -50
- package/dist/index239.js +60 -18
- package/dist/index24.js +10 -10
- package/dist/index240.js +13 -3
- package/dist/index241.js +187 -11
- package/dist/index242.js +3 -18
- package/dist/index243.js +2 -8
- package/dist/index244.js +2 -2
- package/dist/index245.js +2 -3
- package/dist/index246.js +13 -5
- package/dist/index247.js +13 -5
- package/dist/index248.js +51 -5
- package/dist/index249.js +17 -5
- package/dist/index250.js +106 -5
- package/dist/index252.js +100 -3
- package/dist/index254.js +5 -0
- package/dist/index255.js +2 -2
- package/dist/index256.js +4 -106
- package/dist/index257.js +22 -0
- package/dist/index258.js +6 -100
- package/dist/index26.js +3 -3
- package/dist/index260.js +86 -10
- package/dist/index262.js +30 -4
- package/dist/index263.js +18 -3
- package/dist/index264.js +11 -187
- package/dist/index265.js +18 -3
- package/dist/index266.js +2 -5
- package/dist/index267.js +7 -6
- package/dist/index268.js +7 -268
- package/dist/index269.js +3 -52
- package/dist/index270.js +4 -52
- package/dist/index271.js +5 -32
- package/dist/index272.js +5 -60
- package/dist/index273.js +5 -7
- package/dist/index274.js +135 -2
- package/dist/index277.js +9 -2
- package/dist/index278.js +23 -7
- package/dist/index279.js +3 -6
- package/dist/index28.js +57 -55
- package/dist/index280.js +23 -2
- package/dist/index281.js +368 -29
- package/dist/index283.js +33 -25
- package/dist/index284.js +3 -11
- package/dist/index285.js +24 -12
- package/dist/index286.js +3 -23
- package/dist/index287.js +16 -7
- package/dist/index288.js +12 -23
- package/dist/index289.js +107 -5
- package/dist/index290.js +11 -9
- package/dist/index291.js +66 -20
- package/dist/index292.js +32 -6
- package/dist/index294.js +6 -18
- package/dist/index295.js +9 -11
- package/dist/index296.js +3 -107
- package/dist/index297.js +8 -5
- package/dist/index298.js +53 -3
- package/dist/index299.js +5 -53
- package/dist/index30.js +2 -2
- package/dist/index300.js +20 -12
- package/dist/index301.js +26 -65
- package/dist/index303.js +9 -0
- package/dist/index304.js +2 -7
- package/dist/index305.js +280 -3
- package/dist/index306.js +2 -4
- package/dist/index307.js +16 -7
- package/dist/index308.js +2 -3
- package/dist/index309.js +16 -17
- package/dist/index310.js +2 -28
- package/dist/index311.js +27 -3
- package/dist/index312.js +2 -3
- package/dist/index313.js +2 -5
- package/dist/index314.js +2 -3
- package/dist/index315.js +2 -3
- package/dist/index316.js +2 -280
- package/dist/index317.js +28 -2
- package/dist/index318.js +2 -16
- package/dist/index319.js +7 -2
- package/dist/index32.js +2 -2
- package/dist/index320.js +719 -16
- package/dist/index321.js +366 -2
- package/dist/index322.js +56 -26
- package/dist/index323.js +4 -2
- package/dist/index324.js +3 -2
- package/dist/index325.js +17 -2
- package/dist/index326.js +3 -2
- package/dist/index327.js +3 -2
- package/dist/index328.js +3 -2
- package/dist/index329.js +3 -125
- package/dist/index330.js +125 -2
- package/dist/index331.js +2 -15
- package/dist/index332.js +15 -2
- package/dist/index333.js +2 -19
- package/dist/index334.js +19 -2
- package/dist/index335.js +2 -2
- package/dist/index336.js +5 -719
- package/dist/index337.js +5 -366
- package/dist/index338.js +2 -57
- package/dist/index34.js +8 -8
- package/dist/index340.js +2 -5
- package/dist/index341.js +3 -2
- package/dist/index342.js +3 -6
- package/dist/index343.js +6 -2
- package/dist/index344.js +6 -6
- package/dist/index345.js +18 -66
- package/dist/index346.js +9 -67
- package/dist/index347.js +14 -34
- package/dist/index348.js +5 -129
- package/dist/index349.js +6 -397
- package/dist/index350.js +67 -7
- package/dist/index351.js +66 -18
- package/dist/index352.js +34 -8
- package/dist/index353.js +126 -12
- package/dist/index354.js +398 -5
- package/dist/index355.js +91 -198
- package/dist/index356.js +226 -257
- package/dist/index357.js +21 -92
- package/dist/index359.js +7 -134
- package/dist/index36.js +4 -4
- package/dist/index360.js +196 -18
- package/dist/index361.js +261 -0
- package/dist/index362.js +134 -2
- package/dist/index363.js +1 -1
- 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 +21 -21
- package/dist/index40.js +7 -7
- package/dist/index42.js +2 -2
- package/dist/index44.js +8 -8
- package/dist/index46.js +6 -6
- 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/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/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/index251.js +0 -7
- package/dist/index253.js +0 -137
- package/dist/index261.js +0 -5
- package/dist/index275.js +0 -375
- package/dist/index302.js +0 -35
- package/dist/index358.js +0 -230
- /package/dist/{index293.js → index259.js} +0 -0
- /package/dist/{index282.js → index276.js} +0 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# BbRating
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<BaseInputContainer
|
|
8
|
+
:id="id"
|
|
9
|
+
class="bb-rating"
|
|
10
|
+
:compact="compact"
|
|
11
|
+
:direction="direction"
|
|
12
|
+
:errors="errors"
|
|
13
|
+
:has-errors="hasErrors"
|
|
14
|
+
:hide-label="hideLegend"
|
|
15
|
+
:hint="hint"
|
|
16
|
+
:input-position="inputPosition"
|
|
17
|
+
:label="legend"
|
|
18
|
+
:label-position="legendPosition"
|
|
19
|
+
:label-tag="'legend'"
|
|
20
|
+
:name="name"
|
|
21
|
+
:reverse="reverse"
|
|
22
|
+
:show-hint="showHint"
|
|
23
|
+
:tag="'fieldset'"
|
|
24
|
+
>
|
|
25
|
+
<template #label="data"><slot name="legend" v-bind="data"></slot></template>
|
|
26
|
+
<template #input="{ id, hasErrors, ariaDescribedby }">
|
|
27
|
+
<BaseRating
|
|
28
|
+
:id="id"
|
|
29
|
+
:aria-describedby="ariaDescribedby"
|
|
30
|
+
:autofocus="autofocus"
|
|
31
|
+
:color="color"
|
|
32
|
+
:disabled="disabled"
|
|
33
|
+
:has-errors="hasErrors"
|
|
34
|
+
:model-value="modelValue"
|
|
35
|
+
:name="name"
|
|
36
|
+
:readonly="readonly"
|
|
37
|
+
:size="size"
|
|
38
|
+
:stars="stars"
|
|
39
|
+
v-bind="eventListeners"
|
|
40
|
+
>
|
|
41
|
+
<template #prepend="data"
|
|
42
|
+
><slot name="prepend" v-bind="data"
|
|
43
|
+
/></template>
|
|
44
|
+
<template #append="data"><slot name="append" v-bind="data" /></template>
|
|
45
|
+
<template #icon="data"><slot name="icon" v-bind="data" /></template>
|
|
46
|
+
</BaseRating>
|
|
47
|
+
</template>
|
|
48
|
+
</BaseInputContainer>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<script setup lang="ts">
|
|
52
|
+
import BaseInputContainer from '../BaseInputContainer/BaseInputContainer.vue';
|
|
53
|
+
import BaseRating from '../BaseRating/BaseRating.vue';
|
|
54
|
+
import type { BaseRatingEvents } from '../BaseRating/types';
|
|
55
|
+
import { ref, computed } from 'vue';
|
|
56
|
+
import type { BbRatingProps, BbRatingEvents, BbRatingSlots } from './types';
|
|
57
|
+
export type { BbRatingProps, BbRatingEvents, BbRatingSlots };
|
|
58
|
+
|
|
59
|
+
const props = withDefaults(defineProps<BbRatingProps>(), {
|
|
60
|
+
inputPosition: 'left',
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const emit = defineEmits<BaseRatingEvents>();
|
|
64
|
+
|
|
65
|
+
defineSlots<BbRatingSlots>();
|
|
66
|
+
|
|
67
|
+
const active = ref(false);
|
|
68
|
+
const showHint = computed(() => props.persistentHint || active.value);
|
|
69
|
+
|
|
70
|
+
const eventListeners = {
|
|
71
|
+
onBlur: (event: FocusEvent) => emit('blur', event),
|
|
72
|
+
onChange: (event: Event) => emit('change', event),
|
|
73
|
+
onClick: (event: MouseEvent) => emit('click', event),
|
|
74
|
+
onFocus: (event: FocusEvent) => {
|
|
75
|
+
active.value = true;
|
|
76
|
+
emit('focus', event);
|
|
77
|
+
},
|
|
78
|
+
onInactive: () => {
|
|
79
|
+
active.value = false;
|
|
80
|
+
emit('inactive');
|
|
81
|
+
},
|
|
82
|
+
onInput: (event: Event) => emit('input', event),
|
|
83
|
+
onKeydown: (event: KeyboardEvent) => emit('keydown', event),
|
|
84
|
+
onMousedown: (event: MouseEvent) => emit('mousedown', event),
|
|
85
|
+
onMouseup: (event: MouseEvent) => emit('mouseup', event),
|
|
86
|
+
'onUpdate:modelValue': (event: any) => emit('update:modelValue', event),
|
|
87
|
+
};
|
|
88
|
+
</script>
|
|
89
|
+
|
|
90
|
+
<style lang="postcss">
|
|
91
|
+
@import './index.css';
|
|
92
|
+
</style>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Types
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
99
|
+
import type { BaseRatingEvents, BaseRatingSlots } from '../BaseRating/types';
|
|
100
|
+
import type { BbIconProps } from '../BbIcon/types';
|
|
101
|
+
|
|
102
|
+
export type BbRatingProps = {
|
|
103
|
+
/**
|
|
104
|
+
* Sets autofocus on page load.
|
|
105
|
+
*/
|
|
106
|
+
autofocus?: InputHTMLAttributes['autofocus'];
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Define a color for the component.
|
|
110
|
+
*
|
|
111
|
+
* Either a custom color or a coded color in common HEX, RGB, etc... format.
|
|
112
|
+
*/
|
|
113
|
+
color?: string;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Sets the component in a compact state.
|
|
117
|
+
*/
|
|
118
|
+
compact?: boolean;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Disables the component.
|
|
122
|
+
*/
|
|
123
|
+
disabled?: boolean;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`.
|
|
127
|
+
*/
|
|
128
|
+
direction?: 'horizontal' | 'vertical' | 'auto' | string;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Can be a string or an array of string containing the messages to display.
|
|
132
|
+
*/
|
|
133
|
+
errors?: string | string[];
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Define if the component should be in an error state.
|
|
137
|
+
* It usually attaches a CSS class for styling purposes.
|
|
138
|
+
*/
|
|
139
|
+
hasErrors?: boolean;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Visually hides the legend of the fieldset while maintaining accessibility.
|
|
143
|
+
*/
|
|
144
|
+
hideLegend?: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Text box to be displayed near the input, usually to indicate instructions.
|
|
147
|
+
*/
|
|
148
|
+
hint?: string;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* The identifier of the component.
|
|
152
|
+
*/
|
|
153
|
+
id?: HTMLAttributes['id'];
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Sets the alignment of the input. Since inputs are inline block they can be aligned just as text can.
|
|
157
|
+
*
|
|
158
|
+
* @defaultValue `'left'`
|
|
159
|
+
*/
|
|
160
|
+
inputPosition?: 'left' | 'center' | 'right';
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Text content of the legend.
|
|
164
|
+
*/
|
|
165
|
+
legend: string;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Sets the text alignment of the legend.
|
|
169
|
+
*/
|
|
170
|
+
legendPosition?: 'left' | 'center' | 'right';
|
|
171
|
+
/**
|
|
172
|
+
* Used by v-model.
|
|
173
|
+
*/
|
|
174
|
+
modelValue: null | number;
|
|
175
|
+
/**
|
|
176
|
+
* Defines the name of the input.
|
|
177
|
+
*/
|
|
178
|
+
name: string;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Keeps the hint displayed.
|
|
182
|
+
*/
|
|
183
|
+
persistentHint?: boolean;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Sets the input in a readonly state.
|
|
187
|
+
*/
|
|
188
|
+
readonly?: boolean;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Sets the input as required.
|
|
192
|
+
*/
|
|
193
|
+
required?: boolean;
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Reverses the layout. Applicable in every direction the order of the label and the input is swapped.
|
|
197
|
+
*/
|
|
198
|
+
reverse?: boolean;
|
|
199
|
+
/**
|
|
200
|
+
* Maximum number of stars to render and maximum value of the component.
|
|
201
|
+
*/
|
|
202
|
+
stars?: number;
|
|
203
|
+
} & Pick<BbIconProps, 'size'>;
|
|
204
|
+
|
|
205
|
+
/** Re-export for consumers importing events type from BbRating. */
|
|
206
|
+
export type BbRatingEvents = BaseRatingEvents;
|
|
207
|
+
|
|
208
|
+
/** Props exposed by the `legend` slot. */
|
|
209
|
+
export type BbRatingLegendSlotProps = {
|
|
210
|
+
/** The `legend` prop value. */
|
|
211
|
+
text: string;
|
|
212
|
+
/** Whether the rating is in an error state. */
|
|
213
|
+
hasErrors: boolean;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
export type BbRatingSlots = BaseRatingSlots & {
|
|
217
|
+
/**
|
|
218
|
+
* Replaces the default fieldset legend text rendered above the rating stars.
|
|
219
|
+
*/
|
|
220
|
+
legend?: (props: BbRatingLegendSlotProps) => any;
|
|
221
|
+
};
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Styles
|
|
225
|
+
|
|
226
|
+
```css
|
|
227
|
+
.bb-rating {
|
|
228
|
+
.bb-base-input-container--horizontal {
|
|
229
|
+
.bb-base-input-container__label {
|
|
230
|
+
float: left;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.bb-base-input-container__input--right {
|
|
235
|
+
.bb-cr-container__container {
|
|
236
|
+
justify-content: flex-end;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
.bb-base-input-container__input--center {
|
|
240
|
+
.bb-cr-container__container {
|
|
241
|
+
justify-content: center;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# BbRatio
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<component
|
|
8
|
+
:is="tag"
|
|
9
|
+
class="bb-ratio"
|
|
10
|
+
:style="{
|
|
11
|
+
aspectRatio: ratio,
|
|
12
|
+
}"
|
|
13
|
+
><slot></slot>
|
|
14
|
+
</component>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script setup lang="ts">
|
|
18
|
+
import type { BbRatioProps, BbRatioSlots } from './types';
|
|
19
|
+
export type { BbRatioProps, BbRatioSlots };
|
|
20
|
+
|
|
21
|
+
withDefaults(defineProps<BbRatioProps>(), {
|
|
22
|
+
ratio: 1,
|
|
23
|
+
tag: 'div',
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
defineSlots<BbRatioSlots>();
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<style lang="postcss">
|
|
30
|
+
@import './index.css';
|
|
31
|
+
</style>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Types
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import type { NonVoidElementTag } from '@/types/CommonProps';
|
|
38
|
+
|
|
39
|
+
export type BbRatioProps = {
|
|
40
|
+
/**
|
|
41
|
+
* The ratio the component should maintain. It should be passed as a number as in `16/9`.
|
|
42
|
+
*
|
|
43
|
+
* @defaultValue `1`
|
|
44
|
+
*/
|
|
45
|
+
ratio?: number;
|
|
46
|
+
} & NonVoidElementTag;
|
|
47
|
+
|
|
48
|
+
export type BbRatioSlots = {
|
|
49
|
+
/**
|
|
50
|
+
* Content rendered inside the ratio container, scaled to maintain the configured aspect ratio.
|
|
51
|
+
*/
|
|
52
|
+
default?: (props: object) => any;
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Styles
|
|
57
|
+
|
|
58
|
+
```css
|
|
59
|
+
.bb-ratio {
|
|
60
|
+
display: block;
|
|
61
|
+
}
|
|
62
|
+
```
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# BbRows
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<slot v-if="loading" :items="internalItems" name="loading"></slot>
|
|
8
|
+
<slot v-if="!mappedItems.length" :loading="loading" name="no-data"></slot>
|
|
9
|
+
<template v-else>
|
|
10
|
+
<template
|
|
11
|
+
v-for="(item, index) in mappedItems"
|
|
12
|
+
:key="item.valueHash + selectAll"
|
|
13
|
+
>
|
|
14
|
+
<slot
|
|
15
|
+
:checked="item.selected"
|
|
16
|
+
:columns="item.columns"
|
|
17
|
+
:disabled="item.disabled"
|
|
18
|
+
:index="index"
|
|
19
|
+
:item="item.item"
|
|
20
|
+
:select="() => selectItem(item)"
|
|
21
|
+
:unselect="() => unselectItem(item)"
|
|
22
|
+
:value="item.value"
|
|
23
|
+
/>
|
|
24
|
+
</template>
|
|
25
|
+
</template>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script setup lang="ts" generic="Item = any">
|
|
29
|
+
import { reactive, ref, toRef, watch } from 'vue';
|
|
30
|
+
import { computed } from 'vue';
|
|
31
|
+
import type { Option as BaseOption } from '@/types/Option';
|
|
32
|
+
import { useItemValue } from '@/composables/useItemValue';
|
|
33
|
+
import { isNil } from '@/utilities/functions/isNil';
|
|
34
|
+
import { indexBy } from '@/utilities/functions/indexBy';
|
|
35
|
+
import { hash } from '@/utilities/functions/hash';
|
|
36
|
+
import { useItemsGetter } from '@/composables/useItemsGetter';
|
|
37
|
+
import { usePrefill } from '@/composables/usePrefill';
|
|
38
|
+
import { useIndexById } from '@/composables/useIndexById';
|
|
39
|
+
import { useBaseOptions } from '@/composables/useBaseOptions';
|
|
40
|
+
import { useHashedWatcher } from '@/composables/useHashedWatcher';
|
|
41
|
+
import type { BbRowsColumn, BbRowsEvents, BbRowsProps } from './types';
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Projection that represents a row of cells with flags
|
|
45
|
+
* linked to the state of the item
|
|
46
|
+
*/
|
|
47
|
+
type MappedItem = BaseOption & {
|
|
48
|
+
columns: Record<string, ItemColumn>;
|
|
49
|
+
selected: boolean;
|
|
50
|
+
disabled: boolean;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
type ItemColumn = {
|
|
54
|
+
key: string;
|
|
55
|
+
label: string;
|
|
56
|
+
value: any;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const props = withDefaults(defineProps<BbRowsProps<Item>>(), {
|
|
60
|
+
allowSelectAll: true,
|
|
61
|
+
columns: () => [],
|
|
62
|
+
dependencies: () => [],
|
|
63
|
+
depsDebounceTime: 0,
|
|
64
|
+
fixedColumns: () => [],
|
|
65
|
+
items: () => [],
|
|
66
|
+
max: Infinity,
|
|
67
|
+
multiple: true,
|
|
68
|
+
modelValue: () => [],
|
|
69
|
+
unselectedItems: () => [],
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const emit = defineEmits<BbRowsEvents>();
|
|
73
|
+
|
|
74
|
+
defineSlots<{
|
|
75
|
+
/**
|
|
76
|
+
* Rendered once per item in `items`. Provides the full state of a single row.
|
|
77
|
+
* @param checked - Whether this item is currently selected.
|
|
78
|
+
* @param columns - A map of column key to `{ key, label, value }` for each defined column.
|
|
79
|
+
* @param disabled - Whether this item is disabled (based on the `selectable` prop).
|
|
80
|
+
* @param index - The zero-based index of this item in the list.
|
|
81
|
+
* @param item - The raw item from the `items` prop.
|
|
82
|
+
* @param select - Selects this item.
|
|
83
|
+
* @param unselect - Deselects this item.
|
|
84
|
+
* @param value - The resolved value of this item (from `itemValue`).
|
|
85
|
+
*/
|
|
86
|
+
default?: (props: {
|
|
87
|
+
checked: boolean;
|
|
88
|
+
columns: Record<string, { key: string; label: string; value: any }>;
|
|
89
|
+
disabled: boolean;
|
|
90
|
+
index: number;
|
|
91
|
+
item: Item;
|
|
92
|
+
select: () => void;
|
|
93
|
+
unselect: () => void;
|
|
94
|
+
value: any;
|
|
95
|
+
}) => any;
|
|
96
|
+
/**
|
|
97
|
+
* Content shown while items are loading (replaces the default loading state).
|
|
98
|
+
* @param items - The current (possibly stale) list of items, useful to show a skeleton matching the previous count.
|
|
99
|
+
*/
|
|
100
|
+
loading?: (props: { items: Item[] }) => any;
|
|
101
|
+
/**
|
|
102
|
+
* Content shown when the items list is empty and not loading.
|
|
103
|
+
* @param loading - Whether items are currently being fetched.
|
|
104
|
+
*/
|
|
105
|
+
'no-data'?: (props: { loading: boolean }) => any;
|
|
106
|
+
}>();
|
|
107
|
+
|
|
108
|
+
const { getItemValue } = useItemValue();
|
|
109
|
+
|
|
110
|
+
const loading = computed(() => !!(props.loading || innerLoading.value));
|
|
111
|
+
|
|
112
|
+
const {
|
|
113
|
+
getter,
|
|
114
|
+
items: internalItems,
|
|
115
|
+
loading: innerLoading,
|
|
116
|
+
} = useItemsGetter({
|
|
117
|
+
items: toRef(props, 'items'),
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
const { hasPrefilled } = usePrefill({
|
|
121
|
+
trigger: true,
|
|
122
|
+
fn: async (isPrefill) => {
|
|
123
|
+
await getter(isPrefill, props.modelValue);
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const { data: modelValueIndexedByHash } = useIndexById({
|
|
128
|
+
items: toRef(props, 'modelValue'),
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
const { options } = useBaseOptions({
|
|
132
|
+
disabled: toRef(props, 'disabled'),
|
|
133
|
+
items: internalItems,
|
|
134
|
+
itemText: undefined,
|
|
135
|
+
itemValue: props.itemValue,
|
|
136
|
+
max: props.max,
|
|
137
|
+
selectable: true,
|
|
138
|
+
selectedIndexedByHash: modelValueIndexedByHash,
|
|
139
|
+
});
|
|
140
|
+
const onOptionSelected = async (option: BaseOption) => {
|
|
141
|
+
if (props.multiple) {
|
|
142
|
+
emit('update:modelValue', props.modelValue.concat(option.value));
|
|
143
|
+
} else {
|
|
144
|
+
emit('update:modelValue', option.value);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const onOptionUnselected = async (option: BaseOption) => {
|
|
149
|
+
if (props.multiple) {
|
|
150
|
+
const copy = { ...modelValueIndexedByHash.value };
|
|
151
|
+
delete copy[option.valueHash];
|
|
152
|
+
emit('update:modelValue', Object.values(copy));
|
|
153
|
+
} else {
|
|
154
|
+
emit('update:modelValue', null);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
useHashedWatcher(
|
|
159
|
+
() => [props.dependencies, props.items],
|
|
160
|
+
async () => {
|
|
161
|
+
if (!hasPrefilled.value) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await getter(false, props.modelValue);
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
debounce: props.depsDebounceTime,
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Map items to an an array that represents the entire row.
|
|
173
|
+
* Track every logic here so we don't have inline callbacks in the template.
|
|
174
|
+
*/
|
|
175
|
+
const mappedItems = computed<MappedItem[]>(() => {
|
|
176
|
+
return options.value.map((item: BaseOption): MappedItem => {
|
|
177
|
+
/**
|
|
178
|
+
* Item is selectable only if the table allows or item
|
|
179
|
+
* passes iteratee and the selection is not disabled
|
|
180
|
+
*/
|
|
181
|
+
let disabled = !props.selectable;
|
|
182
|
+
if (typeof props.selectable === 'function') {
|
|
183
|
+
disabled = !props.selectable(item.item);
|
|
184
|
+
}
|
|
185
|
+
disabled = disabled || !!item.disabled;
|
|
186
|
+
|
|
187
|
+
// Create a projection of the columns and run all formatter logic so
|
|
188
|
+
// we just display content in the template
|
|
189
|
+
const columns = indexBy(
|
|
190
|
+
props.columns.map((column) => {
|
|
191
|
+
const { label, key } = column;
|
|
192
|
+
// The content
|
|
193
|
+
let content = getItemValue(item.item, column.key);
|
|
194
|
+
if (
|
|
195
|
+
column.formatter &&
|
|
196
|
+
// By default the formatter runs anyway
|
|
197
|
+
(!isNil(content) || column.formatOnNull !== false)
|
|
198
|
+
) {
|
|
199
|
+
content = column.formatter(content, column.key, item.item);
|
|
200
|
+
}
|
|
201
|
+
if (column.placeholder && isNil(content)) {
|
|
202
|
+
content = column.placeholder;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return {
|
|
206
|
+
value: content,
|
|
207
|
+
key,
|
|
208
|
+
label,
|
|
209
|
+
} as ItemColumn;
|
|
210
|
+
}),
|
|
211
|
+
(c) => c.key
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
// If the item is selected or the select all is checked and the item is not explicitly unselected
|
|
215
|
+
const selected =
|
|
216
|
+
!!(item.selected || selectAll.value) &&
|
|
217
|
+
!unselectedItems.has(item.valueHash);
|
|
218
|
+
const res = {
|
|
219
|
+
columns: columns,
|
|
220
|
+
item: item.item,
|
|
221
|
+
text: item.text,
|
|
222
|
+
valueHash: item.valueHash,
|
|
223
|
+
value: item.value,
|
|
224
|
+
selected,
|
|
225
|
+
disabled,
|
|
226
|
+
};
|
|
227
|
+
return res;
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
const selectItem = (item: MappedItem) => {
|
|
232
|
+
if (!selectAll.value) {
|
|
233
|
+
onOptionSelected(item);
|
|
234
|
+
}
|
|
235
|
+
unselectedItems.delete(item.valueHash);
|
|
236
|
+
emit(
|
|
237
|
+
'update:unselectedItems',
|
|
238
|
+
props.unselectedItems.filter((i) => hash(i) !== hash(item.value))
|
|
239
|
+
);
|
|
240
|
+
};
|
|
241
|
+
const unselectItem = (item: MappedItem) => {
|
|
242
|
+
unselectedItems.add(item.valueHash);
|
|
243
|
+
emit('update:unselectedItems', [...props.unselectedItems, item.value]);
|
|
244
|
+
onOptionUnselected(item);
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
// eslint-disable-next-line vue/no-dupe-keys
|
|
248
|
+
const unselectedItems = reactive(new Set<string>());
|
|
249
|
+
watch(
|
|
250
|
+
() => props.unselectedItems,
|
|
251
|
+
() => {
|
|
252
|
+
unselectedItems.clear();
|
|
253
|
+
props.unselectedItems.forEach((i) => {
|
|
254
|
+
unselectedItems.add(hash(i));
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
const selectAll = ref(props.selectAll);
|
|
260
|
+
watch(
|
|
261
|
+
() => props.selectAll,
|
|
262
|
+
() => {
|
|
263
|
+
selectAll.value = props.selectAll;
|
|
264
|
+
}
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
watch(selectAll, () => {
|
|
268
|
+
unselectedItems.clear();
|
|
269
|
+
emit('update:unselectedItems', []);
|
|
270
|
+
emit('update:modelValue', []);
|
|
271
|
+
});
|
|
272
|
+
</script>
|
|
273
|
+
|
|
274
|
+
<style scoped></style>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Types
|
|
278
|
+
|
|
279
|
+
```ts
|
|
280
|
+
import type { BaseColumn } from '../BbTable/types';
|
|
281
|
+
|
|
282
|
+
export type BbRowsColumn<Item = any> = BaseColumn<Item>;
|
|
283
|
+
|
|
284
|
+
export type BbRowsProps<Item = any> = {
|
|
285
|
+
columns: BbRowsColumn<Item>[];
|
|
286
|
+
dependencies?: any[];
|
|
287
|
+
depsDebounceTime?: number;
|
|
288
|
+
disabled?: boolean;
|
|
289
|
+
items:
|
|
290
|
+
| any[]
|
|
291
|
+
| ((prefill: boolean, modelValue?: any[]) => Promise<any[]>)
|
|
292
|
+
| ((prefill: boolean, modelValue?: any[]) => any[]);
|
|
293
|
+
itemValue?: string | ((item: any) => any);
|
|
294
|
+
loading?: boolean;
|
|
295
|
+
max?: number;
|
|
296
|
+
modelValue?: any;
|
|
297
|
+
multiple?: boolean;
|
|
298
|
+
selectable?: boolean | ((item: any) => boolean);
|
|
299
|
+
selectAll?: boolean;
|
|
300
|
+
unselectedItems?: any[];
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
export type BbRowsEvents = {
|
|
304
|
+
(e: 'update:modelValue', value: any): void;
|
|
305
|
+
(e: 'update:unselectedItems', value: any[]): void;
|
|
306
|
+
};
|
|
307
|
+
```
|