@sekiui/elements 0.0.82 → 0.0.83
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/cdn/p-BgtjDG0h.js +45 -0
- package/dist/cdn/{p-BgpxFAwm.js → p-BuBiWSGh.js} +18 -3
- package/dist/cdn/{p-o_nleCju.js → p-Cs0DgQw5.js} +25 -8
- package/dist/cdn/p-D50kwTtW.js +160 -0
- package/dist/cdn/p-DuJp0Kp6.js +63 -0
- package/dist/cdn/seki-accordion-content.js +10 -8
- package/dist/cdn/seki-accordion-item.js +12 -10
- package/dist/cdn/seki-accordion-trigger.js +12 -10
- package/dist/cdn/seki-alert-dialog-action.js +1 -1
- package/dist/cdn/seki-alert-dialog-cancel.js +1 -1
- package/dist/cdn/seki-alert-dialog-content.js +23 -21
- package/dist/cdn/seki-alert-dialog.js +1 -1
- package/dist/cdn/seki-button.js +1 -1
- package/dist/cdn/seki-calendar.js +1 -1
- package/dist/cdn/seki-carousel-dots.js +3 -3
- package/dist/cdn/seki-carousel-next.js +3 -3
- package/dist/cdn/seki-carousel-previous.js +3 -3
- package/dist/cdn/seki-carousel.js +22 -4
- package/dist/cdn/seki-collapsible-content.js +9 -5
- package/dist/cdn/seki-combobox-item.js +9 -2
- package/dist/cdn/seki-command-group.js +9 -7
- package/dist/cdn/seki-context-menu-content.js +17 -15
- package/dist/cdn/seki-context-menu.js +11 -2
- package/dist/cdn/seki-data-table.js +19 -16
- package/dist/cdn/seki-date-picker.js +1 -1
- package/dist/cdn/seki-dialog-content.js +23 -21
- package/dist/cdn/seki-dialog-overlay.js +10 -8
- package/dist/cdn/seki-dialog.js +1 -1
- package/dist/cdn/seki-dropdown-menu-content.js +23 -68
- package/dist/cdn/seki-dropdown-menu-radio.js +11 -9
- package/dist/cdn/seki-dropdown-menu-trigger.js +11 -9
- package/dist/cdn/seki-dropdown-menu.js +11 -2
- package/dist/cdn/seki-menubar-content.js +24 -42
- package/dist/cdn/seki-menubar-radio.js +11 -9
- package/dist/cdn/seki-menubar-trigger.js +12 -10
- package/dist/cdn/seki-menubar.js +11 -2
- package/dist/cdn/seki-navigation-menu-content.js +8 -3
- package/dist/cdn/seki-navigation-menu-item.js +2 -2
- package/dist/cdn/seki-navigation-menu-link.js +8 -3
- package/dist/cdn/seki-navigation-menu-list.js +7 -2
- package/dist/cdn/seki-navigation-menu-trigger.js +3 -3
- package/dist/cdn/seki-navigation-menu.js +5 -5
- package/dist/cdn/seki-popover-content.js +20 -65
- package/dist/cdn/seki-popover.js +13 -3
- package/dist/cdn/seki-scroll-bar.js +6 -2
- package/dist/cdn/seki-select-option.js +29 -13
- package/dist/cdn/seki-select.js +79 -33
- package/dist/cdn/seki-sidebar-menu-sub.js +17 -16
- package/dist/cdn/seki-sidebar-provider.js +13 -4
- package/dist/cdn/seki-sidebar-rail.js +7 -2
- package/dist/cdn/seki-slider.js +36 -4
- package/dist/cdn/seki-spinner.js +2 -2
- package/dist/cdn/seki-table-body.js +1 -1
- package/dist/cdn/seki-table-caption.js +1 -1
- package/dist/cdn/seki-table-footer.js +1 -1
- package/dist/cdn/seki-table-header.js +1 -1
- package/dist/cdn/seki-table-row.js +2 -2
- package/dist/cdn/seki-table.js +1 -1
- package/dist/cdn/seki-tabs-content.js +12 -10
- package/dist/cdn/seki-tabs-list.js +2 -2
- package/dist/cdn/seki-tabs-trigger.js +12 -10
- package/dist/cdn/seki-tabs.js +2 -2
- package/dist/cdn/seki-textarea.js +1 -1
- package/dist/cdn/seki-toggle-group.js +1 -1
- package/dist/cdn/seki-toggle.js +1 -1
- package/dist/cdn/seki-tooltip.js +16 -3
- package/dist/cjs/ancestor-attrs-CnUfqtWw.js +47 -0
- package/dist/cjs/focus-trap-CFl79SjZ.js +165 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/positioning-LQZBWMS6.js +65 -0
- package/dist/cjs/seki-accordion-content.cjs.entry.js +10 -8
- package/dist/cjs/seki-accordion-item.cjs.entry.js +12 -10
- package/dist/cjs/seki-accordion-trigger.cjs.entry.js +12 -10
- package/dist/cjs/seki-alert-dialog-action.cjs.entry.js +1 -1
- package/dist/cjs/seki-alert-dialog-cancel.cjs.entry.js +1 -1
- package/dist/cjs/seki-alert-dialog-content.cjs.entry.js +23 -21
- package/dist/cjs/seki-button.cjs.entry.js +1 -1
- package/dist/cjs/seki-calendar.cjs.entry.js +25 -8
- package/dist/cjs/seki-carousel-dots.cjs.entry.js +3 -3
- package/dist/cjs/seki-carousel-next.cjs.entry.js +3 -3
- package/dist/cjs/seki-carousel-previous.cjs.entry.js +3 -3
- package/dist/cjs/seki-carousel.cjs.entry.js +22 -4
- package/dist/cjs/seki-collapsible-content.cjs.entry.js +9 -5
- package/dist/cjs/seki-combobox-item.cjs.entry.js +9 -2
- package/dist/cjs/seki-command-group.cjs.entry.js +9 -7
- package/dist/cjs/seki-context-menu-content.cjs.entry.js +17 -15
- package/dist/cjs/seki-context-menu.cjs.entry.js +11 -2
- package/dist/cjs/seki-data-table.cjs.entry.js +19 -16
- package/dist/cjs/seki-dialog-content.cjs.entry.js +23 -21
- package/dist/cjs/seki-dialog-overlay.cjs.entry.js +10 -8
- package/dist/cjs/seki-dialog.cjs.entry.js +15 -2
- package/dist/cjs/seki-dropdown-menu-content.cjs.entry.js +23 -68
- package/dist/cjs/seki-dropdown-menu-radio.cjs.entry.js +11 -9
- package/dist/cjs/seki-dropdown-menu-trigger.cjs.entry.js +11 -9
- package/dist/cjs/seki-dropdown-menu.cjs.entry.js +11 -2
- package/dist/cjs/seki-menubar-content.cjs.entry.js +24 -42
- package/dist/cjs/seki-menubar-radio.cjs.entry.js +11 -9
- package/dist/cjs/seki-menubar-trigger.cjs.entry.js +12 -10
- package/dist/cjs/seki-menubar.cjs.entry.js +11 -2
- package/dist/cjs/seki-navigation-menu-content.cjs.entry.js +8 -3
- package/dist/cjs/seki-navigation-menu-item.cjs.entry.js +2 -2
- package/dist/cjs/seki-navigation-menu-link.cjs.entry.js +8 -3
- package/dist/cjs/seki-navigation-menu-list.cjs.entry.js +7 -2
- package/dist/cjs/seki-navigation-menu-trigger.cjs.entry.js +3 -3
- package/dist/cjs/seki-navigation-menu.cjs.entry.js +5 -5
- package/dist/cjs/seki-popover-content.cjs.entry.js +20 -65
- package/dist/cjs/seki-popover.cjs.entry.js +13 -3
- package/dist/cjs/seki-scroll-bar.cjs.entry.js +6 -2
- package/dist/cjs/seki-select-option.cjs.entry.js +29 -13
- package/dist/cjs/seki-select.cjs.entry.js +81 -30
- package/dist/cjs/seki-sidebar-menu-sub.cjs.entry.js +17 -16
- package/dist/cjs/seki-sidebar-provider.cjs.entry.js +13 -4
- package/dist/cjs/seki-sidebar-rail.cjs.entry.js +7 -2
- package/dist/cjs/seki-slider.cjs.entry.js +36 -1
- package/dist/cjs/seki-spinner.cjs.entry.js +2 -2
- package/dist/cjs/seki-table-body.cjs.entry.js +1 -1
- package/dist/cjs/seki-table-caption.cjs.entry.js +1 -1
- package/dist/cjs/seki-table-footer.cjs.entry.js +1 -1
- package/dist/cjs/seki-table-header.cjs.entry.js +1 -1
- package/dist/cjs/seki-table-row.cjs.entry.js +2 -2
- package/dist/cjs/seki-table.cjs.entry.js +1 -1
- package/dist/cjs/seki-tabs-content.cjs.entry.js +12 -10
- package/dist/cjs/seki-tabs-list.cjs.entry.js +2 -2
- package/dist/cjs/seki-tabs-trigger.cjs.entry.js +12 -10
- package/dist/cjs/seki-tabs.cjs.entry.js +2 -2
- package/dist/cjs/seki-textarea.cjs.entry.js +1 -1
- package/dist/cjs/seki-toggle-group.cjs.entry.js +1 -1
- package/dist/cjs/seki-toggle.cjs.entry.js +1 -1
- package/dist/cjs/seki-tooltip.cjs.entry.js +16 -3
- package/dist/cjs/sekiui.cjs.js +1 -1
- package/dist/collection/components/accordion/seki-accordion-content.js +10 -8
- package/dist/collection/components/accordion/seki-accordion-item.js +12 -10
- package/dist/collection/components/accordion/seki-accordion-trigger.js +12 -10
- package/dist/collection/components/alert-dialog/seki-alert-dialog-action.css +5 -5
- package/dist/collection/components/alert-dialog/seki-alert-dialog-cancel.css +4 -4
- package/dist/collection/components/alert-dialog/seki-alert-dialog-content.js +22 -20
- package/dist/collection/components/button/seki-button.css +9 -9
- package/dist/collection/components/calendar/seki-calendar.js +14 -5
- package/dist/collection/components/carousel/seki-carousel-dots.js +3 -3
- package/dist/collection/components/carousel/seki-carousel-next.js +3 -3
- package/dist/collection/components/carousel/seki-carousel-previous.js +3 -3
- package/dist/collection/components/carousel/seki-carousel.js +22 -4
- package/dist/collection/components/collapsible/seki-collapsible-content.js +9 -5
- package/dist/collection/components/combobox-item/seki-combobox-item.js +9 -2
- package/dist/collection/components/command/seki-command-group.js +9 -7
- package/dist/collection/components/context-menu/seki-context-menu-content.js +17 -15
- package/dist/collection/components/context-menu/seki-context-menu.js +11 -2
- package/dist/collection/components/data-table/seki-data-table.css +5 -5
- package/dist/collection/components/data-table/seki-data-table.js +18 -15
- package/dist/collection/components/dialog/seki-dialog-content.js +22 -20
- package/dist/collection/components/dialog/seki-dialog-overlay.js +10 -8
- package/dist/collection/components/dialog/seki-dialog.js +17 -1
- package/dist/collection/components/dropdown-menu/seki-dropdown-menu-content.js +23 -68
- package/dist/collection/components/dropdown-menu/seki-dropdown-menu-radio.js +11 -9
- package/dist/collection/components/dropdown-menu/seki-dropdown-menu-trigger.js +11 -9
- package/dist/collection/components/dropdown-menu/seki-dropdown-menu.js +11 -2
- package/dist/collection/components/menubar/seki-menubar-content.js +24 -42
- package/dist/collection/components/menubar/seki-menubar-radio.js +11 -9
- package/dist/collection/components/menubar/seki-menubar-trigger.js +12 -10
- package/dist/collection/components/menubar/seki-menubar.js +11 -2
- package/dist/collection/components/navigation-menu/seki-navigation-menu-content.css +1 -1
- package/dist/collection/components/navigation-menu/seki-navigation-menu-content.js +7 -2
- package/dist/collection/components/navigation-menu/seki-navigation-menu-item.js +2 -2
- package/dist/collection/components/navigation-menu/seki-navigation-menu-link.css +1 -1
- package/dist/collection/components/navigation-menu/seki-navigation-menu-link.js +7 -2
- package/dist/collection/components/navigation-menu/seki-navigation-menu-list.css +1 -1
- package/dist/collection/components/navigation-menu/seki-navigation-menu-list.js +6 -1
- package/dist/collection/components/navigation-menu/seki-navigation-menu-trigger.js +3 -3
- package/dist/collection/components/navigation-menu/seki-navigation-menu.js +5 -5
- package/dist/collection/components/popover/seki-popover-content.js +20 -65
- package/dist/collection/components/popover/seki-popover.js +13 -3
- package/dist/collection/components/scroll-area/seki-scroll-bar.css +5 -5
- package/dist/collection/components/scroll-area/seki-scroll-bar.js +5 -1
- package/dist/collection/components/select/seki-select.js +77 -30
- package/dist/collection/components/select-option/seki-select-option.js +29 -13
- package/dist/collection/components/sidebar/seki-sidebar-menu-sub.js +17 -16
- package/dist/collection/components/sidebar/seki-sidebar-provider.js +13 -4
- package/dist/collection/components/sidebar/seki-sidebar-rail.css +6 -6
- package/dist/collection/components/sidebar/seki-sidebar-rail.js +6 -1
- package/dist/collection/components/slider/seki-slider.js +36 -2
- package/dist/collection/components/spinner/seki-spinner.js +2 -2
- package/dist/collection/components/table/seki-table-body.js +1 -1
- package/dist/collection/components/table/seki-table-caption.js +1 -1
- package/dist/collection/components/table/seki-table-footer.js +1 -1
- package/dist/collection/components/table/seki-table-header.js +1 -1
- package/dist/collection/components/table/seki-table-row.js +2 -2
- package/dist/collection/components/table/seki-table.js +1 -1
- package/dist/collection/components/tabs/seki-tabs-content.js +12 -10
- package/dist/collection/components/tabs/seki-tabs-list.js +2 -2
- package/dist/collection/components/tabs/seki-tabs-trigger.js +12 -10
- package/dist/collection/components/tabs/seki-tabs.js +2 -2
- package/dist/collection/components/textarea/seki-textarea.js +1 -1
- package/dist/collection/components/toggle/seki-toggle.js +1 -1
- package/dist/collection/components/toggle-group/seki-toggle-group.js +1 -1
- package/dist/collection/components/tooltip/seki-tooltip.js +16 -3
- package/dist/collection/utils/ancestor-attrs.js +43 -0
- package/dist/collection/utils/calendar/date-utils.js +12 -4
- package/dist/collection/utils/dialog/focus-trap.js +110 -21
- package/dist/collection/utils/positioning.js +61 -0
- package/dist/components/p-BgtjDG0h.js +45 -0
- package/dist/components/{p-tgCyk_Am.js → p-C87BOunl.js} +18 -3
- package/dist/components/p-D50kwTtW.js +160 -0
- package/dist/components/{p-DKbSEP4m.js → p-DFfIiiRa.js} +25 -8
- package/dist/components/p-DuJp0Kp6.js +63 -0
- package/dist/components/seki-accordion-content.js +10 -8
- package/dist/components/seki-accordion-item.js +12 -10
- package/dist/components/seki-accordion-trigger.js +12 -10
- package/dist/components/seki-alert-dialog-action.js +1 -1
- package/dist/components/seki-alert-dialog-cancel.js +1 -1
- package/dist/components/seki-alert-dialog-content.js +23 -21
- package/dist/components/seki-alert-dialog.js +1 -1
- package/dist/components/seki-button.js +1 -1
- package/dist/components/seki-calendar.js +1 -1
- package/dist/components/seki-carousel-dots.js +3 -3
- package/dist/components/seki-carousel-next.js +3 -3
- package/dist/components/seki-carousel-previous.js +3 -3
- package/dist/components/seki-carousel.js +22 -4
- package/dist/components/seki-collapsible-content.js +9 -5
- package/dist/components/seki-combobox-item.js +9 -2
- package/dist/components/seki-command-group.js +9 -7
- package/dist/components/seki-context-menu-content.js +17 -15
- package/dist/components/seki-context-menu.js +11 -2
- package/dist/components/seki-data-table.js +19 -16
- package/dist/components/seki-date-picker.js +1 -1
- package/dist/components/seki-dialog-content.js +23 -21
- package/dist/components/seki-dialog-overlay.js +10 -8
- package/dist/components/seki-dialog.js +1 -1
- package/dist/components/seki-dropdown-menu-content.js +23 -68
- package/dist/components/seki-dropdown-menu-radio.js +11 -9
- package/dist/components/seki-dropdown-menu-trigger.js +11 -9
- package/dist/components/seki-dropdown-menu.js +11 -2
- package/dist/components/seki-menubar-content.js +24 -42
- package/dist/components/seki-menubar-radio.js +11 -9
- package/dist/components/seki-menubar-trigger.js +12 -10
- package/dist/components/seki-menubar.js +11 -2
- package/dist/components/seki-navigation-menu-content.js +8 -3
- package/dist/components/seki-navigation-menu-item.js +2 -2
- package/dist/components/seki-navigation-menu-link.js +8 -3
- package/dist/components/seki-navigation-menu-list.js +7 -2
- package/dist/components/seki-navigation-menu-trigger.js +3 -3
- package/dist/components/seki-navigation-menu.js +5 -5
- package/dist/components/seki-popover-content.js +20 -65
- package/dist/components/seki-popover.js +13 -3
- package/dist/components/seki-scroll-bar.js +6 -2
- package/dist/components/seki-select-option.js +29 -13
- package/dist/components/seki-select.js +79 -33
- package/dist/components/seki-sidebar-menu-sub.js +17 -16
- package/dist/components/seki-sidebar-provider.js +13 -4
- package/dist/components/seki-sidebar-rail.js +7 -2
- package/dist/components/seki-slider.js +36 -4
- package/dist/components/seki-spinner.js +2 -2
- package/dist/components/seki-table-body.js +1 -1
- package/dist/components/seki-table-caption.js +1 -1
- package/dist/components/seki-table-footer.js +1 -1
- package/dist/components/seki-table-header.js +1 -1
- package/dist/components/seki-table-row.js +2 -2
- package/dist/components/seki-table.js +1 -1
- package/dist/components/seki-tabs-content.js +12 -10
- package/dist/components/seki-tabs-list.js +2 -2
- package/dist/components/seki-tabs-trigger.js +12 -10
- package/dist/components/seki-tabs.js +2 -2
- package/dist/components/seki-textarea.js +1 -1
- package/dist/components/seki-toggle-group.js +1 -1
- package/dist/components/seki-toggle.js +1 -1
- package/dist/components/seki-tooltip.js +16 -3
- package/dist/esm/ancestor-attrs-BgtjDG0h.js +45 -0
- package/dist/esm/focus-trap-D50kwTtW.js +160 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/positioning-DuJp0Kp6.js +63 -0
- package/dist/esm/seki-accordion-content.entry.js +10 -8
- package/dist/esm/seki-accordion-item.entry.js +12 -10
- package/dist/esm/seki-accordion-trigger.entry.js +12 -10
- package/dist/esm/seki-alert-dialog-action.entry.js +1 -1
- package/dist/esm/seki-alert-dialog-cancel.entry.js +1 -1
- package/dist/esm/seki-alert-dialog-content.entry.js +23 -21
- package/dist/esm/seki-button.entry.js +1 -1
- package/dist/esm/seki-calendar.entry.js +25 -8
- package/dist/esm/seki-carousel-dots.entry.js +3 -3
- package/dist/esm/seki-carousel-next.entry.js +3 -3
- package/dist/esm/seki-carousel-previous.entry.js +3 -3
- package/dist/esm/seki-carousel.entry.js +22 -4
- package/dist/esm/seki-collapsible-content.entry.js +9 -5
- package/dist/esm/seki-combobox-item.entry.js +9 -2
- package/dist/esm/seki-command-group.entry.js +9 -7
- package/dist/esm/seki-context-menu-content.entry.js +17 -15
- package/dist/esm/seki-context-menu.entry.js +11 -2
- package/dist/esm/seki-data-table.entry.js +19 -16
- package/dist/esm/seki-dialog-content.entry.js +23 -21
- package/dist/esm/seki-dialog-overlay.entry.js +10 -8
- package/dist/esm/seki-dialog.entry.js +15 -2
- package/dist/esm/seki-dropdown-menu-content.entry.js +23 -68
- package/dist/esm/seki-dropdown-menu-radio.entry.js +11 -9
- package/dist/esm/seki-dropdown-menu-trigger.entry.js +11 -9
- package/dist/esm/seki-dropdown-menu.entry.js +11 -2
- package/dist/esm/seki-menubar-content.entry.js +24 -42
- package/dist/esm/seki-menubar-radio.entry.js +11 -9
- package/dist/esm/seki-menubar-trigger.entry.js +12 -10
- package/dist/esm/seki-menubar.entry.js +11 -2
- package/dist/esm/seki-navigation-menu-content.entry.js +8 -3
- package/dist/esm/seki-navigation-menu-item.entry.js +2 -2
- package/dist/esm/seki-navigation-menu-link.entry.js +8 -3
- package/dist/esm/seki-navigation-menu-list.entry.js +7 -2
- package/dist/esm/seki-navigation-menu-trigger.entry.js +3 -3
- package/dist/esm/seki-navigation-menu.entry.js +5 -5
- package/dist/esm/seki-popover-content.entry.js +20 -65
- package/dist/esm/seki-popover.entry.js +13 -3
- package/dist/esm/seki-scroll-bar.entry.js +6 -2
- package/dist/esm/seki-select-option.entry.js +29 -13
- package/dist/esm/seki-select.entry.js +81 -30
- package/dist/esm/seki-sidebar-menu-sub.entry.js +17 -16
- package/dist/esm/seki-sidebar-provider.entry.js +13 -4
- package/dist/esm/seki-sidebar-rail.entry.js +7 -2
- package/dist/esm/seki-slider.entry.js +36 -1
- package/dist/esm/seki-spinner.entry.js +2 -2
- package/dist/esm/seki-table-body.entry.js +1 -1
- package/dist/esm/seki-table-caption.entry.js +1 -1
- package/dist/esm/seki-table-footer.entry.js +1 -1
- package/dist/esm/seki-table-header.entry.js +1 -1
- package/dist/esm/seki-table-row.entry.js +2 -2
- package/dist/esm/seki-table.entry.js +1 -1
- package/dist/esm/seki-tabs-content.entry.js +12 -10
- package/dist/esm/seki-tabs-list.entry.js +2 -2
- package/dist/esm/seki-tabs-trigger.entry.js +12 -10
- package/dist/esm/seki-tabs.entry.js +2 -2
- package/dist/esm/seki-textarea.entry.js +1 -1
- package/dist/esm/seki-toggle-group.entry.js +1 -1
- package/dist/esm/seki-toggle.entry.js +1 -1
- package/dist/esm/seki-tooltip.entry.js +16 -3
- package/dist/esm/sekiui.js +1 -1
- package/dist/sekiui/{p-40458a33.entry.js → p-01420aec.entry.js} +1 -1
- package/dist/sekiui/{p-9643e1d8.entry.js → p-021cb880.entry.js} +1 -1
- package/dist/sekiui/p-0ab43c7f.entry.js +1 -0
- package/dist/sekiui/p-14b6774a.entry.js +1 -0
- package/dist/sekiui/{p-d02efcf2.entry.js → p-1b8d2288.entry.js} +1 -1
- package/dist/sekiui/{p-67fffcd0.entry.js → p-1eb709fb.entry.js} +1 -1
- package/dist/sekiui/{p-24ea0d3d.entry.js → p-2de73747.entry.js} +1 -1
- package/dist/sekiui/p-32569d7d.entry.js +1 -0
- package/dist/sekiui/p-367d9a7f.entry.js +1 -0
- package/dist/sekiui/p-40c40d4f.entry.js +1 -0
- package/dist/sekiui/p-4572d290.entry.js +1 -0
- package/dist/sekiui/p-49024e9e.entry.js +1 -0
- package/dist/sekiui/{p-0c2344d1.entry.js → p-4bf8c2fa.entry.js} +1 -1
- package/dist/sekiui/p-4e60d2d0.entry.js +1 -0
- package/dist/sekiui/{p-5a853b23.entry.js → p-51b11242.entry.js} +1 -1
- package/dist/sekiui/{p-541f1dbb.entry.js → p-57e7685a.entry.js} +1 -1
- package/dist/sekiui/p-677a1751.entry.js +1 -0
- package/dist/sekiui/{p-66b1c2ac.entry.js → p-695a4986.entry.js} +1 -1
- package/dist/sekiui/p-71f6da8b.entry.js +1 -0
- package/dist/sekiui/{p-96073eae.entry.js → p-75d46bc7.entry.js} +1 -1
- package/dist/sekiui/p-7cd76bbb.entry.js +1 -0
- package/dist/sekiui/p-80b79cc0.entry.js +1 -0
- package/dist/sekiui/p-835f723b.entry.js +1 -0
- package/dist/sekiui/p-851d1c50.entry.js +1 -0
- package/dist/sekiui/{p-b664489e.entry.js → p-887b559d.entry.js} +1 -1
- package/dist/sekiui/{p-7bf379c4.entry.js → p-8c369957.entry.js} +1 -1
- package/dist/sekiui/{p-41f5488e.entry.js → p-8c57364a.entry.js} +1 -1
- package/dist/sekiui/p-8d888e3d.entry.js +1 -0
- package/dist/sekiui/{p-4c1b29de.entry.js → p-92b0241d.entry.js} +1 -1
- package/dist/sekiui/{p-fc6d6133.entry.js → p-966b2358.entry.js} +1 -1
- package/dist/sekiui/p-9a00c59c.entry.js +1 -0
- package/dist/sekiui/{p-b14ba603.entry.js → p-9af630c4.entry.js} +1 -1
- package/dist/sekiui/p-BgtjDG0h.js +1 -0
- package/dist/sekiui/p-D50kwTtW.js +1 -0
- package/dist/sekiui/p-DuJp0Kp6.js +1 -0
- package/dist/sekiui/p-a29160bc.entry.js +1 -0
- package/dist/sekiui/p-a6ae5c4b.entry.js +1 -0
- package/dist/sekiui/{p-c1bf976b.entry.js → p-b0d1e077.entry.js} +1 -1
- package/dist/sekiui/{p-73cbd067.entry.js → p-b2a60e91.entry.js} +1 -1
- package/dist/sekiui/{p-a5edaf79.entry.js → p-b43f9720.entry.js} +1 -1
- package/dist/sekiui/p-b5c242a0.entry.js +1 -0
- package/dist/sekiui/{p-d5b616c5.entry.js → p-bac67676.entry.js} +1 -1
- package/dist/sekiui/p-bc611a3d.entry.js +1 -0
- package/dist/sekiui/p-c004f467.entry.js +1 -0
- package/dist/sekiui/{p-41fae140.entry.js → p-cb657adb.entry.js} +1 -1
- package/dist/sekiui/{p-fa9a68be.entry.js → p-cfac56e7.entry.js} +1 -1
- package/dist/sekiui/{p-bf52433b.entry.js → p-d1a06cbc.entry.js} +1 -1
- package/dist/sekiui/p-d1f6efac.entry.js +1 -0
- package/dist/sekiui/{p-67aaf0f1.entry.js → p-d4ed816d.entry.js} +1 -1
- package/dist/sekiui/p-eaf626e5.entry.js +1 -0
- package/dist/sekiui/p-ed9034e4.entry.js +1 -0
- package/dist/sekiui/p-edd02332.entry.js +1 -0
- package/dist/sekiui/{p-bd9d106a.entry.js → p-ee40575b.entry.js} +1 -1
- package/dist/sekiui/{p-8344563b.entry.js → p-ef3679b0.entry.js} +1 -1
- package/dist/sekiui/p-f07b430e.entry.js +1 -0
- package/dist/sekiui/p-f3c69359.entry.js +1 -0
- package/dist/sekiui/p-f53b37e2.entry.js +1 -0
- package/dist/sekiui/p-f587cd57.entry.js +1 -0
- package/dist/sekiui/p-f7e1fdf0.entry.js +1 -0
- package/dist/sekiui/p-fb1370a9.entry.js +1 -0
- package/dist/sekiui/p-fde2877f.entry.js +1 -0
- package/dist/sekiui/p-fed3a547.entry.js +1 -0
- package/dist/sekiui/sekiui.esm.js +1 -1
- package/dist/types/components/accordion/seki-accordion-content.d.ts +2 -0
- package/dist/types/components/accordion/seki-accordion-item.d.ts +2 -0
- package/dist/types/components/accordion/seki-accordion-trigger.d.ts +2 -0
- package/dist/types/components/alert-dialog/seki-alert-dialog-content.d.ts +2 -0
- package/dist/types/components/carousel/seki-carousel.d.ts +3 -0
- package/dist/types/components/collapsible/seki-collapsible-content.d.ts +2 -0
- package/dist/types/components/combobox-item/seki-combobox-item.d.ts +1 -0
- package/dist/types/components/command/seki-command-group.d.ts +2 -0
- package/dist/types/components/context-menu/seki-context-menu-content.d.ts +2 -0
- package/dist/types/components/context-menu/seki-context-menu.d.ts +1 -0
- package/dist/types/components/dialog/seki-dialog-content.d.ts +2 -0
- package/dist/types/components/dialog/seki-dialog-overlay.d.ts +2 -0
- package/dist/types/components/dialog/seki-dialog.d.ts +1 -0
- package/dist/types/components/dropdown-menu/seki-dropdown-menu-content.d.ts +2 -0
- package/dist/types/components/dropdown-menu/seki-dropdown-menu-radio.d.ts +2 -0
- package/dist/types/components/dropdown-menu/seki-dropdown-menu-trigger.d.ts +2 -0
- package/dist/types/components/dropdown-menu/seki-dropdown-menu.d.ts +1 -0
- package/dist/types/components/menubar/seki-menubar-content.d.ts +2 -0
- package/dist/types/components/menubar/seki-menubar-radio.d.ts +2 -0
- package/dist/types/components/menubar/seki-menubar-trigger.d.ts +2 -0
- package/dist/types/components/menubar/seki-menubar.d.ts +1 -0
- package/dist/types/components/navigation-menu/seki-navigation-menu-content.d.ts +1 -0
- package/dist/types/components/navigation-menu/seki-navigation-menu-link.d.ts +1 -0
- package/dist/types/components/navigation-menu/seki-navigation-menu-list.d.ts +1 -0
- package/dist/types/components/popover/seki-popover-content.d.ts +2 -0
- package/dist/types/components/popover/seki-popover.d.ts +1 -0
- package/dist/types/components/scroll-area/seki-scroll-bar.d.ts +1 -0
- package/dist/types/components/select/seki-select.d.ts +8 -1
- package/dist/types/components/select-option/seki-select-option.d.ts +3 -1
- package/dist/types/components/sidebar/seki-sidebar-menu-sub.d.ts +2 -0
- package/dist/types/components/sidebar/seki-sidebar-rail.d.ts +1 -0
- package/dist/types/components/slider/seki-slider.d.ts +9 -0
- package/dist/types/components/tabs/seki-tabs-content.d.ts +2 -0
- package/dist/types/components/tabs/seki-tabs-trigger.d.ts +2 -0
- package/dist/types/components/tooltip/seki-tooltip.d.ts +1 -0
- package/dist/types/components.d.ts +32 -32
- package/dist/types/utils/ancestor-attrs.d.ts +18 -0
- package/dist/types/utils/calendar/date-utils.d.ts +9 -0
- package/dist/types/utils/dialog/focus-trap.d.ts +18 -7
- package/dist/types/utils/positioning.d.ts +34 -0
- package/package.json +25 -2
- package/dist/cdn/p-CP7ZtKCE.js +0 -71
- package/dist/cjs/focus-trap-C7ukllRZ.js +0 -76
- package/dist/components/p-CP7ZtKCE.js +0 -71
- package/dist/esm/focus-trap-CP7ZtKCE.js +0 -71
- package/dist/sekiui/p-107bdce6.entry.js +0 -1
- package/dist/sekiui/p-2548d7c3.entry.js +0 -1
- package/dist/sekiui/p-307a0de3.entry.js +0 -1
- package/dist/sekiui/p-397fb20e.entry.js +0 -1
- package/dist/sekiui/p-3e01b3c9.entry.js +0 -1
- package/dist/sekiui/p-4617d9c5.entry.js +0 -1
- package/dist/sekiui/p-4896a497.entry.js +0 -1
- package/dist/sekiui/p-4a47ea19.entry.js +0 -1
- package/dist/sekiui/p-4b0ee9e5.entry.js +0 -1
- package/dist/sekiui/p-598f9c5b.entry.js +0 -1
- package/dist/sekiui/p-635ca5ab.entry.js +0 -1
- package/dist/sekiui/p-63b3a53c.entry.js +0 -1
- package/dist/sekiui/p-63ffc38a.entry.js +0 -1
- package/dist/sekiui/p-6416552b.entry.js +0 -1
- package/dist/sekiui/p-66b59a4c.entry.js +0 -1
- package/dist/sekiui/p-70f149c3.entry.js +0 -1
- package/dist/sekiui/p-79062829.entry.js +0 -1
- package/dist/sekiui/p-7bf7ee5f.entry.js +0 -1
- package/dist/sekiui/p-8067a8f3.entry.js +0 -1
- package/dist/sekiui/p-884bde18.entry.js +0 -1
- package/dist/sekiui/p-91d532fa.entry.js +0 -1
- package/dist/sekiui/p-95749f03.entry.js +0 -1
- package/dist/sekiui/p-9d5b807f.entry.js +0 -1
- package/dist/sekiui/p-CP7ZtKCE.js +0 -1
- package/dist/sekiui/p-ac321aeb.entry.js +0 -1
- package/dist/sekiui/p-adc3cfff.entry.js +0 -1
- package/dist/sekiui/p-b945fc54.entry.js +0 -1
- package/dist/sekiui/p-bdb2d304.entry.js +0 -1
- package/dist/sekiui/p-c0ce45c3.entry.js +0 -1
- package/dist/sekiui/p-d2951ab4.entry.js +0 -1
- package/dist/sekiui/p-db37e4d2.entry.js +0 -1
- package/dist/sekiui/p-e51d76de.entry.js +0 -1
- package/dist/sekiui/p-f0bb516d.entry.js +0 -1
- package/dist/sekiui/p-f82ead84.entry.js +0 -1
|
@@ -73,10 +73,10 @@ export class SekiCarouselDots {
|
|
|
73
73
|
// Initial state
|
|
74
74
|
await this.updateState();
|
|
75
75
|
// Listen for slide changes
|
|
76
|
-
this.parentCarousel.addEventListener('
|
|
76
|
+
this.parentCarousel.addEventListener('sekiSlideChange', this.handleSlideChange);
|
|
77
77
|
this.unsubscribe = () => {
|
|
78
78
|
var _a;
|
|
79
|
-
(_a = this.parentCarousel) === null || _a === void 0 ? void 0 : _a.removeEventListener('
|
|
79
|
+
(_a = this.parentCarousel) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiSlideChange', this.handleSlideChange);
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
async updateState() {
|
|
@@ -88,7 +88,7 @@ export class SekiCarouselDots {
|
|
|
88
88
|
}
|
|
89
89
|
render() {
|
|
90
90
|
const dots = Array.from({ length: this.scrollSnapCount }, (_, i) => i);
|
|
91
|
-
return (h(Host, { key: '
|
|
91
|
+
return (h(Host, { key: '177e32f3366f093b08997e67f61eafcd5149c543', class: "carousel-dots" }, h("div", { key: '2f2e62e001bb23f81d1d4c0d128da5681e4b3261', class: "carousel-dots__container", role: "tablist", "aria-label": "Carousel pagination" }, dots.map((index) => (h("button", { key: index, type: "button", class: {
|
|
92
92
|
'carousel-dots__dot': true,
|
|
93
93
|
'carousel-dots__dot--active': index === this.selectedIndex,
|
|
94
94
|
}, role: "tab", "aria-selected": index === this.selectedIndex ? 'true' : 'false', "aria-label": `Go to slide ${index + 1}`, tabindex: index === this.selectedIndex ? '0' : '-1', onClick: () => this.handleDotClick(index), onKeyDown: (e) => this.handleKeyDown(e, index) }, h("span", { class: "carousel-dots__dot-inner" })))))));
|
|
@@ -41,10 +41,10 @@ export class SekiCarouselNext {
|
|
|
41
41
|
// Initial state
|
|
42
42
|
await this.updateState();
|
|
43
43
|
// Listen for slide changes
|
|
44
|
-
this.parentCarousel.addEventListener('
|
|
44
|
+
this.parentCarousel.addEventListener('sekiSlideChange', this.handleSlideChange);
|
|
45
45
|
this.unsubscribe = () => {
|
|
46
46
|
var _a;
|
|
47
|
-
(_a = this.parentCarousel) === null || _a === void 0 ? void 0 : _a.removeEventListener('
|
|
47
|
+
(_a = this.parentCarousel) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiSlideChange', this.handleSlideChange);
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
async updateState() {
|
|
@@ -54,7 +54,7 @@ export class SekiCarouselNext {
|
|
|
54
54
|
this.disabled = !context.canScrollNext;
|
|
55
55
|
}
|
|
56
56
|
render() {
|
|
57
|
-
return (h(Host, { key: '
|
|
57
|
+
return (h(Host, { key: '267ae3c889aa77f1b15a4f9b5e4aa3cf46dab2f7', class: { 'carousel-nav': true, 'carousel-nav--next': true } }, h("button", { key: '5f50fac8181f643368c256530ec28996f5f8a164', type: "button", class: "carousel-nav__button", disabled: this.disabled, "aria-label": "Next slide", onClick: this.handleClick }, h("svg", { key: '878dac075db363ec2337615a3ec747fc1fc4a9f5', class: "carousel-nav__icon", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: '55e835953c60b00c8974cef4d3d2258ab8385b95', points: "9 18 15 12 9 6" })))));
|
|
58
58
|
}
|
|
59
59
|
static get is() { return "seki-carousel-next"; }
|
|
60
60
|
static get encapsulation() { return "shadow"; }
|
|
@@ -41,10 +41,10 @@ export class SekiCarouselPrevious {
|
|
|
41
41
|
// Initial state
|
|
42
42
|
await this.updateState();
|
|
43
43
|
// Listen for slide changes
|
|
44
|
-
this.parentCarousel.addEventListener('
|
|
44
|
+
this.parentCarousel.addEventListener('sekiSlideChange', this.handleSlideChange);
|
|
45
45
|
this.unsubscribe = () => {
|
|
46
46
|
var _a;
|
|
47
|
-
(_a = this.parentCarousel) === null || _a === void 0 ? void 0 : _a.removeEventListener('
|
|
47
|
+
(_a = this.parentCarousel) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiSlideChange', this.handleSlideChange);
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
async updateState() {
|
|
@@ -54,7 +54,7 @@ export class SekiCarouselPrevious {
|
|
|
54
54
|
this.disabled = !context.canScrollPrev;
|
|
55
55
|
}
|
|
56
56
|
render() {
|
|
57
|
-
return (h(Host, { key: '
|
|
57
|
+
return (h(Host, { key: '65561be0cf5c06eb26257de6801bb46f8362b3ac', class: { 'carousel-nav': true, 'carousel-nav--prev': true } }, h("button", { key: '55c66c69c07f951d2a11d55b368b769712dc37a4', type: "button", class: "carousel-nav__button", disabled: this.disabled, "aria-label": "Previous slide", onClick: this.handleClick }, h("svg", { key: '46693095d37b5ac31662f836a12430afca78baaf', class: "carousel-nav__icon", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("polyline", { key: '7409dd4ba65445aaa3018204522556d75b37ca5f', points: "15 18 9 12 15 6" })))));
|
|
58
58
|
}
|
|
59
59
|
static get is() { return "seki-carousel-previous"; }
|
|
60
60
|
static get encapsulation() { return "shadow"; }
|
|
@@ -44,6 +44,8 @@ export class SekiCarousel {
|
|
|
44
44
|
this.emblaApi = null;
|
|
45
45
|
this.autoplayInterval = null;
|
|
46
46
|
this.viewportEl = null;
|
|
47
|
+
this.initRafId = null;
|
|
48
|
+
this.initRetries = 0;
|
|
47
49
|
this.handleSelect = () => {
|
|
48
50
|
this.updateState();
|
|
49
51
|
this.slideChange.emit({
|
|
@@ -120,6 +122,10 @@ export class SekiCarousel {
|
|
|
120
122
|
var _a;
|
|
121
123
|
unregisterThemeSync(this.el);
|
|
122
124
|
this.stopAutoplay();
|
|
125
|
+
if (this.initRafId !== null) {
|
|
126
|
+
cancelAnimationFrame(this.initRafId);
|
|
127
|
+
this.initRafId = null;
|
|
128
|
+
}
|
|
123
129
|
(_a = this.emblaApi) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
124
130
|
}
|
|
125
131
|
// =========================================================================
|
|
@@ -188,10 +194,20 @@ export class SekiCarousel {
|
|
|
188
194
|
// Get the inner container (seki-carousel-content uses shadow: false)
|
|
189
195
|
const containerEl = this.viewportEl.querySelector('.carousel-content');
|
|
190
196
|
if (!containerEl) {
|
|
191
|
-
//
|
|
192
|
-
|
|
197
|
+
// Content child hasn't rendered yet. Retry next frame, but bail if the
|
|
198
|
+
// carousel was disconnected or we've exhausted the retry budget so this
|
|
199
|
+
// can never become an unbounded, uncancellable rAF loop.
|
|
200
|
+
if (!this.el.isConnected || this.initRetries >= SekiCarousel.MAX_INIT_RETRIES) {
|
|
201
|
+
this.initRafId = null;
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
this.initRetries++;
|
|
205
|
+
this.initRafId = requestAnimationFrame(() => this.initEmbla());
|
|
193
206
|
return;
|
|
194
207
|
}
|
|
208
|
+
// Container found — reset retry bookkeeping.
|
|
209
|
+
this.initRetries = 0;
|
|
210
|
+
this.initRafId = null;
|
|
195
211
|
const options = {
|
|
196
212
|
loop: this.loop,
|
|
197
213
|
startIndex: this.startIndex,
|
|
@@ -256,7 +272,7 @@ export class SekiCarousel {
|
|
|
256
272
|
// Render
|
|
257
273
|
// =========================================================================
|
|
258
274
|
render() {
|
|
259
|
-
return (h(Host, { key: '
|
|
275
|
+
return (h(Host, { key: 'af9fa29a7669fc4637111bb9efaf7c9f25c51603', class: "carousel", role: "region", "aria-roledescription": "carousel", "aria-label": this.ariaLabel, tabindex: "0", onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, onFocusIn: this.handleFocusIn, onFocusOut: this.handleFocusOut, onKeyDown: this.handleKeyDown }, h("div", { key: 'a5ef6de3283f4e92496a5b0dd2ac34baf93ca22a', class: "carousel__container" }, h("slot", { key: 'ddbc533588e097e1dbb76f7867d1426a76cc55d9' })), h("div", { key: '393015fda7b8a47826f83408acb704f0f792964b', class: "carousel__live-region", "aria-live": "polite", "aria-atomic": "true" }, `Slide ${this.selectedIndex + 1} of ${this.scrollSnapCount}`)));
|
|
260
276
|
}
|
|
261
277
|
static get is() { return "seki-carousel"; }
|
|
262
278
|
static get encapsulation() { return "shadow"; }
|
|
@@ -446,7 +462,7 @@ export class SekiCarousel {
|
|
|
446
462
|
static get events() {
|
|
447
463
|
return [{
|
|
448
464
|
"method": "slideChange",
|
|
449
|
-
"name": "
|
|
465
|
+
"name": "sekiSlideChange",
|
|
450
466
|
"bubbles": true,
|
|
451
467
|
"cancelable": true,
|
|
452
468
|
"composed": true,
|
|
@@ -576,3 +592,5 @@ export class SekiCarousel {
|
|
|
576
592
|
}];
|
|
577
593
|
}
|
|
578
594
|
}
|
|
595
|
+
// ~1s of frames at 60fps; enough for child content to render without spinning forever.
|
|
596
|
+
SekiCarousel.MAX_INIT_RETRIES = 60;
|
|
@@ -9,6 +9,9 @@ import { registerThemeSync, unregisterThemeSync } from "../../utils/theme-sync";
|
|
|
9
9
|
*/
|
|
10
10
|
export class SekiCollapsibleContent {
|
|
11
11
|
constructor() {
|
|
12
|
+
this.onCollapsibleOpenChange = () => {
|
|
13
|
+
this.syncWithContext();
|
|
14
|
+
};
|
|
12
15
|
this._isOpen = false;
|
|
13
16
|
this._isAnimating = false;
|
|
14
17
|
this._contentHeight = 0;
|
|
@@ -42,9 +45,8 @@ export class SekiCollapsibleContent {
|
|
|
42
45
|
attributeFilter: ['data-state'],
|
|
43
46
|
});
|
|
44
47
|
// Also listen for custom events
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
});
|
|
48
|
+
this.collapsibleEl = parent;
|
|
49
|
+
this.collapsibleEl.addEventListener('sekiOpenChange', this.onCollapsibleOpenChange);
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
syncWithContext() {
|
|
@@ -70,10 +72,12 @@ export class SekiCollapsibleContent {
|
|
|
70
72
|
registerThemeSync(this.el);
|
|
71
73
|
}
|
|
72
74
|
disconnectedCallback() {
|
|
75
|
+
var _a;
|
|
73
76
|
unregisterThemeSync(this.el);
|
|
74
77
|
if (this.observer) {
|
|
75
78
|
this.observer.disconnect();
|
|
76
79
|
}
|
|
80
|
+
(_a = this.collapsibleEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiOpenChange', this.onCollapsibleOpenChange);
|
|
77
81
|
}
|
|
78
82
|
render() {
|
|
79
83
|
var _a, _b;
|
|
@@ -91,11 +95,11 @@ export class SekiCollapsibleContent {
|
|
|
91
95
|
else {
|
|
92
96
|
contentStyle.height = '0';
|
|
93
97
|
}
|
|
94
|
-
return (h(Host, { key: '
|
|
98
|
+
return (h(Host, { key: 'bd513b01e2255e613b63f87ae98dd0f6f4ef8492', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: '787691395dd95623156e80c817198c57b0275e24', ref: (el) => (this.contentRef = el), part: "content", id: contentId, role: "region", "aria-labelledby": triggerId, "aria-hidden": !this._isOpen, class: {
|
|
95
99
|
'collapsible-content': true,
|
|
96
100
|
'collapsible-content--open': this._isOpen,
|
|
97
101
|
'collapsible-content--animating': this._isAnimating,
|
|
98
|
-
}, style: contentStyle }, h("div", { key: '
|
|
102
|
+
}, style: contentStyle }, h("div", { key: '6d40421fe1a88b650f97b781e9e7f84d96c49b08', class: "collapsible-content-inner" }, h("slot", { key: '34c249f5514a6952ae2b8ec9250cdfe81bbbfa0f' })))));
|
|
99
103
|
}
|
|
100
104
|
static get is() { return "seki-collapsible-content"; }
|
|
101
105
|
static get encapsulation() { return "shadow"; }
|
|
@@ -10,6 +10,7 @@ export class SekiComboboxItem {
|
|
|
10
10
|
this.isSelected = false;
|
|
11
11
|
this.isFocused = false;
|
|
12
12
|
this.itemId = `combobox-item-${Math.random().toString(36).substr(2, 9)}`;
|
|
13
|
+
this.hasRegistered = false;
|
|
13
14
|
this.handleClick = () => {
|
|
14
15
|
if (this.disabled)
|
|
15
16
|
return;
|
|
@@ -39,6 +40,11 @@ export class SekiComboboxItem {
|
|
|
39
40
|
}
|
|
40
41
|
connectedCallback() {
|
|
41
42
|
registerThemeSync(this.el);
|
|
43
|
+
// Re-register on reconnect (after a DOM move). componentWillLoad fires only
|
|
44
|
+
// once; parent registration is idempotent so this never duplicates.
|
|
45
|
+
if (this.hasRegistered) {
|
|
46
|
+
this.registerWithContext();
|
|
47
|
+
}
|
|
42
48
|
}
|
|
43
49
|
disconnectedCallback() {
|
|
44
50
|
unregisterThemeSync(this.el);
|
|
@@ -61,6 +67,7 @@ export class SekiComboboxItem {
|
|
|
61
67
|
disabled: this.disabled,
|
|
62
68
|
};
|
|
63
69
|
ctx.registerItem(item);
|
|
70
|
+
this.hasRegistered = true;
|
|
64
71
|
}
|
|
65
72
|
}
|
|
66
73
|
updateState() {
|
|
@@ -71,12 +78,12 @@ export class SekiComboboxItem {
|
|
|
71
78
|
}
|
|
72
79
|
}
|
|
73
80
|
render() {
|
|
74
|
-
return (h(Host, { key: '
|
|
81
|
+
return (h(Host, { key: 'f319a878642420c67560fbf223202d61ad8fcbea' }, h("div", { key: '682f96162227071773c2450f63384d62b7e5c39e', id: this.itemId, class: {
|
|
75
82
|
'combobox-item': true,
|
|
76
83
|
'selected': this.isSelected,
|
|
77
84
|
'focused': this.isFocused,
|
|
78
85
|
'disabled': this.disabled,
|
|
79
|
-
}, role: "option", "aria-selected": this.isSelected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter }, h("slot", { key: '
|
|
86
|
+
}, role: "option", "aria-selected": this.isSelected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter }, h("slot", { key: 'f21ad109b3468aa420e57215ea4e3c3ea7152736' }), this.isSelected && (h("svg", { key: 'd7625ed734c9f90577793b9ed79182332dc7532b', class: "check-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("polyline", { key: '649d4c36fc7f251c77a9a4197a8583f9188a2b64', points: "20 6 9 17 4 12" }))))));
|
|
80
87
|
}
|
|
81
88
|
static get is() { return "seki-combobox-item"; }
|
|
82
89
|
static get encapsulation() { return "shadow"; }
|
|
@@ -10,6 +10,10 @@ import { registerThemeSync, unregisterThemeSync } from "../../utils/theme-sync";
|
|
|
10
10
|
*/
|
|
11
11
|
export class SekiCommandGroup {
|
|
12
12
|
constructor() {
|
|
13
|
+
this.onCommandValueChange = () => {
|
|
14
|
+
// Small delay to allow items to update first
|
|
15
|
+
requestAnimationFrame(() => this.updateVisibility());
|
|
16
|
+
};
|
|
13
17
|
/**
|
|
14
18
|
* Show even when all items are filtered out
|
|
15
19
|
*/
|
|
@@ -35,19 +39,17 @@ export class SekiCommandGroup {
|
|
|
35
39
|
this._hasVisibleItems = items.some((item) => { var _a, _b; return (_b = (_a = item.isVisible) === null || _a === void 0 ? void 0 : _a.call(item)) !== null && _b !== void 0 ? _b : true; });
|
|
36
40
|
}
|
|
37
41
|
componentDidLoad() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// Small delay to allow items to update first
|
|
42
|
-
requestAnimationFrame(() => this.updateVisibility());
|
|
43
|
-
});
|
|
44
|
-
}
|
|
42
|
+
var _a, _b;
|
|
43
|
+
this.commandEl = (_a = this.el.closest('seki-command')) !== null && _a !== void 0 ? _a : undefined;
|
|
44
|
+
(_b = this.commandEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiValueChange', this.onCommandValueChange);
|
|
45
45
|
}
|
|
46
46
|
connectedCallback() {
|
|
47
47
|
registerThemeSync(this.el);
|
|
48
48
|
}
|
|
49
49
|
disconnectedCallback() {
|
|
50
|
+
var _a;
|
|
50
51
|
unregisterThemeSync(this.el);
|
|
52
|
+
(_a = this.commandEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiValueChange', this.onCommandValueChange);
|
|
51
53
|
}
|
|
52
54
|
render() {
|
|
53
55
|
const shouldShow = this.forceMount || this._hasVisibleItems;
|
|
@@ -9,6 +9,18 @@ import { registerThemeSync, unregisterThemeSync } from "../../utils/theme-sync";
|
|
|
9
9
|
*/
|
|
10
10
|
export class SekiContextMenuContent {
|
|
11
11
|
constructor() {
|
|
12
|
+
this.onMenuOpenChange = () => {
|
|
13
|
+
var _a;
|
|
14
|
+
const context = this.getContext();
|
|
15
|
+
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
16
|
+
if (this._isOpen) {
|
|
17
|
+
this._focusedIndex = 0;
|
|
18
|
+
requestAnimationFrame(() => {
|
|
19
|
+
this.updatePosition();
|
|
20
|
+
this.focusItem(0);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
};
|
|
12
24
|
/**
|
|
13
25
|
* Internal open state
|
|
14
26
|
*/
|
|
@@ -38,21 +50,9 @@ export class SekiContextMenuContent {
|
|
|
38
50
|
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
39
51
|
}
|
|
40
52
|
componentDidLoad() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var _a;
|
|
45
|
-
const context = this.getContext();
|
|
46
|
-
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
47
|
-
if (this._isOpen) {
|
|
48
|
-
this._focusedIndex = 0;
|
|
49
|
-
requestAnimationFrame(() => {
|
|
50
|
-
this.updatePosition();
|
|
51
|
-
this.focusItem(0);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
53
|
+
var _a, _b;
|
|
54
|
+
this.menuEl = (_a = this.el.closest('seki-context-menu')) !== null && _a !== void 0 ? _a : undefined;
|
|
55
|
+
(_b = this.menuEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiOpenChange', this.onMenuOpenChange);
|
|
56
56
|
}
|
|
57
57
|
componentDidRender() {
|
|
58
58
|
if (this._isOpen) {
|
|
@@ -132,7 +132,9 @@ export class SekiContextMenuContent {
|
|
|
132
132
|
registerThemeSync(this.el);
|
|
133
133
|
}
|
|
134
134
|
disconnectedCallback() {
|
|
135
|
+
var _a;
|
|
135
136
|
unregisterThemeSync(this.el);
|
|
137
|
+
(_a = this.menuEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiOpenChange', this.onMenuOpenChange);
|
|
136
138
|
}
|
|
137
139
|
render() {
|
|
138
140
|
if (!this._isOpen) {
|
|
@@ -91,7 +91,11 @@ export class SekiContextMenu {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
setupClickOutside() {
|
|
94
|
-
|
|
94
|
+
// Clear any pending timeout/handler first so a rapid open→close→open cannot
|
|
95
|
+
// leave a leaked listener or double-schedule.
|
|
96
|
+
this.removeClickOutside();
|
|
97
|
+
this.clickOutsideTimeout = setTimeout(() => {
|
|
98
|
+
this.clickOutsideTimeout = undefined;
|
|
95
99
|
this.clickOutsideHandler = (e) => {
|
|
96
100
|
const path = e.composedPath();
|
|
97
101
|
if (!path.includes(this.el)) {
|
|
@@ -102,6 +106,11 @@ export class SekiContextMenu {
|
|
|
102
106
|
}, 0);
|
|
103
107
|
}
|
|
104
108
|
removeClickOutside() {
|
|
109
|
+
// Cancel a still-pending registration so it can't fire after close/disconnect.
|
|
110
|
+
if (this.clickOutsideTimeout !== undefined) {
|
|
111
|
+
clearTimeout(this.clickOutsideTimeout);
|
|
112
|
+
this.clickOutsideTimeout = undefined;
|
|
113
|
+
}
|
|
105
114
|
if (this.clickOutsideHandler) {
|
|
106
115
|
document.removeEventListener('click', this.clickOutsideHandler, { capture: true });
|
|
107
116
|
this.clickOutsideHandler = undefined;
|
|
@@ -135,7 +144,7 @@ export class SekiContextMenu {
|
|
|
135
144
|
this.removeClickOutside();
|
|
136
145
|
}
|
|
137
146
|
render() {
|
|
138
|
-
return (h(Host, { key: '
|
|
147
|
+
return (h(Host, { key: '5b5df7991cfde56635d4ace1d7f3728effac91fd', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: '0ab469157d55ed82e05711a8a6f8d972b74bc4a1', part: "context-menu", class: "context-menu" }, h("slot", { key: '1ffbe73e2be43d3f3434e1712c47481c3dc62500' }))));
|
|
139
148
|
}
|
|
140
149
|
static get is() { return "seki-context-menu"; }
|
|
141
150
|
static get encapsulation() { return "shadow"; }
|
|
@@ -771,9 +771,12 @@
|
|
|
771
771
|
--seki-table-row-bg: var(--seki-background);
|
|
772
772
|
--seki-table-row-bg-hover: var(--seki-muted);
|
|
773
773
|
--seki-table-row-bg-selected: hsl(210, 100%, 96%);
|
|
774
|
+
--seki-table-row-bg-selected-hover: hsl(210, 100%, 94%);
|
|
774
775
|
--seki-table-row-height: 48px;
|
|
775
776
|
--seki-table-cell-padding: 0 12px;
|
|
776
777
|
--seki-table-pagination-height: 52px;
|
|
778
|
+
/* Subtle focus ring shadow for the search input */
|
|
779
|
+
--seki-table-focus-ring: hsl(0, 0%, 3.9%, 0.1);
|
|
777
780
|
}
|
|
778
781
|
|
|
779
782
|
/* Screen reader only */
|
|
@@ -835,7 +838,7 @@
|
|
|
835
838
|
|
|
836
839
|
.data-table__search-input:focus {
|
|
837
840
|
border-color: var(--seki-ring);
|
|
838
|
-
box-shadow: 0 0 0 2px hsl(0, 0%, 3.9%, 0.1);
|
|
841
|
+
box-shadow: 0 0 0 2px var(--seki-table-focus-ring, hsl(0, 0%, 3.9%, 0.1));
|
|
839
842
|
}
|
|
840
843
|
|
|
841
844
|
.data-table__search-input::placeholder {
|
|
@@ -1252,10 +1255,7 @@
|
|
|
1252
1255
|
|
|
1253
1256
|
:host([data-theme='dark']) {
|
|
1254
1257
|
--seki-table-row-bg-selected: hsl(210, 50%, 20%);
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
:host([data-theme='dark']) .data-table__row--selected:hover {
|
|
1258
|
-
background: hsl(210, 50%, 25%);
|
|
1258
|
+
--seki-table-row-bg-selected-hover: hsl(210, 50%, 25%);
|
|
1259
1259
|
}
|
|
1260
1260
|
|
|
1261
1261
|
:host([data-theme='dark']) .data-table__th--sortable:hover,
|
|
@@ -210,6 +210,9 @@ export class SekiDataTable {
|
|
|
210
210
|
disconnectedCallback() {
|
|
211
211
|
unregisterThemeSync(this.el);
|
|
212
212
|
this.cleanupVirtualScroll();
|
|
213
|
+
// If the table is removed mid column-resize, tear down the document-level
|
|
214
|
+
// drag listeners so they don't leak and keep firing against a dead instance.
|
|
215
|
+
this.stopResize();
|
|
213
216
|
}
|
|
214
217
|
// =========================================================================
|
|
215
218
|
// Watchers
|
|
@@ -422,10 +425,10 @@ export class SekiDataTable {
|
|
|
422
425
|
const visibleColumns = this.getVisibleColumns();
|
|
423
426
|
const totalPages = this.getTotalPages();
|
|
424
427
|
const isLoading = this.state.loading || this.loading;
|
|
425
|
-
return (h(Host, { key: '
|
|
428
|
+
return (h(Host, { key: '28ceb869aa750654845f1ee4a8b4b8098104e6cf' }, h("div", { key: '9240e18c99fb45ce16c056081151b2f8bdc38132', class: "data-table" }, (this.searchable || this.columnPicker) && (h("div", { key: '31e765bf85d64761738c7aaea3c849050665453d', class: "data-table__toolbar" }, this.searchable && (h("div", { key: 'b708cb0661af64ced765e486a11fb64bd12c8696', class: "data-table__search" }, h("input", { key: 'd136d0e4974a28ac4171ef692fcd189570849937', type: "text", class: "data-table__search-input", placeholder: this.searchPlaceholder, value: this.searchInputValue, onInput: this.handleSearchInput }), this.searchInputValue && (h("button", { key: '7abf0715c25a2810122234bda065f0d52e71a314', type: "button", class: "data-table__search-clear", onClick: this.handleClearSearch, "aria-label": "Clear search" }, "\u00D7")))), h("div", { key: 'f12305514367874f1abc14124498fefe47faaf56', class: "data-table__toolbar-spacer" }), this.columnPicker && (h("button", { key: '90d9826e8bbe87d75c0bdb5a1125852249119eee', type: "button", class: "data-table__column-picker-btn" }, "Columns")))), h("div", { key: 'c563a0df32be909940680f39529117f9a60add23', class: {
|
|
426
429
|
'data-table__container': true,
|
|
427
430
|
'data-table__container--virtual': this.virtualScroll,
|
|
428
|
-
}, ref: el => (this.scrollContainerRef = el), onScroll: this.handleScroll }, h("table", { key: '
|
|
431
|
+
}, ref: el => (this.scrollContainerRef = el), onScroll: this.handleScroll }, h("table", { key: '9f12f68eeaf360a362f6b32a10909fc22e8454aa', class: "data-table__table", role: "grid" }, h("thead", { key: '05394e9be4a94bf648be63ab15d8cd8b60f92bae', class: "data-table__head" }, h("tr", { key: '91e475902cf1d0f84ccdb07e73efea557a505540', class: "data-table__header-row", role: "row" }, this.selectable && (h("th", { key: 'bd98052d239f76b81ec73f46b1c7727a4d56d11b', class: "data-table__th data-table__th--checkbox", role: "columnheader" }, h("input", { key: '081bb7a3b26ea6755eba7b05d8664f7cc3f39701', type: "checkbox", class: "data-table__checkbox", checked: this.isAllSelected(), indeterminate: this.isSomeSelected(), onChange: (e) => this.handleSelectAll(e.target.checked), "aria-label": "Select all rows" }))), this.expandable && (h("th", { key: '6be313fbacc1620a1803bc651655fc957d126a4a', class: "data-table__th data-table__th--expand", role: "columnheader" }, h("span", { key: 'a929282be3cf11031364886bde2db35538c863a6', class: "sr-only" }, "Expand"))), visibleColumns.map(column => {
|
|
429
432
|
var _a, _b, _c;
|
|
430
433
|
return (h("th", { key: column.field, class: {
|
|
431
434
|
'data-table__th': true,
|
|
@@ -441,7 +444,7 @@ export class SekiDataTable {
|
|
|
441
444
|
? '↑'
|
|
442
445
|
: '↓'
|
|
443
446
|
: '↕'))), column.resizable && (h("div", { class: "data-table__resize-handle", onMouseDown: (e) => this.startResize(e, column) }))));
|
|
444
|
-
}))), h("tbody", { key: '
|
|
447
|
+
}))), h("tbody", { key: 'ea90c0cffef68f675dbcdb784f6af4c4736b481d', class: "data-table__body", style: this.virtualScroll
|
|
445
448
|
? {
|
|
446
449
|
height: `${this.virtualScrollState.totalHeight}px`,
|
|
447
450
|
position: 'relative',
|
|
@@ -484,12 +487,12 @@ export class SekiDataTable {
|
|
|
484
487
|
/* Expanded content row */
|
|
485
488
|
isExpanded && this.renderExpandedRow && (h("tr", { key: `${rowKey}-expanded`, class: "data-table__row data-table__row--expanded-content" }, h("td", { class: "data-table__td data-table__td--expanded-content", colSpan: visibleColumns.length + (this.selectable ? 1 : 0) + (this.expandable ? 1 : 0) }, h("div", { class: "data-table__expanded-content", innerHTML: this.renderExpandedRow(row) })))),
|
|
486
489
|
];
|
|
487
|
-
})))), isLoading && this.state.rows.length > 0 && (h("div", { key: '
|
|
490
|
+
})))), isLoading && this.state.rows.length > 0 && (h("div", { key: '3048704d91f332dded81f17b86742bcc21724707', class: "data-table__loading-overlay" }, h("div", { key: '01b2096307846f9b789cbde6c8fcc0c249dd81d1', class: "data-table__loading" }, "Loading...")))), h("div", { key: 'd230704865900c12987432ffca17a54f7d8628fd', class: "data-table__pagination" }, h("div", { key: 'f88338d4c773e19d46ee577b22e6721a439a3806', class: "data-table__pagination-info" }, this.state.totalRows > 0
|
|
488
491
|
? `${this.state.page * this.state.pageSize + 1}-${Math.min((this.state.page + 1) * this.state.pageSize, this.state.totalRows)} of ${this.state.totalRows}`
|
|
489
|
-
: '0 results'), h("div", { key: '
|
|
492
|
+
: '0 results'), h("div", { key: 'd9fa5a331c4f874aace2f7858c8ec1936fd74262', class: "data-table__pagination-controls" }, h("select", { key: 'b447f82c03c920f429b3d1ca0a9e0a5484baaa6a', class: "data-table__page-size", onChange: (e) => {
|
|
490
493
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
491
494
|
this.handlePageSizeChange(Number(e.target.value));
|
|
492
|
-
} }, this.parsePageSizeOptions().map(size => (h("option", { key: size, value: size, selected: size === this.state.pageSize }, size, " / page")))), h("button", { key: '
|
|
495
|
+
} }, this.parsePageSizeOptions().map(size => (h("option", { key: size, value: size, selected: size === this.state.pageSize }, size, " / page")))), h("button", { key: '8079ffcc411b0925aa3cf1f69dbebe545acfbf62', type: "button", class: "data-table__page-btn", disabled: this.state.page === 0, onClick: () => this.handlePageChange(0), "aria-label": "First page" }, "\u00AB\u00AB"), h("button", { key: '8b29d574be3eac921126d3e1dd7a538f0e8eb3b1', type: "button", class: "data-table__page-btn", disabled: this.state.page === 0, onClick: () => this.handlePageChange(this.state.page - 1), "aria-label": "Previous page" }, "\u00AB"), h("span", { key: '3ae1c618a390d8ac90b59a2bfe942ec4f5da5673', class: "data-table__page-indicator" }, "Page ", this.state.page + 1, " of ", totalPages || 1), h("button", { key: 'f2ee6a74587fe35bc8e0d58da59ae4672b0e605f', type: "button", class: "data-table__page-btn", disabled: this.state.page >= totalPages - 1, onClick: () => this.handlePageChange(this.state.page + 1), "aria-label": "Next page" }, "\u00BB"), h("button", { key: '7671cdf0a05cc1fb492f05ddef0b5c94b34285d5', type: "button", class: "data-table__page-btn", disabled: this.state.page >= totalPages - 1, onClick: () => this.handlePageChange(totalPages - 1), "aria-label": "Last page" }, "\u00BB\u00BB"))))));
|
|
493
496
|
}
|
|
494
497
|
static get is() { return "seki-data-table"; }
|
|
495
498
|
static get encapsulation() { return "shadow"; }
|
|
@@ -864,7 +867,7 @@ export class SekiDataTable {
|
|
|
864
867
|
static get events() {
|
|
865
868
|
return [{
|
|
866
869
|
"method": "selectionChange",
|
|
867
|
-
"name": "
|
|
870
|
+
"name": "sekiSelectionChange",
|
|
868
871
|
"bubbles": true,
|
|
869
872
|
"cancelable": true,
|
|
870
873
|
"composed": true,
|
|
@@ -885,7 +888,7 @@ export class SekiDataTable {
|
|
|
885
888
|
}
|
|
886
889
|
}, {
|
|
887
890
|
"method": "rowExpand",
|
|
888
|
-
"name": "
|
|
891
|
+
"name": "sekiRowExpand",
|
|
889
892
|
"bubbles": true,
|
|
890
893
|
"cancelable": true,
|
|
891
894
|
"composed": true,
|
|
@@ -906,7 +909,7 @@ export class SekiDataTable {
|
|
|
906
909
|
}
|
|
907
910
|
}, {
|
|
908
911
|
"method": "rowClick",
|
|
909
|
-
"name": "
|
|
912
|
+
"name": "sekiRowClick",
|
|
910
913
|
"bubbles": true,
|
|
911
914
|
"cancelable": true,
|
|
912
915
|
"composed": true,
|
|
@@ -927,7 +930,7 @@ export class SekiDataTable {
|
|
|
927
930
|
}
|
|
928
931
|
}, {
|
|
929
932
|
"method": "columnResize",
|
|
930
|
-
"name": "
|
|
933
|
+
"name": "sekiColumnResize",
|
|
931
934
|
"bubbles": true,
|
|
932
935
|
"cancelable": true,
|
|
933
936
|
"composed": true,
|
|
@@ -948,7 +951,7 @@ export class SekiDataTable {
|
|
|
948
951
|
}
|
|
949
952
|
}, {
|
|
950
953
|
"method": "columnReorder",
|
|
951
|
-
"name": "
|
|
954
|
+
"name": "sekiColumnReorder",
|
|
952
955
|
"bubbles": true,
|
|
953
956
|
"cancelable": true,
|
|
954
957
|
"composed": true,
|
|
@@ -969,7 +972,7 @@ export class SekiDataTable {
|
|
|
969
972
|
}
|
|
970
973
|
}, {
|
|
971
974
|
"method": "columnsChange",
|
|
972
|
-
"name": "
|
|
975
|
+
"name": "sekiColumnsChange",
|
|
973
976
|
"bubbles": true,
|
|
974
977
|
"cancelable": true,
|
|
975
978
|
"composed": true,
|
|
@@ -990,7 +993,7 @@ export class SekiDataTable {
|
|
|
990
993
|
}
|
|
991
994
|
}, {
|
|
992
995
|
"method": "sortChange",
|
|
993
|
-
"name": "
|
|
996
|
+
"name": "sekiSortChange",
|
|
994
997
|
"bubbles": true,
|
|
995
998
|
"cancelable": true,
|
|
996
999
|
"composed": true,
|
|
@@ -1011,7 +1014,7 @@ export class SekiDataTable {
|
|
|
1011
1014
|
}
|
|
1012
1015
|
}, {
|
|
1013
1016
|
"method": "filterChange",
|
|
1014
|
-
"name": "
|
|
1017
|
+
"name": "sekiFilterChange",
|
|
1015
1018
|
"bubbles": true,
|
|
1016
1019
|
"cancelable": true,
|
|
1017
1020
|
"composed": true,
|
|
@@ -1032,7 +1035,7 @@ export class SekiDataTable {
|
|
|
1032
1035
|
}
|
|
1033
1036
|
}, {
|
|
1034
1037
|
"method": "pageChange",
|
|
1035
|
-
"name": "
|
|
1038
|
+
"name": "sekiPageChange",
|
|
1036
1039
|
"bubbles": true,
|
|
1037
1040
|
"cancelable": true,
|
|
1038
1041
|
"composed": true,
|
|
@@ -10,6 +10,23 @@ import { registerThemeSync, unregisterThemeSync } from "../../utils/theme-sync";
|
|
|
10
10
|
*/
|
|
11
11
|
export class SekiDialogContent {
|
|
12
12
|
constructor() {
|
|
13
|
+
this.onDialogOpenChange = () => {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const context = this.getContext();
|
|
16
|
+
const wasOpen = this._isOpen;
|
|
17
|
+
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
18
|
+
if (!wasOpen && this._isOpen) {
|
|
19
|
+
this.previousActiveElement = document.activeElement;
|
|
20
|
+
requestAnimationFrame(() => {
|
|
21
|
+
if (this.contentRef) {
|
|
22
|
+
focusFirst(this.contentRef);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else if (wasOpen && !this._isOpen) {
|
|
27
|
+
(_b = this.previousActiveElement) === null || _b === void 0 ? void 0 : _b.focus();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
13
30
|
/**
|
|
14
31
|
* Whether pressing Escape closes the dialog
|
|
15
32
|
*/
|
|
@@ -47,27 +64,10 @@ export class SekiDialogContent {
|
|
|
47
64
|
}
|
|
48
65
|
}
|
|
49
66
|
componentDidLoad() {
|
|
67
|
+
var _a, _b;
|
|
50
68
|
// Listen for context changes
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
dialog.addEventListener('sekiOpenChange', () => {
|
|
54
|
-
var _a, _b;
|
|
55
|
-
const context = this.getContext();
|
|
56
|
-
const wasOpen = this._isOpen;
|
|
57
|
-
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
58
|
-
if (!wasOpen && this._isOpen) {
|
|
59
|
-
this.previousActiveElement = document.activeElement;
|
|
60
|
-
requestAnimationFrame(() => {
|
|
61
|
-
if (this.contentRef) {
|
|
62
|
-
focusFirst(this.contentRef);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
else if (wasOpen && !this._isOpen) {
|
|
67
|
-
(_b = this.previousActiveElement) === null || _b === void 0 ? void 0 : _b.focus();
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
69
|
+
this.dialogEl = (_a = this.el.closest('seki-dialog')) !== null && _a !== void 0 ? _a : undefined;
|
|
70
|
+
(_b = this.dialogEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiOpenChange', this.onDialogOpenChange);
|
|
71
71
|
}
|
|
72
72
|
handleKeyDown(event) {
|
|
73
73
|
if (!this._isOpen)
|
|
@@ -89,7 +89,9 @@ export class SekiDialogContent {
|
|
|
89
89
|
registerThemeSync(this.el);
|
|
90
90
|
}
|
|
91
91
|
disconnectedCallback() {
|
|
92
|
+
var _a;
|
|
92
93
|
unregisterThemeSync(this.el);
|
|
94
|
+
(_a = this.dialogEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiOpenChange', this.onDialogOpenChange);
|
|
93
95
|
}
|
|
94
96
|
render() {
|
|
95
97
|
const context = this.getContext();
|