@ionic/core 7.5.8-dev.11703088210.14a72b83 → 7.5.8-dev.11705350665.1a40ee3a
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 +0 -12
- package/components/button.js +2 -2
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/index2.js +91 -0
- package/components/ion-content.js +3 -4
- package/components/ion-datetime.js +40 -64
- package/components/ion-input.js +2 -0
- package/components/ion-picker-column-option.d.ts +11 -0
- package/components/ion-picker-column-option.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/ion-picker-legacy-column.d.ts +11 -0
- package/components/ion-picker-legacy-column.js +9 -0
- package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
- package/components/ion-picker-legacy.js +309 -0
- package/components/ion-picker.js +1 -309
- package/components/ion-refresher-content.js +3 -10
- package/components/ion-refresher.js +183 -4
- package/components/ion-searchbar.js +2 -0
- package/components/ion-textarea.js +2 -0
- package/components/overlays.js +11 -4
- package/components/picker-column-option.js +122 -0
- package/components/picker-column.js +351 -322
- package/components/picker-column2.js +379 -0
- package/components/{picker-internal.js → picker.js} +29 -22
- package/css/core.css +10 -0
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{app-globals-28656db1.js → app-globals-0af482c7.js} +1 -1
- package/dist/cjs/{button-active-75b38d77.js → button-active-9d7e0640.js} +2 -2
- package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
- package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
- package/dist/cjs/{index-097270a3.js → index-5cbb20f9.js} +1 -1
- package/dist/cjs/{index-b0102f48.js → index-bbb4336c.js} +39 -1
- package/dist/cjs/{index-cb3e0ab7.js → index-ec51e99c.js} +94 -3
- package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.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 +8 -9
- 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 +2 -14
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-button_2.cjs.entry.js +4 -4
- 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 +38 -58
- 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 +4 -2
- 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 +4 -3
- 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 +5 -4
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
- package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +106 -89
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +27 -20
- package/dist/cjs/ion-popover.cjs.entry.js +5 -4
- 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 +17 -32
- 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 +4 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select_3.cjs.entry.js +4 -3
- 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 +4 -2
- package/dist/cjs/ion-toast.cjs.entry.js +4 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/{ionic-global-62510d64.js → ionic-global-f4a2093b.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-d9c0e4fb.js → ios.transition-039d6aeb.js} +4 -2
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-4fac8a87.js → md.transition-ce763350.js} +4 -2
- package/dist/cjs/{overlays-b1471172.js → overlays-e8e05b0e.js} +12 -5
- package/dist/cjs/{status-tap-0aa8e1f2.js → status-tap-415acac6.js} +1 -1
- package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
- package/dist/collection/collection-manifest.json +8 -7
- package/dist/collection/components/backdrop/backdrop.js +0 -12
- package/dist/collection/components/button/button.ios.css +1 -1
- package/dist/collection/components/button/button.md.css +1 -1
- package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
- package/dist/collection/components/content/content.css +0 -4
- package/dist/collection/components/content/content.js +2 -3
- package/dist/collection/components/datetime/datetime.ios.css +91 -37
- package/dist/collection/components/datetime/datetime.js +24 -36
- package/dist/collection/components/datetime/datetime.md.css +96 -37
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
- 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 +43 -41
- 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 +15 -12
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/input/input.js +4 -2
- package/dist/collection/components/picker/picker.ios.css +112 -211
- package/dist/collection/components/picker/picker.js +472 -744
- package/dist/collection/components/picker/picker.md.css +108 -198
- package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
- package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
- package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
- package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
- package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
- package/dist/collection/components/picker-column/picker-column.js +497 -335
- package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
- package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
- package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
- package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
- package/dist/collection/components/picker-legacy/picker.js +817 -0
- package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
- package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/refresher/refresher.utils.js +11 -19
- package/dist/collection/components/refresher-content/refresher-content.js +3 -9
- package/dist/collection/components/searchbar/searchbar.js +3 -1
- package/dist/collection/components/textarea/textarea.js +4 -2
- package/dist/collection/utils/gesture/gesture-controller.js +1 -1
- package/dist/collection/utils/overlays.js +11 -4
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
- package/dist/collection/utils/transition/index.js +91 -0
- package/dist/docs.json +484 -47
- package/dist/esm/{app-globals-c23144fc.js → app-globals-722340c4.js} +1 -1
- package/dist/esm/{button-active-7013b5a1.js → button-active-ed9d848c.js} +2 -2
- package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
- package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm/{index-39329c6f.js → index-08d686eb.js} +39 -1
- package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
- package/dist/esm/{index-7a818ed3.js → index-80492ed3.js} +1 -1
- package/dist/esm/{index-bebaae5d.js → index-933484ae.js} +94 -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 +8 -9
- 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 +2 -14
- package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
- package/dist/esm/ion-button_2.entry.js +4 -4
- 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 +37 -57
- 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 +4 -2
- 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 +4 -3
- 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 +5 -4
- package/dist/esm/ion-picker-column-option.entry.js +100 -0
- package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +106 -89
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +27 -20
- package/dist/esm/ion-popover.entry.js +5 -4
- 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 +17 -32
- 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 +4 -2
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select_3.entry.js +4 -3
- 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 +4 -2
- package/dist/esm/ion-toast.entry.js +4 -3
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/{ionic-global-6c78e871.js → ionic-global-c0cda98e.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-daa373e9.js → ios.transition-9e42996d.js} +4 -2
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-91c3d3cc.js → md.transition-8cbb4e1d.js} +4 -2
- package/dist/esm/{overlays-64e67e2c.js → overlays-fbc5cab5.js} +12 -5
- package/dist/esm/{status-tap-9dd45200.js → status-tap-2b93b1b5.js} +1 -1
- package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
- package/dist/esm-es5/app-globals-722340c4.js +4 -0
- package/dist/esm-es5/{button-active-7013b5a1.js → button-active-ed9d848c.js} +1 -1
- package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm-es5/{index-39329c6f.js → index-08d686eb.js} +1 -1
- package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
- package/dist/esm-es5/{index-7a818ed3.js → index-80492ed3.js} +1 -1
- package/dist/esm-es5/index-933484ae.js +4 -0
- 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-option.entry.js +4 -0
- package/dist/esm-es5/ion-picker-column.entry.js +4 -0
- package/dist/esm-es5/ion-picker.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-6c78e871.js → ionic-global-c0cda98e.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/ios.transition-9e42996d.js +4 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-8cbb4e1d.js +4 -0
- package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
- package/dist/esm-es5/{status-tap-9dd45200.js → status-tap-2b93b1b5.js} +1 -1
- package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
- package/dist/html.html-data.json +154 -3
- 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-a0945c3a.system.entry.js → p-0e53f8ea.system.entry.js} +1 -1
- package/dist/ionic/{p-161d0916.entry.js → p-1161a793.entry.js} +1 -1
- package/dist/ionic/{p-89026d53.entry.js → p-1208f939.entry.js} +1 -1
- package/dist/ionic/{p-ad78c421.system.js → p-16bd5224.system.js} +1 -1
- package/dist/ionic/p-1786bc72.js +4 -0
- package/dist/ionic/{p-312221db.entry.js → p-17da5ed1.entry.js} +1 -1
- package/dist/ionic/{p-5fb707e0.entry.js → p-18ba8221.entry.js} +1 -1
- package/dist/ionic/{p-1631b52f.system.js → p-1d624e03.system.js} +1 -1
- package/dist/ionic/{p-3f5ae764.entry.js → p-1fc72959.entry.js} +1 -1
- package/dist/ionic/{p-1ff22253.entry.js → p-2092f39f.entry.js} +1 -1
- package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
- package/dist/ionic/{p-46dbd723.entry.js → p-21c3515a.entry.js} +1 -1
- package/dist/ionic/{p-2657f213.entry.js → p-22e5af95.entry.js} +1 -1
- package/dist/ionic/{p-6744eca5.entry.js → p-232d1f22.entry.js} +1 -1
- package/dist/ionic/p-26798a7b.system.entry.js +4 -0
- package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
- package/dist/ionic/{p-b81a8111.system.entry.js → p-2938823a.system.entry.js} +1 -1
- package/dist/ionic/p-294725bb.js +4 -0
- package/dist/ionic/{p-df361680.system.entry.js → p-2ab4e925.system.entry.js} +1 -1
- package/dist/ionic/{p-8c202d6e.system.entry.js → p-32303650.system.entry.js} +1 -1
- package/dist/ionic/{p-18032a93.entry.js → p-34c39c48.entry.js} +1 -1
- package/dist/ionic/p-350f7292.system.entry.js +4 -0
- package/dist/ionic/{p-86c2bbc8.entry.js → p-353b349d.entry.js} +1 -1
- package/dist/ionic/p-36d194c5.entry.js +4 -0
- package/dist/ionic/p-3993ae66.entry.js +4 -0
- package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
- package/dist/ionic/{p-a3a145d3.entry.js → p-3f6270b3.entry.js} +1 -1
- package/dist/ionic/{p-23a27e78.system.entry.js → p-3fd26bd6.system.entry.js} +1 -1
- package/dist/ionic/{p-426bdba9.system.js → p-3fe96156.system.js} +1 -1
- package/dist/ionic/p-400b61c7.system.entry.js +4 -0
- package/dist/ionic/{p-e26030f8.system.js → p-4155f352.system.js} +1 -1
- package/dist/ionic/{p-405f1a72.entry.js → p-42ba3902.entry.js} +1 -1
- package/dist/ionic/{p-2a7e6572.system.entry.js → p-464975c5.system.entry.js} +1 -1
- package/dist/ionic/{p-ee4a54e3.entry.js → p-4911a5d6.entry.js} +1 -1
- package/dist/ionic/p-49c5f1a3.js +4 -0
- package/dist/ionic/{p-5f46d93e.entry.js → p-4a31c99f.entry.js} +1 -1
- package/dist/ionic/{p-f34d6a49.entry.js → p-4bee86bd.entry.js} +1 -1
- package/dist/ionic/{p-2cd9cb80.system.entry.js → p-4fb51e61.system.entry.js} +1 -1
- package/dist/ionic/p-510d9b43.js +4 -0
- package/dist/ionic/{p-d3e123c0.entry.js → p-51a087d6.entry.js} +1 -1
- package/dist/ionic/p-51abefb7.system.js +4 -0
- package/dist/ionic/{p-aac289d2.system.entry.js → p-564af202.system.entry.js} +1 -1
- package/dist/ionic/p-588fdf40.entry.js +4 -0
- package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
- package/dist/ionic/{p-a5c81b99.entry.js → p-5a68960f.entry.js} +1 -1
- package/dist/ionic/{p-34d6f520.system.js → p-5b365ca7.system.js} +1 -1
- package/dist/ionic/{p-eef8d7e8.system.entry.js → p-5bebc7b3.system.entry.js} +1 -1
- package/dist/ionic/{p-a1b4dba7.entry.js → p-5d42b6b4.entry.js} +1 -1
- package/dist/ionic/{p-21f015cf.js → p-5ecae037.js} +1 -1
- package/dist/ionic/{p-57c0d5bf.system.entry.js → p-6555a5e7.system.entry.js} +1 -1
- package/dist/ionic/p-65e27aae.system.entry.js +4 -0
- package/dist/ionic/{p-71d986ae.entry.js → p-6b7c55cd.entry.js} +1 -1
- package/dist/ionic/{p-70ecb18b.entry.js → p-6d72fb44.entry.js} +1 -1
- package/dist/ionic/{p-1cbc21e2.system.entry.js → p-6e70dd1a.system.entry.js} +1 -1
- package/dist/ionic/{p-64af4468.entry.js → p-6fbecbda.entry.js} +1 -1
- package/dist/ionic/{p-27a5f2c7.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
- package/dist/ionic/p-73190c5f.entry.js +4 -0
- package/dist/ionic/p-73aa7604.entry.js +4 -0
- package/dist/ionic/p-76d3765d.js +4 -0
- package/dist/ionic/{p-2ac9d078.system.entry.js → p-77965464.system.entry.js} +1 -1
- package/dist/ionic/{p-6cf08720.entry.js → p-7b725280.entry.js} +1 -1
- package/dist/ionic/p-8017aad2.system.entry.js +4 -0
- package/dist/ionic/{p-27e6473f.entry.js → p-8adc9a45.entry.js} +1 -1
- package/dist/ionic/p-8c0e5060.system.js +4 -0
- package/dist/ionic/p-8c97cdc0.entry.js +4 -0
- package/dist/ionic/p-8e42850f.entry.js +4 -0
- package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
- package/dist/ionic/{p-67598744.entry.js → p-8f5d30f5.entry.js} +1 -1
- package/dist/ionic/p-8fa6583d.system.js +4 -0
- package/dist/ionic/p-91af3c52.system.entry.js +4 -0
- package/dist/ionic/{p-3acad8ff.system.entry.js → p-93000a81.system.entry.js} +1 -1
- package/dist/ionic/{p-41f7af3f.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
- package/dist/ionic/{p-a0db3de9.system.entry.js → p-9709ebd8.system.entry.js} +1 -1
- package/dist/ionic/{p-12cdcb59.js → p-9738fd82.js} +1 -1
- package/dist/ionic/{p-a70b5d24.entry.js → p-98f3d827.entry.js} +1 -1
- package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
- package/dist/ionic/p-9e48593b.system.js +4 -0
- package/dist/ionic/{p-315ad733.system.entry.js → p-a225bf0f.system.entry.js} +1 -1
- package/dist/ionic/{p-53a3283e.entry.js → p-a4afcc88.entry.js} +1 -1
- package/dist/ionic/p-a60a1ce5.js +4 -0
- package/dist/ionic/p-a8baa23e.entry.js +4 -0
- package/dist/ionic/{p-99fe0543.entry.js → p-a98dc0c1.entry.js} +1 -1
- package/dist/ionic/p-a9a80f5b.entry.js +4 -0
- package/dist/ionic/{p-90db28f8.system.entry.js → p-a9e3b5be.system.entry.js} +1 -1
- package/dist/ionic/{p-a843a90e.system.entry.js → p-ab9456e9.system.entry.js} +1 -1
- package/dist/ionic/p-ae712b95.entry.js +4 -0
- package/dist/ionic/p-afcf4620.entry.js +4 -0
- package/dist/ionic/{p-3535a36c.entry.js → p-b133e9b4.entry.js} +1 -1
- package/dist/ionic/{p-98ac0e27.system.entry.js → p-b3b3efba.system.entry.js} +2 -2
- package/dist/ionic/{p-58ff9e5b.system.js → p-b4a51c42.system.js} +1 -1
- package/dist/ionic/p-b4d31b30.system.entry.js +4 -0
- package/dist/ionic/{p-3cb5466e.entry.js → p-b5f9f14c.entry.js} +1 -1
- package/dist/ionic/{p-b0fcf130.system.entry.js → p-b6f5e4f2.system.entry.js} +1 -1
- package/dist/ionic/{p-7ae5ca1f.system.entry.js → p-b7010c69.system.entry.js} +1 -1
- package/dist/ionic/{p-a99f14a7.system.entry.js → p-b752714f.system.entry.js} +1 -1
- package/dist/ionic/p-c006d974.entry.js +4 -0
- package/dist/ionic/{p-ca32685b.system.entry.js → p-c18de88a.system.entry.js} +1 -1
- package/dist/ionic/{p-acdd8148.js → p-c3c3333a.js} +1 -1
- package/dist/ionic/p-c41bff4e.system.entry.js +4 -0
- package/dist/ionic/{p-8261be6c.system.entry.js → p-c847fb35.system.entry.js} +1 -1
- package/dist/ionic/{p-e3c44332.system.entry.js → p-c91ccbfa.system.entry.js} +1 -1
- package/dist/ionic/{p-9f376964.system.entry.js → p-c9a21dfd.system.entry.js} +1 -1
- package/dist/ionic/p-ca8938f4.js +4 -0
- package/dist/ionic/{p-ad953217.system.entry.js → p-caf21b46.system.entry.js} +1 -1
- package/dist/ionic/{p-5a7d5905.system.entry.js → p-cde52378.system.entry.js} +1 -1
- package/dist/ionic/{p-1c6c6098.entry.js → p-cfe57b1b.entry.js} +1 -1
- package/dist/ionic/{p-c04accad.entry.js → p-d37b441e.entry.js} +1 -1
- package/dist/ionic/{p-f8c5a0dd.system.js → p-d3b030b8.system.js} +1 -1
- package/dist/ionic/p-d3c773d0.entry.js +4 -0
- package/dist/ionic/{p-91f9e81b.js → p-d662d908.js} +1 -1
- package/dist/ionic/p-d9ec6cf0.system.js +4 -0
- package/dist/ionic/p-da15f571.system.entry.js +4 -0
- package/dist/ionic/{p-c5ae50be.system.js → p-e3584231.system.js} +1 -1
- package/dist/ionic/{p-8a75f7bf.system.entry.js → p-e7ea9815.system.entry.js} +1 -1
- package/dist/ionic/{p-5f127075.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
- package/dist/ionic/p-ea69616e.entry.js +4 -0
- package/dist/ionic/{p-4f71a9cf.system.entry.js → p-ef126ae8.system.entry.js} +1 -1
- package/dist/ionic/p-f6160677.system.entry.js +4 -0
- package/dist/ionic/{p-e4045e04.entry.js → p-f8a5bb89.entry.js} +1 -1
- package/dist/ionic/{p-93dac17a.system.entry.js → p-f910cc73.system.entry.js} +1 -1
- package/dist/ionic/{p-bc97b5cd.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
- package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
- package/dist/types/components/backdrop/backdrop.d.ts +0 -3
- package/dist/types/components/datetime/datetime.d.ts +0 -1
- package/dist/types/components/datetime/utils/data.d.ts +11 -7
- package/dist/types/components/input/input.d.ts +5 -1
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
- package/dist/types/components/picker/picker.d.ts +75 -129
- package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
- package/dist/types/components/picker-column/picker-column.d.ts +99 -39
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
- package/dist/types/components/picker-legacy/picker.d.ts +158 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components/refresher/refresher.utils.d.ts +0 -16
- package/dist/types/components/searchbar/searchbar.d.ts +2 -0
- package/dist/types/components/textarea/textarea.d.ts +5 -1
- package/dist/types/components.d.ts +161 -129
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/config.d.ts +8 -2
- package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
- package/dist/types/utils/overlays.d.ts +5 -2
- package/hydrate/index.d.ts +1 -1
- package/hydrate/index.js +1409 -1229
- package/package.json +2 -2
- package/components/ion-picker-column-internal.d.ts +0 -11
- package/components/ion-picker-column-internal.js +0 -9
- package/components/ion-picker-internal.js +0 -9
- package/components/picker-column-internal.js +0 -390
- package/components/refresher.utils.js +0 -196
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
- package/dist/collection/components/picker-internal/picker-internal.js +0 -544
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
- package/dist/esm-es5/app-globals-c23144fc.js +0 -4
- package/dist/esm-es5/index-bebaae5d.js +0 -4
- package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
- package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
- package/dist/esm-es5/ios.transition-daa373e9.js +0 -4
- package/dist/esm-es5/md.transition-91c3d3cc.js +0 -4
- package/dist/esm-es5/overlays-64e67e2c.js +0 -4
- package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
- package/dist/ionic/p-0263eb49.system.js +0 -4
- package/dist/ionic/p-06600f70.js +0 -4
- package/dist/ionic/p-0827d00e.system.entry.js +0 -4
- package/dist/ionic/p-19545a49.system.entry.js +0 -4
- package/dist/ionic/p-1e7daa1f.entry.js +0 -4
- package/dist/ionic/p-2507b0c0.entry.js +0 -4
- package/dist/ionic/p-33f3cd49.entry.js +0 -4
- package/dist/ionic/p-35ce400e.system.js +0 -4
- package/dist/ionic/p-45db7949.system.entry.js +0 -4
- package/dist/ionic/p-58dd7c15.entry.js +0 -4
- package/dist/ionic/p-5c7f13cd.system.entry.js +0 -4
- package/dist/ionic/p-6a6477b2.js +0 -4
- package/dist/ionic/p-742e11cf.system.entry.js +0 -4
- package/dist/ionic/p-7484b1d6.system.js +0 -4
- package/dist/ionic/p-78ebf1b6.system.entry.js +0 -4
- package/dist/ionic/p-83fada9e.system.entry.js +0 -4
- package/dist/ionic/p-89cfbc88.system.entry.js +0 -4
- package/dist/ionic/p-8a10752d.entry.js +0 -4
- package/dist/ionic/p-abab375b.system.js +0 -4
- package/dist/ionic/p-ac4a7fc0.js +0 -4
- package/dist/ionic/p-af959b5d.entry.js +0 -4
- package/dist/ionic/p-b11ceee2.entry.js +0 -4
- package/dist/ionic/p-b5e33ebc.system.entry.js +0 -4
- package/dist/ionic/p-b8f2134e.js +0 -4
- package/dist/ionic/p-bbe3feee.entry.js +0 -4
- package/dist/ionic/p-cde72008.js +0 -4
- package/dist/ionic/p-d0251fc4.entry.js +0 -4
- package/dist/ionic/p-d1530ea9.entry.js +0 -4
- package/dist/ionic/p-ddccf1f4.js +0 -4
- package/dist/ionic/p-e145b9f9.entry.js +0 -4
- package/dist/ionic/p-e8e530fc.entry.js +0 -4
- package/dist/ionic/p-eab6401e.js +0 -4
- package/dist/ionic/p-edc5c693.system.entry.js +0 -4
- package/dist/ionic/p-f0384573.system.entry.js +0 -4
- package/dist/ionic/p-f10de9d5.system.js +0 -4
- package/dist/ionic/p-f444fea5.entry.js +0 -4
- package/dist/ionic/p-fcf49977.system.entry.js +0 -4
- package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
- package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
- /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
- /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
- /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
- /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
package/hydrate/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
7
7
|
|
|
8
8
|
/*!
|
|
9
|
-
Stencil Mock Doc v4.8.
|
|
9
|
+
Stencil Mock Doc v4.8.1 | MIT Licensed | https://stenciljs.com
|
|
10
10
|
*/
|
|
11
11
|
const CONTENT_REF_ID = 'r';
|
|
12
12
|
const ORG_LOCATION_ID = 'o';
|
|
@@ -8355,7 +8355,7 @@ const focusLastDescendant = (ref, overlay) => {
|
|
|
8355
8355
|
* Should NOT include: Toast
|
|
8356
8356
|
*/
|
|
8357
8357
|
const trapKeyboardFocus = (ev, doc) => {
|
|
8358
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
|
|
8358
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
|
|
8359
8359
|
const target = ev.target;
|
|
8360
8360
|
/**
|
|
8361
8361
|
* If no active overlay, ignore this event.
|
|
@@ -8540,7 +8540,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
8540
8540
|
*/
|
|
8541
8541
|
const getOverlays = (doc, selector) => {
|
|
8542
8542
|
if (selector === undefined) {
|
|
8543
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
|
|
8543
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
|
|
8544
8544
|
}
|
|
8545
8545
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
8546
8546
|
};
|
|
@@ -8606,6 +8606,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
8606
8606
|
return;
|
|
8607
8607
|
}
|
|
8608
8608
|
setRootAriaHidden(true);
|
|
8609
|
+
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
8609
8610
|
overlay.presented = true;
|
|
8610
8611
|
overlay.willPresent.emit();
|
|
8611
8612
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -8668,12 +8669,14 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
8668
8669
|
if (!overlay.presented) {
|
|
8669
8670
|
return false;
|
|
8670
8671
|
}
|
|
8672
|
+
const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
|
|
8671
8673
|
/**
|
|
8672
8674
|
* If this is the last visible overlay then
|
|
8673
8675
|
* we want to re-add the root to the accessibility tree.
|
|
8674
8676
|
*/
|
|
8675
|
-
if (
|
|
8677
|
+
if (lastOverlay) {
|
|
8676
8678
|
setRootAriaHidden(false);
|
|
8679
|
+
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
8677
8680
|
}
|
|
8678
8681
|
overlay.presented = false;
|
|
8679
8682
|
try {
|
|
@@ -11189,21 +11192,10 @@ class Backdrop {
|
|
|
11189
11192
|
constructor(hostRef) {
|
|
11190
11193
|
registerInstance(this, hostRef);
|
|
11191
11194
|
this.ionBackdropTap = createEvent(this, "ionBackdropTap", 7);
|
|
11192
|
-
this.blocker = GESTURE_CONTROLLER.createBlocker({
|
|
11193
|
-
disableScroll: true,
|
|
11194
|
-
});
|
|
11195
11195
|
this.visible = true;
|
|
11196
11196
|
this.tappable = true;
|
|
11197
11197
|
this.stopPropagation = true;
|
|
11198
11198
|
}
|
|
11199
|
-
connectedCallback() {
|
|
11200
|
-
if (this.stopPropagation) {
|
|
11201
|
-
this.blocker.block();
|
|
11202
|
-
}
|
|
11203
|
-
}
|
|
11204
|
-
disconnectedCallback() {
|
|
11205
|
-
this.blocker.unblock();
|
|
11206
|
-
}
|
|
11207
11199
|
onMouseDown(ev) {
|
|
11208
11200
|
this.emitTap(ev);
|
|
11209
11201
|
}
|
|
@@ -11532,9 +11524,9 @@ class Breadcrumbs {
|
|
|
11532
11524
|
}; }
|
|
11533
11525
|
}
|
|
11534
11526
|
|
|
11535
|
-
const buttonIosCss = "/*!@:host*/.sc-ion-button-ios-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-ios-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-ios-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-ios-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-ios-h:not(.button-round) .button-native.sc-ion-button-ios{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-ios{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-ios::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-ios-s>[slot=start],.sc-ion-button-ios-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-ios-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-ios-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-ios-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-ios-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-ios{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-ios-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-ios-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-ios-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-ios-h{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}/*!@:host(.in-buttons)*/.in-buttons.sc-ion-button-ios-h{font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}/*!@:host(.button-large)*/.button-large.sc-ion-button-ios-h{--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}/*!@:host(.button-small)*/.button-small.sc-ion-button-ios-h{--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-ios-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-round)*/.button-round.sc-ion-button-ios-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-ios-h{font-weight:600}/*!@:host(.button-outline.ion-focused.ion-color) .button-native,\n:host(.button-clear.ion-focused.ion-color) .button-native*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-outline.ion-focused.ion-color) .button-native::after,\n:host(.button-clear.ion-focused.ion-color) .button-native::after*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}@media (any-hover: hover){/*!@:host(.button-clear:not(.ion-activated):hover),\n :host(.button-outline:not(.ion-activated):hover)*/.button-clear.sc-ion-button-ios-h:not(.ion-activated):hover,.button-outline.sc-ion-button-ios-h:not(.ion-activated):hover{opacity:0.6}/*!@:host(.button-clear.ion-color:hover) .button-native,\n :host(.button-outline.ion-color:hover) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:transparent}/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--ion-color-tint)}/*!@:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after*/.sc-ion-button-ios-h:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated) .button-native.sc-ion-button-ios::after{background:#fff;opacity:0.1}}/*!@:host(.button-clear.ion-activated)*/.button-clear.ion-activated.sc-ion-button-ios-h{opacity:0.4}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-activated.ion-color) .button-native::after*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-activated) .button-native::after*/.button-solid.ion-color.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}";
|
|
11527
|
+
const buttonIosCss = "/*!@:host*/.sc-ion-button-ios-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-ios-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-ios-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-ios-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-ios-h:not(.button-round) .button-native.sc-ion-button-ios{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-ios{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-ios::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-ios-s>[slot=start],.sc-ion-button-ios-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-ios-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-ios-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-ios-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-ios-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-ios{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-ios-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-ios-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-ios-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-ios-h{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}/*!@:host(.in-buttons)*/.in-buttons.sc-ion-button-ios-h{font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}/*!@:host(.button-large)*/.button-large.sc-ion-button-ios-h{--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}/*!@:host(.button-small)*/.button-small.sc-ion-button-ios-h{--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-ios-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-round)*/.button-round.sc-ion-button-ios-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-ios-h{font-weight:600}/*!@:host(.button-outline.ion-focused.ion-color) .button-native,\n:host(.button-clear.ion-focused.ion-color) .button-native*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-outline.ion-focused.ion-color) .button-native::after,\n:host(.button-clear.ion-focused.ion-color) .button-native::after*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}@media (any-hover: hover){/*!@:host(.button-clear:not(.ion-activated):hover),\n :host(.button-outline:not(.ion-activated):hover)*/.button-clear.sc-ion-button-ios-h:not(.ion-activated):hover,.button-outline.sc-ion-button-ios-h:not(.ion-activated):hover{opacity:0.6}/*!@:host(.button-clear.ion-color:hover) .button-native,\n :host(.button-outline.ion-color:hover) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:transparent}/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--ion-color-tint)}/*!@:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after*/.sc-ion-button-ios-h:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated) .button-native.sc-ion-button-ios::after{background:#fff;opacity:0.1}}/*!@:host(.button-clear.ion-activated)*/.button-clear.ion-activated.sc-ion-button-ios-h{opacity:0.4}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-activated.ion-color) .button-native::after*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-activated) .button-native::after*/.button-solid.ion-color.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}";
|
|
11536
11528
|
|
|
11537
|
-
const buttonMdCss = "/*!@:host*/.sc-ion-button-md-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-md-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-md-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-md-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-md-h:not(.button-round) .button-native.sc-ion-button-md{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-md{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-md::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-md-s>[slot=start],.sc-ion-button-md-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-md-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-md-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-md-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-md{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-md-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-md-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-md-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-md-h{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\n background-color 15ms linear,\n color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}/*!@:host(.button-solid.ion-activated)*/.button-solid.ion-activated.sc-ion-button-md-h{--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-round)*/.button-round.sc-ion-button-md-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-large)*/.button-large.sc-ion-button-md-h{--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}/*!@:host(.button-small)*/.button-small.sc-ion-button-md-h{--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-md-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-md-h{font-weight:bold}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color.ion-focused) .button-native::after,\n:host(.button-outline.ion-color.ion-focused) .button-native::after*/.button-clear.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after,.button-outline.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after,.button-outline.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}}";
|
|
11529
|
+
const buttonMdCss = "/*!@:host*/.sc-ion-button-md-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-md-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-md-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-md-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-md-h:not(.button-round) .button-native.sc-ion-button-md{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-md{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-md::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-md-s>[slot=start],.sc-ion-button-md-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-md-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-md-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-md-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-md{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-md-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-md-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-md-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-md-h{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\n background-color 15ms linear,\n color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}/*!@:host(.button-solid.ion-activated)*/.button-solid.ion-activated.sc-ion-button-md-h{--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-round)*/.button-round.sc-ion-button-md-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-large)*/.button-large.sc-ion-button-md-h{--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}/*!@:host(.button-small)*/.button-small.sc-ion-button-md-h{--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-md-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-md-h{font-weight:bold}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color.ion-focused) .button-native::after,\n:host(.button-outline.ion-color.ion-focused) .button-native::after*/.button-clear.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after,.button-outline.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after,.button-outline.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}}";
|
|
11538
11530
|
|
|
11539
11531
|
/**
|
|
11540
11532
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -12654,7 +12646,7 @@ const isRTL$1 = (hostEl) => {
|
|
|
12654
12646
|
return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
|
|
12655
12647
|
};
|
|
12656
12648
|
|
|
12657
|
-
const contentCss = "/*!@:host*/.sc-ion-content-h{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}/*!@:host(.ion-color) .inner-scroll*/.ion-color.sc-ion-content-h .inner-scroll.sc-ion-content{background:var(--ion-color-base);color:var(--ion-color-contrast)}
|
|
12649
|
+
const contentCss = "/*!@:host*/.sc-ion-content-h{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}/*!@:host(.ion-color) .inner-scroll*/.ion-color.sc-ion-content-h .inner-scroll.sc-ion-content{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@#background-content*/#background-content.sc-ion-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}/*!@.inner-scroll*/.inner-scroll.sc-ion-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}/*!@.scroll-y,\n.scroll-x*/.scroll-y.sc-ion-content,.scroll-x.sc-ion-content{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}/*!@.scroll-y*/.scroll-y.sc-ion-content{overflow-y:var(--overflow);overscroll-behavior-y:contain}/*!@.scroll-x*/.scroll-x.sc-ion-content{overflow-x:var(--overflow);overscroll-behavior-x:contain}/*!@.overscroll::before,\n.overscroll::after*/.overscroll.sc-ion-content::before,.overscroll.sc-ion-content::after{position:absolute;width:1px;height:1px;content:\"\"}/*!@.overscroll::before*/.overscroll.sc-ion-content::before{bottom:-1px}/*!@.overscroll::after*/.overscroll.sc-ion-content::after{top:-1px}/*!@:host(.content-sizing)*/.content-sizing.sc-ion-content-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}/*!@:host(.content-sizing) .inner-scroll*/.content-sizing.sc-ion-content-h .inner-scroll.sc-ion-content{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}/*!@.transition-effect*/.transition-effect.sc-ion-content{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}/*!@:host(.content-ltr) .transition-effect*/.content-ltr.sc-ion-content-h .transition-effect.sc-ion-content{left:-100%}/*!@:host(.content-rtl) .transition-effect*/.content-rtl.sc-ion-content-h .transition-effect.sc-ion-content{right:-100%}/*!@.transition-cover*/.transition-cover.sc-ion-content{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}/*!@.transition-shadow*/.transition-shadow.sc-ion-content{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}/*!@:host(.content-ltr) .transition-shadow*/.content-ltr.sc-ion-content-h .transition-shadow.sc-ion-content{right:0}/*!@:host(.content-rtl) .transition-shadow*/.content-rtl.sc-ion-content-h .transition-shadow.sc-ion-content{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@::slotted([slot=fixed])*/.sc-ion-content-s>[slot=fixed]{position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}";
|
|
12658
12650
|
|
|
12659
12651
|
/**
|
|
12660
12652
|
* @slot - Content is placed in the scrollable area if provided without a slot.
|
|
@@ -12969,9 +12961,8 @@ class Content {
|
|
|
12969
12961
|
const mode = getIonMode$1(this);
|
|
12970
12962
|
const forceOverscroll = this.shouldForceOverscroll();
|
|
12971
12963
|
const transitionShadow = mode === 'ios';
|
|
12972
|
-
const TagType = isMainContent ? 'main' : 'div';
|
|
12973
12964
|
this.resize();
|
|
12974
|
-
return (hAsync(Host, { class: createColorClasses$1(this.color, {
|
|
12965
|
+
return (hAsync(Host, { role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
|
|
12975
12966
|
[mode]: true,
|
|
12976
12967
|
'content-sizing': hostContext('ion-popover', this.el),
|
|
12977
12968
|
overscroll: forceOverscroll,
|
|
@@ -12979,7 +12970,7 @@ class Content {
|
|
|
12979
12970
|
}), style: {
|
|
12980
12971
|
'--offset-top': `${this.cTop}px`,
|
|
12981
12972
|
'--offset-bottom': `${this.cBottom}px`,
|
|
12982
|
-
} }, hAsync("div", { ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), hAsync(
|
|
12973
|
+
} }, hAsync("div", { ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), hAsync("div", { class: {
|
|
12983
12974
|
'inner-scroll': true,
|
|
12984
12975
|
'scroll-x': scrollX,
|
|
12985
12976
|
'scroll-y': scrollY,
|
|
@@ -14526,7 +14517,7 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
|
|
|
14526
14517
|
* @param minParts The minimum bound on the date that can be returned
|
|
14527
14518
|
* @param maxParts The maximum bound on the date that can be returned
|
|
14528
14519
|
* @param dayValues The allowed date values
|
|
14529
|
-
* @returns Date data to be used in ion-picker-column
|
|
14520
|
+
* @returns Date data to be used in ion-picker-column
|
|
14530
14521
|
*/
|
|
14531
14522
|
const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
14532
14523
|
day: 'numeric',
|
|
@@ -14873,9 +14864,9 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
|
|
|
14873
14864
|
return undefined;
|
|
14874
14865
|
};
|
|
14875
14866
|
|
|
14876
|
-
const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-ios{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:translucent}/*!@:host .calendar-action-buttons ion-item ion-label*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-label.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .calendar-action-buttons ion-item ion-icon*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons ion-item*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios{--color:var(--ion-color-base)}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@:host .calendar-action-buttons ion-item*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios{--padding-start:16px;--background-hover:transparent;--background-activated:transparent;font-size:min(1rem, 25.6px);font-weight:600}/*!@:host .calendar-action-buttons ion-item ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
|
|
14867
|
+
const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-ios{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-ios:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@ion-picker*/ion-picker.sc-ion-datetime-ios{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{opacity:0.15}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}/*!@:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
|
|
14877
14868
|
|
|
14878
|
-
const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-md{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md,.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:translucent}/*!@:host .calendar-action-buttons ion-item ion-label*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md ion-label.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .calendar-action-buttons ion-item ion-icon*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons ion-item*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md{--color:var(--ion-color-base)}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .datetime-calendar .calendar-action-buttons ion-item*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md{--padding-start:20px}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md,.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
|
|
14869
|
+
const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md .calendar-month-year-toggle.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-md{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-md:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-md #toggle-wrapper.sc-ion-datetime-md{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@ion-picker*/ion-picker.sc-ion-datetime-md{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, #595959);z-index:1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{opacity:0.04}/*!@.calendar-month-year-toggle ion-ripple-effect*/.calendar-month-year-toggle.sc-ion-datetime-md ion-ripple-effect.sc-ion-datetime-md{color:currentColor}@media (any-hover: hover){/*!@.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after*/.calendar-month-year-toggle.ion-activatable.sc-ion-datetime-md:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
|
|
14879
14870
|
|
|
14880
14871
|
/**
|
|
14881
14872
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -15846,7 +15837,7 @@ class Datetime {
|
|
|
15846
15837
|
const renderArray = forcePresentation === 'time-date'
|
|
15847
15838
|
? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
|
|
15848
15839
|
: [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
|
|
15849
|
-
return hAsync("ion-picker
|
|
15840
|
+
return hAsync("ion-picker", null, renderArray);
|
|
15850
15841
|
}
|
|
15851
15842
|
renderDatePickerColumns(forcePresentation) {
|
|
15852
15843
|
return forcePresentation === 'date-time' || forcePresentation === 'time-date'
|
|
@@ -15905,7 +15896,7 @@ class Datetime {
|
|
|
15905
15896
|
const todayString = workingParts.day !== null
|
|
15906
15897
|
? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
|
|
15907
15898
|
: `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
|
|
15908
|
-
return (hAsync("ion-picker-column
|
|
15899
|
+
return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
|
|
15909
15900
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15910
15901
|
// Due to a Safari 14 issue we need to destroy
|
|
15911
15902
|
// the scroll listener before we update state
|
|
@@ -15921,7 +15912,7 @@ class Datetime {
|
|
|
15921
15912
|
// the working parts have been updated.
|
|
15922
15913
|
this.initializeCalendarListener();
|
|
15923
15914
|
ev.stopPropagation();
|
|
15924
|
-
} }));
|
|
15915
|
+
} }, items.map((item) => (hAsync("ion-picker-column-option", { part: item.value === todayString ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: item.value, disabled: item.disabled, value: item.value }, item.text)))));
|
|
15925
15916
|
}
|
|
15926
15917
|
renderIndividualDatePickerColumns(forcePresentation) {
|
|
15927
15918
|
const { workingParts, isDateEnabled } = this;
|
|
@@ -15989,7 +15980,8 @@ class Datetime {
|
|
|
15989
15980
|
}
|
|
15990
15981
|
const { disabled, workingParts } = this;
|
|
15991
15982
|
const activePart = this.getActivePartsWithFallback();
|
|
15992
|
-
|
|
15983
|
+
const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
|
|
15984
|
+
return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
|
|
15993
15985
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15994
15986
|
// Due to a Safari 14 issue we need to destroy
|
|
15995
15987
|
// the scroll listener before we update state
|
|
@@ -16003,7 +15995,7 @@ class Datetime {
|
|
|
16003
15995
|
// the working parts have been updated.
|
|
16004
15996
|
this.initializeCalendarListener();
|
|
16005
15997
|
ev.stopPropagation();
|
|
16006
|
-
} }));
|
|
15998
|
+
} }, days.map((day) => (hAsync("ion-picker-column-option", { part: day.value === pickerColumnValue ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: day.value, disabled: day.disabled, value: day.value }, day.text)))));
|
|
16007
15999
|
}
|
|
16008
16000
|
renderMonthPickerColumn(months) {
|
|
16009
16001
|
if (months.length === 0) {
|
|
@@ -16011,7 +16003,7 @@ class Datetime {
|
|
|
16011
16003
|
}
|
|
16012
16004
|
const { disabled, workingParts } = this;
|
|
16013
16005
|
const activePart = this.getActivePartsWithFallback();
|
|
16014
|
-
return (hAsync("ion-picker-column
|
|
16006
|
+
return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
|
|
16015
16007
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
16016
16008
|
// Due to a Safari 14 issue we need to destroy
|
|
16017
16009
|
// the scroll listener before we update state
|
|
@@ -16025,7 +16017,7 @@ class Datetime {
|
|
|
16025
16017
|
// the working parts have been updated.
|
|
16026
16018
|
this.initializeCalendarListener();
|
|
16027
16019
|
ev.stopPropagation();
|
|
16028
|
-
} }));
|
|
16020
|
+
} }, months.map((month) => (hAsync("ion-picker-column-option", { part: month.value === workingParts.month ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: month.value, disabled: month.disabled, value: month.value }, month.text)))));
|
|
16029
16021
|
}
|
|
16030
16022
|
renderYearPickerColumn(years) {
|
|
16031
16023
|
if (years.length === 0) {
|
|
@@ -16033,7 +16025,7 @@ class Datetime {
|
|
|
16033
16025
|
}
|
|
16034
16026
|
const { disabled, workingParts } = this;
|
|
16035
16027
|
const activePart = this.getActivePartsWithFallback();
|
|
16036
|
-
return (hAsync("ion-picker-column
|
|
16028
|
+
return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
|
|
16037
16029
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
16038
16030
|
// Due to a Safari 14 issue we need to destroy
|
|
16039
16031
|
// the scroll listener before we update state
|
|
@@ -16047,7 +16039,7 @@ class Datetime {
|
|
|
16047
16039
|
// the working parts have been updated.
|
|
16048
16040
|
this.initializeCalendarListener();
|
|
16049
16041
|
ev.stopPropagation();
|
|
16050
|
-
} }));
|
|
16042
|
+
} }, years.map((year) => (hAsync("ion-picker-column-option", { part: year.value === workingParts.year ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: year.value, disabled: year.disabled, value: year.value }, year.text)))));
|
|
16051
16043
|
}
|
|
16052
16044
|
renderTimePickerColumns(forcePresentation) {
|
|
16053
16045
|
if (['date', 'month', 'month-year', 'year'].includes(forcePresentation)) {
|
|
@@ -16076,22 +16068,22 @@ class Datetime {
|
|
|
16076
16068
|
if (hoursData.length === 0)
|
|
16077
16069
|
return [];
|
|
16078
16070
|
const activePart = this.getActivePartsWithFallback();
|
|
16079
|
-
return (hAsync("ion-picker-column
|
|
16071
|
+
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
|
|
16080
16072
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
|
|
16081
16073
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
|
|
16082
16074
|
ev.stopPropagation();
|
|
16083
|
-
} }));
|
|
16075
|
+
} }, hoursData.map((hour) => (hAsync("ion-picker-column-option", { part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
|
|
16084
16076
|
}
|
|
16085
16077
|
renderMinutePickerColumn(minutesData) {
|
|
16086
16078
|
const { disabled, workingParts } = this;
|
|
16087
16079
|
if (minutesData.length === 0)
|
|
16088
16080
|
return [];
|
|
16089
16081
|
const activePart = this.getActivePartsWithFallback();
|
|
16090
|
-
return (hAsync("ion-picker-column
|
|
16082
|
+
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
|
|
16091
16083
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
|
|
16092
16084
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
|
|
16093
16085
|
ev.stopPropagation();
|
|
16094
|
-
} }));
|
|
16086
|
+
} }, minutesData.map((minute) => (hAsync("ion-picker-column-option", { part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
|
|
16095
16087
|
}
|
|
16096
16088
|
renderDayPeriodPickerColumn(dayPeriodData) {
|
|
16097
16089
|
const { disabled, workingParts } = this;
|
|
@@ -16100,12 +16092,12 @@ class Datetime {
|
|
|
16100
16092
|
}
|
|
16101
16093
|
const activePart = this.getActivePartsWithFallback();
|
|
16102
16094
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
16103
|
-
return (hAsync("ion-picker-column
|
|
16095
|
+
return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
|
|
16104
16096
|
const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
|
|
16105
16097
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
|
|
16106
16098
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
|
|
16107
16099
|
ev.stopPropagation();
|
|
16108
|
-
} }));
|
|
16100
|
+
} }, dayPeriodData.map((dayPeriod) => (hAsync("ion-picker-column-option", { part: dayPeriod.value === activePart.ampm ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: dayPeriod.value, disabled: dayPeriod.disabled, value: dayPeriod.value }, dayPeriod.text)))));
|
|
16109
16101
|
}
|
|
16110
16102
|
renderWheelView(forcePresentation) {
|
|
16111
16103
|
const { locale } = this;
|
|
@@ -16126,26 +16118,11 @@ class Datetime {
|
|
|
16126
16118
|
const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
|
|
16127
16119
|
// don't use the inheritAttributes util because it removes dir from the host, and we still need that
|
|
16128
16120
|
const hostDir = this.el.getAttribute('dir') || undefined;
|
|
16129
|
-
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("
|
|
16130
|
-
|
|
16131
|
-
|
|
16132
|
-
|
|
16133
|
-
|
|
16134
|
-
*
|
|
16135
|
-
* Currently there is not a way to set the aria-label on the inner button
|
|
16136
|
-
* on the `ion-item` and have it be reactive to changes. This is a workaround
|
|
16137
|
-
* until we either refactor `ion-item` to a button or Stencil adds a way to
|
|
16138
|
-
* have reactive props for built-in properties, such as `aria-label`.
|
|
16139
|
-
*/
|
|
16140
|
-
const { monthYearToggleItemRef } = this;
|
|
16141
|
-
if (monthYearToggleItemRef) {
|
|
16142
|
-
const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
|
|
16143
|
-
if (btn) {
|
|
16144
|
-
const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
|
|
16145
|
-
btn.setAttribute('aria-label', monthYearAriaLabel);
|
|
16146
|
-
}
|
|
16147
|
-
}
|
|
16148
|
-
} }, hAsync("ion-label", null, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
|
|
16121
|
+
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("button", { class: {
|
|
16122
|
+
'calendar-month-year-toggle': true,
|
|
16123
|
+
'ion-activatable': true,
|
|
16124
|
+
'ion-focusable': true,
|
|
16125
|
+
}, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, hAsync("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && hAsync("ion-ripple-effect", null))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
|
|
16149
16126
|
return hAsync("div", { class: "day-of-week" }, d);
|
|
16150
16127
|
}))));
|
|
16151
16128
|
}
|
|
@@ -16306,7 +16283,7 @@ class Datetime {
|
|
|
16306
16283
|
* This will correctly scroll the element position to the correct time value,
|
|
16307
16284
|
* before the popover is fully presented.
|
|
16308
16285
|
*/
|
|
16309
|
-
const cols = ev.target.querySelectorAll('ion-picker-column
|
|
16286
|
+
const cols = ev.target.querySelectorAll('ion-picker-column');
|
|
16310
16287
|
// TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
|
|
16311
16288
|
cols.forEach((col) => col.scrollActiveItemIntoView());
|
|
16312
16289
|
}, style: {
|
|
@@ -16500,6 +16477,8 @@ class Datetime {
|
|
|
16500
16477
|
}; }
|
|
16501
16478
|
}
|
|
16502
16479
|
let datetimeIds = 0;
|
|
16480
|
+
const WHEEL_ITEM_PART = 'wheel-item';
|
|
16481
|
+
const WHEEL_ITEM_ACTIVE_PART = `active`;
|
|
16503
16482
|
|
|
16504
16483
|
const iosDatetimeButtonCss = "/*!@:host*/.sc-ion-datetime-button-ios-h{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}/*!@:host button*/.sc-ion-datetime-button-ios-h button.sc-ion-datetime-button-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:0px;margin-bottom:0px;position:relative;-webkit-transition:150ms color ease-in-out;transition:150ms color ease-in-out;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:1rem;cursor:pointer;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host(.time-active) #time-button,\n:host(.date-active) #date-button*/.time-active.sc-ion-datetime-button-ios-h #time-button.sc-ion-datetime-button-ios,.date-active.sc-ion-datetime-button-ios-h #date-button.sc-ion-datetime-button-ios{color:var(--ion-color-base)}/*!@:host(.datetime-button-disabled)*/.datetime-button-disabled.sc-ion-datetime-button-ios-h{pointer-events:none}/*!@:host(.datetime-button-disabled) button*/.datetime-button-disabled.sc-ion-datetime-button-ios-h button.sc-ion-datetime-button-ios{opacity:0.4}";
|
|
16505
16484
|
|
|
@@ -18760,6 +18739,8 @@ class Input {
|
|
|
18760
18739
|
*
|
|
18761
18740
|
* Developers who wish to focus an input when an overlay is presented
|
|
18762
18741
|
* should call `setFocus` after `didPresent` has resolved.
|
|
18742
|
+
*
|
|
18743
|
+
* See [managing focus](/docs/developing/managing-focus) for more information.
|
|
18763
18744
|
*/
|
|
18764
18745
|
async setFocus() {
|
|
18765
18746
|
if (this.nativeInput) {
|
|
@@ -21709,9 +21690,23 @@ const transition = (opts) => {
|
|
|
21709
21690
|
});
|
|
21710
21691
|
});
|
|
21711
21692
|
};
|
|
21693
|
+
const LAST_FOCUS = 'ion-last-focus';
|
|
21712
21694
|
const beforeTransition = (opts) => {
|
|
21713
21695
|
const enteringEl = opts.enteringEl;
|
|
21714
21696
|
const leavingEl = opts.leavingEl;
|
|
21697
|
+
const focusManagerEnabled = config.get('experimentalFocusManagerPriority', false);
|
|
21698
|
+
/**
|
|
21699
|
+
* When going back to a previously visited page
|
|
21700
|
+
* focus should typically be moved back to the
|
|
21701
|
+
* element that was last focused when the user
|
|
21702
|
+
* was on this view.
|
|
21703
|
+
*/
|
|
21704
|
+
if (focusManagerEnabled) {
|
|
21705
|
+
const activeEl = document.activeElement;
|
|
21706
|
+
if (activeEl !== null && (leavingEl === null || leavingEl === void 0 ? void 0 : leavingEl.contains(activeEl))) {
|
|
21707
|
+
activeEl.setAttribute(LAST_FOCUS, 'true');
|
|
21708
|
+
}
|
|
21709
|
+
}
|
|
21715
21710
|
setZIndex(enteringEl, leavingEl, opts.direction);
|
|
21716
21711
|
if (opts.showGoBack) {
|
|
21717
21712
|
enteringEl.classList.add('can-go-back');
|
|
@@ -21737,6 +21732,18 @@ const runTransition = async (opts) => {
|
|
|
21737
21732
|
const ani = animationBuilder && Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
|
|
21738
21733
|
return ani;
|
|
21739
21734
|
};
|
|
21735
|
+
/**
|
|
21736
|
+
* Moves focus to a specified element.
|
|
21737
|
+
* Note that we do not remove the tabindex
|
|
21738
|
+
* because that can result in an unintentional
|
|
21739
|
+
* blur. Non-focusables can't be focused, so the
|
|
21740
|
+
* body will get focused again.
|
|
21741
|
+
*/
|
|
21742
|
+
const moveFocus = (el) => {
|
|
21743
|
+
el.tabIndex = -1;
|
|
21744
|
+
el.focus();
|
|
21745
|
+
console.log('focus', el);
|
|
21746
|
+
};
|
|
21740
21747
|
const afterTransition = (opts) => {
|
|
21741
21748
|
const enteringEl = opts.enteringEl;
|
|
21742
21749
|
const leavingEl = opts.leavingEl;
|
|
@@ -21746,6 +21753,69 @@ const afterTransition = (opts) => {
|
|
|
21746
21753
|
leavingEl.classList.remove('ion-page-invisible');
|
|
21747
21754
|
leavingEl.style.removeProperty('pointer-events');
|
|
21748
21755
|
}
|
|
21756
|
+
const focusManagerPriorities = config.get('experimentalFocusManagerPriority', false);
|
|
21757
|
+
if (Array.isArray(focusManagerPriorities) && !enteringEl.contains(document.activeElement)) {
|
|
21758
|
+
/**
|
|
21759
|
+
* When going back to a previously visited view
|
|
21760
|
+
* focus should always be moved back to the element
|
|
21761
|
+
* that the user was last focused on when they were on this view.
|
|
21762
|
+
*/
|
|
21763
|
+
const lastFocus = enteringEl.querySelector(`[${LAST_FOCUS}]`);
|
|
21764
|
+
if (lastFocus) {
|
|
21765
|
+
moveFocus(lastFocus);
|
|
21766
|
+
return;
|
|
21767
|
+
}
|
|
21768
|
+
for (const priority of focusManagerPriorities) {
|
|
21769
|
+
switch (priority) {
|
|
21770
|
+
case 'content':
|
|
21771
|
+
/**
|
|
21772
|
+
* If no level one heading exists then we should at least focus the
|
|
21773
|
+
* header so focus starts at the top of the page.
|
|
21774
|
+
*/
|
|
21775
|
+
const content = enteringEl.querySelector('main, [role="main"]');
|
|
21776
|
+
if (content) {
|
|
21777
|
+
moveFocus(content);
|
|
21778
|
+
return;
|
|
21779
|
+
}
|
|
21780
|
+
break;
|
|
21781
|
+
case 'heading':
|
|
21782
|
+
/**
|
|
21783
|
+
* If no last focus exists then we should prefer to focus
|
|
21784
|
+
* level one headings. We do not prioritize the header yet
|
|
21785
|
+
* because the header can have non-title elements such as
|
|
21786
|
+
* a back button which is not necessarily helpful
|
|
21787
|
+
* to focus first.
|
|
21788
|
+
*/
|
|
21789
|
+
const headingOne = enteringEl.querySelector('h1, [role="heading"][aria-level="1"]');
|
|
21790
|
+
if (headingOne) {
|
|
21791
|
+
moveFocus(headingOne);
|
|
21792
|
+
return;
|
|
21793
|
+
}
|
|
21794
|
+
break;
|
|
21795
|
+
case 'banner':
|
|
21796
|
+
/**
|
|
21797
|
+
* If no level one heading exists then we should at least focus the
|
|
21798
|
+
* header so focus starts at the top of the page.
|
|
21799
|
+
*/
|
|
21800
|
+
const header = enteringEl.querySelector('header, [role="banner"]');
|
|
21801
|
+
if (header) {
|
|
21802
|
+
moveFocus(header);
|
|
21803
|
+
return;
|
|
21804
|
+
}
|
|
21805
|
+
break;
|
|
21806
|
+
default:
|
|
21807
|
+
printIonWarning(`Unrecognized focus manager priority value ${priority}`);
|
|
21808
|
+
break;
|
|
21809
|
+
}
|
|
21810
|
+
}
|
|
21811
|
+
/**
|
|
21812
|
+
* If there is no header then focus the page
|
|
21813
|
+
* so focus at least moves to the correct view.
|
|
21814
|
+
* The browser will then determine where within the
|
|
21815
|
+
* page to move focus to.
|
|
21816
|
+
*/
|
|
21817
|
+
moveFocus(enteringEl);
|
|
21818
|
+
}
|
|
21749
21819
|
};
|
|
21750
21820
|
const getAnimationBuilder = async (opts) => {
|
|
21751
21821
|
if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
|
|
@@ -24545,664 +24615,786 @@ class Note {
|
|
|
24545
24615
|
}; }
|
|
24546
24616
|
}
|
|
24547
24617
|
|
|
24548
|
-
|
|
24549
|
-
* iOS Picker Enter Animation
|
|
24550
|
-
*/
|
|
24551
|
-
const iosEnterAnimation$2 = (baseEl) => {
|
|
24552
|
-
const baseAnimation = createAnimation();
|
|
24553
|
-
const backdropAnimation = createAnimation();
|
|
24554
|
-
const wrapperAnimation = createAnimation();
|
|
24555
|
-
backdropAnimation
|
|
24556
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24557
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
24558
|
-
.beforeStyles({
|
|
24559
|
-
'pointer-events': 'none',
|
|
24560
|
-
})
|
|
24561
|
-
.afterClearStyles(['pointer-events']);
|
|
24562
|
-
wrapperAnimation
|
|
24563
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24564
|
-
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
24565
|
-
return baseAnimation
|
|
24566
|
-
.addElement(baseEl)
|
|
24567
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24568
|
-
.duration(400)
|
|
24569
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24570
|
-
};
|
|
24571
|
-
|
|
24572
|
-
/**
|
|
24573
|
-
* iOS Picker Leave Animation
|
|
24574
|
-
*/
|
|
24575
|
-
const iosLeaveAnimation$2 = (baseEl) => {
|
|
24576
|
-
const baseAnimation = createAnimation();
|
|
24577
|
-
const backdropAnimation = createAnimation();
|
|
24578
|
-
const wrapperAnimation = createAnimation();
|
|
24579
|
-
backdropAnimation
|
|
24580
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24581
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
24582
|
-
wrapperAnimation
|
|
24583
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24584
|
-
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
24585
|
-
return baseAnimation
|
|
24586
|
-
.addElement(baseEl)
|
|
24587
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24588
|
-
.duration(400)
|
|
24589
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24590
|
-
};
|
|
24591
|
-
|
|
24592
|
-
const pickerIosCss = ".sc-ion-picker-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-ios-h{left:0}[dir=rtl].sc-ion-picker-ios-h,[dir=rtl] .sc-ion-picker-ios-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-ios-h{display:none}.picker-wrapper.sc-ion-picker-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-ios:active,.picker-button.sc-ion-picker-ios:focus{outline:none}.picker-columns.sc-ion-picker-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-ios,.picker-below-highlight.sc-ion-picker-ios{display:none;pointer-events:none}.sc-ion-picker-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-ios:last-child .picker-button.sc-ion-picker-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-ios,.picker-button.ion-activated.sc-ion-picker-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:16px}.picker-columns.sc-ion-picker-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-ios{left:0}[dir=rtl].sc-ion-picker-ios-h .picker-above-highlight.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-above-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-ios .picker-above-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-ios:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-ios{left:0}[dir=rtl].sc-ion-picker-ios-h .picker-below-highlight.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-below-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-ios .picker-below-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-ios:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
24618
|
+
const pickerIosCss$1 = "/*!@:host*/.sc-ion-picker-ios-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios,.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-ios selector(.sc-ion-picker-ios:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-ios selector(.sc-ion-picker-ios:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-ios-h .picker-highlight.sc-ion-picker-ios{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-ios-h input.sc-ion-picker-ios{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column:first-of-type)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column:last-of-type)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column:only-child)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-highlight*/.sc-ion-picker-ios-h .picker-highlight.sc-ion-picker-ios{background:var(--highlight-background, var(--ion-color-step-150, #eeeeef))}";
|
|
24593
24619
|
|
|
24594
|
-
const pickerMdCss = "
|
|
24620
|
+
const pickerMdCss$1 = "/*!@:host*/.sc-ion-picker-md-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md,.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-md-h .picker-before.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-before.sc-ion-picker-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-md selector(.sc-ion-picker-md:dir(rtl)){.sc-ion-picker-md-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-md-h .picker-after.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-after.sc-ion-picker-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-md selector(.sc-ion-picker-md:dir(rtl)){.sc-ion-picker-md-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-md-h .picker-highlight.sc-ion-picker-md{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-md-h input.sc-ion-picker-md{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column:first-of-type)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column:last-of-type)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column:only-child)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}";
|
|
24595
24621
|
|
|
24596
|
-
// TODO(FW-2832): types
|
|
24597
24622
|
/**
|
|
24598
24623
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
24599
24624
|
*/
|
|
24600
|
-
class Picker {
|
|
24625
|
+
class Picker$1 {
|
|
24601
24626
|
constructor(hostRef) {
|
|
24602
24627
|
registerInstance(this, hostRef);
|
|
24603
|
-
this.
|
|
24604
|
-
this.
|
|
24605
|
-
this.
|
|
24606
|
-
|
|
24607
|
-
|
|
24608
|
-
|
|
24609
|
-
|
|
24610
|
-
|
|
24611
|
-
|
|
24612
|
-
|
|
24613
|
-
|
|
24614
|
-
|
|
24615
|
-
|
|
24616
|
-
|
|
24617
|
-
|
|
24618
|
-
|
|
24619
|
-
if (isCancel(role)) {
|
|
24620
|
-
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
24621
|
-
this.callButtonHandler(cancelButton);
|
|
24628
|
+
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
24629
|
+
this.useInputMode = false;
|
|
24630
|
+
this.isInHighlightBounds = (ev) => {
|
|
24631
|
+
const { highlightEl } = this;
|
|
24632
|
+
if (!highlightEl) {
|
|
24633
|
+
return false;
|
|
24634
|
+
}
|
|
24635
|
+
const bbox = highlightEl.getBoundingClientRect();
|
|
24636
|
+
/**
|
|
24637
|
+
* Check to see if the user clicked
|
|
24638
|
+
* outside the bounds of the highlight.
|
|
24639
|
+
*/
|
|
24640
|
+
const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
|
|
24641
|
+
const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
|
|
24642
|
+
if (outsideX || outsideY) {
|
|
24643
|
+
return false;
|
|
24622
24644
|
}
|
|
24645
|
+
return true;
|
|
24623
24646
|
};
|
|
24624
|
-
this.presented = false;
|
|
24625
|
-
this.overlayIndex = undefined;
|
|
24626
|
-
this.delegate = undefined;
|
|
24627
|
-
this.hasController = false;
|
|
24628
|
-
this.keyboardClose = true;
|
|
24629
|
-
this.enterAnimation = undefined;
|
|
24630
|
-
this.leaveAnimation = undefined;
|
|
24631
|
-
this.buttons = [];
|
|
24632
|
-
this.columns = [];
|
|
24633
|
-
this.cssClass = undefined;
|
|
24634
|
-
this.duration = 0;
|
|
24635
|
-
this.showBackdrop = true;
|
|
24636
|
-
this.backdropDismiss = true;
|
|
24637
|
-
this.animated = true;
|
|
24638
|
-
this.htmlAttributes = undefined;
|
|
24639
|
-
this.isOpen = false;
|
|
24640
|
-
this.trigger = undefined;
|
|
24641
|
-
}
|
|
24642
|
-
onIsOpenChange(newValue, oldValue) {
|
|
24643
|
-
if (newValue === true && oldValue === false) {
|
|
24644
|
-
this.present();
|
|
24645
|
-
}
|
|
24646
|
-
else if (newValue === false && oldValue === true) {
|
|
24647
|
-
this.dismiss();
|
|
24648
|
-
}
|
|
24649
|
-
}
|
|
24650
|
-
triggerChanged() {
|
|
24651
|
-
const { trigger, el, triggerController } = this;
|
|
24652
|
-
if (trigger) {
|
|
24653
|
-
triggerController.addClickListener(el, trigger);
|
|
24654
|
-
}
|
|
24655
|
-
}
|
|
24656
|
-
connectedCallback() {
|
|
24657
|
-
prepareOverlay(this.el);
|
|
24658
|
-
this.triggerChanged();
|
|
24659
|
-
}
|
|
24660
|
-
disconnectedCallback() {
|
|
24661
|
-
this.triggerController.removeClickListener();
|
|
24662
|
-
}
|
|
24663
|
-
componentWillLoad() {
|
|
24664
|
-
setOverlayId(this.el);
|
|
24665
|
-
}
|
|
24666
|
-
componentDidLoad() {
|
|
24667
24647
|
/**
|
|
24668
|
-
* If
|
|
24669
|
-
* then we should
|
|
24648
|
+
* If we are no longer focused
|
|
24649
|
+
* on a picker column, then we should
|
|
24650
|
+
* exit input mode. An exception is made
|
|
24651
|
+
* for the input in the picker since having
|
|
24652
|
+
* that focused means we are still in input mode.
|
|
24670
24653
|
*/
|
|
24671
|
-
|
|
24672
|
-
|
|
24673
|
-
|
|
24654
|
+
this.onFocusOut = (ev) => {
|
|
24655
|
+
// TODO(FW-2832): type
|
|
24656
|
+
const { relatedTarget } = ev;
|
|
24657
|
+
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
|
|
24658
|
+
this.exitInputMode();
|
|
24659
|
+
}
|
|
24660
|
+
};
|
|
24674
24661
|
/**
|
|
24675
|
-
* When
|
|
24676
|
-
*
|
|
24677
|
-
*
|
|
24678
|
-
* As a result, the watcher callback may not be fired.
|
|
24679
|
-
* We work around this by manually calling the watcher
|
|
24680
|
-
* callback when the component has loaded and the watcher
|
|
24681
|
-
* is configured.
|
|
24662
|
+
* When picker columns receive focus
|
|
24663
|
+
* the parent picker needs to determine
|
|
24664
|
+
* whether to enter/exit input mode.
|
|
24682
24665
|
*/
|
|
24683
|
-
this.
|
|
24684
|
-
|
|
24685
|
-
|
|
24686
|
-
|
|
24687
|
-
|
|
24688
|
-
|
|
24689
|
-
|
|
24690
|
-
|
|
24691
|
-
|
|
24692
|
-
|
|
24693
|
-
|
|
24694
|
-
}
|
|
24695
|
-
unlock();
|
|
24696
|
-
}
|
|
24697
|
-
/**
|
|
24698
|
-
* Dismiss the picker overlay after it has been presented.
|
|
24699
|
-
*
|
|
24700
|
-
* @param data Any data to emit in the dismiss events.
|
|
24701
|
-
* @param role The role of the element that is dismissing the picker.
|
|
24702
|
-
* This can be useful in a button handler for determining which button was
|
|
24703
|
-
* clicked to dismiss the picker.
|
|
24704
|
-
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
24705
|
-
*/
|
|
24706
|
-
async dismiss(data, role) {
|
|
24707
|
-
const unlock = await this.lockController.lock();
|
|
24708
|
-
if (this.durationTimeout) {
|
|
24709
|
-
clearTimeout(this.durationTimeout);
|
|
24710
|
-
}
|
|
24711
|
-
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
24712
|
-
if (dismissed) {
|
|
24713
|
-
this.delegateController.removeViewFromDom();
|
|
24714
|
-
}
|
|
24715
|
-
unlock();
|
|
24716
|
-
return dismissed;
|
|
24717
|
-
}
|
|
24718
|
-
/**
|
|
24719
|
-
* Returns a promise that resolves when the picker did dismiss.
|
|
24720
|
-
*/
|
|
24721
|
-
onDidDismiss() {
|
|
24722
|
-
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
24723
|
-
}
|
|
24724
|
-
/**
|
|
24725
|
-
* Returns a promise that resolves when the picker will dismiss.
|
|
24726
|
-
*/
|
|
24727
|
-
onWillDismiss() {
|
|
24728
|
-
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
24729
|
-
}
|
|
24730
|
-
/**
|
|
24731
|
-
* Get the column that matches the specified name.
|
|
24732
|
-
*
|
|
24733
|
-
* @param name The name of the column.
|
|
24734
|
-
*/
|
|
24735
|
-
getColumn(name) {
|
|
24736
|
-
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
24737
|
-
}
|
|
24738
|
-
async buttonClick(button) {
|
|
24739
|
-
const role = button.role;
|
|
24740
|
-
if (isCancel(role)) {
|
|
24741
|
-
return this.dismiss(undefined, role);
|
|
24742
|
-
}
|
|
24743
|
-
const shouldDismiss = await this.callButtonHandler(button);
|
|
24744
|
-
if (shouldDismiss) {
|
|
24745
|
-
return this.dismiss(this.getSelected(), button.role);
|
|
24746
|
-
}
|
|
24747
|
-
return Promise.resolve();
|
|
24748
|
-
}
|
|
24749
|
-
async callButtonHandler(button) {
|
|
24750
|
-
if (button) {
|
|
24751
|
-
// a handler has been provided, execute it
|
|
24752
|
-
// pass the handler the values from the inputs
|
|
24753
|
-
const rtn = await safeCall(button.handler, this.getSelected());
|
|
24754
|
-
if (rtn === false) {
|
|
24755
|
-
// if the return value of the handler is false then do not dismiss
|
|
24756
|
-
return false;
|
|
24666
|
+
this.onFocusIn = (ev) => {
|
|
24667
|
+
// TODO(FW-2832): type
|
|
24668
|
+
const { target } = ev;
|
|
24669
|
+
/**
|
|
24670
|
+
* Due to browser differences in how/when focus
|
|
24671
|
+
* is dispatched on certain elements, we need to
|
|
24672
|
+
* make sure that this function only ever runs when
|
|
24673
|
+
* focusing a picker column.
|
|
24674
|
+
*/
|
|
24675
|
+
if (target.tagName !== 'ION-PICKER-COLUMN') {
|
|
24676
|
+
return;
|
|
24757
24677
|
}
|
|
24758
|
-
|
|
24759
|
-
|
|
24760
|
-
|
|
24761
|
-
|
|
24762
|
-
|
|
24763
|
-
|
|
24764
|
-
|
|
24765
|
-
|
|
24766
|
-
|
|
24767
|
-
|
|
24768
|
-
|
|
24769
|
-
|
|
24770
|
-
|
|
24771
|
-
|
|
24772
|
-
|
|
24773
|
-
|
|
24774
|
-
|
|
24775
|
-
|
|
24776
|
-
return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
24777
|
-
zIndex: `${20000 + this.overlayIndex}`,
|
|
24778
|
-
}, class: Object.assign({ [mode]: true,
|
|
24779
|
-
// Used internally for styling
|
|
24780
|
-
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
|
|
24781
|
-
}
|
|
24782
|
-
get el() { return getElement(this); }
|
|
24783
|
-
static get watchers() { return {
|
|
24784
|
-
"isOpen": ["onIsOpenChange"],
|
|
24785
|
-
"trigger": ["triggerChanged"]
|
|
24786
|
-
}; }
|
|
24787
|
-
static get style() { return {
|
|
24788
|
-
ios: pickerIosCss,
|
|
24789
|
-
md: pickerMdCss
|
|
24790
|
-
}; }
|
|
24791
|
-
static get cmpMeta() { return {
|
|
24792
|
-
"$flags$": 34,
|
|
24793
|
-
"$tagName$": "ion-picker",
|
|
24794
|
-
"$members$": {
|
|
24795
|
-
"overlayIndex": [2, "overlay-index"],
|
|
24796
|
-
"delegate": [16],
|
|
24797
|
-
"hasController": [4, "has-controller"],
|
|
24798
|
-
"keyboardClose": [4, "keyboard-close"],
|
|
24799
|
-
"enterAnimation": [16],
|
|
24800
|
-
"leaveAnimation": [16],
|
|
24801
|
-
"buttons": [16],
|
|
24802
|
-
"columns": [16],
|
|
24803
|
-
"cssClass": [1, "css-class"],
|
|
24804
|
-
"duration": [2],
|
|
24805
|
-
"showBackdrop": [4, "show-backdrop"],
|
|
24806
|
-
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
24807
|
-
"animated": [4],
|
|
24808
|
-
"htmlAttributes": [16],
|
|
24809
|
-
"isOpen": [4, "is-open"],
|
|
24810
|
-
"trigger": [1],
|
|
24811
|
-
"presented": [32],
|
|
24812
|
-
"present": [64],
|
|
24813
|
-
"dismiss": [64],
|
|
24814
|
-
"onDidDismiss": [64],
|
|
24815
|
-
"onWillDismiss": [64],
|
|
24816
|
-
"getColumn": [64]
|
|
24817
|
-
},
|
|
24818
|
-
"$listeners$": undefined,
|
|
24819
|
-
"$lazyBundleId$": "-",
|
|
24820
|
-
"$attrsToReflect$": []
|
|
24821
|
-
}; }
|
|
24822
|
-
}
|
|
24823
|
-
const buttonWrapperClass = (button) => {
|
|
24824
|
-
return {
|
|
24825
|
-
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
24826
|
-
'picker-toolbar-button': true,
|
|
24827
|
-
};
|
|
24828
|
-
};
|
|
24829
|
-
const buttonClass$1 = (button) => {
|
|
24830
|
-
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
24831
|
-
};
|
|
24832
|
-
|
|
24833
|
-
const pickerColumnIosCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}";
|
|
24834
|
-
|
|
24835
|
-
const pickerColumnMdCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #3880ff)}";
|
|
24836
|
-
|
|
24837
|
-
/**
|
|
24838
|
-
* @internal
|
|
24839
|
-
*/
|
|
24840
|
-
class PickerColumnCmp {
|
|
24841
|
-
constructor(hostRef) {
|
|
24842
|
-
registerInstance(this, hostRef);
|
|
24843
|
-
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
24844
|
-
this.optHeight = 0;
|
|
24845
|
-
this.rotateFactor = 0;
|
|
24846
|
-
this.scaleFactor = 1;
|
|
24847
|
-
this.velocity = 0;
|
|
24848
|
-
this.y = 0;
|
|
24849
|
-
this.noAnimate = true;
|
|
24850
|
-
// `colDidChange` is a flag that gets set when the column is changed
|
|
24851
|
-
// dynamically. When this flag is set, the column will refresh
|
|
24852
|
-
// after the component re-renders to incorporate the new column data.
|
|
24853
|
-
// This is necessary because `this.refresh` queries for the option elements,
|
|
24854
|
-
// so it needs to wait for the latest elements to be available in the DOM.
|
|
24855
|
-
// Ex: column is created with 3 options. User updates the column data
|
|
24856
|
-
// to have 5 options. The column will still think it only has 3 options.
|
|
24857
|
-
this.colDidChange = false;
|
|
24858
|
-
this.col = undefined;
|
|
24859
|
-
}
|
|
24860
|
-
colChanged() {
|
|
24861
|
-
this.colDidChange = true;
|
|
24862
|
-
}
|
|
24863
|
-
async connectedCallback() {
|
|
24864
|
-
let pickerRotateFactor = 0;
|
|
24865
|
-
let pickerScaleFactor = 0.81;
|
|
24866
|
-
const mode = getIonMode$1(this);
|
|
24867
|
-
if (mode === 'ios') {
|
|
24868
|
-
pickerRotateFactor = -0.46;
|
|
24869
|
-
pickerScaleFactor = 1;
|
|
24870
|
-
}
|
|
24871
|
-
this.rotateFactor = pickerRotateFactor;
|
|
24872
|
-
this.scaleFactor = pickerScaleFactor;
|
|
24873
|
-
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
24874
|
-
el: this.el,
|
|
24875
|
-
gestureName: 'picker-swipe',
|
|
24876
|
-
gesturePriority: 100,
|
|
24877
|
-
threshold: 0,
|
|
24878
|
-
passive: false,
|
|
24879
|
-
onStart: (ev) => this.onStart(ev),
|
|
24880
|
-
onMove: (ev) => this.onMove(ev),
|
|
24881
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
24882
|
-
});
|
|
24883
|
-
this.gesture.enable();
|
|
24884
|
-
// Options have not been initialized yet
|
|
24885
|
-
// Animation must be disabled through the `noAnimate` flag
|
|
24886
|
-
// Otherwise, the options will render
|
|
24887
|
-
// at the top of the column and transition down
|
|
24888
|
-
this.tmrId = setTimeout(() => {
|
|
24889
|
-
this.noAnimate = false;
|
|
24890
|
-
// After initialization, `refresh()` will be called
|
|
24891
|
-
// At this point, animation will be enabled. The options will
|
|
24892
|
-
// animate as they are being selected.
|
|
24893
|
-
this.refresh(true);
|
|
24894
|
-
}, 250);
|
|
24895
|
-
}
|
|
24896
|
-
componentDidLoad() {
|
|
24897
|
-
this.onDomChange();
|
|
24898
|
-
}
|
|
24899
|
-
componentDidUpdate() {
|
|
24900
|
-
// Options may have changed since last update.
|
|
24901
|
-
if (this.colDidChange) {
|
|
24902
|
-
// Animation must be disabled through the `onDomChange` parameter.
|
|
24903
|
-
// Otherwise, the recently added options will render
|
|
24904
|
-
// at the top of the column and transition down
|
|
24905
|
-
this.onDomChange(true, false);
|
|
24906
|
-
this.colDidChange = false;
|
|
24907
|
-
}
|
|
24908
|
-
}
|
|
24909
|
-
disconnectedCallback() {
|
|
24910
|
-
if (this.rafId !== undefined)
|
|
24911
|
-
cancelAnimationFrame(this.rafId);
|
|
24912
|
-
if (this.tmrId)
|
|
24913
|
-
clearTimeout(this.tmrId);
|
|
24914
|
-
if (this.gesture) {
|
|
24915
|
-
this.gesture.destroy();
|
|
24916
|
-
this.gesture = undefined;
|
|
24917
|
-
}
|
|
24918
|
-
}
|
|
24919
|
-
emitColChange() {
|
|
24920
|
-
this.ionPickerColChange.emit(this.col);
|
|
24921
|
-
}
|
|
24922
|
-
setSelected(selectedIndex, duration) {
|
|
24923
|
-
// if there is a selected index, then figure out it's y position
|
|
24924
|
-
// if there isn't a selected index, then just use the top y position
|
|
24925
|
-
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
24926
|
-
this.velocity = 0;
|
|
24927
|
-
// set what y position we're at
|
|
24928
|
-
if (this.rafId !== undefined)
|
|
24929
|
-
cancelAnimationFrame(this.rafId);
|
|
24930
|
-
this.update(y, duration, true);
|
|
24931
|
-
this.emitColChange();
|
|
24932
|
-
}
|
|
24933
|
-
update(y, duration, saveY) {
|
|
24934
|
-
if (!this.optsEl) {
|
|
24935
|
-
return;
|
|
24936
|
-
}
|
|
24937
|
-
// ensure we've got a good round number :)
|
|
24938
|
-
let translateY = 0;
|
|
24939
|
-
let translateZ = 0;
|
|
24940
|
-
const { col, rotateFactor } = this;
|
|
24941
|
-
const prevSelected = col.selectedIndex;
|
|
24942
|
-
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
24943
|
-
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
24944
|
-
const scaleStr = `scale(${this.scaleFactor})`;
|
|
24945
|
-
const children = this.optsEl.children;
|
|
24946
|
-
for (let i = 0; i < children.length; i++) {
|
|
24947
|
-
const button = children[i];
|
|
24948
|
-
const opt = col.options[i];
|
|
24949
|
-
const optOffset = i * this.optHeight + y;
|
|
24950
|
-
let transform = '';
|
|
24951
|
-
if (rotateFactor !== 0) {
|
|
24952
|
-
const rotateX = optOffset * rotateFactor;
|
|
24953
|
-
if (Math.abs(rotateX) <= 90) {
|
|
24954
|
-
translateY = 0;
|
|
24955
|
-
translateZ = 90;
|
|
24956
|
-
transform = `rotateX(${rotateX}deg) `;
|
|
24678
|
+
/**
|
|
24679
|
+
* If we have actionOnClick
|
|
24680
|
+
* then this means the user focused
|
|
24681
|
+
* a picker column via mouse or
|
|
24682
|
+
* touch (i.e. a PointerEvent). As a result,
|
|
24683
|
+
* we should not enter/exit input mode
|
|
24684
|
+
* until the click event has fired, which happens
|
|
24685
|
+
* after the `focusin` event.
|
|
24686
|
+
*
|
|
24687
|
+
* Otherwise, the user likely focused
|
|
24688
|
+
* the column using their keyboard and
|
|
24689
|
+
* we should enter/exit input mode automatically.
|
|
24690
|
+
*/
|
|
24691
|
+
if (!this.actionOnClick) {
|
|
24692
|
+
const columnEl = target;
|
|
24693
|
+
const allowInput = columnEl.numericInput;
|
|
24694
|
+
if (allowInput) {
|
|
24695
|
+
this.enterInputMode(columnEl, false);
|
|
24957
24696
|
}
|
|
24958
24697
|
else {
|
|
24959
|
-
|
|
24698
|
+
this.exitInputMode();
|
|
24960
24699
|
}
|
|
24961
24700
|
}
|
|
24962
|
-
|
|
24963
|
-
|
|
24964
|
-
|
|
24965
|
-
|
|
24966
|
-
|
|
24967
|
-
|
|
24968
|
-
|
|
24969
|
-
|
|
24701
|
+
};
|
|
24702
|
+
/**
|
|
24703
|
+
* On click we need to run an actionOnClick
|
|
24704
|
+
* function that has been set in onPointerDown
|
|
24705
|
+
* so that we enter/exit input mode correctly.
|
|
24706
|
+
*/
|
|
24707
|
+
this.onClick = () => {
|
|
24708
|
+
const { actionOnClick } = this;
|
|
24709
|
+
if (actionOnClick) {
|
|
24710
|
+
actionOnClick();
|
|
24711
|
+
this.actionOnClick = undefined;
|
|
24970
24712
|
}
|
|
24971
|
-
|
|
24972
|
-
|
|
24973
|
-
|
|
24974
|
-
|
|
24713
|
+
};
|
|
24714
|
+
/**
|
|
24715
|
+
* Clicking a column also focuses the column on
|
|
24716
|
+
* certain browsers, so we use onPointerDown
|
|
24717
|
+
* to tell the onFocusIn function that users
|
|
24718
|
+
* are trying to click the column rather than
|
|
24719
|
+
* focus the column using the keyboard. When the
|
|
24720
|
+
* user completes the click, the onClick function
|
|
24721
|
+
* runs and runs the actionOnClick callback.
|
|
24722
|
+
*/
|
|
24723
|
+
this.onPointerDown = (ev) => {
|
|
24724
|
+
const { useInputMode, inputModeColumn, el } = this;
|
|
24725
|
+
if (this.isInHighlightBounds(ev)) {
|
|
24726
|
+
/**
|
|
24727
|
+
* If we were already in
|
|
24728
|
+
* input mode, then we should determine
|
|
24729
|
+
* if we tapped a particular column and
|
|
24730
|
+
* should switch to input mode for
|
|
24731
|
+
* that specific column.
|
|
24732
|
+
*/
|
|
24733
|
+
if (useInputMode) {
|
|
24734
|
+
/**
|
|
24735
|
+
* If we tapped a picker column
|
|
24736
|
+
* then we should either switch to input
|
|
24737
|
+
* mode for that column or all columns.
|
|
24738
|
+
* Otherwise we should exit input mode
|
|
24739
|
+
* since we just tapped the highlight and
|
|
24740
|
+
* not a column.
|
|
24741
|
+
*/
|
|
24742
|
+
if (ev.target.tagName === 'ION-PICKER-COLUMN') {
|
|
24743
|
+
/**
|
|
24744
|
+
* If user taps 2 different columns
|
|
24745
|
+
* then we should just switch to input mode
|
|
24746
|
+
* for the new column rather than switching to
|
|
24747
|
+
* input mode for all columns.
|
|
24748
|
+
*/
|
|
24749
|
+
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
24750
|
+
this.actionOnClick = () => {
|
|
24751
|
+
this.enterInputMode();
|
|
24752
|
+
};
|
|
24753
|
+
}
|
|
24754
|
+
else {
|
|
24755
|
+
this.actionOnClick = () => {
|
|
24756
|
+
this.enterInputMode(ev.target);
|
|
24757
|
+
};
|
|
24758
|
+
}
|
|
24759
|
+
}
|
|
24760
|
+
else {
|
|
24761
|
+
this.actionOnClick = () => {
|
|
24762
|
+
this.exitInputMode();
|
|
24763
|
+
};
|
|
24764
|
+
}
|
|
24765
|
+
/**
|
|
24766
|
+
* If we were not already in
|
|
24767
|
+
* input mode, then we should
|
|
24768
|
+
* enter input mode for all columns.
|
|
24769
|
+
*/
|
|
24770
|
+
}
|
|
24771
|
+
else {
|
|
24772
|
+
/**
|
|
24773
|
+
* If there is only 1 numeric input column
|
|
24774
|
+
* then we should skip multi column input.
|
|
24775
|
+
*/
|
|
24776
|
+
const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
|
|
24777
|
+
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
24778
|
+
this.actionOnClick = () => {
|
|
24779
|
+
this.enterInputMode(columnEl);
|
|
24780
|
+
};
|
|
24781
|
+
}
|
|
24782
|
+
return;
|
|
24975
24783
|
}
|
|
24976
|
-
|
|
24977
|
-
|
|
24978
|
-
|
|
24784
|
+
this.actionOnClick = () => {
|
|
24785
|
+
this.exitInputMode();
|
|
24786
|
+
};
|
|
24787
|
+
};
|
|
24788
|
+
/**
|
|
24789
|
+
* Enters input mode to allow
|
|
24790
|
+
* for text entry of numeric values.
|
|
24791
|
+
* If on mobile, we focus a hidden input
|
|
24792
|
+
* field so that the on screen keyboard
|
|
24793
|
+
* is brought up. When tabbing using a
|
|
24794
|
+
* keyboard, picker columns receive an outline
|
|
24795
|
+
* to indicate they are focused. As a result,
|
|
24796
|
+
* we should not focus the hidden input as it
|
|
24797
|
+
* would cause the outline to go away, preventing
|
|
24798
|
+
* users from having any visual indication of which
|
|
24799
|
+
* column is focused.
|
|
24800
|
+
*/
|
|
24801
|
+
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
24802
|
+
const { inputEl, el } = this;
|
|
24803
|
+
if (!inputEl) {
|
|
24804
|
+
return;
|
|
24979
24805
|
}
|
|
24980
|
-
|
|
24981
|
-
|
|
24982
|
-
|
|
24806
|
+
/**
|
|
24807
|
+
* Only active input mode if there is at
|
|
24808
|
+
* least one column that accepts numeric input.
|
|
24809
|
+
*/
|
|
24810
|
+
const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
|
|
24811
|
+
if (!hasInputColumn) {
|
|
24812
|
+
return;
|
|
24983
24813
|
}
|
|
24984
|
-
button.style.transform = transform;
|
|
24985
24814
|
/**
|
|
24986
|
-
*
|
|
24987
|
-
*
|
|
24815
|
+
* If columnEl is undefined then
|
|
24816
|
+
* it is assumed that all numeric pickers
|
|
24817
|
+
* are eligible for text entry.
|
|
24818
|
+
* (i.e. hour and minute columns)
|
|
24988
24819
|
*/
|
|
24989
|
-
|
|
24990
|
-
|
|
24991
|
-
|
|
24820
|
+
this.useInputMode = true;
|
|
24821
|
+
this.inputModeColumn = columnEl;
|
|
24822
|
+
/**
|
|
24823
|
+
* Users with a keyboard and mouse can
|
|
24824
|
+
* activate input mode where the input is
|
|
24825
|
+
* focused as well as when it is not focused,
|
|
24826
|
+
* so we need to make sure we clean up any
|
|
24827
|
+
* old listeners.
|
|
24828
|
+
*/
|
|
24829
|
+
if (focusInput) {
|
|
24830
|
+
if (this.destroyKeypressListener) {
|
|
24831
|
+
this.destroyKeypressListener();
|
|
24832
|
+
this.destroyKeypressListener = undefined;
|
|
24833
|
+
}
|
|
24834
|
+
inputEl.focus();
|
|
24992
24835
|
}
|
|
24993
24836
|
else {
|
|
24994
|
-
|
|
24837
|
+
el.addEventListener('keypress', this.onKeyPress);
|
|
24838
|
+
this.destroyKeypressListener = () => {
|
|
24839
|
+
el.removeEventListener('keypress', this.onKeyPress);
|
|
24840
|
+
};
|
|
24995
24841
|
}
|
|
24996
|
-
|
|
24997
|
-
|
|
24998
|
-
|
|
24999
|
-
|
|
25000
|
-
|
|
25001
|
-
|
|
25002
|
-
// have not set a last index yet
|
|
25003
|
-
hapticSelectionChanged();
|
|
25004
|
-
this.lastIndex = selectedIndex;
|
|
25005
|
-
}
|
|
25006
|
-
}
|
|
25007
|
-
decelerate() {
|
|
25008
|
-
if (this.velocity !== 0) {
|
|
25009
|
-
// still decelerating
|
|
25010
|
-
this.velocity *= DECELERATION_FRICTION;
|
|
25011
|
-
// do not let it go slower than a velocity of 1
|
|
25012
|
-
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
25013
|
-
let y = this.y + this.velocity;
|
|
25014
|
-
if (y > this.minY) {
|
|
25015
|
-
// whoops, it's trying to scroll up farther than the options we have!
|
|
25016
|
-
y = this.minY;
|
|
25017
|
-
this.velocity = 0;
|
|
24842
|
+
this.emitInputModeChange();
|
|
24843
|
+
};
|
|
24844
|
+
this.onKeyPress = (ev) => {
|
|
24845
|
+
const { inputEl } = this;
|
|
24846
|
+
if (!inputEl) {
|
|
24847
|
+
return;
|
|
25018
24848
|
}
|
|
25019
|
-
|
|
25020
|
-
|
|
25021
|
-
|
|
25022
|
-
|
|
24849
|
+
const parsedValue = parseInt(ev.key, 10);
|
|
24850
|
+
/**
|
|
24851
|
+
* Only numbers should be allowed
|
|
24852
|
+
*/
|
|
24853
|
+
if (!Number.isNaN(parsedValue)) {
|
|
24854
|
+
inputEl.value += ev.key;
|
|
24855
|
+
this.onInputChange();
|
|
25023
24856
|
}
|
|
25024
|
-
|
|
25025
|
-
|
|
25026
|
-
|
|
25027
|
-
|
|
25028
|
-
|
|
24857
|
+
};
|
|
24858
|
+
this.selectSingleColumn = () => {
|
|
24859
|
+
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
24860
|
+
if (!inputEl || !inputModeColumn) {
|
|
24861
|
+
return;
|
|
24862
|
+
}
|
|
24863
|
+
const options = Array.from(inputModeColumn.querySelectorAll('ion-picker-column-option')).filter((el) => el.disabled !== true);
|
|
24864
|
+
/**
|
|
24865
|
+
* If users pause for a bit, the search
|
|
24866
|
+
* value should be reset similar to how a
|
|
24867
|
+
* <select> behaves. So typing "34", waiting,
|
|
24868
|
+
* then typing "5" should select "05".
|
|
24869
|
+
*/
|
|
24870
|
+
if (singleColumnSearchTimeout) {
|
|
24871
|
+
clearTimeout(singleColumnSearchTimeout);
|
|
24872
|
+
}
|
|
24873
|
+
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
24874
|
+
inputEl.value = '';
|
|
24875
|
+
this.singleColumnSearchTimeout = undefined;
|
|
24876
|
+
}, 1000);
|
|
24877
|
+
/**
|
|
24878
|
+
* For values that are longer than 2 digits long
|
|
24879
|
+
* we should shift the value over 1 character
|
|
24880
|
+
* to the left. So typing "456" would result in "56".
|
|
24881
|
+
* TODO: If we want to support more than just
|
|
24882
|
+
* time entry, we should update this value to be
|
|
24883
|
+
* the max length of all of the picker items.
|
|
24884
|
+
*/
|
|
24885
|
+
if (inputEl.value.length >= 3) {
|
|
24886
|
+
const startIndex = inputEl.value.length - 2;
|
|
24887
|
+
const newString = inputEl.value.substring(startIndex);
|
|
24888
|
+
inputEl.value = newString;
|
|
24889
|
+
this.selectSingleColumn();
|
|
24890
|
+
return;
|
|
24891
|
+
}
|
|
24892
|
+
/**
|
|
24893
|
+
* Checking the value of the input gets priority
|
|
24894
|
+
* first. For example, if the value of the input
|
|
24895
|
+
* is "1" and we entered "2", then the complete value
|
|
24896
|
+
* is "12" and we should select hour 12.
|
|
24897
|
+
*
|
|
24898
|
+
* Regex removes any leading zeros from values like "02",
|
|
24899
|
+
* but it keeps a single zero if there are only zeros in the string.
|
|
24900
|
+
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
24901
|
+
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
24902
|
+
*/
|
|
24903
|
+
const findItemFromCompleteValue = options.find(({ textContent }) => {
|
|
24904
|
+
/**
|
|
24905
|
+
* Keyboard entry is currently only used inside of Datetime
|
|
24906
|
+
* where we guarantee textContent is set.
|
|
24907
|
+
* If we end up exposing this feature publicly we should revisit this assumption.
|
|
24908
|
+
*/
|
|
24909
|
+
const parsedText = textContent.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
24910
|
+
return parsedText === inputEl.value;
|
|
24911
|
+
});
|
|
24912
|
+
if (findItemFromCompleteValue) {
|
|
24913
|
+
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
24914
|
+
return;
|
|
24915
|
+
}
|
|
24916
|
+
/**
|
|
24917
|
+
* If we typed "56" to get minute 56, then typed "7",
|
|
24918
|
+
* we should select "07" as "567" is not a valid minute.
|
|
24919
|
+
*/
|
|
24920
|
+
if (inputEl.value.length === 2) {
|
|
24921
|
+
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
24922
|
+
inputEl.value = changedCharacter;
|
|
24923
|
+
this.selectSingleColumn();
|
|
24924
|
+
}
|
|
24925
|
+
};
|
|
24926
|
+
/**
|
|
24927
|
+
* Searches a list of column items for a particular
|
|
24928
|
+
* value. This is currently used for numeric values.
|
|
24929
|
+
* The zeroBehavior can be set to account for leading
|
|
24930
|
+
* or trailing zeros when looking at the item text.
|
|
24931
|
+
*/
|
|
24932
|
+
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
24933
|
+
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
24934
|
+
const option = Array.from(colEl.querySelectorAll('ion-picker-column-option')).find((el) => {
|
|
24935
|
+
return el.disabled !== true && el.textContent.replace(behavior, '') === value;
|
|
24936
|
+
});
|
|
24937
|
+
if (option) {
|
|
24938
|
+
colEl.setValue(option.value);
|
|
24939
|
+
}
|
|
24940
|
+
};
|
|
24941
|
+
this.selectMultiColumn = () => {
|
|
24942
|
+
const { inputEl, el } = this;
|
|
24943
|
+
if (!inputEl) {
|
|
24944
|
+
return;
|
|
24945
|
+
}
|
|
24946
|
+
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
|
|
24947
|
+
const firstColumn = numericPickers[0];
|
|
24948
|
+
const lastColumn = numericPickers[1];
|
|
24949
|
+
let value = inputEl.value;
|
|
24950
|
+
let minuteValue;
|
|
24951
|
+
switch (value.length) {
|
|
24952
|
+
case 1:
|
|
24953
|
+
this.searchColumn(firstColumn, value);
|
|
24954
|
+
break;
|
|
24955
|
+
case 2:
|
|
24956
|
+
/**
|
|
24957
|
+
* If the first character is `0` or `1` it is
|
|
24958
|
+
* possible that users are trying to type `09`
|
|
24959
|
+
* or `11` into the hour field, so we should look
|
|
24960
|
+
* at that first.
|
|
24961
|
+
*/
|
|
24962
|
+
const firstCharacter = inputEl.value.substring(0, 1);
|
|
24963
|
+
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
24964
|
+
this.searchColumn(firstColumn, value);
|
|
24965
|
+
/**
|
|
24966
|
+
* If only checked the first value,
|
|
24967
|
+
* we can check the second value
|
|
24968
|
+
* for a match in the minutes column
|
|
24969
|
+
*/
|
|
24970
|
+
if (value.length === 1) {
|
|
24971
|
+
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
24972
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
24973
|
+
}
|
|
24974
|
+
break;
|
|
24975
|
+
case 3:
|
|
24976
|
+
/**
|
|
24977
|
+
* If the first character is `0` or `1` it is
|
|
24978
|
+
* possible that users are trying to type `09`
|
|
24979
|
+
* or `11` into the hour field, so we should look
|
|
24980
|
+
* at that first.
|
|
24981
|
+
*/
|
|
24982
|
+
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
24983
|
+
value =
|
|
24984
|
+
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
24985
|
+
? inputEl.value.substring(0, 2)
|
|
24986
|
+
: firstCharacterAgain;
|
|
24987
|
+
this.searchColumn(firstColumn, value);
|
|
24988
|
+
/**
|
|
24989
|
+
* If only checked the first value,
|
|
24990
|
+
* we can check the second value
|
|
24991
|
+
* for a match in the minutes column
|
|
24992
|
+
*/
|
|
24993
|
+
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
24994
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
24995
|
+
break;
|
|
24996
|
+
case 4:
|
|
24997
|
+
/**
|
|
24998
|
+
* If the first character is `0` or `1` it is
|
|
24999
|
+
* possible that users are trying to type `09`
|
|
25000
|
+
* or `11` into the hour field, so we should look
|
|
25001
|
+
* at that first.
|
|
25002
|
+
*/
|
|
25003
|
+
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
25004
|
+
value =
|
|
25005
|
+
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
25006
|
+
? inputEl.value.substring(0, 2)
|
|
25007
|
+
: firstCharacterAgainAgain;
|
|
25008
|
+
this.searchColumn(firstColumn, value);
|
|
25009
|
+
/**
|
|
25010
|
+
* If only checked the first value,
|
|
25011
|
+
* we can check the second value
|
|
25012
|
+
* for a match in the minutes column
|
|
25013
|
+
*/
|
|
25014
|
+
const minuteValueAgain = value.length === 1
|
|
25015
|
+
? inputEl.value.substring(1, inputEl.value.length)
|
|
25016
|
+
: inputEl.value.substring(2, inputEl.value.length);
|
|
25017
|
+
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
25018
|
+
break;
|
|
25019
|
+
default:
|
|
25020
|
+
const startIndex = inputEl.value.length - 4;
|
|
25021
|
+
const newString = inputEl.value.substring(startIndex);
|
|
25022
|
+
inputEl.value = newString;
|
|
25023
|
+
this.selectMultiColumn();
|
|
25024
|
+
break;
|
|
25025
|
+
}
|
|
25026
|
+
};
|
|
25027
|
+
/**
|
|
25028
|
+
* Searches the value of the active column
|
|
25029
|
+
* to determine which value users are trying
|
|
25030
|
+
* to select
|
|
25031
|
+
*/
|
|
25032
|
+
this.onInputChange = () => {
|
|
25033
|
+
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
25034
|
+
if (!useInputMode || !inputEl) {
|
|
25035
|
+
return;
|
|
25036
|
+
}
|
|
25037
|
+
if (inputModeColumn) {
|
|
25038
|
+
this.selectSingleColumn();
|
|
25029
25039
|
}
|
|
25030
25040
|
else {
|
|
25031
|
-
this.
|
|
25032
|
-
this.emitColChange();
|
|
25033
|
-
hapticSelectionEnd();
|
|
25041
|
+
this.selectMultiColumn();
|
|
25034
25042
|
}
|
|
25043
|
+
};
|
|
25044
|
+
/**
|
|
25045
|
+
* Emit ionInputModeChange. Picker columns
|
|
25046
|
+
* listen for this event to determine whether
|
|
25047
|
+
* or not their column is "active" for text input.
|
|
25048
|
+
*/
|
|
25049
|
+
this.emitInputModeChange = () => {
|
|
25050
|
+
const { useInputMode, inputModeColumn } = this;
|
|
25051
|
+
this.ionInputModeChange.emit({
|
|
25052
|
+
useInputMode,
|
|
25053
|
+
inputModeColumn,
|
|
25054
|
+
});
|
|
25055
|
+
};
|
|
25056
|
+
}
|
|
25057
|
+
/**
|
|
25058
|
+
* When the picker is interacted with
|
|
25059
|
+
* we need to prevent touchstart so other
|
|
25060
|
+
* gestures do not fire. For example,
|
|
25061
|
+
* scrolling on the wheel picker
|
|
25062
|
+
* in ion-datetime should not cause
|
|
25063
|
+
* a card modal to swipe to close.
|
|
25064
|
+
*/
|
|
25065
|
+
preventTouchStartPropagation(ev) {
|
|
25066
|
+
ev.stopPropagation();
|
|
25067
|
+
}
|
|
25068
|
+
componentWillLoad() {
|
|
25069
|
+
getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
|
|
25070
|
+
getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
|
|
25071
|
+
}
|
|
25072
|
+
/**
|
|
25073
|
+
* @internal
|
|
25074
|
+
* Exits text entry mode for the picker
|
|
25075
|
+
* This method blurs the hidden input
|
|
25076
|
+
* and cause the keyboard to dismiss.
|
|
25077
|
+
*/
|
|
25078
|
+
async exitInputMode() {
|
|
25079
|
+
const { inputEl, useInputMode } = this;
|
|
25080
|
+
if (!useInputMode || !inputEl) {
|
|
25081
|
+
return;
|
|
25035
25082
|
}
|
|
25036
|
-
|
|
25037
|
-
|
|
25038
|
-
|
|
25039
|
-
|
|
25040
|
-
|
|
25041
|
-
this.
|
|
25083
|
+
this.useInputMode = false;
|
|
25084
|
+
this.inputModeColumn = undefined;
|
|
25085
|
+
inputEl.blur();
|
|
25086
|
+
inputEl.value = '';
|
|
25087
|
+
if (this.destroyKeypressListener) {
|
|
25088
|
+
this.destroyKeypressListener();
|
|
25089
|
+
this.destroyKeypressListener = undefined;
|
|
25042
25090
|
}
|
|
25091
|
+
this.emitInputModeChange();
|
|
25043
25092
|
}
|
|
25044
|
-
|
|
25045
|
-
return
|
|
25093
|
+
render() {
|
|
25094
|
+
return (hAsync(Host, { onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, hAsync("input", { "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), hAsync("div", { class: "picker-before" }), hAsync("div", { class: "picker-after" }), hAsync("div", { class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), hAsync("slot", null)));
|
|
25046
25095
|
}
|
|
25047
|
-
|
|
25048
|
-
|
|
25049
|
-
|
|
25050
|
-
|
|
25051
|
-
|
|
25052
|
-
|
|
25053
|
-
|
|
25054
|
-
|
|
25055
|
-
|
|
25056
|
-
|
|
25057
|
-
|
|
25058
|
-
|
|
25059
|
-
|
|
25060
|
-
|
|
25061
|
-
|
|
25062
|
-
|
|
25063
|
-
|
|
25064
|
-
|
|
25065
|
-
|
|
25096
|
+
get el() { return getElement(this); }
|
|
25097
|
+
static get style() { return {
|
|
25098
|
+
ios: pickerIosCss$1,
|
|
25099
|
+
md: pickerMdCss$1
|
|
25100
|
+
}; }
|
|
25101
|
+
static get cmpMeta() { return {
|
|
25102
|
+
"$flags$": 41,
|
|
25103
|
+
"$tagName$": "ion-picker",
|
|
25104
|
+
"$members$": {
|
|
25105
|
+
"exitInputMode": [64]
|
|
25106
|
+
},
|
|
25107
|
+
"$listeners$": [[1, "touchstart", "preventTouchStartPropagation"]],
|
|
25108
|
+
"$lazyBundleId$": "-",
|
|
25109
|
+
"$attrsToReflect$": []
|
|
25110
|
+
}; }
|
|
25111
|
+
}
|
|
25112
|
+
|
|
25113
|
+
/**
|
|
25114
|
+
* iOS Picker Enter Animation
|
|
25115
|
+
*/
|
|
25116
|
+
const iosEnterAnimation$2 = (baseEl) => {
|
|
25117
|
+
const baseAnimation = createAnimation();
|
|
25118
|
+
const backdropAnimation = createAnimation();
|
|
25119
|
+
const wrapperAnimation = createAnimation();
|
|
25120
|
+
backdropAnimation
|
|
25121
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
25122
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
25123
|
+
.beforeStyles({
|
|
25124
|
+
'pointer-events': 'none',
|
|
25125
|
+
})
|
|
25126
|
+
.afterClearStyles(['pointer-events']);
|
|
25127
|
+
wrapperAnimation
|
|
25128
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
25129
|
+
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
25130
|
+
return baseAnimation
|
|
25131
|
+
.addElement(baseEl)
|
|
25132
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
25133
|
+
.duration(400)
|
|
25134
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
25135
|
+
};
|
|
25136
|
+
|
|
25137
|
+
/**
|
|
25138
|
+
* iOS Picker Leave Animation
|
|
25139
|
+
*/
|
|
25140
|
+
const iosLeaveAnimation$2 = (baseEl) => {
|
|
25141
|
+
const baseAnimation = createAnimation();
|
|
25142
|
+
const backdropAnimation = createAnimation();
|
|
25143
|
+
const wrapperAnimation = createAnimation();
|
|
25144
|
+
backdropAnimation
|
|
25145
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
25146
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
25147
|
+
wrapperAnimation
|
|
25148
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
25149
|
+
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
25150
|
+
return baseAnimation
|
|
25151
|
+
.addElement(baseEl)
|
|
25152
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
25153
|
+
.duration(400)
|
|
25154
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
25155
|
+
};
|
|
25156
|
+
|
|
25157
|
+
const pickerIosCss = ".sc-ion-picker-legacy-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h,[dir=rtl] .sc-ion-picker-legacy-ios-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-ios-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:16px}.picker-columns.sc-ion-picker-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
25158
|
+
|
|
25159
|
+
const pickerMdCss = ".sc-ion-picker-legacy-md-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-legacy-md-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-md-h{left:0}[dir=rtl].sc-ion-picker-legacy-md-h,[dir=rtl] .sc-ion-picker-legacy-md-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-md-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-md-h{display:none}.picker-wrapper.sc-ion-picker-legacy-md{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-md:active,.picker-button.sc-ion-picker-legacy-md:focus{outline:none}.picker-columns.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-md,.picker-below-highlight.sc-ion-picker-legacy-md{display:none;pointer-events:none}.sc-ion-picker-legacy-md-h{--background:var(--ion-background-color, #fff);--border-width:0.55px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-legacy-md,.picker-button.ion-activated.sc-ion-picker-legacy-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1.1em;padding-inline-start:1.1em;-webkit-padding-end:1.1em;padding-inline-end:1.1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:14px;font-weight:500;text-transform:uppercase;-webkit-box-shadow:none;box-shadow:none}.picker-columns.sc-ion-picker-legacy-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-legacy-md{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:81px;border-bottom:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-md{left:0}[dir=rtl].sc-ion-picker-legacy-md-h .picker-above-highlight.sc-ion-picker-legacy-md,[dir=rtl] .sc-ion-picker-legacy-md-h .picker-above-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-md .picker-above-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-md:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-md{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:119px;border-top:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-md{left:0}[dir=rtl].sc-ion-picker-legacy-md-h .picker-below-highlight.sc-ion-picker-legacy-md,[dir=rtl] .sc-ion-picker-legacy-md-h .picker-below-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-md .picker-below-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-md:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
25160
|
+
|
|
25161
|
+
// TODO(FW-2832): types
|
|
25162
|
+
/**
|
|
25163
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25164
|
+
*/
|
|
25165
|
+
class Picker {
|
|
25166
|
+
constructor(hostRef) {
|
|
25167
|
+
registerInstance(this, hostRef);
|
|
25168
|
+
this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
|
|
25169
|
+
this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
|
|
25170
|
+
this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
|
|
25171
|
+
this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
|
|
25172
|
+
this.didPresentShorthand = createEvent(this, "didPresent", 7);
|
|
25173
|
+
this.willPresentShorthand = createEvent(this, "willPresent", 7);
|
|
25174
|
+
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
|
25175
|
+
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
25176
|
+
this.delegateController = createDelegateController(this);
|
|
25177
|
+
this.lockController = createLockController();
|
|
25178
|
+
this.triggerController = createTriggerController();
|
|
25179
|
+
this.onBackdropTap = () => {
|
|
25180
|
+
this.dismiss(undefined, BACKDROP);
|
|
25181
|
+
};
|
|
25182
|
+
this.dispatchCancelHandler = (ev) => {
|
|
25183
|
+
const role = ev.detail.role;
|
|
25184
|
+
if (isCancel(role)) {
|
|
25185
|
+
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
25186
|
+
this.callButtonHandler(cancelButton);
|
|
25066
25187
|
}
|
|
25067
|
-
}
|
|
25068
|
-
this.
|
|
25069
|
-
this.
|
|
25188
|
+
};
|
|
25189
|
+
this.presented = false;
|
|
25190
|
+
this.overlayIndex = undefined;
|
|
25191
|
+
this.delegate = undefined;
|
|
25192
|
+
this.hasController = false;
|
|
25193
|
+
this.keyboardClose = true;
|
|
25194
|
+
this.enterAnimation = undefined;
|
|
25195
|
+
this.leaveAnimation = undefined;
|
|
25196
|
+
this.buttons = [];
|
|
25197
|
+
this.columns = [];
|
|
25198
|
+
this.cssClass = undefined;
|
|
25199
|
+
this.duration = 0;
|
|
25200
|
+
this.showBackdrop = true;
|
|
25201
|
+
this.backdropDismiss = true;
|
|
25202
|
+
this.animated = true;
|
|
25203
|
+
this.htmlAttributes = undefined;
|
|
25204
|
+
this.isOpen = false;
|
|
25205
|
+
this.trigger = undefined;
|
|
25070
25206
|
}
|
|
25071
|
-
|
|
25072
|
-
if (
|
|
25073
|
-
|
|
25074
|
-
}
|
|
25075
|
-
detail.event.stopPropagation();
|
|
25076
|
-
// update the scroll position relative to pointer start position
|
|
25077
|
-
let y = this.y + detail.deltaY;
|
|
25078
|
-
if (y > this.minY) {
|
|
25079
|
-
// scrolling up higher than scroll area
|
|
25080
|
-
y = Math.pow(y, 0.8);
|
|
25081
|
-
this.bounceFrom = y;
|
|
25207
|
+
onIsOpenChange(newValue, oldValue) {
|
|
25208
|
+
if (newValue === true && oldValue === false) {
|
|
25209
|
+
this.present();
|
|
25082
25210
|
}
|
|
25083
|
-
else if (
|
|
25084
|
-
|
|
25085
|
-
y += Math.pow(this.maxY - y, 0.9);
|
|
25086
|
-
this.bounceFrom = y;
|
|
25211
|
+
else if (newValue === false && oldValue === true) {
|
|
25212
|
+
this.dismiss();
|
|
25087
25213
|
}
|
|
25088
|
-
|
|
25089
|
-
|
|
25214
|
+
}
|
|
25215
|
+
triggerChanged() {
|
|
25216
|
+
const { trigger, el, triggerController } = this;
|
|
25217
|
+
if (trigger) {
|
|
25218
|
+
triggerController.addClickListener(el, trigger);
|
|
25090
25219
|
}
|
|
25091
|
-
this.update(y, 0, false);
|
|
25092
25220
|
}
|
|
25093
|
-
|
|
25094
|
-
|
|
25095
|
-
|
|
25096
|
-
|
|
25097
|
-
|
|
25098
|
-
|
|
25221
|
+
connectedCallback() {
|
|
25222
|
+
prepareOverlay(this.el);
|
|
25223
|
+
this.triggerChanged();
|
|
25224
|
+
}
|
|
25225
|
+
disconnectedCallback() {
|
|
25226
|
+
this.triggerController.removeClickListener();
|
|
25227
|
+
}
|
|
25228
|
+
componentWillLoad() {
|
|
25229
|
+
setOverlayId(this.el);
|
|
25230
|
+
}
|
|
25231
|
+
componentDidLoad() {
|
|
25232
|
+
printIonWarning('ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
|
|
25233
|
+
/**
|
|
25234
|
+
* If picker was rendered with isOpen="true"
|
|
25235
|
+
* then we should open picker immediately.
|
|
25236
|
+
*/
|
|
25237
|
+
if (this.isOpen === true) {
|
|
25238
|
+
raf(() => this.present());
|
|
25099
25239
|
}
|
|
25100
|
-
|
|
25101
|
-
|
|
25102
|
-
|
|
25103
|
-
|
|
25104
|
-
|
|
25240
|
+
}
|
|
25241
|
+
/**
|
|
25242
|
+
* Present the picker overlay after it has been created.
|
|
25243
|
+
*/
|
|
25244
|
+
async present() {
|
|
25245
|
+
const unlock = await this.lockController.lock();
|
|
25246
|
+
await this.delegateController.attachViewToDom();
|
|
25247
|
+
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
25248
|
+
if (this.duration > 0) {
|
|
25249
|
+
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
25105
25250
|
}
|
|
25106
|
-
|
|
25107
|
-
|
|
25108
|
-
|
|
25109
|
-
|
|
25110
|
-
|
|
25111
|
-
|
|
25251
|
+
unlock();
|
|
25252
|
+
}
|
|
25253
|
+
/**
|
|
25254
|
+
* Dismiss the picker overlay after it has been presented.
|
|
25255
|
+
*
|
|
25256
|
+
* @param data Any data to emit in the dismiss events.
|
|
25257
|
+
* @param role The role of the element that is dismissing the picker.
|
|
25258
|
+
* This can be useful in a button handler for determining which button was
|
|
25259
|
+
* clicked to dismiss the picker.
|
|
25260
|
+
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
25261
|
+
*/
|
|
25262
|
+
async dismiss(data, role) {
|
|
25263
|
+
const unlock = await this.lockController.lock();
|
|
25264
|
+
if (this.durationTimeout) {
|
|
25265
|
+
clearTimeout(this.durationTimeout);
|
|
25112
25266
|
}
|
|
25113
|
-
|
|
25114
|
-
|
|
25115
|
-
|
|
25116
|
-
const isScrollingUp = detail.deltaY > 0;
|
|
25117
|
-
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
25118
|
-
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
25119
|
-
this.velocity = Math.abs(this.velocity) * -1;
|
|
25120
|
-
}
|
|
25121
|
-
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
25122
|
-
this.velocity = Math.abs(this.velocity);
|
|
25123
|
-
}
|
|
25124
|
-
}
|
|
25125
|
-
this.decelerate();
|
|
25267
|
+
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
25268
|
+
if (dismissed) {
|
|
25269
|
+
this.delegateController.removeViewFromDom();
|
|
25126
25270
|
}
|
|
25271
|
+
unlock();
|
|
25272
|
+
return dismissed;
|
|
25127
25273
|
}
|
|
25128
|
-
|
|
25129
|
-
|
|
25130
|
-
|
|
25131
|
-
|
|
25132
|
-
|
|
25133
|
-
|
|
25134
|
-
|
|
25135
|
-
|
|
25136
|
-
|
|
25137
|
-
|
|
25138
|
-
|
|
25139
|
-
|
|
25140
|
-
|
|
25141
|
-
|
|
25142
|
-
|
|
25143
|
-
|
|
25144
|
-
|
|
25145
|
-
|
|
25146
|
-
|
|
25147
|
-
|
|
25274
|
+
/**
|
|
25275
|
+
* Returns a promise that resolves when the picker did dismiss.
|
|
25276
|
+
*/
|
|
25277
|
+
onDidDismiss() {
|
|
25278
|
+
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
25279
|
+
}
|
|
25280
|
+
/**
|
|
25281
|
+
* Returns a promise that resolves when the picker will dismiss.
|
|
25282
|
+
*/
|
|
25283
|
+
onWillDismiss() {
|
|
25284
|
+
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
25285
|
+
}
|
|
25286
|
+
/**
|
|
25287
|
+
* Get the column that matches the specified name.
|
|
25288
|
+
*
|
|
25289
|
+
* @param name The name of the column.
|
|
25290
|
+
*/
|
|
25291
|
+
getColumn(name) {
|
|
25292
|
+
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
25293
|
+
}
|
|
25294
|
+
async buttonClick(button) {
|
|
25295
|
+
const role = button.role;
|
|
25296
|
+
if (isCancel(role)) {
|
|
25297
|
+
return this.dismiss(undefined, role);
|
|
25148
25298
|
}
|
|
25149
|
-
const
|
|
25150
|
-
if (
|
|
25151
|
-
|
|
25152
|
-
const duration = animated ? TRANSITION_DURATION : 0;
|
|
25153
|
-
this.velocity = 0;
|
|
25154
|
-
this.update(y, duration, true);
|
|
25299
|
+
const shouldDismiss = await this.callButtonHandler(button);
|
|
25300
|
+
if (shouldDismiss) {
|
|
25301
|
+
return this.dismiss(this.getSelected(), button.role);
|
|
25155
25302
|
}
|
|
25303
|
+
return Promise.resolve();
|
|
25156
25304
|
}
|
|
25157
|
-
|
|
25158
|
-
|
|
25159
|
-
|
|
25160
|
-
//
|
|
25161
|
-
|
|
25162
|
-
|
|
25305
|
+
async callButtonHandler(button) {
|
|
25306
|
+
if (button) {
|
|
25307
|
+
// a handler has been provided, execute it
|
|
25308
|
+
// pass the handler the values from the inputs
|
|
25309
|
+
const rtn = await safeCall(button.handler, this.getSelected());
|
|
25310
|
+
if (rtn === false) {
|
|
25311
|
+
// if the return value of the handler is false then do not dismiss
|
|
25312
|
+
return false;
|
|
25313
|
+
}
|
|
25163
25314
|
}
|
|
25164
|
-
|
|
25315
|
+
return true;
|
|
25316
|
+
}
|
|
25317
|
+
getSelected() {
|
|
25318
|
+
const selected = {};
|
|
25319
|
+
this.columns.forEach((col, index) => {
|
|
25320
|
+
const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
|
|
25321
|
+
selected[col.name] = {
|
|
25322
|
+
text: selectedColumn ? selectedColumn.text : undefined,
|
|
25323
|
+
value: selectedColumn ? selectedColumn.value : undefined,
|
|
25324
|
+
columnIndex: index,
|
|
25325
|
+
};
|
|
25326
|
+
});
|
|
25327
|
+
return selected;
|
|
25165
25328
|
}
|
|
25166
25329
|
render() {
|
|
25167
|
-
const
|
|
25330
|
+
const { htmlAttributes } = this;
|
|
25168
25331
|
const mode = getIonMode$1(this);
|
|
25169
|
-
return (hAsync(Host,
|
|
25170
|
-
|
|
25171
|
-
}
|
|
25332
|
+
return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
25333
|
+
zIndex: `${20000 + this.overlayIndex}`,
|
|
25334
|
+
}, class: Object.assign({ [mode]: true,
|
|
25335
|
+
// Used internally for styling
|
|
25336
|
+
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
|
|
25172
25337
|
}
|
|
25173
25338
|
get el() { return getElement(this); }
|
|
25174
25339
|
static get watchers() { return {
|
|
25175
|
-
"
|
|
25340
|
+
"isOpen": ["onIsOpenChange"],
|
|
25341
|
+
"trigger": ["triggerChanged"]
|
|
25176
25342
|
}; }
|
|
25177
25343
|
static get style() { return {
|
|
25178
|
-
ios:
|
|
25179
|
-
md:
|
|
25344
|
+
ios: pickerIosCss,
|
|
25345
|
+
md: pickerMdCss
|
|
25180
25346
|
}; }
|
|
25181
25347
|
static get cmpMeta() { return {
|
|
25182
|
-
"$flags$":
|
|
25183
|
-
"$tagName$": "ion-picker-
|
|
25348
|
+
"$flags$": 34,
|
|
25349
|
+
"$tagName$": "ion-picker-legacy",
|
|
25184
25350
|
"$members$": {
|
|
25185
|
-
"
|
|
25351
|
+
"overlayIndex": [2, "overlay-index"],
|
|
25352
|
+
"delegate": [16],
|
|
25353
|
+
"hasController": [4, "has-controller"],
|
|
25354
|
+
"keyboardClose": [4, "keyboard-close"],
|
|
25355
|
+
"enterAnimation": [16],
|
|
25356
|
+
"leaveAnimation": [16],
|
|
25357
|
+
"buttons": [16],
|
|
25358
|
+
"columns": [16],
|
|
25359
|
+
"cssClass": [1, "css-class"],
|
|
25360
|
+
"duration": [2],
|
|
25361
|
+
"showBackdrop": [4, "show-backdrop"],
|
|
25362
|
+
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
25363
|
+
"animated": [4],
|
|
25364
|
+
"htmlAttributes": [16],
|
|
25365
|
+
"isOpen": [4, "is-open"],
|
|
25366
|
+
"trigger": [1],
|
|
25367
|
+
"presented": [32],
|
|
25368
|
+
"present": [64],
|
|
25369
|
+
"dismiss": [64],
|
|
25370
|
+
"onDidDismiss": [64],
|
|
25371
|
+
"onWillDismiss": [64],
|
|
25372
|
+
"getColumn": [64]
|
|
25186
25373
|
},
|
|
25187
25374
|
"$listeners$": undefined,
|
|
25188
25375
|
"$lazyBundleId$": "-",
|
|
25189
25376
|
"$attrsToReflect$": []
|
|
25190
25377
|
}; }
|
|
25191
25378
|
}
|
|
25192
|
-
const
|
|
25193
|
-
|
|
25194
|
-
|
|
25195
|
-
|
|
25196
|
-
|
|
25197
|
-
|
|
25379
|
+
const buttonWrapperClass = (button) => {
|
|
25380
|
+
return {
|
|
25381
|
+
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
25382
|
+
'picker-toolbar-button': true,
|
|
25383
|
+
};
|
|
25384
|
+
};
|
|
25385
|
+
const buttonClass$1 = (button) => {
|
|
25386
|
+
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
25387
|
+
};
|
|
25198
25388
|
|
|
25199
|
-
const
|
|
25389
|
+
const pickerColumnCss = "/*!@:host*/.sc-ion-picker-column-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}/*!@.picker-opts*/.picker-opts.sc-ion-picker-column{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}/*!@.picker-item-empty*/.picker-item-empty.sc-ion-picker-column{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@.picker-opts::-webkit-scrollbar*/.picker-opts.sc-ion-picker-column::-webkit-scrollbar{display:none}/*!@::slotted(ion-picker-column-option)*/.sc-ion-picker-column-s>ion-picker-column-option{display:block;scroll-snap-align:center}/*!@.picker-item-empty,\n:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled)*/.picker-item-empty.sc-ion-picker-column,.sc-ion-picker-column-h:not([disabled]).sc-ion-picker-column-s>ion-picker-column-option.option-disabled,.sc-ion-picker-column-h:not([disabled]) .sc-ion-picker-column-s>ion-picker-column-option.option-disabled{scroll-snap-align:none}/*!@::slotted([slot=prefix]), ::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=prefix],.sc-ion-picker-column-s>[slot=suffix]{max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@::slotted([slot=prefix])*/.sc-ion-picker-column-s>[slot=prefix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}/*!@::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=suffix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}/*!@:host(.picker-column-disabled) .picker-opts*/.picker-column-disabled.sc-ion-picker-column-h .picker-opts.sc-ion-picker-column{overflow-y:hidden}/*!@:host(.picker-column-disabled) ::slotted(ion-picker-column-option)*/.sc-ion-picker-column-h.picker-column-disabled .sc-ion-picker-column-s>ion-picker-column-option{cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){/*!@:host(:focus) .picker-opts*/.sc-ion-picker-column-h:focus .picker-opts.sc-ion-picker-column{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
|
|
25200
25390
|
|
|
25201
25391
|
/**
|
|
25202
25392
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25203
|
-
*
|
|
25393
|
+
*
|
|
25394
|
+
* @slot prefix - Content to show on the left side of the picker options.
|
|
25395
|
+
* @slot suffix - Content to show on the right side of the picker options.
|
|
25204
25396
|
*/
|
|
25205
|
-
class
|
|
25397
|
+
class PickerColumn {
|
|
25206
25398
|
constructor(hostRef) {
|
|
25207
25399
|
registerInstance(this, hostRef);
|
|
25208
25400
|
this.ionChange = createEvent(this, "ionChange", 7);
|
|
@@ -25210,11 +25402,11 @@ class PickerColumnInternal {
|
|
|
25210
25402
|
this.isColumnVisible = false;
|
|
25211
25403
|
this.canExitInputMode = true;
|
|
25212
25404
|
this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
|
|
25213
|
-
const {
|
|
25214
|
-
if (isColumnVisible) {
|
|
25405
|
+
const { isColumnVisible, scrollEl } = this;
|
|
25406
|
+
if (isColumnVisible && scrollEl) {
|
|
25215
25407
|
// (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
|
|
25216
25408
|
const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
|
|
25217
|
-
if (
|
|
25409
|
+
if (scrollEl.scrollTop !== top) {
|
|
25218
25410
|
/**
|
|
25219
25411
|
* Setting this flag prevents input
|
|
25220
25412
|
* mode from exiting in the picker column's
|
|
@@ -25223,7 +25415,7 @@ class PickerColumnInternal {
|
|
|
25223
25415
|
* of these can cause a scroll to occur.
|
|
25224
25416
|
*/
|
|
25225
25417
|
this.canExitInputMode = canExitInputMode;
|
|
25226
|
-
|
|
25418
|
+
scrollEl.scroll({
|
|
25227
25419
|
top,
|
|
25228
25420
|
left: 0,
|
|
25229
25421
|
behavior: smooth ? 'smooth' : undefined,
|
|
@@ -25234,11 +25426,9 @@ class PickerColumnInternal {
|
|
|
25234
25426
|
this.setPickerItemActiveState = (item, isActive) => {
|
|
25235
25427
|
if (isActive) {
|
|
25236
25428
|
item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
|
|
25237
|
-
item.part.add(PICKER_ITEM_ACTIVE_PART);
|
|
25238
25429
|
}
|
|
25239
25430
|
else {
|
|
25240
25431
|
item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
|
|
25241
|
-
item.part.remove(PICKER_ITEM_ACTIVE_PART);
|
|
25242
25432
|
}
|
|
25243
25433
|
};
|
|
25244
25434
|
/**
|
|
@@ -25292,11 +25482,13 @@ class PickerColumnInternal {
|
|
|
25292
25482
|
* be disabled on Android.
|
|
25293
25483
|
*/
|
|
25294
25484
|
const enableHaptics = isPlatform('ios');
|
|
25295
|
-
const { el } = this;
|
|
25485
|
+
const { el, scrollEl } = this;
|
|
25296
25486
|
let timeout;
|
|
25297
25487
|
let activeEl = this.activeItem;
|
|
25298
25488
|
const scrollCallback = () => {
|
|
25299
25489
|
raf(() => {
|
|
25490
|
+
if (!scrollEl)
|
|
25491
|
+
return;
|
|
25300
25492
|
if (timeout) {
|
|
25301
25493
|
clearTimeout(timeout);
|
|
25302
25494
|
timeout = undefined;
|
|
@@ -25309,21 +25501,54 @@ class PickerColumnInternal {
|
|
|
25309
25501
|
* Select item in the center of the column
|
|
25310
25502
|
* which is the month/year that we want to select
|
|
25311
25503
|
*/
|
|
25312
|
-
const bbox =
|
|
25504
|
+
const bbox = scrollEl.getBoundingClientRect();
|
|
25313
25505
|
const centerX = bbox.x + bbox.width / 2;
|
|
25314
25506
|
const centerY = bbox.y + bbox.height / 2;
|
|
25315
|
-
|
|
25316
|
-
|
|
25507
|
+
/**
|
|
25508
|
+
* elementFromPoint returns the top-most element.
|
|
25509
|
+
* This means that if an ion-backdrop is overlaying the
|
|
25510
|
+
* picker then the appropriate picker column option will
|
|
25511
|
+
* not be selected. To account for this, we use elementsFromPoint
|
|
25512
|
+
* and use an Array.find to find the appropriate column option
|
|
25513
|
+
* at that point.
|
|
25514
|
+
*
|
|
25515
|
+
* Additionally, the picker column could be used in the
|
|
25516
|
+
* Shadow DOM (i.e. in ion-datetime) so we need to make
|
|
25517
|
+
* sure we are choosing the correct host otherwise
|
|
25518
|
+
* the elements returns by elementsFromPoint will be
|
|
25519
|
+
* retargeted. To account for this, we check to see
|
|
25520
|
+
* if the picker column has a parent shadow root. If
|
|
25521
|
+
* so, we use that shadow root when doing elementsFromPoint.
|
|
25522
|
+
* Otherwise, we just use the document.
|
|
25523
|
+
*/
|
|
25524
|
+
const rootNode = el.getRootNode();
|
|
25525
|
+
const hasParentShadow = rootNode instanceof ShadowRoot;
|
|
25526
|
+
const referenceNode = hasParentShadow ? rootNode : doc;
|
|
25527
|
+
/**
|
|
25528
|
+
* If the reference node is undefined
|
|
25529
|
+
* then it's likely that doc is undefined
|
|
25530
|
+
* due to being in an SSR environment.
|
|
25531
|
+
*/
|
|
25532
|
+
if (referenceNode === undefined) {
|
|
25533
|
+
return;
|
|
25534
|
+
}
|
|
25535
|
+
const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
|
|
25536
|
+
/**
|
|
25537
|
+
* elementsFromPoint can returns multiple elements
|
|
25538
|
+
* so find the relevant picker column option if one exists.
|
|
25539
|
+
*/
|
|
25540
|
+
const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
|
|
25541
|
+
if (activeEl !== undefined) {
|
|
25317
25542
|
this.setPickerItemActiveState(activeEl, false);
|
|
25318
25543
|
}
|
|
25319
|
-
if (
|
|
25544
|
+
if (newActiveElement === undefined || newActiveElement.disabled) {
|
|
25320
25545
|
return;
|
|
25321
25546
|
}
|
|
25322
25547
|
/**
|
|
25323
25548
|
* If we are selecting a new value,
|
|
25324
25549
|
* we need to run haptics again.
|
|
25325
25550
|
*/
|
|
25326
|
-
if (
|
|
25551
|
+
if (newActiveElement !== activeEl) {
|
|
25327
25552
|
enableHaptics && hapticSelectionChanged();
|
|
25328
25553
|
if (this.canExitInputMode) {
|
|
25329
25554
|
/**
|
|
@@ -25340,8 +25565,8 @@ class PickerColumnInternal {
|
|
|
25340
25565
|
this.exitInputMode();
|
|
25341
25566
|
}
|
|
25342
25567
|
}
|
|
25343
|
-
activeEl =
|
|
25344
|
-
this.setPickerItemActiveState(
|
|
25568
|
+
activeEl = newActiveElement;
|
|
25569
|
+
this.setPickerItemActiveState(newActiveElement, true);
|
|
25345
25570
|
timeout = setTimeout(() => {
|
|
25346
25571
|
this.isScrolling = false;
|
|
25347
25572
|
enableHaptics && hapticSelectionEnd();
|
|
@@ -25363,20 +25588,7 @@ class PickerColumnInternal {
|
|
|
25363
25588
|
* case, we should exit input mode.
|
|
25364
25589
|
*/
|
|
25365
25590
|
this.canExitInputMode = true;
|
|
25366
|
-
|
|
25367
|
-
/**
|
|
25368
|
-
* If no value it is
|
|
25369
|
-
* possible we hit one of the
|
|
25370
|
-
* empty padding columns.
|
|
25371
|
-
*/
|
|
25372
|
-
if (dataIndex === null) {
|
|
25373
|
-
return;
|
|
25374
|
-
}
|
|
25375
|
-
const index = parseInt(dataIndex, 10);
|
|
25376
|
-
const selectedItem = this.items[index];
|
|
25377
|
-
if (selectedItem.value !== this.value) {
|
|
25378
|
-
this.setValue(selectedItem.value);
|
|
25379
|
-
}
|
|
25591
|
+
this.setValue(newActiveElement.value);
|
|
25380
25592
|
}, 250);
|
|
25381
25593
|
});
|
|
25382
25594
|
};
|
|
@@ -25385,9 +25597,11 @@ class PickerColumnInternal {
|
|
|
25385
25597
|
* does not fire when component is initially shown.
|
|
25386
25598
|
*/
|
|
25387
25599
|
raf(() => {
|
|
25388
|
-
|
|
25600
|
+
if (!scrollEl)
|
|
25601
|
+
return;
|
|
25602
|
+
scrollEl.addEventListener('scroll', scrollCallback);
|
|
25389
25603
|
this.destroyScrollListener = () => {
|
|
25390
|
-
|
|
25604
|
+
scrollEl.removeEventListener('scroll', scrollCallback);
|
|
25391
25605
|
};
|
|
25392
25606
|
});
|
|
25393
25607
|
};
|
|
@@ -25415,7 +25629,6 @@ class PickerColumnInternal {
|
|
|
25415
25629
|
};
|
|
25416
25630
|
this.isActive = false;
|
|
25417
25631
|
this.disabled = false;
|
|
25418
|
-
this.items = [];
|
|
25419
25632
|
this.value = undefined;
|
|
25420
25633
|
this.color = 'primary';
|
|
25421
25634
|
this.numericInput = false;
|
|
@@ -25426,7 +25639,7 @@ class PickerColumnInternal {
|
|
|
25426
25639
|
* Only scroll the active item into view when the picker column
|
|
25427
25640
|
* is actively visible to the user.
|
|
25428
25641
|
*/
|
|
25429
|
-
this.scrollActiveItemIntoView();
|
|
25642
|
+
this.scrollActiveItemIntoView(true);
|
|
25430
25643
|
}
|
|
25431
25644
|
}
|
|
25432
25645
|
/**
|
|
@@ -25464,36 +25677,33 @@ class PickerColumnInternal {
|
|
|
25464
25677
|
}
|
|
25465
25678
|
};
|
|
25466
25679
|
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
25467
|
-
const parentEl = (this.parentEl = this.el.closest('ion-picker
|
|
25680
|
+
const parentEl = (this.parentEl = this.el.closest('ion-picker'));
|
|
25468
25681
|
if (parentEl !== null) {
|
|
25469
25682
|
// TODO(FW-2832): type
|
|
25470
25683
|
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
25471
25684
|
}
|
|
25472
25685
|
}
|
|
25473
25686
|
componentDidRender() {
|
|
25474
|
-
|
|
25475
|
-
|
|
25476
|
-
|
|
25477
|
-
|
|
25478
|
-
|
|
25479
|
-
|
|
25480
|
-
|
|
25481
|
-
|
|
25482
|
-
|
|
25483
|
-
|
|
25484
|
-
|
|
25485
|
-
|
|
25486
|
-
*
|
|
25487
|
-
*/
|
|
25488
|
-
this.setValue(items[0].value);
|
|
25687
|
+
const { el, activeItem, isColumnVisible, value } = this;
|
|
25688
|
+
if (isColumnVisible && !activeItem) {
|
|
25689
|
+
const firstOption = el.querySelector('ion-picker-column-option');
|
|
25690
|
+
/**
|
|
25691
|
+
* If the picker column does not have an active item and the current value
|
|
25692
|
+
* does not match the first item in the picker column, that means
|
|
25693
|
+
* the value is out of bounds. In this case, we assign the value to the
|
|
25694
|
+
* first item to match the scroll position of the column.
|
|
25695
|
+
*
|
|
25696
|
+
*/
|
|
25697
|
+
if (firstOption !== null && firstOption.value !== value) {
|
|
25698
|
+
this.setValue(firstOption.value);
|
|
25489
25699
|
}
|
|
25490
25700
|
}
|
|
25491
25701
|
}
|
|
25492
25702
|
/** @internal */
|
|
25493
|
-
async scrollActiveItemIntoView() {
|
|
25703
|
+
async scrollActiveItemIntoView(smooth = false) {
|
|
25494
25704
|
const activeEl = this.activeItem;
|
|
25495
25705
|
if (activeEl) {
|
|
25496
|
-
this.centerPickerItemInView(activeEl,
|
|
25706
|
+
this.centerPickerItemInView(activeEl, smooth, false);
|
|
25497
25707
|
}
|
|
25498
25708
|
}
|
|
25499
25709
|
/**
|
|
@@ -25504,557 +25714,537 @@ class PickerColumnInternal {
|
|
|
25504
25714
|
* @internal
|
|
25505
25715
|
*/
|
|
25506
25716
|
async setValue(value) {
|
|
25507
|
-
|
|
25717
|
+
if (this.disabled === true || this.value === value) {
|
|
25718
|
+
return;
|
|
25719
|
+
}
|
|
25508
25720
|
this.value = value;
|
|
25509
|
-
|
|
25510
|
-
|
|
25511
|
-
|
|
25721
|
+
this.ionChange.emit({ value });
|
|
25722
|
+
}
|
|
25723
|
+
/**
|
|
25724
|
+
* Sets focus on the scrollable container within the picker column.
|
|
25725
|
+
* Use this method instead of the global `pickerColumn.focus()`.
|
|
25726
|
+
*/
|
|
25727
|
+
async setFocus() {
|
|
25728
|
+
if (this.scrollEl) {
|
|
25729
|
+
this.scrollEl.focus();
|
|
25730
|
+
}
|
|
25731
|
+
}
|
|
25732
|
+
get activeItem() {
|
|
25733
|
+
const { value } = this;
|
|
25734
|
+
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
25735
|
+
return options.find((option) => {
|
|
25736
|
+
/**
|
|
25737
|
+
* If the whole picker column is disabled, the current value should appear active
|
|
25738
|
+
* If the current value item is specifically disabled, it should not appear active
|
|
25739
|
+
*/
|
|
25740
|
+
if (!this.disabled && option.disabled) {
|
|
25741
|
+
return false;
|
|
25742
|
+
}
|
|
25743
|
+
return option.value === value;
|
|
25744
|
+
});
|
|
25745
|
+
}
|
|
25746
|
+
render() {
|
|
25747
|
+
const { color, disabled, isActive, numericInput } = this;
|
|
25748
|
+
const mode = getIonMode$1(this);
|
|
25749
|
+
return (hAsync(Host, { class: createColorClasses$1(color, {
|
|
25750
|
+
[mode]: true,
|
|
25751
|
+
['picker-column-active']: isActive,
|
|
25752
|
+
['picker-column-numeric-input']: numericInput,
|
|
25753
|
+
['picker-column-disabled']: disabled,
|
|
25754
|
+
}) }, hAsync("slot", { name: "prefix" }), hAsync("div", { class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
|
|
25755
|
+
this.scrollEl = el;
|
|
25756
|
+
} }, hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", null), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { name: "suffix" })));
|
|
25757
|
+
}
|
|
25758
|
+
get el() { return getElement(this); }
|
|
25759
|
+
static get watchers() { return {
|
|
25760
|
+
"value": ["valueChange"]
|
|
25761
|
+
}; }
|
|
25762
|
+
static get style() { return pickerColumnCss; }
|
|
25763
|
+
static get cmpMeta() { return {
|
|
25764
|
+
"$flags$": 9,
|
|
25765
|
+
"$tagName$": "ion-picker-column",
|
|
25766
|
+
"$members$": {
|
|
25767
|
+
"disabled": [4],
|
|
25768
|
+
"value": [1032],
|
|
25769
|
+
"color": [513],
|
|
25770
|
+
"numericInput": [4, "numeric-input"],
|
|
25771
|
+
"isActive": [32],
|
|
25772
|
+
"scrollActiveItemIntoView": [64],
|
|
25773
|
+
"setValue": [64],
|
|
25774
|
+
"setFocus": [64]
|
|
25775
|
+
},
|
|
25776
|
+
"$listeners$": undefined,
|
|
25777
|
+
"$lazyBundleId$": "-",
|
|
25778
|
+
"$attrsToReflect$": [["color", "color"]]
|
|
25779
|
+
}; }
|
|
25780
|
+
}
|
|
25781
|
+
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
25782
|
+
|
|
25783
|
+
const pickerColumnIosCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}";
|
|
25784
|
+
|
|
25785
|
+
const pickerColumnMdCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #3880ff)}";
|
|
25786
|
+
|
|
25787
|
+
/**
|
|
25788
|
+
* @internal
|
|
25789
|
+
*/
|
|
25790
|
+
class PickerColumnCmp {
|
|
25791
|
+
constructor(hostRef) {
|
|
25792
|
+
registerInstance(this, hostRef);
|
|
25793
|
+
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
25794
|
+
this.optHeight = 0;
|
|
25795
|
+
this.rotateFactor = 0;
|
|
25796
|
+
this.scaleFactor = 1;
|
|
25797
|
+
this.velocity = 0;
|
|
25798
|
+
this.y = 0;
|
|
25799
|
+
this.noAnimate = true;
|
|
25800
|
+
// `colDidChange` is a flag that gets set when the column is changed
|
|
25801
|
+
// dynamically. When this flag is set, the column will refresh
|
|
25802
|
+
// after the component re-renders to incorporate the new column data.
|
|
25803
|
+
// This is necessary because `this.refresh` queries for the option elements,
|
|
25804
|
+
// so it needs to wait for the latest elements to be available in the DOM.
|
|
25805
|
+
// Ex: column is created with 3 options. User updates the column data
|
|
25806
|
+
// to have 5 options. The column will still think it only has 3 options.
|
|
25807
|
+
this.colDidChange = false;
|
|
25808
|
+
this.col = undefined;
|
|
25809
|
+
}
|
|
25810
|
+
colChanged() {
|
|
25811
|
+
this.colDidChange = true;
|
|
25812
|
+
}
|
|
25813
|
+
async connectedCallback() {
|
|
25814
|
+
let pickerRotateFactor = 0;
|
|
25815
|
+
let pickerScaleFactor = 0.81;
|
|
25816
|
+
const mode = getIonMode$1(this);
|
|
25817
|
+
if (mode === 'ios') {
|
|
25818
|
+
pickerRotateFactor = -0.46;
|
|
25819
|
+
pickerScaleFactor = 1;
|
|
25820
|
+
}
|
|
25821
|
+
this.rotateFactor = pickerRotateFactor;
|
|
25822
|
+
this.scaleFactor = pickerScaleFactor;
|
|
25823
|
+
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
25824
|
+
el: this.el,
|
|
25825
|
+
gestureName: 'picker-swipe',
|
|
25826
|
+
gesturePriority: 100,
|
|
25827
|
+
threshold: 0,
|
|
25828
|
+
passive: false,
|
|
25829
|
+
onStart: (ev) => this.onStart(ev),
|
|
25830
|
+
onMove: (ev) => this.onMove(ev),
|
|
25831
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
25832
|
+
});
|
|
25833
|
+
this.gesture.enable();
|
|
25834
|
+
// Options have not been initialized yet
|
|
25835
|
+
// Animation must be disabled through the `noAnimate` flag
|
|
25836
|
+
// Otherwise, the options will render
|
|
25837
|
+
// at the top of the column and transition down
|
|
25838
|
+
this.tmrId = setTimeout(() => {
|
|
25839
|
+
this.noAnimate = false;
|
|
25840
|
+
// After initialization, `refresh()` will be called
|
|
25841
|
+
// At this point, animation will be enabled. The options will
|
|
25842
|
+
// animate as they are being selected.
|
|
25843
|
+
this.refresh(true);
|
|
25844
|
+
}, 250);
|
|
25845
|
+
}
|
|
25846
|
+
componentDidLoad() {
|
|
25847
|
+
this.onDomChange();
|
|
25848
|
+
}
|
|
25849
|
+
componentDidUpdate() {
|
|
25850
|
+
// Options may have changed since last update.
|
|
25851
|
+
if (this.colDidChange) {
|
|
25852
|
+
// Animation must be disabled through the `onDomChange` parameter.
|
|
25853
|
+
// Otherwise, the recently added options will render
|
|
25854
|
+
// at the top of the column and transition down
|
|
25855
|
+
this.onDomChange(true, false);
|
|
25856
|
+
this.colDidChange = false;
|
|
25857
|
+
}
|
|
25858
|
+
}
|
|
25859
|
+
disconnectedCallback() {
|
|
25860
|
+
if (this.rafId !== undefined)
|
|
25861
|
+
cancelAnimationFrame(this.rafId);
|
|
25862
|
+
if (this.tmrId)
|
|
25863
|
+
clearTimeout(this.tmrId);
|
|
25864
|
+
if (this.gesture) {
|
|
25865
|
+
this.gesture.destroy();
|
|
25866
|
+
this.gesture = undefined;
|
|
25867
|
+
}
|
|
25868
|
+
}
|
|
25869
|
+
emitColChange() {
|
|
25870
|
+
this.ionPickerColChange.emit(this.col);
|
|
25871
|
+
}
|
|
25872
|
+
setSelected(selectedIndex, duration) {
|
|
25873
|
+
// if there is a selected index, then figure out it's y position
|
|
25874
|
+
// if there isn't a selected index, then just use the top y position
|
|
25875
|
+
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
25876
|
+
this.velocity = 0;
|
|
25877
|
+
// set what y position we're at
|
|
25878
|
+
if (this.rafId !== undefined)
|
|
25879
|
+
cancelAnimationFrame(this.rafId);
|
|
25880
|
+
this.update(y, duration, true);
|
|
25881
|
+
this.emitColChange();
|
|
25882
|
+
}
|
|
25883
|
+
update(y, duration, saveY) {
|
|
25884
|
+
if (!this.optsEl) {
|
|
25885
|
+
return;
|
|
25886
|
+
}
|
|
25887
|
+
// ensure we've got a good round number :)
|
|
25888
|
+
let translateY = 0;
|
|
25889
|
+
let translateZ = 0;
|
|
25890
|
+
const { col, rotateFactor } = this;
|
|
25891
|
+
const prevSelected = col.selectedIndex;
|
|
25892
|
+
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
25893
|
+
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
25894
|
+
const scaleStr = `scale(${this.scaleFactor})`;
|
|
25895
|
+
const children = this.optsEl.children;
|
|
25896
|
+
for (let i = 0; i < children.length; i++) {
|
|
25897
|
+
const button = children[i];
|
|
25898
|
+
const opt = col.options[i];
|
|
25899
|
+
const optOffset = i * this.optHeight + y;
|
|
25900
|
+
let transform = '';
|
|
25901
|
+
if (rotateFactor !== 0) {
|
|
25902
|
+
const rotateX = optOffset * rotateFactor;
|
|
25903
|
+
if (Math.abs(rotateX) <= 90) {
|
|
25904
|
+
translateY = 0;
|
|
25905
|
+
translateZ = 90;
|
|
25906
|
+
transform = `rotateX(${rotateX}deg) `;
|
|
25907
|
+
}
|
|
25908
|
+
else {
|
|
25909
|
+
translateY = -9999;
|
|
25910
|
+
}
|
|
25911
|
+
}
|
|
25912
|
+
else {
|
|
25913
|
+
translateZ = 0;
|
|
25914
|
+
translateY = optOffset;
|
|
25915
|
+
}
|
|
25916
|
+
const selected = selectedIndex === i;
|
|
25917
|
+
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
25918
|
+
if (this.scaleFactor !== 1 && !selected) {
|
|
25919
|
+
transform += scaleStr;
|
|
25920
|
+
}
|
|
25921
|
+
// Update transition duration
|
|
25922
|
+
if (this.noAnimate) {
|
|
25923
|
+
opt.duration = 0;
|
|
25924
|
+
button.style.transitionDuration = '';
|
|
25925
|
+
}
|
|
25926
|
+
else if (duration !== opt.duration) {
|
|
25927
|
+
opt.duration = duration;
|
|
25928
|
+
button.style.transitionDuration = durationStr;
|
|
25929
|
+
}
|
|
25930
|
+
// Update transform
|
|
25931
|
+
if (transform !== opt.transform) {
|
|
25932
|
+
opt.transform = transform;
|
|
25933
|
+
}
|
|
25934
|
+
button.style.transform = transform;
|
|
25935
|
+
/**
|
|
25936
|
+
* Ensure that the select column
|
|
25937
|
+
* item has the selected class
|
|
25938
|
+
*/
|
|
25939
|
+
opt.selected = selected;
|
|
25940
|
+
if (selected) {
|
|
25941
|
+
button.classList.add(PICKER_OPT_SELECTED);
|
|
25942
|
+
}
|
|
25943
|
+
else {
|
|
25944
|
+
button.classList.remove(PICKER_OPT_SELECTED);
|
|
25945
|
+
}
|
|
25946
|
+
}
|
|
25947
|
+
this.col.prevSelected = prevSelected;
|
|
25948
|
+
if (saveY) {
|
|
25949
|
+
this.y = y;
|
|
25950
|
+
}
|
|
25951
|
+
if (this.lastIndex !== selectedIndex) {
|
|
25952
|
+
// have not set a last index yet
|
|
25953
|
+
hapticSelectionChanged();
|
|
25954
|
+
this.lastIndex = selectedIndex;
|
|
25955
|
+
}
|
|
25956
|
+
}
|
|
25957
|
+
decelerate() {
|
|
25958
|
+
if (this.velocity !== 0) {
|
|
25959
|
+
// still decelerating
|
|
25960
|
+
this.velocity *= DECELERATION_FRICTION;
|
|
25961
|
+
// do not let it go slower than a velocity of 1
|
|
25962
|
+
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
25963
|
+
let y = this.y + this.velocity;
|
|
25964
|
+
if (y > this.minY) {
|
|
25965
|
+
// whoops, it's trying to scroll up farther than the options we have!
|
|
25966
|
+
y = this.minY;
|
|
25967
|
+
this.velocity = 0;
|
|
25968
|
+
}
|
|
25969
|
+
else if (y < this.maxY) {
|
|
25970
|
+
// gahh, it's trying to scroll down farther than we can!
|
|
25971
|
+
y = this.maxY;
|
|
25972
|
+
this.velocity = 0;
|
|
25973
|
+
}
|
|
25974
|
+
this.update(y, 0, true);
|
|
25975
|
+
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
25976
|
+
if (notLockedIn) {
|
|
25977
|
+
// isn't locked in yet, keep decelerating until it is
|
|
25978
|
+
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
25979
|
+
}
|
|
25980
|
+
else {
|
|
25981
|
+
this.velocity = 0;
|
|
25982
|
+
this.emitColChange();
|
|
25983
|
+
hapticSelectionEnd();
|
|
25984
|
+
}
|
|
25985
|
+
}
|
|
25986
|
+
else if (this.y % this.optHeight !== 0) {
|
|
25987
|
+
// needs to still get locked into a position so options line up
|
|
25988
|
+
const currentPos = Math.abs(this.y % this.optHeight);
|
|
25989
|
+
// create a velocity in the direction it needs to scroll
|
|
25990
|
+
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
25991
|
+
this.decelerate();
|
|
25992
|
+
}
|
|
25993
|
+
}
|
|
25994
|
+
indexForY(y) {
|
|
25995
|
+
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
25996
|
+
}
|
|
25997
|
+
onStart(detail) {
|
|
25998
|
+
// We have to prevent default in order to block scrolling under the picker
|
|
25999
|
+
// but we DO NOT have to stop propagation, since we still want
|
|
26000
|
+
// some "click" events to capture
|
|
26001
|
+
if (detail.event.cancelable) {
|
|
26002
|
+
detail.event.preventDefault();
|
|
26003
|
+
}
|
|
26004
|
+
detail.event.stopPropagation();
|
|
26005
|
+
hapticSelectionStart();
|
|
26006
|
+
// reset everything
|
|
26007
|
+
if (this.rafId !== undefined)
|
|
26008
|
+
cancelAnimationFrame(this.rafId);
|
|
26009
|
+
const options = this.col.options;
|
|
26010
|
+
let minY = options.length - 1;
|
|
26011
|
+
let maxY = 0;
|
|
26012
|
+
for (let i = 0; i < options.length; i++) {
|
|
26013
|
+
if (!options[i].disabled) {
|
|
26014
|
+
minY = Math.min(minY, i);
|
|
26015
|
+
maxY = Math.max(maxY, i);
|
|
26016
|
+
}
|
|
26017
|
+
}
|
|
26018
|
+
this.minY = -(minY * this.optHeight);
|
|
26019
|
+
this.maxY = -(maxY * this.optHeight);
|
|
26020
|
+
}
|
|
26021
|
+
onMove(detail) {
|
|
26022
|
+
if (detail.event.cancelable) {
|
|
26023
|
+
detail.event.preventDefault();
|
|
26024
|
+
}
|
|
26025
|
+
detail.event.stopPropagation();
|
|
26026
|
+
// update the scroll position relative to pointer start position
|
|
26027
|
+
let y = this.y + detail.deltaY;
|
|
26028
|
+
if (y > this.minY) {
|
|
26029
|
+
// scrolling up higher than scroll area
|
|
26030
|
+
y = Math.pow(y, 0.8);
|
|
26031
|
+
this.bounceFrom = y;
|
|
26032
|
+
}
|
|
26033
|
+
else if (y < this.maxY) {
|
|
26034
|
+
// scrolling down below scroll area
|
|
26035
|
+
y += Math.pow(this.maxY - y, 0.9);
|
|
26036
|
+
this.bounceFrom = y;
|
|
26037
|
+
}
|
|
26038
|
+
else {
|
|
26039
|
+
this.bounceFrom = 0;
|
|
26040
|
+
}
|
|
26041
|
+
this.update(y, 0, false);
|
|
26042
|
+
}
|
|
26043
|
+
onEnd(detail) {
|
|
26044
|
+
if (this.bounceFrom > 0) {
|
|
26045
|
+
// bounce back up
|
|
26046
|
+
this.update(this.minY, 100, true);
|
|
26047
|
+
this.emitColChange();
|
|
26048
|
+
return;
|
|
26049
|
+
}
|
|
26050
|
+
else if (this.bounceFrom < 0) {
|
|
26051
|
+
// bounce back down
|
|
26052
|
+
this.update(this.maxY, 100, true);
|
|
26053
|
+
this.emitColChange();
|
|
26054
|
+
return;
|
|
26055
|
+
}
|
|
26056
|
+
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
26057
|
+
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
26058
|
+
const opt = detail.event.target.closest('.picker-opt');
|
|
26059
|
+
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
26060
|
+
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
26061
|
+
}
|
|
26062
|
+
}
|
|
26063
|
+
else {
|
|
26064
|
+
this.y += detail.deltaY;
|
|
26065
|
+
if (Math.abs(detail.velocityY) < 0.05) {
|
|
26066
|
+
const isScrollingUp = detail.deltaY > 0;
|
|
26067
|
+
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
26068
|
+
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
26069
|
+
this.velocity = Math.abs(this.velocity) * -1;
|
|
26070
|
+
}
|
|
26071
|
+
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
26072
|
+
this.velocity = Math.abs(this.velocity);
|
|
26073
|
+
}
|
|
26074
|
+
}
|
|
26075
|
+
this.decelerate();
|
|
26076
|
+
}
|
|
26077
|
+
}
|
|
26078
|
+
refresh(forceRefresh, animated) {
|
|
26079
|
+
var _a;
|
|
26080
|
+
let min = this.col.options.length - 1;
|
|
26081
|
+
let max = 0;
|
|
26082
|
+
const options = this.col.options;
|
|
26083
|
+
for (let i = 0; i < options.length; i++) {
|
|
26084
|
+
if (!options[i].disabled) {
|
|
26085
|
+
min = Math.min(min, i);
|
|
26086
|
+
max = Math.max(max, i);
|
|
26087
|
+
}
|
|
26088
|
+
}
|
|
26089
|
+
/**
|
|
26090
|
+
* Only update selected value if column has a
|
|
26091
|
+
* velocity of 0. If it does not, then the
|
|
26092
|
+
* column is animating might land on
|
|
26093
|
+
* a value different than the value at
|
|
26094
|
+
* selectedIndex
|
|
26095
|
+
*/
|
|
26096
|
+
if (this.velocity !== 0) {
|
|
26097
|
+
return;
|
|
26098
|
+
}
|
|
26099
|
+
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
26100
|
+
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
26101
|
+
const y = selectedIndex * this.optHeight * -1;
|
|
26102
|
+
const duration = animated ? TRANSITION_DURATION : 0;
|
|
26103
|
+
this.velocity = 0;
|
|
26104
|
+
this.update(y, duration, true);
|
|
26105
|
+
}
|
|
26106
|
+
}
|
|
26107
|
+
onDomChange(forceRefresh, animated) {
|
|
26108
|
+
const colEl = this.optsEl;
|
|
26109
|
+
if (colEl) {
|
|
26110
|
+
// DOM READ
|
|
26111
|
+
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
26112
|
+
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
25512
26113
|
}
|
|
25513
|
-
|
|
25514
|
-
get activeItem() {
|
|
25515
|
-
// If the whole picker column is disabled, the current value should appear active
|
|
25516
|
-
// If the current value item is specifically disabled, it should not appear active
|
|
25517
|
-
const selector = `.picker-item[data-value="${this.value}"]${this.disabled ? '' : ':not([disabled])'}`;
|
|
25518
|
-
return getElementRoot(this.el).querySelector(selector);
|
|
26114
|
+
this.refresh(forceRefresh, animated);
|
|
25519
26115
|
}
|
|
25520
26116
|
render() {
|
|
25521
|
-
const
|
|
26117
|
+
const col = this.col;
|
|
25522
26118
|
const mode = getIonMode$1(this);
|
|
25523
|
-
|
|
25524
|
-
|
|
25525
|
-
|
|
25526
|
-
* the attribute can be moved to datetime.tsx and set on every
|
|
25527
|
-
* instance of ion-picker-column-internal there instead.
|
|
25528
|
-
*/
|
|
25529
|
-
return (hAsync(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses$1(color, {
|
|
25530
|
-
[mode]: true,
|
|
25531
|
-
['picker-column-active']: isActive,
|
|
25532
|
-
['picker-column-numeric-input']: numericInput,
|
|
25533
|
-
}) }, hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
|
|
25534
|
-
const isItemDisabled = pickerDisabled || item.disabled || false;
|
|
25535
|
-
return (hAsync("button", { tabindex: "-1", class: {
|
|
25536
|
-
'picker-item': true,
|
|
25537
|
-
}, "data-value": item.value, "data-index": index, onClick: (ev) => {
|
|
25538
|
-
this.centerPickerItemInView(ev.target, true);
|
|
25539
|
-
}, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
|
|
25540
|
-
}), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
|
|
26119
|
+
return (hAsync(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: {
|
|
26120
|
+
'max-width': this.col.columnWidth,
|
|
26121
|
+
} }, col.prefix && (hAsync("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
|
|
25541
26122
|
}
|
|
25542
26123
|
get el() { return getElement(this); }
|
|
25543
26124
|
static get watchers() { return {
|
|
25544
|
-
"
|
|
26125
|
+
"col": ["colChanged"]
|
|
25545
26126
|
}; }
|
|
25546
26127
|
static get style() { return {
|
|
25547
|
-
ios:
|
|
25548
|
-
md:
|
|
26128
|
+
ios: pickerColumnIosCss,
|
|
26129
|
+
md: pickerColumnMdCss
|
|
25549
26130
|
}; }
|
|
25550
26131
|
static get cmpMeta() { return {
|
|
25551
|
-
"$flags$":
|
|
25552
|
-
"$tagName$": "ion-picker-column
|
|
26132
|
+
"$flags$": 32,
|
|
26133
|
+
"$tagName$": "ion-picker-legacy-column",
|
|
25553
26134
|
"$members$": {
|
|
25554
|
-
"
|
|
25555
|
-
"items": [16],
|
|
25556
|
-
"value": [1032],
|
|
25557
|
-
"color": [513],
|
|
25558
|
-
"numericInput": [4, "numeric-input"],
|
|
25559
|
-
"isActive": [32],
|
|
25560
|
-
"scrollActiveItemIntoView": [64],
|
|
25561
|
-
"setValue": [64]
|
|
26135
|
+
"col": [16]
|
|
25562
26136
|
},
|
|
25563
26137
|
"$listeners$": undefined,
|
|
25564
26138
|
"$lazyBundleId$": "-",
|
|
25565
|
-
"$attrsToReflect$": [
|
|
26139
|
+
"$attrsToReflect$": []
|
|
25566
26140
|
}; }
|
|
25567
26141
|
}
|
|
25568
|
-
const
|
|
25569
|
-
const
|
|
25570
|
-
const
|
|
26142
|
+
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
26143
|
+
const DECELERATION_FRICTION = 0.97;
|
|
26144
|
+
const MAX_PICKER_SPEED = 90;
|
|
26145
|
+
const TRANSITION_DURATION = 150;
|
|
25571
26146
|
|
|
25572
|
-
const
|
|
26147
|
+
const pickerColumnOptionIosCss = "/*!@button*/button.sc-ion-picker-column-option-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}/*!@:host(.option-disabled)*/.option-disabled.sc-ion-picker-column-option-ios-h{opacity:0.4}/*!@:host(.option-disabled) button*/.option-disabled.sc-ion-picker-column-option-ios-h button.sc-ion-picker-column-option-ios{cursor:default}";
|
|
25573
26148
|
|
|
25574
|
-
const
|
|
26149
|
+
const pickerColumnOptionMdCss = "/*!@button*/button.sc-ion-picker-column-option-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}/*!@:host(.option-disabled)*/.option-disabled.sc-ion-picker-column-option-md-h{opacity:0.4}/*!@:host(.option-disabled) button*/.option-disabled.sc-ion-picker-column-option-md-h button.sc-ion-picker-column-option-md{cursor:default}/*!@:host(.option-active)*/.option-active.sc-ion-picker-column-option-md-h{color:var(--ion-color-base)}";
|
|
25575
26150
|
|
|
25576
|
-
|
|
25577
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25578
|
-
* @internal
|
|
25579
|
-
*/
|
|
25580
|
-
class PickerInternal {
|
|
26151
|
+
class PickerColumnOption {
|
|
25581
26152
|
constructor(hostRef) {
|
|
25582
26153
|
registerInstance(this, hostRef);
|
|
25583
|
-
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
25584
|
-
this.useInputMode = false;
|
|
25585
|
-
this.isInHighlightBounds = (ev) => {
|
|
25586
|
-
const { highlightEl } = this;
|
|
25587
|
-
if (!highlightEl) {
|
|
25588
|
-
return false;
|
|
25589
|
-
}
|
|
25590
|
-
const bbox = highlightEl.getBoundingClientRect();
|
|
25591
|
-
/**
|
|
25592
|
-
* Check to see if the user clicked
|
|
25593
|
-
* outside the bounds of the highlight.
|
|
25594
|
-
*/
|
|
25595
|
-
const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
|
|
25596
|
-
const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
|
|
25597
|
-
if (outsideX || outsideY) {
|
|
25598
|
-
return false;
|
|
25599
|
-
}
|
|
25600
|
-
return true;
|
|
25601
|
-
};
|
|
25602
|
-
/**
|
|
25603
|
-
* If we are no longer focused
|
|
25604
|
-
* on a picker column, then we should
|
|
25605
|
-
* exit input mode. An exception is made
|
|
25606
|
-
* for the input in the picker since having
|
|
25607
|
-
* that focused means we are still in input mode.
|
|
25608
|
-
*/
|
|
25609
|
-
this.onFocusOut = (ev) => {
|
|
25610
|
-
// TODO(FW-2832): type
|
|
25611
|
-
const { relatedTarget } = ev;
|
|
25612
|
-
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN-INTERNAL' && relatedTarget !== this.inputEl)) {
|
|
25613
|
-
this.exitInputMode();
|
|
25614
|
-
}
|
|
25615
|
-
};
|
|
25616
|
-
/**
|
|
25617
|
-
* When picker columns receive focus
|
|
25618
|
-
* the parent picker needs to determine
|
|
25619
|
-
* whether to enter/exit input mode.
|
|
25620
|
-
*/
|
|
25621
|
-
this.onFocusIn = (ev) => {
|
|
25622
|
-
// TODO(FW-2832): type
|
|
25623
|
-
const { target } = ev;
|
|
25624
|
-
/**
|
|
25625
|
-
* Due to browser differences in how/when focus
|
|
25626
|
-
* is dispatched on certain elements, we need to
|
|
25627
|
-
* make sure that this function only ever runs when
|
|
25628
|
-
* focusing a picker column.
|
|
25629
|
-
*/
|
|
25630
|
-
if (target.tagName !== 'ION-PICKER-COLUMN-INTERNAL') {
|
|
25631
|
-
return;
|
|
25632
|
-
}
|
|
25633
|
-
/**
|
|
25634
|
-
* If we have actionOnClick
|
|
25635
|
-
* then this means the user focused
|
|
25636
|
-
* a picker column via mouse or
|
|
25637
|
-
* touch (i.e. a PointerEvent). As a result,
|
|
25638
|
-
* we should not enter/exit input mode
|
|
25639
|
-
* until the click event has fired, which happens
|
|
25640
|
-
* after the `focusin` event.
|
|
25641
|
-
*
|
|
25642
|
-
* Otherwise, the user likely focused
|
|
25643
|
-
* the column using their keyboard and
|
|
25644
|
-
* we should enter/exit input mode automatically.
|
|
25645
|
-
*/
|
|
25646
|
-
if (!this.actionOnClick) {
|
|
25647
|
-
const columnEl = target;
|
|
25648
|
-
const allowInput = columnEl.numericInput;
|
|
25649
|
-
if (allowInput) {
|
|
25650
|
-
this.enterInputMode(columnEl, false);
|
|
25651
|
-
}
|
|
25652
|
-
else {
|
|
25653
|
-
this.exitInputMode();
|
|
25654
|
-
}
|
|
25655
|
-
}
|
|
25656
|
-
};
|
|
25657
|
-
/**
|
|
25658
|
-
* On click we need to run an actionOnClick
|
|
25659
|
-
* function that has been set in onPointerDown
|
|
25660
|
-
* so that we enter/exit input mode correctly.
|
|
25661
|
-
*/
|
|
25662
|
-
this.onClick = () => {
|
|
25663
|
-
const { actionOnClick } = this;
|
|
25664
|
-
if (actionOnClick) {
|
|
25665
|
-
actionOnClick();
|
|
25666
|
-
this.actionOnClick = undefined;
|
|
25667
|
-
}
|
|
25668
|
-
};
|
|
25669
|
-
/**
|
|
25670
|
-
* Clicking a column also focuses the column on
|
|
25671
|
-
* certain browsers, so we use onPointerDown
|
|
25672
|
-
* to tell the onFocusIn function that users
|
|
25673
|
-
* are trying to click the column rather than
|
|
25674
|
-
* focus the column using the keyboard. When the
|
|
25675
|
-
* user completes the click, the onClick function
|
|
25676
|
-
* runs and runs the actionOnClick callback.
|
|
25677
|
-
*/
|
|
25678
|
-
this.onPointerDown = (ev) => {
|
|
25679
|
-
const { useInputMode, inputModeColumn, el } = this;
|
|
25680
|
-
if (this.isInHighlightBounds(ev)) {
|
|
25681
|
-
/**
|
|
25682
|
-
* If we were already in
|
|
25683
|
-
* input mode, then we should determine
|
|
25684
|
-
* if we tapped a particular column and
|
|
25685
|
-
* should switch to input mode for
|
|
25686
|
-
* that specific column.
|
|
25687
|
-
*/
|
|
25688
|
-
if (useInputMode) {
|
|
25689
|
-
/**
|
|
25690
|
-
* If we tapped a picker column
|
|
25691
|
-
* then we should either switch to input
|
|
25692
|
-
* mode for that column or all columns.
|
|
25693
|
-
* Otherwise we should exit input mode
|
|
25694
|
-
* since we just tapped the highlight and
|
|
25695
|
-
* not a column.
|
|
25696
|
-
*/
|
|
25697
|
-
if (ev.target.tagName === 'ION-PICKER-COLUMN-INTERNAL') {
|
|
25698
|
-
/**
|
|
25699
|
-
* If user taps 2 different columns
|
|
25700
|
-
* then we should just switch to input mode
|
|
25701
|
-
* for the new column rather than switching to
|
|
25702
|
-
* input mode for all columns.
|
|
25703
|
-
*/
|
|
25704
|
-
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
25705
|
-
this.actionOnClick = () => {
|
|
25706
|
-
this.enterInputMode();
|
|
25707
|
-
};
|
|
25708
|
-
}
|
|
25709
|
-
else {
|
|
25710
|
-
this.actionOnClick = () => {
|
|
25711
|
-
this.enterInputMode(ev.target);
|
|
25712
|
-
};
|
|
25713
|
-
}
|
|
25714
|
-
}
|
|
25715
|
-
else {
|
|
25716
|
-
this.actionOnClick = () => {
|
|
25717
|
-
this.exitInputMode();
|
|
25718
|
-
};
|
|
25719
|
-
}
|
|
25720
|
-
/**
|
|
25721
|
-
* If we were not already in
|
|
25722
|
-
* input mode, then we should
|
|
25723
|
-
* enter input mode for all columns.
|
|
25724
|
-
*/
|
|
25725
|
-
}
|
|
25726
|
-
else {
|
|
25727
|
-
/**
|
|
25728
|
-
* If there is only 1 numeric input column
|
|
25729
|
-
* then we should skip multi column input.
|
|
25730
|
-
*/
|
|
25731
|
-
const columns = el.querySelectorAll('ion-picker-column-internal.picker-column-numeric-input');
|
|
25732
|
-
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
25733
|
-
this.actionOnClick = () => {
|
|
25734
|
-
this.enterInputMode(columnEl);
|
|
25735
|
-
};
|
|
25736
|
-
}
|
|
25737
|
-
return;
|
|
25738
|
-
}
|
|
25739
|
-
this.actionOnClick = () => {
|
|
25740
|
-
this.exitInputMode();
|
|
25741
|
-
};
|
|
25742
|
-
};
|
|
25743
|
-
/**
|
|
25744
|
-
* Enters input mode to allow
|
|
25745
|
-
* for text entry of numeric values.
|
|
25746
|
-
* If on mobile, we focus a hidden input
|
|
25747
|
-
* field so that the on screen keyboard
|
|
25748
|
-
* is brought up. When tabbing using a
|
|
25749
|
-
* keyboard, picker columns receive an outline
|
|
25750
|
-
* to indicate they are focused. As a result,
|
|
25751
|
-
* we should not focus the hidden input as it
|
|
25752
|
-
* would cause the outline to go away, preventing
|
|
25753
|
-
* users from having any visual indication of which
|
|
25754
|
-
* column is focused.
|
|
25755
|
-
*/
|
|
25756
|
-
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
25757
|
-
const { inputEl, el } = this;
|
|
25758
|
-
if (!inputEl) {
|
|
25759
|
-
return;
|
|
25760
|
-
}
|
|
25761
|
-
/**
|
|
25762
|
-
* Only active input mode if there is at
|
|
25763
|
-
* least one column that accepts numeric input.
|
|
25764
|
-
*/
|
|
25765
|
-
const hasInputColumn = el.querySelector('ion-picker-column-internal.picker-column-numeric-input');
|
|
25766
|
-
if (!hasInputColumn) {
|
|
25767
|
-
return;
|
|
25768
|
-
}
|
|
25769
|
-
/**
|
|
25770
|
-
* If columnEl is undefined then
|
|
25771
|
-
* it is assumed that all numeric pickers
|
|
25772
|
-
* are eligible for text entry.
|
|
25773
|
-
* (i.e. hour and minute columns)
|
|
25774
|
-
*/
|
|
25775
|
-
this.useInputMode = true;
|
|
25776
|
-
this.inputModeColumn = columnEl;
|
|
25777
|
-
/**
|
|
25778
|
-
* Users with a keyboard and mouse can
|
|
25779
|
-
* activate input mode where the input is
|
|
25780
|
-
* focused as well as when it is not focused,
|
|
25781
|
-
* so we need to make sure we clean up any
|
|
25782
|
-
* old listeners.
|
|
25783
|
-
*/
|
|
25784
|
-
if (focusInput) {
|
|
25785
|
-
if (this.destroyKeypressListener) {
|
|
25786
|
-
this.destroyKeypressListener();
|
|
25787
|
-
this.destroyKeypressListener = undefined;
|
|
25788
|
-
}
|
|
25789
|
-
inputEl.focus();
|
|
25790
|
-
}
|
|
25791
|
-
else {
|
|
25792
|
-
el.addEventListener('keypress', this.onKeyPress);
|
|
25793
|
-
this.destroyKeypressListener = () => {
|
|
25794
|
-
el.removeEventListener('keypress', this.onKeyPress);
|
|
25795
|
-
};
|
|
25796
|
-
}
|
|
25797
|
-
this.emitInputModeChange();
|
|
25798
|
-
};
|
|
25799
|
-
this.onKeyPress = (ev) => {
|
|
25800
|
-
const { inputEl } = this;
|
|
25801
|
-
if (!inputEl) {
|
|
25802
|
-
return;
|
|
25803
|
-
}
|
|
25804
|
-
const parsedValue = parseInt(ev.key, 10);
|
|
25805
|
-
/**
|
|
25806
|
-
* Only numbers should be allowed
|
|
25807
|
-
*/
|
|
25808
|
-
if (!Number.isNaN(parsedValue)) {
|
|
25809
|
-
inputEl.value += ev.key;
|
|
25810
|
-
this.onInputChange();
|
|
25811
|
-
}
|
|
25812
|
-
};
|
|
25813
|
-
this.selectSingleColumn = () => {
|
|
25814
|
-
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
25815
|
-
if (!inputEl || !inputModeColumn) {
|
|
25816
|
-
return;
|
|
25817
|
-
}
|
|
25818
|
-
const values = inputModeColumn.items.filter((item) => item.disabled !== true);
|
|
25819
|
-
/**
|
|
25820
|
-
* If users pause for a bit, the search
|
|
25821
|
-
* value should be reset similar to how a
|
|
25822
|
-
* <select> behaves. So typing "34", waiting,
|
|
25823
|
-
* then typing "5" should select "05".
|
|
25824
|
-
*/
|
|
25825
|
-
if (singleColumnSearchTimeout) {
|
|
25826
|
-
clearTimeout(singleColumnSearchTimeout);
|
|
25827
|
-
}
|
|
25828
|
-
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
25829
|
-
inputEl.value = '';
|
|
25830
|
-
this.singleColumnSearchTimeout = undefined;
|
|
25831
|
-
}, 1000);
|
|
25832
|
-
/**
|
|
25833
|
-
* For values that are longer than 2 digits long
|
|
25834
|
-
* we should shift the value over 1 character
|
|
25835
|
-
* to the left. So typing "456" would result in "56".
|
|
25836
|
-
* TODO: If we want to support more than just
|
|
25837
|
-
* time entry, we should update this value to be
|
|
25838
|
-
* the max length of all of the picker items.
|
|
25839
|
-
*/
|
|
25840
|
-
if (inputEl.value.length >= 3) {
|
|
25841
|
-
const startIndex = inputEl.value.length - 2;
|
|
25842
|
-
const newString = inputEl.value.substring(startIndex);
|
|
25843
|
-
inputEl.value = newString;
|
|
25844
|
-
this.selectSingleColumn();
|
|
25845
|
-
return;
|
|
25846
|
-
}
|
|
25847
|
-
/**
|
|
25848
|
-
* Checking the value of the input gets priority
|
|
25849
|
-
* first. For example, if the value of the input
|
|
25850
|
-
* is "1" and we entered "2", then the complete value
|
|
25851
|
-
* is "12" and we should select hour 12.
|
|
25852
|
-
*
|
|
25853
|
-
* Regex removes any leading zeros from values like "02",
|
|
25854
|
-
* but it keeps a single zero if there are only zeros in the string.
|
|
25855
|
-
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
25856
|
-
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
25857
|
-
*/
|
|
25858
|
-
const findItemFromCompleteValue = values.find(({ text }) => {
|
|
25859
|
-
const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
25860
|
-
return parsedText === inputEl.value;
|
|
25861
|
-
});
|
|
25862
|
-
if (findItemFromCompleteValue) {
|
|
25863
|
-
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
25864
|
-
return;
|
|
25865
|
-
}
|
|
25866
|
-
/**
|
|
25867
|
-
* If we typed "56" to get minute 56, then typed "7",
|
|
25868
|
-
* we should select "07" as "567" is not a valid minute.
|
|
25869
|
-
*/
|
|
25870
|
-
if (inputEl.value.length === 2) {
|
|
25871
|
-
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
25872
|
-
inputEl.value = changedCharacter;
|
|
25873
|
-
this.selectSingleColumn();
|
|
25874
|
-
}
|
|
25875
|
-
};
|
|
25876
|
-
/**
|
|
25877
|
-
* Searches a list of column items for a particular
|
|
25878
|
-
* value. This is currently used for numeric values.
|
|
25879
|
-
* The zeroBehavior can be set to account for leading
|
|
25880
|
-
* or trailing zeros when looking at the item text.
|
|
25881
|
-
*/
|
|
25882
|
-
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
25883
|
-
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
25884
|
-
const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
|
|
25885
|
-
if (item) {
|
|
25886
|
-
colEl.setValue(item.value);
|
|
25887
|
-
}
|
|
25888
|
-
};
|
|
25889
|
-
this.selectMultiColumn = () => {
|
|
25890
|
-
const { inputEl, el } = this;
|
|
25891
|
-
if (!inputEl) {
|
|
25892
|
-
return;
|
|
25893
|
-
}
|
|
25894
|
-
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column-internal')).filter((col) => col.numericInput);
|
|
25895
|
-
const firstColumn = numericPickers[0];
|
|
25896
|
-
const lastColumn = numericPickers[1];
|
|
25897
|
-
let value = inputEl.value;
|
|
25898
|
-
let minuteValue;
|
|
25899
|
-
switch (value.length) {
|
|
25900
|
-
case 1:
|
|
25901
|
-
this.searchColumn(firstColumn, value);
|
|
25902
|
-
break;
|
|
25903
|
-
case 2:
|
|
25904
|
-
/**
|
|
25905
|
-
* If the first character is `0` or `1` it is
|
|
25906
|
-
* possible that users are trying to type `09`
|
|
25907
|
-
* or `11` into the hour field, so we should look
|
|
25908
|
-
* at that first.
|
|
25909
|
-
*/
|
|
25910
|
-
const firstCharacter = inputEl.value.substring(0, 1);
|
|
25911
|
-
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
25912
|
-
this.searchColumn(firstColumn, value);
|
|
25913
|
-
/**
|
|
25914
|
-
* If only checked the first value,
|
|
25915
|
-
* we can check the second value
|
|
25916
|
-
* for a match in the minutes column
|
|
25917
|
-
*/
|
|
25918
|
-
if (value.length === 1) {
|
|
25919
|
-
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
25920
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25921
|
-
}
|
|
25922
|
-
break;
|
|
25923
|
-
case 3:
|
|
25924
|
-
/**
|
|
25925
|
-
* If the first character is `0` or `1` it is
|
|
25926
|
-
* possible that users are trying to type `09`
|
|
25927
|
-
* or `11` into the hour field, so we should look
|
|
25928
|
-
* at that first.
|
|
25929
|
-
*/
|
|
25930
|
-
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
25931
|
-
value =
|
|
25932
|
-
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
25933
|
-
? inputEl.value.substring(0, 2)
|
|
25934
|
-
: firstCharacterAgain;
|
|
25935
|
-
this.searchColumn(firstColumn, value);
|
|
25936
|
-
/**
|
|
25937
|
-
* If only checked the first value,
|
|
25938
|
-
* we can check the second value
|
|
25939
|
-
* for a match in the minutes column
|
|
25940
|
-
*/
|
|
25941
|
-
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
25942
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25943
|
-
break;
|
|
25944
|
-
case 4:
|
|
25945
|
-
/**
|
|
25946
|
-
* If the first character is `0` or `1` it is
|
|
25947
|
-
* possible that users are trying to type `09`
|
|
25948
|
-
* or `11` into the hour field, so we should look
|
|
25949
|
-
* at that first.
|
|
25950
|
-
*/
|
|
25951
|
-
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
25952
|
-
value =
|
|
25953
|
-
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
25954
|
-
? inputEl.value.substring(0, 2)
|
|
25955
|
-
: firstCharacterAgainAgain;
|
|
25956
|
-
this.searchColumn(firstColumn, value);
|
|
25957
|
-
/**
|
|
25958
|
-
* If only checked the first value,
|
|
25959
|
-
* we can check the second value
|
|
25960
|
-
* for a match in the minutes column
|
|
25961
|
-
*/
|
|
25962
|
-
const minuteValueAgain = value.length === 1
|
|
25963
|
-
? inputEl.value.substring(1, inputEl.value.length)
|
|
25964
|
-
: inputEl.value.substring(2, inputEl.value.length);
|
|
25965
|
-
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
25966
|
-
break;
|
|
25967
|
-
default:
|
|
25968
|
-
const startIndex = inputEl.value.length - 4;
|
|
25969
|
-
const newString = inputEl.value.substring(startIndex);
|
|
25970
|
-
inputEl.value = newString;
|
|
25971
|
-
this.selectMultiColumn();
|
|
25972
|
-
break;
|
|
25973
|
-
}
|
|
25974
|
-
};
|
|
25975
|
-
/**
|
|
25976
|
-
* Searches the value of the active column
|
|
25977
|
-
* to determine which value users are trying
|
|
25978
|
-
* to select
|
|
25979
|
-
*/
|
|
25980
|
-
this.onInputChange = () => {
|
|
25981
|
-
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
25982
|
-
if (!useInputMode || !inputEl) {
|
|
25983
|
-
return;
|
|
25984
|
-
}
|
|
25985
|
-
if (inputModeColumn) {
|
|
25986
|
-
this.selectSingleColumn();
|
|
25987
|
-
}
|
|
25988
|
-
else {
|
|
25989
|
-
this.selectMultiColumn();
|
|
25990
|
-
}
|
|
25991
|
-
};
|
|
25992
26154
|
/**
|
|
25993
|
-
*
|
|
25994
|
-
*
|
|
25995
|
-
*
|
|
26155
|
+
* We keep track of the parent picker column
|
|
26156
|
+
* so we can update the value of it when
|
|
26157
|
+
* clicking an enable option.
|
|
25996
26158
|
*/
|
|
25997
|
-
this.
|
|
25998
|
-
|
|
25999
|
-
|
|
26000
|
-
|
|
26001
|
-
|
|
26002
|
-
});
|
|
26003
|
-
};
|
|
26159
|
+
this.pickerColumn = null;
|
|
26160
|
+
this.ariaLabel = null;
|
|
26161
|
+
this.disabled = false;
|
|
26162
|
+
this.value = undefined;
|
|
26163
|
+
this.color = 'primary';
|
|
26004
26164
|
}
|
|
26005
26165
|
/**
|
|
26006
|
-
*
|
|
26007
|
-
*
|
|
26008
|
-
*
|
|
26009
|
-
*
|
|
26010
|
-
* in ion-datetime should not cause
|
|
26011
|
-
* a card modal to swipe to close.
|
|
26166
|
+
* The aria-label of the option has changed after the
|
|
26167
|
+
* first render and needs to be updated within the component.
|
|
26168
|
+
*
|
|
26169
|
+
* @param ariaLbl The new aria-label value.
|
|
26012
26170
|
*/
|
|
26013
|
-
|
|
26014
|
-
|
|
26171
|
+
onAriaLabelChange(ariaLbl) {
|
|
26172
|
+
this.ariaLabel = ariaLbl;
|
|
26015
26173
|
}
|
|
26016
26174
|
componentWillLoad() {
|
|
26017
|
-
|
|
26018
|
-
|
|
26175
|
+
const inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
|
|
26176
|
+
/**
|
|
26177
|
+
* The initial value of `aria-label` needs to be set for
|
|
26178
|
+
* the first render.
|
|
26179
|
+
|
|
26180
|
+
*/
|
|
26181
|
+
this.ariaLabel = inheritedAttributes['aria-label'] || null;
|
|
26182
|
+
}
|
|
26183
|
+
connectedCallback() {
|
|
26184
|
+
this.pickerColumn = this.el.closest('ion-picker-column');
|
|
26185
|
+
}
|
|
26186
|
+
disconnectedCallback() {
|
|
26187
|
+
this.pickerColumn = null;
|
|
26019
26188
|
}
|
|
26020
26189
|
/**
|
|
26021
|
-
*
|
|
26022
|
-
*
|
|
26023
|
-
*
|
|
26024
|
-
*
|
|
26190
|
+
* The column options can load at any time
|
|
26191
|
+
* so the options needs to tell the
|
|
26192
|
+
* parent picker column when it is loaded
|
|
26193
|
+
* so the picker column can ensure it is
|
|
26194
|
+
* centered in the view.
|
|
26195
|
+
*
|
|
26196
|
+
* We intentionally run this for every
|
|
26197
|
+
* option. If we only ran this from
|
|
26198
|
+
* the selected option then if the newly
|
|
26199
|
+
* loaded options were not selected then
|
|
26200
|
+
* scrollActiveItemIntoView would not be called.
|
|
26025
26201
|
*/
|
|
26026
|
-
|
|
26027
|
-
const {
|
|
26028
|
-
if (
|
|
26029
|
-
|
|
26202
|
+
componentDidLoad() {
|
|
26203
|
+
const { pickerColumn } = this;
|
|
26204
|
+
if (pickerColumn !== null) {
|
|
26205
|
+
pickerColumn.scrollActiveItemIntoView();
|
|
26030
26206
|
}
|
|
26031
|
-
|
|
26032
|
-
|
|
26033
|
-
|
|
26034
|
-
|
|
26035
|
-
|
|
26036
|
-
|
|
26037
|
-
|
|
26207
|
+
}
|
|
26208
|
+
/**
|
|
26209
|
+
* When an option is clicked, update the
|
|
26210
|
+
* parent picker column value. This
|
|
26211
|
+
* component will handle centering the option
|
|
26212
|
+
* in the column view.
|
|
26213
|
+
*/
|
|
26214
|
+
onClick() {
|
|
26215
|
+
const { pickerColumn } = this;
|
|
26216
|
+
if (pickerColumn !== null) {
|
|
26217
|
+
pickerColumn.setValue(this.value);
|
|
26038
26218
|
}
|
|
26039
|
-
this.emitInputModeChange();
|
|
26040
26219
|
}
|
|
26041
26220
|
render() {
|
|
26042
|
-
|
|
26221
|
+
const { color, disabled, ariaLabel } = this;
|
|
26222
|
+
const mode = getIonMode$1(this);
|
|
26223
|
+
return (hAsync(Host, { class: createColorClasses$1(color, {
|
|
26224
|
+
[mode]: true,
|
|
26225
|
+
['option-disabled']: disabled,
|
|
26226
|
+
}) }, hAsync("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", null))));
|
|
26043
26227
|
}
|
|
26044
26228
|
get el() { return getElement(this); }
|
|
26229
|
+
static get watchers() { return {
|
|
26230
|
+
"aria-label": ["onAriaLabelChange"]
|
|
26231
|
+
}; }
|
|
26045
26232
|
static get style() { return {
|
|
26046
|
-
ios:
|
|
26047
|
-
md:
|
|
26233
|
+
ios: pickerColumnOptionIosCss,
|
|
26234
|
+
md: pickerColumnOptionMdCss
|
|
26048
26235
|
}; }
|
|
26049
26236
|
static get cmpMeta() { return {
|
|
26050
26237
|
"$flags$": 41,
|
|
26051
|
-
"$tagName$": "ion-picker-
|
|
26238
|
+
"$tagName$": "ion-picker-column-option",
|
|
26052
26239
|
"$members$": {
|
|
26053
|
-
"
|
|
26240
|
+
"disabled": [4],
|
|
26241
|
+
"value": [8],
|
|
26242
|
+
"color": [513],
|
|
26243
|
+
"ariaLabel": [32]
|
|
26054
26244
|
},
|
|
26055
|
-
"$listeners$":
|
|
26245
|
+
"$listeners$": undefined,
|
|
26056
26246
|
"$lazyBundleId$": "-",
|
|
26057
|
-
"$attrsToReflect$": []
|
|
26247
|
+
"$attrsToReflect$": [["color", "color"]]
|
|
26058
26248
|
}; }
|
|
26059
26249
|
}
|
|
26060
26250
|
|
|
@@ -28679,24 +28869,6 @@ const translateElement = (el, value, duration = 200) => {
|
|
|
28679
28869
|
};
|
|
28680
28870
|
// Utils
|
|
28681
28871
|
// -----------------------------
|
|
28682
|
-
/**
|
|
28683
|
-
* In order to use the native iOS refresher the device must support rubber band scrolling.
|
|
28684
|
-
* As part of this, we need to exclude Desktop Safari because it has a slightly different rubber band effect that is not compatible with the native refresher in Ionic.
|
|
28685
|
-
*
|
|
28686
|
-
* We also need to be careful not to include devices that spoof their user agent.
|
|
28687
|
-
* For example, when using iOS emulation in Chrome the user agent will be spoofed such that
|
|
28688
|
-
* navigator.maxTouchPointer > 0. To work around this,
|
|
28689
|
-
* we check to see if the apple-pay-logo is supported as a named image which is only
|
|
28690
|
-
* true on Apple devices.
|
|
28691
|
-
*
|
|
28692
|
-
* We previously checked referencEl.style.webkitOverflowScrolling to explicitly check
|
|
28693
|
-
* for rubber band support. However, this property was removed on iPadOS and it's possible
|
|
28694
|
-
* that this will be removed on iOS in the future too.
|
|
28695
|
-
*
|
|
28696
|
-
*/
|
|
28697
|
-
const supportsRubberBandScrolling = () => {
|
|
28698
|
-
return navigator.maxTouchPoints > 0 && CSS.supports('background: -webkit-named-image(apple-pay-logo-black)');
|
|
28699
|
-
};
|
|
28700
28872
|
const shouldUseNativeRefresher = async (referenceEl, mode) => {
|
|
28701
28873
|
const refresherContent = referenceEl.querySelector('ion-refresher-content');
|
|
28702
28874
|
if (!refresherContent) {
|
|
@@ -28707,7 +28879,16 @@ const shouldUseNativeRefresher = async (referenceEl, mode) => {
|
|
|
28707
28879
|
const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
|
|
28708
28880
|
return (pullingSpinner !== null &&
|
|
28709
28881
|
refreshingSpinner !== null &&
|
|
28710
|
-
|
|
28882
|
+
/**
|
|
28883
|
+
* We use webkitOverflowScrolling for feature detection with rubber band scrolling
|
|
28884
|
+
* on iOS. When doing referenceEl.style, webkitOverflowScrolling is undefined on non-iOS platforms.
|
|
28885
|
+
* However, it will be the empty string on iOS.
|
|
28886
|
+
* Note that we do not use getPropertyValue (and thus need to cast as any) because calling
|
|
28887
|
+
* getPropertyValue('-webkit-overflow-scrolling') will return the empty string if it is not
|
|
28888
|
+
* set on the element, even if the platform does not support that.
|
|
28889
|
+
*/
|
|
28890
|
+
((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
|
|
28891
|
+
mode === 'md'));
|
|
28711
28892
|
};
|
|
28712
28893
|
|
|
28713
28894
|
const refresherIosCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}@supports (inset-inline-start: 0){ion-refresher{inset-inline-start:0}}@supports not (inset-inline-start: 0){ion-refresher{left:0}:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}[dir=rtl] ion-refresher{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){ion-refresher:dir(rtl){left:unset;right:unset;right:0}}}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, #747577)}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}";
|
|
@@ -29496,15 +29677,9 @@ class RefresherContent {
|
|
|
29496
29677
|
}
|
|
29497
29678
|
componentWillLoad() {
|
|
29498
29679
|
if (this.pullingIcon === undefined) {
|
|
29499
|
-
/**
|
|
29500
|
-
* The native iOS refresher uses a spinner instead of
|
|
29501
|
-
* an icon, so we need to see if this device supports
|
|
29502
|
-
* the native iOS refresher.
|
|
29503
|
-
*/
|
|
29504
|
-
const hasRubberBandScrolling = supportsRubberBandScrolling();
|
|
29505
29680
|
const mode = getIonMode$1(this);
|
|
29506
|
-
const overflowRefresher =
|
|
29507
|
-
this.pullingIcon = config.get('refreshingIcon', mode === 'ios' &&
|
|
29681
|
+
const overflowRefresher = this.el.style.webkitOverflowScrolling !== undefined ? 'lines' : arrowDown;
|
|
29682
|
+
this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && isPlatform('mobile') ? config.get('spinner', overflowRefresher) : 'circular');
|
|
29508
29683
|
}
|
|
29509
29684
|
if (this.refreshingSpinner === undefined) {
|
|
29510
29685
|
const mode = getIonMode$1(this);
|
|
@@ -31297,6 +31472,8 @@ class Searchbar {
|
|
|
31297
31472
|
*
|
|
31298
31473
|
* Developers who wish to focus an input when an overlay is presented
|
|
31299
31474
|
* should call `setFocus` after `didPresent` has resolved.
|
|
31475
|
+
*
|
|
31476
|
+
* See [managing focus](/docs/developing/managing-focus) for more information.
|
|
31300
31477
|
*/
|
|
31301
31478
|
async setFocus() {
|
|
31302
31479
|
if (this.nativeInput) {
|
|
@@ -33778,6 +33955,8 @@ class Textarea {
|
|
|
33778
33955
|
/**
|
|
33779
33956
|
* Sets focus on the native `textarea` in `ion-textarea`. Use this method instead of the global
|
|
33780
33957
|
* `textarea.focus()`.
|
|
33958
|
+
*
|
|
33959
|
+
* See [managing focus](/docs/developing/managing-focus) for more information.
|
|
33781
33960
|
*/
|
|
33782
33961
|
async setFocus() {
|
|
33783
33962
|
if (this.nativeInput) {
|
|
@@ -35056,10 +35235,11 @@ registerComponents([
|
|
|
35056
35235
|
Nav,
|
|
35057
35236
|
NavLink,
|
|
35058
35237
|
Note,
|
|
35238
|
+
Picker$1,
|
|
35059
35239
|
Picker,
|
|
35240
|
+
PickerColumn,
|
|
35060
35241
|
PickerColumnCmp,
|
|
35061
|
-
|
|
35062
|
-
PickerInternal,
|
|
35242
|
+
PickerColumnOption,
|
|
35063
35243
|
Popover,
|
|
35064
35244
|
ProgressBar,
|
|
35065
35245
|
Radio,
|