@sekiui/elements 0.1.3 → 0.1.4
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/index.js +1 -1
- package/dist/{components/p-Bml9QXVd.js → cdn/p--1ROPZet.js} +22 -12
- package/dist/cdn/p-B4SOpX_A.js +155 -0
- package/dist/cdn/{p-B7jKUvZz.js → p-C3WFySZp.js} +29 -3
- package/dist/cdn/p-COBvV3Rw.js +201 -0
- package/dist/cdn/seki-alert-dialog-content.js +10 -24
- package/dist/cdn/seki-alert-dialog.js +8 -10
- package/dist/cdn/seki-carousel-dots.js +1 -1
- package/dist/cdn/seki-carousel-next.js +1 -1
- package/dist/cdn/seki-carousel-previous.js +1 -1
- package/dist/cdn/seki-collapsible-content.js +23 -40
- package/dist/cdn/seki-collapsible-trigger.js +21 -5
- package/dist/cdn/seki-collapsible.js +18 -11
- package/dist/cdn/seki-combobox-content.js +15 -22
- package/dist/cdn/seki-combobox-input.js +1 -1
- package/dist/cdn/seki-combobox-item.js +1 -1
- package/dist/cdn/seki-combobox.js +1 -1
- package/dist/cdn/seki-command-empty.js +6 -22
- package/dist/cdn/seki-command-group.js +11 -13
- package/dist/cdn/seki-command-input.js +23 -8
- package/dist/cdn/seki-command-item.js +17 -0
- package/dist/cdn/seki-command.js +58 -57
- package/dist/cdn/seki-data-table.js +13 -6
- package/dist/cdn/seki-dialog-content.js +10 -25
- package/dist/cdn/seki-dialog-description.js +13 -7
- package/dist/cdn/seki-dialog-overlay.js +6 -15
- package/dist/cdn/seki-dialog-title.js +13 -7
- package/dist/cdn/seki-dialog.js +1 -1
- package/dist/cdn/seki-drawer-content.js +21 -24
- package/dist/cdn/seki-drawer.js +8 -7
- package/dist/cdn/seki-field-label.js +28 -2
- package/dist/cdn/seki-label.js +1 -1
- package/dist/cdn/seki-navigation-menu-content.js +1 -1
- package/dist/cdn/seki-navigation-menu-item.js +1 -1
- package/dist/cdn/seki-navigation-menu-trigger.js +1 -1
- package/dist/cdn/seki-navigation-menu.js +1 -1
- package/dist/cdn/seki-popover-content.js +14 -20
- package/dist/cdn/seki-popover.js +27 -17
- package/dist/cdn/seki-resizable-handle.js +1 -1
- package/dist/cdn/seki-resizable-panel-group.js +1 -1
- package/dist/cdn/seki-resizable-panel.js +1 -1
- package/dist/cdn/seki-select-content.js +14 -17
- package/dist/cdn/seki-select-option.js +23 -25
- package/dist/cdn/seki-select-trigger.js +32 -38
- package/dist/cdn/seki-select.js +30 -7
- package/dist/cdn/seki-sheet-content.js +24 -24
- package/dist/cdn/seki-sheet.js +8 -7
- package/dist/cdn/seki-toggle-group.js +1 -1
- package/dist/cdn/seki-toggle.js +1 -1
- package/dist/cjs/context-bridge-t3FBhOrW.js +159 -0
- package/dist/cjs/index.cjs.js +1 -0
- package/dist/cjs/label-association-sgmb4sai.js +203 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/seki-alert-dialog-content.cjs.entry.js +10 -24
- package/dist/cjs/seki-alert-dialog.cjs.entry.js +7 -9
- package/dist/cjs/seki-carousel-dots.cjs.entry.js +1 -1
- package/dist/cjs/seki-carousel-next.cjs.entry.js +1 -1
- package/dist/cjs/seki-carousel-previous.cjs.entry.js +1 -1
- package/dist/cjs/seki-collapsible-content.cjs.entry.js +20 -39
- package/dist/cjs/seki-collapsible-trigger.cjs.entry.js +19 -4
- package/dist/cjs/seki-collapsible.cjs.entry.js +16 -10
- package/dist/cjs/seki-combobox-content.cjs.entry.js +15 -22
- package/dist/cjs/seki-combobox-input.cjs.entry.js +1 -1
- package/dist/cjs/seki-combobox-item.cjs.entry.js +1 -1
- package/dist/cjs/seki-combobox.cjs.entry.js +1 -1
- package/dist/cjs/seki-command-empty.cjs.entry.js +6 -22
- package/dist/cjs/seki-command-group.cjs.entry.js +11 -13
- package/dist/cjs/seki-command-input.cjs.entry.js +22 -8
- package/dist/cjs/seki-command-item.cjs.entry.js +17 -0
- package/dist/cjs/seki-command.cjs.entry.js +56 -56
- package/dist/cjs/seki-data-table.cjs.entry.js +10 -6
- package/dist/cjs/seki-dialog-content.cjs.entry.js +10 -25
- package/dist/cjs/seki-dialog-description.cjs.entry.js +10 -6
- package/dist/cjs/seki-dialog-overlay.cjs.entry.js +6 -15
- package/dist/cjs/seki-dialog-title.cjs.entry.js +10 -6
- package/dist/cjs/seki-dialog.cjs.entry.js +21 -12
- package/dist/cjs/seki-drawer-content.cjs.entry.js +20 -24
- package/dist/cjs/seki-drawer.cjs.entry.js +8 -7
- package/dist/cjs/seki-field-label.cjs.entry.js +26 -2
- package/dist/cjs/seki-label.cjs.entry.js +27 -3
- package/dist/cjs/seki-navigation-menu-content.cjs.entry.js +1 -1
- package/dist/cjs/seki-navigation-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/seki-navigation-menu-trigger.cjs.entry.js +1 -1
- package/dist/cjs/seki-navigation-menu.cjs.entry.js +1 -1
- package/dist/cjs/seki-popover-content.cjs.entry.js +14 -20
- package/dist/cjs/seki-popover.cjs.entry.js +24 -16
- package/dist/cjs/seki-resizable-handle.cjs.entry.js +1 -1
- package/dist/cjs/seki-resizable-panel-group.cjs.entry.js +1 -1
- package/dist/cjs/seki-resizable-panel.cjs.entry.js +1 -1
- package/dist/cjs/seki-select-content.cjs.entry.js +14 -17
- package/dist/cjs/seki-select-option.cjs.entry.js +23 -25
- package/dist/cjs/seki-select-trigger.cjs.entry.js +32 -38
- package/dist/cjs/seki-select.cjs.entry.js +29 -7
- package/dist/cjs/seki-sheet-content.cjs.entry.js +22 -24
- package/dist/cjs/seki-sheet.cjs.entry.js +8 -7
- package/dist/cjs/seki-toggle-group.cjs.entry.js +1 -1
- package/dist/cjs/seki-toggle.cjs.entry.js +1 -1
- package/dist/cjs/sekiui.cjs.js +1 -1
- package/dist/collection/components/alert-dialog/seki-alert-dialog-content.js +10 -24
- package/dist/collection/components/alert-dialog/seki-alert-dialog.js +21 -9
- package/dist/collection/components/collapsible/seki-collapsible-content.js +23 -40
- package/dist/collection/components/collapsible/seki-collapsible-trigger.js +24 -4
- package/dist/collection/components/collapsible/seki-collapsible.js +31 -9
- package/dist/collection/components/combobox-content/seki-combobox-content.js +15 -22
- package/dist/collection/components/command/seki-command-empty.js +6 -22
- package/dist/collection/components/command/seki-command-group.js +11 -13
- package/dist/collection/components/command/seki-command-input.js +27 -8
- package/dist/collection/components/command/seki-command-item.js +17 -0
- package/dist/collection/components/command/seki-command.js +71 -55
- package/dist/collection/components/data-table/seki-data-table.js +64 -6
- package/dist/collection/components/dialog/seki-dialog-content.js +10 -25
- package/dist/collection/components/dialog/seki-dialog-description.js +17 -6
- package/dist/collection/components/dialog/seki-dialog-overlay.js +6 -15
- package/dist/collection/components/dialog/seki-dialog-title.js +17 -6
- package/dist/collection/components/dialog/seki-dialog.js +37 -12
- package/dist/collection/components/drawer/seki-drawer-content.js +22 -24
- package/dist/collection/components/drawer/seki-drawer.js +22 -7
- package/dist/collection/components/field-label/seki-field-label.js +39 -3
- package/dist/collection/components/label/seki-label.js +40 -4
- package/dist/collection/components/popover/seki-popover-content.js +14 -20
- package/dist/collection/components/popover/seki-popover.js +41 -15
- package/dist/collection/components/select/seki-select.js +30 -6
- package/dist/collection/components/select-content/seki-select-content.js +14 -17
- package/dist/collection/components/select-option/seki-select-option.js +23 -25
- package/dist/collection/components/select-trigger/seki-select-trigger.js +32 -38
- package/dist/collection/components/sheet/seki-sheet-content.js +25 -24
- package/dist/collection/components/sheet/seki-sheet.js +22 -7
- package/dist/collection/utils/context-bridge.js +105 -4
- package/dist/collection/utils/label-association.js +199 -0
- package/dist/components/index.js +1 -1
- package/dist/{cdn/p-Bml9QXVd.js → components/p--1ROPZet.js} +22 -12
- package/dist/components/p-B4SOpX_A.js +155 -0
- package/dist/components/{p-B7jKUvZz.js → p-C3WFySZp.js} +29 -3
- package/dist/components/p-COBvV3Rw.js +201 -0
- package/dist/components/seki-alert-dialog-content.js +10 -24
- package/dist/components/seki-alert-dialog.js +8 -10
- package/dist/components/seki-carousel-dots.js +1 -1
- package/dist/components/seki-carousel-next.js +1 -1
- package/dist/components/seki-carousel-previous.js +1 -1
- package/dist/components/seki-collapsible-content.js +23 -40
- package/dist/components/seki-collapsible-trigger.js +21 -5
- package/dist/components/seki-collapsible.js +18 -11
- package/dist/components/seki-combobox-content.js +15 -22
- package/dist/components/seki-combobox-input.js +1 -1
- package/dist/components/seki-combobox-item.js +1 -1
- package/dist/components/seki-combobox.js +1 -1
- package/dist/components/seki-command-empty.js +6 -22
- package/dist/components/seki-command-group.js +11 -13
- package/dist/components/seki-command-input.js +23 -8
- package/dist/components/seki-command-item.js +17 -0
- package/dist/components/seki-command.js +58 -57
- package/dist/components/seki-data-table.js +13 -6
- package/dist/components/seki-dialog-content.js +10 -25
- package/dist/components/seki-dialog-description.js +13 -7
- package/dist/components/seki-dialog-overlay.js +6 -15
- package/dist/components/seki-dialog-title.js +13 -7
- package/dist/components/seki-dialog.js +1 -1
- package/dist/components/seki-drawer-content.js +21 -24
- package/dist/components/seki-drawer.js +8 -7
- package/dist/components/seki-field-label.js +28 -2
- package/dist/components/seki-label.js +1 -1
- package/dist/components/seki-navigation-menu-content.js +1 -1
- package/dist/components/seki-navigation-menu-item.js +1 -1
- package/dist/components/seki-navigation-menu-trigger.js +1 -1
- package/dist/components/seki-navigation-menu.js +1 -1
- package/dist/components/seki-popover-content.js +14 -20
- package/dist/components/seki-popover.js +27 -17
- package/dist/components/seki-resizable-handle.js +1 -1
- package/dist/components/seki-resizable-panel-group.js +1 -1
- package/dist/components/seki-resizable-panel.js +1 -1
- package/dist/components/seki-select-content.js +14 -17
- package/dist/components/seki-select-option.js +23 -25
- package/dist/components/seki-select-trigger.js +32 -38
- package/dist/components/seki-select.js +30 -7
- package/dist/components/seki-sheet-content.js +24 -24
- package/dist/components/seki-sheet.js +8 -7
- package/dist/components/seki-toggle-group.js +1 -1
- package/dist/components/seki-toggle.js +1 -1
- package/dist/esm/context-bridge-B4SOpX_A.js +155 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/label-association-COBvV3Rw.js +201 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/seki-alert-dialog-content.entry.js +10 -24
- package/dist/esm/seki-alert-dialog.entry.js +7 -9
- package/dist/esm/seki-carousel-dots.entry.js +1 -1
- package/dist/esm/seki-carousel-next.entry.js +1 -1
- package/dist/esm/seki-carousel-previous.entry.js +1 -1
- package/dist/esm/seki-collapsible-content.entry.js +20 -39
- package/dist/esm/seki-collapsible-trigger.entry.js +19 -4
- package/dist/esm/seki-collapsible.entry.js +16 -10
- package/dist/esm/seki-combobox-content.entry.js +15 -22
- package/dist/esm/seki-combobox-input.entry.js +1 -1
- package/dist/esm/seki-combobox-item.entry.js +1 -1
- package/dist/esm/seki-combobox.entry.js +1 -1
- package/dist/esm/seki-command-empty.entry.js +6 -22
- package/dist/esm/seki-command-group.entry.js +11 -13
- package/dist/esm/seki-command-input.entry.js +22 -8
- package/dist/esm/seki-command-item.entry.js +17 -0
- package/dist/esm/seki-command.entry.js +56 -56
- package/dist/esm/seki-data-table.entry.js +10 -6
- package/dist/esm/seki-dialog-content.entry.js +10 -25
- package/dist/esm/seki-dialog-description.entry.js +10 -6
- package/dist/esm/seki-dialog-overlay.entry.js +6 -15
- package/dist/esm/seki-dialog-title.entry.js +10 -6
- package/dist/esm/seki-dialog.entry.js +21 -12
- package/dist/esm/seki-drawer-content.entry.js +20 -24
- package/dist/esm/seki-drawer.entry.js +8 -7
- package/dist/esm/seki-field-label.entry.js +26 -2
- package/dist/esm/seki-label.entry.js +27 -3
- package/dist/esm/seki-navigation-menu-content.entry.js +1 -1
- package/dist/esm/seki-navigation-menu-item.entry.js +1 -1
- package/dist/esm/seki-navigation-menu-trigger.entry.js +1 -1
- package/dist/esm/seki-navigation-menu.entry.js +1 -1
- package/dist/esm/seki-popover-content.entry.js +14 -20
- package/dist/esm/seki-popover.entry.js +24 -16
- package/dist/esm/seki-resizable-handle.entry.js +1 -1
- package/dist/esm/seki-resizable-panel-group.entry.js +1 -1
- package/dist/esm/seki-resizable-panel.entry.js +1 -1
- package/dist/esm/seki-select-content.entry.js +14 -17
- package/dist/esm/seki-select-option.entry.js +23 -25
- package/dist/esm/seki-select-trigger.entry.js +32 -38
- package/dist/esm/seki-select.entry.js +29 -7
- package/dist/esm/seki-sheet-content.entry.js +22 -24
- package/dist/esm/seki-sheet.entry.js +8 -7
- package/dist/esm/seki-toggle-group.entry.js +1 -1
- package/dist/esm/seki-toggle.entry.js +1 -1
- package/dist/esm/sekiui.js +1 -1
- package/dist/sekiui/index.esm.js +1 -1
- package/dist/sekiui/{p-2459de33.entry.js → p-09131578.entry.js} +1 -1
- package/dist/sekiui/p-14ca64d7.entry.js +1 -0
- package/dist/sekiui/p-1564ab34.entry.js +1 -0
- package/dist/sekiui/p-1b7681eb.entry.js +1 -0
- package/dist/sekiui/{p-573fcf7e.entry.js → p-20e5e17a.entry.js} +1 -1
- package/dist/sekiui/p-2bd3c250.entry.js +1 -0
- package/dist/sekiui/p-2d50d0c2.entry.js +1 -0
- package/dist/sekiui/p-31db5c3f.entry.js +1 -0
- package/dist/sekiui/p-33dd3d17.entry.js +1 -0
- package/dist/sekiui/p-360d7dea.entry.js +1 -0
- package/dist/sekiui/p-3c6d6845.entry.js +1 -0
- package/dist/sekiui/{p-731740ec.entry.js → p-3cd3f36e.entry.js} +1 -1
- package/dist/sekiui/{p-1d173026.entry.js → p-3e456430.entry.js} +1 -1
- package/dist/sekiui/{p-e287c9b0.entry.js → p-4191a2cf.entry.js} +1 -1
- package/dist/sekiui/{p-b75f801b.entry.js → p-48fe9b46.entry.js} +1 -1
- package/dist/sekiui/{p-5a60c7f5.entry.js → p-5132d055.entry.js} +1 -1
- package/dist/sekiui/p-5700ac69.entry.js +1 -0
- package/dist/sekiui/{p-d2592287.entry.js → p-57e7170b.entry.js} +1 -1
- package/dist/sekiui/{p-edac50c7.entry.js → p-5dbd46b4.entry.js} +1 -1
- package/dist/sekiui/p-6923d926.entry.js +1 -0
- package/dist/sekiui/{p-22daeb37.entry.js → p-6c2e4ae8.entry.js} +1 -1
- package/dist/sekiui/p-6edbced1.entry.js +1 -0
- package/dist/sekiui/p-7dac94b2.entry.js +1 -0
- package/dist/sekiui/p-80dbf1f5.entry.js +1 -0
- package/dist/sekiui/p-817af69a.entry.js +1 -0
- package/dist/sekiui/{p-ddcdc3da.entry.js → p-8b3bc7c2.entry.js} +1 -1
- package/dist/sekiui/p-8fb55d56.entry.js +1 -0
- package/dist/sekiui/{p-a575f386.entry.js → p-92b800a2.entry.js} +1 -1
- package/dist/sekiui/{p-63e922dc.entry.js → p-938ce866.entry.js} +1 -1
- package/dist/sekiui/{p-d0533172.entry.js → p-95501e60.entry.js} +1 -1
- package/dist/sekiui/p-979708a0.entry.js +1 -0
- package/dist/sekiui/{p-faf09566.entry.js → p-9c921a6c.entry.js} +1 -1
- package/dist/sekiui/p-B4SOpX_A.js +1 -0
- package/dist/sekiui/p-COBvV3Rw.js +1 -0
- package/dist/sekiui/{p-fc6b3691.entry.js → p-a4fc4f1a.entry.js} +1 -1
- package/dist/sekiui/{p-d7bd5d5e.entry.js → p-b94e0f1b.entry.js} +1 -1
- package/dist/sekiui/{p-1c5fe316.entry.js → p-c6efedab.entry.js} +1 -1
- package/dist/sekiui/p-c8da7923.entry.js +1 -0
- package/dist/sekiui/p-c97fbaf2.entry.js +1 -0
- package/dist/sekiui/p-cb28d764.entry.js +1 -0
- package/dist/sekiui/{p-5f52b52d.entry.js → p-cc2ac0f0.entry.js} +1 -1
- package/dist/sekiui/{p-acebf429.entry.js → p-d32614a4.entry.js} +1 -1
- package/dist/sekiui/p-d3449109.entry.js +1 -0
- package/dist/sekiui/p-ddbf98ca.entry.js +1 -0
- package/dist/sekiui/p-eb03eb37.entry.js +1 -0
- package/dist/sekiui/{p-c57bbe35.entry.js → p-fc9e8583.entry.js} +1 -1
- package/dist/sekiui/sekiui.esm.js +1 -1
- package/dist/types/components/alert-dialog/seki-alert-dialog-content.d.ts +6 -3
- package/dist/types/components/alert-dialog/seki-alert-dialog.d.ts +5 -2
- package/dist/types/components/collapsible/seki-collapsible-content.d.ts +4 -5
- package/dist/types/components/collapsible/seki-collapsible-trigger.d.ts +11 -0
- package/dist/types/components/collapsible/seki-collapsible.d.ts +6 -2
- package/dist/types/components/combobox-content/seki-combobox-content.d.ts +3 -4
- package/dist/types/components/command/seki-command-empty.d.ts +2 -4
- package/dist/types/components/command/seki-command-group.d.ts +2 -3
- package/dist/types/components/command/seki-command-input.d.ts +5 -1
- package/dist/types/components/command/seki-command-item.d.ts +3 -0
- package/dist/types/components/command/seki-command.d.ts +19 -1
- package/dist/types/components/command/types.d.ts +9 -1
- package/dist/types/components/data-table/seki-data-table.d.ts +7 -2
- package/dist/types/components/dialog/seki-dialog-content.d.ts +6 -3
- package/dist/types/components/dialog/seki-dialog-description.d.ts +5 -1
- package/dist/types/components/dialog/seki-dialog-overlay.d.ts +2 -3
- package/dist/types/components/dialog/seki-dialog-title.d.ts +5 -1
- package/dist/types/components/dialog/seki-dialog.d.ts +9 -2
- package/dist/types/components/drawer/seki-drawer-content.d.ts +8 -3
- package/dist/types/components/drawer/seki-drawer.d.ts +5 -1
- package/dist/types/components/field-label/seki-field-label.d.ts +9 -1
- package/dist/types/components/label/seki-label.d.ts +11 -2
- package/dist/types/components/popover/seki-popover-content.d.ts +6 -3
- package/dist/types/components/popover/seki-popover.d.ts +7 -1
- package/dist/types/components/select/seki-select.d.ts +8 -0
- package/dist/types/components/select-content/seki-select-content.d.ts +3 -2
- package/dist/types/components/select-option/seki-select-option.d.ts +9 -3
- package/dist/types/components/select-trigger/seki-select-trigger.d.ts +10 -4
- package/dist/types/components/sheet/seki-sheet-content.d.ts +8 -4
- package/dist/types/components/sheet/seki-sheet.d.ts +5 -1
- package/dist/types/components.d.ts +61 -6
- package/dist/types/utils/context-bridge.d.ts +68 -4
- package/dist/types/utils/label-association.d.ts +58 -0
- package/package.json +1 -1
- package/dist/cdn/p-DJMgrCw3.js +0 -54
- package/dist/cjs/context-bridge-CywF7uJm.js +0 -57
- package/dist/components/p-DJMgrCw3.js +0 -54
- package/dist/esm/context-bridge-DJMgrCw3.js +0 -54
- package/dist/sekiui/p-063951fe.entry.js +0 -1
- package/dist/sekiui/p-326909c5.entry.js +0 -1
- package/dist/sekiui/p-3511d6e5.entry.js +0 -1
- package/dist/sekiui/p-4253845a.entry.js +0 -1
- package/dist/sekiui/p-565acaf2.entry.js +0 -1
- package/dist/sekiui/p-5a55a239.entry.js +0 -1
- package/dist/sekiui/p-5fd3b090.entry.js +0 -1
- package/dist/sekiui/p-6466865a.entry.js +0 -1
- package/dist/sekiui/p-9324d212.entry.js +0 -1
- package/dist/sekiui/p-959fef36.entry.js +0 -1
- package/dist/sekiui/p-DJMgrCw3.js +0 -1
- package/dist/sekiui/p-a55bc3d3.entry.js +0 -1
- package/dist/sekiui/p-ab56de7a.entry.js +0 -1
- package/dist/sekiui/p-ad62e316.entry.js +0 -1
- package/dist/sekiui/p-b8d3aa31.entry.js +0 -1
- package/dist/sekiui/p-b99c6433.entry.js +0 -1
- package/dist/sekiui/p-c15c21b4.entry.js +0 -1
- package/dist/sekiui/p-c529a6b8.entry.js +0 -1
- package/dist/sekiui/p-c99961a7.entry.js +0 -1
- package/dist/sekiui/p-d61319d6.entry.js +0 -1
- package/dist/sekiui/p-da9b3eaa.entry.js +0 -1
- package/dist/sekiui/p-eb50f8d5.entry.js +0 -1
- package/dist/sekiui/p-f886fe62.entry.js +0 -1
- package/dist/sekiui/p-fc288df2.entry.js +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { publishContext } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* @slot - The collapsible content (trigger and content)
|
|
4
5
|
*
|
|
@@ -27,9 +28,19 @@ export class SekiCollapsible {
|
|
|
27
28
|
componentWillLoad() {
|
|
28
29
|
// Initialize with defaultOpen or open prop
|
|
29
30
|
this._isOpen = this.open || this.defaultOpen;
|
|
31
|
+
// Publish before the first render so `<seki-collapsible open>` reaches the
|
|
32
|
+
// trigger and content at first paint (#323).
|
|
33
|
+
this.updateContext();
|
|
30
34
|
}
|
|
31
35
|
openChanged(newValue) {
|
|
36
|
+
if (newValue === this._isOpen)
|
|
37
|
+
return;
|
|
32
38
|
this._isOpen = newValue;
|
|
39
|
+
this.updateContext();
|
|
40
|
+
this.sekiOpenChange.emit(newValue);
|
|
41
|
+
}
|
|
42
|
+
disabledChanged() {
|
|
43
|
+
this.updateContext();
|
|
33
44
|
}
|
|
34
45
|
/**
|
|
35
46
|
* Toggle the collapsible open state
|
|
@@ -70,15 +81,8 @@ export class SekiCollapsible {
|
|
|
70
81
|
get triggerId() {
|
|
71
82
|
return `seki-collapsible-trigger-${this.instanceId}`;
|
|
72
83
|
}
|
|
73
|
-
componentDidLoad() {
|
|
74
|
-
this.updateContext();
|
|
75
|
-
}
|
|
76
|
-
componentDidUpdate() {
|
|
77
|
-
this.updateContext();
|
|
78
|
-
}
|
|
79
84
|
updateContext() {
|
|
80
|
-
|
|
81
|
-
this.el._collapsibleContext = this.getContext();
|
|
85
|
+
publishContext(this.el, '_collapsibleContext', this.getContext(), this.collapsibleContextChange);
|
|
82
86
|
}
|
|
83
87
|
getContext() {
|
|
84
88
|
return {
|
|
@@ -90,7 +94,7 @@ export class SekiCollapsible {
|
|
|
90
94
|
};
|
|
91
95
|
}
|
|
92
96
|
render() {
|
|
93
|
-
return (h(Host, { key: '
|
|
97
|
+
return (h(Host, { key: '3b675841816d04cb9295ead7b0909d311904fa6a', "data-state": this._isOpen ? 'open' : 'closed', "data-disabled": this.disabled ? '' : undefined }, h("div", { key: '155a3ab25691993804c0acf8510dd8bccf39b1fe', part: "collapsible", class: "collapsible" }, h("slot", { key: '1f9979e76571f519d9d3601ba2fb86c35704ce9a' }))));
|
|
94
98
|
}
|
|
95
99
|
static get is() { return "seki-collapsible"; }
|
|
96
100
|
static get encapsulation() { return "shadow"; }
|
|
@@ -189,6 +193,21 @@ export class SekiCollapsible {
|
|
|
189
193
|
"resolved": "boolean",
|
|
190
194
|
"references": {}
|
|
191
195
|
}
|
|
196
|
+
}, {
|
|
197
|
+
"method": "collapsibleContextChange",
|
|
198
|
+
"name": "sekiContextChange",
|
|
199
|
+
"bubbles": true,
|
|
200
|
+
"cancelable": true,
|
|
201
|
+
"composed": true,
|
|
202
|
+
"docs": {
|
|
203
|
+
"tags": [],
|
|
204
|
+
"text": "Internal: notifies collapsible parts that `_collapsibleContext` changed.\nNot part of the public API; listen to `sekiOpenChange` instead."
|
|
205
|
+
},
|
|
206
|
+
"complexType": {
|
|
207
|
+
"original": "void",
|
|
208
|
+
"resolved": "void",
|
|
209
|
+
"references": {}
|
|
210
|
+
}
|
|
192
211
|
}];
|
|
193
212
|
}
|
|
194
213
|
static get methods() {
|
|
@@ -251,6 +270,9 @@ export class SekiCollapsible {
|
|
|
251
270
|
return [{
|
|
252
271
|
"propName": "open",
|
|
253
272
|
"methodName": "openChanged"
|
|
273
|
+
}, {
|
|
274
|
+
"propName": "disabled",
|
|
275
|
+
"methodName": "disabledChanged"
|
|
254
276
|
}];
|
|
255
277
|
}
|
|
256
278
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* @slot - Combobox items
|
|
4
5
|
*/
|
|
@@ -8,32 +9,24 @@ export class SekiComboboxContent {
|
|
|
8
9
|
this.maxHeight = '15rem';
|
|
9
10
|
this.isOpen = false;
|
|
10
11
|
this.listboxId = '';
|
|
12
|
+
// Follow the published context, not the host's aria-expanded attribute: the
|
|
13
|
+
// old MutationObserver only worked because seki-combobox happens to reflect
|
|
14
|
+
// its open state there, and it was never disconnected (#323).
|
|
15
|
+
this.comboboxConsumer = new ContextConsumer('seki-combobox', 'comboboxContext', ctx => {
|
|
16
|
+
if (ctx) {
|
|
17
|
+
this.isOpen = ctx.open;
|
|
18
|
+
this.listboxId = ctx.listboxId;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
11
21
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return (combobox === null || combobox === void 0 ? void 0 : combobox.comboboxContext) || null;
|
|
15
|
-
}
|
|
16
|
-
componentDidLoad() {
|
|
17
|
-
this.updateState();
|
|
18
|
-
// Set up mutation observer to watch for context changes
|
|
19
|
-
this.observeParent();
|
|
20
|
-
}
|
|
21
|
-
observeParent() {
|
|
22
|
-
const combobox = this.el.closest('seki-combobox');
|
|
23
|
-
if (combobox) {
|
|
24
|
-
const observer = new MutationObserver(() => this.updateState());
|
|
25
|
-
observer.observe(combobox, { attributes: true, subtree: false });
|
|
26
|
-
}
|
|
22
|
+
connectedCallback() {
|
|
23
|
+
this.comboboxConsumer.connect(this.el);
|
|
27
24
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (ctx) {
|
|
31
|
-
this.isOpen = ctx.open;
|
|
32
|
-
this.listboxId = ctx.listboxId;
|
|
33
|
-
}
|
|
25
|
+
disconnectedCallback() {
|
|
26
|
+
this.comboboxConsumer.disconnect();
|
|
34
27
|
}
|
|
35
28
|
render() {
|
|
36
|
-
return (h(Host, { key: '
|
|
29
|
+
return (h(Host, { key: '08fdcae6d7a7094a52741c0482f5b96ddbda3426', class: { 'hidden': !this.isOpen } }, h("div", { key: 'ad07c879b50568cfeb24b9bc1fb012ceb6503eaa', id: this.listboxId, class: "combobox-content", role: "listbox", style: { maxHeight: this.maxHeight } }, h("slot", { key: 'c3c569b4520d814ea75dd3f1fe3702b759a1958e' }))));
|
|
37
30
|
}
|
|
38
31
|
static get is() { return "seki-combobox-content"; }
|
|
39
32
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Command empty state - shown when no results match
|
|
4
5
|
*
|
|
@@ -9,33 +10,16 @@ import { h, Host } from "@stencil/core";
|
|
|
9
10
|
export class SekiCommandEmpty {
|
|
10
11
|
constructor() {
|
|
11
12
|
this._visible = false;
|
|
12
|
-
this.
|
|
13
|
+
this.commandConsumer = new ContextConsumer('seki-command', '_commandContext', context => {
|
|
13
14
|
var _a;
|
|
14
|
-
const context = this.getContext();
|
|
15
15
|
this._visible = (_a = context === null || context === void 0 ? void 0 : context.isEmpty) !== null && _a !== void 0 ? _a : false;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
getContext() {
|
|
19
|
-
const command = this.el.closest('seki-command');
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
-
return command ? command._commandContext : null;
|
|
16
|
+
});
|
|
22
17
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const context = this.getContext();
|
|
26
|
-
this._visible = (_a = context === null || context === void 0 ? void 0 : context.isEmpty) !== null && _a !== void 0 ? _a : false;
|
|
27
|
-
}
|
|
28
|
-
componentDidLoad() {
|
|
29
|
-
const command = this.el.closest('seki-command');
|
|
30
|
-
if (command) {
|
|
31
|
-
command.addEventListener('sekiValueChange', this.handleValueChange);
|
|
32
|
-
}
|
|
18
|
+
connectedCallback() {
|
|
19
|
+
this.commandConsumer.connect(this.el);
|
|
33
20
|
}
|
|
34
21
|
disconnectedCallback() {
|
|
35
|
-
|
|
36
|
-
if (command) {
|
|
37
|
-
command.removeEventListener('sekiValueChange', this.handleValueChange);
|
|
38
|
-
}
|
|
22
|
+
this.commandConsumer.disconnect();
|
|
39
23
|
}
|
|
40
24
|
render() {
|
|
41
25
|
if (!this._visible) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Command group - groups related items with a heading
|
|
4
5
|
*
|
|
@@ -9,10 +10,9 @@ import { h, Host } from "@stencil/core";
|
|
|
9
10
|
*/
|
|
10
11
|
export class SekiCommandGroup {
|
|
11
12
|
constructor() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
13
|
+
// Recomputed from the parent's context on every publish, including a
|
|
14
|
+
// `value` set from outside (which never fired sekiValueChange) (#323).
|
|
15
|
+
this.commandConsumer = new ContextConsumer('seki-command', '_commandContext', () => this.updateVisibility());
|
|
16
16
|
/**
|
|
17
17
|
* Show even when all items are filtered out
|
|
18
18
|
*/
|
|
@@ -33,18 +33,16 @@ export class SekiCommandGroup {
|
|
|
33
33
|
* Update visibility based on child items
|
|
34
34
|
*/
|
|
35
35
|
updateVisibility() {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const context = this.commandConsumer.context;
|
|
37
|
+
if (!context)
|
|
38
|
+
return;
|
|
39
|
+
this._hasVisibleItems = this.getItems().some(item => context.isItemMatch(item));
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.commandEl = (_a = this.el.closest('seki-command')) !== null && _a !== void 0 ? _a : undefined;
|
|
43
|
-
(_b = this.commandEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiValueChange', this.onCommandValueChange);
|
|
41
|
+
connectedCallback() {
|
|
42
|
+
this.commandConsumer.connect(this.el);
|
|
44
43
|
}
|
|
45
44
|
disconnectedCallback() {
|
|
46
|
-
|
|
47
|
-
(_a = this.commandEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiValueChange', this.onCommandValueChange);
|
|
45
|
+
this.commandConsumer.disconnect();
|
|
48
46
|
}
|
|
49
47
|
render() {
|
|
50
48
|
const shouldShow = this.forceMount || this._hasVisibleItems;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Command input - search field for filtering items
|
|
4
5
|
*
|
|
@@ -12,6 +13,20 @@ export class SekiCommandInput {
|
|
|
12
13
|
* Placeholder text
|
|
13
14
|
*/
|
|
14
15
|
this.placeholder = 'Type a command or search...';
|
|
16
|
+
/** The parent command's search value, mirrored from its context. */
|
|
17
|
+
this._value = '';
|
|
18
|
+
// Follow the parent's value so `<seki-command value="...">` and
|
|
19
|
+
// `command.value = ...` show up in the field, not just typed input (#323).
|
|
20
|
+
this.commandConsumer = new ContextConsumer('seki-command', '_commandContext', context => {
|
|
21
|
+
var _a;
|
|
22
|
+
const value = (_a = context === null || context === void 0 ? void 0 : context.value) !== null && _a !== void 0 ? _a : '';
|
|
23
|
+
this._value = value;
|
|
24
|
+
// Keep the live field in step even when the re-render is skipped because
|
|
25
|
+
// _value did not change (e.g. the user typed it).
|
|
26
|
+
if (this.inputRef && this.inputRef.value !== value) {
|
|
27
|
+
this.inputRef.value = value;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
15
30
|
this.handleInput = (event) => {
|
|
16
31
|
const target = event.target;
|
|
17
32
|
this.sekiCommandInputChange.emit(target.value);
|
|
@@ -23,10 +38,11 @@ export class SekiCommandInput {
|
|
|
23
38
|
}
|
|
24
39
|
};
|
|
25
40
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
connectedCallback() {
|
|
42
|
+
this.commandConsumer.connect(this.el);
|
|
43
|
+
}
|
|
44
|
+
disconnectedCallback() {
|
|
45
|
+
this.commandConsumer.disconnect();
|
|
30
46
|
}
|
|
31
47
|
/**
|
|
32
48
|
* Focus the input
|
|
@@ -43,10 +59,8 @@ export class SekiCommandInput {
|
|
|
43
59
|
});
|
|
44
60
|
}
|
|
45
61
|
render() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const value = (_a = context === null || context === void 0 ? void 0 : context.value) !== null && _a !== void 0 ? _a : '';
|
|
49
|
-
return (h(Host, { key: '5652d7fbc44c5fc236e73991632631885273144f' }, h("div", { key: 'e1ae542f5aac09fb7d145d2b093c4a7f2905ee3a', part: "input-wrapper", class: "command-input-wrapper" }, h("svg", { key: '63c9c6f7e9285e08b497452caf7e323cac76d7d4', part: "icon", class: "command-input-icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("circle", { key: '9d270ed1fe6610db1f2803d5b058fdd846b93cb3', cx: "11", cy: "11", r: "8" }), h("path", { key: '840ca57335907d4a358d97e2da3f3d8393ecaf9e', d: "m21 21-4.3-4.3" })), h("input", { key: 'e79f08cebbd4f59f18a813644b902fa5ac93d966', ref: (el) => (this.inputRef = el), part: "input", type: "text", class: "command-input", placeholder: this.placeholder, value: value, role: "combobox", "aria-expanded": "true", "aria-controls": "command-list", "aria-autocomplete": "list", onInput: this.handleInput, onKeyDown: this.handleKeyDown }))));
|
|
62
|
+
const value = this._value;
|
|
63
|
+
return (h(Host, { key: 'b12d460fd004bb51fffe1736e1cf508a38174bc2' }, h("div", { key: '6f7dfca8a574b79c28b747d8a256507cffbd03ac', part: "input-wrapper", class: "command-input-wrapper" }, h("svg", { key: 'a7a04d003ce6ff04abfe0db3ccddd1d15b1891dc', part: "icon", class: "command-input-icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("circle", { key: 'df534fd0e6f6472ab8b3a09adae7cf15d3be6724', cx: "11", cy: "11", r: "8" }), h("path", { key: '60b0ef61ea3dd7f64446a13173ecd171afb02f4c', d: "m21 21-4.3-4.3" })), h("input", { key: '1aa9388b9aae712482eabbc0aa8b6832af954782', ref: (el) => (this.inputRef = el), part: "input", type: "text", class: "command-input", placeholder: this.placeholder, value: value, role: "combobox", "aria-expanded": "true", "aria-controls": "command-list", "aria-autocomplete": "list", onInput: this.handleInput, onKeyDown: this.handleKeyDown }))));
|
|
50
64
|
}
|
|
51
65
|
static get is() { return "seki-command-input"; }
|
|
52
66
|
static get encapsulation() { return "shadow"; }
|
|
@@ -84,6 +98,11 @@ export class SekiCommandInput {
|
|
|
84
98
|
}
|
|
85
99
|
};
|
|
86
100
|
}
|
|
101
|
+
static get states() {
|
|
102
|
+
return {
|
|
103
|
+
"_value": {}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
87
106
|
static get events() {
|
|
88
107
|
return [{
|
|
89
108
|
"method": "sekiCommandInputChange",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Command item - selectable option in the command list
|
|
4
5
|
*
|
|
@@ -21,6 +22,16 @@ export class SekiCommandItem {
|
|
|
21
22
|
* Whether this item matches the current filter
|
|
22
23
|
*/
|
|
23
24
|
this._visible = true;
|
|
25
|
+
// Visibility and highlight come from the parent's context, so an item added
|
|
26
|
+
// after mount is filtered against the current search right away and
|
|
27
|
+
// filtering works in the lazy build, where seki-command cannot call this
|
|
28
|
+
// class's plain methods through the host element (#323).
|
|
29
|
+
this.commandConsumer = new ContextConsumer('seki-command', '_commandContext', context => {
|
|
30
|
+
if (!context)
|
|
31
|
+
return;
|
|
32
|
+
this._visible = context.isItemMatch(this.el);
|
|
33
|
+
this._highlighted = context.highlightedItem === this.el;
|
|
34
|
+
});
|
|
24
35
|
this.handleClick = () => {
|
|
25
36
|
if (this.disabled)
|
|
26
37
|
return;
|
|
@@ -38,6 +49,12 @@ export class SekiCommandItem {
|
|
|
38
49
|
};
|
|
39
50
|
this.instanceId = `seki-command-item-${++SekiCommandItem.instanceCount}`;
|
|
40
51
|
}
|
|
52
|
+
connectedCallback() {
|
|
53
|
+
this.commandConsumer.connect(this.el);
|
|
54
|
+
}
|
|
55
|
+
disconnectedCallback() {
|
|
56
|
+
this.commandConsumer.disconnect();
|
|
57
|
+
}
|
|
41
58
|
/**
|
|
42
59
|
* Get the searchable text for this item
|
|
43
60
|
*/
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { publishContext } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Command root component - command palette for navigation
|
|
4
5
|
*
|
|
@@ -24,31 +25,61 @@ export class SekiCommand {
|
|
|
24
25
|
* Currently highlighted item index
|
|
25
26
|
*/
|
|
26
27
|
this._highlightedIndex = 0;
|
|
28
|
+
/**
|
|
29
|
+
* Whether an item matches the current search. Computed from the item's host
|
|
30
|
+
* (text + `keywords`) rather than by calling methods on it: the item's plain
|
|
31
|
+
* class methods do not exist on the host element in the lazy-loaded build,
|
|
32
|
+
* which is why filtering never happened there before #323.
|
|
33
|
+
*/
|
|
34
|
+
this.matchesItem = (item) => {
|
|
35
|
+
var _a, _b, _c, _d;
|
|
36
|
+
if (!this.filter)
|
|
37
|
+
return true;
|
|
38
|
+
const searchValue = this._value.toLowerCase().trim();
|
|
39
|
+
if (searchValue === '')
|
|
40
|
+
return true;
|
|
41
|
+
const keywords = (_b = (_a = item.keywords) !== null && _a !== void 0 ? _a : item.getAttribute('keywords')) !== null && _b !== void 0 ? _b : '';
|
|
42
|
+
const searchText = `${(_d = (_c = item.textContent) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : ''} ${keywords}`.toLowerCase();
|
|
43
|
+
return searchText.includes(searchValue);
|
|
44
|
+
};
|
|
27
45
|
}
|
|
28
46
|
valueChanged(newValue) {
|
|
29
47
|
this._value = newValue;
|
|
30
|
-
|
|
48
|
+
// resetHighlight() republishes the context, which refilters every part.
|
|
31
49
|
this.resetHighlight();
|
|
32
50
|
}
|
|
51
|
+
filterChanged() {
|
|
52
|
+
this.resetHighlight();
|
|
53
|
+
}
|
|
54
|
+
connectedCallback() {
|
|
55
|
+
// Filtering, the empty state and the highlight all derive from which
|
|
56
|
+
// items exist, so a later DOM change has to be republished to the parts.
|
|
57
|
+
if (typeof MutationObserver !== 'undefined') {
|
|
58
|
+
this.itemObserver = new MutationObserver(() => this.updateContext());
|
|
59
|
+
this.itemObserver.observe(this.el, { childList: true, subtree: true, characterData: true });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
disconnectedCallback() {
|
|
63
|
+
var _a;
|
|
64
|
+
(_a = this.itemObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
65
|
+
this.itemObserver = undefined;
|
|
66
|
+
}
|
|
33
67
|
componentWillLoad() {
|
|
34
68
|
this._value = this.value;
|
|
69
|
+
// Publish before the first render so parts see `value` declared in HTML
|
|
70
|
+
// (#323).
|
|
71
|
+
this.updateContext();
|
|
35
72
|
}
|
|
36
73
|
componentDidLoad() {
|
|
37
|
-
// Set initial context
|
|
38
|
-
this.updateContext();
|
|
39
|
-
// Apply initial filter
|
|
40
|
-
this.applyFilter();
|
|
41
74
|
// Set initial highlight
|
|
42
75
|
requestAnimationFrame(() => this.resetHighlight());
|
|
43
76
|
}
|
|
44
77
|
handleInputChange(event) {
|
|
45
78
|
event.stopPropagation();
|
|
46
79
|
this._value = event.detail;
|
|
80
|
+
// @Watch('value') refilters, resets the highlight and republishes.
|
|
47
81
|
this.value = event.detail;
|
|
48
82
|
this.sekiValueChange.emit(event.detail);
|
|
49
|
-
this.applyFilter();
|
|
50
|
-
this.resetHighlight();
|
|
51
|
-
this.updateContext();
|
|
52
83
|
}
|
|
53
84
|
handleItemSelect(event) {
|
|
54
85
|
event.stopPropagation();
|
|
@@ -109,37 +140,12 @@ export class SekiCommand {
|
|
|
109
140
|
getAllItems() {
|
|
110
141
|
return Array.from(this.el.querySelectorAll('seki-command-item'));
|
|
111
142
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
-
const isVisible = (_c = (_b = (_a = item).isVisible) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : true;
|
|
117
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
118
|
-
const isDisabled = (_d = item.disabled) !== null && _d !== void 0 ? _d : false;
|
|
119
|
-
return isVisible && !isDisabled;
|
|
120
|
-
});
|
|
143
|
+
isItemDisabled(item) {
|
|
144
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
145
|
+
return Boolean(item.disabled);
|
|
121
146
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
return;
|
|
125
|
-
const searchValue = this._value.toLowerCase().trim();
|
|
126
|
-
const items = this.getAllItems();
|
|
127
|
-
items.forEach((item) => {
|
|
128
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
129
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
-
const searchText = (_e = (_c = (_b = (_a = item).getSearchText) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : (_d = item.textContent) === null || _d === void 0 ? void 0 : _d.toLowerCase()) !== null && _e !== void 0 ? _e : '';
|
|
131
|
-
const matches = searchValue === '' || searchText.includes(searchValue);
|
|
132
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
133
|
-
(_g = (_f = item).setVisible) === null || _g === void 0 ? void 0 : _g.call(_f, matches);
|
|
134
|
-
});
|
|
135
|
-
// Update groups visibility
|
|
136
|
-
const groups = Array.from(this.el.querySelectorAll('seki-command-group'));
|
|
137
|
-
groups.forEach((group) => {
|
|
138
|
-
var _a, _b;
|
|
139
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
140
|
-
(_b = (_a = group).updateVisibility) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
141
|
-
});
|
|
142
|
-
this.updateContext();
|
|
147
|
+
getVisibleItems() {
|
|
148
|
+
return this.getAllItems().filter(item => this.matchesItem(item) && !this.isItemDisabled(item));
|
|
143
149
|
}
|
|
144
150
|
resetHighlight() {
|
|
145
151
|
this._highlightedIndex = 0;
|
|
@@ -147,20 +153,10 @@ export class SekiCommand {
|
|
|
147
153
|
this.updateHighlight(items);
|
|
148
154
|
}
|
|
149
155
|
updateHighlight(items) {
|
|
150
|
-
var _a, _b
|
|
151
|
-
//
|
|
152
|
-
this.getAllItems().forEach((item) => {
|
|
153
|
-
var _a, _b;
|
|
154
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
155
|
-
(_b = (_a = item).setHighlighted) === null || _b === void 0 ? void 0 : _b.call(_a, false);
|
|
156
|
-
});
|
|
157
|
-
// Set new highlight
|
|
156
|
+
var _a, _b;
|
|
157
|
+
// Items render their highlight from context.highlightedItem.
|
|
158
158
|
if (items.length > 0 && this._highlightedIndex >= 0 && this._highlightedIndex < items.length) {
|
|
159
|
-
|
|
160
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
161
|
-
(_b = (_a = item).setHighlighted) === null || _b === void 0 ? void 0 : _b.call(_a, true);
|
|
162
|
-
// Scroll into view
|
|
163
|
-
(_c = item.scrollIntoView) === null || _c === void 0 ? void 0 : _c.call(item, { block: 'nearest' });
|
|
159
|
+
(_b = (_a = items[this._highlightedIndex]).scrollIntoView) === null || _b === void 0 ? void 0 : _b.call(_a, { block: 'nearest' });
|
|
164
160
|
}
|
|
165
161
|
this.updateContext();
|
|
166
162
|
}
|
|
@@ -174,7 +170,10 @@ export class SekiCommand {
|
|
|
174
170
|
value: this._value,
|
|
175
171
|
highlightedIndex: this._highlightedIndex,
|
|
176
172
|
highlightedId,
|
|
177
|
-
|
|
173
|
+
highlightedItem: highlightedItem !== null && highlightedItem !== void 0 ? highlightedItem : null,
|
|
174
|
+
// Disabled items still render, so they count as results.
|
|
175
|
+
isEmpty: !this.getAllItems().some(this.matchesItem),
|
|
176
|
+
isItemMatch: this.matchesItem,
|
|
178
177
|
filter: (text) => {
|
|
179
178
|
const searchValue = this._value.toLowerCase().trim();
|
|
180
179
|
return searchValue === '' || text.toLowerCase().includes(searchValue);
|
|
@@ -182,11 +181,10 @@ export class SekiCommand {
|
|
|
182
181
|
};
|
|
183
182
|
}
|
|
184
183
|
updateContext() {
|
|
185
|
-
|
|
186
|
-
this.el._commandContext = this.getContext();
|
|
184
|
+
publishContext(this.el, '_commandContext', this.getContext(), this.commandContextChange);
|
|
187
185
|
}
|
|
188
186
|
render() {
|
|
189
|
-
return (h(Host, { key: '
|
|
187
|
+
return (h(Host, { key: '7f80dd8be39e51feac86933c35ddf845b99b76ef' }, h("div", { key: 'cbc2a0040641591e9036e863ec45d9b11c9c2a42', part: "command", class: "command" }, h("slot", { key: 'abf6c4cdb4ee49b69997de1618c9ce96df753633' }))));
|
|
190
188
|
}
|
|
191
189
|
static get is() { return "seki-command"; }
|
|
192
190
|
static get encapsulation() { return "shadow"; }
|
|
@@ -281,6 +279,21 @@ export class SekiCommand {
|
|
|
281
279
|
"resolved": "string",
|
|
282
280
|
"references": {}
|
|
283
281
|
}
|
|
282
|
+
}, {
|
|
283
|
+
"method": "commandContextChange",
|
|
284
|
+
"name": "sekiContextChange",
|
|
285
|
+
"bubbles": true,
|
|
286
|
+
"cancelable": true,
|
|
287
|
+
"composed": true,
|
|
288
|
+
"docs": {
|
|
289
|
+
"tags": [],
|
|
290
|
+
"text": "Internal: notifies command parts (input, items, groups, empty state) that\n`_commandContext` changed. Not part of the public API; listen to\n`sekiValueChange` instead."
|
|
291
|
+
},
|
|
292
|
+
"complexType": {
|
|
293
|
+
"original": "void",
|
|
294
|
+
"resolved": "void",
|
|
295
|
+
"references": {}
|
|
296
|
+
}
|
|
284
297
|
}];
|
|
285
298
|
}
|
|
286
299
|
static get elementRef() { return "el"; }
|
|
@@ -288,6 +301,9 @@ export class SekiCommand {
|
|
|
288
301
|
return [{
|
|
289
302
|
"propName": "value",
|
|
290
303
|
"methodName": "valueChanged"
|
|
304
|
+
}, {
|
|
305
|
+
"propName": "filter",
|
|
306
|
+
"methodName": "filterChanged"
|
|
291
307
|
}];
|
|
292
308
|
}
|
|
293
309
|
static get listeners() {
|