@ionic/core 7.6.2-dev.11703182244.1165aeec → 7.6.2-dev.11704390532.1202188d
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/ion-content.js +1 -1
- package/components/ion-datetime.js +40 -64
- 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/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/components/radio-group.js +1 -9
- package/dist/cjs/{button-active-962fe442.js → button-active-5bf1cac0.js} +1 -1
- package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
- package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
- package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
- package/dist/cjs/ion-alert.cjs.entry.js +4 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +36 -56
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +2 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
- 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} +104 -87
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
- package/dist/cjs/ion-popover.cjs.entry.js +2 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +1 -9
- package/dist/cjs/ion-range.cjs.entry.js +1 -1
- package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +2 -1
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-e77cc023.js → overlays-7773cbe1.js} +11 -4
- package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
- package/dist/collection/collection-manifest.json +7 -6
- 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/datetime/datetime.ios.css +91 -38
- package/dist/collection/components/datetime/datetime.js +24 -36
- package/dist/collection/components/datetime/datetime.md.css +96 -38
- 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/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/radio-group/radio-group.js +1 -9
- 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/docs.json +478 -41
- package/dist/esm/{button-active-308d3edd.js → button-active-48379dd2.js} +1 -1
- package/dist/esm/{data-775093f5.js → data-6a31d701.js} +1 -1
- package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
- package/dist/esm/index.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +4 -4
- package/dist/esm/ion-alert.entry.js +4 -4
- package/dist/esm/ion-app_8.entry.js +2 -2
- package/dist/esm/ion-backdrop.entry.js +0 -12
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +35 -55
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +2 -1
- package/dist/esm/ion-menu_3.entry.js +3 -3
- package/dist/esm/ion-modal.entry.js +3 -3
- package/dist/esm/ion-nav_2.entry.js +1 -1
- 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} +104 -87
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
- package/dist/esm/ion-popover.entry.js +2 -1
- package/dist/esm/ion-radio_2.entry.js +1 -9
- package/dist/esm/ion-range.entry.js +1 -1
- package/dist/esm/ion-refresher_2.entry.js +3 -3
- package/dist/esm/ion-reorder_2.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +2 -1
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +1 -1
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-b33f6bca.js → overlays-94dac1cb.js} +11 -4
- package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
- package/dist/esm-es5/{button-active-308d3edd.js → button-active-48379dd2.js} +1 -1
- package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
- package/dist/esm-es5/index.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-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.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-item-option_3.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-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-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.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.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/overlays-94dac1cb.js +4 -0
- package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
- package/dist/html.html-data.json +152 -1
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-254ec7c0.system.entry.js → p-0dfa4ab4.system.entry.js} +2 -2
- package/dist/ionic/{p-96d4814f.system.entry.js → p-0e908476.system.entry.js} +1 -1
- package/dist/ionic/{p-11786dc7.entry.js → p-10339dcc.entry.js} +1 -1
- package/dist/ionic/{p-f6e9c227.system.js → p-11c55ac8.system.js} +1 -1
- package/dist/ionic/{p-f2bfd3d7.entry.js → p-13d4dfe7.entry.js} +1 -1
- package/dist/ionic/p-19d9ceb8.system.js +1 -1
- package/dist/ionic/{p-afa9f205.system.js → p-1ab2642a.system.js} +1 -1
- package/dist/ionic/{p-11a3973f.entry.js → p-1b14f0f8.entry.js} +1 -1
- package/dist/ionic/{p-0235067a.js → p-1b60cc53.js} +1 -1
- package/dist/ionic/{p-c5acfeb1.entry.js → p-20755eb0.entry.js} +1 -1
- package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
- package/dist/ionic/{p-6b0ce9b4.system.entry.js → p-25312768.system.entry.js} +1 -1
- package/dist/ionic/p-26ff1180.entry.js +4 -0
- package/dist/ionic/p-2f449cdf.system.entry.js +4 -0
- package/dist/ionic/p-3717e641.system.entry.js +4 -0
- package/dist/ionic/{p-745e3339.system.entry.js → p-3af5faf8.system.entry.js} +1 -1
- package/dist/ionic/{p-dc71e4ef.system.entry.js → p-3b434dee.system.entry.js} +1 -1
- package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
- package/dist/ionic/{p-a42ef163.system.entry.js → p-4793c14c.system.entry.js} +1 -1
- package/dist/ionic/p-51abefb7.system.js +4 -0
- package/dist/ionic/{p-10ec9af7.system.entry.js → p-5ff211d0.system.entry.js} +1 -1
- package/dist/ionic/{p-1b27ac67.entry.js → p-642ac927.entry.js} +1 -1
- package/dist/ionic/{p-a821750c.system.entry.js → p-6e4c7340.system.entry.js} +1 -1
- package/dist/ionic/p-71483cbb.entry.js +4 -0
- package/dist/ionic/p-75a3e35b.entry.js +4 -0
- package/dist/ionic/p-77d78f68.system.entry.js +4 -0
- package/dist/ionic/{p-06abe918.system.entry.js → p-7be412e8.system.entry.js} +1 -1
- package/dist/ionic/p-7c0d778d.system.js +4 -0
- package/dist/ionic/{p-c1701827.entry.js → p-80c6c078.entry.js} +1 -1
- package/dist/ionic/p-8ad6d643.entry.js +4 -0
- package/dist/ionic/{p-648ad047.system.entry.js → p-8ce4e506.system.entry.js} +1 -1
- package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
- package/dist/ionic/p-9164a09d.entry.js +4 -0
- package/dist/ionic/{p-b964aba3.entry.js → p-92bfb607.entry.js} +1 -1
- package/dist/ionic/{p-f894e0ad.entry.js → p-92d35b6a.entry.js} +1 -1
- package/dist/ionic/{p-9fda6824.system.entry.js → p-964dcdb2.system.entry.js} +1 -1
- package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
- package/dist/ionic/p-a1bd098f.system.entry.js +4 -0
- package/dist/ionic/p-a41eaff2.system.entry.js +4 -0
- package/dist/ionic/p-a60a1ce5.js +4 -0
- package/dist/ionic/{p-2a583966.entry.js → p-b2b5d761.entry.js} +1 -1
- package/dist/ionic/{p-767f1a92.entry.js → p-ba5d9e27.entry.js} +1 -1
- package/dist/ionic/{p-3e8d5e53.entry.js → p-bb3fd397.entry.js} +1 -1
- package/dist/ionic/{p-a3ca2e64.entry.js → p-bec6ae40.entry.js} +1 -1
- package/dist/ionic/{p-2df97906.system.entry.js → p-beed2450.system.entry.js} +1 -1
- package/dist/ionic/p-c001b24f.entry.js +4 -0
- package/dist/ionic/{p-2894d5f6.entry.js → p-c01803db.entry.js} +1 -1
- package/dist/ionic/p-c19bf524.entry.js +4 -0
- package/dist/ionic/p-c6176849.system.entry.js +4 -0
- package/dist/ionic/p-cf350317.entry.js +4 -0
- package/dist/ionic/{p-bdf71399.entry.js → p-cf53213c.entry.js} +1 -1
- package/dist/ionic/{p-28740823.system.entry.js → p-d2634efe.system.entry.js} +1 -1
- package/dist/ionic/{p-ddd48faf.system.entry.js → p-db05ecb6.system.entry.js} +1 -1
- package/dist/ionic/p-dc63dccb.system.entry.js +4 -0
- package/dist/ionic/{p-22827063.system.entry.js → p-e2737fef.system.entry.js} +1 -1
- package/dist/ionic/{p-aee39e06.entry.js → p-ed8402d6.entry.js} +1 -1
- package/dist/ionic/p-f0717d98.js +4 -0
- package/dist/ionic/p-f0dea903.system.entry.js +4 -0
- package/dist/ionic/p-f60807dd.system.entry.js +4 -0
- package/dist/ionic/p-f8c5008f.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/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.d.ts +154 -122
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
- package/dist/types/utils/overlays.d.ts +5 -2
- package/hydrate/index.js +1497 -1404
- package/package.json +1 -1
- 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/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/ion-picker-column-internal.entry.js +0 -4
- package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
- package/dist/esm-es5/overlays-b33f6bca.js +0 -4
- package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
- package/dist/ionic/p-12a62500.entry.js +0 -4
- package/dist/ionic/p-1c249831.entry.js +0 -4
- package/dist/ionic/p-35ce400e.system.js +0 -4
- package/dist/ionic/p-3671f1b9.system.js +0 -4
- package/dist/ionic/p-47bb15a1.entry.js +0 -4
- package/dist/ionic/p-4d145435.entry.js +0 -4
- package/dist/ionic/p-507ddbfe.system.entry.js +0 -4
- package/dist/ionic/p-6a6477b2.js +0 -4
- package/dist/ionic/p-6ab03751.js +0 -4
- package/dist/ionic/p-6c277fa2.system.entry.js +0 -4
- package/dist/ionic/p-6fba0ce1.system.entry.js +0 -4
- package/dist/ionic/p-7dc892f8.entry.js +0 -4
- package/dist/ionic/p-85f48531.entry.js +0 -4
- package/dist/ionic/p-8f301ac5.system.entry.js +0 -4
- package/dist/ionic/p-932f2259.system.entry.js +0 -4
- package/dist/ionic/p-b1f29949.system.entry.js +0 -4
- package/dist/ionic/p-b7a2ffc9.system.entry.js +0 -4
- package/dist/ionic/p-cd1b920b.entry.js +0 -4
- package/dist/ionic/p-da5e2652.entry.js +0 -4
- package/dist/ionic/p-ec652bc0.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-775093f5.js → data-6a31d701.js} +0 -0
- /package/dist/ionic/{p-87bb3735.system.js → p-7ff4359e.system.js} +0 -0
- /package/dist/ionic/{p-18cae04f.js → p-a64accf5.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
|
@@ -8334,7 +8334,7 @@ const focusLastDescendant = (ref, overlay) => {
|
|
|
8334
8334
|
* Should NOT include: Toast
|
|
8335
8335
|
*/
|
|
8336
8336
|
const trapKeyboardFocus = (ev, doc) => {
|
|
8337
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
|
|
8337
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
|
|
8338
8338
|
const target = ev.target;
|
|
8339
8339
|
/**
|
|
8340
8340
|
* If no active overlay, ignore this event.
|
|
@@ -8519,7 +8519,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
8519
8519
|
*/
|
|
8520
8520
|
const getOverlays = (doc, selector) => {
|
|
8521
8521
|
if (selector === undefined) {
|
|
8522
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
|
|
8522
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
|
|
8523
8523
|
}
|
|
8524
8524
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
8525
8525
|
};
|
|
@@ -8585,6 +8585,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
8585
8585
|
return;
|
|
8586
8586
|
}
|
|
8587
8587
|
setRootAriaHidden(true);
|
|
8588
|
+
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
8588
8589
|
overlay.presented = true;
|
|
8589
8590
|
overlay.willPresent.emit();
|
|
8590
8591
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -8647,12 +8648,14 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
8647
8648
|
if (!overlay.presented) {
|
|
8648
8649
|
return false;
|
|
8649
8650
|
}
|
|
8651
|
+
const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
|
|
8650
8652
|
/**
|
|
8651
8653
|
* If this is the last visible overlay then
|
|
8652
8654
|
* we want to re-add the root to the accessibility tree.
|
|
8653
8655
|
*/
|
|
8654
|
-
if (
|
|
8656
|
+
if (lastOverlay) {
|
|
8655
8657
|
setRootAriaHidden(false);
|
|
8658
|
+
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
8656
8659
|
}
|
|
8657
8660
|
overlay.presented = false;
|
|
8658
8661
|
try {
|
|
@@ -11170,21 +11173,10 @@ class Backdrop {
|
|
|
11170
11173
|
constructor(hostRef) {
|
|
11171
11174
|
registerInstance(this, hostRef);
|
|
11172
11175
|
this.ionBackdropTap = createEvent(this, "ionBackdropTap", 7);
|
|
11173
|
-
this.blocker = GESTURE_CONTROLLER.createBlocker({
|
|
11174
|
-
disableScroll: true,
|
|
11175
|
-
});
|
|
11176
11176
|
this.visible = true;
|
|
11177
11177
|
this.tappable = true;
|
|
11178
11178
|
this.stopPropagation = true;
|
|
11179
11179
|
}
|
|
11180
|
-
connectedCallback() {
|
|
11181
|
-
if (this.stopPropagation) {
|
|
11182
|
-
this.blocker.block();
|
|
11183
|
-
}
|
|
11184
|
-
}
|
|
11185
|
-
disconnectedCallback() {
|
|
11186
|
-
this.blocker.unblock();
|
|
11187
|
-
}
|
|
11188
11180
|
onMouseDown(ev) {
|
|
11189
11181
|
this.emitTap(ev);
|
|
11190
11182
|
}
|
|
@@ -11513,9 +11505,9 @@ class Breadcrumbs {
|
|
|
11513
11505
|
}; }
|
|
11514
11506
|
}
|
|
11515
11507
|
|
|
11516
|
-
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)}";
|
|
11508
|
+
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)}";
|
|
11517
11509
|
|
|
11518
|
-
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)}}";
|
|
11510
|
+
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)}}";
|
|
11519
11511
|
|
|
11520
11512
|
/**
|
|
11521
11513
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -12675,7 +12667,7 @@ const isRTL$1 = (hostEl) => {
|
|
|
12675
12667
|
return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
|
|
12676
12668
|
};
|
|
12677
12669
|
|
|
12678
|
-
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)}
|
|
12670
|
+
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)}";
|
|
12679
12671
|
|
|
12680
12672
|
/**
|
|
12681
12673
|
* @slot - Content is placed in the scrollable area if provided without a slot.
|
|
@@ -14597,7 +14589,7 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
|
|
|
14597
14589
|
* @param minParts The minimum bound on the date that can be returned
|
|
14598
14590
|
* @param maxParts The maximum bound on the date that can be returned
|
|
14599
14591
|
* @param dayValues The allowed date values
|
|
14600
|
-
* @returns Date data to be used in ion-picker-column
|
|
14592
|
+
* @returns Date data to be used in ion-picker-column
|
|
14601
14593
|
*/
|
|
14602
14594
|
const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
14603
14595
|
day: 'numeric',
|
|
@@ -14944,9 +14936,9 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
|
|
|
14944
14936
|
return undefined;
|
|
14945
14937
|
};
|
|
14946
14938
|
|
|
14947
|
-
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;width:auto}/*!@: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%}";
|
|
14939
|
+
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%}";
|
|
14948
14940
|
|
|
14949
|
-
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;width:auto}/*!@: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}";
|
|
14941
|
+
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}";
|
|
14950
14942
|
|
|
14951
14943
|
/**
|
|
14952
14944
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -15936,7 +15928,7 @@ class Datetime {
|
|
|
15936
15928
|
const renderArray = forcePresentation === 'time-date'
|
|
15937
15929
|
? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
|
|
15938
15930
|
: [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
|
|
15939
|
-
return hAsync("ion-picker
|
|
15931
|
+
return hAsync("ion-picker", null, renderArray);
|
|
15940
15932
|
}
|
|
15941
15933
|
renderDatePickerColumns(forcePresentation) {
|
|
15942
15934
|
return forcePresentation === 'date-time' || forcePresentation === 'time-date'
|
|
@@ -15995,7 +15987,7 @@ class Datetime {
|
|
|
15995
15987
|
const todayString = workingParts.day !== null
|
|
15996
15988
|
? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
|
|
15997
15989
|
: `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
|
|
15998
|
-
return (hAsync("ion-picker-column
|
|
15990
|
+
return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
|
|
15999
15991
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
16000
15992
|
// Due to a Safari 14 issue we need to destroy
|
|
16001
15993
|
// the scroll listener before we update state
|
|
@@ -16011,7 +16003,7 @@ class Datetime {
|
|
|
16011
16003
|
// the working parts have been updated.
|
|
16012
16004
|
this.initializeCalendarListener();
|
|
16013
16005
|
ev.stopPropagation();
|
|
16014
|
-
} }));
|
|
16006
|
+
} }, 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)))));
|
|
16015
16007
|
}
|
|
16016
16008
|
renderIndividualDatePickerColumns(forcePresentation) {
|
|
16017
16009
|
const { workingParts, isDateEnabled } = this;
|
|
@@ -16079,7 +16071,8 @@ class Datetime {
|
|
|
16079
16071
|
}
|
|
16080
16072
|
const { disabled, workingParts } = this;
|
|
16081
16073
|
const activePart = this.getActivePartsWithFallback();
|
|
16082
|
-
|
|
16074
|
+
const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
|
|
16075
|
+
return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
|
|
16083
16076
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
16084
16077
|
// Due to a Safari 14 issue we need to destroy
|
|
16085
16078
|
// the scroll listener before we update state
|
|
@@ -16093,7 +16086,7 @@ class Datetime {
|
|
|
16093
16086
|
// the working parts have been updated.
|
|
16094
16087
|
this.initializeCalendarListener();
|
|
16095
16088
|
ev.stopPropagation();
|
|
16096
|
-
} }));
|
|
16089
|
+
} }, 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)))));
|
|
16097
16090
|
}
|
|
16098
16091
|
renderMonthPickerColumn(months) {
|
|
16099
16092
|
if (months.length === 0) {
|
|
@@ -16101,7 +16094,7 @@ class Datetime {
|
|
|
16101
16094
|
}
|
|
16102
16095
|
const { disabled, workingParts } = this;
|
|
16103
16096
|
const activePart = this.getActivePartsWithFallback();
|
|
16104
|
-
return (hAsync("ion-picker-column
|
|
16097
|
+
return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
|
|
16105
16098
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
16106
16099
|
// Due to a Safari 14 issue we need to destroy
|
|
16107
16100
|
// the scroll listener before we update state
|
|
@@ -16115,7 +16108,7 @@ class Datetime {
|
|
|
16115
16108
|
// the working parts have been updated.
|
|
16116
16109
|
this.initializeCalendarListener();
|
|
16117
16110
|
ev.stopPropagation();
|
|
16118
|
-
} }));
|
|
16111
|
+
} }, 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)))));
|
|
16119
16112
|
}
|
|
16120
16113
|
renderYearPickerColumn(years) {
|
|
16121
16114
|
if (years.length === 0) {
|
|
@@ -16123,7 +16116,7 @@ class Datetime {
|
|
|
16123
16116
|
}
|
|
16124
16117
|
const { disabled, workingParts } = this;
|
|
16125
16118
|
const activePart = this.getActivePartsWithFallback();
|
|
16126
|
-
return (hAsync("ion-picker-column
|
|
16119
|
+
return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
|
|
16127
16120
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
16128
16121
|
// Due to a Safari 14 issue we need to destroy
|
|
16129
16122
|
// the scroll listener before we update state
|
|
@@ -16137,7 +16130,7 @@ class Datetime {
|
|
|
16137
16130
|
// the working parts have been updated.
|
|
16138
16131
|
this.initializeCalendarListener();
|
|
16139
16132
|
ev.stopPropagation();
|
|
16140
|
-
} }));
|
|
16133
|
+
} }, 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)))));
|
|
16141
16134
|
}
|
|
16142
16135
|
renderTimePickerColumns(forcePresentation) {
|
|
16143
16136
|
if (['date', 'month', 'month-year', 'year'].includes(forcePresentation)) {
|
|
@@ -16166,22 +16159,22 @@ class Datetime {
|
|
|
16166
16159
|
if (hoursData.length === 0)
|
|
16167
16160
|
return [];
|
|
16168
16161
|
const activePart = this.getActivePartsWithFallback();
|
|
16169
|
-
return (hAsync("ion-picker-column
|
|
16162
|
+
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
|
|
16170
16163
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
|
|
16171
16164
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
|
|
16172
16165
|
ev.stopPropagation();
|
|
16173
|
-
} }));
|
|
16166
|
+
} }, 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)))));
|
|
16174
16167
|
}
|
|
16175
16168
|
renderMinutePickerColumn(minutesData) {
|
|
16176
16169
|
const { disabled, workingParts } = this;
|
|
16177
16170
|
if (minutesData.length === 0)
|
|
16178
16171
|
return [];
|
|
16179
16172
|
const activePart = this.getActivePartsWithFallback();
|
|
16180
|
-
return (hAsync("ion-picker-column
|
|
16173
|
+
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
|
|
16181
16174
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
|
|
16182
16175
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
|
|
16183
16176
|
ev.stopPropagation();
|
|
16184
|
-
} }));
|
|
16177
|
+
} }, 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)))));
|
|
16185
16178
|
}
|
|
16186
16179
|
renderDayPeriodPickerColumn(dayPeriodData) {
|
|
16187
16180
|
const { disabled, workingParts } = this;
|
|
@@ -16190,12 +16183,12 @@ class Datetime {
|
|
|
16190
16183
|
}
|
|
16191
16184
|
const activePart = this.getActivePartsWithFallback();
|
|
16192
16185
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
16193
|
-
return (hAsync("ion-picker-column
|
|
16186
|
+
return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
|
|
16194
16187
|
const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
|
|
16195
16188
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
|
|
16196
16189
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
|
|
16197
16190
|
ev.stopPropagation();
|
|
16198
|
-
} }));
|
|
16191
|
+
} }, 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)))));
|
|
16199
16192
|
}
|
|
16200
16193
|
renderWheelView(forcePresentation) {
|
|
16201
16194
|
const { locale } = this;
|
|
@@ -16216,26 +16209,11 @@ class Datetime {
|
|
|
16216
16209
|
const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
|
|
16217
16210
|
// don't use the inheritAttributes util because it removes dir from the host, and we still need that
|
|
16218
16211
|
const hostDir = this.el.getAttribute('dir') || undefined;
|
|
16219
|
-
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("
|
|
16220
|
-
|
|
16221
|
-
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
*
|
|
16225
|
-
* Currently there is not a way to set the aria-label on the inner button
|
|
16226
|
-
* on the `ion-item` and have it be reactive to changes. This is a workaround
|
|
16227
|
-
* until we either refactor `ion-item` to a button or Stencil adds a way to
|
|
16228
|
-
* have reactive props for built-in properties, such as `aria-label`.
|
|
16229
|
-
*/
|
|
16230
|
-
const { monthYearToggleItemRef } = this;
|
|
16231
|
-
if (monthYearToggleItemRef) {
|
|
16232
|
-
const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
|
|
16233
|
-
if (btn) {
|
|
16234
|
-
const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
|
|
16235
|
-
btn.setAttribute('aria-label', monthYearAriaLabel);
|
|
16236
|
-
}
|
|
16237
|
-
}
|
|
16238
|
-
} }, 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) => {
|
|
16212
|
+
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("button", { class: {
|
|
16213
|
+
'calendar-month-year-toggle': true,
|
|
16214
|
+
'ion-activatable': true,
|
|
16215
|
+
'ion-focusable': true,
|
|
16216
|
+
}, 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) => {
|
|
16239
16217
|
return hAsync("div", { class: "day-of-week" }, d);
|
|
16240
16218
|
}))));
|
|
16241
16219
|
}
|
|
@@ -16396,7 +16374,7 @@ class Datetime {
|
|
|
16396
16374
|
* This will correctly scroll the element position to the correct time value,
|
|
16397
16375
|
* before the popover is fully presented.
|
|
16398
16376
|
*/
|
|
16399
|
-
const cols = ev.target.querySelectorAll('ion-picker-column
|
|
16377
|
+
const cols = ev.target.querySelectorAll('ion-picker-column');
|
|
16400
16378
|
// TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
|
|
16401
16379
|
cols.forEach((col) => col.scrollActiveItemIntoView());
|
|
16402
16380
|
}, style: {
|
|
@@ -16590,6 +16568,8 @@ class Datetime {
|
|
|
16590
16568
|
}; }
|
|
16591
16569
|
}
|
|
16592
16570
|
let datetimeIds = 0;
|
|
16571
|
+
const WHEEL_ITEM_PART = 'wheel-item';
|
|
16572
|
+
const WHEEL_ITEM_ACTIVE_PART = `active`;
|
|
16593
16573
|
|
|
16594
16574
|
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}";
|
|
16595
16575
|
|
|
@@ -24687,1516 +24667,1636 @@ class Note {
|
|
|
24687
24667
|
}; }
|
|
24688
24668
|
}
|
|
24689
24669
|
|
|
24690
|
-
|
|
24691
|
-
* iOS Picker Enter Animation
|
|
24692
|
-
*/
|
|
24693
|
-
const iosEnterAnimation$2 = (baseEl) => {
|
|
24694
|
-
const baseAnimation = createAnimation();
|
|
24695
|
-
const backdropAnimation = createAnimation();
|
|
24696
|
-
const wrapperAnimation = createAnimation();
|
|
24697
|
-
backdropAnimation
|
|
24698
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24699
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
24700
|
-
.beforeStyles({
|
|
24701
|
-
'pointer-events': 'none',
|
|
24702
|
-
})
|
|
24703
|
-
.afterClearStyles(['pointer-events']);
|
|
24704
|
-
wrapperAnimation
|
|
24705
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24706
|
-
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
24707
|
-
return baseAnimation
|
|
24708
|
-
.addElement(baseEl)
|
|
24709
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24710
|
-
.duration(400)
|
|
24711
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24712
|
-
};
|
|
24713
|
-
|
|
24714
|
-
/**
|
|
24715
|
-
* iOS Picker Leave Animation
|
|
24716
|
-
*/
|
|
24717
|
-
const iosLeaveAnimation$2 = (baseEl) => {
|
|
24718
|
-
const baseAnimation = createAnimation();
|
|
24719
|
-
const backdropAnimation = createAnimation();
|
|
24720
|
-
const wrapperAnimation = createAnimation();
|
|
24721
|
-
backdropAnimation
|
|
24722
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24723
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
24724
|
-
wrapperAnimation
|
|
24725
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24726
|
-
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
24727
|
-
return baseAnimation
|
|
24728
|
-
.addElement(baseEl)
|
|
24729
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24730
|
-
.duration(400)
|
|
24731
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24732
|
-
};
|
|
24733
|
-
|
|
24734
|
-
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}}}";
|
|
24670
|
+
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))}";
|
|
24735
24671
|
|
|
24736
|
-
const pickerMdCss = "
|
|
24672
|
+
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%)}";
|
|
24737
24673
|
|
|
24738
|
-
// TODO(FW-2832): types
|
|
24739
24674
|
/**
|
|
24740
24675
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
24741
24676
|
*/
|
|
24742
|
-
class Picker {
|
|
24677
|
+
class Picker$1 {
|
|
24743
24678
|
constructor(hostRef) {
|
|
24744
24679
|
registerInstance(this, hostRef);
|
|
24745
|
-
this.
|
|
24746
|
-
this.
|
|
24747
|
-
this.
|
|
24748
|
-
|
|
24749
|
-
|
|
24750
|
-
|
|
24751
|
-
|
|
24752
|
-
|
|
24753
|
-
|
|
24754
|
-
|
|
24755
|
-
|
|
24756
|
-
|
|
24757
|
-
|
|
24680
|
+
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
24681
|
+
this.useInputMode = false;
|
|
24682
|
+
this.isInHighlightBounds = (ev) => {
|
|
24683
|
+
const { highlightEl } = this;
|
|
24684
|
+
if (!highlightEl) {
|
|
24685
|
+
return false;
|
|
24686
|
+
}
|
|
24687
|
+
const bbox = highlightEl.getBoundingClientRect();
|
|
24688
|
+
/**
|
|
24689
|
+
* Check to see if the user clicked
|
|
24690
|
+
* outside the bounds of the highlight.
|
|
24691
|
+
*/
|
|
24692
|
+
const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
|
|
24693
|
+
const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
|
|
24694
|
+
if (outsideX || outsideY) {
|
|
24695
|
+
return false;
|
|
24696
|
+
}
|
|
24697
|
+
return true;
|
|
24758
24698
|
};
|
|
24759
|
-
|
|
24760
|
-
|
|
24761
|
-
|
|
24762
|
-
|
|
24763
|
-
|
|
24699
|
+
/**
|
|
24700
|
+
* If we are no longer focused
|
|
24701
|
+
* on a picker column, then we should
|
|
24702
|
+
* exit input mode. An exception is made
|
|
24703
|
+
* for the input in the picker since having
|
|
24704
|
+
* that focused means we are still in input mode.
|
|
24705
|
+
*/
|
|
24706
|
+
this.onFocusOut = (ev) => {
|
|
24707
|
+
// TODO(FW-2832): type
|
|
24708
|
+
const { relatedTarget } = ev;
|
|
24709
|
+
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
|
|
24710
|
+
this.exitInputMode();
|
|
24764
24711
|
}
|
|
24765
24712
|
};
|
|
24766
|
-
this.presented = false;
|
|
24767
|
-
this.overlayIndex = undefined;
|
|
24768
|
-
this.delegate = undefined;
|
|
24769
|
-
this.hasController = false;
|
|
24770
|
-
this.keyboardClose = true;
|
|
24771
|
-
this.enterAnimation = undefined;
|
|
24772
|
-
this.leaveAnimation = undefined;
|
|
24773
|
-
this.buttons = [];
|
|
24774
|
-
this.columns = [];
|
|
24775
|
-
this.cssClass = undefined;
|
|
24776
|
-
this.duration = 0;
|
|
24777
|
-
this.showBackdrop = true;
|
|
24778
|
-
this.backdropDismiss = true;
|
|
24779
|
-
this.animated = true;
|
|
24780
|
-
this.htmlAttributes = undefined;
|
|
24781
|
-
this.isOpen = false;
|
|
24782
|
-
this.trigger = undefined;
|
|
24783
|
-
}
|
|
24784
|
-
onIsOpenChange(newValue, oldValue) {
|
|
24785
|
-
if (newValue === true && oldValue === false) {
|
|
24786
|
-
this.present();
|
|
24787
|
-
}
|
|
24788
|
-
else if (newValue === false && oldValue === true) {
|
|
24789
|
-
this.dismiss();
|
|
24790
|
-
}
|
|
24791
|
-
}
|
|
24792
|
-
triggerChanged() {
|
|
24793
|
-
const { trigger, el, triggerController } = this;
|
|
24794
|
-
if (trigger) {
|
|
24795
|
-
triggerController.addClickListener(el, trigger);
|
|
24796
|
-
}
|
|
24797
|
-
}
|
|
24798
|
-
connectedCallback() {
|
|
24799
|
-
prepareOverlay(this.el);
|
|
24800
|
-
this.triggerChanged();
|
|
24801
|
-
}
|
|
24802
|
-
disconnectedCallback() {
|
|
24803
|
-
this.triggerController.removeClickListener();
|
|
24804
|
-
}
|
|
24805
|
-
componentWillLoad() {
|
|
24806
|
-
setOverlayId(this.el);
|
|
24807
|
-
}
|
|
24808
|
-
componentDidLoad() {
|
|
24809
24713
|
/**
|
|
24810
|
-
*
|
|
24811
|
-
*
|
|
24714
|
+
* When picker columns receive focus
|
|
24715
|
+
* the parent picker needs to determine
|
|
24716
|
+
* whether to enter/exit input mode.
|
|
24812
24717
|
*/
|
|
24813
|
-
|
|
24814
|
-
|
|
24815
|
-
|
|
24718
|
+
this.onFocusIn = (ev) => {
|
|
24719
|
+
// TODO(FW-2832): type
|
|
24720
|
+
const { target } = ev;
|
|
24721
|
+
/**
|
|
24722
|
+
* Due to browser differences in how/when focus
|
|
24723
|
+
* is dispatched on certain elements, we need to
|
|
24724
|
+
* make sure that this function only ever runs when
|
|
24725
|
+
* focusing a picker column.
|
|
24726
|
+
*/
|
|
24727
|
+
if (target.tagName !== 'ION-PICKER-COLUMN') {
|
|
24728
|
+
return;
|
|
24729
|
+
}
|
|
24730
|
+
/**
|
|
24731
|
+
* If we have actionOnClick
|
|
24732
|
+
* then this means the user focused
|
|
24733
|
+
* a picker column via mouse or
|
|
24734
|
+
* touch (i.e. a PointerEvent). As a result,
|
|
24735
|
+
* we should not enter/exit input mode
|
|
24736
|
+
* until the click event has fired, which happens
|
|
24737
|
+
* after the `focusin` event.
|
|
24738
|
+
*
|
|
24739
|
+
* Otherwise, the user likely focused
|
|
24740
|
+
* the column using their keyboard and
|
|
24741
|
+
* we should enter/exit input mode automatically.
|
|
24742
|
+
*/
|
|
24743
|
+
if (!this.actionOnClick) {
|
|
24744
|
+
const columnEl = target;
|
|
24745
|
+
const allowInput = columnEl.numericInput;
|
|
24746
|
+
if (allowInput) {
|
|
24747
|
+
this.enterInputMode(columnEl, false);
|
|
24748
|
+
}
|
|
24749
|
+
else {
|
|
24750
|
+
this.exitInputMode();
|
|
24751
|
+
}
|
|
24752
|
+
}
|
|
24753
|
+
};
|
|
24816
24754
|
/**
|
|
24817
|
-
*
|
|
24818
|
-
*
|
|
24819
|
-
*
|
|
24820
|
-
* As a result, the watcher callback may not be fired.
|
|
24821
|
-
* We work around this by manually calling the watcher
|
|
24822
|
-
* callback when the component has loaded and the watcher
|
|
24823
|
-
* is configured.
|
|
24755
|
+
* On click we need to run an actionOnClick
|
|
24756
|
+
* function that has been set in onPointerDown
|
|
24757
|
+
* so that we enter/exit input mode correctly.
|
|
24824
24758
|
*/
|
|
24825
|
-
this.
|
|
24826
|
-
|
|
24827
|
-
|
|
24828
|
-
|
|
24829
|
-
|
|
24830
|
-
async present() {
|
|
24831
|
-
const unlock = await this.lockController.lock();
|
|
24832
|
-
await this.delegateController.attachViewToDom();
|
|
24833
|
-
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
24834
|
-
if (this.duration > 0) {
|
|
24835
|
-
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
24836
|
-
}
|
|
24837
|
-
unlock();
|
|
24838
|
-
}
|
|
24839
|
-
/**
|
|
24840
|
-
* Dismiss the picker overlay after it has been presented.
|
|
24841
|
-
*
|
|
24842
|
-
* @param data Any data to emit in the dismiss events.
|
|
24843
|
-
* @param role The role of the element that is dismissing the picker.
|
|
24844
|
-
* This can be useful in a button handler for determining which button was
|
|
24845
|
-
* clicked to dismiss the picker.
|
|
24846
|
-
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
24847
|
-
*/
|
|
24848
|
-
async dismiss(data, role) {
|
|
24849
|
-
const unlock = await this.lockController.lock();
|
|
24850
|
-
if (this.durationTimeout) {
|
|
24851
|
-
clearTimeout(this.durationTimeout);
|
|
24852
|
-
}
|
|
24853
|
-
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
24854
|
-
if (dismissed) {
|
|
24855
|
-
this.delegateController.removeViewFromDom();
|
|
24856
|
-
}
|
|
24857
|
-
unlock();
|
|
24858
|
-
return dismissed;
|
|
24859
|
-
}
|
|
24860
|
-
/**
|
|
24861
|
-
* Returns a promise that resolves when the picker did dismiss.
|
|
24862
|
-
*/
|
|
24863
|
-
onDidDismiss() {
|
|
24864
|
-
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
24865
|
-
}
|
|
24866
|
-
/**
|
|
24867
|
-
* Returns a promise that resolves when the picker will dismiss.
|
|
24868
|
-
*/
|
|
24869
|
-
onWillDismiss() {
|
|
24870
|
-
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
24871
|
-
}
|
|
24872
|
-
/**
|
|
24873
|
-
* Get the column that matches the specified name.
|
|
24874
|
-
*
|
|
24875
|
-
* @param name The name of the column.
|
|
24876
|
-
*/
|
|
24877
|
-
getColumn(name) {
|
|
24878
|
-
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
24879
|
-
}
|
|
24880
|
-
async buttonClick(button) {
|
|
24881
|
-
const role = button.role;
|
|
24882
|
-
if (isCancel(role)) {
|
|
24883
|
-
return this.dismiss(undefined, role);
|
|
24884
|
-
}
|
|
24885
|
-
const shouldDismiss = await this.callButtonHandler(button);
|
|
24886
|
-
if (shouldDismiss) {
|
|
24887
|
-
return this.dismiss(this.getSelected(), button.role);
|
|
24888
|
-
}
|
|
24889
|
-
return Promise.resolve();
|
|
24890
|
-
}
|
|
24891
|
-
async callButtonHandler(button) {
|
|
24892
|
-
if (button) {
|
|
24893
|
-
// a handler has been provided, execute it
|
|
24894
|
-
// pass the handler the values from the inputs
|
|
24895
|
-
const rtn = await safeCall(button.handler, this.getSelected());
|
|
24896
|
-
if (rtn === false) {
|
|
24897
|
-
// if the return value of the handler is false then do not dismiss
|
|
24898
|
-
return false;
|
|
24759
|
+
this.onClick = () => {
|
|
24760
|
+
const { actionOnClick } = this;
|
|
24761
|
+
if (actionOnClick) {
|
|
24762
|
+
actionOnClick();
|
|
24763
|
+
this.actionOnClick = undefined;
|
|
24899
24764
|
}
|
|
24900
|
-
}
|
|
24901
|
-
|
|
24902
|
-
|
|
24903
|
-
|
|
24904
|
-
|
|
24905
|
-
|
|
24906
|
-
|
|
24907
|
-
|
|
24908
|
-
|
|
24909
|
-
|
|
24910
|
-
|
|
24911
|
-
};
|
|
24912
|
-
|
|
24913
|
-
|
|
24914
|
-
|
|
24915
|
-
|
|
24916
|
-
|
|
24917
|
-
|
|
24918
|
-
|
|
24919
|
-
|
|
24920
|
-
|
|
24921
|
-
|
|
24922
|
-
|
|
24923
|
-
|
|
24924
|
-
|
|
24925
|
-
|
|
24926
|
-
|
|
24927
|
-
|
|
24928
|
-
|
|
24929
|
-
|
|
24930
|
-
|
|
24931
|
-
|
|
24932
|
-
|
|
24933
|
-
|
|
24934
|
-
|
|
24935
|
-
|
|
24936
|
-
|
|
24937
|
-
|
|
24938
|
-
|
|
24939
|
-
|
|
24940
|
-
|
|
24941
|
-
|
|
24942
|
-
|
|
24943
|
-
|
|
24944
|
-
|
|
24945
|
-
|
|
24946
|
-
|
|
24947
|
-
|
|
24948
|
-
|
|
24949
|
-
|
|
24950
|
-
|
|
24951
|
-
|
|
24952
|
-
|
|
24953
|
-
|
|
24954
|
-
|
|
24955
|
-
|
|
24956
|
-
|
|
24957
|
-
"onWillDismiss": [64],
|
|
24958
|
-
"getColumn": [64]
|
|
24959
|
-
},
|
|
24960
|
-
"$listeners$": undefined,
|
|
24961
|
-
"$lazyBundleId$": "-",
|
|
24962
|
-
"$attrsToReflect$": []
|
|
24963
|
-
}; }
|
|
24964
|
-
}
|
|
24965
|
-
const buttonWrapperClass = (button) => {
|
|
24966
|
-
return {
|
|
24967
|
-
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
24968
|
-
'picker-toolbar-button': true,
|
|
24969
|
-
};
|
|
24970
|
-
};
|
|
24971
|
-
const buttonClass$1 = (button) => {
|
|
24972
|
-
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
24973
|
-
};
|
|
24974
|
-
|
|
24975
|
-
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}}";
|
|
24976
|
-
|
|
24977
|
-
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)}";
|
|
24978
|
-
|
|
24979
|
-
/**
|
|
24980
|
-
* @internal
|
|
24981
|
-
*/
|
|
24982
|
-
class PickerColumnCmp {
|
|
24983
|
-
constructor(hostRef) {
|
|
24984
|
-
registerInstance(this, hostRef);
|
|
24985
|
-
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
24986
|
-
this.optHeight = 0;
|
|
24987
|
-
this.rotateFactor = 0;
|
|
24988
|
-
this.scaleFactor = 1;
|
|
24989
|
-
this.velocity = 0;
|
|
24990
|
-
this.y = 0;
|
|
24991
|
-
this.noAnimate = true;
|
|
24992
|
-
// `colDidChange` is a flag that gets set when the column is changed
|
|
24993
|
-
// dynamically. When this flag is set, the column will refresh
|
|
24994
|
-
// after the component re-renders to incorporate the new column data.
|
|
24995
|
-
// This is necessary because `this.refresh` queries for the option elements,
|
|
24996
|
-
// so it needs to wait for the latest elements to be available in the DOM.
|
|
24997
|
-
// Ex: column is created with 3 options. User updates the column data
|
|
24998
|
-
// to have 5 options. The column will still think it only has 3 options.
|
|
24999
|
-
this.colDidChange = false;
|
|
25000
|
-
this.col = undefined;
|
|
25001
|
-
}
|
|
25002
|
-
colChanged() {
|
|
25003
|
-
this.colDidChange = true;
|
|
25004
|
-
}
|
|
25005
|
-
async connectedCallback() {
|
|
25006
|
-
let pickerRotateFactor = 0;
|
|
25007
|
-
let pickerScaleFactor = 0.81;
|
|
25008
|
-
const mode = getIonMode$1(this);
|
|
25009
|
-
if (mode === 'ios') {
|
|
25010
|
-
pickerRotateFactor = -0.46;
|
|
25011
|
-
pickerScaleFactor = 1;
|
|
25012
|
-
}
|
|
25013
|
-
this.rotateFactor = pickerRotateFactor;
|
|
25014
|
-
this.scaleFactor = pickerScaleFactor;
|
|
25015
|
-
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
25016
|
-
el: this.el,
|
|
25017
|
-
gestureName: 'picker-swipe',
|
|
25018
|
-
gesturePriority: 100,
|
|
25019
|
-
threshold: 0,
|
|
25020
|
-
passive: false,
|
|
25021
|
-
onStart: (ev) => this.onStart(ev),
|
|
25022
|
-
onMove: (ev) => this.onMove(ev),
|
|
25023
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
25024
|
-
});
|
|
25025
|
-
this.gesture.enable();
|
|
25026
|
-
// Options have not been initialized yet
|
|
25027
|
-
// Animation must be disabled through the `noAnimate` flag
|
|
25028
|
-
// Otherwise, the options will render
|
|
25029
|
-
// at the top of the column and transition down
|
|
25030
|
-
this.tmrId = setTimeout(() => {
|
|
25031
|
-
this.noAnimate = false;
|
|
25032
|
-
// After initialization, `refresh()` will be called
|
|
25033
|
-
// At this point, animation will be enabled. The options will
|
|
25034
|
-
// animate as they are being selected.
|
|
25035
|
-
this.refresh(true);
|
|
25036
|
-
}, 250);
|
|
25037
|
-
}
|
|
25038
|
-
componentDidLoad() {
|
|
25039
|
-
this.onDomChange();
|
|
25040
|
-
}
|
|
25041
|
-
componentDidUpdate() {
|
|
25042
|
-
// Options may have changed since last update.
|
|
25043
|
-
if (this.colDidChange) {
|
|
25044
|
-
// Animation must be disabled through the `onDomChange` parameter.
|
|
25045
|
-
// Otherwise, the recently added options will render
|
|
25046
|
-
// at the top of the column and transition down
|
|
25047
|
-
this.onDomChange(true, false);
|
|
25048
|
-
this.colDidChange = false;
|
|
25049
|
-
}
|
|
25050
|
-
}
|
|
25051
|
-
disconnectedCallback() {
|
|
25052
|
-
if (this.rafId !== undefined)
|
|
25053
|
-
cancelAnimationFrame(this.rafId);
|
|
25054
|
-
if (this.tmrId)
|
|
25055
|
-
clearTimeout(this.tmrId);
|
|
25056
|
-
if (this.gesture) {
|
|
25057
|
-
this.gesture.destroy();
|
|
25058
|
-
this.gesture = undefined;
|
|
25059
|
-
}
|
|
25060
|
-
}
|
|
25061
|
-
emitColChange() {
|
|
25062
|
-
this.ionPickerColChange.emit(this.col);
|
|
25063
|
-
}
|
|
25064
|
-
setSelected(selectedIndex, duration) {
|
|
25065
|
-
// if there is a selected index, then figure out it's y position
|
|
25066
|
-
// if there isn't a selected index, then just use the top y position
|
|
25067
|
-
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
25068
|
-
this.velocity = 0;
|
|
25069
|
-
// set what y position we're at
|
|
25070
|
-
if (this.rafId !== undefined)
|
|
25071
|
-
cancelAnimationFrame(this.rafId);
|
|
25072
|
-
this.update(y, duration, true);
|
|
25073
|
-
this.emitColChange();
|
|
25074
|
-
}
|
|
25075
|
-
update(y, duration, saveY) {
|
|
25076
|
-
if (!this.optsEl) {
|
|
25077
|
-
return;
|
|
25078
|
-
}
|
|
25079
|
-
// ensure we've got a good round number :)
|
|
25080
|
-
let translateY = 0;
|
|
25081
|
-
let translateZ = 0;
|
|
25082
|
-
const { col, rotateFactor } = this;
|
|
25083
|
-
const prevSelected = col.selectedIndex;
|
|
25084
|
-
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
25085
|
-
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
25086
|
-
const scaleStr = `scale(${this.scaleFactor})`;
|
|
25087
|
-
const children = this.optsEl.children;
|
|
25088
|
-
for (let i = 0; i < children.length; i++) {
|
|
25089
|
-
const button = children[i];
|
|
25090
|
-
const opt = col.options[i];
|
|
25091
|
-
const optOffset = i * this.optHeight + y;
|
|
25092
|
-
let transform = '';
|
|
25093
|
-
if (rotateFactor !== 0) {
|
|
25094
|
-
const rotateX = optOffset * rotateFactor;
|
|
25095
|
-
if (Math.abs(rotateX) <= 90) {
|
|
25096
|
-
translateY = 0;
|
|
25097
|
-
translateZ = 90;
|
|
25098
|
-
transform = `rotateX(${rotateX}deg) `;
|
|
24765
|
+
};
|
|
24766
|
+
/**
|
|
24767
|
+
* Clicking a column also focuses the column on
|
|
24768
|
+
* certain browsers, so we use onPointerDown
|
|
24769
|
+
* to tell the onFocusIn function that users
|
|
24770
|
+
* are trying to click the column rather than
|
|
24771
|
+
* focus the column using the keyboard. When the
|
|
24772
|
+
* user completes the click, the onClick function
|
|
24773
|
+
* runs and runs the actionOnClick callback.
|
|
24774
|
+
*/
|
|
24775
|
+
this.onPointerDown = (ev) => {
|
|
24776
|
+
const { useInputMode, inputModeColumn, el } = this;
|
|
24777
|
+
if (this.isInHighlightBounds(ev)) {
|
|
24778
|
+
/**
|
|
24779
|
+
* If we were already in
|
|
24780
|
+
* input mode, then we should determine
|
|
24781
|
+
* if we tapped a particular column and
|
|
24782
|
+
* should switch to input mode for
|
|
24783
|
+
* that specific column.
|
|
24784
|
+
*/
|
|
24785
|
+
if (useInputMode) {
|
|
24786
|
+
/**
|
|
24787
|
+
* If we tapped a picker column
|
|
24788
|
+
* then we should either switch to input
|
|
24789
|
+
* mode for that column or all columns.
|
|
24790
|
+
* Otherwise we should exit input mode
|
|
24791
|
+
* since we just tapped the highlight and
|
|
24792
|
+
* not a column.
|
|
24793
|
+
*/
|
|
24794
|
+
if (ev.target.tagName === 'ION-PICKER-COLUMN') {
|
|
24795
|
+
/**
|
|
24796
|
+
* If user taps 2 different columns
|
|
24797
|
+
* then we should just switch to input mode
|
|
24798
|
+
* for the new column rather than switching to
|
|
24799
|
+
* input mode for all columns.
|
|
24800
|
+
*/
|
|
24801
|
+
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
24802
|
+
this.actionOnClick = () => {
|
|
24803
|
+
this.enterInputMode();
|
|
24804
|
+
};
|
|
24805
|
+
}
|
|
24806
|
+
else {
|
|
24807
|
+
this.actionOnClick = () => {
|
|
24808
|
+
this.enterInputMode(ev.target);
|
|
24809
|
+
};
|
|
24810
|
+
}
|
|
24811
|
+
}
|
|
24812
|
+
else {
|
|
24813
|
+
this.actionOnClick = () => {
|
|
24814
|
+
this.exitInputMode();
|
|
24815
|
+
};
|
|
24816
|
+
}
|
|
24817
|
+
/**
|
|
24818
|
+
* If we were not already in
|
|
24819
|
+
* input mode, then we should
|
|
24820
|
+
* enter input mode for all columns.
|
|
24821
|
+
*/
|
|
25099
24822
|
}
|
|
25100
24823
|
else {
|
|
25101
|
-
|
|
24824
|
+
/**
|
|
24825
|
+
* If there is only 1 numeric input column
|
|
24826
|
+
* then we should skip multi column input.
|
|
24827
|
+
*/
|
|
24828
|
+
const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
|
|
24829
|
+
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
24830
|
+
this.actionOnClick = () => {
|
|
24831
|
+
this.enterInputMode(columnEl);
|
|
24832
|
+
};
|
|
24833
|
+
}
|
|
24834
|
+
return;
|
|
24835
|
+
}
|
|
24836
|
+
this.actionOnClick = () => {
|
|
24837
|
+
this.exitInputMode();
|
|
24838
|
+
};
|
|
24839
|
+
};
|
|
24840
|
+
/**
|
|
24841
|
+
* Enters input mode to allow
|
|
24842
|
+
* for text entry of numeric values.
|
|
24843
|
+
* If on mobile, we focus a hidden input
|
|
24844
|
+
* field so that the on screen keyboard
|
|
24845
|
+
* is brought up. When tabbing using a
|
|
24846
|
+
* keyboard, picker columns receive an outline
|
|
24847
|
+
* to indicate they are focused. As a result,
|
|
24848
|
+
* we should not focus the hidden input as it
|
|
24849
|
+
* would cause the outline to go away, preventing
|
|
24850
|
+
* users from having any visual indication of which
|
|
24851
|
+
* column is focused.
|
|
24852
|
+
*/
|
|
24853
|
+
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
24854
|
+
const { inputEl, el } = this;
|
|
24855
|
+
if (!inputEl) {
|
|
24856
|
+
return;
|
|
24857
|
+
}
|
|
24858
|
+
/**
|
|
24859
|
+
* Only active input mode if there is at
|
|
24860
|
+
* least one column that accepts numeric input.
|
|
24861
|
+
*/
|
|
24862
|
+
const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
|
|
24863
|
+
if (!hasInputColumn) {
|
|
24864
|
+
return;
|
|
24865
|
+
}
|
|
24866
|
+
/**
|
|
24867
|
+
* If columnEl is undefined then
|
|
24868
|
+
* it is assumed that all numeric pickers
|
|
24869
|
+
* are eligible for text entry.
|
|
24870
|
+
* (i.e. hour and minute columns)
|
|
24871
|
+
*/
|
|
24872
|
+
this.useInputMode = true;
|
|
24873
|
+
this.inputModeColumn = columnEl;
|
|
24874
|
+
/**
|
|
24875
|
+
* Users with a keyboard and mouse can
|
|
24876
|
+
* activate input mode where the input is
|
|
24877
|
+
* focused as well as when it is not focused,
|
|
24878
|
+
* so we need to make sure we clean up any
|
|
24879
|
+
* old listeners.
|
|
24880
|
+
*/
|
|
24881
|
+
if (focusInput) {
|
|
24882
|
+
if (this.destroyKeypressListener) {
|
|
24883
|
+
this.destroyKeypressListener();
|
|
24884
|
+
this.destroyKeypressListener = undefined;
|
|
25102
24885
|
}
|
|
24886
|
+
inputEl.focus();
|
|
25103
24887
|
}
|
|
25104
24888
|
else {
|
|
25105
|
-
|
|
25106
|
-
|
|
24889
|
+
el.addEventListener('keypress', this.onKeyPress);
|
|
24890
|
+
this.destroyKeypressListener = () => {
|
|
24891
|
+
el.removeEventListener('keypress', this.onKeyPress);
|
|
24892
|
+
};
|
|
25107
24893
|
}
|
|
25108
|
-
|
|
25109
|
-
|
|
25110
|
-
|
|
25111
|
-
|
|
24894
|
+
this.emitInputModeChange();
|
|
24895
|
+
};
|
|
24896
|
+
this.onKeyPress = (ev) => {
|
|
24897
|
+
const { inputEl } = this;
|
|
24898
|
+
if (!inputEl) {
|
|
24899
|
+
return;
|
|
25112
24900
|
}
|
|
25113
|
-
|
|
25114
|
-
|
|
25115
|
-
|
|
25116
|
-
|
|
24901
|
+
const parsedValue = parseInt(ev.key, 10);
|
|
24902
|
+
/**
|
|
24903
|
+
* Only numbers should be allowed
|
|
24904
|
+
*/
|
|
24905
|
+
if (!Number.isNaN(parsedValue)) {
|
|
24906
|
+
inputEl.value += ev.key;
|
|
24907
|
+
this.onInputChange();
|
|
25117
24908
|
}
|
|
25118
|
-
|
|
25119
|
-
|
|
25120
|
-
|
|
24909
|
+
};
|
|
24910
|
+
this.selectSingleColumn = () => {
|
|
24911
|
+
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
24912
|
+
if (!inputEl || !inputModeColumn) {
|
|
24913
|
+
return;
|
|
25121
24914
|
}
|
|
25122
|
-
|
|
25123
|
-
|
|
25124
|
-
|
|
24915
|
+
const options = Array.from(inputModeColumn.querySelectorAll('ion-picker-column-option')).filter((el) => el.disabled !== true);
|
|
24916
|
+
/**
|
|
24917
|
+
* If users pause for a bit, the search
|
|
24918
|
+
* value should be reset similar to how a
|
|
24919
|
+
* <select> behaves. So typing "34", waiting,
|
|
24920
|
+
* then typing "5" should select "05".
|
|
24921
|
+
*/
|
|
24922
|
+
if (singleColumnSearchTimeout) {
|
|
24923
|
+
clearTimeout(singleColumnSearchTimeout);
|
|
25125
24924
|
}
|
|
25126
|
-
|
|
24925
|
+
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
24926
|
+
inputEl.value = '';
|
|
24927
|
+
this.singleColumnSearchTimeout = undefined;
|
|
24928
|
+
}, 1000);
|
|
25127
24929
|
/**
|
|
25128
|
-
*
|
|
25129
|
-
*
|
|
24930
|
+
* For values that are longer than 2 digits long
|
|
24931
|
+
* we should shift the value over 1 character
|
|
24932
|
+
* to the left. So typing "456" would result in "56".
|
|
24933
|
+
* TODO: If we want to support more than just
|
|
24934
|
+
* time entry, we should update this value to be
|
|
24935
|
+
* the max length of all of the picker items.
|
|
25130
24936
|
*/
|
|
25131
|
-
|
|
25132
|
-
|
|
25133
|
-
|
|
24937
|
+
if (inputEl.value.length >= 3) {
|
|
24938
|
+
const startIndex = inputEl.value.length - 2;
|
|
24939
|
+
const newString = inputEl.value.substring(startIndex);
|
|
24940
|
+
inputEl.value = newString;
|
|
24941
|
+
this.selectSingleColumn();
|
|
24942
|
+
return;
|
|
25134
24943
|
}
|
|
25135
|
-
|
|
25136
|
-
|
|
24944
|
+
/**
|
|
24945
|
+
* Checking the value of the input gets priority
|
|
24946
|
+
* first. For example, if the value of the input
|
|
24947
|
+
* is "1" and we entered "2", then the complete value
|
|
24948
|
+
* is "12" and we should select hour 12.
|
|
24949
|
+
*
|
|
24950
|
+
* Regex removes any leading zeros from values like "02",
|
|
24951
|
+
* but it keeps a single zero if there are only zeros in the string.
|
|
24952
|
+
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
24953
|
+
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
24954
|
+
*/
|
|
24955
|
+
const findItemFromCompleteValue = options.find(({ textContent }) => {
|
|
24956
|
+
/**
|
|
24957
|
+
* Keyboard entry is currently only used inside of Datetime
|
|
24958
|
+
* where we guarantee textContent is set.
|
|
24959
|
+
* If we end up exposing this feature publicly we should revisit this assumption.
|
|
24960
|
+
*/
|
|
24961
|
+
const parsedText = textContent.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
24962
|
+
return parsedText === inputEl.value;
|
|
24963
|
+
});
|
|
24964
|
+
if (findItemFromCompleteValue) {
|
|
24965
|
+
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
24966
|
+
return;
|
|
25137
24967
|
}
|
|
25138
|
-
|
|
25139
|
-
|
|
25140
|
-
|
|
25141
|
-
|
|
25142
|
-
|
|
25143
|
-
|
|
25144
|
-
|
|
25145
|
-
|
|
25146
|
-
|
|
25147
|
-
}
|
|
25148
|
-
|
|
25149
|
-
|
|
25150
|
-
|
|
25151
|
-
|
|
25152
|
-
|
|
25153
|
-
|
|
25154
|
-
|
|
25155
|
-
|
|
25156
|
-
|
|
25157
|
-
|
|
25158
|
-
|
|
25159
|
-
|
|
24968
|
+
/**
|
|
24969
|
+
* If we typed "56" to get minute 56, then typed "7",
|
|
24970
|
+
* we should select "07" as "567" is not a valid minute.
|
|
24971
|
+
*/
|
|
24972
|
+
if (inputEl.value.length === 2) {
|
|
24973
|
+
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
24974
|
+
inputEl.value = changedCharacter;
|
|
24975
|
+
this.selectSingleColumn();
|
|
24976
|
+
}
|
|
24977
|
+
};
|
|
24978
|
+
/**
|
|
24979
|
+
* Searches a list of column items for a particular
|
|
24980
|
+
* value. This is currently used for numeric values.
|
|
24981
|
+
* The zeroBehavior can be set to account for leading
|
|
24982
|
+
* or trailing zeros when looking at the item text.
|
|
24983
|
+
*/
|
|
24984
|
+
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
24985
|
+
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
24986
|
+
const option = Array.from(colEl.querySelectorAll('ion-picker-column-option')).find((el) => {
|
|
24987
|
+
return el.disabled !== true && el.textContent.replace(behavior, '') === value;
|
|
24988
|
+
});
|
|
24989
|
+
if (option) {
|
|
24990
|
+
colEl.setValue(option.value);
|
|
24991
|
+
}
|
|
24992
|
+
};
|
|
24993
|
+
this.selectMultiColumn = () => {
|
|
24994
|
+
const { inputEl, el } = this;
|
|
24995
|
+
if (!inputEl) {
|
|
24996
|
+
return;
|
|
24997
|
+
}
|
|
24998
|
+
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
|
|
24999
|
+
const firstColumn = numericPickers[0];
|
|
25000
|
+
const lastColumn = numericPickers[1];
|
|
25001
|
+
let value = inputEl.value;
|
|
25002
|
+
let minuteValue;
|
|
25003
|
+
switch (value.length) {
|
|
25004
|
+
case 1:
|
|
25005
|
+
this.searchColumn(firstColumn, value);
|
|
25006
|
+
break;
|
|
25007
|
+
case 2:
|
|
25008
|
+
/**
|
|
25009
|
+
* If the first character is `0` or `1` it is
|
|
25010
|
+
* possible that users are trying to type `09`
|
|
25011
|
+
* or `11` into the hour field, so we should look
|
|
25012
|
+
* at that first.
|
|
25013
|
+
*/
|
|
25014
|
+
const firstCharacter = inputEl.value.substring(0, 1);
|
|
25015
|
+
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
25016
|
+
this.searchColumn(firstColumn, value);
|
|
25017
|
+
/**
|
|
25018
|
+
* If only checked the first value,
|
|
25019
|
+
* we can check the second value
|
|
25020
|
+
* for a match in the minutes column
|
|
25021
|
+
*/
|
|
25022
|
+
if (value.length === 1) {
|
|
25023
|
+
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
25024
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25025
|
+
}
|
|
25026
|
+
break;
|
|
25027
|
+
case 3:
|
|
25028
|
+
/**
|
|
25029
|
+
* If the first character is `0` or `1` it is
|
|
25030
|
+
* possible that users are trying to type `09`
|
|
25031
|
+
* or `11` into the hour field, so we should look
|
|
25032
|
+
* at that first.
|
|
25033
|
+
*/
|
|
25034
|
+
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
25035
|
+
value =
|
|
25036
|
+
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
25037
|
+
? inputEl.value.substring(0, 2)
|
|
25038
|
+
: firstCharacterAgain;
|
|
25039
|
+
this.searchColumn(firstColumn, value);
|
|
25040
|
+
/**
|
|
25041
|
+
* If only checked the first value,
|
|
25042
|
+
* we can check the second value
|
|
25043
|
+
* for a match in the minutes column
|
|
25044
|
+
*/
|
|
25045
|
+
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
25046
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25047
|
+
break;
|
|
25048
|
+
case 4:
|
|
25049
|
+
/**
|
|
25050
|
+
* If the first character is `0` or `1` it is
|
|
25051
|
+
* possible that users are trying to type `09`
|
|
25052
|
+
* or `11` into the hour field, so we should look
|
|
25053
|
+
* at that first.
|
|
25054
|
+
*/
|
|
25055
|
+
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
25056
|
+
value =
|
|
25057
|
+
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
25058
|
+
? inputEl.value.substring(0, 2)
|
|
25059
|
+
: firstCharacterAgainAgain;
|
|
25060
|
+
this.searchColumn(firstColumn, value);
|
|
25061
|
+
/**
|
|
25062
|
+
* If only checked the first value,
|
|
25063
|
+
* we can check the second value
|
|
25064
|
+
* for a match in the minutes column
|
|
25065
|
+
*/
|
|
25066
|
+
const minuteValueAgain = value.length === 1
|
|
25067
|
+
? inputEl.value.substring(1, inputEl.value.length)
|
|
25068
|
+
: inputEl.value.substring(2, inputEl.value.length);
|
|
25069
|
+
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
25070
|
+
break;
|
|
25071
|
+
default:
|
|
25072
|
+
const startIndex = inputEl.value.length - 4;
|
|
25073
|
+
const newString = inputEl.value.substring(startIndex);
|
|
25074
|
+
inputEl.value = newString;
|
|
25075
|
+
this.selectMultiColumn();
|
|
25076
|
+
break;
|
|
25160
25077
|
}
|
|
25161
|
-
|
|
25162
|
-
|
|
25163
|
-
|
|
25164
|
-
|
|
25078
|
+
};
|
|
25079
|
+
/**
|
|
25080
|
+
* Searches the value of the active column
|
|
25081
|
+
* to determine which value users are trying
|
|
25082
|
+
* to select
|
|
25083
|
+
*/
|
|
25084
|
+
this.onInputChange = () => {
|
|
25085
|
+
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
25086
|
+
if (!useInputMode || !inputEl) {
|
|
25087
|
+
return;
|
|
25165
25088
|
}
|
|
25166
|
-
|
|
25167
|
-
|
|
25168
|
-
if (notLockedIn) {
|
|
25169
|
-
// isn't locked in yet, keep decelerating until it is
|
|
25170
|
-
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
25089
|
+
if (inputModeColumn) {
|
|
25090
|
+
this.selectSingleColumn();
|
|
25171
25091
|
}
|
|
25172
25092
|
else {
|
|
25173
|
-
this.
|
|
25174
|
-
this.emitColChange();
|
|
25175
|
-
hapticSelectionEnd();
|
|
25176
|
-
}
|
|
25177
|
-
}
|
|
25178
|
-
else if (this.y % this.optHeight !== 0) {
|
|
25179
|
-
// needs to still get locked into a position so options line up
|
|
25180
|
-
const currentPos = Math.abs(this.y % this.optHeight);
|
|
25181
|
-
// create a velocity in the direction it needs to scroll
|
|
25182
|
-
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
25183
|
-
this.decelerate();
|
|
25184
|
-
}
|
|
25185
|
-
}
|
|
25186
|
-
indexForY(y) {
|
|
25187
|
-
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
25188
|
-
}
|
|
25189
|
-
onStart(detail) {
|
|
25190
|
-
// We have to prevent default in order to block scrolling under the picker
|
|
25191
|
-
// but we DO NOT have to stop propagation, since we still want
|
|
25192
|
-
// some "click" events to capture
|
|
25193
|
-
if (detail.event.cancelable) {
|
|
25194
|
-
detail.event.preventDefault();
|
|
25195
|
-
}
|
|
25196
|
-
detail.event.stopPropagation();
|
|
25197
|
-
hapticSelectionStart();
|
|
25198
|
-
// reset everything
|
|
25199
|
-
if (this.rafId !== undefined)
|
|
25200
|
-
cancelAnimationFrame(this.rafId);
|
|
25201
|
-
const options = this.col.options;
|
|
25202
|
-
let minY = options.length - 1;
|
|
25203
|
-
let maxY = 0;
|
|
25204
|
-
for (let i = 0; i < options.length; i++) {
|
|
25205
|
-
if (!options[i].disabled) {
|
|
25206
|
-
minY = Math.min(minY, i);
|
|
25207
|
-
maxY = Math.max(maxY, i);
|
|
25093
|
+
this.selectMultiColumn();
|
|
25208
25094
|
}
|
|
25209
|
-
}
|
|
25210
|
-
|
|
25211
|
-
|
|
25095
|
+
};
|
|
25096
|
+
/**
|
|
25097
|
+
* Emit ionInputModeChange. Picker columns
|
|
25098
|
+
* listen for this event to determine whether
|
|
25099
|
+
* or not their column is "active" for text input.
|
|
25100
|
+
*/
|
|
25101
|
+
this.emitInputModeChange = () => {
|
|
25102
|
+
const { useInputMode, inputModeColumn } = this;
|
|
25103
|
+
this.ionInputModeChange.emit({
|
|
25104
|
+
useInputMode,
|
|
25105
|
+
inputModeColumn,
|
|
25106
|
+
});
|
|
25107
|
+
};
|
|
25212
25108
|
}
|
|
25213
|
-
|
|
25214
|
-
|
|
25215
|
-
|
|
25216
|
-
|
|
25217
|
-
|
|
25218
|
-
|
|
25219
|
-
|
|
25220
|
-
|
|
25221
|
-
|
|
25222
|
-
|
|
25223
|
-
this.bounceFrom = y;
|
|
25224
|
-
}
|
|
25225
|
-
else if (y < this.maxY) {
|
|
25226
|
-
// scrolling down below scroll area
|
|
25227
|
-
y += Math.pow(this.maxY - y, 0.9);
|
|
25228
|
-
this.bounceFrom = y;
|
|
25229
|
-
}
|
|
25230
|
-
else {
|
|
25231
|
-
this.bounceFrom = 0;
|
|
25232
|
-
}
|
|
25233
|
-
this.update(y, 0, false);
|
|
25109
|
+
/**
|
|
25110
|
+
* When the picker is interacted with
|
|
25111
|
+
* we need to prevent touchstart so other
|
|
25112
|
+
* gestures do not fire. For example,
|
|
25113
|
+
* scrolling on the wheel picker
|
|
25114
|
+
* in ion-datetime should not cause
|
|
25115
|
+
* a card modal to swipe to close.
|
|
25116
|
+
*/
|
|
25117
|
+
preventTouchStartPropagation(ev) {
|
|
25118
|
+
ev.stopPropagation();
|
|
25234
25119
|
}
|
|
25235
|
-
|
|
25236
|
-
|
|
25237
|
-
|
|
25238
|
-
this.update(this.minY, 100, true);
|
|
25239
|
-
this.emitColChange();
|
|
25240
|
-
return;
|
|
25241
|
-
}
|
|
25242
|
-
else if (this.bounceFrom < 0) {
|
|
25243
|
-
// bounce back down
|
|
25244
|
-
this.update(this.maxY, 100, true);
|
|
25245
|
-
this.emitColChange();
|
|
25246
|
-
return;
|
|
25247
|
-
}
|
|
25248
|
-
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
25249
|
-
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
25250
|
-
const opt = detail.event.target.closest('.picker-opt');
|
|
25251
|
-
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
25252
|
-
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
25253
|
-
}
|
|
25254
|
-
}
|
|
25255
|
-
else {
|
|
25256
|
-
this.y += detail.deltaY;
|
|
25257
|
-
if (Math.abs(detail.velocityY) < 0.05) {
|
|
25258
|
-
const isScrollingUp = detail.deltaY > 0;
|
|
25259
|
-
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
25260
|
-
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
25261
|
-
this.velocity = Math.abs(this.velocity) * -1;
|
|
25262
|
-
}
|
|
25263
|
-
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
25264
|
-
this.velocity = Math.abs(this.velocity);
|
|
25265
|
-
}
|
|
25266
|
-
}
|
|
25267
|
-
this.decelerate();
|
|
25268
|
-
}
|
|
25120
|
+
componentWillLoad() {
|
|
25121
|
+
getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
|
|
25122
|
+
getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
|
|
25269
25123
|
}
|
|
25270
|
-
|
|
25271
|
-
|
|
25272
|
-
|
|
25273
|
-
|
|
25274
|
-
|
|
25275
|
-
|
|
25276
|
-
|
|
25277
|
-
|
|
25278
|
-
|
|
25279
|
-
}
|
|
25280
|
-
}
|
|
25281
|
-
/**
|
|
25282
|
-
* Only update selected value if column has a
|
|
25283
|
-
* velocity of 0. If it does not, then the
|
|
25284
|
-
* column is animating might land on
|
|
25285
|
-
* a value different than the value at
|
|
25286
|
-
* selectedIndex
|
|
25287
|
-
*/
|
|
25288
|
-
if (this.velocity !== 0) {
|
|
25124
|
+
/**
|
|
25125
|
+
* @internal
|
|
25126
|
+
* Exits text entry mode for the picker
|
|
25127
|
+
* This method blurs the hidden input
|
|
25128
|
+
* and cause the keyboard to dismiss.
|
|
25129
|
+
*/
|
|
25130
|
+
async exitInputMode() {
|
|
25131
|
+
const { inputEl, useInputMode } = this;
|
|
25132
|
+
if (!useInputMode || !inputEl) {
|
|
25289
25133
|
return;
|
|
25290
25134
|
}
|
|
25291
|
-
|
|
25292
|
-
|
|
25293
|
-
|
|
25294
|
-
|
|
25295
|
-
|
|
25296
|
-
this.
|
|
25297
|
-
|
|
25298
|
-
}
|
|
25299
|
-
onDomChange(forceRefresh, animated) {
|
|
25300
|
-
const colEl = this.optsEl;
|
|
25301
|
-
if (colEl) {
|
|
25302
|
-
// DOM READ
|
|
25303
|
-
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
25304
|
-
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
25135
|
+
this.useInputMode = false;
|
|
25136
|
+
this.inputModeColumn = undefined;
|
|
25137
|
+
inputEl.blur();
|
|
25138
|
+
inputEl.value = '';
|
|
25139
|
+
if (this.destroyKeypressListener) {
|
|
25140
|
+
this.destroyKeypressListener();
|
|
25141
|
+
this.destroyKeypressListener = undefined;
|
|
25305
25142
|
}
|
|
25306
|
-
this.
|
|
25143
|
+
this.emitInputModeChange();
|
|
25307
25144
|
}
|
|
25308
25145
|
render() {
|
|
25309
|
-
|
|
25310
|
-
const mode = getIonMode$1(this);
|
|
25311
|
-
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: {
|
|
25312
|
-
'max-width': this.col.columnWidth,
|
|
25313
|
-
} }, 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))));
|
|
25146
|
+
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)));
|
|
25314
25147
|
}
|
|
25315
25148
|
get el() { return getElement(this); }
|
|
25316
|
-
static get watchers() { return {
|
|
25317
|
-
"col": ["colChanged"]
|
|
25318
|
-
}; }
|
|
25319
25149
|
static get style() { return {
|
|
25320
|
-
ios:
|
|
25321
|
-
md:
|
|
25150
|
+
ios: pickerIosCss$1,
|
|
25151
|
+
md: pickerMdCss$1
|
|
25322
25152
|
}; }
|
|
25323
25153
|
static get cmpMeta() { return {
|
|
25324
|
-
"$flags$":
|
|
25325
|
-
"$tagName$": "ion-picker
|
|
25154
|
+
"$flags$": 41,
|
|
25155
|
+
"$tagName$": "ion-picker",
|
|
25326
25156
|
"$members$": {
|
|
25327
|
-
"
|
|
25157
|
+
"exitInputMode": [64]
|
|
25328
25158
|
},
|
|
25329
|
-
"$listeners$":
|
|
25159
|
+
"$listeners$": [[1, "touchstart", "preventTouchStartPropagation"]],
|
|
25330
25160
|
"$lazyBundleId$": "-",
|
|
25331
25161
|
"$attrsToReflect$": []
|
|
25332
25162
|
}; }
|
|
25333
25163
|
}
|
|
25334
|
-
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
25335
|
-
const DECELERATION_FRICTION = 0.97;
|
|
25336
|
-
const MAX_PICKER_SPEED = 90;
|
|
25337
|
-
const TRANSITION_DURATION = 150;
|
|
25338
25164
|
|
|
25339
|
-
|
|
25165
|
+
/**
|
|
25166
|
+
* iOS Picker Enter Animation
|
|
25167
|
+
*/
|
|
25168
|
+
const iosEnterAnimation$2 = (baseEl) => {
|
|
25169
|
+
const baseAnimation = createAnimation();
|
|
25170
|
+
const backdropAnimation = createAnimation();
|
|
25171
|
+
const wrapperAnimation = createAnimation();
|
|
25172
|
+
backdropAnimation
|
|
25173
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
25174
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
25175
|
+
.beforeStyles({
|
|
25176
|
+
'pointer-events': 'none',
|
|
25177
|
+
})
|
|
25178
|
+
.afterClearStyles(['pointer-events']);
|
|
25179
|
+
wrapperAnimation
|
|
25180
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
25181
|
+
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
25182
|
+
return baseAnimation
|
|
25183
|
+
.addElement(baseEl)
|
|
25184
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
25185
|
+
.duration(400)
|
|
25186
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
25187
|
+
};
|
|
25188
|
+
|
|
25189
|
+
/**
|
|
25190
|
+
* iOS Picker Leave Animation
|
|
25191
|
+
*/
|
|
25192
|
+
const iosLeaveAnimation$2 = (baseEl) => {
|
|
25193
|
+
const baseAnimation = createAnimation();
|
|
25194
|
+
const backdropAnimation = createAnimation();
|
|
25195
|
+
const wrapperAnimation = createAnimation();
|
|
25196
|
+
backdropAnimation
|
|
25197
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
25198
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
25199
|
+
wrapperAnimation
|
|
25200
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
25201
|
+
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
25202
|
+
return baseAnimation
|
|
25203
|
+
.addElement(baseEl)
|
|
25204
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
25205
|
+
.duration(400)
|
|
25206
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
25207
|
+
};
|
|
25208
|
+
|
|
25209
|
+
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}}}";
|
|
25340
25210
|
|
|
25341
|
-
const
|
|
25211
|
+
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}}}";
|
|
25342
25212
|
|
|
25213
|
+
// TODO(FW-2832): types
|
|
25343
25214
|
/**
|
|
25344
25215
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25345
|
-
* @internal
|
|
25346
25216
|
*/
|
|
25347
|
-
class
|
|
25217
|
+
class Picker {
|
|
25348
25218
|
constructor(hostRef) {
|
|
25349
25219
|
registerInstance(this, hostRef);
|
|
25350
|
-
this.
|
|
25351
|
-
this.
|
|
25352
|
-
this.
|
|
25353
|
-
this.
|
|
25354
|
-
this.
|
|
25355
|
-
|
|
25356
|
-
|
|
25357
|
-
|
|
25358
|
-
|
|
25359
|
-
|
|
25360
|
-
|
|
25361
|
-
|
|
25362
|
-
|
|
25363
|
-
* scroll callback. This is useful when the user manually
|
|
25364
|
-
* taps an item or types on the keyboard as both
|
|
25365
|
-
* of these can cause a scroll to occur.
|
|
25366
|
-
*/
|
|
25367
|
-
this.canExitInputMode = canExitInputMode;
|
|
25368
|
-
el.scroll({
|
|
25369
|
-
top,
|
|
25370
|
-
left: 0,
|
|
25371
|
-
behavior: smooth ? 'smooth' : undefined,
|
|
25372
|
-
});
|
|
25373
|
-
}
|
|
25374
|
-
}
|
|
25375
|
-
};
|
|
25376
|
-
this.setPickerItemActiveState = (item, isActive) => {
|
|
25377
|
-
if (isActive) {
|
|
25378
|
-
item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
|
|
25379
|
-
item.part.add(PICKER_ITEM_ACTIVE_PART);
|
|
25380
|
-
}
|
|
25381
|
-
else {
|
|
25382
|
-
item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
|
|
25383
|
-
item.part.remove(PICKER_ITEM_ACTIVE_PART);
|
|
25384
|
-
}
|
|
25385
|
-
};
|
|
25386
|
-
/**
|
|
25387
|
-
* When ionInputModeChange is emitted, each column
|
|
25388
|
-
* needs to check if it is the one being made available
|
|
25389
|
-
* for text entry.
|
|
25390
|
-
*/
|
|
25391
|
-
this.inputModeChange = (ev) => {
|
|
25392
|
-
if (!this.numericInput) {
|
|
25393
|
-
return;
|
|
25394
|
-
}
|
|
25395
|
-
const { useInputMode, inputModeColumn } = ev.detail;
|
|
25396
|
-
/**
|
|
25397
|
-
* If inputModeColumn is undefined then this means
|
|
25398
|
-
* all numericInput columns are being selected.
|
|
25399
|
-
*/
|
|
25400
|
-
const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
|
|
25401
|
-
if (!useInputMode || !isColumnActive) {
|
|
25402
|
-
this.setInputModeActive(false);
|
|
25403
|
-
return;
|
|
25404
|
-
}
|
|
25405
|
-
this.setInputModeActive(true);
|
|
25220
|
+
this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
|
|
25221
|
+
this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
|
|
25222
|
+
this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
|
|
25223
|
+
this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
|
|
25224
|
+
this.didPresentShorthand = createEvent(this, "didPresent", 7);
|
|
25225
|
+
this.willPresentShorthand = createEvent(this, "willPresent", 7);
|
|
25226
|
+
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
|
25227
|
+
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
25228
|
+
this.delegateController = createDelegateController(this);
|
|
25229
|
+
this.lockController = createLockController();
|
|
25230
|
+
this.triggerController = createTriggerController();
|
|
25231
|
+
this.onBackdropTap = () => {
|
|
25232
|
+
this.dismiss(undefined, BACKDROP);
|
|
25406
25233
|
};
|
|
25407
|
-
|
|
25408
|
-
|
|
25409
|
-
|
|
25410
|
-
|
|
25411
|
-
|
|
25412
|
-
* whatever value was selected at the
|
|
25413
|
-
* start of the scroll interaction.
|
|
25414
|
-
*/
|
|
25415
|
-
this.setInputModeActive = (state) => {
|
|
25416
|
-
if (this.isScrolling) {
|
|
25417
|
-
this.scrollEndCallback = () => {
|
|
25418
|
-
this.isActive = state;
|
|
25419
|
-
};
|
|
25420
|
-
return;
|
|
25234
|
+
this.dispatchCancelHandler = (ev) => {
|
|
25235
|
+
const role = ev.detail.role;
|
|
25236
|
+
if (isCancel(role)) {
|
|
25237
|
+
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
25238
|
+
this.callButtonHandler(cancelButton);
|
|
25421
25239
|
}
|
|
25422
|
-
this.isActive = state;
|
|
25423
|
-
};
|
|
25424
|
-
/**
|
|
25425
|
-
* When the column scrolls, the component
|
|
25426
|
-
* needs to determine which item is centered
|
|
25427
|
-
* in the view and will emit an ionChange with
|
|
25428
|
-
* the item object.
|
|
25429
|
-
*/
|
|
25430
|
-
this.initializeScrollListener = () => {
|
|
25431
|
-
/**
|
|
25432
|
-
* The haptics for the wheel picker are
|
|
25433
|
-
* an iOS-only feature. As a result, they should
|
|
25434
|
-
* be disabled on Android.
|
|
25435
|
-
*/
|
|
25436
|
-
const enableHaptics = isPlatform('ios');
|
|
25437
|
-
const { el } = this;
|
|
25438
|
-
let timeout;
|
|
25439
|
-
let activeEl = this.activeItem;
|
|
25440
|
-
const scrollCallback = () => {
|
|
25441
|
-
raf(() => {
|
|
25442
|
-
if (timeout) {
|
|
25443
|
-
clearTimeout(timeout);
|
|
25444
|
-
timeout = undefined;
|
|
25445
|
-
}
|
|
25446
|
-
if (!this.isScrolling) {
|
|
25447
|
-
enableHaptics && hapticSelectionStart();
|
|
25448
|
-
this.isScrolling = true;
|
|
25449
|
-
}
|
|
25450
|
-
/**
|
|
25451
|
-
* Select item in the center of the column
|
|
25452
|
-
* which is the month/year that we want to select
|
|
25453
|
-
*/
|
|
25454
|
-
const bbox = el.getBoundingClientRect();
|
|
25455
|
-
const centerX = bbox.x + bbox.width / 2;
|
|
25456
|
-
const centerY = bbox.y + bbox.height / 2;
|
|
25457
|
-
const activeElement = el.shadowRoot.elementFromPoint(centerX, centerY);
|
|
25458
|
-
if (activeEl !== null) {
|
|
25459
|
-
this.setPickerItemActiveState(activeEl, false);
|
|
25460
|
-
}
|
|
25461
|
-
if (activeElement === null || activeElement.disabled) {
|
|
25462
|
-
return;
|
|
25463
|
-
}
|
|
25464
|
-
/**
|
|
25465
|
-
* If we are selecting a new value,
|
|
25466
|
-
* we need to run haptics again.
|
|
25467
|
-
*/
|
|
25468
|
-
if (activeElement !== activeEl) {
|
|
25469
|
-
enableHaptics && hapticSelectionChanged();
|
|
25470
|
-
if (this.canExitInputMode) {
|
|
25471
|
-
/**
|
|
25472
|
-
* The native iOS wheel picker
|
|
25473
|
-
* only dismisses the keyboard
|
|
25474
|
-
* once the selected item has changed
|
|
25475
|
-
* as a result of a swipe
|
|
25476
|
-
* from the user. If `canExitInputMode` is
|
|
25477
|
-
* `false` then this means that the
|
|
25478
|
-
* scroll is happening as a result of
|
|
25479
|
-
* the `value` property programmatically changing
|
|
25480
|
-
* either by an application or by the user via the keyboard.
|
|
25481
|
-
*/
|
|
25482
|
-
this.exitInputMode();
|
|
25483
|
-
}
|
|
25484
|
-
}
|
|
25485
|
-
activeEl = activeElement;
|
|
25486
|
-
this.setPickerItemActiveState(activeElement, true);
|
|
25487
|
-
timeout = setTimeout(() => {
|
|
25488
|
-
this.isScrolling = false;
|
|
25489
|
-
enableHaptics && hapticSelectionEnd();
|
|
25490
|
-
/**
|
|
25491
|
-
* Certain tasks (such as those that
|
|
25492
|
-
* cause re-renders) should only be done
|
|
25493
|
-
* once scrolling has finished, otherwise
|
|
25494
|
-
* flickering may occur.
|
|
25495
|
-
*/
|
|
25496
|
-
const { scrollEndCallback } = this;
|
|
25497
|
-
if (scrollEndCallback) {
|
|
25498
|
-
scrollEndCallback();
|
|
25499
|
-
this.scrollEndCallback = undefined;
|
|
25500
|
-
}
|
|
25501
|
-
/**
|
|
25502
|
-
* Reset this flag as the
|
|
25503
|
-
* next scroll interaction could
|
|
25504
|
-
* be a scroll from the user. In this
|
|
25505
|
-
* case, we should exit input mode.
|
|
25506
|
-
*/
|
|
25507
|
-
this.canExitInputMode = true;
|
|
25508
|
-
const dataIndex = activeElement.getAttribute('data-index');
|
|
25509
|
-
/**
|
|
25510
|
-
* If no value it is
|
|
25511
|
-
* possible we hit one of the
|
|
25512
|
-
* empty padding columns.
|
|
25513
|
-
*/
|
|
25514
|
-
if (dataIndex === null) {
|
|
25515
|
-
return;
|
|
25516
|
-
}
|
|
25517
|
-
const index = parseInt(dataIndex, 10);
|
|
25518
|
-
const selectedItem = this.items[index];
|
|
25519
|
-
if (selectedItem.value !== this.value) {
|
|
25520
|
-
this.setValue(selectedItem.value);
|
|
25521
|
-
}
|
|
25522
|
-
}, 250);
|
|
25523
|
-
});
|
|
25524
|
-
};
|
|
25525
|
-
/**
|
|
25526
|
-
* Wrap this in an raf so that the scroll callback
|
|
25527
|
-
* does not fire when component is initially shown.
|
|
25528
|
-
*/
|
|
25529
|
-
raf(() => {
|
|
25530
|
-
el.addEventListener('scroll', scrollCallback);
|
|
25531
|
-
this.destroyScrollListener = () => {
|
|
25532
|
-
el.removeEventListener('scroll', scrollCallback);
|
|
25533
|
-
};
|
|
25534
|
-
});
|
|
25535
25240
|
};
|
|
25241
|
+
this.presented = false;
|
|
25242
|
+
this.overlayIndex = undefined;
|
|
25243
|
+
this.delegate = undefined;
|
|
25244
|
+
this.hasController = false;
|
|
25245
|
+
this.keyboardClose = true;
|
|
25246
|
+
this.enterAnimation = undefined;
|
|
25247
|
+
this.leaveAnimation = undefined;
|
|
25248
|
+
this.buttons = [];
|
|
25249
|
+
this.columns = [];
|
|
25250
|
+
this.cssClass = undefined;
|
|
25251
|
+
this.duration = 0;
|
|
25252
|
+
this.showBackdrop = true;
|
|
25253
|
+
this.backdropDismiss = true;
|
|
25254
|
+
this.animated = true;
|
|
25255
|
+
this.htmlAttributes = undefined;
|
|
25256
|
+
this.isOpen = false;
|
|
25257
|
+
this.trigger = undefined;
|
|
25258
|
+
}
|
|
25259
|
+
onIsOpenChange(newValue, oldValue) {
|
|
25260
|
+
if (newValue === true && oldValue === false) {
|
|
25261
|
+
this.present();
|
|
25262
|
+
}
|
|
25263
|
+
else if (newValue === false && oldValue === true) {
|
|
25264
|
+
this.dismiss();
|
|
25265
|
+
}
|
|
25266
|
+
}
|
|
25267
|
+
triggerChanged() {
|
|
25268
|
+
const { trigger, el, triggerController } = this;
|
|
25269
|
+
if (trigger) {
|
|
25270
|
+
triggerController.addClickListener(el, trigger);
|
|
25271
|
+
}
|
|
25272
|
+
}
|
|
25273
|
+
connectedCallback() {
|
|
25274
|
+
prepareOverlay(this.el);
|
|
25275
|
+
this.triggerChanged();
|
|
25276
|
+
}
|
|
25277
|
+
disconnectedCallback() {
|
|
25278
|
+
this.triggerController.removeClickListener();
|
|
25279
|
+
}
|
|
25280
|
+
componentWillLoad() {
|
|
25281
|
+
setOverlayId(this.el);
|
|
25282
|
+
}
|
|
25283
|
+
componentDidLoad() {
|
|
25284
|
+
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);
|
|
25536
25285
|
/**
|
|
25537
|
-
*
|
|
25538
|
-
*
|
|
25539
|
-
* when the selected item changes during scroll, so
|
|
25540
|
-
* we know that the user likely wants to scroll
|
|
25541
|
-
* instead of type.
|
|
25286
|
+
* If picker was rendered with isOpen="true"
|
|
25287
|
+
* then we should open picker immediately.
|
|
25542
25288
|
*/
|
|
25543
|
-
this.
|
|
25544
|
-
|
|
25545
|
-
if (parentEl == null)
|
|
25546
|
-
return;
|
|
25547
|
-
parentEl.exitInputMode();
|
|
25548
|
-
/**
|
|
25549
|
-
* setInputModeActive only takes
|
|
25550
|
-
* effect once scrolling stops to avoid
|
|
25551
|
-
* a component re-render while scrolling.
|
|
25552
|
-
* However, we want the visual active
|
|
25553
|
-
* indicator to go away immediately, so
|
|
25554
|
-
* we call classList.remove here.
|
|
25555
|
-
*/
|
|
25556
|
-
this.el.classList.remove('picker-column-active');
|
|
25557
|
-
};
|
|
25558
|
-
this.isActive = false;
|
|
25559
|
-
this.disabled = false;
|
|
25560
|
-
this.items = [];
|
|
25561
|
-
this.value = undefined;
|
|
25562
|
-
this.color = 'primary';
|
|
25563
|
-
this.numericInput = false;
|
|
25564
|
-
}
|
|
25565
|
-
valueChange() {
|
|
25566
|
-
if (this.isColumnVisible) {
|
|
25567
|
-
/**
|
|
25568
|
-
* Only scroll the active item into view when the picker column
|
|
25569
|
-
* is actively visible to the user.
|
|
25570
|
-
*/
|
|
25571
|
-
this.scrollActiveItemIntoView();
|
|
25289
|
+
if (this.isOpen === true) {
|
|
25290
|
+
raf(() => this.present());
|
|
25572
25291
|
}
|
|
25573
25292
|
}
|
|
25574
25293
|
/**
|
|
25575
|
-
*
|
|
25576
|
-
* when the picker is visible, otherwise
|
|
25577
|
-
* the container will have a scroll
|
|
25578
|
-
* height of 0px.
|
|
25294
|
+
* Present the picker overlay after it has been created.
|
|
25579
25295
|
*/
|
|
25580
|
-
|
|
25581
|
-
const
|
|
25582
|
-
|
|
25583
|
-
|
|
25584
|
-
|
|
25585
|
-
|
|
25586
|
-
/**
|
|
25587
|
-
* Because this initial call to scrollActiveItemIntoView has to fire before
|
|
25588
|
-
* the scroll listener is set up, we need to manage the active class manually.
|
|
25589
|
-
*/
|
|
25590
|
-
const oldActive = getElementRoot(el).querySelector(`.${PICKER_ITEM_ACTIVE_CLASS}`);
|
|
25591
|
-
if (oldActive) {
|
|
25592
|
-
this.setPickerItemActiveState(oldActive, false);
|
|
25593
|
-
}
|
|
25594
|
-
this.scrollActiveItemIntoView();
|
|
25595
|
-
if (activeItem) {
|
|
25596
|
-
this.setPickerItemActiveState(activeItem, true);
|
|
25597
|
-
}
|
|
25598
|
-
this.initializeScrollListener();
|
|
25599
|
-
}
|
|
25600
|
-
else {
|
|
25601
|
-
this.isColumnVisible = false;
|
|
25602
|
-
if (this.destroyScrollListener) {
|
|
25603
|
-
this.destroyScrollListener();
|
|
25604
|
-
this.destroyScrollListener = undefined;
|
|
25605
|
-
}
|
|
25606
|
-
}
|
|
25607
|
-
};
|
|
25608
|
-
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
25609
|
-
const parentEl = (this.parentEl = this.el.closest('ion-picker-internal'));
|
|
25610
|
-
if (parentEl !== null) {
|
|
25611
|
-
// TODO(FW-2832): type
|
|
25612
|
-
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
25296
|
+
async present() {
|
|
25297
|
+
const unlock = await this.lockController.lock();
|
|
25298
|
+
await this.delegateController.attachViewToDom();
|
|
25299
|
+
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
25300
|
+
if (this.duration > 0) {
|
|
25301
|
+
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
25613
25302
|
}
|
|
25303
|
+
unlock();
|
|
25614
25304
|
}
|
|
25615
|
-
|
|
25616
|
-
|
|
25617
|
-
|
|
25618
|
-
|
|
25619
|
-
|
|
25620
|
-
|
|
25621
|
-
|
|
25622
|
-
|
|
25623
|
-
|
|
25624
|
-
|
|
25625
|
-
|
|
25626
|
-
|
|
25627
|
-
|
|
25628
|
-
*
|
|
25629
|
-
*/
|
|
25630
|
-
this.setValue(items[0].value);
|
|
25631
|
-
}
|
|
25305
|
+
/**
|
|
25306
|
+
* Dismiss the picker overlay after it has been presented.
|
|
25307
|
+
*
|
|
25308
|
+
* @param data Any data to emit in the dismiss events.
|
|
25309
|
+
* @param role The role of the element that is dismissing the picker.
|
|
25310
|
+
* This can be useful in a button handler for determining which button was
|
|
25311
|
+
* clicked to dismiss the picker.
|
|
25312
|
+
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
25313
|
+
*/
|
|
25314
|
+
async dismiss(data, role) {
|
|
25315
|
+
const unlock = await this.lockController.lock();
|
|
25316
|
+
if (this.durationTimeout) {
|
|
25317
|
+
clearTimeout(this.durationTimeout);
|
|
25632
25318
|
}
|
|
25633
|
-
|
|
25634
|
-
|
|
25635
|
-
|
|
25636
|
-
const activeEl = this.activeItem;
|
|
25637
|
-
if (activeEl) {
|
|
25638
|
-
this.centerPickerItemInView(activeEl, false, false);
|
|
25319
|
+
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
25320
|
+
if (dismissed) {
|
|
25321
|
+
this.delegateController.removeViewFromDom();
|
|
25639
25322
|
}
|
|
25323
|
+
unlock();
|
|
25324
|
+
return dismissed;
|
|
25640
25325
|
}
|
|
25641
25326
|
/**
|
|
25642
|
-
*
|
|
25643
|
-
* This is used when we need to fire ionChange from
|
|
25644
|
-
* user-generated events that cannot be caught with normal
|
|
25645
|
-
* input/change event listeners.
|
|
25646
|
-
* @internal
|
|
25327
|
+
* Returns a promise that resolves when the picker did dismiss.
|
|
25647
25328
|
*/
|
|
25648
|
-
|
|
25649
|
-
|
|
25650
|
-
|
|
25651
|
-
|
|
25652
|
-
|
|
25653
|
-
|
|
25329
|
+
onDidDismiss() {
|
|
25330
|
+
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
25331
|
+
}
|
|
25332
|
+
/**
|
|
25333
|
+
* Returns a promise that resolves when the picker will dismiss.
|
|
25334
|
+
*/
|
|
25335
|
+
onWillDismiss() {
|
|
25336
|
+
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
25337
|
+
}
|
|
25338
|
+
/**
|
|
25339
|
+
* Get the column that matches the specified name.
|
|
25340
|
+
*
|
|
25341
|
+
* @param name The name of the column.
|
|
25342
|
+
*/
|
|
25343
|
+
getColumn(name) {
|
|
25344
|
+
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
25345
|
+
}
|
|
25346
|
+
async buttonClick(button) {
|
|
25347
|
+
const role = button.role;
|
|
25348
|
+
if (isCancel(role)) {
|
|
25349
|
+
return this.dismiss(undefined, role);
|
|
25350
|
+
}
|
|
25351
|
+
const shouldDismiss = await this.callButtonHandler(button);
|
|
25352
|
+
if (shouldDismiss) {
|
|
25353
|
+
return this.dismiss(this.getSelected(), button.role);
|
|
25654
25354
|
}
|
|
25355
|
+
return Promise.resolve();
|
|
25655
25356
|
}
|
|
25656
|
-
|
|
25657
|
-
|
|
25658
|
-
|
|
25659
|
-
|
|
25660
|
-
|
|
25357
|
+
async callButtonHandler(button) {
|
|
25358
|
+
if (button) {
|
|
25359
|
+
// a handler has been provided, execute it
|
|
25360
|
+
// pass the handler the values from the inputs
|
|
25361
|
+
const rtn = await safeCall(button.handler, this.getSelected());
|
|
25362
|
+
if (rtn === false) {
|
|
25363
|
+
// if the return value of the handler is false then do not dismiss
|
|
25364
|
+
return false;
|
|
25365
|
+
}
|
|
25366
|
+
}
|
|
25367
|
+
return true;
|
|
25368
|
+
}
|
|
25369
|
+
getSelected() {
|
|
25370
|
+
const selected = {};
|
|
25371
|
+
this.columns.forEach((col, index) => {
|
|
25372
|
+
const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
|
|
25373
|
+
selected[col.name] = {
|
|
25374
|
+
text: selectedColumn ? selectedColumn.text : undefined,
|
|
25375
|
+
value: selectedColumn ? selectedColumn.value : undefined,
|
|
25376
|
+
columnIndex: index,
|
|
25377
|
+
};
|
|
25378
|
+
});
|
|
25379
|
+
return selected;
|
|
25661
25380
|
}
|
|
25662
25381
|
render() {
|
|
25663
|
-
const {
|
|
25382
|
+
const { htmlAttributes } = this;
|
|
25664
25383
|
const mode = getIonMode$1(this);
|
|
25665
|
-
|
|
25666
|
-
|
|
25667
|
-
|
|
25668
|
-
|
|
25669
|
-
|
|
25670
|
-
*/
|
|
25671
|
-
return (hAsync(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses$1(color, {
|
|
25672
|
-
[mode]: true,
|
|
25673
|
-
['picker-column-active']: isActive,
|
|
25674
|
-
['picker-column-numeric-input']: numericInput,
|
|
25675
|
-
}) }, 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) => {
|
|
25676
|
-
const isItemDisabled = pickerDisabled || item.disabled || false;
|
|
25677
|
-
return (hAsync("button", { tabindex: "-1", class: {
|
|
25678
|
-
'picker-item': true,
|
|
25679
|
-
}, "data-value": item.value, "data-index": index, onClick: (ev) => {
|
|
25680
|
-
this.centerPickerItemInView(ev.target, true);
|
|
25681
|
-
}, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
|
|
25682
|
-
}), 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")));
|
|
25384
|
+
return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
25385
|
+
zIndex: `${20000 + this.overlayIndex}`,
|
|
25386
|
+
}, class: Object.assign({ [mode]: true,
|
|
25387
|
+
// Used internally for styling
|
|
25388
|
+
[`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" })));
|
|
25683
25389
|
}
|
|
25684
25390
|
get el() { return getElement(this); }
|
|
25685
25391
|
static get watchers() { return {
|
|
25686
|
-
"
|
|
25392
|
+
"isOpen": ["onIsOpenChange"],
|
|
25393
|
+
"trigger": ["triggerChanged"]
|
|
25687
25394
|
}; }
|
|
25688
25395
|
static get style() { return {
|
|
25689
|
-
ios:
|
|
25690
|
-
md:
|
|
25396
|
+
ios: pickerIosCss,
|
|
25397
|
+
md: pickerMdCss
|
|
25691
25398
|
}; }
|
|
25692
25399
|
static get cmpMeta() { return {
|
|
25693
|
-
"$flags$":
|
|
25694
|
-
"$tagName$": "ion-picker-
|
|
25400
|
+
"$flags$": 34,
|
|
25401
|
+
"$tagName$": "ion-picker-legacy",
|
|
25695
25402
|
"$members$": {
|
|
25696
|
-
"
|
|
25697
|
-
"
|
|
25698
|
-
"
|
|
25699
|
-
"
|
|
25700
|
-
"
|
|
25701
|
-
"
|
|
25702
|
-
"
|
|
25703
|
-
"
|
|
25403
|
+
"overlayIndex": [2, "overlay-index"],
|
|
25404
|
+
"delegate": [16],
|
|
25405
|
+
"hasController": [4, "has-controller"],
|
|
25406
|
+
"keyboardClose": [4, "keyboard-close"],
|
|
25407
|
+
"enterAnimation": [16],
|
|
25408
|
+
"leaveAnimation": [16],
|
|
25409
|
+
"buttons": [16],
|
|
25410
|
+
"columns": [16],
|
|
25411
|
+
"cssClass": [1, "css-class"],
|
|
25412
|
+
"duration": [2],
|
|
25413
|
+
"showBackdrop": [4, "show-backdrop"],
|
|
25414
|
+
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
25415
|
+
"animated": [4],
|
|
25416
|
+
"htmlAttributes": [16],
|
|
25417
|
+
"isOpen": [4, "is-open"],
|
|
25418
|
+
"trigger": [1],
|
|
25419
|
+
"presented": [32],
|
|
25420
|
+
"present": [64],
|
|
25421
|
+
"dismiss": [64],
|
|
25422
|
+
"onDidDismiss": [64],
|
|
25423
|
+
"onWillDismiss": [64],
|
|
25424
|
+
"getColumn": [64]
|
|
25704
25425
|
},
|
|
25705
25426
|
"$listeners$": undefined,
|
|
25706
25427
|
"$lazyBundleId$": "-",
|
|
25707
|
-
"$attrsToReflect$": [
|
|
25428
|
+
"$attrsToReflect$": []
|
|
25708
25429
|
}; }
|
|
25709
25430
|
}
|
|
25710
|
-
const
|
|
25711
|
-
|
|
25712
|
-
|
|
25713
|
-
|
|
25714
|
-
|
|
25715
|
-
|
|
25716
|
-
const
|
|
25717
|
-
|
|
25718
|
-
|
|
25719
|
-
|
|
25720
|
-
|
|
25721
|
-
|
|
25722
|
-
|
|
25723
|
-
|
|
25724
|
-
|
|
25725
|
-
|
|
25726
|
-
|
|
25727
|
-
|
|
25728
|
-
|
|
25729
|
-
|
|
25730
|
-
|
|
25731
|
-
|
|
25732
|
-
|
|
25733
|
-
|
|
25734
|
-
|
|
25735
|
-
|
|
25736
|
-
|
|
25737
|
-
|
|
25738
|
-
|
|
25739
|
-
|
|
25740
|
-
|
|
25431
|
+
const buttonWrapperClass = (button) => {
|
|
25432
|
+
return {
|
|
25433
|
+
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
25434
|
+
'picker-toolbar-button': true,
|
|
25435
|
+
};
|
|
25436
|
+
};
|
|
25437
|
+
const buttonClass$1 = (button) => {
|
|
25438
|
+
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
25439
|
+
};
|
|
25440
|
+
|
|
25441
|
+
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)}}";
|
|
25442
|
+
|
|
25443
|
+
/**
|
|
25444
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25445
|
+
*
|
|
25446
|
+
* @slot prefix - Content to show on the left side of the picker options.
|
|
25447
|
+
* @slot suffix - Content to show on the right side of the picker options.
|
|
25448
|
+
*/
|
|
25449
|
+
class PickerColumn {
|
|
25450
|
+
constructor(hostRef) {
|
|
25451
|
+
registerInstance(this, hostRef);
|
|
25452
|
+
this.ionChange = createEvent(this, "ionChange", 7);
|
|
25453
|
+
this.isScrolling = false;
|
|
25454
|
+
this.isColumnVisible = false;
|
|
25455
|
+
this.canExitInputMode = true;
|
|
25456
|
+
this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
|
|
25457
|
+
const { isColumnVisible, scrollEl } = this;
|
|
25458
|
+
if (isColumnVisible && scrollEl) {
|
|
25459
|
+
// (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
|
|
25460
|
+
const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
|
|
25461
|
+
if (scrollEl.scrollTop !== top) {
|
|
25462
|
+
/**
|
|
25463
|
+
* Setting this flag prevents input
|
|
25464
|
+
* mode from exiting in the picker column's
|
|
25465
|
+
* scroll callback. This is useful when the user manually
|
|
25466
|
+
* taps an item or types on the keyboard as both
|
|
25467
|
+
* of these can cause a scroll to occur.
|
|
25468
|
+
*/
|
|
25469
|
+
this.canExitInputMode = canExitInputMode;
|
|
25470
|
+
scrollEl.scroll({
|
|
25471
|
+
top,
|
|
25472
|
+
left: 0,
|
|
25473
|
+
behavior: smooth ? 'smooth' : undefined,
|
|
25474
|
+
});
|
|
25475
|
+
}
|
|
25741
25476
|
}
|
|
25742
|
-
return true;
|
|
25743
25477
|
};
|
|
25744
|
-
|
|
25745
|
-
|
|
25746
|
-
|
|
25747
|
-
|
|
25748
|
-
|
|
25749
|
-
|
|
25750
|
-
*/
|
|
25751
|
-
this.onFocusOut = (ev) => {
|
|
25752
|
-
// TODO(FW-2832): type
|
|
25753
|
-
const { relatedTarget } = ev;
|
|
25754
|
-
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN-INTERNAL' && relatedTarget !== this.inputEl)) {
|
|
25755
|
-
this.exitInputMode();
|
|
25478
|
+
this.setPickerItemActiveState = (item, isActive) => {
|
|
25479
|
+
if (isActive) {
|
|
25480
|
+
item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
|
|
25481
|
+
}
|
|
25482
|
+
else {
|
|
25483
|
+
item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
|
|
25756
25484
|
}
|
|
25757
25485
|
};
|
|
25758
25486
|
/**
|
|
25759
|
-
* When
|
|
25760
|
-
* the
|
|
25761
|
-
*
|
|
25487
|
+
* When ionInputModeChange is emitted, each column
|
|
25488
|
+
* needs to check if it is the one being made available
|
|
25489
|
+
* for text entry.
|
|
25762
25490
|
*/
|
|
25763
|
-
this.
|
|
25764
|
-
|
|
25765
|
-
const { target } = ev;
|
|
25766
|
-
/**
|
|
25767
|
-
* Due to browser differences in how/when focus
|
|
25768
|
-
* is dispatched on certain elements, we need to
|
|
25769
|
-
* make sure that this function only ever runs when
|
|
25770
|
-
* focusing a picker column.
|
|
25771
|
-
*/
|
|
25772
|
-
if (target.tagName !== 'ION-PICKER-COLUMN-INTERNAL') {
|
|
25491
|
+
this.inputModeChange = (ev) => {
|
|
25492
|
+
if (!this.numericInput) {
|
|
25773
25493
|
return;
|
|
25774
25494
|
}
|
|
25495
|
+
const { useInputMode, inputModeColumn } = ev.detail;
|
|
25775
25496
|
/**
|
|
25776
|
-
* If
|
|
25777
|
-
*
|
|
25778
|
-
* a picker column via mouse or
|
|
25779
|
-
* touch (i.e. a PointerEvent). As a result,
|
|
25780
|
-
* we should not enter/exit input mode
|
|
25781
|
-
* until the click event has fired, which happens
|
|
25782
|
-
* after the `focusin` event.
|
|
25783
|
-
*
|
|
25784
|
-
* Otherwise, the user likely focused
|
|
25785
|
-
* the column using their keyboard and
|
|
25786
|
-
* we should enter/exit input mode automatically.
|
|
25497
|
+
* If inputModeColumn is undefined then this means
|
|
25498
|
+
* all numericInput columns are being selected.
|
|
25787
25499
|
*/
|
|
25788
|
-
|
|
25789
|
-
|
|
25790
|
-
|
|
25791
|
-
|
|
25792
|
-
this.enterInputMode(columnEl, false);
|
|
25793
|
-
}
|
|
25794
|
-
else {
|
|
25795
|
-
this.exitInputMode();
|
|
25796
|
-
}
|
|
25500
|
+
const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
|
|
25501
|
+
if (!useInputMode || !isColumnActive) {
|
|
25502
|
+
this.setInputModeActive(false);
|
|
25503
|
+
return;
|
|
25797
25504
|
}
|
|
25505
|
+
this.setInputModeActive(true);
|
|
25798
25506
|
};
|
|
25799
25507
|
/**
|
|
25800
|
-
*
|
|
25801
|
-
*
|
|
25802
|
-
*
|
|
25508
|
+
* Setting isActive will cause a re-render.
|
|
25509
|
+
* As a result, we do not want to cause the
|
|
25510
|
+
* re-render mid scroll as this will cause
|
|
25511
|
+
* the picker column to jump back to
|
|
25512
|
+
* whatever value was selected at the
|
|
25513
|
+
* start of the scroll interaction.
|
|
25803
25514
|
*/
|
|
25804
|
-
this.
|
|
25805
|
-
|
|
25806
|
-
|
|
25807
|
-
|
|
25808
|
-
|
|
25515
|
+
this.setInputModeActive = (state) => {
|
|
25516
|
+
if (this.isScrolling) {
|
|
25517
|
+
this.scrollEndCallback = () => {
|
|
25518
|
+
this.isActive = state;
|
|
25519
|
+
};
|
|
25520
|
+
return;
|
|
25809
25521
|
}
|
|
25522
|
+
this.isActive = state;
|
|
25810
25523
|
};
|
|
25811
25524
|
/**
|
|
25812
|
-
*
|
|
25813
|
-
*
|
|
25814
|
-
*
|
|
25815
|
-
*
|
|
25816
|
-
* focus the column using the keyboard. When the
|
|
25817
|
-
* user completes the click, the onClick function
|
|
25818
|
-
* runs and runs the actionOnClick callback.
|
|
25525
|
+
* When the column scrolls, the component
|
|
25526
|
+
* needs to determine which item is centered
|
|
25527
|
+
* in the view and will emit an ionChange with
|
|
25528
|
+
* the item object.
|
|
25819
25529
|
*/
|
|
25820
|
-
this.
|
|
25821
|
-
|
|
25822
|
-
|
|
25823
|
-
|
|
25824
|
-
|
|
25825
|
-
|
|
25826
|
-
|
|
25827
|
-
|
|
25828
|
-
|
|
25829
|
-
|
|
25830
|
-
|
|
25530
|
+
this.initializeScrollListener = () => {
|
|
25531
|
+
/**
|
|
25532
|
+
* The haptics for the wheel picker are
|
|
25533
|
+
* an iOS-only feature. As a result, they should
|
|
25534
|
+
* be disabled on Android.
|
|
25535
|
+
*/
|
|
25536
|
+
const enableHaptics = isPlatform('ios');
|
|
25537
|
+
const { el, scrollEl } = this;
|
|
25538
|
+
let timeout;
|
|
25539
|
+
let activeEl = this.activeItem;
|
|
25540
|
+
const scrollCallback = () => {
|
|
25541
|
+
raf(() => {
|
|
25542
|
+
if (!scrollEl)
|
|
25543
|
+
return;
|
|
25544
|
+
if (timeout) {
|
|
25545
|
+
clearTimeout(timeout);
|
|
25546
|
+
timeout = undefined;
|
|
25547
|
+
}
|
|
25548
|
+
if (!this.isScrolling) {
|
|
25549
|
+
enableHaptics && hapticSelectionStart();
|
|
25550
|
+
this.isScrolling = true;
|
|
25551
|
+
}
|
|
25831
25552
|
/**
|
|
25832
|
-
*
|
|
25833
|
-
*
|
|
25834
|
-
* mode for that column or all columns.
|
|
25835
|
-
* Otherwise we should exit input mode
|
|
25836
|
-
* since we just tapped the highlight and
|
|
25837
|
-
* not a column.
|
|
25553
|
+
* Select item in the center of the column
|
|
25554
|
+
* which is the month/year that we want to select
|
|
25838
25555
|
*/
|
|
25839
|
-
|
|
25840
|
-
|
|
25841
|
-
|
|
25842
|
-
|
|
25843
|
-
|
|
25844
|
-
|
|
25845
|
-
|
|
25846
|
-
|
|
25847
|
-
|
|
25848
|
-
|
|
25849
|
-
|
|
25850
|
-
|
|
25851
|
-
|
|
25852
|
-
|
|
25853
|
-
|
|
25854
|
-
|
|
25855
|
-
|
|
25856
|
-
|
|
25857
|
-
|
|
25858
|
-
|
|
25859
|
-
|
|
25860
|
-
|
|
25556
|
+
const bbox = scrollEl.getBoundingClientRect();
|
|
25557
|
+
const centerX = bbox.x + bbox.width / 2;
|
|
25558
|
+
const centerY = bbox.y + bbox.height / 2;
|
|
25559
|
+
/**
|
|
25560
|
+
* elementFromPoint returns the top-most element.
|
|
25561
|
+
* This means that if an ion-backdrop is overlaying the
|
|
25562
|
+
* picker then the appropriate picker column option will
|
|
25563
|
+
* not be selected. To account for this, we use elementsFromPoint
|
|
25564
|
+
* and use an Array.find to find the appropriate column option
|
|
25565
|
+
* at that point.
|
|
25566
|
+
*
|
|
25567
|
+
* Additionally, the picker column could be used in the
|
|
25568
|
+
* Shadow DOM (i.e. in ion-datetime) so we need to make
|
|
25569
|
+
* sure we are choosing the correct host otherwise
|
|
25570
|
+
* the elements returns by elementsFromPoint will be
|
|
25571
|
+
* retargeted. To account for this, we check to see
|
|
25572
|
+
* if the picker column has a parent shadow root. If
|
|
25573
|
+
* so, we use that shadow root when doing elementsFromPoint.
|
|
25574
|
+
* Otherwise, we just use the document.
|
|
25575
|
+
*/
|
|
25576
|
+
const rootNode = el.getRootNode();
|
|
25577
|
+
const hasParentShadow = rootNode instanceof ShadowRoot;
|
|
25578
|
+
const referenceNode = hasParentShadow ? rootNode : doc;
|
|
25579
|
+
/**
|
|
25580
|
+
* If the reference node is undefined
|
|
25581
|
+
* then it's likely that doc is undefined
|
|
25582
|
+
* due to being in an SSR environment.
|
|
25583
|
+
*/
|
|
25584
|
+
if (referenceNode === undefined) {
|
|
25585
|
+
return;
|
|
25861
25586
|
}
|
|
25587
|
+
const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
|
|
25862
25588
|
/**
|
|
25863
|
-
*
|
|
25864
|
-
*
|
|
25865
|
-
* enter input mode for all columns.
|
|
25589
|
+
* elementsFromPoint can returns multiple elements
|
|
25590
|
+
* so find the relevant picker column option if one exists.
|
|
25866
25591
|
*/
|
|
25867
|
-
|
|
25868
|
-
|
|
25592
|
+
const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
|
|
25593
|
+
if (activeEl !== undefined) {
|
|
25594
|
+
this.setPickerItemActiveState(activeEl, false);
|
|
25595
|
+
}
|
|
25596
|
+
if (newActiveElement === undefined || newActiveElement.disabled) {
|
|
25597
|
+
return;
|
|
25598
|
+
}
|
|
25869
25599
|
/**
|
|
25870
|
-
* If
|
|
25871
|
-
*
|
|
25600
|
+
* If we are selecting a new value,
|
|
25601
|
+
* we need to run haptics again.
|
|
25872
25602
|
*/
|
|
25873
|
-
|
|
25874
|
-
|
|
25875
|
-
|
|
25876
|
-
|
|
25877
|
-
|
|
25878
|
-
|
|
25879
|
-
|
|
25880
|
-
|
|
25881
|
-
|
|
25882
|
-
|
|
25603
|
+
if (newActiveElement !== activeEl) {
|
|
25604
|
+
enableHaptics && hapticSelectionChanged();
|
|
25605
|
+
if (this.canExitInputMode) {
|
|
25606
|
+
/**
|
|
25607
|
+
* The native iOS wheel picker
|
|
25608
|
+
* only dismisses the keyboard
|
|
25609
|
+
* once the selected item has changed
|
|
25610
|
+
* as a result of a swipe
|
|
25611
|
+
* from the user. If `canExitInputMode` is
|
|
25612
|
+
* `false` then this means that the
|
|
25613
|
+
* scroll is happening as a result of
|
|
25614
|
+
* the `value` property programmatically changing
|
|
25615
|
+
* either by an application or by the user via the keyboard.
|
|
25616
|
+
*/
|
|
25617
|
+
this.exitInputMode();
|
|
25618
|
+
}
|
|
25619
|
+
}
|
|
25620
|
+
activeEl = newActiveElement;
|
|
25621
|
+
this.setPickerItemActiveState(newActiveElement, true);
|
|
25622
|
+
timeout = setTimeout(() => {
|
|
25623
|
+
this.isScrolling = false;
|
|
25624
|
+
enableHaptics && hapticSelectionEnd();
|
|
25625
|
+
/**
|
|
25626
|
+
* Certain tasks (such as those that
|
|
25627
|
+
* cause re-renders) should only be done
|
|
25628
|
+
* once scrolling has finished, otherwise
|
|
25629
|
+
* flickering may occur.
|
|
25630
|
+
*/
|
|
25631
|
+
const { scrollEndCallback } = this;
|
|
25632
|
+
if (scrollEndCallback) {
|
|
25633
|
+
scrollEndCallback();
|
|
25634
|
+
this.scrollEndCallback = undefined;
|
|
25635
|
+
}
|
|
25636
|
+
/**
|
|
25637
|
+
* Reset this flag as the
|
|
25638
|
+
* next scroll interaction could
|
|
25639
|
+
* be a scroll from the user. In this
|
|
25640
|
+
* case, we should exit input mode.
|
|
25641
|
+
*/
|
|
25642
|
+
this.canExitInputMode = true;
|
|
25643
|
+
this.setValue(newActiveElement.value);
|
|
25644
|
+
}, 250);
|
|
25645
|
+
});
|
|
25883
25646
|
};
|
|
25647
|
+
/**
|
|
25648
|
+
* Wrap this in an raf so that the scroll callback
|
|
25649
|
+
* does not fire when component is initially shown.
|
|
25650
|
+
*/
|
|
25651
|
+
raf(() => {
|
|
25652
|
+
if (!scrollEl)
|
|
25653
|
+
return;
|
|
25654
|
+
scrollEl.addEventListener('scroll', scrollCallback);
|
|
25655
|
+
this.destroyScrollListener = () => {
|
|
25656
|
+
scrollEl.removeEventListener('scroll', scrollCallback);
|
|
25657
|
+
};
|
|
25658
|
+
});
|
|
25884
25659
|
};
|
|
25885
25660
|
/**
|
|
25886
|
-
*
|
|
25887
|
-
*
|
|
25888
|
-
*
|
|
25889
|
-
*
|
|
25890
|
-
*
|
|
25891
|
-
* keyboard, picker columns receive an outline
|
|
25892
|
-
* to indicate they are focused. As a result,
|
|
25893
|
-
* we should not focus the hidden input as it
|
|
25894
|
-
* would cause the outline to go away, preventing
|
|
25895
|
-
* users from having any visual indication of which
|
|
25896
|
-
* column is focused.
|
|
25661
|
+
* Tells the parent picker to
|
|
25662
|
+
* exit text entry mode. This is only called
|
|
25663
|
+
* when the selected item changes during scroll, so
|
|
25664
|
+
* we know that the user likely wants to scroll
|
|
25665
|
+
* instead of type.
|
|
25897
25666
|
*/
|
|
25898
|
-
this.
|
|
25899
|
-
const {
|
|
25900
|
-
if (
|
|
25667
|
+
this.exitInputMode = () => {
|
|
25668
|
+
const { parentEl } = this;
|
|
25669
|
+
if (parentEl == null)
|
|
25901
25670
|
return;
|
|
25902
|
-
|
|
25671
|
+
parentEl.exitInputMode();
|
|
25903
25672
|
/**
|
|
25904
|
-
*
|
|
25905
|
-
*
|
|
25673
|
+
* setInputModeActive only takes
|
|
25674
|
+
* effect once scrolling stops to avoid
|
|
25675
|
+
* a component re-render while scrolling.
|
|
25676
|
+
* However, we want the visual active
|
|
25677
|
+
* indicator to go away immediately, so
|
|
25678
|
+
* we call classList.remove here.
|
|
25906
25679
|
*/
|
|
25907
|
-
|
|
25908
|
-
|
|
25909
|
-
|
|
25680
|
+
this.el.classList.remove('picker-column-active');
|
|
25681
|
+
};
|
|
25682
|
+
this.isActive = false;
|
|
25683
|
+
this.disabled = false;
|
|
25684
|
+
this.value = undefined;
|
|
25685
|
+
this.color = 'primary';
|
|
25686
|
+
this.numericInput = false;
|
|
25687
|
+
}
|
|
25688
|
+
valueChange() {
|
|
25689
|
+
if (this.isColumnVisible) {
|
|
25690
|
+
/**
|
|
25691
|
+
* Only scroll the active item into view when the picker column
|
|
25692
|
+
* is actively visible to the user.
|
|
25693
|
+
*/
|
|
25694
|
+
this.scrollActiveItemIntoView(true);
|
|
25695
|
+
}
|
|
25696
|
+
}
|
|
25697
|
+
/**
|
|
25698
|
+
* Only setup scroll listeners
|
|
25699
|
+
* when the picker is visible, otherwise
|
|
25700
|
+
* the container will have a scroll
|
|
25701
|
+
* height of 0px.
|
|
25702
|
+
*/
|
|
25703
|
+
componentWillLoad() {
|
|
25704
|
+
const visibleCallback = (entries) => {
|
|
25705
|
+
const ev = entries[0];
|
|
25706
|
+
if (ev.isIntersecting) {
|
|
25707
|
+
const { activeItem, el } = this;
|
|
25708
|
+
this.isColumnVisible = true;
|
|
25709
|
+
/**
|
|
25710
|
+
* Because this initial call to scrollActiveItemIntoView has to fire before
|
|
25711
|
+
* the scroll listener is set up, we need to manage the active class manually.
|
|
25712
|
+
*/
|
|
25713
|
+
const oldActive = getElementRoot(el).querySelector(`.${PICKER_ITEM_ACTIVE_CLASS}`);
|
|
25714
|
+
if (oldActive) {
|
|
25715
|
+
this.setPickerItemActiveState(oldActive, false);
|
|
25716
|
+
}
|
|
25717
|
+
this.scrollActiveItemIntoView();
|
|
25718
|
+
if (activeItem) {
|
|
25719
|
+
this.setPickerItemActiveState(activeItem, true);
|
|
25720
|
+
}
|
|
25721
|
+
this.initializeScrollListener();
|
|
25910
25722
|
}
|
|
25723
|
+
else {
|
|
25724
|
+
this.isColumnVisible = false;
|
|
25725
|
+
if (this.destroyScrollListener) {
|
|
25726
|
+
this.destroyScrollListener();
|
|
25727
|
+
this.destroyScrollListener = undefined;
|
|
25728
|
+
}
|
|
25729
|
+
}
|
|
25730
|
+
};
|
|
25731
|
+
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
25732
|
+
const parentEl = (this.parentEl = this.el.closest('ion-picker'));
|
|
25733
|
+
if (parentEl !== null) {
|
|
25734
|
+
// TODO(FW-2832): type
|
|
25735
|
+
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
25736
|
+
}
|
|
25737
|
+
}
|
|
25738
|
+
componentDidRender() {
|
|
25739
|
+
const { el, activeItem, isColumnVisible, value } = this;
|
|
25740
|
+
if (isColumnVisible && !activeItem) {
|
|
25741
|
+
const firstOption = el.querySelector('ion-picker-column-option');
|
|
25911
25742
|
/**
|
|
25912
|
-
* If
|
|
25913
|
-
*
|
|
25914
|
-
*
|
|
25915
|
-
*
|
|
25743
|
+
* If the picker column does not have an active item and the current value
|
|
25744
|
+
* does not match the first item in the picker column, that means
|
|
25745
|
+
* the value is out of bounds. In this case, we assign the value to the
|
|
25746
|
+
* first item to match the scroll position of the column.
|
|
25747
|
+
*
|
|
25916
25748
|
*/
|
|
25917
|
-
|
|
25918
|
-
|
|
25749
|
+
if (firstOption !== null && firstOption.value !== value) {
|
|
25750
|
+
this.setValue(firstOption.value);
|
|
25751
|
+
}
|
|
25752
|
+
}
|
|
25753
|
+
}
|
|
25754
|
+
/** @internal */
|
|
25755
|
+
async scrollActiveItemIntoView(smooth = false) {
|
|
25756
|
+
const activeEl = this.activeItem;
|
|
25757
|
+
if (activeEl) {
|
|
25758
|
+
this.centerPickerItemInView(activeEl, smooth, false);
|
|
25759
|
+
}
|
|
25760
|
+
}
|
|
25761
|
+
/**
|
|
25762
|
+
* Sets the value prop and fires the ionChange event.
|
|
25763
|
+
* This is used when we need to fire ionChange from
|
|
25764
|
+
* user-generated events that cannot be caught with normal
|
|
25765
|
+
* input/change event listeners.
|
|
25766
|
+
* @internal
|
|
25767
|
+
*/
|
|
25768
|
+
async setValue(value) {
|
|
25769
|
+
if (this.disabled === true || this.value === value) {
|
|
25770
|
+
return;
|
|
25771
|
+
}
|
|
25772
|
+
this.value = value;
|
|
25773
|
+
this.ionChange.emit({ value });
|
|
25774
|
+
}
|
|
25775
|
+
/**
|
|
25776
|
+
* Sets focus on the scrollable container within the picker column.
|
|
25777
|
+
* Use this method instead of the global `pickerColumn.focus()`.
|
|
25778
|
+
*/
|
|
25779
|
+
async setFocus() {
|
|
25780
|
+
if (this.scrollEl) {
|
|
25781
|
+
this.scrollEl.focus();
|
|
25782
|
+
}
|
|
25783
|
+
}
|
|
25784
|
+
get activeItem() {
|
|
25785
|
+
const { value } = this;
|
|
25786
|
+
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
25787
|
+
return options.find((option) => {
|
|
25919
25788
|
/**
|
|
25920
|
-
*
|
|
25921
|
-
*
|
|
25922
|
-
* focused as well as when it is not focused,
|
|
25923
|
-
* so we need to make sure we clean up any
|
|
25924
|
-
* old listeners.
|
|
25789
|
+
* If the whole picker column is disabled, the current value should appear active
|
|
25790
|
+
* If the current value item is specifically disabled, it should not appear active
|
|
25925
25791
|
*/
|
|
25926
|
-
if (
|
|
25927
|
-
|
|
25928
|
-
|
|
25929
|
-
|
|
25792
|
+
if (!this.disabled && option.disabled) {
|
|
25793
|
+
return false;
|
|
25794
|
+
}
|
|
25795
|
+
return option.value === value;
|
|
25796
|
+
});
|
|
25797
|
+
}
|
|
25798
|
+
render() {
|
|
25799
|
+
const { color, disabled, isActive, numericInput } = this;
|
|
25800
|
+
const mode = getIonMode$1(this);
|
|
25801
|
+
return (hAsync(Host, { class: createColorClasses$1(color, {
|
|
25802
|
+
[mode]: true,
|
|
25803
|
+
['picker-column-active']: isActive,
|
|
25804
|
+
['picker-column-numeric-input']: numericInput,
|
|
25805
|
+
['picker-column-disabled']: disabled,
|
|
25806
|
+
}) }, hAsync("slot", { name: "prefix" }), hAsync("div", { class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
|
|
25807
|
+
this.scrollEl = el;
|
|
25808
|
+
} }, 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" })));
|
|
25809
|
+
}
|
|
25810
|
+
get el() { return getElement(this); }
|
|
25811
|
+
static get watchers() { return {
|
|
25812
|
+
"value": ["valueChange"]
|
|
25813
|
+
}; }
|
|
25814
|
+
static get style() { return pickerColumnCss; }
|
|
25815
|
+
static get cmpMeta() { return {
|
|
25816
|
+
"$flags$": 9,
|
|
25817
|
+
"$tagName$": "ion-picker-column",
|
|
25818
|
+
"$members$": {
|
|
25819
|
+
"disabled": [4],
|
|
25820
|
+
"value": [1032],
|
|
25821
|
+
"color": [513],
|
|
25822
|
+
"numericInput": [4, "numeric-input"],
|
|
25823
|
+
"isActive": [32],
|
|
25824
|
+
"scrollActiveItemIntoView": [64],
|
|
25825
|
+
"setValue": [64],
|
|
25826
|
+
"setFocus": [64]
|
|
25827
|
+
},
|
|
25828
|
+
"$listeners$": undefined,
|
|
25829
|
+
"$lazyBundleId$": "-",
|
|
25830
|
+
"$attrsToReflect$": [["color", "color"]]
|
|
25831
|
+
}; }
|
|
25832
|
+
}
|
|
25833
|
+
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
25834
|
+
|
|
25835
|
+
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}}";
|
|
25836
|
+
|
|
25837
|
+
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)}";
|
|
25838
|
+
|
|
25839
|
+
/**
|
|
25840
|
+
* @internal
|
|
25841
|
+
*/
|
|
25842
|
+
class PickerColumnCmp {
|
|
25843
|
+
constructor(hostRef) {
|
|
25844
|
+
registerInstance(this, hostRef);
|
|
25845
|
+
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
25846
|
+
this.optHeight = 0;
|
|
25847
|
+
this.rotateFactor = 0;
|
|
25848
|
+
this.scaleFactor = 1;
|
|
25849
|
+
this.velocity = 0;
|
|
25850
|
+
this.y = 0;
|
|
25851
|
+
this.noAnimate = true;
|
|
25852
|
+
// `colDidChange` is a flag that gets set when the column is changed
|
|
25853
|
+
// dynamically. When this flag is set, the column will refresh
|
|
25854
|
+
// after the component re-renders to incorporate the new column data.
|
|
25855
|
+
// This is necessary because `this.refresh` queries for the option elements,
|
|
25856
|
+
// so it needs to wait for the latest elements to be available in the DOM.
|
|
25857
|
+
// Ex: column is created with 3 options. User updates the column data
|
|
25858
|
+
// to have 5 options. The column will still think it only has 3 options.
|
|
25859
|
+
this.colDidChange = false;
|
|
25860
|
+
this.col = undefined;
|
|
25861
|
+
}
|
|
25862
|
+
colChanged() {
|
|
25863
|
+
this.colDidChange = true;
|
|
25864
|
+
}
|
|
25865
|
+
async connectedCallback() {
|
|
25866
|
+
let pickerRotateFactor = 0;
|
|
25867
|
+
let pickerScaleFactor = 0.81;
|
|
25868
|
+
const mode = getIonMode$1(this);
|
|
25869
|
+
if (mode === 'ios') {
|
|
25870
|
+
pickerRotateFactor = -0.46;
|
|
25871
|
+
pickerScaleFactor = 1;
|
|
25872
|
+
}
|
|
25873
|
+
this.rotateFactor = pickerRotateFactor;
|
|
25874
|
+
this.scaleFactor = pickerScaleFactor;
|
|
25875
|
+
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
25876
|
+
el: this.el,
|
|
25877
|
+
gestureName: 'picker-swipe',
|
|
25878
|
+
gesturePriority: 100,
|
|
25879
|
+
threshold: 0,
|
|
25880
|
+
passive: false,
|
|
25881
|
+
onStart: (ev) => this.onStart(ev),
|
|
25882
|
+
onMove: (ev) => this.onMove(ev),
|
|
25883
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
25884
|
+
});
|
|
25885
|
+
this.gesture.enable();
|
|
25886
|
+
// Options have not been initialized yet
|
|
25887
|
+
// Animation must be disabled through the `noAnimate` flag
|
|
25888
|
+
// Otherwise, the options will render
|
|
25889
|
+
// at the top of the column and transition down
|
|
25890
|
+
this.tmrId = setTimeout(() => {
|
|
25891
|
+
this.noAnimate = false;
|
|
25892
|
+
// After initialization, `refresh()` will be called
|
|
25893
|
+
// At this point, animation will be enabled. The options will
|
|
25894
|
+
// animate as they are being selected.
|
|
25895
|
+
this.refresh(true);
|
|
25896
|
+
}, 250);
|
|
25897
|
+
}
|
|
25898
|
+
componentDidLoad() {
|
|
25899
|
+
this.onDomChange();
|
|
25900
|
+
}
|
|
25901
|
+
componentDidUpdate() {
|
|
25902
|
+
// Options may have changed since last update.
|
|
25903
|
+
if (this.colDidChange) {
|
|
25904
|
+
// Animation must be disabled through the `onDomChange` parameter.
|
|
25905
|
+
// Otherwise, the recently added options will render
|
|
25906
|
+
// at the top of the column and transition down
|
|
25907
|
+
this.onDomChange(true, false);
|
|
25908
|
+
this.colDidChange = false;
|
|
25909
|
+
}
|
|
25910
|
+
}
|
|
25911
|
+
disconnectedCallback() {
|
|
25912
|
+
if (this.rafId !== undefined)
|
|
25913
|
+
cancelAnimationFrame(this.rafId);
|
|
25914
|
+
if (this.tmrId)
|
|
25915
|
+
clearTimeout(this.tmrId);
|
|
25916
|
+
if (this.gesture) {
|
|
25917
|
+
this.gesture.destroy();
|
|
25918
|
+
this.gesture = undefined;
|
|
25919
|
+
}
|
|
25920
|
+
}
|
|
25921
|
+
emitColChange() {
|
|
25922
|
+
this.ionPickerColChange.emit(this.col);
|
|
25923
|
+
}
|
|
25924
|
+
setSelected(selectedIndex, duration) {
|
|
25925
|
+
// if there is a selected index, then figure out it's y position
|
|
25926
|
+
// if there isn't a selected index, then just use the top y position
|
|
25927
|
+
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
25928
|
+
this.velocity = 0;
|
|
25929
|
+
// set what y position we're at
|
|
25930
|
+
if (this.rafId !== undefined)
|
|
25931
|
+
cancelAnimationFrame(this.rafId);
|
|
25932
|
+
this.update(y, duration, true);
|
|
25933
|
+
this.emitColChange();
|
|
25934
|
+
}
|
|
25935
|
+
update(y, duration, saveY) {
|
|
25936
|
+
if (!this.optsEl) {
|
|
25937
|
+
return;
|
|
25938
|
+
}
|
|
25939
|
+
// ensure we've got a good round number :)
|
|
25940
|
+
let translateY = 0;
|
|
25941
|
+
let translateZ = 0;
|
|
25942
|
+
const { col, rotateFactor } = this;
|
|
25943
|
+
const prevSelected = col.selectedIndex;
|
|
25944
|
+
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
25945
|
+
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
25946
|
+
const scaleStr = `scale(${this.scaleFactor})`;
|
|
25947
|
+
const children = this.optsEl.children;
|
|
25948
|
+
for (let i = 0; i < children.length; i++) {
|
|
25949
|
+
const button = children[i];
|
|
25950
|
+
const opt = col.options[i];
|
|
25951
|
+
const optOffset = i * this.optHeight + y;
|
|
25952
|
+
let transform = '';
|
|
25953
|
+
if (rotateFactor !== 0) {
|
|
25954
|
+
const rotateX = optOffset * rotateFactor;
|
|
25955
|
+
if (Math.abs(rotateX) <= 90) {
|
|
25956
|
+
translateY = 0;
|
|
25957
|
+
translateZ = 90;
|
|
25958
|
+
transform = `rotateX(${rotateX}deg) `;
|
|
25959
|
+
}
|
|
25960
|
+
else {
|
|
25961
|
+
translateY = -9999;
|
|
25930
25962
|
}
|
|
25931
|
-
inputEl.focus();
|
|
25932
25963
|
}
|
|
25933
25964
|
else {
|
|
25934
|
-
|
|
25935
|
-
|
|
25936
|
-
el.removeEventListener('keypress', this.onKeyPress);
|
|
25937
|
-
};
|
|
25965
|
+
translateZ = 0;
|
|
25966
|
+
translateY = optOffset;
|
|
25938
25967
|
}
|
|
25939
|
-
|
|
25940
|
-
|
|
25941
|
-
|
|
25942
|
-
|
|
25943
|
-
if (!inputEl) {
|
|
25944
|
-
return;
|
|
25968
|
+
const selected = selectedIndex === i;
|
|
25969
|
+
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
25970
|
+
if (this.scaleFactor !== 1 && !selected) {
|
|
25971
|
+
transform += scaleStr;
|
|
25945
25972
|
}
|
|
25946
|
-
|
|
25947
|
-
|
|
25948
|
-
|
|
25949
|
-
|
|
25950
|
-
if (!Number.isNaN(parsedValue)) {
|
|
25951
|
-
inputEl.value += ev.key;
|
|
25952
|
-
this.onInputChange();
|
|
25973
|
+
// Update transition duration
|
|
25974
|
+
if (this.noAnimate) {
|
|
25975
|
+
opt.duration = 0;
|
|
25976
|
+
button.style.transitionDuration = '';
|
|
25953
25977
|
}
|
|
25954
|
-
|
|
25955
|
-
|
|
25956
|
-
|
|
25957
|
-
if (!inputEl || !inputModeColumn) {
|
|
25958
|
-
return;
|
|
25978
|
+
else if (duration !== opt.duration) {
|
|
25979
|
+
opt.duration = duration;
|
|
25980
|
+
button.style.transitionDuration = durationStr;
|
|
25959
25981
|
}
|
|
25960
|
-
|
|
25961
|
-
|
|
25962
|
-
|
|
25963
|
-
* value should be reset similar to how a
|
|
25964
|
-
* <select> behaves. So typing "34", waiting,
|
|
25965
|
-
* then typing "5" should select "05".
|
|
25966
|
-
*/
|
|
25967
|
-
if (singleColumnSearchTimeout) {
|
|
25968
|
-
clearTimeout(singleColumnSearchTimeout);
|
|
25982
|
+
// Update transform
|
|
25983
|
+
if (transform !== opt.transform) {
|
|
25984
|
+
opt.transform = transform;
|
|
25969
25985
|
}
|
|
25970
|
-
|
|
25971
|
-
inputEl.value = '';
|
|
25972
|
-
this.singleColumnSearchTimeout = undefined;
|
|
25973
|
-
}, 1000);
|
|
25986
|
+
button.style.transform = transform;
|
|
25974
25987
|
/**
|
|
25975
|
-
*
|
|
25976
|
-
*
|
|
25977
|
-
* to the left. So typing "456" would result in "56".
|
|
25978
|
-
* TODO: If we want to support more than just
|
|
25979
|
-
* time entry, we should update this value to be
|
|
25980
|
-
* the max length of all of the picker items.
|
|
25988
|
+
* Ensure that the select column
|
|
25989
|
+
* item has the selected class
|
|
25981
25990
|
*/
|
|
25982
|
-
|
|
25983
|
-
|
|
25984
|
-
|
|
25985
|
-
inputEl.value = newString;
|
|
25986
|
-
this.selectSingleColumn();
|
|
25987
|
-
return;
|
|
25991
|
+
opt.selected = selected;
|
|
25992
|
+
if (selected) {
|
|
25993
|
+
button.classList.add(PICKER_OPT_SELECTED);
|
|
25988
25994
|
}
|
|
25989
|
-
|
|
25990
|
-
|
|
25991
|
-
* first. For example, if the value of the input
|
|
25992
|
-
* is "1" and we entered "2", then the complete value
|
|
25993
|
-
* is "12" and we should select hour 12.
|
|
25994
|
-
*
|
|
25995
|
-
* Regex removes any leading zeros from values like "02",
|
|
25996
|
-
* but it keeps a single zero if there are only zeros in the string.
|
|
25997
|
-
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
25998
|
-
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
25999
|
-
*/
|
|
26000
|
-
const findItemFromCompleteValue = values.find(({ text }) => {
|
|
26001
|
-
const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
26002
|
-
return parsedText === inputEl.value;
|
|
26003
|
-
});
|
|
26004
|
-
if (findItemFromCompleteValue) {
|
|
26005
|
-
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
26006
|
-
return;
|
|
25995
|
+
else {
|
|
25996
|
+
button.classList.remove(PICKER_OPT_SELECTED);
|
|
26007
25997
|
}
|
|
26008
|
-
|
|
26009
|
-
|
|
26010
|
-
|
|
26011
|
-
|
|
26012
|
-
|
|
26013
|
-
|
|
26014
|
-
|
|
26015
|
-
|
|
25998
|
+
}
|
|
25999
|
+
this.col.prevSelected = prevSelected;
|
|
26000
|
+
if (saveY) {
|
|
26001
|
+
this.y = y;
|
|
26002
|
+
}
|
|
26003
|
+
if (this.lastIndex !== selectedIndex) {
|
|
26004
|
+
// have not set a last index yet
|
|
26005
|
+
hapticSelectionChanged();
|
|
26006
|
+
this.lastIndex = selectedIndex;
|
|
26007
|
+
}
|
|
26008
|
+
}
|
|
26009
|
+
decelerate() {
|
|
26010
|
+
if (this.velocity !== 0) {
|
|
26011
|
+
// still decelerating
|
|
26012
|
+
this.velocity *= DECELERATION_FRICTION;
|
|
26013
|
+
// do not let it go slower than a velocity of 1
|
|
26014
|
+
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
26015
|
+
let y = this.y + this.velocity;
|
|
26016
|
+
if (y > this.minY) {
|
|
26017
|
+
// whoops, it's trying to scroll up farther than the options we have!
|
|
26018
|
+
y = this.minY;
|
|
26019
|
+
this.velocity = 0;
|
|
26016
26020
|
}
|
|
26017
|
-
|
|
26018
|
-
|
|
26019
|
-
|
|
26020
|
-
|
|
26021
|
-
|
|
26022
|
-
|
|
26023
|
-
|
|
26024
|
-
|
|
26025
|
-
|
|
26026
|
-
|
|
26027
|
-
|
|
26028
|
-
|
|
26021
|
+
else if (y < this.maxY) {
|
|
26022
|
+
// gahh, it's trying to scroll down farther than we can!
|
|
26023
|
+
y = this.maxY;
|
|
26024
|
+
this.velocity = 0;
|
|
26025
|
+
}
|
|
26026
|
+
this.update(y, 0, true);
|
|
26027
|
+
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
26028
|
+
if (notLockedIn) {
|
|
26029
|
+
// isn't locked in yet, keep decelerating until it is
|
|
26030
|
+
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
26031
|
+
}
|
|
26032
|
+
else {
|
|
26033
|
+
this.velocity = 0;
|
|
26034
|
+
this.emitColChange();
|
|
26035
|
+
hapticSelectionEnd();
|
|
26036
|
+
}
|
|
26037
|
+
}
|
|
26038
|
+
else if (this.y % this.optHeight !== 0) {
|
|
26039
|
+
// needs to still get locked into a position so options line up
|
|
26040
|
+
const currentPos = Math.abs(this.y % this.optHeight);
|
|
26041
|
+
// create a velocity in the direction it needs to scroll
|
|
26042
|
+
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
26043
|
+
this.decelerate();
|
|
26044
|
+
}
|
|
26045
|
+
}
|
|
26046
|
+
indexForY(y) {
|
|
26047
|
+
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
26048
|
+
}
|
|
26049
|
+
onStart(detail) {
|
|
26050
|
+
// We have to prevent default in order to block scrolling under the picker
|
|
26051
|
+
// but we DO NOT have to stop propagation, since we still want
|
|
26052
|
+
// some "click" events to capture
|
|
26053
|
+
if (detail.event.cancelable) {
|
|
26054
|
+
detail.event.preventDefault();
|
|
26055
|
+
}
|
|
26056
|
+
detail.event.stopPropagation();
|
|
26057
|
+
hapticSelectionStart();
|
|
26058
|
+
// reset everything
|
|
26059
|
+
if (this.rafId !== undefined)
|
|
26060
|
+
cancelAnimationFrame(this.rafId);
|
|
26061
|
+
const options = this.col.options;
|
|
26062
|
+
let minY = options.length - 1;
|
|
26063
|
+
let maxY = 0;
|
|
26064
|
+
for (let i = 0; i < options.length; i++) {
|
|
26065
|
+
if (!options[i].disabled) {
|
|
26066
|
+
minY = Math.min(minY, i);
|
|
26067
|
+
maxY = Math.max(maxY, i);
|
|
26068
|
+
}
|
|
26069
|
+
}
|
|
26070
|
+
this.minY = -(minY * this.optHeight);
|
|
26071
|
+
this.maxY = -(maxY * this.optHeight);
|
|
26072
|
+
}
|
|
26073
|
+
onMove(detail) {
|
|
26074
|
+
if (detail.event.cancelable) {
|
|
26075
|
+
detail.event.preventDefault();
|
|
26076
|
+
}
|
|
26077
|
+
detail.event.stopPropagation();
|
|
26078
|
+
// update the scroll position relative to pointer start position
|
|
26079
|
+
let y = this.y + detail.deltaY;
|
|
26080
|
+
if (y > this.minY) {
|
|
26081
|
+
// scrolling up higher than scroll area
|
|
26082
|
+
y = Math.pow(y, 0.8);
|
|
26083
|
+
this.bounceFrom = y;
|
|
26084
|
+
}
|
|
26085
|
+
else if (y < this.maxY) {
|
|
26086
|
+
// scrolling down below scroll area
|
|
26087
|
+
y += Math.pow(this.maxY - y, 0.9);
|
|
26088
|
+
this.bounceFrom = y;
|
|
26089
|
+
}
|
|
26090
|
+
else {
|
|
26091
|
+
this.bounceFrom = 0;
|
|
26092
|
+
}
|
|
26093
|
+
this.update(y, 0, false);
|
|
26094
|
+
}
|
|
26095
|
+
onEnd(detail) {
|
|
26096
|
+
if (this.bounceFrom > 0) {
|
|
26097
|
+
// bounce back up
|
|
26098
|
+
this.update(this.minY, 100, true);
|
|
26099
|
+
this.emitColChange();
|
|
26100
|
+
return;
|
|
26101
|
+
}
|
|
26102
|
+
else if (this.bounceFrom < 0) {
|
|
26103
|
+
// bounce back down
|
|
26104
|
+
this.update(this.maxY, 100, true);
|
|
26105
|
+
this.emitColChange();
|
|
26106
|
+
return;
|
|
26107
|
+
}
|
|
26108
|
+
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
26109
|
+
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
26110
|
+
const opt = detail.event.target.closest('.picker-opt');
|
|
26111
|
+
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
26112
|
+
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
26029
26113
|
}
|
|
26030
|
-
}
|
|
26031
|
-
|
|
26032
|
-
|
|
26033
|
-
if (
|
|
26034
|
-
|
|
26114
|
+
}
|
|
26115
|
+
else {
|
|
26116
|
+
this.y += detail.deltaY;
|
|
26117
|
+
if (Math.abs(detail.velocityY) < 0.05) {
|
|
26118
|
+
const isScrollingUp = detail.deltaY > 0;
|
|
26119
|
+
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
26120
|
+
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
26121
|
+
this.velocity = Math.abs(this.velocity) * -1;
|
|
26122
|
+
}
|
|
26123
|
+
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
26124
|
+
this.velocity = Math.abs(this.velocity);
|
|
26125
|
+
}
|
|
26035
26126
|
}
|
|
26036
|
-
|
|
26037
|
-
|
|
26038
|
-
|
|
26039
|
-
|
|
26040
|
-
|
|
26041
|
-
|
|
26042
|
-
|
|
26043
|
-
|
|
26044
|
-
|
|
26045
|
-
|
|
26046
|
-
|
|
26047
|
-
|
|
26048
|
-
* possible that users are trying to type `09`
|
|
26049
|
-
* or `11` into the hour field, so we should look
|
|
26050
|
-
* at that first.
|
|
26051
|
-
*/
|
|
26052
|
-
const firstCharacter = inputEl.value.substring(0, 1);
|
|
26053
|
-
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
26054
|
-
this.searchColumn(firstColumn, value);
|
|
26055
|
-
/**
|
|
26056
|
-
* If only checked the first value,
|
|
26057
|
-
* we can check the second value
|
|
26058
|
-
* for a match in the minutes column
|
|
26059
|
-
*/
|
|
26060
|
-
if (value.length === 1) {
|
|
26061
|
-
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
26062
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
26063
|
-
}
|
|
26064
|
-
break;
|
|
26065
|
-
case 3:
|
|
26066
|
-
/**
|
|
26067
|
-
* If the first character is `0` or `1` it is
|
|
26068
|
-
* possible that users are trying to type `09`
|
|
26069
|
-
* or `11` into the hour field, so we should look
|
|
26070
|
-
* at that first.
|
|
26071
|
-
*/
|
|
26072
|
-
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
26073
|
-
value =
|
|
26074
|
-
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
26075
|
-
? inputEl.value.substring(0, 2)
|
|
26076
|
-
: firstCharacterAgain;
|
|
26077
|
-
this.searchColumn(firstColumn, value);
|
|
26078
|
-
/**
|
|
26079
|
-
* If only checked the first value,
|
|
26080
|
-
* we can check the second value
|
|
26081
|
-
* for a match in the minutes column
|
|
26082
|
-
*/
|
|
26083
|
-
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
26084
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
26085
|
-
break;
|
|
26086
|
-
case 4:
|
|
26087
|
-
/**
|
|
26088
|
-
* If the first character is `0` or `1` it is
|
|
26089
|
-
* possible that users are trying to type `09`
|
|
26090
|
-
* or `11` into the hour field, so we should look
|
|
26091
|
-
* at that first.
|
|
26092
|
-
*/
|
|
26093
|
-
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
26094
|
-
value =
|
|
26095
|
-
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
26096
|
-
? inputEl.value.substring(0, 2)
|
|
26097
|
-
: firstCharacterAgainAgain;
|
|
26098
|
-
this.searchColumn(firstColumn, value);
|
|
26099
|
-
/**
|
|
26100
|
-
* If only checked the first value,
|
|
26101
|
-
* we can check the second value
|
|
26102
|
-
* for a match in the minutes column
|
|
26103
|
-
*/
|
|
26104
|
-
const minuteValueAgain = value.length === 1
|
|
26105
|
-
? inputEl.value.substring(1, inputEl.value.length)
|
|
26106
|
-
: inputEl.value.substring(2, inputEl.value.length);
|
|
26107
|
-
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
26108
|
-
break;
|
|
26109
|
-
default:
|
|
26110
|
-
const startIndex = inputEl.value.length - 4;
|
|
26111
|
-
const newString = inputEl.value.substring(startIndex);
|
|
26112
|
-
inputEl.value = newString;
|
|
26113
|
-
this.selectMultiColumn();
|
|
26114
|
-
break;
|
|
26127
|
+
this.decelerate();
|
|
26128
|
+
}
|
|
26129
|
+
}
|
|
26130
|
+
refresh(forceRefresh, animated) {
|
|
26131
|
+
var _a;
|
|
26132
|
+
let min = this.col.options.length - 1;
|
|
26133
|
+
let max = 0;
|
|
26134
|
+
const options = this.col.options;
|
|
26135
|
+
for (let i = 0; i < options.length; i++) {
|
|
26136
|
+
if (!options[i].disabled) {
|
|
26137
|
+
min = Math.min(min, i);
|
|
26138
|
+
max = Math.max(max, i);
|
|
26115
26139
|
}
|
|
26116
|
-
}
|
|
26140
|
+
}
|
|
26117
26141
|
/**
|
|
26118
|
-
*
|
|
26119
|
-
*
|
|
26120
|
-
*
|
|
26142
|
+
* Only update selected value if column has a
|
|
26143
|
+
* velocity of 0. If it does not, then the
|
|
26144
|
+
* column is animating might land on
|
|
26145
|
+
* a value different than the value at
|
|
26146
|
+
* selectedIndex
|
|
26121
26147
|
*/
|
|
26122
|
-
this.
|
|
26123
|
-
|
|
26124
|
-
|
|
26125
|
-
|
|
26126
|
-
|
|
26127
|
-
|
|
26128
|
-
|
|
26129
|
-
|
|
26130
|
-
|
|
26131
|
-
|
|
26132
|
-
|
|
26133
|
-
|
|
26148
|
+
if (this.velocity !== 0) {
|
|
26149
|
+
return;
|
|
26150
|
+
}
|
|
26151
|
+
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
26152
|
+
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
26153
|
+
const y = selectedIndex * this.optHeight * -1;
|
|
26154
|
+
const duration = animated ? TRANSITION_DURATION : 0;
|
|
26155
|
+
this.velocity = 0;
|
|
26156
|
+
this.update(y, duration, true);
|
|
26157
|
+
}
|
|
26158
|
+
}
|
|
26159
|
+
onDomChange(forceRefresh, animated) {
|
|
26160
|
+
const colEl = this.optsEl;
|
|
26161
|
+
if (colEl) {
|
|
26162
|
+
// DOM READ
|
|
26163
|
+
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
26164
|
+
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
26165
|
+
}
|
|
26166
|
+
this.refresh(forceRefresh, animated);
|
|
26167
|
+
}
|
|
26168
|
+
render() {
|
|
26169
|
+
const col = this.col;
|
|
26170
|
+
const mode = getIonMode$1(this);
|
|
26171
|
+
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: {
|
|
26172
|
+
'max-width': this.col.columnWidth,
|
|
26173
|
+
} }, 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))));
|
|
26174
|
+
}
|
|
26175
|
+
get el() { return getElement(this); }
|
|
26176
|
+
static get watchers() { return {
|
|
26177
|
+
"col": ["colChanged"]
|
|
26178
|
+
}; }
|
|
26179
|
+
static get style() { return {
|
|
26180
|
+
ios: pickerColumnIosCss,
|
|
26181
|
+
md: pickerColumnMdCss
|
|
26182
|
+
}; }
|
|
26183
|
+
static get cmpMeta() { return {
|
|
26184
|
+
"$flags$": 32,
|
|
26185
|
+
"$tagName$": "ion-picker-legacy-column",
|
|
26186
|
+
"$members$": {
|
|
26187
|
+
"col": [16]
|
|
26188
|
+
},
|
|
26189
|
+
"$listeners$": undefined,
|
|
26190
|
+
"$lazyBundleId$": "-",
|
|
26191
|
+
"$attrsToReflect$": []
|
|
26192
|
+
}; }
|
|
26193
|
+
}
|
|
26194
|
+
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
26195
|
+
const DECELERATION_FRICTION = 0.97;
|
|
26196
|
+
const MAX_PICKER_SPEED = 90;
|
|
26197
|
+
const TRANSITION_DURATION = 150;
|
|
26198
|
+
|
|
26199
|
+
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}";
|
|
26200
|
+
|
|
26201
|
+
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)}";
|
|
26202
|
+
|
|
26203
|
+
class PickerColumnOption {
|
|
26204
|
+
constructor(hostRef) {
|
|
26205
|
+
registerInstance(this, hostRef);
|
|
26134
26206
|
/**
|
|
26135
|
-
*
|
|
26136
|
-
*
|
|
26137
|
-
*
|
|
26207
|
+
* We keep track of the parent picker column
|
|
26208
|
+
* so we can update the value of it when
|
|
26209
|
+
* clicking an enable option.
|
|
26138
26210
|
*/
|
|
26139
|
-
this.
|
|
26140
|
-
|
|
26141
|
-
|
|
26142
|
-
|
|
26143
|
-
|
|
26144
|
-
});
|
|
26145
|
-
};
|
|
26211
|
+
this.pickerColumn = null;
|
|
26212
|
+
this.ariaLabel = null;
|
|
26213
|
+
this.disabled = false;
|
|
26214
|
+
this.value = undefined;
|
|
26215
|
+
this.color = 'primary';
|
|
26146
26216
|
}
|
|
26147
26217
|
/**
|
|
26148
|
-
*
|
|
26149
|
-
*
|
|
26150
|
-
*
|
|
26151
|
-
*
|
|
26152
|
-
* in ion-datetime should not cause
|
|
26153
|
-
* a card modal to swipe to close.
|
|
26218
|
+
* The aria-label of the option has changed after the
|
|
26219
|
+
* first render and needs to be updated within the component.
|
|
26220
|
+
*
|
|
26221
|
+
* @param ariaLbl The new aria-label value.
|
|
26154
26222
|
*/
|
|
26155
|
-
|
|
26156
|
-
|
|
26223
|
+
onAriaLabelChange(ariaLbl) {
|
|
26224
|
+
this.ariaLabel = ariaLbl;
|
|
26157
26225
|
}
|
|
26158
26226
|
componentWillLoad() {
|
|
26159
|
-
|
|
26160
|
-
|
|
26227
|
+
const inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
|
|
26228
|
+
/**
|
|
26229
|
+
* The initial value of `aria-label` needs to be set for
|
|
26230
|
+
* the first render.
|
|
26231
|
+
|
|
26232
|
+
*/
|
|
26233
|
+
this.ariaLabel = inheritedAttributes['aria-label'] || null;
|
|
26234
|
+
}
|
|
26235
|
+
connectedCallback() {
|
|
26236
|
+
this.pickerColumn = this.el.closest('ion-picker-column');
|
|
26237
|
+
}
|
|
26238
|
+
disconnectedCallback() {
|
|
26239
|
+
this.pickerColumn = null;
|
|
26161
26240
|
}
|
|
26162
26241
|
/**
|
|
26163
|
-
*
|
|
26164
|
-
*
|
|
26165
|
-
*
|
|
26166
|
-
*
|
|
26242
|
+
* The column options can load at any time
|
|
26243
|
+
* so the options needs to tell the
|
|
26244
|
+
* parent picker column when it is loaded
|
|
26245
|
+
* so the picker column can ensure it is
|
|
26246
|
+
* centered in the view.
|
|
26247
|
+
*
|
|
26248
|
+
* We intentionally run this for every
|
|
26249
|
+
* option. If we only ran this from
|
|
26250
|
+
* the selected option then if the newly
|
|
26251
|
+
* loaded options were not selected then
|
|
26252
|
+
* scrollActiveItemIntoView would not be called.
|
|
26167
26253
|
*/
|
|
26168
|
-
|
|
26169
|
-
const {
|
|
26170
|
-
if (
|
|
26171
|
-
|
|
26254
|
+
componentDidLoad() {
|
|
26255
|
+
const { pickerColumn } = this;
|
|
26256
|
+
if (pickerColumn !== null) {
|
|
26257
|
+
pickerColumn.scrollActiveItemIntoView();
|
|
26172
26258
|
}
|
|
26173
|
-
|
|
26174
|
-
|
|
26175
|
-
|
|
26176
|
-
|
|
26177
|
-
|
|
26178
|
-
|
|
26179
|
-
|
|
26259
|
+
}
|
|
26260
|
+
/**
|
|
26261
|
+
* When an option is clicked, update the
|
|
26262
|
+
* parent picker column value. This
|
|
26263
|
+
* component will handle centering the option
|
|
26264
|
+
* in the column view.
|
|
26265
|
+
*/
|
|
26266
|
+
onClick() {
|
|
26267
|
+
const { pickerColumn } = this;
|
|
26268
|
+
if (pickerColumn !== null) {
|
|
26269
|
+
pickerColumn.setValue(this.value);
|
|
26180
26270
|
}
|
|
26181
|
-
this.emitInputModeChange();
|
|
26182
26271
|
}
|
|
26183
26272
|
render() {
|
|
26184
|
-
|
|
26273
|
+
const { color, disabled, ariaLabel } = this;
|
|
26274
|
+
const mode = getIonMode$1(this);
|
|
26275
|
+
return (hAsync(Host, { class: createColorClasses$1(color, {
|
|
26276
|
+
[mode]: true,
|
|
26277
|
+
['option-disabled']: disabled,
|
|
26278
|
+
}) }, hAsync("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", null))));
|
|
26185
26279
|
}
|
|
26186
26280
|
get el() { return getElement(this); }
|
|
26281
|
+
static get watchers() { return {
|
|
26282
|
+
"aria-label": ["onAriaLabelChange"]
|
|
26283
|
+
}; }
|
|
26187
26284
|
static get style() { return {
|
|
26188
|
-
ios:
|
|
26189
|
-
md:
|
|
26285
|
+
ios: pickerColumnOptionIosCss,
|
|
26286
|
+
md: pickerColumnOptionMdCss
|
|
26190
26287
|
}; }
|
|
26191
26288
|
static get cmpMeta() { return {
|
|
26192
26289
|
"$flags$": 41,
|
|
26193
|
-
"$tagName$": "ion-picker-
|
|
26290
|
+
"$tagName$": "ion-picker-column-option",
|
|
26194
26291
|
"$members$": {
|
|
26195
|
-
"
|
|
26292
|
+
"disabled": [4],
|
|
26293
|
+
"value": [8],
|
|
26294
|
+
"color": [513],
|
|
26295
|
+
"ariaLabel": [32]
|
|
26196
26296
|
},
|
|
26197
|
-
"$listeners$":
|
|
26297
|
+
"$listeners$": undefined,
|
|
26198
26298
|
"$lazyBundleId$": "-",
|
|
26199
|
-
"$attrsToReflect$": []
|
|
26299
|
+
"$attrsToReflect$": [["color", "color"]]
|
|
26200
26300
|
}; }
|
|
26201
26301
|
}
|
|
26202
26302
|
|
|
@@ -27871,15 +27971,7 @@ class RadioGroup {
|
|
|
27871
27971
|
* using the `name` attribute.
|
|
27872
27972
|
*/
|
|
27873
27973
|
const selectedRadio = ev.target && ev.target.closest('ion-radio');
|
|
27874
|
-
|
|
27875
|
-
* Our current disabled prop definition causes Stencil to mark it
|
|
27876
|
-
* as optional. While this is not desired, fixing this behavior
|
|
27877
|
-
* in Stencil is a significant breaking change, so this effort is
|
|
27878
|
-
* being de-risked in STENCIL-917. Until then, we compromise
|
|
27879
|
-
* here by checking for falsy `disabled` values instead of strictly
|
|
27880
|
-
* checking `disabled === false`.
|
|
27881
|
-
*/
|
|
27882
|
-
if (selectedRadio && !selectedRadio.disabled) {
|
|
27974
|
+
if (selectedRadio && selectedRadio.disabled === false) {
|
|
27883
27975
|
const currentValue = this.value;
|
|
27884
27976
|
const newValue = selectedRadio.value;
|
|
27885
27977
|
if (newValue !== currentValue) {
|
|
@@ -35626,10 +35718,11 @@ registerComponents([
|
|
|
35626
35718
|
Nav,
|
|
35627
35719
|
NavLink,
|
|
35628
35720
|
Note,
|
|
35721
|
+
Picker$1,
|
|
35629
35722
|
Picker,
|
|
35723
|
+
PickerColumn,
|
|
35630
35724
|
PickerColumnCmp,
|
|
35631
|
-
|
|
35632
|
-
PickerInternal,
|
|
35725
|
+
PickerColumnOption,
|
|
35633
35726
|
Popover,
|
|
35634
35727
|
ProgressBar,
|
|
35635
35728
|
Radio,
|