bitboss-ui 3.0.0-beta.63 → 3.0.0-beta.65
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/README.md +25 -20
- package/bin/bitboss-ui.mjs +73 -7
- package/dist/ai/BbAlert.md +10 -1
- package/dist/ai/BbBadge.md +35 -3
- package/dist/ai/BbBadgeButton.md +4 -2
- package/dist/ai/BbBaseButton.md +9 -3
- package/dist/ai/BbBreadcrumbs.md +2 -2
- package/dist/ai/BbButton.md +113 -8
- package/dist/ai/BbCheckbox.md +1 -1
- package/dist/ai/BbCheckboxGroup.md +94 -6
- package/dist/ai/BbColorInput.md +4 -1
- package/dist/ai/BbColorPalette.md +2 -1
- package/dist/ai/BbConfirm.md +7 -3
- package/dist/ai/BbDatePicker.md +2 -1
- package/dist/ai/BbDatePickerInput.md +4 -1
- package/dist/ai/BbDialog.md +12 -11
- package/dist/ai/BbDropdown.md +189 -38
- package/dist/ai/BbDropdownButton.md +27 -7
- package/dist/ai/BbForm.md +55 -22
- package/dist/ai/BbHost.md +2 -2
- package/dist/ai/BbHoverCard.md +7 -3
- package/dist/ai/BbIcon.md +12 -6
- package/dist/ai/BbIndicator.md +11 -1
- package/dist/ai/BbNumberInput.md +4 -1
- package/dist/ai/BbOffCanvas.md +37 -3
- package/dist/ai/BbPopover.md +2 -1
- package/dist/ai/BbRadio.md +1 -1
- package/dist/ai/BbRadioGroup.md +102 -10
- package/dist/ai/BbSelect.md +52 -17
- package/dist/ai/BbSelectPopover.md +93 -26
- package/dist/ai/BbSwitch.md +1 -1
- package/dist/ai/BbSwitchGroup.md +30 -3
- package/dist/ai/BbTable.md +17 -10
- package/dist/ai/BbTabs.md +8 -3
- package/dist/ai/BbTabsList.md +4 -1
- package/dist/ai/BbTag.md +5 -2
- package/dist/ai/BbTextInput.md +4 -1
- package/dist/ai/BbTextarea.md +4 -1
- package/dist/ai/BbTimePicker.md +2 -1
- package/dist/ai/BbTimePickerInput.md +4 -1
- package/dist/ai/BbToast.md +9 -3
- package/dist/ai/BbTooltip.md +71 -9
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonField.md +1 -1
- package/dist/ai/OptionsContainer.md +42 -0
- package/dist/ai/changelog.json +494 -6
- package/dist/ai/components.json +50 -48
- package/dist/ai/composables/useBbConfig.md +8 -1
- package/dist/ai/composables/useConfirm.md +39 -1
- package/dist/ai/design-tokens.json +6 -6
- package/dist/ai/guides/agent-contract.md +2 -2
- package/dist/ai/guides/ai-router.md +24 -23
- package/dist/ai/guides/app-layout.md +5 -0
- package/dist/ai/guides/component-picker.md +9 -2
- package/dist/ai/guides/design-language.md +24 -24
- package/dist/ai/guides/design-tokens.md +15 -8
- package/dist/ai/guides/icons-policy.md +9 -2
- package/dist/ai/guides/inertia-helpers.md +1183 -301
- package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
- package/dist/ai/guides/migration/adoption-checklist.md +235 -0
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
- package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
- package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
- package/dist/ai/guides/migration/components/bb-popover.md +4 -2
- package/dist/ai/guides/migration/components/bb-select.md +19 -0
- package/dist/ai/guides/migration/components/bb-table.md +1 -0
- package/dist/ai/guides/migration/components/bb-toast.md +4 -0
- package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
- package/dist/ai/guides/migration/components/use-confirm.md +25 -2
- package/dist/ai/guides/migration/v2-to-v3.md +211 -9
- package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
- package/dist/ai/guides/options-items-playbook.md +2 -1
- package/dist/ai/guides/passthrough.md +149 -85
- package/dist/ai/guides/preset-components.md +140 -15
- package/dist/ai/helpers/definePreset.json +7 -0
- package/dist/ai/helpers/definePreset.ts +123 -11
- package/dist/ai/helpers/inertia/manifest.json +151 -62
- package/dist/ai/helpers/inertia/messages.ts +33 -0
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +120 -20
- package/dist/ai/helpers/inertia/useHasChanged.ts +34 -16
- package/dist/ai/helpers/inertia/useLazyProp.ts +102 -36
- package/dist/ai/helpers/inertia/useLazyPropGetter.ts +3 -1
- package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +154 -34
- package/dist/ai/helpers/inertia/usePromiseForm.ts +121 -14
- package/dist/ai/helpers/inertia/useQuery.ts +133 -11
- package/dist/ai/helpers/inertia/useQueryObject.ts +74 -67
- package/dist/ai/helpers/inertia/useResourceContext.ts +60 -14
- package/dist/ai/helpers/inertia/useRouteQuery.ts +38 -27
- package/dist/ai/helpers/inertia/useScreenSizes.ts +9 -7
- package/dist/ai/helpers/inertia/useTableContext.ts +5 -2
- package/dist/ai/helpers/inertia/utils.ts +14 -0
- package/dist/ai/index.md +1 -0
- package/dist/ai/manifest/common.json +0 -1
- package/dist/ai/manifest/components/BbAlert.json +7 -2
- package/dist/ai/manifest/components/BbBadge.json +13 -4
- package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
- package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
- package/dist/ai/manifest/components/BbBaseButton.json +4 -2
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +14 -3
- package/dist/ai/manifest/components/BbButton.tree.json +5 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
- package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
- package/dist/ai/manifest/components/BbColorInput.json +18 -15
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbConfirm.json +4 -2
- package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
- package/dist/ai/manifest/components/BbDatePicker.json +1 -1
- package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
- package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
- package/dist/ai/manifest/components/BbDropdown.json +24 -19
- package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
- package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
- package/dist/ai/manifest/components/BbForm.json +2 -2
- package/dist/ai/manifest/components/BbHost.tree.json +1 -1
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbIndicator.json +8 -2
- package/dist/ai/manifest/components/BbNumberInput.json +5 -2
- package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
- package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
- package/dist/ai/manifest/components/BbPopover.json +1 -1
- package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
- package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
- package/dist/ai/manifest/components/BbSelect.json +21 -18
- package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
- package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
- package/dist/ai/manifest/components/BbTable.tree.json +14 -1
- package/dist/ai/manifest/components/BbTabs.json +9 -6
- package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
- package/dist/ai/manifest/components/BbTabsList.json +6 -3
- package/dist/ai/manifest/components/BbTag.json +19 -16
- package/dist/ai/manifest/components/BbTag.tree.json +1 -1
- package/dist/ai/manifest/components/BbTextInput.json +6 -3
- package/dist/ai/manifest/components/BbTextarea.json +6 -3
- package/dist/ai/manifest/components/BbTimePicker.json +1 -1
- package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
- package/dist/ai/manifest/components/BbToast.json +7 -2
- package/dist/ai/manifest/components/BbToast.tree.json +4 -2
- package/dist/ai/manifest/components/BbTooltip.json +6 -5
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonField.json +1 -1
- package/dist/ai/manifest/components/OptionsContainer.json +3 -1
- package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
- package/dist/ai/manifest/index.json +3 -3
- package/dist/ai/manifest/meta.json +5 -3
- package/dist/ai/manifest/types.advanced.json +5 -2
- package/dist/ai/manifest/types.api.json +9 -7
- package/dist/ai/recipes/inertia/approvals-inbox.md +1 -1
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +1 -1
- package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
- package/dist/ai/recipes/inertia/ownership-atlas.md +1 -1
- package/dist/ai/recipes/inertia/records-workspace.md +50 -14
- package/dist/ai/recipes/inertia/upload-center.md +1 -1
- package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
- package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
- package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
- package/dist/ai/recipes/vue/records-workspace.md +42 -12
- package/dist/ai/source/BbAlert.md +94 -76
- package/dist/ai/source/BbBadge.md +174 -72
- package/dist/ai/source/BbBadgeButton.md +130 -65
- package/dist/ai/source/BbBaseButton.md +46 -124
- package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
- package/dist/ai/source/BbBaseRadioIcon.md +18 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
- package/dist/ai/source/BbButton.md +153 -36
- package/dist/ai/source/BbCheckboxGroup.md +142 -18
- package/dist/ai/source/BbColorInput.md +240 -204
- package/dist/ai/source/BbColorPalette.md +7 -4
- package/dist/ai/source/BbConfirm.md +34 -11
- package/dist/ai/source/BbConfirmPortal.md +24 -9
- package/dist/ai/source/BbDatePicker.md +11 -7
- package/dist/ai/source/BbDatePickerInput.md +306 -269
- package/dist/ai/source/BbDialog.md +49 -14
- package/dist/ai/source/BbDropdown.md +314 -197
- package/dist/ai/source/BbDropdownButton.md +197 -31
- package/dist/ai/source/BbDropdownGroup.md +274 -176
- package/dist/ai/source/BbForm.md +50 -6
- package/dist/ai/source/BbHoverCard.md +12 -5
- package/dist/ai/source/BbIcon.md +4 -3
- package/dist/ai/source/BbIndicator.md +73 -52
- package/dist/ai/source/BbNumberInput.md +293 -257
- package/dist/ai/source/BbOffCanvas.md +55 -29
- package/dist/ai/source/BbPopover.md +14 -10
- package/dist/ai/source/BbRadioGroup.md +413 -297
- package/dist/ai/source/BbSelect.md +549 -435
- package/dist/ai/source/BbSelectPopover.md +153 -34
- package/dist/ai/source/BbSwitchGroup.md +70 -10
- package/dist/ai/source/BbTable.md +369 -37
- package/dist/ai/source/BbTabs.md +115 -39
- package/dist/ai/source/BbTabsList.md +106 -38
- package/dist/ai/source/BbTabsPanels.md +96 -36
- package/dist/ai/source/BbTabsRoot.md +96 -36
- package/dist/ai/source/BbTag.md +267 -233
- package/dist/ai/source/BbTextInput.md +261 -225
- package/dist/ai/source/BbTextarea.md +251 -215
- package/dist/ai/source/BbTimePicker.md +11 -7
- package/dist/ai/source/BbTimePickerInput.md +257 -220
- package/dist/ai/source/BbToast.md +73 -32
- package/dist/ai/source/BbToastPortal.md +65 -30
- package/dist/ai/source/BbTooltip.md +148 -113
- package/dist/ai/source/CommonPopover.md +6 -1
- package/dist/ai/source/FlatListBox.md +19 -9
- package/dist/ai/source/GroupedListBox.md +19 -9
- package/dist/ai/source/OptionsContainer.md +25 -9
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
- package/dist/components/BbAlert/types.d.ts +9 -5
- package/dist/components/BbAlert/types.js +8 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
- package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
- package/dist/components/BbBadge/types.d.ts +45 -15
- package/dist/components/BbBadge/types.js +12 -3
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
- package/dist/components/BbBaseButton/types.d.ts +23 -4
- package/dist/components/BbBaseButton/types.js +7 -1
- package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
- package/dist/components/BbBaseButton/useLinkState.js +70 -0
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
- package/dist/components/BbButton/types.d.ts +50 -13
- package/dist/components/BbButton/types.js +10 -3
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
- package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
- package/dist/components/BbCheckboxGroup/types.js +9 -4
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
- package/dist/components/BbColorInput/types.d.ts +11 -4
- package/dist/components/BbColorInput/types.js +9 -3
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
- package/dist/components/BbConfirm/types.d.ts +9 -4
- package/dist/components/BbConfirm/types.js +8 -3
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
- package/dist/components/BbDatePickerInput/types.d.ts +12 -5
- package/dist/components/BbDatePickerInput/types.js +9 -3
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
- package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
- package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
- package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
- package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
- package/dist/components/BbDropdown/normalizeGroups.js +21 -15
- package/dist/components/BbDropdown/types.d.ts +59 -12
- package/dist/components/BbDropdown/types.js +16 -3
- package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
- package/dist/components/BbDropdownButton/types.d.ts +44 -16
- package/dist/components/BbDropdownButton/types.js +28 -3
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
- package/dist/components/BbForm/formSchema.d.ts +13 -0
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
- package/dist/components/BbIndicator/types.d.ts +9 -5
- package/dist/components/BbIndicator/types.js +8 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
- package/dist/components/BbNumberInput/types.d.ts +12 -5
- package/dist/components/BbNumberInput/types.js +9 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
- package/dist/components/BbOffCanvas/types.d.ts +6 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
- package/dist/components/BbRadioGroup/types.d.ts +21 -7
- package/dist/components/BbRadioGroup/types.js +9 -4
- package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
- package/dist/components/BbSelect/types.d.ts +36 -22
- package/dist/components/BbSelect/types.js +22 -3
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +600 -577
- package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
- package/dist/components/BbSelectPopover/types.d.ts +46 -12
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbSwitchGroup/types.d.ts +14 -4
- package/dist/components/BbSwitchGroup/types.js +8 -3
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
- package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
- package/dist/components/BbTable/measuredFloors.d.ts +46 -0
- package/dist/components/BbTable/measuredFloors.js +322 -0
- package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
- package/dist/components/BbTable/textRuler.d.ts +71 -0
- package/dist/components/BbTable/textRuler.js +121 -0
- package/dist/components/BbTable/utils.d.ts +113 -6
- package/dist/components/BbTable/utils.js +118 -65
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
- package/dist/components/BbTabs/types.d.ts +26 -11
- package/dist/components/BbTabs/types.js +23 -8
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
- package/dist/components/BbTag/types.d.ts +11 -4
- package/dist/components/BbTag/types.js +9 -3
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
- package/dist/components/BbTextInput/types.d.ts +12 -5
- package/dist/components/BbTextInput/types.js +9 -3
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
- package/dist/components/BbTextarea/types.d.ts +12 -5
- package/dist/components/BbTextarea/types.js +9 -3
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
- package/dist/components/BbTimePickerInput/types.d.ts +12 -5
- package/dist/components/BbTimePickerInput/types.js +9 -3
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
- package/dist/components/BbToast/types.d.ts +10 -5
- package/dist/components/BbToast/types.js +18 -3
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
- package/dist/components/BbTooltip/types.d.ts +13 -8
- package/dist/components/BbTooltip/types.js +8 -3
- package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/OptionsContainer/types.d.ts +14 -3
- package/dist/composables/useBbConfig.d.ts +1 -0
- package/dist/composables/useBbConfig.js +11 -7
- package/dist/composables/useBbFormContext.d.ts +4 -3
- package/dist/composables/useBbTabsContext.js +99 -85
- package/dist/composables/useChoiceIndicator.d.ts +58 -0
- package/dist/composables/useChoiceIndicator.js +197 -0
- package/dist/composables/useConfirm.d.ts +4 -4
- package/dist/composables/usePassthrough.d.ts +54 -1
- package/dist/composables/usePassthrough.js +100 -71
- package/dist/directives/bbTooltip.d.ts +12 -6
- package/dist/directives/createPopoverDirective.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/llms-full.txt +3467 -801
- package/dist/llms-medium.txt +71 -53
- package/dist/llms.txt +2 -1
- package/dist/passthrough-deduper.js +6 -3
- package/dist/project-dts.d.ts +24 -0
- package/dist/project-dts.js +43 -17
- package/dist/styles.css +2 -2
- package/dist/types/AlertVariant.d.ts +14 -0
- package/dist/types/AlertVariant.js +9 -0
- package/dist/types/BadgeVariant.d.ts +14 -0
- package/dist/types/BadgeVariant.js +9 -0
- package/dist/types/ButtonVariant.d.ts +16 -0
- package/dist/types/ButtonVariant.js +11 -0
- package/dist/types/CheckboxVariant.d.ts +38 -0
- package/dist/types/CheckboxVariant.js +4 -0
- package/dist/types/CommonProps.d.ts +4 -3
- package/dist/types/Config.d.ts +7 -0
- package/dist/types/ConfirmVariant.d.ts +12 -0
- package/dist/types/ConfirmVariant.js +4 -0
- package/dist/types/DropdownItemVariant.d.ts +12 -0
- package/dist/types/DropdownItemVariant.js +4 -0
- package/dist/types/IndicatorVariant.d.ts +15 -0
- package/dist/types/IndicatorVariant.js +10 -0
- package/dist/types/InputVariant.d.ts +13 -0
- package/dist/types/InputVariant.js +8 -0
- package/dist/types/RadioVariant.d.ts +38 -0
- package/dist/types/RadioVariant.js +4 -0
- package/dist/types/TabsVariant.d.ts +13 -0
- package/dist/types/TabsVariant.js +8 -0
- package/dist/types/ToastVariant.d.ts +15 -0
- package/dist/types/ToastVariant.js +10 -0
- package/dist/types/TooltipVariant.d.ts +12 -0
- package/dist/types/TooltipVariant.js +4 -0
- package/dist/types/passthrough.d.ts +83 -15
- package/dist/types/passthrough.js +2 -2
- package/dist/types/ptComponentMap.d.ts +35 -23
- package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
- package/dist/utilities/functions/extractDomContainer.js +8 -3
- package/dist/utils/focusVisibility.d.ts +6 -0
- package/dist/utils/focusVisibility.js +4 -1
- package/dist/utils/passthroughDeduper.d.ts +14 -0
- package/dist/utils/versionCheck.js +1 -1
- package/dist/vite-plugin.d.ts +64 -7
- package/dist/vite.js +385 -259
- package/llms.txt +2 -1
- package/package.json +5 -4
- package/scripts/lib/adoption-checklist.json +312 -0
- package/scripts/lib/eslint-plugin.d.ts +13 -0
- package/scripts/lib/eslint-plugin.mjs +75 -11
- package/scripts/lib/helpers-add.mjs +26 -2
- package/scripts/lib/idiom-scan.mjs +65 -0
- package/scripts/lib/mcp-config.mjs +203 -9
- package/scripts/lib/migrate-fix.mjs +42 -1
- package/scripts/lib/project-variant-dts.mjs +18 -0
- package/scripts/lib/validate-bb-markup.mjs +99 -2
|
@@ -141,6 +141,7 @@ import {
|
|
|
141
141
|
formControlPtActive,
|
|
142
142
|
TEXT_CONTROL_NATIVE_ATTRS,
|
|
143
143
|
usePassthrough,
|
|
144
|
+
variantPt,
|
|
144
145
|
} from '@/composables/usePassthrough';
|
|
145
146
|
import { isNotEmpty } from '@/utilities/functions/isNotEmpty';
|
|
146
147
|
import {
|
|
@@ -150,7 +151,11 @@ import {
|
|
|
150
151
|
type BbTextareaSlots,
|
|
151
152
|
} from './types';
|
|
152
153
|
|
|
153
|
-
defineOptions({
|
|
154
|
+
defineOptions({
|
|
155
|
+
// An app's own variants as declared `pt:<part>:<name>` props (Q76.7).
|
|
156
|
+
mixins: [variantPt(BB_TEXTAREA_PT)],
|
|
157
|
+
inheritAttrs: false,
|
|
158
|
+
});
|
|
154
159
|
const declaredProps = defineProps<BbTextareaProps<E>>();
|
|
155
160
|
|
|
156
161
|
const declaredEmit = defineEmits<BbTextareaEvents<E>>();
|
|
@@ -222,6 +227,11 @@ const passthrough = usePassthrough({
|
|
|
222
227
|
nearLimit: () => characterCounter.value?.state === 'near',
|
|
223
228
|
atLimit: () => characterCounter.value?.state === 'limit',
|
|
224
229
|
},
|
|
230
|
+
variant: {
|
|
231
|
+
...BB_TEXTAREA_PT.variant,
|
|
232
|
+
// CommonFieldInput's default.
|
|
233
|
+
current: () => props.variant ?? 'outline',
|
|
234
|
+
},
|
|
225
235
|
});
|
|
226
236
|
|
|
227
237
|
// `rows` + `auto-grow` are compatible: `rows` seeds the starting/minimum height
|
|
@@ -394,7 +404,12 @@ function resetTextareaHeight() {
|
|
|
394
404
|
|
|
395
405
|
```ts
|
|
396
406
|
import type { Responsive } from '@/types/ResponsiveSize';
|
|
397
|
-
import
|
|
407
|
+
import {
|
|
408
|
+
INPUT_VARIANTS,
|
|
409
|
+
type InputVariantBuiltIn,
|
|
410
|
+
type InputVariantRegistry,
|
|
411
|
+
type InputVariantType,
|
|
412
|
+
} from '@/types/InputVariant';
|
|
398
413
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
399
414
|
import type { FieldCrossAlign, FieldLayout } from '@/types/FieldLayout';
|
|
400
415
|
import type { IconType } from '@/types/Icon';
|
|
@@ -408,6 +423,7 @@ import {
|
|
|
408
423
|
type PtMap,
|
|
409
424
|
type PtValue,
|
|
410
425
|
type TextControlPtPart,
|
|
426
|
+
type PtVariantAttrs,
|
|
411
427
|
} from '@/types/passthrough';
|
|
412
428
|
import type { FormFieldProps } from '@/composables/useFormBinding';
|
|
413
429
|
import type {
|
|
@@ -438,7 +454,19 @@ export const BB_TEXTAREA_PT = {
|
|
|
438
454
|
...COUNTER_PT_STATES,
|
|
439
455
|
...FORM_CONTROL_PT_STATES.slice(1),
|
|
440
456
|
],
|
|
457
|
+
// The input `variant` is a state on the field's parts (Q76.7), below
|
|
458
|
+
// the real states; a picker's panel and rows are not the field's.
|
|
459
|
+
variant: {
|
|
460
|
+
names: INPUT_VARIANTS,
|
|
461
|
+
option: 'inputVariants',
|
|
462
|
+
parts: TEXT_CONTROL_PT_PARTS,
|
|
463
|
+
},
|
|
441
464
|
} as const satisfies {
|
|
465
|
+
variant: {
|
|
466
|
+
names: readonly InputVariantBuiltIn[];
|
|
467
|
+
option: string;
|
|
468
|
+
parts: readonly TextControlPtPart[];
|
|
469
|
+
};
|
|
442
470
|
parts: readonly BbTextareaPtPart[];
|
|
443
471
|
states: readonly BbTextareaPtState[];
|
|
444
472
|
};
|
|
@@ -454,219 +482,227 @@ type AppPolicy = RegisteredNullValue<'BbTextarea'>;
|
|
|
454
482
|
export type BbTextareaProps<E extends NullValuePolicy = AppPolicy> = {
|
|
455
483
|
[K in
|
|
456
484
|
| `pt:${BbTextareaPtPart}`
|
|
457
|
-
| `pt:${BbTextareaPtPart}:${BbTextareaPtState}`
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
485
|
+
| `pt:${BbTextareaPtPart}:${BbTextareaPtState}`
|
|
486
|
+
| `pt:${TextControlPtPart}:${InputVariantBuiltIn}`]?: PtValue;
|
|
487
|
+
} & /* @vue-ignore */ PtVariantAttrs<
|
|
488
|
+
TextControlPtPart,
|
|
489
|
+
keyof InputVariantRegistry
|
|
490
|
+
> & {
|
|
491
|
+
/**
|
|
492
|
+
* Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same
|
|
493
|
+
* keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row.
|
|
494
|
+
*/
|
|
495
|
+
/* eslint-disable @typescript-eslint/consistent-indexed-object-style -- mapped, never Record (T23) */
|
|
496
|
+
pt?: PtMap<BbTextareaPtPart, BbTextareaPtState> & {
|
|
497
|
+
[K in `${TextControlPtPart}:${InputVariantBuiltIn | keyof InputVariantRegistry}`]?: PtValue;
|
|
498
|
+
};
|
|
499
|
+
/* eslint-enable @typescript-eslint/consistent-indexed-object-style */
|
|
500
|
+
/**
|
|
501
|
+
* Name of the icon to be added at the end of the input.
|
|
502
|
+
*/
|
|
503
|
+
|
|
504
|
+
'append:icon'?: IconType;
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Guides to the browser as to the type of information expected in the field.
|
|
508
|
+
*/
|
|
509
|
+
autocomplete?: InputHTMLAttributes['autocomplete'];
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
|
|
513
|
+
*/
|
|
514
|
+
autofocus?: InputHTMLAttributes['autofocus'];
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Expands the textarea to match its content. Empty, it is one BbTextInput
|
|
518
|
+
* tall (text on the same line); it never shrinks below that, or below `rows`.
|
|
519
|
+
*/
|
|
520
|
+
autoGrow?: boolean;
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Displays a clear button when the input has a value and is being interacted with.
|
|
524
|
+
*/
|
|
525
|
+
clearable?: boolean;
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Shows a character count at the end of the hint row: `42`, or `42 / 140`
|
|
529
|
+
* with the native `maxlength` (which also stops input). It brightens from
|
|
530
|
+
* 90 % and takes the warning colour at the limit; screen readers hear it
|
|
531
|
+
* only when it crosses 90 % or the limit.
|
|
532
|
+
*/
|
|
533
|
+
counter?: boolean;
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Compact density: the field uses the `-compact` twins of `--bb-input-h`,
|
|
537
|
+
* `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
|
|
538
|
+
* the component is ignored while it is on. Size a compact field with
|
|
539
|
+
* `--bb-input-h-compact` (and `--bb-input-py-compact`).
|
|
540
|
+
*/
|
|
541
|
+
compact?: boolean;
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* The field box's look, with `BbButton`'s names and tokens. Colours only,
|
|
545
|
+
* so a form never reflows; `'ghost'` has no border in any state, `'none'`
|
|
546
|
+
* no look at all (you own hover, focus and the states). Register more with
|
|
547
|
+
* the plugin's `inputVariants`.
|
|
548
|
+
*
|
|
549
|
+
* @defaultValue `'outline'`
|
|
550
|
+
*/
|
|
551
|
+
variant?: InputVariantType;
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Text between the label and the input. Unlike the hint it is always
|
|
555
|
+
* visible; it joins the input's `aria-describedby` after any `errors` /
|
|
556
|
+
* `warnings`, before the `hint`.
|
|
557
|
+
*/
|
|
558
|
+
description?: string;
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
|
|
562
|
+
* `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
|
|
563
|
+
* per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
|
|
564
|
+
*/
|
|
565
|
+
layout?: Responsive<FieldLayout>;
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Vertical position of the label block in a side-by-side row; not
|
|
569
|
+
* `labelPosition`, the horizontal one. Omitted, the label's first line
|
|
570
|
+
* meets the control's.
|
|
571
|
+
*/
|
|
572
|
+
labelAlign?: FieldCrossAlign;
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Vertical position of the control in a side-by-side row; not
|
|
576
|
+
* `inputPosition`, the horizontal one. Omitted, the control's first line
|
|
577
|
+
* meets the label's.
|
|
578
|
+
*/
|
|
579
|
+
inputAlign?: FieldCrossAlign;
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* Disables the component.
|
|
583
|
+
*/
|
|
584
|
+
disabled?: boolean;
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Error messages under the field, a string or array, in an
|
|
588
|
+
* `aria-live="polite"` region and first in the control's
|
|
589
|
+
* `aria-describedby`, so they are re-read when it regains focus.
|
|
590
|
+
*/
|
|
591
|
+
errors?: string | string[];
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Define if the component should be in an error state.
|
|
595
|
+
* It usually attaches a CSS class for styling purposes.
|
|
596
|
+
*/
|
|
597
|
+
hasErrors?: boolean;
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Warning messages under the field, a string or array: amber, in their own
|
|
601
|
+
* `aria-live` region and in the control's `aria-describedby` after the
|
|
602
|
+
* errors. Non-empty turns on the warning state; errors win when both are
|
|
603
|
+
* set.
|
|
604
|
+
*/
|
|
605
|
+
warnings?: string | string[];
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Define if the component should be in a warning state.
|
|
609
|
+
* Same chrome as errors with `--bb-warn`; errors take priority.
|
|
610
|
+
*/
|
|
611
|
+
hasWarnings?: boolean;
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* Visually hides the label of the input while maintaining accessibility.
|
|
615
|
+
*/
|
|
616
|
+
hideLabel?: boolean;
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Text box to be displayed near the input, usually to indicate instructions.
|
|
620
|
+
*/
|
|
621
|
+
hint?: string;
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* The `id` of the native control; the label's `for` and the description
|
|
625
|
+
* and message ids derive from it. Generated when omitted.
|
|
626
|
+
*/
|
|
627
|
+
id?: HTMLAttributes['id'];
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Text content of the label of the element.
|
|
631
|
+
*/
|
|
632
|
+
label: string;
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Label rendering mode. `'outside'` (default) sits the label above/beside the
|
|
636
|
+
* field; `'floating'`/`'inside'` overlay it, like the other text inputs.
|
|
637
|
+
*/
|
|
638
|
+
labelMode?: 'outside' | 'floating' | 'inside';
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Sets the text alignment of the label.
|
|
642
|
+
*/
|
|
643
|
+
labelPosition?: 'left' | 'center' | 'right';
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* Sets the component in a loading state, usually triggering some visual styles.
|
|
647
|
+
*/
|
|
648
|
+
loading?: boolean;
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Used by v-model.
|
|
652
|
+
*/
|
|
653
|
+
modelValue?: string | null;
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Defines the name of the input.
|
|
657
|
+
*/
|
|
658
|
+
name?: InputHTMLAttributes['name'];
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* What the field emits once the user empties it (typing it empty, the
|
|
662
|
+
* clear button): `'null'` emits `null`, `'string'` emits `''`.
|
|
663
|
+
* Unset, the app's `formControls.textareaNullValue` applies (`'null'` by
|
|
664
|
+
* default). Also types the `update:modelValue` payload: with `'string'`
|
|
665
|
+
* it is `string`.
|
|
666
|
+
*/
|
|
667
|
+
nullValue?: E;
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* Keeps the hint displayed.
|
|
671
|
+
*/
|
|
672
|
+
persistentHint?: boolean;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* Text shown while the field is empty.
|
|
676
|
+
*/
|
|
677
|
+
placeholder?: InputHTMLAttributes['placeholder'];
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Name of the icon to be added at the start of the input.
|
|
681
|
+
*/
|
|
682
|
+
|
|
683
|
+
'prepend:icon'?: IconType;
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Sets the input in a readonly state.
|
|
687
|
+
*/
|
|
688
|
+
readonly?: boolean;
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* Sets the input as required. Outside a BbForm it forwards to the native textarea; inside one it only marks the field (asterisk, aria-required) and nothing enforces it: use `rules="required"` or the form schema.
|
|
692
|
+
*/
|
|
693
|
+
required?: boolean;
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* Reverses the layout. Applicable in every direction the order of the label and
|
|
697
|
+
* the input is swapped.
|
|
698
|
+
*/
|
|
699
|
+
reverse?: boolean;
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* Sets the number of visible text lines for the control.
|
|
703
|
+
*/
|
|
704
|
+
rows?: string | number;
|
|
705
|
+
} & FormFieldProps<string | null>;
|
|
670
706
|
|
|
671
707
|
export type BbTextareaEvents<E extends NullValuePolicy = AppPolicy> = {
|
|
672
708
|
/**
|
|
@@ -138,7 +138,10 @@ import {
|
|
|
138
138
|
} from 'vue';
|
|
139
139
|
import { useId } from '@/composables/useId';
|
|
140
140
|
import { createReusableTemplate } from '@vueuse/core';
|
|
141
|
-
import {
|
|
141
|
+
import {
|
|
142
|
+
extractDomContainer,
|
|
143
|
+
type DomHost,
|
|
144
|
+
} from '@/utilities/functions/extractDomContainer';
|
|
142
145
|
import { useLocale } from '@/composables/useLocale';
|
|
143
146
|
import { useLogger } from '@/composables/useLogger';
|
|
144
147
|
import { useEscapeStackEntry } from '@/composables/useEscapeStackEntry';
|
|
@@ -158,6 +161,7 @@ import type {
|
|
|
158
161
|
} from './types';
|
|
159
162
|
import { BB_TIME_PICKER_PT } from './types';
|
|
160
163
|
import { usePassthrough } from '@/composables/usePassthrough';
|
|
164
|
+
import { firstFocusableMatch } from '@/utils/focusVisibility';
|
|
161
165
|
import { withoutPt } from '@/utils/passthrough';
|
|
162
166
|
export type {
|
|
163
167
|
BbTimePickerProps,
|
|
@@ -284,8 +288,8 @@ const rangeGroupLabel = computed(
|
|
|
284
288
|
|
|
285
289
|
// ---- Activator / anchor plumbing (mirrors BbDatePicker) -------------------------
|
|
286
290
|
|
|
287
|
-
const activatorEl = ref<
|
|
288
|
-
const anchorEl = ref<
|
|
291
|
+
const activatorEl = ref<DomHost | undefined>();
|
|
292
|
+
const anchorEl = ref<DomHost | undefined>();
|
|
289
293
|
const hasExternalActivator = computed(() => props.activator != null);
|
|
290
294
|
|
|
291
295
|
const setActivatorRef = (reference: unknown) => {
|
|
@@ -345,10 +349,10 @@ watch(isOpen, async (val) => {
|
|
|
345
349
|
document.addEventListener('click', onClickDocument, { passive: true });
|
|
346
350
|
}
|
|
347
351
|
await nextTick();
|
|
348
|
-
|
|
349
|
-
.getElementById(panelId)
|
|
350
|
-
|
|
351
|
-
|
|
352
|
+
firstFocusableMatch(
|
|
353
|
+
document.getElementById(panelId),
|
|
354
|
+
'[tabindex="0"]'
|
|
355
|
+
)?.focus();
|
|
352
356
|
} else {
|
|
353
357
|
document.removeEventListener('click', onClickDocument);
|
|
354
358
|
previousFocus?.focus();
|