@verbb/plugin-kit-web 2.0.22 → 2.0.24
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/CHANGELOG.md +20 -0
- package/custom-elements.json +8414 -7031
- package/dist/chunks/{active-elements-BwpXu8Lb.js → active-elements-739kISON.js} +1 -1
- package/dist/chunks/{active-elements-BwpXu8Lb.js.map → active-elements-739kISON.js.map} +1 -1
- package/dist/chunks/{animate-with-class-CsDwYnXL.js → animate-with-class-CjTZI0NU.js} +1 -1
- package/dist/chunks/{animate-with-class-CsDwYnXL.js.map → animate-with-class-CjTZI0NU.js.map} +1 -1
- package/dist/chunks/{autoloader-dJO3tYOX.js → autoloader-DcwybeWc.js} +3 -3
- package/dist/chunks/{autoloader-dJO3tYOX.js.map → autoloader-DcwybeWc.js.map} +1 -1
- package/dist/chunks/{button-group-item.styles-DYmBR28a.js → button-group-item.styles-D7tuu-sr.js} +1 -1
- package/dist/chunks/{button-group-item.styles-DYmBR28a.js.map → button-group-item.styles-D7tuu-sr.js.map} +1 -1
- package/dist/chunks/{component-registry-D34fm8xW.js → component-registry-B5pnAZsb.js} +6 -1
- package/dist/chunks/component-registry-B5pnAZsb.js.map +1 -0
- package/dist/chunks/{control-aria-B2QMq4ji.js → control-aria-CtNg2izr.js} +1 -1
- package/dist/chunks/{control-aria-B2QMq4ji.js.map → control-aria-CtNg2izr.js.map} +1 -1
- package/dist/chunks/{decorate-R0X811qp.js → decorate-Br_PE9pq.js} +3 -4
- package/dist/chunks/{decorate-R0X811qp.js.map → decorate-Br_PE9pq.js.map} +1 -1
- package/dist/chunks/decorators-BkErmuYK.js +2 -0
- package/dist/chunks/{dismissible-stack-XQUMfKO3.js → dismissible-stack-CwhtwAyo.js} +1 -1
- package/dist/chunks/{dismissible-stack-XQUMfKO3.js.map → dismissible-stack-CwhtwAyo.js.map} +1 -1
- package/dist/chunks/{field-labels-CmuAW8Cl.js → field-labels-pY-gQDwQ.js} +1 -1
- package/dist/chunks/{field-labels-CmuAW8Cl.js.map → field-labels-pY-gQDwQ.js.map} +1 -1
- package/dist/chunks/{focus-aa5dlv8k.js → focus-DcVUPVqn.js} +2 -2
- package/dist/chunks/{focus-aa5dlv8k.js.map → focus-DcVUPVqn.js.map} +1 -1
- package/dist/chunks/{form-control.styles-BQdimE5o.js → form-control.styles-CQ93gnVf.js} +1 -1
- package/dist/chunks/{form-control.styles-BQdimE5o.js.map → form-control.styles-CQ93gnVf.js.map} +1 -1
- package/dist/chunks/{has-slot-8BvCt_qo.js → has-slot-DJv86HKx.js} +1 -1
- package/dist/chunks/{has-slot-8BvCt_qo.js.map → has-slot-DJv86HKx.js.map} +1 -1
- package/dist/chunks/{icon.styles-BLTWLqYp.js → icon.styles-KWvfi7RV.js} +1 -1
- package/dist/chunks/{icon.styles-BLTWLqYp.js.map → icon.styles-KWvfi7RV.js.map} +1 -1
- package/dist/chunks/{icons-BR8JcQj2.js → icons-k1pvx6yX.js} +2 -2
- package/dist/chunks/{icons-BR8JcQj2.js.map → icons-k1pvx6yX.js.map} +1 -1
- package/dist/chunks/{mirror-validator-DCjNYrrx.js → mirror-validator-BkZlEv1Z.js} +1 -1
- package/dist/chunks/{mirror-validator-DCjNYrrx.js.map → mirror-validator-BkZlEv1Z.js.map} +1 -1
- package/dist/chunks/{option-filter-BQqr8Z21.js → option-filter-BkKyBg8L.js} +2 -2
- package/dist/chunks/{option-filter-BQqr8Z21.js.map → option-filter-BkKyBg8L.js.map} +1 -1
- package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js → overlay-lifecycle-C582MGBJ.js} +1 -1
- package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js.map → overlay-lifecycle-C582MGBJ.js.map} +1 -1
- package/dist/chunks/pk-alert-BQAb4lJc.js +666 -0
- package/dist/chunks/pk-alert-BQAb4lJc.js.map +1 -0
- package/dist/chunks/{pk-autocomplete-qy2Psvqm.js → pk-autocomplete-DUXhs1hi.js} +21 -20
- package/dist/chunks/pk-autocomplete-DUXhs1hi.js.map +1 -0
- package/dist/chunks/{pk-button-group-BSz5T5iS.js → pk-button-group-BY12Lbk7.js} +10 -7
- package/dist/chunks/pk-button-group-BY12Lbk7.js.map +1 -0
- package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js → pk-button-group-separator-B1a8dP9A.js} +3 -2
- package/dist/chunks/pk-button-group-separator-B1a8dP9A.js.map +1 -0
- package/dist/chunks/{pk-button-group-text-Qro_KmZb.js → pk-button-group-text-CWNlZkyV.js} +3 -3
- package/dist/chunks/pk-button-group-text-CWNlZkyV.js.map +1 -0
- package/dist/chunks/{pk-button-BrH4u4Qr.js → pk-button-ntSVrer_.js} +8 -7
- package/dist/chunks/pk-button-ntSVrer_.js.map +1 -0
- package/dist/chunks/{pk-calendar-Z7Y0PjeY.js → pk-calendar-Df0c5u79.js} +12 -11
- package/dist/chunks/pk-calendar-Df0c5u79.js.map +1 -0
- package/dist/chunks/{pk-checkbox-13ArHSmt.js → pk-checkbox-L5uRex3b.js} +6 -5
- package/dist/chunks/pk-checkbox-L5uRex3b.js.map +1 -0
- package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js → pk-checkbox-select-6OS0wFYO.js} +4 -3
- package/dist/chunks/pk-checkbox-select-6OS0wFYO.js.map +1 -0
- package/dist/chunks/{pk-clear--mPWZP7H.js → pk-clear-DHxP_2cm.js} +1 -1
- package/dist/chunks/{pk-clear--mPWZP7H.js.map → pk-clear-DHxP_2cm.js.map} +1 -1
- package/dist/chunks/{pk-code-editor-BlG6O5qB.js → pk-code-editor-vZriNR67.js} +6 -5
- package/dist/chunks/pk-code-editor-vZriNR67.js.map +1 -0
- package/dist/chunks/{pk-color-input-BRgQ5-vB.js → pk-color-input-Csbm4ROT.js} +6 -5
- package/dist/chunks/pk-color-input-Csbm4ROT.js.map +1 -0
- package/dist/chunks/{pk-combobox-ag89QEX2.js → pk-combobox-BrSBrldb.js} +25 -23
- package/dist/chunks/pk-combobox-BrSBrldb.js.map +1 -0
- package/dist/chunks/{pk-connect.styles-BhW406jt.js → pk-connect.styles-oKhxa_m2.js} +1 -1
- package/dist/chunks/{pk-connect.styles-BhW406jt.js.map → pk-connect.styles-oKhxa_m2.js.map} +1 -1
- package/dist/chunks/{pk-copy-button-BVaOLtYG.js → pk-copy-button-5i9v_zmu.js} +31 -9
- package/dist/chunks/pk-copy-button-5i9v_zmu.js.map +1 -0
- package/dist/chunks/{pk-date-picker-C2YvDPNm.js → pk-date-picker-C-w6Mn6j.js} +21 -20
- package/dist/chunks/pk-date-picker-C-w6Mn6j.js.map +1 -0
- package/dist/chunks/{pk-dialog-VMQqLW1f.js → pk-dialog-C7KZGpQs.js} +10 -9
- package/dist/chunks/pk-dialog-C7KZGpQs.js.map +1 -0
- package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js → pk-dropdown-item-Ck2N_suK.js} +11 -8
- package/dist/chunks/pk-dropdown-item-Ck2N_suK.js.map +1 -0
- package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js → pk-dropdown-label-BdZLeizJ.js} +2 -2
- package/dist/chunks/pk-dropdown-label-BdZLeizJ.js.map +1 -0
- package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js → pk-dropdown-menu-DBsO1uYR.js} +22 -18
- package/dist/chunks/pk-dropdown-menu-DBsO1uYR.js.map +1 -0
- package/dist/chunks/{pk-editable-table-DDnu1I8Y.js → pk-editable-table-Cd8K6vT4.js} +26 -23
- package/dist/chunks/pk-editable-table-Cd8K6vT4.js.map +1 -0
- package/dist/chunks/{pk-field-UAlMq6mQ.js → pk-field--PCE9nOd.js} +9 -8
- package/dist/chunks/pk-field--PCE9nOd.js.map +1 -0
- package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js → pk-form-associated-element-Doh2K3pG.js} +3 -3
- package/dist/chunks/pk-form-associated-element-Doh2K3pG.js.map +1 -0
- package/dist/chunks/{pk-image-browser-Bj8LhWfk.js → pk-image-browser-iUqdcLKs.js} +21 -21
- package/dist/chunks/pk-image-browser-iUqdcLKs.js.map +1 -0
- package/dist/chunks/{pk-input-BywmK5n2.js → pk-input-BUbXj9We.js} +14 -13
- package/dist/chunks/pk-input-BUbXj9We.js.map +1 -0
- package/dist/chunks/{pk-input-group-BLqKPnfc.js → pk-input-group-CN79c5HT.js} +5 -4
- package/dist/chunks/pk-input-group-CN79c5HT.js.map +1 -0
- package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js → pk-input-group-addon-DpxfuYp1.js} +3 -2
- package/dist/chunks/pk-input-group-addon-DpxfuYp1.js.map +1 -0
- package/dist/chunks/{pk-input-group-button-CHQHsWd4.js → pk-input-group-button-D5Hm4saA.js} +3 -2
- package/dist/chunks/pk-input-group-button-D5Hm4saA.js.map +1 -0
- package/dist/chunks/{pk-input-group-input-oNnqMBGU.js → pk-input-group-input-Cm1MoHgN.js} +3 -2
- package/dist/chunks/pk-input-group-input-Cm1MoHgN.js.map +1 -0
- package/dist/chunks/{pk-input-group-text-HUxlXROB.js → pk-input-group-text-CtyJZ_Kg.js} +2 -2
- package/dist/chunks/pk-input-group-text-CtyJZ_Kg.js.map +1 -0
- package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js → pk-input-group-textarea-BxmKGjdt.js} +3 -2
- package/dist/chunks/pk-input-group-textarea-BxmKGjdt.js.map +1 -0
- package/dist/chunks/{pk-lightswitch-VHfJizBW.js → pk-lightswitch-CSvgiHVQ.js} +9 -8
- package/dist/chunks/pk-lightswitch-CSvgiHVQ.js.map +1 -0
- package/dist/chunks/{pk-option-DQZHV9jL.js → pk-option-B_PF4v_Z.js} +9 -7
- package/dist/chunks/pk-option-B_PF4v_Z.js.map +1 -0
- package/dist/chunks/{pk-option-group-CCzJkBFp.js → pk-option-group-D6bHfn0j.js} +4 -3
- package/dist/chunks/pk-option-group-D6bHfn0j.js.map +1 -0
- package/dist/chunks/{pk-popover-D3jkHfwB.js → pk-popover-BOoGfR7I.js} +11 -10
- package/dist/chunks/pk-popover-BOoGfR7I.js.map +1 -0
- package/dist/chunks/{pk-popup-B65tZMQH.js → pk-popup-DVE93VSV.js} +32 -28
- package/dist/chunks/pk-popup-DVE93VSV.js.map +1 -0
- package/dist/chunks/{pk-radio-B5XkMHy3.js → pk-radio-D0eqmnlH.js} +3 -2
- package/dist/chunks/pk-radio-D0eqmnlH.js.map +1 -0
- package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js → pk-radio-group-BehEZG_k.js} +8 -7
- package/dist/chunks/pk-radio-group-BehEZG_k.js.map +1 -0
- package/dist/chunks/{pk-scroll-area-CdfNxYz8.js → pk-scroll-area-BeaLZ6k-.js} +3 -2
- package/dist/chunks/pk-scroll-area-BeaLZ6k-.js.map +1 -0
- package/dist/chunks/{pk-select-b5S5WKc-.js → pk-select-DZNpEk5Z.js} +20 -19
- package/dist/chunks/pk-select-DZNpEk5Z.js.map +1 -0
- package/dist/chunks/{pk-separator-N-VyjYE6.js → pk-separator-ZkRowI5Y.js} +3 -2
- package/dist/chunks/pk-separator-ZkRowI5Y.js.map +1 -0
- package/dist/chunks/{pk-spinner-DweuYJ_Z.js → pk-spinner-Bxkn4iVO.js} +3 -2
- package/dist/chunks/pk-spinner-Bxkn4iVO.js.map +1 -0
- package/dist/chunks/pk-state-panel-BTo2xiug.js +604 -0
- package/dist/chunks/pk-state-panel-BTo2xiug.js.map +1 -0
- package/dist/chunks/{pk-status-BehQARDv.js → pk-status-CdiRBRyh.js} +3 -2
- package/dist/chunks/pk-status-CdiRBRyh.js.map +1 -0
- package/dist/chunks/{pk-tab-CTloD18e.js → pk-tab-CSbI3XxX.js} +2 -2
- package/dist/chunks/pk-tab-CSbI3XxX.js.map +1 -0
- package/dist/chunks/{pk-tab-heading-Cjcgebxn.js → pk-tab-heading-BMyLTBNc.js} +2 -2
- package/dist/chunks/pk-tab-heading-BMyLTBNc.js.map +1 -0
- package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js → pk-tab-panel-sgdRjV8o.js} +2 -2
- package/dist/chunks/pk-tab-panel-sgdRjV8o.js.map +1 -0
- package/dist/chunks/{pk-tabs-BgEBki1q.js → pk-tabs-bBNCu_4h.js} +10 -7
- package/dist/chunks/pk-tabs-bBNCu_4h.js.map +1 -0
- package/dist/chunks/{pk-textarea-Dhj1WFLH.js → pk-textarea-B401dUWa.js} +11 -10
- package/dist/chunks/pk-textarea-B401dUWa.js.map +1 -0
- package/dist/chunks/{pk-time-picker-ChRbKHNB.js → pk-time-picker-DnNZVwRk.js} +6 -6
- package/dist/chunks/pk-time-picker-DnNZVwRk.js.map +1 -0
- package/dist/chunks/{pk-tiptap-content-CL8smjGi.js → pk-tiptap-content-C2qzGQKj.js} +4 -3
- package/dist/chunks/pk-tiptap-content-C2qzGQKj.js.map +1 -0
- package/dist/chunks/{pk-tiptap-editor-BMwedkPt.js → pk-tiptap-editor-y_QyNSR-.js} +20 -21
- package/dist/chunks/pk-tiptap-editor-y_QyNSR-.js.map +1 -0
- package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js → pk-tiptap-input-0Xy6rrot.js} +7 -6
- package/dist/chunks/pk-tiptap-input-0Xy6rrot.js.map +1 -0
- package/dist/chunks/{pk-toggle-BthhH7vl.js → pk-toggle-Co8GsHuK.js} +4 -3
- package/dist/chunks/pk-toggle-Co8GsHuK.js.map +1 -0
- package/dist/chunks/{pk-toggle-group-D2Quux8D.js → pk-toggle-group-Ct1ljI-7.js} +7 -4
- package/dist/chunks/pk-toggle-group-Ct1ljI-7.js.map +1 -0
- package/dist/chunks/{pk-tooltip--QBV6puX.js → pk-tooltip-Cvv2f7T5.js} +7 -6
- package/dist/chunks/pk-tooltip-Cvv2f7T5.js.map +1 -0
- package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js → popup-content-animation.styles-CJ8zGJz-.js} +1 -1
- package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js.map → popup-content-animation.styles-CJ8zGJz-.js.map} +1 -1
- package/dist/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-ClUYI79z.js} +1 -1
- package/dist/chunks/{popup-placement-animation-WlEXnS85.js.map → popup-placement-animation-ClUYI79z.js.map} +1 -1
- package/dist/chunks/{popup-pointer-CuLjk1th.js → popup-pointer-Bh_d205v.js} +1 -1
- package/dist/chunks/{popup-pointer-CuLjk1th.js.map → popup-pointer-Bh_d205v.js.map} +1 -1
- package/dist/chunks/{register-components-BT9THgdh.js → register-components-CZtpgZe3.js} +1 -1
- package/dist/chunks/{register-components-BT9THgdh.js.map → register-components-CZtpgZe3.js.map} +1 -1
- package/dist/chunks/{render-Dvc3MHQR.js → render-DQZp_Rak.js} +1 -1
- package/dist/chunks/{render-Dvc3MHQR.js.map → render-DQZp_Rak.js.map} +1 -1
- package/dist/chunks/{required-validator-CEg8dvjS.js → required-validator-I58oJGZ3.js} +1 -1
- package/dist/chunks/{required-validator-CEg8dvjS.js.map → required-validator-I58oJGZ3.js.map} +1 -1
- package/dist/chunks/{scroll-lock-Bbh3Sc5g.js → scroll-lock-DE1pElMQ.js} +2 -2
- package/dist/chunks/{scroll-lock-Bbh3Sc5g.js.map → scroll-lock-DE1pElMQ.js.map} +1 -1
- package/dist/chunks/{spinner-utils-CDfHypTv.js → spinner-utils-DXwIxQ6z.js} +1 -1
- package/dist/chunks/{spinner-utils-CDfHypTv.js.map → spinner-utils-DXwIxQ6z.js.map} +1 -1
- package/dist/chunks/{supports-popover-CUBsbHpS.js → supports-popover-BCqyOPtO.js} +1 -1
- package/dist/chunks/{supports-popover-CUBsbHpS.js.map → supports-popover-BCqyOPtO.js.map} +1 -1
- package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js → sync-listbox-separators-saLEtPpJ.js} +2 -2
- package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js.map → sync-listbox-separators-saLEtPpJ.js.map} +1 -1
- package/dist/chunks/{tiptap.styles-CPRows--.js → tiptap.styles-Q4ED1nBw.js} +2 -2
- package/dist/chunks/{tiptap.styles-CPRows--.js.map → tiptap.styles-Q4ED1nBw.js.map} +1 -1
- package/dist/component-registry.d.ts.map +1 -1
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/pk-alert.d.ts +95 -0
- package/dist/components/alert/pk-alert.d.ts.map +1 -0
- package/dist/components/alert/pk-alert.js +2 -0
- package/dist/components/alert/pk-alert.styles.d.ts +2 -0
- package/dist/components/alert/pk-alert.styles.d.ts.map +1 -0
- package/dist/components/alert.d.ts +2 -0
- package/dist/components/alert.js +2 -0
- package/dist/components/autocomplete/pk-autocomplete.js +1 -1
- package/dist/components/autocomplete.js +1 -1
- package/dist/components/button/pk-button.js +1 -1
- package/dist/components/button-group/pk-button-group-separator.js +1 -1
- package/dist/components/button-group/pk-button-group-text.js +1 -1
- package/dist/components/button-group/pk-button-group.js +1 -1
- package/dist/components/button-group.js +3 -3
- package/dist/components/button.js +1 -1
- package/dist/components/calendar/pk-calendar.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/checkbox/pk-checkbox.js +1 -1
- package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
- package/dist/components/checkbox-select.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-editor/pk-code-editor.js +1 -1
- package/dist/components/code-editor.js +1 -1
- package/dist/components/color-input/pk-color-input.js +1 -1
- package/dist/components/color-input.js +1 -1
- package/dist/components/combobox/pk-combobox.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/connect/pk-connect-oauth.js +5 -4
- package/dist/components/connect/pk-connect-oauth.js.map +1 -1
- package/dist/components/connect/pk-connect.d.ts +0 -1
- package/dist/components/connect/pk-connect.d.ts.map +1 -1
- package/dist/components/connect/pk-connect.js +27 -49
- package/dist/components/connect/pk-connect.js.map +1 -1
- package/dist/components/copy-button/pk-copy-button.d.ts +17 -2
- package/dist/components/copy-button/pk-copy-button.d.ts.map +1 -1
- package/dist/components/copy-button/pk-copy-button.js +1 -1
- package/dist/components/copy-button/pk-copy-button.styles.d.ts.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/date-picker/pk-date-picker.js +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/dialog/pk-dialog.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
- package/dist/components/dropdown-menu.js +3 -3
- package/dist/components/editable-table/pk-editable-table.js +1 -1
- package/dist/components/editable-table.js +1 -1
- package/dist/components/field/pk-field.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/icon/pk-icon.js +2 -1
- package/dist/components/icon/pk-icon.js.map +1 -1
- package/dist/components/image-browser/pk-image-browser.js +1 -1
- package/dist/components/image-browser.js +1 -1
- package/dist/components/input/pk-input.js +1 -1
- package/dist/components/input-group/pk-input-group-addon.js +1 -1
- package/dist/components/input-group/pk-input-group-button.js +1 -1
- package/dist/components/input-group/pk-input-group-input.js +1 -1
- package/dist/components/input-group/pk-input-group-text.js +1 -1
- package/dist/components/input-group/pk-input-group-textarea.js +1 -1
- package/dist/components/input-group/pk-input-group.js +1 -1
- package/dist/components/input-group.js +6 -6
- package/dist/components/input.js +1 -1
- package/dist/components/lightswitch/pk-lightswitch.js +1 -1
- package/dist/components/lightswitch.js +1 -1
- package/dist/components/popover/pk-popover.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popup/pk-popup.js +1 -1
- package/dist/components/popup.js +1 -1
- package/dist/components/radio-group/pk-radio-group.js +1 -1
- package/dist/components/radio-group/pk-radio.js +1 -1
- package/dist/components/radio-group.js +2 -2
- package/dist/components/scroll-area/pk-scroll-area.js +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/select/pk-option-group.js +1 -1
- package/dist/components/select/pk-option.js +1 -1
- package/dist/components/select/pk-select.js +1 -1
- package/dist/components/select.js +3 -3
- package/dist/components/separator/pk-separator.js +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/spinner/pk-spinner.js +1 -1
- package/dist/components/spinner.js +2 -2
- package/dist/components/state-panel/index.d.ts +2 -0
- package/dist/components/state-panel/index.d.ts.map +1 -0
- package/dist/components/state-panel/pk-state-panel.d.ts +89 -0
- package/dist/components/state-panel/pk-state-panel.d.ts.map +1 -0
- package/dist/components/state-panel/pk-state-panel.js +2 -0
- package/dist/components/state-panel/pk-state-panel.styles.d.ts +2 -0
- package/dist/components/state-panel/pk-state-panel.styles.d.ts.map +1 -0
- package/dist/components/state-panel.d.ts +2 -0
- package/dist/components/state-panel.js +2 -0
- package/dist/components/status/pk-status.js +1 -1
- package/dist/components/status.js +1 -1
- package/dist/components/tabs/pk-tab-heading.js +1 -1
- package/dist/components/tabs/pk-tab-panel.js +1 -1
- package/dist/components/tabs/pk-tab.js +1 -1
- package/dist/components/tabs/pk-tabs.js +1 -1
- package/dist/components/tabs.js +4 -4
- package/dist/components/textarea/pk-textarea.js +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/time-picker/pk-time-picker.js +1 -1
- package/dist/components/time-picker.js +1 -1
- package/dist/components/tiptap/pk-tiptap-content.js +1 -1
- package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
- package/dist/components/tiptap/pk-tiptap-input.js +1 -1
- package/dist/components/tiptap-content.js +1 -1
- package/dist/components/tiptap-editor.js +1 -1
- package/dist/components/tiptap-input.js +1 -1
- package/dist/components/toggle/pk-toggle.js +1 -1
- package/dist/components/toggle-group/pk-toggle-group.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/tooltip/pk-tooltip.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/connect/register-cp-connect.d.ts.map +1 -1
- package/dist/connect/register-cp-connect.js +8 -9
- package/dist/connect/register-cp-connect.js.map +1 -1
- package/dist/events/pk-dismiss.d.ts +10 -0
- package/dist/events/pk-dismiss.d.ts.map +1 -0
- package/dist/icons/index.js +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -67
- package/dist/index.js.map +1 -1
- package/dist/plugin-kit.css +2 -0
- package/dist/plugin-kit.js +4 -4
- package/dist/plugin-kit.js.map +1 -1
- package/dist/register-components.js +1 -1
- package/dist/register-pk.generated.d.ts +4 -0
- package/dist/register-pk.generated.d.ts.map +1 -1
- package/dist/register.d.ts +5 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +124 -55
- package/dist/register.js.map +1 -0
- package/dist/styles/connect/pk-connect.css +6 -107
- package/dist/utilities/fouce.css +2 -0
- package/dist-loader/chunks/{button-group-item.styles-CsBQ3Cyh.js → button-group-item.styles-BQbvE3sC.js} +1 -1
- package/dist-loader/chunks/{codemirror-CSgOT0QM.js → codemirror-C_TTKlG1.js} +584 -436
- package/dist-loader/chunks/editor-CS16rBkM.js +110 -0
- package/dist-loader/chunks/{floating-ui-Cj0imr6d.js → floating-ui-BJQPB-Ip.js} +9 -11
- package/dist-loader/chunks/{lit-DpLik9Rf.js → lit-B6nFKgbW.js} +127 -89
- package/dist-loader/chunks/{option-filter-Bc5aNNT0.js → option-filter-BkKyBg8L.js} +1 -1
- package/dist-loader/chunks/{pk-a11y-CjB4-U-R.js → pk-a11y-mGj0G5AE.js} +1 -1
- package/dist-loader/chunks/{pk-base-B2MqxErC.js → pk-base-BGegy7-X.js} +2 -2
- package/dist-loader/chunks/{pk-button-Dfm23jEC.js → pk-button-DV9Tk5Pd.js} +5 -5
- package/dist-loader/chunks/{pk-calendar-BuSULJCU.js → pk-calendar-C0xpIVIw.js} +9 -9
- package/dist-loader/chunks/{pk-checkbox-BDoq3xg0.js → pk-checkbox-DhP0iMoP.js} +9 -6
- package/dist-loader/chunks/{pk-color-input-eLjO9zfn.js → pk-color-input-B02cYzyr.js} +4 -4
- package/dist-loader/chunks/{pk-combobox-DBvcyxRC.js → pk-combobox-S_tpNUHK.js} +19 -18
- package/dist-loader/chunks/{pk-connect.styles-k61snd3X.js → pk-connect.styles-B5qe5yQB.js} +1 -1
- package/dist-loader/chunks/pk-copy-button-D6tPuhJ3.js +198 -0
- package/dist-loader/chunks/{pk-date-picker-CYLpYIji.js → pk-date-picker-C0y4sfSf.js} +15 -15
- package/dist-loader/chunks/{pk-dialog-BtrH5Ke0.js → pk-dialog-BJs5fVHS.js} +7 -7
- package/dist-loader/chunks/{pk-dropdown-item-D8tfEU-k.js → pk-dropdown-item-Bs5NZDRh.js} +11 -9
- package/dist-loader/chunks/{pk-dropdown-label-TbLj4bHK.js → pk-dropdown-label-Cpl9-bzB.js} +2 -2
- package/dist-loader/chunks/{pk-dropdown-menu-C4GDW5pE.js → pk-dropdown-menu-CLrfuD3i.js} +20 -17
- package/dist-loader/chunks/{pk-field-BM0XD9Ij.js → pk-field-Pg61fxBR.js} +140 -74
- package/dist-loader/chunks/{pk-icon-_1F1aL74.js → pk-icon-B7ywfPb6.js} +4 -4
- package/dist-loader/chunks/{pk-input-DvBrD7Md.js → pk-input-Cj5s8eBT.js} +10 -10
- package/dist-loader/chunks/{pk-lightswitch-CcwlLQ9f.js → pk-lightswitch-rUGB1p8q.js} +6 -6
- package/dist-loader/chunks/{pk-option-DATPm0Bo.js → pk-option-B-MeLvZf.js} +8 -7
- package/dist-loader/chunks/{pk-popup-CUuGs8r_.js → pk-popup-CeyruJFh.js} +35 -29
- package/dist-loader/chunks/{pk-select-DpcvbzUL.js → pk-select-JUx3mxRS.js} +14 -14
- package/dist-loader/chunks/{pk-spinner-Dk_LbvHW.js → pk-spinner-B8iuHDQ9.js} +2 -2
- package/dist-loader/chunks/pk-state-panel-BhdZGllL.js +600 -0
- package/dist-loader/chunks/{pk-status-B8UvjIp2.js → pk-status-D3qVwWlR.js} +2 -2
- package/dist-loader/chunks/{pk-textarea-DeSuxufJ.js → pk-textarea-KnpJMQX2.js} +7 -7
- package/dist-loader/chunks/{pk-time-picker-DpJt8biN.js → pk-time-picker-DCqZ5z7M.js} +6 -6
- package/dist-loader/chunks/{pk-tooltip-DcF9J5GT.js → pk-tooltip-DStkplzy.js} +6 -6
- package/dist-loader/chunks/{popup-content-animation.styles-duCg9-CH.js → popup-content-animation.styles-BtUVJg82.js} +1 -1
- package/dist-loader/chunks/{render-Bnzcxfss.js → render-D9G_a_c2.js} +1 -1
- package/dist-loader/chunks/{svg-Bz-bXZn7.js → svg-BRgqS9vA.js} +8 -1
- package/dist-loader/chunks/{sync-listbox-separators-Ch5krDUs.js → sync-listbox-separators-saLEtPpJ.js} +1 -1
- package/dist-loader/chunks/{tiptap-CgXkiK8d.js → tiptap-uppXgD5k.js} +16099 -9213
- package/dist-loader/chunks/tiptap.styles-CyqI_Wrl.js +896 -0
- package/dist-loader/components/alert/alert.js +662 -0
- package/dist-loader/components/autocomplete/autocomplete.js +15 -15
- package/dist-loader/components/button/button.js +1 -1
- package/dist-loader/components/button-group/button-group-separator.js +2 -2
- package/dist-loader/components/button-group/button-group-text.js +3 -3
- package/dist-loader/components/button-group/button-group.js +9 -7
- package/dist-loader/components/calendar/calendar.js +1 -1
- package/dist-loader/components/checkbox/checkbox.js +1 -1
- package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
- package/dist-loader/components/code-editor/code-editor.js +4 -4
- package/dist-loader/components/color-input/color-input.js +1 -1
- package/dist-loader/components/combobox/combobox.js +1 -1
- package/dist-loader/components/connect/connect-oauth.js +5 -5
- package/dist-loader/components/connect/connect.js +28 -51
- package/dist-loader/components/copy-button/copy-button.js +1 -176
- package/dist-loader/components/date-picker/date-picker.js +1 -1
- package/dist-loader/components/dialog/dialog.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
- package/dist-loader/components/editable-table/editable-table.js +25 -23
- package/dist-loader/components/field/field.js +1 -1
- package/dist-loader/components/icon/icon.js +3 -3
- package/dist-loader/components/image-browser/image-browser.js +15 -16
- package/dist-loader/components/input/input.js +1 -1
- package/dist-loader/components/input-group/input-group-addon.js +2 -2
- package/dist-loader/components/input-group/input-group-button.js +2 -2
- package/dist-loader/components/input-group/input-group-input.js +2 -2
- package/dist-loader/components/input-group/input-group-text.js +2 -2
- package/dist-loader/components/input-group/input-group-textarea.js +2 -2
- package/dist-loader/components/input-group/input-group.js +3 -3
- package/dist-loader/components/lightswitch/lightswitch.js +1 -1
- package/dist-loader/components/popover/popover.js +9 -9
- package/dist-loader/components/popup/popup.js +1 -1
- package/dist-loader/components/radio-group/radio-group.js +5 -5
- package/dist-loader/components/radio-group/radio.js +2 -2
- package/dist-loader/components/scroll-area/scroll-area.js +2 -2
- package/dist-loader/components/select/option-group.js +3 -3
- package/dist-loader/components/select/option.js +1 -1
- package/dist-loader/components/select/select.js +1 -1
- package/dist-loader/components/separator/separator.js +2 -2
- package/dist-loader/components/spinner/spinner.js +1 -1
- package/dist-loader/components/state-panel/state-panel.js +2 -0
- package/dist-loader/components/status/status.js +1 -1
- package/dist-loader/components/tabs/tab-heading.js +2 -2
- package/dist-loader/components/tabs/tab-panel.js +2 -2
- package/dist-loader/components/tabs/tab.js +2 -2
- package/dist-loader/components/tabs/tabs.js +9 -7
- package/dist-loader/components/textarea/textarea.js +1 -1
- package/dist-loader/components/time-picker/time-picker.js +1 -1
- package/dist-loader/components/tiptap/tiptap-content.js +5 -4
- package/dist-loader/components/tiptap/tiptap-editor.js +595 -21
- package/dist-loader/components/tiptap/tiptap-input.js +273 -5
- package/dist-loader/components/toggle/toggle.js +3 -3
- package/dist-loader/components/toggle-group/toggle-group.js +6 -4
- package/dist-loader/components/tooltip/tooltip.js +1 -1
- package/dist-loader/plugin-kit.css +2 -0
- package/dist-loader/plugin-kit.loader.js +6 -1
- package/dist-loader/styles/connect/pk-connect.css +6 -107
- package/dist-loader/utilities/fouce.css +2 -0
- package/package.json +49 -9
- package/dist/chunks/component-registry-D34fm8xW.js.map +0 -1
- package/dist/chunks/pk-autocomplete-qy2Psvqm.js.map +0 -1
- package/dist/chunks/pk-button-BrH4u4Qr.js.map +0 -1
- package/dist/chunks/pk-button-group-BSz5T5iS.js.map +0 -1
- package/dist/chunks/pk-button-group-separator-DH3Rl24b.js.map +0 -1
- package/dist/chunks/pk-button-group-text-Qro_KmZb.js.map +0 -1
- package/dist/chunks/pk-calendar-Z7Y0PjeY.js.map +0 -1
- package/dist/chunks/pk-checkbox-13ArHSmt.js.map +0 -1
- package/dist/chunks/pk-checkbox-select-Ckvfbu83.js.map +0 -1
- package/dist/chunks/pk-code-editor-BlG6O5qB.js.map +0 -1
- package/dist/chunks/pk-color-input-BRgQ5-vB.js.map +0 -1
- package/dist/chunks/pk-combobox-ag89QEX2.js.map +0 -1
- package/dist/chunks/pk-copy-button-BVaOLtYG.js.map +0 -1
- package/dist/chunks/pk-date-picker-C2YvDPNm.js.map +0 -1
- package/dist/chunks/pk-dialog-VMQqLW1f.js.map +0 -1
- package/dist/chunks/pk-dropdown-item-D9OaG5o-.js.map +0 -1
- package/dist/chunks/pk-dropdown-label-CRNWMWQd.js.map +0 -1
- package/dist/chunks/pk-dropdown-menu-DW1wI8xQ.js.map +0 -1
- package/dist/chunks/pk-editable-table-DDnu1I8Y.js.map +0 -1
- package/dist/chunks/pk-field-UAlMq6mQ.js.map +0 -1
- package/dist/chunks/pk-form-associated-element-GxX5lbnk.js.map +0 -1
- package/dist/chunks/pk-image-browser-Bj8LhWfk.js.map +0 -1
- package/dist/chunks/pk-input-BywmK5n2.js.map +0 -1
- package/dist/chunks/pk-input-group-BLqKPnfc.js.map +0 -1
- package/dist/chunks/pk-input-group-addon-ClBkGmAw.js.map +0 -1
- package/dist/chunks/pk-input-group-button-CHQHsWd4.js.map +0 -1
- package/dist/chunks/pk-input-group-input-oNnqMBGU.js.map +0 -1
- package/dist/chunks/pk-input-group-text-HUxlXROB.js.map +0 -1
- package/dist/chunks/pk-input-group-textarea-Cl2FNuw-.js.map +0 -1
- package/dist/chunks/pk-lightswitch-VHfJizBW.js.map +0 -1
- package/dist/chunks/pk-option-DQZHV9jL.js.map +0 -1
- package/dist/chunks/pk-option-group-CCzJkBFp.js.map +0 -1
- package/dist/chunks/pk-popover-D3jkHfwB.js.map +0 -1
- package/dist/chunks/pk-popup-B65tZMQH.js.map +0 -1
- package/dist/chunks/pk-radio-B5XkMHy3.js.map +0 -1
- package/dist/chunks/pk-radio-group-Dzd-3HaQ.js.map +0 -1
- package/dist/chunks/pk-scroll-area-CdfNxYz8.js.map +0 -1
- package/dist/chunks/pk-select-b5S5WKc-.js.map +0 -1
- package/dist/chunks/pk-separator-N-VyjYE6.js.map +0 -1
- package/dist/chunks/pk-spinner-DweuYJ_Z.js.map +0 -1
- package/dist/chunks/pk-status-BehQARDv.js.map +0 -1
- package/dist/chunks/pk-tab-CTloD18e.js.map +0 -1
- package/dist/chunks/pk-tab-heading-Cjcgebxn.js.map +0 -1
- package/dist/chunks/pk-tab-panel-CkKU5-Ah.js.map +0 -1
- package/dist/chunks/pk-tabs-BgEBki1q.js.map +0 -1
- package/dist/chunks/pk-textarea-Dhj1WFLH.js.map +0 -1
- package/dist/chunks/pk-time-picker-ChRbKHNB.js.map +0 -1
- package/dist/chunks/pk-tiptap-content-CL8smjGi.js.map +0 -1
- package/dist/chunks/pk-tiptap-editor-BMwedkPt.js.map +0 -1
- package/dist/chunks/pk-tiptap-input-YKg4VLp_.js.map +0 -1
- package/dist/chunks/pk-toggle-BthhH7vl.js.map +0 -1
- package/dist/chunks/pk-toggle-group-D2Quux8D.js.map +0 -1
- package/dist/chunks/pk-tooltip--QBV6puX.js.map +0 -1
- package/dist/chunks/register-BqkU5JNH.js +0 -148
- package/dist/chunks/register-BqkU5JNH.js.map +0 -1
- package/dist-loader/chunks/rolldown-runtime-CzwdidQP.js +0 -13
- package/dist-loader/chunks/supports-popover-COjbi2RP.js +0 -5
- package/dist-loader/chunks/tiptap.styles-C0E1NpSx.js +0 -1848
- /package/dist-loader/chunks/{animate-with-class-DT0jwaR_.js → animate-with-class-CjTZI0NU.js} +0 -0
- /package/dist-loader/chunks/{field-labels-D3lKQ2nq.js → field-labels-pY-gQDwQ.js} +0 -0
- /package/dist-loader/chunks/{has-slot-BGJeJdHr.js → has-slot-DJv86HKx.js} +0 -0
- /package/dist-loader/chunks/{mirror-validator-C5XrXPaq.js → mirror-validator-BkZlEv1Z.js} +0 -0
- /package/dist-loader/chunks/{overlay-lifecycle-C3tSQ3UR.js → overlay-lifecycle-C582MGBJ.js} +0 -0
- /package/dist-loader/chunks/{pk-clear-BMZUzwDt.js → pk-clear-DHxP_2cm.js} +0 -0
- /package/dist-loader/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-ClUYI79z.js} +0 -0
- /package/dist-loader/chunks/{popup-pointer-Ck28WdVP.js → popup-pointer-Bh_d205v.js} +0 -0
- /package/dist-loader/chunks/{registry-BanyScVR.js → registry-CJc164pT.js} +0 -0
- /package/dist-loader/chunks/{required-validator-0XwZtX9k.js → required-validator-I58oJGZ3.js} +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { t as icons_exports } from "./icons-
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
1
|
+
import { t as icons_exports } from "./icons-k1pvx6yX.js";
|
|
2
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
3
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
4
|
+
import { n as renderIconHtml } from "./render-DQZp_Rak.js";
|
|
5
|
+
import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-CwhtwAyo.js";
|
|
6
|
+
import { a as unlockBodyScrolling, r as lockBodyScrolling } from "./scroll-lock-DE1pElMQ.js";
|
|
7
|
+
import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-C582MGBJ.js";
|
|
8
|
+
import { t as animateWithClass } from "./animate-with-class-CjTZI0NU.js";
|
|
8
9
|
import { css, html, nothing } from "lit";
|
|
9
|
-
import { classMap } from "lit/directives/class-map.js";
|
|
10
10
|
import { unsafeSVG } from "lit/directives/unsafe-svg.js";
|
|
11
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
11
12
|
//#region src/utils/craft-host-modal.ts
|
|
12
13
|
/**
|
|
13
14
|
* Craft CP Garnish modals (element selector, asset picker, …) live in normal
|
|
@@ -644,4 +645,4 @@ PkDialog = __decorate([customElement("pk-dialog")], PkDialog);
|
|
|
644
645
|
//#endregion
|
|
645
646
|
export { PkDialog as t };
|
|
646
647
|
|
|
647
|
-
//# sourceMappingURL=pk-dialog-
|
|
648
|
+
//# sourceMappingURL=pk-dialog-C7KZGpQs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-dialog-C7KZGpQs.js","names":["xmark","_decorate"],"sources":["../../src/utils/craft-host-modal.ts","../../src/components/dialog/pk-dialog.styles.ts","../../src/components/dialog/pk-dialog.ts"],"sourcesContent":["/**\n * Craft CP Garnish modals (element selector, asset picker, …) live in normal\n * document stacking — not the browser top layer. Native `<dialog>.showModal()`\n * always paints above them, so open kit dialogs must briefly yield.\n */\n\nconst HOST_MODAL_SELECTOR = '.modal-shade, .modal';\n\nconst isVisiblyShown = (element: HTMLElement): boolean => {\n const style = getComputedStyle(element);\n\n return style.display !== 'none'\n && style.visibility !== 'hidden'\n && Number.parseFloat(style.opacity || '1') > 0;\n};\n\n/** True when a Craft/Garnish modal or shade is present and visible. */\nexport function isCraftHostModalOpen(root: ParentNode = document): boolean {\n const nodes = root.querySelectorAll(HOST_MODAL_SELECTOR);\n\n for (const node of nodes) {\n if (!(node instanceof HTMLElement)) {\n continue;\n }\n\n // Ignore kit chrome that happens to reuse `.modal` inside a dialog.\n if (node.closest('pk-dialog')) {\n continue;\n }\n\n if (isVisiblyShown(node)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport type CraftHostModalObserver = {\n disconnect: () => void;\n};\n\n/**\n * Watch the document for Craft modal mount/unmount and invoke `onChange`\n * whenever presence flips. Used by `pk-dialog` to leave/re-enter the top layer.\n */\nexport function observeCraftHostModal(\n onChange: (open: boolean) => void,\n options: { root?: ParentNode; getDocument?: () => Document } = {},\n): CraftHostModalObserver {\n const doc = options.getDocument?.() ?? document;\n const root = options.root ?? doc.body;\n let lastOpen = isCraftHostModalOpen(doc);\n\n const emit = () => {\n const next = isCraftHostModalOpen(doc);\n if (next === lastOpen) {\n return;\n }\n lastOpen = next;\n onChange(next);\n };\n\n const observer = new MutationObserver(() => {\n emit();\n });\n\n observer.observe(root, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['class', 'style', 'hidden'],\n });\n\n // Craft sometimes toggles visibility a frame after insert.\n const intervalId = window.setInterval(emit, 250);\n\n return {\n disconnect: () => {\n observer.disconnect();\n window.clearInterval(intervalId);\n },\n };\n}\n","import { css } from 'lit';\n\nexport const pkDialogStyles = css`\n @layer pk-component {\n :host {\n /* Not display:contents — that flattens the trigger slot into flex parents\n (e.g. playground cards) and stretches pk-button full width, same class of\n bug as the dropdown host. Dialog host is display none/block, not contents. */\n display: inline-block;\n width: fit-content;\n max-width: 100%;\n align-self: flex-start;\n flex: none;\n vertical-align: middle;\n }\n\n /*\n * Controlled dialogs (no slot=\"trigger\") — panel is top-layer / fixed while\n * yielding. An inline-block host still sizes to the open <dialog> box in some\n * engines and expands parents (Formie nested field cards grow a blank gap).\n *\n * Zero box ≠ gone from the tree: Tailwind space-y-* uses :not(:last-child) on\n * DOM siblings, so an in-tree host still steals last-child and margins the\n * previous sibling. Prefer flex/grid gap-* (skips out-of-flow children), or\n * mount overlays outside the spaced stack. True light-DOM portal would also fix it.\n */\n :host(:not([data-has-trigger])) {\n position: absolute;\n width: 0;\n height: 0;\n max-width: none;\n margin: 0;\n padding: 0;\n overflow: visible;\n vertical-align: unset;\n }\n\n .dialog {\n display: flex;\n flex-direction: column;\n width: min(100%, var(--pk-dialog-width, var(--pk-dialog-max-width, 32rem)));\n min-width: var(--pk-dialog-min-width, 0);\n /* Keep UA :modal inset (0) — that + margin:auto centers the panel. Do not\n * unset inset; it breaks centering (field edit landed top-left). */\n height: var(--pk-dialog-height, fit-content);\n min-height: var(--pk-dialog-min-height, 0);\n max-height: var(--pk-dialog-max-height, calc(100vh - 2rem));\n margin: auto;\n padding: 0;\n /* v1 DialogContent: no CSS border — edge is the 1px ring inside --pk-shadow-modal. */\n border: 0;\n border-radius: var(--pk-radius-lg);\n background: var(--pk-color-white);\n box-shadow: var(--pk-shadow-modal);\n color: var(--pk-color-gray-900);\n overflow: hidden;\n opacity: 1;\n transform: scale(1);\n }\n\n .dialog:focus,\n .dialog:focus-visible {\n outline: none;\n }\n\n .dialog:not([open]) {\n display: none;\n }\n\n .dialog--wide {\n --pk-dialog-max-width: 42rem;\n }\n\n /* motion only via animateWithClass — never auto-animate on [open] alone. */\n .dialog.show {\n animation: pk-dialog-in 0.15s ease;\n }\n\n .dialog.hide {\n animation: pk-dialog-out 0.15s ease forwards;\n }\n\n .dialog.pulse {\n animation: pk-dialog-pulse 0.25s ease;\n }\n\n @keyframes pk-dialog-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n @keyframes pk-dialog-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n }\n\n @keyframes pk-dialog-pulse {\n 0%, 100% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.98);\n }\n }\n\n .dialog.show::backdrop {\n animation: pk-dialog-backdrop-in 0.15s ease;\n }\n\n .dialog.hide::backdrop {\n animation: pk-dialog-backdrop-in 0.15s ease reverse;\n }\n\n .dialog::backdrop {\n background: hsl(from var(--pk-color-gray-900) h s l / 0.2);\n opacity: 1;\n }\n\n @keyframes pk-dialog-backdrop-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .header {\n position: relative;\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n gap: 0.2rem;\n padding: 1rem;\n border-bottom: 1px solid var(--pk-color-gray-150);\n border-radius: var(--pk-radius-lg) var(--pk-radius-lg) 0 0;\n background: #f3f7fb;\n text-align: left;\n }\n\n .title {\n margin: 0;\n padding-inline-end: 2rem;\n font-size: 0.9375rem;\n font-weight: 600;\n line-height: 1.2;\n color: var(--pk-color-gray-900);\n }\n\n .description {\n margin: 0;\n padding-inline-end: 2rem;\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.4;\n color: var(--pk-color-gray-500);\n }\n\n .close {\n --pk-dialog-close-focus-padding: 0.25rem;\n position: absolute;\n top: calc(1rem - var(--pk-dialog-close-focus-padding));\n right: calc(1rem - var(--pk-dialog-close-focus-padding));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: calc(1.125rem + 2 * var(--pk-dialog-close-focus-padding));\n height: calc(1.125rem + 2 * var(--pk-dialog-close-focus-padding));\n margin: 0;\n padding: var(--pk-dialog-close-focus-padding);\n border: 0;\n border-radius: var(--pk-radius-sm);\n background: transparent;\n color: var(--pk-color-gray-600);\n cursor: pointer;\n line-height: 0;\n opacity: 0.7;\n transition: opacity 0.12s ease;\n box-sizing: border-box;\n }\n\n .close-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n }\n\n .close-icon svg {\n display: block;\n width: 1.125rem;\n height: 1.125rem;\n }\n\n .close:hover {\n opacity: 1;\n background: transparent;\n }\n\n .close:focus-visible {\n opacity: 1;\n box-shadow: 0 0 0 2px var(--pk-color-gray-600);\n }\n\n .body {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n padding: 0;\n /* v1 DialogContent inherited CP text defaults (14px / gray-700) — do not\n * downshift body copy to sm/gray-600 or slotted content reads smaller than v1. */\n font-size: var(--pk-font-size-base);\n line-height: 1.5;\n color: var(--pk-color-gray-700);\n }\n\n .body--padded {\n padding: 1rem;\n }\n\n .footer {\n display: flex;\n flex-shrink: 0;\n flex-direction: row;\n justify-content: flex-end;\n gap: 0.5rem;\n padding: 0.625rem 1rem;\n border-top: 1px solid var(--pk-color-gray-150);\n border-radius: 0 0 var(--pk-radius-lg) var(--pk-radius-lg);\n background: #e4edf6;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport { isTopDismissible, registerDismissible, unregisterDismissible } from '../../a11y/dismissible-stack.js';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../a11y/scroll-lock.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport { xmark, renderIconHtml } from '../../icons/index.js';\nimport {\n PkAfterHideEvent,\n PkAfterShowEvent,\n PkHideEvent,\n PkShowEvent,\n type PkOverlaySource,\n} from '../../events/overlay-lifecycle.js';\nimport { animateWithClass } from '../../utils/animate-with-class.js';\nimport { observeCraftHostModal, isCraftHostModalOpen, type CraftHostModalObserver } from '../../utils/craft-host-modal.js';\nimport { pkDialogStyles } from './pk-dialog.styles.js';\n\nconst CLOSE_ICON = renderIconHtml(xmark);\n\n/**\n * Modal dialog — literal `pk-dialog` lifecycle with Plugin Kit styling.\n *\n * Craft CP Garnish modals (asset/element selectors) are not top-layer. While one\n * is open, this dialog temporarily uses `show()` instead of `showModal()` so the\n * Craft UI can stack above — same interop intent as v1 Base UI dialog + `.modal`.\n *\n * @slot trigger - Opens the dialog (optional — use `open` for declarative control)\n * @slot header - Custom header region (replaces the built-in `label` header)\n * @slot label - Dialog title\n * @slot footer - Dialog footer actions\n * @slot - Dialog body\n *\n * @csspart panel - Native dialog element\n * @csspart header - Header region\n * @csspart body - Body region\n * @csspart footer - Footer region\n */\n@customElement('pk-dialog')\nexport class PkDialog extends PkElement {\n static override styles = pkDialogStyles;\n\n @property({ type: Boolean, reflect: true })\n open = false;\n\n @property()\n label = '';\n\n /** Optional subtitle under the title in the built-in header (v1 DialogDescription). */\n @property()\n description = '';\n\n /** Maps to `light-dismiss` (inverted). */\n @property({ attribute: 'disable-pointer-dismissal', type: Boolean, reflect: true })\n disablePointerDismissal = false;\n\n @property({ attribute: 'without-header', type: Boolean, reflect: true })\n withoutHeader = false;\n\n /**\n * Opt out of the default 1rem body padding applied when the built-in header is shown.\n * Use for flush layouts (sidebars, full-bleed pickers) that own their own inset.\n */\n @property({ attribute: 'without-body-padding', type: Boolean, reflect: true })\n withoutBodyPadding = false;\n\n /**\n * Skip document scroll lock while open. Useful for labs / rare cases where the\n * page should keep scrolling under the modal (native dialog still traps focus).\n */\n @property({ attribute: 'disable-scroll-lock', type: Boolean, reflect: true })\n disableScrollLock = false;\n\n @property({ reflect: true })\n size: 'default' | 'wide' = 'default';\n\n @query('dialog')\n private dialogElement!: HTMLDialogElement;\n\n @state()\n private triggerElement: HTMLElement | null = null;\n\n private previouslyFocused: HTMLElement | null = null;\n\n /** True while demoted from `showModal` so a Craft Garnish modal can stack above. */\n private yieldingToHostModal = false;\n\n private hostModalObserver: CraftHostModalObserver | null = null;\n\n /** Inline box captured before yield — cleared on restore. */\n private yieldBox: { top: number; left: number; width: number; height: number } | null = null;\n\n /** Light-DOM `slot=\"header\"` only — ignore built-in header fallback inside the shadow slot. */\n private hasCustomHeaderSlot(): boolean {\n return this.querySelector(':scope > [slot=\"header\"]') !== null;\n }\n\n private handleDocumentKeyDown = (event: KeyboardEvent): void => {\n // Craft modal owns Escape while we have yielded the top layer.\n if (this.yieldingToHostModal) {\n return;\n }\n\n if (event.key === 'Escape' && this.open && isTopDismissible(this)) {\n event.preventDefault();\n event.stopPropagation();\n void this.requestClose('escape');\n }\n };\n\n /** Pin modeless dialog to the viewport box it had under `showModal`. */\n private applyYieldPosition(box: { top: number; left: number; width: number; height: number }): void {\n const el = this.dialogElement;\n el.style.position = 'fixed';\n el.style.top = `${box.top}px`;\n el.style.left = `${box.left}px`;\n el.style.width = `${box.width}px`;\n el.style.height = `${box.height}px`;\n el.style.margin = '0';\n el.style.maxHeight = 'none';\n // Below typical Garnish.Modal z-index (≥100); keeps page chrome from covering us.\n el.style.zIndex = '99';\n el.toggleAttribute('data-yielding', true);\n }\n\n private clearYieldPosition(): void {\n const el = this.dialogElement;\n if (!el) {\n return;\n }\n\n el.style.position = '';\n el.style.top = '';\n el.style.left = '';\n el.style.width = '';\n el.style.height = '';\n el.style.margin = '';\n el.style.maxHeight = '';\n el.style.zIndex = '';\n el.removeAttribute('data-yielding');\n this.yieldBox = null;\n }\n\n /** Demote `showModal` → `show` so Craft Garnish can paint above (not inert/under). */\n private yieldToHostModal(): void {\n if (this.yieldingToHostModal || !this.open || !this.dialogElement?.open) {\n return;\n }\n\n // Capture centered modal box before leaving the top layer — `show()` is\n // in-flow and would otherwise jump to the host's layout position.\n const rect = this.dialogElement.getBoundingClientRect();\n this.yieldBox = {\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n };\n this.yieldingToHostModal = true;\n\n try {\n this.dialogElement.close();\n this.dialogElement.show();\n this.applyYieldPosition(this.yieldBox);\n } catch {\n this.yieldingToHostModal = false;\n this.clearYieldPosition();\n }\n }\n\n /** Restore top-layer modal after Craft Garnish closes. */\n private restoreFromHostModal(): void {\n if (!this.yieldingToHostModal) {\n return;\n }\n\n this.yieldingToHostModal = false;\n this.clearYieldPosition();\n\n if (!this.open || !this.dialogElement) {\n return;\n }\n\n try {\n if (this.dialogElement.open) {\n this.dialogElement.close();\n }\n this.dialogElement.showModal();\n } catch {\n /* noop — next open cycle will recover */\n }\n }\n\n private onHostModalPresenceChange = (hostModalOpen: boolean): void => {\n if (hostModalOpen) {\n this.yieldToHostModal();\n } else {\n this.restoreFromHostModal();\n }\n };\n\n override firstUpdated(): void {\n // Mount-with-open (React `{open && <Dialog open>}` / `<Dialog open>`) must\n // use show() so the enter animation runs. A bare showModal() here used to\n // open instantly, then updated()→show() no-op'd because dialogElement.open\n // was already true — page-settings (always mounted, open toggled) still\n // animated because it only went through show().\n if (this.open) {\n void this.show();\n }\n }\n\n override disconnectedCallback(): void {\n if (!this.disableScrollLock) {\n unlockBodyScrolling(this);\n }\n\n this.removeOpenListeners();\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n super.updated(changed);\n\n if (!changed.has('open') || !this.hasUpdated) {\n return;\n }\n\n this.handleOpenChange();\n }\n\n /** `handleOpenChange` — declarative `open` drives show/close. */\n private handleOpenChange(): void {\n if (this.open && !this.dialogElement.open) {\n void this.show();\n } else if (!this.open && this.dialogElement.open) {\n this.open = true;\n void this.requestClose('api');\n }\n }\n\n private showing = false;\n\n /** Shows the dialog — `show()`. */\n async show(_source: PkOverlaySource = 'api'): Promise<void> {\n if (this.showing || this.dialogElement?.open) {\n return;\n }\n\n this.showing = true;\n\n try {\n const showEvent = new PkShowEvent();\n\n if (!this.dispatchEvent(showEvent)) {\n this.open = false;\n return;\n }\n\n this.addOpenListeners();\n this.previouslyFocused = document.activeElement as HTMLElement | null;\n this.open = true;\n this.dialogElement.showModal();\n\n if (!this.disableScrollLock) {\n lockBodyScrolling(this);\n }\n\n requestAnimationFrame(() => {\n const elementToFocus = this.querySelector<HTMLElement>('[autofocus]');\n\n if (elementToFocus) {\n const innerControl = elementToFocus.shadowRoot?.querySelector<HTMLElement>(\n 'input, textarea, select, button',\n );\n\n (innerControl ?? elementToFocus).focus({ preventScroll: true });\n return;\n }\n\n this.dialogElement.focus({ preventScroll: true });\n });\n\n await animateWithClass(this.dialogElement, 'show');\n\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }));\n this.dispatchEvent(new PkAfterShowEvent());\n } finally {\n this.showing = false;\n }\n }\n\n async hide(source: PkOverlaySource = 'unknown'): Promise<void> {\n await this.requestClose(source);\n }\n\n closeDialog(): void {\n void this.requestClose('close-button');\n }\n\n /** `requestClose()`. */\n async requestClose(source: PkOverlaySource | EventTarget = 'unknown'): Promise<void> {\n const overlaySource: PkOverlaySource = typeof source === 'string'\n ? source\n : 'close-button';\n\n const hideEvent = new PkHideEvent(overlaySource);\n\n if (!this.dispatchEvent(hideEvent)) {\n this.open = true;\n await animateWithClass(this.dialogElement, 'pulse');\n return;\n }\n\n this.removeOpenListeners();\n await animateWithClass(this.dialogElement, 'hide');\n this.open = false;\n this.dialogElement.close();\n\n if (!this.disableScrollLock) {\n unlockBodyScrolling(this);\n }\n\n const restoreFocus = this.previouslyFocused;\n this.previouslyFocused = null;\n\n if (restoreFocus?.isConnected) {\n window.setTimeout(() => {\n restoreFocus.focus({ preventScroll: true });\n }, 0);\n }\n\n this.dispatchEvent(new PkAfterHideEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }));\n }\n\n /** Recovery hook — clears hung modal state from overlay races. */\n forceOverlayReset(): void {\n this.open = false;\n this.yieldingToHostModal = false;\n this.clearYieldPosition();\n this.removeOpenListeners();\n\n if (this.dialogElement?.open) {\n try {\n this.dialogElement.close();\n } catch {\n /* noop */\n }\n }\n\n this.dialogElement?.classList.remove('hide', 'show', 'pulse');\n\n if (!this.disableScrollLock) {\n unlockBodyScrolling(this);\n }\n }\n\n private addOpenListeners(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n registerDismissible(this);\n this.hostModalObserver?.disconnect();\n this.hostModalObserver = observeCraftHostModal(this.onHostModalPresenceChange);\n // Craft modal may already be open when this dialog mounts (rare).\n this.onHostModalPresenceChange(isCraftHostModalOpen());\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n unregisterDismissible(this);\n this.hostModalObserver?.disconnect();\n this.hostModalObserver = null;\n this.yieldingToHostModal = false;\n this.clearYieldPosition();\n }\n\n private handleDialogCancel = (event: Event): void => {\n event.preventDefault();\n\n if (!this.dialogElement.classList.contains('hide') && isTopDismissible(this)) {\n void this.requestClose('escape');\n }\n };\n\n private handleDialogClick = (event: Event): void => {\n const closeViaPath = event.composedPath().some(\n (node): node is Element =>\n node instanceof Element && node.matches('[data-dialog=\"close\"], [data-dialog-close]'),\n );\n\n if (closeViaPath) {\n event.stopPropagation();\n void this.requestClose('close-button');\n }\n };\n\n private handleDialogPointerDown = async (event: Event): Promise<void> => {\n if (event.target !== this.dialogElement) {\n return;\n }\n\n // Nested overlays (dropdown / select / combobox) register above us on the\n // dismissible stack. Their capture-phase light-dismiss runs first; skip closing\n // the dialog for the same click so “click off the menu” doesn’t also dismiss us.\n if (!isTopDismissible(this)) {\n return;\n }\n\n if (!this.disablePointerDismissal) {\n void this.requestClose('pointer-dismiss');\n return;\n }\n\n await animateWithClass(this.dialogElement, 'pulse');\n };\n\n private syncHasTriggerAttribute(): void {\n // Drives :host(:not([data-has-trigger])) zero-footprint layout (see styles).\n this.toggleAttribute('data-has-trigger', Boolean(this.triggerElement));\n }\n\n private onTriggerSlotChange(event: Event): void {\n const slot = event.target as HTMLSlotElement;\n const [trigger] = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n if (this.triggerElement) {\n this.triggerElement.removeEventListener('click', this.onTriggerClick);\n }\n\n this.triggerElement = trigger ?? null;\n this.syncHasTriggerAttribute();\n\n if (this.triggerElement) {\n this.triggerElement.addEventListener('click', this.onTriggerClick);\n }\n }\n\n private onTriggerClick = (event: Event): void => {\n event.preventDefault();\n this.open = true;\n };\n\n /** Re-render when footer actions are added/removed so the footer is not shown empty. */\n private onFooterSlotChange = (): void => {\n this.requestUpdate();\n };\n\n override render() {\n const showBuiltInHeader = !this.hasCustomHeaderSlot()\n && !this.withoutHeader\n && Boolean(this.label);\n const padBody = showBuiltInHeader && !this.withoutBodyPadding;\n const hasFooter = this.querySelector(':scope > [slot=\"footer\"]') !== null;\n\n return html`\n <slot name=\"trigger\" @slotchange=${this.onTriggerSlotChange}></slot>\n <dialog\n part=\"panel\"\n class=${classMap({\n dialog: true,\n open: this.open,\n 'dialog--wide': this.size === 'wide',\n })}\n tabindex=\"-1\"\n @cancel=${this.handleDialogCancel}\n @click=${this.handleDialogClick}\n @pointerdown=${this.handleDialogPointerDown}\n >\n <slot name=\"header\">\n ${showBuiltInHeader\n ? html`\n <header part=\"header\" class=\"header\">\n <h2 part=\"title\" class=\"title\">\n <slot name=\"label\">${this.label}</slot>\n </h2>\n ${this.description\n ? html`\n <p part=\"description\" class=\"description\">\n <slot name=\"description\">${this.description}</slot>\n </p>\n `\n : html`<slot name=\"description\" hidden></slot>`}\n <button type=\"button\" class=\"close\" data-dialog=\"close\" aria-label=\"Close\">\n <span class=\"close-icon\" aria-hidden=\"true\">${unsafeSVG(CLOSE_ICON)}</span>\n </button>\n </header>\n `\n : nothing}\n </slot>\n <div\n part=\"body\"\n class=${classMap({\n body: true,\n 'body--padded': padBody,\n })}\n >\n <slot></slot>\n </div>\n ${hasFooter\n ? html`\n <footer part=\"footer\" class=\"footer\">\n <slot name=\"footer\" @slotchange=${this.onFooterSlotChange}></slot>\n </footer>\n `\n : html`<slot name=\"footer\" @slotchange=${this.onFooterSlotChange} hidden></slot>`}\n </dialog>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dialog': PkDialog;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { n as renderIconHtml } from "./render-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
3
|
+
import { n as renderIconHtml } from "./render-DQZp_Rak.js";
|
|
4
|
+
import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
|
|
5
|
+
import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "./popup-placement-animation-ClUYI79z.js";
|
|
6
|
+
import { t as popupContentAnimationStyles } from "./popup-content-animation.styles-CJ8zGJz-.js";
|
|
6
7
|
import { css, html, nothing } from "lit";
|
|
7
8
|
import { unsafeSVG } from "lit/directives/unsafe-svg.js";
|
|
8
9
|
import { check, chevronRight } from "@verbb/plugin-kit-icons";
|
|
@@ -382,8 +383,10 @@ var PkDropdownItem = class PkDropdownItem extends PkElement {
|
|
|
382
383
|
updated(changed) {
|
|
383
384
|
if (changed.has("type") || changed.has("checked")) this.syncRole();
|
|
384
385
|
if (changed.has("submenuOpen") || changed.size === 0) this.syncSubmenuAria();
|
|
385
|
-
if (changed.has("submenuOpen"))
|
|
386
|
-
|
|
386
|
+
if (changed.has("submenuOpen")) {
|
|
387
|
+
if (this.submenuOpen) this.ensureSubmenuSurface();
|
|
388
|
+
else this.submenuAnimated = false;
|
|
389
|
+
}
|
|
387
390
|
}
|
|
388
391
|
/** Light-DOM `slot="submenu"` — public for menu keyboard (`hasSubmenu`). */
|
|
389
392
|
hasSubmenu() {
|
|
@@ -562,4 +565,4 @@ function resolveMenuSize(item) {
|
|
|
562
565
|
//#endregion
|
|
563
566
|
export { dropdownMenuHostSizeStyles as n, dropdownMenuPanelSizeStyles as r, PkDropdownItem as t };
|
|
564
567
|
|
|
565
|
-
//# sourceMappingURL=pk-dropdown-item-
|
|
568
|
+
//# sourceMappingURL=pk-dropdown-item-Ck2N_suK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-dropdown-item-Ck2N_suK.js","names":["_decorate"],"sources":["../../src/components/dropdown-menu/dropdown-menu-size.styles.ts","../../src/components/dropdown-menu/pk-dropdown-item.styles.ts","../../src/components/dropdown-menu/pk-dropdown-item.ts"],"sourcesContent":["import { css } from 'lit';\n\nconst dropdownMenuSizeTokens = {\n default: css`\n --pk-dropdown-item-padding-block: 8px;\n --pk-dropdown-item-padding-inline: 12px;\n --pk-dropdown-item-gap: 0.625rem;\n --pk-dropdown-item-font-size: var(--pk-font-size-base);\n --pk-dropdown-item-line-height: 1.5;\n --pk-dropdown-item-icon-size: 12px;\n --pk-dropdown-label-padding-inline: 12px;\n --pk-dropdown-label-font-size: 13px;\n --pk-dropdown-details-font-size: var(--pk-font-size-sm);\n `,\n xs: css`\n --pk-dropdown-item-padding-block: 3px;\n --pk-dropdown-item-padding-inline: 8px;\n --pk-dropdown-item-gap: 0.375rem;\n --pk-dropdown-item-font-size: 12px;\n --pk-dropdown-item-line-height: 1.5;\n --pk-dropdown-item-icon-size: 10px;\n --pk-dropdown-label-padding-inline: 8px;\n --pk-dropdown-label-font-size: 11px;\n --pk-dropdown-details-font-size: 11px;\n `,\n sm: css`\n --pk-dropdown-item-padding-block: 4px;\n --pk-dropdown-item-padding-inline: 10px;\n --pk-dropdown-item-gap: 0.4375rem;\n --pk-dropdown-item-font-size: 13px;\n --pk-dropdown-item-line-height: 1.5;\n --pk-dropdown-item-icon-size: 12px;\n --pk-dropdown-label-padding-inline: 10px;\n --pk-dropdown-label-font-size: 11px;\n --pk-dropdown-details-font-size: 12px;\n `,\n lg: css`\n --pk-dropdown-item-padding-block: 10px;\n --pk-dropdown-item-padding-inline: 14px;\n --pk-dropdown-item-gap: 0.75rem;\n --pk-dropdown-item-font-size: 16px;\n --pk-dropdown-item-line-height: 1.5;\n --pk-dropdown-item-icon-size: 14px;\n --pk-dropdown-label-padding-inline: 14px;\n --pk-dropdown-label-font-size: 14px;\n --pk-dropdown-details-font-size: var(--pk-font-size-sm);\n `,\n xl: css`\n --pk-dropdown-item-padding-block: 12px;\n --pk-dropdown-item-padding-inline: 16px;\n --pk-dropdown-item-gap: 0.75rem;\n --pk-dropdown-item-font-size: 18px;\n --pk-dropdown-item-line-height: 1.5;\n --pk-dropdown-item-icon-size: 16px;\n --pk-dropdown-label-padding-inline: 16px;\n --pk-dropdown-label-font-size: 15px;\n --pk-dropdown-details-font-size: var(--pk-font-size-base);\n `,\n} as const;\n\n/** Size tokens on `pk-dropdown-menu` — cascades to light-DOM menu children. */\nexport const dropdownMenuHostSizeStyles = css`\n @layer pk-component {\n :host {\n ${dropdownMenuSizeTokens.default}\n }\n\n :host([size='xs']) {\n ${dropdownMenuSizeTokens.xs}\n }\n\n :host([size='sm']) {\n ${dropdownMenuSizeTokens.sm}\n }\n\n :host([size='lg']) {\n ${dropdownMenuSizeTokens.lg}\n }\n\n :host([size='xl']) {\n ${dropdownMenuSizeTokens.xl}\n }\n }\n`;\n\n/**\n * Size tokens on popup panels.\n * Do not include bare `:host` here; importing this in `pk-dropdown-item`\n * would reset every item back to the default size.\n */\nexport const dropdownMenuPanelSizeStyles = css`\n @layer pk-component {\n .panel[data-size='default'],\n .submenu-panel[data-size='default'] {\n ${dropdownMenuSizeTokens.default}\n }\n\n .panel[data-size='xs'],\n .submenu-panel[data-size='xs'] {\n ${dropdownMenuSizeTokens.xs}\n }\n\n .panel[data-size='sm'],\n .submenu-panel[data-size='sm'] {\n ${dropdownMenuSizeTokens.sm}\n }\n\n .panel[data-size='lg'],\n .submenu-panel[data-size='lg'] {\n ${dropdownMenuSizeTokens.lg}\n }\n\n .panel[data-size='xl'],\n .submenu-panel[data-size='xl'] {\n ${dropdownMenuSizeTokens.xl}\n }\n }\n`;\n\n/** @deprecated Use dropdownMenuHostSizeStyles + dropdownMenuPanelSizeStyles. */\nexport const dropdownMenuSizeStyles = css`\n ${dropdownMenuHostSizeStyles}\n ${dropdownMenuPanelSizeStyles}\n`;\n","import { css } from 'lit';\n\nimport { popupContentAnimationStyles } from '../../styles/popup-content-animation.styles.js';\nimport { dropdownMenuPanelSizeStyles } from './dropdown-menu-size.styles.js';\n\nexport const pkDropdownItemStyles = [\n popupContentAnimationStyles,\n dropdownMenuPanelSizeStyles,\n css`\n @layer pk-component {\n :host {\n display: block;\n position: relative;\n /*\n * Slotted label text inherits from this host (light DOM), not from\n * shadow .item — pin size-token metrics so Craft CP / Tailwind /\n * bare hosts all get the same item rhythm.\n */\n font-size: var(--pk-dropdown-item-font-size, var(--pk-font-size-base));\n line-height: var(--pk-dropdown-item-line-height, 1.5);\n color: var(--text-color, var(--pk-color-gray-700));\n }\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--pk-dropdown-item-gap, 0.625rem);\n width: 100%;\n margin: 0;\n padding: var(--pk-dropdown-item-padding-block, 8px) var(--pk-dropdown-item-padding-inline, 12px);\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--pk-dropdown-item-font-size, var(--pk-font-size-base));\n /* Explicit — do not let font:inherit re-leak page line-height. */\n line-height: var(--pk-dropdown-item-line-height, 1.5);\n font-weight: normal;\n text-align: left;\n white-space: nowrap;\n cursor: default;\n user-select: none;\n outline: none;\n box-sizing: border-box;\n }\n\n .item:hover:not([disabled]):not([aria-disabled='true']),\n :host([data-highlighted]) .item,\n :host([submenu-open]) .item {\n background: var(--pk-color-slate-100);\n }\n\n .item:focus-visible {\n background: var(--pk-color-slate-100);\n }\n\n .item[aria-disabled='true'] {\n pointer-events: none;\n opacity: 0.5;\n }\n\n .label {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .prefix {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--pk-dropdown-item-icon-size, 12px);\n height: var(--pk-dropdown-item-icon-size, 12px);\n line-height: 0;\n }\n\n .prefix--empty {\n display: none;\n }\n\n .prefix ::slotted(*) {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--pk-dropdown-item-icon-size, 12px);\n height: var(--pk-dropdown-item-icon-size, 12px);\n /* Kill pk-icon text-baseline nudge inside the padded flex row. */\n vertical-align: 0;\n }\n\n .prefix ::slotted(svg),\n .prefix ::slotted(*) svg,\n .prefix ::slotted(.pk-dropdown-item__prefix-icon) {\n display: block;\n width: var(--pk-dropdown-item-icon-size, 12px) !important;\n height: var(--pk-dropdown-item-icon-size, 12px) !important;\n max-width: var(--pk-dropdown-item-icon-size, 12px);\n max-height: var(--pk-dropdown-item-icon-size, 12px);\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .details {\n margin-left: auto;\n color: var(--pk-color-gray-500);\n font-size: var(--pk-dropdown-details-font-size, var(--pk-font-size-sm));\n letter-spacing: 0.04em;\n }\n\n .details:empty {\n display: none;\n }\n\n .check {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n color: var(--pk-color-gray-700);\n }\n\n .check svg {\n display: block;\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .submenu-icon {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: 1rem;\n color: var(--pk-color-gray-700);\n }\n\n .submenu-icon svg {\n display: block;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .check {\n opacity: 0;\n }\n\n :host([checked]) .check {\n opacity: 1;\n }\n\n :host([type='checkbox']) .check,\n :host([type='radio']) .check {\n margin-left: auto;\n }\n\n :host([type='checkbox'][checked]) .check,\n :host([type='radio'][checked]) .check {\n opacity: 1;\n }\n\n .submenu-icon:empty {\n display: none;\n }\n\n :host([destructive]) .item {\n color: var(--pk-color-error);\n }\n\n :host([destructive]) .item:hover:not([disabled]):not([aria-disabled='true']),\n :host([destructive]) .item:focus-visible {\n color: var(--pk-color-error);\n }\n\n .submenu-panel {\n width: max-content;\n min-width: 8rem;\n max-height: var(--pk-popup-available-height, calc(100dvh - 20px));\n overflow: auto;\n overscroll-behavior: contain;\n padding: 4px 0;\n border-radius: var(--pk-radius-md);\n background: var(--pk-color-white);\n box-shadow: var(--pk-shadow-popup);\n /* Match root menu panel — Craft body text, not gray-900. */\n color: var(--text-color, var(--pk-color-gray-700));\n }\n\n .submenu-panel ::slotted(pk-dropdown-item),\n .submenu-panel ::slotted(pk-dropdown-separator),\n .submenu-panel ::slotted(pk-dropdown-label) {\n display: block;\n }\n\n .submenu-panel[hidden] {\n display: none !important;\n }\n }\n`,\n];\n","import { html, nothing } from 'lit';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { check, chevronRight } from '@verbb/plugin-kit-icons';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { renderIconHtml } from '../../icons/render.js';\nimport {\n syncPopupPlacementAnimation,\n waitForPopupReposition,\n} from '../../utils/popup-placement-animation.js';\nimport { pkDropdownItemStyles } from './pk-dropdown-item.styles.js';\n\nconst CHECK_ICON = renderIconHtml(check);\nconst SUBMENU_ICON = renderIconHtml(chevronRight);\n\nexport type PkDropdownItemType = 'normal' | 'checkbox' | 'radio';\n\ntype PkDropdownMenuSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * Dropdown menu item — use inside `pk-dropdown-menu`.\n *\n * @slot - Item label\n * @slot start - Leading icon (preferred; matches pk-button)\n * @slot prefix - Alias for `start` (legacy)\n * @slot details - Trailing shortcut text\n * @slot submenu - Nested menu items (`pk-dropdown-item`, separators, labels)\n *\n * @csspart item - Menu item button\n * @csspart prefix - Leading icon wrapper (hidden when empty)\n * @csspart label - Item label wrapper\n * @csspart check - Checkbox/radio selected indicator\n */\n@customElement('pk-dropdown-item')\nexport class PkDropdownItem extends PkElement {\n static override styles = pkDropdownItemStyles;\n\n @property()\n value = '';\n\n @property({ reflect: true })\n type: PkDropdownItemType = 'normal';\n\n @property({ attribute: 'radio-group' })\n radioGroup = '';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n destructive = false;\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ attribute: 'submenu-open', type: Boolean, reflect: true })\n submenuOpen = false;\n\n /**\n * Roving highlight index for keyboard nav (`active`).\n * Visual styling uses `:focus-visible` / hover — not this flag — so mouse-open\n * does not paint the first item selected (initial open).\n */\n @property({ type: Boolean })\n active = false;\n\n @state()\n private submenuAnimated = false;\n\n @query('.submenu-panel')\n private submenuPanelElement!: HTMLDivElement;\n\n @query('pk-popup')\n private submenuPopupElement!: HTMLElement;\n\n private readonly hasSlotController = new HasSlotController(this, 'submenu', 'details', 'start', 'prefix');\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.syncRole();\n this.syncSubmenuAria();\n this.addEventListener('click', this.handleHostClick);\n // Bind mouseenter on the host — covers the whole row, not just the button.\n this.addEventListener('mouseenter', this.handleMouseEnter);\n }\n\n override disconnectedCallback(): void {\n this.removeEventListener('click', this.handleHostClick);\n this.removeEventListener('mouseenter', this.handleMouseEnter);\n this.closeSubmenu();\n super.disconnectedCallback();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('type') || changed.has('checked')) {\n this.syncRole();\n }\n\n if (changed.has('submenuOpen') || changed.size === 0) {\n this.syncSubmenuAria();\n }\n\n // Keyboard / external callers set `submenuOpen`; mouse path goes through openSubmenu().\n if (changed.has('submenuOpen')) {\n if (this.submenuOpen) {\n this.ensureSubmenuSurface();\n } else {\n this.submenuAnimated = false;\n }\n }\n }\n\n /** Light-DOM `slot=\"submenu\"` — public for menu keyboard (`hasSubmenu`). */\n hasSubmenu(): boolean {\n return this.hasSlotController.test('submenu');\n }\n\n private syncSubmenuAria(): void {\n const hasSubmenu = this.hasSubmenu();\n\n if (hasSubmenu) {\n this.setAttribute('aria-haspopup', 'menu');\n } else {\n this.removeAttribute('aria-haspopup');\n }\n\n this.setAttribute('aria-expanded', hasSubmenu && this.submenuOpen ? 'true' : 'false');\n }\n\n focusControl(): void {\n this.shadowRoot?.querySelector<HTMLButtonElement>('.item')?.focus({ preventScroll: true });\n }\n\n /** Callers `item.focus()` — route into the shadow control button. */\n override focus(options?: FocusOptions): void {\n const button = this.shadowRoot?.querySelector<HTMLButtonElement>('.item');\n\n if (button) {\n button.focus(options);\n return;\n }\n\n super.focus(options);\n }\n\n /** Public for menu leave-detection (`submenuElement`). */\n get submenuElement(): HTMLDivElement | null {\n return this.submenuPanelElement ?? null;\n }\n\n closeSubmenu(): void {\n this.submenuAnimated = false;\n this.submenuOpen = false;\n }\n\n /**\n * Opens the nested submenu panel (mouse + keyboard).\n * notify parent first so siblings close, then set `submenuOpen`.\n */\n openSubmenu(): void {\n if (!this.hasSubmenu() || this.disabled || !this.isConnected) {\n return;\n }\n\n this.notifyParentOfOpening();\n this.submenuOpen = true;\n }\n\n /** `notifyParentOfOpening` — sibling close + bubble to the menu. */\n private notifyParentOfOpening(): void {\n this.dispatchEvent(new CustomEvent('pk-submenu-open', {\n bubbles: true,\n composed: true,\n detail: { item: this },\n }));\n\n const parent = this.parentElement;\n\n if (!parent) {\n return;\n }\n\n // Same slot + same light-DOM parent = siblings (top-level or nested submenu).\n for (const el of parent.children) {\n if (\n el !== this\n && el instanceof PkDropdownItem\n && el.getAttribute('slot') === this.getAttribute('slot')\n && el.submenuOpen\n ) {\n el.submenuOpen = false;\n }\n }\n }\n\n private ensureSubmenuSurface(): void {\n if (!this.hasSubmenu() || this.disabled) {\n return;\n }\n\n this.submenuAnimated = true;\n\n void this.updateComplete.then(() => {\n if (!this.submenuOpen || !this.submenuPanelElement) {\n return;\n }\n\n this.submenuPanelElement.hidden = false;\n syncPopupPlacementAnimation(this.submenuPanelElement, 'right-start');\n\n void waitForPopupReposition(this.submenuPopupElement, 'right-start').then((placement) => {\n syncPopupPlacementAnimation(this.submenuPanelElement, placement);\n });\n });\n }\n\n private syncRole(): void {\n if (this.type === 'checkbox') {\n this.setAttribute('role', 'menuitemcheckbox');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n return;\n }\n\n if (this.type === 'radio') {\n this.setAttribute('role', 'menuitemradio');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n return;\n }\n\n this.setAttribute('role', 'menuitem');\n this.removeAttribute('aria-checked');\n }\n\n /** `handleMouseEnter` — open on hover; siblings close via notify. */\n private handleMouseEnter = (): void => {\n if (!this.hasSubmenu() || this.disabled) {\n return;\n }\n\n this.notifyParentOfOpening();\n this.submenuOpen = true;\n };\n\n /** Host has `role=\"menuitem\"` — block disabled activation; selection is handled by `pk-dropdown-menu`. */\n private handleHostClick = (event: Event): void => {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n\n private handleClick(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n if (this.hasSubmenu()) {\n event.preventDefault();\n this.openSubmenu();\n }\n }\n\n override render() {\n const hasSubmenu = this.hasSubmenu();\n const showCheck = this.type === 'checkbox' || this.type === 'radio';\n // Prefer start (button parity); prefix kept as legacy alias.\n const hasLeadingIcon = this.hasSlotController.test('start') || this.hasSlotController.test('prefix');\n\n return html`\n <button\n part=\"item\"\n type=\"button\"\n class=\"item\"\n ?disabled=${this.disabled}\n aria-disabled=${this.disabled ? 'true' : nothing}\n @click=${this.handleClick}\n >\n <span\n part=\"prefix\"\n class=${hasLeadingIcon ? 'prefix' : 'prefix prefix--empty'}\n >\n <slot name=\"start\"></slot>\n <slot name=\"prefix\"></slot>\n </span>\n <span part=\"label\" class=\"label\"><slot></slot></span>\n <span class=\"details\"><slot name=\"details\"></slot></span>\n ${showCheck ? html`<span part=\"check\" class=\"check\" aria-hidden=\"true\">${unsafeSVG(CHECK_ICON)}</span>` : nothing}\n ${hasSubmenu ? html`<span class=\"submenu-icon\" aria-hidden=\"true\">${unsafeSVG(SUBMENU_ICON)}</span>` : nothing}\n </button>\n ${hasSubmenu ? html`\n <pk-popup\n .active=${this.submenuOpen}\n .anchor=${this}\n placement=\"right-start\"\n .distance=${0}\n .skidding=${-4}\n flip\n shift\n auto-size=\"vertical\"\n .autoSizePadding=${10}\n hover-bridge\n style=\"--pk-popup-z-index: 1001\"\n >\n <div\n part=\"submenu\"\n class=\"submenu-panel pk-popup-content\"\n role=\"menu\"\n data-size=${resolveMenuSize(this)}\n ?hidden=${!this.submenuOpen}\n data-open=${this.submenuAnimated ? '' : nothing}\n aria-orientation=\"vertical\"\n >\n <slot name=\"submenu\"></slot>\n </div>\n </pk-popup>\n ` : nothing}\n `;\n }\n}\n\nfunction resolveMenuSize(item: PkDropdownItem): PkDropdownMenuSize {\n const panelSize = item.parentElement?.getAttribute('data-size');\n\n if (panelSize === 'xs' || panelSize === 'sm' || panelSize === 'default' || panelSize === 'lg' || panelSize === 'xl') {\n return panelSize;\n }\n\n const menu = item.closest('pk-dropdown-menu');\n const menuSize = menu?.getAttribute('size');\n\n if (menuSize === 'xs' || menuSize === 'sm' || menuSize === 'lg' || menuSize === 'xl') {\n return menuSize;\n }\n\n return 'default';\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-item': PkDropdownItem;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
2
|
import { css, html } from "lit";
|
|
3
3
|
//#region src/components/dropdown-menu/pk-dropdown-label.styles.ts
|
|
4
4
|
var pkDropdownLabelStyles = css`
|
|
@@ -50,4 +50,4 @@ PkDropdownLabel = __decorate([customElement("pk-dropdown-label")], PkDropdownLab
|
|
|
50
50
|
//#endregion
|
|
51
51
|
export { PkDropdownLabel as t };
|
|
52
52
|
|
|
53
|
-
//# sourceMappingURL=pk-dropdown-label-
|
|
53
|
+
//# sourceMappingURL=pk-dropdown-label-BdZLeizJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-dropdown-label-BdZLeizJ.js","names":["_decorate"],"sources":["../../src/components/dropdown-menu/pk-dropdown-label.styles.ts","../../src/components/dropdown-menu/pk-dropdown-label.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkDropdownLabelStyles = css`\n @layer pk-component {\n :host {\n display: block;\n /*\n * Slotted label copy inherits through the flat tree from this host\n * when page metrics would otherwise leak via font:inherit chains.\n */\n font-size: var(--pk-dropdown-label-font-size, 13px);\n line-height: 1.3;\n color: var(--pk-color-slate-700, rgba(96, 125, 159, 0.7));\n }\n\n /* Match v1 DropdownMenuLabel — text-slate-700, regular weight (not medium). */\n .label {\n margin: 0;\n padding-block-start: 6px;\n padding-block-end: 4px;\n padding-inline: var(--pk-dropdown-label-padding-inline, 12px);\n color: inherit;\n font: inherit;\n font-weight: 400;\n user-select: none;\n pointer-events: none;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkDropdownLabelStyles } from './pk-dropdown-label.styles.js';\n\n/** Non-interactive group label inside `pk-dropdown-menu`. */\n@customElement('pk-dropdown-label')\nexport class PkDropdownLabel extends PkElement {\n static override styles = pkDropdownLabelStyles;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'presentation');\n }\n\n override render() {\n return html`\n <div part=\"label\" class=\"label\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-label': PkDropdownLabel;\n }\n}\n"],"mappings":";;;AAEA,IAAa,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACMjC,IAAM,kBAAN,MAAM,wBAAwB,UAAU;;EAClB,KAAA,SAAA;;CAEzB,oBAAmC;EAC/B,MAAM,kBAAkB;EACxB,KAAK,aAAa,QAAQ,cAAc;CAC5C;CAEA,SAAkB;EACd,OAAO,IAAI;;;;;CAKf;AACJ;AAhBC,kBAAAA,WAAA,CAAA,cAAc,mBAAmB,CAAA,GAAA,eAAA"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { i as
|
|
6
|
-
import { r as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { n as query, t as property } from "./decorators-BkErmuYK.js";
|
|
3
|
+
import { r as buttonGroupCornerRoleStyles } from "./button-group-item.styles-D7tuu-sr.js";
|
|
4
|
+
import { t as activeElements } from "./active-elements-739kISON.js";
|
|
5
|
+
import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-CwhtwAyo.js";
|
|
6
|
+
import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-C582MGBJ.js";
|
|
7
|
+
import { r as resolveElementById } from "./pk-popup-DVE93VSV.js";
|
|
8
|
+
import { i as waitForPopupReposition } from "./popup-placement-animation-ClUYI79z.js";
|
|
9
|
+
import { t as animateWithClass } from "./animate-with-class-CjTZI0NU.js";
|
|
10
|
+
import { n as dropdownMenuHostSizeStyles, r as dropdownMenuPanelSizeStyles, t as PkDropdownItem } from "./pk-dropdown-item-Ck2N_suK.js";
|
|
10
11
|
import { css, html } from "lit";
|
|
11
12
|
//#region src/components/dropdown-menu/pk-dropdown-menu.styles.ts
|
|
12
13
|
/**
|
|
@@ -626,13 +627,15 @@ var PkDropdownMenu = class PkDropdownMenu extends PkElement {
|
|
|
626
627
|
this.menuElement.classList.remove("hide");
|
|
627
628
|
await animateWithClass(this.menuElement, "show");
|
|
628
629
|
const items = this.getItems();
|
|
629
|
-
if (items.length > 0)
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
item
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
630
|
+
if (items.length > 0) {
|
|
631
|
+
if (this.openedByKeyboard) this.setActiveItem(items, items[0]);
|
|
632
|
+
else {
|
|
633
|
+
items.forEach((item) => {
|
|
634
|
+
item.active = false;
|
|
635
|
+
item.removeAttribute("data-highlighted");
|
|
636
|
+
});
|
|
637
|
+
this.menuElement.focus({ preventScroll: true });
|
|
638
|
+
}
|
|
636
639
|
}
|
|
637
640
|
this.openedByKeyboard = false;
|
|
638
641
|
this.dispatchEvent(new PkAfterShowEvent());
|
|
@@ -677,9 +680,10 @@ var PkDropdownMenu = class PkDropdownMenu extends PkElement {
|
|
|
677
680
|
}
|
|
678
681
|
render() {
|
|
679
682
|
const popupActive = this.hasUpdated ? this.popupElement?.active : this.open;
|
|
683
|
+
const externalAnchor = this.for ? this.getAnchor() : "";
|
|
680
684
|
return html`
|
|
681
685
|
<pk-popup
|
|
682
|
-
.anchor=${
|
|
686
|
+
.anchor=${externalAnchor}
|
|
683
687
|
placement=${this.placement}
|
|
684
688
|
.distance=${this.distance || this.sideOffset}
|
|
685
689
|
.skidding=${this.skidding}
|
|
@@ -733,4 +737,4 @@ PkDropdownMenu = __decorate([customElement("pk-dropdown-menu")], PkDropdownMenu)
|
|
|
733
737
|
//#endregion
|
|
734
738
|
export { PkDropdownMenu as t };
|
|
735
739
|
|
|
736
|
-
//# sourceMappingURL=pk-dropdown-menu-
|
|
740
|
+
//# sourceMappingURL=pk-dropdown-menu-DBsO1uYR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-dropdown-menu-DBsO1uYR.js","names":["_decorate"],"sources":["../../src/components/dropdown-menu/pk-dropdown-menu.styles.ts","../../src/components/dropdown-menu/pk-dropdown-menu.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport { buttonGroupCornerRoleStyles } from '../button-group/button-group-item.styles.js';\nimport { dropdownMenuHostSizeStyles, dropdownMenuPanelSizeStyles } from './dropdown-menu-size.styles.js';\n\n/**\n * Dropdown panel motion — `pk-dropdown` scale+fade, with transform\n * origin from `pk-popup`’s `--pk-transform-origin` (Base UI / v1 alignment).\n * */\nexport const pkDropdownMenuStyles = [\n buttonGroupCornerRoleStyles(),\n dropdownMenuHostSizeStyles,\n dropdownMenuPanelSizeStyles,\n css`\n @layer pk-component {\n /* Standalone: keep a real box so the trigger is not a flex-stretched\n child of the page (display:contents flattened pk-button to full card width).\n Button groups override below — same as legacy + React MenuButton inline-flex wrap. */\n :host {\n display: inline-block;\n position: relative;\n width: fit-content;\n max-width: 100%;\n align-self: flex-start;\n vertical-align: middle;\n }\n\n :host([data-pk-group-orientation]) {\n display: inline-flex;\n vertical-align: middle;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n align-self: auto;\n }\n\n /* Belt-and-suspenders if a parent still flattens layout onto the trigger. */\n ::slotted([slot='trigger']) {\n width: fit-content;\n max-width: 100%;\n flex: 0 0 auto;\n align-self: flex-start;\n }\n\n :host([data-pk-group-orientation]) ::slotted([slot='trigger']) {\n --pk-bg-start-start-radius: inherit;\n --pk-bg-start-end-radius: inherit;\n --pk-bg-end-start-radius: inherit;\n --pk-bg-end-end-radius: inherit;\n align-self: auto;\n max-width: none;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]) {\n margin-inline-start: var(--pk-bg-horizontal-indent, 0);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]) {\n margin-block-start: var(--pk-bg-vertical-indent, 0);\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:has([slot='trigger'][variant='outline'], [slot='trigger'][variant='dashed'])) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:has([slot='trigger'][variant='outline'], [slot='trigger'][variant='dashed'])) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n /* Menu panel — hug content; do not stretch to trigger/anchor width. */\n .panel {\n display: flex;\n flex-direction: column;\n width: max-content;\n min-width: 8rem;\n max-height: var(--pk-popup-available-height, calc(100dvh - 20px));\n margin: 0;\n overflow: auto;\n overscroll-behavior: contain;\n padding: 4px 0;\n border: 0;\n border-radius: var(--pk-radius-md);\n background: var(--pk-color-white);\n box-shadow: var(--pk-shadow-popup);\n /* v1 DropdownMenuItem had no face color — inherited Craft body\n * (--text-color ≈ gray-700). Do not force gray-900 (too dark). */\n color: var(--text-color, var(--pk-color-gray-700));\n outline: none;\n text-align: start;\n user-select: none;\n /* Match v1 Base UI: popup writes --pk-transform-origin from the\n * anchor center on the connecting edge (e.g. top-right for\n * bottom-end). Keyword edge centers made end-aligned menus\n * scale from the middle of the panel. */\n transform-origin: var(--pk-transform-origin, top);\n }\n\n .panel.show {\n animation: pk-dropdown-menu-show 100ms ease;\n }\n\n .panel.hide {\n animation: pk-dropdown-menu-show 100ms ease reverse;\n }\n\n .panel[hidden] {\n display: none !important;\n }\n\n ::slotted(pk-dropdown-item),\n ::slotted(pk-dropdown-separator),\n ::slotted(pk-dropdown-label),\n .panel > pk-dropdown-item,\n .panel > pk-dropdown-separator,\n .panel > pk-dropdown-label {\n display: block;\n }\n\n ::slotted([data-menu-item]) {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n width: 100%;\n margin: 0;\n padding: 8px 12px;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: var(--pk-font-size-base);\n text-align: left;\n white-space: nowrap;\n cursor: default;\n user-select: none;\n outline: none;\n box-sizing: border-box;\n }\n\n ::slotted([data-menu-item]:hover:not([disabled])) {\n background: var(--pk-color-slate-100);\n }\n\n ::slotted([data-menu-item]:focus-visible) {\n background: var(--pk-color-slate-100);\n }\n\n ::slotted([data-menu-item][disabled]) {\n pointer-events: none;\n opacity: 0.5;\n }\n\n ::slotted(pk-dropdown-item[destructive]),\n ::slotted([data-destructive]) {\n color: var(--pk-color-error);\n }\n\n ::slotted([data-menu-separator]) {\n display: block;\n height: 1px;\n margin: 4px 0;\n background: var(--pk-color-slate-200);\n border: 0;\n padding: 0;\n }\n }\n\n /* Outside @layer so constructed stylesheets resolve the name reliably. */\n @keyframes pk-dropdown-menu-show {\n from {\n scale: 0.9;\n opacity: 0;\n }\n\n to {\n scale: 1;\n opacity: 1;\n }\n }\n `,\n];\n","import { html } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\n\nimport { activeElements } from '../../a11y/active-elements.js';\nimport { isTopDismissible, registerDismissible, unregisterDismissible } from '../../a11y/dismissible-stack.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport {\n PkAfterHideEvent,\n PkAfterShowEvent,\n PkHideEvent,\n PkShowEvent,\n type PkOverlaySource,\n} from '../../events/overlay-lifecycle.js';\nimport { resolveElementById } from '../../internal/resolve-element-by-id.js';\nimport { animateWithClass } from '../../utils/animate-with-class.js';\nimport { waitForPopupReposition } from '../../utils/popup-placement-animation.js';\n// Keep the internal element registered when production builds erase type-only imports.\nimport '../popup/pk-popup.js';\nimport type { PkPopup, PkPopupPlacement } from '../popup/pk-popup.js';\nimport { PkDropdownItem } from './pk-dropdown-item.js';\nimport { pkDropdownMenuStyles } from './pk-dropdown-menu.styles.js';\n\nexport type PkDropdownMenuSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * @deprecated Imperative `items` was removed with the port — slot `pk-dropdown-item`\n * (and separators) instead. Type kept for React re-exports / migration.\n */\nexport type PkMenuItem = {\n id: string;\n label?: string;\n type?: 'item' | 'separator';\n disabled?: boolean;\n destructive?: boolean;\n};\n\n/** Tracks open menus — closing one closes others ( `pk-dropdown`). */\nconst openDropdowns = new Set<PkDropdownMenu>();\n\n/**\n * Dropdown menu — literal `pk-dropdown` overlay lifecycle with Plugin Kit styling.\n * Panel motion: content-sized, scale+fade; origin from popup `--pk-transform-origin`\n * (anchor center on the connecting edge — matches v1 / Base UI).\n * Keyboard navigation matches arrows, Home/End, typeahead, Enter/Space, submenu ←/→.\n *\n * @slot trigger - Menu trigger (when not using `for`)\n * @slot - `pk-dropdown-item` elements\n *\n * @attr for - Id of an external trigger in the same root (TipTap toolbar pattern)\n *\n * @csspart panel - Menu panel\n */\n@customElement('pk-dropdown-menu')\nexport class PkDropdownMenu extends PkElement {\n static override styles = pkDropdownMenuStyles;\n\n @property({ type: Boolean, reflect: true })\n open = false;\n\n @property({ reflect: true })\n size: PkDropdownMenuSize = 'default';\n\n @property({ reflect: true })\n placement: PkPopupPlacement = 'bottom-start';\n\n @property({ attribute: 'side-offset', type: Number })\n sideOffset = 4;\n\n @property({ type: Number })\n distance = 4;\n\n @property({ type: Number })\n skidding = 0;\n\n /** External trigger id — preferred over `slot=\"trigger\"` when set (TipTap toolbar). */\n @property({ reflect: true })\n for = '';\n\n @query('slot:not([name])')\n private defaultSlot!: HTMLSlotElement;\n\n @query('#menu')\n private menuElement!: HTMLDivElement;\n\n @query('pk-popup')\n private popupElement!: PkPopup;\n\n /** Typeahead buffer — cleared ~1s after last printable key */\n private userTypedQuery = '';\n\n private userTypedTimeout = 0;\n\n /** Nested submenu path for ArrowLeft/Right (`openSubmenuStack`). */\n private openSubmenuStack: PkDropdownItem[] = [];\n\n /**\n * Set when the trigger opens the menu via ArrowUp/Down.\n * Pointer opens must not pre-activate item[0] — that made the first ArrowDown\n * advance to item[1] while nothing looked selected (our paint:false divergence).\n * Keyboard opens open with focus on the first item: focus + activate the first item.\n */\n private openedByKeyboard = false;\n\n /**\n * Bound trigger — either `for`-resolved or slotted.\n * Resolve from this host (not the popup) so shadow-root ids like TipTap's work.\n */\n private triggerElement: HTMLElement | null = null;\n\n /** Legacy compat for overlay lab snapshots and dismiss recovery. */\n get panelElement(): HTMLDivElement | null {\n return this.menuElement ?? null;\n }\n\n get popup(): PkPopup | null {\n return this.popupElement ?? null;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Host capture — do not rely on per-trigger listeners. React can replace the\n // slotted trigger (or miss slotchange) after tree remounts; getTrigger() is live.\n this.addEventListener('click', this.handleTriggerClick, true);\n this.addEventListener('keydown', this.handleTriggerKeyDown);\n }\n\n override firstUpdated(): void {\n // Sibling / slotted triggers may not be queryable until the parent finishes rendering.\n const sync = (): void => {\n if (this.for) {\n this.resolveExternalTrigger();\n return;\n }\n\n this.syncSlottedTrigger();\n };\n\n queueMicrotask(sync);\n // React often appends the slotted trigger after Lit's first microtask.\n requestAnimationFrame(sync);\n }\n\n override disconnectedCallback(): void {\n window.clearTimeout(this.userTypedTimeout);\n this.removeEventListener('click', this.handleTriggerClick, true);\n this.removeEventListener('keydown', this.handleTriggerKeyDown);\n this.unbindTrigger(this.triggerElement);\n this.triggerElement = null;\n this.closeAllSubmenus();\n // Demote popup before teardown — otherwise a remounted/reused host can hit\n // showMenu()'s `active` early-return and never paint the panel again.\n if (this.popupElement) {\n this.popupElement.active = false;\n }\n this.menuElement?.classList.remove('show', 'hide');\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.removeEventListener('mousemove', this.handleGlobalMouseMove);\n unregisterDismissible(this);\n openDropdowns.delete(this);\n super.disconnectedCallback();\n }\n\n override async updated(changed: Map<string, unknown>): Promise<void> {\n super.updated(changed);\n\n if (changed.has('for')) {\n this.resolveExternalTrigger();\n }\n\n if (changed.has('open')) {\n this.syncTriggerExpanded();\n }\n\n if (!changed.has('open')) {\n return;\n }\n\n const previousOpen = changed.get('open');\n\n if (previousOpen === this.open) {\n return;\n }\n\n if (previousOpen === undefined && this.open === false) {\n return;\n }\n\n if (this.open) {\n await this.showMenu();\n } else {\n this.closeAllSubmenus();\n await this.hideMenu('unknown');\n }\n }\n\n getItems(includeDisabled = false): PkDropdownItem[] {\n const items = (this.defaultSlot?.assignedElements({ flatten: true }) ?? [])\n .filter((el): el is PkDropdownItem => el.localName === 'pk-dropdown-item');\n\n return includeDisabled ? items : items.filter((item) => !item.disabled);\n }\n\n /** Submenu children of a parent item (light-DOM `slot=\"submenu\"`). */\n getSubmenuItems(parentItem: PkDropdownItem, includeDisabled = false): PkDropdownItem[] {\n const submenuSlot = parentItem.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"submenu\"]');\n const assigned = submenuSlot?.assignedElements({ flatten: true })\n ?? [...parentItem.children].filter((el) => el.getAttribute('slot') === 'submenu');\n\n const items = assigned.filter((el): el is PkDropdownItem => el.localName === 'pk-dropdown-item');\n\n return includeDisabled ? items : items.filter((item) => !item.disabled);\n }\n\n getTrigger(): HTMLElement | null {\n if (this.for) {\n // Prefer live resolve so TipTap re-renders of the sibling button still bind.\n return resolveElementById(this, this.for) ?? this.triggerElement;\n }\n\n // Prefer the live slotted node — React may replace it without rebinding.\n return this.querySelector('[slot=\"trigger\"]') ?? this.triggerElement;\n }\n\n /**\n * Floating UI / light-dismiss anchor — Element (not id string) so resolution\n * happens from this host's root, not pk-popup's shadow root.\n */\n private getAnchor(): Element | '' {\n return this.getTrigger() ?? '';\n }\n\n private resolveExternalTrigger(): void {\n this.unbindTrigger(this.triggerElement);\n this.triggerElement = this.for ? resolveElementById(this, this.for) : null;\n this.bindTrigger(this.triggerElement);\n this.requestUpdate();\n }\n\n private onTriggerSlotChange(event: Event): void {\n // `for` owns the trigger when set — ignore slotted nodes.\n if (this.for) {\n return;\n }\n\n const slot = event.target as HTMLSlotElement;\n const [trigger] = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n this.unbindTrigger(this.triggerElement);\n this.triggerElement = trigger ?? null;\n this.bindTrigger(this.triggerElement);\n this.requestUpdate();\n }\n\n /** Sync aria + cached trigger from the trigger slot (safe to call repeatedly). */\n private syncSlottedTrigger(): void {\n const slot = this.renderRoot.querySelector<HTMLSlotElement>('slot[name=\"trigger\"]');\n\n if (slot) {\n this.onTriggerSlotChange({ target: slot } as unknown as Event);\n }\n }\n\n /** Aria (+ listeners for external `for` triggers that sit outside this host). */\n private bindTrigger(trigger: HTMLElement | null): void {\n if (!trigger) {\n return;\n }\n\n trigger.setAttribute('aria-haspopup', 'menu');\n\n // Slotted triggers are handled by host capture. External `for` triggers are not\n // descendants, so they need direct listeners.\n if (this.for) {\n trigger.addEventListener('click', this.handleExternalTriggerClick);\n trigger.addEventListener('keydown', this.handleTriggerKeyDown);\n }\n\n this.syncTriggerExpanded();\n }\n\n private unbindTrigger(trigger: HTMLElement | null): void {\n trigger?.removeEventListener('click', this.handleExternalTriggerClick);\n trigger?.removeEventListener('keydown', this.handleTriggerKeyDown);\n }\n\n private syncTriggerExpanded(): void {\n this.getTrigger()?.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n\n /** Called by `pk-dropdown-item` after a selection. */\n closeAfterSelect(_source: PkOverlaySource = 'api'): void {\n this.open = false;\n }\n\n /** `makeSelection()` — single `pk-select` on the menu host. */\n private makeSelection(item: PkDropdownItem): void {\n const trigger = this.getTrigger();\n\n if (item.disabled) {\n return;\n }\n\n if (item.type === 'checkbox') {\n item.checked = !item.checked;\n }\n\n if (item.type === 'radio' && !item.checked) {\n item.checked = true;\n }\n\n const detail = {\n value: item.value,\n type: item.type,\n checked: item.checked,\n radioGroup: item.radioGroup,\n };\n\n // Fire on the item first so React `DropdownItem onPkSelect` works. Non-bubbling so the\n // menu host listener (below) is not double-invoked from the same gesture.\n item.dispatchEvent(new CustomEvent('pk-select', {\n detail,\n bubbles: false,\n composed: false,\n cancelable: true,\n }));\n\n // parity — also expose selection on the menu host.\n const selectEvent = new CustomEvent('pk-select', {\n detail,\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n\n this.dispatchEvent(selectEvent);\n\n if (!selectEvent.defaultPrevented) {\n this.open = false;\n trigger?.focus({ preventScroll: true });\n }\n }\n\n private resolveMenuItem(event: Event): PkDropdownItem | null {\n const target = event.target;\n\n if (target instanceof PkDropdownItem) {\n return target;\n }\n\n if (target instanceof Element) {\n const closest = target.closest('pk-dropdown-item');\n\n if (closest instanceof PkDropdownItem) {\n return closest;\n }\n }\n\n const fromPath = event.composedPath().find(\n (node): node is PkDropdownItem => node instanceof PkDropdownItem,\n );\n\n return fromPath ?? null;\n }\n\n /** Resolves after exit animation and popup demotion — safe point to open a modal. */\n whenClosed(): Promise<void> {\n if (!this.open) {\n return this.popupElement?.active\n ? this.popupElement.stop()\n : Promise.resolve();\n }\n\n return new Promise<void>((resolve) => {\n this.addEventListener('pk-after-hide', () => {\n void this.popupElement.stop().then(() => resolve());\n }, { once: true });\n });\n }\n\n /** Recovery hook — clears leaked document dismiss listeners after abnormal teardown. */\n forceDismissCleanup(): void {\n this.open = false;\n this.popupElement.active = false;\n this.menuElement?.classList.remove('show', 'hide');\n this.closeAllSubmenus();\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.removeEventListener('mousemove', this.handleGlobalMouseMove);\n unregisterDismissible(this);\n openDropdowns.delete(this);\n }\n\n private handleMenuClick = (event: Event): void => {\n const item = this.resolveMenuItem(event);\n\n if (!item || item.disabled) {\n return;\n }\n\n if (item.hasSubmenu()) {\n if (!item.submenuOpen) {\n this.closeSiblingSubmenus(item);\n this.addToSubmenuStack(item);\n item.openSubmenu();\n }\n\n event.stopPropagation();\n return;\n }\n\n this.makeSelection(item);\n };\n\n /** `handleSubmenuOpening` — keep stack in sync when items notify on hover. */\n private handleSubmenuOpening = (event: Event): void => {\n const openingItem = (event as CustomEvent<{ item: PkDropdownItem }>).detail?.item;\n\n if (!(openingItem instanceof PkDropdownItem)) {\n return;\n }\n\n this.closeSiblingSubmenus(openingItem);\n this.addToSubmenuStack(openingItem);\n };\n\n /**\n * `handleGlobalMouseMove` — close the current submenu when the pointer\n * leaves both the parent item and its submenu panel (with a short grace period).\n */\n private handleGlobalMouseMove = (event: MouseEvent): void => {\n const currentSubmenuItem = this.getCurrentSubmenuItem();\n\n if (!currentSubmenuItem?.submenuOpen || !currentSubmenuItem.submenuElement) {\n return;\n }\n\n const submenuElement = currentSubmenuItem.submenuElement;\n const composedPath = event.composedPath();\n const submenuItemHovered = currentSubmenuItem.matches(':hover');\n const submenuElementHovered = Boolean(submenuElement.matches(':hover'));\n const isOverItem = submenuItemHovered\n || composedPath.some((el) => el === currentSubmenuItem);\n const isOverSubmenu = submenuElementHovered\n || composedPath.some(\n (el) => el instanceof HTMLElement && el.closest('[part=\"submenu\"]') === submenuElement,\n );\n\n if (!isOverItem && !isOverSubmenu) {\n // delayed close — same captured hover flags (grace for gap transit).\n window.setTimeout(() => {\n if (!submenuItemHovered && !submenuElementHovered) {\n currentSubmenuItem.submenuOpen = false;\n }\n }, 100);\n }\n };\n\n private handleTriggerClick = (event: Event): void => {\n const trigger = this.getTrigger();\n\n // Host capture: only toggle when the composed path hits the live trigger.\n if (!trigger || !event.composedPath().includes(trigger)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.openedByKeyboard = false;\n this.open = !this.open;\n };\n\n /** Direct listener for `for` triggers (outside this host's composed tree). */\n private handleExternalTriggerClick = (event: Event): void => {\n event.preventDefault();\n event.stopPropagation();\n this.openedByKeyboard = false;\n this.open = !this.open;\n };\n\n /** ArrowDown/Up on a closed trigger opens and focuses the first item ( APG). */\n private handleTriggerKeyDown = (event: KeyboardEvent): void => {\n // Host keydown: require the live trigger in the path. External `for` binds this\n // directly on the trigger, so the path check still passes.\n const trigger = this.getTrigger();\n\n if (!trigger || !event.composedPath().includes(trigger)) {\n return;\n }\n\n if (this.open) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n this.openedByKeyboard = true;\n this.open = true;\n }\n };\n\n private isRtl(): boolean {\n return getComputedStyle(this).direction === 'rtl';\n }\n\n private addToSubmenuStack(item: PkDropdownItem): void {\n const index = this.openSubmenuStack.indexOf(item);\n\n if (index !== -1) {\n this.openSubmenuStack = this.openSubmenuStack.slice(0, index + 1);\n } else {\n this.openSubmenuStack.push(item);\n }\n }\n\n private removeFromSubmenuStack(): PkDropdownItem | undefined {\n return this.openSubmenuStack.pop();\n }\n\n private getCurrentSubmenuItem(): PkDropdownItem | undefined {\n return this.openSubmenuStack.length > 0\n ? this.openSubmenuStack[this.openSubmenuStack.length - 1]\n : undefined;\n }\n\n private closeAllSubmenus(): void {\n this.getItems(true).forEach((item) => {\n item.submenuOpen = false;\n item.active = false;\n });\n this.openSubmenuStack = [];\n }\n\n private closeSiblingSubmenus(item: PkDropdownItem): void {\n const parentItem = item.closest('pk-dropdown-item:not([slot=\"submenu\"])');\n const siblings = parentItem instanceof PkDropdownItem\n ? this.getSubmenuItems(parentItem, true)\n : this.getItems(true);\n\n siblings.forEach((sibling) => {\n if (sibling !== item && sibling.submenuOpen) {\n sibling.submenuOpen = false;\n }\n });\n\n if (!this.openSubmenuStack.includes(item)) {\n this.openSubmenuStack.push(item);\n }\n }\n\n private setActiveItem(items: PkDropdownItem[], itemToSelect: PkDropdownItem): void {\n items.forEach((item) => {\n item.active = item === itemToSelect;\n\n // Keyboard-driven selection — paint explicitly:focus-visible uses :focus-visible on the\n // host; our control is a shadow button, so :focus-visible alone is unreliable from\n // the document keydown listener.\n if (item === itemToSelect) {\n item.setAttribute('data-highlighted', '');\n } else {\n item.removeAttribute('data-highlighted');\n }\n });\n itemToSelect.focus({ preventScroll: true });\n itemToSelect.scrollIntoView({ block: 'nearest' });\n }\n\n /** `handleDocumentKeyDown` — arrows, Home/End, typeahead, Enter/Space, submenu. */\n private handleDocumentKeyDown = (event: KeyboardEvent): void => {\n const isRtl = this.isRtl();\n\n if (event.key === 'Escape' && this.open && isTopDismissible(this)) {\n event.preventDefault();\n event.stopPropagation();\n this.open = false;\n this.getTrigger()?.focus({ preventScroll: true });\n return;\n }\n\n if (!this.open) {\n return;\n }\n\n const activeElement = [...activeElements()].find((el) => el.localName === 'pk-dropdown-item');\n const isFocusedOnItem = activeElement?.localName === 'pk-dropdown-item';\n const currentSubmenuItem = this.getCurrentSubmenuItem();\n const isInSubmenu = Boolean(currentSubmenuItem);\n\n let items: PkDropdownItem[];\n let activeItem: PkDropdownItem | undefined;\n let activeItemIndex: number;\n\n if (isInSubmenu && currentSubmenuItem) {\n items = this.getSubmenuItems(currentSubmenuItem);\n activeItem = items.find((item) => item.active || item === activeElement);\n activeItemIndex = activeItem ? items.indexOf(activeItem) : -1;\n } else {\n items = this.getItems();\n activeItem = items.find((item) => item.active || item === activeElement);\n activeItemIndex = activeItem ? items.indexOf(activeItem) : -1;\n }\n\n let itemToSelect: PkDropdownItem | undefined;\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n itemToSelect = activeItemIndex > 0\n ? items[activeItemIndex - 1]\n : items[items.length - 1];\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n itemToSelect = activeItemIndex !== -1 && activeItemIndex < items.length - 1\n ? items[activeItemIndex + 1]\n : items[0];\n }\n\n if (event.key === (isRtl ? 'ArrowLeft' : 'ArrowRight') && isFocusedOnItem && activeItem) {\n if (activeItem.hasSubmenu()) {\n event.preventDefault();\n event.stopPropagation();\n this.closeSiblingSubmenus(activeItem);\n activeItem.openSubmenu();\n this.addToSubmenuStack(activeItem);\n window.setTimeout(() => {\n const submenuItems = this.getSubmenuItems(activeItem);\n\n if (submenuItems.length > 0) {\n this.setActiveItem(submenuItems, submenuItems[0]);\n }\n }, 0);\n return;\n }\n }\n\n if (event.key === (isRtl ? 'ArrowRight' : 'ArrowLeft') && isInSubmenu) {\n event.preventDefault();\n event.stopPropagation();\n const removedItem = this.removeFromSubmenuStack();\n\n if (removedItem) {\n removedItem.submenuOpen = false;\n window.setTimeout(() => {\n removedItem.focus({ preventScroll: true });\n removedItem.active = true;\n const parentItems = removedItem.slot === 'submenu'\n && removedItem.parentElement instanceof PkDropdownItem\n ? this.getSubmenuItems(removedItem.parentElement)\n : this.getItems();\n parentItems.forEach((item) => {\n if (item !== removedItem) {\n item.active = false;\n }\n });\n }, 0);\n }\n\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n event.stopPropagation();\n itemToSelect = event.key === 'Home' ? items[0] : items[items.length - 1];\n }\n\n if (event.key === 'Tab') {\n this.open = false;\n return;\n }\n\n // Typeahead — printable keys ; Space alone activates when the buffer is empty.\n if (\n event.key.length === 1\n && !(event.metaKey || event.ctrlKey || event.altKey)\n && !(event.key === ' ' && this.userTypedQuery === '')\n ) {\n window.clearTimeout(this.userTypedTimeout);\n this.userTypedTimeout = window.setTimeout(() => {\n this.userTypedQuery = '';\n }, 1000);\n this.userTypedQuery += event.key;\n\n const selectionQuery = this.userTypedQuery.trim().toLowerCase();\n itemToSelect = items.find((item) => {\n const label = (item.textContent || '').trim().toLowerCase();\n return label.startsWith(selectionQuery);\n });\n }\n\n if (itemToSelect) {\n event.preventDefault();\n event.stopPropagation();\n this.setActiveItem(items, itemToSelect);\n return;\n }\n\n if (\n (event.key === 'Enter' || (event.key === ' ' && this.userTypedQuery === ''))\n && isFocusedOnItem\n && activeItem\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n if (activeItem.hasSubmenu()) {\n this.closeSiblingSubmenus(activeItem);\n activeItem.openSubmenu();\n this.addToSubmenuStack(activeItem);\n window.setTimeout(() => {\n const submenuItems = this.getSubmenuItems(activeItem);\n\n if (submenuItems.length > 0) {\n this.setActiveItem(submenuItems, submenuItems[0]);\n }\n }, 0);\n } else {\n this.makeSelection(activeItem);\n }\n }\n };\n\n private handleDocumentPointerDown = (event: Event): void => {\n const path = event.composedPath();\n const trigger = this.getTrigger();\n\n // Treat the trigger as inside — otherwise pointerdown closes and the following\n // click re-opens (external `for` triggers sit outside this host).\n if (path.some((el) => el === this || el === trigger)) {\n return;\n }\n\n this.open = false;\n };\n\n /** `showMenu()` — only called from `updated()` when `open` becomes true. */\n private async showMenu(): Promise<void> {\n if (!this.popupElement || !this.menuElement) {\n return;\n }\n\n // TipTap / late-mounted `for` siblings — refresh before positioning.\n if (this.for && !this.triggerElement?.isConnected) {\n this.resolveExternalTrigger();\n }\n\n const showEvent = new PkShowEvent();\n\n if (!this.dispatchEvent(showEvent)) {\n this.open = false;\n return;\n }\n\n if (this.popupElement.active) {\n // Interrupted hide can leave `active` true while the panel is gone —\n // recover instead of no-op return (next open would silently fail).\n this.popupElement.active = false;\n this.menuElement.classList.remove('show', 'hide');\n await this.updateComplete;\n }\n\n openDropdowns.forEach((dropdown) => {\n if (dropdown !== this) {\n dropdown.open = false;\n }\n });\n\n this.popupElement.active = true;\n this.open = true;\n openDropdowns.add(this);\n registerDismissible(this);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.addEventListener('mousemove', this.handleGlobalMouseMove);\n\n // Let Floating UI write data-current-placement before the show animation\n // (origin CSS keys off that attribute).\n await this.updateComplete;\n await waitForPopupReposition(this.popupElement, this.placement, 100, { requireEvent: true });\n\n if (!this.open) {\n // Show aborted mid-flight — demote so the next open is not stuck.\n this.popupElement.active = false;\n openDropdowns.delete(this);\n unregisterDismissible(this);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.removeEventListener('mousemove', this.handleGlobalMouseMove);\n return;\n }\n\n this.menuElement.classList.remove('hide');\n await animateWithClass(this.menuElement, 'show');\n\n const items = this.getItems();\n\n if (items.length > 0) {\n if (this.openedByKeyboard) {\n // Show path — first item is the current option (and :focus-visible).\n this.setActiveItem(items, items[0]);\n } else {\n // Pointer open: do not pre-set item.active / item focus.\n // Still focuses item[0] here; with our prior paint:false that left an\n // invisible active index so the first ArrowDown skipped to item[1].\n // Leaving index at -1 makes the first ArrowDown select items[0] (index formula\n // when activeItemIndex === -1). Focus the menu panel for screen readers.\n items.forEach((item) => {\n item.active = false;\n item.removeAttribute('data-highlighted');\n });\n this.menuElement.focus({ preventScroll: true });\n }\n }\n\n this.openedByKeyboard = false;\n\n this.dispatchEvent(new PkAfterShowEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }));\n }\n\n /**\n * `hideMenu()` — only called from `updated()` when `open` becomes false.\n * Demote popup via `active = false` after the hide animation (hide order).\n */\n private async hideMenu(source: PkOverlaySource): Promise<void> {\n if (!this.popupElement || !this.menuElement) {\n return;\n }\n\n const hideEvent = new PkHideEvent(source);\n\n if (!this.dispatchEvent(hideEvent)) {\n this.open = true;\n return;\n }\n\n this.open = false;\n openDropdowns.delete(this);\n unregisterDismissible(this);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('pointerdown', this.handleDocumentPointerDown, true);\n document.removeEventListener('mousemove', this.handleGlobalMouseMove);\n this.userTypedQuery = '';\n window.clearTimeout(this.userTypedTimeout);\n\n this.getItems(true).forEach((item) => {\n item.active = false;\n item.removeAttribute('data-highlighted');\n });\n\n this.menuElement.classList.remove('show');\n await animateWithClass(this.menuElement, 'hide');\n this.popupElement.active = false;\n\n this.dispatchEvent(new PkAfterHideEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n const popupActive = this.hasUpdated ? this.popupElement?.active : this.open;\n // Pass Element when using `for` — string ids resolve from pk-popup's shadow and miss TipTap siblings.\n const externalAnchor = this.for ? this.getAnchor() : '';\n\n return html`\n <pk-popup\n .anchor=${externalAnchor}\n placement=${this.placement}\n .distance=${this.distance || this.sideOffset}\n .skidding=${this.skidding}\n ?active=${popupActive}\n flip\n shift\n .shiftPadding=${10}\n auto-size=\"vertical\"\n .autoSizePadding=${10}\n >\n <slot\n name=\"trigger\"\n slot=\"anchor\"\n @slotchange=${this.onTriggerSlotChange}\n ></slot>\n\n <div\n id=\"menu\"\n part=\"panel\"\n class=\"panel\"\n role=\"menu\"\n tabindex=\"-1\"\n aria-orientation=\"vertical\"\n data-size=${this.size}\n @click=${this.handleMenuClick}\n @pk-submenu-open=${this.handleSubmenuOpening}\n >\n <slot></slot>\n </div>\n </pk-popup>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-menu': PkDropdownMenu;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import { i as
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import "./pk-
|
|
6
|
-
import {
|
|
7
|
-
import "./pk-
|
|
8
|
-
import "./pk-
|
|
9
|
-
import "./pk-
|
|
10
|
-
import "./pk-
|
|
11
|
-
import "./pk-
|
|
12
|
-
import "./pk-dropdown-
|
|
13
|
-
import "./pk-
|
|
14
|
-
import "./pk-
|
|
15
|
-
import "./pk-
|
|
16
|
-
import "./pk-
|
|
17
|
-
import "./pk-
|
|
1
|
+
import { i as customElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
3
|
+
import { n as renderIconHtml } from "./render-DQZp_Rak.js";
|
|
4
|
+
import "./pk-button-ntSVrer_.js";
|
|
5
|
+
import { t as PkFormAssociatedElement } from "./pk-form-associated-element-Doh2K3pG.js";
|
|
6
|
+
import { t as RequiredValidator } from "./required-validator-I58oJGZ3.js";
|
|
7
|
+
import "./pk-checkbox-L5uRex3b.js";
|
|
8
|
+
import "./pk-combobox-BrSBrldb.js";
|
|
9
|
+
import "./pk-input-BUbXj9We.js";
|
|
10
|
+
import "./pk-textarea-B401dUWa.js";
|
|
11
|
+
import "./pk-lightswitch-CSvgiHVQ.js";
|
|
12
|
+
import "./pk-dropdown-item-Ck2N_suK.js";
|
|
13
|
+
import "./pk-dropdown-menu-DBsO1uYR.js";
|
|
14
|
+
import "./pk-color-input-Csbm4ROT.js";
|
|
15
|
+
import "./pk-date-picker-C-w6Mn6j.js";
|
|
16
|
+
import "./pk-option-B_PF4v_Z.js";
|
|
17
|
+
import "./pk-select-DZNpEk5Z.js";
|
|
18
|
+
import "./pk-time-picker-DnNZVwRk.js";
|
|
18
19
|
import { css, html, nothing } from "lit";
|
|
19
|
-
import { classMap } from "lit/directives/class-map.js";
|
|
20
20
|
import { arrowDown, arrowUp, ellipsis, gear, getIcon, gripMove, plus, xmark } from "@verbb/plugin-kit-icons";
|
|
21
21
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
22
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
22
23
|
import { repeat } from "lit/directives/repeat.js";
|
|
23
24
|
//#region src/components/editable-table/editable-table-dnd.ts
|
|
24
25
|
/**
|
|
@@ -752,7 +753,7 @@ var nextRowId = () => {
|
|
|
752
753
|
var getCustomCellSlotName = (rowId, columnName) => {
|
|
753
754
|
return `cell:${rowId}:${columnName}`;
|
|
754
755
|
};
|
|
755
|
-
var BUILTIN_COLUMN_TYPES = new Set([
|
|
756
|
+
var BUILTIN_COLUMN_TYPES = /* @__PURE__ */ new Set([
|
|
756
757
|
"text",
|
|
757
758
|
"textarea",
|
|
758
759
|
"number",
|
|
@@ -781,7 +782,7 @@ var isCustomColumn = (column) => {
|
|
|
781
782
|
* Column types that receive TSV paste *writes* (Craft `importData` fills textual
|
|
782
783
|
* cells; checkbox/radio/lightswitch and static/custom cells are skipped).
|
|
783
784
|
*/
|
|
784
|
-
var PASTE_IMPORT_SKIP_TYPES = new Set([
|
|
785
|
+
var PASTE_IMPORT_SKIP_TYPES = /* @__PURE__ */ new Set([
|
|
785
786
|
"checkbox",
|
|
786
787
|
"radio",
|
|
787
788
|
"lightswitch",
|
|
@@ -792,7 +793,7 @@ var PASTE_IMPORT_SKIP_TYPES = new Set([
|
|
|
792
793
|
* Types that intercept multi-cell paste (Craft attaches `handlePaste` to textual
|
|
793
794
|
* inputs except multiline — native paste stays on `textarea`).
|
|
794
795
|
*/
|
|
795
|
-
var PASTE_INTERCEPT_TYPES = new Set([
|
|
796
|
+
var PASTE_INTERCEPT_TYPES = /* @__PURE__ */ new Set([
|
|
796
797
|
"text",
|
|
797
798
|
"number",
|
|
798
799
|
"email",
|
|
@@ -1317,7 +1318,9 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
|
|
|
1317
1318
|
this.dndRowSignature = signature;
|
|
1318
1319
|
}
|
|
1319
1320
|
getCellErrors(rowIndex, columnName) {
|
|
1320
|
-
const
|
|
1321
|
+
const prefixed = this.fieldName ? this.cellErrors?.[`${this.fieldName}.${rowIndex}.${columnName}`] : void 0;
|
|
1322
|
+
const bare = this.cellErrors?.[`${rowIndex}.${columnName}`];
|
|
1323
|
+
const errors = prefixed ?? bare;
|
|
1321
1324
|
if (!errors) return [];
|
|
1322
1325
|
return Array.isArray(errors) ? errors.map(String) : [String(errors)];
|
|
1323
1326
|
}
|
|
@@ -1724,4 +1727,4 @@ PkEditableTable = __decorate([customElement("pk-editable-table")], PkEditableTab
|
|
|
1724
1727
|
//#endregion
|
|
1725
1728
|
export { nextRowId as a, isCustomColumn as i, BUILTIN_COLUMN_TYPES as n, getCustomCellSlotName as r, PkEditableTable as t };
|
|
1726
1729
|
|
|
1727
|
-
//# sourceMappingURL=pk-editable-table-
|
|
1730
|
+
//# sourceMappingURL=pk-editable-table-Cd8K6vT4.js.map
|