@m3e/web 2.5.5 → 2.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/all.js +511 -248
- package/dist/all.js.map +1 -1
- package/dist/all.min.js +31 -31
- package/dist/all.min.js.map +1 -1
- package/dist/autocomplete.js +3 -3
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.min.js.map +1 -1
- package/dist/bottom-sheet.js +5 -5
- package/dist/bottom-sheet.js.map +1 -1
- package/dist/bottom-sheet.min.js.map +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/breadcrumb.js.map +1 -1
- package/dist/breadcrumb.min.js.map +1 -1
- package/dist/button.js +7 -8
- package/dist/button.js.map +1 -1
- package/dist/button.min.js +1 -1
- package/dist/button.min.js.map +1 -1
- package/dist/calendar.js +1 -1
- package/dist/calendar.js.map +1 -1
- package/dist/calendar.min.js.map +1 -1
- package/dist/card.js +1 -1
- package/dist/card.js.map +1 -1
- package/dist/card.min.js.map +1 -1
- package/dist/checkbox.js +10 -9
- package/dist/checkbox.js.map +1 -1
- package/dist/checkbox.min.js +1 -1
- package/dist/checkbox.min.js.map +1 -1
- package/dist/chips.js +17 -16
- package/dist/chips.js.map +1 -1
- package/dist/chips.min.js +1 -1
- package/dist/chips.min.js.map +1 -1
- package/dist/core.js +5 -5
- package/dist/core.js.map +1 -1
- package/dist/core.min.js.map +1 -1
- package/dist/css-custom-data.json +314 -314
- package/dist/custom-elements.json +5222 -4838
- package/dist/datepicker.js +26 -2
- package/dist/datepicker.js.map +1 -1
- package/dist/datepicker.min.js +1 -1
- package/dist/datepicker.min.js.map +1 -1
- package/dist/dialog.js +5 -5
- package/dist/dialog.js.map +1 -1
- package/dist/dialog.min.js.map +1 -1
- package/dist/drawer-container.js +1 -1
- package/dist/drawer-container.js.map +1 -1
- package/dist/drawer-container.min.js.map +1 -1
- package/dist/expansion-panel.js +5 -5
- package/dist/expansion-panel.js.map +1 -1
- package/dist/expansion-panel.min.js.map +1 -1
- package/dist/fab-menu.js +1 -1
- package/dist/fab-menu.js.map +1 -1
- package/dist/fab-menu.min.js.map +1 -1
- package/dist/fab.js +1 -1
- package/dist/fab.js.map +1 -1
- package/dist/fab.min.js.map +1 -1
- package/dist/html-custom-data.json +296 -291
- package/dist/icon-button.js +7 -8
- package/dist/icon-button.js.map +1 -1
- package/dist/icon-button.min.js +1 -1
- package/dist/icon-button.min.js.map +1 -1
- package/dist/list.js +17 -16
- package/dist/list.js.map +1 -1
- package/dist/list.min.js +1 -1
- package/dist/list.min.js.map +1 -1
- package/dist/menu.js +3 -3
- package/dist/menu.js.map +1 -1
- package/dist/menu.min.js.map +1 -1
- package/dist/nav-bar.js +12 -9
- package/dist/nav-bar.js.map +1 -1
- package/dist/nav-bar.min.js +1 -1
- package/dist/nav-bar.min.js.map +1 -1
- package/dist/nav-menu.js +5 -5
- package/dist/nav-menu.js.map +1 -1
- package/dist/nav-menu.min.js.map +1 -1
- package/dist/nav-rail.js +3 -1
- package/dist/nav-rail.js.map +1 -1
- package/dist/nav-rail.min.js.map +1 -1
- package/dist/paginator.js +1 -1
- package/dist/paginator.js.map +1 -1
- package/dist/paginator.min.js.map +1 -1
- package/dist/radio-group.js +12 -9
- package/dist/radio-group.js.map +1 -1
- package/dist/radio-group.min.js +1 -1
- package/dist/radio-group.min.js.map +1 -1
- package/dist/segmented-button.js +12 -11
- package/dist/segmented-button.js.map +1 -1
- package/dist/segmented-button.min.js +1 -1
- package/dist/segmented-button.min.js.map +1 -1
- package/dist/select.js +9 -9
- package/dist/select.js.map +1 -1
- package/dist/select.min.js +1 -1
- package/dist/select.min.js.map +1 -1
- package/dist/slide-group.js +6 -1
- package/dist/slide-group.js.map +1 -1
- package/dist/slide-group.min.js +1 -1
- package/dist/slide-group.min.js.map +1 -1
- package/dist/slider.js +46 -25
- package/dist/slider.js.map +1 -1
- package/dist/slider.min.js +1 -1
- package/dist/slider.min.js.map +1 -1
- package/dist/split-pane.js +17 -19
- package/dist/split-pane.js.map +1 -1
- package/dist/split-pane.min.js +1 -1
- package/dist/split-pane.min.js.map +1 -1
- package/dist/src/autocomplete/AutocompleteElement.d.ts +3 -3
- package/dist/src/autocomplete/AutocompleteQueryEventDetail.d.ts +1 -1
- package/dist/src/autocomplete/QueryEventDetail.d.ts +1 -1
- package/dist/src/bottom-sheet/BottomSheetElement.d.ts +5 -5
- package/dist/src/breadcrumb/BreadcrumbItemElement.d.ts +1 -1
- package/dist/src/button/ButtonElement.d.ts +2 -1
- package/dist/src/button/ButtonElement.d.ts.map +1 -1
- package/dist/src/calendar/CalendarElement.d.ts +1 -1
- package/dist/src/card/CardElement.d.ts +1 -1
- package/dist/src/checkbox/CheckboxElement.d.ts +5 -4
- package/dist/src/checkbox/CheckboxElement.d.ts.map +1 -1
- package/dist/src/chips/AssistChipElement.d.ts +1 -1
- package/dist/src/chips/FilterChipElement.d.ts +4 -3
- package/dist/src/chips/FilterChipElement.d.ts.map +1 -1
- package/dist/src/chips/FilterChipSetElement.d.ts +3 -2
- package/dist/src/chips/FilterChipSetElement.d.ts.map +1 -1
- package/dist/src/chips/InputChipElement.d.ts +2 -2
- package/dist/src/chips/InputChipSetElement.d.ts +1 -1
- package/dist/src/chips/SuggestionChipElement.d.ts +1 -1
- package/dist/src/core/shared/primitives/CollapsibleElement.d.ts +4 -4
- package/dist/src/core/shared/primitives/TextHighlightElement.d.ts +1 -1
- package/dist/src/datepicker/DatepickerElement.d.ts +6 -0
- package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -1
- package/dist/src/dialog/DialogElement.d.ts +5 -5
- package/dist/src/drawer-container/DrawerContainerElement.d.ts +1 -1
- package/dist/src/expansion-panel/ExpansionHeaderElement.d.ts +1 -1
- package/dist/src/expansion-panel/ExpansionPanelElement.d.ts +4 -4
- package/dist/src/fab/FabElement.d.ts +1 -1
- package/dist/src/fab-menu/FabMenuItemElement.d.ts +1 -1
- package/dist/src/icon-button/IconButtonElement.d.ts +2 -1
- package/dist/src/icon-button/IconButtonElement.d.ts.map +1 -1
- package/dist/src/list/ExpandableListItemElement.d.ts +4 -4
- package/dist/src/list/ListActionElement.d.ts +1 -1
- package/dist/src/list/ListOptionElement.d.ts +4 -3
- package/dist/src/list/ListOptionElement.d.ts.map +1 -1
- package/dist/src/list/SelectionListElement.d.ts +3 -2
- package/dist/src/list/SelectionListElement.d.ts.map +1 -1
- package/dist/src/menu/MenuItemCheckboxElement.d.ts +1 -1
- package/dist/src/menu/MenuItemElement.d.ts +1 -1
- package/dist/src/menu/MenuItemRadioElement.d.ts +1 -1
- package/dist/src/nav-bar/NavBarElement.d.ts +3 -1
- package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
- package/dist/src/nav-bar/NavItemElement.d.ts +4 -3
- package/dist/src/nav-bar/NavItemElement.d.ts.map +1 -1
- package/dist/src/nav-menu/NavMenuItemElement.d.ts +5 -5
- package/dist/src/nav-rail/NavRailElement.d.ts +3 -1
- package/dist/src/nav-rail/NavRailElement.d.ts.map +1 -1
- package/dist/src/paginator/PageEventDetail.d.ts +1 -1
- package/dist/src/paginator/PaginatorElement.d.ts +1 -1
- package/dist/src/paginator/PaginatorPageEventDetail.d.ts +1 -1
- package/dist/src/paginator/PaginatorPageEventDetail.d.ts.map +1 -1
- package/dist/src/radio-group/RadioElement.d.ts +4 -3
- package/dist/src/radio-group/RadioElement.d.ts.map +1 -1
- package/dist/src/radio-group/RadioGroupElement.d.ts +3 -1
- package/dist/src/radio-group/RadioGroupElement.d.ts.map +1 -1
- package/dist/src/search/SearchViewQueryEventDetail.d.ts +1 -1
- package/dist/src/segmented-button/ButtonSegmentElement.d.ts +4 -3
- package/dist/src/segmented-button/ButtonSegmentElement.d.ts.map +1 -1
- package/dist/src/segmented-button/SegmentedButtonElement.d.ts +3 -2
- package/dist/src/segmented-button/SegmentedButtonElement.d.ts.map +1 -1
- package/dist/src/select/SelectElement.d.ts +3 -2
- package/dist/src/select/SelectElement.d.ts.map +1 -1
- package/dist/src/slide-group/SlideGroupElement.d.ts.map +1 -1
- package/dist/src/slider/SliderElement.d.ts +4 -0
- package/dist/src/slider/SliderElement.d.ts.map +1 -1
- package/dist/src/slider/SliderThumbElement.d.ts +4 -3
- package/dist/src/slider/SliderThumbElement.d.ts.map +1 -1
- package/dist/src/split-pane/SplitPaneElement.d.ts +3 -2
- package/dist/src/split-pane/SplitPaneElement.d.ts.map +1 -1
- package/dist/src/stepper/StepElement.d.ts +4 -3
- package/dist/src/stepper/StepElement.d.ts.map +1 -1
- package/dist/src/stepper/StepperElement.d.ts +5 -1
- package/dist/src/stepper/StepperElement.d.ts.map +1 -1
- package/dist/src/switch/SwitchElement.d.ts +4 -3
- package/dist/src/switch/SwitchElement.d.ts.map +1 -1
- package/dist/src/tabs/TabElement.d.ts +4 -3
- package/dist/src/tabs/TabElement.d.ts.map +1 -1
- package/dist/src/tabs/TabsElement.d.ts +5 -2
- package/dist/src/tabs/TabsElement.d.ts.map +1 -1
- package/dist/src/theme/ThemeElement.d.ts.map +1 -1
- package/dist/src/toc/TocItemElement.d.ts +1 -1
- package/dist/src/tree/TreeElement.d.ts +1 -1
- package/dist/src/tree/TreeItemElement.d.ts +5 -5
- package/dist/stepper.js +26 -17
- package/dist/stepper.js.map +1 -1
- package/dist/stepper.min.js +1 -1
- package/dist/stepper.min.js.map +1 -1
- package/dist/switch.js +9 -8
- package/dist/switch.js.map +1 -1
- package/dist/switch.min.js +1 -1
- package/dist/switch.min.js.map +1 -1
- package/dist/tabs.js +198 -24
- package/dist/tabs.js.map +1 -1
- package/dist/tabs.min.js +1 -1
- package/dist/tabs.min.js.map +1 -1
- package/dist/theme.js +34 -13
- package/dist/theme.js.map +1 -1
- package/dist/theme.min.js +23 -23
- package/dist/theme.min.js.map +1 -1
- package/dist/toc.js +1 -1
- package/dist/toc.js.map +1 -1
- package/dist/toc.min.js.map +1 -1
- package/dist/tree.js +6 -6
- package/dist/tree.js.map +1 -1
- package/dist/tree.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabElement.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;;AAoB5E
|
|
1
|
+
{"version":3,"file":"TabElement.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;;AAoB5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,qBACa,aAAc,SAAQ,kBAElC;;IACC,iCAAiC;IACjC,OAAgB,MAAM,EAAE,cAAc,CA4FpC;IAEF,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAK;IAE5C,eAAe,CAAuB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAsB;IACxF,eAAe,CAAwB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAuB;IAC3F,eAAe,CAAmB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAmB;IAG9E,4EAA4E;IAC3D,QAAQ,CAAC,KAAK,EAAG,WAAW,CAAC;IAE9C,kBAAkB;IACT,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAO3C,kBAAkB;IACT,MAAM,IAAI,IAAI;IAQvB,kBAAkB;IACT,iBAAiB,IAAI,IAAI;IAKlC,kBAAkB;IACT,oBAAoB,IAAI,IAAI;IAKrC,kBAAkB;cACC,YAAY,CAAC,kBAAkB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK/E,kBAAkB;cACC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQxE,kBAAkB;cACC,MAAM,IAAI,OAAO;CA4BrC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
|
|
@@ -45,7 +45,9 @@ declare const M3eTabsElement_base: import("../core/shared/mixins/Constructor").C
|
|
|
45
45
|
* @attr stretch - Whether tabs are stretched to fill the header.
|
|
46
46
|
* @attr variant - The appearance variant of the tabs.
|
|
47
47
|
*
|
|
48
|
-
* @fires
|
|
48
|
+
* @fires beforeinput - Dispatched before the selected state of a tab changes.
|
|
49
|
+
* @fires input - Dispatched when the selected state of a tab changes.
|
|
50
|
+
* @fires change - Dispatched when the selected tab changes.
|
|
49
51
|
*
|
|
50
52
|
* @cssprop --m3e-tabs-paginator-button-icon-size - Overrides the icon size for paginator buttons.
|
|
51
53
|
* @cssprop --m3e-tabs-active-indicator-color - Color of the active tab indicator.
|
|
@@ -68,7 +70,8 @@ export declare class M3eTabsElement extends M3eTabsElement_base {
|
|
|
68
70
|
* Whether scroll buttons are disabled.
|
|
69
71
|
* @default false
|
|
70
72
|
*/
|
|
71
|
-
disablePagination: boolean;
|
|
73
|
+
get disablePagination(): boolean | "auto";
|
|
74
|
+
set disablePagination(value: boolean | "auto");
|
|
72
75
|
/**
|
|
73
76
|
* The position of the tab headers.
|
|
74
77
|
* @default "before"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsElement.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabsElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAQ,UAAU,EAAW,cAAc,EAAa,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"TabsElement.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabsElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAQ,UAAU,EAAW,cAAc,EAAa,MAAM,KAAK,CAAC;AAgBhG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIxE,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;;AAIxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBACa,cAAe,SAAQ,mBAA2B;;IAC7D,iCAAiC;IACjC,OAAgB,MAAM,EAAE,cAAc,CA+HpC;IAGF,eAAe,CAAoB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACpF,eAAe,CAAU,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAI9D,gBAAgB;IAChB,QAAQ,CAAC,CAAC,gBAAgB,CAAC,kCAKsB;;IAkBjD;;;OAGG;IACH,IAAoC,iBAAiB,IAAI,OAAO,GAAG,MAAM,CAUxE;IACD,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAY5C;IAED;;;OAGG;IACwD,cAAc,EAAE,iBAAiB,CAAY;IAExG;;;OAGG;IAC0B,OAAO,EAAE,UAAU,CAAe;IAE/D;;;OAGG;IACyC,OAAO,UAAS;IAE5D;;;OAGG;IAC6C,iBAAiB,SAAmB;IAEpF;;;OAGG;IACyC,aAAa,SAAe;IAExE,gBAAgB;IAChB,IAAI,IAAI,IAAI,SAAS,aAAa,EAAE,CAEnC;IAED,wBAAwB;IACxB,IAAI,WAAW,IAAI,aAAa,GAAG,IAAI,CAEtC;IAED,gDAAgD;IAChD,IAAI,aAAa,IAAI,MAAM,CAE1B;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAS9B;IAED,kBAAkB;IACT,iBAAiB,IAAI,IAAI;IAUlC,kBAAkB;IACT,oBAAoB,IAAI,IAAI;IAMrC,kBAAkB;cACC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ1E,kBAAkB;cACC,MAAM,IAAI,OAAO;CA2SrC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeElement.d.ts","sourceRoot":"","sources":["../../../src/theme/ThemeElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAc5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBACa,eAAgB,SAAQ,UAAU;;IAC7C,iCAAiC;IACjC,OAAgB,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"ThemeElement.d.ts","sourceRoot":"","sources":["../../../src/theme/ThemeElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAc5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBACa,eAAgB,SAAQ,UAAU;;IAC7C,iCAAiC;IACjC,OAAgB,MAAM,EAAE,cAAc,CAIpC;IAUF;;;OAGG;IACS,KAAK,SAAa;IAE9B;;;OAGG;IACS,MAAM,EAAE,WAAW,CAAU;IAEzC;;;OAGG;IACS,QAAQ,EAAE,aAAa,CAAc;IAEjD;;;OAGG;IACqD,WAAW,UAAS;IAE5E;;;OAGG;IACyB,OAAO,SAAK;IAExC;;OAEG;IACS,MAAM,EAAE,YAAY,CAAc;IAE9C,uCAAuC;IACvC,IAAI,MAAM,IAAI,OAAO,CAiBpB;IAED,kBAAkB;IACT,iBAAiB,IAAI,IAAI;IA4BlC,kBAAkB;IACT,oBAAoB,IAAI,IAAI;IAarC,kBAAkB;cACC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ1E,kBAAkB;cACC,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAKzE,kBAAkB;cACC,MAAM,IAAI,OAAO;CAqGrC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,eAAe,CAAC;KAC9B;CACF"}
|
|
@@ -9,7 +9,7 @@ declare const M3eTocItemElement_base: import("../core/shared/mixins/Constructor"
|
|
|
9
9
|
*
|
|
10
10
|
* @attr disabled - A value indicating whether the element is disabled.
|
|
11
11
|
*
|
|
12
|
-
* @fires click -
|
|
12
|
+
* @fires click - Dispatched when the element is clicked.
|
|
13
13
|
*
|
|
14
14
|
* @cssprop --m3e-toc-item-shape - Border radius of the TOC item.
|
|
15
15
|
* @cssprop --m3e-toc-item-padding-block - Block padding for the TOC item.
|
|
@@ -72,7 +72,7 @@ declare const M3eTreeElement_base: import("../core/shared/mixins/Constructor").C
|
|
|
72
72
|
* @attr multi - Whether multiple items can be selected.
|
|
73
73
|
* @attr cascade -Whether multiple item selection cascades to child items.
|
|
74
74
|
*
|
|
75
|
-
* @fires change -
|
|
75
|
+
* @fires change - Dispatched when the selected state changes.
|
|
76
76
|
*
|
|
77
77
|
* @cssprop --m3e-tree-scrollbar-width - Width of the tree scrollbar.
|
|
78
78
|
* @cssprop --m3e-tree-scrollbar-color - Color of the tree scrollbar.
|
|
@@ -24,11 +24,11 @@ declare const M3eTreeItemElement_base: import("../core/shared/mixins/Constructor
|
|
|
24
24
|
* @attr open - Whether the item is expanded.
|
|
25
25
|
* @attr selected - Whether the item is selected.
|
|
26
26
|
*
|
|
27
|
-
* @fires opening -
|
|
28
|
-
* @fires opened -
|
|
29
|
-
* @fires closing -
|
|
30
|
-
* @fires closed -
|
|
31
|
-
* @fires click -
|
|
27
|
+
* @fires opening - Dispatched when the item begins to open.
|
|
28
|
+
* @fires opened - Dispatched when the item has opened.
|
|
29
|
+
* @fires closing - Dispatched when the item begins to close.
|
|
30
|
+
* @fires closed - Dispatched when the item has closed.
|
|
31
|
+
* @fires click - Dispatched when the element is clicked.
|
|
32
32
|
*
|
|
33
33
|
* @cssprop --m3e-tree-item-font-size - Font size for the item label.
|
|
34
34
|
* @cssprop --m3e-tree-item-font-weight - Font weight for the item label.
|
package/dist/stepper.js
CHANGED
|
@@ -158,9 +158,10 @@ var M3eStepElement_1;
|
|
|
158
158
|
* @attr optional - Whether the step is optional.
|
|
159
159
|
* @attr selected - Whether the element is selected.
|
|
160
160
|
*
|
|
161
|
-
* @fires
|
|
162
|
-
* @fires
|
|
163
|
-
* @fires
|
|
161
|
+
* @fires beforeinput - Dispatched before the selected state changes.
|
|
162
|
+
* @fires input - Dispatched when the selected state changes.
|
|
163
|
+
* @fires change - Dispatched when the selected state changes.
|
|
164
|
+
* @fires click - Dispatched when the element is clicked.
|
|
164
165
|
*
|
|
165
166
|
* @cssprop --m3e-step-shape - Border radius of the step container, defining its visual shape.
|
|
166
167
|
* @cssprop --m3e-step-padding - Internal padding of the step container, used for layout spacing.
|
|
@@ -304,17 +305,17 @@ _M3eStepElement_handleClick = function _M3eStepElement_handleClick(e) {
|
|
|
304
305
|
e.stopImmediatePropagation();
|
|
305
306
|
}
|
|
306
307
|
if (e.defaultPrevented || this.selected) return;
|
|
307
|
-
this.
|
|
308
|
-
if (this.dispatchEvent(new Event("input", {
|
|
308
|
+
if (this.dispatchEvent(new Event("beforeinput", {
|
|
309
309
|
bubbles: true,
|
|
310
|
-
composed: true,
|
|
311
310
|
cancelable: true
|
|
312
|
-
})) && this.closest("m3e-stepper")?.
|
|
311
|
+
})) && this.closest("m3e-stepper")?._moveTo(this.index)) {
|
|
312
|
+
this.selected = true;
|
|
313
|
+
this.dispatchEvent(new Event("input", {
|
|
314
|
+
bubbles: true
|
|
315
|
+
}));
|
|
313
316
|
this.dispatchEvent(new Event("change", {
|
|
314
317
|
bubbles: true
|
|
315
318
|
}));
|
|
316
|
-
} else {
|
|
317
|
-
this.selected = false;
|
|
318
319
|
}
|
|
319
320
|
};
|
|
320
321
|
/** The styles of the element. */
|
|
@@ -429,7 +430,9 @@ var _M3eStepperElement_instances, _M3eStepperElement_breakpointUnobserve, _M3eSt
|
|
|
429
430
|
* @slot step - Renders a step.
|
|
430
431
|
* @slot panel - Renders a panel.
|
|
431
432
|
*
|
|
432
|
-
* @fires
|
|
433
|
+
* @fires beforeinput - Dispatched before the selected state of a step changes.
|
|
434
|
+
* @fires input - Dispatched when the selected state of a step changes.
|
|
435
|
+
* @fires change - Dispatched when the selected step changes.
|
|
433
436
|
*
|
|
434
437
|
* @cssprop --m3e-step-divider-thickness - Thickness of the divider line between steps.
|
|
435
438
|
* @cssprop --m3e-step-divider-color - Color of the divider line between steps.
|
|
@@ -498,6 +501,16 @@ let M3eStepperElement = class M3eStepperElement extends ReconnectedCallback(Atta
|
|
|
498
501
|
* @returns {boolean} Whether the stepper moved to the specified `index`.
|
|
499
502
|
*/
|
|
500
503
|
moveTo(index) {
|
|
504
|
+
if (this._moveTo(index)) {
|
|
505
|
+
this.dispatchEvent(new Event("change", {
|
|
506
|
+
bubbles: true
|
|
507
|
+
}));
|
|
508
|
+
return true;
|
|
509
|
+
}
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
/** @internal */
|
|
513
|
+
_moveTo(index) {
|
|
501
514
|
const selectedStep = this.selectedStep;
|
|
502
515
|
if (selectedStep && selectedStep.index === index) {
|
|
503
516
|
return true;
|
|
@@ -527,16 +540,10 @@ let M3eStepperElement = class M3eStepperElement extends ReconnectedCallback(Atta
|
|
|
527
540
|
}
|
|
528
541
|
this._selectedIndex = index;
|
|
529
542
|
this[selectionManager].select(this.selectedStep);
|
|
530
|
-
this.dispatchEvent(new Event("change", {
|
|
531
|
-
bubbles: true
|
|
532
|
-
}));
|
|
533
543
|
return true;
|
|
534
544
|
} else {
|
|
535
545
|
if (selectedStep) {
|
|
536
546
|
this[selectionManager].deselect(selectedStep);
|
|
537
|
-
this.dispatchEvent(new Event("change", {
|
|
538
|
-
bubbles: true
|
|
539
|
-
}));
|
|
540
547
|
}
|
|
541
548
|
return false;
|
|
542
549
|
}
|
|
@@ -610,7 +617,9 @@ _M3eStepperElement_renderHeader = function _M3eStepperElement_renderHeader() {
|
|
|
610
617
|
};
|
|
611
618
|
_M3eStepperElement_handleChange = function _M3eStepperElement_handleChange(e) {
|
|
612
619
|
e.stopPropagation();
|
|
613
|
-
|
|
620
|
+
this.dispatchEvent(new Event("change", {
|
|
621
|
+
bubbles: true
|
|
622
|
+
}));
|
|
614
623
|
};
|
|
615
624
|
_M3eStepperElement_handleSlotChange = function _M3eStepperElement_handleSlotChange() {
|
|
616
625
|
const {
|
package/dist/stepper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepper.js","sources":["../../src/stepper/StepPanelElement.ts","../../src/stepper/StepElement.ts","../../src/stepper/StepperButtonElementBase.ts","../../src/stepper/StepperElement.ts","../../src/stepper/StepperNextElement.ts","../../src/stepper/StepperPreviousElement.ts","../../src/stepper/StepperResetElement.ts"],"sourcesContent":["import { css, CSSResultGroup, html, LitElement } from \"lit\";\r\nimport { state } from \"lit/decorators.js\";\r\n\r\nimport { customElement, Role } from \"@m3e/web/core\";\r\n\r\n/**\r\n * A panel presented for a step in a wizard-like workflow.\r\n *\r\n * @description\r\n * The `m3e-step-panel` is a container for presenting contextual content and actions\r\n * associated with a single step in a structured workflow.\r\n *\r\n * @example\r\n * The following example demonstrates a linear multi-step form flow using the `m3e-stepper`\r\n * component. Each `m3e-step` defines a navigable step label, linked to its corresponding\r\n * `m3e-step-panel` via the `for` attribute. Navigation is orchestrated using the\r\n * `m3e-stepper-next`, `m3e-stepper-previous`, and `m3e-stepper-reset` components.\r\n *\r\n * <m3e-stepper>\r\n * <m3e-step for=\"step1\">Fill out your name</m3e-step>\r\n * <m3e-step for=\"step2\">Fill out your address</m3e-step>\r\n * <m3e-step for=\"step3\">Done</m3e-step>\r\n * <m3e-step-panel id=\"step1\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"name\">Name</label>\r\n * <input name=\"name\" id=\"name\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step2\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"address\">Address</label>\r\n * <input name=\"address\" id=\"address\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step3\">Done\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-reset>Reset</m3e-stepper-reset></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * </m3e-stepper>\r\n *\r\n * @tag m3e-step-panel\r\n *\r\n * @slot - Renders the content of the panel.\r\n * @slot actions- Renders the actions bar of the panel.\r\n *\r\n * @cssprop --m3e-step-panel-padding - Padding inside the step panel container, defining internal spacing around content.\r\n * @cssprop --m3e-step-panel-spacing - Vertical gap between stacked elements within the step panel.\r\n * @cssprop --m3e-step-panel-actions-height - Minimum height of the slotted actions container.\r\n */\r\n@customElement(\"m3e-step-panel\")\r\nexport class M3eStepPanelElement extends Role(LitElement, \"tabpanel\") {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n }\r\n .content {\r\n display: flex;\r\n flex-direction: column;\r\n padding: var(--m3e-step-panel-padding, 1rem 1.5rem 1.5rem 1.5rem);\r\n row-gap: var(--m3e-step-panel-spacing, 0.5rem);\r\n }\r\n ::slotted([slot=\"actions\"]) {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n min-height: var(--m3e-step-panel-actions-height, 3rem);\r\n }\r\n ::slotted([slot=\"actions\"][end]) {\r\n justify-content: flex-end;\r\n }\r\n `;\r\n\r\n /** @internal */\r\n @state() active = false;\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n this.slot = \"panel\";\r\n\r\n super.connectedCallback();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<m3e-collapsible ?open=${this.active}>\r\n <div class=\"content\">\r\n <div><slot></slot></div>\r\n <slot name=\"actions\"></slot>\r\n </div>\r\n </m3e-collapsible>`;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-step-panel\": M3eStepPanelElement;\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n customElement,\r\n DesignToken,\r\n Disabled,\r\n Focusable,\r\n HtmlFor,\r\n KeyboardClick,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n Role,\r\n Selected,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { addAriaReferencedId, removeAriaReferencedId, selectionManager } from \"@m3e/web/core/a11y\";\r\n\r\nimport type { M3eStepperElement } from \"./StepperElement\";\r\nimport { M3eStepPanelElement } from \"./StepPanelElement\";\r\n\r\n/**\r\n * A step in a wizard-like workflow.\r\n *\r\n * @description\r\n * The `m3e-step` component represents a single step in a structured, wizard-like workflow.\r\n * It supports semantic labeling, stateful styling, and optional interaction for completed,\r\n * selected, invalid, or disabled states. It aligns with Material Design guidance for progressive\r\n * disclosure, accessible navigation, and visual continuity across horizontal and vertical layouts.\r\n *\r\n * @example\r\n * The following example demonstrates a linear multi-step form flow using the `m3e-stepper`\r\n * component. Each `m3e-step` defines a navigable step label, linked to its corresponding\r\n * `m3e-step-panel` via the `for` attribute. Navigation is orchestrated using the\r\n * `m3e-stepper-next`, `m3e-stepper-previous`, and `m3e-stepper-reset` components.\r\n *\r\n * <m3e-stepper>\r\n * <m3e-step for=\"step1\">Fill out your name</m3e-step>\r\n * <m3e-step for=\"step2\">Fill out your address</m3e-step>\r\n * <m3e-step for=\"step3\">Done</m3e-step>\r\n * <m3e-step-panel id=\"step1\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"name\">Name</label>\r\n * <input name=\"name\" id=\"name\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step2\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"address\">Address</label>\r\n * <input name=\"address\" id=\"address\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step3\">Done\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-reset>Reset</m3e-stepper-reset></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * </m3e-stepper>\r\n *\r\n * @tag m3e-step\r\n *\r\n * @slot - Renders the label of the step.\r\n * @slot icon - Renders the icon of the step.\r\n * @slot done-icon - Renders the icon of a completed step.\r\n * @slot edit-icon - Renders the icon of a completed editable step.\r\n * @slot error-icon - Renders icon of an invalid step.\r\n * @slot hint - Renders the hint text of the step.\r\n * @slot error - Renders the error message for an invalid step.\r\n *\r\n * @attr completed - Whether the step has been completed.\r\n * @attr disabled - Whether the element is disabled.\r\n * @attr editable - Whether the step is editable and users can return to it after completion.\r\n * @attr for - The identifier of the interactive control to which this element is attached.\r\n * @attr optional - Whether the step is optional.\r\n * @attr selected - Whether the element is selected.\r\n *\r\n * @fires input - Emitted when the selected state changes.\r\n * @fires change - Emitted when the selected state changes.\r\n * @fires click - Emitted when the element is clicked.\r\n *\r\n * @cssprop --m3e-step-shape - Border radius of the step container, defining its visual shape.\r\n * @cssprop --m3e-step-padding - Internal padding of the step container, used for layout spacing.\r\n * @cssprop --m3e-step-icon-shape - Border radius of the icon container, controlling its geometric form.\r\n * @cssprop --m3e-step-icon-size - Width and height of the icon container and icon glyph.\r\n * @cssprop --m3e-step-selected-icon-container-color - Background color of the icon when the step is selected.\r\n * @cssprop --m3e-step-selected-icon-color - Foreground color of the icon when the step is selected.\r\n * @cssprop --m3e-step-completed-icon-container-color - Background color of the icon when the step is completed.\r\n * @cssprop --m3e-step-completed-icon-color - Foreground color of the icon when the step is completed.\r\n * @cssprop --m3e-step-unselected-icon-container-color - Background color of the icon when the step is inactive.\r\n * @cssprop --m3e-step-unselected-icon-color - Foreground color of the icon when the step is inactive.\r\n * @cssprop --m3e-step-icon-error-color - Foreground color of the icon when the step is invalid.\r\n * @cssprop --m3e-step-disabled-icon-container-color - Base color used to mix the disabled icon background.\r\n * @cssprop --m3e-step-disabled-icon-color - Base color used to mix the disabled icon foreground.\r\n * @cssprop --m3e-step-label-color - Text color of the step label in its default state.\r\n * @cssprop --m3e-step-label-error-color - Text color of the step label when the step is invalid.\r\n * @cssprop --m3e-step-disabled-label-color - Base color used to mix the disabled label foreground.\r\n * @cssprop --m3e-step-font-size - Font size of the step label.\r\n * @cssprop --m3e-step-font-weight - Font weight of the step label.\r\n * @cssprop --m3e-step-line-height - Line height of the step label.\r\n * @cssprop --m3e-step-tracking - Letter spacing of the step label.\r\n * @cssprop --m3e-step-icon-label-space - Gap between icon and label.\r\n * @cssprop --m3e-step-hint-font-size - Font size of hint and error messages.\r\n * @cssprop --m3e-step-hint-font-weight - Font weight of hint and error messages.\r\n * @cssprop --m3e-step-hint-line-height - Line height of hint and error messages.\r\n * @cssprop --m3e-step-hint-tracking - Letter spacing of hint and error messages.\r\n * @cssprop --m3e-step-hint-color - Text color of hint messages in valid state.\r\n * @cssprop --m3e-step-disabled-hint-color - Base color used to mix the disabled hint foreground.\r\n */\r\n@customElement(\"m3e-step\")\r\nexport class M3eStepElement extends Selected(\r\n KeyboardClick(Focusable(HtmlFor(Disabled(AttachInternals(Role(LitElement, \"tab\")))))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n outline: none;\r\n min-width: 0px;\r\n position: relative;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n .base {\r\n min-width: inherit;\r\n position: relative;\r\n border-radius: var(--m3e-step-shape, ${DesignToken.shape.corner.medium});\r\n padding: var(--m3e-step-padding, 1.5rem);\r\n }\r\n :host(:not([aria-disabled=\"true\"])) {\r\n cursor: pointer;\r\n }\r\n .icon {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: var(--m3e-step-icon-shape, 50%);\r\n width: var(--m3e-step-icon-size, 1.5rem);\r\n height: var(--m3e-step-icon-size, 1.5rem);\r\n }\r\n .icon svg,\r\n ::slotted([slot=\"icon\"]),\r\n ::slotted([slot=\"edit-icon\"]),\r\n ::slotted([slot=\"done-icon\"]),\r\n ::slotted([slot=\"error-icon\"]) {\r\n width: 1em;\r\n font-size: var(--m3e-step-icon-size, 1.5rem) !important;\r\n }\r\n :host(:not([aria-disabled=\"true\"])[selected]) .icon {\r\n background-color: var(--m3e-step-selected-icon-container-color, ${DesignToken.color.primary});\r\n color: var(--m3e-step-selected-icon-color, ${DesignToken.color.onPrimary});\r\n }\r\n :host(:not([aria-disabled=\"true\"])[completed]:not([invalid])) .icon {\r\n background-color: var(--m3e-step-completed-icon-container-color, ${DesignToken.color.primary});\r\n color: var(--m3e-step-completed-icon-color, ${DesignToken.color.onPrimary});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([selected]):not([completed]):not([invalid])) .icon {\r\n background-color: var(--m3e-step-unselected-icon-container-color, ${DesignToken.color.inverseSurface});\r\n color: var(--m3e-step-unselected-icon-color, ${DesignToken.color.inverseOnSurface});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([selected])[invalid]) .icon {\r\n color: var(--m3e-step-icon-error-color, ${DesignToken.color.error});\r\n }\r\n :host([aria-disabled=\"true\"]) .icon {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-step-disabled-icon-container-color, ${DesignToken.color.onSurface}) 10%,\r\n transparent\r\n );\r\n color: color-mix(in srgb, var(--m3e-step-disabled-icon-color, ${DesignToken.color.onSurface}) 38%, transparent);\r\n }\r\n\r\n :host(:not([aria-disabled=\"true\"])) .label {\r\n color: var(--m3e-step-label-color, ${DesignToken.color.onSurface});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([selected])[invalid]) .label {\r\n color: var(--m3e-step-label-error-color, ${DesignToken.color.error});\r\n }\r\n :host([aria-disabled=\"true\"]) .label {\r\n color: color-mix(in srgb, var(--m3e-step-disabled-label-color, ${DesignToken.color.onSurface}) 38%, transparent);\r\n }\r\n .wrapper {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n border-radius: inherit;\r\n font-size: var(--m3e-step-font-size, ${DesignToken.typescale.standard.title.small.fontSize});\r\n font-weight: var(--m3e-step-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight});\r\n line-height: var(--m3e-step-line-height, ${DesignToken.typescale.standard.title.small.lineHeight});\r\n letter-spacing: var(--m3e-step-tracking, ${DesignToken.typescale.standard.title.small.tracking});\r\n flex-direction: var(--_step-direction, row);\r\n gap: var(--m3e-step-icon-label-space, 0.5rem);\r\n justify-content: flex-start;\r\n }\r\n .label {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: var(--_step-label-align-items, flex-start);\r\n }\r\n ::slotted([slot=\"hint\"]),\r\n .hint,\r\n ::slotted([slot=\"error\"]) {\r\n font-size: var(--m3e-step-hint-font-size, ${DesignToken.typescale.standard.body.small.fontSize});\r\n font-weight: var(--m3e-step-hint-font-weight, ${DesignToken.typescale.standard.body.small.fontWeight});\r\n line-height: var(--m3e-step-hint-line-height, ${DesignToken.typescale.standard.body.small.lineHeight});\r\n letter-spacing: var(--m3e-step-hint-tracking, ${DesignToken.typescale.standard.body.small.tracking});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([invalid])) ::slotted([slot=\"hint\"]),\r\n :host(:not([aria-disabled=\"true\"]):not([invalid])) .hint {\r\n color: var(--m3e-step-hint-color, ${DesignToken.color.onSurfaceVariant});\r\n }\r\n :host([aria-disabled=\"true\"]) ::slotted([slot=\"hint\"]),\r\n :host([aria-disabled=\"true\"]) .hint {\r\n color: color-mix(in srgb, var(--m3e-step-disabled-hint-color, ${DesignToken.color.onSurface}) 38%, transparent);\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\r\n /** @private */ @query(\".state-layer\") private readonly _stateLayer?: M3eStateLayerElement;\r\n /** @private */ @query(\".ripple\") private readonly _ripple?: M3eRippleElement;\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n\r\n /**\r\n * Whether the step is optional.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) optional = false;\r\n\r\n /**\r\n * Whether the step is editable and users can return to it after completion.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) editable = false;\r\n\r\n /**\r\n * Whether the step has been completed.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) completed = false;\r\n\r\n /**\r\n * Whether the step has an error.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) invalid = false;\r\n\r\n /** @internal */\r\n @state() index = -1;\r\n\r\n /** A reference to the panel controlled by the step. */\r\n get panel(): M3eStepPanelElement | null {\r\n return this.control instanceof M3eStepPanelElement ? this.control : null;\r\n }\r\n\r\n /** The stepper to which this step belongs. */\r\n get stepper(): M3eStepperElement | null {\r\n return this.closest(\"m3e-stepper\");\r\n }\r\n\r\n /** Resets the step to its initial state, clearing any form data. */\r\n reset(): void {\r\n this.invalid = false;\r\n this.completed = false;\r\n this.panel?.querySelector(\"form\")?.reset();\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (control instanceof M3eStepPanelElement) {\r\n control.id = control.id || `m3e-step-panel-${M3eStepElement.__nextId++}`;\r\n addAriaReferencedId(this, \"aria-controls\", control.id);\r\n control.style.order = this.style.order;\r\n }\r\n super.attach(control);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.control.style.order = \"\";\r\n if (this.control.id) {\r\n removeAriaReferencedId(this, \"aria-controls\", this.control.id);\r\n }\r\n }\r\n\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n this.slot = \"step\";\r\n\r\n super.connectedCallback();\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"selected\")) {\r\n this.closest(\"m3e-stepper\")?.[selectionManager].notifySelectionChange(this);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n [this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n const hint = html`<slot name=\"hint\">${this.optional ? html`<span class=\"hint\">(Optional)</span>` : nothing}</slot>`;\r\n const error = html`<slot name=\"error\">${hint}</slot>`;\r\n\r\n return html`<div class=\"base\">\r\n <m3e-state-layer class=\"state-layer\" ?disabled=\"${this.disabled}\"></m3e-state-layer>\r\n <m3e-focus-ring class=\"focus-ring\" ?disabled=\"${this.disabled}\"></m3e-focus-ring>\r\n <m3e-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></m3e-ripple>\r\n <div class=\"wrapper\">\r\n <div class=\"icon\" aria-hidden=\"true\">${this.#renderIcon()}</div>\r\n <div class=\"label\">\r\n <slot></slot>\r\n ${this.invalid ? error : hint}\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderIcon(): unknown {\r\n if (!this.selected) {\r\n if (this.invalid) {\r\n return html`<slot name=\"error-icon\">\r\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path\r\n d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"\r\n />\r\n </svg>\r\n </slot>`;\r\n }\r\n if (this.completed) {\r\n if (this.editable) {\r\n return html`<slot name=\"edit-icon\">\r\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path\r\n d=\"M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z\"\r\n />\r\n </svg>\r\n </slot>`;\r\n }\r\n return html`<slot name=\"done-icon\">\r\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\" />\r\n </svg>\r\n </slot>`;\r\n }\r\n }\r\n\r\n return html`<slot name=\"icon\">${this.index + 1}</slot>`;\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (this.disabled) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n if (e.defaultPrevented || this.selected) return;\r\n\r\n this.selected = true;\r\n if (\r\n this.dispatchEvent(new Event(\"input\", { bubbles: true, composed: true, cancelable: true })) &&\r\n this.closest(\"m3e-stepper\")?.moveTo(this.index)\r\n ) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n } else {\r\n this.selected = false;\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-step\": M3eStepElement;\r\n }\r\n}\r\n","import { ActionElementBase } from \"@m3e/web/core\";\r\n\r\n/** A base implementation for a button used to move to a step in a stepper. This class must be inherited. */\r\nexport abstract class StepperButtonElementBase extends ActionElementBase {\r\n /** @private */ readonly #action: \"next\" | \"previous\" | \"reset\";\r\n\r\n constructor(action: \"next\" | \"previous\" | \"reset\") {\r\n super();\r\n this.#action = action;\r\n }\r\n\r\n /** @inheritdoc */\r\n override _onClick(): void {\r\n switch (this.#action) {\r\n case \"next\":\r\n this.closest(\"m3e-stepper\")?.moveNext();\r\n break;\r\n case \"previous\":\r\n this.closest(\"m3e-stepper\")?.movePrevious();\r\n break;\r\n\r\n case \"reset\":\r\n this.closest(\"m3e-stepper\")?.reset();\r\n break;\r\n }\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues } from \"lit\";\r\nimport { property, state } from \"lit/decorators.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport {\r\n addCustomState,\r\n AttachInternals,\r\n customElement,\r\n deleteCustomState,\r\n DesignToken,\r\n hasCustomState,\r\n ReconnectedCallback,\r\n registerStyleSheet,\r\n setCustomState,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { SelectionManager, selectionManager } from \"@m3e/web/core/a11y\";\r\nimport { Breakpoint, M3eBreakpointObserver } from \"@m3e/web/core/layout\";\r\n\r\nimport { M3eStepElement } from \"./StepElement\";\r\nimport { StepLabelPosition } from \"./StepLabelPosition\";\r\nimport { StepHeaderPosition } from \"./StepHeaderPosition\";\r\nimport { StepperOrientation } from \"./StepperOrientation\";\r\n\r\n/**\r\n * Provides a wizard-like workflow by dividing content into logical steps.\r\n *\r\n * @description\r\n * The `m3e-stepper` component orchestrates a structured, wizard-like workflow by dividing\r\n * content into discrete, navigable steps. It supports horizontal and vertical orientations,\r\n * linear progression, and configurable label and header positioning.\r\n *\r\n * @example\r\n * The following example demonstrates a linear multi-step form flow using the `m3e-stepper`\r\n * component. Each `m3e-step` defines a navigable step label, linked to its corresponding\r\n * `m3e-step-panel` via the `for` attribute. Navigation is orchestrated using the\r\n * `m3e-stepper-next`, `m3e-stepper-previous`, and `m3e-stepper-reset` components.\r\n *\r\n * <m3e-stepper>\r\n * <m3e-step for=\"step1\">Fill out your name</m3e-step>\r\n * <m3e-step for=\"step2\">Fill out your address</m3e-step>\r\n * <m3e-step for=\"step3\">Done</m3e-step>\r\n * <m3e-step-panel id=\"step1\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"name\">Name</label>\r\n * <input name=\"name\" id=\"name\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step2\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"address\">Address</label>\r\n * <input name=\"address\" id=\"address\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step3\">Done\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-reset>Reset</m3e-stepper-reset></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * </m3e-stepper>\r\n *\r\n * @tag m3e-stepper\r\n *\r\n * @attr header-position - The position of the step header, when oriented horizontally.\r\n * @attr label-position - The position of the step labels, when oriented horizontally.\r\n * @attr linear - Whether the validity of previous steps should be checked or not.\r\n * @attr orientation - The orientation of the stepper.\r\n *\r\n * @slot step - Renders a step.\r\n * @slot panel - Renders a panel.\r\n *\r\n * @fires change - Emitted when the selected step changes.\r\n *\r\n * @cssprop --m3e-step-divider-thickness - Thickness of the divider line between steps.\r\n * @cssprop --m3e-step-divider-color - Color of the divider line between steps.\r\n * @cssprop --m3e-step-divider-inset - Inset offset for divider alignment within step layout.\r\n */\r\n@customElement(\"m3e-stepper\")\r\nexport class M3eStepperElement extends ReconnectedCallback(AttachInternals(LitElement)) {\r\n static {\r\n registerStyleSheet(css`\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical)) > .-m3e-step-divider::before {\r\n border-bottom-width: var(--m3e-step-divider-thickness, 1px);\r\n border-bottom-style: solid;\r\n border-bottom-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type)::before,\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type)::after {\r\n border-bottom-width: var(--m3e-step-divider-thickness, 1px);\r\n border-bottom-style: solid;\r\n border-bottom-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"end\"] > .-m3e-step-divider {\r\n margin-block: auto;\r\n }\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"] > .-m3e-step-divider::before,\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"]\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type)::before,\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"]\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type)::after {\r\n margin-block-start: calc(var(--m3e-step-padding, 1.5rem) + calc(var(--m3e-step-icon-size, 1.5rem) / 2));\r\n }\r\n m3e-stepper:is(:state(--vertical), :--vertical) > [slot=\"panel\"] {\r\n margin-inline-start: calc(var(--m3e-step-padding, 1.5rem) + calc(var(--m3e-step-icon-size, 1.5rem) / 2));\r\n }\r\n m3e-stepper:is(:state(--vertical), :--vertical) > [slot=\"panel\"]:not(:last-of-type) {\r\n border-inline-start-width: var(--m3e-step-divider-thickness, 1px);\r\n border-inline-start-style: solid;\r\n border-inline-start-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n m3e-stepper:is(:state(--vertical), :--vertical)\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type)::before,\r\n m3e-stepper:is(:state(--vertical), :--vertical)\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type)::after {\r\n margin-inline-start: calc(var(--m3e-step-padding, 1.5rem) + calc(var(--m3e-step-icon-size, 1.5rem) / 2));\r\n border-inline-start-width: var(--m3e-step-divider-thickness, 1px);\r\n border-inline-start-style: solid;\r\n border-inline-start-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n `);\r\n }\r\n\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) .header {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-wrap: nowrap;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) ::slotted(.-m3e-step-divider) {\r\n flex: 1 1 auto;\r\n position: relative;\r\n min-width: 2rem;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) ::slotted(.-m3e-step-divider)::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)):not([label-position=\"below\"]))\r\n ::slotted(.-m3e-step-divider)::before {\r\n top: 50%;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) ::slotted([slot=\"step\"]) {\r\n align-self: stretch;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before,\r\n :host(:not(:is(:state(--vertical), :--vertical)))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n top: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before,\r\n :host(:not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n top: 50%;\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n left: 0;\r\n right: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n right: 0;\r\n left: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n left: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n right: 0;\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n right: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n left: 0;\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n left: 0;\r\n right: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n right: 0;\r\n left: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n left: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n right: 0;\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n right: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n left: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"]) {\r\n --_step-direction: column;\r\n --_step-label-align-items: center;\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) .header {\r\n display: contents;\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) ::slotted([slot=\"step\"]:not(.-m3e-step-divider)) {\r\n flex: none;\r\n }\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before,\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n left: 0;\r\n }\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n top: 0;\r\n bottom: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n top: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n bottom: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) {\r\n --m3e-collapsible-animation-duration: 0ms;\r\n }\r\n :host(:is(:state(--no-animate), :--no-animate)) {\r\n --m3e-collapsible-animation-duration: 0ms;\r\n }\r\n `;\r\n\r\n /** @private */ #breakpointUnobserve?: () => void;\r\n /** @private */ @state() private _orientation?: Exclude<StepperOrientation, \"auto\">;\r\n /** @private */ @state() private _selectedIndex: number | null = null;\r\n /** @internal */ readonly [selectionManager] = new SelectionManager<M3eStepElement>()\r\n .withHomeAndEnd()\r\n .withWrap()\r\n .onSelectedItemsChange(() => this.#handleSelectedChange());\r\n\r\n /**\r\n * The position of the step header, when oriented horizontally.\r\n * @default \"above\"\r\n */\r\n @property({ attribute: \"header-position\", reflect: true }) headerPosition: StepHeaderPosition = \"above\";\r\n\r\n /**\r\n * The position of the step labels, when oriented horizontally.\r\n * @default \"end\"\r\n */\r\n @property({ attribute: \"label-position\", reflect: true }) labelPosition: StepLabelPosition = \"end\";\r\n\r\n /**\r\n * Whether the validity of previous steps should be checked or not.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) linear = false;\r\n\r\n /**\r\n * The orientation of the stepper.\r\n * @default \"horizontal\"\r\n */\r\n @property({ reflect: true }) orientation: StepperOrientation = \"horizontal\";\r\n\r\n /** The steps. */\r\n get steps(): readonly M3eStepElement[] {\r\n return this[selectionManager]?.items ?? [];\r\n }\r\n\r\n /** The selected step. */\r\n get selectedStep(): M3eStepElement | null {\r\n return this._selectedIndex !== null ? (this.steps[this._selectedIndex] ?? null) : null;\r\n }\r\n\r\n /** The zero-based index of the selected step. */\r\n get selectedIndex(): number {\r\n return this._selectedIndex ?? -1;\r\n }\r\n\r\n /**\r\n * Moves the stepper to the previous step.\r\n * @returns {boolean} Whether the stepper moved to the previous step.\r\n */\r\n movePrevious(): boolean {\r\n return this.moveTo((this._selectedIndex ?? 1) - 1);\r\n }\r\n\r\n /**\r\n * Moves the stepper to the next step.\r\n * @returns {boolean} Whether the stepper moved to the next step.\r\n */\r\n moveNext(): boolean {\r\n return this.moveTo((this._selectedIndex ?? -1) + 1);\r\n }\r\n\r\n /**\r\n * Moves the stepper to the step with the specified index.\r\n * @param index The zero-based index of the step to which to move.\r\n * @returns {boolean} Whether the stepper moved to the specified `index`.\r\n */\r\n moveTo(index: number): boolean {\r\n const selectedStep = this.selectedStep;\r\n if (selectedStep && selectedStep.index === index) {\r\n return true;\r\n }\r\n\r\n if (this.steps[index]?.disabled) {\r\n return false;\r\n }\r\n\r\n if (index >= 0 && index < this.steps.length) {\r\n if (selectedStep) {\r\n const valid = this.#checkValidity();\r\n if (this.linear) {\r\n if (index < selectedStep.index) {\r\n const previousStep = this[selectionManager].items[index];\r\n if (!previousStep || (previousStep.completed && !previousStep.editable)) {\r\n return false;\r\n }\r\n } else if (index > selectedStep.index + 1) {\r\n const nextStep = this[selectionManager].items[index];\r\n if (!nextStep || !nextStep.completed) {\r\n return false;\r\n }\r\n } else if (!valid && !selectedStep.optional) {\r\n return false;\r\n }\r\n }\r\n\r\n selectedStep.completed = true;\r\n }\r\n\r\n this._selectedIndex = index;\r\n this[selectionManager].select(this.selectedStep);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return true;\r\n } else {\r\n if (selectedStep) {\r\n this[selectionManager].deselect(selectedStep);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n /** Resets the stepper to its initial state, clearing any form data. */\r\n reset(): void {\r\n this.steps.forEach((x) => x.reset());\r\n const index = this.steps.findIndex((x) => !x.disabled);\r\n if (index !== this._selectedIndex) {\r\n this._selectedIndex = index;\r\n this[selectionManager].select(this.selectedStep);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n addCustomState(this, \"--no-animate\");\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._orientation = undefined;\r\n this.#breakpointUnobserve?.();\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if (changedProperties.has(\"orientation\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n } else {\r\n this._orientation = undefined;\r\n this.#updateDisplayOrder();\r\n }\r\n }\r\n if (changedProperties.has(\"_orientation\")) {\r\n this.#updateDisplayOrder();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n let panelIndex: number | undefined;\r\n if (this.selectedStep?.panel) {\r\n panelIndex = [...this.querySelectorAll(\"[slot='panel']\")].indexOf(this.selectedStep.panel);\r\n if (panelIndex === -1) {\r\n panelIndex = undefined;\r\n }\r\n }\r\n\r\n if (!this[selectionManager].vertical) {\r\n return html`${this.headerPosition === \"above\" ? this.#renderHeader() : nothing}\r\n <m3e-slide class=\"steps\" selected-index=\"${ifDefined(panelIndex)}\">\r\n <slot name=\"panel\"></slot>\r\n </m3e-slide>\r\n ${this.headerPosition === \"below\" ? this.#renderHeader() : nothing}`;\r\n }\r\n\r\n return html`${this.#renderHeader()} <slot name=\"panel\"></slot>`;\r\n }\r\n\r\n /** @private */\r\n #renderHeader(): unknown {\r\n return html`<div\r\n class=\"header\"\r\n role=\"tablist\"\r\n aria-orientation=\"${ifDefined(this[selectionManager].vertical ? \"vertical\" : undefined)}\"\r\n @change=\"${this.#handleChange}\"\r\n >\r\n <slot name=\"step\" @slotchange=\"${this.#handleSlotChange}\" @keydown=\"${this.#handleKeyDown}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleChange(e: Event): void {\r\n e.stopPropagation();\r\n // Note: change event emitted from moveTo.\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(): void {\r\n const { added, removed } = this[selectionManager].setItems([...this.querySelectorAll(\"m3e-step\")]);\r\n if (added.length > 0 || removed.length > 0) {\r\n this.querySelectorAll(\".-m3e-step-divider\").forEach((x) => x.remove());\r\n for (let i = 0; i < this[selectionManager].items.length; i++) {\r\n const step = this[selectionManager].items[i];\r\n step.index = i;\r\n if (i > 0) {\r\n const divider = document.createElement(\"div\");\r\n divider.ariaHidden = \"true\";\r\n divider.classList.add(\"-m3e-step-divider\");\r\n divider.slot = \"step\";\r\n step.insertAdjacentElement(\"beforebegin\", divider);\r\n }\r\n }\r\n\r\n this.#updateDisplayOrder();\r\n\r\n if (this[selectionManager].selectedItems.length == 0) {\r\n this[selectionManager].select(this[selectionManager].items.find((x) => !x.disabled));\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n this[selectionManager].onKeyDown(e);\r\n }\r\n\r\n /** @private */\r\n #handleSelectedChange(): void {\r\n const selected = this[selectionManager].selectedItems[0];\r\n let selectedIndex = selected ? this.steps.indexOf(selected) : null;\r\n if (selectedIndex === -1) {\r\n selectedIndex = null;\r\n }\r\n this._selectedIndex = selectedIndex;\r\n\r\n for (const step of this[selectionManager].items) {\r\n if (step.panel) {\r\n step.panel.active = step.index === selectedIndex;\r\n }\r\n }\r\n\r\n if (selected && this.matches(\":focus-within\") && !selected.matches(\":focus\")) {\r\n selected.focus();\r\n }\r\n\r\n if (hasCustomState(this, \"--no-animate\")) {\r\n requestAnimationFrame(() => deleteCustomState(this, \"--no-animate\"));\r\n }\r\n }\r\n\r\n /** @private */\r\n #checkValidity(): boolean {\r\n let valid = false;\r\n if (this.selectedStep) {\r\n valid = this.selectedStep.panel?.querySelector(\"form\")?.checkValidity() ?? true;\r\n if (this.selectedStep.optional) {\r\n valid = true;\r\n }\r\n this.selectedStep.invalid = !valid;\r\n }\r\n return valid;\r\n }\r\n\r\n /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall], (matches) => {\r\n this._orientation = matches.get(Breakpoint.XSmall) ? \"vertical\" : \"horizontal\";\r\n this.#updateDisplayOrder();\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateDisplayOrder(): void {\r\n this[selectionManager].vertical = (this._orientation ?? this.orientation) === \"vertical\";\r\n setCustomState(this, \"--vertical\", this[selectionManager].vertical);\r\n\r\n if (!this[selectionManager].vertical) {\r\n this.steps.forEach((x) => {\r\n x.style.order = \"\";\r\n if (x.panel) {\r\n x.panel.style.order = \"\";\r\n }\r\n });\r\n } else {\r\n this.steps.forEach((x, i) => {\r\n x.style.order = `${i}`;\r\n if (x.panel) {\r\n x.panel.style.order = `${i}`;\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper\": M3eStepperElement;\r\n }\r\n}\r\n","import { customElement } from \"@m3e/web/core\";\r\n\r\nimport { StepperButtonElementBase } from \"./StepperButtonElementBase\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to move a stepper to the next step.\r\n * @tag m3e-stepper-previous\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-stepper-next\")\r\nexport class M3eStepperNextElement extends StepperButtonElementBase {\r\n constructor() {\r\n super(\"next\");\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper-next\": M3eStepperNextElement;\r\n }\r\n}\r\n","import { customElement } from \"@m3e/web/core\";\r\n\r\nimport { StepperButtonElementBase } from \"./StepperButtonElementBase\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to move a stepper to the previous step.\r\n * @tag m3e-stepper-previous\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-stepper-previous\")\r\nexport class M3eStepperPreviousElement extends StepperButtonElementBase {\r\n constructor() {\r\n super(\"previous\");\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper-previous\": M3eStepperPreviousElement;\r\n }\r\n}\r\n","import { customElement } from \"@m3e/web/core\";\r\n\r\nimport { StepperButtonElementBase } from \"./StepperButtonElementBase\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to reset a stepper to its initial state.\r\n * @tag m3e-stepper-reset\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-stepper-reset\")\r\nexport class M3eStepperResetElement extends StepperButtonElementBase {\r\n constructor() {\r\n super(\"reset\");\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper-reset\": M3eStepperResetElement;\r\n }\r\n}\r\n"],"names":["M3eStepPanelElement","Role","LitElement","constructor","active","connectedCallback","slot","render","html","styles","css","__decorate","state","prototype","customElement","M3eStepElement","M3eStepElement_1","Selected","KeyboardClick","Focusable","HtmlFor","Disabled","AttachInternals","_M3eStepElement_clickHandler","set","e","__classPrivateFieldGet","call","optional","editable","completed","invalid","index","panel","control","stepper","closest","reset","querySelector","attach","id","__nextId","addAriaReferencedId","style","order","detach","removeAriaReferencedId","addEventListener","disconnectedCallback","removeEventListener","update","changedProperties","has","selectionManager","notifySelectionChange","firstUpdated","_changedProperties","_focusRing","_stateLayer","_ripple","forEach","x","hint","nothing","error","disabled","_M3eStepElement_instances","_M3eStepElement_renderIcon","selected","preventDefault","stopImmediatePropagation","defaultPrevented","dispatchEvent","Event","bubbles","composed","cancelable","moveTo","DesignToken","shape","corner","medium","color","primary","onPrimary","inverseSurface","inverseOnSurface","onSurface","typescale","standard","title","small","fontSize","fontWeight","lineHeight","tracking","body","onSurfaceVariant","query","property","type","Boolean","reflect","StepperButtonElementBase","ActionElementBase","action","_StepperButtonElementBase_action","__classPrivateFieldSet","_onClick","moveNext","movePrevious","M3eStepperElement","ReconnectedCallback","_M3eStepperElement_breakpointUnobserve","_selectedIndex","_a","SelectionManager","withHomeAndEnd","withWrap","onSelectedItemsChange","_M3eStepperElement_instances","_M3eStepperElement_handleSelectedChange","headerPosition","labelPosition","linear","orientation","steps","items","selectedStep","selectedIndex","length","valid","previousStep","nextStep","select","deselect","findIndex","addCustomState","_orientation","undefined","reconnectedCallback","_M3eStepperElement_initBreakpointMonitoring","willUpdate","_M3eStepperElement_updateDisplayOrder","panelIndex","querySelectorAll","indexOf","vertical","ifDefined","_M3eStepperElement_renderHeader","_M3eStepperElement_handleChange","_M3eStepperElement_handleSlotChange","_M3eStepperElement_handleKeyDown","stopPropagation","added","removed","setItems","remove","i","step","divider","document","createElement","ariaHidden","classList","add","insertAdjacentElement","selectedItems","find","onKeyDown","matches","focus","hasCustomState","requestAnimationFrame","deleteCustomState","checkValidity","M3eBreakpointObserver","observe","Breakpoint","XSmall","get","setCustomState","registerStyleSheet","outline","attribute","M3eStepperNextElement","M3eStepperPreviousElement","M3eStepperResetElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stepper.js","sources":["../../src/stepper/StepPanelElement.ts","../../src/stepper/StepElement.ts","../../src/stepper/StepperButtonElementBase.ts","../../src/stepper/StepperElement.ts","../../src/stepper/StepperNextElement.ts","../../src/stepper/StepperPreviousElement.ts","../../src/stepper/StepperResetElement.ts"],"sourcesContent":["import { css, CSSResultGroup, html, LitElement } from \"lit\";\r\nimport { state } from \"lit/decorators.js\";\r\n\r\nimport { customElement, Role } from \"@m3e/web/core\";\r\n\r\n/**\r\n * A panel presented for a step in a wizard-like workflow.\r\n *\r\n * @description\r\n * The `m3e-step-panel` is a container for presenting contextual content and actions\r\n * associated with a single step in a structured workflow.\r\n *\r\n * @example\r\n * The following example demonstrates a linear multi-step form flow using the `m3e-stepper`\r\n * component. Each `m3e-step` defines a navigable step label, linked to its corresponding\r\n * `m3e-step-panel` via the `for` attribute. Navigation is orchestrated using the\r\n * `m3e-stepper-next`, `m3e-stepper-previous`, and `m3e-stepper-reset` components.\r\n *\r\n * <m3e-stepper>\r\n * <m3e-step for=\"step1\">Fill out your name</m3e-step>\r\n * <m3e-step for=\"step2\">Fill out your address</m3e-step>\r\n * <m3e-step for=\"step3\">Done</m3e-step>\r\n * <m3e-step-panel id=\"step1\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"name\">Name</label>\r\n * <input name=\"name\" id=\"name\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step2\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"address\">Address</label>\r\n * <input name=\"address\" id=\"address\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step3\">Done\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-reset>Reset</m3e-stepper-reset></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * </m3e-stepper>\r\n *\r\n * @tag m3e-step-panel\r\n *\r\n * @slot - Renders the content of the panel.\r\n * @slot actions- Renders the actions bar of the panel.\r\n *\r\n * @cssprop --m3e-step-panel-padding - Padding inside the step panel container, defining internal spacing around content.\r\n * @cssprop --m3e-step-panel-spacing - Vertical gap between stacked elements within the step panel.\r\n * @cssprop --m3e-step-panel-actions-height - Minimum height of the slotted actions container.\r\n */\r\n@customElement(\"m3e-step-panel\")\r\nexport class M3eStepPanelElement extends Role(LitElement, \"tabpanel\") {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n }\r\n .content {\r\n display: flex;\r\n flex-direction: column;\r\n padding: var(--m3e-step-panel-padding, 1rem 1.5rem 1.5rem 1.5rem);\r\n row-gap: var(--m3e-step-panel-spacing, 0.5rem);\r\n }\r\n ::slotted([slot=\"actions\"]) {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n min-height: var(--m3e-step-panel-actions-height, 3rem);\r\n }\r\n ::slotted([slot=\"actions\"][end]) {\r\n justify-content: flex-end;\r\n }\r\n `;\r\n\r\n /** @internal */\r\n @state() active = false;\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n this.slot = \"panel\";\r\n\r\n super.connectedCallback();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<m3e-collapsible ?open=${this.active}>\r\n <div class=\"content\">\r\n <div><slot></slot></div>\r\n <slot name=\"actions\"></slot>\r\n </div>\r\n </m3e-collapsible>`;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-step-panel\": M3eStepPanelElement;\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues } from \"lit\";\r\nimport { property, query, state } from \"lit/decorators.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n customElement,\r\n DesignToken,\r\n Disabled,\r\n Focusable,\r\n HtmlFor,\r\n KeyboardClick,\r\n M3eFocusRingElement,\r\n M3eRippleElement,\r\n M3eStateLayerElement,\r\n Role,\r\n Selected,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { addAriaReferencedId, removeAriaReferencedId, selectionManager } from \"@m3e/web/core/a11y\";\r\n\r\nimport type { M3eStepperElement } from \"./StepperElement\";\r\nimport { M3eStepPanelElement } from \"./StepPanelElement\";\r\n\r\n/**\r\n * A step in a wizard-like workflow.\r\n *\r\n * @description\r\n * The `m3e-step` component represents a single step in a structured, wizard-like workflow.\r\n * It supports semantic labeling, stateful styling, and optional interaction for completed,\r\n * selected, invalid, or disabled states. It aligns with Material Design guidance for progressive\r\n * disclosure, accessible navigation, and visual continuity across horizontal and vertical layouts.\r\n *\r\n * @example\r\n * The following example demonstrates a linear multi-step form flow using the `m3e-stepper`\r\n * component. Each `m3e-step` defines a navigable step label, linked to its corresponding\r\n * `m3e-step-panel` via the `for` attribute. Navigation is orchestrated using the\r\n * `m3e-stepper-next`, `m3e-stepper-previous`, and `m3e-stepper-reset` components.\r\n *\r\n * <m3e-stepper>\r\n * <m3e-step for=\"step1\">Fill out your name</m3e-step>\r\n * <m3e-step for=\"step2\">Fill out your address</m3e-step>\r\n * <m3e-step for=\"step3\">Done</m3e-step>\r\n * <m3e-step-panel id=\"step1\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"name\">Name</label>\r\n * <input name=\"name\" id=\"name\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step2\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"address\">Address</label>\r\n * <input name=\"address\" id=\"address\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step3\">Done\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-reset>Reset</m3e-stepper-reset></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * </m3e-stepper>\r\n *\r\n * @tag m3e-step\r\n *\r\n * @slot - Renders the label of the step.\r\n * @slot icon - Renders the icon of the step.\r\n * @slot done-icon - Renders the icon of a completed step.\r\n * @slot edit-icon - Renders the icon of a completed editable step.\r\n * @slot error-icon - Renders icon of an invalid step.\r\n * @slot hint - Renders the hint text of the step.\r\n * @slot error - Renders the error message for an invalid step.\r\n *\r\n * @attr completed - Whether the step has been completed.\r\n * @attr disabled - Whether the element is disabled.\r\n * @attr editable - Whether the step is editable and users can return to it after completion.\r\n * @attr for - The identifier of the interactive control to which this element is attached.\r\n * @attr optional - Whether the step is optional.\r\n * @attr selected - Whether the element is selected.\r\n *\r\n * @fires beforeinput - Dispatched before the selected state changes.\r\n * @fires input - Dispatched when the selected state changes.\r\n * @fires change - Dispatched when the selected state changes.\r\n * @fires click - Dispatched when the element is clicked.\r\n *\r\n * @cssprop --m3e-step-shape - Border radius of the step container, defining its visual shape.\r\n * @cssprop --m3e-step-padding - Internal padding of the step container, used for layout spacing.\r\n * @cssprop --m3e-step-icon-shape - Border radius of the icon container, controlling its geometric form.\r\n * @cssprop --m3e-step-icon-size - Width and height of the icon container and icon glyph.\r\n * @cssprop --m3e-step-selected-icon-container-color - Background color of the icon when the step is selected.\r\n * @cssprop --m3e-step-selected-icon-color - Foreground color of the icon when the step is selected.\r\n * @cssprop --m3e-step-completed-icon-container-color - Background color of the icon when the step is completed.\r\n * @cssprop --m3e-step-completed-icon-color - Foreground color of the icon when the step is completed.\r\n * @cssprop --m3e-step-unselected-icon-container-color - Background color of the icon when the step is inactive.\r\n * @cssprop --m3e-step-unselected-icon-color - Foreground color of the icon when the step is inactive.\r\n * @cssprop --m3e-step-icon-error-color - Foreground color of the icon when the step is invalid.\r\n * @cssprop --m3e-step-disabled-icon-container-color - Base color used to mix the disabled icon background.\r\n * @cssprop --m3e-step-disabled-icon-color - Base color used to mix the disabled icon foreground.\r\n * @cssprop --m3e-step-label-color - Text color of the step label in its default state.\r\n * @cssprop --m3e-step-label-error-color - Text color of the step label when the step is invalid.\r\n * @cssprop --m3e-step-disabled-label-color - Base color used to mix the disabled label foreground.\r\n * @cssprop --m3e-step-font-size - Font size of the step label.\r\n * @cssprop --m3e-step-font-weight - Font weight of the step label.\r\n * @cssprop --m3e-step-line-height - Line height of the step label.\r\n * @cssprop --m3e-step-tracking - Letter spacing of the step label.\r\n * @cssprop --m3e-step-icon-label-space - Gap between icon and label.\r\n * @cssprop --m3e-step-hint-font-size - Font size of hint and error messages.\r\n * @cssprop --m3e-step-hint-font-weight - Font weight of hint and error messages.\r\n * @cssprop --m3e-step-hint-line-height - Line height of hint and error messages.\r\n * @cssprop --m3e-step-hint-tracking - Letter spacing of hint and error messages.\r\n * @cssprop --m3e-step-hint-color - Text color of hint messages in valid state.\r\n * @cssprop --m3e-step-disabled-hint-color - Base color used to mix the disabled hint foreground.\r\n */\r\n@customElement(\"m3e-step\")\r\nexport class M3eStepElement extends Selected(\r\n KeyboardClick(Focusable(HtmlFor(Disabled(AttachInternals(Role(LitElement, \"tab\")))))),\r\n) {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: block;\r\n outline: none;\r\n min-width: 0px;\r\n position: relative;\r\n user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n .base {\r\n min-width: inherit;\r\n position: relative;\r\n border-radius: var(--m3e-step-shape, ${DesignToken.shape.corner.medium});\r\n padding: var(--m3e-step-padding, 1.5rem);\r\n }\r\n :host(:not([aria-disabled=\"true\"])) {\r\n cursor: pointer;\r\n }\r\n .icon {\r\n flex: none;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: var(--m3e-step-icon-shape, 50%);\r\n width: var(--m3e-step-icon-size, 1.5rem);\r\n height: var(--m3e-step-icon-size, 1.5rem);\r\n }\r\n .icon svg,\r\n ::slotted([slot=\"icon\"]),\r\n ::slotted([slot=\"edit-icon\"]),\r\n ::slotted([slot=\"done-icon\"]),\r\n ::slotted([slot=\"error-icon\"]) {\r\n width: 1em;\r\n font-size: var(--m3e-step-icon-size, 1.5rem) !important;\r\n }\r\n :host(:not([aria-disabled=\"true\"])[selected]) .icon {\r\n background-color: var(--m3e-step-selected-icon-container-color, ${DesignToken.color.primary});\r\n color: var(--m3e-step-selected-icon-color, ${DesignToken.color.onPrimary});\r\n }\r\n :host(:not([aria-disabled=\"true\"])[completed]:not([invalid])) .icon {\r\n background-color: var(--m3e-step-completed-icon-container-color, ${DesignToken.color.primary});\r\n color: var(--m3e-step-completed-icon-color, ${DesignToken.color.onPrimary});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([selected]):not([completed]):not([invalid])) .icon {\r\n background-color: var(--m3e-step-unselected-icon-container-color, ${DesignToken.color.inverseSurface});\r\n color: var(--m3e-step-unselected-icon-color, ${DesignToken.color.inverseOnSurface});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([selected])[invalid]) .icon {\r\n color: var(--m3e-step-icon-error-color, ${DesignToken.color.error});\r\n }\r\n :host([aria-disabled=\"true\"]) .icon {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--m3e-step-disabled-icon-container-color, ${DesignToken.color.onSurface}) 10%,\r\n transparent\r\n );\r\n color: color-mix(in srgb, var(--m3e-step-disabled-icon-color, ${DesignToken.color.onSurface}) 38%, transparent);\r\n }\r\n\r\n :host(:not([aria-disabled=\"true\"])) .label {\r\n color: var(--m3e-step-label-color, ${DesignToken.color.onSurface});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([selected])[invalid]) .label {\r\n color: var(--m3e-step-label-error-color, ${DesignToken.color.error});\r\n }\r\n :host([aria-disabled=\"true\"]) .label {\r\n color: color-mix(in srgb, var(--m3e-step-disabled-label-color, ${DesignToken.color.onSurface}) 38%, transparent);\r\n }\r\n .wrapper {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n border-radius: inherit;\r\n font-size: var(--m3e-step-font-size, ${DesignToken.typescale.standard.title.small.fontSize});\r\n font-weight: var(--m3e-step-font-weight, ${DesignToken.typescale.standard.title.small.fontWeight});\r\n line-height: var(--m3e-step-line-height, ${DesignToken.typescale.standard.title.small.lineHeight});\r\n letter-spacing: var(--m3e-step-tracking, ${DesignToken.typescale.standard.title.small.tracking});\r\n flex-direction: var(--_step-direction, row);\r\n gap: var(--m3e-step-icon-label-space, 0.5rem);\r\n justify-content: flex-start;\r\n }\r\n .label {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: var(--_step-label-align-items, flex-start);\r\n }\r\n ::slotted([slot=\"hint\"]),\r\n .hint,\r\n ::slotted([slot=\"error\"]) {\r\n font-size: var(--m3e-step-hint-font-size, ${DesignToken.typescale.standard.body.small.fontSize});\r\n font-weight: var(--m3e-step-hint-font-weight, ${DesignToken.typescale.standard.body.small.fontWeight});\r\n line-height: var(--m3e-step-hint-line-height, ${DesignToken.typescale.standard.body.small.lineHeight});\r\n letter-spacing: var(--m3e-step-hint-tracking, ${DesignToken.typescale.standard.body.small.tracking});\r\n }\r\n :host(:not([aria-disabled=\"true\"]):not([invalid])) ::slotted([slot=\"hint\"]),\r\n :host(:not([aria-disabled=\"true\"]):not([invalid])) .hint {\r\n color: var(--m3e-step-hint-color, ${DesignToken.color.onSurfaceVariant});\r\n }\r\n :host([aria-disabled=\"true\"]) ::slotted([slot=\"hint\"]),\r\n :host([aria-disabled=\"true\"]) .hint {\r\n color: color-mix(in srgb, var(--m3e-step-disabled-hint-color, ${DesignToken.color.onSurface}) 38%, transparent);\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\r\n /** @private */ @query(\".state-layer\") private readonly _stateLayer?: M3eStateLayerElement;\r\n /** @private */ @query(\".ripple\") private readonly _ripple?: M3eRippleElement;\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n\r\n /**\r\n * Whether the step is optional.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) optional = false;\r\n\r\n /**\r\n * Whether the step is editable and users can return to it after completion.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) editable = false;\r\n\r\n /**\r\n * Whether the step has been completed.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) completed = false;\r\n\r\n /**\r\n * Whether the step has an error.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) invalid = false;\r\n\r\n /** @internal */\r\n @state() index = -1;\r\n\r\n /** A reference to the panel controlled by the step. */\r\n get panel(): M3eStepPanelElement | null {\r\n return this.control instanceof M3eStepPanelElement ? this.control : null;\r\n }\r\n\r\n /** The stepper to which this step belongs. */\r\n get stepper(): M3eStepperElement | null {\r\n return this.closest(\"m3e-stepper\");\r\n }\r\n\r\n /** Resets the step to its initial state, clearing any form data. */\r\n reset(): void {\r\n this.invalid = false;\r\n this.completed = false;\r\n this.panel?.querySelector(\"form\")?.reset();\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (control instanceof M3eStepPanelElement) {\r\n control.id = control.id || `m3e-step-panel-${M3eStepElement.__nextId++}`;\r\n addAriaReferencedId(this, \"aria-controls\", control.id);\r\n control.style.order = this.style.order;\r\n }\r\n super.attach(control);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.control.style.order = \"\";\r\n if (this.control.id) {\r\n removeAriaReferencedId(this, \"aria-controls\", this.control.id);\r\n }\r\n }\r\n\r\n super.detach();\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n this.slot = \"step\";\r\n\r\n super.connectedCallback();\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"selected\")) {\r\n this.closest(\"m3e-stepper\")?.[selectionManager].notifySelectionChange(this);\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n [this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n const hint = html`<slot name=\"hint\">${this.optional ? html`<span class=\"hint\">(Optional)</span>` : nothing}</slot>`;\r\n const error = html`<slot name=\"error\">${hint}</slot>`;\r\n\r\n return html`<div class=\"base\">\r\n <m3e-state-layer class=\"state-layer\" ?disabled=\"${this.disabled}\"></m3e-state-layer>\r\n <m3e-focus-ring class=\"focus-ring\" ?disabled=\"${this.disabled}\"></m3e-focus-ring>\r\n <m3e-ripple class=\"ripple\" ?disabled=\"${this.disabled}\"></m3e-ripple>\r\n <div class=\"wrapper\">\r\n <div class=\"icon\" aria-hidden=\"true\">${this.#renderIcon()}</div>\r\n <div class=\"label\">\r\n <slot></slot>\r\n ${this.invalid ? error : hint}\r\n </div>\r\n </div>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #renderIcon(): unknown {\r\n if (!this.selected) {\r\n if (this.invalid) {\r\n return html`<slot name=\"error-icon\">\r\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path\r\n d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"\r\n />\r\n </svg>\r\n </slot>`;\r\n }\r\n if (this.completed) {\r\n if (this.editable) {\r\n return html`<slot name=\"edit-icon\">\r\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path\r\n d=\"M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z\"\r\n />\r\n </svg>\r\n </slot>`;\r\n }\r\n return html`<slot name=\"done-icon\">\r\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\" />\r\n </svg>\r\n </slot>`;\r\n }\r\n }\r\n\r\n return html`<slot name=\"icon\">${this.index + 1}</slot>`;\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (this.disabled) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n if (e.defaultPrevented || this.selected) return;\r\n\r\n if (\r\n this.dispatchEvent(new Event(\"beforeinput\", { bubbles: true, cancelable: true })) &&\r\n this.closest(\"m3e-stepper\")?._moveTo(this.index)\r\n ) {\r\n this.selected = true;\r\n this.dispatchEvent(new Event(\"input\", { bubbles: true }));\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-step\": M3eStepElement;\r\n }\r\n}\r\n","import { ActionElementBase } from \"@m3e/web/core\";\r\n\r\n/** A base implementation for a button used to move to a step in a stepper. This class must be inherited. */\r\nexport abstract class StepperButtonElementBase extends ActionElementBase {\r\n /** @private */ readonly #action: \"next\" | \"previous\" | \"reset\";\r\n\r\n constructor(action: \"next\" | \"previous\" | \"reset\") {\r\n super();\r\n this.#action = action;\r\n }\r\n\r\n /** @inheritdoc */\r\n override _onClick(): void {\r\n switch (this.#action) {\r\n case \"next\":\r\n this.closest(\"m3e-stepper\")?.moveNext();\r\n break;\r\n case \"previous\":\r\n this.closest(\"m3e-stepper\")?.movePrevious();\r\n break;\r\n\r\n case \"reset\":\r\n this.closest(\"m3e-stepper\")?.reset();\r\n break;\r\n }\r\n }\r\n}\r\n","import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues } from \"lit\";\r\nimport { property, state } from \"lit/decorators.js\";\r\nimport { ifDefined } from \"lit/directives/if-defined.js\";\r\n\r\nimport {\r\n addCustomState,\r\n AttachInternals,\r\n customElement,\r\n deleteCustomState,\r\n DesignToken,\r\n hasCustomState,\r\n ReconnectedCallback,\r\n registerStyleSheet,\r\n setCustomState,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { SelectionManager, selectionManager } from \"@m3e/web/core/a11y\";\r\nimport { Breakpoint, M3eBreakpointObserver } from \"@m3e/web/core/layout\";\r\n\r\nimport { M3eStepElement } from \"./StepElement\";\r\nimport { StepLabelPosition } from \"./StepLabelPosition\";\r\nimport { StepHeaderPosition } from \"./StepHeaderPosition\";\r\nimport { StepperOrientation } from \"./StepperOrientation\";\r\n\r\n/**\r\n * Provides a wizard-like workflow by dividing content into logical steps.\r\n *\r\n * @description\r\n * The `m3e-stepper` component orchestrates a structured, wizard-like workflow by dividing\r\n * content into discrete, navigable steps. It supports horizontal and vertical orientations,\r\n * linear progression, and configurable label and header positioning.\r\n *\r\n * @example\r\n * The following example demonstrates a linear multi-step form flow using the `m3e-stepper`\r\n * component. Each `m3e-step` defines a navigable step label, linked to its corresponding\r\n * `m3e-step-panel` via the `for` attribute. Navigation is orchestrated using the\r\n * `m3e-stepper-next`, `m3e-stepper-previous`, and `m3e-stepper-reset` components.\r\n *\r\n * <m3e-stepper>\r\n * <m3e-step for=\"step1\">Fill out your name</m3e-step>\r\n * <m3e-step for=\"step2\">Fill out your address</m3e-step>\r\n * <m3e-step for=\"step3\">Done</m3e-step>\r\n * <m3e-step-panel id=\"step1\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"name\">Name</label>\r\n * <input name=\"name\" id=\"name\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step2\">\r\n * <form>\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"address\">Address</label>\r\n * <input name=\"address\" id=\"address\" required />\r\n * </m3e-form-field>\r\n * </form>\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-next>Next</m3e-stepper-next></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * <m3e-step-panel id=\"step3\">Done\r\n * <div slot=\"actions\">\r\n * <m3e-button><m3e-stepper-previous>Back</m3e-stepper-previous></m3e-button>\r\n * <m3e-button><m3e-stepper-reset>Reset</m3e-stepper-reset></m3e-button>\r\n * </div>\r\n * </m3e-step-panel>\r\n * </m3e-stepper>\r\n *\r\n * @tag m3e-stepper\r\n *\r\n * @attr header-position - The position of the step header, when oriented horizontally.\r\n * @attr label-position - The position of the step labels, when oriented horizontally.\r\n * @attr linear - Whether the validity of previous steps should be checked or not.\r\n * @attr orientation - The orientation of the stepper.\r\n *\r\n * @slot step - Renders a step.\r\n * @slot panel - Renders a panel.\r\n *\r\n * @fires beforeinput - Dispatched before the selected state of a step changes.\r\n * @fires input - Dispatched when the selected state of a step changes.\r\n * @fires change - Dispatched when the selected step changes.\r\n *\r\n * @cssprop --m3e-step-divider-thickness - Thickness of the divider line between steps.\r\n * @cssprop --m3e-step-divider-color - Color of the divider line between steps.\r\n * @cssprop --m3e-step-divider-inset - Inset offset for divider alignment within step layout.\r\n */\r\n@customElement(\"m3e-stepper\")\r\nexport class M3eStepperElement extends ReconnectedCallback(AttachInternals(LitElement)) {\r\n static {\r\n registerStyleSheet(css`\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical)) > .-m3e-step-divider::before {\r\n border-bottom-width: var(--m3e-step-divider-thickness, 1px);\r\n border-bottom-style: solid;\r\n border-bottom-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type)::before,\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type)::after {\r\n border-bottom-width: var(--m3e-step-divider-thickness, 1px);\r\n border-bottom-style: solid;\r\n border-bottom-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"end\"] > .-m3e-step-divider {\r\n margin-block: auto;\r\n }\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"] > .-m3e-step-divider::before,\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"]\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type)::before,\r\n m3e-stepper:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"]\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type)::after {\r\n margin-block-start: calc(var(--m3e-step-padding, 1.5rem) + calc(var(--m3e-step-icon-size, 1.5rem) / 2));\r\n }\r\n m3e-stepper:is(:state(--vertical), :--vertical) > [slot=\"panel\"] {\r\n margin-inline-start: calc(var(--m3e-step-padding, 1.5rem) + calc(var(--m3e-step-icon-size, 1.5rem) / 2));\r\n }\r\n m3e-stepper:is(:state(--vertical), :--vertical) > [slot=\"panel\"]:not(:last-of-type) {\r\n border-inline-start-width: var(--m3e-step-divider-thickness, 1px);\r\n border-inline-start-style: solid;\r\n border-inline-start-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n m3e-stepper:is(:state(--vertical), :--vertical)\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type)::before,\r\n m3e-stepper:is(:state(--vertical), :--vertical)\r\n > [slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type)::after {\r\n margin-inline-start: calc(var(--m3e-step-padding, 1.5rem) + calc(var(--m3e-step-icon-size, 1.5rem) / 2));\r\n border-inline-start-width: var(--m3e-step-divider-thickness, 1px);\r\n border-inline-start-style: solid;\r\n border-inline-start-color: var(--m3e-step-divider-color, ${DesignToken.color.outline});\r\n }\r\n `);\r\n }\r\n\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) .header {\r\n display: flex;\r\n align-items: flex-start;\r\n flex-wrap: nowrap;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) ::slotted(.-m3e-step-divider) {\r\n flex: 1 1 auto;\r\n position: relative;\r\n min-width: 2rem;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) ::slotted(.-m3e-step-divider)::before {\r\n content: \"\";\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)):not([label-position=\"below\"]))\r\n ::slotted(.-m3e-step-divider)::before {\r\n top: 50%;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) ::slotted([slot=\"step\"]) {\r\n align-self: stretch;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical)))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before,\r\n :host(:not(:is(:state(--vertical), :--vertical)))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n top: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before,\r\n :host(:not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n top: 50%;\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n left: 0;\r\n right: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n right: 0;\r\n left: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n left: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n right: 0;\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"end\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n right: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n left: 0;\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n left: 0;\r\n right: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n right: 0;\r\n left: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:not(:dir(rtl)):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n left: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n right: 0;\r\n }\r\n :host(:dir(rtl):not(:is(:state(--vertical), :--vertical))[label-position=\"below\"])\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n right: calc(50% + calc(var(--m3e-step-icon-size, 1.5rem) / 2) + var(--m3e-step-divider-inset, 0.5rem));\r\n left: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))[label-position=\"below\"]) {\r\n --_step-direction: column;\r\n --_step-label-align-items: center;\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) .header {\r\n display: contents;\r\n }\r\n :host(:is(:state(--vertical), :--vertical)) ::slotted([slot=\"step\"]:not(.-m3e-step-divider)) {\r\n flex: none;\r\n }\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before,\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n content: \"\";\r\n display: block;\r\n position: absolute;\r\n left: 0;\r\n }\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:first-of-type))::before {\r\n top: 0;\r\n bottom: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n }\r\n :host(:is(:state(--vertical), :--vertical))\r\n ::slotted([slot=\"step\"]:not(.-m3e-step-divider):not(:last-of-type))::after {\r\n top: calc(100% - var(--m3e-step-padding, 1.5rem) + var(--m3e-step-divider-inset, 0.5rem));\r\n bottom: 0;\r\n }\r\n :host(:not(:is(:state(--vertical), :--vertical))) {\r\n --m3e-collapsible-animation-duration: 0ms;\r\n }\r\n :host(:is(:state(--no-animate), :--no-animate)) {\r\n --m3e-collapsible-animation-duration: 0ms;\r\n }\r\n `;\r\n\r\n /** @private */ #breakpointUnobserve?: () => void;\r\n /** @private */ @state() private _orientation?: Exclude<StepperOrientation, \"auto\">;\r\n /** @private */ @state() private _selectedIndex: number | null = null;\r\n /** @internal */ readonly [selectionManager] = new SelectionManager<M3eStepElement>()\r\n .withHomeAndEnd()\r\n .withWrap()\r\n .onSelectedItemsChange(() => this.#handleSelectedChange());\r\n\r\n /**\r\n * The position of the step header, when oriented horizontally.\r\n * @default \"above\"\r\n */\r\n @property({ attribute: \"header-position\", reflect: true }) headerPosition: StepHeaderPosition = \"above\";\r\n\r\n /**\r\n * The position of the step labels, when oriented horizontally.\r\n * @default \"end\"\r\n */\r\n @property({ attribute: \"label-position\", reflect: true }) labelPosition: StepLabelPosition = \"end\";\r\n\r\n /**\r\n * Whether the validity of previous steps should be checked or not.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) linear = false;\r\n\r\n /**\r\n * The orientation of the stepper.\r\n * @default \"horizontal\"\r\n */\r\n @property({ reflect: true }) orientation: StepperOrientation = \"horizontal\";\r\n\r\n /** The steps. */\r\n get steps(): readonly M3eStepElement[] {\r\n return this[selectionManager]?.items ?? [];\r\n }\r\n\r\n /** The selected step. */\r\n get selectedStep(): M3eStepElement | null {\r\n return this._selectedIndex !== null ? (this.steps[this._selectedIndex] ?? null) : null;\r\n }\r\n\r\n /** The zero-based index of the selected step. */\r\n get selectedIndex(): number {\r\n return this._selectedIndex ?? -1;\r\n }\r\n\r\n /**\r\n * Moves the stepper to the previous step.\r\n * @returns {boolean} Whether the stepper moved to the previous step.\r\n */\r\n movePrevious(): boolean {\r\n return this.moveTo((this._selectedIndex ?? 1) - 1);\r\n }\r\n\r\n /**\r\n * Moves the stepper to the next step.\r\n * @returns {boolean} Whether the stepper moved to the next step.\r\n */\r\n moveNext(): boolean {\r\n return this.moveTo((this._selectedIndex ?? -1) + 1);\r\n }\r\n\r\n /**\r\n * Moves the stepper to the step with the specified index.\r\n * @param index The zero-based index of the step to which to move.\r\n * @returns {boolean} Whether the stepper moved to the specified `index`.\r\n */\r\n\r\n moveTo(index: number): boolean {\r\n if (this._moveTo(index)) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n _moveTo(index: number): boolean {\r\n const selectedStep = this.selectedStep;\r\n if (selectedStep && selectedStep.index === index) {\r\n return true;\r\n }\r\n\r\n if (this.steps[index]?.disabled) {\r\n return false;\r\n }\r\n\r\n if (index >= 0 && index < this.steps.length) {\r\n if (selectedStep) {\r\n const valid = this.#checkValidity();\r\n if (this.linear) {\r\n if (index < selectedStep.index) {\r\n const previousStep = this[selectionManager].items[index];\r\n if (!previousStep || (previousStep.completed && !previousStep.editable)) {\r\n return false;\r\n }\r\n } else if (index > selectedStep.index + 1) {\r\n const nextStep = this[selectionManager].items[index];\r\n if (!nextStep || !nextStep.completed) {\r\n return false;\r\n }\r\n } else if (!valid && !selectedStep.optional) {\r\n return false;\r\n }\r\n }\r\n\r\n selectedStep.completed = true;\r\n }\r\n\r\n this._selectedIndex = index;\r\n this[selectionManager].select(this.selectedStep);\r\n return true;\r\n } else {\r\n if (selectedStep) {\r\n this[selectionManager].deselect(selectedStep);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n /** Resets the stepper to its initial state, clearing any form data. */\r\n reset(): void {\r\n this.steps.forEach((x) => x.reset());\r\n const index = this.steps.findIndex((x) => !x.disabled);\r\n if (index !== this._selectedIndex) {\r\n this._selectedIndex = index;\r\n this[selectionManager].select(this.selectedStep);\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n addCustomState(this, \"--no-animate\");\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this._orientation = undefined;\r\n this.#breakpointUnobserve?.();\r\n }\r\n\r\n /** @inheritdoc */\r\n override reconnectedCallback(): void {\r\n super.reconnectedCallback();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override willUpdate(changedProperties: PropertyValues): void {\r\n super.willUpdate(changedProperties);\r\n\r\n if (changedProperties.has(\"orientation\")) {\r\n this.#breakpointUnobserve?.();\r\n\r\n if (this.orientation === \"auto\") {\r\n this.#initBreakpointMonitoring();\r\n } else {\r\n this._orientation = undefined;\r\n this.#updateDisplayOrder();\r\n }\r\n }\r\n if (changedProperties.has(\"_orientation\")) {\r\n this.#updateDisplayOrder();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n let panelIndex: number | undefined;\r\n if (this.selectedStep?.panel) {\r\n panelIndex = [...this.querySelectorAll(\"[slot='panel']\")].indexOf(this.selectedStep.panel);\r\n if (panelIndex === -1) {\r\n panelIndex = undefined;\r\n }\r\n }\r\n\r\n if (!this[selectionManager].vertical) {\r\n return html`${this.headerPosition === \"above\" ? this.#renderHeader() : nothing}\r\n <m3e-slide class=\"steps\" selected-index=\"${ifDefined(panelIndex)}\">\r\n <slot name=\"panel\"></slot>\r\n </m3e-slide>\r\n ${this.headerPosition === \"below\" ? this.#renderHeader() : nothing}`;\r\n }\r\n\r\n return html`${this.#renderHeader()} <slot name=\"panel\"></slot>`;\r\n }\r\n\r\n /** @private */\r\n #renderHeader(): unknown {\r\n return html`<div\r\n class=\"header\"\r\n role=\"tablist\"\r\n aria-orientation=\"${ifDefined(this[selectionManager].vertical ? \"vertical\" : undefined)}\"\r\n @change=\"${this.#handleChange}\"\r\n >\r\n <slot name=\"step\" @slotchange=\"${this.#handleSlotChange}\" @keydown=\"${this.#handleKeyDown}\"></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleChange(e: Event): void {\r\n e.stopPropagation();\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n /** @private */\r\n #handleSlotChange(): void {\r\n const { added, removed } = this[selectionManager].setItems([...this.querySelectorAll(\"m3e-step\")]);\r\n if (added.length > 0 || removed.length > 0) {\r\n this.querySelectorAll(\".-m3e-step-divider\").forEach((x) => x.remove());\r\n for (let i = 0; i < this[selectionManager].items.length; i++) {\r\n const step = this[selectionManager].items[i];\r\n step.index = i;\r\n if (i > 0) {\r\n const divider = document.createElement(\"div\");\r\n divider.ariaHidden = \"true\";\r\n divider.classList.add(\"-m3e-step-divider\");\r\n divider.slot = \"step\";\r\n step.insertAdjacentElement(\"beforebegin\", divider);\r\n }\r\n }\r\n\r\n this.#updateDisplayOrder();\r\n\r\n if (this[selectionManager].selectedItems.length == 0) {\r\n this[selectionManager].select(this[selectionManager].items.find((x) => !x.disabled));\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n this[selectionManager].onKeyDown(e);\r\n }\r\n\r\n /** @private */\r\n #handleSelectedChange(): void {\r\n const selected = this[selectionManager].selectedItems[0];\r\n let selectedIndex = selected ? this.steps.indexOf(selected) : null;\r\n if (selectedIndex === -1) {\r\n selectedIndex = null;\r\n }\r\n this._selectedIndex = selectedIndex;\r\n\r\n for (const step of this[selectionManager].items) {\r\n if (step.panel) {\r\n step.panel.active = step.index === selectedIndex;\r\n }\r\n }\r\n\r\n if (selected && this.matches(\":focus-within\") && !selected.matches(\":focus\")) {\r\n selected.focus();\r\n }\r\n\r\n if (hasCustomState(this, \"--no-animate\")) {\r\n requestAnimationFrame(() => deleteCustomState(this, \"--no-animate\"));\r\n }\r\n }\r\n\r\n /** @private */\r\n #checkValidity(): boolean {\r\n let valid = false;\r\n if (this.selectedStep) {\r\n valid = this.selectedStep.panel?.querySelector(\"form\")?.checkValidity() ?? true;\r\n if (this.selectedStep.optional) {\r\n valid = true;\r\n }\r\n this.selectedStep.invalid = !valid;\r\n }\r\n return valid;\r\n }\r\n\r\n /** @private */\r\n #initBreakpointMonitoring(): void {\r\n this.#breakpointUnobserve = M3eBreakpointObserver.observe([Breakpoint.XSmall], (matches) => {\r\n this._orientation = matches.get(Breakpoint.XSmall) ? \"vertical\" : \"horizontal\";\r\n this.#updateDisplayOrder();\r\n });\r\n }\r\n\r\n /** @private */\r\n #updateDisplayOrder(): void {\r\n this[selectionManager].vertical = (this._orientation ?? this.orientation) === \"vertical\";\r\n setCustomState(this, \"--vertical\", this[selectionManager].vertical);\r\n\r\n if (!this[selectionManager].vertical) {\r\n this.steps.forEach((x) => {\r\n x.style.order = \"\";\r\n if (x.panel) {\r\n x.panel.style.order = \"\";\r\n }\r\n });\r\n } else {\r\n this.steps.forEach((x, i) => {\r\n x.style.order = `${i}`;\r\n if (x.panel) {\r\n x.panel.style.order = `${i}`;\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper\": M3eStepperElement;\r\n }\r\n}\r\n","import { customElement } from \"@m3e/web/core\";\r\n\r\nimport { StepperButtonElementBase } from \"./StepperButtonElementBase\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to move a stepper to the next step.\r\n * @tag m3e-stepper-previous\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-stepper-next\")\r\nexport class M3eStepperNextElement extends StepperButtonElementBase {\r\n constructor() {\r\n super(\"next\");\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper-next\": M3eStepperNextElement;\r\n }\r\n}\r\n","import { customElement } from \"@m3e/web/core\";\r\n\r\nimport { StepperButtonElementBase } from \"./StepperButtonElementBase\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to move a stepper to the previous step.\r\n * @tag m3e-stepper-previous\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-stepper-previous\")\r\nexport class M3eStepperPreviousElement extends StepperButtonElementBase {\r\n constructor() {\r\n super(\"previous\");\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper-previous\": M3eStepperPreviousElement;\r\n }\r\n}\r\n","import { customElement } from \"@m3e/web/core\";\r\n\r\nimport { StepperButtonElementBase } from \"./StepperButtonElementBase\";\r\n\r\n/**\r\n * An element, nested within a clickable element, used to reset a stepper to its initial state.\r\n * @tag m3e-stepper-reset\r\n *\r\n * @slot - Renders the content of the action.\r\n */\r\n@customElement(\"m3e-stepper-reset\")\r\nexport class M3eStepperResetElement extends StepperButtonElementBase {\r\n constructor() {\r\n super(\"reset\");\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-stepper-reset\": M3eStepperResetElement;\r\n }\r\n}\r\n"],"names":["M3eStepPanelElement","Role","LitElement","constructor","active","connectedCallback","slot","render","html","styles","css","__decorate","state","prototype","customElement","M3eStepElement","M3eStepElement_1","Selected","KeyboardClick","Focusable","HtmlFor","Disabled","AttachInternals","_M3eStepElement_clickHandler","set","e","__classPrivateFieldGet","call","optional","editable","completed","invalid","index","panel","control","stepper","closest","reset","querySelector","attach","id","__nextId","addAriaReferencedId","style","order","detach","removeAriaReferencedId","addEventListener","disconnectedCallback","removeEventListener","update","changedProperties","has","selectionManager","notifySelectionChange","firstUpdated","_changedProperties","_focusRing","_stateLayer","_ripple","forEach","x","hint","nothing","error","disabled","_M3eStepElement_instances","_M3eStepElement_renderIcon","selected","preventDefault","stopImmediatePropagation","defaultPrevented","dispatchEvent","Event","bubbles","cancelable","_moveTo","DesignToken","shape","corner","medium","color","primary","onPrimary","inverseSurface","inverseOnSurface","onSurface","typescale","standard","title","small","fontSize","fontWeight","lineHeight","tracking","body","onSurfaceVariant","query","property","type","Boolean","reflect","StepperButtonElementBase","ActionElementBase","action","_StepperButtonElementBase_action","__classPrivateFieldSet","_onClick","moveNext","movePrevious","M3eStepperElement","ReconnectedCallback","_M3eStepperElement_breakpointUnobserve","_selectedIndex","_a","SelectionManager","withHomeAndEnd","withWrap","onSelectedItemsChange","_M3eStepperElement_instances","_M3eStepperElement_handleSelectedChange","headerPosition","labelPosition","linear","orientation","steps","items","selectedStep","selectedIndex","moveTo","length","valid","previousStep","nextStep","select","deselect","findIndex","addCustomState","_orientation","undefined","reconnectedCallback","_M3eStepperElement_initBreakpointMonitoring","willUpdate","_M3eStepperElement_updateDisplayOrder","panelIndex","querySelectorAll","indexOf","vertical","ifDefined","_M3eStepperElement_renderHeader","_M3eStepperElement_handleChange","_M3eStepperElement_handleSlotChange","_M3eStepperElement_handleKeyDown","stopPropagation","added","removed","setItems","remove","i","step","divider","document","createElement","ariaHidden","classList","add","insertAdjacentElement","selectedItems","find","onKeyDown","matches","focus","hasCustomState","requestAnimationFrame","deleteCustomState","checkValidity","M3eBreakpointObserver","observe","Breakpoint","XSmall","get","setCustomState","registerStyleSheet","outline","attribute","M3eStepperNextElement","M3eStepperPreviousElement","M3eStepperResetElement"],"mappings":"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"}
|