@six-group/ui-library 3.0.0-beta.1.7 → 3.0.0-beta.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{event-listeners-4a8d66d5.js → event-listeners-74715e62.js} +38 -38
- package/dist/cjs/{execution-control-3bc9c7c4.js → execution-control-46f388e0.js} +35 -35
- package/dist/cjs/{focus-visible-b08d956f.js → focus-visible-0b352c74.js} +40 -40
- package/dist/cjs/{form-control-9e4dffd1.js → form-control-866bbece.js} +25 -25
- package/dist/cjs/{modal-a9679ddf.js → modal-48d42228.js} +41 -41
- package/dist/cjs/{popover-e3781f5a.js → popover-1d2a037c.js} +95 -95
- package/dist/cjs/{scroll-5b8676ba.js → scroll-76e6f5d7.js} +57 -57
- package/dist/cjs/set-attributes_2.cjs.entry.js +57 -57
- package/dist/cjs/six-alert.cjs.entry.js +131 -131
- package/dist/cjs/six-avatar.cjs.entry.js +28 -28
- package/dist/cjs/six-badge.cjs.entry.js +26 -26
- package/dist/cjs/six-button.cjs.entry.js +97 -97
- package/dist/cjs/six-card.cjs.entry.js +8 -8
- package/dist/cjs/six-checkbox.cjs.entry.js +152 -152
- package/dist/cjs/six-datepicker.cjs.entry.js +1189 -1189
- package/dist/cjs/six-details.cjs.entry.js +139 -139
- package/dist/cjs/six-dialog.cjs.entry.js +152 -152
- package/dist/cjs/six-drawer.cjs.entry.js +174 -174
- package/dist/cjs/six-dropdown_3.cjs.entry.js +728 -728
- package/dist/cjs/six-error-page.cjs.entry.js +94 -94
- package/dist/cjs/six-file-list-item.cjs.entry.js +38 -38
- package/dist/cjs/six-file-list.cjs.entry.js +8 -8
- package/dist/cjs/six-file-upload.cjs.entry.js +96 -96
- package/dist/cjs/six-footer.cjs.entry.js +8 -8
- package/dist/cjs/six-form.cjs.entry.js +219 -219
- package/dist/cjs/six-group-label.cjs.entry.js +46 -46
- package/dist/cjs/six-header.cjs.entry.js +149 -149
- package/dist/cjs/six-icon-button.cjs.entry.js +33 -33
- package/dist/cjs/six-icon.cjs.entry.js +24 -24
- package/dist/cjs/six-input.cjs.entry.js +230 -230
- package/dist/cjs/six-item-picker.cjs.entry.js +361 -361
- package/dist/cjs/six-language-switcher.cjs.entry.js +52 -52
- package/dist/cjs/six-layout-grid.cjs.entry.js +19 -19
- package/dist/cjs/six-main-container.cjs.entry.js +11 -11
- package/dist/cjs/six-menu-divider.cjs.entry.js +8 -8
- package/dist/cjs/six-menu-label.cjs.entry.js +8 -8
- package/dist/cjs/six-picto.cjs.entry.js +15 -15
- package/dist/cjs/six-progress-bar.cjs.entry.js +17 -17
- package/dist/cjs/six-progress-ring.cjs.entry.js +31 -31
- package/dist/cjs/six-radio.cjs.entry.js +121 -121
- package/dist/cjs/six-range.cjs.entry.js +198 -198
- package/dist/cjs/six-root.cjs.entry.js +34 -34
- package/dist/cjs/six-search-field.cjs.entry.js +43 -43
- package/dist/cjs/six-select.cjs.entry.js +447 -447
- package/dist/cjs/six-sidebar-item-group.cjs.entry.js +42 -42
- package/dist/cjs/six-sidebar-item.cjs.entry.js +18 -18
- package/dist/cjs/six-sidebar.cjs.entry.js +171 -171
- package/dist/cjs/six-spinner.cjs.entry.js +16 -16
- package/dist/cjs/six-switch.cjs.entry.js +100 -100
- package/dist/cjs/six-tab-group.cjs.entry.js +226 -226
- package/dist/cjs/six-tab-panel.cjs.entry.js +17 -17
- package/dist/cjs/six-tab.cjs.entry.js +42 -42
- package/dist/cjs/six-table-cell_4.cjs.entry.js +70 -70
- package/dist/cjs/six-table.cjs.entry.js +145 -145
- package/dist/cjs/six-tag.cjs.entry.js +40 -40
- package/dist/cjs/six-textarea.cjs.entry.js +211 -211
- package/dist/cjs/six-tile.cjs.entry.js +89 -89
- package/dist/cjs/six-timepicker.cjs.entry.js +489 -489
- package/dist/cjs/{six-timepicker.types-c58cc88b.js → six-timepicker.types-c19ebff3.js} +43 -43
- package/dist/cjs/six-tooltip.cjs.entry.js +172 -172
- package/dist/cjs/{slot-8abe833c.js → slot-ad537f24.js} +42 -42
- package/dist/cjs/{types-65e5c95b.js → types-581e8ff0.js} +12 -12
- package/dist/cjs/{types-0c28e484.js → types-64878648.js} +12 -12
- package/dist/collection/components/six-alert/six-alert.js +366 -366
- package/dist/collection/components/six-avatar/six-avatar.js +131 -131
- package/dist/collection/components/six-badge/six-badge.js +101 -101
- package/dist/collection/components/six-button/six-button.js +466 -466
- package/dist/collection/components/six-card/six-card.js +21 -21
- package/dist/collection/components/six-checkbox/six-checkbox.js +550 -550
- package/dist/collection/components/six-datepicker/components/day-selection.js +13 -13
- package/dist/collection/components/six-datepicker/components/month-selection.js +12 -12
- package/dist/collection/components/six-datepicker/components/year-selection.js +10 -10
- package/dist/collection/components/six-datepicker/six-date-formats.js +23 -23
- package/dist/collection/components/six-datepicker/six-datepicker.js +1343 -1343
- package/dist/collection/components/six-datepicker/test/six-datepicker.test-helpers.js +16 -16
- package/dist/collection/components/six-details/six-details.js +432 -432
- package/dist/collection/components/six-dialog/six-dialog.js +401 -401
- package/dist/collection/components/six-drawer/six-drawer.js +458 -458
- package/dist/collection/components/six-dropdown/six-dropdown.js +939 -939
- package/dist/collection/components/six-error-page/six-error-page.js +199 -199
- package/dist/collection/components/six-file-list/six-file-list.js +20 -20
- package/dist/collection/components/six-file-list-item/six-file-list-item.js +203 -203
- package/dist/collection/components/six-file-upload/six-file-upload.js +272 -272
- package/dist/collection/components/six-footer/six-footer.js +21 -21
- package/dist/collection/components/six-form/six-form.js +408 -408
- package/dist/collection/components/six-group-label/six-group-label.js +166 -166
- package/dist/collection/components/six-header/six-header.js +420 -420
- package/dist/collection/components/six-icon/six-icon.js +77 -77
- package/dist/collection/components/six-icon-button/six-icon-button.js +142 -142
- package/dist/collection/components/six-input/six-input.js +1141 -1141
- package/dist/collection/components/six-item-picker/six-item-picker.js +688 -688
- package/dist/collection/components/six-item-picker/types.js +13 -13
- package/dist/collection/components/six-language-switcher/six-language-switcher.js +128 -128
- package/dist/collection/components/six-layout-grid/six-layout-grid.js +52 -52
- package/dist/collection/components/six-main-container/six-main-container.js +53 -53
- package/dist/collection/components/six-menu/six-menu.js +406 -406
- package/dist/collection/components/six-menu-divider/six-menu-divider.js +22 -22
- package/dist/collection/components/six-menu-item/six-menu-item.js +177 -177
- package/dist/collection/components/six-menu-label/six-menu-label.js +25 -25
- package/dist/collection/components/six-picto/six-picto.js +50 -50
- package/dist/collection/components/six-progress-bar/six-progress-bar.js +77 -77
- package/dist/collection/components/six-progress-ring/six-progress-ring.js +111 -111
- package/dist/collection/components/six-radio/six-radio.js +410 -410
- package/dist/collection/components/six-range/six-range.js +620 -620
- package/dist/collection/components/six-root/six-root.js +167 -167
- package/dist/collection/components/six-search-field/six-search-field.js +171 -171
- package/dist/collection/components/six-select/six-select.js +1105 -1105
- package/dist/collection/components/six-sidebar/six-sidebar.js +455 -455
- package/dist/collection/components/six-sidebar-item/six-sidebar-item.js +89 -89
- package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.js +158 -158
- package/dist/collection/components/six-spinner/six-spinner.js +55 -55
- package/dist/collection/components/six-stage-indicator/six-stage-indicator.js +46 -46
- package/dist/collection/components/six-switch/six-switch.js +393 -393
- package/dist/collection/components/six-tab/six-tab.js +198 -198
- package/dist/collection/components/six-tab-group/six-tab-group.js +362 -362
- package/dist/collection/components/six-tab-panel/six-tab-panel.js +75 -75
- package/dist/collection/components/six-table/six-table.js +209 -209
- package/dist/collection/components/six-table/test/helpers.js +13 -13
- package/dist/collection/components/six-table/types.js +8 -8
- package/dist/collection/components/six-table/util/filter-by.js +34 -34
- package/dist/collection/components/six-table/util/from-data.js +33 -33
- package/dist/collection/components/six-table/util/is.js +3 -3
- package/dist/collection/components/six-table/util/quick-filter-by.js +13 -13
- package/dist/collection/components/six-table/util/sort-by.js +25 -25
- package/dist/collection/components/six-table-cell/six-table-cell.js +21 -21
- package/dist/collection/components/six-table-header/six-table-header.js +21 -21
- package/dist/collection/components/six-table-header-cell/get-next-state.js +7 -7
- package/dist/collection/components/six-table-header-cell/icons.js +12 -12
- package/dist/collection/components/six-table-header-cell/six-table-header-cell.js +174 -174
- package/dist/collection/components/six-table-header-cell/types.js +13 -13
- package/dist/collection/components/six-table-header-cell/util/create-model.js +6 -6
- package/dist/collection/components/six-table-header-cell/util/get-next-state.js +7 -7
- package/dist/collection/components/six-table-row/six-table-row.js +21 -21
- package/dist/collection/components/six-tag/six-tag.js +157 -157
- package/dist/collection/components/six-textarea/six-textarea.js +912 -912
- package/dist/collection/components/six-tile/six-tile.js +315 -315
- package/dist/collection/components/six-timepicker/six-time-format.js +14 -14
- package/dist/collection/components/six-timepicker/six-timepicker.js +980 -980
- package/dist/collection/components/six-timepicker/six-timepicker.types.js +40 -40
- package/dist/collection/components/six-tooltip/six-tooltip.js +435 -435
- package/dist/collection/functional-components/form-control/form-control.js +28 -28
- package/dist/collection/index.js +1 -1
- package/dist/collection/testUtil/delay.js +3 -3
- package/dist/collection/utils/as-array.js +1 -1
- package/dist/collection/utils/date-util.js +712 -712
- package/dist/collection/utils/event-listeners.js +39 -39
- package/dist/collection/utils/execution-control.js +38 -38
- package/dist/collection/utils/focus-visible.js +41 -41
- package/dist/collection/utils/matchers.js +2 -2
- package/dist/collection/utils/modal.js +28 -28
- package/dist/collection/utils/offset.js +13 -13
- package/dist/collection/utils/popover.js +113 -113
- package/dist/collection/utils/scroll.js +47 -47
- package/dist/collection/utils/slot.js +59 -59
- package/dist/collection/utils/support.js +15 -15
- package/dist/collection/utils/tabbable.js +22 -22
- package/dist/collection/utils/testing.js +38 -38
- package/dist/collection/utils/time.util.js +74 -74
- package/dist/collection/utils/type-check.js +5 -5
- package/dist/collection/utils/types.js +1 -1
- package/dist/collection/wrappers/set-attributes/set-attributes.js +68 -68
- package/dist/components.json +1 -1
- package/dist/custom-elements/index.js +7595 -7595
- package/dist/esm/{event-listeners-1bef934e.js → event-listeners-570a24ea.js} +38 -38
- package/dist/esm/{execution-control-235f5126.js → execution-control-1a60d709.js} +35 -35
- package/dist/esm/{focus-visible-4b7946aa.js → focus-visible-97933ea9.js} +40 -40
- package/dist/esm/{form-control-17478ad2.js → form-control-24f446af.js} +25 -25
- package/dist/esm/{modal-e5709f6b.js → modal-5ebdc320.js} +41 -41
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/{popover-5a51f84d.js → popover-1c7a1139.js} +95 -95
- package/dist/esm/{scroll-99b214c2.js → scroll-180b53fd.js} +57 -57
- package/dist/esm/set-attributes_2.entry.js +57 -57
- package/dist/esm/six-alert.entry.js +131 -131
- package/dist/esm/six-avatar.entry.js +28 -28
- package/dist/esm/six-badge.entry.js +26 -26
- package/dist/esm/six-button.entry.js +97 -97
- package/dist/esm/six-card.entry.js +8 -8
- package/dist/esm/six-checkbox.entry.js +152 -152
- package/dist/esm/six-datepicker.entry.js +1189 -1189
- package/dist/esm/six-details.entry.js +139 -139
- package/dist/esm/six-dialog.entry.js +152 -152
- package/dist/esm/six-drawer.entry.js +174 -174
- package/dist/esm/six-dropdown_3.entry.js +728 -728
- package/dist/esm/six-error-page.entry.js +94 -94
- package/dist/esm/six-file-list-item.entry.js +38 -38
- package/dist/esm/six-file-list.entry.js +8 -8
- package/dist/esm/six-file-upload.entry.js +96 -96
- package/dist/esm/six-footer.entry.js +8 -8
- package/dist/esm/six-form.entry.js +219 -219
- package/dist/esm/six-group-label.entry.js +46 -46
- package/dist/esm/six-header.entry.js +149 -149
- package/dist/esm/six-icon-button.entry.js +33 -33
- package/dist/esm/six-icon.entry.js +24 -24
- package/dist/esm/six-input.entry.js +230 -230
- package/dist/esm/six-item-picker.entry.js +361 -361
- package/dist/esm/six-language-switcher.entry.js +52 -52
- package/dist/esm/six-layout-grid.entry.js +19 -19
- package/dist/esm/six-main-container.entry.js +11 -11
- package/dist/esm/six-menu-divider.entry.js +8 -8
- package/dist/esm/six-menu-label.entry.js +8 -8
- package/dist/esm/six-picto.entry.js +15 -15
- package/dist/esm/six-progress-bar.entry.js +17 -17
- package/dist/esm/six-progress-ring.entry.js +31 -31
- package/dist/esm/six-radio.entry.js +121 -121
- package/dist/esm/six-range.entry.js +198 -198
- package/dist/esm/six-root.entry.js +34 -34
- package/dist/esm/six-search-field.entry.js +43 -43
- package/dist/esm/six-select.entry.js +447 -447
- package/dist/esm/six-sidebar-item-group.entry.js +42 -42
- package/dist/esm/six-sidebar-item.entry.js +18 -18
- package/dist/esm/six-sidebar.entry.js +171 -171
- package/dist/esm/six-spinner.entry.js +16 -16
- package/dist/esm/six-switch.entry.js +100 -100
- package/dist/esm/six-tab-group.entry.js +226 -226
- package/dist/esm/six-tab-panel.entry.js +17 -17
- package/dist/esm/six-tab.entry.js +42 -42
- package/dist/esm/six-table-cell_4.entry.js +70 -70
- package/dist/esm/six-table.entry.js +145 -145
- package/dist/esm/six-tag.entry.js +40 -40
- package/dist/esm/six-textarea.entry.js +211 -211
- package/dist/esm/six-tile.entry.js +89 -89
- package/dist/esm/six-timepicker.entry.js +489 -489
- package/dist/esm/{six-timepicker.types-cd6bac03.js → six-timepicker.types-e161a447.js} +43 -43
- package/dist/esm/six-tooltip.entry.js +172 -172
- package/dist/esm/{slot-5253e199.js → slot-6f3984c7.js} +42 -42
- package/dist/esm/{types-a37c1695.js → types-4b10b413.js} +12 -12
- package/dist/esm/{types-33d15673.js → types-ed860f7c.js} +12 -12
- package/dist/types/components/six-alert/six-alert.d.ts +60 -60
- package/dist/types/components/six-avatar/six-avatar.d.ts +27 -27
- package/dist/types/components/six-badge/six-badge.d.ts +20 -20
- package/dist/types/components/six-button/six-button.d.ts +69 -69
- package/dist/types/components/six-card/six-card.d.ts +9 -9
- package/dist/types/components/six-checkbox/six-checkbox.d.ts +86 -86
- package/dist/types/components/six-datepicker/components/day-selection.d.ts +5 -5
- package/dist/types/components/six-datepicker/components/month-selection.d.ts +5 -5
- package/dist/types/components/six-datepicker/components/year-selection.d.ts +5 -5
- package/dist/types/components/six-datepicker/six-date-formats.d.ts +22 -22
- package/dist/types/components/six-datepicker/six-datepicker.d.ts +214 -214
- package/dist/types/components/six-datepicker/test/six-datepicker.test-helpers.d.ts +1 -1
- package/dist/types/components/six-details/six-details.d.ts +61 -61
- package/dist/types/components/six-dialog/six-dialog.d.ts +75 -75
- package/dist/types/components/six-drawer/six-drawer.d.ts +82 -82
- package/dist/types/components/six-dropdown/six-dropdown.d.ts +140 -140
- package/dist/types/components/six-error-page/six-error-page.d.ts +27 -27
- package/dist/types/components/six-file-list/six-file-list.d.ts +8 -8
- package/dist/types/components/six-file-list-item/six-file-list-item.d.ts +35 -35
- package/dist/types/components/six-file-upload/six-file-upload.d.ts +42 -42
- package/dist/types/components/six-footer/six-footer.d.ts +9 -9
- package/dist/types/components/six-form/six-form.d.ts +69 -69
- package/dist/types/components/six-group-label/six-group-label.d.ts +37 -37
- package/dist/types/components/six-header/six-header.d.ts +90 -90
- package/dist/types/components/six-icon/six-icon.d.ts +13 -13
- package/dist/types/components/six-icon-button/six-icon-button.d.ts +28 -28
- package/dist/types/components/six-input/six-input.d.ts +165 -165
- package/dist/types/components/six-item-picker/six-item-picker.d.ts +106 -106
- package/dist/types/components/six-item-picker/types.d.ts +11 -11
- package/dist/types/components/six-language-switcher/six-language-switcher.d.ts +25 -25
- package/dist/types/components/six-layout-grid/six-layout-grid.d.ts +14 -14
- package/dist/types/components/six-main-container/six-main-container.d.ts +16 -16
- package/dist/types/components/six-menu/six-menu.d.ts +81 -81
- package/dist/types/components/six-menu-divider/six-menu-divider.d.ts +11 -11
- package/dist/types/components/six-menu-item/six-menu-item.d.ts +36 -36
- package/dist/types/components/six-menu-label/six-menu-label.d.ts +13 -13
- package/dist/types/components/six-picto/six-picto.d.ts +14 -14
- package/dist/types/components/six-progress-bar/six-progress-bar.d.ts +19 -19
- package/dist/types/components/six-progress-ring/six-progress-ring.d.ts +24 -24
- package/dist/types/components/six-radio/six-radio.d.ts +66 -66
- package/dist/types/components/six-range/six-range.d.ts +101 -101
- package/dist/types/components/six-root/six-root.d.ts +34 -34
- package/dist/types/components/six-search-field/six-search-field.d.ts +32 -32
- package/dist/types/components/six-select/six-select.d.ts +163 -163
- package/dist/types/components/six-sidebar/six-sidebar.d.ts +55 -55
- package/dist/types/components/six-sidebar-item/six-sidebar-item.d.ts +15 -15
- package/dist/types/components/six-sidebar-item-group/six-sidebar-item-group.d.ts +26 -26
- package/dist/types/components/six-spinner/six-spinner.d.ts +15 -15
- package/dist/types/components/six-stage-indicator/six-stage-indicator.d.ts +6 -6
- package/dist/types/components/six-switch/six-switch.d.ts +62 -62
- package/dist/types/components/six-tab/six-tab.d.ts +35 -35
- package/dist/types/components/six-tab-group/six-tab-group.d.ts +62 -62
- package/dist/types/components/six-tab-panel/six-tab-panel.d.ts +19 -19
- package/dist/types/components/six-table/six-table.d.ts +30 -30
- package/dist/types/components/six-table/test/helpers.d.ts +2 -2
- package/dist/types/components/six-table/types.d.ts +33 -33
- package/dist/types/components/six-table/util/filter-by.d.ts +2 -2
- package/dist/types/components/six-table/util/from-data.d.ts +8 -8
- package/dist/types/components/six-table/util/is.d.ts +3 -3
- package/dist/types/components/six-table/util/quick-filter-by.d.ts +2 -2
- package/dist/types/components/six-table/util/sort-by.d.ts +2 -2
- package/dist/types/components/six-table-cell/six-table-cell.d.ts +9 -9
- package/dist/types/components/six-table-header/six-table-header.d.ts +9 -9
- package/dist/types/components/six-table-header-cell/get-next-state.d.ts +2 -2
- package/dist/types/components/six-table-header-cell/icons.d.ts +3 -3
- package/dist/types/components/six-table-header-cell/six-table-header-cell.d.ts +32 -32
- package/dist/types/components/six-table-header-cell/types.d.ts +11 -11
- package/dist/types/components/six-table-header-cell/util/create-model.d.ts +4 -4
- package/dist/types/components/six-table-header-cell/util/get-next-state.d.ts +3 -3
- package/dist/types/components/six-table-row/six-table-row.d.ts +9 -9
- package/dist/types/components/six-tag/six-tag.d.ts +30 -30
- package/dist/types/components/six-textarea/six-textarea.d.ts +134 -134
- package/dist/types/components/six-tile/six-tile.d.ts +40 -40
- package/dist/types/components/six-timepicker/six-time-format.d.ts +13 -13
- package/dist/types/components/six-timepicker/six-timepicker.d.ts +184 -184
- package/dist/types/components/six-timepicker/six-timepicker.types.d.ts +36 -36
- package/dist/types/components/six-tooltip/six-tooltip.d.ts +72 -72
- package/dist/types/functional-components/form-control/form-control.d.ts +34 -34
- package/dist/types/index.d.ts +1 -1
- package/dist/types/testUtil/delay.d.ts +1 -1
- package/dist/types/utils/as-array.d.ts +1 -1
- package/dist/types/utils/date-util.d.ts +194 -194
- package/dist/types/utils/event-listeners.d.ts +15 -15
- package/dist/types/utils/execution-control.d.ts +26 -26
- package/dist/types/utils/focus-visible.d.ts +6 -6
- package/dist/types/utils/matchers.d.ts +2 -2
- package/dist/types/utils/modal.d.ts +13 -13
- package/dist/types/utils/offset.d.ts +4 -4
- package/dist/types/utils/popover.d.ts +27 -27
- package/dist/types/utils/scroll.d.ts +3 -3
- package/dist/types/utils/slot.d.ts +9 -9
- package/dist/types/utils/support.d.ts +1 -1
- package/dist/types/utils/tabbable.d.ts +2 -2
- package/dist/types/utils/testing.d.ts +2 -2
- package/dist/types/utils/time.util.d.ts +10 -10
- package/dist/types/utils/type-check.d.ts +4 -4
- package/dist/types/utils/types.d.ts +4 -4
- package/dist/types/wrappers/set-attributes/set-attributes.d.ts +9 -9
- package/dist/ui-library/{p-a8c225f2.entry.js → p-007bc8e8.entry.js} +1 -1
- package/dist/ui-library/{p-f9c0cfb7.entry.js → p-044b784e.entry.js} +1 -1
- package/dist/ui-library/{p-c733dead.js → p-0786fa7c.js} +0 -0
- package/dist/ui-library/{p-12cc24c3.js → p-07d1e830.js} +0 -0
- package/dist/ui-library/{p-48ea4419.entry.js → p-09cb13fa.entry.js} +1 -1
- package/dist/ui-library/{p-e96dcf96.entry.js → p-0c596054.entry.js} +1 -1
- package/dist/ui-library/{p-a77a6442.entry.js → p-1b8dc7b7.entry.js} +1 -1
- package/dist/ui-library/{p-68d31736.js → p-25a3bf57.js} +0 -0
- package/dist/ui-library/{p-ebaea182.entry.js → p-281e8c2d.entry.js} +1 -1
- package/dist/ui-library/{p-9f2dc381.entry.js → p-2924f82f.entry.js} +1 -1
- package/dist/ui-library/{p-ea1fcff2.entry.js → p-2d7ed407.entry.js} +1 -1
- package/dist/ui-library/{p-89f68e76.entry.js → p-4162dcdd.entry.js} +1 -1
- package/dist/ui-library/{p-6f67f986.entry.js → p-4d3a4e93.entry.js} +1 -1
- package/dist/ui-library/{p-8bd0873f.entry.js → p-4ed023b8.entry.js} +1 -1
- package/dist/ui-library/{p-af3d757c.js → p-4f8394d7.js} +0 -0
- package/dist/ui-library/{p-1b92cc7a.entry.js → p-530ea6ec.entry.js} +1 -1
- package/dist/ui-library/{p-19543c96.entry.js → p-531ab886.entry.js} +1 -1
- package/dist/ui-library/{p-fdb455d7.entry.js → p-54c48654.entry.js} +1 -1
- package/dist/ui-library/{p-c948d3db.entry.js → p-55c64cbc.entry.js} +1 -1
- package/dist/ui-library/{p-1c9f0dc6.js → p-5f1c6a5f.js} +0 -0
- package/dist/ui-library/{p-60491176.entry.js → p-675a8243.entry.js} +1 -1
- package/dist/ui-library/{p-b9fb8455.entry.js → p-6d622ed0.entry.js} +1 -1
- package/dist/ui-library/{p-572e3690.js → p-75297ad7.js} +0 -0
- package/dist/ui-library/{p-2ff97cdf.entry.js → p-90b26447.entry.js} +1 -1
- package/dist/ui-library/{p-fcd2356c.entry.js → p-93945629.entry.js} +1 -1
- package/dist/ui-library/{p-7735d99f.js → p-9a860acc.js} +0 -0
- package/dist/ui-library/{p-4cc01afc.entry.js → p-aa37e45a.entry.js} +1 -1
- package/dist/ui-library/{p-191f958b.js → p-b1e66136.js} +0 -0
- package/dist/ui-library/{p-c09dc3a9.js → p-b4dfb7cf.js} +0 -0
- package/dist/ui-library/{p-968c5169.entry.js → p-c24292b3.entry.js} +1 -1
- package/dist/ui-library/{p-ed21cc57.entry.js → p-cd79de73.entry.js} +1 -1
- package/dist/ui-library/{p-34e6d8e8.js → p-d12c6092.js} +0 -0
- package/dist/ui-library/{p-f0e91e17.entry.js → p-d28ac80a.entry.js} +1 -1
- package/dist/ui-library/{p-5ead7b2f.entry.js → p-d837e5a8.entry.js} +1 -1
- package/dist/ui-library/{p-ec1ecc2a.entry.js → p-dd3cae68.entry.js} +1 -1
- package/dist/ui-library/{p-044c6bf9.js → p-eb8f05a9.js} +0 -0
- package/dist/ui-library/ui-library.esm.js +1 -1
- package/package.json +1 -1
|
@@ -1,406 +1,406 @@
|
|
|
1
|
-
import { Component, Element, Event, h, Method, Prop, State } from '@stencil/core';
|
|
2
|
-
import { getTextContent } from '../../utils/slot';
|
|
3
|
-
import { EventListeners } from '../../utils/event-listeners';
|
|
4
|
-
import { debounce } from '../../utils/execution-control';
|
|
5
|
-
const isFocusedMenuItem = (menuItem) => { var _a, _b, _c; return (_c = (_b = (_a = menuItem === null || menuItem === void 0 ? void 0 : menuItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.menu-item')) === null || _b === void 0 ? void 0 : _b.classList) === null || _c === void 0 ? void 0 : _c.contains('menu-item--focused'); };
|
|
6
|
-
const isSIXMenuItemElement = (el) => (el === null || el === void 0 ? void 0 : el.tagName.toLowerCase()) === 'six-menu-item';
|
|
7
|
-
const mapToMenuItem = ({ value, label }) => h("six-menu-item", { value: value }, label);
|
|
8
|
-
const DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING = 5;
|
|
9
|
-
const DEFAULT_SIX_MENU_ITEM_HEIGHT = 64;
|
|
10
|
-
const ITEMS_SHOWN_NOT_SET = undefined;
|
|
11
|
-
/**
|
|
12
|
-
* @since 1.0
|
|
13
|
-
* @status stable
|
|
14
|
-
*
|
|
15
|
-
* Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.
|
|
16
|
-
*
|
|
17
|
-
* @slot - The menu's content, including menu items, menu dividers, and menu labels.
|
|
18
|
-
*
|
|
19
|
-
* @part base - The component's base wrapper.
|
|
20
|
-
*/
|
|
21
|
-
export class SixMenu {
|
|
22
|
-
constructor() {
|
|
23
|
-
this.eventListeners = new EventListeners();
|
|
24
|
-
this.typeToSelectString = '';
|
|
25
|
-
/** Set to true to remove the box-shadow */
|
|
26
|
-
this.removeBoxShadow = false;
|
|
27
|
-
/** Set the options to be shown in the dropdown */
|
|
28
|
-
this.items = null;
|
|
29
|
-
/** Defines how many items should be shown. If the number of items is larger than this properties a scrollbar will be shown */
|
|
30
|
-
this.itemsShown = ITEMS_SHOWN_NOT_SET;
|
|
31
|
-
/** Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)
|
|
32
|
-
* are actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot. */
|
|
33
|
-
this.virtualScroll = false;
|
|
34
|
-
/**
|
|
35
|
-
* Used for virtual scrolling
|
|
36
|
-
* Define how many items should be rendered in the DOM when using virtual scrolling
|
|
37
|
-
*/
|
|
38
|
-
this.itemSize = 10;
|
|
39
|
-
/**
|
|
40
|
-
* Used for virtual scrolling
|
|
41
|
-
* Define the debounce for listening on scrolling changes in milliseconds.
|
|
42
|
-
* The lower the number the more sensitive the component reacts to scrolling changes.
|
|
43
|
-
*/
|
|
44
|
-
this.scrollingDebounce = 15;
|
|
45
|
-
/**
|
|
46
|
-
* Used to calculate which items should be rendered in the DOM
|
|
47
|
-
*/
|
|
48
|
-
this.scrollingIndex = 0;
|
|
49
|
-
// set a default item height, this variable will be updated with the real value after the first render.
|
|
50
|
-
// However, it's necessary to have a default value because we can only fetch the proper hight after the first render
|
|
51
|
-
this.sixMenuItemHeight = DEFAULT_SIX_MENU_ITEM_HEIGHT;
|
|
52
|
-
this.handleScrolling = () => {
|
|
53
|
-
// for performance improvements we only update the DOM if the scrollRatio change "enough"
|
|
54
|
-
this.scrollingIndex = Math.floor(this.menuWrapper.scrollTop / this.sixMenuItemHeight);
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
connectedCallback() {
|
|
58
|
-
this.handleClick = this.handleClick.bind(this);
|
|
59
|
-
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
60
|
-
}
|
|
61
|
-
componentWillLoad() {
|
|
62
|
-
if (this.items === null) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
componentDidLoad() {
|
|
67
|
-
this.setupForVirtualScrollingAfterRendering();
|
|
68
|
-
}
|
|
69
|
-
disconnectedCallback() {
|
|
70
|
-
this.eventListeners.removeAll();
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Initiates type-to-select logic, which automatically selects an option based on what the user is currently typing.
|
|
74
|
-
* The key passed will be appended to the internal query and the selection will be updated. After a brief period, the
|
|
75
|
-
* internal query is cleared automatically. This method is intended to be used with the keydown event. Useful for
|
|
76
|
-
* enabling type-to-select when the menu doesn't have focus.
|
|
77
|
-
*/
|
|
78
|
-
async typeToSelect(key) {
|
|
79
|
-
var _a;
|
|
80
|
-
clearTimeout(this.typeToSelectTimeout);
|
|
81
|
-
this.typeToSelectTimeout = setTimeout(() => (this.typeToSelectString = ''), 750);
|
|
82
|
-
this.typeToSelectString += key.toLowerCase();
|
|
83
|
-
const items = this.getItems();
|
|
84
|
-
for (const item of items) {
|
|
85
|
-
const slot = (_a = item.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
|
|
86
|
-
const label = getTextContent(slot).toLowerCase().trim();
|
|
87
|
-
if (label.substring(0, this.typeToSelectString.length) === this.typeToSelectString) {
|
|
88
|
-
item.setFocus();
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
getItemsShown() {
|
|
94
|
-
var _a;
|
|
95
|
-
const defaultItemsShown = this.virtualScroll
|
|
96
|
-
? DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING
|
|
97
|
-
: ITEMS_SHOWN_NOT_SET;
|
|
98
|
-
return (_a = this.itemsShown) !== null && _a !== void 0 ? _a : defaultItemsShown;
|
|
99
|
-
}
|
|
100
|
-
setupForVirtualScrollingAfterRendering() {
|
|
101
|
-
var _a, _b;
|
|
102
|
-
if (!this.virtualScroll) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
this.eventListeners.add(this.menuWrapper, 'scroll', debounce(this.handleScrolling, this.scrollingDebounce));
|
|
106
|
-
// set menu height to proper height once the item is rendered.
|
|
107
|
-
const menuItemHeight = (_b = (_a = this.menu) === null || _a === void 0 ? void 0 : _a.querySelector('six-menu-item')) === null || _b === void 0 ? void 0 : _b.clientHeight;
|
|
108
|
-
if (menuItemHeight && menuItemHeight > 0) {
|
|
109
|
-
this.sixMenuItemHeight = menuItemHeight;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
getItems() {
|
|
113
|
-
if (this.items !== null && this.items !== undefined) {
|
|
114
|
-
return this.items.map(mapToMenuItem);
|
|
115
|
-
}
|
|
116
|
-
const slot = this.menu.querySelector('slot');
|
|
117
|
-
return [...slot.assignedElements({ flatten: true })].filter((el) => isSIXMenuItemElement(el) && !el.disabled);
|
|
118
|
-
}
|
|
119
|
-
getActiveItemIndex() {
|
|
120
|
-
const items = this.getItems();
|
|
121
|
-
const selectedItem = this.getActiveItem();
|
|
122
|
-
const itemIndex = items.indexOf(selectedItem);
|
|
123
|
-
if (itemIndex > -1) {
|
|
124
|
-
return itemIndex;
|
|
125
|
-
}
|
|
126
|
-
const sixMenuItems = this.extractItemsFromDOM();
|
|
127
|
-
return sixMenuItems.findIndex(isFocusedMenuItem);
|
|
128
|
-
}
|
|
129
|
-
getActiveItem() {
|
|
130
|
-
var _a;
|
|
131
|
-
const activeElement = this.getItems().find((i) => i === document.activeElement);
|
|
132
|
-
if (activeElement) {
|
|
133
|
-
return activeElement;
|
|
134
|
-
}
|
|
135
|
-
return (_a = this.extractItemsFromDOM()) === null || _a === void 0 ? void 0 : _a.find(isFocusedMenuItem);
|
|
136
|
-
}
|
|
137
|
-
extractItemsFromDOM() {
|
|
138
|
-
var _a, _b;
|
|
139
|
-
return Array.from((_b = (_a = this.host) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('six-menu-item'));
|
|
140
|
-
}
|
|
141
|
-
setActiveItem(item) {
|
|
142
|
-
item.setFocus();
|
|
143
|
-
}
|
|
144
|
-
handleClick(event) {
|
|
145
|
-
const target = event.target;
|
|
146
|
-
const clickedItem = target.closest('six-menu-item');
|
|
147
|
-
if (clickedItem && !clickedItem.disabled) {
|
|
148
|
-
this.sixMenuItemSelected.emit({ name: clickedItem.value, item: clickedItem });
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
handleKeyDown(event) {
|
|
152
|
-
// Make a selection when pressing enter
|
|
153
|
-
if (event.key === 'Enter') {
|
|
154
|
-
const activeItem = this.getActiveItem();
|
|
155
|
-
event.preventDefault();
|
|
156
|
-
if (activeItem) {
|
|
157
|
-
this.sixMenuItemSelected.emit({ name: activeItem.value, item: activeItem });
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// Prevent scrolling when space is pressed
|
|
161
|
-
if (event.key === ' ') {
|
|
162
|
-
event.preventDefault();
|
|
163
|
-
}
|
|
164
|
-
// Move the selection when pressing down or up
|
|
165
|
-
if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
|
|
166
|
-
const items = this.items === null ? this.getItems() : this.extractItemsFromDOM();
|
|
167
|
-
let indexOfActiveItem = this.getActiveItemIndex();
|
|
168
|
-
if (items.length) {
|
|
169
|
-
event.preventDefault();
|
|
170
|
-
if (event.key === 'ArrowDown') {
|
|
171
|
-
indexOfActiveItem++;
|
|
172
|
-
}
|
|
173
|
-
else if (event.key === 'ArrowUp') {
|
|
174
|
-
indexOfActiveItem--;
|
|
175
|
-
}
|
|
176
|
-
else if (event.key === 'Home') {
|
|
177
|
-
indexOfActiveItem = 0;
|
|
178
|
-
}
|
|
179
|
-
else if (event.key === 'End') {
|
|
180
|
-
indexOfActiveItem = items.length - 1;
|
|
181
|
-
}
|
|
182
|
-
if (indexOfActiveItem < 0)
|
|
183
|
-
indexOfActiveItem = 0;
|
|
184
|
-
if (indexOfActiveItem > items.length - 1)
|
|
185
|
-
indexOfActiveItem = items.length - 1;
|
|
186
|
-
this.setActiveItem(items[indexOfActiveItem]);
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
void this.typeToSelect(event.key);
|
|
191
|
-
}
|
|
192
|
-
getMenuWrapperStyle() {
|
|
193
|
-
const styles = {};
|
|
194
|
-
if (this.getItemsShown() > 0) {
|
|
195
|
-
// calculate the proper height to show the correct number of items
|
|
196
|
-
styles.height = `${this.getItemsShown() * this.sixMenuItemHeight}px`;
|
|
197
|
-
}
|
|
198
|
-
return Object.assign({}, styles);
|
|
199
|
-
}
|
|
200
|
-
getMenuContainerStyle() {
|
|
201
|
-
const styles = {};
|
|
202
|
-
if (this.virtualScroll) {
|
|
203
|
-
// calculate height of content are if all items would be rendered so the scrollbar has the proper size
|
|
204
|
-
styles.transform = `translateY(${this.sixMenuItemHeight * this.scrollingIndex}px)`;
|
|
205
|
-
}
|
|
206
|
-
return Object.assign({}, styles);
|
|
207
|
-
}
|
|
208
|
-
getScrollbarGhostStyle() {
|
|
209
|
-
const styles = {};
|
|
210
|
-
if (this.virtualScroll && this.items !== null) {
|
|
211
|
-
styles.height = `${this.items.length * this.sixMenuItemHeight - this.itemSize * this.sixMenuItemHeight}px`;
|
|
212
|
-
}
|
|
213
|
-
return Object.assign({}, styles);
|
|
214
|
-
}
|
|
215
|
-
renderItems() {
|
|
216
|
-
if (this.items === undefined || this.items === null) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
if (!this.virtualScroll) {
|
|
220
|
-
return this.items.map(mapToMenuItem);
|
|
221
|
-
}
|
|
222
|
-
return this.items
|
|
223
|
-
.slice(this.scrollingIndex, Math.min(this.items.length, this.itemSize + this.scrollingIndex))
|
|
224
|
-
.map(mapToMenuItem);
|
|
225
|
-
}
|
|
226
|
-
render() {
|
|
227
|
-
return (h("div", { ref: (el) => (this.menuWrapper = el), style: this.getMenuWrapperStyle(), part: "wrapper", class: {
|
|
228
|
-
menu: true,
|
|
229
|
-
'menu--noshadow': this.removeBoxShadow,
|
|
230
|
-
'menu__wrapper--scrollable': this.getItemsShown() > 0,
|
|
231
|
-
} },
|
|
232
|
-
h("div", { ref: (el) => (this.menu = el), part: "base", role: "menu", onClick: this.handleClick, onKeyDown: this.handleKeyDown, tabIndex: 0, style: this.getMenuContainerStyle() },
|
|
233
|
-
h("slot", null),
|
|
234
|
-
this.renderItems()),
|
|
235
|
-
this.virtualScroll && h("div", { style: this.getScrollbarGhostStyle() })));
|
|
236
|
-
}
|
|
237
|
-
static get is() { return "six-menu"; }
|
|
238
|
-
static get encapsulation() { return "shadow"; }
|
|
239
|
-
static get originalStyleUrls() { return {
|
|
240
|
-
"$": ["six-menu.scss"]
|
|
241
|
-
}; }
|
|
242
|
-
static get styleUrls() { return {
|
|
243
|
-
"$": ["six-menu.css"]
|
|
244
|
-
}; }
|
|
245
|
-
static get properties() { return {
|
|
246
|
-
"removeBoxShadow": {
|
|
247
|
-
"type": "boolean",
|
|
248
|
-
"mutable": false,
|
|
249
|
-
"complexType": {
|
|
250
|
-
"original": "boolean",
|
|
251
|
-
"resolved": "boolean",
|
|
252
|
-
"references": {}
|
|
253
|
-
},
|
|
254
|
-
"required": false,
|
|
255
|
-
"optional": false,
|
|
256
|
-
"docs": {
|
|
257
|
-
"tags": [],
|
|
258
|
-
"text": "Set to true to remove the box-shadow"
|
|
259
|
-
},
|
|
260
|
-
"attribute": "remove-box-shadow",
|
|
261
|
-
"reflect": false,
|
|
262
|
-
"defaultValue": "false"
|
|
263
|
-
},
|
|
264
|
-
"items": {
|
|
265
|
-
"type": "unknown",
|
|
266
|
-
"mutable": false,
|
|
267
|
-
"complexType": {
|
|
268
|
-
"original": "SixMenuItemData[] | null",
|
|
269
|
-
"resolved": "SixMenuItemData[]",
|
|
270
|
-
"references": {
|
|
271
|
-
"SixMenuItemData": {
|
|
272
|
-
"location": "local"
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
"required": false,
|
|
277
|
-
"optional": false,
|
|
278
|
-
"docs": {
|
|
279
|
-
"tags": [],
|
|
280
|
-
"text": "Set the options to be shown in the dropdown"
|
|
281
|
-
},
|
|
282
|
-
"defaultValue": "null"
|
|
283
|
-
},
|
|
284
|
-
"itemsShown": {
|
|
285
|
-
"type": "number",
|
|
286
|
-
"mutable": false,
|
|
287
|
-
"complexType": {
|
|
288
|
-
"original": "number",
|
|
289
|
-
"resolved": "number",
|
|
290
|
-
"references": {}
|
|
291
|
-
},
|
|
292
|
-
"required": false,
|
|
293
|
-
"optional": true,
|
|
294
|
-
"docs": {
|
|
295
|
-
"tags": [],
|
|
296
|
-
"text": "Defines how many items should be shown. If the number of items is larger than this properties a scrollbar will be shown"
|
|
297
|
-
},
|
|
298
|
-
"attribute": "items-shown",
|
|
299
|
-
"reflect": false,
|
|
300
|
-
"defaultValue": "ITEMS_SHOWN_NOT_SET"
|
|
301
|
-
},
|
|
302
|
-
"virtualScroll": {
|
|
303
|
-
"type": "boolean",
|
|
304
|
-
"mutable": false,
|
|
305
|
-
"complexType": {
|
|
306
|
-
"original": "boolean",
|
|
307
|
-
"resolved": "boolean",
|
|
308
|
-
"references": {}
|
|
309
|
-
},
|
|
310
|
-
"required": false,
|
|
311
|
-
"optional": false,
|
|
312
|
-
"docs": {
|
|
313
|
-
"tags": [],
|
|
314
|
-
"text": "Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)\nare actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot."
|
|
315
|
-
},
|
|
316
|
-
"attribute": "virtual-scroll",
|
|
317
|
-
"reflect": false,
|
|
318
|
-
"defaultValue": "false"
|
|
319
|
-
},
|
|
320
|
-
"itemSize": {
|
|
321
|
-
"type": "number",
|
|
322
|
-
"mutable": false,
|
|
323
|
-
"complexType": {
|
|
324
|
-
"original": "number",
|
|
325
|
-
"resolved": "number",
|
|
326
|
-
"references": {}
|
|
327
|
-
},
|
|
328
|
-
"required": false,
|
|
329
|
-
"optional": false,
|
|
330
|
-
"docs": {
|
|
331
|
-
"tags": [],
|
|
332
|
-
"text": "Used for virtual scrolling\nDefine how many items should be rendered in the DOM when using virtual scrolling"
|
|
333
|
-
},
|
|
334
|
-
"attribute": "item-size",
|
|
335
|
-
"reflect": false,
|
|
336
|
-
"defaultValue": "10"
|
|
337
|
-
},
|
|
338
|
-
"scrollingDebounce": {
|
|
339
|
-
"type": "number",
|
|
340
|
-
"mutable": false,
|
|
341
|
-
"complexType": {
|
|
342
|
-
"original": "number",
|
|
343
|
-
"resolved": "number",
|
|
344
|
-
"references": {}
|
|
345
|
-
},
|
|
346
|
-
"required": false,
|
|
347
|
-
"optional": false,
|
|
348
|
-
"docs": {
|
|
349
|
-
"tags": [],
|
|
350
|
-
"text": "Used for virtual scrolling\nDefine the debounce for listening on scrolling changes in milliseconds.\nThe lower the number the more sensitive the component reacts to scrolling changes."
|
|
351
|
-
},
|
|
352
|
-
"attribute": "scrolling-debounce",
|
|
353
|
-
"reflect": false,
|
|
354
|
-
"defaultValue": "15"
|
|
355
|
-
}
|
|
356
|
-
}; }
|
|
357
|
-
static get states() { return {
|
|
358
|
-
"scrollingIndex": {},
|
|
359
|
-
"sixMenuItemHeight": {}
|
|
360
|
-
}; }
|
|
361
|
-
static get events() { return [{
|
|
362
|
-
"method": "sixMenuItemSelected",
|
|
363
|
-
"name": "six-menu-item-selected",
|
|
364
|
-
"bubbles": true,
|
|
365
|
-
"cancelable": true,
|
|
366
|
-
"composed": true,
|
|
367
|
-
"docs": {
|
|
368
|
-
"tags": [],
|
|
369
|
-
"text": "Emitted when a menu item is selected."
|
|
370
|
-
},
|
|
371
|
-
"complexType": {
|
|
372
|
-
"original": "SixMenuItemSelectedPayload",
|
|
373
|
-
"resolved": "SixMenuItemSelectedPayload",
|
|
374
|
-
"references": {
|
|
375
|
-
"SixMenuItemSelectedPayload": {
|
|
376
|
-
"location": "local"
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}]; }
|
|
381
|
-
static get methods() { return {
|
|
382
|
-
"typeToSelect": {
|
|
383
|
-
"complexType": {
|
|
384
|
-
"signature": "(key: string) => Promise<void>",
|
|
385
|
-
"parameters": [{
|
|
386
|
-
"tags": [],
|
|
387
|
-
"text": ""
|
|
388
|
-
}],
|
|
389
|
-
"references": {
|
|
390
|
-
"Promise": {
|
|
391
|
-
"location": "global"
|
|
392
|
-
},
|
|
393
|
-
"HTMLSlotElement": {
|
|
394
|
-
"location": "global"
|
|
395
|
-
}
|
|
396
|
-
},
|
|
397
|
-
"return": "Promise<void>"
|
|
398
|
-
},
|
|
399
|
-
"docs": {
|
|
400
|
-
"text": "Initiates type-to-select logic, which automatically selects an option based on what the user is currently typing.\nThe key passed will be appended to the internal query and the selection will be updated. After a brief period, the\ninternal query is cleared automatically. This method is intended to be used with the keydown event. Useful for\nenabling type-to-select when the menu doesn't have focus.",
|
|
401
|
-
"tags": []
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}; }
|
|
405
|
-
static get elementRef() { return "host"; }
|
|
406
|
-
}
|
|
1
|
+
import { Component, Element, Event, h, Method, Prop, State } from '@stencil/core';
|
|
2
|
+
import { getTextContent } from '../../utils/slot';
|
|
3
|
+
import { EventListeners } from '../../utils/event-listeners';
|
|
4
|
+
import { debounce } from '../../utils/execution-control';
|
|
5
|
+
const isFocusedMenuItem = (menuItem) => { var _a, _b, _c; return (_c = (_b = (_a = menuItem === null || menuItem === void 0 ? void 0 : menuItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.menu-item')) === null || _b === void 0 ? void 0 : _b.classList) === null || _c === void 0 ? void 0 : _c.contains('menu-item--focused'); };
|
|
6
|
+
const isSIXMenuItemElement = (el) => (el === null || el === void 0 ? void 0 : el.tagName.toLowerCase()) === 'six-menu-item';
|
|
7
|
+
const mapToMenuItem = ({ value, label }) => h("six-menu-item", { value: value }, label);
|
|
8
|
+
const DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING = 5;
|
|
9
|
+
const DEFAULT_SIX_MENU_ITEM_HEIGHT = 64;
|
|
10
|
+
const ITEMS_SHOWN_NOT_SET = undefined;
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0
|
|
13
|
+
* @status stable
|
|
14
|
+
*
|
|
15
|
+
* Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.
|
|
16
|
+
*
|
|
17
|
+
* @slot - The menu's content, including menu items, menu dividers, and menu labels.
|
|
18
|
+
*
|
|
19
|
+
* @part base - The component's base wrapper.
|
|
20
|
+
*/
|
|
21
|
+
export class SixMenu {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.eventListeners = new EventListeners();
|
|
24
|
+
this.typeToSelectString = '';
|
|
25
|
+
/** Set to true to remove the box-shadow */
|
|
26
|
+
this.removeBoxShadow = false;
|
|
27
|
+
/** Set the options to be shown in the dropdown */
|
|
28
|
+
this.items = null;
|
|
29
|
+
/** Defines how many items should be shown. If the number of items is larger than this properties a scrollbar will be shown */
|
|
30
|
+
this.itemsShown = ITEMS_SHOWN_NOT_SET;
|
|
31
|
+
/** Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)
|
|
32
|
+
* are actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot. */
|
|
33
|
+
this.virtualScroll = false;
|
|
34
|
+
/**
|
|
35
|
+
* Used for virtual scrolling
|
|
36
|
+
* Define how many items should be rendered in the DOM when using virtual scrolling
|
|
37
|
+
*/
|
|
38
|
+
this.itemSize = 10;
|
|
39
|
+
/**
|
|
40
|
+
* Used for virtual scrolling
|
|
41
|
+
* Define the debounce for listening on scrolling changes in milliseconds.
|
|
42
|
+
* The lower the number the more sensitive the component reacts to scrolling changes.
|
|
43
|
+
*/
|
|
44
|
+
this.scrollingDebounce = 15;
|
|
45
|
+
/**
|
|
46
|
+
* Used to calculate which items should be rendered in the DOM
|
|
47
|
+
*/
|
|
48
|
+
this.scrollingIndex = 0;
|
|
49
|
+
// set a default item height, this variable will be updated with the real value after the first render.
|
|
50
|
+
// However, it's necessary to have a default value because we can only fetch the proper hight after the first render
|
|
51
|
+
this.sixMenuItemHeight = DEFAULT_SIX_MENU_ITEM_HEIGHT;
|
|
52
|
+
this.handleScrolling = () => {
|
|
53
|
+
// for performance improvements we only update the DOM if the scrollRatio change "enough"
|
|
54
|
+
this.scrollingIndex = Math.floor(this.menuWrapper.scrollTop / this.sixMenuItemHeight);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
connectedCallback() {
|
|
58
|
+
this.handleClick = this.handleClick.bind(this);
|
|
59
|
+
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
60
|
+
}
|
|
61
|
+
componentWillLoad() {
|
|
62
|
+
if (this.items === null) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
componentDidLoad() {
|
|
67
|
+
this.setupForVirtualScrollingAfterRendering();
|
|
68
|
+
}
|
|
69
|
+
disconnectedCallback() {
|
|
70
|
+
this.eventListeners.removeAll();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Initiates type-to-select logic, which automatically selects an option based on what the user is currently typing.
|
|
74
|
+
* The key passed will be appended to the internal query and the selection will be updated. After a brief period, the
|
|
75
|
+
* internal query is cleared automatically. This method is intended to be used with the keydown event. Useful for
|
|
76
|
+
* enabling type-to-select when the menu doesn't have focus.
|
|
77
|
+
*/
|
|
78
|
+
async typeToSelect(key) {
|
|
79
|
+
var _a;
|
|
80
|
+
clearTimeout(this.typeToSelectTimeout);
|
|
81
|
+
this.typeToSelectTimeout = setTimeout(() => (this.typeToSelectString = ''), 750);
|
|
82
|
+
this.typeToSelectString += key.toLowerCase();
|
|
83
|
+
const items = this.getItems();
|
|
84
|
+
for (const item of items) {
|
|
85
|
+
const slot = (_a = item.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
|
|
86
|
+
const label = getTextContent(slot).toLowerCase().trim();
|
|
87
|
+
if (label.substring(0, this.typeToSelectString.length) === this.typeToSelectString) {
|
|
88
|
+
item.setFocus();
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
getItemsShown() {
|
|
94
|
+
var _a;
|
|
95
|
+
const defaultItemsShown = this.virtualScroll
|
|
96
|
+
? DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING
|
|
97
|
+
: ITEMS_SHOWN_NOT_SET;
|
|
98
|
+
return (_a = this.itemsShown) !== null && _a !== void 0 ? _a : defaultItemsShown;
|
|
99
|
+
}
|
|
100
|
+
setupForVirtualScrollingAfterRendering() {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
if (!this.virtualScroll) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this.eventListeners.add(this.menuWrapper, 'scroll', debounce(this.handleScrolling, this.scrollingDebounce));
|
|
106
|
+
// set menu height to proper height once the item is rendered.
|
|
107
|
+
const menuItemHeight = (_b = (_a = this.menu) === null || _a === void 0 ? void 0 : _a.querySelector('six-menu-item')) === null || _b === void 0 ? void 0 : _b.clientHeight;
|
|
108
|
+
if (menuItemHeight && menuItemHeight > 0) {
|
|
109
|
+
this.sixMenuItemHeight = menuItemHeight;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
getItems() {
|
|
113
|
+
if (this.items !== null && this.items !== undefined) {
|
|
114
|
+
return this.items.map(mapToMenuItem);
|
|
115
|
+
}
|
|
116
|
+
const slot = this.menu.querySelector('slot');
|
|
117
|
+
return [...slot.assignedElements({ flatten: true })].filter((el) => isSIXMenuItemElement(el) && !el.disabled);
|
|
118
|
+
}
|
|
119
|
+
getActiveItemIndex() {
|
|
120
|
+
const items = this.getItems();
|
|
121
|
+
const selectedItem = this.getActiveItem();
|
|
122
|
+
const itemIndex = items.indexOf(selectedItem);
|
|
123
|
+
if (itemIndex > -1) {
|
|
124
|
+
return itemIndex;
|
|
125
|
+
}
|
|
126
|
+
const sixMenuItems = this.extractItemsFromDOM();
|
|
127
|
+
return sixMenuItems.findIndex(isFocusedMenuItem);
|
|
128
|
+
}
|
|
129
|
+
getActiveItem() {
|
|
130
|
+
var _a;
|
|
131
|
+
const activeElement = this.getItems().find((i) => i === document.activeElement);
|
|
132
|
+
if (activeElement) {
|
|
133
|
+
return activeElement;
|
|
134
|
+
}
|
|
135
|
+
return (_a = this.extractItemsFromDOM()) === null || _a === void 0 ? void 0 : _a.find(isFocusedMenuItem);
|
|
136
|
+
}
|
|
137
|
+
extractItemsFromDOM() {
|
|
138
|
+
var _a, _b;
|
|
139
|
+
return Array.from((_b = (_a = this.host) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('six-menu-item'));
|
|
140
|
+
}
|
|
141
|
+
setActiveItem(item) {
|
|
142
|
+
item.setFocus();
|
|
143
|
+
}
|
|
144
|
+
handleClick(event) {
|
|
145
|
+
const target = event.target;
|
|
146
|
+
const clickedItem = target.closest('six-menu-item');
|
|
147
|
+
if (clickedItem && !clickedItem.disabled) {
|
|
148
|
+
this.sixMenuItemSelected.emit({ name: clickedItem.value, item: clickedItem });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
handleKeyDown(event) {
|
|
152
|
+
// Make a selection when pressing enter
|
|
153
|
+
if (event.key === 'Enter') {
|
|
154
|
+
const activeItem = this.getActiveItem();
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
if (activeItem) {
|
|
157
|
+
this.sixMenuItemSelected.emit({ name: activeItem.value, item: activeItem });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Prevent scrolling when space is pressed
|
|
161
|
+
if (event.key === ' ') {
|
|
162
|
+
event.preventDefault();
|
|
163
|
+
}
|
|
164
|
+
// Move the selection when pressing down or up
|
|
165
|
+
if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
|
|
166
|
+
const items = this.items === null ? this.getItems() : this.extractItemsFromDOM();
|
|
167
|
+
let indexOfActiveItem = this.getActiveItemIndex();
|
|
168
|
+
if (items.length) {
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
if (event.key === 'ArrowDown') {
|
|
171
|
+
indexOfActiveItem++;
|
|
172
|
+
}
|
|
173
|
+
else if (event.key === 'ArrowUp') {
|
|
174
|
+
indexOfActiveItem--;
|
|
175
|
+
}
|
|
176
|
+
else if (event.key === 'Home') {
|
|
177
|
+
indexOfActiveItem = 0;
|
|
178
|
+
}
|
|
179
|
+
else if (event.key === 'End') {
|
|
180
|
+
indexOfActiveItem = items.length - 1;
|
|
181
|
+
}
|
|
182
|
+
if (indexOfActiveItem < 0)
|
|
183
|
+
indexOfActiveItem = 0;
|
|
184
|
+
if (indexOfActiveItem > items.length - 1)
|
|
185
|
+
indexOfActiveItem = items.length - 1;
|
|
186
|
+
this.setActiveItem(items[indexOfActiveItem]);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
void this.typeToSelect(event.key);
|
|
191
|
+
}
|
|
192
|
+
getMenuWrapperStyle() {
|
|
193
|
+
const styles = {};
|
|
194
|
+
if (this.getItemsShown() > 0) {
|
|
195
|
+
// calculate the proper height to show the correct number of items
|
|
196
|
+
styles.height = `${this.getItemsShown() * this.sixMenuItemHeight}px`;
|
|
197
|
+
}
|
|
198
|
+
return Object.assign({}, styles);
|
|
199
|
+
}
|
|
200
|
+
getMenuContainerStyle() {
|
|
201
|
+
const styles = {};
|
|
202
|
+
if (this.virtualScroll) {
|
|
203
|
+
// calculate height of content are if all items would be rendered so the scrollbar has the proper size
|
|
204
|
+
styles.transform = `translateY(${this.sixMenuItemHeight * this.scrollingIndex}px)`;
|
|
205
|
+
}
|
|
206
|
+
return Object.assign({}, styles);
|
|
207
|
+
}
|
|
208
|
+
getScrollbarGhostStyle() {
|
|
209
|
+
const styles = {};
|
|
210
|
+
if (this.virtualScroll && this.items !== null) {
|
|
211
|
+
styles.height = `${this.items.length * this.sixMenuItemHeight - this.itemSize * this.sixMenuItemHeight}px`;
|
|
212
|
+
}
|
|
213
|
+
return Object.assign({}, styles);
|
|
214
|
+
}
|
|
215
|
+
renderItems() {
|
|
216
|
+
if (this.items === undefined || this.items === null) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (!this.virtualScroll) {
|
|
220
|
+
return this.items.map(mapToMenuItem);
|
|
221
|
+
}
|
|
222
|
+
return this.items
|
|
223
|
+
.slice(this.scrollingIndex, Math.min(this.items.length, this.itemSize + this.scrollingIndex))
|
|
224
|
+
.map(mapToMenuItem);
|
|
225
|
+
}
|
|
226
|
+
render() {
|
|
227
|
+
return (h("div", { ref: (el) => (this.menuWrapper = el), style: this.getMenuWrapperStyle(), part: "wrapper", class: {
|
|
228
|
+
menu: true,
|
|
229
|
+
'menu--noshadow': this.removeBoxShadow,
|
|
230
|
+
'menu__wrapper--scrollable': this.getItemsShown() > 0,
|
|
231
|
+
} },
|
|
232
|
+
h("div", { ref: (el) => (this.menu = el), part: "base", role: "menu", onClick: this.handleClick, onKeyDown: this.handleKeyDown, tabIndex: 0, style: this.getMenuContainerStyle() },
|
|
233
|
+
h("slot", null),
|
|
234
|
+
this.renderItems()),
|
|
235
|
+
this.virtualScroll && h("div", { style: this.getScrollbarGhostStyle() })));
|
|
236
|
+
}
|
|
237
|
+
static get is() { return "six-menu"; }
|
|
238
|
+
static get encapsulation() { return "shadow"; }
|
|
239
|
+
static get originalStyleUrls() { return {
|
|
240
|
+
"$": ["six-menu.scss"]
|
|
241
|
+
}; }
|
|
242
|
+
static get styleUrls() { return {
|
|
243
|
+
"$": ["six-menu.css"]
|
|
244
|
+
}; }
|
|
245
|
+
static get properties() { return {
|
|
246
|
+
"removeBoxShadow": {
|
|
247
|
+
"type": "boolean",
|
|
248
|
+
"mutable": false,
|
|
249
|
+
"complexType": {
|
|
250
|
+
"original": "boolean",
|
|
251
|
+
"resolved": "boolean",
|
|
252
|
+
"references": {}
|
|
253
|
+
},
|
|
254
|
+
"required": false,
|
|
255
|
+
"optional": false,
|
|
256
|
+
"docs": {
|
|
257
|
+
"tags": [],
|
|
258
|
+
"text": "Set to true to remove the box-shadow"
|
|
259
|
+
},
|
|
260
|
+
"attribute": "remove-box-shadow",
|
|
261
|
+
"reflect": false,
|
|
262
|
+
"defaultValue": "false"
|
|
263
|
+
},
|
|
264
|
+
"items": {
|
|
265
|
+
"type": "unknown",
|
|
266
|
+
"mutable": false,
|
|
267
|
+
"complexType": {
|
|
268
|
+
"original": "SixMenuItemData[] | null",
|
|
269
|
+
"resolved": "SixMenuItemData[]",
|
|
270
|
+
"references": {
|
|
271
|
+
"SixMenuItemData": {
|
|
272
|
+
"location": "local"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"required": false,
|
|
277
|
+
"optional": false,
|
|
278
|
+
"docs": {
|
|
279
|
+
"tags": [],
|
|
280
|
+
"text": "Set the options to be shown in the dropdown"
|
|
281
|
+
},
|
|
282
|
+
"defaultValue": "null"
|
|
283
|
+
},
|
|
284
|
+
"itemsShown": {
|
|
285
|
+
"type": "number",
|
|
286
|
+
"mutable": false,
|
|
287
|
+
"complexType": {
|
|
288
|
+
"original": "number",
|
|
289
|
+
"resolved": "number",
|
|
290
|
+
"references": {}
|
|
291
|
+
},
|
|
292
|
+
"required": false,
|
|
293
|
+
"optional": true,
|
|
294
|
+
"docs": {
|
|
295
|
+
"tags": [],
|
|
296
|
+
"text": "Defines how many items should be shown. If the number of items is larger than this properties a scrollbar will be shown"
|
|
297
|
+
},
|
|
298
|
+
"attribute": "items-shown",
|
|
299
|
+
"reflect": false,
|
|
300
|
+
"defaultValue": "ITEMS_SHOWN_NOT_SET"
|
|
301
|
+
},
|
|
302
|
+
"virtualScroll": {
|
|
303
|
+
"type": "boolean",
|
|
304
|
+
"mutable": false,
|
|
305
|
+
"complexType": {
|
|
306
|
+
"original": "boolean",
|
|
307
|
+
"resolved": "boolean",
|
|
308
|
+
"references": {}
|
|
309
|
+
},
|
|
310
|
+
"required": false,
|
|
311
|
+
"optional": false,
|
|
312
|
+
"docs": {
|
|
313
|
+
"tags": [],
|
|
314
|
+
"text": "Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)\nare actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot."
|
|
315
|
+
},
|
|
316
|
+
"attribute": "virtual-scroll",
|
|
317
|
+
"reflect": false,
|
|
318
|
+
"defaultValue": "false"
|
|
319
|
+
},
|
|
320
|
+
"itemSize": {
|
|
321
|
+
"type": "number",
|
|
322
|
+
"mutable": false,
|
|
323
|
+
"complexType": {
|
|
324
|
+
"original": "number",
|
|
325
|
+
"resolved": "number",
|
|
326
|
+
"references": {}
|
|
327
|
+
},
|
|
328
|
+
"required": false,
|
|
329
|
+
"optional": false,
|
|
330
|
+
"docs": {
|
|
331
|
+
"tags": [],
|
|
332
|
+
"text": "Used for virtual scrolling\nDefine how many items should be rendered in the DOM when using virtual scrolling"
|
|
333
|
+
},
|
|
334
|
+
"attribute": "item-size",
|
|
335
|
+
"reflect": false,
|
|
336
|
+
"defaultValue": "10"
|
|
337
|
+
},
|
|
338
|
+
"scrollingDebounce": {
|
|
339
|
+
"type": "number",
|
|
340
|
+
"mutable": false,
|
|
341
|
+
"complexType": {
|
|
342
|
+
"original": "number",
|
|
343
|
+
"resolved": "number",
|
|
344
|
+
"references": {}
|
|
345
|
+
},
|
|
346
|
+
"required": false,
|
|
347
|
+
"optional": false,
|
|
348
|
+
"docs": {
|
|
349
|
+
"tags": [],
|
|
350
|
+
"text": "Used for virtual scrolling\nDefine the debounce for listening on scrolling changes in milliseconds.\nThe lower the number the more sensitive the component reacts to scrolling changes."
|
|
351
|
+
},
|
|
352
|
+
"attribute": "scrolling-debounce",
|
|
353
|
+
"reflect": false,
|
|
354
|
+
"defaultValue": "15"
|
|
355
|
+
}
|
|
356
|
+
}; }
|
|
357
|
+
static get states() { return {
|
|
358
|
+
"scrollingIndex": {},
|
|
359
|
+
"sixMenuItemHeight": {}
|
|
360
|
+
}; }
|
|
361
|
+
static get events() { return [{
|
|
362
|
+
"method": "sixMenuItemSelected",
|
|
363
|
+
"name": "six-menu-item-selected",
|
|
364
|
+
"bubbles": true,
|
|
365
|
+
"cancelable": true,
|
|
366
|
+
"composed": true,
|
|
367
|
+
"docs": {
|
|
368
|
+
"tags": [],
|
|
369
|
+
"text": "Emitted when a menu item is selected."
|
|
370
|
+
},
|
|
371
|
+
"complexType": {
|
|
372
|
+
"original": "SixMenuItemSelectedPayload",
|
|
373
|
+
"resolved": "SixMenuItemSelectedPayload",
|
|
374
|
+
"references": {
|
|
375
|
+
"SixMenuItemSelectedPayload": {
|
|
376
|
+
"location": "local"
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}]; }
|
|
381
|
+
static get methods() { return {
|
|
382
|
+
"typeToSelect": {
|
|
383
|
+
"complexType": {
|
|
384
|
+
"signature": "(key: string) => Promise<void>",
|
|
385
|
+
"parameters": [{
|
|
386
|
+
"tags": [],
|
|
387
|
+
"text": ""
|
|
388
|
+
}],
|
|
389
|
+
"references": {
|
|
390
|
+
"Promise": {
|
|
391
|
+
"location": "global"
|
|
392
|
+
},
|
|
393
|
+
"HTMLSlotElement": {
|
|
394
|
+
"location": "global"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"return": "Promise<void>"
|
|
398
|
+
},
|
|
399
|
+
"docs": {
|
|
400
|
+
"text": "Initiates type-to-select logic, which automatically selects an option based on what the user is currently typing.\nThe key passed will be appended to the internal query and the selection will be updated. After a brief period, the\ninternal query is cleared automatically. This method is intended to be used with the keydown event. Useful for\nenabling type-to-select when the menu doesn't have focus.",
|
|
401
|
+
"tags": []
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}; }
|
|
405
|
+
static get elementRef() { return "host"; }
|
|
406
|
+
}
|