@ionic/core 7.5.8-dev.11702398696.1ab62ea9 → 7.5.8-dev.11703088210.14a72b83
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/backdrop.js +12 -0
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +64 -40
- package/components/ion-input.js +0 -2
- package/components/ion-picker-column-internal.d.ts +11 -0
- package/components/ion-picker-column-internal.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
- package/components/ion-picker-internal.js +9 -0
- package/components/ion-picker.js +309 -1
- package/components/ion-refresher-content.js +10 -3
- package/components/ion-refresher.js +4 -183
- package/components/ion-searchbar.js +0 -2
- package/components/ion-textarea.js +0 -2
- package/components/overlays.js +4 -11
- package/components/picker-column-internal.js +390 -0
- package/components/picker-column.js +322 -351
- package/components/{picker.js → picker-internal.js} +22 -29
- package/components/refresher.utils.js +196 -0
- package/dist/cjs/{app-globals-0af482c7.js → app-globals-28656db1.js} +1 -1
- package/dist/cjs/{button-active-9d7e0640.js → button-active-75b38d77.js} +2 -2
- package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
- package/dist/cjs/{gesture-controller-9436f482.js → gesture-controller-c40c045a.js} +0 -1
- package/dist/cjs/{index-5cbb20f9.js → index-097270a3.js} +1 -1
- package/dist/cjs/{index-bbb4336c.js → index-b0102f48.js} +1 -39
- package/dist/cjs/{index-d4c2e02c.js → index-cb3e0ab7.js} +3 -3
- package/dist/cjs/{index-ee07ed59.js → index-d1b59ffa.js} +1 -1
- package/dist/cjs/index.cjs.js +9 -9
- package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
- package/dist/cjs/ion-alert.cjs.entry.js +6 -6
- package/dist/cjs/ion-app_8.cjs.entry.js +6 -6
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +14 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-datetime_3.cjs.entry.js +58 -38
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +2 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-loading.cjs.entry.js +3 -4
- package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-modal.cjs.entry.js +6 -6
- package/dist/cjs/ion-nav_2.cjs.entry.js +4 -4
- package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +89 -106
- package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +20 -27
- package/dist/cjs/ion-popover.cjs.entry.js +4 -5
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +32 -17
- package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +2 -4
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select_3.cjs.entry.js +3 -4
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -4
- package/dist/cjs/ion-toast.cjs.entry.js +3 -4
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/{ionic-global-f4a2093b.js → ionic-global-62510d64.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-a4ffb5a2.js → ios.transition-d9c0e4fb.js} +2 -2
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-292abe1c.js → md.transition-4fac8a87.js} +2 -2
- package/dist/cjs/{overlays-e8e05b0e.js → overlays-b1471172.js} +5 -12
- package/dist/cjs/{status-tap-415acac6.js → status-tap-0aa8e1f2.js} +1 -1
- package/dist/cjs/{swipe-back-b8f2330b.js → swipe-back-2a858bbd.js} +2 -2
- package/dist/collection/collection-manifest.json +7 -8
- package/dist/collection/components/backdrop/backdrop.js +12 -0
- package/dist/collection/components/content/content.css +4 -0
- package/dist/collection/components/datetime/datetime.ios.css +37 -91
- package/dist/collection/components/datetime/datetime.js +36 -24
- package/dist/collection/components/datetime/datetime.md.css +37 -96
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
- package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/input/input.js +2 -4
- package/dist/collection/components/picker/picker.ios.css +211 -112
- package/dist/collection/components/picker/picker.js +743 -468
- package/dist/collection/components/picker/picker.md.css +198 -108
- package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
- package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-column/picker-column.js +335 -497
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
- package/dist/collection/components/{picker-column/picker-column.css → picker-column-internal/picker-column-internal.md.css} +83 -96
- package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
- package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
- package/dist/collection/components/picker-internal/picker-internal.js +544 -0
- package/dist/collection/components/{picker-legacy/picker.ios.css → picker-internal/picker-internal.md.css} +98 -207
- package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
- package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +32 -63
- package/dist/collection/components/refresher/refresher.utils.js +19 -11
- package/dist/collection/components/refresher-content/refresher-content.js +9 -3
- package/dist/collection/components/searchbar/searchbar.js +1 -3
- package/dist/collection/components/textarea/textarea.js +2 -4
- package/dist/collection/utils/gesture/gesture-controller.js +1 -1
- package/dist/collection/utils/overlays.js +4 -11
- package/dist/docs.json +47 -505
- package/dist/esm/{app-globals-722340c4.js → app-globals-c23144fc.js} +1 -1
- package/dist/esm/{button-active-ed9d848c.js → button-active-7013b5a1.js} +2 -2
- package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
- package/dist/esm/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
- package/dist/esm/{index-39782642.js → index-2cf77112.js} +2 -2
- package/dist/esm/{index-08d686eb.js → index-39329c6f.js} +1 -39
- package/dist/esm/{index-80492ed3.js → index-7a818ed3.js} +1 -1
- package/dist/esm/{index-d8817fb0.js → index-bebaae5d.js} +3 -3
- package/dist/esm/index.js +9 -9
- package/dist/esm/ion-accordion_2.entry.js +2 -2
- package/dist/esm/ion-action-sheet.entry.js +6 -6
- package/dist/esm/ion-alert.entry.js +6 -6
- package/dist/esm/ion-app_8.entry.js +6 -6
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +2 -2
- package/dist/esm/ion-backdrop.entry.js +14 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-card_5.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +2 -2
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +3 -3
- package/dist/esm/ion-datetime_3.entry.js +57 -37
- package/dist/esm/ion-fab_3.entry.js +2 -2
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +2 -4
- package/dist/esm/ion-item-option_3.entry.js +3 -3
- package/dist/esm/ion-item_8.entry.js +2 -2
- package/dist/esm/ion-loading.entry.js +3 -4
- package/dist/esm/ion-menu_3.entry.js +6 -6
- package/dist/esm/ion-modal.entry.js +6 -6
- package/dist/esm/ion-nav_2.entry.js +4 -4
- package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +89 -106
- package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +20 -27
- package/dist/esm/ion-popover.entry.js +4 -5
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +32 -17
- package/dist/esm/ion-reorder_2.entry.js +3 -3
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +2 -4
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select_3.entry.js +3 -4
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +2 -2
- package/dist/esm/ion-tab_2.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -4
- package/dist/esm/ion-toast.entry.js +3 -4
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/{ionic-global-c0cda98e.js → ionic-global-6c78e871.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-fd16bec1.js → ios.transition-daa373e9.js} +2 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-94ac93e1.js → md.transition-91c3d3cc.js} +2 -2
- package/dist/esm/{overlays-fbc5cab5.js → overlays-64e67e2c.js} +5 -12
- package/dist/esm/{status-tap-2b93b1b5.js → status-tap-9dd45200.js} +1 -1
- package/dist/esm/{swipe-back-a8ca7f93.js → swipe-back-a6f386fc.js} +2 -2
- package/dist/esm-es5/app-globals-c23144fc.js +4 -0
- package/dist/esm-es5/{button-active-ed9d848c.js → button-active-7013b5a1.js} +1 -1
- package/dist/esm-es5/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
- package/dist/esm-es5/{index-39782642.js → index-2cf77112.js} +1 -1
- package/dist/esm-es5/{index-08d686eb.js → index-39329c6f.js} +1 -1
- package/dist/esm-es5/{index-80492ed3.js → index-7a818ed3.js} +1 -1
- package/dist/esm-es5/{index-d8817fb0.js → index-bebaae5d.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
- package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-spinner.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-text.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/{ionic-global-c0cda98e.js → ionic-global-6c78e871.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-fd16bec1.js → ios.transition-daa373e9.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{md.transition-94ac93e1.js → md.transition-91c3d3cc.js} +1 -1
- package/dist/esm-es5/overlays-64e67e2c.js +4 -0
- package/dist/esm-es5/{status-tap-2b93b1b5.js → status-tap-9dd45200.js} +1 -1
- package/dist/esm-es5/swipe-back-a6f386fc.js +4 -0
- package/dist/html.html-data.json +3 -154
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/{p-30029cc2.system.js → p-0263eb49.system.js} +1 -1
- package/dist/ionic/p-06600f70.js +4 -0
- package/dist/ionic/p-0827d00e.system.entry.js +4 -0
- package/dist/ionic/{p-9738fd82.js → p-12cdcb59.js} +1 -1
- package/dist/ionic/{p-1161a793.entry.js → p-161d0916.entry.js} +1 -1
- package/dist/ionic/{p-1d624e03.system.js → p-1631b52f.system.js} +1 -1
- package/dist/ionic/{p-34c39c48.entry.js → p-18032a93.entry.js} +1 -1
- package/dist/ionic/p-19545a49.system.entry.js +4 -0
- package/dist/ionic/{p-cfe57b1b.entry.js → p-1c6c6098.entry.js} +1 -1
- package/dist/ionic/{p-6e70dd1a.system.entry.js → p-1cbc21e2.system.entry.js} +1 -1
- package/dist/ionic/p-1e7daa1f.entry.js +4 -0
- package/dist/ionic/{p-2092f39f.entry.js → p-1ff22253.entry.js} +1 -1
- package/dist/ionic/{p-5ecae037.js → p-21f015cf.js} +1 -1
- package/dist/ionic/{p-3fd26bd6.system.entry.js → p-23a27e78.system.entry.js} +1 -1
- package/dist/ionic/p-2507b0c0.entry.js +4 -0
- package/dist/ionic/{p-22e5af95.entry.js → p-2657f213.entry.js} +1 -1
- package/dist/ionic/{p-6fd64e7c.system.entry.js → p-27a5f2c7.system.entry.js} +1 -1
- package/dist/ionic/{p-4a081ea9.entry.js → p-27e6473f.entry.js} +1 -1
- package/dist/ionic/{p-6ad34705.system.entry.js → p-2a7e6572.system.entry.js} +1 -1
- package/dist/ionic/{p-77965464.system.entry.js → p-2ac9d078.system.entry.js} +1 -1
- package/dist/ionic/{p-4fb51e61.system.entry.js → p-2cd9cb80.system.entry.js} +1 -1
- package/dist/ionic/{p-17da5ed1.entry.js → p-312221db.entry.js} +1 -1
- package/dist/ionic/{p-a225bf0f.system.entry.js → p-315ad733.system.entry.js} +1 -1
- package/dist/ionic/{p-3e1e14d9.system.js → p-31b2326e.system.js} +1 -1
- package/dist/ionic/p-33f3cd49.entry.js +4 -0
- package/dist/ionic/{p-5b365ca7.system.js → p-34d6f520.system.js} +1 -1
- package/dist/ionic/{p-b133e9b4.entry.js → p-3535a36c.entry.js} +1 -1
- package/dist/ionic/p-35ce400e.system.js +4 -0
- package/dist/ionic/{p-93000a81.system.entry.js → p-3acad8ff.system.entry.js} +1 -1
- package/dist/ionic/{p-b5f9f14c.entry.js → p-3cb5466e.entry.js} +1 -1
- package/dist/ionic/{p-1fc72959.entry.js → p-3f5ae764.entry.js} +1 -1
- package/dist/ionic/{p-42ba3902.entry.js → p-405f1a72.entry.js} +1 -1
- package/dist/ionic/{p-96dbbac1.system.entry.js → p-41f7af3f.system.entry.js} +1 -1
- package/dist/ionic/{p-3fe96156.system.js → p-426bdba9.system.js} +1 -1
- package/dist/ionic/p-45db7949.system.entry.js +4 -0
- package/dist/ionic/{p-21c3515a.entry.js → p-46dbd723.entry.js} +1 -1
- package/dist/ionic/{p-ef126ae8.system.entry.js → p-4f71a9cf.system.entry.js} +1 -1
- package/dist/ionic/{p-a4afcc88.entry.js → p-53a3283e.entry.js} +1 -1
- package/dist/ionic/{p-4a36430f.system.entry.js → p-57c0d5bf.system.entry.js} +1 -1
- package/dist/ionic/p-58dd7c15.entry.js +4 -0
- package/dist/ionic/{p-b4a51c42.system.js → p-58ff9e5b.system.js} +1 -1
- package/dist/ionic/{p-cde52378.system.entry.js → p-5a7d5905.system.entry.js} +1 -1
- package/dist/ionic/p-5c7f13cd.system.entry.js +4 -0
- package/dist/ionic/{p-e8e86f69.system.entry.js → p-5f127075.system.entry.js} +1 -1
- package/dist/ionic/{p-4a31c99f.entry.js → p-5f46d93e.entry.js} +1 -1
- package/dist/ionic/{p-18ba8221.entry.js → p-5fb707e0.entry.js} +1 -1
- package/dist/ionic/{p-6fbecbda.entry.js → p-64af4468.entry.js} +1 -1
- package/dist/ionic/{p-232d1f22.entry.js → p-6744eca5.entry.js} +1 -1
- package/dist/ionic/{p-8f5d30f5.entry.js → p-67598744.entry.js} +1 -1
- package/dist/ionic/p-6a6477b2.js +4 -0
- package/dist/ionic/{p-7b725280.entry.js → p-6cf08720.entry.js} +1 -1
- package/dist/ionic/{p-6d72fb44.entry.js → p-70ecb18b.entry.js} +1 -1
- package/dist/ionic/{p-6b7c55cd.entry.js → p-71d986ae.entry.js} +1 -1
- package/dist/ionic/p-742e11cf.system.entry.js +4 -0
- package/dist/ionic/{p-f7a36cd0.system.js → p-7484b1d6.system.js} +1 -1
- package/dist/ionic/p-78ebf1b6.system.entry.js +4 -0
- package/dist/ionic/{p-b7010c69.system.entry.js → p-7ae5ca1f.system.entry.js} +1 -1
- package/dist/ionic/{p-c847fb35.system.entry.js → p-8261be6c.system.entry.js} +1 -1
- package/dist/ionic/p-83fada9e.system.entry.js +4 -0
- package/dist/ionic/{p-353b349d.entry.js → p-86c2bbc8.entry.js} +1 -1
- package/dist/ionic/{p-1208f939.entry.js → p-89026d53.entry.js} +1 -1
- package/dist/ionic/{p-9c229210.system.entry.js → p-89cfbc88.system.entry.js} +2 -2
- package/dist/ionic/p-8a10752d.entry.js +4 -0
- package/dist/ionic/{p-e7ea9815.system.entry.js → p-8a75f7bf.system.entry.js} +1 -1
- package/dist/ionic/{p-32303650.system.entry.js → p-8c202d6e.system.entry.js} +1 -1
- package/dist/ionic/{p-a9e3b5be.system.entry.js → p-90db28f8.system.entry.js} +1 -1
- package/dist/ionic/{p-d662d908.js → p-91f9e81b.js} +1 -1
- package/dist/ionic/{p-f910cc73.system.entry.js → p-93dac17a.system.entry.js} +1 -1
- package/dist/ionic/{p-b3b3efba.system.entry.js → p-98ac0e27.system.entry.js} +2 -2
- package/dist/ionic/{p-a98dc0c1.entry.js → p-99fe0543.entry.js} +1 -1
- package/dist/ionic/{p-c9a21dfd.system.entry.js → p-9f376964.system.entry.js} +1 -1
- package/dist/ionic/{p-0e53f8ea.system.entry.js → p-a0945c3a.system.entry.js} +1 -1
- package/dist/ionic/{p-9709ebd8.system.entry.js → p-a0db3de9.system.entry.js} +1 -1
- package/dist/ionic/{p-5d42b6b4.entry.js → p-a1b4dba7.entry.js} +1 -1
- package/dist/ionic/{p-3f6270b3.entry.js → p-a3a145d3.entry.js} +1 -1
- package/dist/ionic/{p-5a68960f.entry.js → p-a5c81b99.entry.js} +1 -1
- package/dist/ionic/{p-98f3d827.entry.js → p-a70b5d24.entry.js} +1 -1
- package/dist/ionic/{p-ab9456e9.system.entry.js → p-a843a90e.system.entry.js} +1 -1
- package/dist/ionic/{p-b752714f.system.entry.js → p-a99f14a7.system.entry.js} +1 -1
- package/dist/ionic/{p-564af202.system.entry.js → p-aac289d2.system.entry.js} +1 -1
- package/dist/ionic/{p-57477107.system.js → p-abab375b.system.js} +1 -1
- package/dist/ionic/{p-31158892.js → p-ac4a7fc0.js} +1 -1
- package/dist/ionic/{p-c3c3333a.js → p-acdd8148.js} +1 -1
- package/dist/ionic/{p-54dfc9b5.system.js → p-ad78c421.system.js} +1 -1
- package/dist/ionic/{p-caf21b46.system.entry.js → p-ad953217.system.entry.js} +1 -1
- package/dist/ionic/p-af959b5d.entry.js +4 -0
- package/dist/ionic/{p-b6f5e4f2.system.entry.js → p-b0fcf130.system.entry.js} +1 -1
- package/dist/ionic/p-b11ceee2.entry.js +4 -0
- package/dist/ionic/p-b5e33ebc.system.entry.js +4 -0
- package/dist/ionic/{p-2938823a.system.entry.js → p-b81a8111.system.entry.js} +1 -1
- package/dist/ionic/p-b8f2134e.js +4 -0
- package/dist/ionic/{p-9b97df10.js → p-bb3615f7.js} +1 -1
- package/dist/ionic/p-bbe3feee.entry.js +4 -0
- package/dist/ionic/{p-fbf3a689.system.entry.js → p-bc97b5cd.system.entry.js} +1 -1
- package/dist/ionic/{p-d37b441e.entry.js → p-c04accad.entry.js} +1 -1
- package/dist/ionic/{p-e3584231.system.js → p-c5ae50be.system.js} +1 -1
- package/dist/ionic/{p-20d469d0.system.js → p-c7c8429a.system.js} +1 -1
- package/dist/ionic/{p-c18de88a.system.entry.js → p-ca32685b.system.entry.js} +1 -1
- package/dist/ionic/p-cde72008.js +4 -0
- package/dist/ionic/p-d0251fc4.entry.js +4 -0
- package/dist/ionic/p-d1530ea9.entry.js +4 -0
- package/dist/ionic/{p-51a087d6.entry.js → p-d3e123c0.entry.js} +1 -1
- package/dist/ionic/p-ddccf1f4.js +4 -0
- package/dist/ionic/{p-2ab4e925.system.entry.js → p-df361680.system.entry.js} +1 -1
- package/dist/ionic/p-e145b9f9.entry.js +4 -0
- package/dist/ionic/{p-4155f352.system.js → p-e26030f8.system.js} +1 -1
- package/dist/ionic/{p-c91ccbfa.system.entry.js → p-e3c44332.system.entry.js} +1 -1
- package/dist/ionic/{p-f8a5bb89.entry.js → p-e4045e04.entry.js} +1 -1
- package/dist/ionic/{p-535d2a67.entry.js → p-e8e530fc.entry.js} +1 -1
- package/dist/ionic/p-eab6401e.js +4 -0
- package/dist/ionic/p-edc5c693.system.entry.js +4 -0
- package/dist/ionic/{p-4911a5d6.entry.js → p-ee4a54e3.entry.js} +1 -1
- package/dist/ionic/{p-5bebc7b3.system.entry.js → p-eef8d7e8.system.entry.js} +1 -1
- package/dist/ionic/p-f0384573.system.entry.js +4 -0
- package/dist/ionic/p-f10de9d5.system.js +4 -0
- package/dist/ionic/{p-0add7211.entry.js → p-f34d6a49.entry.js} +1 -1
- package/dist/ionic/p-f444fea5.entry.js +4 -0
- package/dist/ionic/{p-8ededb41.js → p-f5d2dc9b.js} +1 -1
- package/dist/ionic/{p-d3b030b8.system.js → p-f8c5a0dd.system.js} +1 -1
- package/dist/ionic/p-fcf49977.system.entry.js +4 -0
- package/dist/types/components/backdrop/backdrop.d.ts +3 -0
- package/dist/types/components/datetime/datetime.d.ts +1 -0
- package/dist/types/components/datetime/utils/data.d.ts +7 -11
- package/dist/types/components/input/input.d.ts +1 -5
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker.d.ts +131 -74
- package/dist/types/components/picker-column/picker-column.d.ts +39 -99
- package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +5 -0
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
- package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
- package/dist/types/components/refresher/refresher.utils.d.ts +16 -0
- package/dist/types/components/searchbar/searchbar.d.ts +0 -2
- package/dist/types/components/textarea/textarea.d.ts +1 -5
- package/dist/types/components.d.ts +129 -162
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
- package/dist/types/utils/overlays.d.ts +2 -5
- package/hydrate/index.d.ts +1 -1
- package/hydrate/index.js +948 -1040
- package/package.json +2 -2
- package/components/ion-picker-column-option.d.ts +0 -11
- package/components/ion-picker-column-option.js +0 -9
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -9
- package/components/ion-picker-legacy.js +0 -309
- package/components/picker-column-option.js +0 -122
- package/components/picker-column2.js +0 -379
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
- package/dist/collection/components/picker/test/custom/picker.e2e.js +0 -85
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -91
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
- package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
- package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +0 -29
- package/dist/collection/components/picker-legacy/picker.js +0 -817
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
- package/dist/esm/ion-picker-column-option.entry.js +0 -100
- package/dist/esm-es5/app-globals-722340c4.js +0 -4
- package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
- package/dist/esm-es5/ion-picker-column.entry.js +0 -4
- package/dist/esm-es5/ion-picker.entry.js +0 -4
- package/dist/esm-es5/overlays-fbc5cab5.js +0 -4
- package/dist/esm-es5/swipe-back-a8ca7f93.js +0 -4
- package/dist/ionic/p-1786bc72.js +0 -4
- package/dist/ionic/p-26798a7b.system.entry.js +0 -4
- package/dist/ionic/p-27bcbbc7.system.entry.js +0 -4
- package/dist/ionic/p-350f7292.system.entry.js +0 -4
- package/dist/ionic/p-36d194c5.entry.js +0 -4
- package/dist/ionic/p-3993ae66.entry.js +0 -4
- package/dist/ionic/p-3ba01a9c.system.entry.js +0 -4
- package/dist/ionic/p-4890093d.js +0 -4
- package/dist/ionic/p-51abefb7.system.js +0 -4
- package/dist/ionic/p-563c41f0.system.entry.js +0 -4
- package/dist/ionic/p-588fdf40.entry.js +0 -4
- package/dist/ionic/p-5a1aac13.system.entry.js +0 -4
- package/dist/ionic/p-73190c5f.entry.js +0 -4
- package/dist/ionic/p-73aa7604.entry.js +0 -4
- package/dist/ionic/p-76d3765d.js +0 -4
- package/dist/ionic/p-8017aad2.system.entry.js +0 -4
- package/dist/ionic/p-846ee227.entry.js +0 -4
- package/dist/ionic/p-8c97cdc0.entry.js +0 -4
- package/dist/ionic/p-8e42850f.entry.js +0 -4
- package/dist/ionic/p-8fa6583d.system.js +0 -4
- package/dist/ionic/p-91af3c52.system.entry.js +0 -4
- package/dist/ionic/p-a60a1ce5.js +0 -4
- package/dist/ionic/p-a8baa23e.entry.js +0 -4
- package/dist/ionic/p-a9a80f5b.entry.js +0 -4
- package/dist/ionic/p-afcf4620.entry.js +0 -4
- package/dist/ionic/p-b4d31b30.system.entry.js +0 -4
- package/dist/ionic/p-c41bff4e.system.entry.js +0 -4
- package/dist/ionic/p-ca8938f4.js +0 -4
- package/dist/ionic/p-da15f571.system.entry.js +0 -4
- package/dist/ionic/p-e4d90573.js +0 -4
- package/dist/ionic/p-ea69616e.entry.js +0 -4
- package/dist/ionic/p-fe4dde76.entry.js +0 -4
- package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
- package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
- package/dist/types/components/picker-column/picker-column-interfaces.d.ts +0 -4
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
- 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/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.ios.css +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.md.css +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
- /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
- /package/dist/esm-es5/{data-4b9508c9.js → data-f5c75b4e.js} +0 -0
- /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
- /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.system.js} +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
|
@@ -2,580 +2,418 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h } from "@stencil/core";
|
|
5
|
-
import {
|
|
6
|
-
import { getElementRoot, raf } from "../../utils/helpers";
|
|
5
|
+
import { clamp } from "../../utils/helpers";
|
|
7
6
|
import { hapticSelectionChanged, hapticSelectionEnd, hapticSelectionStart } from "../../utils/native/haptic";
|
|
8
|
-
import {
|
|
9
|
-
import { createColorClasses } from "../../utils/theme";
|
|
7
|
+
import { getClassMap } from "../../utils/theme";
|
|
10
8
|
import { getIonMode } from "../../global/ionic-global";
|
|
11
9
|
/**
|
|
12
|
-
* @
|
|
13
|
-
*
|
|
14
|
-
* @slot prefix - Content to show on the left side of the picker options.
|
|
15
|
-
* @slot suffix - Content to show on the right side of the picker options.
|
|
10
|
+
* @internal
|
|
16
11
|
*/
|
|
17
|
-
export class
|
|
12
|
+
export class PickerColumnCmp {
|
|
18
13
|
constructor() {
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
this.optHeight = 0;
|
|
15
|
+
this.rotateFactor = 0;
|
|
16
|
+
this.scaleFactor = 1;
|
|
17
|
+
this.velocity = 0;
|
|
18
|
+
this.y = 0;
|
|
19
|
+
this.noAnimate = true;
|
|
20
|
+
// `colDidChange` is a flag that gets set when the column is changed
|
|
21
|
+
// dynamically. When this flag is set, the column will refresh
|
|
22
|
+
// after the component re-renders to incorporate the new column data.
|
|
23
|
+
// This is necessary because `this.refresh` queries for the option elements,
|
|
24
|
+
// so it needs to wait for the latest elements to be available in the DOM.
|
|
25
|
+
// Ex: column is created with 3 options. User updates the column data
|
|
26
|
+
// to have 5 options. The column will still think it only has 3 options.
|
|
27
|
+
this.colDidChange = false;
|
|
28
|
+
this.col = undefined;
|
|
29
|
+
}
|
|
30
|
+
colChanged() {
|
|
31
|
+
this.colDidChange = true;
|
|
32
|
+
}
|
|
33
|
+
async connectedCallback() {
|
|
34
|
+
let pickerRotateFactor = 0;
|
|
35
|
+
let pickerScaleFactor = 0.81;
|
|
36
|
+
const mode = getIonMode(this);
|
|
37
|
+
if (mode === 'ios') {
|
|
38
|
+
pickerRotateFactor = -0.46;
|
|
39
|
+
pickerScaleFactor = 1;
|
|
40
|
+
}
|
|
41
|
+
this.rotateFactor = pickerRotateFactor;
|
|
42
|
+
this.scaleFactor = pickerScaleFactor;
|
|
43
|
+
this.gesture = (await import('../../utils/gesture')).createGesture({
|
|
44
|
+
el: this.el,
|
|
45
|
+
gestureName: 'picker-swipe',
|
|
46
|
+
gesturePriority: 100,
|
|
47
|
+
threshold: 0,
|
|
48
|
+
passive: false,
|
|
49
|
+
onStart: (ev) => this.onStart(ev),
|
|
50
|
+
onMove: (ev) => this.onMove(ev),
|
|
51
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
52
|
+
});
|
|
53
|
+
this.gesture.enable();
|
|
54
|
+
// Options have not been initialized yet
|
|
55
|
+
// Animation must be disabled through the `noAnimate` flag
|
|
56
|
+
// Otherwise, the options will render
|
|
57
|
+
// at the top of the column and transition down
|
|
58
|
+
this.tmrId = setTimeout(() => {
|
|
59
|
+
this.noAnimate = false;
|
|
60
|
+
// After initialization, `refresh()` will be called
|
|
61
|
+
// At this point, animation will be enabled. The options will
|
|
62
|
+
// animate as they are being selected.
|
|
63
|
+
this.refresh(true);
|
|
64
|
+
}, 250);
|
|
65
|
+
}
|
|
66
|
+
componentDidLoad() {
|
|
67
|
+
this.onDomChange();
|
|
68
|
+
}
|
|
69
|
+
componentDidUpdate() {
|
|
70
|
+
// Options may have changed since last update.
|
|
71
|
+
if (this.colDidChange) {
|
|
72
|
+
// Animation must be disabled through the `onDomChange` parameter.
|
|
73
|
+
// Otherwise, the recently added options will render
|
|
74
|
+
// at the top of the column and transition down
|
|
75
|
+
this.onDomChange(true, false);
|
|
76
|
+
this.colDidChange = false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
disconnectedCallback() {
|
|
80
|
+
if (this.rafId !== undefined)
|
|
81
|
+
cancelAnimationFrame(this.rafId);
|
|
82
|
+
if (this.tmrId)
|
|
83
|
+
clearTimeout(this.tmrId);
|
|
84
|
+
if (this.gesture) {
|
|
85
|
+
this.gesture.destroy();
|
|
86
|
+
this.gesture = undefined;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
emitColChange() {
|
|
90
|
+
this.ionPickerColChange.emit(this.col);
|
|
91
|
+
}
|
|
92
|
+
setSelected(selectedIndex, duration) {
|
|
93
|
+
// if there is a selected index, then figure out it's y position
|
|
94
|
+
// if there isn't a selected index, then just use the top y position
|
|
95
|
+
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
96
|
+
this.velocity = 0;
|
|
97
|
+
// set what y position we're at
|
|
98
|
+
if (this.rafId !== undefined)
|
|
99
|
+
cancelAnimationFrame(this.rafId);
|
|
100
|
+
this.update(y, duration, true);
|
|
101
|
+
this.emitColChange();
|
|
102
|
+
}
|
|
103
|
+
update(y, duration, saveY) {
|
|
104
|
+
if (!this.optsEl) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// ensure we've got a good round number :)
|
|
108
|
+
let translateY = 0;
|
|
109
|
+
let translateZ = 0;
|
|
110
|
+
const { col, rotateFactor } = this;
|
|
111
|
+
const prevSelected = col.selectedIndex;
|
|
112
|
+
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
113
|
+
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
114
|
+
const scaleStr = `scale(${this.scaleFactor})`;
|
|
115
|
+
const children = this.optsEl.children;
|
|
116
|
+
for (let i = 0; i < children.length; i++) {
|
|
117
|
+
const button = children[i];
|
|
118
|
+
const opt = col.options[i];
|
|
119
|
+
const optOffset = i * this.optHeight + y;
|
|
120
|
+
let transform = '';
|
|
121
|
+
if (rotateFactor !== 0) {
|
|
122
|
+
const rotateX = optOffset * rotateFactor;
|
|
123
|
+
if (Math.abs(rotateX) <= 90) {
|
|
124
|
+
translateY = 0;
|
|
125
|
+
translateZ = 90;
|
|
126
|
+
transform = `rotateX(${rotateX}deg) `;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
translateY = -9999;
|
|
41
130
|
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
this.setPickerItemActiveState = (item, isActive) => {
|
|
45
|
-
if (isActive) {
|
|
46
|
-
item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
|
|
47
131
|
}
|
|
48
132
|
else {
|
|
49
|
-
|
|
133
|
+
translateZ = 0;
|
|
134
|
+
translateY = optOffset;
|
|
50
135
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
* for text entry.
|
|
56
|
-
*/
|
|
57
|
-
this.inputModeChange = (ev) => {
|
|
58
|
-
if (!this.numericInput) {
|
|
59
|
-
return;
|
|
136
|
+
const selected = selectedIndex === i;
|
|
137
|
+
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
138
|
+
if (this.scaleFactor !== 1 && !selected) {
|
|
139
|
+
transform += scaleStr;
|
|
60
140
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
*/
|
|
66
|
-
const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
|
|
67
|
-
if (!useInputMode || !isColumnActive) {
|
|
68
|
-
this.setInputModeActive(false);
|
|
69
|
-
return;
|
|
141
|
+
// Update transition duration
|
|
142
|
+
if (this.noAnimate) {
|
|
143
|
+
opt.duration = 0;
|
|
144
|
+
button.style.transitionDuration = '';
|
|
70
145
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
* Setting isActive will cause a re-render.
|
|
75
|
-
* As a result, we do not want to cause the
|
|
76
|
-
* re-render mid scroll as this will cause
|
|
77
|
-
* the picker column to jump back to
|
|
78
|
-
* whatever value was selected at the
|
|
79
|
-
* start of the scroll interaction.
|
|
80
|
-
*/
|
|
81
|
-
this.setInputModeActive = (state) => {
|
|
82
|
-
if (this.isScrolling) {
|
|
83
|
-
this.scrollEndCallback = () => {
|
|
84
|
-
this.isActive = state;
|
|
85
|
-
};
|
|
86
|
-
return;
|
|
146
|
+
else if (duration !== opt.duration) {
|
|
147
|
+
opt.duration = duration;
|
|
148
|
+
button.style.transitionDuration = durationStr;
|
|
87
149
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
* in the view and will emit an ionChange with
|
|
94
|
-
* the item object.
|
|
95
|
-
*/
|
|
96
|
-
this.initializeScrollListener = () => {
|
|
97
|
-
/**
|
|
98
|
-
* The haptics for the wheel picker are
|
|
99
|
-
* an iOS-only feature. As a result, they should
|
|
100
|
-
* be disabled on Android.
|
|
101
|
-
*/
|
|
102
|
-
const enableHaptics = isPlatform('ios');
|
|
103
|
-
const { el, scrollEl } = this;
|
|
104
|
-
let timeout;
|
|
105
|
-
let activeEl = this.activeItem;
|
|
106
|
-
const scrollCallback = () => {
|
|
107
|
-
raf(() => {
|
|
108
|
-
if (!scrollEl)
|
|
109
|
-
return;
|
|
110
|
-
if (timeout) {
|
|
111
|
-
clearTimeout(timeout);
|
|
112
|
-
timeout = undefined;
|
|
113
|
-
}
|
|
114
|
-
if (!this.isScrolling) {
|
|
115
|
-
enableHaptics && hapticSelectionStart();
|
|
116
|
-
this.isScrolling = true;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Select item in the center of the column
|
|
120
|
-
* which is the month/year that we want to select
|
|
121
|
-
*/
|
|
122
|
-
const bbox = scrollEl.getBoundingClientRect();
|
|
123
|
-
const centerX = bbox.x + bbox.width / 2;
|
|
124
|
-
const centerY = bbox.y + bbox.height / 2;
|
|
125
|
-
/**
|
|
126
|
-
* elementFromPoint returns the top-most element.
|
|
127
|
-
* This means that if an ion-backdrop is overlaying the
|
|
128
|
-
* picker then the appropriate picker column option will
|
|
129
|
-
* not be selected. To account for this, we use elementsFromPoint
|
|
130
|
-
* and use an Array.find to find the appropriate column option
|
|
131
|
-
* at that point.
|
|
132
|
-
*
|
|
133
|
-
* Additionally, the picker column could be used in the
|
|
134
|
-
* Shadow DOM (i.e. in ion-datetime) so we need to make
|
|
135
|
-
* sure we are choosing the correct host otherwise
|
|
136
|
-
* the elements returns by elementsFromPoint will be
|
|
137
|
-
* retargeted. To account for this, we check to see
|
|
138
|
-
* if the picker column has a parent shadow root. If
|
|
139
|
-
* so, we use that shadow root when doing elementsFromPoint.
|
|
140
|
-
* Otherwise, we just use the document.
|
|
141
|
-
*/
|
|
142
|
-
const rootNode = el.getRootNode();
|
|
143
|
-
const hasParentShadow = rootNode instanceof ShadowRoot;
|
|
144
|
-
const referenceNode = hasParentShadow ? rootNode : doc;
|
|
145
|
-
/**
|
|
146
|
-
* If the reference node is undefined
|
|
147
|
-
* then it's likely that doc is undefined
|
|
148
|
-
* due to being in an SSR environment.
|
|
149
|
-
*/
|
|
150
|
-
if (referenceNode === undefined) {
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
|
|
154
|
-
/**
|
|
155
|
-
* elementsFromPoint can returns multiple elements
|
|
156
|
-
* so find the relevant picker column option if one exists.
|
|
157
|
-
*/
|
|
158
|
-
const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
|
|
159
|
-
if (activeEl !== undefined) {
|
|
160
|
-
this.setPickerItemActiveState(activeEl, false);
|
|
161
|
-
}
|
|
162
|
-
if (newActiveElement === undefined || newActiveElement.disabled) {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* If we are selecting a new value,
|
|
167
|
-
* we need to run haptics again.
|
|
168
|
-
*/
|
|
169
|
-
if (newActiveElement !== activeEl) {
|
|
170
|
-
enableHaptics && hapticSelectionChanged();
|
|
171
|
-
if (this.canExitInputMode) {
|
|
172
|
-
/**
|
|
173
|
-
* The native iOS wheel picker
|
|
174
|
-
* only dismisses the keyboard
|
|
175
|
-
* once the selected item has changed
|
|
176
|
-
* as a result of a swipe
|
|
177
|
-
* from the user. If `canExitInputMode` is
|
|
178
|
-
* `false` then this means that the
|
|
179
|
-
* scroll is happening as a result of
|
|
180
|
-
* the `value` property programmatically changing
|
|
181
|
-
* either by an application or by the user via the keyboard.
|
|
182
|
-
*/
|
|
183
|
-
this.exitInputMode();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
activeEl = newActiveElement;
|
|
187
|
-
this.setPickerItemActiveState(newActiveElement, true);
|
|
188
|
-
timeout = setTimeout(() => {
|
|
189
|
-
this.isScrolling = false;
|
|
190
|
-
enableHaptics && hapticSelectionEnd();
|
|
191
|
-
/**
|
|
192
|
-
* Certain tasks (such as those that
|
|
193
|
-
* cause re-renders) should only be done
|
|
194
|
-
* once scrolling has finished, otherwise
|
|
195
|
-
* flickering may occur.
|
|
196
|
-
*/
|
|
197
|
-
const { scrollEndCallback } = this;
|
|
198
|
-
if (scrollEndCallback) {
|
|
199
|
-
scrollEndCallback();
|
|
200
|
-
this.scrollEndCallback = undefined;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Reset this flag as the
|
|
204
|
-
* next scroll interaction could
|
|
205
|
-
* be a scroll from the user. In this
|
|
206
|
-
* case, we should exit input mode.
|
|
207
|
-
*/
|
|
208
|
-
this.canExitInputMode = true;
|
|
209
|
-
this.setValue(newActiveElement.value);
|
|
210
|
-
}, 250);
|
|
211
|
-
});
|
|
212
|
-
};
|
|
213
|
-
/**
|
|
214
|
-
* Wrap this in an raf so that the scroll callback
|
|
215
|
-
* does not fire when component is initially shown.
|
|
216
|
-
*/
|
|
217
|
-
raf(() => {
|
|
218
|
-
if (!scrollEl)
|
|
219
|
-
return;
|
|
220
|
-
scrollEl.addEventListener('scroll', scrollCallback);
|
|
221
|
-
this.destroyScrollListener = () => {
|
|
222
|
-
scrollEl.removeEventListener('scroll', scrollCallback);
|
|
223
|
-
};
|
|
224
|
-
});
|
|
225
|
-
};
|
|
226
|
-
/**
|
|
227
|
-
* Tells the parent picker to
|
|
228
|
-
* exit text entry mode. This is only called
|
|
229
|
-
* when the selected item changes during scroll, so
|
|
230
|
-
* we know that the user likely wants to scroll
|
|
231
|
-
* instead of type.
|
|
232
|
-
*/
|
|
233
|
-
this.exitInputMode = () => {
|
|
234
|
-
const { parentEl } = this;
|
|
235
|
-
if (parentEl == null)
|
|
236
|
-
return;
|
|
237
|
-
parentEl.exitInputMode();
|
|
238
|
-
/**
|
|
239
|
-
* setInputModeActive only takes
|
|
240
|
-
* effect once scrolling stops to avoid
|
|
241
|
-
* a component re-render while scrolling.
|
|
242
|
-
* However, we want the visual active
|
|
243
|
-
* indicator to go away immediately, so
|
|
244
|
-
* we call classList.remove here.
|
|
245
|
-
*/
|
|
246
|
-
this.el.classList.remove('picker-column-active');
|
|
247
|
-
};
|
|
248
|
-
this.isActive = false;
|
|
249
|
-
this.disabled = false;
|
|
250
|
-
this.value = undefined;
|
|
251
|
-
this.color = 'primary';
|
|
252
|
-
this.numericInput = false;
|
|
253
|
-
}
|
|
254
|
-
valueChange() {
|
|
255
|
-
if (this.isColumnVisible) {
|
|
150
|
+
// Update transform
|
|
151
|
+
if (transform !== opt.transform) {
|
|
152
|
+
opt.transform = transform;
|
|
153
|
+
}
|
|
154
|
+
button.style.transform = transform;
|
|
256
155
|
/**
|
|
257
|
-
*
|
|
258
|
-
*
|
|
156
|
+
* Ensure that the select column
|
|
157
|
+
* item has the selected class
|
|
259
158
|
*/
|
|
260
|
-
|
|
159
|
+
opt.selected = selected;
|
|
160
|
+
if (selected) {
|
|
161
|
+
button.classList.add(PICKER_OPT_SELECTED);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
button.classList.remove(PICKER_OPT_SELECTED);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
this.col.prevSelected = prevSelected;
|
|
168
|
+
if (saveY) {
|
|
169
|
+
this.y = y;
|
|
170
|
+
}
|
|
171
|
+
if (this.lastIndex !== selectedIndex) {
|
|
172
|
+
// have not set a last index yet
|
|
173
|
+
hapticSelectionChanged();
|
|
174
|
+
this.lastIndex = selectedIndex;
|
|
261
175
|
}
|
|
262
176
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
this.setPickerItemActiveState(activeItem, true);
|
|
286
|
-
}
|
|
287
|
-
this.initializeScrollListener();
|
|
177
|
+
decelerate() {
|
|
178
|
+
if (this.velocity !== 0) {
|
|
179
|
+
// still decelerating
|
|
180
|
+
this.velocity *= DECELERATION_FRICTION;
|
|
181
|
+
// do not let it go slower than a velocity of 1
|
|
182
|
+
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
183
|
+
let y = this.y + this.velocity;
|
|
184
|
+
if (y > this.minY) {
|
|
185
|
+
// whoops, it's trying to scroll up farther than the options we have!
|
|
186
|
+
y = this.minY;
|
|
187
|
+
this.velocity = 0;
|
|
188
|
+
}
|
|
189
|
+
else if (y < this.maxY) {
|
|
190
|
+
// gahh, it's trying to scroll down farther than we can!
|
|
191
|
+
y = this.maxY;
|
|
192
|
+
this.velocity = 0;
|
|
193
|
+
}
|
|
194
|
+
this.update(y, 0, true);
|
|
195
|
+
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
196
|
+
if (notLockedIn) {
|
|
197
|
+
// isn't locked in yet, keep decelerating until it is
|
|
198
|
+
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
288
199
|
}
|
|
289
200
|
else {
|
|
290
|
-
this.
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
this.destroyScrollListener = undefined;
|
|
294
|
-
}
|
|
201
|
+
this.velocity = 0;
|
|
202
|
+
this.emitColChange();
|
|
203
|
+
hapticSelectionEnd();
|
|
295
204
|
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
//
|
|
301
|
-
|
|
205
|
+
}
|
|
206
|
+
else if (this.y % this.optHeight !== 0) {
|
|
207
|
+
// needs to still get locked into a position so options line up
|
|
208
|
+
const currentPos = Math.abs(this.y % this.optHeight);
|
|
209
|
+
// create a velocity in the direction it needs to scroll
|
|
210
|
+
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
211
|
+
this.decelerate();
|
|
302
212
|
}
|
|
303
213
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
214
|
+
indexForY(y) {
|
|
215
|
+
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
216
|
+
}
|
|
217
|
+
onStart(detail) {
|
|
218
|
+
// We have to prevent default in order to block scrolling under the picker
|
|
219
|
+
// but we DO NOT have to stop propagation, since we still want
|
|
220
|
+
// some "click" events to capture
|
|
221
|
+
if (detail.event.cancelable) {
|
|
222
|
+
detail.event.preventDefault();
|
|
223
|
+
}
|
|
224
|
+
detail.event.stopPropagation();
|
|
225
|
+
hapticSelectionStart();
|
|
226
|
+
// reset everything
|
|
227
|
+
if (this.rafId !== undefined)
|
|
228
|
+
cancelAnimationFrame(this.rafId);
|
|
229
|
+
const options = this.col.options;
|
|
230
|
+
let minY = options.length - 1;
|
|
231
|
+
let maxY = 0;
|
|
232
|
+
for (let i = 0; i < options.length; i++) {
|
|
233
|
+
if (!options[i].disabled) {
|
|
234
|
+
minY = Math.min(minY, i);
|
|
235
|
+
maxY = Math.max(maxY, i);
|
|
317
236
|
}
|
|
318
237
|
}
|
|
238
|
+
this.minY = -(minY * this.optHeight);
|
|
239
|
+
this.maxY = -(maxY * this.optHeight);
|
|
319
240
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
241
|
+
onMove(detail) {
|
|
242
|
+
if (detail.event.cancelable) {
|
|
243
|
+
detail.event.preventDefault();
|
|
244
|
+
}
|
|
245
|
+
detail.event.stopPropagation();
|
|
246
|
+
// update the scroll position relative to pointer start position
|
|
247
|
+
let y = this.y + detail.deltaY;
|
|
248
|
+
if (y > this.minY) {
|
|
249
|
+
// scrolling up higher than scroll area
|
|
250
|
+
y = Math.pow(y, 0.8);
|
|
251
|
+
this.bounceFrom = y;
|
|
325
252
|
}
|
|
253
|
+
else if (y < this.maxY) {
|
|
254
|
+
// scrolling down below scroll area
|
|
255
|
+
y += Math.pow(this.maxY - y, 0.9);
|
|
256
|
+
this.bounceFrom = y;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
this.bounceFrom = 0;
|
|
260
|
+
}
|
|
261
|
+
this.update(y, 0, false);
|
|
326
262
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
* @internal
|
|
333
|
-
*/
|
|
334
|
-
async setValue(value) {
|
|
335
|
-
if (this.disabled === true || this.value === value) {
|
|
263
|
+
onEnd(detail) {
|
|
264
|
+
if (this.bounceFrom > 0) {
|
|
265
|
+
// bounce back up
|
|
266
|
+
this.update(this.minY, 100, true);
|
|
267
|
+
this.emitColChange();
|
|
336
268
|
return;
|
|
337
269
|
}
|
|
338
|
-
this.
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
270
|
+
else if (this.bounceFrom < 0) {
|
|
271
|
+
// bounce back down
|
|
272
|
+
this.update(this.maxY, 100, true);
|
|
273
|
+
this.emitColChange();
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
277
|
+
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
278
|
+
const opt = detail.event.target.closest('.picker-opt');
|
|
279
|
+
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
280
|
+
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
this.y += detail.deltaY;
|
|
285
|
+
if (Math.abs(detail.velocityY) < 0.05) {
|
|
286
|
+
const isScrollingUp = detail.deltaY > 0;
|
|
287
|
+
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
288
|
+
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
289
|
+
this.velocity = Math.abs(this.velocity) * -1;
|
|
290
|
+
}
|
|
291
|
+
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
292
|
+
this.velocity = Math.abs(this.velocity);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
this.decelerate();
|
|
348
296
|
}
|
|
349
297
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
return false;
|
|
298
|
+
refresh(forceRefresh, animated) {
|
|
299
|
+
var _a;
|
|
300
|
+
let min = this.col.options.length - 1;
|
|
301
|
+
let max = 0;
|
|
302
|
+
const options = this.col.options;
|
|
303
|
+
for (let i = 0; i < options.length; i++) {
|
|
304
|
+
if (!options[i].disabled) {
|
|
305
|
+
min = Math.min(min, i);
|
|
306
|
+
max = Math.max(max, i);
|
|
360
307
|
}
|
|
361
|
-
|
|
362
|
-
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Only update selected value if column has a
|
|
311
|
+
* velocity of 0. If it does not, then the
|
|
312
|
+
* column is animating might land on
|
|
313
|
+
* a value different than the value at
|
|
314
|
+
* selectedIndex
|
|
315
|
+
*/
|
|
316
|
+
if (this.velocity !== 0) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
320
|
+
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
321
|
+
const y = selectedIndex * this.optHeight * -1;
|
|
322
|
+
const duration = animated ? TRANSITION_DURATION : 0;
|
|
323
|
+
this.velocity = 0;
|
|
324
|
+
this.update(y, duration, true);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
onDomChange(forceRefresh, animated) {
|
|
328
|
+
const colEl = this.optsEl;
|
|
329
|
+
if (colEl) {
|
|
330
|
+
// DOM READ
|
|
331
|
+
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
332
|
+
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
333
|
+
}
|
|
334
|
+
this.refresh(forceRefresh, animated);
|
|
363
335
|
}
|
|
364
336
|
render() {
|
|
365
|
-
const
|
|
337
|
+
const col = this.col;
|
|
366
338
|
const mode = getIonMode(this);
|
|
367
|
-
return (h(Host, { class:
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
['picker-column-numeric-input']: numericInput,
|
|
371
|
-
['picker-column-disabled']: disabled,
|
|
372
|
-
}) }, h("slot", { name: "prefix" }), h("div", { class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
|
|
373
|
-
this.scrollEl = el;
|
|
374
|
-
} }, h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", null), h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { name: "suffix" })));
|
|
339
|
+
return (h(Host, { class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
|
|
340
|
+
'max-width': this.col.columnWidth,
|
|
341
|
+
} }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
|
|
375
342
|
}
|
|
376
343
|
static get is() { return "ion-picker-column"; }
|
|
377
|
-
static get encapsulation() { return "shadow"; }
|
|
378
344
|
static get originalStyleUrls() {
|
|
379
345
|
return {
|
|
380
|
-
"
|
|
346
|
+
"ios": ["picker-column.ios.scss"],
|
|
347
|
+
"md": ["picker-column.md.scss"]
|
|
381
348
|
};
|
|
382
349
|
}
|
|
383
350
|
static get styleUrls() {
|
|
384
351
|
return {
|
|
385
|
-
"
|
|
352
|
+
"ios": ["picker-column.ios.css"],
|
|
353
|
+
"md": ["picker-column.md.css"]
|
|
386
354
|
};
|
|
387
355
|
}
|
|
388
356
|
static get properties() {
|
|
389
357
|
return {
|
|
390
|
-
"
|
|
391
|
-
"type": "
|
|
358
|
+
"col": {
|
|
359
|
+
"type": "unknown",
|
|
392
360
|
"mutable": false,
|
|
393
361
|
"complexType": {
|
|
394
|
-
"original": "
|
|
395
|
-
"resolved": "
|
|
396
|
-
"references": {}
|
|
397
|
-
},
|
|
398
|
-
"required": false,
|
|
399
|
-
"optional": false,
|
|
400
|
-
"docs": {
|
|
401
|
-
"tags": [],
|
|
402
|
-
"text": "If `true`, the user cannot interact with the picker."
|
|
403
|
-
},
|
|
404
|
-
"attribute": "disabled",
|
|
405
|
-
"reflect": false,
|
|
406
|
-
"defaultValue": "false"
|
|
407
|
-
},
|
|
408
|
-
"value": {
|
|
409
|
-
"type": "any",
|
|
410
|
-
"mutable": true,
|
|
411
|
-
"complexType": {
|
|
412
|
-
"original": "string | number",
|
|
413
|
-
"resolved": "number | string | undefined",
|
|
414
|
-
"references": {}
|
|
415
|
-
},
|
|
416
|
-
"required": false,
|
|
417
|
-
"optional": true,
|
|
418
|
-
"docs": {
|
|
419
|
-
"tags": [],
|
|
420
|
-
"text": "The selected option in the picker."
|
|
421
|
-
},
|
|
422
|
-
"attribute": "value",
|
|
423
|
-
"reflect": false
|
|
424
|
-
},
|
|
425
|
-
"color": {
|
|
426
|
-
"type": "string",
|
|
427
|
-
"mutable": false,
|
|
428
|
-
"complexType": {
|
|
429
|
-
"original": "Color",
|
|
430
|
-
"resolved": "\"danger\" | \"dark\" | \"light\" | \"medium\" | \"primary\" | \"secondary\" | \"success\" | \"tertiary\" | \"warning\" | string & Record<never, never> | undefined",
|
|
362
|
+
"original": "PickerColumn",
|
|
363
|
+
"resolved": "PickerColumn",
|
|
431
364
|
"references": {
|
|
432
|
-
"
|
|
365
|
+
"PickerColumn": {
|
|
433
366
|
"location": "import",
|
|
434
|
-
"path": "
|
|
435
|
-
"id": "src/interface.
|
|
367
|
+
"path": "../picker/picker-interface",
|
|
368
|
+
"id": "src/components/picker/picker-interface.ts::PickerColumn"
|
|
436
369
|
}
|
|
437
370
|
}
|
|
438
371
|
},
|
|
439
|
-
"required":
|
|
440
|
-
"optional": true,
|
|
441
|
-
"docs": {
|
|
442
|
-
"tags": [],
|
|
443
|
-
"text": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics)."
|
|
444
|
-
},
|
|
445
|
-
"attribute": "color",
|
|
446
|
-
"reflect": true,
|
|
447
|
-
"defaultValue": "'primary'"
|
|
448
|
-
},
|
|
449
|
-
"numericInput": {
|
|
450
|
-
"type": "boolean",
|
|
451
|
-
"mutable": false,
|
|
452
|
-
"complexType": {
|
|
453
|
-
"original": "boolean",
|
|
454
|
-
"resolved": "boolean",
|
|
455
|
-
"references": {}
|
|
456
|
-
},
|
|
457
|
-
"required": false,
|
|
372
|
+
"required": true,
|
|
458
373
|
"optional": false,
|
|
459
374
|
"docs": {
|
|
460
|
-
"tags": [
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}],
|
|
464
|
-
"text": "If `true`, tapping the picker will\nreveal a number input keyboard that lets\nthe user type in values for each picker\ncolumn. This is useful when working\nwith time pickers."
|
|
465
|
-
},
|
|
466
|
-
"attribute": "numeric-input",
|
|
467
|
-
"reflect": false,
|
|
468
|
-
"defaultValue": "false"
|
|
375
|
+
"tags": [],
|
|
376
|
+
"text": "Picker column data"
|
|
377
|
+
}
|
|
469
378
|
}
|
|
470
379
|
};
|
|
471
380
|
}
|
|
472
|
-
static get states() {
|
|
473
|
-
return {
|
|
474
|
-
"isActive": {}
|
|
475
|
-
};
|
|
476
|
-
}
|
|
477
381
|
static get events() {
|
|
478
382
|
return [{
|
|
479
|
-
"method": "
|
|
480
|
-
"name": "
|
|
383
|
+
"method": "ionPickerColChange",
|
|
384
|
+
"name": "ionPickerColChange",
|
|
481
385
|
"bubbles": true,
|
|
482
386
|
"cancelable": true,
|
|
483
387
|
"composed": true,
|
|
484
388
|
"docs": {
|
|
485
|
-
"tags": [],
|
|
486
|
-
"text": "Emitted when the value has changed."
|
|
487
|
-
},
|
|
488
|
-
"complexType": {
|
|
489
|
-
"original": "PickerColumnChangeEventDetail",
|
|
490
|
-
"resolved": "PickerColumnChangeEventDetail",
|
|
491
|
-
"references": {
|
|
492
|
-
"PickerColumnChangeEventDetail": {
|
|
493
|
-
"location": "import",
|
|
494
|
-
"path": "./picker-column-interfaces",
|
|
495
|
-
"id": "src/components/picker-column/picker-column-interfaces.ts::PickerColumnChangeEventDetail"
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
}];
|
|
500
|
-
}
|
|
501
|
-
static get methods() {
|
|
502
|
-
return {
|
|
503
|
-
"scrollActiveItemIntoView": {
|
|
504
|
-
"complexType": {
|
|
505
|
-
"signature": "(smooth?: boolean) => Promise<void>",
|
|
506
|
-
"parameters": [{
|
|
507
|
-
"tags": [],
|
|
508
|
-
"text": ""
|
|
509
|
-
}],
|
|
510
|
-
"references": {
|
|
511
|
-
"Promise": {
|
|
512
|
-
"location": "global",
|
|
513
|
-
"id": "global::Promise"
|
|
514
|
-
}
|
|
515
|
-
},
|
|
516
|
-
"return": "Promise<void>"
|
|
517
|
-
},
|
|
518
|
-
"docs": {
|
|
519
|
-
"text": "",
|
|
520
389
|
"tags": [{
|
|
521
390
|
"name": "internal",
|
|
522
391
|
"text": undefined
|
|
523
|
-
}]
|
|
524
|
-
}
|
|
525
|
-
},
|
|
526
|
-
"setValue": {
|
|
527
|
-
"complexType": {
|
|
528
|
-
"signature": "(value: PickerColumnValue) => Promise<void>",
|
|
529
|
-
"parameters": [{
|
|
530
|
-
"tags": [],
|
|
531
|
-
"text": ""
|
|
532
392
|
}],
|
|
533
|
-
"
|
|
534
|
-
"Promise": {
|
|
535
|
-
"location": "global",
|
|
536
|
-
"id": "global::Promise"
|
|
537
|
-
},
|
|
538
|
-
"PickerColumnValue": {
|
|
539
|
-
"location": "import",
|
|
540
|
-
"path": "./picker-column-interfaces",
|
|
541
|
-
"id": "src/components/picker-column/picker-column-interfaces.ts::PickerColumnValue"
|
|
542
|
-
}
|
|
543
|
-
},
|
|
544
|
-
"return": "Promise<void>"
|
|
393
|
+
"text": "Emitted when the selected value has changed"
|
|
545
394
|
},
|
|
546
|
-
"docs": {
|
|
547
|
-
"text": "Sets the value prop and fires the ionChange event.\nThis is used when we need to fire ionChange from\nuser-generated events that cannot be caught with normal\ninput/change event listeners.",
|
|
548
|
-
"tags": [{
|
|
549
|
-
"name": "internal",
|
|
550
|
-
"text": undefined
|
|
551
|
-
}]
|
|
552
|
-
}
|
|
553
|
-
},
|
|
554
|
-
"setFocus": {
|
|
555
395
|
"complexType": {
|
|
556
|
-
"
|
|
557
|
-
"
|
|
396
|
+
"original": "PickerColumn",
|
|
397
|
+
"resolved": "PickerColumn",
|
|
558
398
|
"references": {
|
|
559
|
-
"
|
|
560
|
-
"location": "
|
|
561
|
-
"
|
|
399
|
+
"PickerColumn": {
|
|
400
|
+
"location": "import",
|
|
401
|
+
"path": "../picker/picker-interface",
|
|
402
|
+
"id": "src/components/picker/picker-interface.ts::PickerColumn"
|
|
562
403
|
}
|
|
563
|
-
}
|
|
564
|
-
"return": "Promise<void>"
|
|
565
|
-
},
|
|
566
|
-
"docs": {
|
|
567
|
-
"text": "Sets focus on the scrollable container within the picker column.\nUse this method instead of the global `pickerColumn.focus()`.",
|
|
568
|
-
"tags": []
|
|
404
|
+
}
|
|
569
405
|
}
|
|
570
|
-
}
|
|
571
|
-
};
|
|
406
|
+
}];
|
|
572
407
|
}
|
|
573
408
|
static get elementRef() { return "el"; }
|
|
574
409
|
static get watchers() {
|
|
575
410
|
return [{
|
|
576
|
-
"propName": "
|
|
577
|
-
"methodName": "
|
|
411
|
+
"propName": "col",
|
|
412
|
+
"methodName": "colChanged"
|
|
578
413
|
}];
|
|
579
414
|
}
|
|
580
415
|
}
|
|
581
|
-
const
|
|
416
|
+
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
417
|
+
const DECELERATION_FRICTION = 0.97;
|
|
418
|
+
const MAX_PICKER_SPEED = 90;
|
|
419
|
+
const TRANSITION_DURATION = 150;
|