@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,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance, c as createEvent, f as printIonWarning, h, d as Host
|
|
5
|
-
import { a as findClosestIonContent, d as disableContentScrollY, r as resetContentScrollY } from './index-
|
|
6
|
-
import { j as isSafeNumber,
|
|
7
|
-
import { i as isRTL } from './dir-
|
|
8
|
-
import { h as hostContext, c as createColorClasses } from './theme-
|
|
9
|
-
import { b as getIonMode } from './ionic-global-
|
|
4
|
+
import { r as registerInstance, c as createEvent, g as getElement, f as printIonWarning, h, d as Host } from './index-ChhhtsGZ.js';
|
|
5
|
+
import { a as findClosestIonContent, d as disableContentScrollY, r as resetContentScrollY } from './index-T0JxBI8V.js';
|
|
6
|
+
import { j as isSafeNumber, d as debounceEvent, e as clamp, i as inheritAriaAttributes, a as renderHiddenInput } from './helpers-CAGf8Wgp.js';
|
|
7
|
+
import { i as isRTL } from './dir-Dojwmvde.js';
|
|
8
|
+
import { h as hostContext, c as createColorClasses } from './theme-byZM6qHV.js';
|
|
9
|
+
import { b as getIonMode } from './ionic-global-BVB7BrLT.js';
|
|
10
10
|
|
|
11
11
|
function getDecimalPlaces(n) {
|
|
12
12
|
if (!isSafeNumber(n))
|
|
@@ -67,239 +67,82 @@ const Range = class {
|
|
|
67
67
|
this.ionBlur = createEvent(this, "ionBlur", 7);
|
|
68
68
|
this.ionKnobMoveStart = createEvent(this, "ionKnobMoveStart", 7);
|
|
69
69
|
this.ionKnobMoveEnd = createEvent(this, "ionKnobMoveEnd", 7);
|
|
70
|
-
this.rangeId = `ion-r-${rangeIds++}`;
|
|
71
|
-
this.didLoad = false;
|
|
72
|
-
this.noUpdate = false;
|
|
73
|
-
this.hasFocus = false;
|
|
74
|
-
this.inheritedAttributes = {};
|
|
75
|
-
this.contentEl = null;
|
|
76
|
-
this.initialContentScrollY = true;
|
|
77
|
-
/**
|
|
78
|
-
* Used to avoid setting the focused state on click or tap. The focused
|
|
79
|
-
* state is only set when the focus comes from the keyboard (e.g. Tab).
|
|
80
|
-
* This is set to true on pointer down (mouse/touch).
|
|
81
|
-
*/
|
|
82
|
-
this.focusFromPointer = false;
|
|
83
|
-
this.ratioA = 0;
|
|
84
|
-
this.ratioB = 0;
|
|
85
|
-
/**
|
|
86
|
-
* The name of the control, which is submitted with the form data.
|
|
87
|
-
*/
|
|
88
|
-
this.name = this.rangeId;
|
|
89
|
-
/**
|
|
90
|
-
* If `true`, the range shows two knobs and `value` is an object with `lower`
|
|
91
|
-
* and `upper` properties. If `false`, the range shows one knob and `value` is
|
|
92
|
-
* a number.
|
|
93
|
-
*/
|
|
94
|
-
this.dualKnobs = false;
|
|
95
|
-
/**
|
|
96
|
-
* Minimum integer value of the range.
|
|
97
|
-
*/
|
|
98
|
-
this.min = 0;
|
|
99
|
-
/**
|
|
100
|
-
* Maximum integer value of the range.
|
|
101
|
-
*/
|
|
102
|
-
this.max = 100;
|
|
103
|
-
/**
|
|
104
|
-
* If `true`, a pin with integer value is shown when the knob
|
|
105
|
-
* is pressed.
|
|
106
|
-
*/
|
|
107
|
-
this.pin = false;
|
|
108
|
-
/**
|
|
109
|
-
* A callback used to format the pin text.
|
|
110
|
-
* By default the pin text is set to `Math.round(value)`.
|
|
111
|
-
*
|
|
112
|
-
* See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
|
|
113
|
-
* if you need to access `this` from within the callback.
|
|
114
|
-
*/
|
|
115
|
-
this.pinFormatter = (value) => Math.round(value);
|
|
116
|
-
/**
|
|
117
|
-
* If `true`, the knob snaps to tick marks evenly spaced based
|
|
118
|
-
* on the step property value.
|
|
119
|
-
*/
|
|
120
|
-
this.snaps = false;
|
|
121
|
-
/**
|
|
122
|
-
* Specifies the value granularity.
|
|
123
|
-
*/
|
|
124
|
-
this.step = 1;
|
|
125
|
-
/**
|
|
126
|
-
* If `true`, tick marks are displayed based on the step value.
|
|
127
|
-
* Only applies when `snaps` is `true`.
|
|
128
|
-
*/
|
|
129
|
-
this.ticks = true;
|
|
130
|
-
/**
|
|
131
|
-
* If `true`, the user cannot interact with the range.
|
|
132
|
-
*/
|
|
133
|
-
this.disabled = false;
|
|
134
|
-
/**
|
|
135
|
-
* the value of the range.
|
|
136
|
-
*/
|
|
137
|
-
this.value = 0;
|
|
138
|
-
/**
|
|
139
|
-
* Compares two RangeValue inputs to determine if they are different.
|
|
140
|
-
*
|
|
141
|
-
* @param newVal - The new value.
|
|
142
|
-
* @param oldVal - The old value.
|
|
143
|
-
* @returns `true` if the values are different, `false` otherwise.
|
|
144
|
-
*/
|
|
145
|
-
this.compareValues = (newVal, oldVal) => {
|
|
146
|
-
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
147
|
-
return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
|
|
148
|
-
}
|
|
149
|
-
return newVal !== oldVal;
|
|
150
|
-
};
|
|
151
|
-
this.clampBounds = (value) => {
|
|
152
|
-
return clamp(this.min, value, this.max);
|
|
153
|
-
};
|
|
154
|
-
this.ensureValueInBounds = (value) => {
|
|
155
|
-
if (this.dualKnobs) {
|
|
156
|
-
return {
|
|
157
|
-
lower: this.clampBounds(value.lower),
|
|
158
|
-
upper: this.clampBounds(value.upper),
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
return this.clampBounds(value);
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
/**
|
|
166
|
-
* Where to place the label relative to the range.
|
|
167
|
-
* `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
|
|
168
|
-
* `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
|
|
169
|
-
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
170
|
-
* `"stacked"`: The label will appear above the range regardless of the direction.
|
|
171
|
-
*/
|
|
172
|
-
this.labelPlacement = 'start';
|
|
173
|
-
this.setupGesture = async () => {
|
|
174
|
-
const rangeSlider = this.rangeSlider;
|
|
175
|
-
if (rangeSlider) {
|
|
176
|
-
this.gesture = (await import('./index-Bck1OwMs.js')).createGesture({
|
|
177
|
-
el: rangeSlider,
|
|
178
|
-
gestureName: 'range',
|
|
179
|
-
gesturePriority: 100,
|
|
180
|
-
/**
|
|
181
|
-
* Provide a threshold since the drag movement
|
|
182
|
-
* might be a user scrolling the view.
|
|
183
|
-
* If this is true, then the range
|
|
184
|
-
* should not move.
|
|
185
|
-
*/
|
|
186
|
-
threshold: 10,
|
|
187
|
-
onStart: () => this.onStart(),
|
|
188
|
-
onMove: (ev) => this.onMove(ev),
|
|
189
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
190
|
-
});
|
|
191
|
-
this.gesture.enable(!this.disabled);
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
/**
|
|
195
|
-
* Observes the knob handles for the ion-activated class and syncs
|
|
196
|
-
* activatedKnob so the activated part is correctly set on the handle,
|
|
197
|
-
* knob, and pin.
|
|
198
|
-
*/
|
|
199
|
-
this.setupActivatedObserver = () => {
|
|
200
|
-
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
201
|
-
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
202
|
-
const syncActivated = () => {
|
|
203
|
-
this.activatedKnob = (knobHandleA === null || knobHandleA === void 0 ? void 0 : knobHandleA.classList.contains('ion-activated'))
|
|
204
|
-
? 'A'
|
|
205
|
-
: (knobHandleB === null || knobHandleB === void 0 ? void 0 : knobHandleB.classList.contains('ion-activated'))
|
|
206
|
-
? 'B'
|
|
207
|
-
: undefined;
|
|
208
|
-
};
|
|
209
|
-
if (typeof MutationObserver !== 'undefined') {
|
|
210
|
-
this.activatedObserver = new MutationObserver(syncActivated);
|
|
211
|
-
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
212
|
-
attributes: true,
|
|
213
|
-
attributeFilter: ['class'],
|
|
214
|
-
subtree: true,
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
syncActivated();
|
|
218
|
-
};
|
|
219
|
-
this.handleKeyboard = (knob, isIncrease) => {
|
|
220
|
-
const { ensureValueInBounds } = this;
|
|
221
|
-
let step = this.step;
|
|
222
|
-
step = step > 0 ? step : 1;
|
|
223
|
-
step = step / (this.max - this.min);
|
|
224
|
-
if (!isIncrease) {
|
|
225
|
-
step *= -1;
|
|
226
|
-
}
|
|
227
|
-
if (knob === 'A') {
|
|
228
|
-
this.ratioA = clamp(0, this.ratioA + step, 1);
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
this.ratioB = clamp(0, this.ratioB + step, 1);
|
|
232
|
-
}
|
|
233
|
-
this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
|
|
234
|
-
this.updateValue();
|
|
235
|
-
this.emitValueChange();
|
|
236
|
-
this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
|
|
237
|
-
};
|
|
238
|
-
this.onBlur = () => {
|
|
239
|
-
if (this.hasFocus) {
|
|
240
|
-
this.hasFocus = false;
|
|
241
|
-
this.focusedKnob = undefined;
|
|
242
|
-
this.ionBlur.emit();
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
this.onFocus = () => {
|
|
246
|
-
if (!this.hasFocus) {
|
|
247
|
-
this.hasFocus = true;
|
|
248
|
-
this.ionFocus.emit();
|
|
249
|
-
}
|
|
250
|
-
};
|
|
251
|
-
this.onKnobFocus = (knob) => {
|
|
252
|
-
// Clicking focuses the range which is needed for the keyboard,
|
|
253
|
-
// but we only want to add the ion-focused class when focused via Tab.
|
|
254
|
-
if (!this.focusFromPointer) {
|
|
255
|
-
this.focusedKnob = knob;
|
|
256
|
-
}
|
|
257
|
-
else {
|
|
258
|
-
this.focusFromPointer = false;
|
|
259
|
-
this.focusedKnob = undefined;
|
|
260
|
-
}
|
|
261
|
-
// If the knob was not already focused, emit the focus event
|
|
262
|
-
if (!this.hasFocus) {
|
|
263
|
-
this.hasFocus = true;
|
|
264
|
-
this.ionFocus.emit();
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
this.onKnobBlur = () => {
|
|
268
|
-
// Check if focus is moving to another knob within the same range
|
|
269
|
-
// by delaying the reset to allow the new focus to register
|
|
270
|
-
setTimeout(() => {
|
|
271
|
-
var _a;
|
|
272
|
-
const activeElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement;
|
|
273
|
-
const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
|
|
274
|
-
if (!isStillFocusedOnKnob) {
|
|
275
|
-
if (this.hasFocus) {
|
|
276
|
-
this.hasFocus = false;
|
|
277
|
-
this.focusedKnob = undefined;
|
|
278
|
-
this.ionBlur.emit();
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}, 0);
|
|
282
|
-
};
|
|
283
|
-
this.onKnobMouseEnter = (knob) => {
|
|
284
|
-
this.hoveredKnob = knob;
|
|
285
|
-
};
|
|
286
|
-
this.onKnobMouseLeave = () => {
|
|
287
|
-
this.hoveredKnob = undefined;
|
|
288
|
-
};
|
|
289
70
|
}
|
|
71
|
+
rangeId = `ion-r-${rangeIds++}`;
|
|
72
|
+
didLoad = false;
|
|
73
|
+
noUpdate = false;
|
|
74
|
+
rect;
|
|
75
|
+
hasFocus = false;
|
|
76
|
+
rangeSlider;
|
|
77
|
+
gesture;
|
|
78
|
+
inheritedAttributes = {};
|
|
79
|
+
contentEl = null;
|
|
80
|
+
initialContentScrollY = true;
|
|
81
|
+
originalIonInput;
|
|
82
|
+
/**
|
|
83
|
+
* Used to avoid setting the focused state on click or tap. The focused
|
|
84
|
+
* state is only set when the focus comes from the keyboard (e.g. Tab).
|
|
85
|
+
* This is set to true on pointer down (mouse/touch).
|
|
86
|
+
*/
|
|
87
|
+
focusFromPointer = false;
|
|
88
|
+
/**
|
|
89
|
+
* Observes class changes on the knob handles to keep the activatedKnob
|
|
90
|
+
* state in sync with the ion-activated class. This is necessary to
|
|
91
|
+
* determine which knob the user is dragging when using dual knobs and
|
|
92
|
+
* apply the activated part correctly.
|
|
93
|
+
*/
|
|
94
|
+
activatedObserver;
|
|
95
|
+
get el() { return getElement(this); }
|
|
96
|
+
ratioA = 0;
|
|
97
|
+
ratioB = 0;
|
|
98
|
+
activatedKnob;
|
|
99
|
+
focusedKnob;
|
|
100
|
+
hoveredKnob;
|
|
101
|
+
pressedKnob;
|
|
102
|
+
/**
|
|
103
|
+
* The color to use from your application's color palette.
|
|
104
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
105
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
106
|
+
*/
|
|
107
|
+
color;
|
|
108
|
+
/**
|
|
109
|
+
* How long, in milliseconds, to wait to trigger the
|
|
110
|
+
* `ionInput` event after each change in the range value.
|
|
111
|
+
*/
|
|
112
|
+
debounce;
|
|
290
113
|
debounceChanged() {
|
|
291
114
|
const { ionInput, debounce, originalIonInput } = this;
|
|
292
115
|
/**
|
|
293
116
|
* If debounce is undefined, we have to manually revert the ionInput emitter in case
|
|
294
117
|
* debounce used to be set to a number. Otherwise, the event would stay debounced.
|
|
295
118
|
*/
|
|
296
|
-
this.ionInput = debounce === undefined ? originalIonInput
|
|
119
|
+
this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : debounceEvent(ionInput, debounce);
|
|
297
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* The name of the control, which is submitted with the form data.
|
|
123
|
+
*/
|
|
124
|
+
name = this.rangeId;
|
|
125
|
+
/**
|
|
126
|
+
* The text to display as the control's label. Use this over the `label` slot if
|
|
127
|
+
* you only need plain text. The `label` property will take priority over the
|
|
128
|
+
* `label` slot if both are used.
|
|
129
|
+
*/
|
|
130
|
+
label;
|
|
131
|
+
/**
|
|
132
|
+
* If `true`, the range shows two knobs and `value` is an object with `lower`
|
|
133
|
+
* and `upper` properties. If `false`, the range shows one knob and `value` is
|
|
134
|
+
* a number.
|
|
135
|
+
*/
|
|
136
|
+
dualKnobs = false;
|
|
298
137
|
dualKnobsChanged() {
|
|
299
138
|
if (!this.noUpdate) {
|
|
300
139
|
this.updateRatio();
|
|
301
140
|
}
|
|
302
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Minimum integer value of the range.
|
|
144
|
+
*/
|
|
145
|
+
min = 0;
|
|
303
146
|
minChanged(newValue) {
|
|
304
147
|
if (!isSafeNumber(newValue)) {
|
|
305
148
|
this.min = 0;
|
|
@@ -308,6 +151,10 @@ const Range = class {
|
|
|
308
151
|
this.updateRatio();
|
|
309
152
|
}
|
|
310
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Maximum integer value of the range.
|
|
156
|
+
*/
|
|
157
|
+
max = 100;
|
|
311
158
|
maxChanged(newValue) {
|
|
312
159
|
if (!isSafeNumber(newValue)) {
|
|
313
160
|
this.max = 100;
|
|
@@ -316,11 +163,43 @@ const Range = class {
|
|
|
316
163
|
this.updateRatio();
|
|
317
164
|
}
|
|
318
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* If `true`, a pin with integer value is shown when the knob
|
|
168
|
+
* is pressed.
|
|
169
|
+
*/
|
|
170
|
+
pin = false;
|
|
171
|
+
/**
|
|
172
|
+
* A callback used to format the pin text.
|
|
173
|
+
* By default the pin text is set to `Math.round(value)`.
|
|
174
|
+
*
|
|
175
|
+
* See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
|
|
176
|
+
* if you need to access `this` from within the callback.
|
|
177
|
+
*/
|
|
178
|
+
pinFormatter = (value) => Math.round(value);
|
|
179
|
+
/**
|
|
180
|
+
* If `true`, the knob snaps to tick marks evenly spaced based
|
|
181
|
+
* on the step property value.
|
|
182
|
+
*/
|
|
183
|
+
snaps = false;
|
|
184
|
+
/**
|
|
185
|
+
* Specifies the value granularity.
|
|
186
|
+
*/
|
|
187
|
+
step = 1;
|
|
319
188
|
stepChanged(newValue) {
|
|
320
189
|
if (!isSafeNumber(newValue)) {
|
|
321
190
|
this.step = 1;
|
|
322
191
|
}
|
|
323
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* If `true`, tick marks are displayed based on the step value.
|
|
195
|
+
* Only applies when `snaps` is `true`.
|
|
196
|
+
*/
|
|
197
|
+
ticks = true;
|
|
198
|
+
/**
|
|
199
|
+
* The start position of the range active bar. This feature is only available with a single knob (dualKnobs="false").
|
|
200
|
+
* Valid values are greater than or equal to the min value and less than or equal to the max value.
|
|
201
|
+
*/
|
|
202
|
+
activeBarStart;
|
|
324
203
|
activeBarStartChanged() {
|
|
325
204
|
const { activeBarStart } = this;
|
|
326
205
|
if (activeBarStart !== undefined) {
|
|
@@ -334,11 +213,19 @@ const Range = class {
|
|
|
334
213
|
}
|
|
335
214
|
}
|
|
336
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* If `true`, the user cannot interact with the range.
|
|
218
|
+
*/
|
|
219
|
+
disabled = false;
|
|
337
220
|
disabledChanged() {
|
|
338
221
|
if (this.gesture) {
|
|
339
222
|
this.gesture.enable(!this.disabled);
|
|
340
223
|
}
|
|
341
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* the value of the range.
|
|
227
|
+
*/
|
|
228
|
+
value = 0;
|
|
342
229
|
valueChanged(newValue, oldValue) {
|
|
343
230
|
const valuesChanged = this.compareValues(newValue, oldValue);
|
|
344
231
|
if (valuesChanged) {
|
|
@@ -348,6 +235,120 @@ const Range = class {
|
|
|
348
235
|
this.updateRatio();
|
|
349
236
|
}
|
|
350
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Compares two RangeValue inputs to determine if they are different.
|
|
240
|
+
*
|
|
241
|
+
* @param newVal - The new value.
|
|
242
|
+
* @param oldVal - The old value.
|
|
243
|
+
* @returns `true` if the values are different, `false` otherwise.
|
|
244
|
+
*/
|
|
245
|
+
compareValues = (newVal, oldVal) => {
|
|
246
|
+
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
247
|
+
return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
|
|
248
|
+
}
|
|
249
|
+
return newVal !== oldVal;
|
|
250
|
+
};
|
|
251
|
+
clampBounds = (value) => {
|
|
252
|
+
return clamp(this.min, value, this.max);
|
|
253
|
+
};
|
|
254
|
+
ensureValueInBounds = (value) => {
|
|
255
|
+
if (this.dualKnobs) {
|
|
256
|
+
return {
|
|
257
|
+
lower: this.clampBounds(value.lower),
|
|
258
|
+
upper: this.clampBounds(value.upper),
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
return this.clampBounds(value);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
/**
|
|
266
|
+
* Where to place the label relative to the range.
|
|
267
|
+
* `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
|
|
268
|
+
* `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
|
|
269
|
+
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
270
|
+
* `"stacked"`: The label will appear above the range regardless of the direction.
|
|
271
|
+
*/
|
|
272
|
+
labelPlacement = 'start';
|
|
273
|
+
/**
|
|
274
|
+
* The `ionChange` event is fired for `<ion-range>` elements when the user
|
|
275
|
+
* modifies the element's value:
|
|
276
|
+
* - When the user releases the knob after dragging;
|
|
277
|
+
* - When the user moves the knob with keyboard arrows
|
|
278
|
+
*
|
|
279
|
+
* This event will not emit when programmatically setting the `value` property.
|
|
280
|
+
*/
|
|
281
|
+
ionChange;
|
|
282
|
+
/**
|
|
283
|
+
* The `ionInput` event is fired for `<ion-range>` elements when the value
|
|
284
|
+
* is modified. Unlike `ionChange`, `ionInput` is fired continuously
|
|
285
|
+
* while the user is dragging the knob.
|
|
286
|
+
*/
|
|
287
|
+
ionInput;
|
|
288
|
+
/**
|
|
289
|
+
* Emitted when the range has focus.
|
|
290
|
+
*/
|
|
291
|
+
ionFocus;
|
|
292
|
+
/**
|
|
293
|
+
* Emitted when the range loses focus.
|
|
294
|
+
*/
|
|
295
|
+
ionBlur;
|
|
296
|
+
/**
|
|
297
|
+
* Emitted when the user starts moving the range knob, whether through
|
|
298
|
+
* mouse drag, touch gesture, or keyboard interaction.
|
|
299
|
+
*/
|
|
300
|
+
ionKnobMoveStart;
|
|
301
|
+
/**
|
|
302
|
+
* Emitted when the user finishes moving the range knob, whether through
|
|
303
|
+
* mouse drag, touch gesture, or keyboard interaction.
|
|
304
|
+
*/
|
|
305
|
+
ionKnobMoveEnd;
|
|
306
|
+
setupGesture = async () => {
|
|
307
|
+
const rangeSlider = this.rangeSlider;
|
|
308
|
+
if (rangeSlider) {
|
|
309
|
+
this.gesture = (await import('./index-DcPaH5uL.js')).createGesture({
|
|
310
|
+
el: rangeSlider,
|
|
311
|
+
gestureName: 'range',
|
|
312
|
+
gesturePriority: 100,
|
|
313
|
+
/**
|
|
314
|
+
* Provide a threshold since the drag movement
|
|
315
|
+
* might be a user scrolling the view.
|
|
316
|
+
* If this is true, then the range
|
|
317
|
+
* should not move.
|
|
318
|
+
*/
|
|
319
|
+
threshold: 10,
|
|
320
|
+
onStart: () => this.onStart(),
|
|
321
|
+
onMove: (ev) => this.onMove(ev),
|
|
322
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
323
|
+
});
|
|
324
|
+
this.gesture.enable(!this.disabled);
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
/**
|
|
328
|
+
* Observes the knob handles for the ion-activated class and syncs
|
|
329
|
+
* activatedKnob so the activated part is correctly set on the handle,
|
|
330
|
+
* knob, and pin.
|
|
331
|
+
*/
|
|
332
|
+
setupActivatedObserver = () => {
|
|
333
|
+
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
334
|
+
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
335
|
+
const syncActivated = () => {
|
|
336
|
+
this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
|
|
337
|
+
? 'A'
|
|
338
|
+
: knobHandleB?.classList.contains('ion-activated')
|
|
339
|
+
? 'B'
|
|
340
|
+
: undefined;
|
|
341
|
+
};
|
|
342
|
+
if (typeof MutationObserver !== 'undefined') {
|
|
343
|
+
this.activatedObserver = new MutationObserver(syncActivated);
|
|
344
|
+
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
345
|
+
attributes: true,
|
|
346
|
+
attributeFilter: ['class'],
|
|
347
|
+
subtree: true,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
syncActivated();
|
|
351
|
+
};
|
|
351
352
|
componentWillLoad() {
|
|
352
353
|
/**
|
|
353
354
|
* If user has custom ID set then we should
|
|
@@ -371,7 +372,6 @@ const Range = class {
|
|
|
371
372
|
this.didLoad = true;
|
|
372
373
|
}
|
|
373
374
|
connectedCallback() {
|
|
374
|
-
var _a;
|
|
375
375
|
this.updateRatio();
|
|
376
376
|
this.debounceChanged();
|
|
377
377
|
this.disabledChanged();
|
|
@@ -387,7 +387,7 @@ const Range = class {
|
|
|
387
387
|
this.setupActivatedObserver();
|
|
388
388
|
}
|
|
389
389
|
const ionContent = findClosestIonContent(this.el);
|
|
390
|
-
this.contentEl =
|
|
390
|
+
this.contentEl = ionContent?.querySelector('.ion-content-scroll-host') ?? ionContent;
|
|
391
391
|
}
|
|
392
392
|
disconnectedCallback() {
|
|
393
393
|
if (this.gesture) {
|
|
@@ -399,9 +399,27 @@ const Range = class {
|
|
|
399
399
|
this.activatedObserver = undefined;
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
|
+
handleKeyboard = (knob, isIncrease) => {
|
|
403
|
+
const { ensureValueInBounds } = this;
|
|
404
|
+
let step = this.step;
|
|
405
|
+
step = step > 0 ? step : 1;
|
|
406
|
+
step = step / (this.max - this.min);
|
|
407
|
+
if (!isIncrease) {
|
|
408
|
+
step *= -1;
|
|
409
|
+
}
|
|
410
|
+
if (knob === 'A') {
|
|
411
|
+
this.ratioA = clamp(0, this.ratioA + step, 1);
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
this.ratioB = clamp(0, this.ratioB + step, 1);
|
|
415
|
+
}
|
|
416
|
+
this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
|
|
417
|
+
this.updateValue();
|
|
418
|
+
this.emitValueChange();
|
|
419
|
+
this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
|
|
420
|
+
};
|
|
402
421
|
getValue() {
|
|
403
|
-
|
|
404
|
-
const value = (_a = this.value) !== null && _a !== void 0 ? _a : 0;
|
|
422
|
+
const value = this.value ?? 0;
|
|
405
423
|
if (this.dualKnobs) {
|
|
406
424
|
if (typeof value === 'object') {
|
|
407
425
|
return value;
|
|
@@ -487,9 +505,8 @@ const Range = class {
|
|
|
487
505
|
* @param detail The details of the gesture or mouse event.
|
|
488
506
|
*/
|
|
489
507
|
onEnd(detail) {
|
|
490
|
-
var _a;
|
|
491
508
|
const { contentEl, initialContentScrollY } = this;
|
|
492
|
-
const currentX =
|
|
509
|
+
const currentX = detail.currentX ?? detail.clientX;
|
|
493
510
|
/**
|
|
494
511
|
* The `pressedKnob` can be undefined if the user never
|
|
495
512
|
* dragged the knob. They just tapped on the bar.
|
|
@@ -609,6 +626,56 @@ const Range = class {
|
|
|
609
626
|
};
|
|
610
627
|
this.noUpdate = false;
|
|
611
628
|
}
|
|
629
|
+
onBlur = () => {
|
|
630
|
+
if (this.hasFocus) {
|
|
631
|
+
this.hasFocus = false;
|
|
632
|
+
this.focusedKnob = undefined;
|
|
633
|
+
this.ionBlur.emit();
|
|
634
|
+
}
|
|
635
|
+
};
|
|
636
|
+
onFocus = () => {
|
|
637
|
+
if (!this.hasFocus) {
|
|
638
|
+
this.hasFocus = true;
|
|
639
|
+
this.ionFocus.emit();
|
|
640
|
+
}
|
|
641
|
+
};
|
|
642
|
+
onKnobFocus = (knob) => {
|
|
643
|
+
// Clicking focuses the range which is needed for the keyboard,
|
|
644
|
+
// but we only want to add the ion-focused class when focused via Tab.
|
|
645
|
+
if (!this.focusFromPointer) {
|
|
646
|
+
this.focusedKnob = knob;
|
|
647
|
+
}
|
|
648
|
+
else {
|
|
649
|
+
this.focusFromPointer = false;
|
|
650
|
+
this.focusedKnob = undefined;
|
|
651
|
+
}
|
|
652
|
+
// If the knob was not already focused, emit the focus event
|
|
653
|
+
if (!this.hasFocus) {
|
|
654
|
+
this.hasFocus = true;
|
|
655
|
+
this.ionFocus.emit();
|
|
656
|
+
}
|
|
657
|
+
};
|
|
658
|
+
onKnobBlur = () => {
|
|
659
|
+
// Check if focus is moving to another knob within the same range
|
|
660
|
+
// by delaying the reset to allow the new focus to register
|
|
661
|
+
setTimeout(() => {
|
|
662
|
+
const activeElement = this.el.shadowRoot?.activeElement;
|
|
663
|
+
const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
|
|
664
|
+
if (!isStillFocusedOnKnob) {
|
|
665
|
+
if (this.hasFocus) {
|
|
666
|
+
this.hasFocus = false;
|
|
667
|
+
this.focusedKnob = undefined;
|
|
668
|
+
this.ionBlur.emit();
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}, 0);
|
|
672
|
+
};
|
|
673
|
+
onKnobMouseEnter = (knob) => {
|
|
674
|
+
this.hoveredKnob = knob;
|
|
675
|
+
};
|
|
676
|
+
onKnobMouseLeave = () => {
|
|
677
|
+
this.hoveredKnob = undefined;
|
|
678
|
+
};
|
|
612
679
|
/**
|
|
613
680
|
* Returns true if content was passed to the "start" slot
|
|
614
681
|
*/
|
|
@@ -625,7 +692,6 @@ const Range = class {
|
|
|
625
692
|
return this.label !== undefined || this.el.querySelector('[slot="label"]') !== null;
|
|
626
693
|
}
|
|
627
694
|
renderRangeSlider() {
|
|
628
|
-
var _a;
|
|
629
695
|
const { min, max, step, handleKeyboard, activatedKnob, focusedKnob, hoveredKnob, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
|
|
630
696
|
let barStart = `${ratioLower * 100}%`;
|
|
631
697
|
let barEnd = `${100 - ratioUpper * 100}%`;
|
|
@@ -642,7 +708,7 @@ const Range = class {
|
|
|
642
708
|
* When the value is less than the activeBarStart or the min value,
|
|
643
709
|
* the knob will display at the start of the active bar.
|
|
644
710
|
*/
|
|
645
|
-
if (this.valA < (
|
|
711
|
+
if (this.valA < (this.activeBarStart ?? this.min)) {
|
|
646
712
|
/**
|
|
647
713
|
* Sets the bar positions relative to the upper and lower limits.
|
|
648
714
|
* Converts the ratio values into percentages, used as offsets for left/right styles.
|
|
@@ -790,7 +856,7 @@ const Range = class {
|
|
|
790
856
|
* Determine the name and position of the pressed knob to apply
|
|
791
857
|
* Host classes for styling.
|
|
792
858
|
*/
|
|
793
|
-
const pressedKnobName = dualKnobs ? pressedKnob
|
|
859
|
+
const pressedKnobName = dualKnobs ? pressedKnob?.toLowerCase() : undefined;
|
|
794
860
|
const pressedKnobPosition = dualKnobs && pressedKnob ? getKnobPosition(pressedKnob, this.ratioA, this.ratioB, dualKnobs) : undefined;
|
|
795
861
|
/**
|
|
796
862
|
* Determine if any knob is at the min or max value to
|
|
@@ -799,7 +865,7 @@ const Range = class {
|
|
|
799
865
|
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
800
866
|
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
801
867
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
802
|
-
return (h(Host, { key: '
|
|
868
|
+
return (h(Host, { key: '72f253ee1514b4c5874a6720c2f954fae7a7c4d4', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
|
|
803
869
|
[mode]: true,
|
|
804
870
|
'in-item': inItem,
|
|
805
871
|
'range-disabled': disabled,
|
|
@@ -813,12 +879,11 @@ const Range = class {
|
|
|
813
879
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
814
880
|
'range-value-min': valueAtMin,
|
|
815
881
|
'range-value-max': valueAtMax,
|
|
816
|
-
}) }, h("label", { key: '
|
|
882
|
+
}) }, h("label", { key: '9b96b83a6118ee2a79d8adbb0a58197470308179', class: "range-wrapper", id: "range-label" }, h("div", { key: 'c7b31a7c87c20857a26624bd94501df6420fceec', class: {
|
|
817
883
|
'label-text-wrapper': true,
|
|
818
884
|
'label-text-wrapper-hidden': !hasLabel,
|
|
819
|
-
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '
|
|
885
|
+
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '4ca15b9370097e140550489ff24979f3a959e65b', class: "native-wrapper" }, h("slot", { key: 'f110896c68741bad92239f98b6028cbe0ad5122f', name: "start" }), this.renderRangeSlider(), h("slot", { key: '5c4031c4403fa643ee2e11637b2420ddd8cbc4ce', name: "end" })))));
|
|
820
886
|
}
|
|
821
|
-
get el() { return getElement(this); }
|
|
822
887
|
static get watchers() { return {
|
|
823
888
|
"debounce": [{
|
|
824
889
|
"debounceChanged": 0
|