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,610 @@
|
|
|
1
|
+
# BaseDialog
|
|
2
|
+
|
|
3
|
+
## Template & Script
|
|
4
|
+
|
|
5
|
+
```vue
|
|
6
|
+
<template>
|
|
7
|
+
<dialog
|
|
8
|
+
ref="dialog"
|
|
9
|
+
:aria-describedby="
|
|
10
|
+
hasRenderedAtLeastOnce && description ? descriptionId : undefined
|
|
11
|
+
"
|
|
12
|
+
:aria-labelledby="
|
|
13
|
+
hasRenderedAtLeastOnce && title && !hideHeader ? titleId : undefined
|
|
14
|
+
"
|
|
15
|
+
:aria-live="model ? 'polite' : 'off'"
|
|
16
|
+
class="bb-base-dialog"
|
|
17
|
+
:class="
|
|
18
|
+
[
|
|
19
|
+
{
|
|
20
|
+
'bb-base-dialog--open': model,
|
|
21
|
+
'bb-base-dialog--fullscreen': isFullscreen,
|
|
22
|
+
'bb-base-dialog--compact': compact,
|
|
23
|
+
'bb-base-dialog--deny-close': denyClose,
|
|
24
|
+
},
|
|
25
|
+
overlayClasses,
|
|
26
|
+
panelClasses,
|
|
27
|
+
].flat()
|
|
28
|
+
"
|
|
29
|
+
:inert="!model"
|
|
30
|
+
:style="{
|
|
31
|
+
'--max-width': maxWidth,
|
|
32
|
+
'--transition-duration': `${props.transitionDuration}ms`,
|
|
33
|
+
}"
|
|
34
|
+
@cancel="cancelableClose"
|
|
35
|
+
@click.self="cancelableClose"
|
|
36
|
+
>
|
|
37
|
+
<template v-if="hasRenderedAtLeastOnce">
|
|
38
|
+
<div v-if="!hideHeader" ref="header" class="bb-base-dialog__header">
|
|
39
|
+
<slot :close="close" name="header" :title="title" :title-id="titleId">
|
|
40
|
+
<span :id="titleId" class="bb-base-dialog__title">
|
|
41
|
+
<slot name="title" :text="title">{{ title }}</slot>
|
|
42
|
+
</span>
|
|
43
|
+
<span class="bb-base-dialog__close">
|
|
44
|
+
<button
|
|
45
|
+
v-if="showClose"
|
|
46
|
+
:aria-label="closeLabel"
|
|
47
|
+
:disabled="props.disabled"
|
|
48
|
+
type="button"
|
|
49
|
+
@click="close"
|
|
50
|
+
>
|
|
51
|
+
<slot name="close">
|
|
52
|
+
<span class="bb-base-dialog__close-icon"
|
|
53
|
+
><svg
|
|
54
|
+
aria-hidden="true"
|
|
55
|
+
fill="none"
|
|
56
|
+
viewBox="0 0 24 24"
|
|
57
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
58
|
+
>
|
|
59
|
+
<path
|
|
60
|
+
d="M23 23L1 1M23 1L1 23"
|
|
61
|
+
stroke="currentColor"
|
|
62
|
+
stroke-linecap="round"
|
|
63
|
+
stroke-width="3"
|
|
64
|
+
/>
|
|
65
|
+
</svg>
|
|
66
|
+
</span>
|
|
67
|
+
</slot>
|
|
68
|
+
</button>
|
|
69
|
+
</span>
|
|
70
|
+
</slot>
|
|
71
|
+
</div>
|
|
72
|
+
<div ref="body" class="bb-base-dialog__body scrollbar-border">
|
|
73
|
+
<div class="bb-base-dialog__body-content">
|
|
74
|
+
<slot
|
|
75
|
+
:description-id="descriptionId"
|
|
76
|
+
name="description"
|
|
77
|
+
:text="description"
|
|
78
|
+
><div
|
|
79
|
+
v-if="description"
|
|
80
|
+
:id="descriptionId"
|
|
81
|
+
class="bb-base-dialog__description sr-only"
|
|
82
|
+
>
|
|
83
|
+
{{ description }}
|
|
84
|
+
</div>
|
|
85
|
+
</slot>
|
|
86
|
+
<slot :close="close" :title-id="titleId"></slot>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div ref="footer" class="bb-base-dialog__footer">
|
|
91
|
+
<slot name="footer"></slot>
|
|
92
|
+
</div>
|
|
93
|
+
</template>
|
|
94
|
+
</dialog>
|
|
95
|
+
</template>
|
|
96
|
+
|
|
97
|
+
<script setup lang="ts">
|
|
98
|
+
import { computed, nextTick, onMounted, ref, watch, type Ref } from 'vue';
|
|
99
|
+
import { parseSize } from '@/utilities/functions/parseSize';
|
|
100
|
+
import { useId } from '@/composables/useId';
|
|
101
|
+
import { useLocale } from '@/composables/useLocale';
|
|
102
|
+
import { useMobile } from '@/composables/useMobile';
|
|
103
|
+
import { useUntil } from '@/composables/useUntil';
|
|
104
|
+
import { wait } from '@/utilities/functions/wait';
|
|
105
|
+
import { _config } from '@/composables/useBbConfig';
|
|
106
|
+
import type {
|
|
107
|
+
BaseDialogProps,
|
|
108
|
+
BaseDialogEvents,
|
|
109
|
+
BaseDialogSlots,
|
|
110
|
+
} from './types';
|
|
111
|
+
|
|
112
|
+
const props = withDefaults(defineProps<BaseDialogProps>(), {
|
|
113
|
+
showClose: true,
|
|
114
|
+
size: 'sm',
|
|
115
|
+
panelClasses: () => [],
|
|
116
|
+
overlayClasses: () => [],
|
|
117
|
+
transitionDuration: 300,
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
const emit = defineEmits<BaseDialogEvents>();
|
|
121
|
+
|
|
122
|
+
defineSlots<BaseDialogSlots>();
|
|
123
|
+
|
|
124
|
+
const model = defineModel<boolean>({ default: false });
|
|
125
|
+
|
|
126
|
+
const { t } = useLocale();
|
|
127
|
+
const closeLabel = computed(
|
|
128
|
+
() => props.closeLabel || t('dialog.closeLabel').value
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
const dialog = ref<HTMLDialogElement | null>(null);
|
|
132
|
+
const hasRenderedAtLeastOnce: Ref<boolean> = useUntil(
|
|
133
|
+
() => model.value || props.eager,
|
|
134
|
+
{
|
|
135
|
+
initialValue: model.value || props.eager,
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
const titleId = `title_${useId().id.value}`;
|
|
140
|
+
const descriptionId = `description_${useId().id.value}`;
|
|
141
|
+
|
|
142
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
143
|
+
if (e.key !== 'Escape') return;
|
|
144
|
+
e.stopImmediatePropagation();
|
|
145
|
+
if (props.disabled || props.persistent) {
|
|
146
|
+
e.preventDefault();
|
|
147
|
+
denyClose.value = true;
|
|
148
|
+
wait(200).then(() => {
|
|
149
|
+
denyClose.value = false;
|
|
150
|
+
});
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const openedTimes = ref(0);
|
|
155
|
+
const toggleDialog = async (value: boolean) => {
|
|
156
|
+
if (value) {
|
|
157
|
+
emit('show');
|
|
158
|
+
openedTimes.value++;
|
|
159
|
+
// On first opening set variable for scrollbar width that is used to pad the body
|
|
160
|
+
if (
|
|
161
|
+
window.globalThis?.document &&
|
|
162
|
+
!document.documentElement.style.getPropertyValue('--scrollbar-width')
|
|
163
|
+
) {
|
|
164
|
+
document.documentElement.style.setProperty(
|
|
165
|
+
'--scrollbar-width',
|
|
166
|
+
`${getScrollBarWidth()}px`
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
document.addEventListener('keydown', handleKeyDown, { capture: true });
|
|
170
|
+
await nextTick();
|
|
171
|
+
dialog.value?.showModal();
|
|
172
|
+
if (props.focusTarget) {
|
|
173
|
+
const element = dialog.value?.querySelector(props.focusTarget!);
|
|
174
|
+
if (element && element instanceof HTMLElement) {
|
|
175
|
+
element.focus();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
emit('shown');
|
|
179
|
+
} else {
|
|
180
|
+
emit('hide');
|
|
181
|
+
const currentOpenedTimes = openedTimes.value;
|
|
182
|
+
await wait(props.transitionDuration);
|
|
183
|
+
// If the dialog was opened again during the transition, do not close it
|
|
184
|
+
if (currentOpenedTimes !== openedTimes.value) return;
|
|
185
|
+
if (window.globalThis?.document) {
|
|
186
|
+
document.removeEventListener('keydown', handleKeyDown, { capture: true });
|
|
187
|
+
}
|
|
188
|
+
dialog.value?.close();
|
|
189
|
+
emit('hidden');
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
watch(model, toggleDialog);
|
|
194
|
+
onMounted(() => {
|
|
195
|
+
if (model.value) toggleDialog(true);
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const maxWidth = computed(() => {
|
|
199
|
+
if (!isFullscreen.value) {
|
|
200
|
+
return parseSize(props.size, _config.dialogDefaultSizes);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return '100%';
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* This function is called when the user attempts to close the dialog.
|
|
208
|
+
* It differs from programmatically closing the dialog in that it allows for
|
|
209
|
+
* custom logic to be executed.
|
|
210
|
+
*/
|
|
211
|
+
const cancelableClose = (event: Event) => {
|
|
212
|
+
event.preventDefault();
|
|
213
|
+
// If the user forces closing just allow them
|
|
214
|
+
if (props.disabled || props.persistent) {
|
|
215
|
+
denyClose.value = true;
|
|
216
|
+
wait(300).then(() => {
|
|
217
|
+
denyClose.value = false;
|
|
218
|
+
});
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
close();
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const close = () => {
|
|
226
|
+
model.value = false;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const denyClose = ref(false);
|
|
230
|
+
|
|
231
|
+
const getScrollBarWidth = () => {
|
|
232
|
+
if (!globalThis.document) return 0;
|
|
233
|
+
return window.innerWidth - document.documentElement.clientWidth;
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
const { isMobile } = useMobile();
|
|
237
|
+
const isFullscreen = computed(
|
|
238
|
+
() =>
|
|
239
|
+
props.fullscreen === true ||
|
|
240
|
+
(props.fullscreen === 'mobile' && isMobile.value)
|
|
241
|
+
);
|
|
242
|
+
</script>
|
|
243
|
+
|
|
244
|
+
<style lang="postcss">
|
|
245
|
+
@import './index.css';
|
|
246
|
+
</style>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Types
|
|
250
|
+
|
|
251
|
+
```ts
|
|
252
|
+
import type { CommonProps, Size } from '@/types/CommonProps';
|
|
253
|
+
import type { Classes } from '@/types/Classes';
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Width presets (in pixels) used when the dialog `size` prop is set to one of the named breakpoints.
|
|
257
|
+
*/
|
|
258
|
+
export type Sizes = {
|
|
259
|
+
lg: number;
|
|
260
|
+
md: number;
|
|
261
|
+
sm: number;
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Props controlling the BaseDialog appearance, accessibility, and closing behaviour.
|
|
266
|
+
*/
|
|
267
|
+
export type BaseDialogProps = {
|
|
268
|
+
/**
|
|
269
|
+
* Accessible label for the close button. Defaults to the localized "close" string when omitted.
|
|
270
|
+
*/
|
|
271
|
+
closeLabel?: CommonProps['closeLabel'];
|
|
272
|
+
/**
|
|
273
|
+
* Apply compact spacing to the dialog container.
|
|
274
|
+
*/
|
|
275
|
+
compact?: CommonProps['compact'];
|
|
276
|
+
/**
|
|
277
|
+
* Short text describing the dialog contents. Provided text is linked to the dialog for screen readers.
|
|
278
|
+
*/
|
|
279
|
+
description?: string;
|
|
280
|
+
/**
|
|
281
|
+
* Disable user interactions that would close the dialog (buttons remain disabled while true).
|
|
282
|
+
*/
|
|
283
|
+
disabled?: CommonProps['disabled'];
|
|
284
|
+
/**
|
|
285
|
+
* Render dialog content immediately instead of waiting for the first open.
|
|
286
|
+
*/
|
|
287
|
+
eager?: CommonProps['eager'];
|
|
288
|
+
/**
|
|
289
|
+
* CSS selector of the element to focus after opening. Defaults to the first tabbable element.
|
|
290
|
+
*/
|
|
291
|
+
focusTarget?: string;
|
|
292
|
+
/**
|
|
293
|
+
* Display the dialog fullscreen. Use `'mobile'` to restrict fullscreen to small devices.
|
|
294
|
+
*/
|
|
295
|
+
fullscreen?: boolean | 'mobile';
|
|
296
|
+
/**
|
|
297
|
+
* Hide the header of the dialog.
|
|
298
|
+
* Remember to restore accessibility by passing a new `aria-labelledby` attribute to the dialog.
|
|
299
|
+
*/
|
|
300
|
+
hideHeader?: boolean;
|
|
301
|
+
/**
|
|
302
|
+
* Additional classes applied to the dialog overlay.
|
|
303
|
+
* @deprecated Pass a regular `class` attribute to the component instead.
|
|
304
|
+
* @defaultValue `[]`
|
|
305
|
+
*/
|
|
306
|
+
overlayClasses?: Classes;
|
|
307
|
+
/**
|
|
308
|
+
* Additional classes applied to the dialog panel.
|
|
309
|
+
* @deprecated Pass a regular `class` attribute to the component instead.
|
|
310
|
+
* @defaultValue `[]`
|
|
311
|
+
*/
|
|
312
|
+
panelClasses?: Classes;
|
|
313
|
+
/**
|
|
314
|
+
* Prevent closing via outside clicks or Escape key. Programmatic close is still allowed.
|
|
315
|
+
*/
|
|
316
|
+
persistent?: CommonProps['persistent'];
|
|
317
|
+
/**
|
|
318
|
+
* Toggle visibility of the default close button in the header.
|
|
319
|
+
* @defaultValue `true`
|
|
320
|
+
*/
|
|
321
|
+
showClose?: CommonProps['showClose'];
|
|
322
|
+
/**
|
|
323
|
+
* Controls the maximum width of the dialog. Accepts the named presets `'sm' | 'md' | 'lg'`,
|
|
324
|
+
* a custom CSS width string, or a numeric pixel value.
|
|
325
|
+
* @defaultValue `'sm'`
|
|
326
|
+
*/
|
|
327
|
+
size?: Size<Sizes>['size'];
|
|
328
|
+
/**
|
|
329
|
+
* Title text announced to assistive technologies and rendered by the default header slot.
|
|
330
|
+
*/
|
|
331
|
+
title?: CommonProps['title'];
|
|
332
|
+
/**
|
|
333
|
+
* Duration, in milliseconds, of the open/close transition.
|
|
334
|
+
* @defaultValue `300`
|
|
335
|
+
*/
|
|
336
|
+
transitionDuration?: CommonProps['transitionDuration'];
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
export type BaseDialogEvents = {
|
|
340
|
+
/**
|
|
341
|
+
* Emitted as soon as the dialog starts to open (model becomes true).
|
|
342
|
+
*/
|
|
343
|
+
(e: 'show'): void;
|
|
344
|
+
/**
|
|
345
|
+
* Emitted as soon as the dialog starts to close (model becomes false).
|
|
346
|
+
*/
|
|
347
|
+
(e: 'hide'): void;
|
|
348
|
+
/**
|
|
349
|
+
* Emitted after the dialog is fully opened via `showModal()`.
|
|
350
|
+
*/
|
|
351
|
+
(e: 'shown'): void;
|
|
352
|
+
/**
|
|
353
|
+
* Emitted after the close transition completes and the dialog is fully dismissed.
|
|
354
|
+
*/
|
|
355
|
+
(e: 'hidden'): void;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Props exposed by the `default` slot.
|
|
360
|
+
*/
|
|
361
|
+
export type BaseDialogDefaultSlotProps = {
|
|
362
|
+
/**
|
|
363
|
+
* Programmatically closes the dialog.
|
|
364
|
+
*/
|
|
365
|
+
close: () => void;
|
|
366
|
+
/**
|
|
367
|
+
* The `id` of the title element; useful for custom `aria-labelledby` wiring.
|
|
368
|
+
*/
|
|
369
|
+
titleId: string;
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Props exposed by the `description` slot.
|
|
374
|
+
*/
|
|
375
|
+
export type BaseDialogDescriptionSlotProps = {
|
|
376
|
+
/**
|
|
377
|
+
* The `id` to assign to your custom description element for `aria-describedby` wiring.
|
|
378
|
+
*/
|
|
379
|
+
descriptionId: string;
|
|
380
|
+
/**
|
|
381
|
+
* The `description` prop value.
|
|
382
|
+
*/
|
|
383
|
+
text: BaseDialogProps['description'];
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Props exposed by the `header` slot.
|
|
388
|
+
*/
|
|
389
|
+
export type BaseDialogHeaderSlotProps = {
|
|
390
|
+
/**
|
|
391
|
+
* The `id` to assign to your custom title element, wired to the dialog's `aria-labelledby`.
|
|
392
|
+
*/
|
|
393
|
+
titleId: string;
|
|
394
|
+
/**
|
|
395
|
+
* Programmatically closes the dialog.
|
|
396
|
+
*/
|
|
397
|
+
close: () => void;
|
|
398
|
+
/**
|
|
399
|
+
* The `title` prop value.
|
|
400
|
+
*/
|
|
401
|
+
title: BaseDialogProps['title'];
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Props exposed by the `title` slot.
|
|
406
|
+
*/
|
|
407
|
+
export type BaseDialogTitleSlotProps = {
|
|
408
|
+
/**
|
|
409
|
+
* The `title` prop value.
|
|
410
|
+
*/
|
|
411
|
+
text: BaseDialogProps['title'];
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
export type BaseDialogSlots = {
|
|
415
|
+
/**
|
|
416
|
+
* Replaces the default close icon rendered inside the header's close button.
|
|
417
|
+
*/
|
|
418
|
+
close?: (props: object) => any;
|
|
419
|
+
/**
|
|
420
|
+
* Primary body content of the dialog, rendered in the scrollable body area.
|
|
421
|
+
*/
|
|
422
|
+
default?: (props: BaseDialogDefaultSlotProps) => any;
|
|
423
|
+
/**
|
|
424
|
+
* Replaces the default accessible description block. The provided content is linked to the dialog via `aria-describedby`.
|
|
425
|
+
*/
|
|
426
|
+
description?: (props: BaseDialogDescriptionSlotProps) => any;
|
|
427
|
+
/**
|
|
428
|
+
* Content rendered in the dialog footer, below the body area. Typically used for action buttons.
|
|
429
|
+
*/
|
|
430
|
+
footer?: (props: object) => any;
|
|
431
|
+
/**
|
|
432
|
+
* Replaces the entire dialog header section (title + close button). Maintains accessibility wiring via the provided props.
|
|
433
|
+
*/
|
|
434
|
+
header?: (props: BaseDialogHeaderSlotProps) => any;
|
|
435
|
+
/**
|
|
436
|
+
* Replaces the default title text inside the header. Remains linked to the dialog through `aria-labelledby`.
|
|
437
|
+
*/
|
|
438
|
+
title?: (props: BaseDialogTitleSlotProps) => any;
|
|
439
|
+
};
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
## Styles
|
|
443
|
+
|
|
444
|
+
```css
|
|
445
|
+
.bb-base-dialog {
|
|
446
|
+
--page-padding: 14px;
|
|
447
|
+
--transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
448
|
+
position: fixed;
|
|
449
|
+
|
|
450
|
+
max-width: min(var(--max-width), 100% - var(--page-padding) * 2);
|
|
451
|
+
max-height: calc(100% - var(--page-padding) * 2);
|
|
452
|
+
transition:
|
|
453
|
+
display var(--transition-duration) var(--transition-duration)
|
|
454
|
+
var(--transition-timing-function),
|
|
455
|
+
max-width var(--transition-duration) var(--transition-timing-function),
|
|
456
|
+
height var(--transition-duration) var(--transition-timing-function),
|
|
457
|
+
opacity var(--transition-duration) var(--transition-timing-function),
|
|
458
|
+
scale var(--transition-duration) var(--transition-timing-function);
|
|
459
|
+
background-color: var(--bb-panel);
|
|
460
|
+
border-radius: var(--bb-radius);
|
|
461
|
+
color: var(--bb-text);
|
|
462
|
+
display: flex;
|
|
463
|
+
flex-direction: column;
|
|
464
|
+
opacity: 0;
|
|
465
|
+
scale: 0.8;
|
|
466
|
+
z-index: var(--bb-overlay-z-index);
|
|
467
|
+
overscroll-behavior: contain;
|
|
468
|
+
width: 100%;
|
|
469
|
+
overflow: hidden;
|
|
470
|
+
outline: none;
|
|
471
|
+
transition-behavior: allow-discrete;
|
|
472
|
+
top: 50%;
|
|
473
|
+
left: 50%;
|
|
474
|
+
transform: translate(-50%, -50%);
|
|
475
|
+
transform-origin: center left;
|
|
476
|
+
margin: 0 0;
|
|
477
|
+
|
|
478
|
+
&.bb-base-dialog--fullscreen {
|
|
479
|
+
max-width: 100%;
|
|
480
|
+
max-height: 100%;
|
|
481
|
+
border-radius: 0;
|
|
482
|
+
width: 100%;
|
|
483
|
+
height: 100%;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
&.bb-base-dialog--compact {
|
|
487
|
+
.bb-base-dialog__header {
|
|
488
|
+
border-bottom: none;
|
|
489
|
+
}
|
|
490
|
+
.bb-base-dialog__body {
|
|
491
|
+
padding-top: 0;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
&.bb-base-dialog--open {
|
|
496
|
+
opacity: 1;
|
|
497
|
+
scale: 1;
|
|
498
|
+
|
|
499
|
+
@starting-style {
|
|
500
|
+
opacity: 0;
|
|
501
|
+
scale: 0.8;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
&::backdrop {
|
|
505
|
+
opacity: 1;
|
|
506
|
+
|
|
507
|
+
@starting-style {
|
|
508
|
+
opacity: 0;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
&:has(dialog::backdrop) {
|
|
513
|
+
scale: initial;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
&.bb-base-dialog--deny-close {
|
|
518
|
+
scale: 0.9;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
&:has(.bb-base-dialog.bb-base-dialog--open),
|
|
522
|
+
&:has(.bb-offcanvas.bb-offcanvas--open) {
|
|
523
|
+
opacity: 0;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
&::backdrop {
|
|
527
|
+
background-color: color-mix(
|
|
528
|
+
in srgb,
|
|
529
|
+
var(--bb-overlay-color) calc(var(--bb-overlay-opacity) * 100%),
|
|
530
|
+
transparent
|
|
531
|
+
);
|
|
532
|
+
opacity: 0;
|
|
533
|
+
transition: opacity var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.bb-base-dialog__header {
|
|
537
|
+
align-items: center;
|
|
538
|
+
border-bottom: 1px solid var(--bb-border);
|
|
539
|
+
column-gap: 12px;
|
|
540
|
+
display: flex;
|
|
541
|
+
justify-content: space-between;
|
|
542
|
+
padding: var(--bb-dialog-py) var(--bb-dialog-px);
|
|
543
|
+
flex-shrink: 0;
|
|
544
|
+
|
|
545
|
+
.bb-base-dialog__title {
|
|
546
|
+
font-size: var(--bb-dialog-title-size);
|
|
547
|
+
font-weight: var(--bb-dialog-title-weight);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.bb-base-dialog__close {
|
|
551
|
+
transition: color var(--transition-duration);
|
|
552
|
+
&:hover {
|
|
553
|
+
color: var(--bb-primary);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
button {
|
|
557
|
+
border-radius: var(--bb-radius);
|
|
558
|
+
box-shadow: 0px 0px 0px 0px var(--bb-ring);
|
|
559
|
+
display: flex;
|
|
560
|
+
margin-right: -8px;
|
|
561
|
+
outline: 2px solid transparent;
|
|
562
|
+
outline-offset: 2px;
|
|
563
|
+
outline-style: none;
|
|
564
|
+
padding: 8px;
|
|
565
|
+
transition: box-shadow 0.2s;
|
|
566
|
+
|
|
567
|
+
&:focus-visible {
|
|
568
|
+
box-shadow: 0px 0px 0px var(--bb-ring-size) var(--bb-ring);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
.bb-base-dialog__close-icon {
|
|
573
|
+
display: inline-flex;
|
|
574
|
+
svg {
|
|
575
|
+
width: var(--bb-dialog-close);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
.bb-base-dialog__body {
|
|
582
|
+
overflow: auto;
|
|
583
|
+
position: relative;
|
|
584
|
+
flex: 1 1 auto;
|
|
585
|
+
|
|
586
|
+
.bb-base-dialog__body-content {
|
|
587
|
+
padding: var(--bb-dialog-py) var(--bb-dialog-px);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
/* Hide any nested dialogs that are not open so that scale transition works without affecting fixed positioning */
|
|
591
|
+
.bb-base-dialog:not(.bb-base-dialog--open) {
|
|
592
|
+
display: none;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.bb-base-dialog__footer {
|
|
597
|
+
padding: var(--bb-dialog-py) var(--bb-dialog-px);
|
|
598
|
+
pointer-events: auto;
|
|
599
|
+
|
|
600
|
+
&:empty {
|
|
601
|
+
display: none;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
body:has(.bb-base-dialog--open) {
|
|
607
|
+
overflow: hidden;
|
|
608
|
+
padding-right: var(--scrollbar-width);
|
|
609
|
+
}
|
|
610
|
+
```
|