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,624 @@
|
|
|
1
|
+
# BaseTag
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<CommonInputOuterContainer
|
|
8
|
+
ref="outerContainer"
|
|
9
|
+
:class="{
|
|
10
|
+
'bb-base-tag': true,
|
|
11
|
+
'bb-base-tag--active': active,
|
|
12
|
+
'bb-base-tag--disabled': disabled,
|
|
13
|
+
'bb-base-tag--loading': loading,
|
|
14
|
+
'bb-base-tag--errors': hasErrors,
|
|
15
|
+
'bb-base-tag--readonly': readonly,
|
|
16
|
+
'bb-base-tag--compact': compact,
|
|
17
|
+
}"
|
|
18
|
+
@click="onOuterContainerClick"
|
|
19
|
+
>
|
|
20
|
+
<template #prepend-outer><slot name="prepend-outer"></slot></template>
|
|
21
|
+
<CommonInputInnerContainer
|
|
22
|
+
ref="innerContainer"
|
|
23
|
+
:append:icon="props['append:icon']"
|
|
24
|
+
:clearable="clearable && !isEmpty(modelValue)"
|
|
25
|
+
:prepend:icon="props['prepend:icon']"
|
|
26
|
+
:prevent-focus="true"
|
|
27
|
+
@click:clear="onClear"
|
|
28
|
+
>
|
|
29
|
+
<template #prepend><slot name="prepend" /></template>
|
|
30
|
+
<template #prefix><slot name="prefix" /></template>
|
|
31
|
+
<BbSmoothHeight tag="span">
|
|
32
|
+
<span class="bb-base-tag__input-container">
|
|
33
|
+
<template v-if="multiple">
|
|
34
|
+
<template v-if="comma">
|
|
35
|
+
<CommaBox ref="commaBox" :options="selectedOptions" />
|
|
36
|
+
</template>
|
|
37
|
+
<template v-else>
|
|
38
|
+
<ChipsBox
|
|
39
|
+
ref="chipsBox"
|
|
40
|
+
:options="selectedOptions"
|
|
41
|
+
@option:unselected="onOptionUnselected"
|
|
42
|
+
/>
|
|
43
|
+
</template>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<input
|
|
47
|
+
:id="id"
|
|
48
|
+
ref="input"
|
|
49
|
+
v-bind="eventListeners"
|
|
50
|
+
v-model="query"
|
|
51
|
+
:aria-describedby="ariaDescribedby"
|
|
52
|
+
:autocomplete="autocomplete"
|
|
53
|
+
:autofocus="autofocus"
|
|
54
|
+
:class="'bb-base-tag__text-input'"
|
|
55
|
+
:disabled="disabled"
|
|
56
|
+
enterkeyhint="done"
|
|
57
|
+
:placeholder="placeholder"
|
|
58
|
+
:readonly="readonly"
|
|
59
|
+
:required="required && (!multiple || !modelValue.length)"
|
|
60
|
+
size="1"
|
|
61
|
+
:style="{ '--characters': query.length }"
|
|
62
|
+
type="text"
|
|
63
|
+
@focus.stop="onInputFocus"
|
|
64
|
+
@keydown.stop="onInputKeydown"
|
|
65
|
+
@keydown.stop.delete="onBackspace"
|
|
66
|
+
@keydown.stop.left="onArrowLeft"
|
|
67
|
+
@keydown.stop.prevent.esc="onEscape"
|
|
68
|
+
@keydown.stop.right="onArrowRight"
|
|
69
|
+
/>
|
|
70
|
+
</span>
|
|
71
|
+
</BbSmoothHeight>
|
|
72
|
+
<template #append><slot name="append" /></template>
|
|
73
|
+
<template #suffix><slot name="suffix" /></template>
|
|
74
|
+
</CommonInputInnerContainer>
|
|
75
|
+
|
|
76
|
+
<template #append-outer><slot name="append-outer"></slot></template>
|
|
77
|
+
</CommonInputOuterContainer>
|
|
78
|
+
</template>
|
|
79
|
+
|
|
80
|
+
<script setup lang="ts">
|
|
81
|
+
import BbSmoothHeight from '../BbSmoothHeight/BbSmoothHeight.vue';
|
|
82
|
+
import { computed, ref, watch } from 'vue';
|
|
83
|
+
import { last } from '@/utilities/functions/last';
|
|
84
|
+
import { nextTick } from 'vue';
|
|
85
|
+
import { toRef } from 'vue';
|
|
86
|
+
import { useBaseOptions } from '@/composables/useBaseOptions';
|
|
87
|
+
import { useIndexById } from '@/composables/useIndexById';
|
|
88
|
+
import ChipsBox from '../ChipsBox/ChipsBox.vue';
|
|
89
|
+
import CommaBox from '../CommaBox/CommaBox.vue';
|
|
90
|
+
import CommonInputInnerContainer from '../CommonInputInnerContainer/CommonInputInnerContainer.vue';
|
|
91
|
+
import CommonInputOuterContainer from '../CommonInputOuterContainer/CommonInputOuterContainer.vue';
|
|
92
|
+
import type { Option as BaseOption } from '@/types/Option';
|
|
93
|
+
import { isEmpty } from '@/utilities/functions/empty';
|
|
94
|
+
import type { BaseTagProps, BaseTagEvents, BaseTagSlots } from './types';
|
|
95
|
+
export type { BaseTagProps, BaseTagEvents, BaseTagSlots };
|
|
96
|
+
|
|
97
|
+
const props = withDefaults(defineProps<BaseTagProps>(), {
|
|
98
|
+
autocomplete: 'off',
|
|
99
|
+
divider: 'Enter',
|
|
100
|
+
multiple: true,
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
const emit = defineEmits<BaseTagEvents>();
|
|
104
|
+
|
|
105
|
+
defineSlots<BaseTagSlots>();
|
|
106
|
+
|
|
107
|
+
if (props.multiple && !Array.isArray(props.modelValue)) {
|
|
108
|
+
throw new Error('Multiple is set to "true" but modelValue is not an array.');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const outerContainer = ref<InstanceType<
|
|
112
|
+
typeof CommonInputOuterContainer
|
|
113
|
+
> | null>(null);
|
|
114
|
+
const innerContainer = ref<InstanceType<
|
|
115
|
+
typeof CommonInputInnerContainer
|
|
116
|
+
> | null>(null);
|
|
117
|
+
const commaBox = ref<InstanceType<typeof CommaBox> | null>(null);
|
|
118
|
+
const chipsBox = ref<InstanceType<typeof ChipsBox> | null>(null);
|
|
119
|
+
const selectedBox = computed(() =>
|
|
120
|
+
props.comma ? commaBox.value : chipsBox.value
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
const input = ref<HTMLElement | null>(null);
|
|
124
|
+
const focusInput = () => {
|
|
125
|
+
if (input.value instanceof HTMLInputElement) {
|
|
126
|
+
input.value.focus();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const query = ref<string>('');
|
|
131
|
+
const selectedOptions = computed(() => {
|
|
132
|
+
return options.value.filter((o) => o.selected);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const { data: modelValueIndexedByHash, get: isItemSelected } = useIndexById({
|
|
136
|
+
items: toRef(props, 'modelValue'),
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const { options } = useBaseOptions({
|
|
140
|
+
disabled: toRef(props, 'disabled'),
|
|
141
|
+
items: computed(() => [].concat(props.modelValue)),
|
|
142
|
+
itemText: undefined,
|
|
143
|
+
itemValue: undefined,
|
|
144
|
+
max: props.max,
|
|
145
|
+
selectable: true,
|
|
146
|
+
selectedIndexedByHash: modelValueIndexedByHash,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
const alignQueryToState = () => {
|
|
150
|
+
if (props.multiple) {
|
|
151
|
+
query.value = '';
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
let option: BaseOption | undefined;
|
|
155
|
+
if (selectedOptions.value) {
|
|
156
|
+
option = last(selectedOptions.value);
|
|
157
|
+
}
|
|
158
|
+
query.value = option?.text || '';
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const onOptionUnselected = async (option: BaseOption) => {
|
|
162
|
+
if (props.multiple) {
|
|
163
|
+
const copy = { ...modelValueIndexedByHash.value };
|
|
164
|
+
delete copy[option.valueHash];
|
|
165
|
+
emit('update:modelValue', Object.values(copy));
|
|
166
|
+
} else {
|
|
167
|
+
emit('update:modelValue', null);
|
|
168
|
+
}
|
|
169
|
+
focusInput();
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
watch(
|
|
173
|
+
() => props.modelValue,
|
|
174
|
+
async () => {
|
|
175
|
+
alignQueryToState();
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Applies a class when the user is inside this whole component.
|
|
181
|
+
* Also we cannot use the <input/> if we physically move focus to the options so
|
|
182
|
+
* we track it manually.
|
|
183
|
+
*/
|
|
184
|
+
const active = ref(false);
|
|
185
|
+
|
|
186
|
+
const setActive = () => {
|
|
187
|
+
active.value = true;
|
|
188
|
+
};
|
|
189
|
+
const setInactive = () => {
|
|
190
|
+
active.value = false;
|
|
191
|
+
emit('inactive');
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const canProcessKeyboardBindings = computed(() => {
|
|
195
|
+
if (props.readonly) return false;
|
|
196
|
+
if (props.disabled) return false;
|
|
197
|
+
if (!selectedBox.value && props.multiple) return false;
|
|
198
|
+
return true;
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
const onArrowLeft = (event: KeyboardEvent) => {
|
|
202
|
+
if (!canProcessKeyboardBindings.value) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (!props.multiple || query.value) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
if (!selectedOptions.value.length) return;
|
|
210
|
+
selectedBox.value?.focusPrevious();
|
|
211
|
+
};
|
|
212
|
+
const onArrowRight = (event: KeyboardEvent) => {
|
|
213
|
+
if (!canProcessKeyboardBindings.value) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (!props.multiple || query.value) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
if (!selectedOptions.value.length) return;
|
|
221
|
+
selectedBox.value?.focusNext();
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const onBackspace = async () => {
|
|
225
|
+
if (
|
|
226
|
+
!canProcessKeyboardBindings.value ||
|
|
227
|
+
query.value ||
|
|
228
|
+
!selectedOptions.value.length
|
|
229
|
+
) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (selectedBox.value?.getHighlighted()) {
|
|
233
|
+
selectedBox.value.confirmOption();
|
|
234
|
+
}
|
|
235
|
+
await nextTick();
|
|
236
|
+
selectedBox.value?.focusPrevious();
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
const onEscape = () => {
|
|
240
|
+
selectedBox.value?.blur();
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
const onInputKeydown = async (event: KeyboardEvent) => {
|
|
244
|
+
emit('keydown', event);
|
|
245
|
+
if (props.readonly || props.disabled) {
|
|
246
|
+
event.preventDefault();
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// Reset focused chips on key input
|
|
250
|
+
if (/^[A-Za-z0-9]$/.test(event.key)) {
|
|
251
|
+
selectedBox.value?.blur();
|
|
252
|
+
}
|
|
253
|
+
if (
|
|
254
|
+
event.key === props.divider ||
|
|
255
|
+
(event.key === 'Unidentified' && query.value.includes(props.divider))
|
|
256
|
+
) {
|
|
257
|
+
if (props.divider.length === 1 && query.value.includes(props.divider)) {
|
|
258
|
+
const found = query.value.split(props.divider)[0];
|
|
259
|
+
if (found) {
|
|
260
|
+
query.value = found;
|
|
261
|
+
} else {
|
|
262
|
+
query.value = '';
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (!query.value) {
|
|
267
|
+
emit('keydown', event);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
event.preventDefault();
|
|
271
|
+
if (isItemSelected(query.value)) {
|
|
272
|
+
emit('duplicate', query.value);
|
|
273
|
+
query.value = '';
|
|
274
|
+
} else if (props.max && selectedOptions.value.length >= props.max) {
|
|
275
|
+
return;
|
|
276
|
+
} else {
|
|
277
|
+
if (props.multiple) {
|
|
278
|
+
emit('update:modelValue', props.modelValue.concat(query.value));
|
|
279
|
+
} else {
|
|
280
|
+
emit('update:modelValue', query.value);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
const onInputFocus = (event: FocusEvent) => {
|
|
287
|
+
emit('focus', event);
|
|
288
|
+
setActive();
|
|
289
|
+
document.addEventListener('click', onOutsideInteraction);
|
|
290
|
+
document.addEventListener('focusin', onOutsideInteraction);
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* When clicking on the outside container seamlessly move focus to the input and open the panel
|
|
295
|
+
*/
|
|
296
|
+
const onOuterContainerClick = (event: MouseEvent) => {
|
|
297
|
+
emit('click', event);
|
|
298
|
+
if (props.disabled || props.readonly) return;
|
|
299
|
+
if (input.value instanceof HTMLElement) {
|
|
300
|
+
input.value.focus();
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* On click outside of the container close the panel, remove active state.
|
|
306
|
+
* In multiple selection clear query after a timeout
|
|
307
|
+
*/
|
|
308
|
+
const onOutsideInteraction = async (event: Event) => {
|
|
309
|
+
if (event.target instanceof Node) {
|
|
310
|
+
if (outerContainer.value) {
|
|
311
|
+
if (!outerContainer.value.$el.contains(event.target)) {
|
|
312
|
+
setInactive();
|
|
313
|
+
document.removeEventListener('click', onOutsideInteraction);
|
|
314
|
+
document.removeEventListener('focusin', onOutsideInteraction);
|
|
315
|
+
alignQueryToState();
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
const eventListeners = {
|
|
322
|
+
onBlur: (event: FocusEvent) => emit('blur', event),
|
|
323
|
+
onChange: (event: Event) => emit('change', event),
|
|
324
|
+
onKeyup: (event: KeyboardEvent) => emit('keyup', event),
|
|
325
|
+
onInput: (event: Event) => emit('input', event),
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
const onClear = () => {
|
|
329
|
+
let value = null;
|
|
330
|
+
if (props.multiple) {
|
|
331
|
+
value = [];
|
|
332
|
+
}
|
|
333
|
+
emit('update:modelValue', value);
|
|
334
|
+
};
|
|
335
|
+
</script>
|
|
336
|
+
<style lang="postcss">
|
|
337
|
+
@import './index.css';
|
|
338
|
+
</style>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Types
|
|
342
|
+
|
|
343
|
+
```ts
|
|
344
|
+
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
345
|
+
import type { IconType } from '@/types/Icon';
|
|
346
|
+
|
|
347
|
+
export type BaseTagProps = {
|
|
348
|
+
/**
|
|
349
|
+
* Name of the icon to render at the right hand side of the input.
|
|
350
|
+
*/
|
|
351
|
+
// eslint-disable-next-line vue/prop-name-casing
|
|
352
|
+
'append:icon'?: IconType;
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Id(s) of elements describing this tag input for assistive technologies.
|
|
356
|
+
*/
|
|
357
|
+
ariaDescribedby?: InputHTMLAttributes['aria-describedby'];
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Browser autocomplete hint for the input field.
|
|
361
|
+
* @defaultValue `'off'`
|
|
362
|
+
*/
|
|
363
|
+
autocomplete?: InputHTMLAttributes['autocomplete'];
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Focus the input automatically on mount.
|
|
367
|
+
*/
|
|
368
|
+
autofocus?: InputHTMLAttributes['autofocus'];
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Display selected tags as a comma-separated string instead of individual chips.
|
|
372
|
+
* When enabled, tags cannot be deselected by clicking individual chips.
|
|
373
|
+
*/
|
|
374
|
+
comma?: boolean;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Show a clear button whenever tags are present and the control is interactive.
|
|
378
|
+
*/
|
|
379
|
+
clearable?: boolean;
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Apply the compact density variant.
|
|
383
|
+
*/
|
|
384
|
+
compact?: boolean;
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Disable all interactions with the tag input.
|
|
388
|
+
*/
|
|
389
|
+
disabled?: boolean;
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Keyboard key that triggers tag creation from current input value.
|
|
393
|
+
* @defaultValue `'Enter'`
|
|
394
|
+
*/
|
|
395
|
+
divider?: KeyboardEvent['key'];
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Apply error styling to the tag input.
|
|
399
|
+
*/
|
|
400
|
+
hasErrors?: boolean;
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Explicit id for the input element.
|
|
404
|
+
*/
|
|
405
|
+
id?: HTMLAttributes['id'];
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Display the loading state styles.
|
|
409
|
+
*/
|
|
410
|
+
loading?: boolean;
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Maximum number of tags that can be created.
|
|
414
|
+
*/
|
|
415
|
+
max?: number;
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* v-model value. Single value for single tag, array for multiple tags.
|
|
419
|
+
*/
|
|
420
|
+
modelValue: any;
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Enable multiple tag selection. When true, modelValue must be an array.
|
|
424
|
+
* @defaultValue `true`
|
|
425
|
+
*/
|
|
426
|
+
multiple?: boolean;
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* Name attribute forwarded to the input element.
|
|
430
|
+
*/
|
|
431
|
+
name?: InputHTMLAttributes['name'];
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Placeholder text when no tags are present.
|
|
435
|
+
*/
|
|
436
|
+
placeholder?: InputHTMLAttributes['placeholder'];
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Name of the icon to render at the left hand side of the input.
|
|
440
|
+
*/
|
|
441
|
+
// eslint-disable-next-line vue/prop-name-casing
|
|
442
|
+
'prepend:icon'?: IconType;
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Make the input read-only while keeping tags visible.
|
|
446
|
+
*/
|
|
447
|
+
readonly?: boolean;
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Mark the input as required for form validation.
|
|
451
|
+
*/
|
|
452
|
+
required?: boolean;
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
export type BaseTagEvents = {
|
|
456
|
+
/** Emitted when the native input loses focus. Forwards the original DOM `FocusEvent`. */
|
|
457
|
+
(e: 'blur', event: FocusEvent): void;
|
|
458
|
+
/** Emitted when the native input fires a change event. Forwards the original DOM `Event`. */
|
|
459
|
+
(e: 'change', event: Event): void;
|
|
460
|
+
/** Emitted when the input receives a click interaction. Forwards the original DOM `MouseEvent`. */
|
|
461
|
+
(e: 'click', event: MouseEvent): void;
|
|
462
|
+
/** Emitted when an attempt is made to add a tag that already exists. */
|
|
463
|
+
(e: 'duplicate', string: string): void;
|
|
464
|
+
/** Emitted when the native input gains focus. Forwards the original DOM `FocusEvent`. */
|
|
465
|
+
(e: 'focus', event: FocusEvent): void;
|
|
466
|
+
/** Emitted when focus/click moves outside the tag input after it was active. */
|
|
467
|
+
(e: 'inactive'): void;
|
|
468
|
+
/** Emitted on native input events. Forwards the original DOM `Event`. */
|
|
469
|
+
(e: 'input', event: Event): void;
|
|
470
|
+
/** Emitted for keyboard interaction. Forwards the original DOM `KeyboardEvent`. */
|
|
471
|
+
(e: 'keydown', event: KeyboardEvent): void;
|
|
472
|
+
/** Emitted when a key is released. Forwards the original DOM `KeyboardEvent`. */
|
|
473
|
+
(e: 'keyup', event: KeyboardEvent): void;
|
|
474
|
+
/** Emitted when the tag array changes. */
|
|
475
|
+
(e: 'update:modelValue', value: any): void;
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
export type BaseTagSlots = {
|
|
479
|
+
/**
|
|
480
|
+
* Content rendered after the tag input, at the end of the inner container.
|
|
481
|
+
*/
|
|
482
|
+
append?: (props: object) => any;
|
|
483
|
+
/**
|
|
484
|
+
* Content rendered after the entire tag input control, outside the input chrome.
|
|
485
|
+
*/
|
|
486
|
+
'append-outer'?: (props: object) => any;
|
|
487
|
+
/**
|
|
488
|
+
* Content rendered before the tag input, at the start of the inner container.
|
|
489
|
+
*/
|
|
490
|
+
prepend?: (props: object) => any;
|
|
491
|
+
/**
|
|
492
|
+
* Content rendered before the entire tag input control, outside the input chrome.
|
|
493
|
+
*/
|
|
494
|
+
'prepend-outer'?: (props: object) => any;
|
|
495
|
+
/**
|
|
496
|
+
* Inline content rendered at the start of the input field area, before the typed text.
|
|
497
|
+
*/
|
|
498
|
+
prefix?: (props: object) => any;
|
|
499
|
+
/**
|
|
500
|
+
* Inline content rendered at the end of the input field area, after the typed text.
|
|
501
|
+
*/
|
|
502
|
+
suffix?: (props: object) => any;
|
|
503
|
+
};
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
## Styles
|
|
507
|
+
|
|
508
|
+
```css
|
|
509
|
+
.bb-base-tag {
|
|
510
|
+
--bb-input-inner-h: max(
|
|
511
|
+
calc(var(--bb-leading) + var(--bb-input-py) * 2),
|
|
512
|
+
calc(var(--bb-input-h) - 2px),
|
|
513
|
+
var(--bb-input-icon)
|
|
514
|
+
);
|
|
515
|
+
--floating-py: calc((var(--bb-input-inner-h) - var(--bb-input-icon)) / 2);
|
|
516
|
+
|
|
517
|
+
&.bb-base-tag--active {
|
|
518
|
+
.bb-common-input-inner-container {
|
|
519
|
+
.bb-base-tag__text-input {
|
|
520
|
+
/* Approximate the length of the text as min width so the character doesn't go into a newline as often*/
|
|
521
|
+
min-width: min(100%, calc(var(--characters) * 12px));
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
&--loading {
|
|
526
|
+
/* Add styles for loading state if needed */
|
|
527
|
+
}
|
|
528
|
+
&--disabled {
|
|
529
|
+
/* Add styles for disabled state if needed */
|
|
530
|
+
}
|
|
531
|
+
&--errors {
|
|
532
|
+
/* Add styles for error state if needed */
|
|
533
|
+
}
|
|
534
|
+
&--readonly {
|
|
535
|
+
/* Add styles for readonly state if needed */
|
|
536
|
+
}
|
|
537
|
+
&--compact {
|
|
538
|
+
--floating-py: var(--bb-input-compact-floating-py);
|
|
539
|
+
|
|
540
|
+
.bb-chipsbox-item {
|
|
541
|
+
min-height: 20px;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
&__inner-container {
|
|
546
|
+
/* Add styles for inner container if needed */
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
.bb-smooth-height {
|
|
550
|
+
align-self: center;
|
|
551
|
+
text-align: left;
|
|
552
|
+
width: 100%;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.bb-common-input-inner-container {
|
|
556
|
+
align-items: flex-start;
|
|
557
|
+
|
|
558
|
+
> :last-child {
|
|
559
|
+
order: 2;
|
|
560
|
+
}
|
|
561
|
+
> .bb-clearable-button {
|
|
562
|
+
margin-top: var(--floating-py);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
.bb-spinner {
|
|
566
|
+
margin-top: var(--floating-py);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.bb-error-icon {
|
|
570
|
+
margin-top: var(--floating-py);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.bb-common-input-inner-container__prepend-icon,
|
|
574
|
+
.bb-common-input-inner-container__append-icon {
|
|
575
|
+
margin-top: var(--floating-py);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
.bb-common-input-inner-container__prefix,
|
|
579
|
+
.bb-common-input-inner-container__suffix {
|
|
580
|
+
align-items: flex-start;
|
|
581
|
+
padding-top: var(--floating-py);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
&__input-container {
|
|
586
|
+
display: inline-flex;
|
|
587
|
+
flex: 1;
|
|
588
|
+
flex-wrap: wrap;
|
|
589
|
+
gap: 0.25rem;
|
|
590
|
+
overflow: hidden;
|
|
591
|
+
padding-bottom: var(--bb-input-py);
|
|
592
|
+
padding-top: var(--bb-input-py);
|
|
593
|
+
width: 100%;
|
|
594
|
+
|
|
595
|
+
.bb-chipsbox-item {
|
|
596
|
+
position: relative;
|
|
597
|
+
z-index: 1;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.bb-base-tag__text-input {
|
|
601
|
+
flex-basis: 0px !important;
|
|
602
|
+
flex-grow: 1 !important;
|
|
603
|
+
flex-shrink: 10000 !important;
|
|
604
|
+
margin-bottom: 0px;
|
|
605
|
+
margin-top: 0px;
|
|
606
|
+
min-width: 0;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
&__selected {
|
|
611
|
+
max-width: 100%;
|
|
612
|
+
|
|
613
|
+
&--comma {
|
|
614
|
+
&.bb-base-tag__selected--focused {
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
&--chip {
|
|
619
|
+
&.bb-base-tag__selected--focused {
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
```
|