@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
|
@@ -212,6 +212,9 @@ export class SekiDataTable {
|
|
|
212
212
|
// =========================================================================
|
|
213
213
|
// Watchers
|
|
214
214
|
// =========================================================================
|
|
215
|
+
fetchDataChanged() {
|
|
216
|
+
this.loadData();
|
|
217
|
+
}
|
|
215
218
|
columnsChanged() {
|
|
216
219
|
this.initializeColumns();
|
|
217
220
|
}
|
|
@@ -420,10 +423,10 @@ export class SekiDataTable {
|
|
|
420
423
|
const visibleColumns = this.getVisibleColumns();
|
|
421
424
|
const totalPages = this.getTotalPages();
|
|
422
425
|
const isLoading = this.state.loading || this.loading;
|
|
423
|
-
return (h(Host, { key: '
|
|
426
|
+
return (h(Host, { key: '15535cda2a0f9026432cd29d3cca66471542293e' }, h("div", { key: '1a6d394f50582afa152912be44d3dc1b460647ec', class: "data-table" }, (this.searchable || this.columnPicker) && (h("div", { key: '5729cf6f2dfdd4f3280bcb37099348c91e18b589', class: "data-table__toolbar" }, this.searchable && (h("div", { key: '8594e5f8a45e84ecf2d0a07d0cc60ede27c06a25', class: "data-table__search" }, h("input", { key: 'afdbfe0c7b913fa6986fabd1b1746a1143fe45e5', type: "text", class: "data-table__search-input", placeholder: this.searchPlaceholder, value: this.searchInputValue, onInput: this.handleSearchInput }), this.searchInputValue && (h("button", { key: '4600532ab6612b7676425744a4d488793ba76d11', type: "button", class: "data-table__search-clear", onClick: this.handleClearSearch, "aria-label": "Clear search" }, "\u00D7")))), h("div", { key: '7394abd007401280dc2c5f4dc6511f4bfbc733ea', class: "data-table__toolbar-spacer" }), this.columnPicker && (h("button", { key: '3b058abfece531c57449b8c5c6c937efbbe238c2', type: "button", class: "data-table__column-picker-btn" }, "Columns")))), h("div", { key: '25642d9e9db56c73438a5f0b5cf4823b7147fb58', class: {
|
|
424
427
|
'data-table__container': true,
|
|
425
428
|
'data-table__container--virtual': this.virtualScroll,
|
|
426
|
-
}, ref: el => (this.scrollContainerRef = el), onScroll: this.handleScroll }, h("table", { key: '
|
|
429
|
+
}, ref: el => (this.scrollContainerRef = el), onScroll: this.handleScroll }, h("table", { key: 'e7f32b0e32993c811a671486b9ba0ea3963b8c65', class: "data-table__table", role: "grid" }, h("thead", { key: '32e774b234f5585bf7e86b80e87e9fc4b0dd8879', class: "data-table__head" }, h("tr", { key: '0063401f0e59a4fa53d93356cb6d1c6f7f98b6c9', class: "data-table__header-row", role: "row" }, this.selectable && (h("th", { key: 'ef06fa478dfb5b88ad080a35958341f050752542', class: "data-table__th data-table__th--checkbox", role: "columnheader" }, h("input", { key: '46e938e0fd71d86f190968f6b8a3cb36fc25b313', 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: '51b2c56e81df98c93abb4b3ad36a7b644180e61c', class: "data-table__th data-table__th--expand", role: "columnheader" }, h("span", { key: '4057f8000cce3087201191ada05ace0e8e4fd888', class: "sr-only" }, "Expand"))), visibleColumns.map(column => {
|
|
427
430
|
var _a, _b, _c;
|
|
428
431
|
return (h("th", { key: column.field, class: {
|
|
429
432
|
'data-table__th': true,
|
|
@@ -439,7 +442,7 @@ export class SekiDataTable {
|
|
|
439
442
|
? '↑'
|
|
440
443
|
: '↓'
|
|
441
444
|
: '↕'))), column.resizable && (h("div", { class: "data-table__resize-handle", onMouseDown: (e) => this.startResize(e, column) }))));
|
|
442
|
-
}))), h("tbody", { key: '
|
|
445
|
+
}))), h("tbody", { key: '108750862419ff50da47dd4dac725a37dd4a4568', class: "data-table__body", style: this.virtualScroll
|
|
443
446
|
? {
|
|
444
447
|
height: `${this.virtualScrollState.totalHeight}px`,
|
|
445
448
|
position: 'relative',
|
|
@@ -482,12 +485,12 @@ export class SekiDataTable {
|
|
|
482
485
|
/* Expanded content row */
|
|
483
486
|
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) })))),
|
|
484
487
|
];
|
|
485
|
-
})))), isLoading && this.state.rows.length > 0 && (h("div", { key: '
|
|
488
|
+
})))), isLoading && this.state.rows.length > 0 && (h("div", { key: 'b8e2ce3a23488dc4eb315d7aae2eee1a488b2ecf', class: "data-table__loading-overlay" }, h("div", { key: '3e43dddce5bd374c7dd3eb26a8591b54a5fc42fd', class: "data-table__loading" }, "Loading...")))), h("div", { key: 'e345e839e25ec07e16e76cc162b67b7f8cdf4c6a', class: "data-table__pagination" }, h("div", { key: '2146a5e6890f6f29287c6fe9c5d30eb79660d483', class: "data-table__pagination-info" }, this.state.totalRows > 0
|
|
486
489
|
? `${this.state.page * this.state.pageSize + 1}-${Math.min((this.state.page + 1) * this.state.pageSize, this.state.totalRows)} of ${this.state.totalRows}`
|
|
487
|
-
: '0 results'), h("div", { key: '
|
|
490
|
+
: '0 results'), h("div", { key: '554fe4cb908614c48d7dddd538796c8301c674ed', class: "data-table__pagination-controls" }, h("select", { key: 'df31158d96da258dc59a1b8b34bdf0192c8da54c', class: "data-table__page-size", onChange: (e) => {
|
|
488
491
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
489
492
|
this.handlePageSizeChange(Number(e.target.value));
|
|
490
|
-
} }, this.parsePageSizeOptions().map(size => (h("option", { key: size, value: size, selected: size === this.state.pageSize }, size, " / page")))), h("button", { key: '
|
|
493
|
+
} }, this.parsePageSizeOptions().map(size => (h("option", { key: size, value: size, selected: size === this.state.pageSize }, size, " / page")))), h("button", { key: '7623ea8c30322aca869617976c0e8d25c0f08929', 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: 'e24bdc80a8f542a9eb490fc49d4acaf7268804ca', 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: 'bb14776ac673285917204f3ec0d24f51d21e41df', class: "data-table__page-indicator" }, "Page ", this.state.page + 1, " of ", totalPages || 1), h("button", { key: '1945572fc04df1778d212ba95f8aa5863037fa9e', 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: '6a1571e72fde874357166c0001c1f4ed4fcc2652', type: "button", class: "data-table__page-btn", disabled: this.state.page >= totalPages - 1, onClick: () => this.handlePageChange(totalPages - 1), "aria-label": "Last page" }, "\u00BB\u00BB"))))));
|
|
491
494
|
}
|
|
492
495
|
static get is() { return "seki-data-table"; }
|
|
493
496
|
static get encapsulation() { return "shadow"; }
|
|
@@ -848,6 +851,58 @@ export class SekiDataTable {
|
|
|
848
851
|
"reflect": false,
|
|
849
852
|
"attribute": "empty-message",
|
|
850
853
|
"defaultValue": "'No data'"
|
|
854
|
+
},
|
|
855
|
+
"fetchData": {
|
|
856
|
+
"type": "unknown",
|
|
857
|
+
"mutable": false,
|
|
858
|
+
"complexType": {
|
|
859
|
+
"original": "FetchDataCallback",
|
|
860
|
+
"resolved": "((request: FetchRequest) => Promise<FetchResponse>) | undefined",
|
|
861
|
+
"references": {
|
|
862
|
+
"FetchDataCallback": {
|
|
863
|
+
"location": "import",
|
|
864
|
+
"path": "./interfaces",
|
|
865
|
+
"id": "src/components/data-table/interfaces.ts::FetchDataCallback"
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
},
|
|
869
|
+
"required": false,
|
|
870
|
+
"optional": true,
|
|
871
|
+
"docs": {
|
|
872
|
+
"tags": [{
|
|
873
|
+
"name": "Prop",
|
|
874
|
+
"text": ": in the lazy-loader build only\ndecorated members are proxied from the host element to the instance."
|
|
875
|
+
}],
|
|
876
|
+
"text": "Callback to fetch data. Set it as a JS property. Assigning or replacing it\n(re)loads the table. Must be a"
|
|
877
|
+
},
|
|
878
|
+
"getter": false,
|
|
879
|
+
"setter": false
|
|
880
|
+
},
|
|
881
|
+
"renderExpandedRow": {
|
|
882
|
+
"type": "unknown",
|
|
883
|
+
"mutable": false,
|
|
884
|
+
"complexType": {
|
|
885
|
+
"original": "RenderExpandedRowCallback",
|
|
886
|
+
"resolved": "((row: Record<string, unknown>) => string) | undefined",
|
|
887
|
+
"references": {
|
|
888
|
+
"RenderExpandedRowCallback": {
|
|
889
|
+
"location": "import",
|
|
890
|
+
"path": "./interfaces",
|
|
891
|
+
"id": "src/components/data-table/interfaces.ts::RenderExpandedRowCallback"
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
},
|
|
895
|
+
"required": false,
|
|
896
|
+
"optional": true,
|
|
897
|
+
"docs": {
|
|
898
|
+
"tags": [{
|
|
899
|
+
"name": "Prop",
|
|
900
|
+
"text": ", see fetchData)"
|
|
901
|
+
}],
|
|
902
|
+
"text": "Callback to render expanded row content (must be a"
|
|
903
|
+
},
|
|
904
|
+
"getter": false,
|
|
905
|
+
"setter": false
|
|
851
906
|
}
|
|
852
907
|
};
|
|
853
908
|
}
|
|
@@ -1262,6 +1317,9 @@ export class SekiDataTable {
|
|
|
1262
1317
|
static get elementRef() { return "el"; }
|
|
1263
1318
|
static get watchers() {
|
|
1264
1319
|
return [{
|
|
1320
|
+
"propName": "fetchData",
|
|
1321
|
+
"methodName": "fetchDataChanged"
|
|
1322
|
+
}, {
|
|
1265
1323
|
"propName": "columns",
|
|
1266
1324
|
"methodName": "columnsChanged"
|
|
1267
1325
|
}, {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { trapFocus, focusFirst } from "../../utils/dialog/focus-trap";
|
|
3
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
3
4
|
/**
|
|
4
5
|
* Dialog content panel
|
|
5
6
|
*
|
|
@@ -9,6 +10,11 @@ import { trapFocus, focusFirst } from "../../utils/dialog/focus-trap";
|
|
|
9
10
|
*/
|
|
10
11
|
export class SekiDialogContent {
|
|
11
12
|
constructor() {
|
|
13
|
+
this.dialogConsumer = new ContextConsumer('seki-dialog', '_dialogContext', () => this.onDialogOpenChange());
|
|
14
|
+
/**
|
|
15
|
+
* Re-read the parent's context. Runs once on connect (picking up a dialog
|
|
16
|
+
* that is already open, e.g. `<seki-dialog open>`) and on every publish.
|
|
17
|
+
*/
|
|
12
18
|
this.onDialogOpenChange = () => {
|
|
13
19
|
var _a, _b;
|
|
14
20
|
const context = this.getContext();
|
|
@@ -33,24 +39,10 @@ export class SekiDialogContent {
|
|
|
33
39
|
this._isOpen = false;
|
|
34
40
|
}
|
|
35
41
|
getContext() {
|
|
36
|
-
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
-
return dialog ? dialog._dialogContext : null;
|
|
42
|
+
return this.dialogConsumer.context;
|
|
39
43
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const context = this.getContext();
|
|
43
|
-
const wasOpen = this._isOpen;
|
|
44
|
-
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
45
|
-
// Handle focus on open
|
|
46
|
-
if (!wasOpen && this._isOpen) {
|
|
47
|
-
this.previousActiveElement = document.activeElement;
|
|
48
|
-
// Focus will be set in componentDidRender
|
|
49
|
-
}
|
|
50
|
-
// Handle focus on close
|
|
51
|
-
if (wasOpen && !this._isOpen) {
|
|
52
|
-
(_b = this.previousActiveElement) === null || _b === void 0 ? void 0 : _b.focus();
|
|
53
|
-
}
|
|
44
|
+
connectedCallback() {
|
|
45
|
+
this.dialogConsumer.connect(this.el);
|
|
54
46
|
}
|
|
55
47
|
componentDidRender() {
|
|
56
48
|
if (this._isOpen && this.contentRef) {
|
|
@@ -62,12 +54,6 @@ export class SekiDialogContent {
|
|
|
62
54
|
});
|
|
63
55
|
}
|
|
64
56
|
}
|
|
65
|
-
componentDidLoad() {
|
|
66
|
-
var _a, _b;
|
|
67
|
-
// Listen for context changes
|
|
68
|
-
this.dialogEl = (_a = this.el.closest('seki-dialog')) !== null && _a !== void 0 ? _a : undefined;
|
|
69
|
-
(_b = this.dialogEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiOpenChange', this.onDialogOpenChange);
|
|
70
|
-
}
|
|
71
57
|
handleKeyDown(event) {
|
|
72
58
|
if (!this._isOpen)
|
|
73
59
|
return;
|
|
@@ -85,8 +71,7 @@ export class SekiDialogContent {
|
|
|
85
71
|
}
|
|
86
72
|
}
|
|
87
73
|
disconnectedCallback() {
|
|
88
|
-
|
|
89
|
-
(_a = this.dialogEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiOpenChange', this.onDialogOpenChange);
|
|
74
|
+
this.dialogConsumer.disconnect();
|
|
90
75
|
}
|
|
91
76
|
render() {
|
|
92
77
|
const context = this.getContext();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Dialog description
|
|
4
5
|
*
|
|
@@ -7,14 +8,19 @@ import { h, Host } from "@stencil/core";
|
|
|
7
8
|
* @part description - The description element
|
|
8
9
|
*/
|
|
9
10
|
export class SekiDialogDescription {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
constructor() {
|
|
12
|
+
this.dialogConsumer = new ContextConsumer('seki-dialog', '_dialogContext', context => {
|
|
13
|
+
this._id = context === null || context === void 0 ? void 0 : context.descriptionId;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
this.dialogConsumer.connect(this.el);
|
|
18
|
+
}
|
|
19
|
+
disconnectedCallback() {
|
|
20
|
+
this.dialogConsumer.disconnect();
|
|
14
21
|
}
|
|
15
22
|
render() {
|
|
16
|
-
|
|
17
|
-
return (h(Host, { key: '7b0104247624e150d1b1d8076ed21b2169fc097b' }, h("p", { key: '5db65c820a6e146aafe89b4f542386019b12a614', part: "description", id: context === null || context === void 0 ? void 0 : context.descriptionId, class: "dialog-description" }, h("slot", { key: '85320e13964565ab011a2cba7b0b8cd8eaacf80a' }))));
|
|
23
|
+
return (h(Host, { key: '635ff7451517dce9556fda6c25510644dc7855d2' }, h("p", { key: 'e07527f9157e61cdff3e4188c8b3892407d3f205', part: "description", id: this._id, class: "dialog-description" }, h("slot", { key: '7299a25bfd795663507202ff2b92b8e6438de2e1' }))));
|
|
18
24
|
}
|
|
19
25
|
static get is() { return "seki-dialog-description"; }
|
|
20
26
|
static get encapsulation() { return "shadow"; }
|
|
@@ -28,5 +34,10 @@ export class SekiDialogDescription {
|
|
|
28
34
|
"$": ["seki-dialog-description.css"]
|
|
29
35
|
};
|
|
30
36
|
}
|
|
37
|
+
static get states() {
|
|
38
|
+
return {
|
|
39
|
+
"_id": {}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
31
42
|
static get elementRef() { return "el"; }
|
|
32
43
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Dialog overlay (backdrop)
|
|
4
5
|
*
|
|
@@ -11,6 +12,7 @@ export class SekiDialogOverlay {
|
|
|
11
12
|
*/
|
|
12
13
|
this.closeOnClick = true;
|
|
13
14
|
this._isOpen = false;
|
|
15
|
+
this.dialogConsumer = new ContextConsumer('seki-dialog', '_dialogContext', () => this.onDialogOpenChange());
|
|
14
16
|
this.onDialogOpenChange = () => {
|
|
15
17
|
var _a;
|
|
16
18
|
const context = this.getContext();
|
|
@@ -23,24 +25,13 @@ export class SekiDialogOverlay {
|
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
getContext() {
|
|
26
|
-
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
-
return dialog ? dialog._dialogContext : null;
|
|
28
|
+
return this.dialogConsumer.context;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const context = this.getContext();
|
|
33
|
-
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
34
|
-
}
|
|
35
|
-
componentDidLoad() {
|
|
36
|
-
var _a, _b;
|
|
37
|
-
// Listen for context changes
|
|
38
|
-
this.dialogEl = (_a = this.el.closest('seki-dialog')) !== null && _a !== void 0 ? _a : undefined;
|
|
39
|
-
(_b = this.dialogEl) === null || _b === void 0 ? void 0 : _b.addEventListener('sekiOpenChange', this.onDialogOpenChange);
|
|
30
|
+
connectedCallback() {
|
|
31
|
+
this.dialogConsumer.connect(this.el);
|
|
40
32
|
}
|
|
41
33
|
disconnectedCallback() {
|
|
42
|
-
|
|
43
|
-
(_a = this.dialogEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('sekiOpenChange', this.onDialogOpenChange);
|
|
34
|
+
this.dialogConsumer.disconnect();
|
|
44
35
|
}
|
|
45
36
|
render() {
|
|
46
37
|
if (!this._isOpen) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* Dialog title
|
|
4
5
|
*
|
|
@@ -7,14 +8,19 @@ import { h, Host } from "@stencil/core";
|
|
|
7
8
|
* @part title - The title element
|
|
8
9
|
*/
|
|
9
10
|
export class SekiDialogTitle {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
constructor() {
|
|
12
|
+
this.dialogConsumer = new ContextConsumer('seki-dialog', '_dialogContext', context => {
|
|
13
|
+
this._id = context === null || context === void 0 ? void 0 : context.titleId;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
this.dialogConsumer.connect(this.el);
|
|
18
|
+
}
|
|
19
|
+
disconnectedCallback() {
|
|
20
|
+
this.dialogConsumer.disconnect();
|
|
14
21
|
}
|
|
15
22
|
render() {
|
|
16
|
-
|
|
17
|
-
return (h(Host, { key: '8563ff00c6d6be076fcbf1c407abb8c4c3dac8ba' }, h("h2", { key: '95f31b424091d535abef32134e3304374b0c177d', part: "title", id: context === null || context === void 0 ? void 0 : context.titleId, class: "dialog-title" }, h("slot", { key: '308643273e0800c08e618c3c77386143f1281890' }))));
|
|
23
|
+
return (h(Host, { key: '7ffac23990c2de77d4ab06b5f9ad180eb941d651' }, h("h2", { key: '1d46ec7882f26e9657180af839ce8c1ddecca3ba', part: "title", id: this._id, class: "dialog-title" }, h("slot", { key: '4b361e327dfaa9b11df17d7b551d4d27bb07f5d7' }))));
|
|
18
24
|
}
|
|
19
25
|
static get is() { return "seki-dialog-title"; }
|
|
20
26
|
static get encapsulation() { return "shadow"; }
|
|
@@ -28,5 +34,10 @@ export class SekiDialogTitle {
|
|
|
28
34
|
"$": ["seki-dialog-title.css"]
|
|
29
35
|
};
|
|
30
36
|
}
|
|
37
|
+
static get states() {
|
|
38
|
+
return {
|
|
39
|
+
"_id": {}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
31
42
|
static get elementRef() { return "el"; }
|
|
32
43
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { lockBodyScroll, unlockBodyScroll } from "../../utils/dialog/focus-trap";
|
|
3
|
+
import { publishContext } from "../../utils/context-bridge";
|
|
3
4
|
/**
|
|
4
5
|
* Dialog root component for modal dialogs
|
|
5
6
|
*
|
|
@@ -29,6 +30,19 @@ export class SekiDialog {
|
|
|
29
30
|
}
|
|
30
31
|
componentWillLoad() {
|
|
31
32
|
this._isOpen = this.open || this.defaultOpen;
|
|
33
|
+
// Publish before the first render so parts that render with this dialog
|
|
34
|
+
// (or upgrade before it, under one-module-per-tag loading) see `open`
|
|
35
|
+
// declared in HTML (#323).
|
|
36
|
+
this.publish();
|
|
37
|
+
}
|
|
38
|
+
componentDidLoad() {
|
|
39
|
+
// A dialog declared open in HTML never went through openDialog().
|
|
40
|
+
if (this._isOpen && this.modal) {
|
|
41
|
+
lockBodyScroll();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
handleModalChange() {
|
|
45
|
+
this.publish();
|
|
32
46
|
}
|
|
33
47
|
handleOpenPropChange(newValue) {
|
|
34
48
|
// Honour controlled `open` updates after first render. Without this, setting
|
|
@@ -57,8 +71,7 @@ export class SekiDialog {
|
|
|
57
71
|
// Update context for child components before emitting, so that any listener
|
|
58
72
|
// reading _dialogContext synchronously (e.g. seki-dialog-content) sees isOpen
|
|
59
73
|
// already updated.
|
|
60
|
-
|
|
61
|
-
this.el._dialogContext = this.getContext();
|
|
74
|
+
this.publish();
|
|
62
75
|
this.sekiOpenChange.emit(true);
|
|
63
76
|
if (this.modal) {
|
|
64
77
|
lockBodyScroll();
|
|
@@ -75,8 +88,7 @@ export class SekiDialog {
|
|
|
75
88
|
// Update context for child components before emitting, so that any listener
|
|
76
89
|
// reading _dialogContext synchronously (e.g. seki-dialog-content) sees isOpen
|
|
77
90
|
// already updated.
|
|
78
|
-
|
|
79
|
-
this.el._dialogContext = this.getContext();
|
|
91
|
+
this.publish();
|
|
80
92
|
this.sekiOpenChange.emit(false);
|
|
81
93
|
if (this.modal) {
|
|
82
94
|
unlockBodyScroll();
|
|
@@ -98,13 +110,8 @@ export class SekiDialog {
|
|
|
98
110
|
close: () => this.closeDialog(),
|
|
99
111
|
};
|
|
100
112
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.el._dialogContext = this.getContext();
|
|
104
|
-
}
|
|
105
|
-
componentDidUpdate() {
|
|
106
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
107
|
-
this.el._dialogContext = this.getContext();
|
|
113
|
+
publish() {
|
|
114
|
+
publishContext(this.el, '_dialogContext', this.getContext(), this.dialogContextChange);
|
|
108
115
|
}
|
|
109
116
|
disconnectedCallback() {
|
|
110
117
|
// Ensure body scroll is unlocked if component is removed while open
|
|
@@ -113,7 +120,7 @@ export class SekiDialog {
|
|
|
113
120
|
}
|
|
114
121
|
}
|
|
115
122
|
render() {
|
|
116
|
-
return (h(Host, { key: '
|
|
123
|
+
return (h(Host, { key: 'a1aa2d420059b896076fc23e80ad0843c54ca6e9', "data-state": this._isOpen ? 'open' : 'closed' }, h("div", { key: 'c84e45a16884cc61fb26e4a5fd5b96547405bcea', part: "dialog", class: "dialog" }, h("slot", { key: '13f5b8cbae8ba716473dabdef44e5ea08f5a881b' }))));
|
|
117
124
|
}
|
|
118
125
|
static get is() { return "seki-dialog"; }
|
|
119
126
|
static get encapsulation() { return "shadow"; }
|
|
@@ -212,6 +219,21 @@ export class SekiDialog {
|
|
|
212
219
|
"resolved": "boolean",
|
|
213
220
|
"references": {}
|
|
214
221
|
}
|
|
222
|
+
}, {
|
|
223
|
+
"method": "dialogContextChange",
|
|
224
|
+
"name": "sekiContextChange",
|
|
225
|
+
"bubbles": true,
|
|
226
|
+
"cancelable": true,
|
|
227
|
+
"composed": true,
|
|
228
|
+
"docs": {
|
|
229
|
+
"tags": [],
|
|
230
|
+
"text": "Internal: notifies dialog parts (content, overlay, title, description)\nthat `_dialogContext` changed. Not part of the public API; listen to\n`sekiOpenChange` instead."
|
|
231
|
+
},
|
|
232
|
+
"complexType": {
|
|
233
|
+
"original": "void",
|
|
234
|
+
"resolved": "void",
|
|
235
|
+
"references": {}
|
|
236
|
+
}
|
|
215
237
|
}];
|
|
216
238
|
}
|
|
217
239
|
static get methods() {
|
|
@@ -255,6 +277,9 @@ export class SekiDialog {
|
|
|
255
277
|
static get elementRef() { return "el"; }
|
|
256
278
|
static get watchers() {
|
|
257
279
|
return [{
|
|
280
|
+
"propName": "modal",
|
|
281
|
+
"methodName": "handleModalChange"
|
|
282
|
+
}, {
|
|
258
283
|
"propName": "open",
|
|
259
284
|
"methodName": "handleOpenPropChange"
|
|
260
285
|
}];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { ContextConsumer } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* seki-drawer-content: Container for drawer content with gesture support
|
|
4
5
|
*
|
|
@@ -52,9 +53,7 @@ export class SekiDrawerContent {
|
|
|
52
53
|
this.startX = 0;
|
|
53
54
|
this.contentEl = null;
|
|
54
55
|
this.positions = [];
|
|
55
|
-
this.
|
|
56
|
-
this.syncOpenState();
|
|
57
|
-
};
|
|
56
|
+
this.drawerConsumer = new ContextConsumer('seki-drawer', '_drawerContext', () => this.syncOpenState());
|
|
58
57
|
this.handleCloseClick = () => {
|
|
59
58
|
this.requestClose.emit();
|
|
60
59
|
};
|
|
@@ -152,29 +151,28 @@ export class SekiDrawerContent {
|
|
|
152
151
|
get isHorizontal() {
|
|
153
152
|
return this.direction === 'left' || this.direction === 'right';
|
|
154
153
|
}
|
|
154
|
+
connectedCallback() {
|
|
155
|
+
this.drawerConsumer.connect(this.el);
|
|
156
|
+
this.propagateDirection();
|
|
157
|
+
}
|
|
155
158
|
componentWillLoad() {
|
|
156
|
-
var _a;
|
|
157
159
|
this.parseSnapPoints();
|
|
158
|
-
this.drawerEl = (_a = this.el.closest('seki-drawer')) !== null && _a !== void 0 ? _a : undefined;
|
|
159
|
-
// Propagate direction to parent for styling
|
|
160
|
-
if (this.drawerEl) {
|
|
161
|
-
this.drawerEl.setAttribute('data-direction', this.direction);
|
|
162
|
-
this.syncOpenState();
|
|
163
|
-
}
|
|
164
160
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
(
|
|
169
|
-
(_c = this.drawerEl) === null || _c === void 0 ? void 0 : _c.addEventListener('drawerSnap', this.onDrawerOpenChange);
|
|
161
|
+
/** Propagate the direction to the parent for styling. */
|
|
162
|
+
propagateDirection() {
|
|
163
|
+
var _a;
|
|
164
|
+
(_a = this.drawerConsumer.parent) === null || _a === void 0 ? void 0 : _a.setAttribute('data-direction', this.direction);
|
|
170
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Re-read the parent's open state. Runs once on connect (picking up a drawer
|
|
168
|
+
* that is already open, e.g. `<seki-drawer open>`) and on every publish.
|
|
169
|
+
*/
|
|
171
170
|
syncOpenState() {
|
|
172
|
-
var _a;
|
|
173
|
-
|
|
171
|
+
var _a, _b;
|
|
172
|
+
// No seki-drawer parent: stay open (standalone use).
|
|
173
|
+
if (!this.drawerConsumer.parent)
|
|
174
174
|
return;
|
|
175
|
-
|
|
176
|
-
const context = this.drawerEl._drawerContext;
|
|
177
|
-
this._isOpen = (_a = context === null || context === void 0 ? void 0 : context.isOpen) !== null && _a !== void 0 ? _a : false;
|
|
175
|
+
this._isOpen = (_b = (_a = this.drawerConsumer.context) === null || _a === void 0 ? void 0 : _a.isOpen) !== null && _b !== void 0 ? _b : false;
|
|
178
176
|
}
|
|
179
177
|
parseSnapPoints() {
|
|
180
178
|
const points = this.snapPoints
|
|
@@ -237,10 +235,7 @@ export class SekiDrawerContent {
|
|
|
237
235
|
}
|
|
238
236
|
}
|
|
239
237
|
disconnectedCallback() {
|
|
240
|
-
|
|
241
|
-
(_a = this.drawerEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('drawerOpen', this.onDrawerOpenChange);
|
|
242
|
-
(_b = this.drawerEl) === null || _b === void 0 ? void 0 : _b.removeEventListener('drawerClose', this.onDrawerOpenChange);
|
|
243
|
-
(_c = this.drawerEl) === null || _c === void 0 ? void 0 : _c.removeEventListener('drawerSnap', this.onDrawerOpenChange);
|
|
238
|
+
this.drawerConsumer.disconnect();
|
|
244
239
|
}
|
|
245
240
|
render() {
|
|
246
241
|
if (!this._isOpen) {
|
|
@@ -449,6 +444,9 @@ export class SekiDrawerContent {
|
|
|
449
444
|
static get elementRef() { return "el"; }
|
|
450
445
|
static get watchers() {
|
|
451
446
|
return [{
|
|
447
|
+
"propName": "direction",
|
|
448
|
+
"methodName": "propagateDirection"
|
|
449
|
+
}, {
|
|
452
450
|
"propName": "snapPoints",
|
|
453
451
|
"methodName": "parseSnapPoints"
|
|
454
452
|
}];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
|
+
import { publishContext } from "../../utils/context-bridge";
|
|
2
3
|
/**
|
|
3
4
|
* seki-drawer: Mobile-friendly drawer component with swipe gestures
|
|
4
5
|
*
|
|
@@ -40,8 +41,8 @@ export class SekiDrawer {
|
|
|
40
41
|
this._isOpen = this.open || this.defaultOpen;
|
|
41
42
|
this.open = this._isOpen;
|
|
42
43
|
this.currentSnapPoint = this._isOpen ? 1 : 0;
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
// Publish before the first render so `<seki-drawer open>` shows its content
|
|
45
|
+
// at first paint (#323).
|
|
45
46
|
this.updateContext();
|
|
46
47
|
}
|
|
47
48
|
handleOpenPropChange(newValue) {
|
|
@@ -111,9 +112,8 @@ export class SekiDrawer {
|
|
|
111
112
|
}
|
|
112
113
|
updateContext() {
|
|
113
114
|
// seki-drawer-content has no other way to know this drawer's open state —
|
|
114
|
-
// it reads this off the host element
|
|
115
|
-
|
|
116
|
-
this.el._drawerContext = { isOpen: this._isOpen };
|
|
115
|
+
// it reads this off the host element (see consumeContext in context-bridge).
|
|
116
|
+
publishContext(this.el, '_drawerContext', { isOpen: this._isOpen }, this.drawerContextChange);
|
|
117
117
|
}
|
|
118
118
|
handleTriggerClick() {
|
|
119
119
|
this.toggleDrawer();
|
|
@@ -130,10 +130,10 @@ export class SekiDrawer {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
render() {
|
|
133
|
-
return (h("div", { key: '
|
|
133
|
+
return (h("div", { key: '8e9c6c60ed2747b2e04f9057031fb98e98e39554', class: {
|
|
134
134
|
'seki-drawer': true,
|
|
135
135
|
'seki-drawer--open': this._isOpen,
|
|
136
|
-
}, "data-snap-point": this.currentSnapPoint, part: "drawer" }, h("slot", { key: '
|
|
136
|
+
}, "data-snap-point": this.currentSnapPoint, part: "drawer" }, h("slot", { key: '8366502b9a1aa0404dfbabaaeedbb4d6b5c52080' }), this._isOpen && (h("div", { key: '693cb80fc7442b8eb3083dbc13704cd6a8b87685', class: "seki-drawer-overlay", part: "overlay", onClick: () => this.closeDrawer() }))));
|
|
137
137
|
}
|
|
138
138
|
static get is() { return "seki-drawer"; }
|
|
139
139
|
static get encapsulation() { return "shadow"; }
|
|
@@ -258,6 +258,21 @@ export class SekiDrawer {
|
|
|
258
258
|
"resolved": "boolean",
|
|
259
259
|
"references": {}
|
|
260
260
|
}
|
|
261
|
+
}, {
|
|
262
|
+
"method": "drawerContextChange",
|
|
263
|
+
"name": "sekiContextChange",
|
|
264
|
+
"bubbles": true,
|
|
265
|
+
"cancelable": true,
|
|
266
|
+
"composed": true,
|
|
267
|
+
"docs": {
|
|
268
|
+
"tags": [],
|
|
269
|
+
"text": "Internal: notifies seki-drawer-content that `_drawerContext` changed. Not\npart of the public API; listen to `sekiOpenChange` instead."
|
|
270
|
+
},
|
|
271
|
+
"complexType": {
|
|
272
|
+
"original": "void",
|
|
273
|
+
"resolved": "void",
|
|
274
|
+
"references": {}
|
|
275
|
+
}
|
|
261
276
|
}];
|
|
262
277
|
}
|
|
263
278
|
static get methods() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
|
+
import { LabelBinding } from "../../utils/label-association";
|
|
2
3
|
export class SekiFieldLabel {
|
|
3
4
|
constructor() {
|
|
4
5
|
/**
|
|
@@ -7,9 +8,29 @@ export class SekiFieldLabel {
|
|
|
7
8
|
*/
|
|
8
9
|
this.required = false;
|
|
9
10
|
}
|
|
11
|
+
onForChange() {
|
|
12
|
+
var _a;
|
|
13
|
+
(_a = this.binding) === null || _a === void 0 ? void 0 : _a.sync();
|
|
14
|
+
}
|
|
15
|
+
/** Forward clicks to the labelled control (see utils/label-association.ts). */
|
|
16
|
+
onClick(event) {
|
|
17
|
+
var _a;
|
|
18
|
+
(_a = this.binding) === null || _a === void 0 ? void 0 : _a.handleClick(event);
|
|
19
|
+
}
|
|
20
|
+
connectedCallback() {
|
|
21
|
+
this.binding = new LabelBinding(this.el, () => this.htmlFor);
|
|
22
|
+
}
|
|
23
|
+
componentDidLoad() {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
(_a = this.binding) === null || _a === void 0 ? void 0 : _a.sync();
|
|
26
|
+
(_b = this.binding) === null || _b === void 0 ? void 0 : _b.observe();
|
|
27
|
+
}
|
|
28
|
+
disconnectedCallback() {
|
|
29
|
+
var _a;
|
|
30
|
+
(_a = this.binding) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
31
|
+
}
|
|
10
32
|
render() {
|
|
11
|
-
|
|
12
|
-
return (h("label", Object.assign({ key: 'ff0853ec0cd7216d1357f6a67d31d477ed244c24' }, labelProps), h("slot", { key: 'caf0af6159cd63804748b99a66d20c1f40a23111' }), this.required && h("span", { key: '0628546ed8740017449a543dcb1b2bfa279ff254', class: "required-indicator" }, " *")));
|
|
33
|
+
return (h("label", { key: '012428a2524290c08330f7e9163c4f040a01c5c4' }, h("slot", { key: 'fec4e4466151bf66657c4326fa8978dac8137692', onSlotchange: () => { var _a; return (_a = this.binding) === null || _a === void 0 ? void 0 : _a.sync(); } }), this.required && h("span", { key: 'b21ecf7ad0432714e7160bf0ec911450eb1f7027', class: "required-indicator" }, " *")));
|
|
13
34
|
}
|
|
14
35
|
static get is() { return "seki-field-label"; }
|
|
15
36
|
static get encapsulation() { return "shadow"; }
|
|
@@ -37,7 +58,7 @@ export class SekiFieldLabel {
|
|
|
37
58
|
"optional": true,
|
|
38
59
|
"docs": {
|
|
39
60
|
"tags": [],
|
|
40
|
-
"text": "ID of the form control this label is for\
|
|
61
|
+
"text": "ID of the form control this label is for\nResolved in the label's own root node (not this component's shadow root), so it\nreaches light-DOM controls. Falls back to the control nested in the label."
|
|
41
62
|
},
|
|
42
63
|
"getter": false,
|
|
43
64
|
"setter": false,
|
|
@@ -67,4 +88,19 @@ export class SekiFieldLabel {
|
|
|
67
88
|
};
|
|
68
89
|
}
|
|
69
90
|
static get elementRef() { return "el"; }
|
|
91
|
+
static get watchers() {
|
|
92
|
+
return [{
|
|
93
|
+
"propName": "htmlFor",
|
|
94
|
+
"methodName": "onForChange"
|
|
95
|
+
}];
|
|
96
|
+
}
|
|
97
|
+
static get listeners() {
|
|
98
|
+
return [{
|
|
99
|
+
"name": "click",
|
|
100
|
+
"method": "onClick",
|
|
101
|
+
"target": undefined,
|
|
102
|
+
"capture": false,
|
|
103
|
+
"passive": false
|
|
104
|
+
}];
|
|
105
|
+
}
|
|
70
106
|
}
|