@unofficialbox/box-open-elements 0.3.0 → 0.5.0
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 +37 -12
- package/dist/components/actions/button-group.d.ts +2 -2
- package/dist/components/actions/button-group.js +3 -9
- package/dist/components/actions/button.d.ts +2 -2
- package/dist/components/actions/button.js +3 -9
- package/dist/components/actions/icon-button.d.ts +2 -2
- package/dist/components/actions/icon-button.js +3 -9
- package/dist/components/actions/link-button.d.ts +11 -2
- package/dist/components/actions/link-button.js +58 -13
- package/dist/components/actions/menu-item.d.ts +2 -2
- package/dist/components/actions/menu-item.js +3 -9
- package/dist/components/actions/menu.d.ts +2 -2
- package/dist/components/actions/menu.js +3 -9
- package/dist/components/actions/segmented-control.d.ts +2 -2
- package/dist/components/actions/segmented-control.js +3 -9
- package/dist/components/collections/card.d.ts +2 -2
- package/dist/components/collections/card.js +3 -9
- package/dist/components/collections/carousel.d.ts +9 -2
- package/dist/components/collections/carousel.js +74 -13
- package/dist/components/collections/datalist-item.d.ts +8 -2
- package/dist/components/collections/datalist-item.js +42 -10
- package/dist/components/collections/draggable-list.d.ts +2 -2
- package/dist/components/collections/draggable-list.js +4 -10
- package/dist/components/collections/grid-view.d.ts +2 -2
- package/dist/components/collections/grid-view.js +10 -12
- package/dist/components/collections/pagination.d.ts +2 -2
- package/dist/components/collections/pagination.js +3 -9
- package/dist/components/collections/table.d.ts +2 -2
- package/dist/components/collections/table.js +3 -9
- package/dist/components/collections/thumbnail-card.d.ts +2 -2
- package/dist/components/collections/thumbnail-card.js +3 -9
- package/dist/components/collections/tree-grid.d.ts +2 -2
- package/dist/components/collections/tree-grid.js +3 -9
- package/dist/components/collections/tree.d.ts +2 -2
- package/dist/components/collections/tree.js +3 -9
- package/dist/components/feedback/alert.d.ts +4 -2
- package/dist/components/feedback/alert.js +33 -10
- package/dist/components/feedback/badge.d.ts +12 -2
- package/dist/components/feedback/badge.js +73 -13
- package/dist/components/feedback/badgeable.d.ts +2 -2
- package/dist/components/feedback/badgeable.js +3 -9
- package/dist/components/feedback/chip.d.ts +7 -2
- package/dist/components/feedback/chip.js +77 -11
- package/dist/components/feedback/empty-state.d.ts +2 -2
- package/dist/components/feedback/empty-state.js +3 -9
- package/dist/components/feedback/error-mask.d.ts +4 -2
- package/dist/components/feedback/error-mask.js +26 -9
- package/dist/components/feedback/help-text.d.ts +2 -2
- package/dist/components/feedback/help-text.js +10 -9
- package/dist/components/feedback/nudge.d.ts +2 -2
- package/dist/components/feedback/nudge.js +3 -9
- package/dist/components/feedback/progress-bar.d.ts +2 -2
- package/dist/components/feedback/progress-bar.js +3 -9
- package/dist/components/feedback/progress-ring.d.ts +2 -2
- package/dist/components/feedback/progress-ring.js +3 -9
- package/dist/components/feedback/progress-steps.d.ts +2 -2
- package/dist/components/feedback/progress-steps.js +3 -9
- package/dist/components/feedback/skeleton.d.ts +2 -2
- package/dist/components/feedback/skeleton.js +3 -9
- package/dist/components/feedback/spinner.d.ts +6 -2
- package/dist/components/feedback/spinner.js +33 -11
- package/dist/components/feedback/toast.d.ts +7 -2
- package/dist/components/feedback/toast.js +62 -20
- package/dist/components/files/drop-zone.d.ts +2 -2
- package/dist/components/files/drop-zone.js +3 -9
- package/dist/components/forms/calendar.d.ts +2 -2
- package/dist/components/forms/calendar.js +3 -9
- package/dist/components/forms/category-selector.d.ts +13 -2
- package/dist/components/forms/category-selector.js +214 -26
- package/dist/components/forms/checkbox-group.d.ts +2 -2
- package/dist/components/forms/checkbox-group.js +3 -9
- package/dist/components/forms/checkbox.d.ts +8 -2
- package/dist/components/forms/checkbox.js +61 -10
- package/dist/components/forms/color-picker.d.ts +2 -2
- package/dist/components/forms/color-picker.js +3 -9
- package/dist/components/forms/combobox.d.ts +32 -3
- package/dist/components/forms/combobox.js +351 -53
- package/dist/components/forms/date-field.d.ts +9 -2
- package/dist/components/forms/date-field.js +76 -10
- package/dist/components/forms/dropdown.d.ts +7 -2
- package/dist/components/forms/dropdown.js +35 -12
- package/dist/components/forms/dual-listbox.d.ts +2 -2
- package/dist/components/forms/dual-listbox.js +3 -9
- package/dist/components/forms/fieldset.d.ts +2 -2
- package/dist/components/forms/fieldset.js +3 -9
- package/dist/components/forms/multi-select.d.ts +2 -2
- package/dist/components/forms/multi-select.js +3 -9
- package/dist/components/forms/number-input.d.ts +2 -2
- package/dist/components/forms/number-input.js +3 -9
- package/dist/components/forms/pill-cloud.d.ts +2 -2
- package/dist/components/forms/pill-cloud.js +3 -9
- package/dist/components/forms/pill-selector-dropdown.d.ts +2 -2
- package/dist/components/forms/pill-selector-dropdown.js +3 -9
- package/dist/components/forms/radio-group.d.ts +11 -10
- package/dist/components/forms/radio-group.js +46 -15
- package/dist/components/forms/range-slider.d.ts +2 -2
- package/dist/components/forms/range-slider.js +3 -9
- package/dist/components/forms/rating.d.ts +2 -2
- package/dist/components/forms/rating.js +3 -9
- package/dist/components/forms/rich-text-input.d.ts +2 -2
- package/dist/components/forms/rich-text-input.js +3 -9
- package/dist/components/forms/search-field.d.ts +10 -2
- package/dist/components/forms/search-field.js +58 -22
- package/dist/components/forms/select.d.ts +20 -10
- package/dist/components/forms/select.js +107 -23
- package/dist/components/forms/slider.d.ts +2 -2
- package/dist/components/forms/slider.js +3 -9
- package/dist/components/forms/spin-button.d.ts +2 -2
- package/dist/components/forms/spin-button.js +3 -9
- package/dist/components/forms/switch.d.ts +2 -2
- package/dist/components/forms/switch.js +3 -9
- package/dist/components/forms/tag-input.d.ts +2 -2
- package/dist/components/forms/tag-input.js +3 -9
- package/dist/components/forms/text-area.d.ts +2 -2
- package/dist/components/forms/text-area.js +3 -9
- package/dist/components/forms/text-field.d.ts +15 -2
- package/dist/components/forms/text-field.js +139 -10
- package/dist/components/forms/time-field.d.ts +13 -2
- package/dist/components/forms/time-field.js +54 -9
- package/dist/components/identity/avatar.d.ts +6 -2
- package/dist/components/identity/avatar.js +68 -10
- package/dist/components/identity/contact-datalist-item.d.ts +10 -2
- package/dist/components/identity/contact-datalist-item.js +74 -11
- package/dist/components/identity/persona.d.ts +2 -2
- package/dist/components/identity/persona.js +3 -9
- package/dist/components/layout/app-shell.d.ts +2 -2
- package/dist/components/layout/app-shell.js +3 -9
- package/dist/components/layout/divider.d.ts +2 -2
- package/dist/components/layout/divider.js +3 -9
- package/dist/components/layout/nav-sidebar.d.ts +2 -2
- package/dist/components/layout/nav-sidebar.js +26 -9
- package/dist/components/layout/section.d.ts +2 -2
- package/dist/components/layout/section.js +3 -9
- package/dist/components/layout/sidebar-toggle-button.d.ts +5 -2
- package/dist/components/layout/sidebar-toggle-button.js +24 -11
- package/dist/components/layout/split-view.d.ts +2 -2
- package/dist/components/layout/split-view.js +3 -9
- package/dist/components/navigation/accordion.d.ts +5 -2
- package/dist/components/navigation/accordion.js +20 -11
- package/dist/components/navigation/breadcrumb.d.ts +2 -2
- package/dist/components/navigation/breadcrumb.js +3 -9
- package/dist/components/navigation/tabs.d.ts +2 -2
- package/dist/components/navigation/tabs.js +3 -9
- package/dist/components/overlays/context-menu.d.ts +2 -2
- package/dist/components/overlays/context-menu.js +3 -9
- package/dist/components/overlays/dialog.d.ts +2 -2
- package/dist/components/overlays/dialog.js +3 -9
- package/dist/components/overlays/drawer.d.ts +2 -2
- package/dist/components/overlays/drawer.js +3 -9
- package/dist/components/overlays/guide-tooltip.d.ts +51 -0
- package/dist/components/overlays/guide-tooltip.js +355 -0
- package/dist/components/overlays/popover.d.ts +2 -2
- package/dist/components/overlays/popover.js +3 -9
- package/dist/components/overlays/tooltip.d.ts +12 -2
- package/dist/components/overlays/tooltip.js +77 -20
- package/dist/components/visuals/illustration.d.ts +2 -2
- package/dist/components/visuals/illustration.js +3 -9
- package/dist/core/element.d.ts +5 -1
- package/dist/core/element.js +29 -1
- package/dist/entries/access-stats.d.ts +1 -0
- package/dist/entries/access-stats.js +1 -0
- package/dist/entries/accordion.d.ts +1 -0
- package/dist/entries/accordion.js +1 -0
- package/dist/entries/alert.d.ts +1 -0
- package/dist/entries/alert.js +1 -0
- package/dist/entries/annotation-inspector.d.ts +1 -0
- package/dist/entries/annotation-inspector.js +1 -0
- package/dist/entries/annotation-thread.d.ts +1 -0
- package/dist/entries/annotation-thread.js +1 -0
- package/dist/entries/annotation-toolbar.d.ts +1 -0
- package/dist/entries/annotation-toolbar.js +1 -0
- package/dist/entries/app-shell.d.ts +1 -0
- package/dist/entries/app-shell.js +1 -0
- package/dist/entries/avatar.d.ts +1 -0
- package/dist/entries/avatar.js +1 -0
- package/dist/entries/badge.d.ts +1 -0
- package/dist/entries/badge.js +1 -0
- package/dist/entries/badgeable.d.ts +1 -0
- package/dist/entries/badgeable.js +1 -0
- package/dist/entries/bar-chart.d.ts +1 -0
- package/dist/entries/bar-chart.js +1 -0
- package/dist/entries/breadcrumb.d.ts +1 -0
- package/dist/entries/breadcrumb.js +1 -0
- package/dist/entries/bulk-action-bar.d.ts +1 -0
- package/dist/entries/bulk-action-bar.js +1 -0
- package/dist/entries/button-group.d.ts +1 -0
- package/dist/entries/button-group.js +1 -0
- package/dist/entries/button.d.ts +1 -0
- package/dist/entries/button.js +1 -0
- package/dist/entries/calendar.d.ts +1 -0
- package/dist/entries/calendar.js +1 -0
- package/dist/entries/card.d.ts +1 -0
- package/dist/entries/card.js +1 -0
- package/dist/entries/carousel.d.ts +1 -0
- package/dist/entries/carousel.js +1 -0
- package/dist/entries/category-selector.d.ts +1 -0
- package/dist/entries/category-selector.js +1 -0
- package/dist/entries/chart-panel.d.ts +1 -0
- package/dist/entries/chart-panel.js +1 -0
- package/dist/entries/checkbox-group.d.ts +1 -0
- package/dist/entries/checkbox-group.js +1 -0
- package/dist/entries/checkbox.d.ts +1 -0
- package/dist/entries/checkbox.js +1 -0
- package/dist/entries/chip.d.ts +1 -0
- package/dist/entries/chip.js +1 -0
- package/dist/entries/collaborator-avatars.d.ts +1 -0
- package/dist/entries/collaborator-avatars.js +1 -0
- package/dist/entries/color-picker.d.ts +1 -0
- package/dist/entries/color-picker.js +1 -0
- package/dist/entries/combobox.d.ts +1 -0
- package/dist/entries/combobox.js +1 -0
- package/dist/entries/contact-datalist-item.d.ts +1 -0
- package/dist/entries/contact-datalist-item.js +1 -0
- package/dist/entries/content-explorer.d.ts +1 -0
- package/dist/entries/content-explorer.js +1 -0
- package/dist/entries/context-menu.d.ts +1 -0
- package/dist/entries/context-menu.js +1 -0
- package/dist/entries/datalist-item.d.ts +1 -0
- package/dist/entries/datalist-item.js +1 -0
- package/dist/entries/date-field.d.ts +1 -0
- package/dist/entries/date-field.js +1 -0
- package/dist/entries/dialog.d.ts +1 -0
- package/dist/entries/dialog.js +1 -0
- package/dist/entries/divider.d.ts +1 -0
- package/dist/entries/divider.js +1 -0
- package/dist/entries/donut-chart.d.ts +1 -0
- package/dist/entries/donut-chart.js +1 -0
- package/dist/entries/draggable-list.d.ts +1 -0
- package/dist/entries/draggable-list.js +1 -0
- package/dist/entries/drawer.d.ts +1 -0
- package/dist/entries/drawer.js +1 -0
- package/dist/entries/drop-zone.d.ts +1 -0
- package/dist/entries/drop-zone.js +1 -0
- package/dist/entries/dropdown.d.ts +1 -0
- package/dist/entries/dropdown.js +1 -0
- package/dist/entries/dual-listbox.d.ts +1 -0
- package/dist/entries/dual-listbox.js +1 -0
- package/dist/entries/empty-state.d.ts +1 -0
- package/dist/entries/empty-state.js +1 -0
- package/dist/entries/error-mask.d.ts +1 -0
- package/dist/entries/error-mask.js +1 -0
- package/dist/entries/explorer-action-menu.d.ts +1 -0
- package/dist/entries/explorer-action-menu.js +1 -0
- package/dist/entries/explorer-breadcrumbs.d.ts +1 -0
- package/dist/entries/explorer-breadcrumbs.js +1 -0
- package/dist/entries/explorer-items.d.ts +1 -0
- package/dist/entries/explorer-items.js +1 -0
- package/dist/entries/explorer-list.d.ts +1 -0
- package/dist/entries/explorer-list.js +1 -0
- package/dist/entries/explorer-table.d.ts +1 -0
- package/dist/entries/explorer-table.js +1 -0
- package/dist/entries/explorer-toolbar.d.ts +1 -0
- package/dist/entries/explorer-toolbar.js +1 -0
- package/dist/entries/fieldset.d.ts +1 -0
- package/dist/entries/fieldset.js +1 -0
- package/dist/entries/file-request-builder.d.ts +1 -0
- package/dist/entries/file-request-builder.js +1 -0
- package/dist/entries/filter-bar.d.ts +1 -0
- package/dist/entries/filter-bar.js +1 -0
- package/dist/entries/governance-panel.d.ts +1 -0
- package/dist/entries/governance-panel.js +1 -0
- package/dist/entries/grid-view.d.ts +1 -0
- package/dist/entries/grid-view.js +1 -0
- package/dist/entries/guide-tooltip.d.ts +1 -0
- package/dist/entries/guide-tooltip.js +1 -0
- package/dist/entries/help-text.d.ts +1 -0
- package/dist/entries/help-text.js +1 -0
- package/dist/entries/icon-button.d.ts +1 -0
- package/dist/entries/icon-button.js +1 -0
- package/dist/entries/illustration.d.ts +1 -0
- package/dist/entries/illustration.js +1 -0
- package/dist/entries/invite-collaborators-modal.d.ts +1 -0
- package/dist/entries/invite-collaborators-modal.js +1 -0
- package/dist/entries/item-details-panel.d.ts +1 -0
- package/dist/entries/item-details-panel.js +1 -0
- package/dist/entries/item-form.d.ts +1 -0
- package/dist/entries/item-form.js +1 -0
- package/dist/entries/line-chart.d.ts +1 -0
- package/dist/entries/line-chart.js +1 -0
- package/dist/entries/link-button.d.ts +1 -0
- package/dist/entries/link-button.js +1 -0
- package/dist/entries/menu-item.d.ts +1 -0
- package/dist/entries/menu-item.js +1 -0
- package/dist/entries/menu.d.ts +1 -0
- package/dist/entries/menu.js +1 -0
- package/dist/entries/metadata-filter-builder.d.ts +1 -0
- package/dist/entries/metadata-filter-builder.js +1 -0
- package/dist/entries/metadata-inspector.d.ts +1 -0
- package/dist/entries/metadata-inspector.js +1 -0
- package/dist/entries/metric-card.d.ts +1 -0
- package/dist/entries/metric-card.js +1 -0
- package/dist/entries/multi-select.d.ts +1 -0
- package/dist/entries/multi-select.js +1 -0
- package/dist/entries/nav-sidebar.d.ts +1 -0
- package/dist/entries/nav-sidebar.js +1 -0
- package/dist/entries/nudge.d.ts +1 -0
- package/dist/entries/nudge.js +1 -0
- package/dist/entries/number-input.d.ts +1 -0
- package/dist/entries/number-input.js +1 -0
- package/dist/entries/pagination.d.ts +1 -0
- package/dist/entries/pagination.js +1 -0
- package/dist/entries/permission-matrix.d.ts +1 -0
- package/dist/entries/permission-matrix.js +1 -0
- package/dist/entries/persona.d.ts +1 -0
- package/dist/entries/persona.js +1 -0
- package/dist/entries/pill-cloud.d.ts +1 -0
- package/dist/entries/pill-cloud.js +1 -0
- package/dist/entries/pill-selector-dropdown.d.ts +1 -0
- package/dist/entries/pill-selector-dropdown.js +1 -0
- package/dist/entries/popover.d.ts +1 -0
- package/dist/entries/popover.js +1 -0
- package/dist/entries/presence.d.ts +1 -0
- package/dist/entries/presence.js +1 -0
- package/dist/entries/preview-header.d.ts +1 -0
- package/dist/entries/preview-header.js +1 -0
- package/dist/entries/preview.d.ts +1 -0
- package/dist/entries/preview.js +1 -0
- package/dist/entries/progress-bar.d.ts +1 -0
- package/dist/entries/progress-bar.js +1 -0
- package/dist/entries/progress-ring.d.ts +1 -0
- package/dist/entries/progress-ring.js +1 -0
- package/dist/entries/progress-steps.d.ts +1 -0
- package/dist/entries/progress-steps.js +1 -0
- package/dist/entries/radio-group.d.ts +1 -0
- package/dist/entries/radio-group.js +1 -0
- package/dist/entries/range-slider.d.ts +1 -0
- package/dist/entries/range-slider.js +1 -0
- package/dist/entries/rating.d.ts +1 -0
- package/dist/entries/rating.js +1 -0
- package/dist/entries/review-queue-item.d.ts +1 -0
- package/dist/entries/review-queue-item.js +1 -0
- package/dist/entries/rich-text-input.d.ts +1 -0
- package/dist/entries/rich-text-input.js +1 -0
- package/dist/entries/saved-view-picker.d.ts +1 -0
- package/dist/entries/saved-view-picker.js +1 -0
- package/dist/entries/search-field.d.ts +1 -0
- package/dist/entries/search-field.js +1 -0
- package/dist/entries/search-results-header.d.ts +1 -0
- package/dist/entries/search-results-header.js +1 -0
- package/dist/entries/section.d.ts +1 -0
- package/dist/entries/section.js +1 -0
- package/dist/entries/segmented-control.d.ts +1 -0
- package/dist/entries/segmented-control.js +1 -0
- package/dist/entries/select.d.ts +1 -0
- package/dist/entries/select.js +1 -0
- package/dist/entries/share-panel.d.ts +1 -0
- package/dist/entries/share-panel.js +1 -0
- package/dist/entries/sidebar-toggle-button.d.ts +1 -0
- package/dist/entries/sidebar-toggle-button.js +1 -0
- package/dist/entries/skeleton.d.ts +1 -0
- package/dist/entries/skeleton.js +1 -0
- package/dist/entries/slider.d.ts +1 -0
- package/dist/entries/slider.js +1 -0
- package/dist/entries/spin-button.d.ts +1 -0
- package/dist/entries/spin-button.js +1 -0
- package/dist/entries/spinner.d.ts +1 -0
- package/dist/entries/spinner.js +1 -0
- package/dist/entries/split-view.d.ts +1 -0
- package/dist/entries/split-view.js +1 -0
- package/dist/entries/switch.d.ts +1 -0
- package/dist/entries/switch.js +1 -0
- package/dist/entries/table.d.ts +1 -0
- package/dist/entries/table.js +1 -0
- package/dist/entries/tabs.d.ts +1 -0
- package/dist/entries/tabs.js +1 -0
- package/dist/entries/tag-input.d.ts +1 -0
- package/dist/entries/tag-input.js +1 -0
- package/dist/entries/task-assignment-panel.d.ts +1 -0
- package/dist/entries/task-assignment-panel.js +1 -0
- package/dist/entries/text-area.d.ts +1 -0
- package/dist/entries/text-area.js +1 -0
- package/dist/entries/text-field.d.ts +1 -0
- package/dist/entries/text-field.js +1 -0
- package/dist/entries/thumbnail-card.d.ts +1 -0
- package/dist/entries/thumbnail-card.js +1 -0
- package/dist/entries/time-field.d.ts +1 -0
- package/dist/entries/time-field.js +1 -0
- package/dist/entries/toast.d.ts +1 -0
- package/dist/entries/toast.js +1 -0
- package/dist/entries/tooltip.d.ts +1 -0
- package/dist/entries/tooltip.js +1 -0
- package/dist/entries/tree-grid.d.ts +1 -0
- package/dist/entries/tree-grid.js +1 -0
- package/dist/entries/tree.d.ts +1 -0
- package/dist/entries/tree.js +1 -0
- package/dist/entries/unified-share-modal.d.ts +1 -0
- package/dist/entries/unified-share-modal.js +1 -0
- package/dist/foundations/geometry/tokens.d.ts +46 -45
- package/dist/foundations/geometry/tokens.js +46 -45
- package/dist/foundations/motion/tokens.d.ts +10 -10
- package/dist/foundations/motion/tokens.js +10 -10
- package/dist/foundations/overlay/positioning.js +5 -1
- package/dist/foundations/profiles/built-ins.d.ts +4 -0
- package/dist/foundations/profiles/built-ins.js +131 -0
- package/dist/foundations/profiles/controller.d.ts +4 -0
- package/dist/foundations/profiles/controller.js +107 -0
- package/dist/foundations/profiles/index.d.ts +4 -0
- package/dist/foundations/profiles/index.js +3 -0
- package/dist/foundations/profiles/registry.d.ts +72 -0
- package/dist/foundations/profiles/registry.js +119 -0
- package/dist/foundations/profiles/types.d.ts +94 -0
- package/dist/foundations/profiles/types.js +1 -0
- package/dist/foundations/theming/controller.d.ts +37 -0
- package/dist/foundations/theming/controller.js +176 -0
- package/dist/foundations/theming/index.d.ts +2 -0
- package/dist/foundations/theming/index.js +1 -0
- package/dist/foundations/tokens/box-dark.d.ts +3 -3
- package/dist/foundations/tokens/box-defaults.d.ts +3 -3
- package/dist/foundations/tokens/index.d.ts +2 -2
- package/dist/foundations/tokens/index.js +1 -1
- package/dist/foundations/tokens/registry.d.ts +37 -7
- package/dist/foundations/tokens/registry.js +55 -5
- package/dist/foundations/tokens/types.d.ts +38 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +4 -1
- package/dist/patterns/content-explorer/adapters/action-menu.d.ts +2 -2
- package/dist/patterns/content-explorer/adapters/action-menu.js +3 -9
- package/dist/patterns/content-explorer/adapters/breadcrumbs.d.ts +2 -2
- package/dist/patterns/content-explorer/adapters/breadcrumbs.js +3 -9
- package/dist/patterns/content-explorer/adapters/items.d.ts +3 -3
- package/dist/patterns/content-explorer/adapters/items.js +4 -10
- package/dist/patterns/content-explorer/adapters/list.d.ts +2 -2
- package/dist/patterns/content-explorer/adapters/list.js +3 -9
- package/dist/patterns/content-explorer/adapters/table.d.ts +2 -2
- package/dist/patterns/content-explorer/adapters/table.js +3 -9
- package/dist/patterns/content-explorer/adapters/toolbar.d.ts +2 -2
- package/dist/patterns/content-explorer/adapters/toolbar.js +7 -13
- package/dist/patterns/content-explorer/content-explorer.d.ts +15 -15
- package/dist/patterns/content-explorer/content-explorer.js +5 -11
- package/dist/patterns/file-request/file-request-builder.d.ts +2 -2
- package/dist/patterns/file-request/file-request-builder.js +3 -9
- package/dist/patterns/governance/governance-panel.d.ts +2 -2
- package/dist/patterns/governance/governance-panel.js +3 -6
- package/dist/patterns/insights/bar-chart.d.ts +2 -2
- package/dist/patterns/insights/bar-chart.js +3 -6
- package/dist/patterns/insights/chart-panel.d.ts +2 -2
- package/dist/patterns/insights/chart-panel.js +3 -6
- package/dist/patterns/insights/donut-chart.d.ts +2 -2
- package/dist/patterns/insights/donut-chart.js +3 -6
- package/dist/patterns/insights/line-chart.d.ts +2 -2
- package/dist/patterns/insights/line-chart.js +3 -6
- package/dist/patterns/insights/metric-card.d.ts +2 -2
- package/dist/patterns/insights/metric-card.js +3 -6
- package/dist/patterns/item/bulk-action-bar.d.ts +2 -2
- package/dist/patterns/item/bulk-action-bar.js +3 -6
- package/dist/patterns/item/item-details-panel.d.ts +2 -2
- package/dist/patterns/item/item-details-panel.js +3 -9
- package/dist/patterns/item/item-form.d.ts +2 -2
- package/dist/patterns/item/item-form.js +3 -9
- package/dist/patterns/item/preview-header.d.ts +2 -2
- package/dist/patterns/item/preview-header.js +3 -9
- package/dist/patterns/metadata/metadata-filter-builder.d.ts +2 -2
- package/dist/patterns/metadata/metadata-filter-builder.js +3 -9
- package/dist/patterns/metadata/metadata-inspector.d.ts +2 -2
- package/dist/patterns/metadata/metadata-inspector.js +3 -9
- package/dist/patterns/preview/annotation-inspector.d.ts +2 -2
- package/dist/patterns/preview/annotation-inspector.js +3 -9
- package/dist/patterns/preview/annotation-thread.d.ts +2 -2
- package/dist/patterns/preview/annotation-thread.js +3 -9
- package/dist/patterns/preview/annotation-toolbar.d.ts +2 -2
- package/dist/patterns/preview/annotation-toolbar.js +3 -9
- package/dist/patterns/preview/preview-element.d.ts +2 -2
- package/dist/patterns/preview/preview-element.js +3 -9
- package/dist/patterns/search/filter-bar.d.ts +2 -2
- package/dist/patterns/search/filter-bar.js +3 -9
- package/dist/patterns/search/saved-view-picker.d.ts +2 -2
- package/dist/patterns/search/saved-view-picker.js +3 -9
- package/dist/patterns/search/search-results-header.d.ts +2 -2
- package/dist/patterns/search/search-results-header.js +3 -9
- package/dist/patterns/share/access-stats.d.ts +2 -2
- package/dist/patterns/share/access-stats.js +3 -9
- package/dist/patterns/share/collaborator-avatars.d.ts +2 -2
- package/dist/patterns/share/collaborator-avatars.js +3 -9
- package/dist/patterns/share/invite-collaborators-modal.d.ts +2 -2
- package/dist/patterns/share/invite-collaborators-modal.js +3 -9
- package/dist/patterns/share/permission-matrix.d.ts +2 -2
- package/dist/patterns/share/permission-matrix.js +3 -9
- package/dist/patterns/share/presence.d.ts +2 -2
- package/dist/patterns/share/presence.js +3 -9
- package/dist/patterns/share/share-panel.d.ts +2 -2
- package/dist/patterns/share/share-panel.js +3 -9
- package/dist/patterns/share/unified-share-modal.d.ts +2 -2
- package/dist/patterns/share/unified-share-modal.js +3 -9
- package/dist/patterns/task/review-queue-item.d.ts +2 -2
- package/dist/patterns/task/review-queue-item.js +3 -6
- package/dist/patterns/task/task-assignment-panel.d.ts +2 -2
- package/dist/patterns/task/task-assignment-panel.js +3 -6
- package/package.json +5 -1
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { BaseElement } from "../../core/index.js";
|
|
2
2
|
import { boeMotionDuration, boeMotionEasing } from "../../foundations/motion/index.js";
|
|
3
|
+
import { boeOverlay, boeRadius } from "../../foundations/geometry/index.js";
|
|
4
|
+
import { boeNeutralInteractiveStyles } from "../../foundations/tokens/index.js";
|
|
5
|
+
import { parsePlacement, trackAnchor, } from "../../foundations/overlay/index.js";
|
|
3
6
|
const DEFAULT_TAG_NAME = "box-category-selector";
|
|
4
7
|
const escapeHtml = (value) => value
|
|
5
8
|
.replaceAll("&", "&")
|
|
@@ -59,6 +62,50 @@ const categorySelectorStyles = `
|
|
|
59
62
|
color: var(--boe-token-text-text-secondary, #6f6f6f);
|
|
60
63
|
font-size: 0.86rem;
|
|
61
64
|
}
|
|
65
|
+
|
|
66
|
+
/* Overflow "More" menu (shown when options exceed max-links). */
|
|
67
|
+
[part="more-menu"] {
|
|
68
|
+
position: fixed;
|
|
69
|
+
inset-block-start: 0;
|
|
70
|
+
inset-inline-start: 0;
|
|
71
|
+
z-index: 40;
|
|
72
|
+
margin: 0;
|
|
73
|
+
padding: ${boeOverlay.padding};
|
|
74
|
+
list-style: none;
|
|
75
|
+
min-inline-size: 10rem;
|
|
76
|
+
max-block-size: 16rem;
|
|
77
|
+
overflow-y: auto;
|
|
78
|
+
border: ${boeOverlay.border};
|
|
79
|
+
border-radius: ${boeOverlay.radius};
|
|
80
|
+
background: var(--boe-token-surface-surface, #ffffff);
|
|
81
|
+
box-shadow: ${boeOverlay.shadow};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[part="more-menu"][hidden] {
|
|
85
|
+
display: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
[part="more-item"] {
|
|
89
|
+
appearance: none;
|
|
90
|
+
display: block;
|
|
91
|
+
inline-size: 100%;
|
|
92
|
+
text-align: start;
|
|
93
|
+
border: 0;
|
|
94
|
+
background: transparent;
|
|
95
|
+
color: var(--boe-token-text-text, #222222);
|
|
96
|
+
font: inherit;
|
|
97
|
+
font-size: 0.84rem;
|
|
98
|
+
padding: 6px 10px;
|
|
99
|
+
border-radius: ${boeRadius.med};
|
|
100
|
+
cursor: pointer;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
[part="more-item"][aria-checked="true"] {
|
|
104
|
+
color: var(--boe-token-surface-surface-brand, #0061d5);
|
|
105
|
+
font-weight: 700;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
${boeNeutralInteractiveStyles('[part="more-item"]')}
|
|
62
109
|
`;
|
|
63
110
|
/**
|
|
64
111
|
* A single-select category picker rendered as a horizontal radiogroup of pills —
|
|
@@ -67,14 +114,31 @@ const categorySelectorStyles = `
|
|
|
67
114
|
* `value` and announced with `value-changed`. Follows the radiogroup keyboard
|
|
68
115
|
* pattern: arrow keys move selection with roving `tabindex`.
|
|
69
116
|
*/
|
|
70
|
-
export class
|
|
117
|
+
export class CategorySelector extends BaseElement {
|
|
118
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
71
119
|
static get observedAttributes() {
|
|
72
|
-
return ["label", "options", "value"];
|
|
120
|
+
return ["label", "options", "value", "max-links"];
|
|
73
121
|
}
|
|
74
122
|
valueInternal = "";
|
|
75
123
|
lastOptionsJson = "";
|
|
76
124
|
hadFocus = false;
|
|
77
125
|
rootEl;
|
|
126
|
+
moreOpen = false;
|
|
127
|
+
positionCleanup = null;
|
|
128
|
+
onDocumentPointerDown = (event) => {
|
|
129
|
+
if (event.composedPath().includes(this)) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.closeMore();
|
|
133
|
+
};
|
|
134
|
+
/** Max inline categories before the rest collapse into a "More" menu (0 = no limit). */
|
|
135
|
+
get maxLinks() {
|
|
136
|
+
const raw = Number(this.getAttribute("max-links"));
|
|
137
|
+
return Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : 0;
|
|
138
|
+
}
|
|
139
|
+
set maxLinks(value) {
|
|
140
|
+
this.setAttribute("max-links", String(value));
|
|
141
|
+
}
|
|
78
142
|
get label() {
|
|
79
143
|
return this.getAttribute("label") ?? "Categories";
|
|
80
144
|
}
|
|
@@ -116,6 +180,14 @@ export class BoxCategorySelectorElement extends BaseElement {
|
|
|
116
180
|
selectableOptions() {
|
|
117
181
|
return this.options.filter(option => !option.disabled);
|
|
118
182
|
}
|
|
183
|
+
splitOptions() {
|
|
184
|
+
const options = this.options;
|
|
185
|
+
const max = this.maxLinks;
|
|
186
|
+
if (max <= 0 || options.length <= max) {
|
|
187
|
+
return { visible: options, overflow: [] };
|
|
188
|
+
}
|
|
189
|
+
return { visible: options.slice(0, max), overflow: options.slice(max) };
|
|
190
|
+
}
|
|
119
191
|
select(value) {
|
|
120
192
|
if (!value || value === this.valueInternal) {
|
|
121
193
|
return;
|
|
@@ -158,20 +230,108 @@ export class BoxCategorySelectorElement extends BaseElement {
|
|
|
158
230
|
`;
|
|
159
231
|
this.rootEl = this.shadowRoot.querySelector('[part="root"]');
|
|
160
232
|
}
|
|
233
|
+
resolvedPlacement() {
|
|
234
|
+
return parsePlacement(this.getAttribute("placement")) ?? { side: "bottom", align: "end" };
|
|
235
|
+
}
|
|
236
|
+
openMore() {
|
|
237
|
+
const moreBtn = this.rootEl.querySelector('[data-more]');
|
|
238
|
+
const menu = this.rootEl.querySelector('[part="more-menu"]');
|
|
239
|
+
if (!moreBtn || !menu || this.moreOpen) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
this.moreOpen = true;
|
|
243
|
+
menu.hidden = false;
|
|
244
|
+
moreBtn.setAttribute("aria-expanded", "true");
|
|
245
|
+
document.addEventListener("pointerdown", this.onDocumentPointerDown);
|
|
246
|
+
this.positionCleanup = trackAnchor(moreBtn, menu, {
|
|
247
|
+
placement: this.resolvedPlacement(),
|
|
248
|
+
offset: 4,
|
|
249
|
+
});
|
|
250
|
+
menu.querySelector('[part="more-item"]')?.focus();
|
|
251
|
+
}
|
|
252
|
+
closeMore(restoreFocus = false) {
|
|
253
|
+
if (!this.moreOpen) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
this.moreOpen = false;
|
|
257
|
+
const moreBtn = this.rootEl.querySelector('[data-more]');
|
|
258
|
+
const menu = this.rootEl.querySelector('[part="more-menu"]');
|
|
259
|
+
if (menu) {
|
|
260
|
+
menu.hidden = true;
|
|
261
|
+
}
|
|
262
|
+
moreBtn?.setAttribute("aria-expanded", "false");
|
|
263
|
+
document.removeEventListener("pointerdown", this.onDocumentPointerDown);
|
|
264
|
+
this.positionCleanup?.();
|
|
265
|
+
this.positionCleanup = null;
|
|
266
|
+
if (restoreFocus) {
|
|
267
|
+
moreBtn?.focus();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
disconnectedCallback() {
|
|
271
|
+
document.removeEventListener("pointerdown", this.onDocumentPointerDown);
|
|
272
|
+
this.positionCleanup?.();
|
|
273
|
+
this.positionCleanup = null;
|
|
274
|
+
super.disconnectedCallback?.();
|
|
275
|
+
}
|
|
161
276
|
setupListeners() {
|
|
162
277
|
this.rootEl.addEventListener("click", event => {
|
|
163
|
-
const
|
|
278
|
+
const target = event.target;
|
|
279
|
+
const moreBtn = target.closest('[data-more]');
|
|
280
|
+
if (moreBtn && this.rootEl.contains(moreBtn)) {
|
|
281
|
+
if (this.moreOpen) {
|
|
282
|
+
this.closeMore();
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
this.openMore();
|
|
286
|
+
}
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
const menuItem = target.closest('[part="more-item"]');
|
|
290
|
+
if (menuItem && this.rootEl.contains(menuItem)) {
|
|
291
|
+
this.select(menuItem.dataset.value ?? "");
|
|
292
|
+
this.closeMore(true);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const button = target.closest('[part~="pill"]');
|
|
164
296
|
if (!button || !this.rootEl.contains(button)) {
|
|
165
297
|
return;
|
|
166
298
|
}
|
|
167
299
|
this.select(button.dataset.value ?? "");
|
|
168
300
|
});
|
|
169
301
|
this.rootEl.addEventListener("keydown", event => {
|
|
170
|
-
const
|
|
302
|
+
const keyboardEvent = event;
|
|
303
|
+
const target = event.target;
|
|
304
|
+
// Menu item keys: Escape closes and returns focus; Arrow moves within.
|
|
305
|
+
const menuItem = target.closest('[part="more-item"]');
|
|
306
|
+
if (menuItem && this.rootEl.contains(menuItem)) {
|
|
307
|
+
const items = Array.from(this.rootEl.querySelectorAll('[part="more-item"]:not(:disabled)'));
|
|
308
|
+
const index = items.indexOf(menuItem);
|
|
309
|
+
if (keyboardEvent.key === "Escape") {
|
|
310
|
+
keyboardEvent.preventDefault();
|
|
311
|
+
this.closeMore(true);
|
|
312
|
+
}
|
|
313
|
+
else if (keyboardEvent.key === "ArrowDown") {
|
|
314
|
+
keyboardEvent.preventDefault();
|
|
315
|
+
items[(index + 1) % items.length]?.focus();
|
|
316
|
+
}
|
|
317
|
+
else if (keyboardEvent.key === "ArrowUp") {
|
|
318
|
+
keyboardEvent.preventDefault();
|
|
319
|
+
items[(index - 1 + items.length) % items.length]?.focus();
|
|
320
|
+
}
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const button = target.closest('[part~="pill"]');
|
|
171
324
|
if (!button || !this.rootEl.contains(button)) {
|
|
172
325
|
return;
|
|
173
326
|
}
|
|
174
|
-
|
|
327
|
+
// "More" button: open the overflow menu.
|
|
328
|
+
if (button.dataset.more) {
|
|
329
|
+
if (["Enter", " ", "ArrowDown"].includes(keyboardEvent.key)) {
|
|
330
|
+
keyboardEvent.preventDefault();
|
|
331
|
+
this.openMore();
|
|
332
|
+
}
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
175
335
|
const value = button.dataset.value ?? "";
|
|
176
336
|
switch (keyboardEvent.key) {
|
|
177
337
|
case "ArrowRight":
|
|
@@ -221,29 +381,48 @@ export class BoxCategorySelectorElement extends BaseElement {
|
|
|
221
381
|
this.lastOptionsJson = "";
|
|
222
382
|
return;
|
|
223
383
|
}
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
384
|
+
const { visible, overflow } = this.splitOptions();
|
|
385
|
+
const selectedInOverflow = overflow.some(option => option.value === this.valueInternal);
|
|
386
|
+
const cacheKey = `${JSON.stringify(options)}|${this.maxLinks}`;
|
|
387
|
+
if (cacheKey !== this.lastOptionsJson || !this.rootEl.querySelector('[part="group"]')) {
|
|
388
|
+
const pillMarkup = (option) => `
|
|
389
|
+
<button
|
|
390
|
+
type="button"
|
|
391
|
+
part="pill"
|
|
392
|
+
role="radio"
|
|
393
|
+
data-value="${escapeHtml(option.value)}"
|
|
394
|
+
${option.disabled ? "disabled" : ""}
|
|
395
|
+
>${escapeHtml(option.label)}</button>
|
|
396
|
+
`;
|
|
397
|
+
const moreButton = overflow.length
|
|
398
|
+
? `<button type="button" part="pill more" data-more="true" aria-haspopup="menu" aria-expanded="false">More</button>`
|
|
399
|
+
: "";
|
|
400
|
+
const moreMenu = overflow.length
|
|
401
|
+
? `<ul part="more-menu" role="menu" aria-label="More categories" hidden>${overflow
|
|
402
|
+
.map(option => `
|
|
403
|
+
<li role="none"><button
|
|
231
404
|
type="button"
|
|
232
|
-
part="
|
|
233
|
-
role="
|
|
405
|
+
part="more-item"
|
|
406
|
+
role="menuitemradio"
|
|
234
407
|
data-value="${escapeHtml(option.value)}"
|
|
235
408
|
${option.disabled ? "disabled" : ""}
|
|
236
|
-
>${escapeHtml(option.label)}</button>
|
|
409
|
+
>${escapeHtml(option.label)}</button></li>
|
|
237
410
|
`)
|
|
238
|
-
|
|
411
|
+
.join("")}</ul>`
|
|
412
|
+
: "";
|
|
413
|
+
this.rootEl.innerHTML = `
|
|
414
|
+
<div part="group" role="radiogroup" aria-label="${escapeHtml(this.label)}">
|
|
415
|
+
${visible.map(pillMarkup).join("")}
|
|
416
|
+
${moreButton}
|
|
239
417
|
</div>
|
|
418
|
+
${moreMenu}
|
|
240
419
|
`;
|
|
241
|
-
this.lastOptionsJson =
|
|
420
|
+
this.lastOptionsJson = cacheKey;
|
|
242
421
|
}
|
|
243
422
|
const group = this.rootEl.querySelector('[part="group"]');
|
|
244
423
|
group?.setAttribute("aria-label", this.label);
|
|
245
424
|
const tabbableValue = this.valueInternal || this.selectableOptions()[0]?.value || "";
|
|
246
|
-
this.rootEl.querySelectorAll('[part~="pill"]').forEach(node => {
|
|
425
|
+
this.rootEl.querySelectorAll('[part~="pill"]:not([data-more])').forEach(node => {
|
|
247
426
|
const button = node;
|
|
248
427
|
const optionValue = button.dataset.value ?? "";
|
|
249
428
|
const option = options.find(entry => entry.value === optionValue);
|
|
@@ -252,6 +431,22 @@ export class BoxCategorySelectorElement extends BaseElement {
|
|
|
252
431
|
button.setAttribute("aria-checked", String(isChecked));
|
|
253
432
|
button.tabIndex = optionValue === tabbableValue && !option?.disabled ? 0 : -1;
|
|
254
433
|
});
|
|
434
|
+
// "More" reflects an active overflow selection and shows its label.
|
|
435
|
+
const moreBtn = this.rootEl.querySelector('[data-more]');
|
|
436
|
+
if (moreBtn) {
|
|
437
|
+
const selectedOption = overflow.find(option => option.value === this.valueInternal);
|
|
438
|
+
moreBtn.textContent = selectedOption ? selectedOption.label : "More";
|
|
439
|
+
moreBtn.setAttribute("part", selectedInOverflow ? "pill more pill-checked" : "pill more");
|
|
440
|
+
moreBtn.setAttribute("aria-expanded", this.moreOpen ? "true" : "false");
|
|
441
|
+
// Roving tabindex: the More button is the tabbable entry when it holds the
|
|
442
|
+
// active (overflow) selection; otherwise a visible pill is.
|
|
443
|
+
moreBtn.tabIndex = selectedInOverflow ? 0 : -1;
|
|
444
|
+
}
|
|
445
|
+
// Reflect the checked overflow option in the menu.
|
|
446
|
+
this.rootEl.querySelectorAll('[part="more-item"]').forEach(node => {
|
|
447
|
+
const button = node;
|
|
448
|
+
button.setAttribute("aria-checked", String(button.dataset.value === this.valueInternal));
|
|
449
|
+
});
|
|
255
450
|
if (this.hadFocus && this.valueInternal) {
|
|
256
451
|
const active = Array.from(this.rootEl.querySelectorAll('[part~="pill"]')).find(node => node.dataset.value === this.valueInternal);
|
|
257
452
|
active?.focus();
|
|
@@ -259,11 +454,4 @@ export class BoxCategorySelectorElement extends BaseElement {
|
|
|
259
454
|
}
|
|
260
455
|
}
|
|
261
456
|
}
|
|
262
|
-
|
|
263
|
-
const existingElement = customElements.get(tagName);
|
|
264
|
-
if (existingElement) {
|
|
265
|
-
return existingElement;
|
|
266
|
-
}
|
|
267
|
-
customElements.define(tagName, BoxCategorySelectorElement);
|
|
268
|
-
return BoxCategorySelectorElement;
|
|
269
|
-
};
|
|
457
|
+
CategorySelector.register();
|
|
@@ -5,7 +5,8 @@ type CheckboxGroupOption = {
|
|
|
5
5
|
label: string;
|
|
6
6
|
value: string;
|
|
7
7
|
};
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class CheckboxGroup extends FormAssociatedElement {
|
|
9
|
+
static readonly tagName: string;
|
|
9
10
|
static get observedAttributes(): string[];
|
|
10
11
|
private valueInternal;
|
|
11
12
|
private lastOptionsJson;
|
|
@@ -27,5 +28,4 @@ export declare class BoxCheckboxGroupElement extends FormAssociatedElement {
|
|
|
27
28
|
protected setupListeners(): void;
|
|
28
29
|
protected update(): void;
|
|
29
30
|
}
|
|
30
|
-
export declare const defineBoxCheckboxGroupElement: (tagName?: string) => typeof BoxCheckboxGroupElement;
|
|
31
31
|
export {};
|
|
@@ -96,7 +96,8 @@ const checkboxGroupStyles = `
|
|
|
96
96
|
|
|
97
97
|
${boeFormFieldErrorStyles}
|
|
98
98
|
`;
|
|
99
|
-
export class
|
|
99
|
+
export class CheckboxGroup extends FormAssociatedElement {
|
|
100
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
100
101
|
static get observedAttributes() {
|
|
101
102
|
return [
|
|
102
103
|
...FormAssociatedElement.formObservedAttributes,
|
|
@@ -257,11 +258,4 @@ export class BoxCheckboxGroupElement extends FormAssociatedElement {
|
|
|
257
258
|
this.applyInvalidStateToControls(Array.from(this.optionsContainerEl.querySelectorAll('[part="input"]')), this.errorEl);
|
|
258
259
|
}
|
|
259
260
|
}
|
|
260
|
-
|
|
261
|
-
const existingElement = customElements.get(tagName);
|
|
262
|
-
if (existingElement) {
|
|
263
|
-
return existingElement;
|
|
264
|
-
}
|
|
265
|
-
customElements.define(tagName, BoxCheckboxGroupElement);
|
|
266
|
-
return BoxCheckboxGroupElement;
|
|
267
|
-
};
|
|
261
|
+
CheckboxGroup.register();
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { FormAssociatedElement } from "../../core/index.js";
|
|
2
2
|
import type { FormValue } from "../../core/index.js";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class Checkbox extends FormAssociatedElement {
|
|
4
|
+
static readonly tagName: string;
|
|
4
5
|
static get observedAttributes(): string[];
|
|
5
6
|
private checkedInternal;
|
|
6
7
|
private indeterminateInternal;
|
|
7
8
|
private valueInternal;
|
|
8
9
|
private inputEl;
|
|
9
10
|
private labelEl;
|
|
11
|
+
private descriptionEl;
|
|
12
|
+
private fieldEl;
|
|
10
13
|
private errorEl;
|
|
14
|
+
private descriptionId;
|
|
15
|
+
/** Supporting text shown as an indented subsection below the label. */
|
|
16
|
+
get description(): string;
|
|
17
|
+
set description(value: string);
|
|
11
18
|
get checked(): boolean;
|
|
12
19
|
set checked(value: boolean);
|
|
13
20
|
get indeterminate(): boolean;
|
|
@@ -25,4 +32,3 @@ export declare class BoxCheckboxElement extends FormAssociatedElement {
|
|
|
25
32
|
protected setupListeners(): void;
|
|
26
33
|
protected update(): void;
|
|
27
34
|
}
|
|
28
|
-
export declare const defineBoxCheckboxElement: (tagName?: string) => typeof BoxCheckboxElement;
|
|
@@ -42,10 +42,38 @@ const checkboxStyles = `
|
|
|
42
42
|
|
|
43
43
|
${boeFocusVisibleStyles('[part="input"]')}
|
|
44
44
|
|
|
45
|
+
[part="text"] {
|
|
46
|
+
display: inline-flex;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
gap: 2px;
|
|
49
|
+
min-inline-size: 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
45
52
|
[part="label"] {
|
|
46
53
|
font-weight: 400;
|
|
47
54
|
}
|
|
48
55
|
|
|
56
|
+
/* Supporting subsection below the label (BUE checkbox description). */
|
|
57
|
+
[part="description"] {
|
|
58
|
+
font-size: 0.82rem;
|
|
59
|
+
font-weight: 400;
|
|
60
|
+
line-height: 1.4;
|
|
61
|
+
color: var(--boe-token-text-text-secondary, #6f6f6f);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
[part="description"][hidden] {
|
|
65
|
+
display: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Top-align the box against multi-line content only when a description shows. */
|
|
69
|
+
[part="field"][data-has-description="true"] {
|
|
70
|
+
align-items: start;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
[part="field"][data-has-description="true"] [part="input"] {
|
|
74
|
+
margin-block-start: 1px;
|
|
75
|
+
}
|
|
76
|
+
|
|
49
77
|
:host([disabled]) [part="field"] {
|
|
50
78
|
opacity: ${boeControl.disabledOpacity};
|
|
51
79
|
cursor: not-allowed;
|
|
@@ -53,11 +81,13 @@ const checkboxStyles = `
|
|
|
53
81
|
|
|
54
82
|
${boeFormFieldErrorStyles}
|
|
55
83
|
`;
|
|
56
|
-
export class
|
|
84
|
+
export class Checkbox extends FormAssociatedElement {
|
|
85
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
57
86
|
static get observedAttributes() {
|
|
58
87
|
return [
|
|
59
88
|
...FormAssociatedElement.formObservedAttributes,
|
|
60
89
|
"checked",
|
|
90
|
+
"description",
|
|
61
91
|
"disabled",
|
|
62
92
|
"indeterminate",
|
|
63
93
|
"label",
|
|
@@ -69,7 +99,17 @@ export class BoxCheckboxElement extends FormAssociatedElement {
|
|
|
69
99
|
valueInternal = DEFAULT_VALUE;
|
|
70
100
|
inputEl;
|
|
71
101
|
labelEl;
|
|
102
|
+
descriptionEl;
|
|
103
|
+
fieldEl;
|
|
72
104
|
errorEl;
|
|
105
|
+
descriptionId = `box-checkbox-desc-${Math.random().toString(36).slice(2, 10)}`;
|
|
106
|
+
/** Supporting text shown as an indented subsection below the label. */
|
|
107
|
+
get description() {
|
|
108
|
+
return this.getAttribute("description") ?? "";
|
|
109
|
+
}
|
|
110
|
+
set description(value) {
|
|
111
|
+
this.setAttribute("description", value);
|
|
112
|
+
}
|
|
73
113
|
get checked() {
|
|
74
114
|
return this.checkedInternal;
|
|
75
115
|
}
|
|
@@ -180,12 +220,17 @@ export class BoxCheckboxElement extends FormAssociatedElement {
|
|
|
180
220
|
type="checkbox"
|
|
181
221
|
part="input"
|
|
182
222
|
/>
|
|
183
|
-
<span part="
|
|
223
|
+
<span part="text">
|
|
224
|
+
<span part="label"></span>
|
|
225
|
+
<span part="description" id="${this.descriptionId}" hidden></span>
|
|
226
|
+
</span>
|
|
184
227
|
</label>
|
|
185
228
|
${formErrorMessageMarkup()}
|
|
186
229
|
`;
|
|
187
230
|
this.inputEl = this.shadowRoot.querySelector('[part="input"]');
|
|
188
231
|
this.labelEl = this.shadowRoot.querySelector('[part="label"]');
|
|
232
|
+
this.descriptionEl = this.shadowRoot.querySelector('[part="description"]');
|
|
233
|
+
this.fieldEl = this.shadowRoot.querySelector('[part="field"]');
|
|
189
234
|
this.errorEl = this.shadowRoot.querySelector('[part="error-message"]');
|
|
190
235
|
}
|
|
191
236
|
setupListeners() {
|
|
@@ -237,14 +282,20 @@ export class BoxCheckboxElement extends FormAssociatedElement {
|
|
|
237
282
|
}
|
|
238
283
|
this.inputEl.setAttribute("aria-label", this.label);
|
|
239
284
|
this.labelEl.textContent = this.label;
|
|
285
|
+
const description = this.description;
|
|
286
|
+
if (description) {
|
|
287
|
+
this.descriptionEl.hidden = false;
|
|
288
|
+
this.descriptionEl.textContent = description;
|
|
289
|
+
this.inputEl.setAttribute("aria-describedby", this.descriptionId);
|
|
290
|
+
this.fieldEl.dataset.hasDescription = "true";
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
this.descriptionEl.hidden = true;
|
|
294
|
+
this.descriptionEl.textContent = "";
|
|
295
|
+
this.inputEl.removeAttribute("aria-describedby");
|
|
296
|
+
this.fieldEl.removeAttribute("data-has-description");
|
|
297
|
+
}
|
|
240
298
|
this.applyInvalidState(this.inputEl, this.errorEl);
|
|
241
299
|
}
|
|
242
300
|
}
|
|
243
|
-
|
|
244
|
-
const existingElement = customElements.get(tagName);
|
|
245
|
-
if (existingElement) {
|
|
246
|
-
return existingElement;
|
|
247
|
-
}
|
|
248
|
-
customElements.define(tagName, BoxCheckboxElement);
|
|
249
|
-
return BoxCheckboxElement;
|
|
250
|
-
};
|
|
301
|
+
Checkbox.register();
|
|
@@ -4,7 +4,8 @@ type BoxColorSwatch = {
|
|
|
4
4
|
label?: string;
|
|
5
5
|
value: string;
|
|
6
6
|
};
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class ColorPicker extends FormAssociatedElement {
|
|
8
|
+
static readonly tagName: string;
|
|
8
9
|
static get observedAttributes(): string[];
|
|
9
10
|
private valueInternal;
|
|
10
11
|
private lastSwatchesJson;
|
|
@@ -30,5 +31,4 @@ export declare class BoxColorPickerElement extends FormAssociatedElement {
|
|
|
30
31
|
protected setupListeners(): void;
|
|
31
32
|
protected update(): void;
|
|
32
33
|
}
|
|
33
|
-
export declare const defineBoxColorPickerElement: (tagName?: string) => typeof BoxColorPickerElement;
|
|
34
34
|
export {};
|
|
@@ -117,7 +117,8 @@ const colorPickerStyles = `
|
|
|
117
117
|
|
|
118
118
|
${boeFormFieldErrorStyles}
|
|
119
119
|
`;
|
|
120
|
-
export class
|
|
120
|
+
export class ColorPicker extends FormAssociatedElement {
|
|
121
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
121
122
|
static get observedAttributes() {
|
|
122
123
|
return [
|
|
123
124
|
...FormAssociatedElement.formObservedAttributes,
|
|
@@ -304,11 +305,4 @@ export class BoxColorPickerElement extends FormAssociatedElement {
|
|
|
304
305
|
this.applyInvalidState(this.inputEl, this.errorEl);
|
|
305
306
|
}
|
|
306
307
|
}
|
|
307
|
-
|
|
308
|
-
const existingElement = customElements.get(tagName);
|
|
309
|
-
if (existingElement) {
|
|
310
|
-
return existingElement;
|
|
311
|
-
}
|
|
312
|
-
customElements.define(tagName, BoxColorPickerElement);
|
|
313
|
-
return BoxColorPickerElement;
|
|
314
|
-
};
|
|
308
|
+
ColorPicker.register();
|
|
@@ -3,19 +3,35 @@ import type { FormValue } from "../../core/index.js";
|
|
|
3
3
|
type BoxComboboxOption = {
|
|
4
4
|
label: string;
|
|
5
5
|
value: string;
|
|
6
|
+
/** Secondary line rendered under the label (lightweight custom render). */
|
|
7
|
+
description?: string;
|
|
8
|
+
/** Options sharing a group render under a divider header. */
|
|
9
|
+
group?: string;
|
|
10
|
+
disabled?: boolean;
|
|
6
11
|
};
|
|
7
|
-
export declare class
|
|
12
|
+
export declare class Combobox extends FormAssociatedElement {
|
|
13
|
+
static readonly tagName: string;
|
|
8
14
|
static get observedAttributes(): string[];
|
|
9
15
|
private valueInternal;
|
|
16
|
+
private open;
|
|
17
|
+
private activeId;
|
|
18
|
+
private filterText;
|
|
19
|
+
private positionCleanup;
|
|
20
|
+
private listboxId;
|
|
10
21
|
private inputEl;
|
|
11
22
|
private labelEl;
|
|
12
|
-
private
|
|
23
|
+
private controlEl;
|
|
24
|
+
private listboxEl;
|
|
13
25
|
private errorEl;
|
|
26
|
+
private readonly onDocumentPointerDown;
|
|
14
27
|
private findOptionByLabel;
|
|
15
28
|
private findOptionByValue;
|
|
16
29
|
private getDisplayValue;
|
|
30
|
+
/** Resolve typed text to an option value when it matches a label (free-text otherwise). */
|
|
17
31
|
private resolveInputValue;
|
|
18
32
|
private commitInputValue;
|
|
33
|
+
/** Options visible for the current filter text (null = show all). */
|
|
34
|
+
private visibleOptions;
|
|
19
35
|
get disabled(): boolean;
|
|
20
36
|
set disabled(value: boolean);
|
|
21
37
|
get label(): string;
|
|
@@ -24,14 +40,27 @@ export declare class BoxComboboxElement extends FormAssociatedElement {
|
|
|
24
40
|
set options(value: BoxComboboxOption[]);
|
|
25
41
|
get placeholder(): string;
|
|
26
42
|
set placeholder(value: string);
|
|
43
|
+
get placement(): string;
|
|
44
|
+
set placement(value: string);
|
|
45
|
+
private resolvedPlacement;
|
|
27
46
|
get value(): string;
|
|
28
47
|
set value(nextValue: string);
|
|
29
48
|
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
30
49
|
protected getFormValue(): FormValue;
|
|
31
50
|
protected restoreFormValue(value: FormValue): void;
|
|
51
|
+
disconnectedCallback(): void;
|
|
52
|
+
private stopTracking;
|
|
53
|
+
private commitValue;
|
|
54
|
+
private optionId;
|
|
55
|
+
private openListbox;
|
|
56
|
+
private closeListbox;
|
|
57
|
+
private optionEls;
|
|
58
|
+
private setActive;
|
|
59
|
+
private moveActive;
|
|
60
|
+
private selectActive;
|
|
32
61
|
protected renderTemplate(): void;
|
|
33
62
|
protected setupListeners(): void;
|
|
63
|
+
private renderOptions;
|
|
34
64
|
protected update(): void;
|
|
35
65
|
}
|
|
36
|
-
export declare const defineBoxComboboxElement: (tagName?: string) => typeof BoxComboboxElement;
|
|
37
66
|
export {};
|