@ionic/core 8.8.18 → 8.8.19-dev.11786730389.1a1927bf
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-0Pyit076.js +4 -0
- package/components/{p-C_hpsif8.js → p-30_sZS2V.js} +1 -1
- package/components/p-83oP9gzn.js +4 -0
- package/components/p-8FN7p701.js +4 -0
- package/components/p-B-FxiyeI.js +4 -0
- package/components/p-B6dUPQXq.js +4 -0
- package/components/p-BMPN55of.js +4 -0
- package/components/p-BMS4t-kJ.js +4 -0
- package/components/p-BO4sUqUv.js +4 -0
- package/components/p-BSQPZ79H.js +4 -0
- package/components/p-Bc4wROfM.js +4 -0
- package/components/p-BhamHSw3.js +4 -0
- package/components/{p-D3xo7hqU.js → p-BpG8kBfD.js} +1 -1
- package/components/p-BqPNzJf6.js +4 -0
- package/components/p-BsVxQGUT.js +4 -0
- package/components/p-BxUIQcD9.js +4 -0
- package/components/p-C1O9GEug.js +4 -0
- package/components/p-C5KYjZWD.js +4 -0
- package/components/p-C9BGR5fy.js +4 -0
- package/components/p-CD4fmpem.js +4 -0
- package/components/p-CEW4RXZO.js +4 -0
- package/components/p-CKhiNOEg.js +4 -0
- package/components/p-CO2zzh3W.js +4 -0
- package/components/p-CVnwvOBD.js +4 -0
- package/components/p-CbhUdtjf.js +4 -0
- package/components/p-CejmQs3h.js +4 -0
- package/components/p-CfnGxjv-.js +4 -0
- package/components/p-ClFYbgND.js +4 -0
- package/components/p-CmKf4pgI.js +4 -0
- package/components/p-Cs5f-uOS.js +4 -0
- package/components/p-D7-vHX0A.js +4 -0
- package/{dist/ionic/p-DC3RagnA.js → components/p-DIgGHN7D.js} +1 -1
- package/components/p-DRfgH82D.js +4 -0
- package/components/p-DTY4otpr.js +4 -0
- package/components/{p--JUspHvy.js → p-DV85C0e0.js} +1 -1
- package/components/p-DVKS-ovH.js +4 -0
- package/components/p-DWCzVL3Y.js +4 -0
- package/components/p-D_XD0pVT.js +4 -0
- package/components/p-Dd8ajo9a.js +4 -0
- package/components/p-DdnhY_oj.js +4 -0
- package/components/p-Dm7h4Nyv.js +4 -0
- package/components/{p-BkKAANMJ.js → p-DwpKZ6rl.js} +1 -1
- package/components/p-DyePCNGr.js +4 -0
- package/components/p-G0TxqHfe.js +4 -0
- package/components/{p-ChIZKXUu.js → p-J-p0EtHR.js} +1 -1
- package/components/p-LXu5-6Ti.js +4 -0
- package/components/p-MCJ7HjWe.js +4 -0
- package/components/p-Obm7si-x.js +4 -0
- package/components/p-TXPDHL13.js +4 -0
- package/components/p-UuPYCOZE.js +4 -0
- package/components/p-WeeS7GvC.js +4 -0
- package/components/{p-D7uN07a3.js → p-_0JhwClE.js} +1 -1
- package/components/p-_IKFD3ID.js +4 -0
- package/components/p-byZM6qHV.js +4 -0
- package/components/p-hh7qIC-X.js +4 -0
- package/components/p-idq4JFo2.js +4 -0
- package/components/{p-DqLB8yFQ.js → p-ryyf_ItD.js} +1 -1
- package/components/p-tYCT3JGl.js +4 -0
- package/components/p-wzAhIh03.js +4 -0
- package/components/p-xOjr4bwc.js +4 -0
- package/components/p-yuj4Nkm_.js +4 -0
- 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-COnxOe4X.js → button-active-BKj1rdFx.js} +3 -3
- package/dist/cjs/config-CjUbvdPW.js +36 -0
- package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
- package/dist/cjs/{format-BUFWn4Bn.js → format-pp0Du3K-.js} +40 -30
- package/dist/cjs/{framework-delegate-BgU6U9Ez.js → framework-delegate-NTLQ5YzV.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-gntk8bfm.js → helpers-CaLhEmTE.js} +3 -3
- package/dist/cjs/index-B7zJsYWS.js +429 -0
- package/dist/cjs/{index-BhhuJ1Yx.js → index-BlshL9ib.js} +2 -2
- package/dist/cjs/{index-BS2uhvhT.js → index-Ck9advCT.js} +5 -5
- package/dist/cjs/{index-ooS8B4p9.js → index-D2X6b92x.js} +6 -7
- package/dist/cjs/{index-BiRrzGDi.js → index-D48vawBq.js} +2 -2
- package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
- 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.cjs.js +18 -18
- package/dist/cjs/{input-shims-Bn1cXfCM.js → input-shims-DvHAFqiP.js} +9 -11
- package/dist/cjs/{input.utils-BwhxZooW.js → input.utils-CP4fzrqk.js} +3 -4
- package/dist/cjs/ion-accordion_2.cjs.entry.js +368 -340
- package/dist/cjs/ion-action-sheet.cjs.entry.js +187 -76
- package/dist/cjs/ion-alert.cjs.entry.js +273 -111
- 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 +47 -23
- package/dist/cjs/ion-backdrop.cjs.entry.js +18 -14
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +199 -121
- package/dist/cjs/ion-button_2.cjs.entry.js +138 -66
- package/dist/cjs/ion-card_5.cjs.entry.js +82 -30
- package/dist/cjs/ion-checkbox.cjs.entry.js +152 -101
- 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 +253 -241
- package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
- package/dist/cjs/ion-fab_3.cjs.entry.js +139 -81
- package/dist/cjs/ion-img.cjs.entry.js +34 -12
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +100 -72
- package/dist/cjs/ion-input-otp.cjs.entry.js +433 -370
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +33 -19
- package/dist/cjs/ion-input.cjs.entry.js +314 -168
- package/dist/cjs/ion-item-option_3.cjs.entry.js +91 -51
- package/dist/cjs/ion-item_8.cjs.entry.js +181 -82
- package/dist/cjs/ion-loading.cjs.entry.js +146 -60
- package/dist/cjs/ion-menu_3.cjs.entry.js +163 -101
- package/dist/cjs/ion-modal.cjs.entry.js +455 -261
- package/dist/cjs/ion-nav_2.cjs.entry.js +100 -157
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +37 -33
- package/dist/cjs/ion-picker-column.cjs.entry.js +417 -405
- package/dist/cjs/ion-picker.cjs.entry.js +401 -392
- package/dist/cjs/ion-popover.cjs.entry.js +319 -205
- package/dist/cjs/ion-progress-bar.cjs.entry.js +31 -25
- package/dist/cjs/ion-radio_2.cjs.entry.js +206 -133
- package/dist/cjs/ion-range.cjs.entry.js +302 -237
- package/dist/cjs/ion-refresher_2.cjs.entry.js +165 -93
- package/dist/cjs/ion-reorder_2.cjs.entry.js +53 -23
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -14
- package/dist/cjs/ion-route_4.cjs.entry.js +175 -71
- 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 +104 -48
- package/dist/cjs/ion-select_3.cjs.entry.js +759 -214
- 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 +100 -41
- package/dist/cjs/ion-tab_2.cjs.entry.js +53 -27
- package/dist/cjs/ion-text.cjs.entry.js +11 -5
- package/dist/cjs/ion-textarea.cjs.entry.js +263 -144
- package/dist/cjs/ion-toast.cjs.entry.js +236 -117
- 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-IMJRwn29.js → ios.transition-KvuRAe2W.js} +13 -17
- 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-CgQZxcoT.js → md.transition-Bjl5Ozph.js} +7 -8
- package/dist/cjs/{notch-controller-_SwR025y.js → notch-controller-BEUpEgb5.js} +1 -1
- package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
- package/dist/cjs/{overlays-DuSEMhIW.js → overlays-IlP4H2Gn.js} +48 -33
- package/dist/cjs/select-option-render-pULCGldr.js +123 -0
- package/dist/cjs/{status-tap-CSvBT7FV.js → status-tap-BR_ujYHg.js} +3 -3
- package/dist/cjs/{swipe-back-CuIiziaa.js → swipe-back-DzQKEl5g.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 +1 -2
- package/dist/collection/components/input/input.js +309 -164
- package/dist/collection/components/input/input.md.css +1 -2
- package/dist/collection/components/input-otp/input-otp.js +428 -366
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +29 -16
- package/dist/collection/components/item/item.js +99 -53
- package/dist/collection/components/item-divider/item-divider.js +15 -10
- package/dist/collection/components/item-option/item-option.js +49 -21
- package/dist/collection/components/item-options/item-options.js +10 -7
- package/dist/collection/components/item-sliding/item-sliding.js +26 -20
- package/dist/collection/components/label/label.js +24 -4
- package/dist/collection/components/list/list.js +10 -7
- package/dist/collection/components/list-header/list-header.js +10 -0
- package/dist/collection/components/loading/loading.js +135 -51
- package/dist/collection/components/menu/menu.js +101 -59
- package/dist/collection/components/menu-button/menu-button.js +29 -20
- package/dist/collection/components/menu-toggle/menu-toggle.js +20 -13
- 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 +20 -9
- package/dist/collection/components/note/note.js +6 -0
- 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 +100 -65
- package/dist/collection/components/radio-group/test/fixtures.js +2 -0
- package/dist/collection/components/range/range.js +296 -232
- 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 +33 -0
- package/dist/collection/components/select/select.js +597 -166
- package/dist/collection/components/select/select.md.css +33 -0
- 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.js +257 -139
- 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/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/gesture/listener.js +1 -1
- 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 +1 -1
- 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 -1273
- 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-BSpTQmS9.js → button-active--80YqSHA.js} +3 -3
- package/dist/esm/config-DWCzVL3Y.js +32 -0
- package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
- package/dist/esm/{format-CAmvpAez.js → format-Dcwga61t.js} +41 -31
- package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate--ajhSeKH.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-HEqiOzXb.js → helpers-DexiPLIC.js} +3 -3
- package/dist/esm/{index-B_dQk_WE.js → index-8s8kZKJ7.js} +5 -5
- package/dist/esm/{index-BRHzoo00.js → index-BCgUwrV0.js} +2 -2
- 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-Q6UPU0Ay.js → index-CumkqGQF.js} +6 -7
- package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
- package/dist/esm/{index-Dw-wN0Ja.js → index-_Za5VB9w.js} +2 -2
- package/dist/esm/index.js +16 -15
- package/dist/esm/{input-shims-LXhI7LEx.js → input-shims-BB0AKb_k.js} +9 -11
- package/dist/esm/{input.utils-Y6NgW8bw.js → input.utils-J6HWocLA.js} +3 -4
- package/dist/esm/ion-accordion_2.entry.js +368 -340
- package/dist/esm/ion-action-sheet.entry.js +187 -76
- package/dist/esm/ion-alert.entry.js +272 -110
- 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 +47 -23
- package/dist/esm/ion-backdrop.entry.js +18 -14
- package/dist/esm/ion-breadcrumb_2.entry.js +199 -121
- package/dist/esm/ion-button_2.entry.js +138 -66
- package/dist/esm/ion-card_5.entry.js +82 -30
- package/dist/esm/ion-checkbox.entry.js +152 -101
- 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 +253 -241
- package/dist/esm/ion-datetime.entry.js +2768 -0
- package/dist/esm/ion-fab_3.entry.js +139 -81
- package/dist/esm/ion-img.entry.js +34 -12
- package/dist/esm/ion-infinite-scroll_2.entry.js +99 -71
- package/dist/esm/ion-input-otp.entry.js +433 -370
- package/dist/esm/ion-input-password-toggle.entry.js +33 -19
- package/dist/esm/ion-input.entry.js +314 -168
- package/dist/esm/ion-item-option_3.entry.js +91 -51
- package/dist/esm/ion-item_8.entry.js +181 -82
- package/dist/esm/ion-loading.entry.js +145 -59
- package/dist/esm/ion-menu_3.entry.js +163 -101
- package/dist/esm/ion-modal.entry.js +455 -261
- package/dist/esm/ion-nav_2.entry.js +100 -157
- package/dist/esm/ion-picker-column-option.entry.js +37 -33
- package/dist/esm/ion-picker-column.entry.js +417 -405
- package/dist/esm/ion-picker.entry.js +401 -392
- package/dist/esm/ion-popover.entry.js +319 -205
- package/dist/esm/ion-progress-bar.entry.js +31 -25
- package/dist/esm/ion-radio_2.entry.js +206 -133
- package/dist/esm/ion-range.entry.js +302 -237
- package/dist/esm/ion-refresher_2.entry.js +163 -91
- package/dist/esm/ion-reorder_2.entry.js +53 -23
- package/dist/esm/ion-ripple-effect.entry.js +14 -14
- package/dist/esm/ion-route_4.entry.js +175 -71
- 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 +104 -48
- package/dist/esm/ion-select_3.entry.js +760 -215
- 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 +100 -41
- package/dist/esm/ion-tab_2.entry.js +53 -27
- package/dist/esm/ion-text.entry.js +11 -5
- package/dist/esm/ion-textarea.entry.js +263 -144
- package/dist/esm/ion-toast.entry.js +235 -116
- 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-ClFrsIrS.js → ios.transition-BdhybwLl.js} +13 -17
- 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-D0msQmzI.js → md.transition-B5lqKGCs.js} +7 -8
- package/dist/esm/{notch-controller-DKDjU_O7.js → notch-controller-CrUGyHYz.js} +1 -1
- package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
- package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-CjWwtvf1.js} +48 -33
- package/dist/esm/select-option-render-C4m76VGH.js +121 -0
- package/dist/esm/{status-tap-vO-6s4Yp.js → status-tap-DpLhkDWs.js} +3 -3
- package/dist/esm/{swipe-back-DQ1q5MgD.js → swipe-back-cz4-lyG3.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-0266b7e1.entry.js +4 -0
- package/dist/ionic/p-08443c08.entry.js +4 -0
- package/dist/ionic/p-08f1ed1c.entry.js +4 -0
- package/dist/ionic/p-09b47b7d.entry.js +4 -0
- package/dist/ionic/p-0FNc80PN.js +4 -0
- package/dist/ionic/p-12589d59.entry.js +4 -0
- package/dist/ionic/p-1d2e53e8.entry.js +4 -0
- package/dist/ionic/p-1edf0573.entry.js +4 -0
- package/dist/ionic/p-214e000a.entry.js +4 -0
- package/dist/ionic/p-21a7fb2a.entry.js +4 -0
- package/dist/ionic/p-2ce59395.entry.js +4 -0
- package/dist/ionic/p-33829e94.entry.js +4 -0
- package/dist/ionic/p-374b10cb.entry.js +4 -0
- package/dist/ionic/p-3835a020.entry.js +4 -0
- package/dist/ionic/p-3c5fdd27.entry.js +4 -0
- package/dist/ionic/{p-c6e49f3f.entry.js → p-40424a88.entry.js} +1 -1
- package/dist/ionic/p-48b6835f.entry.js +4 -0
- package/dist/ionic/p-4eOQC00Z.js +4 -0
- package/dist/ionic/p-5394e1d4.entry.js +4 -0
- package/dist/ionic/p-53bac1c9.entry.js +4 -0
- package/dist/ionic/p-5506caeb.entry.js +4 -0
- package/dist/ionic/p-5993a77f.entry.js +4 -0
- package/dist/ionic/p-6277efba.entry.js +4 -0
- package/dist/ionic/p-62e71297.entry.js +4 -0
- package/dist/ionic/p-6b286c5c.entry.js +4 -0
- package/dist/ionic/p-7116e558.entry.js +4 -0
- package/dist/ionic/p-74f30659.entry.js +4 -0
- package/dist/ionic/p-7bb3e957.entry.js +4 -0
- package/dist/ionic/p-82525fb0.entry.js +4 -0
- package/dist/ionic/p-865fa114.entry.js +4 -0
- package/dist/ionic/p-8a21bdbd.entry.js +4 -0
- package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
- package/dist/ionic/p-8f3a1995.entry.js +4 -0
- package/dist/ionic/p-91c6faf1.entry.js +4 -0
- package/dist/ionic/{p-aaeedb6b.entry.js → p-9b865fe6.entry.js} +1 -1
- package/dist/ionic/p-9nmHvEvw.js +4 -0
- package/dist/ionic/p-B-FxiyeI.js +4 -0
- package/dist/ionic/p-BB0LlG4y.js +4 -0
- package/dist/ionic/p-BMPN55of.js +4 -0
- package/dist/ionic/p-BQ8oNV0v.js +4 -0
- package/dist/ionic/p-BSQPZ79H.js +4 -0
- package/dist/ionic/p-BhamHSw3.js +4 -0
- package/dist/ionic/p-BjvtSsVI.js +4 -0
- package/dist/ionic/p-BkfAWuv6.js +4 -0
- package/dist/ionic/p-BnMQxWON.js +4 -0
- package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
- package/dist/ionic/p-BwIp10KV.js +4 -0
- package/dist/ionic/p-C-94tAim.js +4 -0
- package/dist/ionic/p-C6eME8Ey.js +4 -0
- package/dist/ionic/{p-DIuEbVLu.js → p-CKUuSnDR.js} +1 -1
- package/dist/ionic/p-CMRtMbJc.js +4 -0
- package/dist/ionic/p-CPcPmkGv.js +4 -0
- package/dist/ionic/{p-biz8zWmJ.js → p-CQ_4TirR.js} +1 -1
- 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-CmKf4pgI.js +4 -0
- package/dist/ionic/p-D5t_-oMk.js +4 -0
- package/dist/ionic/p-D94b61er.js +4 -0
- package/dist/ionic/p-DCI3rXQo.js +4 -0
- package/dist/ionic/p-DDhtUaaA.js +4 -0
- package/dist/ionic/p-DWCzVL3Y.js +4 -0
- package/dist/ionic/p-Dn0mqQ_R.js +4 -0
- package/dist/ionic/{p-KjNvRoEp.js → p-I3In7hMC.js} +1 -1
- package/dist/ionic/p-T71k3C35.js +4 -0
- package/dist/ionic/p-TXPDHL13.js +4 -0
- package/dist/ionic/p-a641d428.entry.js +4 -0
- package/dist/ionic/p-ac6ef997.entry.js +4 -0
- package/dist/ionic/p-acf0a6af.entry.js +4 -0
- package/dist/ionic/p-ad98e3ff.entry.js +4 -0
- package/dist/ionic/p-af5166f5.entry.js +4 -0
- package/dist/ionic/p-b24dc0a1.entry.js +4 -0
- package/dist/ionic/p-ba8a598f.entry.js +4 -0
- package/dist/ionic/p-bf7c1f05.entry.js +4 -0
- package/dist/ionic/p-byZM6qHV.js +4 -0
- package/dist/ionic/p-c3f65965.entry.js +4 -0
- package/dist/ionic/p-c8fbe544.entry.js +4 -0
- package/dist/ionic/p-cb12f6c3.entry.js +4 -0
- package/dist/ionic/p-cec87704.entry.js +4 -0
- package/dist/ionic/p-dbfd2d52.entry.js +4 -0
- package/dist/ionic/p-e1e5b507.entry.js +4 -0
- package/dist/ionic/p-ede019ef.entry.js +4 -0
- package/dist/ionic/p-efef6788.entry.js +4 -0
- package/dist/ionic/p-f046aa37.entry.js +4 -0
- package/dist/ionic/p-f402f5a4.entry.js +4 -0
- package/dist/ionic/p-f622796d.entry.js +4 -0
- package/{components/p-B-JJgYSG.js → dist/ionic/p-kJA95YWg.js} +1 -1
- package/dist/types/components/img/img.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +1 -1
- 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 +18 -0
- package/dist/types/components/select-option/select-option.d.ts +42 -1
- 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/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 +10343 -7070
- package/hydrate/index.mjs +10343 -7070
- 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-A3O24YmY.js +0 -4
- package/components/p-ABkNVeU9.js +0 -4
- package/components/p-B9jFTlwE.js +0 -4
- package/components/p-BLmJ0zRm.js +0 -4
- package/components/p-BMI53wYL.js +0 -4
- package/components/p-BSEgsdFI.js +0 -4
- package/components/p-BTEOs1at.js +0 -4
- package/components/p-BlIAuGv2.js +0 -4
- package/components/p-Bnsn6KaP.js +0 -4
- package/components/p-BsBCoGa-.js +0 -4
- package/components/p-Bz0dSlXZ.js +0 -4
- package/components/p-C53feagD.js +0 -4
- package/components/p-CHqRYvYm.js +0 -4
- package/components/p-CQGnMY3n.js +0 -4
- package/components/p-CSZf8_j0.js +0 -4
- package/components/p-C_xFdyXe.js +0 -4
- package/components/p-Cf2jSDS8.js +0 -4
- package/components/p-Cfx4M1Bn.js +0 -4
- package/components/p-CkMSOsFF.js +0 -4
- package/components/p-Cl0B-RWe.js +0 -4
- package/components/p-CmR5uXej.js +0 -4
- package/components/p-Cp4GRDqq.js +0 -4
- package/components/p-CsNJ1ULL.js +0 -4
- package/components/p-CtWGkNnJ.js +0 -4
- package/components/p-CzCbeKys.js +0 -4
- package/components/p-D-aHdMxW.js +0 -4
- package/components/p-D0d8qTwj.js +0 -4
- package/components/p-D13Eaw-8.js +0 -4
- package/components/p-D6Ynv7Xh.js +0 -4
- package/components/p-DCnGU1fF.js +0 -4
- package/components/p-DGvrK8dD.js +0 -4
- package/components/p-DOFCbuQR.js +0 -4
- package/components/p-DRxvM2Ic.js +0 -4
- package/components/p-DV5mPYQS.js +0 -4
- package/components/p-DWkAgceV.js +0 -4
- package/components/p-DiVJyqlX.js +0 -4
- package/components/p-DqZAXv2t.js +0 -4
- package/components/p-Osve4qkc.js +0 -4
- package/components/p-R8zmRi4c.js +0 -4
- package/components/p-SLS1rDZM.js +0 -4
- package/components/p-aJ6PBUvj.js +0 -4
- package/components/p-cyNmxje6.js +0 -4
- package/components/p-gAg0kXZp.js +0 -4
- package/components/p-gYiraiT_.js +0 -4
- package/components/p-j5IxBIan.js +0 -4
- package/components/p-k_E4tX5Z.js +0 -4
- package/components/p-oD4kcBRX.js +0 -4
- package/components/p-rCa2eL0j.js +0 -4
- package/components/p-vRBNsYbs.js +0 -4
- package/components/p-yEQxMl70.js +0 -4
- package/components/p-yzCsOZE2.js +0 -4
- package/dist/cjs/config-D6C-KlA9.js +0 -201
- package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3167
- 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/ion-datetime_3.entry.js +0 -3163
- package/dist/ionic/p-01f81ea5.entry.js +0 -4
- package/dist/ionic/p-06c232a4.entry.js +0 -4
- package/dist/ionic/p-0caa922c.entry.js +0 -4
- package/dist/ionic/p-0dc33652.entry.js +0 -4
- package/dist/ionic/p-0fa9c382.entry.js +0 -4
- package/dist/ionic/p-10e833ef.entry.js +0 -4
- package/dist/ionic/p-21eb76d5.entry.js +0 -4
- package/dist/ionic/p-27d30585.entry.js +0 -4
- package/dist/ionic/p-2a05aa64.entry.js +0 -4
- package/dist/ionic/p-2b204c59.entry.js +0 -4
- package/dist/ionic/p-2bb2cb18.entry.js +0 -4
- package/dist/ionic/p-2fa58e80.entry.js +0 -4
- package/dist/ionic/p-3353c229.entry.js +0 -4
- package/dist/ionic/p-34586ead.entry.js +0 -4
- package/dist/ionic/p-37e720da.entry.js +0 -4
- package/dist/ionic/p-390ca786.entry.js +0 -4
- package/dist/ionic/p-3ae5f277.entry.js +0 -4
- package/dist/ionic/p-4654ae1c.entry.js +0 -4
- package/dist/ionic/p-4745f534.entry.js +0 -4
- package/dist/ionic/p-4858af1f.entry.js +0 -4
- package/dist/ionic/p-4baa5b82.entry.js +0 -4
- package/dist/ionic/p-4e92a11f.entry.js +0 -4
- package/dist/ionic/p-50e1194a.entry.js +0 -4
- package/dist/ionic/p-5334df12.entry.js +0 -4
- package/dist/ionic/p-5d1da0a2.entry.js +0 -4
- package/dist/ionic/p-5e2f73ee.entry.js +0 -4
- package/dist/ionic/p-5eb8e86d.entry.js +0 -4
- package/dist/ionic/p-65ebdf1b.entry.js +0 -4
- package/dist/ionic/p-746fa988.entry.js +0 -4
- package/dist/ionic/p-75dc25ba.entry.js +0 -4
- package/dist/ionic/p-7c319341.entry.js +0 -4
- package/dist/ionic/p-829367ed.entry.js +0 -4
- package/dist/ionic/p-84d5ce05.entry.js +0 -4
- package/dist/ionic/p-874b4bd8.entry.js +0 -4
- package/dist/ionic/p-8eb8ee76.entry.js +0 -4
- package/dist/ionic/p-9eeaBrnk.js +0 -4
- package/dist/ionic/p-9f9db3a2.entry.js +0 -4
- package/dist/ionic/p-9fa3c405.entry.js +0 -4
- package/dist/ionic/p-BGqMS-oh.js +0 -4
- package/dist/ionic/p-BTEOs1at.js +0 -4
- package/dist/ionic/p-BUFIpxKM.js +0 -4
- package/dist/ionic/p-C0eMdTCW.js +0 -4
- package/dist/ionic/p-C53feagD.js +0 -4
- package/dist/ionic/p-CFlfIb2g.js +0 -4
- package/dist/ionic/p-CKvCXMs9.js +0 -4
- package/dist/ionic/p-Cl0B-RWe.js +0 -4
- package/dist/ionic/p-CmcFnK-B.js +0 -4
- package/dist/ionic/p-CtWGkNnJ.js +0 -4
- package/dist/ionic/p-Cx3IXROA.js +0 -4
- package/dist/ionic/p-D-3ycHmd.js +0 -4
- package/dist/ionic/p-D13Eaw-8.js +0 -4
- package/dist/ionic/p-D4uTWt4-.js +0 -4
- package/dist/ionic/p-DiVJyqlX.js +0 -4
- package/dist/ionic/p-DoJvtrbw.js +0 -4
- package/dist/ionic/p-DqN5EA2O.js +0 -4
- package/dist/ionic/p-DzWaWHGc.js +0 -4
- package/dist/ionic/p-Nqf6uvGh.js +0 -4
- package/dist/ionic/p-SNAkTDfm.js +0 -4
- package/dist/ionic/p-VAemlbDS.js +0 -4
- package/dist/ionic/p-a3bdcae6.entry.js +0 -4
- package/dist/ionic/p-af55a72f.entry.js +0 -4
- package/dist/ionic/p-b2020591.entry.js +0 -4
- package/dist/ionic/p-b9fadbfe.entry.js +0 -4
- package/dist/ionic/p-c0fb8edd.entry.js +0 -4
- package/dist/ionic/p-c38b648e.entry.js +0 -4
- package/dist/ionic/p-c4d8641b.entry.js +0 -4
- package/dist/ionic/p-ca2ab74d.entry.js +0 -4
- package/dist/ionic/p-d889ff6d.entry.js +0 -4
- package/dist/ionic/p-dfa8d673.entry.js +0 -4
- package/dist/ionic/p-ea56626d.entry.js +0 -4
- package/dist/ionic/p-ef4c3bee.entry.js +0 -4
- package/dist/ionic/p-f386f6ae.entry.js +0 -4
- package/dist/ionic/p-mjKAFv89.js +0 -4
- package/dist/ionic/p-tcQvqkiX.js +0 -5
- package/dist/ionic/p-uWtqTrG8.js +0 -4
- package/dist/ionic/p-viFHDgRs.js +0 -4
- package/dist/ionic/p-xWb6fgfq.js +0 -4
- 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
|
@@ -43,233 +43,74 @@ import { roundToMaxDecimalPlaces } from "../../utils/floating-point";
|
|
|
43
43
|
* @part pressed - Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time when `dualKnobs` is `true`.
|
|
44
44
|
*/
|
|
45
45
|
export class Range {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
* if you need to access `this` from within the callback.
|
|
89
|
-
*/
|
|
90
|
-
this.pinFormatter = (value) => Math.round(value);
|
|
91
|
-
/**
|
|
92
|
-
* If `true`, the knob snaps to tick marks evenly spaced based
|
|
93
|
-
* on the step property value.
|
|
94
|
-
*/
|
|
95
|
-
this.snaps = false;
|
|
96
|
-
/**
|
|
97
|
-
* Specifies the value granularity.
|
|
98
|
-
*/
|
|
99
|
-
this.step = 1;
|
|
100
|
-
/**
|
|
101
|
-
* If `true`, tick marks are displayed based on the step value.
|
|
102
|
-
* Only applies when `snaps` is `true`.
|
|
103
|
-
*/
|
|
104
|
-
this.ticks = true;
|
|
105
|
-
/**
|
|
106
|
-
* If `true`, the user cannot interact with the range.
|
|
107
|
-
*/
|
|
108
|
-
this.disabled = false;
|
|
109
|
-
/**
|
|
110
|
-
* the value of the range.
|
|
111
|
-
*/
|
|
112
|
-
this.value = 0;
|
|
113
|
-
/**
|
|
114
|
-
* Compares two RangeValue inputs to determine if they are different.
|
|
115
|
-
*
|
|
116
|
-
* @param newVal - The new value.
|
|
117
|
-
* @param oldVal - The old value.
|
|
118
|
-
* @returns `true` if the values are different, `false` otherwise.
|
|
119
|
-
*/
|
|
120
|
-
this.compareValues = (newVal, oldVal) => {
|
|
121
|
-
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
122
|
-
return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
|
|
123
|
-
}
|
|
124
|
-
return newVal !== oldVal;
|
|
125
|
-
};
|
|
126
|
-
this.clampBounds = (value) => {
|
|
127
|
-
return clamp(this.min, value, this.max);
|
|
128
|
-
};
|
|
129
|
-
this.ensureValueInBounds = (value) => {
|
|
130
|
-
if (this.dualKnobs) {
|
|
131
|
-
return {
|
|
132
|
-
lower: this.clampBounds(value.lower),
|
|
133
|
-
upper: this.clampBounds(value.upper),
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
return this.clampBounds(value);
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
/**
|
|
141
|
-
* Where to place the label relative to the range.
|
|
142
|
-
* `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
|
|
143
|
-
* `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
|
|
144
|
-
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
145
|
-
* `"stacked"`: The label will appear above the range regardless of the direction.
|
|
146
|
-
*/
|
|
147
|
-
this.labelPlacement = 'start';
|
|
148
|
-
this.setupGesture = async () => {
|
|
149
|
-
const rangeSlider = this.rangeSlider;
|
|
150
|
-
if (rangeSlider) {
|
|
151
|
-
this.gesture = (await import('../../utils/gesture')).createGesture({
|
|
152
|
-
el: rangeSlider,
|
|
153
|
-
gestureName: 'range',
|
|
154
|
-
gesturePriority: 100,
|
|
155
|
-
/**
|
|
156
|
-
* Provide a threshold since the drag movement
|
|
157
|
-
* might be a user scrolling the view.
|
|
158
|
-
* If this is true, then the range
|
|
159
|
-
* should not move.
|
|
160
|
-
*/
|
|
161
|
-
threshold: 10,
|
|
162
|
-
onStart: () => this.onStart(),
|
|
163
|
-
onMove: (ev) => this.onMove(ev),
|
|
164
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
165
|
-
});
|
|
166
|
-
this.gesture.enable(!this.disabled);
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
/**
|
|
170
|
-
* Observes the knob handles for the ion-activated class and syncs
|
|
171
|
-
* activatedKnob so the activated part is correctly set on the handle,
|
|
172
|
-
* knob, and pin.
|
|
173
|
-
*/
|
|
174
|
-
this.setupActivatedObserver = () => {
|
|
175
|
-
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
176
|
-
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
177
|
-
const syncActivated = () => {
|
|
178
|
-
this.activatedKnob = (knobHandleA === null || knobHandleA === void 0 ? void 0 : knobHandleA.classList.contains('ion-activated'))
|
|
179
|
-
? 'A'
|
|
180
|
-
: (knobHandleB === null || knobHandleB === void 0 ? void 0 : knobHandleB.classList.contains('ion-activated'))
|
|
181
|
-
? 'B'
|
|
182
|
-
: undefined;
|
|
183
|
-
};
|
|
184
|
-
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
185
|
-
this.activatedObserver = new MutationObserver(syncActivated);
|
|
186
|
-
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
187
|
-
attributes: true,
|
|
188
|
-
attributeFilter: ['class'],
|
|
189
|
-
subtree: true,
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
syncActivated();
|
|
193
|
-
};
|
|
194
|
-
this.handleKeyboard = (knob, isIncrease) => {
|
|
195
|
-
const { ensureValueInBounds } = this;
|
|
196
|
-
let step = this.step;
|
|
197
|
-
step = step > 0 ? step : 1;
|
|
198
|
-
step = step / (this.max - this.min);
|
|
199
|
-
if (!isIncrease) {
|
|
200
|
-
step *= -1;
|
|
201
|
-
}
|
|
202
|
-
if (knob === 'A') {
|
|
203
|
-
this.ratioA = clamp(0, this.ratioA + step, 1);
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
this.ratioB = clamp(0, this.ratioB + step, 1);
|
|
207
|
-
}
|
|
208
|
-
this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
|
|
209
|
-
this.updateValue();
|
|
210
|
-
this.emitValueChange();
|
|
211
|
-
this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
|
|
212
|
-
};
|
|
213
|
-
this.onBlur = () => {
|
|
214
|
-
if (this.hasFocus) {
|
|
215
|
-
this.hasFocus = false;
|
|
216
|
-
this.focusedKnob = undefined;
|
|
217
|
-
this.ionBlur.emit();
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
this.onFocus = () => {
|
|
221
|
-
if (!this.hasFocus) {
|
|
222
|
-
this.hasFocus = true;
|
|
223
|
-
this.ionFocus.emit();
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
this.onKnobFocus = (knob) => {
|
|
227
|
-
// Clicking focuses the range which is needed for the keyboard,
|
|
228
|
-
// but we only want to add the ion-focused class when focused via Tab.
|
|
229
|
-
if (!this.focusFromPointer) {
|
|
230
|
-
this.focusedKnob = knob;
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
this.focusFromPointer = false;
|
|
234
|
-
this.focusedKnob = undefined;
|
|
235
|
-
}
|
|
236
|
-
// If the knob was not already focused, emit the focus event
|
|
237
|
-
if (!this.hasFocus) {
|
|
238
|
-
this.hasFocus = true;
|
|
239
|
-
this.ionFocus.emit();
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
this.onKnobBlur = () => {
|
|
243
|
-
// Check if focus is moving to another knob within the same range
|
|
244
|
-
// by delaying the reset to allow the new focus to register
|
|
245
|
-
setTimeout(() => {
|
|
246
|
-
var _a;
|
|
247
|
-
const activeElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement;
|
|
248
|
-
const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
|
|
249
|
-
if (!isStillFocusedOnKnob) {
|
|
250
|
-
if (this.hasFocus) {
|
|
251
|
-
this.hasFocus = false;
|
|
252
|
-
this.focusedKnob = undefined;
|
|
253
|
-
this.ionBlur.emit();
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}, 0);
|
|
257
|
-
};
|
|
258
|
-
this.onKnobMouseEnter = (knob) => {
|
|
259
|
-
this.hoveredKnob = knob;
|
|
260
|
-
};
|
|
261
|
-
this.onKnobMouseLeave = () => {
|
|
262
|
-
this.hoveredKnob = undefined;
|
|
263
|
-
};
|
|
264
|
-
}
|
|
46
|
+
rangeId = `ion-r-${rangeIds++}`;
|
|
47
|
+
didLoad = false;
|
|
48
|
+
noUpdate = false;
|
|
49
|
+
rect;
|
|
50
|
+
hasFocus = false;
|
|
51
|
+
rangeSlider;
|
|
52
|
+
gesture;
|
|
53
|
+
inheritedAttributes = {};
|
|
54
|
+
contentEl = null;
|
|
55
|
+
initialContentScrollY = true;
|
|
56
|
+
originalIonInput;
|
|
57
|
+
/**
|
|
58
|
+
* Used to avoid setting the focused state on click or tap. The focused
|
|
59
|
+
* state is only set when the focus comes from the keyboard (e.g. Tab).
|
|
60
|
+
* This is set to true on pointer down (mouse/touch).
|
|
61
|
+
*/
|
|
62
|
+
focusFromPointer = false;
|
|
63
|
+
/**
|
|
64
|
+
* Observes class changes on the knob handles to keep the activatedKnob
|
|
65
|
+
* state in sync with the ion-activated class. This is necessary to
|
|
66
|
+
* determine which knob the user is dragging when using dual knobs and
|
|
67
|
+
* apply the activated part correctly.
|
|
68
|
+
*/
|
|
69
|
+
activatedObserver;
|
|
70
|
+
el;
|
|
71
|
+
ratioA = 0;
|
|
72
|
+
ratioB = 0;
|
|
73
|
+
activatedKnob;
|
|
74
|
+
focusedKnob;
|
|
75
|
+
hoveredKnob;
|
|
76
|
+
pressedKnob;
|
|
77
|
+
/**
|
|
78
|
+
* The color to use from your application's color palette.
|
|
79
|
+
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
80
|
+
* For more information on colors, see [theming](/docs/theming/basics).
|
|
81
|
+
*/
|
|
82
|
+
color;
|
|
83
|
+
/**
|
|
84
|
+
* How long, in milliseconds, to wait to trigger the
|
|
85
|
+
* `ionInput` event after each change in the range value.
|
|
86
|
+
*/
|
|
87
|
+
debounce;
|
|
265
88
|
debounceChanged() {
|
|
266
89
|
const { ionInput, debounce, originalIonInput } = this;
|
|
267
90
|
/**
|
|
268
91
|
* If debounce is undefined, we have to manually revert the ionInput emitter in case
|
|
269
92
|
* debounce used to be set to a number. Otherwise, the event would stay debounced.
|
|
270
93
|
*/
|
|
271
|
-
this.ionInput = debounce === undefined ? originalIonInput
|
|
94
|
+
this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : debounceEvent(ionInput, debounce);
|
|
272
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* The name of the control, which is submitted with the form data.
|
|
98
|
+
*/
|
|
99
|
+
name = this.rangeId;
|
|
100
|
+
/**
|
|
101
|
+
* The text to display as the control's label. Use this over the `label` slot if
|
|
102
|
+
* you only need plain text. The `label` property will take priority over the
|
|
103
|
+
* `label` slot if both are used.
|
|
104
|
+
*/
|
|
105
|
+
label;
|
|
106
|
+
/**
|
|
107
|
+
* Show two knobs.
|
|
108
|
+
*/
|
|
109
|
+
dualKnobs = false;
|
|
110
|
+
/**
|
|
111
|
+
* Minimum integer value of the range.
|
|
112
|
+
*/
|
|
113
|
+
min = 0;
|
|
273
114
|
minChanged(newValue) {
|
|
274
115
|
if (!isSafeNumber(newValue)) {
|
|
275
116
|
this.min = 0;
|
|
@@ -278,6 +119,10 @@ export class Range {
|
|
|
278
119
|
this.updateRatio();
|
|
279
120
|
}
|
|
280
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Maximum integer value of the range.
|
|
124
|
+
*/
|
|
125
|
+
max = 100;
|
|
281
126
|
maxChanged(newValue) {
|
|
282
127
|
if (!isSafeNumber(newValue)) {
|
|
283
128
|
this.max = 100;
|
|
@@ -286,11 +131,43 @@ export class Range {
|
|
|
286
131
|
this.updateRatio();
|
|
287
132
|
}
|
|
288
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* If `true`, a pin with integer value is shown when the knob
|
|
136
|
+
* is pressed.
|
|
137
|
+
*/
|
|
138
|
+
pin = false;
|
|
139
|
+
/**
|
|
140
|
+
* A callback used to format the pin text.
|
|
141
|
+
* By default the pin text is set to `Math.round(value)`.
|
|
142
|
+
*
|
|
143
|
+
* See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
|
|
144
|
+
* if you need to access `this` from within the callback.
|
|
145
|
+
*/
|
|
146
|
+
pinFormatter = (value) => Math.round(value);
|
|
147
|
+
/**
|
|
148
|
+
* If `true`, the knob snaps to tick marks evenly spaced based
|
|
149
|
+
* on the step property value.
|
|
150
|
+
*/
|
|
151
|
+
snaps = false;
|
|
152
|
+
/**
|
|
153
|
+
* Specifies the value granularity.
|
|
154
|
+
*/
|
|
155
|
+
step = 1;
|
|
289
156
|
stepChanged(newValue) {
|
|
290
157
|
if (!isSafeNumber(newValue)) {
|
|
291
158
|
this.step = 1;
|
|
292
159
|
}
|
|
293
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* If `true`, tick marks are displayed based on the step value.
|
|
163
|
+
* Only applies when `snaps` is `true`.
|
|
164
|
+
*/
|
|
165
|
+
ticks = true;
|
|
166
|
+
/**
|
|
167
|
+
* The start position of the range active bar. This feature is only available with a single knob (dualKnobs="false").
|
|
168
|
+
* Valid values are greater than or equal to the min value and less than or equal to the max value.
|
|
169
|
+
*/
|
|
170
|
+
activeBarStart;
|
|
294
171
|
activeBarStartChanged() {
|
|
295
172
|
const { activeBarStart } = this;
|
|
296
173
|
if (activeBarStart !== undefined) {
|
|
@@ -304,11 +181,19 @@ export class Range {
|
|
|
304
181
|
}
|
|
305
182
|
}
|
|
306
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* If `true`, the user cannot interact with the range.
|
|
186
|
+
*/
|
|
187
|
+
disabled = false;
|
|
307
188
|
disabledChanged() {
|
|
308
189
|
if (this.gesture) {
|
|
309
190
|
this.gesture.enable(!this.disabled);
|
|
310
191
|
}
|
|
311
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* the value of the range.
|
|
195
|
+
*/
|
|
196
|
+
value = 0;
|
|
312
197
|
valueChanged(newValue, oldValue) {
|
|
313
198
|
const valuesChanged = this.compareValues(newValue, oldValue);
|
|
314
199
|
if (valuesChanged) {
|
|
@@ -318,6 +203,120 @@ export class Range {
|
|
|
318
203
|
this.updateRatio();
|
|
319
204
|
}
|
|
320
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Compares two RangeValue inputs to determine if they are different.
|
|
208
|
+
*
|
|
209
|
+
* @param newVal - The new value.
|
|
210
|
+
* @param oldVal - The old value.
|
|
211
|
+
* @returns `true` if the values are different, `false` otherwise.
|
|
212
|
+
*/
|
|
213
|
+
compareValues = (newVal, oldVal) => {
|
|
214
|
+
if (typeof newVal === 'object' && typeof oldVal === 'object') {
|
|
215
|
+
return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
|
|
216
|
+
}
|
|
217
|
+
return newVal !== oldVal;
|
|
218
|
+
};
|
|
219
|
+
clampBounds = (value) => {
|
|
220
|
+
return clamp(this.min, value, this.max);
|
|
221
|
+
};
|
|
222
|
+
ensureValueInBounds = (value) => {
|
|
223
|
+
if (this.dualKnobs) {
|
|
224
|
+
return {
|
|
225
|
+
lower: this.clampBounds(value.lower),
|
|
226
|
+
upper: this.clampBounds(value.upper),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
return this.clampBounds(value);
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Where to place the label relative to the range.
|
|
235
|
+
* `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
|
|
236
|
+
* `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
|
|
237
|
+
* `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
|
|
238
|
+
* `"stacked"`: The label will appear above the range regardless of the direction.
|
|
239
|
+
*/
|
|
240
|
+
labelPlacement = 'start';
|
|
241
|
+
/**
|
|
242
|
+
* The `ionChange` event is fired for `<ion-range>` elements when the user
|
|
243
|
+
* modifies the element's value:
|
|
244
|
+
* - When the user releases the knob after dragging;
|
|
245
|
+
* - When the user moves the knob with keyboard arrows
|
|
246
|
+
*
|
|
247
|
+
* This event will not emit when programmatically setting the `value` property.
|
|
248
|
+
*/
|
|
249
|
+
ionChange;
|
|
250
|
+
/**
|
|
251
|
+
* The `ionInput` event is fired for `<ion-range>` elements when the value
|
|
252
|
+
* is modified. Unlike `ionChange`, `ionInput` is fired continuously
|
|
253
|
+
* while the user is dragging the knob.
|
|
254
|
+
*/
|
|
255
|
+
ionInput;
|
|
256
|
+
/**
|
|
257
|
+
* Emitted when the range has focus.
|
|
258
|
+
*/
|
|
259
|
+
ionFocus;
|
|
260
|
+
/**
|
|
261
|
+
* Emitted when the range loses focus.
|
|
262
|
+
*/
|
|
263
|
+
ionBlur;
|
|
264
|
+
/**
|
|
265
|
+
* Emitted when the user starts moving the range knob, whether through
|
|
266
|
+
* mouse drag, touch gesture, or keyboard interaction.
|
|
267
|
+
*/
|
|
268
|
+
ionKnobMoveStart;
|
|
269
|
+
/**
|
|
270
|
+
* Emitted when the user finishes moving the range knob, whether through
|
|
271
|
+
* mouse drag, touch gesture, or keyboard interaction.
|
|
272
|
+
*/
|
|
273
|
+
ionKnobMoveEnd;
|
|
274
|
+
setupGesture = async () => {
|
|
275
|
+
const rangeSlider = this.rangeSlider;
|
|
276
|
+
if (rangeSlider) {
|
|
277
|
+
this.gesture = (await import('../../utils/gesture')).createGesture({
|
|
278
|
+
el: rangeSlider,
|
|
279
|
+
gestureName: 'range',
|
|
280
|
+
gesturePriority: 100,
|
|
281
|
+
/**
|
|
282
|
+
* Provide a threshold since the drag movement
|
|
283
|
+
* might be a user scrolling the view.
|
|
284
|
+
* If this is true, then the range
|
|
285
|
+
* should not move.
|
|
286
|
+
*/
|
|
287
|
+
threshold: 10,
|
|
288
|
+
onStart: () => this.onStart(),
|
|
289
|
+
onMove: (ev) => this.onMove(ev),
|
|
290
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
291
|
+
});
|
|
292
|
+
this.gesture.enable(!this.disabled);
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* Observes the knob handles for the ion-activated class and syncs
|
|
297
|
+
* activatedKnob so the activated part is correctly set on the handle,
|
|
298
|
+
* knob, and pin.
|
|
299
|
+
*/
|
|
300
|
+
setupActivatedObserver = () => {
|
|
301
|
+
const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
|
|
302
|
+
const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
|
|
303
|
+
const syncActivated = () => {
|
|
304
|
+
this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
|
|
305
|
+
? 'A'
|
|
306
|
+
: knobHandleB?.classList.contains('ion-activated')
|
|
307
|
+
? 'B'
|
|
308
|
+
: undefined;
|
|
309
|
+
};
|
|
310
|
+
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
311
|
+
this.activatedObserver = new MutationObserver(syncActivated);
|
|
312
|
+
this.activatedObserver.observe(this.el.shadowRoot, {
|
|
313
|
+
attributes: true,
|
|
314
|
+
attributeFilter: ['class'],
|
|
315
|
+
subtree: true,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
syncActivated();
|
|
319
|
+
};
|
|
321
320
|
componentWillLoad() {
|
|
322
321
|
/**
|
|
323
322
|
* If user has custom ID set then we should
|
|
@@ -341,7 +340,6 @@ export class Range {
|
|
|
341
340
|
this.didLoad = true;
|
|
342
341
|
}
|
|
343
342
|
connectedCallback() {
|
|
344
|
-
var _a;
|
|
345
343
|
this.updateRatio();
|
|
346
344
|
this.debounceChanged();
|
|
347
345
|
this.disabledChanged();
|
|
@@ -357,7 +355,7 @@ export class Range {
|
|
|
357
355
|
this.setupActivatedObserver();
|
|
358
356
|
}
|
|
359
357
|
const ionContent = findClosestIonContent(this.el);
|
|
360
|
-
this.contentEl =
|
|
358
|
+
this.contentEl = ionContent?.querySelector('.ion-content-scroll-host') ?? ionContent;
|
|
361
359
|
}
|
|
362
360
|
disconnectedCallback() {
|
|
363
361
|
if (this.gesture) {
|
|
@@ -369,9 +367,27 @@ export class Range {
|
|
|
369
367
|
this.activatedObserver = undefined;
|
|
370
368
|
}
|
|
371
369
|
}
|
|
370
|
+
handleKeyboard = (knob, isIncrease) => {
|
|
371
|
+
const { ensureValueInBounds } = this;
|
|
372
|
+
let step = this.step;
|
|
373
|
+
step = step > 0 ? step : 1;
|
|
374
|
+
step = step / (this.max - this.min);
|
|
375
|
+
if (!isIncrease) {
|
|
376
|
+
step *= -1;
|
|
377
|
+
}
|
|
378
|
+
if (knob === 'A') {
|
|
379
|
+
this.ratioA = clamp(0, this.ratioA + step, 1);
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
this.ratioB = clamp(0, this.ratioB + step, 1);
|
|
383
|
+
}
|
|
384
|
+
this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
|
|
385
|
+
this.updateValue();
|
|
386
|
+
this.emitValueChange();
|
|
387
|
+
this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
|
|
388
|
+
};
|
|
372
389
|
getValue() {
|
|
373
|
-
|
|
374
|
-
const value = (_a = this.value) !== null && _a !== void 0 ? _a : 0;
|
|
390
|
+
const value = this.value ?? 0;
|
|
375
391
|
if (this.dualKnobs) {
|
|
376
392
|
if (typeof value === 'object') {
|
|
377
393
|
return value;
|
|
@@ -457,9 +473,8 @@ export class Range {
|
|
|
457
473
|
* @param detail The details of the gesture or mouse event.
|
|
458
474
|
*/
|
|
459
475
|
onEnd(detail) {
|
|
460
|
-
var _a;
|
|
461
476
|
const { contentEl, initialContentScrollY } = this;
|
|
462
|
-
const currentX =
|
|
477
|
+
const currentX = detail.currentX ?? detail.clientX;
|
|
463
478
|
/**
|
|
464
479
|
* The `pressedKnob` can be undefined if the user never
|
|
465
480
|
* dragged the knob. They just tapped on the bar.
|
|
@@ -579,6 +594,56 @@ export class Range {
|
|
|
579
594
|
};
|
|
580
595
|
this.noUpdate = false;
|
|
581
596
|
}
|
|
597
|
+
onBlur = () => {
|
|
598
|
+
if (this.hasFocus) {
|
|
599
|
+
this.hasFocus = false;
|
|
600
|
+
this.focusedKnob = undefined;
|
|
601
|
+
this.ionBlur.emit();
|
|
602
|
+
}
|
|
603
|
+
};
|
|
604
|
+
onFocus = () => {
|
|
605
|
+
if (!this.hasFocus) {
|
|
606
|
+
this.hasFocus = true;
|
|
607
|
+
this.ionFocus.emit();
|
|
608
|
+
}
|
|
609
|
+
};
|
|
610
|
+
onKnobFocus = (knob) => {
|
|
611
|
+
// Clicking focuses the range which is needed for the keyboard,
|
|
612
|
+
// but we only want to add the ion-focused class when focused via Tab.
|
|
613
|
+
if (!this.focusFromPointer) {
|
|
614
|
+
this.focusedKnob = knob;
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
this.focusFromPointer = false;
|
|
618
|
+
this.focusedKnob = undefined;
|
|
619
|
+
}
|
|
620
|
+
// If the knob was not already focused, emit the focus event
|
|
621
|
+
if (!this.hasFocus) {
|
|
622
|
+
this.hasFocus = true;
|
|
623
|
+
this.ionFocus.emit();
|
|
624
|
+
}
|
|
625
|
+
};
|
|
626
|
+
onKnobBlur = () => {
|
|
627
|
+
// Check if focus is moving to another knob within the same range
|
|
628
|
+
// by delaying the reset to allow the new focus to register
|
|
629
|
+
setTimeout(() => {
|
|
630
|
+
const activeElement = this.el.shadowRoot?.activeElement;
|
|
631
|
+
const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
|
|
632
|
+
if (!isStillFocusedOnKnob) {
|
|
633
|
+
if (this.hasFocus) {
|
|
634
|
+
this.hasFocus = false;
|
|
635
|
+
this.focusedKnob = undefined;
|
|
636
|
+
this.ionBlur.emit();
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
}, 0);
|
|
640
|
+
};
|
|
641
|
+
onKnobMouseEnter = (knob) => {
|
|
642
|
+
this.hoveredKnob = knob;
|
|
643
|
+
};
|
|
644
|
+
onKnobMouseLeave = () => {
|
|
645
|
+
this.hoveredKnob = undefined;
|
|
646
|
+
};
|
|
582
647
|
/**
|
|
583
648
|
* Returns true if content was passed to the "start" slot
|
|
584
649
|
*/
|
|
@@ -595,7 +660,6 @@ export class Range {
|
|
|
595
660
|
return this.label !== undefined || this.el.querySelector('[slot="label"]') !== null;
|
|
596
661
|
}
|
|
597
662
|
renderRangeSlider() {
|
|
598
|
-
var _a;
|
|
599
663
|
const { min, max, step, handleKeyboard, activatedKnob, focusedKnob, hoveredKnob, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
|
|
600
664
|
let barStart = `${ratioLower * 100}%`;
|
|
601
665
|
let barEnd = `${100 - ratioUpper * 100}%`;
|
|
@@ -612,7 +676,7 @@ export class Range {
|
|
|
612
676
|
* When the value is less than the activeBarStart or the min value,
|
|
613
677
|
* the knob will display at the start of the active bar.
|
|
614
678
|
*/
|
|
615
|
-
if (this.valA < (
|
|
679
|
+
if (this.valA < (this.activeBarStart ?? this.min)) {
|
|
616
680
|
/**
|
|
617
681
|
* Sets the bar positions relative to the upper and lower limits.
|
|
618
682
|
* Converts the ratio values into percentages, used as offsets for left/right styles.
|
|
@@ -760,7 +824,7 @@ export class Range {
|
|
|
760
824
|
* Determine the name and position of the pressed knob to apply
|
|
761
825
|
* Host classes for styling.
|
|
762
826
|
*/
|
|
763
|
-
const pressedKnobName = dualKnobs ? pressedKnob
|
|
827
|
+
const pressedKnobName = dualKnobs ? pressedKnob?.toLowerCase() : undefined;
|
|
764
828
|
const pressedKnobPosition = dualKnobs && pressedKnob ? getKnobPosition(pressedKnob, this.ratioA, this.ratioB, dualKnobs) : undefined;
|
|
765
829
|
/**
|
|
766
830
|
* Determine if any knob is at the min or max value to
|
|
@@ -769,7 +833,7 @@ export class Range {
|
|
|
769
833
|
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
770
834
|
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
771
835
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
772
|
-
return (h(Host, { key: '
|
|
836
|
+
return (h(Host, { key: 'cd26f0187c0d37c7eb9df923f75c8a0f57c19ab6', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
|
|
773
837
|
[mode]: true,
|
|
774
838
|
'in-item': inItem,
|
|
775
839
|
'range-disabled': disabled,
|
|
@@ -783,10 +847,10 @@ export class Range {
|
|
|
783
847
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
784
848
|
'range-value-min': valueAtMin,
|
|
785
849
|
'range-value-max': valueAtMax,
|
|
786
|
-
}) }, h("label", { key: '
|
|
850
|
+
}) }, h("label", { key: '90224fd24b0e625a17e7972feff73a0ac31e093d', class: "range-wrapper", id: "range-label" }, h("div", { key: 'e07b9fa10983249c425eec26b741f0f628daf2b2', class: {
|
|
787
851
|
'label-text-wrapper': true,
|
|
788
852
|
'label-text-wrapper-hidden': !hasLabel,
|
|
789
|
-
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '
|
|
853
|
+
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '9e252f1190838fbae46e724bf665f9b1943600a4', class: "native-wrapper" }, h("slot", { key: '950697dd9636da340de659812daa91fff50e5345', name: "start" }), this.renderRangeSlider(), h("slot", { key: 'd3fce46b29db275af71e6149e725967839ec12b0', name: "end" })))));
|
|
790
854
|
}
|
|
791
855
|
static get is() { return "ion-range"; }
|
|
792
856
|
static get encapsulation() { return "shadow"; }
|