@ionic/core 8.7.19-dev.11772655618.1af0949f → 8.7.19-dev.11773072221.15efeed0
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.d.ts +0 -2
- package/components/index.js +114 -1
- package/components/ion-accordion-group.js +268 -1
- package/components/ion-accordion.js +456 -1
- package/components/ion-action-sheet.js +6 -1
- package/components/ion-alert.js +6 -1
- package/components/ion-app.js +132 -1
- package/components/ion-avatar.js +41 -1
- package/components/ion-back-button.js +130 -1
- package/components/ion-backdrop.js +6 -1
- package/components/ion-badge.js +47 -1
- package/components/ion-breadcrumb.js +137 -1
- package/components/ion-breadcrumbs.js +164 -1
- package/components/ion-button.js +6 -1
- package/components/ion-buttons.js +6 -1
- package/components/ion-card-content.js +45 -1
- package/components/ion-card-header.js +56 -1
- package/components/ion-card-subtitle.js +48 -1
- package/components/ion-card-title.js +48 -1
- package/components/ion-card.js +107 -1
- package/components/ion-checkbox.js +6 -1
- package/components/ion-chip.js +66 -1
- package/components/ion-col.js +163 -1
- package/components/ion-content.js +6 -1
- package/components/ion-datetime-button.js +383 -1
- package/components/ion-datetime.js +2047 -1
- package/components/ion-fab-button.js +151 -1
- package/components/ion-fab-list.js +73 -1
- package/components/ion-fab.js +101 -1
- package/components/ion-footer.js +179 -1
- package/components/ion-grid.js +46 -1
- package/components/ion-header.js +6 -1
- package/components/ion-icon.js +6 -1
- package/components/ion-img.js +133 -1
- package/components/ion-infinite-scroll-content.js +69 -1
- package/components/ion-infinite-scroll.js +236 -1
- package/components/ion-input-otp.js +682 -1
- package/components/ion-input-password-toggle.js +128 -1
- package/components/ion-input.js +646 -1
- package/components/ion-item-divider.js +59 -1
- package/components/ion-item-group.js +46 -1
- package/components/ion-item-option.js +91 -1
- package/components/ion-item-options.js +73 -1
- package/components/ion-item-sliding.js +457 -1
- package/components/ion-item.js +6 -1
- package/components/ion-label.js +6 -1
- package/components/ion-list-header.js +6 -1
- package/components/ion-list.js +6 -1
- package/components/ion-loading.js +343 -1
- package/components/ion-menu-button.js +109 -1
- package/components/ion-menu-toggle.js +64 -1
- package/components/ion-menu.js +741 -1
- package/components/ion-modal.js +6 -1
- package/components/ion-nav-link.js +64 -1
- package/components/ion-nav.js +951 -1
- package/components/ion-note.js +47 -1
- package/components/ion-picker-column-option.js +6 -1
- package/components/ion-picker-column.js +6 -1
- package/components/ion-picker-legacy-column.js +6 -1
- package/components/ion-picker-legacy.js +342 -1
- package/components/ion-picker.js +6 -1
- package/components/ion-popover.js +6 -1
- package/components/ion-progress-bar.js +100 -1
- package/components/ion-radio-group.js +6 -1
- package/components/ion-radio.js +6 -1
- package/components/ion-range.js +844 -1
- package/components/ion-refresher-content.js +88 -1
- package/components/ion-refresher.js +750 -1
- package/components/ion-reorder-group.js +322 -1
- package/components/ion-reorder.js +60 -1
- package/components/ion-ripple-effect.js +6 -1
- package/components/ion-route-redirect.js +45 -1
- package/components/ion-route.js +74 -1
- package/components/ion-router-link.js +61 -1
- package/components/ion-router-outlet.js +226 -1
- package/components/ion-router.js +840 -1
- package/components/ion-row.js +36 -1
- package/components/ion-searchbar.js +540 -1
- package/components/ion-segment-button.js +173 -1
- package/components/ion-segment-content.js +35 -1
- package/components/ion-segment-view.js +142 -1
- package/components/ion-segment.js +602 -1
- package/components/ion-select-modal.js +6 -1
- package/components/ion-select-option.js +46 -1
- package/components/ion-select-popover.js +6 -1
- package/components/ion-select.js +1035 -1
- package/components/ion-skeleton-text.js +64 -1
- package/components/ion-spinner.js +6 -1
- package/components/ion-split-pane.js +190 -1
- package/components/ion-tab-bar.js +135 -1
- package/components/ion-tab-button.js +127 -1
- package/components/ion-tab.js +82 -1
- package/components/ion-tabs.js +204 -1
- package/components/ion-text.js +42 -1
- package/components/ion-textarea.js +554 -1
- package/components/ion-thumbnail.js +36 -1
- package/components/ion-title.js +6 -1
- package/components/ion-toast.js +938 -1
- package/components/ion-toggle.js +360 -1
- package/components/ion-toolbar.js +6 -1
- package/components/p-B-hirT0v.js +35 -1
- package/components/p-B25GjpND.js +71 -0
- package/components/p-BANeLH_G.js +290 -0
- package/components/p-BBFQmhcD.js +59 -0
- package/components/p-BC-awmYt.js +306 -0
- package/components/p-BHbOsu99.js +501 -0
- package/components/p-BTEOs1at.js +192 -1
- package/components/p-BTlwXR9e.js +73 -0
- package/components/p-BcazQttQ.js +612 -0
- package/components/p-BdGshsIJ.js +226 -0
- package/components/p-BfS7vSpC.js +147 -0
- package/components/p-BhRFCLuX.js +675 -0
- package/components/p-Bhnhnzjz.js +75 -0
- package/components/p-BmVRXR1y.js +72 -1
- package/components/p-BmcqD0EN.js +153 -0
- package/components/p-Boi6hecl.js +115 -0
- package/components/p-Bt_moUyl.js +232 -0
- package/components/p-Bxl5etF4.js +146 -0
- package/components/p-ByjmWt3s.js +139 -0
- package/components/p-C04oPyjT.js +54 -0
- package/components/p-C53feagD.js +15 -1
- package/components/p-C6dkQWq2.js +1626 -0
- package/components/p-CFZWrvIQ.js +194 -0
- package/components/p-CIGNaXM1.js +10 -1
- package/{dist/esm/config-TO1rZH52.js → components/p-CIJwkzL6.js} +1 -1
- package/components/p-CL12ApCQ.js +820 -0
- package/components/p-CO7fmmxt.js +29 -1
- package/components/p-CXJR56Oq.js +564 -0
- package/components/p-Cdm3dKWf.js +108 -0
- package/components/p-Cl0B-RWe.js +452 -1
- package/components/p-CslsoGzv.js +192 -0
- package/components/p-CtWGkNnJ.js +162 -1
- package/components/p-Cyd00tgZ.js +167 -0
- package/components/p-CzAJ3ArC.js +380 -0
- package/components/p-CzW34QBh.js +12 -0
- package/components/p-D0zXRwcr.js +196 -0
- package/components/p-D13Eaw-8.js +76 -1
- package/components/p-D5hF6rwn.js +339 -0
- package/components/p-D6Ynv7Xh.js +141 -1
- package/components/p-D8eD2iBA.js +67 -0
- package/components/p-DGOrLIyS.js +481 -0
- package/components/p-DJztqcrH.js +14 -1
- package/components/p-DK2Bn1Mc.js +305 -0
- package/components/p-DKRQWlK2.js +598 -0
- package/components/p-DNDUsygf.js +128 -0
- package/components/p-DTWZF6wg.js +418 -0
- package/components/p-DWoUQeZ3.js +3012 -0
- package/components/p-DX0w75a9.js +420 -0
- package/components/p-DiVJyqlX.js +40 -1
- package/components/p-Dt8zaCLQ.js +92 -0
- package/components/p-Dtdm8lKC.js +44 -1
- package/components/p-DyFBFrV7.js +264 -0
- package/components/p-DyHPCMyn.js +39 -0
- package/components/p-LgLeKTkH.js +112 -0
- package/components/p-NhiRFRn9.js +50 -0
- package/components/p-OuiHmXO5.js +646 -0
- package/components/p-Wro9IPHE.js +459 -0
- package/components/p-ZjP4CjeZ.js +4 -1
- package/components/p-aIWC4ZEV.js +305 -0
- package/components/p-c-XJ9XhZ.js +915 -0
- package/components/p-cyNmxje6.js +155 -1
- package/components/p-fVuFT3Wd.js +78 -0
- package/components/p-hHmYLOfE.js +87 -1
- package/components/p-iyo0Toaz.js +2822 -0
- package/{dist/esm/framework-delegate-CyxE1S_P.js → components/p-l_lso3Zl.js} +1 -1
- package/components/p-mQp4lwQD.js +1638 -0
- package/dist/cjs/{animation-Dg4yiuR2.js → animation-Bt3H9L1C.js} +1 -1
- package/dist/cjs/app-globals-Ciccnk9_.js +10 -0
- package/dist/cjs/{button-active-FscMI17-.js → button-active-CMc8cD90.js} +1 -1
- package/dist/cjs/{config-BukYi_pW.js → config-C5fsO43a.js} +1 -1
- package/dist/cjs/{data-BYlBjkMU.js → data-JwZKaIQB.js} +1 -1
- package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-DMJRBuDi.js} +1 -1
- package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-VCK4V3mG.js} +1 -1
- package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DrTqNghc.js} +1 -1
- package/dist/cjs/{index-C845Ti6K.js → index-094mMFB-.js} +4 -4
- package/dist/cjs/{index-YcSftOMz.js → index-C534ULug.js} +2 -2
- package/dist/cjs/{index-MbaBbWXk.js → index-CO6eryBo.js} +2 -2
- package/dist/cjs/{index-CqT-2gKy.js → index-D6Wc6v08.js} +382 -503
- package/dist/cjs/{index-CFUwM5x_.js → index-DrMUZJj6.js} +5 -5
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-CuMghsQ-.js} +3 -3
- package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-B_QROI2g.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +15 -23
- package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -21
- package/dist/cjs/ion-alert.cjs.entry.js +17 -25
- package/dist/cjs/ion-app_8.cjs.entry.js +43 -48
- package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
- package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +14 -20
- package/dist/cjs/ion-button_2.cjs.entry.js +18 -36
- package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
- package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
- package/dist/cjs/ion-chip.cjs.entry.js +6 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime_3.cjs.entry.js +46 -75
- package/dist/cjs/ion-fab_3.cjs.entry.js +13 -17
- package/dist/cjs/ion-img.cjs.entry.js +6 -8
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -17
- package/dist/cjs/ion-input-otp.cjs.entry.js +10 -16
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +7 -9
- package/dist/cjs/ion-input.cjs.entry.js +13 -21
- package/dist/cjs/ion-item-option_3.cjs.entry.js +17 -19
- package/dist/cjs/ion-item_8.cjs.entry.js +42 -48
- package/dist/cjs/ion-loading.cjs.entry.js +14 -18
- package/dist/cjs/ion-menu_3.cjs.entry.js +22 -30
- package/dist/cjs/ion-modal.cjs.entry.js +59 -237
- package/dist/cjs/ion-nav_2.cjs.entry.js +10 -14
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -10
- package/dist/cjs/ion-picker-column.cjs.entry.js +7 -11
- package/dist/cjs/ion-picker.cjs.entry.js +6 -6
- package/dist/cjs/ion-popover.cjs.entry.js +15 -21
- package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
- package/dist/cjs/ion-radio_2.cjs.entry.js +13 -17
- package/dist/cjs/ion-range.cjs.entry.js +57 -205
- package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -45
- package/dist/cjs/ion-reorder_2.cjs.entry.js +11 -13
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
- package/dist/cjs/ion-route_4.cjs.entry.js +10 -20
- package/dist/cjs/ion-searchbar.cjs.entry.js +12 -22
- package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-view.cjs.entry.js +8 -13
- package/dist/cjs/ion-segment_2.cjs.entry.js +16 -26
- package/dist/cjs/ion-select-modal.cjs.entry.js +13 -17
- package/dist/cjs/ion-select_3.cjs.entry.js +24 -33
- package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +9 -15
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -14
- package/dist/cjs/ion-tab_2.cjs.entry.js +8 -10
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +14 -20
- package/dist/cjs/ion-toast.cjs.entry.js +15 -21
- package/dist/cjs/ion-toggle.cjs.entry.js +8 -10
- package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-HMVqOFGO.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOt_uW73.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-Dt968VXB.js} +4 -4
- package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-Bzqhjm4f.js} +1 -1
- package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-B2b-TTbl.js} +5 -5
- package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-g0sWWkXk.js} +3 -3
- package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-BIayeNOD.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion-group/accordion-group.js +2 -4
- package/dist/collection/components/action-sheet/action-sheet.js +10 -20
- package/dist/collection/components/alert/alert.js +12 -24
- package/dist/collection/components/back-button/back-button.js +2 -4
- package/dist/collection/components/badge/badge.js +1 -2
- package/dist/collection/components/breadcrumb/breadcrumb.js +4 -8
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -4
- package/dist/collection/components/button/button.js +3 -6
- package/dist/collection/components/card/card.js +3 -6
- package/dist/collection/components/card-header/card-header.js +1 -2
- package/dist/collection/components/card-subtitle/card-subtitle.js +1 -2
- package/dist/collection/components/card-title/card-title.js +1 -2
- package/dist/collection/components/checkbox/checkbox.js +2 -4
- package/dist/collection/components/chip/chip.js +1 -2
- package/dist/collection/components/content/content.js +7 -12
- package/dist/collection/components/datetime/datetime.js +22 -43
- package/dist/collection/components/datetime-button/datetime-button.js +1 -2
- package/dist/collection/components/fab-button/fab-button.js +3 -6
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -4
- package/dist/collection/components/input/input.js +6 -11
- package/dist/collection/components/input-otp/input-otp.js +4 -8
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +2 -4
- package/dist/collection/components/item/item.js +5 -10
- package/dist/collection/components/item-divider/item-divider.js +3 -7
- package/dist/collection/components/item-option/item-option.js +3 -6
- package/dist/collection/components/item-options/item-options.js +1 -2
- package/dist/collection/components/item-sliding/item-sliding.js +1 -2
- package/dist/collection/components/label/label.js +3 -6
- package/dist/collection/components/list-header/list-header.js +3 -6
- package/dist/collection/components/loading/loading.js +11 -22
- package/dist/collection/components/menu/menu.js +5 -10
- package/dist/collection/components/menu-button/menu-button.js +1 -2
- package/dist/collection/components/modal/gestures/sheet.js +12 -120
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -54
- package/dist/collection/components/modal/modal.js +45 -127
- package/dist/collection/components/nav/nav.js +45 -89
- package/dist/collection/components/nav-link/nav-link.js +5 -9
- package/dist/collection/components/note/note.js +1 -2
- package/dist/collection/components/picker/picker.js +1 -2
- package/dist/collection/components/picker-column/picker-column.js +3 -6
- package/dist/collection/components/picker-column-option/picker-column-option.js +1 -2
- package/dist/collection/components/picker-legacy/picker.js +12 -24
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -4
- package/dist/collection/components/popover/popover.js +17 -33
- package/dist/collection/components/progress-bar/progress-bar.js +1 -2
- package/dist/collection/components/radio/radio.js +1 -2
- package/dist/collection/components/radio-group/radio-group.js +3 -6
- package/dist/collection/components/range/range.js +53 -214
- package/dist/collection/components/refresher/refresher.js +5 -73
- package/dist/collection/components/refresher-content/refresher-content.js +4 -8
- package/dist/collection/components/reorder-group/reorder-group.js +3 -6
- package/dist/collection/components/route/route.js +2 -4
- package/dist/collection/components/router/router.js +5 -10
- package/dist/collection/components/router-link/router-link.js +3 -6
- package/dist/collection/components/router-outlet/router-outlet.js +9 -18
- package/dist/collection/components/searchbar/searchbar.js +6 -11
- package/dist/collection/components/segment/segment.js +5 -10
- package/dist/collection/components/segment-button/segment-button.js +2 -4
- package/dist/collection/components/segment-view/segment-view.ios.css +1 -2
- package/dist/collection/components/segment-view/segment-view.js +4 -30
- package/dist/collection/components/segment-view/segment-view.md.css +1 -2
- package/dist/collection/components/select/select.js +8 -17
- package/dist/collection/components/select-modal/select-modal.js +2 -27
- package/dist/collection/components/select-popover/select-popover.js +1 -2
- package/dist/collection/components/skeleton-text/skeleton-text.js +1 -2
- package/dist/collection/components/spinner/spinner.js +2 -4
- package/dist/collection/components/tab/tab.js +2 -4
- package/dist/collection/components/tab-bar/tab-bar.js +2 -4
- package/dist/collection/components/tab-button/tab-button.js +2 -4
- package/dist/collection/components/tabs/tabs.js +2 -4
- package/dist/collection/components/text/text.js +1 -2
- package/dist/collection/components/textarea/textarea.js +7 -10
- package/dist/collection/components/title/title.js +2 -4
- package/dist/collection/components/toast/toast.js +17 -34
- package/dist/collection/components/toggle/toggle.js +2 -4
- package/dist/collection/components/toolbar/toolbar.js +1 -2
- package/dist/docs.d.ts +0 -37
- package/dist/docs.json +389 -1186
- package/dist/esm/{animation-CnGMT4ji.js → animation-Dt8bGnA-.js} +1 -1
- package/dist/esm/app-globals-BDSf8fOA.js +8 -0
- package/dist/esm/{button-active-BBx21brx.js → button-active-L570Swow.js} +1 -1
- package/dist/esm/config-mCdtaoPe.js +195 -0
- package/dist/esm/{data-B9iGR5YO.js → data-DCORV9FH.js} +1 -1
- package/dist/esm/framework-delegate-BYawdMXj.js +140 -0
- package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-CPLxO-Ev.js} +1 -1
- package/dist/esm/{helpers-Tl8jw6S2.js → helpers-DEn3pfjm.js} +1 -1
- package/dist/esm/{index-hW6eNZ3o.js → index-Bs3kT4bc.js} +2 -2
- package/dist/esm/{index-IGIE5vDm.js → index-C8IsBmNU.js} +382 -503
- package/dist/esm/{index-B2KwgBLx.js → index-CvDIirVx.js} +5 -5
- package/dist/esm/{index-BtUdxPjv.js → index-ceb5RaMT.js} +2 -2
- package/dist/esm/{index-B-hkiOUh.js → index-r2D9DEro.js} +4 -4
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-D6H3ZaWt.js} +3 -3
- package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-DrvTa8gz.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +15 -23
- package/dist/esm/ion-action-sheet.entry.js +15 -21
- package/dist/esm/ion-alert.entry.js +17 -25
- package/dist/esm/ion-app_8.entry.js +43 -48
- package/dist/esm/ion-avatar_3.entry.js +12 -12
- package/dist/esm/ion-back-button.entry.js +7 -7
- package/dist/esm/ion-backdrop.entry.js +6 -6
- package/dist/esm/ion-breadcrumb_2.entry.js +14 -20
- package/dist/esm/ion-button_2.entry.js +18 -36
- package/dist/esm/ion-card_5.entry.js +23 -23
- package/dist/esm/ion-checkbox.entry.js +7 -7
- package/dist/esm/ion-chip.entry.js +6 -6
- package/dist/esm/ion-col_3.entry.js +8 -8
- package/dist/esm/ion-datetime-button.entry.js +8 -8
- package/dist/esm/ion-datetime_3.entry.js +46 -75
- package/dist/esm/ion-fab_3.entry.js +13 -17
- package/dist/esm/ion-img.entry.js +6 -8
- package/dist/esm/ion-infinite-scroll_2.entry.js +13 -17
- package/dist/esm/ion-input-otp.entry.js +10 -16
- package/dist/esm/ion-input-password-toggle.entry.js +7 -9
- package/dist/esm/ion-input.entry.js +13 -21
- package/dist/esm/ion-item-option_3.entry.js +17 -19
- package/dist/esm/ion-item_8.entry.js +42 -48
- package/dist/esm/ion-loading.entry.js +14 -18
- package/dist/esm/ion-menu_3.entry.js +22 -30
- package/dist/esm/ion-modal.entry.js +59 -237
- package/dist/esm/ion-nav_2.entry.js +10 -14
- package/dist/esm/ion-picker-column-option.entry.js +8 -10
- package/dist/esm/ion-picker-column.entry.js +7 -11
- package/dist/esm/ion-picker.entry.js +6 -6
- package/dist/esm/ion-popover.entry.js +15 -21
- package/dist/esm/ion-progress-bar.entry.js +7 -7
- package/dist/esm/ion-radio_2.entry.js +13 -17
- package/dist/esm/ion-range.entry.js +57 -205
- package/dist/esm/ion-refresher_2.entry.js +14 -45
- package/dist/esm/ion-reorder_2.entry.js +11 -13
- package/dist/esm/ion-ripple-effect.entry.js +4 -4
- package/dist/esm/ion-route_4.entry.js +10 -20
- package/dist/esm/ion-searchbar.entry.js +12 -22
- package/dist/esm/ion-segment-content.entry.js +3 -3
- package/dist/esm/ion-segment-view.entry.js +8 -13
- package/dist/esm/ion-segment_2.entry.js +16 -26
- package/dist/esm/ion-select-modal.entry.js +13 -17
- package/dist/esm/ion-select_3.entry.js +24 -33
- package/dist/esm/ion-spinner.entry.js +4 -4
- package/dist/esm/ion-split-pane.entry.js +9 -15
- package/dist/esm/ion-tab-bar_2.entry.js +12 -14
- package/dist/esm/ion-tab_2.entry.js +8 -10
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +14 -20
- package/dist/esm/ion-toast.entry.js +15 -21
- package/dist/esm/ion-toggle.entry.js +8 -10
- package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-CDrldh-5.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-BDzw0_Hm.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-BzDYi3qq.js} +4 -4
- package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-BwelN_JM.js} +1 -1
- package/dist/esm/{overlays-F8GHPo-e.js → overlays-D5YkFThA.js} +5 -5
- package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-5DQ7Fc4V.js} +3 -3
- package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BKw2CAHc.js} +2 -2
- package/dist/html.html-data.json +109 -117
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-f2deaceb.entry.js → p-0ca0fe9c.entry.js} +1 -1
- package/dist/ionic/p-11518b31.entry.js +4 -0
- package/dist/ionic/{p-80cac7a2.entry.js → p-11aa58d6.entry.js} +1 -1
- package/dist/ionic/p-221a3d8c.entry.js +4 -0
- package/dist/ionic/{p-b325a113.entry.js → p-2668188b.entry.js} +1 -1
- package/dist/ionic/p-2ac254dc.entry.js +4 -0
- package/dist/ionic/p-2bd1ea35.entry.js +4 -0
- package/dist/ionic/p-30333874.entry.js +4 -0
- package/dist/ionic/p-31db96da.entry.js +4 -0
- package/dist/ionic/p-34642fa1.entry.js +4 -0
- package/dist/ionic/p-35696017.entry.js +4 -0
- package/dist/ionic/p-363d1209.entry.js +4 -0
- package/dist/ionic/p-46a38cfd.entry.js +4 -0
- package/dist/ionic/{p-301c43f8.entry.js → p-49d06882.entry.js} +1 -1
- package/dist/ionic/p-4eec1a5e.entry.js +4 -0
- package/dist/ionic/p-530fcd71.entry.js +4 -0
- package/dist/ionic/{p-9833cf63.entry.js → p-582824c5.entry.js} +1 -1
- package/dist/ionic/{p-1b169fb6.entry.js → p-5c8f7253.entry.js} +1 -1
- package/dist/ionic/p-5d6fb6e3.entry.js +4 -0
- package/dist/ionic/{p-e6cedcd7.entry.js → p-652318c3.entry.js} +1 -1
- package/dist/ionic/p-66fbe052.entry.js +4 -0
- package/dist/ionic/{p-9fae83d8.entry.js → p-675b1a31.entry.js} +1 -1
- package/dist/ionic/{p-bcaa827e.entry.js → p-6f37536a.entry.js} +1 -1
- package/dist/ionic/{p-370a60ee.entry.js → p-79bd78f9.entry.js} +1 -1
- package/dist/ionic/p-7babec72.entry.js +4 -0
- package/dist/ionic/{p-6af16209.entry.js → p-7cad388a.entry.js} +1 -1
- package/dist/ionic/{p-6b701daa.entry.js → p-7f98e710.entry.js} +1 -1
- package/dist/ionic/p-82d5bb3d.entry.js +4 -0
- package/dist/ionic/{p-7ca71c83.entry.js → p-906bb44d.entry.js} +1 -1
- package/dist/ionic/{p-23fac490.entry.js → p-915b3e3d.entry.js} +1 -1
- package/dist/ionic/{p-e663bc5a.entry.js → p-9575b654.entry.js} +1 -1
- package/dist/ionic/p-97eb0812.entry.js +4 -0
- package/dist/ionic/p-9b6d46f2.entry.js +4 -0
- package/dist/ionic/{p-DB_iPQC-.js → p-B0q1YL7N.js} +1 -1
- package/dist/ionic/{p-NFFyoJ4Q.js → p-BFvmZNyx.js} +1 -1
- package/dist/ionic/p-BKc55Xev.js +4 -0
- package/dist/ionic/{p-CYbRmDdy.js → p-BOVrCkpJ.js} +1 -1
- package/{components/p-Cy5XSfIk.js → dist/ionic/p-BYEqWnSg.js} +1 -1
- package/dist/ionic/p-Bmgaetn_.js +4 -0
- package/dist/ionic/{p-BAt5H1ac.js → p-C7hRNDhM.js} +1 -1
- package/dist/ionic/p-C8IsBmNU.js +5 -0
- package/dist/ionic/p-CJxh_yLS.js +4 -0
- package/dist/ionic/{p-CGmVTdWh.js → p-CTfR9YZG.js} +1 -1
- package/{components/p-C59ryAuS.js → dist/ionic/p-CwgG81ZD.js} +1 -1
- package/{components/p-BR3tZJmu.js → dist/ionic/p-D-eFFUkA.js} +1 -1
- package/{components/p-BS1TtEiJ.js → dist/ionic/p-D0dMcSkw.js} +1 -1
- package/dist/ionic/{p-DjriolRs.js → p-DCv9sLH2.js} +1 -1
- package/dist/ionic/{p-Bum7H1fw.js → p-DDb5r57F.js} +1 -1
- package/dist/ionic/{p-DLbbmF9h.js → p-DNcfiJwE.js} +1 -1
- package/{components/p-9VcRUwdB.js → dist/ionic/p-DUt5fQmA.js} +1 -1
- package/dist/ionic/p-DZRJwG4S.js +4 -0
- package/{components/p-BUbsoBOV.js → dist/ionic/p-DbQ5QkTP.js} +1 -1
- package/dist/ionic/{p-BxIcPWoV.js → p-Dc45iWE4.js} +1 -1
- package/{components/p-Cq8cQ0NL.js → dist/ionic/p-DdR6rpbR.js} +1 -1
- package/dist/ionic/{p-CYvM5g3q.js → p-MUoJJJwd.js} +1 -1
- package/dist/ionic/p-a4a9f5ae.entry.js +4 -0
- package/dist/ionic/{p-f5dfb9a3.entry.js → p-ac4eb91d.entry.js} +1 -1
- package/dist/ionic/{p-ca31010f.entry.js → p-b0a7585c.entry.js} +1 -1
- package/dist/ionic/p-b0ebf9f8.entry.js +4 -0
- package/dist/ionic/{p-294f4bb5.entry.js → p-b8551510.entry.js} +1 -1
- package/dist/ionic/{p-f8186550.entry.js → p-bce86e56.entry.js} +1 -1
- package/dist/ionic/p-be263062.entry.js +4 -0
- package/dist/ionic/p-c175d792.entry.js +4 -0
- package/dist/ionic/p-cc2a9936.entry.js +4 -0
- package/dist/ionic/p-cc45bcbc.entry.js +4 -0
- package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
- package/dist/ionic/{p-b440381f.entry.js → p-d1f54e28.entry.js} +1 -1
- package/dist/ionic/{p-a84f2d21.entry.js → p-da7d04cc.entry.js} +1 -1
- package/dist/ionic/p-e4c57008.entry.js +4 -0
- package/dist/ionic/p-e5d6d0f0.entry.js +4 -0
- package/dist/ionic/p-f1dfee25.entry.js +4 -0
- package/dist/ionic/p-f9f7b9db.entry.js +4 -0
- package/dist/ionic/{p-c3cce9d8.entry.js → p-fb0271ae.entry.js} +1 -1
- package/dist/ionic/{p-e863ffe8.entry.js → p-fbb00634.entry.js} +1 -1
- package/dist/types/components/datetime/datetime.d.ts +0 -10
- package/dist/types/components/header/header.utils.d.ts +1 -2
- package/dist/types/components/item/item.d.ts +0 -2
- package/dist/types/components/item-divider/item-divider.d.ts +0 -3
- package/dist/types/components/item-option/item-option.d.ts +0 -2
- package/dist/types/components/list-header/list-header.d.ts +0 -2
- package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
- package/dist/types/components/modal/modal-interface.d.ts +0 -25
- package/dist/types/components/modal/modal.d.ts +1 -22
- package/dist/types/components/range/range-interface.d.ts +0 -1
- package/dist/types/components/range/range.d.ts +4 -44
- package/dist/types/components/refresher/refresher-interface.d.ts +0 -7
- package/dist/types/components/refresher/refresher.d.ts +3 -16
- package/dist/types/components/segment-view/segment-view.d.ts +0 -4
- package/dist/types/components/select/select.d.ts +0 -3
- package/dist/types/components/select-modal/select-modal.d.ts +0 -4
- package/dist/types/components.d.ts +191 -964
- package/dist/types/interface.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +14 -126
- package/dist/types/utils/gesture/listener.d.ts +1 -2
- package/hydrate/index.d.ts +0 -12
- package/hydrate/index.js +1421 -5632
- package/hydrate/index.mjs +1422 -5631
- package/package.json +2 -2
- package/components/p-1KVKSLu5.js +0 -4
- package/components/p-ApmKVjaE.js +0 -4
- package/components/p-B6FQ0cKR.js +0 -4
- package/components/p-B6HaBl3o.js +0 -4
- package/components/p-B8b1Ukl9.js +0 -4
- package/components/p-BFxT89Wl.js +0 -4
- package/components/p-BJoMtgfR.js +0 -4
- package/components/p-BNAG-aVv.js +0 -4
- package/components/p-BSB38Tek.js +0 -4
- package/components/p-BTeL5HCK.js +0 -4
- package/components/p-BVnB3eEn.js +0 -4
- package/components/p-BYDc3hSE.js +0 -4
- package/components/p-BagjAGC0.js +0 -4
- package/components/p-BegtE7nr.js +0 -4
- package/components/p-BgwEQWW6.js +0 -4
- package/components/p-Bk2zuNWT.js +0 -4
- package/components/p-Bum_LjMh.js +0 -4
- package/components/p-BxwWvu-b.js +0 -4
- package/components/p-C4jPsTQa.js +0 -4
- package/components/p-C7AoMl7c.js +0 -4
- package/components/p-CBzELu-H.js +0 -4
- package/components/p-CDfQnFrd.js +0 -4
- package/components/p-CH0NYjKq.js +0 -4
- package/components/p-CU1SSH8_.js +0 -4
- package/components/p-CVF7ukTk.js +0 -4
- package/components/p-CgfaEEem.js +0 -4
- package/components/p-CgqKJg96.js +0 -4
- package/components/p-CneGxKsZ.js +0 -4
- package/components/p-CoA-aqGF.js +0 -4
- package/components/p-Csw8xuz4.js +0 -4
- package/components/p-Cwv-vmkN.js +0 -4
- package/components/p-Cyxa_4PV.js +0 -4
- package/components/p-Cz5nLPGT.js +0 -4
- package/components/p-D6NJwNJN.js +0 -4
- package/components/p-DHsZWn1l.js +0 -4
- package/components/p-DJMZehmW.js +0 -4
- package/components/p-DYdpXONG.js +0 -4
- package/components/p-DgbT0exM.js +0 -4
- package/components/p-YLXPWgVj.js +0 -4
- package/components/p-ak_d-z48.js +0 -4
- package/components/p-fpbh6w3f.js +0 -4
- package/components/p-kvaDs24J.js +0 -4
- package/components/p-vEbVo2hO.js +0 -4
- package/dist/cjs/app-globals-CLI8xCmk.js +0 -11
- package/dist/esm/app-globals-DhZjtldk.js +0 -9
- package/dist/ionic/p-031b76f7.entry.js +0 -4
- package/dist/ionic/p-045a6a42.entry.js +0 -4
- package/dist/ionic/p-07506134.entry.js +0 -4
- package/dist/ionic/p-084c25b2.entry.js +0 -4
- package/dist/ionic/p-0d8b5c38.entry.js +0 -4
- package/dist/ionic/p-16813ce7.entry.js +0 -4
- package/dist/ionic/p-16b65553.entry.js +0 -4
- package/dist/ionic/p-1b02923f.entry.js +0 -4
- package/dist/ionic/p-2a68388b.entry.js +0 -4
- package/dist/ionic/p-2f5a8140.entry.js +0 -4
- package/dist/ionic/p-3e143d1d.entry.js +0 -4
- package/dist/ionic/p-4819b469.entry.js +0 -4
- package/dist/ionic/p-4dd5e8e0.entry.js +0 -4
- package/dist/ionic/p-51c11c47.entry.js +0 -4
- package/dist/ionic/p-53f750a5.entry.js +0 -4
- package/dist/ionic/p-6b97f2a3.entry.js +0 -4
- package/dist/ionic/p-71e322f7.entry.js +0 -4
- package/dist/ionic/p-7620be24.entry.js +0 -4
- package/dist/ionic/p-771b27a5.entry.js +0 -4
- package/dist/ionic/p-96a2e768.entry.js +0 -4
- package/dist/ionic/p-9cbc6f1f.entry.js +0 -4
- package/dist/ionic/p-9cdbabbb.entry.js +0 -4
- package/dist/ionic/p-9eac4eb1.entry.js +0 -4
- package/dist/ionic/p-B8xlpH8p.js +0 -4
- package/dist/ionic/p-BW_TRJm8.js +0 -4
- package/dist/ionic/p-BvFYtOdE.js +0 -4
- package/dist/ionic/p-C0JvVFMv.js +0 -4
- package/dist/ionic/p-CmFz1Mjc.js +0 -4
- package/dist/ionic/p-CtA-yJYy.js +0 -4
- package/dist/ionic/p-D8HJQ1qq.js +0 -4
- package/dist/ionic/p-DTPR1Wpn.js +0 -4
- package/dist/ionic/p-DtVZDHlS.js +0 -4
- package/dist/ionic/p-IGIE5vDm.js +0 -5
- package/dist/ionic/p-a805674e.entry.js +0 -4
- package/dist/ionic/p-aa47f46e.entry.js +0 -4
- package/dist/ionic/p-b6e0ff03.entry.js +0 -4
- package/dist/ionic/p-d4e8b473.entry.js +0 -4
- package/dist/ionic/p-e6c5f060.entry.js +0 -4
- package/dist/ionic/p-fdbc90d4.entry.js +0 -4
- package/dist/ionic/p-gbVXD275.js +0 -4
- package/dist/ionic/p-hNN3VvaC.js +0 -4
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { p as proxyCustomElement, H, e as createEvent, h, d as Host } from './p-DWoUQeZ3.js';
|
|
5
|
+
import { e as renderHiddenInput } from './p-D5hF6rwn.js';
|
|
6
|
+
import { c as checkInvalidState } from './p-DJztqcrH.js';
|
|
7
|
+
import { b as getIonMode } from './p-Bxl5etF4.js';
|
|
8
|
+
|
|
9
|
+
const radioGroupIosCss = "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}";
|
|
10
|
+
|
|
11
|
+
const radioGroupMdCss = "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}";
|
|
12
|
+
|
|
13
|
+
const RadioGroup = /*@__PURE__*/ proxyCustomElement(class RadioGroup extends H {
|
|
14
|
+
constructor(registerHost) {
|
|
15
|
+
super();
|
|
16
|
+
if (registerHost !== false) {
|
|
17
|
+
this.__registerHost();
|
|
18
|
+
}
|
|
19
|
+
this.ionChange = createEvent(this, "ionChange", 7);
|
|
20
|
+
this.ionValueChange = createEvent(this, "ionValueChange", 7);
|
|
21
|
+
this.inputId = `ion-rg-${radioGroupIds++}`;
|
|
22
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
23
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
24
|
+
this.labelId = `${this.inputId}-lbl`;
|
|
25
|
+
/**
|
|
26
|
+
* Track validation state for proper aria-live announcements.
|
|
27
|
+
*/
|
|
28
|
+
this.isInvalid = false;
|
|
29
|
+
/**
|
|
30
|
+
* If `true`, the radios can be deselected.
|
|
31
|
+
*/
|
|
32
|
+
this.allowEmptySelection = false;
|
|
33
|
+
/**
|
|
34
|
+
* The name of the control, which is submitted with the form data.
|
|
35
|
+
*/
|
|
36
|
+
this.name = this.inputId;
|
|
37
|
+
this.setRadioTabindex = (value) => {
|
|
38
|
+
const radios = this.getRadios();
|
|
39
|
+
// Get the first radio that is not disabled and the checked one
|
|
40
|
+
const first = radios.find((radio) => !radio.disabled);
|
|
41
|
+
const checked = radios.find((radio) => radio.value === value && !radio.disabled);
|
|
42
|
+
if (!first && !checked) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
// If an enabled checked radio exists, set it to be the focusable radio
|
|
46
|
+
// otherwise we default to focus the first radio
|
|
47
|
+
const focusable = checked || first;
|
|
48
|
+
for (const radio of radios) {
|
|
49
|
+
const tabindex = radio === focusable ? 0 : -1;
|
|
50
|
+
radio.setButtonTabindex(tabindex);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
this.onClick = (ev) => {
|
|
54
|
+
ev.preventDefault();
|
|
55
|
+
/**
|
|
56
|
+
* The Radio Group component mandates that only one radio button
|
|
57
|
+
* within the group can be selected at any given time. Since `ion-radio`
|
|
58
|
+
* is a shadow DOM component, it cannot natively perform this behavior
|
|
59
|
+
* using the `name` attribute.
|
|
60
|
+
*/
|
|
61
|
+
const selectedRadio = ev.target && ev.target.closest('ion-radio');
|
|
62
|
+
/**
|
|
63
|
+
* Our current disabled prop definition causes Stencil to mark it
|
|
64
|
+
* as optional. While this is not desired, fixing this behavior
|
|
65
|
+
* in Stencil is a significant breaking change, so this effort is
|
|
66
|
+
* being de-risked in STENCIL-917. Until then, we compromise
|
|
67
|
+
* here by checking for falsy `disabled` values instead of strictly
|
|
68
|
+
* checking `disabled === false`.
|
|
69
|
+
*/
|
|
70
|
+
if (selectedRadio && !selectedRadio.disabled) {
|
|
71
|
+
const currentValue = this.value;
|
|
72
|
+
const newValue = selectedRadio.value;
|
|
73
|
+
if (newValue !== currentValue) {
|
|
74
|
+
this.value = newValue;
|
|
75
|
+
this.emitValueChange(ev);
|
|
76
|
+
}
|
|
77
|
+
else if (this.allowEmptySelection) {
|
|
78
|
+
this.value = undefined;
|
|
79
|
+
this.emitValueChange(ev);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
valueChanged(value) {
|
|
85
|
+
this.setRadioTabindex(value);
|
|
86
|
+
this.ionValueChange.emit({ value });
|
|
87
|
+
}
|
|
88
|
+
componentDidLoad() {
|
|
89
|
+
/**
|
|
90
|
+
* There's an issue when assigning a value to the radio group
|
|
91
|
+
* within the Angular primary content (rendering within the
|
|
92
|
+
* app component template). When the template is isolated to a route,
|
|
93
|
+
* the value is assigned correctly.
|
|
94
|
+
* To address this issue, we need to ensure that the watcher is
|
|
95
|
+
* called after the component has finished loading,
|
|
96
|
+
* allowing the emit to be dispatched correctly.
|
|
97
|
+
*/
|
|
98
|
+
this.valueChanged(this.value);
|
|
99
|
+
}
|
|
100
|
+
async connectedCallback() {
|
|
101
|
+
// Get the list header if it exists and set the id
|
|
102
|
+
// this is used to set aria-labelledby
|
|
103
|
+
const header = this.el.querySelector('ion-list-header') || this.el.querySelector('ion-item-divider');
|
|
104
|
+
if (header) {
|
|
105
|
+
const label = (this.label = header.querySelector('ion-label'));
|
|
106
|
+
if (label) {
|
|
107
|
+
this.labelId = label.id = this.name + '-lbl';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Watch for class changes to update validation state.
|
|
111
|
+
if (typeof MutationObserver !== 'undefined') {
|
|
112
|
+
this.validationObserver = new MutationObserver(() => {
|
|
113
|
+
const newIsInvalid = checkInvalidState(this.el);
|
|
114
|
+
if (this.isInvalid !== newIsInvalid) {
|
|
115
|
+
this.isInvalid = newIsInvalid;
|
|
116
|
+
/**
|
|
117
|
+
* Screen readers tend to announce changes
|
|
118
|
+
* to `aria-describedby` when the attribute
|
|
119
|
+
* is changed during a blur event for a
|
|
120
|
+
* native form control.
|
|
121
|
+
* However, the announcement can be spotty
|
|
122
|
+
* when using a non-native form control
|
|
123
|
+
* and `forceUpdate()`.
|
|
124
|
+
* This is due to `forceUpdate()` internally
|
|
125
|
+
* rescheduling the DOM update to a lower
|
|
126
|
+
* priority queue regardless if it's called
|
|
127
|
+
* inside a Promise or not, thus causing
|
|
128
|
+
* the screen reader to potentially miss the
|
|
129
|
+
* change.
|
|
130
|
+
* By using a State variable inside a Promise,
|
|
131
|
+
* it guarantees a re-render immediately at
|
|
132
|
+
* a higher priority.
|
|
133
|
+
*/
|
|
134
|
+
Promise.resolve().then(() => {
|
|
135
|
+
this.hintTextId = this.getHintTextId();
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
this.validationObserver.observe(this.el, {
|
|
140
|
+
attributes: true,
|
|
141
|
+
attributeFilter: ['class'],
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Always set initial state
|
|
145
|
+
this.isInvalid = checkInvalidState(this.el);
|
|
146
|
+
}
|
|
147
|
+
componentWillLoad() {
|
|
148
|
+
this.hintTextId = this.getHintTextId();
|
|
149
|
+
}
|
|
150
|
+
disconnectedCallback() {
|
|
151
|
+
// Clean up validation observer to prevent memory leaks.
|
|
152
|
+
if (this.validationObserver) {
|
|
153
|
+
this.validationObserver.disconnect();
|
|
154
|
+
this.validationObserver = undefined;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
getRadios() {
|
|
158
|
+
return Array.from(this.el.querySelectorAll('ion-radio'));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Emits an `ionChange` event.
|
|
162
|
+
*
|
|
163
|
+
* This API should be called for user committed changes.
|
|
164
|
+
* This API should not be used for external value changes.
|
|
165
|
+
*/
|
|
166
|
+
emitValueChange(event) {
|
|
167
|
+
const { value } = this;
|
|
168
|
+
this.ionChange.emit({ value, event });
|
|
169
|
+
}
|
|
170
|
+
onKeydown(ev) {
|
|
171
|
+
// We don't want the value to automatically change/emit when the radio group is part of a select interface
|
|
172
|
+
// as this will cause the interface to close when navigating through the radio group options
|
|
173
|
+
const inSelectInterface = !!this.el.closest('ion-select-popover') || !!this.el.closest('ion-select-modal');
|
|
174
|
+
if (ev.target && !this.el.contains(ev.target)) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Get all radios inside of the radio group and then
|
|
178
|
+
// filter out disabled radios since we need to skip those
|
|
179
|
+
const radios = this.getRadios().filter((radio) => !radio.disabled);
|
|
180
|
+
// Only move the radio if the current focus is in the radio group
|
|
181
|
+
if (ev.target && radios.includes(ev.target)) {
|
|
182
|
+
const index = radios.findIndex((radio) => radio === ev.target);
|
|
183
|
+
const current = radios[index];
|
|
184
|
+
let next;
|
|
185
|
+
// If hitting arrow down or arrow right, move to the next radio
|
|
186
|
+
// If we're on the last radio, move to the first radio
|
|
187
|
+
if (['ArrowDown', 'ArrowRight'].includes(ev.key)) {
|
|
188
|
+
next = index === radios.length - 1 ? radios[0] : radios[index + 1];
|
|
189
|
+
}
|
|
190
|
+
// If hitting arrow up or arrow left, move to the previous radio
|
|
191
|
+
// If we're on the first radio, move to the last radio
|
|
192
|
+
if (['ArrowUp', 'ArrowLeft'].includes(ev.key)) {
|
|
193
|
+
next = index === 0 ? radios[radios.length - 1] : radios[index - 1];
|
|
194
|
+
}
|
|
195
|
+
if (next && radios.includes(next)) {
|
|
196
|
+
next.setFocus(ev);
|
|
197
|
+
if (!inSelectInterface) {
|
|
198
|
+
this.value = next.value;
|
|
199
|
+
this.emitValueChange(ev);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Update the radio group value when a user presses the
|
|
203
|
+
// space bar on top of a selected radio
|
|
204
|
+
if ([' '].includes(ev.key)) {
|
|
205
|
+
const previousValue = this.value;
|
|
206
|
+
this.value = this.allowEmptySelection && this.value !== undefined ? undefined : current.value;
|
|
207
|
+
if (previousValue !== this.value || this.allowEmptySelection) {
|
|
208
|
+
/**
|
|
209
|
+
* Value change should only be emitted if the value is different,
|
|
210
|
+
* such as selecting a new radio with the space bar or if
|
|
211
|
+
* the radio group allows for empty selection and the user
|
|
212
|
+
* is deselecting a checked radio.
|
|
213
|
+
*/
|
|
214
|
+
this.emitValueChange(ev);
|
|
215
|
+
}
|
|
216
|
+
// Prevent browsers from jumping
|
|
217
|
+
// to the bottom of the screen
|
|
218
|
+
ev.preventDefault();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/** @internal */
|
|
223
|
+
async setFocus() {
|
|
224
|
+
const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
|
|
225
|
+
radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Renders the helper text or error text values
|
|
229
|
+
*/
|
|
230
|
+
renderHintText() {
|
|
231
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
232
|
+
const hasHintText = !!helperText || !!errorText;
|
|
233
|
+
if (!hasHintText) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
return (h("div", { class: "radio-group-top" }, h("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), h("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null)));
|
|
237
|
+
}
|
|
238
|
+
getHintTextId() {
|
|
239
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
240
|
+
if (isInvalid && errorText) {
|
|
241
|
+
return errorTextId;
|
|
242
|
+
}
|
|
243
|
+
if (helperText) {
|
|
244
|
+
return helperTextId;
|
|
245
|
+
}
|
|
246
|
+
return undefined;
|
|
247
|
+
}
|
|
248
|
+
render() {
|
|
249
|
+
const { label, labelId, el, name, value } = this;
|
|
250
|
+
const mode = getIonMode(this);
|
|
251
|
+
renderHiddenInput(true, el, name, value, false);
|
|
252
|
+
return (h(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), h("slot", { key: 'd683b01c1ba34fe843c4b320bce4661a117472a5' })));
|
|
253
|
+
}
|
|
254
|
+
get el() { return this; }
|
|
255
|
+
static get watchers() { return {
|
|
256
|
+
"value": ["valueChanged"]
|
|
257
|
+
}; }
|
|
258
|
+
static get style() { return {
|
|
259
|
+
ios: radioGroupIosCss,
|
|
260
|
+
md: radioGroupMdCss
|
|
261
|
+
}; }
|
|
262
|
+
}, [292, "ion-radio-group", {
|
|
263
|
+
"allowEmptySelection": [4, "allow-empty-selection"],
|
|
264
|
+
"compareWith": [1, "compare-with"],
|
|
265
|
+
"name": [1],
|
|
266
|
+
"value": [1032],
|
|
267
|
+
"helperText": [1, "helper-text"],
|
|
268
|
+
"errorText": [1, "error-text"],
|
|
269
|
+
"isInvalid": [32],
|
|
270
|
+
"hintTextId": [32],
|
|
271
|
+
"setFocus": [64]
|
|
272
|
+
}, [[4, "keydown", "onKeydown"]], {
|
|
273
|
+
"value": ["valueChanged"]
|
|
274
|
+
}]);
|
|
275
|
+
let radioGroupIds = 0;
|
|
276
|
+
function defineCustomElement() {
|
|
277
|
+
if (typeof customElements === "undefined") {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const components = ["ion-radio-group"];
|
|
281
|
+
components.forEach(tagName => { switch (tagName) {
|
|
282
|
+
case "ion-radio-group":
|
|
283
|
+
if (!customElements.get(tagName)) {
|
|
284
|
+
customElements.define(tagName, RadioGroup);
|
|
285
|
+
}
|
|
286
|
+
break;
|
|
287
|
+
} });
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export { RadioGroup as R, defineCustomElement as d };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { p as proxyCustomElement, H, h, d as Host } from './p-DWoUQeZ3.js';
|
|
5
|
+
import { b as getIonMode } from './p-Bxl5etF4.js';
|
|
6
|
+
|
|
7
|
+
const buttonsIosCss = ".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}";
|
|
8
|
+
|
|
9
|
+
const buttonsMdCss = ".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}";
|
|
10
|
+
|
|
11
|
+
const Buttons = /*@__PURE__*/ proxyCustomElement(class Buttons extends H {
|
|
12
|
+
constructor(registerHost) {
|
|
13
|
+
super();
|
|
14
|
+
if (registerHost !== false) {
|
|
15
|
+
this.__registerHost();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* If true, buttons will disappear when its
|
|
19
|
+
* parent toolbar has fully collapsed if the toolbar
|
|
20
|
+
* is not the first toolbar. If the toolbar is the
|
|
21
|
+
* first toolbar, the buttons will be hidden and will
|
|
22
|
+
* only be shown once all toolbars have fully collapsed.
|
|
23
|
+
*
|
|
24
|
+
* Only applies in `ios` mode with `collapse` set to
|
|
25
|
+
* `true` on `ion-header`.
|
|
26
|
+
*
|
|
27
|
+
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
28
|
+
*/
|
|
29
|
+
this.collapse = false;
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
const mode = getIonMode(this);
|
|
33
|
+
return (h(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
|
|
34
|
+
[mode]: true,
|
|
35
|
+
['buttons-collapse']: this.collapse,
|
|
36
|
+
} }, h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
|
|
37
|
+
}
|
|
38
|
+
static get style() { return {
|
|
39
|
+
ios: buttonsIosCss,
|
|
40
|
+
md: buttonsMdCss
|
|
41
|
+
}; }
|
|
42
|
+
}, [294, "ion-buttons", {
|
|
43
|
+
"collapse": [4]
|
|
44
|
+
}]);
|
|
45
|
+
function defineCustomElement() {
|
|
46
|
+
if (typeof customElements === "undefined") {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const components = ["ion-buttons"];
|
|
50
|
+
components.forEach(tagName => { switch (tagName) {
|
|
51
|
+
case "ion-buttons":
|
|
52
|
+
if (!customElements.get(tagName)) {
|
|
53
|
+
customElements.define(tagName, Buttons);
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
} });
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { Buttons as B, defineCustomElement as d };
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { d as doc } from './p-ZjP4CjeZ.js';
|
|
5
|
+
import { MENU_BACK_BUTTON_PRIORITY } from './p-Boi6hecl.js';
|
|
6
|
+
import { f as printIonWarning } from './p-DWoUQeZ3.js';
|
|
7
|
+
import { c as componentOnReady } from './p-D5hF6rwn.js';
|
|
8
|
+
import { b as getIonMode } from './p-Bxl5etF4.js';
|
|
9
|
+
import { c as createAnimation } from './p-CL12ApCQ.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* baseAnimation
|
|
13
|
+
* Base class which is extended by the various types. Each
|
|
14
|
+
* type will provide their own animations for open and close
|
|
15
|
+
* and registers itself with Menu.
|
|
16
|
+
*/
|
|
17
|
+
const baseAnimation = (isIos) => {
|
|
18
|
+
// https://material.io/guidelines/motion/movement.html#movement-movement-in-out-of-screen-bounds
|
|
19
|
+
// https://material.io/guidelines/motion/duration-easing.html#duration-easing-natural-easing-curves
|
|
20
|
+
/**
|
|
21
|
+
* "Apply the sharp curve to items temporarily leaving the screen that may return
|
|
22
|
+
* from the same exit point. When they return, use the deceleration curve. On mobile,
|
|
23
|
+
* this transition typically occurs over 300ms" -- MD Motion Guide
|
|
24
|
+
*/
|
|
25
|
+
return createAnimation().duration(isIos ? 400 : 300);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Menu Overlay Type
|
|
30
|
+
* The menu slides over the content. The content
|
|
31
|
+
* itself, which is under the menu, does not move.
|
|
32
|
+
*/
|
|
33
|
+
const menuOverlayAnimation = (menu) => {
|
|
34
|
+
let closedX;
|
|
35
|
+
let openedX;
|
|
36
|
+
const width = menu.width + 8;
|
|
37
|
+
const menuAnimation = createAnimation();
|
|
38
|
+
const backdropAnimation = createAnimation();
|
|
39
|
+
if (menu.isEndSide) {
|
|
40
|
+
// right side
|
|
41
|
+
closedX = width + 'px';
|
|
42
|
+
openedX = '0px';
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// left side
|
|
46
|
+
closedX = -width + 'px';
|
|
47
|
+
openedX = '0px';
|
|
48
|
+
}
|
|
49
|
+
menuAnimation.addElement(menu.menuInnerEl).fromTo('transform', `translateX(${closedX})`, `translateX(${openedX})`);
|
|
50
|
+
const mode = getIonMode(menu);
|
|
51
|
+
const isIos = mode === 'ios';
|
|
52
|
+
const opacity = isIos ? 0.2 : 0.25;
|
|
53
|
+
backdropAnimation.addElement(menu.backdropEl).fromTo('opacity', 0.01, opacity);
|
|
54
|
+
return baseAnimation(isIos).addAnimation([menuAnimation, backdropAnimation]);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Menu Push Type
|
|
59
|
+
* The content slides over to reveal the menu underneath.
|
|
60
|
+
* The menu itself also slides over to reveal its bad self.
|
|
61
|
+
*/
|
|
62
|
+
const menuPushAnimation = (menu) => {
|
|
63
|
+
let contentOpenedX;
|
|
64
|
+
let menuClosedX;
|
|
65
|
+
const mode = getIonMode(menu);
|
|
66
|
+
const width = menu.width;
|
|
67
|
+
if (menu.isEndSide) {
|
|
68
|
+
contentOpenedX = -width + 'px';
|
|
69
|
+
menuClosedX = width + 'px';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
contentOpenedX = width + 'px';
|
|
73
|
+
menuClosedX = -width + 'px';
|
|
74
|
+
}
|
|
75
|
+
const menuAnimation = createAnimation()
|
|
76
|
+
.addElement(menu.menuInnerEl)
|
|
77
|
+
.fromTo('transform', `translateX(${menuClosedX})`, 'translateX(0px)');
|
|
78
|
+
const contentAnimation = createAnimation()
|
|
79
|
+
.addElement(menu.contentEl)
|
|
80
|
+
.fromTo('transform', 'translateX(0px)', `translateX(${contentOpenedX})`);
|
|
81
|
+
const backdropAnimation = createAnimation().addElement(menu.backdropEl).fromTo('opacity', 0.01, 0.32);
|
|
82
|
+
return baseAnimation(mode === 'ios').addAnimation([menuAnimation, contentAnimation, backdropAnimation]);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Menu Reveal Type
|
|
87
|
+
* The content slides over to reveal the menu underneath.
|
|
88
|
+
* The menu itself, which is under the content, does not move.
|
|
89
|
+
*/
|
|
90
|
+
const menuRevealAnimation = (menu) => {
|
|
91
|
+
const mode = getIonMode(menu);
|
|
92
|
+
const openedX = menu.width * (menu.isEndSide ? -1 : 1) + 'px';
|
|
93
|
+
const contentOpen = createAnimation()
|
|
94
|
+
.addElement(menu.contentEl) // REVIEW
|
|
95
|
+
.fromTo('transform', 'translateX(0px)', `translateX(${openedX})`);
|
|
96
|
+
return baseAnimation(mode === 'ios').addAnimation(contentOpen);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const createMenuController = () => {
|
|
100
|
+
const menuAnimations = new Map();
|
|
101
|
+
const menus = [];
|
|
102
|
+
const open = async (menu) => {
|
|
103
|
+
const menuEl = await get(menu, true);
|
|
104
|
+
if (menuEl) {
|
|
105
|
+
return menuEl.open();
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
};
|
|
109
|
+
const close = async (menu) => {
|
|
110
|
+
const menuEl = await (menu !== undefined ? get(menu, true) : getOpen());
|
|
111
|
+
if (menuEl !== undefined) {
|
|
112
|
+
return menuEl.close();
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
};
|
|
116
|
+
const toggle = async (menu) => {
|
|
117
|
+
const menuEl = await get(menu, true);
|
|
118
|
+
if (menuEl) {
|
|
119
|
+
return menuEl.toggle();
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
};
|
|
123
|
+
const enable = async (shouldEnable, menu) => {
|
|
124
|
+
const menuEl = await get(menu);
|
|
125
|
+
if (menuEl) {
|
|
126
|
+
menuEl.disabled = !shouldEnable;
|
|
127
|
+
}
|
|
128
|
+
return menuEl;
|
|
129
|
+
};
|
|
130
|
+
const swipeGesture = async (shouldEnable, menu) => {
|
|
131
|
+
const menuEl = await get(menu);
|
|
132
|
+
if (menuEl) {
|
|
133
|
+
menuEl.swipeGesture = shouldEnable;
|
|
134
|
+
}
|
|
135
|
+
return menuEl;
|
|
136
|
+
};
|
|
137
|
+
const isOpen = async (menu) => {
|
|
138
|
+
if (menu != null) {
|
|
139
|
+
const menuEl = await get(menu);
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
141
|
+
return menuEl !== undefined && menuEl.isOpen();
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const menuEl = await getOpen();
|
|
145
|
+
return menuEl !== undefined;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const isEnabled = async (menu) => {
|
|
149
|
+
const menuEl = await get(menu);
|
|
150
|
+
if (menuEl) {
|
|
151
|
+
return !menuEl.disabled;
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Finds and returns the menu specified by "menu" if registered.
|
|
157
|
+
* @param menu - The side or ID of the desired menu
|
|
158
|
+
* @param logOnMultipleSideMenus - If true, this function will log a warning
|
|
159
|
+
* if "menu" is a side but multiple menus on the same side were found. Since this function
|
|
160
|
+
* is used in multiple places, we default this log to false so that the calling
|
|
161
|
+
* functions can choose whether or not it is appropriate to log this warning.
|
|
162
|
+
*/
|
|
163
|
+
const get = async (menu, logOnMultipleSideMenus = false) => {
|
|
164
|
+
await waitUntilReady();
|
|
165
|
+
if (menu === 'start' || menu === 'end') {
|
|
166
|
+
// there could be more than one menu on the same side
|
|
167
|
+
// so first try to get the enabled one
|
|
168
|
+
const menuRefs = menus.filter((m) => m.side === menu && !m.disabled);
|
|
169
|
+
if (menuRefs.length >= 1) {
|
|
170
|
+
if (menuRefs.length > 1 && logOnMultipleSideMenus) {
|
|
171
|
+
printIonWarning(`menuController queried for a menu on the "${menu}" side, but ${menuRefs.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, menuRefs.map((m) => m.el));
|
|
172
|
+
}
|
|
173
|
+
return menuRefs[0].el;
|
|
174
|
+
}
|
|
175
|
+
// didn't find a menu side that is enabled
|
|
176
|
+
// so try to get the first menu side found
|
|
177
|
+
const sideMenuRefs = menus.filter((m) => m.side === menu);
|
|
178
|
+
if (sideMenuRefs.length >= 1) {
|
|
179
|
+
if (sideMenuRefs.length > 1 && logOnMultipleSideMenus) {
|
|
180
|
+
printIonWarning(`menuController queried for a menu on the "${menu}" side, but ${sideMenuRefs.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, sideMenuRefs.map((m) => m.el));
|
|
181
|
+
}
|
|
182
|
+
return sideMenuRefs[0].el;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else if (menu != null) {
|
|
186
|
+
// the menuId was not left or right
|
|
187
|
+
// so try to get the menu by its "id"
|
|
188
|
+
return find((m) => m.menuId === menu);
|
|
189
|
+
}
|
|
190
|
+
// return the first enabled menu
|
|
191
|
+
const menuEl = find((m) => !m.disabled);
|
|
192
|
+
if (menuEl) {
|
|
193
|
+
return menuEl;
|
|
194
|
+
}
|
|
195
|
+
// get the first menu in the array, if one exists
|
|
196
|
+
return menus.length > 0 ? menus[0].el : undefined;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Get the instance of the opened menu. Returns `null` if a menu is not found.
|
|
200
|
+
*/
|
|
201
|
+
const getOpen = async () => {
|
|
202
|
+
await waitUntilReady();
|
|
203
|
+
return _getOpenSync();
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* Get all menu instances.
|
|
207
|
+
*/
|
|
208
|
+
const getMenus = async () => {
|
|
209
|
+
await waitUntilReady();
|
|
210
|
+
return getMenusSync();
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Get whether or not a menu is animating. Returns `true` if any
|
|
214
|
+
* menu is currently animating.
|
|
215
|
+
*/
|
|
216
|
+
const isAnimating = async () => {
|
|
217
|
+
await waitUntilReady();
|
|
218
|
+
return isAnimatingSync();
|
|
219
|
+
};
|
|
220
|
+
const registerAnimation = (name, animation) => {
|
|
221
|
+
menuAnimations.set(name, animation);
|
|
222
|
+
};
|
|
223
|
+
const _register = (menu) => {
|
|
224
|
+
if (menus.indexOf(menu) < 0) {
|
|
225
|
+
menus.push(menu);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
const _unregister = (menu) => {
|
|
229
|
+
const index = menus.indexOf(menu);
|
|
230
|
+
if (index > -1) {
|
|
231
|
+
menus.splice(index, 1);
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
const _setOpen = async (menu, shouldOpen, animated, role) => {
|
|
235
|
+
if (isAnimatingSync()) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
if (shouldOpen) {
|
|
239
|
+
const openedMenu = await getOpen();
|
|
240
|
+
if (openedMenu && menu.el !== openedMenu) {
|
|
241
|
+
await openedMenu.setOpen(false, false);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return menu._setOpen(shouldOpen, animated, role);
|
|
245
|
+
};
|
|
246
|
+
const _createAnimation = (type, menuCmp) => {
|
|
247
|
+
const animationBuilder = menuAnimations.get(type); // TODO(FW-2832): type
|
|
248
|
+
if (!animationBuilder) {
|
|
249
|
+
throw new Error('animation not registered');
|
|
250
|
+
}
|
|
251
|
+
const animation = animationBuilder(menuCmp);
|
|
252
|
+
return animation;
|
|
253
|
+
};
|
|
254
|
+
const _getOpenSync = () => {
|
|
255
|
+
return find((m) => m._isOpen);
|
|
256
|
+
};
|
|
257
|
+
const getMenusSync = () => {
|
|
258
|
+
return menus.map((menu) => menu.el);
|
|
259
|
+
};
|
|
260
|
+
const isAnimatingSync = () => {
|
|
261
|
+
return menus.some((menu) => menu.isAnimating);
|
|
262
|
+
};
|
|
263
|
+
const find = (predicate) => {
|
|
264
|
+
const instance = menus.find(predicate);
|
|
265
|
+
if (instance !== undefined) {
|
|
266
|
+
return instance.el;
|
|
267
|
+
}
|
|
268
|
+
return undefined;
|
|
269
|
+
};
|
|
270
|
+
const waitUntilReady = () => {
|
|
271
|
+
return Promise.all(Array.from(document.querySelectorAll('ion-menu')).map((menu) => new Promise((resolve) => componentOnReady(menu, resolve))));
|
|
272
|
+
};
|
|
273
|
+
registerAnimation('reveal', menuRevealAnimation);
|
|
274
|
+
registerAnimation('push', menuPushAnimation);
|
|
275
|
+
registerAnimation('overlay', menuOverlayAnimation);
|
|
276
|
+
doc === null || doc === void 0 ? void 0 : doc.addEventListener('ionBackButton', (ev) => {
|
|
277
|
+
const openMenu = _getOpenSync();
|
|
278
|
+
if (openMenu) {
|
|
279
|
+
ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
|
|
280
|
+
return openMenu.close();
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
return {
|
|
285
|
+
registerAnimation,
|
|
286
|
+
get,
|
|
287
|
+
getMenus,
|
|
288
|
+
getOpen,
|
|
289
|
+
isEnabled,
|
|
290
|
+
swipeGesture,
|
|
291
|
+
isAnimating,
|
|
292
|
+
isOpen,
|
|
293
|
+
enable,
|
|
294
|
+
toggle,
|
|
295
|
+
close,
|
|
296
|
+
open,
|
|
297
|
+
_getOpenSync,
|
|
298
|
+
_createAnimation,
|
|
299
|
+
_register,
|
|
300
|
+
_unregister,
|
|
301
|
+
_setOpen,
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
const menuController = /*@__PURE__*/ createMenuController();
|
|
305
|
+
|
|
306
|
+
export { menuController as m };
|