@ionic/core 9.0.5-nightly.20260917 → 9.0.5-nightly.20260921
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/components/index.js +1 -1
- package/components/ion-accordion-group.js +1 -1
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-backdrop.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-breadcrumbs.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-card-content.js +1 -1
- package/components/ion-card-header.js +1 -1
- package/components/ion-card-subtitle.js +1 -1
- package/components/ion-card-title.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-checkbox.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-col.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-fab-list.js +1 -1
- package/components/ion-fab.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-column.js +1 -1
- package/components/ion-picker.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-route-redirect.js +1 -1
- package/components/ion-route.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-router.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p--8XqAiDn.js +4 -0
- package/components/{p-CkffScdn.js → p-2NFckEWF.js} +1 -1
- package/components/p-3D5X__KW.js +4 -0
- package/components/{p-C6WYVtle.js → p-B2SADtq2.js} +1 -1
- package/components/{p-gyjG_IM4.js → p-B4i_guWa.js} +1 -1
- package/components/p-B7NtI9LF.js +4 -0
- package/components/{p-MLplUp3U.js → p-B7UPvS1C.js} +1 -1
- package/components/{p-8MzqWBTT.js → p-BBPjLr6a.js} +1 -1
- package/components/p-BGu4rI5P.js +4 -0
- package/components/{p-Csi6iX-c.js → p-BNnwTu4u.js} +1 -1
- package/components/p-BQ1TznDx.js +4 -0
- package/components/p-BXD1texH.js +4 -0
- package/components/{p-BPbgEuCf.js → p-Bi7c_bt3.js} +1 -1
- package/components/p-BjIkK172.js +4 -0
- package/components/{p-CthoZqG1.js → p-BoK0Zxin.js} +1 -1
- package/components/p-C9CGVt9y.js +4 -0
- package/components/{p-BjizFeM6.js → p-CTh7oRWR.js} +1 -1
- package/components/{p-BMHhG7Xh.js → p-CTykhCkJ.js} +1 -1
- package/components/{p-BuxZkazO.js → p-CU8SQ6hA.js} +1 -1
- package/components/p-CVNoHMcR.js +4 -0
- package/components/p-CVqR_xzT.js +4 -0
- package/components/{p-BxCcX93a.js → p-CXAF_kfJ.js} +1 -1
- package/components/p-CXR6mbDq.js +4 -0
- package/components/p-CYqC-Atm.js +4 -0
- package/components/{p-S-gGoI4A.js → p-CaLdTi8C.js} +1 -1
- package/components/p-CbnQxifG.js +4 -0
- package/{dist/ionic/p-DlvB1Idh.js → components/p-CfKxueOn.js} +1 -1
- package/components/{p-CMT0YmOj.js → p-CtMgk_1c.js} +1 -1
- package/components/p-D2peGJYg.js +4 -0
- package/components/{p-MSr4IlyS.js → p-D6fVxd5I.js} +1 -1
- package/components/p-D6pn9UkD.js +4 -0
- package/components/{p-DOwsU7Mc.js → p-D8cczurE.js} +1 -1
- package/{dist/ionic/p-Bu6uWqQM.js → components/p-D9_ODaPJ.js} +1 -1
- package/components/p-DCryg-Sq.js +4 -0
- package/components/{p-2ta4uE9-.js → p-DF5FRPZh.js} +1 -1
- package/components/p-DF8r3KSX.js +4 -0
- package/components/{p-CcOl6jEv.js → p-DNT7yQ4z.js} +1 -1
- package/components/{p-PWHvigWP.js → p-DSRinNB2.js} +1 -1
- package/components/{p-DBGxvxkE.js → p-DTo_pxeB.js} +1 -1
- package/components/{p-DEvF_E6y.js → p-DUE1XLJD.js} +1 -1
- package/components/{p-DMT-4tHM.js → p-DVoewOZH.js} +1 -1
- package/components/p-DhUgaaqJ.js +4 -0
- package/components/{p-DSuBagxs.js → p-DiqHxuia.js} +1 -1
- package/components/{p-DKX1mWld.js → p-Do82ooMy.js} +1 -1
- package/components/{p-DcrAT6v8.js → p-DrzCm5Hh.js} +1 -1
- package/components/{p-CXuRZoWE.js → p-J7HaBhyh.js} +1 -1
- package/{dist/ionic/p-BT0-h-eD.js → components/p-TsPC4TcB.js} +1 -1
- package/components/p-Wl4YKqiE.js +4 -0
- package/components/p-gYw-RCaQ.js +4 -0
- package/components/p-lbvS3btC.js +4 -0
- package/components/p-ls85vUWB.js +4 -0
- package/components/{p-Bi8VGu4M.js → p-vg50UO6j.js} +1 -1
- package/dist/cjs/{animation-2DHlng-f.js → animation-C-JWwKgy.js} +2 -2
- package/dist/cjs/{app-globals-BeC95igM.js → app-globals-TXtzYAPy.js} +1 -1
- package/dist/cjs/attribute-controller-B0BsgXV8.js +131 -0
- package/dist/cjs/{button-active-CTyeZB16.js → button-active-DG3sHT6d.js} +2 -2
- package/dist/cjs/{capacitor-cADDPMtd.js → capacitor-CtkuLHaA.js} +1 -1
- package/dist/cjs/{format-BbkxKT7p.js → format-BHIqanHK.js} +1 -1
- package/dist/cjs/{framework-delegate-DYIuFqQx.js → framework-delegate-CvJ6SkeA.js} +1 -1
- package/dist/cjs/{haptic-CqPss9_L.js → haptic-C-wyDL4O.js} +1 -1
- package/dist/cjs/{helpers-DHjAEaU9.js → helpers-CJUjGJOS.js} +6 -3
- package/dist/cjs/{index-D_D542p0.js → index-78cPCZwH.js} +4 -4
- package/dist/cjs/{index-B-R-H1Z2.js → index-7glr9oHu.js} +2 -2
- package/dist/cjs/{index-MdIUU940.js → index-D9PPKWTO.js} +1 -1
- package/dist/cjs/{index-T36W_eKv.js → index-DLQNazpt.js} +4 -0
- package/dist/cjs/{index-Da83wbmS.js → index-DqKXmMKk.js} +5 -5
- package/dist/cjs/{index-BLq7TkUV.js → index-m83Rr85o.js} +2 -2
- package/dist/cjs/index.cjs.js +13 -11
- package/dist/cjs/{input-shims-DYxL0Fdm.js → input-shims-gtEasMEV.js} +5 -5
- package/dist/cjs/{input.utils-B_32Xwga.js → input.utils-C1JNUKzb.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +11 -11
- package/dist/cjs/ion-alert.cjs.entry.js +11 -11
- package/dist/cjs/ion-app_8.cjs.entry.js +16 -16
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +23 -34
- package/dist/cjs/ion-card_5.cjs.entry.js +19 -7
- package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime.cjs.entry.js +6 -6
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +17 -8
- package/dist/cjs/ion-loading.cjs.entry.js +7 -7
- package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-modal.cjs.entry.js +11 -11
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +108 -29
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +8 -8
- package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select-modal.cjs.entry.js +7 -7
- package/dist/cjs/ion-select_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +7 -7
- package/dist/cjs/ion-toggle.cjs.entry.js +6 -6
- package/dist/cjs/{ionic-global-BWd7usAF.js → ionic-global-t_WpJo84.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-6AFNO6uU.js → ios.transition-DZLrW8ga.js} +4 -4
- package/dist/cjs/{item-multiple-inputs-BaBx_Te8.js → item-multiple-inputs-n1sInjA_.js} +1 -1
- package/dist/cjs/{keyboard-DstMw6u1.js → keyboard-C06ZtyfO.js} +1 -1
- package/dist/cjs/{keyboard-BJEm-3HF.js → keyboard-CrDGk8Si.js} +4 -4
- package/dist/cjs/{keyboard-controller-DaUNT15d.js → keyboard-controller-CMLPZLrw.js} +2 -2
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CPq0ckrU.js → md.transition-BKWfxYYf.js} +4 -4
- package/dist/cjs/{overlays-DwMDYc_O.js → overlays-BEVysBKh.js} +4 -4
- package/dist/cjs/{select-option-render-Cu-ABBRH.js → select-option-render-CSPIWz_C.js} +2 -2
- package/dist/cjs/{slot-mutation-controller-CtYZdaWI.js → slot-mutation-controller-ByWHY518.js} +1 -1
- package/dist/cjs/{status-tap-BUfv_eD4.js → status-tap-CL5oy8nW.js} +3 -3
- package/dist/cjs/{swipe-back-DYKxJU5r.js → swipe-back-CMxnx1Rv.js} +2 -2
- package/dist/collection/components/button/button.js +21 -32
- package/dist/collection/components/card/card.js +17 -6
- package/dist/collection/components/item/item.js +15 -6
- package/dist/collection/components/popover/animations/ios.enter.js +20 -6
- package/dist/collection/components/popover/animations/md.enter.js +19 -5
- package/dist/collection/components/popover/utils.js +64 -13
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/attribute-controller.js +126 -0
- package/dist/collection/utils/helpers.js +5 -3
- package/dist/collection/utils/logging/index.js +4 -0
- package/dist/docs.json +1 -1
- package/dist/esm/{animation-CAzXJ2I1.js → animation-DRatc9mc.js} +2 -2
- package/dist/esm/{app-globals-DGJXnnkm.js → app-globals-BAPWjQRi.js} +1 -1
- package/dist/esm/attribute-controller-BrbFqJRn.js +128 -0
- package/dist/esm/{button-active-DyyWVqU3.js → button-active-Cn0mS9NP.js} +2 -2
- package/dist/esm/{capacitor-C041I3qZ.js → capacitor-DOXE6jIG.js} +1 -1
- package/dist/esm/{format-D78cdY12.js → format-Cd2aRger.js} +1 -1
- package/dist/esm/{framework-delegate-CUDbUfWS.js → framework-delegate-Dyvjs63n.js} +1 -1
- package/dist/esm/{haptic-D3njgGLB.js → haptic-B3RodENJ.js} +1 -1
- package/dist/esm/{helpers-BJFnZngp.js → helpers-D3HlaZqB.js} +6 -4
- package/dist/esm/{index-CdoVp_rZ.js → index-65Eftz2j.js} +4 -4
- package/dist/esm/{index-DmnOg_xm.js → index-B2E_HqxY.js} +1 -1
- package/dist/esm/{index-obGyiHiO.js → index-BBArCvE7.js} +2 -2
- package/dist/esm/{index-DoY4e_3F.js → index-BcTd8Van.js} +2 -2
- package/dist/esm/{index-iurdcGHg.js → index-C3hi0PAx.js} +5 -5
- package/dist/esm/{index-Dvqtt_WK.js → index-Ci0c0wtC.js} +5 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/{input-shims-DognYvwv.js → input-shims-pdb7CjZn.js} +5 -5
- package/dist/esm/{input.utils-C3mVJhji.js → input.utils-DTipZVu0.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +11 -11
- package/dist/esm/ion-alert.entry.js +11 -11
- package/dist/esm/ion-app_8.entry.js +16 -16
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- package/dist/esm/ion-button_2.entry.js +23 -34
- package/dist/esm/ion-card_5.entry.js +19 -7
- package/dist/esm/ion-checkbox.entry.js +4 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +4 -4
- package/dist/esm/ion-datetime.entry.js +6 -6
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
- package/dist/esm/ion-input-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +5 -5
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +17 -8
- package/dist/esm/ion-loading.entry.js +7 -7
- package/dist/esm/ion-menu_3.entry.js +7 -7
- package/dist/esm/ion-modal.entry.js +11 -11
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-option.entry.js +3 -3
- package/dist/esm/ion-picker-column.entry.js +5 -5
- package/dist/esm/ion-picker.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +108 -29
- package/dist/esm/ion-progress-bar.entry.js +3 -3
- package/dist/esm/ion-radio_2.entry.js +4 -4
- package/dist/esm/ion-range.entry.js +4 -4
- package/dist/esm/ion-refresher_2.entry.js +8 -8
- package/dist/esm/ion-reorder_2.entry.js +6 -6
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +4 -4
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select-modal.entry.js +7 -7
- package/dist/esm/ion-select_3.entry.js +8 -8
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +6 -6
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +5 -5
- package/dist/esm/ion-toast.entry.js +7 -7
- package/dist/esm/ion-toggle.entry.js +6 -6
- package/dist/esm/{ionic-global-BSaFA7np.js → ionic-global-D319UM2i.js} +1 -1
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-ofa92pAl.js → ios.transition-CjR-iczx.js} +4 -4
- package/dist/esm/{item-multiple-inputs-CffmpUe9.js → item-multiple-inputs-CtLCJNiL.js} +1 -1
- package/dist/esm/{keyboard-Dsc85bts.js → keyboard-BPq0DuxS.js} +4 -4
- package/dist/esm/{keyboard-Cz4hUjuj.js → keyboard-Fuj-w2n0.js} +1 -1
- package/dist/esm/{keyboard-controller-BLvRgxgP.js → keyboard-controller-kCdrbtXb.js} +2 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-DnFfqsAv.js → md.transition-BFmU8zjI.js} +4 -4
- package/dist/esm/{overlays-a_5AhqWk.js → overlays-D2Bo1FJ7.js} +4 -4
- package/dist/esm/{select-option-render-C_PCwA67.js → select-option-render-m4fqbKrD.js} +2 -2
- package/dist/esm/{slot-mutation-controller-D7n8Peo2.js → slot-mutation-controller-B_Gyzsmn.js} +1 -1
- package/dist/esm/{status-tap-BsTKKfug.js → status-tap-D3yqZrEP.js} +3 -3
- package/dist/esm/{swipe-back-ibFGqXH2.js → swipe-back-DDOJz7NH.js} +2 -2
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-011a08e9.entry.js +4 -0
- package/dist/ionic/{p-59305088.entry.js → p-0e8ae661.entry.js} +1 -1
- package/dist/ionic/p-12d381c2.entry.js +4 -0
- package/dist/ionic/{p-28952272.entry.js → p-12f0fc68.entry.js} +1 -1
- package/dist/ionic/{p-26d89234.entry.js → p-1daca166.entry.js} +1 -1
- package/dist/ionic/{p-fc3312a4.entry.js → p-2619b489.entry.js} +1 -1
- package/dist/ionic/{p-89e04e63.entry.js → p-28b0a9c7.entry.js} +1 -1
- package/dist/ionic/{p-cb893f35.entry.js → p-29e6a8d4.entry.js} +1 -1
- package/dist/ionic/{p-88cf4127.entry.js → p-2b32af08.entry.js} +1 -1
- package/dist/ionic/{p-41ae57ea.entry.js → p-304f92d1.entry.js} +1 -1
- package/dist/ionic/{p-fd220f9c.entry.js → p-35469a67.entry.js} +1 -1
- package/dist/ionic/{p-12ea6d13.entry.js → p-3fa7f61a.entry.js} +1 -1
- package/dist/ionic/{p-84dea138.entry.js → p-4253fc9f.entry.js} +1 -1
- package/dist/ionic/{p-5272e103.entry.js → p-44046266.entry.js} +1 -1
- package/dist/ionic/{p-416bec74.entry.js → p-45ca4440.entry.js} +1 -1
- package/dist/ionic/{p-5eadc64e.entry.js → p-49b1f0c1.entry.js} +1 -1
- package/dist/ionic/{p-efa78f73.entry.js → p-50ce079e.entry.js} +1 -1
- package/dist/ionic/p-51eb3f6f.entry.js +4 -0
- package/dist/ionic/{p-ac6a1168.entry.js → p-584579e7.entry.js} +1 -1
- package/dist/ionic/{p-0a824cef.entry.js → p-5dc1ad24.entry.js} +1 -1
- package/dist/ionic/p-5f41981f.entry.js +4 -0
- package/dist/ionic/{p-dd89474c.entry.js → p-62528b98.entry.js} +1 -1
- package/dist/ionic/p-636baa66.entry.js +4 -0
- package/dist/ionic/{p-d8a6ebfd.entry.js → p-64d0e766.entry.js} +1 -1
- package/dist/ionic/p-6f52068e.entry.js +4 -0
- package/dist/ionic/p-78d66dbf.entry.js +4 -0
- package/dist/ionic/{p-689f7a37.entry.js → p-84f30235.entry.js} +1 -1
- package/dist/ionic/{p-60ca717e.entry.js → p-87d878dc.entry.js} +1 -1
- package/dist/ionic/p-8WDtqI_V.js +4 -0
- package/dist/ionic/{p-063769cf.entry.js → p-8d6e044e.entry.js} +1 -1
- package/dist/ionic/p-920e067d.entry.js +4 -0
- package/dist/ionic/p-950c9b8b.entry.js +4 -0
- package/dist/ionic/p-BIiK2pe9.js +4 -0
- package/{components/p-BezPzC13.js → dist/ionic/p-BKzIpETv.js} +1 -1
- package/dist/ionic/p-BZlmYZid.js +4 -0
- package/dist/ionic/p-BiQyyAay.js +4 -0
- package/dist/ionic/p-Bl3GtrLa.js +4 -0
- package/dist/ionic/{p-C5SsTfux.js → p-BlIL832I.js} +1 -1
- package/dist/ionic/p-C-f6azUS.js +4 -0
- package/dist/ionic/p-C7ycgP4B.js +4 -0
- package/dist/ionic/p-CDm80Rj3.js +4 -0
- package/dist/ionic/p-CHFzrYxP.js +4 -0
- package/dist/ionic/{p-yiP8rgDC.js → p-CKXT3wQs.js} +1 -1
- package/dist/ionic/p-CM0qxZsb.js +4 -0
- package/dist/ionic/p-CQ_2X4AT.js +4 -0
- package/dist/ionic/p-CVrhKnjg.js +4 -0
- package/dist/ionic/{p-g9SK-dv1.js → p-CeBx7xPk.js} +1 -1
- package/dist/ionic/{p-Dvqtt_WK.js → p-Ci0c0wtC.js} +1 -1
- package/dist/ionic/{p-BIj0Lfim.js → p-DBXYO0BD.js} +1 -1
- package/dist/ionic/p-DMhM7rpA.js +4 -0
- package/dist/ionic/p-DR3KphGG.js +4 -0
- package/{components/p-CaY8IRMT.js → dist/ionic/p-DRhfTaQ0.js} +1 -1
- package/dist/ionic/p-DYjohhqj.js +4 -0
- package/dist/ionic/{p-BRlwrQ6h.js → p-DgorWJ0n.js} +1 -1
- package/dist/ionic/p-Dk5f_kFq.js +4 -0
- package/dist/ionic/{p-e0g1fYYm.js → p-DrPUIWm0.js} +1 -1
- package/dist/ionic/p-M3xPAPEh.js +4 -0
- package/dist/ionic/p-RgtmfsTX.js +4 -0
- package/dist/ionic/p-YkyvCGQx.js +4 -0
- package/dist/ionic/{p-e04a7110.entry.js → p-a72282cf.entry.js} +1 -1
- package/dist/ionic/p-a848f8d2.entry.js +4 -0
- package/dist/ionic/{p-df272a41.entry.js → p-a9e92328.entry.js} +1 -1
- package/dist/ionic/{p-8af458bf.entry.js → p-b08bcb06.entry.js} +1 -1
- package/dist/ionic/p-c176a425.entry.js +4 -0
- package/dist/ionic/{p-41254776.entry.js → p-c6c32f6d.entry.js} +1 -1
- package/dist/ionic/p-c913bd7d.entry.js +4 -0
- package/dist/ionic/{p-0a14a6a3.entry.js → p-d1687c72.entry.js} +1 -1
- package/dist/ionic/{p-c9952851.entry.js → p-d2a4fcf9.entry.js} +1 -1
- package/dist/ionic/{p-a1d733a3.entry.js → p-d428580a.entry.js} +1 -1
- package/dist/ionic/{p-25abc69d.entry.js → p-d7c9b618.entry.js} +1 -1
- package/dist/ionic/{p-d7fb1d2a.entry.js → p-dc0c071c.entry.js} +1 -1
- package/dist/ionic/{p-097a0cf5.entry.js → p-dc531e27.entry.js} +1 -1
- package/dist/ionic/p-de9cbee0.entry.js +4 -0
- package/dist/ionic/{p-302e4d74.entry.js → p-e223cd26.entry.js} +1 -1
- package/dist/ionic/{p-c0dd14f4.entry.js → p-f5a0d31b.entry.js} +1 -1
- package/dist/ionic/{p-7da532af.entry.js → p-f930dcb4.entry.js} +1 -1
- package/dist/ionic/{p-a4a2ce90.entry.js → p-f93bd399.entry.js} +1 -1
- package/dist/ionic/p-fa45723d.entry.js +4 -0
- package/dist/ionic/{p-38d3e1cb.entry.js → p-fab0961c.entry.js} +1 -1
- package/dist/ionic/p-fbf4767c.entry.js +4 -0
- package/dist/ionic/{p-CESQIy-V.js → p-vGIL6Nbe.js} +1 -1
- package/dist/types/components/button/button.d.ts +3 -12
- package/dist/types/components/card/card.d.ts +3 -1
- package/dist/types/components/item/item.d.ts +1 -1
- package/dist/types/components/popover/utils.d.ts +16 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/utils/attribute-controller.d.ts +56 -0
- package/dist/types/utils/helpers.d.ts +10 -2
- package/dist/types/utils/logging/index.d.ts +4 -0
- package/hydrate/index.js +278 -63
- package/hydrate/index.mjs +278 -63
- package/package.json +1 -1
- package/components/p--pR3YKVX.js +0 -4
- package/components/p-47h0_nN4.js +0 -4
- package/components/p-BGChz0G8.js +0 -4
- package/components/p-BLe-edUh.js +0 -4
- package/components/p-Bc-3W2an.js +0 -4
- package/components/p-BezRi1ML.js +0 -4
- package/components/p-C0tpzcpi.js +0 -4
- package/components/p-CDt7Q7Dj.js +0 -4
- package/components/p-CDvyV0r0.js +0 -4
- package/components/p-CEs5NmKW.js +0 -4
- package/components/p-CLVgYpRn.js +0 -4
- package/components/p-CPGp3WWG.js +0 -4
- package/components/p-CeGQfrDU.js +0 -4
- package/components/p-CpcdCRug.js +0 -4
- package/components/p-DVHC9GYb.js +0 -4
- package/components/p-DWe-YApm.js +0 -4
- package/components/p-DX_3N4fh.js +0 -4
- package/components/p-DftucGJR.js +0 -4
- package/components/p-HO1CDBeU.js +0 -4
- package/components/p-MOwrp7hX.js +0 -4
- package/components/p-k92zpBT6.js +0 -4
- package/components/p-rDUBp56G.js +0 -4
- package/dist/ionic/p-1c4926e9.entry.js +0 -4
- package/dist/ionic/p-1dac4211.entry.js +0 -4
- package/dist/ionic/p-23afeeb2.entry.js +0 -4
- package/dist/ionic/p-29687c0b.entry.js +0 -4
- package/dist/ionic/p-2ecebfd9.entry.js +0 -4
- package/dist/ionic/p-4dc3f2b3.entry.js +0 -4
- package/dist/ionic/p-5b9b245e.entry.js +0 -4
- package/dist/ionic/p-5f695204.entry.js +0 -4
- package/dist/ionic/p-63eb4550.entry.js +0 -4
- package/dist/ionic/p-8d68604a.entry.js +0 -4
- package/dist/ionic/p-B13Uv-FT.js +0 -4
- package/dist/ionic/p-B8K6OHqa.js +0 -4
- package/dist/ionic/p-BD0v0Sx_.js +0 -4
- package/dist/ionic/p-BDs20Dfe.js +0 -4
- package/dist/ionic/p-BRZstBYy.js +0 -4
- package/dist/ionic/p-Ba_yQZdQ.js +0 -4
- package/dist/ionic/p-BnMJqJBa.js +0 -4
- package/dist/ionic/p-BrbwGxm1.js +0 -4
- package/dist/ionic/p-Bx46Dlpo.js +0 -4
- package/dist/ionic/p-C0vJzNM9.js +0 -4
- package/dist/ionic/p-C4FdGOym.js +0 -4
- package/dist/ionic/p-CD77BF32.js +0 -4
- package/dist/ionic/p-CazJOH5P.js +0 -4
- package/dist/ionic/p-D14knedj.js +0 -4
- package/dist/ionic/p-DQcKi6P6.js +0 -4
- package/dist/ionic/p-NL1pxcde.js +0 -4
- package/dist/ionic/p-a6a95175.entry.js +0 -4
- package/dist/ionic/p-bcf18c26.entry.js +0 -4
- package/dist/ionic/p-be8ae1cc.entry.js +0 -4
- package/dist/ionic/p-e3a98575.entry.js +0 -4
- package/dist/ionic/p-f97ef975.entry.js +0 -4
- package/dist/ionic/p-yYEBg4iw.js +0 -4
package/hydrate/index.mjs
CHANGED
|
@@ -284,6 +284,8 @@ const isLogLevelEnabled = (minimum) => {
|
|
|
284
284
|
* to indicate the library that is warning the developer.
|
|
285
285
|
*
|
|
286
286
|
* @param message - The string message to be logged to the console.
|
|
287
|
+
*
|
|
288
|
+
* @internal
|
|
287
289
|
*/
|
|
288
290
|
const printIonWarning = (message, ...params) => {
|
|
289
291
|
if (isLogLevelEnabled(LogLevel.WARN)) {
|
|
@@ -296,6 +298,8 @@ const printIonWarning = (message, ...params) => {
|
|
|
296
298
|
*
|
|
297
299
|
* @param message - The string message to be logged to the console.
|
|
298
300
|
* @param params - Additional arguments to supply to the console.error.
|
|
301
|
+
*
|
|
302
|
+
* @internal
|
|
299
303
|
*/
|
|
300
304
|
const printIonError = (message, ...params) => {
|
|
301
305
|
if (isLogLevelEnabled(LogLevel.ERROR)) {
|
|
@@ -5943,8 +5947,8 @@ const hasLazyBuild = (stencilEl) => {
|
|
|
5943
5947
|
* helper function should be called in componentWillLoad and assigned to a variable
|
|
5944
5948
|
* that is later used in the render function.
|
|
5945
5949
|
*
|
|
5946
|
-
* This
|
|
5947
|
-
* does not trigger a re-render.
|
|
5950
|
+
* This copies once. Use `createAttributeController` instead when the attributes can
|
|
5951
|
+
* change after load, since a host attribute change does not trigger a re-render.
|
|
5948
5952
|
*/
|
|
5949
5953
|
const inheritAttributes$1 = (el, attributes = []) => {
|
|
5950
5954
|
const attributeObject = {};
|
|
@@ -5963,6 +5967,8 @@ const inheritAttributes$1 = (el, attributes = []) => {
|
|
|
5963
5967
|
* List of available ARIA attributes + `role`.
|
|
5964
5968
|
* Removed deprecated attributes.
|
|
5965
5969
|
* https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes
|
|
5970
|
+
*
|
|
5971
|
+
* @internal Exported for `attribute-controller.ts`, which needs the same set.
|
|
5966
5972
|
*/
|
|
5967
5973
|
const ariaAttributes = [
|
|
5968
5974
|
'role',
|
|
@@ -12261,6 +12267,128 @@ class Breadcrumbs {
|
|
|
12261
12267
|
}; }
|
|
12262
12268
|
}
|
|
12263
12269
|
|
|
12270
|
+
/**
|
|
12271
|
+
* Copies a set of attributes off the host element so they can be applied to an element
|
|
12272
|
+
* inside the shadow root, then keeps that copy in sync as the host attributes change.
|
|
12273
|
+
* Using `inheritAttributes` alone copies once at load, so anything written to the host
|
|
12274
|
+
* afterwards never reaches the element the assistive technology reads.
|
|
12275
|
+
*
|
|
12276
|
+
* Create the controller in `componentWillLoad`. It takes the initial copy and starts
|
|
12277
|
+
* watching right away, so `init()` is only needed to resume after a move.
|
|
12278
|
+
*
|
|
12279
|
+
* Two things to know before adopting it. Only the initial copy removes the attributes
|
|
12280
|
+
* from the host, so a value written after load sits on the host as well as on the
|
|
12281
|
+
* element it is applied to, which matters if the host has a role of its own. And an
|
|
12282
|
+
* attribute from the initial markup can never be removed, only overwritten, since the
|
|
12283
|
+
* copy already took it off the host and a `removeAttribute` there fires no mutation.
|
|
12284
|
+
* An empty string works for `aria-label` and friends, but a token-valued attribute
|
|
12285
|
+
* has to be set to its default instead, so `aria-pressed="false"` rather than empty.
|
|
12286
|
+
*
|
|
12287
|
+
* @internal
|
|
12288
|
+
* @param el The host element to copy from and watch.
|
|
12289
|
+
* @param attributes The attributes to copy and watch.
|
|
12290
|
+
* @param onChange Called after `attributes` changes, so the component can re-render.
|
|
12291
|
+
* @param hostOwnedAttributes Attributes copied at load but not watched. Use it for
|
|
12292
|
+
* attributes the component renders on its own `<Host>`, since a later change to one of
|
|
12293
|
+
* those is the component's own write, and for attributes that would put a second node in
|
|
12294
|
+
* the accessibility tree if the host kept a copy alongside the one we apply.
|
|
12295
|
+
*/
|
|
12296
|
+
const createAttributeController = (el, attributes, onChange, hostOwnedAttributes = []) => {
|
|
12297
|
+
let inherited = inheritAttributes$1(el, attributes);
|
|
12298
|
+
let observer;
|
|
12299
|
+
const watchedAttributes = attributes.filter((attr) => !hostOwnedAttributes.includes(attr));
|
|
12300
|
+
/**
|
|
12301
|
+
* The names still on the host, which is everything written after load. The initial
|
|
12302
|
+
* copy removes what it captures, so a missing attribute only counts as a removal
|
|
12303
|
+
* when its name is in here.
|
|
12304
|
+
*/
|
|
12305
|
+
const hostWritten = new Set();
|
|
12306
|
+
const setPresence = (name, value) => {
|
|
12307
|
+
if (value === null) {
|
|
12308
|
+
hostWritten.delete(name);
|
|
12309
|
+
}
|
|
12310
|
+
else {
|
|
12311
|
+
hostWritten.add(name);
|
|
12312
|
+
}
|
|
12313
|
+
};
|
|
12314
|
+
/**
|
|
12315
|
+
* Nothing is watching while the host is out of the tree, since `disconnectedCallback`
|
|
12316
|
+
* calls `destroy()`, and `forceUpdate` is a no-op on a disconnected host anyway. So
|
|
12317
|
+
* the host has to be re-read on the way back in.
|
|
12318
|
+
*/
|
|
12319
|
+
const readMissedChanges = () => {
|
|
12320
|
+
const changed = {};
|
|
12321
|
+
for (const name of watchedAttributes) {
|
|
12322
|
+
const value = el.getAttribute(name);
|
|
12323
|
+
const wasOnHost = hostWritten.has(name);
|
|
12324
|
+
setPresence(name, value);
|
|
12325
|
+
/**
|
|
12326
|
+
* An attribute that was never written to the host is missing because the initial
|
|
12327
|
+
* copy took it, not because the developer cleared it.
|
|
12328
|
+
*/
|
|
12329
|
+
if ((value === null && !wasOnHost) || value === inherited[name]) {
|
|
12330
|
+
continue;
|
|
12331
|
+
}
|
|
12332
|
+
changed[name] = value;
|
|
12333
|
+
}
|
|
12334
|
+
if (Object.keys(changed).length > 0) {
|
|
12335
|
+
inherited = { ...inherited, ...changed };
|
|
12336
|
+
onChange();
|
|
12337
|
+
}
|
|
12338
|
+
};
|
|
12339
|
+
const init = () => {
|
|
12340
|
+
// There is no MutationObserver in SSR or the hydrate build.
|
|
12341
|
+
if (observer !== undefined || watchedAttributes.length === 0 || win$1 === undefined || !('MutationObserver' in win$1)) {
|
|
12342
|
+
return;
|
|
12343
|
+
}
|
|
12344
|
+
readMissedChanges();
|
|
12345
|
+
observer = new MutationObserver((mutations) => {
|
|
12346
|
+
const changed = {};
|
|
12347
|
+
for (const mutation of mutations) {
|
|
12348
|
+
const name = mutation.attributeName;
|
|
12349
|
+
// A removed attribute reads back as null, which clears it from the element the
|
|
12350
|
+
// values are spread onto.
|
|
12351
|
+
const value = el.getAttribute(name);
|
|
12352
|
+
setPresence(name, value);
|
|
12353
|
+
changed[name] = value;
|
|
12354
|
+
}
|
|
12355
|
+
inherited = { ...inherited, ...changed };
|
|
12356
|
+
onChange();
|
|
12357
|
+
});
|
|
12358
|
+
observer.observe(el, { attributeFilter: watchedAttributes });
|
|
12359
|
+
};
|
|
12360
|
+
const destroy = () => {
|
|
12361
|
+
observer?.disconnect();
|
|
12362
|
+
observer = undefined;
|
|
12363
|
+
};
|
|
12364
|
+
/**
|
|
12365
|
+
* Has to run after the initial copy, because that copy removes the attributes from the
|
|
12366
|
+
* host and an observer armed any earlier would read the removal as a developer clearing
|
|
12367
|
+
* them.
|
|
12368
|
+
*/
|
|
12369
|
+
init();
|
|
12370
|
+
return {
|
|
12371
|
+
get attributes() {
|
|
12372
|
+
return inherited;
|
|
12373
|
+
},
|
|
12374
|
+
init,
|
|
12375
|
+
destroy,
|
|
12376
|
+
};
|
|
12377
|
+
};
|
|
12378
|
+
/**
|
|
12379
|
+
* The `createAttributeController` equivalent of `inheritAriaAttributes`, which copies and
|
|
12380
|
+
* watches every ARIA attribute plus `role`.
|
|
12381
|
+
*
|
|
12382
|
+
* @internal
|
|
12383
|
+
* @param el The host element to copy from and watch.
|
|
12384
|
+
* @param onChange Called after the attributes change, so the component can re-render.
|
|
12385
|
+
* @param hostOwnedAttributes Attributes copied at load but not watched. See
|
|
12386
|
+
* `createAttributeController`.
|
|
12387
|
+
*/
|
|
12388
|
+
const createAriaAttributeController = (el, onChange, hostOwnedAttributes = []) => {
|
|
12389
|
+
return createAttributeController(el, ariaAttributes, onChange, hostOwnedAttributes);
|
|
12390
|
+
};
|
|
12391
|
+
|
|
12264
12392
|
const buttonIosCss = () => `:host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #0054e9);--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted(ion-icon){font-size:1.35em;pointer-events:none}::slotted(ion-icon[slot=start]){-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=end]){-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #004acd);--background-focused:var(--ion-color-primary-shade, #004acd);--background-hover:var(--ion-color-primary-tint, #1a65eb);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #0054e9);--background-focused:var(--ion-color-primary, #0054e9);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}:host(.in-buttons){font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}:host(.button-large){--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}:host(.button-small){--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}:host(.button-round){--border-radius:999px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-has-icon-only){--padding-top:0;--padding-bottom:var(--padding-top);--padding-end:var(--padding-top);--padding-start:var(--padding-end);min-width:clamp(30px, 2.125em, 60px);min-height:clamp(30px, 2.125em, 60px)}::slotted(ion-icon[slot=icon-only]){font-size:clamp(15.12px, 1.125em, 43.02px)}:host(.button-small.button-has-icon-only){min-width:clamp(23px, 2.16em, 54px);min-height:clamp(23px, 2.16em, 54px)}:host(.button-small) ::slotted(ion-icon[slot=icon-only]){font-size:clamp(12.1394px, 1.308125em, 40.1856px)}:host(.button-large.button-has-icon-only){min-width:clamp(46px, 2.5em, 78px);min-height:clamp(46px, 2.5em, 78px)}:host(.button-large) ::slotted(ion-icon[slot=icon-only]){font-size:clamp(15.12px, 0.9em, 43.056px)}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:not(.ion-activated):hover),:host(.button-outline:not(.ion-activated):hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after{background:#fff;opacity:0.1}}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}`;
|
|
12265
12393
|
|
|
12266
12394
|
const buttonMdCss = () => `:host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #0054e9);--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted(ion-icon){font-size:1.35em;pointer-events:none}::slotted(ion-icon[slot=start]){-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=end]){-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1), background-color 15ms linear, color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}:host(.button-solid){--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}:host(.button-solid.ion-activated){--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}:host(.button-outline){--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:var(--ion-color-primary, #0054e9);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-outline.ion-activated.ion-color) .button-native{background:transparent}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:var(--ion-color-primary, #0054e9);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-round){--border-radius:999px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-large){--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}:host(.button-small){--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}:host(.button-strong){font-weight:bold}:host(.button-has-icon-only){--padding-top:0;--padding-bottom:var(--padding-top);--padding-end:var(--padding-top);--padding-start:var(--padding-end);min-width:clamp(30px, 2.86em, 60px);min-height:clamp(30px, 2.86em, 60px)}::slotted(ion-icon[slot=icon-only]){font-size:clamp(15.104px, 1.6em, 43.008px)}:host(.button-small.button-has-icon-only){min-width:clamp(23px, 2.16em, 54px);min-height:clamp(23px, 2.16em, 54px)}:host(.button-small) ::slotted(ion-icon[slot=icon-only]){font-size:clamp(13.002px, 1.23125em, 40.385px)}:host(.button-large.button-has-icon-only){min-width:clamp(46px, 2.5em, 78px);min-height:clamp(46px, 2.5em, 78px)}:host(.button-large) ::slotted(ion-icon[slot=icon-only]){font-size:clamp(15.008px, 1.4em, 43.008px)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color.ion-focused) .button-native::after,:host(.button-outline.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-background, var(--color));color:var(--ion-toolbar-color, var(--background), var(--ion-color-primary-contrast, #fff))}`;
|
|
@@ -12285,7 +12413,6 @@ class Button {
|
|
|
12285
12413
|
this.inToolbar = false;
|
|
12286
12414
|
this.formButtonEl = null;
|
|
12287
12415
|
this.formEl = null;
|
|
12288
|
-
this.inheritedAttributes = {};
|
|
12289
12416
|
/**
|
|
12290
12417
|
* If `true`, the button only has an icon.
|
|
12291
12418
|
*/
|
|
@@ -12344,22 +12471,6 @@ class Button {
|
|
|
12344
12471
|
this.formButtonEl.disabled = disabled;
|
|
12345
12472
|
}
|
|
12346
12473
|
}
|
|
12347
|
-
/**
|
|
12348
|
-
* This component is used within the `ion-input-password-toggle` component
|
|
12349
|
-
* to toggle the visibility of the password input.
|
|
12350
|
-
* These attributes need to update based on the state of the password input.
|
|
12351
|
-
* Otherwise, the values will be stale.
|
|
12352
|
-
*
|
|
12353
|
-
* @param newValue
|
|
12354
|
-
* @param _oldValue
|
|
12355
|
-
* @param propName
|
|
12356
|
-
*/
|
|
12357
|
-
onAriaChanged(newValue, _oldValue, propName) {
|
|
12358
|
-
this.inheritedAttributes = {
|
|
12359
|
-
...this.inheritedAttributes,
|
|
12360
|
-
[propName]: newValue,
|
|
12361
|
-
};
|
|
12362
|
-
}
|
|
12363
12474
|
/**
|
|
12364
12475
|
* This is responsible for rendering a hidden native
|
|
12365
12476
|
* button element inside the associated form. This allows
|
|
@@ -12397,7 +12508,21 @@ class Button {
|
|
|
12397
12508
|
this.inToolbar = !!this.el.closest('ion-buttons');
|
|
12398
12509
|
this.inListHeader = !!this.el.closest('ion-list-header');
|
|
12399
12510
|
this.inItem = !!this.el.closest('ion-item') || !!this.el.closest('ion-item-divider');
|
|
12400
|
-
|
|
12511
|
+
/**
|
|
12512
|
+
* The ARIA state has to stay live, since `ion-input-password-toggle` rewrites
|
|
12513
|
+
* `aria-label` and `aria-pressed` on its `ion-button` on every toggle. We keep
|
|
12514
|
+
* `aria-disabled` out of the watch because the `<Host>` below renders it from the
|
|
12515
|
+
* `disabled` prop and those writes would clobber a developer's value, and `role` out
|
|
12516
|
+
* because a post-load write stays on the host too, which would put the same role on
|
|
12517
|
+
* two elements in the accessibility tree.
|
|
12518
|
+
*/
|
|
12519
|
+
this.ariaController = createAriaAttributeController(this.el, () => forceUpdate(), ['aria-disabled', 'role']);
|
|
12520
|
+
}
|
|
12521
|
+
connectedCallback() {
|
|
12522
|
+
this.ariaController?.init();
|
|
12523
|
+
}
|
|
12524
|
+
disconnectedCallback() {
|
|
12525
|
+
this.ariaController?.destroy();
|
|
12401
12526
|
}
|
|
12402
12527
|
get hasIconOnly() {
|
|
12403
12528
|
return !!this.el.querySelector('[slot="icon-only"]');
|
|
@@ -12472,7 +12597,8 @@ class Button {
|
|
|
12472
12597
|
}
|
|
12473
12598
|
render() {
|
|
12474
12599
|
const mode = getIonMode$1(this);
|
|
12475
|
-
const { buttonType, type, disabled, rel, target, size, href, color, expand, hasIconOnly, shape, strong
|
|
12600
|
+
const { buttonType, type, disabled, rel, target, size, href, color, expand, hasIconOnly, shape, strong } = this;
|
|
12601
|
+
const inheritedAttributes = this.ariaController?.attributes ?? {};
|
|
12476
12602
|
const finalSize = size === undefined && this.inItem ? 'small' : size;
|
|
12477
12603
|
const TagType = href === undefined ? 'button' : 'a';
|
|
12478
12604
|
const attrs = TagType === 'button'
|
|
@@ -12497,7 +12623,7 @@ class Button {
|
|
|
12497
12623
|
{
|
|
12498
12624
|
type !== 'button' && this.renderHiddenButton();
|
|
12499
12625
|
}
|
|
12500
|
-
return (hAsync(Host, { key: '
|
|
12626
|
+
return (hAsync(Host, { key: 'fd42d1a5836c148cddd6c474c130ce4bb36286ea', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
|
|
12501
12627
|
[mode]: true,
|
|
12502
12628
|
[buttonType]: true,
|
|
12503
12629
|
[`${buttonType}-${expand}`]: expand !== undefined,
|
|
@@ -12512,21 +12638,12 @@ class Button {
|
|
|
12512
12638
|
'button-disabled': disabled,
|
|
12513
12639
|
'ion-activatable': true,
|
|
12514
12640
|
'ion-focusable': true,
|
|
12515
|
-
}) }, hAsync(TagType, { key: '
|
|
12641
|
+
}) }, hAsync(TagType, { key: '97dbf689ea912aed38182dbe0097a2bf5b768816', ...attrs, class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, ...inheritedAttributes }, hAsync("span", { key: '0f1ff4c667e95a8e3dc787fee43fe529b95477b7', class: "button-inner" }, hAsync("slot", { key: 'fc1e8b8080d02828c392e9edd6a70e0255435f82', name: "icon-only", onSlotchange: this.slotChanged }), hAsync("slot", { key: 'c1ece4c0d935f4d023d38fee4cf529dd4123d487', name: "start" }), hAsync("slot", { key: '970db0ee1e3633bc9cbff52eca446e4891ff6851' }), hAsync("slot", { key: 'ef8d7d894f01dbe881f381b985620c2a482e55fe', name: "end" })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'fea5e49a54b0efd07b1bd35d9fd5d2d862a2bac1', type: this.rippleType }))));
|
|
12516
12642
|
}
|
|
12517
12643
|
get el() { return getElement(this); }
|
|
12518
12644
|
static get watchers() { return {
|
|
12519
12645
|
"disabled": [{
|
|
12520
12646
|
"disabledChanged": 0
|
|
12521
|
-
}],
|
|
12522
|
-
"aria-checked": [{
|
|
12523
|
-
"onAriaChanged": 0
|
|
12524
|
-
}],
|
|
12525
|
-
"aria-label": [{
|
|
12526
|
-
"onAriaChanged": 0
|
|
12527
|
-
}],
|
|
12528
|
-
"aria-pressed": [{
|
|
12529
|
-
"onAriaChanged": 0
|
|
12530
12647
|
}]
|
|
12531
12648
|
}; }
|
|
12532
12649
|
static get style() { return {
|
|
@@ -12617,7 +12734,6 @@ const cardMdCss = () => `:host{--ion-safe-area-left:0px;--ion-safe-area-right:0p
|
|
|
12617
12734
|
class Card {
|
|
12618
12735
|
constructor(hostRef) {
|
|
12619
12736
|
registerInstance(this, hostRef);
|
|
12620
|
-
this.inheritedAriaAttributes = {};
|
|
12621
12737
|
/**
|
|
12622
12738
|
* If `true`, a button tag will be rendered and the card will be tappable.
|
|
12623
12739
|
*/
|
|
@@ -12637,7 +12753,18 @@ class Card {
|
|
|
12637
12753
|
this.routerDirection = 'forward';
|
|
12638
12754
|
}
|
|
12639
12755
|
componentWillLoad() {
|
|
12640
|
-
|
|
12756
|
+
/**
|
|
12757
|
+
* Only the initial copy takes the attribute off the host, so an `aria-label` written
|
|
12758
|
+
* after load stays on the host too. That's harmless here, because unlike `ion-item`
|
|
12759
|
+
* the card host renders no role of its own, so nothing reads the leftover copy.
|
|
12760
|
+
*/
|
|
12761
|
+
this.ariaController = createAttributeController(this.el, ['aria-label'], () => forceUpdate());
|
|
12762
|
+
}
|
|
12763
|
+
connectedCallback() {
|
|
12764
|
+
this.ariaController?.init();
|
|
12765
|
+
}
|
|
12766
|
+
disconnectedCallback() {
|
|
12767
|
+
this.ariaController?.destroy();
|
|
12641
12768
|
}
|
|
12642
12769
|
isClickable() {
|
|
12643
12770
|
return this.href !== undefined || this.button;
|
|
@@ -12647,7 +12774,8 @@ class Card {
|
|
|
12647
12774
|
if (!clickable) {
|
|
12648
12775
|
return [hAsync("slot", null)];
|
|
12649
12776
|
}
|
|
12650
|
-
const { href, routerAnimation, routerDirection
|
|
12777
|
+
const { href, routerAnimation, routerDirection } = this;
|
|
12778
|
+
const inheritedAriaAttributes = this.ariaController?.attributes ?? {};
|
|
12651
12779
|
const TagType = clickable ? (href === undefined ? 'button' : 'a') : 'div';
|
|
12652
12780
|
const attrs = TagType === 'button'
|
|
12653
12781
|
? { type: this.type }
|
|
@@ -12661,7 +12789,7 @@ class Card {
|
|
|
12661
12789
|
}
|
|
12662
12790
|
render() {
|
|
12663
12791
|
const mode = getIonMode$1(this);
|
|
12664
|
-
return (hAsync(Host, { key: '
|
|
12792
|
+
return (hAsync(Host, { key: '104412c26f53cce36432c3bb4d9e38bbe00c5816', class: createColorClasses$1(this.color, {
|
|
12665
12793
|
[mode]: true,
|
|
12666
12794
|
'card-disabled': this.disabled,
|
|
12667
12795
|
'ion-activatable': this.isClickable(),
|
|
@@ -21870,7 +21998,6 @@ class Item {
|
|
|
21870
21998
|
registerInstance(this, hostRef);
|
|
21871
21999
|
this.labelColorStyles = {};
|
|
21872
22000
|
this.itemStyles = new Map();
|
|
21873
|
-
this.inheritedAriaAttributes = {};
|
|
21874
22001
|
this.didLoad = false;
|
|
21875
22002
|
this.multipleInputs = false;
|
|
21876
22003
|
this.focusable = true;
|
|
@@ -21950,9 +22077,16 @@ class Item {
|
|
|
21950
22077
|
this.watchForIndicatorControls();
|
|
21951
22078
|
this.updateInteractivityOnSlotChange();
|
|
21952
22079
|
}
|
|
22080
|
+
this.ariaController?.init();
|
|
21953
22081
|
}
|
|
21954
22082
|
componentWillLoad() {
|
|
21955
|
-
|
|
22083
|
+
/**
|
|
22084
|
+
* Only the initial copy takes the attribute off the host, so an `aria-label` written
|
|
22085
|
+
* after load names both the native element and the Host, which is a `listitem` when
|
|
22086
|
+
* the item is in an `ion-list`. The two names always agree, so a screen reader just
|
|
22087
|
+
* reads it twice.
|
|
22088
|
+
*/
|
|
22089
|
+
this.ariaController = createAttributeController(this.el, ['aria-label'], () => forceUpdate());
|
|
21956
22090
|
}
|
|
21957
22091
|
componentDidLoad() {
|
|
21958
22092
|
raf(() => {
|
|
@@ -21969,6 +22103,7 @@ class Item {
|
|
|
21969
22103
|
this.indicatorControlObserver.disconnect();
|
|
21970
22104
|
this.indicatorControlObserver = undefined;
|
|
21971
22105
|
}
|
|
22106
|
+
this.ariaController?.destroy();
|
|
21972
22107
|
}
|
|
21973
22108
|
totalNestedInputs() {
|
|
21974
22109
|
// The following elements have a clickable cover that is relative to the entire item
|
|
@@ -22065,7 +22200,8 @@ class Item {
|
|
|
22065
22200
|
return controls[0];
|
|
22066
22201
|
}
|
|
22067
22202
|
render() {
|
|
22068
|
-
const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection,
|
|
22203
|
+
const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs, } = this;
|
|
22204
|
+
const inheritedAriaAttributes = this.ariaController?.attributes ?? {};
|
|
22069
22205
|
const childStyles = {};
|
|
22070
22206
|
const mode = getIonMode$1(this);
|
|
22071
22207
|
const clickable = this.isClickable();
|
|
@@ -22141,7 +22277,7 @@ class Item {
|
|
|
22141
22277
|
* multi-input item, and in a clickable item, which is a second tab stop.
|
|
22142
22278
|
*/
|
|
22143
22279
|
const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
|
|
22144
|
-
return (hAsync(Host, { key: '
|
|
22280
|
+
return (hAsync(Host, { key: '7fe924642310c19f057ae1bfa29c1acdf5cc7ed6', "aria-disabled": ariaDisabled, class: {
|
|
22145
22281
|
...childStyles,
|
|
22146
22282
|
...labelColorStyles,
|
|
22147
22283
|
...createColorClasses$1(this.color, {
|
|
@@ -22158,7 +22294,7 @@ class Item {
|
|
|
22158
22294
|
'ion-focusable': this.focusable,
|
|
22159
22295
|
'item-rtl': document.dir === 'rtl',
|
|
22160
22296
|
}),
|
|
22161
|
-
}, role: inList ? 'listitem' : null }, hAsync(TagType, { key: '
|
|
22297
|
+
}, role: inList ? 'listitem' : null }, hAsync(TagType, { key: '8fddfb2a076b4b98e45ee8b23579d011dba12acb', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, hAsync("slot", { key: '7f888b62b2023cf501fd308e32629e7a291c2d05', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), hAsync("div", { key: '6d5cdde307caa65b131edb65cb0a5f8294cf151c', class: "item-inner", part: "inner" }, hAsync("div", { key: '9fbfffdff4cf51adf1f02d573953cf8b145574b0', class: "input-wrapper", part: "container" }, hAsync("slot", { key: '574c7e61cdaa3959a28bad7353105ef217a76ed9', onSlotchange: this.updateInteractivityOnSlotChange })), hAsync("slot", { key: 'ed7e211960cd65ed17f865a6d50d5bdde069416b', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (hAsync("ion-icon", { key: '2847bb21f42e9d5ab8ea86262b2bc1c3b3f7c902', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && hAsync("ion-ripple-effect", { key: '55502ef394db0953144387fa3baebf9fa6a976a9' }))));
|
|
22162
22298
|
}
|
|
22163
22299
|
get el() { return getElement(this); }
|
|
22164
22300
|
static get watchers() { return {
|
|
@@ -30520,30 +30656,81 @@ const getSafeAreaInsets = (doc) => {
|
|
|
30520
30656
|
}
|
|
30521
30657
|
return insets;
|
|
30522
30658
|
};
|
|
30659
|
+
/**
|
|
30660
|
+
* Largest difference from 1 that the `offsetWidth` based zoom detection below
|
|
30661
|
+
* attributes to integer rounding rather than to an actual CSS `zoom`. The
|
|
30662
|
+
* rounding error is at most half a pixel over the width of the popover, which
|
|
30663
|
+
* is well under this threshold for any realistic popover size.
|
|
30664
|
+
*/
|
|
30665
|
+
const ZOOM_ROUNDING_TOLERANCE = 0.01;
|
|
30666
|
+
/**
|
|
30667
|
+
* Returns the cumulative CSS `zoom` factor applied to an element.
|
|
30668
|
+
*
|
|
30669
|
+
* When a CSS `zoom` other than 1 is set on an ancestor (e.g. the `html`
|
|
30670
|
+
* element, as recommended by the docs for dynamic font scaling on Chrome for
|
|
30671
|
+
* Android), `getBoundingClientRect()`, `clientX`/`clientY` and other geometry
|
|
30672
|
+
* APIs report values in the *zoomed* (visual) coordinate space, while inline
|
|
30673
|
+
* `top`/`left`/`--width` styles we set are interpreted in the *unzoomed*
|
|
30674
|
+
* (layout) space and re-scaled by the browser. Dividing the rect-derived
|
|
30675
|
+
* values by this factor converts them back to layout space so the popover is
|
|
30676
|
+
* positioned and sized correctly. Returns 1 when no zoom is applied.
|
|
30677
|
+
*/
|
|
30678
|
+
const getElementCSSZoom = (el) => {
|
|
30679
|
+
if (!el) {
|
|
30680
|
+
return 1;
|
|
30681
|
+
}
|
|
30682
|
+
/**
|
|
30683
|
+
* `currentCSSZoom` exposes the exact effective zoom of an element
|
|
30684
|
+
* (Chromium 128+). When available we use it directly.
|
|
30685
|
+
*/
|
|
30686
|
+
const currentCSSZoom = el.currentCSSZoom;
|
|
30687
|
+
if (typeof currentCSSZoom === 'number' && currentCSSZoom > 0) {
|
|
30688
|
+
return currentCSSZoom;
|
|
30689
|
+
}
|
|
30690
|
+
/**
|
|
30691
|
+
* Fallback for browsers without `currentCSSZoom`: compare the rendered
|
|
30692
|
+
* (zoomed) width from `getBoundingClientRect()` against the layout width
|
|
30693
|
+
* from `offsetWidth`, which is not affected by CSS `zoom`.
|
|
30694
|
+
*/
|
|
30695
|
+
const { width } = el.getBoundingClientRect();
|
|
30696
|
+
const { offsetWidth } = el;
|
|
30697
|
+
if (offsetWidth > 0 && width > 0) {
|
|
30698
|
+
const ratio = width / offsetWidth;
|
|
30699
|
+
/**
|
|
30700
|
+
* `offsetWidth` is rounded to an integer while the bounding rect is not,
|
|
30701
|
+
* so the ratio is rarely exactly 1 even when no zoom is applied. Treat
|
|
30702
|
+
* sub-pixel differences as "no zoom" so that unzoomed popovers are not
|
|
30703
|
+
* shifted by the rounding error. A real zoom deviates far more, though
|
|
30704
|
+
* the same rounding leaves the detected factor approximate.
|
|
30705
|
+
*/
|
|
30706
|
+
return Math.abs(ratio - 1) < ZOOM_ROUNDING_TOLERANCE ? 1 : ratio;
|
|
30707
|
+
}
|
|
30708
|
+
return 1;
|
|
30709
|
+
};
|
|
30523
30710
|
/**
|
|
30524
30711
|
* Returns the dimensions of the popover
|
|
30525
30712
|
* arrow on `ios` mode. If arrow is disabled
|
|
30526
30713
|
* returns (0, 0).
|
|
30527
30714
|
*/
|
|
30528
|
-
const getArrowDimensions = (arrowEl) => {
|
|
30715
|
+
const getArrowDimensions = (arrowEl, zoom = 1) => {
|
|
30529
30716
|
if (!arrowEl) {
|
|
30530
30717
|
return { arrowWidth: 0, arrowHeight: 0 };
|
|
30531
30718
|
}
|
|
30532
30719
|
const { width, height } = arrowEl.getBoundingClientRect();
|
|
30533
|
-
return { arrowWidth: width, arrowHeight: height };
|
|
30720
|
+
return { arrowWidth: width / zoom, arrowHeight: height / zoom };
|
|
30534
30721
|
};
|
|
30535
30722
|
/**
|
|
30536
30723
|
* Returns the recommended dimensions of the popover
|
|
30537
30724
|
* that takes into account whether or not the width
|
|
30538
30725
|
* should match the trigger width.
|
|
30539
30726
|
*/
|
|
30540
|
-
const getPopoverDimensions = (size, contentEl, triggerEl) => {
|
|
30727
|
+
const getPopoverDimensions = (size, contentEl, triggerEl, zoom = 1) => {
|
|
30541
30728
|
const contentDimentions = contentEl.getBoundingClientRect();
|
|
30542
|
-
const contentHeight = contentDimentions.height;
|
|
30543
|
-
let contentWidth = contentDimentions.width;
|
|
30729
|
+
const contentHeight = contentDimentions.height / zoom;
|
|
30730
|
+
let contentWidth = contentDimentions.width / zoom;
|
|
30544
30731
|
if (size === 'cover' && triggerEl) {
|
|
30545
30732
|
const triggerDimensions = triggerEl.getBoundingClientRect();
|
|
30546
|
-
contentWidth = triggerDimensions.width;
|
|
30733
|
+
contentWidth = triggerDimensions.width / zoom;
|
|
30547
30734
|
}
|
|
30548
30735
|
return {
|
|
30549
30736
|
contentWidth,
|
|
@@ -30883,7 +31070,7 @@ const configureKeyboardInteraction = (popoverEl) => {
|
|
|
30883
31070
|
* the reference point, preferred side, alignment
|
|
30884
31071
|
* and viewport dimensions.
|
|
30885
31072
|
*/
|
|
30886
|
-
const getPopoverPosition = (isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, triggerEl, event) => {
|
|
31073
|
+
const getPopoverPosition = (isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, triggerEl, event, zoom = 1) => {
|
|
30887
31074
|
let referenceCoordinates = {
|
|
30888
31075
|
top: 0,
|
|
30889
31076
|
left: 0,
|
|
@@ -30902,8 +31089,8 @@ const getPopoverPosition = (isRTL, contentWidth, contentHeight, arrowWidth, arro
|
|
|
30902
31089
|
}
|
|
30903
31090
|
const mouseEv = event;
|
|
30904
31091
|
referenceCoordinates = {
|
|
30905
|
-
top: mouseEv.clientY,
|
|
30906
|
-
left: mouseEv.clientX,
|
|
31092
|
+
top: mouseEv.clientY / zoom,
|
|
31093
|
+
left: mouseEv.clientX / zoom,
|
|
30907
31094
|
width: 1,
|
|
30908
31095
|
height: 1,
|
|
30909
31096
|
};
|
|
@@ -30935,10 +31122,10 @@ const getPopoverPosition = (isRTL, contentWidth, contentHeight, arrowWidth, arro
|
|
|
30935
31122
|
}
|
|
30936
31123
|
const triggerBoundingBox = actualTriggerEl.getBoundingClientRect();
|
|
30937
31124
|
referenceCoordinates = {
|
|
30938
|
-
top: triggerBoundingBox.top,
|
|
30939
|
-
left: triggerBoundingBox.left,
|
|
30940
|
-
width: triggerBoundingBox.width,
|
|
30941
|
-
height: triggerBoundingBox.height,
|
|
31125
|
+
top: triggerBoundingBox.top / zoom,
|
|
31126
|
+
left: triggerBoundingBox.left / zoom,
|
|
31127
|
+
width: triggerBoundingBox.width / zoom,
|
|
31128
|
+
height: triggerBoundingBox.height / zoom,
|
|
30942
31129
|
};
|
|
30943
31130
|
break;
|
|
30944
31131
|
}
|
|
@@ -31301,21 +31488,35 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
|
|
|
31301
31488
|
const { event: ev, size, trigger, reference, side, align } = opts;
|
|
31302
31489
|
const doc = baseEl.ownerDocument;
|
|
31303
31490
|
const isRTL = doc.dir === 'rtl';
|
|
31304
|
-
const bodyWidth = doc.defaultView.innerWidth;
|
|
31305
|
-
const bodyHeight = doc.defaultView.innerHeight;
|
|
31306
31491
|
const root = getElementRoot(baseEl);
|
|
31307
31492
|
const contentEl = root.querySelector('.popover-content');
|
|
31308
31493
|
const arrowEl = root.querySelector('.popover-arrow');
|
|
31494
|
+
/**
|
|
31495
|
+
* A CSS `zoom` other than 1 on an ancestor (e.g. the `html` element) causes
|
|
31496
|
+
* geometry APIs like `getBoundingClientRect()` to report zoomed values while
|
|
31497
|
+
* inline `top`/`left`/`--width` styles are interpreted in the unzoomed layout
|
|
31498
|
+
* space. Normalize all rect-derived measurements by this factor so the
|
|
31499
|
+
* popover is positioned and sized correctly.
|
|
31500
|
+
*/
|
|
31501
|
+
const zoom = getElementCSSZoom(contentEl);
|
|
31502
|
+
/**
|
|
31503
|
+
* `innerWidth`/`innerHeight` are not affected by CSS `zoom`, so they must be
|
|
31504
|
+
* scaled down to the same layout space as the normalized measurements above.
|
|
31505
|
+
* Otherwise the popover would be clamped against a viewport that is larger
|
|
31506
|
+
* than the space actually available to it.
|
|
31507
|
+
*/
|
|
31508
|
+
const bodyWidth = doc.defaultView.innerWidth / zoom;
|
|
31509
|
+
const bodyHeight = doc.defaultView.innerHeight / zoom;
|
|
31309
31510
|
const referenceSizeEl = trigger || ev?.detail?.ionShadowTarget || ev?.target;
|
|
31310
|
-
const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl);
|
|
31311
|
-
const { arrowWidth, arrowHeight } = getArrowDimensions(arrowEl);
|
|
31511
|
+
const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl, zoom);
|
|
31512
|
+
const { arrowWidth, arrowHeight } = getArrowDimensions(arrowEl, zoom);
|
|
31312
31513
|
const defaultPosition = {
|
|
31313
31514
|
top: bodyHeight / 2 - contentHeight / 2,
|
|
31314
31515
|
left: bodyWidth / 2 - contentWidth / 2,
|
|
31315
31516
|
originX: isRTL ? 'right' : 'left',
|
|
31316
31517
|
originY: 'top',
|
|
31317
31518
|
};
|
|
31318
|
-
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev);
|
|
31519
|
+
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
|
|
31319
31520
|
const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
|
|
31320
31521
|
const rawSafeArea = getSafeAreaInsets(doc);
|
|
31321
31522
|
const safeArea = size === 'cover'
|
|
@@ -31437,19 +31638,33 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
|
|
|
31437
31638
|
const { event: ev, size, trigger, reference, side, align } = opts;
|
|
31438
31639
|
const doc = baseEl.ownerDocument;
|
|
31439
31640
|
const isRTL = doc.dir === 'rtl';
|
|
31440
|
-
const bodyWidth = doc.defaultView.innerWidth;
|
|
31441
|
-
const bodyHeight = doc.defaultView.innerHeight;
|
|
31442
31641
|
const root = getElementRoot(baseEl);
|
|
31443
31642
|
const contentEl = root.querySelector('.popover-content');
|
|
31643
|
+
/**
|
|
31644
|
+
* A CSS `zoom` other than 1 on an ancestor (e.g. the `html` element) causes
|
|
31645
|
+
* geometry APIs like `getBoundingClientRect()` to report zoomed values while
|
|
31646
|
+
* inline `top`/`left`/`--width` styles are interpreted in the unzoomed layout
|
|
31647
|
+
* space. Normalize all rect-derived measurements by this factor so the
|
|
31648
|
+
* popover is positioned and sized correctly.
|
|
31649
|
+
*/
|
|
31650
|
+
const zoom = getElementCSSZoom(contentEl);
|
|
31651
|
+
/**
|
|
31652
|
+
* `innerWidth`/`innerHeight` are not affected by CSS `zoom`, so they must be
|
|
31653
|
+
* scaled down to the same layout space as the normalized measurements above.
|
|
31654
|
+
* Otherwise the popover would be clamped against a viewport that is larger
|
|
31655
|
+
* than the space actually available to it.
|
|
31656
|
+
*/
|
|
31657
|
+
const bodyWidth = doc.defaultView.innerWidth / zoom;
|
|
31658
|
+
const bodyHeight = doc.defaultView.innerHeight / zoom;
|
|
31444
31659
|
const referenceSizeEl = trigger || ev?.detail?.ionShadowTarget || ev?.target;
|
|
31445
|
-
const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl);
|
|
31660
|
+
const { contentWidth, contentHeight } = getPopoverDimensions(size, contentEl, referenceSizeEl, zoom);
|
|
31446
31661
|
const defaultPosition = {
|
|
31447
31662
|
top: bodyHeight / 2 - contentHeight / 2,
|
|
31448
31663
|
left: bodyWidth / 2 - contentWidth / 2,
|
|
31449
31664
|
originX: isRTL ? 'right' : 'left',
|
|
31450
31665
|
originY: 'top',
|
|
31451
31666
|
};
|
|
31452
|
-
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev);
|
|
31667
|
+
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
|
|
31453
31668
|
const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
|
|
31454
31669
|
// MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
|
|
31455
31670
|
// This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
|
package/package.json
CHANGED
package/components/p--pR3YKVX.js
DELETED
package/components/p-47h0_nN4.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import{p as t,H as i,e,h as o,d as n,t as r}from"./p-CthoZqG1.js";import{c as a}from"./p-byZM6qHV.js";import{b as l}from"./p-2ta4uE9-.js";const s=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.ionStyle=e(this,"ionStyle",7)}sizeChanged(){this.emitStyle()}connectedCallback(){this.emitStyle()}emitStyle(){const t=this.getSize();this.ionStyle.emit({[`title-${t}`]:!0})}getSize(){return void 0!==this.size?this.size:"default"}render(){const t=l(this),i=this.getSize();return o(n,{key:"c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7",class:a(this.color,{[t]:!0,[`title-${i}`]:!0,"title-rtl":"rtl"===document.dir})},o("div",{key:"5253b9e39fb764bfe1e57370719139f8a83e9904",class:"toolbar-title"},o("slot",{key:"e38b1eccb0175c36f8cab211aee7ce4d61fc9035"})))}get el(){return this}static get watchers(){return{size:[{sizeChanged:0}]}}static get style(){return{ios:":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}",md:":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}"}}},[289,"ion-title",{color:[513],size:[1]},void 0,{size:[{sizeChanged:0}]}]);function d(){"undefined"!=typeof customElements&&["ion-title"].forEach((t=>{"ion-title"===t&&(customElements.get(r(t))||customElements.define(r(t),s))}))}export{s as T,d}
|
package/components/p-BGChz0G8.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import{p as t,H as i,e,h as o,d as r,t as s}from"./p-CthoZqG1.js";import{e as n}from"./p-DEvF_E6y.js";import{c as a}from"./p-DJztqcrH.js";import{b as d}from"./p-2ta4uE9-.js";const l=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.ionChange=e(this,"ionChange",7),this.ionValueChange=e(this,"ionValueChange",7),this.inputId="ion-rg-"+h++,this.helperTextId=`${this.inputId}-helper-text`,this.errorTextId=`${this.inputId}-error-text`,this.labelId=`${this.inputId}-lbl`,this.isInvalid=!1,this.allowEmptySelection=!1,this.name=this.inputId,this.setRadioTabindex=t=>{const i=this.getRadios(),e=i.find((t=>!t.disabled)),o=i.find((i=>i.value===t&&!i.disabled));if(!e&&!o)return;const r=o||e;for(const t of i)t.setButtonTabindex(t===r?0:-1)},this.onClick=t=>{t.preventDefault();const i=t.target&&t.target.closest("ion-radio");if(i&&!i.disabled){const e=i.value;e!==this.value?(this.value=e,this.emitValueChange(t)):this.allowEmptySelection&&(this.value=void 0,this.emitValueChange(t))}}}valueChanged(t){this.setRadioTabindex(t),this.ionValueChange.emit({value:t})}componentDidLoad(){this.valueChanged(this.value)}async connectedCallback(){const t=this.el.querySelector("ion-list-header")||this.el.querySelector("ion-item-divider");if(t){const i=this.label=t.querySelector("ion-label");i&&(this.labelId=i.id=this.name+"-lbl")}"undefined"!=typeof MutationObserver&&(this.validationObserver=new MutationObserver((()=>{const t=a(this.el);this.isInvalid!==t&&(this.isInvalid=t,Promise.resolve().then((()=>{this.hintTextId=this.getHintTextId()})))})),this.validationObserver.observe(this.el,{attributes:!0,attributeFilter:["class"]})),this.isInvalid=a(this.el)}componentWillLoad(){this.hintTextId=this.getHintTextId()}disconnectedCallback(){this.validationObserver&&(this.validationObserver.disconnect(),this.validationObserver=void 0)}getRadios(){return Array.from(this.el.querySelectorAll("ion-radio"))}emitValueChange(t){const{value:i}=this;this.ionChange.emit({value:i,event:t})}onKeydown(t){const i=!!this.el.closest("ion-select-popover")||!!this.el.closest("ion-select-modal");if(t.target&&!this.el.contains(t.target))return;const e=this.getRadios().filter((t=>!t.disabled));if(t.target&&e.includes(t.target)){const o=e.findIndex((i=>i===t.target)),r=e[o];let s;if(["ArrowDown","ArrowRight"].includes(t.key)&&(s=o===e.length-1?e[0]:e[o+1]),["ArrowUp","ArrowLeft"].includes(t.key)&&(s=0===o?e[e.length-1]:e[o-1]),s&&e.includes(s)&&(s.setFocus(t),i||(this.value=s.value,this.emitValueChange(t))),[" "].includes(t.key)){const i=this.value;this.value=this.allowEmptySelection&&void 0!==this.value?void 0:r.value,(i!==this.value||this.allowEmptySelection)&&this.emitValueChange(t),t.preventDefault()}if("Enter"===t.key&&i&&!t.repeat){const i=this.value;this.value=r.value,i!==this.value&&this.emitValueChange(t),t.preventDefault()}}}async setFocus(){const t=this.getRadios().find((t=>-1!==t.tabIndex));t?.setFocus()}renderHintText(){const{helperText:t,errorText:i,helperTextId:e,errorTextId:r,isInvalid:s}=this;if(t||i)return o("div",{class:"radio-group-top"},o("div",{id:e,class:"helper-text","aria-live":"polite"},s?null:t),o("div",{id:r,class:"error-text",role:"alert"},s?i:null))}getHintTextId(){const{helperText:t,errorText:i,helperTextId:e,errorTextId:o,isInvalid:r}=this;return r&&i?o:t?e:void 0}render(){const{label:t,labelId:i,el:e,name:s,value:a}=this,l=d(this);return n(!0,e,s,a,!1),o(r,{key:"8d926a17e800adf0184274215c9689c96a8d6dfd",role:"radiogroup","aria-labelledby":t?i:null,"aria-describedby":this.hintTextId,"aria-invalid":this.isInvalid?"true":void 0,onClick:this.onClick,class:l},this.renderHintText(),o("slot",{key:"2ff891123d5971a581b70d0886d23a074358c2dc"}))}get el(){return this}static get watchers(){return{value:[{valueChanged:0}]}}static get style(){return{ios:"ion-radio-group{vertical-align:top}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}",md:"ion-radio-group{vertical-align:top}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}"}}},[292,"ion-radio-group",{allowEmptySelection:[4,"allow-empty-selection"],compareWith:[1,"compare-with"],name:[1],value:[1032],helperText:[1,"helper-text"],errorText:[1,"error-text"],isInvalid:[32],hintTextId:[32],setFocus:[64]},[[4,"keydown","onKeydown"]],{value:[{valueChanged:0}]}]);let h=0;function p(){"undefined"!=typeof customElements&&["ion-radio-group"].forEach((t=>{"ion-radio-group"===t&&(customElements.get(s(t))||customElements.define(s(t),l))}))}export{l as R,p as d}
|