@unofficialbox/box-open-elements 0.4.0 → 0.6.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 +39 -14
- 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 +2 -2
- package/dist/components/actions/link-button.js +3 -9
- 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 +2 -2
- package/dist/components/collections/carousel.js +3 -9
- package/dist/components/collections/datalist-item.d.ts +2 -2
- package/dist/components/collections/datalist-item.js +3 -9
- package/dist/components/collections/draggable-list.d.ts +2 -2
- package/dist/components/collections/draggable-list.js +3 -9
- package/dist/components/collections/grid-view.d.ts +2 -2
- package/dist/components/collections/grid-view.js +3 -9
- package/dist/components/collections/pagination.d.ts +2 -2
- package/dist/components/collections/pagination.js +3 -9
- package/dist/components/collections/table.d.ts +59 -5
- package/dist/components/collections/table.js +342 -29
- 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 +2 -2
- package/dist/components/feedback/alert.js +3 -9
- package/dist/components/feedback/badge.d.ts +2 -2
- package/dist/components/feedback/badge.js +3 -9
- package/dist/components/feedback/badgeable.d.ts +2 -2
- package/dist/components/feedback/badgeable.js +3 -9
- package/dist/components/feedback/chip.d.ts +2 -2
- package/dist/components/feedback/chip.js +3 -9
- package/dist/components/feedback/due-badge.d.ts +38 -0
- package/dist/components/feedback/due-badge.js +168 -0
- package/dist/components/feedback/due-types.d.ts +32 -0
- package/dist/components/feedback/due-types.js +91 -0
- 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 +2 -2
- package/dist/components/feedback/error-mask.js +3 -9
- package/dist/components/feedback/help-text.d.ts +2 -2
- package/dist/components/feedback/help-text.js +3 -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 +53 -7
- package/dist/components/feedback/progress-steps.js +203 -31
- package/dist/components/feedback/skeleton.d.ts +2 -2
- package/dist/components/feedback/skeleton.js +3 -9
- package/dist/components/feedback/spinner.d.ts +2 -2
- package/dist/components/feedback/spinner.js +3 -9
- package/dist/components/feedback/stage-path.d.ts +44 -0
- package/dist/components/feedback/stage-path.js +235 -0
- package/dist/components/feedback/toast.d.ts +2 -2
- package/dist/components/feedback/toast.js +3 -9
- 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 +2 -2
- package/dist/components/forms/category-selector.js +3 -9
- 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 +2 -2
- package/dist/components/forms/checkbox.js +3 -9
- 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 +2 -2
- package/dist/components/forms/combobox.js +3 -9
- package/dist/components/forms/date-field.d.ts +2 -2
- package/dist/components/forms/date-field.js +3 -9
- package/dist/components/forms/dropdown.d.ts +2 -2
- package/dist/components/forms/dropdown.js +3 -9
- 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 +2 -2
- package/dist/components/forms/radio-group.js +3 -9
- 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 +2 -2
- package/dist/components/forms/search-field.js +3 -9
- package/dist/components/forms/select.d.ts +23 -2
- package/dist/components/forms/select.js +103 -12
- 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 +23 -2
- package/dist/components/forms/text-field.js +103 -10
- package/dist/components/forms/time-field.d.ts +2 -2
- package/dist/components/forms/time-field.js +4 -10
- package/dist/components/identity/avatar.d.ts +2 -2
- package/dist/components/identity/avatar.js +3 -9
- package/dist/components/identity/contact-datalist-item.d.ts +2 -2
- package/dist/components/identity/contact-datalist-item.js +3 -9
- 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 +16 -2
- package/dist/components/layout/nav-sidebar.js +52 -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 +2 -2
- package/dist/components/layout/sidebar-toggle-button.js +3 -9
- package/dist/components/layout/split-view.d.ts +16 -2
- package/dist/components/layout/split-view.js +83 -10
- package/dist/components/navigation/accordion.d.ts +2 -2
- package/dist/components/navigation/accordion.js +3 -9
- 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/command-palette.d.ts +62 -0
- package/dist/components/overlays/command-palette.js +537 -0
- package/dist/components/overlays/command-types.d.ts +90 -0
- package/dist/components/overlays/command-types.js +259 -0
- 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 +20 -2
- package/dist/components/overlays/drawer.js +138 -18
- package/dist/components/overlays/guide-tooltip.d.ts +2 -2
- package/dist/components/overlays/guide-tooltip.js +3 -9
- package/dist/components/overlays/popover.d.ts +2 -2
- package/dist/components/overlays/popover.js +3 -9
- package/dist/components/overlays/shortcuts-overlay.d.ts +48 -0
- package/dist/components/overlays/shortcuts-overlay.js +385 -0
- package/dist/components/overlays/tooltip.d.ts +2 -2
- package/dist/components/overlays/tooltip.js +4 -10
- 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/element-maps.d.ts +292 -0
- package/dist/element-maps.js +1 -0
- 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/activity-density.d.ts +1 -0
- package/dist/entries/activity-density.js +1 -0
- package/dist/entries/agent-chat.d.ts +1 -0
- package/dist/entries/agent-chat.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/audit-log.d.ts +1 -0
- package/dist/entries/audit-log.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/command-palette.d.ts +1 -0
- package/dist/entries/command-palette.js +1 -0
- package/dist/entries/compare-view.d.ts +1 -0
- package/dist/entries/compare-view.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/diff-viewer.d.ts +1 -0
- package/dist/entries/diff-viewer.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/due-badge.d.ts +1 -0
- package/dist/entries/due-badge.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/form-wizard.d.ts +1 -0
- package/dist/entries/form-wizard.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/lineage-graph.d.ts +1 -0
- package/dist/entries/lineage-graph.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/notification-bell.d.ts +1 -0
- package/dist/entries/notification-bell.js +1 -0
- package/dist/entries/notification-inbox.d.ts +1 -0
- package/dist/entries/notification-inbox.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/provenance-strip.d.ts +1 -0
- package/dist/entries/provenance-strip.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/run-trace.d.ts +1 -0
- package/dist/entries/run-trace.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/shortcuts-overlay.d.ts +1 -0
- package/dist/entries/shortcuts-overlay.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/signature-ceremony.d.ts +1 -0
- package/dist/entries/signature-ceremony.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/stage-path.d.ts +1 -0
- package/dist/entries/stage-path.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/timeline.d.ts +1 -0
- package/dist/entries/timeline.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/entries/version-graph.d.ts +1 -0
- package/dist/entries/version-graph.js +1 -0
- package/dist/entries/version-list.d.ts +1 -0
- package/dist/entries/version-list.js +1 -0
- package/dist/entries/wizard-summary.d.ts +1 -0
- package/dist/entries/wizard-summary.js +1 -0
- package/dist/entries/work-queue.d.ts +1 -0
- package/dist/entries/work-queue.js +1 -0
- package/dist/entries/workload-board.d.ts +1 -0
- package/dist/entries/workload-board.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/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 +27 -2
- package/dist/index.js +24 -1
- package/dist/patterns/agent-chat/agent-chat.d.ts +75 -0
- package/dist/patterns/agent-chat/agent-chat.js +820 -0
- package/dist/patterns/agent-chat/controller.d.ts +27 -0
- package/dist/patterns/agent-chat/controller.js +182 -0
- package/dist/patterns/agent-chat/index.d.ts +3 -0
- package/dist/patterns/agent-chat/index.js +6 -0
- package/dist/patterns/agent-chat/types.d.ts +109 -0
- package/dist/patterns/agent-chat/types.js +1 -0
- package/dist/patterns/audit/activity-density.d.ts +68 -0
- package/dist/patterns/audit/activity-density.js +428 -0
- package/dist/patterns/audit/audit-log.d.ts +81 -0
- package/dist/patterns/audit/audit-log.js +794 -0
- package/dist/patterns/audit/index.d.ts +3 -0
- package/dist/patterns/audit/index.js +7 -0
- package/dist/patterns/audit/shared.d.ts +10 -0
- package/dist/patterns/audit/shared.js +50 -0
- package/dist/patterns/audit/types.d.ts +143 -0
- package/dist/patterns/audit/types.js +327 -0
- package/dist/patterns/content-explorer/actions/controller.js +12 -2
- 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/box-transport.js +117 -25
- package/dist/patterns/content-explorer/content-explorer.d.ts +28 -16
- package/dist/patterns/content-explorer/content-explorer.js +41 -14
- package/dist/patterns/content-explorer/contracts.d.ts +24 -1
- package/dist/patterns/content-explorer/contracts.js +68 -11
- package/dist/patterns/content-explorer/controller.d.ts +16 -1
- package/dist/patterns/content-explorer/controller.js +130 -4
- package/dist/patterns/content-explorer/navigation/controller.js +11 -9
- package/dist/patterns/content-explorer/types.d.ts +58 -1
- package/dist/patterns/content-picker/content-picker.d.ts +71 -0
- package/dist/patterns/content-picker/content-picker.js +747 -0
- package/dist/patterns/content-picker/controller.d.ts +38 -0
- package/dist/patterns/content-picker/controller.js +141 -0
- package/dist/patterns/content-picker/index.d.ts +3 -0
- package/dist/patterns/content-picker/index.js +6 -0
- package/dist/patterns/content-picker/types.d.ts +52 -0
- package/dist/patterns/content-picker/types.js +26 -0
- package/dist/patterns/content-sidebar/content-sidebar.d.ts +43 -0
- package/dist/patterns/content-sidebar/content-sidebar.js +293 -0
- package/dist/patterns/content-sidebar/index.d.ts +2 -0
- package/dist/patterns/content-sidebar/index.js +4 -0
- package/dist/patterns/content-sidebar/types.d.ts +18 -0
- package/dist/patterns/content-sidebar/types.js +20 -0
- package/dist/patterns/content-uploader/box-transport.d.ts +14 -0
- package/dist/patterns/content-uploader/box-transport.js +54 -0
- package/dist/patterns/content-uploader/content-uploader.d.ts +62 -0
- package/dist/patterns/content-uploader/content-uploader.js +559 -0
- package/dist/patterns/content-uploader/controller.d.ts +39 -0
- package/dist/patterns/content-uploader/controller.js +227 -0
- package/dist/patterns/content-uploader/index.d.ts +4 -0
- package/dist/patterns/content-uploader/index.js +8 -0
- package/dist/patterns/content-uploader/types.d.ts +120 -0
- package/dist/patterns/content-uploader/types.js +38 -0
- package/dist/patterns/diff/compare-view.d.ts +47 -0
- package/dist/patterns/diff/compare-view.js +276 -0
- package/dist/patterns/diff/diff-viewer.d.ts +42 -0
- package/dist/patterns/diff/diff-viewer.js +434 -0
- package/dist/patterns/diff/engine.d.ts +22 -0
- package/dist/patterns/diff/engine.js +276 -0
- package/dist/patterns/diff/index.d.ts +4 -0
- package/dist/patterns/diff/index.js +8 -0
- package/dist/patterns/diff/types.d.ts +69 -0
- package/dist/patterns/diff/types.js +24 -0
- 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/form-wizard/controller.d.ts +39 -0
- package/dist/patterns/form-wizard/controller.js +157 -0
- package/dist/patterns/form-wizard/form-wizard.d.ts +63 -0
- package/dist/patterns/form-wizard/form-wizard.js +468 -0
- package/dist/patterns/form-wizard/index.d.ts +4 -0
- package/dist/patterns/form-wizard/index.js +8 -0
- package/dist/patterns/form-wizard/types.d.ts +109 -0
- package/dist/patterns/form-wizard/types.js +83 -0
- package/dist/patterns/form-wizard/wizard-summary.d.ts +62 -0
- package/dist/patterns/form-wizard/wizard-summary.js +324 -0
- 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/internal/safe-href.d.ts +17 -0
- package/dist/patterns/internal/safe-href.js +17 -0
- 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/lineage/index.d.ts +3 -0
- package/dist/patterns/lineage/index.js +6 -0
- package/dist/patterns/lineage/lineage-graph.d.ts +30 -0
- package/dist/patterns/lineage/lineage-graph.js +434 -0
- package/dist/patterns/lineage/provenance-strip.d.ts +22 -0
- package/dist/patterns/lineage/provenance-strip.js +194 -0
- package/dist/patterns/lineage/types.d.ts +53 -0
- package/dist/patterns/lineage/types.js +49 -0
- 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/notifications/index.d.ts +3 -0
- package/dist/patterns/notifications/index.js +6 -0
- package/dist/patterns/notifications/notification-bell.d.ts +38 -0
- package/dist/patterns/notifications/notification-bell.js +198 -0
- package/dist/patterns/notifications/notification-inbox.d.ts +46 -0
- package/dist/patterns/notifications/notification-inbox.js +537 -0
- package/dist/patterns/notifications/types.d.ts +61 -0
- package/dist/patterns/notifications/types.js +108 -0
- package/dist/patterns/preview/annotation-inspector.d.ts +27 -8
- package/dist/patterns/preview/annotation-inspector.js +242 -103
- package/dist/patterns/preview/annotation-thread.d.ts +27 -7
- package/dist/patterns/preview/annotation-thread.js +236 -91
- package/dist/patterns/preview/annotation-toolbar.d.ts +22 -8
- package/dist/patterns/preview/annotation-toolbar.js +165 -105
- package/dist/patterns/preview/content-preview-adapter.d.ts +10 -1
- package/dist/patterns/preview/content-preview-adapter.js +26 -1
- package/dist/patterns/preview/preview-element.d.ts +17 -4
- package/dist/patterns/preview/preview-element.js +226 -61
- package/dist/patterns/preview/provider-adapter.d.ts +47 -0
- package/dist/patterns/preview/provider-adapter.js +17 -0
- package/dist/patterns/run/index.d.ts +2 -0
- package/dist/patterns/run/index.js +4 -0
- package/dist/patterns/run/run-trace.d.ts +40 -0
- package/dist/patterns/run/run-trace.js +441 -0
- package/dist/patterns/run/types.d.ts +66 -0
- package/dist/patterns/run/types.js +152 -0
- 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/signature/index.d.ts +2 -0
- package/dist/patterns/signature/index.js +4 -0
- package/dist/patterns/signature/signature-ceremony.d.ts +33 -0
- package/dist/patterns/signature/signature-ceremony.js +317 -0
- package/dist/patterns/signature/types.d.ts +68 -0
- package/dist/patterns/signature/types.js +89 -0
- 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/dist/patterns/timeline/index.d.ts +2 -0
- package/dist/patterns/timeline/index.js +4 -0
- package/dist/patterns/timeline/timeline.d.ts +27 -0
- package/dist/patterns/timeline/timeline.js +430 -0
- package/dist/patterns/timeline/types.d.ts +36 -0
- package/dist/patterns/timeline/types.js +27 -0
- package/dist/patterns/versions/graph-layout.d.ts +43 -0
- package/dist/patterns/versions/graph-layout.js +159 -0
- package/dist/patterns/versions/index.d.ts +4 -0
- package/dist/patterns/versions/index.js +8 -0
- package/dist/patterns/versions/shared.d.ts +4 -0
- package/dist/patterns/versions/shared.js +13 -0
- package/dist/patterns/versions/types.d.ts +37 -0
- package/dist/patterns/versions/types.js +39 -0
- package/dist/patterns/versions/version-graph.d.ts +36 -0
- package/dist/patterns/versions/version-graph.js +438 -0
- package/dist/patterns/versions/version-list.d.ts +39 -0
- package/dist/patterns/versions/version-list.js +407 -0
- package/dist/patterns/work-queue/controller.d.ts +26 -0
- package/dist/patterns/work-queue/controller.js +150 -0
- package/dist/patterns/work-queue/index.d.ts +4 -0
- package/dist/patterns/work-queue/index.js +7 -0
- package/dist/patterns/work-queue/types.d.ts +128 -0
- package/dist/patterns/work-queue/types.js +45 -0
- package/dist/patterns/work-queue/work-queue.d.ts +48 -0
- package/dist/patterns/work-queue/work-queue.js +534 -0
- package/dist/patterns/work-queue/workload-board.d.ts +53 -0
- package/dist/patterns/work-queue/workload-board.js +608 -0
- package/package.json +93 -5
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command model and the pure match/rank/group engine behind
|
|
3
|
+
* `box-command-palette`. DOM-free and deterministic, so ranking can be
|
|
4
|
+
* tested and reused (a host can drive its own launcher from the same
|
|
5
|
+
* functions).
|
|
6
|
+
*/
|
|
7
|
+
export const COMMAND_UNGROUPED_KEY = "";
|
|
8
|
+
export const COMMAND_UNGROUPED_LABEL = "Other";
|
|
9
|
+
/** Scoring weights. Tuned so an exact prefix always beats a scattered subsequence. */
|
|
10
|
+
const SCORE_EXACT = 1000;
|
|
11
|
+
const SCORE_PREFIX = 500;
|
|
12
|
+
const SCORE_WORD_START = 250;
|
|
13
|
+
const SCORE_SUBSTRING = 120;
|
|
14
|
+
const SCORE_CONSECUTIVE = 8;
|
|
15
|
+
const SCORE_KEYWORD = 40;
|
|
16
|
+
const PENALTY_DISTANCE = 1;
|
|
17
|
+
const isWordBoundary = (text, index) => index === 0 || /[\s\-_/.]/.test(text[index - 1]);
|
|
18
|
+
/**
|
|
19
|
+
* Subsequence match: every query character must appear in order. Returns the
|
|
20
|
+
* matched indices, preferring word starts and consecutive runs — so "cl" hits
|
|
21
|
+
* "**Cl**ause" ahead of "Can**c**e**l**".
|
|
22
|
+
*/
|
|
23
|
+
const subsequence = (haystack, needle) => {
|
|
24
|
+
const ranges = [];
|
|
25
|
+
let score = 0;
|
|
26
|
+
let cursor = 0;
|
|
27
|
+
let previous = -1;
|
|
28
|
+
for (const character of needle) {
|
|
29
|
+
let index = haystack.indexOf(character, cursor);
|
|
30
|
+
if (index === -1) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
// Prefer a later occurrence if it starts a word — matching initials reads
|
|
34
|
+
// far better than matching the middle of the first word.
|
|
35
|
+
let candidate = index;
|
|
36
|
+
while (candidate !== -1 && !isWordBoundary(haystack, candidate)) {
|
|
37
|
+
const next = haystack.indexOf(character, candidate + 1);
|
|
38
|
+
if (next === -1) {
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
if (isWordBoundary(haystack, next)) {
|
|
42
|
+
candidate = next;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
candidate = next;
|
|
46
|
+
}
|
|
47
|
+
if (candidate !== -1 && isWordBoundary(haystack, candidate)) {
|
|
48
|
+
index = candidate;
|
|
49
|
+
}
|
|
50
|
+
ranges.push(index);
|
|
51
|
+
if (isWordBoundary(haystack, index)) {
|
|
52
|
+
score += SCORE_WORD_START;
|
|
53
|
+
}
|
|
54
|
+
if (previous !== -1 && index === previous + 1) {
|
|
55
|
+
score += SCORE_CONSECUTIVE;
|
|
56
|
+
}
|
|
57
|
+
score -= Math.min(index - cursor, 20) * PENALTY_DISTANCE;
|
|
58
|
+
previous = index;
|
|
59
|
+
cursor = index + 1;
|
|
60
|
+
}
|
|
61
|
+
return { score, ranges };
|
|
62
|
+
};
|
|
63
|
+
const scoreCommand = (command, query) => {
|
|
64
|
+
const label = command.label.toLowerCase();
|
|
65
|
+
if (label === query) {
|
|
66
|
+
return { score: SCORE_EXACT, ranges: [...label].map((_, index) => index) };
|
|
67
|
+
}
|
|
68
|
+
const substringIndex = label.indexOf(query);
|
|
69
|
+
if (substringIndex === 0) {
|
|
70
|
+
return {
|
|
71
|
+
score: SCORE_PREFIX,
|
|
72
|
+
ranges: Array.from({ length: query.length }, (_, index) => index),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (substringIndex > 0) {
|
|
76
|
+
return {
|
|
77
|
+
score: SCORE_SUBSTRING + (isWordBoundary(label, substringIndex) ? SCORE_WORD_START : 0),
|
|
78
|
+
ranges: Array.from({ length: query.length }, (_, index) => substringIndex + index),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const bySubsequence = subsequence(label, query);
|
|
82
|
+
if (bySubsequence) {
|
|
83
|
+
return bySubsequence;
|
|
84
|
+
}
|
|
85
|
+
// Keywords match but never highlight — they are not on screen.
|
|
86
|
+
for (const keyword of command.keywords ?? []) {
|
|
87
|
+
if (keyword.toLowerCase().includes(query)) {
|
|
88
|
+
return { score: SCORE_KEYWORD, ranges: [] };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Rank commands against a query.
|
|
95
|
+
*
|
|
96
|
+
* An empty query returns everything in recent-first then input order, which
|
|
97
|
+
* is what a palette should show when it opens. Ties are broken by input order
|
|
98
|
+
* (the sort is stable), never by object identity, so the same catalogue always
|
|
99
|
+
* renders the same way.
|
|
100
|
+
*/
|
|
101
|
+
export const matchCommands = (commands, query, options = {}) => {
|
|
102
|
+
const recent = options.recentIds ?? [];
|
|
103
|
+
const recentRank = new Map(recent.map((id, index) => [id, recent.length - index]));
|
|
104
|
+
const normalized = query.trim().toLowerCase();
|
|
105
|
+
const pool = options.hideDisabled ? commands.filter(command => !command.disabled) : commands;
|
|
106
|
+
if (!normalized) {
|
|
107
|
+
return [...pool]
|
|
108
|
+
.map(command => ({
|
|
109
|
+
command,
|
|
110
|
+
score: (recentRank.get(command.id) ?? 0) * 10,
|
|
111
|
+
ranges: [],
|
|
112
|
+
}))
|
|
113
|
+
.sort((left, right) => right.score - left.score);
|
|
114
|
+
}
|
|
115
|
+
const matches = [];
|
|
116
|
+
for (const command of pool) {
|
|
117
|
+
const scored = scoreCommand(command, normalized);
|
|
118
|
+
if (!scored) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
matches.push({
|
|
122
|
+
command,
|
|
123
|
+
// A disabled command still matches, but never outranks a usable one.
|
|
124
|
+
score: scored.score + (recentRank.get(command.id) ?? 0) - (command.disabled ? SCORE_EXACT : 0),
|
|
125
|
+
ranges: scored.ranges,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return matches.sort((left, right) => right.score - left.score);
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Bucket ranked matches into sections, preserving rank order both between
|
|
132
|
+
* groups (a group leads where its best match ranks) and within them.
|
|
133
|
+
* Ungrouped commands trail.
|
|
134
|
+
*/
|
|
135
|
+
export const groupCommandMatches = (matches) => {
|
|
136
|
+
const groups = new Map();
|
|
137
|
+
for (const match of matches) {
|
|
138
|
+
const key = match.command.group ?? COMMAND_UNGROUPED_KEY;
|
|
139
|
+
let group = groups.get(key);
|
|
140
|
+
if (!group) {
|
|
141
|
+
group = { key, label: key || COMMAND_UNGROUPED_LABEL, matches: [] };
|
|
142
|
+
groups.set(key, group);
|
|
143
|
+
}
|
|
144
|
+
group.matches.push(match);
|
|
145
|
+
}
|
|
146
|
+
const ordered = [...groups.values()];
|
|
147
|
+
const trailing = groups.get(COMMAND_UNGROUPED_KEY);
|
|
148
|
+
if (!trailing) {
|
|
149
|
+
return ordered;
|
|
150
|
+
}
|
|
151
|
+
return [...ordered.filter(group => group.key !== COMMAND_UNGROUPED_KEY), trailing];
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* The commands that declare a keyboard shortcut, grouped for a shortcuts
|
|
155
|
+
* sheet. Takes the same catalogue the palette does, so one list drives both
|
|
156
|
+
* surfaces and a shortcut can never be documented but unreachable — or
|
|
157
|
+
* reachable but undocumented.
|
|
158
|
+
*
|
|
159
|
+
* Groups keep catalogue order, with the ungrouped section trailing, matching
|
|
160
|
+
* how the palette sections its results.
|
|
161
|
+
*/
|
|
162
|
+
export const groupShortcutCommands = (commands) => {
|
|
163
|
+
const groups = new Map();
|
|
164
|
+
for (const command of commands) {
|
|
165
|
+
if (!command.shortcut) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const key = command.group ?? COMMAND_UNGROUPED_KEY;
|
|
169
|
+
let group = groups.get(key);
|
|
170
|
+
if (!group) {
|
|
171
|
+
group = { key, label: key || COMMAND_UNGROUPED_LABEL, commands: [] };
|
|
172
|
+
groups.set(key, group);
|
|
173
|
+
}
|
|
174
|
+
group.commands.push(command);
|
|
175
|
+
}
|
|
176
|
+
const ordered = [...groups.values()];
|
|
177
|
+
const trailing = groups.get(COMMAND_UNGROUPED_KEY);
|
|
178
|
+
if (!trailing) {
|
|
179
|
+
return ordered;
|
|
180
|
+
}
|
|
181
|
+
return [...ordered.filter(group => group.key !== COMMAND_UNGROUPED_KEY), trailing];
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Split a shortcut string into its keys: `mod+shift+k` → `["mod","shift","k"]`.
|
|
185
|
+
* Rendering each key separately is what lets a sheet show them as `<kbd>`
|
|
186
|
+
* elements rather than one opaque run of text.
|
|
187
|
+
*
|
|
188
|
+
* `+` is both the separator and a real key — `mod++` is how you write the zoom
|
|
189
|
+
* shortcut. A `+` with no key pending in front of it is the key itself, so
|
|
190
|
+
* `mod++` and `ctrl + +` both give `["mod", "+"]` rather than dropping it.
|
|
191
|
+
*/
|
|
192
|
+
export const splitShortcutKeys = (shortcut) => {
|
|
193
|
+
const keys = [];
|
|
194
|
+
let buffer = "";
|
|
195
|
+
const flush = () => {
|
|
196
|
+
const key = buffer.trim();
|
|
197
|
+
if (key) {
|
|
198
|
+
keys.push(key);
|
|
199
|
+
}
|
|
200
|
+
buffer = "";
|
|
201
|
+
};
|
|
202
|
+
for (const character of shortcut) {
|
|
203
|
+
if (character !== "+") {
|
|
204
|
+
buffer += character;
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (!buffer.trim()) {
|
|
208
|
+
buffer = "+";
|
|
209
|
+
}
|
|
210
|
+
flush();
|
|
211
|
+
}
|
|
212
|
+
flush();
|
|
213
|
+
return keys;
|
|
214
|
+
};
|
|
215
|
+
/** Split a label into highlighted and plain runs for rendering. */
|
|
216
|
+
export const splitCommandLabel = (label, ranges) => {
|
|
217
|
+
if (ranges.length === 0) {
|
|
218
|
+
return [{ text: label, match: false }];
|
|
219
|
+
}
|
|
220
|
+
const flags = new Set(ranges);
|
|
221
|
+
const parts = [];
|
|
222
|
+
let buffer = "";
|
|
223
|
+
let bufferMatch = flags.has(0);
|
|
224
|
+
for (let index = 0; index < label.length; index += 1) {
|
|
225
|
+
const isMatch = flags.has(index);
|
|
226
|
+
if (isMatch !== bufferMatch && buffer) {
|
|
227
|
+
parts.push({ text: buffer, match: bufferMatch });
|
|
228
|
+
buffer = "";
|
|
229
|
+
}
|
|
230
|
+
bufferMatch = isMatch;
|
|
231
|
+
buffer += label[index];
|
|
232
|
+
}
|
|
233
|
+
if (buffer) {
|
|
234
|
+
parts.push({ text: buffer, match: bufferMatch });
|
|
235
|
+
}
|
|
236
|
+
return parts;
|
|
237
|
+
};
|
|
238
|
+
/** Attribute payloads are author input — validate every record. */
|
|
239
|
+
export const isCommandDescriptorRecord = (value) => {
|
|
240
|
+
if (typeof value !== "object" || value === null) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
const command = value;
|
|
244
|
+
if (typeof command.id !== "string" || command.id.length === 0) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
if (typeof command.label !== "string" || command.label.length === 0) {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
if (command.keywords !== undefined) {
|
|
251
|
+
if (!Array.isArray(command.keywords)) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
if (command.keywords.some(keyword => typeof keyword !== "string")) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return true;
|
|
259
|
+
};
|
|
@@ -12,7 +12,8 @@ export interface ContextMenuItem {
|
|
|
12
12
|
* menu at the pointer, positioned with `foundations/overlay` so it stays in the
|
|
13
13
|
* viewport. Full keyboard menu: arrows, Home/End, Enter/Space, Escape.
|
|
14
14
|
*/
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class ContextMenu extends BaseElement {
|
|
16
|
+
static readonly tagName: string;
|
|
16
17
|
static get observedAttributes(): string[];
|
|
17
18
|
private openValue;
|
|
18
19
|
private targetEl;
|
|
@@ -39,4 +40,3 @@ export declare class BoxContextMenuElement extends BaseElement {
|
|
|
39
40
|
private unbindDocument;
|
|
40
41
|
protected update(): void;
|
|
41
42
|
}
|
|
42
|
-
export declare const defineBoxContextMenuElement: (tagName?: string) => typeof BoxContextMenuElement;
|
|
@@ -82,7 +82,8 @@ const contextMenuStyles = `
|
|
|
82
82
|
* menu at the pointer, positioned with `foundations/overlay` so it stays in the
|
|
83
83
|
* viewport. Full keyboard menu: arrows, Home/End, Enter/Space, Escape.
|
|
84
84
|
*/
|
|
85
|
-
export class
|
|
85
|
+
export class ContextMenu extends BaseElement {
|
|
86
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
86
87
|
static get observedAttributes() {
|
|
87
88
|
return ["items", "disabled"];
|
|
88
89
|
}
|
|
@@ -250,11 +251,4 @@ export class BoxContextMenuElement extends BaseElement {
|
|
|
250
251
|
this.renderItems();
|
|
251
252
|
}
|
|
252
253
|
}
|
|
253
|
-
|
|
254
|
-
const existingElement = customElements.get(tagName);
|
|
255
|
-
if (existingElement) {
|
|
256
|
-
return existingElement;
|
|
257
|
-
}
|
|
258
|
-
customElements.define(tagName, BoxContextMenuElement);
|
|
259
|
-
return BoxContextMenuElement;
|
|
260
|
-
};
|
|
254
|
+
ContextMenu.register();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseElement } from "../../core/index.js";
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class Dialog extends BaseElement {
|
|
3
|
+
static readonly tagName: string;
|
|
3
4
|
static get observedAttributes(): string[];
|
|
4
5
|
private openValue;
|
|
5
6
|
private wasOpen;
|
|
@@ -31,4 +32,3 @@ export declare class BoxDialogElement extends BaseElement {
|
|
|
31
32
|
protected setupListeners(): void;
|
|
32
33
|
protected update(): void;
|
|
33
34
|
}
|
|
34
|
-
export declare const defineBoxDialogElement: (tagName?: string) => typeof BoxDialogElement;
|
|
@@ -104,7 +104,8 @@ const dialogStyles = `
|
|
|
104
104
|
${boeNeutralInteractiveStyles('[part="cancel"]')}
|
|
105
105
|
${boeBrandInteractiveStyles('[part="confirm"]')}
|
|
106
106
|
`;
|
|
107
|
-
export class
|
|
107
|
+
export class Dialog extends BaseElement {
|
|
108
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
108
109
|
static get observedAttributes() {
|
|
109
110
|
return ["confirm-label", "description", "heading", "open", "size"];
|
|
110
111
|
}
|
|
@@ -300,11 +301,4 @@ export class BoxDialogElement extends BaseElement {
|
|
|
300
301
|
}
|
|
301
302
|
}
|
|
302
303
|
}
|
|
303
|
-
|
|
304
|
-
const existingElement = customElements.get(tagName);
|
|
305
|
-
if (existingElement) {
|
|
306
|
-
return existingElement;
|
|
307
|
-
}
|
|
308
|
-
customElements.define(tagName, BoxDialogElement);
|
|
309
|
-
return BoxDialogElement;
|
|
310
|
-
};
|
|
304
|
+
Dialog.register();
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { BaseElement } from "../../core/index.js";
|
|
2
|
-
|
|
2
|
+
/** Detail of the cancelable `dismiss` event: what asked the drawer to close. */
|
|
3
|
+
export interface DrawerDismissDetail {
|
|
4
|
+
source: "close-button" | "backdrop" | "escape";
|
|
5
|
+
}
|
|
6
|
+
export declare class Drawer extends BaseElement {
|
|
7
|
+
static readonly tagName: string;
|
|
3
8
|
static get observedAttributes(): string[];
|
|
4
9
|
private openValue;
|
|
5
10
|
private wasOpen;
|
|
@@ -17,6 +22,12 @@ export declare class BoxDrawerElement extends BaseElement {
|
|
|
17
22
|
set open(value: boolean);
|
|
18
23
|
get position(): string;
|
|
19
24
|
set position(value: string);
|
|
25
|
+
/** Width preset for side drawers, height for the bottom sheet. */
|
|
26
|
+
get size(): string;
|
|
27
|
+
set size(value: string);
|
|
28
|
+
/** Busy: a saving/loading veil over the body; Close stays reachable. */
|
|
29
|
+
get busy(): boolean;
|
|
30
|
+
set busy(value: boolean);
|
|
20
31
|
get heading(): string;
|
|
21
32
|
set heading(value: string);
|
|
22
33
|
connectedCallback(): void;
|
|
@@ -26,7 +37,14 @@ export declare class BoxDrawerElement extends BaseElement {
|
|
|
26
37
|
private portalToBody;
|
|
27
38
|
private restoreFromPortal;
|
|
28
39
|
protected renderTemplate(): void;
|
|
40
|
+
/**
|
|
41
|
+
* The unsaved-changes guard, host-owned: `dismiss` is cancelable, and a
|
|
42
|
+
* host that calls `preventDefault()` keeps the drawer open — the drawer
|
|
43
|
+
* learns nothing about forms. Programmatic `close()` is not guarded; the
|
|
44
|
+
* host asked for it.
|
|
45
|
+
*/
|
|
46
|
+
private requestDismiss;
|
|
29
47
|
protected setupListeners(): void;
|
|
30
48
|
protected update(): void;
|
|
49
|
+
private syncFooter;
|
|
31
50
|
}
|
|
32
|
-
export declare const defineBoxDrawerElement: (tagName?: string) => typeof BoxDrawerElement;
|
|
@@ -18,16 +18,23 @@ const drawerStyles = `
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
[part="drawer"] {
|
|
21
|
-
width: min(${boePanel.drawerWidth}, calc(100vw - 2rem));
|
|
21
|
+
width: min(var(--drawer-size, ${boePanel.drawerWidth}), calc(100vw - 2rem));
|
|
22
22
|
height: 100%;
|
|
23
23
|
display: grid;
|
|
24
|
-
grid-template-rows: auto minmax(0, 1fr);
|
|
24
|
+
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
25
25
|
background: ${boePanel.background};
|
|
26
26
|
color: var(--boe-token-text-text, #222222);
|
|
27
27
|
border: ${boePanel.border};
|
|
28
28
|
box-shadow: ${boeOverlay.modalShadow};
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
/* Size presets scale the travel axis: width for side drawers, height for
|
|
32
|
+
the bottom sheet. */
|
|
33
|
+
[part="drawer"][data-size="small"] { --drawer-size: 320px; --drawer-block-size: 220px; }
|
|
34
|
+
[part="drawer"][data-size="medium"] { --drawer-size: ${boePanel.drawerWidth}; --drawer-block-size: 320px; }
|
|
35
|
+
[part="drawer"][data-size="large"] { --drawer-size: 640px; --drawer-block-size: 480px; }
|
|
36
|
+
[part="drawer"][data-size="full"] { --drawer-size: 100vw; --drawer-block-size: calc(100vh - 3rem); }
|
|
37
|
+
|
|
31
38
|
[part="drawer"][data-position="left"] {
|
|
32
39
|
border-left: 0;
|
|
33
40
|
border-top-right-radius: ${boeOverlay.modalRadius};
|
|
@@ -43,7 +50,7 @@ const drawerStyles = `
|
|
|
43
50
|
[part="drawer"][data-position="bottom"] {
|
|
44
51
|
width: 100%;
|
|
45
52
|
max-width: none;
|
|
46
|
-
height: min(320px, calc(100vh - 3rem));
|
|
53
|
+
height: min(var(--drawer-block-size, 320px), calc(100vh - 3rem));
|
|
47
54
|
border-left: 0;
|
|
48
55
|
border-right: 0;
|
|
49
56
|
border-bottom: 0;
|
|
@@ -51,6 +58,19 @@ const drawerStyles = `
|
|
|
51
58
|
border-top-right-radius: ${boeOverlay.modalRadius};
|
|
52
59
|
}
|
|
53
60
|
|
|
61
|
+
/* On a phone every drawer is the screen: partial overlays waste the one
|
|
62
|
+
dimension the device is short of. */
|
|
63
|
+
@media (max-width: 640px) {
|
|
64
|
+
[part="drawer"],
|
|
65
|
+
[part="drawer"][data-position="bottom"] {
|
|
66
|
+
width: 100vw;
|
|
67
|
+
max-width: none;
|
|
68
|
+
height: 100%;
|
|
69
|
+
border: 0;
|
|
70
|
+
border-radius: 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
54
74
|
[part="header"] {
|
|
55
75
|
display: flex;
|
|
56
76
|
align-items: start;
|
|
@@ -104,13 +124,56 @@ const drawerStyles = `
|
|
|
104
124
|
${boeNeutralInteractiveStyles('[part="close"]')}
|
|
105
125
|
|
|
106
126
|
[part="body"] {
|
|
127
|
+
position: relative;
|
|
107
128
|
padding: ${boeSpace[4]};
|
|
108
129
|
overflow: auto;
|
|
109
130
|
}
|
|
131
|
+
|
|
132
|
+
/* Footer is the third grid row: it stays put while the body scrolls. */
|
|
133
|
+
[part="footer"] {
|
|
134
|
+
padding: ${boeSpace[3]} ${boeSpace[4]};
|
|
135
|
+
border-top: 1px solid var(--boe-token-stroke-stroke, #e8e8e8);
|
|
136
|
+
background: ${boePanel.background};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
[part="footer"][hidden] {
|
|
140
|
+
display: none;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
[part="busy"] {
|
|
144
|
+
position: absolute;
|
|
145
|
+
inset: 0;
|
|
146
|
+
display: grid;
|
|
147
|
+
place-items: center;
|
|
148
|
+
background: color-mix(in srgb, var(--boe-token-surface-surface, #ffffff) 65%, transparent);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
[part="busy"][hidden] {
|
|
152
|
+
display: none;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[part="busy-spinner"] {
|
|
156
|
+
inline-size: 1.6rem;
|
|
157
|
+
block-size: 1.6rem;
|
|
158
|
+
border-radius: 999px;
|
|
159
|
+
border: 3px solid color-mix(in srgb, var(--boe-token-surface-surface-brand, #0061d5) 20%, transparent);
|
|
160
|
+
border-top-color: var(--boe-token-surface-surface-brand, #0061d5);
|
|
161
|
+
animation: boe-drawer-spin 0.9s linear infinite;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@keyframes boe-drawer-spin {
|
|
165
|
+
to { transform: rotate(360deg); }
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@media (prefers-reduced-motion: reduce) {
|
|
169
|
+
[part="busy-spinner"] { animation-duration: 1.6s; }
|
|
170
|
+
}
|
|
110
171
|
`;
|
|
111
|
-
|
|
172
|
+
const DRAWER_SIZES = new Set(["small", "medium", "large", "full"]);
|
|
173
|
+
export class Drawer extends BaseElement {
|
|
174
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
112
175
|
static get observedAttributes() {
|
|
113
|
-
return ["description", "heading", "open", "position"];
|
|
176
|
+
return ["busy", "description", "heading", "open", "position", "size"];
|
|
114
177
|
}
|
|
115
178
|
openValue = false;
|
|
116
179
|
wasOpen = false;
|
|
@@ -151,6 +214,21 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
151
214
|
set position(value) {
|
|
152
215
|
this.setAttribute("position", value);
|
|
153
216
|
}
|
|
217
|
+
/** Width preset for side drawers, height for the bottom sheet. */
|
|
218
|
+
get size() {
|
|
219
|
+
const value = this.getAttribute("size");
|
|
220
|
+
return value && DRAWER_SIZES.has(value) ? value : "medium";
|
|
221
|
+
}
|
|
222
|
+
set size(value) {
|
|
223
|
+
this.setAttribute("size", value);
|
|
224
|
+
}
|
|
225
|
+
/** Busy: a saving/loading veil over the body; Close stays reachable. */
|
|
226
|
+
get busy() {
|
|
227
|
+
return this.hasAttribute("busy");
|
|
228
|
+
}
|
|
229
|
+
set busy(value) {
|
|
230
|
+
this.toggleAttribute("busy", Boolean(value));
|
|
231
|
+
}
|
|
154
232
|
get heading() {
|
|
155
233
|
return this.getAttribute("heading") ?? "Drawer";
|
|
156
234
|
}
|
|
@@ -212,6 +290,23 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
212
290
|
this.shadowRoot.innerHTML = `<div part="host"></div>`;
|
|
213
291
|
this.hostEl = this.shadowRoot.querySelector('[part="host"]');
|
|
214
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* The unsaved-changes guard, host-owned: `dismiss` is cancelable, and a
|
|
295
|
+
* host that calls `preventDefault()` keeps the drawer open — the drawer
|
|
296
|
+
* learns nothing about forms. Programmatic `close()` is not guarded; the
|
|
297
|
+
* host asked for it.
|
|
298
|
+
*/
|
|
299
|
+
requestDismiss(source) {
|
|
300
|
+
const proceed = this.dispatchEvent(new CustomEvent("dismiss", {
|
|
301
|
+
bubbles: true,
|
|
302
|
+
composed: true,
|
|
303
|
+
cancelable: true,
|
|
304
|
+
detail: { source },
|
|
305
|
+
}));
|
|
306
|
+
if (proceed) {
|
|
307
|
+
this.close();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
215
310
|
setupListeners() {
|
|
216
311
|
this.hostEl.addEventListener("click", event => {
|
|
217
312
|
const target = event.target;
|
|
@@ -219,12 +314,11 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
219
314
|
return;
|
|
220
315
|
}
|
|
221
316
|
if (target.getAttribute("part") === "backdrop") {
|
|
222
|
-
this.
|
|
317
|
+
this.requestDismiss("backdrop");
|
|
223
318
|
return;
|
|
224
319
|
}
|
|
225
320
|
if (target.closest('[part="close"]')) {
|
|
226
|
-
this.
|
|
227
|
-
this.close();
|
|
321
|
+
this.requestDismiss("close-button");
|
|
228
322
|
}
|
|
229
323
|
});
|
|
230
324
|
this.hostEl.addEventListener("keydown", event => {
|
|
@@ -235,8 +329,7 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
235
329
|
}
|
|
236
330
|
if (keyboardEvent.key === "Escape") {
|
|
237
331
|
keyboardEvent.preventDefault();
|
|
238
|
-
this.
|
|
239
|
-
this.close();
|
|
332
|
+
this.requestDismiss("escape");
|
|
240
333
|
return;
|
|
241
334
|
}
|
|
242
335
|
if (keyboardEvent.key === "Tab") {
|
|
@@ -275,15 +368,26 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
275
368
|
<div part="meta">
|
|
276
369
|
<h2 id="drawer-title"></h2>
|
|
277
370
|
<p part="description" hidden></p>
|
|
371
|
+
<slot name="header"></slot>
|
|
278
372
|
</div>
|
|
279
373
|
<button type="button" part="close" aria-label="Close drawer">Close</button>
|
|
280
374
|
</header>
|
|
281
375
|
<div part="body">
|
|
282
376
|
<slot></slot>
|
|
377
|
+
<div part="busy" hidden><span part="busy-spinner" aria-hidden="true"></span></div>
|
|
283
378
|
</div>
|
|
379
|
+
<footer part="footer" hidden>
|
|
380
|
+
<slot name="footer"></slot>
|
|
381
|
+
</footer>
|
|
284
382
|
</aside>
|
|
285
383
|
</div>
|
|
286
384
|
`;
|
|
385
|
+
// The footer row only exists when the host slots one: an empty sticky
|
|
386
|
+
// bar would just eat drawer height.
|
|
387
|
+
const footerSlot = this.hostEl.querySelector('slot[name="footer"]');
|
|
388
|
+
footerSlot?.addEventListener("slotchange", () => {
|
|
389
|
+
this.syncFooter();
|
|
390
|
+
});
|
|
287
391
|
}
|
|
288
392
|
this.backdropEl = this.hostEl.querySelector('[part="backdrop"]');
|
|
289
393
|
this.drawerEl = this.hostEl.querySelector('[part="drawer"]');
|
|
@@ -297,7 +401,23 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
297
401
|
}
|
|
298
402
|
if (this.drawerEl) {
|
|
299
403
|
this.drawerEl.dataset.position = this.position;
|
|
404
|
+
this.drawerEl.dataset.size = this.size;
|
|
405
|
+
if (this.busy) {
|
|
406
|
+
this.drawerEl.setAttribute("aria-busy", "true");
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
this.drawerEl.removeAttribute("aria-busy");
|
|
410
|
+
}
|
|
300
411
|
}
|
|
412
|
+
const busyEl = this.hostEl.querySelector('[part="busy"]');
|
|
413
|
+
if (busyEl) {
|
|
414
|
+
busyEl.hidden = !this.busy;
|
|
415
|
+
}
|
|
416
|
+
// The veil blocks the pointer; inert blocks the keyboard. Both or the
|
|
417
|
+
// busy state is a suggestion. Close (header) and footer actions stay out.
|
|
418
|
+
const bodyEl = this.hostEl.querySelector('[part="body"]');
|
|
419
|
+
bodyEl?.toggleAttribute("inert", this.busy);
|
|
420
|
+
this.syncFooter();
|
|
301
421
|
if (this.titleEl) {
|
|
302
422
|
this.titleEl.textContent = this.heading;
|
|
303
423
|
}
|
|
@@ -312,12 +432,12 @@ export class BoxDrawerElement extends BaseElement {
|
|
|
312
432
|
});
|
|
313
433
|
}
|
|
314
434
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
435
|
+
syncFooter() {
|
|
436
|
+
const footerEl = this.hostEl.querySelector('[part="footer"]');
|
|
437
|
+
const footerSlot = this.hostEl.querySelector('slot[name="footer"]');
|
|
438
|
+
if (footerEl && footerSlot) {
|
|
439
|
+
footerEl.hidden = footerSlot.assignedNodes({ flatten: true }).length === 0;
|
|
440
|
+
}
|
|
320
441
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
};
|
|
442
|
+
}
|
|
443
|
+
Drawer.register();
|
|
@@ -8,7 +8,8 @@ import { BaseElement } from "../../core/index.js";
|
|
|
8
8
|
* so the host can advance the tour (moving `for`/`step`). Positioned as a
|
|
9
9
|
* viewport-fixed overlay via `foundations/overlay`.
|
|
10
10
|
*/
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class GuideTooltip extends BaseElement {
|
|
12
|
+
static readonly tagName: string;
|
|
12
13
|
static get observedAttributes(): string[];
|
|
13
14
|
private openValue;
|
|
14
15
|
private positionCleanup;
|
|
@@ -48,4 +49,3 @@ export declare class BoxGuideTooltipElement extends BaseElement {
|
|
|
48
49
|
protected setupListeners(): void;
|
|
49
50
|
protected update(): void;
|
|
50
51
|
}
|
|
51
|
-
export declare const defineBoxGuideTooltipElement: (tagName?: string) => typeof BoxGuideTooltipElement;
|
|
@@ -155,7 +155,8 @@ const guideTooltipStyles = `
|
|
|
155
155
|
* so the host can advance the tour (moving `for`/`step`). Positioned as a
|
|
156
156
|
* viewport-fixed overlay via `foundations/overlay`.
|
|
157
157
|
*/
|
|
158
|
-
export class
|
|
158
|
+
export class GuideTooltip extends BaseElement {
|
|
159
|
+
static tagName = DEFAULT_TAG_NAME;
|
|
159
160
|
static get observedAttributes() {
|
|
160
161
|
return [
|
|
161
162
|
"open",
|
|
@@ -351,11 +352,4 @@ export class BoxGuideTooltipElement extends BaseElement {
|
|
|
351
352
|
}
|
|
352
353
|
}
|
|
353
354
|
}
|
|
354
|
-
|
|
355
|
-
const existingElement = customElements.get(tagName);
|
|
356
|
-
if (existingElement) {
|
|
357
|
-
return existingElement;
|
|
358
|
-
}
|
|
359
|
-
customElements.define(tagName, BoxGuideTooltipElement);
|
|
360
|
-
return BoxGuideTooltipElement;
|
|
361
|
-
};
|
|
355
|
+
GuideTooltip.register();
|
|
@@ -4,7 +4,8 @@ import { BaseElement } from "../../core/index.js";
|
|
|
4
4
|
* alignment, plus the legacy names (`start` = left, `end` = right).
|
|
5
5
|
*/
|
|
6
6
|
export type PopoverPlacement = "top" | "bottom" | "left" | "right" | "start" | "end" | "top-start" | "top-center" | "top-end" | "bottom-start" | "bottom-center" | "bottom-end" | "left-start" | "left-center" | "left-end" | "right-start" | "right-center" | "right-end";
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class Popover extends BaseElement {
|
|
8
|
+
static readonly tagName: string;
|
|
8
9
|
static get observedAttributes(): string[];
|
|
9
10
|
private openValue;
|
|
10
11
|
private wasOpen;
|
|
@@ -40,4 +41,3 @@ export declare class BoxPopoverElement extends BaseElement {
|
|
|
40
41
|
private startPositioning;
|
|
41
42
|
private stopPositioning;
|
|
42
43
|
}
|
|
43
|
-
export declare const defineBoxPopoverElement: (tagName?: string) => typeof BoxPopoverElement;
|