@ionic/core 8.8.19 → 8.8.20-dev.11787158518.168a2fea
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--m5cCjbK.js +4 -0
- package/components/p-1jI5oW-W.js +4 -0
- package/components/{p-6J0vc7Z8.js → p-63OhffQv.js} +1 -1
- package/components/p-8FN7p701.js +4 -0
- package/components/p-B4uHHhPK.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/p-BNJOu1Q2.js +4 -0
- package/components/p-BOvLNVKq.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-BeamQXHF.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/p-Bjig0DJK.js +4 -0
- package/components/p-BjluhQMI.js +4 -0
- package/components/p-BlsIikdZ.js +4 -0
- package/components/p-BqPNzJf6.js +4 -0
- package/components/p-BrD9Xv62.js +4 -0
- package/components/p-BvJqoZ5R.js +4 -0
- package/components/p-Bz6z3Asd.js +4 -0
- package/components/p-C5KYjZWD.js +4 -0
- package/components/p-C6HnVvHO.js +4 -0
- package/components/p-C7jvh5Wy.js +4 -0
- package/components/p-C9BGR5fy.js +4 -0
- package/components/p-CB-y1CdP.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CHH3loEE.js +4 -0
- package/components/p-CJKUWjmg.js +4 -0
- package/components/{p-qMmFisyx.js → p-CMLAwl_N.js} +1 -1
- package/components/{p-C7II1iDj.js → p-C_phlPMC.js} +1 -1
- package/components/p-CbhUdtjf.js +4 -0
- package/components/p-CejmQs3h.js +4 -0
- package/components/p-CtZqa4HM.js +4 -0
- package/components/p-D7-vHX0A.js +4 -0
- package/components/p-D9qIVSWm.js +4 -0
- package/components/p-DD5fQ4EQ.js +4 -0
- package/components/p-DE-3iMNW.js +4 -0
- package/components/p-DFvZn99E.js +4 -0
- package/components/p-DHFt2rdc.js +4 -0
- package/components/p-DM-PrAoh.js +4 -0
- package/components/p-DSzSbVP2.js +4 -0
- package/components/{p--JUspHvy.js → p-DV85C0e0.js} +1 -1
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-D_RCyzwu.js +4 -0
- package/components/p-D_tD8r3L.js +4 -0
- package/components/p-DaA_8eqt.js +4 -0
- package/components/p-DjCtLZbF.js +4 -0
- package/components/p-Dmd2xqCe.js +4 -0
- package/components/p-Dojwmvde.js +4 -0
- package/components/{p-BkKAANMJ.js → p-DwpKZ6rl.js} +1 -1
- package/components/p-DzRT60Tw.js +4 -0
- package/components/p-G0TxqHfe.js +4 -0
- package/components/p-G6JR-cr_.js +4 -0
- package/components/p-GG5GhznE.js +4 -0
- package/components/p-TXPDHL13.js +4 -0
- package/components/p-UIBJkZf8.js +4 -0
- package/components/p-_IKFD3ID.js +4 -0
- package/components/p-byZM6qHV.js +4 -0
- package/components/p-dKq2jIum.js +4 -0
- package/components/p-fruGqVHh.js +4 -0
- package/components/p-iYhH60Tc.js +4 -0
- package/components/p-ia3IDdJS.js +4 -0
- package/components/{p-DqLB8yFQ.js → p-ryyf_ItD.js} +1 -1
- package/dist/cjs/{animation-Ch16T-Nb.js → animation-C0mOHzej.js} +4 -4
- package/dist/cjs/{app-globals-Dd89e0MR.js → app-globals-BREG4twP.js} +1 -1
- package/dist/cjs/{button-active-AWp_ygDP.js → button-active-CVMevT9a.js} +3 -3
- package/dist/cjs/config-CjUbvdPW.js +36 -0
- package/dist/cjs/{dir-DD0jPVH3.js → dir-zwDPRE5K.js} +2 -3
- package/dist/cjs/{format-BUFWn4Bn.js → format-pp0Du3K-.js} +40 -30
- package/dist/cjs/{framework-delegate-CEzl4MEA.js → framework-delegate-Dfo5XsGv.js} +5 -7
- package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
- package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-Ch-X4gRx.js} +2 -3
- package/dist/cjs/{hardware-back-button-CXmUnTJC.js → hardware-back-button-fqpYh-kd.js} +4 -4
- package/dist/cjs/{helpers-DdZyl6WL.js → helpers-YPQybDph.js} +4 -4
- package/dist/cjs/index-B7zJsYWS.js +429 -0
- package/dist/cjs/{index-CukZnH1U.js → index-BLdJCcJY.js} +5 -5
- package/dist/cjs/{index-MWAIyVLl.js → index-DDg31ZF5.js} +3 -3
- package/dist/cjs/{index-DOiZqxWZ.js → index-DXsPSne6.js} +6 -7
- package/dist/cjs/{index-BJ2-LydH.js → index-DwlRtFZe.js} +9 -3
- package/dist/cjs/{index-BfaXsATC.js → index-uvry__L4.js} +31 -14
- package/dist/cjs/{index-DqmRDbxg.js → index-wOmugbdg.js} +1 -1
- package/dist/cjs/{index-CD92bI7B.js → index-zVCah4Uz.js} +2 -2
- package/dist/cjs/index.cjs.js +19 -19
- package/dist/cjs/{input-shims-CPKgrIe3.js → input-shims-Cbu1fcye.js} +10 -12
- package/dist/cjs/input.utils-BZdMWVrt.js +35 -0
- package/dist/cjs/ion-accordion_2.cjs.entry.js +369 -341
- package/dist/cjs/ion-action-sheet.cjs.entry.js +188 -77
- package/dist/cjs/ion-alert.cjs.entry.js +274 -112
- package/dist/cjs/ion-app_8.cjs.entry.js +307 -190
- package/dist/cjs/ion-avatar_3.cjs.entry.js +10 -4
- package/dist/cjs/ion-back-button.cjs.entry.js +48 -24
- package/dist/cjs/ion-backdrop.cjs.entry.js +18 -14
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +200 -122
- package/dist/cjs/ion-button_2.cjs.entry.js +139 -67
- package/dist/cjs/ion-card_5.cjs.entry.js +83 -31
- package/dist/cjs/ion-checkbox.cjs.entry.js +153 -102
- package/dist/cjs/ion-chip.cjs.entry.js +17 -11
- package/dist/cjs/ion-col_3.cjs.entry.js +134 -10
- package/dist/cjs/ion-datetime-button.cjs.entry.js +254 -242
- package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +140 -82
- package/dist/cjs/ion-img.cjs.entry.js +35 -13
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +101 -73
- package/dist/cjs/ion-input-otp.cjs.entry.js +435 -372
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +36 -22
- package/dist/cjs/ion-input.cjs.entry.js +343 -212
- package/dist/cjs/ion-item-option_3.cjs.entry.js +95 -55
- package/dist/cjs/ion-item_8.cjs.entry.js +192 -93
- package/dist/cjs/ion-loading.cjs.entry.js +147 -61
- package/dist/cjs/ion-menu_3.cjs.entry.js +169 -107
- package/dist/cjs/ion-modal.cjs.entry.js +456 -262
- package/dist/cjs/ion-nav_2.cjs.entry.js +102 -159
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +38 -34
- package/dist/cjs/ion-picker-column.cjs.entry.js +418 -406
- package/dist/cjs/ion-picker.cjs.entry.js +402 -393
- package/dist/cjs/ion-popover.cjs.entry.js +320 -206
- package/dist/cjs/ion-progress-bar.cjs.entry.js +32 -26
- package/dist/cjs/ion-radio_2.cjs.entry.js +208 -135
- package/dist/cjs/ion-range.cjs.entry.js +304 -239
- package/dist/cjs/ion-refresher_2.cjs.entry.js +166 -94
- package/dist/cjs/ion-reorder_2.cjs.entry.js +54 -24
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -14
- package/dist/cjs/ion-route_4.cjs.entry.js +176 -72
- package/dist/cjs/ion-searchbar.cjs.entry.js +291 -200
- package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment-view.cjs.entry.js +28 -17
- package/dist/cjs/ion-segment_2.cjs.entry.js +169 -126
- package/dist/cjs/ion-select-modal.cjs.entry.js +105 -49
- package/dist/cjs/ion-select_3.cjs.entry.js +787 -260
- package/dist/cjs/ion-spinner.cjs.entry.js +24 -10
- package/dist/cjs/ion-split-pane.cjs.entry.js +29 -16
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +101 -42
- package/dist/cjs/ion-tab_2.cjs.entry.js +54 -28
- package/dist/cjs/ion-text.cjs.entry.js +11 -5
- package/dist/cjs/ion-textarea.cjs.entry.js +296 -189
- package/dist/cjs/ion-toast.cjs.entry.js +237 -118
- package/dist/cjs/ion-toggle.cjs.entry.js +175 -122
- package/dist/cjs/{ionic-global-BerQGEpE.js → ionic-global-k6hOWWpn.js} +13 -8
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-CTiTDh3m.js → ios.transition-zTmJz8T-.js} +14 -18
- package/dist/cjs/{item-multiple-inputs-jOJZE_I0.js → item-multiple-inputs-BdYSbfKN.js} +1 -1
- package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Cix5TVkD.js} +2 -2
- package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-cHxZlTyz.js} +2 -2
- package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-PtZoN2GS.js} +6 -6
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-BpiTAaqF.js → md.transition-nb_4pUXu.js} +8 -9
- package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
- package/dist/cjs/{overlays-CQ_c1fko.js → overlays-KaNVDNqC.js} +48 -33
- package/dist/cjs/select-option-render-pULCGldr.js +123 -0
- package/dist/cjs/slot-mutation-controller-DPHmqXdV.js +397 -0
- package/dist/cjs/{status-tap-7FzRlXNr.js → status-tap-o9IIymsP.js} +4 -4
- package/dist/cjs/{swipe-back-DwTZiAc9.js → swipe-back-B7X9VOlH.js} +5 -5
- package/dist/cjs/{theme-CeDs6Hcv.js → theme-Bw0rpaNN.js} +6 -1
- package/dist/collection/collection-manifest.json +6 -10
- package/dist/collection/components/accordion/accordion.js +315 -312
- package/dist/collection/components/accordion-group/accordion-group.js +48 -25
- package/dist/collection/components/action-sheet/action-sheet.ios.css +228 -2
- package/dist/collection/components/action-sheet/action-sheet.js +173 -64
- package/dist/collection/components/action-sheet/action-sheet.md.css +174 -2
- package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
- package/dist/collection/components/alert/alert.ios.css +279 -10
- package/dist/collection/components/alert/alert.js +257 -97
- package/dist/collection/components/alert/alert.md.css +268 -20
- package/dist/collection/components/app/app.js +3 -0
- package/dist/collection/components/back-button/back-button.js +42 -19
- package/dist/collection/components/backdrop/backdrop.js +16 -14
- package/dist/collection/components/badge/badge.js +6 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js +91 -30
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +103 -88
- package/dist/collection/components/button/button.js +132 -61
- package/dist/collection/components/buttons/buttons.js +13 -15
- package/dist/collection/components/card/card.js +54 -21
- package/dist/collection/components/card-header/card-header.js +12 -8
- package/dist/collection/components/card-subtitle/card-subtitle.js +6 -0
- package/dist/collection/components/card-title/card-title.js +6 -0
- package/dist/collection/components/checkbox/checkbox.js +147 -97
- package/dist/collection/components/chip/chip.js +14 -10
- package/dist/collection/components/col/col.js +127 -3
- package/dist/collection/components/content/content.js +93 -64
- package/dist/collection/components/datetime/datetime.ios.css +42 -2
- package/dist/collection/components/datetime/datetime.js +1042 -807
- package/dist/collection/components/datetime/datetime.md.css +42 -1
- package/dist/collection/components/datetime/utils/data.js +13 -14
- package/dist/collection/components/datetime/utils/format.js +21 -11
- package/dist/collection/components/datetime/utils/manipulation.js +8 -8
- package/dist/collection/components/datetime/utils/parse.js +10 -10
- package/dist/collection/components/datetime/utils/state.js +8 -2
- package/dist/collection/components/datetime/utils/validate.js +4 -5
- package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -0
- package/dist/collection/components/datetime-button/datetime-button.js +247 -237
- package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
- package/dist/collection/components/fab/fab.js +20 -13
- package/dist/collection/components/fab-button/fab-button.js +104 -55
- package/dist/collection/components/fab-list/fab-list.js +10 -11
- package/dist/collection/components/footer/footer.js +50 -44
- package/dist/collection/components/grid/grid.js +4 -6
- package/dist/collection/components/header/header.js +35 -25
- package/dist/collection/components/img/img.js +34 -10
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +73 -66
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +20 -3
- package/dist/collection/components/input/input.ios.css +57 -26
- package/dist/collection/components/input/input.js +336 -206
- package/dist/collection/components/input/input.md.css +79 -43
- package/dist/collection/components/input-otp/input-otp.js +430 -368
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +32 -19
- package/dist/collection/components/item/item.js +99 -53
- package/dist/collection/components/item-divider/item-divider.js +17 -12
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +50 -22
- package/dist/collection/components/item-options/item-options.js +11 -8
- package/dist/collection/components/item-sliding/item-sliding.js +27 -21
- package/dist/collection/components/label/label.js +26 -6
- package/dist/collection/components/list/list.js +11 -8
- package/dist/collection/components/list-header/list-header.js +12 -2
- package/dist/collection/components/loading/loading.js +135 -51
- package/dist/collection/components/menu/menu.js +103 -61
- package/dist/collection/components/menu-button/menu-button.js +30 -21
- package/dist/collection/components/menu-toggle/menu-toggle.js +22 -15
- package/dist/collection/components/modal/animations/ios.enter.js +1 -1
- package/dist/collection/components/modal/animations/md.enter.js +1 -1
- package/dist/collection/components/modal/gestures/sheet.js +22 -10
- package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
- package/dist/collection/components/modal/modal.js +398 -228
- package/dist/collection/components/modal/safe-area-utils.js +6 -7
- package/dist/collection/components/modal/test/fixtures.js +3 -0
- package/dist/collection/components/nav/nav.js +69 -247
- package/dist/collection/components/nav/view-controller.js +7 -1
- package/dist/collection/components/nav-link/nav-link.js +21 -10
- package/dist/collection/components/note/note.js +8 -2
- package/dist/collection/components/picker/picker.js +398 -390
- package/dist/collection/components/picker-column/picker-column.css +3 -0
- package/dist/collection/components/picker-column/picker-column.js +414 -404
- package/dist/collection/components/picker-column-option/picker-column-option.js +33 -31
- package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
- package/dist/collection/components/popover/animations/ios.enter.js +1 -2
- package/dist/collection/components/popover/animations/md.enter.js +1 -2
- package/dist/collection/components/popover/popover.ios.css +15 -0
- package/dist/collection/components/popover/popover.js +302 -185
- package/dist/collection/components/popover/popover.md.css +15 -0
- package/dist/collection/components/popover/test/fixture.js +1 -0
- package/dist/collection/components/popover/utils.js +4 -6
- package/dist/collection/components/progress-bar/progress-bar.js +27 -23
- package/dist/collection/components/radio/radio.js +102 -66
- package/dist/collection/components/radio-group/radio-group.js +101 -66
- package/dist/collection/components/radio-group/test/fixtures.js +2 -0
- package/dist/collection/components/range/range.js +298 -234
- package/dist/collection/components/refresher/refresher.js +110 -78
- package/dist/collection/components/refresher-content/refresher-content.js +41 -4
- package/dist/collection/components/reorder/reorder.js +2 -1
- package/dist/collection/components/reorder-group/reorder-group.js +44 -15
- package/dist/collection/components/ripple-effect/ripple-effect.js +12 -13
- package/dist/collection/components/route/route.js +39 -10
- package/dist/collection/components/route-redirect/route-redirect.js +31 -0
- package/dist/collection/components/router/router.js +37 -33
- package/dist/collection/components/router/utils/dom.js +25 -7
- package/dist/collection/components/router/utils/matching.js +7 -9
- package/dist/collection/components/router/utils/parser.js +1 -1
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/router-link/router-link.js +37 -12
- package/dist/collection/components/router-outlet/router-outlet.js +82 -21
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +289 -199
- package/dist/collection/components/segment/segment.js +120 -85
- package/dist/collection/components/segment-button/segment-button.js +43 -37
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +26 -16
- package/dist/collection/components/select/select.ios.css +96 -69
- package/dist/collection/components/select/select.js +629 -213
- package/dist/collection/components/select/select.md.css +118 -85
- package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
- package/dist/collection/components/select-modal/select-modal.js +92 -38
- package/dist/collection/components/select-modal/select-modal.md.css +164 -0
- package/dist/collection/components/select-modal/test/fixtures.js +8 -1
- package/dist/collection/components/select-option/select-option.js +110 -9
- package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
- package/dist/collection/components/select-popover/select-popover.js +103 -36
- package/dist/collection/components/select-popover/select-popover.md.css +164 -0
- package/dist/collection/components/select-popover/test/fixtures.js +8 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +12 -8
- package/dist/collection/components/spinner/spinner.js +21 -9
- package/dist/collection/components/split-pane/split-pane.js +27 -15
- package/dist/collection/components/tab/tab.js +17 -6
- package/dist/collection/components/tab-bar/tab-bar.js +32 -14
- package/dist/collection/components/tab-button/tab-button.js +62 -23
- package/dist/collection/components/tabs/tabs.js +33 -20
- package/dist/collection/components/text/text.js +8 -2
- package/dist/collection/components/textarea/textarea.ios.css +94 -62
- package/dist/collection/components/textarea/textarea.js +287 -181
- package/dist/collection/components/textarea/textarea.md.css +103 -77
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +18 -2
- package/dist/collection/components/toast/toast.js +223 -106
- package/dist/collection/components/toggle/toggle.js +167 -115
- package/dist/collection/components/toolbar/toolbar.js +15 -7
- package/dist/collection/global/config.js +4 -6
- package/dist/collection/global/ionic-global.js +8 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/animation/animation.js +3 -3
- package/dist/collection/utils/config.js +5 -4
- package/dist/collection/utils/focus-controller/index.js +1 -1
- package/dist/collection/utils/focus-trap.js +3 -3
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/forms/start-container-controller.js +132 -0
- package/dist/collection/utils/framework-delegate.js +4 -6
- package/dist/collection/utils/gesture/gesture-controller.js +15 -8
- package/dist/collection/utils/gesture/index.js +10 -2
- package/dist/collection/utils/hardware-back-button.js +3 -3
- package/dist/collection/utils/helpers.js +2 -2
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
- package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
- package/dist/collection/utils/keyboard/keyboard.js +1 -1
- package/dist/collection/utils/logging/index.js +23 -4
- package/dist/collection/utils/menu-controller/index.js +1 -2
- package/dist/collection/utils/native/haptic.js +2 -3
- package/dist/collection/utils/native/keyboard.js +2 -2
- package/dist/collection/utils/native/status-bar.js +1 -1
- package/dist/collection/utils/overlay-control-label.js +45 -0
- package/dist/collection/utils/overlays.js +38 -23
- package/dist/collection/utils/platform.js +4 -5
- package/dist/collection/utils/rtl/dir.js +2 -3
- package/dist/collection/utils/sanitization/index.js +276 -20
- package/dist/collection/utils/select-option-render.js +118 -0
- package/dist/collection/utils/slot-mutation-controller.js +1 -2
- package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
- package/dist/collection/utils/test/playwright/drag-element.js +2 -3
- package/dist/collection/utils/test/playwright/generator.js +3 -4
- package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
- package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
- package/dist/collection/utils/test/press-keys.js +10 -17
- package/dist/collection/utils/theme.js +6 -1
- package/dist/collection/utils/transition/ios.transition.js +9 -13
- package/dist/collection/utils/transition/md.transition.js +3 -4
- package/dist/docs.json +557 -1257
- package/dist/esm/{animation-DLJpuoEz.js → animation-CGFdmGk9.js} +4 -4
- package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-CYmMeGdU.js} +1 -1
- package/dist/esm/{button-active-CXXy0FIE.js → button-active-BDOsVAiZ.js} +3 -3
- package/dist/esm/config-DWCzVL3Y.js +32 -0
- package/dist/esm/{dir-o8OKV5aD.js → dir-Dojwmvde.js} +2 -3
- package/dist/esm/{format-CAmvpAez.js → format-Dcwga61t.js} +41 -31
- package/dist/esm/{framework-delegate-B9yvYzqV.js → framework-delegate-BHTU2Ip9.js} +5 -7
- package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
- package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
- package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-gLJHMX_F.js} +4 -4
- package/dist/esm/{helpers-DkCLSLI9.js → helpers-CAGf8Wgp.js} +4 -4
- package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
- package/dist/esm/index-CKM1DdGm.js +424 -0
- package/dist/esm/{index-tcQvqkiX.js → index-ChhhtsGZ.js} +32 -15
- package/dist/esm/{index-DwNKJodj.js → index-Clc-28O1.js} +3 -3
- package/dist/esm/{index-DdeElWma.js → index-CqneaaGd.js} +6 -7
- package/dist/esm/{index-Bck1OwMs.js → index-DcPaH5uL.js} +9 -3
- package/dist/esm/{index-B_8X7INq.js → index-T0JxBI8V.js} +2 -2
- package/dist/esm/{index-Dsz7OTeL.js → index-WlteAIqz.js} +5 -5
- package/dist/esm/index.js +17 -16
- package/dist/esm/{input-shims-d-hDv86G.js → input-shims-B8sfni1e.js} +10 -12
- package/dist/esm/input.utils-B1ValN_N.js +33 -0
- package/dist/esm/ion-accordion_2.entry.js +369 -341
- package/dist/esm/ion-action-sheet.entry.js +188 -77
- package/dist/esm/ion-alert.entry.js +273 -111
- package/dist/esm/ion-app_8.entry.js +307 -190
- package/dist/esm/ion-avatar_3.entry.js +10 -4
- package/dist/esm/ion-back-button.entry.js +48 -24
- package/dist/esm/ion-backdrop.entry.js +18 -14
- package/dist/esm/ion-breadcrumb_2.entry.js +200 -122
- package/dist/esm/ion-button_2.entry.js +139 -67
- package/dist/esm/ion-card_5.entry.js +83 -31
- package/dist/esm/ion-checkbox.entry.js +153 -102
- package/dist/esm/ion-chip.entry.js +17 -11
- package/dist/esm/ion-col_3.entry.js +134 -10
- package/dist/esm/ion-datetime-button.entry.js +254 -242
- package/dist/esm/ion-datetime.entry.js +2768 -0
- package/dist/esm/ion-fab_3.entry.js +140 -82
- package/dist/esm/ion-img.entry.js +35 -13
- package/dist/esm/ion-infinite-scroll_2.entry.js +100 -72
- package/dist/esm/ion-input-otp.entry.js +435 -372
- package/dist/esm/ion-input-password-toggle.entry.js +36 -22
- package/dist/esm/ion-input.entry.js +341 -210
- package/dist/esm/ion-item-option_3.entry.js +95 -55
- package/dist/esm/ion-item_8.entry.js +192 -93
- package/dist/esm/ion-loading.entry.js +146 -60
- package/dist/esm/ion-menu_3.entry.js +169 -107
- package/dist/esm/ion-modal.entry.js +456 -262
- package/dist/esm/ion-nav_2.entry.js +102 -159
- package/dist/esm/ion-picker-column-option.entry.js +38 -34
- package/dist/esm/ion-picker-column.entry.js +418 -406
- package/dist/esm/ion-picker.entry.js +402 -393
- package/dist/esm/ion-popover.entry.js +320 -206
- package/dist/esm/ion-progress-bar.entry.js +32 -26
- package/dist/esm/ion-radio_2.entry.js +208 -135
- package/dist/esm/ion-range.entry.js +304 -239
- package/dist/esm/ion-refresher_2.entry.js +164 -92
- package/dist/esm/ion-reorder_2.entry.js +54 -24
- package/dist/esm/ion-ripple-effect.entry.js +14 -14
- package/dist/esm/ion-route_4.entry.js +176 -72
- package/dist/esm/ion-searchbar.entry.js +291 -200
- package/dist/esm/ion-segment-content.entry.js +2 -2
- package/dist/esm/ion-segment-view.entry.js +28 -17
- package/dist/esm/ion-segment_2.entry.js +169 -126
- package/dist/esm/ion-select-modal.entry.js +105 -49
- package/dist/esm/ion-select_3.entry.js +787 -260
- package/dist/esm/ion-spinner.entry.js +24 -10
- package/dist/esm/ion-split-pane.entry.js +29 -16
- package/dist/esm/ion-tab-bar_2.entry.js +101 -42
- package/dist/esm/ion-tab_2.entry.js +54 -28
- package/dist/esm/ion-text.entry.js +11 -5
- package/dist/esm/ion-textarea.entry.js +295 -188
- package/dist/esm/ion-toast.entry.js +236 -117
- package/dist/esm/ion-toggle.entry.js +175 -122
- package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-BVB7BrLT.js} +13 -8
- package/dist/esm/ionic.js +5 -5
- package/dist/esm/{ios.transition-CxNhMt4a.js → ios.transition-DXRCmcbC.js} +14 -18
- package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
- package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
- package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
- package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-IE4mC3kp.js → md.transition-BMngO4i_.js} +8 -9
- package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
- package/dist/esm/{overlays-COCl_nm9.js → overlays-CPmIs9Ls.js} +48 -33
- package/dist/esm/select-option-render-C4m76VGH.js +121 -0
- package/dist/esm/slot-mutation-controller-DiE_C9un.js +393 -0
- package/dist/esm/{status-tap-HhO5eQI9.js → status-tap-CHB7KwIb.js} +4 -4
- package/dist/esm/{swipe-back-DK6afpuO.js → swipe-back-C9HW1bug.js} +5 -5
- package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
- package/dist/html.html-data.json +52 -80
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-06ec7136.entry.js +4 -0
- package/dist/ionic/p-09fe4fa3.entry.js +4 -0
- package/dist/ionic/p-10d45a07.entry.js +4 -0
- package/dist/ionic/p-208c8a07.entry.js +4 -0
- package/dist/ionic/p-212474fa.entry.js +4 -0
- package/dist/ionic/p-2eef1396.entry.js +4 -0
- package/dist/ionic/p-347e005d.entry.js +4 -0
- package/dist/ionic/p-3a0b3f1d.entry.js +4 -0
- package/dist/ionic/p-3b071259.entry.js +4 -0
- package/dist/ionic/{p-c6e49f3f.entry.js → p-40424a88.entry.js} +1 -1
- package/dist/ionic/p-4204184c.entry.js +4 -0
- package/dist/ionic/p-47464391.entry.js +4 -0
- package/dist/ionic/p-4eOQC00Z.js +4 -0
- package/dist/ionic/p-4f9c9126.entry.js +4 -0
- package/dist/ionic/p-5JsKPLJD.js +4 -0
- package/dist/ionic/p-5bc485c6.entry.js +4 -0
- package/dist/ionic/p-603a61e6.entry.js +4 -0
- package/dist/ionic/p-60576951.entry.js +4 -0
- package/dist/ionic/p-67a81d33.entry.js +4 -0
- package/dist/ionic/p-6affb775.entry.js +4 -0
- package/dist/ionic/p-6f120c25.entry.js +4 -0
- package/dist/ionic/p-71c82b60.entry.js +4 -0
- package/dist/ionic/p-79325ffe.entry.js +4 -0
- package/dist/ionic/{p-DZaO33Mw.js → p-7CBuOvEo.js} +1 -1
- package/dist/ionic/p-7e4d51fa.entry.js +4 -0
- package/dist/ionic/p-7f5d4664.entry.js +4 -0
- package/dist/ionic/p-80ee82fc.entry.js +4 -0
- package/dist/ionic/p-84af7dbc.entry.js +4 -0
- package/dist/ionic/p-89ca830a.entry.js +4 -0
- package/dist/ionic/p-93b8ec8f.entry.js +4 -0
- package/dist/ionic/p-946f65c2.entry.js +4 -0
- package/dist/ionic/p-9c4b39fb.entry.js +4 -0
- package/dist/ionic/p-B1NEZUzQ.js +4 -0
- package/dist/ionic/p-B1ck5iy-.js +4 -0
- package/dist/ionic/{p-Cd4H8ft-.js → p-B4FrqdW0.js} +1 -1
- package/dist/ionic/p-BB0LlG4y.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BYEAtHr-.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
- package/dist/ionic/p-C-94tAim.js +4 -0
- package/dist/ionic/{p-DipZFfzN.js → p-C-eHZMYE.js} +1 -1
- package/dist/ionic/p-CBR_W98Z.js +4 -0
- package/dist/ionic/{p-ClM02LPk.js → p-CBWAXjA5.js} +1 -1
- package/dist/ionic/p-CMRtMbJc.js +4 -0
- package/dist/ionic/p-CPcPmkGv.js +4 -0
- package/dist/ionic/p-CaRuIadB.js +4 -0
- package/dist/ionic/p-Cdjxf_yg.js +4 -0
- package/dist/ionic/p-ChhhtsGZ.js +5 -0
- package/dist/ionic/p-CzS1qWve.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D94_RztK.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-DjjfauRM.js +4 -0
- package/dist/ionic/p-DkUB-ROc.js +4 -0
- package/dist/ionic/p-Dn0mqQ_R.js +4 -0
- package/dist/ionic/p-Dojwmvde.js +4 -0
- package/dist/ionic/p-DplOqGUv.js +4 -0
- package/dist/ionic/p-Dst_XmZh.js +4 -0
- package/dist/ionic/p-T71k3C35.js +4 -0
- package/dist/ionic/p-TXPDHL13.js +4 -0
- package/dist/ionic/p-UIBJkZf8.js +4 -0
- package/dist/ionic/p-a438b193.entry.js +4 -0
- package/dist/ionic/p-babaaaa7.entry.js +4 -0
- package/dist/ionic/p-be08d500.entry.js +4 -0
- package/dist/ionic/p-be9a4f51.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/p-c00d3092.entry.js +4 -0
- package/dist/ionic/p-c36dc8f5.entry.js +4 -0
- package/dist/ionic/p-c72a7e17.entry.js +4 -0
- package/dist/ionic/p-c8edd88c.entry.js +4 -0
- package/dist/ionic/p-ce0e380b.entry.js +4 -0
- package/dist/ionic/p-ce32912b.entry.js +4 -0
- package/dist/ionic/p-d07cf130.entry.js +4 -0
- package/dist/ionic/p-d27edeb3.entry.js +4 -0
- package/dist/ionic/p-d5d2c506.entry.js +4 -0
- package/dist/ionic/p-d5e31ca9.entry.js +4 -0
- package/dist/ionic/p-de91444f.entry.js +4 -0
- package/dist/ionic/p-ded69ceb.entry.js +4 -0
- package/dist/ionic/p-df72866d.entry.js +4 -0
- package/dist/ionic/p-e47e3151.entry.js +4 -0
- package/dist/ionic/p-e621e5e8.entry.js +4 -0
- package/dist/ionic/p-eea9cf93.entry.js +4 -0
- package/dist/ionic/p-f402f5a4.entry.js +4 -0
- package/dist/ionic/p-fe1bfbcf.entry.js +4 -0
- package/{components/p-9GFIh9p1.js → dist/ionic/p-ffb90460.entry.js} +1 -1
- package/dist/types/components/img/img.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +12 -6
- package/dist/types/components/modal/modal-interface.d.ts +9 -0
- package/dist/types/components/modal/modal.d.ts +11 -4
- package/dist/types/components/nav/nav-interface.d.ts +0 -1
- package/dist/types/components/nav/nav.d.ts +2 -22
- package/dist/types/components/route/route.d.ts +1 -1
- package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
- package/dist/types/components/searchbar/searchbar.d.ts +1 -1
- package/dist/types/components/select/select-interface.d.ts +31 -0
- package/dist/types/components/select/select.d.ts +30 -6
- package/dist/types/components/select-option/select-option.d.ts +42 -1
- package/dist/types/components/textarea/textarea.d.ts +12 -5
- package/dist/types/components.d.ts +74 -311
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +0 -1
- package/dist/types/utils/config.d.ts +1 -8
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
- package/dist/types/utils/logging/index.d.ts +2 -1
- package/dist/types/utils/overlay-control-label.d.ts +32 -0
- package/dist/types/utils/overlays.d.ts +11 -9
- package/dist/types/utils/sanitization/index.d.ts +58 -2
- package/dist/types/utils/select-option-render.d.ts +53 -0
- package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
- package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
- package/hydrate/index.js +10660 -7305
- package/hydrate/index.mjs +10660 -7305
- package/package.json +55 -12
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -4
- package/components/ion-picker-legacy.d.ts +0 -11
- package/components/ion-picker-legacy.js +0 -4
- package/components/p-0LM2oPMC.js +0 -4
- package/components/p-B21528L5.js +0 -4
- package/components/p-B2nSfLHH.js +0 -4
- package/components/p-B3qf4bEn.js +0 -4
- package/components/p-B9jFTlwE.js +0 -4
- package/components/p-BDd9Zrb9.js +0 -4
- package/components/p-BLmJ0zRm.js +0 -4
- package/components/p-BMYNBJgf.js +0 -4
- package/components/p-BRYd8D-I.js +0 -4
- package/components/p-BSEgsdFI.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BTJrYwxN.js +0 -4
- package/components/p-BV-zKay-.js +0 -4
- package/components/p-BYRVyMu9.js +0 -4
- package/components/p-Bmq8qlkW.js +0 -4
- package/components/p-BuxQcfHK.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-CTdRooFV.js +0 -4
- package/components/p-Cf2jSDS8.js +0 -4
- package/components/p-Cfx4M1Bn.js +0 -4
- package/components/p-CgkrslTX.js +0 -4
- package/components/p-CiCzYG2V.js +0 -4
- package/components/p-Ck0lEczL.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-CniZht3v.js +0 -4
- package/components/p-CsaojgEs.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-D13Eaw-8.js +0 -4
- package/components/p-D4FYu-4R.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DARjq3GM.js +0 -4
- package/components/p-DEZ2myA3.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DVe41iHI.js +0 -4
- package/components/p-DX5m9g56.js +0 -4
- package/components/p-DboHi2CL.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DmzFY5IC.js +0 -4
- package/components/p-DqZAXv2t.js +0 -4
- package/components/p-Dv8w0kqz.js +0 -4
- package/components/p-Dw7GNDKq.js +0 -4
- package/components/p-Dww01PNs.js +0 -4
- package/components/p-Gy276IJk.js +0 -4
- package/components/p-ZzLXTvyt.js +0 -4
- package/components/p-cyNmxje6.js +0 -4
- package/components/p-j5IxBIan.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-lVAbdiAu.js +0 -4
- package/components/p-o8OKV5aD.js +0 -4
- package/components/p-rCa2eL0j.js +0 -4
- package/dist/cjs/config-D6C-KlA9.js +0 -201
- package/dist/cjs/input.utils-DQaUGGed.js +0 -150
- package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3167
- package/dist/cjs/notch-controller-aiy8aQb-.js +0 -155
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
- package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
- package/dist/collection/components/picker-legacy/picker.js +0 -890
- package/dist/collection/components/picker-legacy/picker.md.css +0 -287
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
- package/dist/esm/config-DQCONYYp.js +0 -195
- package/dist/esm/input.utils-Cd23Gdd1.js +0 -147
- package/dist/esm/ion-datetime_3.entry.js +0 -3163
- package/dist/esm/notch-controller-Doqis1td.js +0 -153
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-0283ea73.entry.js +0 -4
- package/dist/ionic/p-02ecae65.entry.js +0 -4
- package/dist/ionic/p-0672f677.entry.js +0 -4
- package/dist/ionic/p-0c06fe60.entry.js +0 -4
- package/dist/ionic/p-0fa9c382.entry.js +0 -4
- package/dist/ionic/p-1af4d74c.entry.js +0 -4
- package/dist/ionic/p-1d7ef0d2.entry.js +0 -4
- package/dist/ionic/p-26f05d3a.entry.js +0 -4
- package/dist/ionic/p-27d30585.entry.js +0 -4
- package/dist/ionic/p-2bb2cb18.entry.js +0 -4
- package/dist/ionic/p-31e7bd05.entry.js +0 -4
- package/dist/ionic/p-32f53010.entry.js +0 -4
- package/dist/ionic/p-35eb8b5c.entry.js +0 -4
- package/dist/ionic/p-37e720da.entry.js +0 -4
- package/dist/ionic/p-3efa137b.entry.js +0 -4
- package/dist/ionic/p-432bd72c.entry.js +0 -4
- package/dist/ionic/p-47214c72.entry.js +0 -4
- package/dist/ionic/p-4e172429.entry.js +0 -4
- package/dist/ionic/p-5c3da84e.entry.js +0 -4
- package/dist/ionic/p-5d1da0a2.entry.js +0 -4
- package/dist/ionic/p-5d8082fe.entry.js +0 -4
- package/dist/ionic/p-613d3c43.entry.js +0 -4
- package/dist/ionic/p-616e4d4f.entry.js +0 -4
- package/dist/ionic/p-65d611b2.entry.js +0 -4
- package/dist/ionic/p-67806e3f.entry.js +0 -4
- package/dist/ionic/p-68cbb2fc.entry.js +0 -4
- package/dist/ionic/p-737ae9eb.entry.js +0 -4
- package/dist/ionic/p-7b0d6248.entry.js +0 -4
- package/dist/ionic/p-7e71e470.entry.js +0 -4
- package/dist/ionic/p-84d5ce05.entry.js +0 -4
- package/dist/ionic/p-85d49987.entry.js +0 -4
- package/dist/ionic/p-8945088b.entry.js +0 -4
- package/dist/ionic/p-8b155568.entry.js +0 -4
- package/dist/ionic/p-90267c4b.entry.js +0 -4
- package/dist/ionic/p-92ad8a67.entry.js +0 -4
- package/dist/ionic/p-9a97d4e0.entry.js +0 -4
- package/dist/ionic/p-9e4b0894.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-B2kaj8sx.js +0 -4
- package/dist/ionic/p-B4y7nxsg.js +0 -4
- package/dist/ionic/p-B8t9Ro6f.js +0 -4
- package/dist/ionic/p-BEOxsxBw.js +0 -4
- package/dist/ionic/p-BJ2NxSHp.js +0 -4
- package/dist/ionic/p-BLiL8g0v.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BUFIpxKM.js +0 -4
- package/dist/ionic/p-BYRVyMu9.js +0 -4
- package/dist/ionic/p-C0eMdTCW.js +0 -4
- package/dist/ionic/p-CKvCXMs9.js +0 -4
- package/dist/ionic/p-CPTv7G9B.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-CxMyXUtt.js +0 -4
- package/dist/ionic/p-D13Eaw-8.js +0 -4
- package/dist/ionic/p-DCoy2elM.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DqN5EA2O.js +0 -4
- package/dist/ionic/p-Dr9fTCb1.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-EkpneKVM.js +0 -4
- package/dist/ionic/p-Nqf6uvGh.js +0 -4
- package/dist/ionic/p-SNAkTDfm.js +0 -4
- package/dist/ionic/p-ab00b0d8.entry.js +0 -4
- package/dist/ionic/p-c2175309.entry.js +0 -4
- package/dist/ionic/p-c4b69d9b.entry.js +0 -4
- package/dist/ionic/p-c4d8641b.entry.js +0 -4
- package/dist/ionic/p-ce637936.entry.js +0 -4
- package/dist/ionic/p-da85e958.entry.js +0 -4
- package/dist/ionic/p-dfa8d673.entry.js +0 -4
- package/dist/ionic/p-e139357c.entry.js +0 -4
- package/dist/ionic/p-e7b7a7b1.entry.js +0 -4
- package/dist/ionic/p-f37ca594.entry.js +0 -4
- package/dist/ionic/p-f8dd336e.entry.js +0 -4
- package/dist/ionic/p-f9de757b.entry.js +0 -4
- package/dist/ionic/p-fe11cf51.entry.js +0 -4
- package/dist/ionic/p-mjKAFv89.js +0 -4
- package/dist/ionic/p-o8OKV5aD.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
- package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
- /package/components/{p-CO7fmmxt.js → p-LpMHEu3v.js} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance, e as config, h, d as Host,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { b as getIonMode } from './ionic-global-
|
|
8
|
-
import './dir-
|
|
4
|
+
import { r as registerInstance, g as getElement, e as config, h, d as Host, c as createEvent, f as printIonWarning } from './index-ChhhtsGZ.js';
|
|
5
|
+
import { f as addEventListener, m as removeEventListener, r as raf, g as getElementRoot, t as transitionEndAsync } from './helpers-CAGf8Wgp.js';
|
|
6
|
+
import { b as chevronDown } from './index-BvabGprD.js';
|
|
7
|
+
import { b as getIonMode } from './ionic-global-BVB7BrLT.js';
|
|
8
|
+
import './dir-Dojwmvde.js';
|
|
9
9
|
|
|
10
10
|
const accordionIosCss = () => `:host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}`;
|
|
11
11
|
|
|
@@ -14,329 +14,94 @@ const accordionMdCss = () => `:host{display:block;position:relative;width:100%;b
|
|
|
14
14
|
const Accordion = class {
|
|
15
15
|
constructor(hostRef) {
|
|
16
16
|
registerInstance(this, hostRef);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* We only want to mark as "interacted" if the state is changing.
|
|
21
|
-
*/
|
|
22
|
-
const accordionGroup = this.accordionGroupEl;
|
|
23
|
-
if (accordionGroup) {
|
|
24
|
-
const value = accordionGroup.value;
|
|
25
|
-
const accordionValue = this.value;
|
|
26
|
-
const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
|
|
27
|
-
const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
|
|
28
|
-
const stateWillChange = shouldExpand !== isExpanded;
|
|
29
|
-
/**
|
|
30
|
-
* Only mark as interacted if:
|
|
31
|
-
* 1. This is not the first update we've received with a defined value
|
|
32
|
-
* 2. The state is actually changing (prevents redundant updates from enabling animations)
|
|
33
|
-
*/
|
|
34
|
-
if (this.hasReceivedFirstUpdate && stateWillChange) {
|
|
35
|
-
this.hasInteracted = true;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Only count this as the first update if the group value is defined.
|
|
39
|
-
* This prevents the initial undefined value from the group's componentDidLoad
|
|
40
|
-
* from being treated as the first real update.
|
|
41
|
-
*/
|
|
42
|
-
if (value !== undefined) {
|
|
43
|
-
this.hasReceivedFirstUpdate = true;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
this.updateState();
|
|
47
|
-
};
|
|
48
|
-
this.state = 1 /* AccordionState.Collapsed */;
|
|
49
|
-
this.isNext = false;
|
|
50
|
-
this.isPrevious = false;
|
|
51
|
-
/**
|
|
52
|
-
* Tracks whether a user-initiated interaction has occurred.
|
|
53
|
-
* Animations are disabled until the first interaction happens.
|
|
54
|
-
* This prevents the accordion from animating when it's programmatically
|
|
55
|
-
* set to an expanded or collapsed state on initial load.
|
|
56
|
-
*/
|
|
57
|
-
this.hasInteracted = false;
|
|
58
|
-
/**
|
|
59
|
-
* Tracks if this accordion has ever been expanded.
|
|
60
|
-
* Used to prevent the first expansion from animating.
|
|
61
|
-
*/
|
|
62
|
-
this.hasEverBeenExpanded = false;
|
|
63
|
-
/**
|
|
64
|
-
* Tracks if this accordion has received its first update from the group.
|
|
65
|
-
* Used to distinguish initial programmatic sets from user interactions.
|
|
66
|
-
*/
|
|
67
|
-
this.hasReceivedFirstUpdate = false;
|
|
68
|
-
/**
|
|
69
|
-
* The value of the accordion. Defaults to an autogenerated
|
|
70
|
-
* value.
|
|
71
|
-
*/
|
|
72
|
-
this.value = `ion-accordion-${accordionIds++}`;
|
|
73
|
-
/**
|
|
74
|
-
* If `true`, the accordion cannot be interacted with.
|
|
75
|
-
*/
|
|
76
|
-
this.disabled = false;
|
|
77
|
-
/**
|
|
78
|
-
* If `true`, the accordion cannot be interacted with,
|
|
79
|
-
* but does not alter the opacity.
|
|
80
|
-
*/
|
|
81
|
-
this.readonly = false;
|
|
82
|
-
/**
|
|
83
|
-
* The toggle icon to use. This icon will be
|
|
84
|
-
* rotated when the accordion is expanded
|
|
85
|
-
* or collapsed.
|
|
86
|
-
*/
|
|
87
|
-
this.toggleIcon = chevronDown;
|
|
17
|
+
}
|
|
18
|
+
accordionGroupEl;
|
|
19
|
+
accordionGroupUpdateHandler = () => {
|
|
88
20
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
21
|
+
* Determine if this update will cause an actual state change.
|
|
22
|
+
* We only want to mark as "interacted" if the state is changing.
|
|
91
23
|
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
* For a11y purposes, we make
|
|
100
|
-
* the ion-item a button so users
|
|
101
|
-
* can tab to it and use keyboard
|
|
102
|
-
* navigation to get around.
|
|
103
|
-
*/
|
|
104
|
-
ionItem.button = true;
|
|
105
|
-
ionItem.detail = false;
|
|
106
|
-
/**
|
|
107
|
-
* By default, the lines in an
|
|
108
|
-
* item should be full here, but
|
|
109
|
-
* only do that if a user has
|
|
110
|
-
* not explicitly overridden them
|
|
111
|
-
*/
|
|
112
|
-
if (ionItem.lines === undefined) {
|
|
113
|
-
ionItem.lines = 'full';
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
this.getSlottedHeaderIonItem = () => {
|
|
117
|
-
const { headerEl } = this;
|
|
118
|
-
if (!headerEl) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get the first ion-item
|
|
123
|
-
* slotted in the header slot
|
|
124
|
-
*/
|
|
125
|
-
const slot = headerEl.querySelector('slot');
|
|
126
|
-
if (!slot) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
// This is not defined in unit tests
|
|
130
|
-
if (slot.assignedElements === undefined)
|
|
131
|
-
return;
|
|
132
|
-
return slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');
|
|
133
|
-
};
|
|
134
|
-
this.setAria = (expanded = false) => {
|
|
135
|
-
const ionItem = this.getSlottedHeaderIonItem();
|
|
136
|
-
if (!ionItem) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get the native <button> element inside of
|
|
141
|
-
* ion-item because that is what will be focused
|
|
142
|
-
*/
|
|
143
|
-
const root = getElementRoot(ionItem);
|
|
144
|
-
const button = root.querySelector('button');
|
|
145
|
-
if (!button) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
button.setAttribute('aria-expanded', `${expanded}`);
|
|
149
|
-
};
|
|
150
|
-
this.slotToggleIcon = () => {
|
|
151
|
-
const ionItem = this.getSlottedHeaderIonItem();
|
|
152
|
-
if (!ionItem) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
const { toggleIconSlot, toggleIcon } = this;
|
|
156
|
-
/**
|
|
157
|
-
* Check if there already is a toggle icon.
|
|
158
|
-
* If so, do not add another one.
|
|
159
|
-
*/
|
|
160
|
-
const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');
|
|
161
|
-
if (existingToggleIcon) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
const iconEl = document.createElement('ion-icon');
|
|
165
|
-
iconEl.slot = toggleIconSlot;
|
|
166
|
-
iconEl.lazy = false;
|
|
167
|
-
iconEl.classList.add('ion-accordion-toggle-icon');
|
|
168
|
-
iconEl.icon = toggleIcon;
|
|
169
|
-
iconEl.setAttribute('aria-hidden', 'true');
|
|
170
|
-
ionItem.appendChild(iconEl);
|
|
171
|
-
};
|
|
172
|
-
this.expandAccordion = () => {
|
|
173
|
-
const { contentEl, contentElWrapper } = this;
|
|
174
|
-
/**
|
|
175
|
-
* If the content elements aren't available yet, just set the state.
|
|
176
|
-
* This happens on initial render before the DOM is ready.
|
|
177
|
-
*/
|
|
178
|
-
if (contentEl === undefined || contentElWrapper === undefined) {
|
|
179
|
-
this.state = 4 /* AccordionState.Expanded */;
|
|
180
|
-
this.hasEverBeenExpanded = true;
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
if (this.state === 4 /* AccordionState.Expanded */) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
if (this.currentRaf !== undefined) {
|
|
187
|
-
cancelAnimationFrame(this.currentRaf);
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Mark that this accordion has been expanded at least once.
|
|
191
|
-
* This allows subsequent expansions to animate.
|
|
192
|
-
*/
|
|
193
|
-
this.hasEverBeenExpanded = true;
|
|
194
|
-
if (this.shouldAnimate()) {
|
|
195
|
-
raf(() => {
|
|
196
|
-
this.state = 8 /* AccordionState.Expanding */;
|
|
197
|
-
this.currentRaf = raf(async () => {
|
|
198
|
-
const contentHeight = contentElWrapper.offsetHeight;
|
|
199
|
-
const waitForTransition = transitionEndAsync(contentEl, 2000);
|
|
200
|
-
contentEl.style.setProperty('max-height', `${contentHeight}px`);
|
|
201
|
-
await waitForTransition;
|
|
202
|
-
this.state = 4 /* AccordionState.Expanded */;
|
|
203
|
-
contentEl.style.removeProperty('max-height');
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
this.state = 4 /* AccordionState.Expanded */;
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
this.collapseAccordion = () => {
|
|
212
|
-
const { contentEl } = this;
|
|
24
|
+
const accordionGroup = this.accordionGroupEl;
|
|
25
|
+
if (accordionGroup) {
|
|
26
|
+
const value = accordionGroup.value;
|
|
27
|
+
const accordionValue = this.value;
|
|
28
|
+
const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
|
|
29
|
+
const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
|
|
30
|
+
const stateWillChange = shouldExpand !== isExpanded;
|
|
213
31
|
/**
|
|
214
|
-
*
|
|
215
|
-
* This
|
|
32
|
+
* Only mark as interacted if:
|
|
33
|
+
* 1. This is not the first update we've received with a defined value
|
|
34
|
+
* 2. The state is actually changing (prevents redundant updates from enabling animations)
|
|
216
35
|
*/
|
|
217
|
-
if (
|
|
218
|
-
this.
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
if (this.state === 1 /* AccordionState.Collapsed */) {
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
if (this.currentRaf !== undefined) {
|
|
225
|
-
cancelAnimationFrame(this.currentRaf);
|
|
36
|
+
if (this.hasReceivedFirstUpdate && stateWillChange) {
|
|
37
|
+
this.hasInteracted = true;
|
|
226
38
|
}
|
|
227
|
-
if (this.shouldAnimate()) {
|
|
228
|
-
this.currentRaf = raf(async () => {
|
|
229
|
-
const contentHeight = contentEl.offsetHeight;
|
|
230
|
-
contentEl.style.setProperty('max-height', `${contentHeight}px`);
|
|
231
|
-
raf(async () => {
|
|
232
|
-
const waitForTransition = transitionEndAsync(contentEl, 2000);
|
|
233
|
-
this.state = 2 /* AccordionState.Collapsing */;
|
|
234
|
-
await waitForTransition;
|
|
235
|
-
this.state = 1 /* AccordionState.Collapsed */;
|
|
236
|
-
contentEl.style.removeProperty('max-height');
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
this.state = 1 /* AccordionState.Collapsed */;
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
/**
|
|
245
|
-
* Helper function to determine if
|
|
246
|
-
* something should animate.
|
|
247
|
-
* If prefers-reduced-motion is set
|
|
248
|
-
* then we should not animate, regardless
|
|
249
|
-
* of what is set in the config.
|
|
250
|
-
*/
|
|
251
|
-
this.shouldAnimate = () => {
|
|
252
39
|
/**
|
|
253
|
-
*
|
|
254
|
-
* This prevents
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
* Additionally, don't animate the very first expansion even if
|
|
258
|
-
* hasInteracted is true. This handles edge cases like React StrictMode
|
|
259
|
-
* where effects run twice and might incorrectly mark as interacted.
|
|
40
|
+
* Only count this as the first update if the group value is defined.
|
|
41
|
+
* This prevents the initial undefined value from the group's componentDidLoad
|
|
42
|
+
* from being treated as the first real update.
|
|
260
43
|
*/
|
|
261
|
-
if (
|
|
262
|
-
|
|
263
|
-
}
|
|
264
|
-
if (typeof window === 'undefined') {
|
|
265
|
-
return false;
|
|
266
|
-
}
|
|
267
|
-
const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
268
|
-
if (prefersReducedMotion) {
|
|
269
|
-
return false;
|
|
270
|
-
}
|
|
271
|
-
const animated = config.get('animated', true);
|
|
272
|
-
if (!animated) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
if (this.accordionGroupEl && !this.accordionGroupEl.animated) {
|
|
276
|
-
return false;
|
|
277
|
-
}
|
|
278
|
-
return true;
|
|
279
|
-
};
|
|
280
|
-
this.updateState = async () => {
|
|
281
|
-
const accordionGroup = this.accordionGroupEl;
|
|
282
|
-
const accordionValue = this.value;
|
|
283
|
-
if (!accordionGroup) {
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
const value = accordionGroup.value;
|
|
287
|
-
const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
|
|
288
|
-
if (shouldExpand) {
|
|
289
|
-
this.expandAccordion();
|
|
290
|
-
this.isNext = this.isPrevious = false;
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
this.collapseAccordion();
|
|
294
|
-
/**
|
|
295
|
-
* When using popout or inset,
|
|
296
|
-
* the collapsed accordion items
|
|
297
|
-
* may need additional border radius
|
|
298
|
-
* applied. Check to see if the
|
|
299
|
-
* next or previous accordion is selected.
|
|
300
|
-
*/
|
|
301
|
-
const nextAccordion = this.getNextSibling();
|
|
302
|
-
const nextAccordionValue = nextAccordion === null || nextAccordion === void 0 ? void 0 : nextAccordion.value;
|
|
303
|
-
if (nextAccordionValue !== undefined) {
|
|
304
|
-
this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;
|
|
305
|
-
}
|
|
306
|
-
const previousAccordion = this.getPreviousSibling();
|
|
307
|
-
const previousAccordionValue = previousAccordion === null || previousAccordion === void 0 ? void 0 : previousAccordion.value;
|
|
308
|
-
if (previousAccordionValue !== undefined) {
|
|
309
|
-
this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
this.getNextSibling = () => {
|
|
314
|
-
if (!this.el) {
|
|
315
|
-
return;
|
|
44
|
+
if (value !== undefined) {
|
|
45
|
+
this.hasReceivedFirstUpdate = true;
|
|
316
46
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
47
|
+
}
|
|
48
|
+
this.updateState();
|
|
49
|
+
};
|
|
50
|
+
contentEl;
|
|
51
|
+
contentElWrapper;
|
|
52
|
+
headerEl;
|
|
53
|
+
currentRaf;
|
|
54
|
+
get el() { return getElement(this); }
|
|
55
|
+
state = 1 /* AccordionState.Collapsed */;
|
|
56
|
+
isNext = false;
|
|
57
|
+
isPrevious = false;
|
|
58
|
+
/**
|
|
59
|
+
* Tracks whether a user-initiated interaction has occurred.
|
|
60
|
+
* Animations are disabled until the first interaction happens.
|
|
61
|
+
* This prevents the accordion from animating when it's programmatically
|
|
62
|
+
* set to an expanded or collapsed state on initial load.
|
|
63
|
+
*/
|
|
64
|
+
hasInteracted = false;
|
|
65
|
+
/**
|
|
66
|
+
* Tracks if this accordion has ever been expanded.
|
|
67
|
+
* Used to prevent the first expansion from animating.
|
|
68
|
+
*/
|
|
69
|
+
hasEverBeenExpanded = false;
|
|
70
|
+
/**
|
|
71
|
+
* Tracks if this accordion has received its first update from the group.
|
|
72
|
+
* Used to distinguish initial programmatic sets from user interactions.
|
|
73
|
+
*/
|
|
74
|
+
hasReceivedFirstUpdate = false;
|
|
75
|
+
/**
|
|
76
|
+
* The value of the accordion. Defaults to an autogenerated
|
|
77
|
+
* value.
|
|
78
|
+
*/
|
|
79
|
+
value = `ion-accordion-${accordionIds++}`;
|
|
334
80
|
valueChanged() {
|
|
335
81
|
this.updateState();
|
|
336
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* If `true`, the accordion cannot be interacted with.
|
|
85
|
+
*/
|
|
86
|
+
disabled = false;
|
|
87
|
+
/**
|
|
88
|
+
* If `true`, the accordion cannot be interacted with,
|
|
89
|
+
* but does not alter the opacity.
|
|
90
|
+
*/
|
|
91
|
+
readonly = false;
|
|
92
|
+
/**
|
|
93
|
+
* The toggle icon to use. This icon will be
|
|
94
|
+
* rotated when the accordion is expanded
|
|
95
|
+
* or collapsed.
|
|
96
|
+
*/
|
|
97
|
+
toggleIcon = chevronDown;
|
|
98
|
+
/**
|
|
99
|
+
* The slot inside of `ion-item` to
|
|
100
|
+
* place the toggle icon. Defaults to `"end"`.
|
|
101
|
+
*/
|
|
102
|
+
toggleIconSlot = 'end';
|
|
337
103
|
connectedCallback() {
|
|
338
|
-
|
|
339
|
-
const accordionGroupEl = (this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group'));
|
|
104
|
+
const accordionGroupEl = (this.accordionGroupEl = this.el?.closest('ion-accordion-group'));
|
|
340
105
|
if (accordionGroupEl) {
|
|
341
106
|
this.updateState();
|
|
342
107
|
addEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
|
|
@@ -365,6 +130,246 @@ const Accordion = class {
|
|
|
365
130
|
this.setAria(expanded);
|
|
366
131
|
});
|
|
367
132
|
}
|
|
133
|
+
setItemDefaults = () => {
|
|
134
|
+
const ionItem = this.getSlottedHeaderIonItem();
|
|
135
|
+
if (!ionItem) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* For a11y purposes, we make
|
|
140
|
+
* the ion-item a button so users
|
|
141
|
+
* can tab to it and use keyboard
|
|
142
|
+
* navigation to get around.
|
|
143
|
+
*/
|
|
144
|
+
ionItem.button = true;
|
|
145
|
+
ionItem.detail = false;
|
|
146
|
+
/**
|
|
147
|
+
* By default, the lines in an
|
|
148
|
+
* item should be full here, but
|
|
149
|
+
* only do that if a user has
|
|
150
|
+
* not explicitly overridden them
|
|
151
|
+
*/
|
|
152
|
+
if (ionItem.lines === undefined) {
|
|
153
|
+
ionItem.lines = 'full';
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
getSlottedHeaderIonItem = () => {
|
|
157
|
+
const { headerEl } = this;
|
|
158
|
+
if (!headerEl) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get the first ion-item
|
|
163
|
+
* slotted in the header slot
|
|
164
|
+
*/
|
|
165
|
+
const slot = headerEl.querySelector('slot');
|
|
166
|
+
if (!slot) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
// This is not defined in unit tests
|
|
170
|
+
if (slot.assignedElements === undefined)
|
|
171
|
+
return;
|
|
172
|
+
return slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');
|
|
173
|
+
};
|
|
174
|
+
setAria = (expanded = false) => {
|
|
175
|
+
const ionItem = this.getSlottedHeaderIonItem();
|
|
176
|
+
if (!ionItem) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the native <button> element inside of
|
|
181
|
+
* ion-item because that is what will be focused
|
|
182
|
+
*/
|
|
183
|
+
const root = getElementRoot(ionItem);
|
|
184
|
+
const button = root.querySelector('button');
|
|
185
|
+
if (!button) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
button.setAttribute('aria-expanded', `${expanded}`);
|
|
189
|
+
};
|
|
190
|
+
slotToggleIcon = () => {
|
|
191
|
+
const ionItem = this.getSlottedHeaderIonItem();
|
|
192
|
+
if (!ionItem) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const { toggleIconSlot, toggleIcon } = this;
|
|
196
|
+
/**
|
|
197
|
+
* Check if there already is a toggle icon.
|
|
198
|
+
* If so, do not add another one.
|
|
199
|
+
*/
|
|
200
|
+
const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');
|
|
201
|
+
if (existingToggleIcon) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const iconEl = document.createElement('ion-icon');
|
|
205
|
+
iconEl.slot = toggleIconSlot;
|
|
206
|
+
iconEl.lazy = false;
|
|
207
|
+
iconEl.classList.add('ion-accordion-toggle-icon');
|
|
208
|
+
iconEl.icon = toggleIcon;
|
|
209
|
+
iconEl.setAttribute('aria-hidden', 'true');
|
|
210
|
+
ionItem.appendChild(iconEl);
|
|
211
|
+
};
|
|
212
|
+
expandAccordion = () => {
|
|
213
|
+
const { contentEl, contentElWrapper } = this;
|
|
214
|
+
/**
|
|
215
|
+
* If the content elements aren't available yet, just set the state.
|
|
216
|
+
* This happens on initial render before the DOM is ready.
|
|
217
|
+
*/
|
|
218
|
+
if (contentEl === undefined || contentElWrapper === undefined) {
|
|
219
|
+
this.state = 4 /* AccordionState.Expanded */;
|
|
220
|
+
this.hasEverBeenExpanded = true;
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (this.state === 4 /* AccordionState.Expanded */) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (this.currentRaf !== undefined) {
|
|
227
|
+
cancelAnimationFrame(this.currentRaf);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Mark that this accordion has been expanded at least once.
|
|
231
|
+
* This allows subsequent expansions to animate.
|
|
232
|
+
*/
|
|
233
|
+
this.hasEverBeenExpanded = true;
|
|
234
|
+
if (this.shouldAnimate()) {
|
|
235
|
+
raf(() => {
|
|
236
|
+
this.state = 8 /* AccordionState.Expanding */;
|
|
237
|
+
this.currentRaf = raf(async () => {
|
|
238
|
+
const contentHeight = contentElWrapper.offsetHeight;
|
|
239
|
+
const waitForTransition = transitionEndAsync(contentEl, 2000);
|
|
240
|
+
contentEl.style.setProperty('max-height', `${contentHeight}px`);
|
|
241
|
+
await waitForTransition;
|
|
242
|
+
this.state = 4 /* AccordionState.Expanded */;
|
|
243
|
+
contentEl.style.removeProperty('max-height');
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
this.state = 4 /* AccordionState.Expanded */;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
collapseAccordion = () => {
|
|
252
|
+
const { contentEl } = this;
|
|
253
|
+
/**
|
|
254
|
+
* If the content element isn't available yet, just set the state.
|
|
255
|
+
* This happens on initial render before the DOM is ready.
|
|
256
|
+
*/
|
|
257
|
+
if (contentEl === undefined) {
|
|
258
|
+
this.state = 1 /* AccordionState.Collapsed */;
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (this.state === 1 /* AccordionState.Collapsed */) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (this.currentRaf !== undefined) {
|
|
265
|
+
cancelAnimationFrame(this.currentRaf);
|
|
266
|
+
}
|
|
267
|
+
if (this.shouldAnimate()) {
|
|
268
|
+
this.currentRaf = raf(async () => {
|
|
269
|
+
const contentHeight = contentEl.offsetHeight;
|
|
270
|
+
contentEl.style.setProperty('max-height', `${contentHeight}px`);
|
|
271
|
+
raf(async () => {
|
|
272
|
+
const waitForTransition = transitionEndAsync(contentEl, 2000);
|
|
273
|
+
this.state = 2 /* AccordionState.Collapsing */;
|
|
274
|
+
await waitForTransition;
|
|
275
|
+
this.state = 1 /* AccordionState.Collapsed */;
|
|
276
|
+
contentEl.style.removeProperty('max-height');
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
this.state = 1 /* AccordionState.Collapsed */;
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Helper function to determine if
|
|
286
|
+
* something should animate.
|
|
287
|
+
* If prefers-reduced-motion is set
|
|
288
|
+
* then we should not animate, regardless
|
|
289
|
+
* of what is set in the config.
|
|
290
|
+
*/
|
|
291
|
+
shouldAnimate = () => {
|
|
292
|
+
/**
|
|
293
|
+
* Don't animate until after the first user interaction.
|
|
294
|
+
* This prevents animations on initial load when accordions
|
|
295
|
+
* start in an expanded or collapsed state programmatically.
|
|
296
|
+
*
|
|
297
|
+
* Additionally, don't animate the very first expansion even if
|
|
298
|
+
* hasInteracted is true. This handles edge cases like React StrictMode
|
|
299
|
+
* where effects run twice and might incorrectly mark as interacted.
|
|
300
|
+
*/
|
|
301
|
+
if (!this.hasInteracted || !this.hasEverBeenExpanded) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
if (typeof window === 'undefined') {
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
308
|
+
if (prefersReducedMotion) {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
const animated = config.get('animated', true);
|
|
312
|
+
if (!animated) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
if (this.accordionGroupEl && !this.accordionGroupEl.animated) {
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
return true;
|
|
319
|
+
};
|
|
320
|
+
updateState = async () => {
|
|
321
|
+
const accordionGroup = this.accordionGroupEl;
|
|
322
|
+
const accordionValue = this.value;
|
|
323
|
+
if (!accordionGroup) {
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const value = accordionGroup.value;
|
|
327
|
+
const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
|
|
328
|
+
if (shouldExpand) {
|
|
329
|
+
this.expandAccordion();
|
|
330
|
+
this.isNext = this.isPrevious = false;
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
this.collapseAccordion();
|
|
334
|
+
/**
|
|
335
|
+
* When using popout or inset,
|
|
336
|
+
* the collapsed accordion items
|
|
337
|
+
* may need additional border radius
|
|
338
|
+
* applied. Check to see if the
|
|
339
|
+
* next or previous accordion is selected.
|
|
340
|
+
*/
|
|
341
|
+
const nextAccordion = this.getNextSibling();
|
|
342
|
+
const nextAccordionValue = nextAccordion?.value;
|
|
343
|
+
if (nextAccordionValue !== undefined) {
|
|
344
|
+
this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;
|
|
345
|
+
}
|
|
346
|
+
const previousAccordion = this.getPreviousSibling();
|
|
347
|
+
const previousAccordionValue = previousAccordion?.value;
|
|
348
|
+
if (previousAccordionValue !== undefined) {
|
|
349
|
+
this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
getNextSibling = () => {
|
|
354
|
+
if (!this.el) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
const nextSibling = this.el.nextElementSibling;
|
|
358
|
+
if (nextSibling?.tagName !== 'ION-ACCORDION') {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
return nextSibling;
|
|
362
|
+
};
|
|
363
|
+
getPreviousSibling = () => {
|
|
364
|
+
if (!this.el) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
const previousSibling = this.el.previousElementSibling;
|
|
368
|
+
if (previousSibling?.tagName !== 'ION-ACCORDION') {
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
return previousSibling;
|
|
372
|
+
};
|
|
368
373
|
toggleExpanded() {
|
|
369
374
|
const { accordionGroupEl, disabled, readonly, value, state } = this;
|
|
370
375
|
if (disabled || readonly)
|
|
@@ -408,7 +413,6 @@ const Accordion = class {
|
|
|
408
413
|
}, tabindex: disabled ? '-1' : undefined }, h("div", { key: 'f76bc02347639b41c9a5be8a9488a8be8559cba7', onClick: () => this.toggleExpanded(), id: "header", part: headerPart, "aria-controls": "content", ref: (headerEl) => (this.headerEl = headerEl) }, h("slot", { key: 'e01744bf0af3200239e82c60c632ed36295db2da', name: "header" })), h("div", { key: 'c613345a7e244ee361f76ff4ebed139d2a1b9572', id: "content", part: contentPart, role: "region", "aria-labelledby": "header", ref: (contentEl) => (this.contentEl = contentEl) }, h("div", { key: '943b65d9a129759b4c213974ae5ed777b5f6166e', id: "content-wrapper", ref: (contentElWrapper) => (this.contentElWrapper = contentElWrapper) }, h("slot", { key: 'b0df520dad9d5557df63a35f8206ada4a765d238', name: "content" })))));
|
|
409
414
|
}
|
|
410
415
|
static get delegatesFocus() { return true; }
|
|
411
|
-
get el() { return getElement(this); }
|
|
412
416
|
static get watchers() { return {
|
|
413
417
|
"value": [{
|
|
414
418
|
"valueChanged": 0
|
|
@@ -430,28 +434,53 @@ const AccordionGroup = class {
|
|
|
430
434
|
registerInstance(this, hostRef);
|
|
431
435
|
this.ionChange = createEvent(this, "ionChange", 7);
|
|
432
436
|
this.ionValueChange = createEvent(this, "ionValueChange", 7);
|
|
433
|
-
/**
|
|
434
|
-
* If `true`, all accordions inside of the
|
|
435
|
-
* accordion group will animate when expanding
|
|
436
|
-
* or collapsing.
|
|
437
|
-
*/
|
|
438
|
-
this.animated = true;
|
|
439
|
-
/**
|
|
440
|
-
* If `true`, the accordion group cannot be interacted with.
|
|
441
|
-
*/
|
|
442
|
-
this.disabled = false;
|
|
443
|
-
/**
|
|
444
|
-
* If `true`, the accordion group cannot be interacted with,
|
|
445
|
-
* but does not alter the opacity.
|
|
446
|
-
*/
|
|
447
|
-
this.readonly = false;
|
|
448
|
-
/**
|
|
449
|
-
* Describes the expansion behavior for each accordion.
|
|
450
|
-
* Possible values are `"compact"` and `"inset"`.
|
|
451
|
-
* Defaults to `"compact"`.
|
|
452
|
-
*/
|
|
453
|
-
this.expand = 'compact';
|
|
454
437
|
}
|
|
438
|
+
get el() { return getElement(this); }
|
|
439
|
+
/**
|
|
440
|
+
* If `true`, all accordions inside of the
|
|
441
|
+
* accordion group will animate when expanding
|
|
442
|
+
* or collapsing.
|
|
443
|
+
*/
|
|
444
|
+
animated = true;
|
|
445
|
+
/**
|
|
446
|
+
* If `true`, the accordion group can have multiple
|
|
447
|
+
* accordion components expanded at the same time.
|
|
448
|
+
*/
|
|
449
|
+
multiple;
|
|
450
|
+
/**
|
|
451
|
+
* The value of the accordion group. This controls which
|
|
452
|
+
* accordions are expanded.
|
|
453
|
+
* This should be an array of strings only when `multiple="true"`
|
|
454
|
+
*/
|
|
455
|
+
value;
|
|
456
|
+
/**
|
|
457
|
+
* If `true`, the accordion group cannot be interacted with.
|
|
458
|
+
*/
|
|
459
|
+
disabled = false;
|
|
460
|
+
/**
|
|
461
|
+
* If `true`, the accordion group cannot be interacted with,
|
|
462
|
+
* but does not alter the opacity.
|
|
463
|
+
*/
|
|
464
|
+
readonly = false;
|
|
465
|
+
/**
|
|
466
|
+
* Describes the expansion behavior for each accordion.
|
|
467
|
+
* Possible values are `"compact"` and `"inset"`.
|
|
468
|
+
* Defaults to `"compact"`.
|
|
469
|
+
*/
|
|
470
|
+
expand = 'compact';
|
|
471
|
+
/**
|
|
472
|
+
* Emitted when the value property has changed as a result of a user action such as a click.
|
|
473
|
+
*
|
|
474
|
+
* This event will not emit when programmatically setting the `value` property.
|
|
475
|
+
*/
|
|
476
|
+
ionChange;
|
|
477
|
+
/**
|
|
478
|
+
* Emitted when the value property has changed.
|
|
479
|
+
* This is used to ensure that ion-accordion can respond
|
|
480
|
+
* to any value property changes.
|
|
481
|
+
* @internal
|
|
482
|
+
*/
|
|
483
|
+
ionValueChange;
|
|
455
484
|
valueChanged() {
|
|
456
485
|
const { value, multiple } = this;
|
|
457
486
|
if (!multiple && Array.isArray(value)) {
|
|
@@ -584,7 +613,7 @@ const AccordionGroup = class {
|
|
|
584
613
|
* to the array.
|
|
585
614
|
*/
|
|
586
615
|
if (multiple) {
|
|
587
|
-
const groupValue = value
|
|
616
|
+
const groupValue = value ?? [];
|
|
588
617
|
const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];
|
|
589
618
|
const valueExists = processedValue.find((v) => v === accordionValue);
|
|
590
619
|
if (valueExists === undefined && accordionValue !== undefined) {
|
|
@@ -601,7 +630,7 @@ const AccordionGroup = class {
|
|
|
601
630
|
* out of the values array or unset the value.
|
|
602
631
|
*/
|
|
603
632
|
if (multiple) {
|
|
604
|
-
const groupValue = value
|
|
633
|
+
const groupValue = value ?? [];
|
|
605
634
|
const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];
|
|
606
635
|
this.setValue(processedValue.filter((v) => v !== accordionValue));
|
|
607
636
|
}
|
|
@@ -640,7 +669,6 @@ const AccordionGroup = class {
|
|
|
640
669
|
[`accordion-group-expand-${expand}`]: true,
|
|
641
670
|
}, role: "presentation" }, h("slot", { key: 'e6b8954b686d1fbb4fc92adb07fddc97a24b0a31' })));
|
|
642
671
|
}
|
|
643
|
-
get el() { return getElement(this); }
|
|
644
672
|
static get watchers() { return {
|
|
645
673
|
"value": [{
|
|
646
674
|
"valueChanged": 0
|