@fusion.dev/helix-headless 0.145.0 → 0.147.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/custom-elements.json +12286 -4281
- package/dist/accordion/item/accordion-item.d.ts +51 -18
- package/dist/accordion/item/accordion-item.js +45 -13
- package/dist/accordion/root/accordion-root.d.ts +16 -7
- package/dist/accordion/root/accordion-root.js +3 -3
- package/dist/announcement/root/announcement-root.d.ts +16 -6
- package/dist/announcement/root/announcement-root.js +37 -7
- package/dist/app-header/root/app-header-root.d.ts +7 -2
- package/dist/app-header/root/app-header-root.js +9 -1
- package/dist/app-header/sectioning.d.ts +3 -1
- package/dist/app-header/sectioning.js +3 -2
- package/dist/area-chart/root/area-chart-root.d.ts +18 -1
- package/dist/area-chart/root/area-chart-root.js +11 -3
- package/dist/avatar/group/avatar-group.d.ts +20 -14
- package/dist/avatar/group/avatar-group.js +17 -19
- package/dist/avatar/root/avatar-root.d.ts +31 -1
- package/dist/avatar/root/avatar-root.js +11 -1
- package/dist/badge/root/badge-root.d.ts +60 -7
- package/dist/badge/root/badge-root.js +89 -6
- package/dist/bar-chart/root/bar-chart-root.d.ts +18 -1
- package/dist/bar-chart/root/bar-chart-root.js +48 -20
- package/dist/bar-chart/stack.d.ts +25 -0
- package/dist/bar-chart/stack.js +27 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +14 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +12 -2
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +25 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.js +51 -4
- package/dist/button/root/button-root.d.ts +50 -38
- package/dist/button/root/button-root.js +42 -53
- package/dist/button/submitter.d.ts +27 -0
- package/dist/button/submitter.js +25 -0
- package/dist/button-group/root/button-group-root.d.ts +2 -1
- package/dist/button-group/root/button-group-root.js +5 -1
- package/dist/canvas/node/canvas-node.d.ts +4 -3
- package/dist/canvas/node/canvas-node.js +3 -2
- package/dist/canvas/root/canvas-root.js +2 -2
- package/dist/card/root/card-root.d.ts +36 -4
- package/dist/card/root/card-root.js +29 -10
- package/dist/carousel/root/carousel-root.d.ts +43 -4
- package/dist/carousel/root/carousel-root.js +40 -12
- package/dist/carousel/stops.d.ts +20 -0
- package/dist/carousel/stops.js +30 -0
- package/dist/chat/message/chat-message.js +5 -4
- package/dist/chat/naming.d.ts +5 -1
- package/dist/chat/naming.js +4 -2
- package/dist/chat/root/chat-root.d.ts +40 -4
- package/dist/chat/root/chat-root.js +32 -6
- package/dist/checkbox/root/checkbox-root.d.ts +20 -0
- package/dist/checkbox/root/checkbox-root.js +18 -7
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +8 -2
- package/dist/checkbox-group/root/checkbox-group-root.js +14 -11
- package/dist/checkbox-group/select-all.d.ts +21 -0
- package/dist/checkbox-group/select-all.js +7 -0
- package/dist/code-block/highlight.d.ts +15 -0
- package/dist/code-block/highlight.js +4 -0
- package/dist/code-block/root/code-block-root.d.ts +79 -10
- package/dist/code-block/root/code-block-root.js +74 -5
- package/dist/color-input/root/color-input-root.d.ts +14 -0
- package/dist/color-input/root/color-input-root.js +17 -7
- package/dist/color-picker/channels.js +1 -2
- package/dist/color-picker/root/color-picker-root.d.ts +53 -16
- package/dist/color-picker/root/color-picker-root.js +155 -46
- package/dist/color-picker/wheel.d.ts +17 -0
- package/dist/color-picker/wheel.js +6 -0
- package/dist/combobox/root/combobox-root.d.ts +56 -0
- package/dist/combobox/root/combobox-root.js +92 -15
- package/dist/command/root/command-root.d.ts +19 -2
- package/dist/command/root/command-root.js +24 -23
- package/dist/copy-button/root/copy-button-root.d.ts +21 -1
- package/dist/copy-button/root/copy-button-root.js +16 -4
- package/dist/data-table/index.d.ts +1 -1
- package/dist/data-table/index.js +1 -1
- package/dist/data-table/keys.d.ts +6 -0
- package/dist/data-table/keys.js +14 -0
- package/dist/data-table/root/data-table-root.d.ts +27 -18
- package/dist/data-table/root/data-table-root.js +31 -57
- package/dist/data-table/tree.d.ts +16 -1
- package/dist/data-table/tree.js +2 -3
- package/dist/date-input/root/date-input-root.d.ts +11 -2
- package/dist/date-input/root/date-input-root.js +26 -12
- package/dist/date-picker/root/date-picker-root.d.ts +14 -9
- package/dist/date-picker/root/date-picker-root.js +33 -22
- package/dist/description-list/item/description-list-item.d.ts +18 -4
- package/dist/description-list/item/description-list-item.js +8 -4
- package/dist/dialog/description.js +15 -1
- package/dist/dialog/root/dialog-root.d.ts +8 -2
- package/dist/dialog/root/dialog-root.js +16 -1
- package/dist/divider/root/divider-root.d.ts +3 -0
- package/dist/divider/root/divider-root.js +2 -1
- package/dist/donut-chart/root/donut-chart-root.d.ts +31 -0
- package/dist/donut-chart/root/donut-chart-root.js +55 -1
- package/dist/donut-chart/slice-label.d.ts +35 -0
- package/dist/donut-chart/slice-label.js +11 -0
- package/dist/drawer/reveal.d.ts +8 -0
- package/dist/drawer/reveal.js +1 -0
- package/dist/drawer/root/drawer-root.d.ts +63 -2
- package/dist/drawer/root/drawer-root.js +75 -4
- package/dist/drilldown/item/drilldown-item.d.ts +21 -1
- package/dist/drilldown/item/drilldown-item.js +40 -5
- package/dist/drilldown/root/drilldown-root.d.ts +21 -3
- package/dist/drilldown/root/drilldown-root.js +22 -3
- package/dist/element-events.generated.js +35 -6
- package/dist/empty/root/empty-root.d.ts +34 -2
- package/dist/empty/root/empty-root.js +26 -4
- package/dist/file-input/root/file-input-root.d.ts +99 -8
- package/dist/file-input/root/file-input-root.js +120 -22
- package/dist/file-input/screen.d.ts +2 -1
- package/dist/file-input/status.d.ts +24 -0
- package/dist/file-input/status.js +10 -0
- package/dist/filter-input/chip/filter-chip.d.ts +23 -0
- package/dist/filter-input/chip/filter-chip.js +11 -2
- package/dist/filter-input/menu/filter-menu.d.ts +2 -0
- package/dist/filter-input/menu/filter-menu.js +12 -4
- package/dist/filter-input/root/filter-input-root.d.ts +38 -6
- package/dist/filter-input/root/filter-input-root.js +18 -28
- package/dist/filter-input/suggest.d.ts +28 -3
- package/dist/filter-input/suggest.js +18 -8
- package/dist/format-date/options.d.ts +3 -4
- package/dist/format-date/options.js +2 -2
- package/dist/format-date/root/format-date-root.d.ts +27 -17
- package/dist/format-date/root/format-date-root.js +27 -48
- package/dist/heatmap/root/buckets.d.ts +21 -0
- package/dist/heatmap/root/buckets.js +34 -0
- package/dist/heatmap/root/heatmap-root.d.ts +83 -11
- package/dist/heatmap/root/heatmap-root.js +104 -12
- package/dist/icon/index.d.ts +1 -1
- package/dist/icon/index.js +1 -1
- package/dist/icon/registry.d.ts +26 -1
- package/dist/icon/registry.js +12 -1
- package/dist/icon/root/icon-root.d.ts +25 -1
- package/dist/icon/root/icon-root.js +44 -12
- package/dist/icon/root/index.d.ts +1 -1
- package/dist/icon/root/index.js +1 -1
- package/dist/icon/settle.d.ts +7 -0
- package/dist/icon/settle.js +10 -0
- package/dist/icon-button/root/icon-button-root.d.ts +2 -0
- package/dist/image/root/image-root.d.ts +14 -1
- package/dist/image/root/image-root.js +7 -2
- package/dist/input/root/input-root.d.ts +34 -3
- package/dist/input/root/input-root.js +17 -4
- package/dist/kbd/keys.d.ts +29 -0
- package/dist/kbd/keys.js +52 -0
- package/dist/kbd/root/kbd-root.d.ts +52 -1
- package/dist/kbd/root/kbd-root.js +40 -47
- package/dist/legend/hidden-series.d.ts +10 -2
- package/dist/legend/hidden-series.js +5 -2
- package/dist/legend/root/legend-root.d.ts +77 -12
- package/dist/legend/root/legend-root.js +71 -17
- package/dist/lightbox/root/lightbox-root.d.ts +98 -10
- package/dist/lightbox/root/lightbox-root.js +153 -18
- package/dist/lightbox/zoom-controller.d.ts +59 -0
- package/dist/lightbox/zoom-controller.js +128 -0
- package/dist/lightbox/zoom.d.ts +24 -0
- package/dist/lightbox/zoom.js +18 -0
- package/dist/line-chart/root/line-chart-root.d.ts +38 -1
- package/dist/line-chart/root/line-chart-root.js +31 -3
- package/dist/list/item/list-item.d.ts +2 -0
- package/dist/list/item/list-item.js +11 -2
- package/dist/list/root/list-root.d.ts +70 -13
- package/dist/list/root/list-root.js +91 -13
- package/dist/list/selection.d.ts +54 -7
- package/dist/list/selection.js +32 -7
- package/dist/listbox/root/listbox-root.d.ts +44 -4
- package/dist/listbox/root/listbox-root.js +72 -34
- package/dist/loader/busy.d.ts +10 -0
- package/dist/loader/busy.js +11 -0
- package/dist/loader/root/loader-root.d.ts +9 -2
- package/dist/loader/root/loader-root.js +23 -3
- package/dist/megamenu/hand-over.d.ts +75 -0
- package/dist/megamenu/hand-over.js +67 -0
- package/dist/megamenu/root/megamenu-root.d.ts +80 -15
- package/dist/megamenu/root/megamenu-root.js +76 -19
- package/dist/menu/item/menu-item.d.ts +51 -2
- package/dist/menu/item/menu-item.js +50 -26
- package/dist/menu/root/menu-root.d.ts +17 -0
- package/dist/menu/root/menu-root.js +2 -2
- package/dist/meter/root/meter-root.d.ts +62 -1
- package/dist/meter/root/meter-root.js +38 -16
- package/dist/navigation/root/navigation-root.d.ts +2 -1
- package/dist/navigation/root/navigation-root.js +2 -2
- package/dist/notifications/root/notifications-root.d.ts +20 -4
- package/dist/notifications/root/notifications-root.js +30 -8
- package/dist/number-input/grain.d.ts +28 -0
- package/dist/number-input/grain.js +14 -0
- package/dist/number-input/root/number-input-root.d.ts +34 -9
- package/dist/number-input/root/number-input-root.js +31 -25
- package/dist/object-inspector/root/object-inspector-root.d.ts +88 -33
- package/dist/object-inspector/root/object-inspector-root.js +134 -92
- package/dist/object-inspector/rows.d.ts +18 -0
- package/dist/object-inspector/rows.js +33 -0
- package/dist/option/index.d.ts +1 -0
- package/dist/option/index.js +1 -0
- package/dist/option/root/option-root.d.ts +5 -3
- package/dist/option/separator/option-separator.d.ts +30 -0
- package/dist/option/separator/option-separator.js +21 -0
- package/dist/outline/root/outline-root.d.ts +30 -0
- package/dist/outline/root/outline-root.js +17 -13
- package/dist/pagination/size/pagination-size.d.ts +6 -0
- package/dist/pagination/size/pagination-size.js +5 -3
- package/dist/pin-input/code.d.ts +37 -0
- package/dist/pin-input/code.js +25 -0
- package/dist/pin-input/root/pin-input-root.d.ts +116 -115
- package/dist/pin-input/root/pin-input-root.js +163 -155
- package/dist/popover/hide-outside.d.ts +14 -0
- package/dist/popover/hide-outside.js +34 -0
- package/dist/popover/root/popover-root.d.ts +64 -8
- package/dist/popover/root/popover-root.js +67 -4
- package/dist/progress/root/progress-root.d.ts +47 -0
- package/dist/progress/root/progress-root.js +34 -16
- package/dist/qr-code/export.d.ts +45 -1
- package/dist/qr-code/export.js +28 -0
- package/dist/qr-code/name.d.ts +11 -0
- package/dist/qr-code/name.js +7 -0
- package/dist/qr-code/root/qr-code-root.d.ts +36 -11
- package/dist/qr-code/root/qr-code-root.js +58 -11
- package/dist/quote/marks.d.ts +8 -0
- package/dist/quote/marks.js +5 -0
- package/dist/quote/root/quote-root.d.ts +14 -2
- package/dist/quote/root/quote-root.js +23 -1
- package/dist/radio/group/radio-group.d.ts +15 -0
- package/dist/radio/root/radio-root.d.ts +6 -2
- package/dist/radio/root/radio-root.js +7 -2
- package/dist/rating/root/rating-root.d.ts +30 -12
- package/dist/rating/root/rating-root.js +27 -27
- package/dist/scatter-chart/fit.d.ts +15 -0
- package/dist/scatter-chart/fit.js +35 -0
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +51 -1
- package/dist/scatter-chart/root/scatter-chart-root.js +64 -24
- package/dist/scroll-area/root/scroll-area-root.d.ts +22 -51
- package/dist/scroll-area/root/scroll-area-root.js +57 -173
- package/dist/scroll-area/scrollbar-controller.d.ts +111 -0
- package/dist/scroll-area/scrollbar-controller.js +172 -0
- package/dist/scroll-area/scrollbar.d.ts +27 -8
- package/dist/scroll-area/scrollbar.js +10 -1
- package/dist/select/align.d.ts +47 -0
- package/dist/select/align.js +7 -0
- package/dist/select/root/select-root.d.ts +71 -0
- package/dist/select/root/select-root.js +78 -6
- package/dist/skeleton/root/skeleton-root.d.ts +3 -0
- package/dist/skeleton/root/skeleton-root.js +4 -2
- package/dist/skip-link/root/skip-link-root.js +2 -2
- package/dist/slider/root/slider-root.d.ts +59 -5
- package/dist/slider/root/slider-root.js +45 -3
- package/dist/sparkline/readings.d.ts +36 -0
- package/dist/sparkline/readings.js +36 -0
- package/dist/sparkline/root/sparkline-root.d.ts +121 -7
- package/dist/sparkline/root/sparkline-root.js +160 -26
- package/dist/speed-dial/item/speed-dial-item.d.ts +1 -1
- package/dist/speed-dial/item/speed-dial-item.js +2 -2
- package/dist/speed-dial/root/speed-dial-root.d.ts +6 -0
- package/dist/speed-dial/root/speed-dial-root.js +11 -3
- package/dist/splitter/root/splitter-root.d.ts +10 -12
- package/dist/splitter/root/splitter-root.js +211 -204
- package/dist/stat/root/stat-root.d.ts +14 -5
- package/dist/stat/root/stat-root.js +21 -5
- package/dist/steps/reach.d.ts +5 -0
- package/dist/steps/reach.js +3 -0
- package/dist/steps/root/steps-root.d.ts +56 -3
- package/dist/steps/root/steps-root.js +50 -6
- package/dist/steps/step/step.d.ts +8 -0
- package/dist/steps/step/step.js +8 -3
- package/dist/switch/root/switch-root.d.ts +10 -0
- package/dist/table/column/table-column.d.ts +6 -10
- package/dist/table/column/table-column.js +8 -20
- package/dist/table/root/table-root.d.ts +31 -10
- package/dist/table/root/table-root.js +14 -18
- package/dist/table/row/table-row.d.ts +24 -0
- package/dist/table/row/table-row.js +37 -1
- package/dist/tabs/panel/tab-panel.d.ts +16 -3
- package/dist/tabs/panel/tab-panel.js +34 -5
- package/dist/tabs/root/tabs-root.d.ts +17 -3
- package/dist/tabs/root/tabs-root.js +1 -1
- package/dist/tabs/tab/tab.d.ts +5 -0
- package/dist/tabs/tab/tab.js +5 -2
- package/dist/tag/group/tag-group.d.ts +44 -5
- package/dist/tag/group/tag-group.js +60 -9
- package/dist/tag/root/tag-root.js +9 -2
- package/dist/textarea/root/textarea-root.d.ts +41 -2
- package/dist/textarea/root/textarea-root.js +39 -1
- package/dist/time-input/root/time-input-root.d.ts +10 -2
- package/dist/time-input/root/time-input-root.js +24 -13
- package/dist/time-picker/root/time-picker-root.d.ts +28 -17
- package/dist/time-picker/root/time-picker-root.js +18 -29
- package/dist/time-picker/wheel-name.d.ts +9 -0
- package/dist/time-picker/wheel-name.js +15 -0
- package/dist/timeline/group/timeline-group.js +2 -2
- package/dist/toast/item/toast-item.d.ts +16 -3
- package/dist/toast/item/toast-item.js +22 -6
- package/dist/toast/root/toast-root.d.ts +34 -4
- package/dist/toast/root/toast-root.js +74 -13
- package/dist/toast/words.d.ts +12 -0
- package/dist/toast/words.js +25 -0
- package/dist/toggle/group/toggle-group.d.ts +52 -7
- package/dist/toggle/group/toggle-group.js +58 -44
- package/dist/toggle/root/toggle-root.js +2 -4
- package/dist/toolbar/root/toolbar-root.d.ts +21 -5
- package/dist/toolbar/root/toolbar-root.js +52 -8
- package/dist/tooltip/root/tooltip-root.d.ts +20 -3
- package/dist/tooltip/root/tooltip-root.js +18 -1
- package/dist/tour/back.d.ts +10 -0
- package/dist/tour/back.js +8 -0
- package/dist/tour/root/tour-root.d.ts +45 -2
- package/dist/tour/root/tour-root.js +53 -8
- package/dist/tour/stop/tour-stop.d.ts +3 -0
- package/dist/tour/stop/tour-stop.js +3 -3
- package/dist/tree/item/tree-item.d.ts +7 -3
- package/dist/tree/item/tree-item.js +3 -0
- package/dist/tree/root/tree-root.d.ts +24 -3
- package/dist/tree/root/tree-root.js +32 -13
- package/dist/tree/selection.js +2 -15
- package/dist/trend/figure.d.ts +16 -0
- package/dist/trend/figure.js +8 -0
- package/dist/trend/root/trend-root.d.ts +83 -19
- package/dist/trend/root/trend-root.js +59 -8
- package/dist/video/media-events.d.ts +13 -18
- package/dist/video/media-events.js +1 -5
- package/dist/video/root/extra-controls.d.ts +12 -0
- package/dist/video/root/extra-controls.js +6 -2
- package/dist/video/root/video-root.d.ts +23 -6
- package/dist/video/root/video-root.js +19 -10
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +2 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +2 -1
- package/dist/video-playlist/root/video-playlist-root.d.ts +17 -1
- package/dist/video-playlist/root/video-playlist-root.js +3 -0
- package/dist/virtual-list/fill.d.ts +11 -8
- package/dist/virtual-list/fill.js +10 -17
- package/dist/virtual-list/keys.d.ts +16 -7
- package/dist/virtual-list/keys.js +17 -6
- package/dist/virtual-list/plan.d.ts +65 -0
- package/dist/virtual-list/plan.js +27 -0
- package/dist/virtual-list/root/virtual-list-root.d.ts +136 -13
- package/dist/virtual-list/root/virtual-list-root.js +218 -51
- package/lint.json +1 -1
- package/package.json +8 -8
- package/types/jsx.d.ts +7441 -1458
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +1501 -326
- package/dist/chat/relative-clock.d.ts +0 -39
- package/dist/chat/relative-clock.js +0 -31
- package/dist/data-table/root/order.d.ts +0 -141
- package/dist/data-table/root/order.js +0 -76
- package/dist/tag/selection.d.ts +0 -10
- package/dist/tag/selection.js +0 -12
|
@@ -4,9 +4,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { AriaForwardController, CommandController, customElement, edgeOffset, HelixElement, headingsIn, isRtl, lockScroll, MixinControllerOpen, OpenPhaseController, onUnlessFalse, parseSnapPoints, reflectElements, SwipeController, settleSwipe, snapTravel, swipeAxis, swipeEdge, towardEdge, unlockScroll, } from '@fusion.dev/helix-core';
|
|
7
|
+
import { AriaForwardController, CommandController, customElement, drawDismiss, drawDismissGlyph, edgeOffset, FocusScopeController, HelixElement, headingsIn, isRtl, lockScroll, MixinControllerOpen, nearest, OpenPhaseController, onUnlessFalse, parseSnapPoints, reflectElements, SwipeController, settleSwipe, snapTravel, swipeAxis, swipeEdge, towardEdge, unlockScroll, } from '@fusion.dev/helix-core';
|
|
8
8
|
import { html, nothing } from 'lit';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
|
+
import { beyondWindow } from '../reveal.js';
|
|
10
11
|
import { startsSwipe } from '../swipe-start.js';
|
|
11
12
|
let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(HelixElement) {
|
|
12
13
|
constructor() {
|
|
@@ -18,6 +19,8 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
18
19
|
'--toggle': () => this.toggleOpen(),
|
|
19
20
|
},
|
|
20
21
|
});
|
|
22
|
+
this.dismissible = false;
|
|
23
|
+
this.dismissLabel = 'Close';
|
|
21
24
|
this.label = '';
|
|
22
25
|
this.aria = new AriaForwardController(this, { target: () => this.panel });
|
|
23
26
|
this.modal = true;
|
|
@@ -33,6 +36,7 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
33
36
|
surface: () => this.panel,
|
|
34
37
|
});
|
|
35
38
|
this.rest = 0;
|
|
39
|
+
this.shown = 1;
|
|
36
40
|
this.swipes = new SwipeController(this, {
|
|
37
41
|
axis: () => (this.open && this.swipe ? swipeAxis(this.edge) : undefined),
|
|
38
42
|
end: (dx, dy, vx, vy) => this.settle(dx, dy, vx, vy),
|
|
@@ -40,6 +44,15 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
40
44
|
start: (target, event) => startsSwipe(target, event.pointerType, swipeAxis(this.edge), this.partNamed('content')),
|
|
41
45
|
surface: () => this.panel,
|
|
42
46
|
});
|
|
47
|
+
this.handleFocusIn = (event) => {
|
|
48
|
+
const target = event.composedPath()[0];
|
|
49
|
+
if (this.shown >= 1 || !(target instanceof Element) || typeof window === 'undefined') {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (beyondWindow(target.getBoundingClientRect(), window.innerWidth, window.innerHeight)) {
|
|
53
|
+
this.snapTo(1);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
43
56
|
this.handleKeydown = (event) => {
|
|
44
57
|
if (event.key !== 'Escape' ||
|
|
45
58
|
event.defaultPrevented ||
|
|
@@ -51,6 +64,16 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
51
64
|
event.preventDefault();
|
|
52
65
|
this.requestOpen(false);
|
|
53
66
|
};
|
|
67
|
+
this.scope = new FocusScopeController(this, {
|
|
68
|
+
contain: () => this.open && this.modal,
|
|
69
|
+
contents: () => [
|
|
70
|
+
...['header', '', 'footer'].flatMap((name) => this.renderRoot
|
|
71
|
+
?.querySelector(name ? `slot[name="${name}"]` : 'slot:not([name])')
|
|
72
|
+
?.assignedElements({ flatten: true }) ?? []),
|
|
73
|
+
...[...(this.panel?.children ?? [])].filter((one) => one.localName === 'button'),
|
|
74
|
+
],
|
|
75
|
+
surface: () => this.panel,
|
|
76
|
+
});
|
|
54
77
|
this.handleCancel = (event) => {
|
|
55
78
|
event.preventDefault();
|
|
56
79
|
this.requestOpen(false);
|
|
@@ -117,9 +140,33 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
117
140
|
return;
|
|
118
141
|
}
|
|
119
142
|
if (shown !== 0) {
|
|
120
|
-
this.
|
|
143
|
+
this.restAt(shown);
|
|
121
144
|
}
|
|
145
|
+
else {
|
|
146
|
+
this.place(this.rest);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
get snap() {
|
|
150
|
+
return this.open ? this.shown : 1;
|
|
151
|
+
}
|
|
152
|
+
restAt(shown) {
|
|
153
|
+
this.shown = shown;
|
|
154
|
+
this.rest = snapTravel(this.extent, shown);
|
|
122
155
|
this.place(this.rest);
|
|
156
|
+
this.markSnap();
|
|
157
|
+
}
|
|
158
|
+
markSnap() {
|
|
159
|
+
this.toggleState('snapped', this.open && this.shown < 1);
|
|
160
|
+
}
|
|
161
|
+
snapTo(point) {
|
|
162
|
+
if (!this.open) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const points = parseSnapPoints(this.snapPoints);
|
|
166
|
+
const at = nearest(points, point);
|
|
167
|
+
if (at !== undefined) {
|
|
168
|
+
this.restAt(at);
|
|
169
|
+
}
|
|
123
170
|
}
|
|
124
171
|
show() {
|
|
125
172
|
this.requestOpen(true);
|
|
@@ -143,8 +190,13 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
143
190
|
: headingsIn(slot?.assignedElements({ flatten: true }) ?? []);
|
|
144
191
|
this.namedByHeader = reflectElements(this.panel, 'ariaLabelledByElements', heading, this.namedByHeader);
|
|
145
192
|
}
|
|
193
|
+
connectedCallback() {
|
|
194
|
+
super.connectedCallback();
|
|
195
|
+
this.addEventListener('focusin', this.handleFocusIn);
|
|
196
|
+
}
|
|
146
197
|
disconnectedCallback() {
|
|
147
198
|
super.disconnectedCallback();
|
|
199
|
+
this.removeEventListener('focusin', this.handleFocusIn);
|
|
148
200
|
unlockScroll(this);
|
|
149
201
|
}
|
|
150
202
|
updated(changed) {
|
|
@@ -152,7 +204,9 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
152
204
|
this.nameByHeader();
|
|
153
205
|
if (changed.has('open') && !this.open) {
|
|
154
206
|
this.rest = 0;
|
|
207
|
+
this.shown = 1;
|
|
155
208
|
this.place(0);
|
|
209
|
+
this.markSnap();
|
|
156
210
|
}
|
|
157
211
|
if (this.open && this.modal) {
|
|
158
212
|
lockScroll(this);
|
|
@@ -171,8 +225,7 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
171
225
|
else {
|
|
172
226
|
panel.show();
|
|
173
227
|
}
|
|
174
|
-
this.
|
|
175
|
-
this.place(this.rest);
|
|
228
|
+
this.restAt(parseSnapPoints(this.snapPoints)[0] ?? 1);
|
|
176
229
|
}
|
|
177
230
|
else if (!this.open && panel.open) {
|
|
178
231
|
panel.close();
|
|
@@ -192,12 +245,30 @@ let HelixHeadlessDrawer = class HelixHeadlessDrawer extends MixinControllerOpen(
|
|
|
192
245
|
<div part="header"><slot name="header" @slotchange=${this.nameByHeader}></slot></div>
|
|
193
246
|
<div part="content"><slot></slot></div>
|
|
194
247
|
<div part="footer"><slot name="footer"></slot></div>
|
|
248
|
+
${this.dismissible
|
|
249
|
+
? drawDismiss({
|
|
250
|
+
label: this.dismissLabel,
|
|
251
|
+
mark: this.renderDismissIcon(),
|
|
252
|
+
onDismiss: () => this.close(),
|
|
253
|
+
})
|
|
254
|
+
: nothing}
|
|
195
255
|
</dialog>`;
|
|
196
256
|
}
|
|
257
|
+
renderDismissIcon() {
|
|
258
|
+
return html `<slot name="dismiss-icon">
|
|
259
|
+
${drawDismissGlyph()}
|
|
260
|
+
</slot>`;
|
|
261
|
+
}
|
|
197
262
|
};
|
|
198
263
|
__decorate([
|
|
199
264
|
property({ attribute: 'closedby', reflect: true })
|
|
200
265
|
], HelixHeadlessDrawer.prototype, "closedBy", void 0);
|
|
266
|
+
__decorate([
|
|
267
|
+
property({ reflect: true, type: Boolean })
|
|
268
|
+
], HelixHeadlessDrawer.prototype, "dismissible", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
property({ attribute: 'dismiss-label' })
|
|
271
|
+
], HelixHeadlessDrawer.prototype, "dismissLabel", void 0);
|
|
201
272
|
__decorate([
|
|
202
273
|
property()
|
|
203
274
|
], HelixHeadlessDrawer.prototype, "label", void 0);
|
|
@@ -13,6 +13,8 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
|
13
13
|
* - On the page that is showing, it renders its row.
|
|
14
14
|
* - When its own page is showing, it renders only that page's rows. Its row
|
|
15
15
|
* belongs to the page above.
|
|
16
|
+
* - When a page further down its own is showing, it renders its page's slot
|
|
17
|
+
* alone, so the rows below reach the page.
|
|
16
18
|
* - Otherwise it renders nothing. The rows stay in the light DOM untouched, so
|
|
17
19
|
* there is no state to keep.
|
|
18
20
|
*
|
|
@@ -23,6 +25,10 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
|
23
25
|
* `aria-haspopup`, the same way `Menu` marks a row with a submenu. The server
|
|
24
26
|
* render leaves both out, because the server cannot see the children.
|
|
25
27
|
*
|
|
28
|
+
* The row is named by its label alone. Words in `description`, a line under
|
|
29
|
+
* the label, and in `end` describe it instead, through `aria-describedby`, as
|
|
30
|
+
* `Menu.Item` does: a reader hears "Theme", then "Dark".
|
|
31
|
+
*
|
|
26
32
|
* @since 0.1.0
|
|
27
33
|
* @status stable
|
|
28
34
|
* @aliases Panel item, Drill row
|
|
@@ -30,7 +36,8 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
|
30
36
|
*
|
|
31
37
|
* @slot - The row's label.
|
|
32
38
|
* @slot chevron - Replaces the caret of a row that opens a page, such as with your own icon.
|
|
33
|
-
* @slot
|
|
39
|
+
* @slot description - A line under the label that describes the row. It describes the row to a screen reader and is not part of its name.
|
|
40
|
+
* @slot end - Content after the label, such as the setting a page holds or a count. It describes the row and is not part of its name.
|
|
34
41
|
* @slot page - The rows of the page this row opens.
|
|
35
42
|
* @slot start - Content before the label, usually an icon.
|
|
36
43
|
*
|
|
@@ -71,6 +78,11 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
|
|
|
71
78
|
* event handler is why it is kept off the typings.
|
|
72
79
|
*/
|
|
73
80
|
onPage: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* @internal Whether the page showing is below this row's own, deeper than one
|
|
83
|
+
* level. Written by the stack.
|
|
84
|
+
*/
|
|
85
|
+
onPath: boolean;
|
|
74
86
|
/**
|
|
75
87
|
* @internal Whether this row's own page is the one showing. Written by the
|
|
76
88
|
* stack.
|
|
@@ -89,6 +101,10 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
|
|
|
89
101
|
* render would open with no caret on the row that leads to it.
|
|
90
102
|
*/
|
|
91
103
|
private page;
|
|
104
|
+
/** Whether anything is slotted under the label, read the way `page` is. */
|
|
105
|
+
private description;
|
|
106
|
+
/** Whether anything is slotted after the label, read the way `page` is. */
|
|
107
|
+
private end;
|
|
92
108
|
/**
|
|
93
109
|
* Reads the children before each render, where they can be known.
|
|
94
110
|
*
|
|
@@ -109,6 +125,10 @@ export declare class HelixHeadlessDrilldownItem extends HelixElement {
|
|
|
109
125
|
* the same note.
|
|
110
126
|
*/
|
|
111
127
|
private readonly readPage;
|
|
128
|
+
/** Re-reads whether the line under the label or the words after it are filled. */
|
|
129
|
+
private readonly readWords;
|
|
130
|
+
/** What describes the row: the line under its label and the words after it. */
|
|
131
|
+
private get describedBy();
|
|
112
132
|
/** Moves focus onto the row itself. */
|
|
113
133
|
focusItem(): void;
|
|
114
134
|
/**
|
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { customElement, deepActiveElement, HelixElement, HelixSelectEvent, } from '@fusion.dev/helix-core';
|
|
7
|
+
import { customElement, deepActiveElement, HelixElement, HelixSelectEvent, slotFilled, } from '@fusion.dev/helix-core';
|
|
8
8
|
import { caretRight } from '@fusion.dev/helix-icons';
|
|
9
9
|
import { html, nothing } from 'lit';
|
|
10
10
|
import { property, state } from 'lit/decorators.js';
|
|
@@ -16,24 +16,41 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
|
|
|
16
16
|
this.focusable = false;
|
|
17
17
|
this.isDrilldownItem = true;
|
|
18
18
|
this.onPage = true;
|
|
19
|
+
this.onPath = false;
|
|
19
20
|
this.showingPage = false;
|
|
20
21
|
this.value = '';
|
|
21
22
|
this.page = false;
|
|
23
|
+
this.description = false;
|
|
24
|
+
this.end = false;
|
|
22
25
|
this.readPage = () => {
|
|
23
26
|
const slot = this.renderRoot.querySelector('slot[name="page"]');
|
|
24
27
|
this.page = (slot?.assignedElements().length ?? 0) > 0;
|
|
25
28
|
};
|
|
29
|
+
this.readWords = () => {
|
|
30
|
+
const slot = (name) => this.renderRoot.querySelector(`slot[name="${name}"]`);
|
|
31
|
+
this.description = slotFilled(slot('description'));
|
|
32
|
+
this.end = slotFilled(slot('end'));
|
|
33
|
+
};
|
|
26
34
|
}
|
|
27
35
|
willUpdate(changed) {
|
|
28
36
|
super.willUpdate(changed);
|
|
29
37
|
if (this.childrenKnown) {
|
|
30
|
-
|
|
38
|
+
const named = (name) => this.knownChildren.some((child) => child.slot === name);
|
|
39
|
+
this.page = named('page');
|
|
40
|
+
this.description = named('description');
|
|
41
|
+
this.end = named('end');
|
|
31
42
|
}
|
|
32
43
|
}
|
|
33
44
|
firstUpdated(changed) {
|
|
34
45
|
super.firstUpdated(changed);
|
|
35
46
|
this.finishHydration();
|
|
36
47
|
}
|
|
48
|
+
get describedBy() {
|
|
49
|
+
const ids = [this.description ? 'description' : '', this.end ? 'end' : '']
|
|
50
|
+
.filter((id) => id !== '')
|
|
51
|
+
.join(' ');
|
|
52
|
+
return ids === '' ? nothing : ids;
|
|
53
|
+
}
|
|
37
54
|
focusItem() {
|
|
38
55
|
this.partNamed('item')?.focus();
|
|
39
56
|
}
|
|
@@ -51,14 +68,14 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
|
|
|
51
68
|
this.dispatchEvent(new HelixSelectEvent({ value: this.value }));
|
|
52
69
|
}
|
|
53
70
|
renderMark() {
|
|
54
|
-
return html `<slot name="chevron"
|
|
71
|
+
return html `<slot name="chevron" aria-hidden="true"
|
|
55
72
|
><svg part="mark" data-mirror fill="currentColor" viewBox=${caretRight.viewBox} aria-hidden="true">
|
|
56
73
|
${unsafeSVG(caretRight.content)}
|
|
57
74
|
</svg></slot
|
|
58
75
|
>`;
|
|
59
76
|
}
|
|
60
77
|
render() {
|
|
61
|
-
if (this.showingPage) {
|
|
78
|
+
if (this.showingPage || this.onPath) {
|
|
62
79
|
return html `<slot name="page" @slotchange=${this.readPage}></slot>`;
|
|
63
80
|
}
|
|
64
81
|
if (!this.onPage) {
|
|
@@ -68,14 +85,23 @@ let HelixHeadlessDrilldownItem = class HelixHeadlessDrilldownItem extends HelixE
|
|
|
68
85
|
part="item"
|
|
69
86
|
type="button"
|
|
70
87
|
role="menuitem"
|
|
88
|
+
aria-describedby=${this.describedBy}
|
|
71
89
|
aria-disabled=${this.disabled ? 'true' : nothing}
|
|
72
90
|
aria-haspopup=${this.page ? 'menu' : nothing}
|
|
73
91
|
tabindex=${this.focusable ? '0' : '-1'}
|
|
92
|
+
?data-described=${this.description}
|
|
74
93
|
@click=${() => this.select()}
|
|
75
94
|
>
|
|
76
95
|
<slot name="start"></slot>
|
|
77
96
|
<span part="label"><slot></slot></span>
|
|
78
|
-
<slot
|
|
97
|
+
<slot
|
|
98
|
+
id="description"
|
|
99
|
+
name="description"
|
|
100
|
+
aria-hidden="true"
|
|
101
|
+
?data-empty=${!this.description}
|
|
102
|
+
@slotchange=${this.readWords}
|
|
103
|
+
></slot>
|
|
104
|
+
<slot id="end" name="end" aria-hidden="true" @slotchange=${this.readWords}></slot>
|
|
79
105
|
${this.page ? this.renderMark() : nothing}
|
|
80
106
|
</button>
|
|
81
107
|
<div hidden><slot name="page" @slotchange=${this.readPage}></slot></div>`;
|
|
@@ -90,6 +116,9 @@ __decorate([
|
|
|
90
116
|
__decorate([
|
|
91
117
|
property({ attribute: false })
|
|
92
118
|
], HelixHeadlessDrilldownItem.prototype, "onPage", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
property({ attribute: false })
|
|
121
|
+
], HelixHeadlessDrilldownItem.prototype, "onPath", void 0);
|
|
93
122
|
__decorate([
|
|
94
123
|
property({ attribute: false })
|
|
95
124
|
], HelixHeadlessDrilldownItem.prototype, "showingPage", void 0);
|
|
@@ -99,6 +128,12 @@ __decorate([
|
|
|
99
128
|
__decorate([
|
|
100
129
|
state()
|
|
101
130
|
], HelixHeadlessDrilldownItem.prototype, "page", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
state()
|
|
133
|
+
], HelixHeadlessDrilldownItem.prototype, "description", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
state()
|
|
136
|
+
], HelixHeadlessDrilldownItem.prototype, "end", void 0);
|
|
102
137
|
HelixHeadlessDrilldownItem = __decorate([
|
|
103
138
|
customElement('helix-headless-drilldown-item')
|
|
104
139
|
], HelixHeadlessDrilldownItem);
|
|
@@ -21,9 +21,16 @@ declare const HelixHeadlessDrilldown_base: (new (...args: any[]) => import("@fus
|
|
|
21
21
|
* which `Menu` shares.
|
|
22
22
|
*
|
|
23
23
|
* After each move the host carries `data-direction`, `forward` into a page or
|
|
24
|
-
* `back` out of one,
|
|
25
|
-
* the
|
|
26
|
-
*
|
|
24
|
+
* `back` out of one, and records `:state(forward)` or `:state(back)`, so a
|
|
25
|
+
* stylesheet can slide the new page in from the side the reader is going. Both
|
|
26
|
+
* are written again on every move, so an animation keyed on them runs for each
|
|
27
|
+
* page, two moves the same way included. The styled tier slides the page and
|
|
28
|
+
* swaps it at once under `prefers-reduced-motion`.
|
|
29
|
+
*
|
|
30
|
+
* Keys, on a row: Up and Down Arrow move between the rows, Home and End go to
|
|
31
|
+
* the first and the last, and a typed letter moves to the next row whose name
|
|
32
|
+
* starts with it. Enter, Space, or Right Arrow opens a row's page, and Left
|
|
33
|
+
* Arrow or Escape goes back, the two arrows swapping on a right-to-left page.
|
|
27
34
|
*
|
|
28
35
|
* The rows of the page showing are a `menu`, named by `label` on the top page
|
|
29
36
|
* and by the page's title below it. The back button and the title sit above
|
|
@@ -50,7 +57,9 @@ declare const HelixHeadlessDrilldown_base: (new (...args: any[]) => import("@fus
|
|
|
50
57
|
* @csspart page - The menu the rows are in.
|
|
51
58
|
* @csspart title - The name of the page showing.
|
|
52
59
|
*
|
|
60
|
+
* @cssstate back - The last move went back out of a page.
|
|
53
61
|
* @cssstate drilled - A row's page is showing, so a frame around the drilldown can style itself for that depth.
|
|
62
|
+
* @cssstate forward - The last move went into a page.
|
|
54
63
|
*/
|
|
55
64
|
export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base {
|
|
56
65
|
/**
|
|
@@ -80,6 +89,8 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
|
|
|
80
89
|
* not suppress it.
|
|
81
90
|
*/
|
|
82
91
|
private direction?;
|
|
92
|
+
/** Whether a move happened since the last update, so its marks are written again. */
|
|
93
|
+
private moved;
|
|
83
94
|
private readonly drilldown;
|
|
84
95
|
/**
|
|
85
96
|
* The rows on the page showing, which is what the keys move over.
|
|
@@ -139,6 +150,13 @@ export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base
|
|
|
139
150
|
connectedCallback(): void;
|
|
140
151
|
disconnectedCallback(): void;
|
|
141
152
|
protected updated(changed: PropertyValues): void;
|
|
153
|
+
/**
|
|
154
|
+
* Writes which way the last move went. After a move, the marks come off and
|
|
155
|
+
* the page's style is read before they go back on, so an animation keyed on
|
|
156
|
+
* them starts again for the new page: two moves the same way would otherwise
|
|
157
|
+
* leave the same rule in force and the second page would arrive still.
|
|
158
|
+
*/
|
|
159
|
+
private markDirection;
|
|
142
160
|
/** Walks the tree marking which rows are on the page showing. */
|
|
143
161
|
private mark;
|
|
144
162
|
/**
|
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { AriaForwardController, customElement, DrilldownController, HelixElement, inlineStep, KeyboardNavigationController, keyClaimed, MixinCollection, slottedWords, } from '@fusion.dev/helix-core';
|
|
7
|
+
import { AriaForwardController, customElement, DrilldownController, HelixElement, inlineStep, KeyboardNavigationController, keyClaimed, MixinCollection, slottedWords, typeaheadByWords, } from '@fusion.dev/helix-core';
|
|
8
8
|
import { caretLeft } from '@fusion.dev/helix-icons';
|
|
9
9
|
import { html, nothing } from 'lit';
|
|
10
10
|
import { property, state } from 'lit/decorators.js';
|
|
@@ -15,6 +15,7 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
15
15
|
super(...arguments);
|
|
16
16
|
this.label = 'Navigation';
|
|
17
17
|
this.backLabel = 'Back';
|
|
18
|
+
this.moved = false;
|
|
18
19
|
this.drilldown = new DrilldownController(this, {
|
|
19
20
|
isRow: (element) => 'isDrilldownItem' in element && element.isDrilldownItem === true,
|
|
20
21
|
root: () => [...this.children],
|
|
@@ -37,7 +38,7 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
37
38
|
})),
|
|
38
39
|
reserved: () => ['ArrowLeft', 'ArrowRight'],
|
|
39
40
|
selects: () => false,
|
|
40
|
-
typeahead: (
|
|
41
|
+
typeahead: typeaheadByWords(),
|
|
41
42
|
});
|
|
42
43
|
this.handleFocusIn = (event) => {
|
|
43
44
|
const item = this.drilldown.rows.find((row) => row.contains(event.target));
|
|
@@ -100,6 +101,7 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
100
101
|
return;
|
|
101
102
|
}
|
|
102
103
|
this.direction = 'forward';
|
|
104
|
+
this.moved = true;
|
|
103
105
|
this.updateComplete.then(() => this.items[0]?.focusItem());
|
|
104
106
|
}
|
|
105
107
|
back() {
|
|
@@ -108,6 +110,7 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
108
110
|
return false;
|
|
109
111
|
}
|
|
110
112
|
this.direction = 'back';
|
|
113
|
+
this.moved = true;
|
|
111
114
|
this.updateComplete.then(() => leaving?.focusItem());
|
|
112
115
|
return true;
|
|
113
116
|
}
|
|
@@ -134,16 +137,32 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
134
137
|
}
|
|
135
138
|
this.placeTabStop();
|
|
136
139
|
this.toggleState('drilled', !this.drilldown.atRoot);
|
|
140
|
+
this.markDirection();
|
|
141
|
+
}
|
|
142
|
+
markDirection() {
|
|
143
|
+
if (this.moved) {
|
|
144
|
+
this.moved = false;
|
|
145
|
+
this.removeAttribute('data-direction');
|
|
146
|
+
this.toggleState('back', false);
|
|
147
|
+
this.toggleState('forward', false);
|
|
148
|
+
const page = this.partNamed('page');
|
|
149
|
+
if (page && typeof getComputedStyle === 'function') {
|
|
150
|
+
getComputedStyle(page).animationName;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
137
153
|
if (this.direction === undefined) {
|
|
138
154
|
this.removeAttribute('data-direction');
|
|
139
155
|
}
|
|
140
156
|
else {
|
|
141
157
|
this.setAttribute('data-direction', this.direction);
|
|
142
158
|
}
|
|
159
|
+
this.toggleState('back', this.direction === 'back');
|
|
160
|
+
this.toggleState('forward', this.direction === 'forward');
|
|
143
161
|
}
|
|
144
162
|
mark(item, page, onPage) {
|
|
145
163
|
item.onPage = onPage;
|
|
146
164
|
item.showingPage = item === page;
|
|
165
|
+
item.onPath = page !== null && item !== page && item.contains(page);
|
|
147
166
|
for (const child of item.children) {
|
|
148
167
|
if (child instanceof HelixHeadlessDrilldownItem && child.slot === 'page') {
|
|
149
168
|
this.mark(child, page, item === page);
|
|
@@ -151,7 +170,7 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
151
170
|
}
|
|
152
171
|
}
|
|
153
172
|
renderBackIcon() {
|
|
154
|
-
return html `<slot name="back-icon"
|
|
173
|
+
return html `<slot name="back-icon" aria-hidden="true"
|
|
155
174
|
><svg part="back-mark" data-mirror fill="currentColor" viewBox=${caretLeft.viewBox} aria-hidden="true">
|
|
156
175
|
${unsafeSVG(caretLeft.content)}
|
|
157
176
|
</svg></slot
|
|
@@ -4,6 +4,7 @@ registerElementEvents({
|
|
|
4
4
|
'helix-headless-announcement': ['helix-dismiss'],
|
|
5
5
|
'helix-headless-app-header': ['helix-scrolled'],
|
|
6
6
|
'helix-headless-avatar': ['error', 'load'],
|
|
7
|
+
'helix-headless-button': ['helix-press'],
|
|
7
8
|
'helix-headless-callout': ['helix-dismiss'],
|
|
8
9
|
'helix-headless-canvas': [
|
|
9
10
|
'helix-before-move',
|
|
@@ -49,6 +50,7 @@ registerElementEvents({
|
|
|
49
50
|
'helix-before-open',
|
|
50
51
|
'helix-create',
|
|
51
52
|
'helix-filter',
|
|
53
|
+
'helix-load-more',
|
|
52
54
|
'input',
|
|
53
55
|
'toggle',
|
|
54
56
|
],
|
|
@@ -56,10 +58,11 @@ registerElementEvents({
|
|
|
56
58
|
'helix-before-close',
|
|
57
59
|
'helix-before-open',
|
|
58
60
|
'helix-filter',
|
|
61
|
+
'helix-load-more',
|
|
59
62
|
'helix-select',
|
|
60
63
|
'toggle',
|
|
61
64
|
],
|
|
62
|
-
'helix-headless-copy-button': ['helix-copy', 'helix-copy-error'],
|
|
65
|
+
'helix-headless-copy-button': ['helix-copy', 'helix-copy-error', 'helix-press'],
|
|
63
66
|
'helix-headless-data-table': [
|
|
64
67
|
'helix-activate',
|
|
65
68
|
'helix-expand',
|
|
@@ -112,8 +115,9 @@ registerElementEvents({
|
|
|
112
115
|
'helix-graph-signal',
|
|
113
116
|
'helix-graph-zoom',
|
|
114
117
|
],
|
|
115
|
-
'helix-headless-heatmap': ['helix-resize'],
|
|
118
|
+
'helix-headless-heatmap': ['change', 'helix-before-change', 'helix-resize'],
|
|
116
119
|
'helix-headless-icon': ['error', 'load'],
|
|
120
|
+
'helix-headless-icon-button': ['helix-press'],
|
|
117
121
|
'helix-headless-image': ['error', 'load'],
|
|
118
122
|
'helix-headless-input': ['change', 'helix-before-change', 'helix-clear', 'input'],
|
|
119
123
|
'helix-headless-kbd': ['helix-shortcut'],
|
|
@@ -128,7 +132,13 @@ registerElementEvents({
|
|
|
128
132
|
],
|
|
129
133
|
'helix-headless-list': ['change', 'helix-action', 'helix-before-change'],
|
|
130
134
|
'helix-headless-list-item': ['helix-action'],
|
|
131
|
-
'helix-headless-listbox': [
|
|
135
|
+
'helix-headless-listbox': [
|
|
136
|
+
'change',
|
|
137
|
+
'helix-before-change',
|
|
138
|
+
'helix-filter',
|
|
139
|
+
'helix-load-more',
|
|
140
|
+
'input',
|
|
141
|
+
],
|
|
132
142
|
'helix-headless-map': [
|
|
133
143
|
'change',
|
|
134
144
|
'helix-activate',
|
|
@@ -156,6 +166,7 @@ registerElementEvents({
|
|
|
156
166
|
'helix-headless-megamenu': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
157
167
|
'helix-headless-menu': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
|
|
158
168
|
'helix-headless-menu-item': ['helix-before-toggle', 'helix-select'],
|
|
169
|
+
'helix-headless-meter': ['helix-band'],
|
|
159
170
|
'helix-headless-notification': ['helix-dismiss', 'helix-read'],
|
|
160
171
|
'helix-headless-notification-group': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
161
172
|
'helix-headless-notifications': ['helix-dismiss', 'helix-load-more', 'helix-read'],
|
|
@@ -163,9 +174,12 @@ registerElementEvents({
|
|
|
163
174
|
'helix-headless-object-inspector': [
|
|
164
175
|
'helix-activate',
|
|
165
176
|
'helix-before-activate',
|
|
177
|
+
'helix-before-close',
|
|
178
|
+
'helix-before-open',
|
|
166
179
|
'helix-copy',
|
|
167
180
|
'helix-filter',
|
|
168
181
|
'helix-filtered',
|
|
182
|
+
'toggle',
|
|
169
183
|
],
|
|
170
184
|
'helix-headless-option': ['helix-select'],
|
|
171
185
|
'helix-headless-outline': ['helix-activate'],
|
|
@@ -173,10 +187,17 @@ registerElementEvents({
|
|
|
173
187
|
'helix-headless-pagination-size': ['change', 'helix-before-change', 'input'],
|
|
174
188
|
'helix-headless-pin-input': ['change', 'helix-before-change', 'helix-complete', 'input'],
|
|
175
189
|
'helix-headless-popover': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
190
|
+
'helix-headless-progress': ['helix-complete'],
|
|
176
191
|
'helix-headless-qr-code': ['error'],
|
|
177
192
|
'helix-headless-radio': ['helix-select'],
|
|
178
193
|
'helix-headless-radio-group': ['change', 'helix-before-change', 'helix-select', 'input'],
|
|
179
|
-
'helix-headless-rating': [
|
|
194
|
+
'helix-headless-rating': [
|
|
195
|
+
'change',
|
|
196
|
+
'helix-before-change',
|
|
197
|
+
'helix-clear',
|
|
198
|
+
'helix-preview',
|
|
199
|
+
'input',
|
|
200
|
+
],
|
|
180
201
|
'helix-headless-scroll-area': ['scroll', 'scrollend'],
|
|
181
202
|
'helix-headless-select': [
|
|
182
203
|
'change',
|
|
@@ -184,6 +205,7 @@ registerElementEvents({
|
|
|
184
205
|
'helix-before-close',
|
|
185
206
|
'helix-before-open',
|
|
186
207
|
'helix-filter',
|
|
208
|
+
'helix-load-more',
|
|
187
209
|
'input',
|
|
188
210
|
'toggle',
|
|
189
211
|
],
|
|
@@ -200,6 +222,7 @@ registerElementEvents({
|
|
|
200
222
|
'helix-before-resize',
|
|
201
223
|
'helix-collapse',
|
|
202
224
|
'helix-resized',
|
|
225
|
+
'input',
|
|
203
226
|
],
|
|
204
227
|
'helix-headless-step': ['helix-select'],
|
|
205
228
|
'helix-headless-steps': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
@@ -210,7 +233,7 @@ registerElementEvents({
|
|
|
210
233
|
'helix-headless-tabs': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
211
234
|
'helix-headless-tag': ['helix-dismiss'],
|
|
212
235
|
'helix-headless-tag-group': ['change', 'helix-before-change', 'helix-dismiss'],
|
|
213
|
-
'helix-headless-textarea': ['change', 'helix-before-change', 'input'],
|
|
236
|
+
'helix-headless-textarea': ['change', 'helix-before-change', 'helix-clear', 'input'],
|
|
214
237
|
'helix-headless-time-input': [
|
|
215
238
|
'change',
|
|
216
239
|
'helix-before-change',
|
|
@@ -232,6 +255,7 @@ registerElementEvents({
|
|
|
232
255
|
'helix-before-open',
|
|
233
256
|
'helix-complete',
|
|
234
257
|
'helix-tour-ask',
|
|
258
|
+
'helix-tour-status',
|
|
235
259
|
'toggle',
|
|
236
260
|
],
|
|
237
261
|
'helix-headless-tour-stop': ['helix-tour-ask'],
|
|
@@ -273,5 +297,10 @@ registerElementEvents({
|
|
|
273
297
|
'helix-headless-video-playlist': ['helix-activate', 'helix-before-activate', 'helix-end'],
|
|
274
298
|
'helix-headless-video-playlist-item': ['helix-select'],
|
|
275
299
|
'helix-headless-video-playlist-menu': ['helix-select'],
|
|
276
|
-
'helix-headless-virtual-list': [
|
|
300
|
+
'helix-headless-virtual-list': [
|
|
301
|
+
'change',
|
|
302
|
+
'helix-before-change',
|
|
303
|
+
'helix-load-more',
|
|
304
|
+
'helix-range-change',
|
|
305
|
+
],
|
|
277
306
|
});
|