@brightspot/ui 1.10.0 → 3.0.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/dist/components/action-bar/ActionBar.d.ts +163 -0
- package/dist/components/action-bar/ActionBar.d.ts.map +1 -0
- package/dist/components/action-bar/ActionBar.js +479 -0
- package/dist/components/action-bar/ActionBar.js.map +1 -0
- package/dist/components/action-bar/ActionItem.d.ts +103 -0
- package/dist/components/action-bar/ActionItem.d.ts.map +1 -0
- package/dist/components/action-bar/ActionItem.js +237 -0
- package/dist/components/action-bar/ActionItem.js.map +1 -0
- package/dist/components/avatar/AvatarGroup.d.ts +3 -0
- package/dist/components/avatar/AvatarGroup.d.ts.map +1 -1
- package/dist/components/avatar/AvatarGroup.js +3 -0
- package/dist/components/avatar/AvatarGroup.js.map +1 -1
- package/dist/components/badge/Badge.d.ts +3 -1
- package/dist/components/badge/Badge.d.ts.map +1 -1
- package/dist/components/badge/Badge.js +2 -0
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/button-group/ButtonGroup.d.ts +138 -0
- package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
- package/dist/components/button-group/ButtonGroup.js +436 -0
- package/dist/components/button-group/ButtonGroup.js.map +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +107 -0
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/Checkbox.js +224 -0
- package/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/components/circular-progress/CircularProgress.d.ts +2 -2
- package/dist/components/circular-progress/CircularProgress.js +2 -2
- package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts +7 -2
- package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
- package/dist/components/copy-to-clipboard/CopyToClipboard.js +10 -5
- package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
- package/dist/components/dropdown/Dropdown.d.ts +8 -6
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/dropdown/Dropdown.js +33 -22
- package/dist/components/dropdown/Dropdown.js.map +1 -1
- package/dist/components/dropdown/DropdownItem.d.ts +28 -7
- package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/components/dropdown/DropdownItem.js +41 -16
- package/dist/components/dropdown/DropdownItem.js.map +1 -1
- package/dist/components/dropdown/DropdownMenu.d.ts +6 -8
- package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown/DropdownMenu.js +22 -37
- package/dist/components/dropdown/DropdownMenu.js.map +1 -1
- package/dist/components/empty-state/EmptyState.css +4 -0
- package/dist/components/empty-state/EmptyState.d.ts +103 -0
- package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
- package/dist/components/empty-state/EmptyState.js +209 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -0
- package/dist/components/icon/Icon.d.ts +23 -10
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +40 -9
- package/dist/components/icon/Icon.js.map +1 -1
- package/dist/components/icon-button/IconButton.d.ts +7 -21
- package/dist/components/icon-button/IconButton.d.ts.map +1 -1
- package/dist/components/icon-button/IconButton.js +12 -18
- package/dist/components/icon-button/IconButton.js.map +1 -1
- package/dist/components/linear-progress/LinearProgress.d.ts +2 -2
- package/dist/components/linear-progress/LinearProgress.js +2 -2
- package/dist/components/pagination/Pagination.d.ts +33 -4
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +88 -24
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/popover/Popover.d.ts +6 -0
- package/dist/components/popover/Popover.d.ts.map +1 -1
- package/dist/components/popover/Popover.js +6 -0
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/switch/Switch.d.ts +5 -1
- package/dist/components/switch/Switch.d.ts.map +1 -1
- package/dist/components/switch/Switch.js +10 -6
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/tabs/Tab.d.ts +108 -0
- package/dist/components/tabs/Tab.d.ts.map +1 -0
- package/dist/components/tabs/Tab.js +152 -0
- package/dist/components/tabs/Tab.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +126 -0
- package/dist/components/tabs/Tabs.d.ts.map +1 -0
- package/dist/components/tabs/Tabs.js +390 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/components/upload/Upload.d.ts +157 -0
- package/dist/components/upload/Upload.d.ts.map +1 -0
- package/dist/components/upload/Upload.js +538 -0
- package/dist/components/upload/Upload.js.map +1 -0
- package/dist/components/upload/UploadItem.d.ts +73 -0
- package/dist/components/upload/UploadItem.d.ts.map +1 -0
- package/dist/components/upload/UploadItem.js +180 -0
- package/dist/components/upload/UploadItem.js.map +1 -0
- package/dist/components/widget/Widget.d.ts +1 -6
- package/dist/components/widget/Widget.d.ts.map +1 -1
- package/dist/components/widget/Widget.js +1 -6
- package/dist/components/widget/Widget.js.map +1 -1
- package/dist/custom-elements.json +8445 -1989
- package/dist/storybook/assets/ActionBar.stories-DRIVI-W2.js +408 -0
- package/dist/storybook/assets/ActionItem.stories-5qlgxYNB.js +203 -0
- package/dist/storybook/assets/{Avatar.stories-B26mRkkZ.js → Avatar.stories-B3VkhRhP.js} +2 -2
- package/dist/storybook/assets/{AvatarGroup.stories-J7lVGsMY.js → AvatarGroup.stories-DOfim2NY.js} +5 -5
- package/dist/storybook/assets/{Badge.stories-BpTIV61M.js → Badge.stories-B04VNAcc.js} +2 -2
- package/dist/storybook/assets/{Button-Dg-fIrzT.js → Button-CILTcGRT.js} +1 -1
- package/dist/storybook/assets/{Button.stories-gPKRVbxk.js → Button.stories-CzWAltrX.js} +1 -1
- package/dist/storybook/assets/ButtonGroup.stories-1uAJf79o.js +588 -0
- package/dist/storybook/assets/{Celebrate.stories-DbY-sKEe.js → Celebrate.stories-BEqj0VnW.js} +7 -7
- package/dist/storybook/assets/Checkbox.stories-DXAGFS0M.js +141 -0
- package/dist/storybook/assets/{CircularProgress.stories-DeH5JYX_.js → CircularProgress.stories-D4rftw22.js} +7 -7
- package/dist/storybook/assets/{ClipboardMixin.stories-C-lZ4uuw.js → ClipboardMixin.stories-z2n2HWt1.js} +31 -28
- package/dist/storybook/assets/{Color-6BZIO3FS-Cu6zVIuG.js → Color-6BZIO3FS-C6KyMgZz.js} +1 -1
- package/dist/storybook/assets/{Colors.stories-D6XYMrTD.js → Colors.stories-CX-Ny3B_.js} +1 -1
- package/dist/storybook/assets/{CombinedEffects.stories-jFekKTYg.js → CombinedEffects.stories-BkqtiVHp.js} +33 -33
- package/dist/storybook/assets/{ComponentStatesMixin-g50hRCPT.js → ComponentStatesMixin-DLd0feFg.js} +1 -1
- package/dist/storybook/assets/{ComponentStatesMixin.stories-D3Q5pR38.js → ComponentStatesMixin.stories-D6Yc5Jgl.js} +3 -3
- package/dist/storybook/assets/{CopyToClipboard.stories-COZZ1VC2.js → CopyToClipboard.stories-B-omwDDJ.js} +16 -16
- package/dist/storybook/assets/{Debounce.stories-Dl10LAnx.js → Debounce.stories-B2vE5QIx.js} +9 -9
- package/dist/storybook/assets/{DocsRenderer-LL677BLK-CFLtMbUx.js → DocsRenderer-LL677BLK-DNUlRvMg.js} +3 -3
- package/dist/storybook/assets/{Dropdown.stories-Drwq-0Z2.js → Dropdown.stories-_bx4WDLr.js} +95 -68
- package/dist/storybook/assets/EmptyState.stories-CGMbmo77.js +318 -0
- package/dist/storybook/assets/{Events.stories-dODeR-g-.js → Events.stories-CkQYKcoZ.js} +1 -1
- package/dist/storybook/assets/{Heading.stories-CH7_-_q3.js → Heading.stories-BU5Do_od.js} +1 -1
- package/dist/storybook/assets/{HueRipple.stories-CH1Y739k.js → HueRipple.stories-Di2zmxo3.js} +11 -11
- package/dist/storybook/assets/Icon.stories-Dk4ZXhhJ.js +441 -0
- package/dist/storybook/assets/{IconButton.stories-DuzqvcnN.js → IconButton.stories-BSCiXPXa.js} +126 -146
- package/dist/storybook/assets/{LinearProgress.stories-C7IdnJd3.js → LinearProgress.stories-BGxPZuni.js} +7 -7
- package/dist/storybook/assets/Pagination.stories-z3Zq8b4f.js +252 -0
- package/dist/storybook/assets/{Popover.stories-Ca1F-wrI.js → Popover.stories-C9GxWcax.js} +33 -62
- package/dist/storybook/assets/ReadyMixin-CQw8N6P9.js +1 -0
- package/dist/storybook/assets/RovingTabindexMixin.stories-ByxLBi6m.js +192 -0
- package/dist/storybook/assets/{Rtc.stories-BVJc1vCA.js → Rtc.stories-DQJlCXWR.js} +3 -3
- package/dist/storybook/assets/ScrollShadow.stories-gjTIAbUA.js +17 -0
- package/dist/storybook/assets/{Switch.stories-BEEHP8mD.js → Switch.stories-BEeqPZiP.js} +21 -21
- package/dist/storybook/assets/Tab.stories-DpB3I-WZ.js +218 -0
- package/dist/storybook/assets/Tabs.stories-C6mG6Xi7.js +211 -0
- package/dist/storybook/assets/{Throttle.stories-C4xsYeAb.js → Throttle.stories-x9tpGeQh.js} +10 -10
- package/dist/storybook/assets/{Tooltip.stories-Ccm4AnSv.js → Tooltip.stories-CqcLqdmc.js} +2 -2
- package/dist/storybook/assets/Upload.stories-CMaAbCSH.js +447 -0
- package/dist/storybook/assets/UploadItem.stories-GB98L3JQ.js +167 -0
- package/dist/storybook/assets/{Welcome.stories-Degjk-M0.js → Welcome.stories-6h9cUZ7v.js} +1 -1
- package/dist/storybook/assets/{Widget.stories-OKnZ9sDs.js → Widget.stories-DiA1PR6Y.js} +13 -13
- package/dist/storybook/assets/{WithTooltip-65CFNBJE-CXL3TyJ2.js → WithTooltip-65CFNBJE-DTsHhBb_.js} +2 -2
- package/dist/storybook/assets/{blocks-DLdUKG_W.js → blocks-IXdn9TGW.js} +5 -5
- package/dist/storybook/assets/{formatter-EIJCOSYU-29NCxjfM.js → formatter-EIJCOSYU-Cum4J6N4.js} +1 -1
- package/dist/storybook/assets/if-defined-CgfCxQoV.js +1 -0
- package/dist/storybook/assets/iframe-BgFj0b5u.css +1 -0
- package/dist/storybook/assets/{iframe-BqvwP3or.js → iframe-Sf9RHZFu.js} +200 -200
- package/dist/storybook/assets/{index-BIyTv1BF.js → index-D605PvQH.js} +1 -1
- package/dist/storybook/assets/onFind-C41m8c_a.js +1 -0
- package/dist/storybook/assets/{onFind.stories-D64-QZqf.js → onFind.stories-MOTfGlJd.js} +53 -77
- package/dist/storybook/assets/{onRemove.stories-BICsnIJL.js → onRemove.stories-DX58Bf6f.js} +6 -10
- package/dist/storybook/assets/{onVisible.stories-DpDZP9_5.js → onVisible.stories-NNFeFeD8.js} +3 -3
- package/dist/storybook/assets/style-map-B99QiqCo.js +1 -0
- package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bz_DuQj8.js → syntaxhighlighter-ED5Y7EFY-BqQ-o9mS.js} +1 -1
- package/dist/storybook/box-illustration.svg +51 -0
- package/dist/storybook/cloud-illustration.svg +49 -0
- package/dist/storybook/docs-illustration.svg +92 -0
- package/dist/storybook/iframe.html +2 -2
- package/dist/storybook/index.json +1 -1
- package/dist/storybook/project.json +1 -1
- package/dist/tailwind-plugin-action-bar.d.ts +2 -0
- package/dist/tailwind-plugin-action-bar.d.ts.map +1 -0
- package/dist/tailwind-plugin-action-bar.js +120 -0
- package/dist/tailwind-plugin-action-bar.js.map +1 -0
- package/dist/tailwind-plugin-action-bar.ts +134 -0
- package/dist/tailwind-plugin-badge.js +5 -6
- package/dist/tailwind-plugin-badge.js.map +1 -1
- package/dist/tailwind-plugin-badge.ts +5 -6
- package/dist/tailwind-plugin-button-group.d.ts +2 -0
- package/dist/tailwind-plugin-button-group.d.ts.map +1 -0
- package/dist/tailwind-plugin-button-group.js +215 -0
- package/dist/tailwind-plugin-button-group.js.map +1 -0
- package/dist/tailwind-plugin-button-group.ts +238 -0
- package/dist/tailwind-plugin-button.js +2 -1
- package/dist/tailwind-plugin-button.js.map +1 -1
- package/dist/tailwind-plugin-button.ts +2 -1
- package/dist/tailwind-plugin-checkbox.d.ts +2 -0
- package/dist/tailwind-plugin-checkbox.d.ts.map +1 -0
- package/dist/tailwind-plugin-checkbox.js +246 -0
- package/dist/tailwind-plugin-checkbox.js.map +1 -0
- package/dist/tailwind-plugin-checkbox.ts +281 -0
- package/dist/tailwind-plugin-empty-state.d.ts +2 -0
- package/dist/tailwind-plugin-empty-state.d.ts.map +1 -0
- package/dist/tailwind-plugin-empty-state.js +113 -0
- package/dist/tailwind-plugin-empty-state.js.map +1 -0
- package/dist/tailwind-plugin-empty-state.ts +124 -0
- package/dist/tailwind-plugin-icon.js +122 -18
- package/dist/tailwind-plugin-icon.js.map +1 -1
- package/dist/tailwind-plugin-icon.ts +131 -18
- package/dist/tailwind-plugin-loader.js +3 -3
- package/dist/tailwind-plugin-loader.ts +3 -3
- package/dist/tailwind-plugin-pagination.js +13 -23
- package/dist/tailwind-plugin-pagination.js.map +1 -1
- package/dist/tailwind-plugin-pagination.ts +15 -25
- package/dist/tailwind-plugin-tabs.d.ts +2 -0
- package/dist/tailwind-plugin-tabs.d.ts.map +1 -0
- package/dist/tailwind-plugin-tabs.js +158 -0
- package/dist/tailwind-plugin-tabs.js.map +1 -0
- package/dist/tailwind-plugin-tabs.ts +169 -0
- package/dist/tailwind-plugin-upload.d.ts +2 -0
- package/dist/tailwind-plugin-upload.d.ts.map +1 -0
- package/dist/tailwind-plugin-upload.js +322 -0
- package/dist/tailwind-plugin-upload.js.map +1 -0
- package/dist/tailwind-plugin-upload.ts +362 -0
- package/dist/tailwind.config.d.ts.map +1 -1
- package/dist/tailwind.config.js +1 -0
- package/dist/tailwind.config.js.map +1 -1
- package/dist/tailwind.config.ts +1 -0
- package/dist/util/ClipboardMixin.d.ts +7 -2
- package/dist/util/ClipboardMixin.d.ts.map +1 -1
- package/dist/util/ClipboardMixin.js +15 -13
- package/dist/util/ClipboardMixin.js.map +1 -1
- package/dist/util/ComponentStatesMixin.d.ts +2 -1
- package/dist/util/ComponentStatesMixin.d.ts.map +1 -1
- package/dist/util/ComponentStatesMixin.js +4 -0
- package/dist/util/ComponentStatesMixin.js.map +1 -1
- package/dist/util/EventEmitterMixin.d.ts +58 -4
- package/dist/util/EventEmitterMixin.d.ts.map +1 -1
- package/dist/util/EventEmitterMixin.js +5 -2
- package/dist/util/EventEmitterMixin.js.map +1 -1
- package/dist/util/ProgressMixin.d.ts +9 -2
- package/dist/util/ProgressMixin.d.ts.map +1 -1
- package/dist/util/ProgressMixin.js +22 -18
- package/dist/util/ProgressMixin.js.map +1 -1
- package/dist/util/RovingTabindexMixin.d.ts +46 -0
- package/dist/util/RovingTabindexMixin.d.ts.map +1 -0
- package/dist/util/RovingTabindexMixin.js +83 -0
- package/dist/util/RovingTabindexMixin.js.map +1 -0
- package/dist/util/TetherLayout.d.ts.map +1 -1
- package/dist/util/TetherLayout.js +3 -0
- package/dist/util/TetherLayout.js.map +1 -1
- package/dist/util/TooltipMixin.d.ts.map +1 -1
- package/dist/util/TooltipMixin.js +5 -4
- package/dist/util/TooltipMixin.js.map +1 -1
- package/dist/util/upload.d.ts +53 -0
- package/dist/util/upload.d.ts.map +1 -0
- package/dist/util/upload.js +113 -0
- package/dist/util/upload.js.map +1 -0
- package/docs/components/ActionBar.md +77 -0
- package/docs/components/ActionItem.md +101 -0
- package/docs/components/Avatar.md +42 -12
- package/docs/components/AvatarGroup.md +4 -3
- package/docs/components/Badge.md +13 -1
- package/docs/components/ButtonGroup.md +91 -0
- package/docs/components/Checkbox.md +91 -0
- package/docs/components/CircularProgress.md +41 -12
- package/docs/components/CopyToClipboard.md +13 -11
- package/docs/components/Dropdown.md +51 -26
- package/docs/components/DropdownItem.md +44 -27
- package/docs/components/DropdownMenu.md +14 -14
- package/docs/components/EmptyState.md +75 -0
- package/docs/components/Icon.md +22 -14
- package/docs/components/IconButton.md +46 -21
- package/docs/components/LinearProgress.md +43 -4
- package/docs/components/Pagination.md +38 -34
- package/docs/components/Popover.md +16 -0
- package/docs/components/README.md +9 -0
- package/docs/components/Switch.md +21 -16
- package/docs/components/Tab.md +79 -0
- package/docs/components/Tabs.md +85 -0
- package/docs/components/Upload.md +112 -0
- package/docs/components/UploadItem.md +61 -0
- package/docs/components/Widget.md +12 -6
- package/package.json +4 -2
- package/dist/storybook/assets/Icon.stories-CPjM-jTU.js +0 -264
- package/dist/storybook/assets/Pagination.stories-C4cLjS_9.js +0 -272
- package/dist/storybook/assets/ReadyMixin-DNZ5dCsZ.js +0 -1
- package/dist/storybook/assets/ScrollShadow.stories-C3W5o9ZW.js +0 -17
- package/dist/storybook/assets/if-defined-BZFPaJjl.js +0 -1
- package/dist/storybook/assets/iframe-C5bIZMJ5.css +0 -1
- package/dist/storybook/assets/onFind-1l3EPW-I.js +0 -1
- package/dist/storybook/assets/style-map-CBrSnxRe.js +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
import '../dropdown/Dropdown.js';
|
|
3
|
+
import '../dropdown/DropdownItem.js';
|
|
4
|
+
import '../dropdown/DropdownMenu.js';
|
|
5
|
+
import './ActionItem.js';
|
|
6
|
+
type Position = 'top' | 'bottom';
|
|
7
|
+
type Alignment = 'default' | 'start' | 'center' | 'end';
|
|
8
|
+
declare const ActionBar_base: (new (...args: any[]) => import("../../util/RovingTabindexMixin.js").RovingTabindexInterface) & (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
|
|
9
|
+
/**
|
|
10
|
+
* A persistent container for primary, secondary, tertiary, and destructive actions
|
|
11
|
+
* within an interface, typically anchored to the bottom of a view.
|
|
12
|
+
*
|
|
13
|
+
* Uses a two-zone layout: destructive actions on the left (start zone),
|
|
14
|
+
* main actions on the right (end zone). Both zones maintain their position
|
|
15
|
+
* even when the other zone is empty (BSP-18087).
|
|
16
|
+
*
|
|
17
|
+
* **Positioning:** Uses `margin-top: auto` to push to bottom of flex/grid parents.
|
|
18
|
+
* In block layout parents, the bar sits after content (a console warning is emitted).
|
|
19
|
+
*
|
|
20
|
+
* **Overflow:** When items don't fit, the least important overflow into a "More" dropdown.
|
|
21
|
+
* Items are auto-sorted by variant priority (tertiary → secondary → primary).
|
|
22
|
+
* With `compact`, compactable items progressively hide labels one-by-one before overflowing.
|
|
23
|
+
*
|
|
24
|
+
* @element btu-action-bar
|
|
25
|
+
*
|
|
26
|
+
* @fires {CustomEvent} btu-action-bar-ready - Fired after first render and initialization
|
|
27
|
+
* @fires {CustomEvent<{label: string}>} btu-action-item-click - Fired when an action item is clicked (bubbles from btu-action-item)
|
|
28
|
+
*
|
|
29
|
+
* @slot - One or more `btu-action-item` elements
|
|
30
|
+
*
|
|
31
|
+
* @cssprop --action-bar-gap - Gap between items (default: 0.75rem)
|
|
32
|
+
* @cssprop --action-bar-padding - Bar padding (default: 1.5rem)
|
|
33
|
+
* @cssprop --action-bar-background - Background color (default: white)
|
|
34
|
+
* @cssprop --action-bar-border-color - Border color (default: gray-200)
|
|
35
|
+
* @cssprop --action-bar-z-index - Z-index (default: 100)
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```html
|
|
39
|
+
* <!-- Basic: destructive left, actions right -->
|
|
40
|
+
* <btu-action-bar label="Content actions">
|
|
41
|
+
* <btu-action-item zone="start" variant="destructive" label="Delete" symbol="trash-2"></btu-action-item>
|
|
42
|
+
* <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
|
|
43
|
+
* <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
|
|
44
|
+
* </btu-action-bar>
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```html
|
|
49
|
+
* <!-- Parent must be flex/grid for bottom-anchoring -->
|
|
50
|
+
* <div style="display: flex; flex-direction: column; min-height: 100vh;">
|
|
51
|
+
* <main>Content here</main>
|
|
52
|
+
* <btu-action-bar label="Page actions">
|
|
53
|
+
* <btu-action-item variant="primary" label="Save"></btu-action-item>
|
|
54
|
+
* </btu-action-bar>
|
|
55
|
+
* </div>
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export default class ActionBar extends ActionBar_base {
|
|
59
|
+
/**
|
|
60
|
+
* Bar position: 'top' or 'bottom' (default).
|
|
61
|
+
* @attr
|
|
62
|
+
*/
|
|
63
|
+
position: Position;
|
|
64
|
+
/**
|
|
65
|
+
* Enables CSS sticky positioning. When combined with position='top',
|
|
66
|
+
* the bar sticks to the top of the scroll container. With position='bottom'
|
|
67
|
+
* (default), it sticks to the bottom.
|
|
68
|
+
* @attr
|
|
69
|
+
*/
|
|
70
|
+
sticky: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Content alignment: 'default' (two-zone), 'start', 'center', 'end'.
|
|
73
|
+
* Non-default alignments disable two-zone layout.
|
|
74
|
+
* @attr item-alignment
|
|
75
|
+
*/
|
|
76
|
+
alignment: Alignment;
|
|
77
|
+
/**
|
|
78
|
+
* Adds a box-shadow to the bar.
|
|
79
|
+
* @attr
|
|
80
|
+
*/
|
|
81
|
+
shadow: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Accessible label for the toolbar region.
|
|
84
|
+
* @attr
|
|
85
|
+
*/
|
|
86
|
+
label: string;
|
|
87
|
+
/**
|
|
88
|
+
* Enables progressive label compacting. When space shrinks, items marked
|
|
89
|
+
* `compactable` (with icons) have their labels hidden one-by-one
|
|
90
|
+
* from least to most important before items overflow into "More".
|
|
91
|
+
* @attr
|
|
92
|
+
*/
|
|
93
|
+
compact: boolean;
|
|
94
|
+
/** @internal */
|
|
95
|
+
private initialClasses;
|
|
96
|
+
/** @internal */
|
|
97
|
+
private _items;
|
|
98
|
+
/** @internal */
|
|
99
|
+
private _startZone;
|
|
100
|
+
/** @internal */
|
|
101
|
+
private _endZone;
|
|
102
|
+
/** @internal */
|
|
103
|
+
private _moreDropdown;
|
|
104
|
+
/** @internal */
|
|
105
|
+
private _ro;
|
|
106
|
+
/** @internal */
|
|
107
|
+
private _rafId;
|
|
108
|
+
/** @internal - Cached expanded widths per item */
|
|
109
|
+
private _expandedWidths;
|
|
110
|
+
/** @internal - Cached compacted widths per item */
|
|
111
|
+
private _compactedWidths;
|
|
112
|
+
/** @internal */
|
|
113
|
+
private _hasOverflow;
|
|
114
|
+
/** @internal - Tracks which individual items are currently compacted */
|
|
115
|
+
private _compactedItems;
|
|
116
|
+
/** @internal */
|
|
117
|
+
private _boundKeydown;
|
|
118
|
+
createRenderRoot(): this;
|
|
119
|
+
/** @internal Override: return visible item buttons + More dropdown button in visual order */
|
|
120
|
+
_getRovingTargets(): HTMLElement[];
|
|
121
|
+
connectedCallback(): void;
|
|
122
|
+
willUpdate(): void;
|
|
123
|
+
firstUpdated(): void;
|
|
124
|
+
disconnectedCallback(): void;
|
|
125
|
+
/** @internal Determine which zone an item belongs to */
|
|
126
|
+
private _getItemZone;
|
|
127
|
+
/** @internal Get all visible (non-overflow) items in order */
|
|
128
|
+
private _getVisibleItems;
|
|
129
|
+
/** @internal Get end-zone items only */
|
|
130
|
+
private _getEndZoneItems;
|
|
131
|
+
/** @internal Sort end-zone items by variant importance */
|
|
132
|
+
private _sortEndZoneItems;
|
|
133
|
+
/** @internal Cache item widths, optionally in compacted (icon-only) state */
|
|
134
|
+
private _cacheWidths;
|
|
135
|
+
/** @internal Sum widths of visible items using per-item compact state */
|
|
136
|
+
private _calcTotalWidth;
|
|
137
|
+
/** @internal Set up ResizeObserver for overflow detection */
|
|
138
|
+
private _setupOverflowDetection;
|
|
139
|
+
/** @internal rAF-debounced recalculation */
|
|
140
|
+
private _scheduleRecalc;
|
|
141
|
+
/** @internal Recalculate which items overflow */
|
|
142
|
+
private _recalculateOverflow;
|
|
143
|
+
/** @internal Create the overflow "More" dropdown */
|
|
144
|
+
private _createOverflowDropdown;
|
|
145
|
+
/** @internal Populate overflow dropdown menu */
|
|
146
|
+
private _updateOverflowDropdown;
|
|
147
|
+
/** @internal Handle click on overflow dropdown item */
|
|
148
|
+
private _handleOverflowSelect;
|
|
149
|
+
/** @internal Update roving tabindex and configure compact state on visible items */
|
|
150
|
+
private _updateTabindex;
|
|
151
|
+
/** @internal Reactive recalculation when properties change */
|
|
152
|
+
updated(changedProperties: Map<string, unknown>): void;
|
|
153
|
+
/** @internal Keyboard handler for toolbar navigation */
|
|
154
|
+
private _handleKeydown;
|
|
155
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
156
|
+
}
|
|
157
|
+
declare global {
|
|
158
|
+
interface HTMLElementTagNameMap {
|
|
159
|
+
'btu-action-bar': ActionBar;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export {};
|
|
163
|
+
//# sourceMappingURL=ActionBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBar.d.ts","sourceRoot":"","sources":["../../../src/components/action-bar/ActionBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAA;AAKtC,OAAO,yBAAyB,CAAA;AAChC,OAAO,6BAA6B,CAAA;AACpC,OAAO,6BAA6B,CAAA;AACpC,OAAO,iBAAiB,CAAA;AAGxB,KAAK,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAA;AAChC,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;;AAUvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,cAA8D;IACnG;;;OAGG;IAEH,QAAQ,EAAE,QAAQ,CAAW;IAE7B;;;;;OAKG;IAEH,MAAM,UAAQ;IAEd;;;;OAIG;IAEH,SAAS,EAAE,SAAS,CAAY;IAEhC;;;OAGG;IAEH,MAAM,UAAQ;IAEd;;;OAGG;IAEH,KAAK,SAAK;IAEV;;;;;OAKG;IAEH,OAAO,UAAQ;IAEf,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAe;IAErC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAmB;IAEjC,gBAAgB;IAChB,OAAO,CAAC,UAAU,CAA2B;IAE7C,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAA2B;IAE3C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAA2B;IAEhD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAA8B;IAEzC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAsB;IAEpC,kDAAkD;IAClD,OAAO,CAAC,eAAe,CAAgC;IAEvD,mDAAmD;IACnD,OAAO,CAAC,gBAAgB,CAAgC;IAExD,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAAQ;IAE5B,wEAAwE;IACxE,OAAO,CAAC,eAAe,CAAwB;IAE/C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAiC;IAEtD,gBAAgB;IAIhB,6FAA6F;IAC7F,iBAAiB,IAAI,WAAW,EAAE;IA8BlC,iBAAiB,IAAI,IAAI;IAmBzB,UAAU,IAAI,IAAI;IAWlB,YAAY,IAAI,IAAI;IA+BpB,oBAAoB,IAAI,IAAI;IAa5B,wDAAwD;IACxD,OAAO,CAAC,YAAY;IAMpB,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAWxB,wCAAwC;IACxC,OAAO,CAAC,gBAAgB;IAKxB,0DAA0D;IAC1D,OAAO,CAAC,iBAAiB;IAczB,6EAA6E;IAC7E,OAAO,CAAC,YAAY;IAWpB,yEAAyE;IACzE,OAAO,CAAC,eAAe;IAavB,6DAA6D;IAC7D,OAAO,CAAC,uBAAuB;IAK/B,4CAA4C;IAC5C,OAAO,CAAC,eAAe;IAQvB,iDAAiD;IACjD,OAAO,CAAC,oBAAoB;IA4D5B,oDAAoD;IACpD,OAAO,CAAC,uBAAuB;IAoB/B,gDAAgD;IAChD,OAAO,CAAC,uBAAuB;IA0B/B,uDAAuD;IACvD,OAAO,CAAC,qBAAqB;IAS7B,oFAAoF;IACpF,OAAO,CAAC,eAAe;IAevB,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMtD,wDAAwD;IACxD,OAAO,CAAC,cAAc;IAyBtB,MAAM;CAMP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,SAAS,CAAA;KAC5B;CACF"}
|
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
|
|
10
|
+
import { ReadyMixin } from '../../util/ReadyMixin.js';
|
|
11
|
+
import { RovingTabindexMixin } from '../../util/RovingTabindexMixin.js';
|
|
12
|
+
import '../dropdown/Dropdown.js';
|
|
13
|
+
import '../dropdown/DropdownItem.js';
|
|
14
|
+
import '../dropdown/DropdownMenu.js';
|
|
15
|
+
import './ActionItem.js';
|
|
16
|
+
/** @internal Variant priority for sort and overflow ordering */
|
|
17
|
+
const VARIANT_PRIORITY = {
|
|
18
|
+
tertiary: 0,
|
|
19
|
+
secondary: 1,
|
|
20
|
+
primary: 2,
|
|
21
|
+
destructive: 0,
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A persistent container for primary, secondary, tertiary, and destructive actions
|
|
25
|
+
* within an interface, typically anchored to the bottom of a view.
|
|
26
|
+
*
|
|
27
|
+
* Uses a two-zone layout: destructive actions on the left (start zone),
|
|
28
|
+
* main actions on the right (end zone). Both zones maintain their position
|
|
29
|
+
* even when the other zone is empty (BSP-18087).
|
|
30
|
+
*
|
|
31
|
+
* **Positioning:** Uses `margin-top: auto` to push to bottom of flex/grid parents.
|
|
32
|
+
* In block layout parents, the bar sits after content (a console warning is emitted).
|
|
33
|
+
*
|
|
34
|
+
* **Overflow:** When items don't fit, the least important overflow into a "More" dropdown.
|
|
35
|
+
* Items are auto-sorted by variant priority (tertiary → secondary → primary).
|
|
36
|
+
* With `compact`, compactable items progressively hide labels one-by-one before overflowing.
|
|
37
|
+
*
|
|
38
|
+
* @element btu-action-bar
|
|
39
|
+
*
|
|
40
|
+
* @fires {CustomEvent} btu-action-bar-ready - Fired after first render and initialization
|
|
41
|
+
* @fires {CustomEvent<{label: string}>} btu-action-item-click - Fired when an action item is clicked (bubbles from btu-action-item)
|
|
42
|
+
*
|
|
43
|
+
* @slot - One or more `btu-action-item` elements
|
|
44
|
+
*
|
|
45
|
+
* @cssprop --action-bar-gap - Gap between items (default: 0.75rem)
|
|
46
|
+
* @cssprop --action-bar-padding - Bar padding (default: 1.5rem)
|
|
47
|
+
* @cssprop --action-bar-background - Background color (default: white)
|
|
48
|
+
* @cssprop --action-bar-border-color - Border color (default: gray-200)
|
|
49
|
+
* @cssprop --action-bar-z-index - Z-index (default: 100)
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```html
|
|
53
|
+
* <!-- Basic: destructive left, actions right -->
|
|
54
|
+
* <btu-action-bar label="Content actions">
|
|
55
|
+
* <btu-action-item zone="start" variant="destructive" label="Delete" symbol="trash-2"></btu-action-item>
|
|
56
|
+
* <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
|
|
57
|
+
* <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
|
|
58
|
+
* </btu-action-bar>
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```html
|
|
63
|
+
* <!-- Parent must be flex/grid for bottom-anchoring -->
|
|
64
|
+
* <div style="display: flex; flex-direction: column; min-height: 100vh;">
|
|
65
|
+
* <main>Content here</main>
|
|
66
|
+
* <btu-action-bar label="Page actions">
|
|
67
|
+
* <btu-action-item variant="primary" label="Save"></btu-action-item>
|
|
68
|
+
* </btu-action-bar>
|
|
69
|
+
* </div>
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export default class ActionBar extends RovingTabindexMixin(EventEmitterMixin(ReadyMixin(LitElement))) {
|
|
73
|
+
constructor() {
|
|
74
|
+
super(...arguments);
|
|
75
|
+
/**
|
|
76
|
+
* Bar position: 'top' or 'bottom' (default).
|
|
77
|
+
* @attr
|
|
78
|
+
*/
|
|
79
|
+
this.position = 'bottom';
|
|
80
|
+
/**
|
|
81
|
+
* Enables CSS sticky positioning. When combined with position='top',
|
|
82
|
+
* the bar sticks to the top of the scroll container. With position='bottom'
|
|
83
|
+
* (default), it sticks to the bottom.
|
|
84
|
+
* @attr
|
|
85
|
+
*/
|
|
86
|
+
this.sticky = false;
|
|
87
|
+
/**
|
|
88
|
+
* Content alignment: 'default' (two-zone), 'start', 'center', 'end'.
|
|
89
|
+
* Non-default alignments disable two-zone layout.
|
|
90
|
+
* @attr item-alignment
|
|
91
|
+
*/
|
|
92
|
+
this.alignment = 'default';
|
|
93
|
+
/**
|
|
94
|
+
* Adds a box-shadow to the bar.
|
|
95
|
+
* @attr
|
|
96
|
+
*/
|
|
97
|
+
this.shadow = false;
|
|
98
|
+
/**
|
|
99
|
+
* Accessible label for the toolbar region.
|
|
100
|
+
* @attr
|
|
101
|
+
*/
|
|
102
|
+
this.label = '';
|
|
103
|
+
/**
|
|
104
|
+
* Enables progressive label compacting. When space shrinks, items marked
|
|
105
|
+
* `compactable` (with icons) have their labels hidden one-by-one
|
|
106
|
+
* from least to most important before items overflow into "More".
|
|
107
|
+
* @attr
|
|
108
|
+
*/
|
|
109
|
+
this.compact = false;
|
|
110
|
+
/** @internal */
|
|
111
|
+
this.initialClasses = [];
|
|
112
|
+
/** @internal */
|
|
113
|
+
this._items = [];
|
|
114
|
+
/** @internal */
|
|
115
|
+
this._startZone = null;
|
|
116
|
+
/** @internal */
|
|
117
|
+
this._endZone = null;
|
|
118
|
+
/** @internal */
|
|
119
|
+
this._moreDropdown = null;
|
|
120
|
+
/** @internal */
|
|
121
|
+
this._ro = null;
|
|
122
|
+
/** @internal */
|
|
123
|
+
this._rafId = null;
|
|
124
|
+
/** @internal - Cached expanded widths per item */
|
|
125
|
+
this._expandedWidths = new Map();
|
|
126
|
+
/** @internal - Cached compacted widths per item */
|
|
127
|
+
this._compactedWidths = new Map();
|
|
128
|
+
/** @internal */
|
|
129
|
+
this._hasOverflow = false;
|
|
130
|
+
/** @internal - Tracks which individual items are currently compacted */
|
|
131
|
+
this._compactedItems = new Set();
|
|
132
|
+
/** @internal */
|
|
133
|
+
this._boundKeydown = this._handleKeydown.bind(this);
|
|
134
|
+
}
|
|
135
|
+
createRenderRoot() {
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
/** @internal Override: return visible item buttons + More dropdown button in visual order */
|
|
139
|
+
_getRovingTargets() {
|
|
140
|
+
const targets = [];
|
|
141
|
+
// Start-zone items
|
|
142
|
+
if (this._startZone) {
|
|
143
|
+
for (const item of this._startZone.querySelectorAll('btu-action-item')) {
|
|
144
|
+
if (item.style.display !== 'none') {
|
|
145
|
+
const button = item.querySelector('button');
|
|
146
|
+
if (button)
|
|
147
|
+
targets.push(button);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// More button (DOM-first in end zone, visually left of action items)
|
|
152
|
+
if (this._moreDropdown && this._moreDropdown.style.display !== 'none') {
|
|
153
|
+
const moreButton = this._moreDropdown.querySelector('button');
|
|
154
|
+
if (moreButton)
|
|
155
|
+
targets.push(moreButton);
|
|
156
|
+
}
|
|
157
|
+
// End-zone items
|
|
158
|
+
for (const item of this._getEndZoneItems()) {
|
|
159
|
+
if (item.style.display !== 'none') {
|
|
160
|
+
const button = item.querySelector('button');
|
|
161
|
+
if (button)
|
|
162
|
+
targets.push(button);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return targets;
|
|
166
|
+
}
|
|
167
|
+
connectedCallback() {
|
|
168
|
+
// Capture initial classes from backend HTML
|
|
169
|
+
if (this.className) {
|
|
170
|
+
this.initialClasses = this.className.split(' ').filter(c => c.trim());
|
|
171
|
+
}
|
|
172
|
+
// Capture action-item children before Lit renders
|
|
173
|
+
this._items = Array.from(this.querySelectorAll('btu-action-item'));
|
|
174
|
+
this._items.forEach(item => item.remove());
|
|
175
|
+
// Host element IS the toolbar — no wrapper div
|
|
176
|
+
this.setAttribute('role', 'toolbar');
|
|
177
|
+
this.setAttribute('aria-orientation', 'horizontal');
|
|
178
|
+
super.connectedCallback();
|
|
179
|
+
this.addEventListener('keydown', this._boundKeydown);
|
|
180
|
+
}
|
|
181
|
+
willUpdate() {
|
|
182
|
+
const classes = [...this.initialClasses, 'btu-action-bar'];
|
|
183
|
+
this.className = classes.filter(Boolean).join(' ');
|
|
184
|
+
if (this.label) {
|
|
185
|
+
this.setAttribute('aria-label', this.label);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.removeAttribute('aria-label');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
firstUpdated() {
|
|
192
|
+
this._startZone = this.querySelector('.btu-action-bar-start');
|
|
193
|
+
this._endZone = this.querySelector('.btu-action-bar-end');
|
|
194
|
+
if (!this._startZone || !this._endZone)
|
|
195
|
+
return;
|
|
196
|
+
// Distribute items into zones
|
|
197
|
+
for (const item of this._items) {
|
|
198
|
+
const zone = this._getItemZone(item);
|
|
199
|
+
(zone === 'start' ? this._startZone : this._endZone).appendChild(item);
|
|
200
|
+
}
|
|
201
|
+
// Sort end-zone items by variant importance
|
|
202
|
+
this._sortEndZoneItems();
|
|
203
|
+
// Create overflow dropdown (after sort so it's appended last)
|
|
204
|
+
this._createOverflowDropdown(this._endZone);
|
|
205
|
+
// Cache widths (always cache both maps)
|
|
206
|
+
this._cacheWidths(this._expandedWidths, false);
|
|
207
|
+
this._cacheWidths(this._compactedWidths, true);
|
|
208
|
+
// Setup overflow detection
|
|
209
|
+
this._setupOverflowDetection();
|
|
210
|
+
// Initial tabindex
|
|
211
|
+
this._updateTabindex(0);
|
|
212
|
+
this.emit('btu-action-bar-ready');
|
|
213
|
+
}
|
|
214
|
+
disconnectedCallback() {
|
|
215
|
+
super.disconnectedCallback();
|
|
216
|
+
this.removeEventListener('keydown', this._boundKeydown);
|
|
217
|
+
if (this._ro) {
|
|
218
|
+
this._ro.disconnect();
|
|
219
|
+
this._ro = null;
|
|
220
|
+
}
|
|
221
|
+
if (this._rafId) {
|
|
222
|
+
cancelAnimationFrame(this._rafId);
|
|
223
|
+
this._rafId = null;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/** @internal Determine which zone an item belongs to */
|
|
227
|
+
_getItemZone(item) {
|
|
228
|
+
if (item.zone === 'start' || item.zone === 'end')
|
|
229
|
+
return item.zone;
|
|
230
|
+
// Fallback: destructive → start, others → end
|
|
231
|
+
return item.variant === 'destructive' ? 'start' : 'end';
|
|
232
|
+
}
|
|
233
|
+
/** @internal Get all visible (non-overflow) items in order */
|
|
234
|
+
_getVisibleItems() {
|
|
235
|
+
const items = [];
|
|
236
|
+
if (this._startZone) {
|
|
237
|
+
items.push(...Array.from(this._startZone.querySelectorAll('btu-action-item')));
|
|
238
|
+
}
|
|
239
|
+
if (this._endZone) {
|
|
240
|
+
items.push(...Array.from(this._endZone.querySelectorAll(':scope > btu-action-item')));
|
|
241
|
+
}
|
|
242
|
+
return items.filter(item => item.style.display !== 'none');
|
|
243
|
+
}
|
|
244
|
+
/** @internal Get end-zone items only */
|
|
245
|
+
_getEndZoneItems() {
|
|
246
|
+
if (!this._endZone)
|
|
247
|
+
return [];
|
|
248
|
+
return Array.from(this._endZone.querySelectorAll(':scope > btu-action-item'));
|
|
249
|
+
}
|
|
250
|
+
/** @internal Sort end-zone items by variant importance */
|
|
251
|
+
_sortEndZoneItems() {
|
|
252
|
+
if (!this._endZone)
|
|
253
|
+
return;
|
|
254
|
+
const endItems = this._getEndZoneItems();
|
|
255
|
+
const descending = this.alignment === 'start';
|
|
256
|
+
endItems.sort((a, b) => {
|
|
257
|
+
const pa = VARIANT_PRIORITY[a.variant] ?? 0;
|
|
258
|
+
const pb = VARIANT_PRIORITY[b.variant] ?? 0;
|
|
259
|
+
return descending ? pb - pa : pa - pb;
|
|
260
|
+
});
|
|
261
|
+
for (const item of endItems) {
|
|
262
|
+
this._endZone.appendChild(item);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/** @internal Cache item widths, optionally in compacted (icon-only) state */
|
|
266
|
+
_cacheWidths(target, compacted) {
|
|
267
|
+
target.clear();
|
|
268
|
+
for (const item of this._getEndZoneItems()) {
|
|
269
|
+
const canCompact = compacted && item.compactable && item.symbol && !item.iconOnly;
|
|
270
|
+
const button = canCompact ? item.querySelector('button') : null;
|
|
271
|
+
if (button)
|
|
272
|
+
button.classList.add('btu-button-text-hidden');
|
|
273
|
+
target.set(item, item.getBoundingClientRect().width);
|
|
274
|
+
if (button)
|
|
275
|
+
button.classList.remove('btu-button-text-hidden');
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/** @internal Sum widths of visible items using per-item compact state */
|
|
279
|
+
_calcTotalWidth(items) {
|
|
280
|
+
const gap = parseFloat(getComputedStyle(this._endZone).gap) || 12;
|
|
281
|
+
let total = 0;
|
|
282
|
+
for (const item of items) {
|
|
283
|
+
if (item.style.display === 'none')
|
|
284
|
+
continue;
|
|
285
|
+
const map = this._compactedItems.has(item) ? this._compactedWidths : this._expandedWidths;
|
|
286
|
+
const w = map.get(item) || item.getBoundingClientRect().width;
|
|
287
|
+
if (total > 0)
|
|
288
|
+
total += gap;
|
|
289
|
+
total += w;
|
|
290
|
+
}
|
|
291
|
+
return total;
|
|
292
|
+
}
|
|
293
|
+
/** @internal Set up ResizeObserver for overflow detection */
|
|
294
|
+
_setupOverflowDetection() {
|
|
295
|
+
this._ro = new ResizeObserver(() => this._scheduleRecalc());
|
|
296
|
+
this._ro.observe(this);
|
|
297
|
+
}
|
|
298
|
+
/** @internal rAF-debounced recalculation */
|
|
299
|
+
_scheduleRecalc() {
|
|
300
|
+
if (this._rafId)
|
|
301
|
+
return;
|
|
302
|
+
this._rafId = requestAnimationFrame(() => {
|
|
303
|
+
this._rafId = null;
|
|
304
|
+
this._recalculateOverflow();
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
/** @internal Recalculate which items overflow */
|
|
308
|
+
_recalculateOverflow() {
|
|
309
|
+
if (!this._endZone)
|
|
310
|
+
return;
|
|
311
|
+
const endItems = this._getEndZoneItems();
|
|
312
|
+
const containerWidth = this._endZone.clientWidth;
|
|
313
|
+
const moreWidth = 40; // approximate "More" button width
|
|
314
|
+
const gap = parseFloat(getComputedStyle(this._endZone).gap) || 12;
|
|
315
|
+
// Phase 0: Reset — show all items, clear compact states
|
|
316
|
+
endItems.forEach(item => (item.style.display = ''));
|
|
317
|
+
this._compactedItems.clear();
|
|
318
|
+
// Phase 1: Check if everything fits expanded
|
|
319
|
+
if (this._calcTotalWidth(endItems) <= containerWidth) {
|
|
320
|
+
this._hasOverflow = false;
|
|
321
|
+
this._updateOverflowDropdown([]);
|
|
322
|
+
this._updateTabindex(Math.min(this._rovingIndex, this._getVisibleItems().length - 1));
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
// Build priority-sorted list: least important first (stable sort)
|
|
326
|
+
const byPriority = [...endItems].sort((a, b) => (VARIANT_PRIORITY[a.variant] ?? 0) - (VARIANT_PRIORITY[b.variant] ?? 0));
|
|
327
|
+
// Phase 2: Progressive compacting (if enabled)
|
|
328
|
+
if (this.compact) {
|
|
329
|
+
for (const item of byPriority) {
|
|
330
|
+
if (!item.compactable || !item.symbol || item.iconOnly)
|
|
331
|
+
continue;
|
|
332
|
+
this._compactedItems.add(item);
|
|
333
|
+
if (this._calcTotalWidth(endItems) <= containerWidth) {
|
|
334
|
+
this._hasOverflow = false;
|
|
335
|
+
this._updateOverflowDropdown([]);
|
|
336
|
+
this._updateTabindex(Math.min(this._rovingIndex, this._getVisibleItems().length - 1));
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Phase 3: Overflow least-important-first
|
|
342
|
+
const overflow = [];
|
|
343
|
+
for (const item of byPriority) {
|
|
344
|
+
const visible = endItems.filter(i => !overflow.includes(i));
|
|
345
|
+
const visibleWidth = this._calcTotalWidth(visible);
|
|
346
|
+
if (visibleWidth + moreWidth + gap <= containerWidth) {
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
overflow.push(item);
|
|
350
|
+
item.style.display = 'none';
|
|
351
|
+
}
|
|
352
|
+
this._hasOverflow = overflow.length > 0;
|
|
353
|
+
this._updateOverflowDropdown(overflow);
|
|
354
|
+
this._updateTabindex(Math.min(this._rovingIndex, Math.max(0, this._getVisibleItems().length - 1)));
|
|
355
|
+
}
|
|
356
|
+
/** @internal Create the overflow "More" dropdown */
|
|
357
|
+
_createOverflowDropdown(endZone) {
|
|
358
|
+
this._moreDropdown = document.createElement('btu-dropdown');
|
|
359
|
+
this._moreDropdown.setAttribute('symbol', 'ellipsis');
|
|
360
|
+
this._moreDropdown.setAttribute('icon-only', '');
|
|
361
|
+
this._moreDropdown.setAttribute('variant', 'tertiary');
|
|
362
|
+
this._moreDropdown.setAttribute('size', 'sm');
|
|
363
|
+
this._moreDropdown.setAttribute('no-chevron', '');
|
|
364
|
+
this._moreDropdown.setAttribute('aria-label', 'More actions');
|
|
365
|
+
this._moreDropdown.style.display = 'none';
|
|
366
|
+
const menu = document.createElement('btu-dropdown-menu');
|
|
367
|
+
this._moreDropdown.appendChild(menu);
|
|
368
|
+
endZone.prepend(this._moreDropdown);
|
|
369
|
+
this._moreDropdown.addEventListener('btu-dropdown-item-select', this._handleOverflowSelect.bind(this));
|
|
370
|
+
}
|
|
371
|
+
/** @internal Populate overflow dropdown menu */
|
|
372
|
+
_updateOverflowDropdown(overflowItems) {
|
|
373
|
+
if (!this._moreDropdown)
|
|
374
|
+
return;
|
|
375
|
+
const menu = this._moreDropdown.querySelector('btu-dropdown-menu');
|
|
376
|
+
if (!menu)
|
|
377
|
+
return;
|
|
378
|
+
if (overflowItems.length === 0) {
|
|
379
|
+
this._moreDropdown.style.display = 'none';
|
|
380
|
+
menu.innerHTML = '';
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
this._moreDropdown.style.display = '';
|
|
384
|
+
menu.innerHTML = '';
|
|
385
|
+
// Reverse: most important overflowed items at top of dropdown
|
|
386
|
+
const menuItems = [...overflowItems].reverse();
|
|
387
|
+
for (const item of menuItems) {
|
|
388
|
+
const menuItem = document.createElement('btu-dropdown-item');
|
|
389
|
+
menuItem.setAttribute('label', item.label);
|
|
390
|
+
menuItem.dataset.itemIndex = String(this._items.indexOf(item));
|
|
391
|
+
if (item.symbol)
|
|
392
|
+
menuItem.setAttribute('symbol', item.symbol);
|
|
393
|
+
if (item.disabled)
|
|
394
|
+
menuItem.setAttribute('disabled', '');
|
|
395
|
+
menu.appendChild(menuItem);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/** @internal Handle click on overflow dropdown item */
|
|
399
|
+
_handleOverflowSelect(e) {
|
|
400
|
+
const menuItem = e.target;
|
|
401
|
+
const index = parseInt(menuItem.dataset.itemIndex || '-1', 10);
|
|
402
|
+
const original = this._items[index];
|
|
403
|
+
if (original && !original.disabled && !original.loading) {
|
|
404
|
+
original.emit('btu-action-item-click', { label: original.label });
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/** @internal Update roving tabindex and configure compact state on visible items */
|
|
408
|
+
_updateTabindex(activeIndex) {
|
|
409
|
+
this._rovingFocus(activeIndex, false);
|
|
410
|
+
const targets = this._getRovingTargets();
|
|
411
|
+
const activeTarget = targets[this._rovingIndex];
|
|
412
|
+
const visible = this._getVisibleItems();
|
|
413
|
+
visible.forEach(item => {
|
|
414
|
+
const button = item.querySelector('button');
|
|
415
|
+
item._configure({
|
|
416
|
+
tabindex: button === activeTarget ? 0 : -1,
|
|
417
|
+
collapsed: this._compactedItems.has(item),
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
/** @internal Reactive recalculation when properties change */
|
|
422
|
+
updated(changedProperties) {
|
|
423
|
+
if (changedProperties.has('compact') || changedProperties.has('alignment')) {
|
|
424
|
+
this._scheduleRecalc();
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/** @internal Keyboard handler for toolbar navigation */
|
|
428
|
+
_handleKeydown(e) {
|
|
429
|
+
const isRtl = getComputedStyle(this).direction === 'rtl';
|
|
430
|
+
const nextKey = isRtl ? 'ArrowLeft' : 'ArrowRight';
|
|
431
|
+
const prevKey = isRtl ? 'ArrowRight' : 'ArrowLeft';
|
|
432
|
+
switch (e.key) {
|
|
433
|
+
case nextKey:
|
|
434
|
+
e.preventDefault();
|
|
435
|
+
this._rovingNext();
|
|
436
|
+
break;
|
|
437
|
+
case prevKey:
|
|
438
|
+
e.preventDefault();
|
|
439
|
+
this._rovingPrev();
|
|
440
|
+
break;
|
|
441
|
+
case 'Home':
|
|
442
|
+
e.preventDefault();
|
|
443
|
+
this._rovingFirst();
|
|
444
|
+
break;
|
|
445
|
+
case 'End':
|
|
446
|
+
e.preventDefault();
|
|
447
|
+
this._rovingLast();
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
render() {
|
|
452
|
+
return html `
|
|
453
|
+
<div class="btu-action-bar-start"></div>
|
|
454
|
+
<div class="btu-action-bar-end"></div>
|
|
455
|
+
`;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
__decorate([
|
|
459
|
+
property({ type: String, reflect: true })
|
|
460
|
+
], ActionBar.prototype, "position", void 0);
|
|
461
|
+
__decorate([
|
|
462
|
+
property({ type: Boolean, reflect: true })
|
|
463
|
+
], ActionBar.prototype, "sticky", void 0);
|
|
464
|
+
__decorate([
|
|
465
|
+
property({ type: String, reflect: true, attribute: 'item-alignment' })
|
|
466
|
+
], ActionBar.prototype, "alignment", void 0);
|
|
467
|
+
__decorate([
|
|
468
|
+
property({ type: Boolean, reflect: true })
|
|
469
|
+
], ActionBar.prototype, "shadow", void 0);
|
|
470
|
+
__decorate([
|
|
471
|
+
property({ type: String })
|
|
472
|
+
], ActionBar.prototype, "label", void 0);
|
|
473
|
+
__decorate([
|
|
474
|
+
property({ type: Boolean, reflect: true })
|
|
475
|
+
], ActionBar.prototype, "compact", void 0);
|
|
476
|
+
if (!customElements.get('btu-action-bar')) {
|
|
477
|
+
customElements.define('btu-action-bar', ActionBar);
|
|
478
|
+
}
|
|
479
|
+
//# sourceMappingURL=ActionBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../../src/components/action-bar/ActionBar.ts"],"names":[],"mappings":"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"}
|