@ionic/core 7.5.7-dev.11701201960.104b3a1f → 7.5.7-dev.11701203423.1b6a8829
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/backdrop.js +12 -0
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/icon.js +14 -23
- package/components/index7.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +61 -28
- package/components/ion-picker-column-internal.d.ts +11 -0
- package/components/ion-picker-column-internal.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
- package/components/ion-picker-internal.js +9 -0
- package/components/ion-picker.js +299 -1
- package/components/overlays.js +4 -11
- package/components/picker-column-internal.js +390 -0
- package/components/picker-column.js +320 -331
- package/components/{picker.js → picker-internal.js} +16 -16
- package/dist/cjs/{button-active-cd07b55b.js → button-active-af897e0e.js} +1 -1
- package/dist/cjs/{data-4845b494.js → data-c8d21093.js} +1 -1
- package/dist/cjs/{gesture-controller-d6a3f907.js → gesture-controller-b46721be.js} +0 -1
- package/dist/cjs/{index-0f8b33f8.js → index-0ee995e4.js} +1 -1
- package/dist/cjs/{index-09471526.js → index-5ea49600.js} +1 -1
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
- 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-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-backdrop.cjs.entry.js +12 -0
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +14 -23
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +40 -27
- package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-input.cjs.entry.js +1 -1
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-item_8.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +1 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
- 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.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +9 -9
- package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +13 -13
- package/dist/cjs/ion-popover.cjs.entry.js +1 -2
- package/dist/cjs/ion-range.cjs.entry.js +1 -1
- package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.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 -3
- package/dist/cjs/ion-toast.cjs.entry.js +1 -2
- package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-dbb71984.js → overlays-2ffc5f27.js} +4 -11
- package/dist/cjs/{swipe-back-a6dc6e5d.js → swipe-back-d0412fb6.js} +2 -2
- package/dist/collection/collection-manifest.json +6 -6
- package/dist/collection/components/backdrop/backdrop.js +12 -0
- package/dist/collection/components/content/content.css +4 -0
- package/dist/collection/components/datetime/datetime.ios.css +25 -84
- package/dist/collection/components/datetime/datetime.js +29 -14
- package/dist/collection/components/datetime/datetime.md.css +25 -89
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +5 -5
- 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 +2 -2
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/picker/picker.ios.css +205 -100
- package/dist/collection/components/picker/picker.js +735 -463
- package/dist/collection/components/picker/picker.md.css +194 -98
- package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -106
- package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-column/picker-column.ios.css +176 -59
- package/dist/collection/components/picker-column/picker-column.js +333 -478
- package/dist/collection/components/picker-column/picker-column.md.css +113 -63
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +138 -0
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.md.css → picker-column-internal/picker-column-internal.md.css} +63 -113
- package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +7 -7
- package/dist/collection/components/{picker-column/test/disabled/picker-column.e2e.js → picker-column-internal/test/disabled/picker-column-internal.e2e.js} +39 -39
- package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
- package/dist/collection/components/picker-internal/picker-internal.js +544 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.ios.css → picker-internal/picker-internal.md.css} +101 -98
- package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
- package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +20 -20
- package/dist/collection/utils/gesture/gesture-controller.js +1 -1
- package/dist/collection/utils/overlays.js +4 -11
- package/dist/docs.json +40 -322
- package/dist/esm/{button-active-5b0516e7.js → button-active-ce5cba4c.js} +1 -1
- package/dist/esm/{data-12e24f00.js → data-44d9e816.js} +1 -1
- package/dist/esm/{gesture-controller-3723db7c.js → gesture-controller-0fa396c4.js} +1 -1
- package/dist/esm/{index-c132c5f1.js → index-d1a56aed.js} +1 -1
- package/dist/esm/{index-32cbee52.js → index-ff313b19.js} +2 -2
- package/dist/esm/index.js +3 -3
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- 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-back-button.entry.js +1 -1
- package/dist/esm/ion-backdrop.entry.js +12 -0
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +14 -23
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +39 -26
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +1 -1
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-item_8.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +1 -2
- package/dist/esm/ion-menu_3.entry.js +4 -4
- 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.entry.js → ion-picker-column-internal.entry.js} +9 -9
- package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +13 -13
- package/dist/esm/ion-popover.entry.js +1 -2
- package/dist/esm/ion-range.entry.js +1 -1
- package/dist/esm/ion-refresher_2.entry.js +4 -4
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +2 -3
- package/dist/esm/ion-toast.entry.js +1 -2
- package/dist/esm/ion-toggle.entry.js +2 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-789cd7a7.js → overlays-6c9feb7e.js} +4 -11
- package/dist/esm/{swipe-back-cc4c2bcb.js → swipe-back-0f3bfc8e.js} +2 -2
- package/dist/esm-es5/{button-active-5b0516e7.js → button-active-ce5cba4c.js} +1 -1
- package/dist/esm-es5/{gesture-controller-3723db7c.js → gesture-controller-0fa396c4.js} +1 -1
- package/dist/esm-es5/{index-32cbee52.js → index-ff313b19.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
- package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-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-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-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-6c9feb7e.js +4 -0
- package/dist/esm-es5/swipe-back-0f3bfc8e.js +4 -0
- package/dist/html.html-data.json +1 -96
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-14aca3fb.entry.js → p-04dca48d.entry.js} +1 -1
- package/dist/ionic/{p-a8e68fd9.entry.js → p-0838e6bb.entry.js} +1 -1
- package/dist/ionic/{p-a57f223c.system.js → p-09d142b3.system.js} +1 -1
- package/dist/ionic/p-0d8e9393.entry.js +4 -0
- package/dist/ionic/{p-abacb44b.system.entry.js → p-14923cd7.system.entry.js} +1 -1
- package/dist/ionic/p-18e01b30.system.entry.js +4 -0
- package/dist/ionic/p-19a7c660.system.entry.js +4 -0
- package/dist/ionic/{p-9b5301cc.system.entry.js → p-1cb5f2f8.system.entry.js} +1 -1
- package/dist/ionic/p-1e5165db.system.entry.js +4 -0
- package/dist/ionic/p-29adc040.entry.js +4 -0
- package/dist/ionic/p-29fe18ef.entry.js +4 -0
- package/dist/ionic/{p-56224549.entry.js → p-3de79805.entry.js} +1 -1
- package/dist/ionic/p-40903d34.system.js +1 -1
- package/dist/ionic/{p-664d2b07.system.entry.js → p-42435018.system.entry.js} +1 -1
- package/dist/ionic/p-431151f2.entry.js +4 -0
- package/dist/ionic/{p-cb62e3fc.system.entry.js → p-4c80afe1.system.entry.js} +1 -1
- package/dist/ionic/{p-d3952bd5.system.entry.js → p-4d786d1f.system.entry.js} +1 -1
- package/dist/ionic/{p-b6a8588f.entry.js → p-4fa201a7.entry.js} +1 -1
- package/dist/ionic/{p-ee800093.entry.js → p-52360c7a.entry.js} +1 -1
- package/dist/ionic/p-5bd4e009.entry.js +4 -0
- package/dist/ionic/{p-b3e79338.system.entry.js → p-61c30156.system.entry.js} +1 -1
- package/dist/ionic/{p-f5a750e4.system.entry.js → p-640efee6.system.entry.js} +1 -1
- package/dist/ionic/p-64296b15.entry.js +4 -0
- package/dist/ionic/{p-5da0eb3e.system.entry.js → p-6594d76a.system.entry.js} +1 -1
- package/dist/ionic/{p-02d8fdba.system.entry.js → p-67e644bd.system.entry.js} +1 -1
- package/dist/ionic/{p-3f88eab8.system.entry.js → p-67ed452a.system.entry.js} +1 -1
- package/dist/ionic/{p-835e0346.entry.js → p-68166ba6.entry.js} +1 -1
- package/dist/ionic/{p-966cf574.system.entry.js → p-6d812360.system.entry.js} +1 -1
- package/dist/ionic/{p-a4cda7a8.system.entry.js → p-6e23777e.system.entry.js} +1 -1
- package/dist/ionic/{p-2ba9414e.entry.js → p-7176cea3.entry.js} +1 -1
- package/dist/ionic/{p-878c7aa5.system.entry.js → p-7b4cd5fc.system.entry.js} +1 -1
- package/dist/ionic/{p-4f3e2767.system.entry.js → p-7d7fdaf0.system.entry.js} +1 -1
- package/dist/ionic/p-800ef057.js +4 -0
- package/dist/ionic/{p-3fb57e1b.system.entry.js → p-8659f9a9.system.entry.js} +1 -1
- package/dist/ionic/p-86b2394a.entry.js +4 -0
- package/dist/ionic/{p-48d9faa7.entry.js → p-899fb2da.entry.js} +1 -1
- package/dist/ionic/{p-baa7cb1e.entry.js → p-8ad82eb3.entry.js} +1 -1
- package/dist/ionic/{p-a7e2ac5c.js → p-8b1be026.js} +1 -1
- package/dist/ionic/{p-a21b8d05.entry.js → p-8cbf0979.entry.js} +1 -1
- package/dist/ionic/{p-477a182e.entry.js → p-8d5a30dd.entry.js} +1 -1
- package/dist/ionic/p-8dbdb163.system.js +4 -0
- package/dist/ionic/{p-9e6bf9ed.entry.js → p-8e1bded3.entry.js} +1 -1
- package/dist/ionic/{p-5ce11143.entry.js → p-965677f1.entry.js} +1 -1
- package/dist/ionic/{p-f4cc91f6.entry.js → p-97a96f5f.entry.js} +1 -1
- package/dist/ionic/p-97e31c0a.system.js +4 -0
- package/dist/ionic/{p-6500b298.system.js → p-9e852ff1.system.js} +1 -1
- package/dist/ionic/{p-1e86a71b.entry.js → p-a43603ce.entry.js} +1 -1
- package/dist/ionic/{p-c7fd81ba.system.js → p-a936d224.system.js} +1 -1
- package/dist/ionic/p-a9c3699b.system.entry.js +4 -0
- package/dist/ionic/p-b91fe549.entry.js +4 -0
- package/dist/ionic/{p-c1229981.entry.js → p-bd76524d.entry.js} +1 -1
- package/dist/ionic/p-beb64be7.system.entry.js +4 -0
- package/dist/ionic/{p-07d9e9cd.system.entry.js → p-c429a314.system.entry.js} +1 -1
- package/dist/ionic/p-c56b6570.system.entry.js +4 -0
- package/dist/ionic/p-c6be7737.system.entry.js +4 -0
- package/dist/ionic/p-c919498d.entry.js +4 -0
- package/dist/ionic/{p-d21bfe66.system.entry.js → p-cd2808f5.system.entry.js} +1 -1
- package/dist/ionic/p-cf425ec5.system.entry.js +4 -0
- package/dist/ionic/{p-c31fc05f.system.entry.js → p-db5043df.system.entry.js} +1 -1
- package/dist/ionic/{p-22813b28.system.entry.js → p-dbf7d6e5.system.entry.js} +1 -1
- package/dist/ionic/p-ddfc4ef4.system.entry.js +4 -0
- package/dist/ionic/{p-dd837fa8.entry.js → p-deab76dc.entry.js} +1 -1
- package/dist/ionic/{p-100ef961.js → p-e0b06b65.js} +1 -1
- package/dist/ionic/{p-302091ab.js → p-e627ed84.js} +1 -1
- package/dist/ionic/p-e6b240a0.js +4 -0
- package/dist/ionic/{p-b6f8ee31.entry.js → p-ee2469c1.entry.js} +1 -1
- package/dist/ionic/{p-939d903b.entry.js → p-f37b4b79.entry.js} +1 -1
- package/dist/ionic/{p-06e6d235.system.entry.js → p-f3c82f74.system.entry.js} +2 -2
- package/dist/ionic/p-f54ddd19.entry.js +4 -0
- package/dist/ionic/{p-2e1794df.system.js → p-fa8d4788.system.js} +1 -1
- package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +1 -0
- package/dist/types/components/backdrop/backdrop.d.ts +3 -0
- package/dist/types/components/datetime/datetime.d.ts +1 -0
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker.d.ts +131 -74
- package/dist/types/components/picker-column/picker-column.d.ts +39 -94
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
- package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
- package/dist/types/components.d.ts +122 -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 +0 -1
- package/dist/types/utils/overlays.d.ts +2 -5
- package/hydrate/index.js +1083 -1067
- package/package.json +2 -2
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -9
- package/components/ion-picker-legacy.js +0 -309
- package/components/picker-column2.js +0 -379
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -367
- package/dist/collection/components/picker-legacy/picker.js +0 -817
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
- package/dist/esm-es5/ion-picker-column.entry.js +0 -4
- package/dist/esm-es5/ion-picker.entry.js +0 -4
- package/dist/esm-es5/overlays-789cd7a7.js +0 -4
- package/dist/esm-es5/swipe-back-cc4c2bcb.js +0 -4
- package/dist/ionic/p-0c244faf.entry.js +0 -4
- package/dist/ionic/p-1dc91702.entry.js +0 -4
- package/dist/ionic/p-234b9617.system.entry.js +0 -4
- package/dist/ionic/p-25c34422.system.entry.js +0 -4
- package/dist/ionic/p-2804781b.entry.js +0 -4
- package/dist/ionic/p-2ad38423.system.entry.js +0 -4
- package/dist/ionic/p-39074595.entry.js +0 -4
- package/dist/ionic/p-439e20ef.entry.js +0 -4
- package/dist/ionic/p-6893f6e4.entry.js +0 -4
- package/dist/ionic/p-7c66a566.system.entry.js +0 -4
- package/dist/ionic/p-8b4ab236.entry.js +0 -4
- package/dist/ionic/p-9403b297.system.entry.js +0 -4
- package/dist/ionic/p-992d3bad.entry.js +0 -4
- package/dist/ionic/p-9c967a65.system.entry.js +0 -4
- package/dist/ionic/p-b4cbb736.js +0 -4
- package/dist/ionic/p-ba70d455.entry.js +0 -4
- package/dist/ionic/p-c32bf078.system.entry.js +0 -4
- package/dist/ionic/p-dc565ca3.js +0 -4
- package/dist/ionic/p-e88ed07f.system.js +0 -4
- package/dist/ionic/p-eb07ec1a.system.entry.js +0 -4
- package/dist/ionic/p-eb5697b5.system.js +0 -4
- package/dist/ionic/p-f0559c5d.system.entry.js +0 -4
- package/dist/ionic/p-fdd22426.entry.js +0 -4
- package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
- /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
- /package/dist/esm-es5/{data-12e24f00.js → data-44d9e816.js} +0 -0
- /package/dist/esm-es5/{index-c132c5f1.js → index-d1a56aed.js} +0 -0
- /package/dist/ionic/{p-bb849ebb.js → p-17240d90.js} +0 -0
- /package/dist/ionic/{p-ea96fa73.js → p-6e383534.js} +0 -0
- /package/dist/ionic/{p-8050b9b9.system.js → p-84c6dece.system.js} +0 -0
- /package/dist/ionic/{p-e4219e27.system.js → p-b8c3f071.system.js} +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
- /package/dist/types/components/{picker-column/picker-column-interfaces.d.ts → picker-column-internal/picker-column-internal-interfaces.d.ts} +0 -0
package/hydrate/index.js
CHANGED
|
@@ -6458,7 +6458,7 @@ const shallowEqualStringMap = (map1, map2) => {
|
|
|
6458
6458
|
return true;
|
|
6459
6459
|
};
|
|
6460
6460
|
|
|
6461
|
-
/* Ionicons v7.
|
|
6461
|
+
/* Ionicons v7.1.3-dev.11699459714.11b7e8aa, ES Modules */
|
|
6462
6462
|
const arrowBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>";
|
|
6463
6463
|
const arrowDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>";
|
|
6464
6464
|
const caretBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M368 64L144 256l224 192V64z'/></svg>";
|
|
@@ -8336,7 +8336,7 @@ const focusLastDescendant = (ref, overlay) => {
|
|
|
8336
8336
|
* Should NOT include: Toast
|
|
8337
8337
|
*/
|
|
8338
8338
|
const trapKeyboardFocus = (ev, doc) => {
|
|
8339
|
-
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker
|
|
8339
|
+
const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
|
|
8340
8340
|
const target = ev.target;
|
|
8341
8341
|
/**
|
|
8342
8342
|
* If no active overlay, ignore this event.
|
|
@@ -8521,7 +8521,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
|
|
|
8521
8521
|
*/
|
|
8522
8522
|
const getOverlays = (doc, selector) => {
|
|
8523
8523
|
if (selector === undefined) {
|
|
8524
|
-
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker
|
|
8524
|
+
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
|
|
8525
8525
|
}
|
|
8526
8526
|
return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
|
|
8527
8527
|
};
|
|
@@ -8587,7 +8587,6 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
8587
8587
|
return;
|
|
8588
8588
|
}
|
|
8589
8589
|
setRootAriaHidden(true);
|
|
8590
|
-
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
8591
8590
|
overlay.presented = true;
|
|
8592
8591
|
overlay.willPresent.emit();
|
|
8593
8592
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -8650,14 +8649,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
8650
8649
|
if (!overlay.presented) {
|
|
8651
8650
|
return false;
|
|
8652
8651
|
}
|
|
8653
|
-
const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
|
|
8654
8652
|
/**
|
|
8655
8653
|
* If this is the last visible overlay then
|
|
8656
8654
|
* we want to re-add the root to the accessibility tree.
|
|
8657
8655
|
*/
|
|
8658
|
-
if (
|
|
8656
|
+
if (doc !== undefined && getPresentedOverlays(doc).length === 1) {
|
|
8659
8657
|
setRootAriaHidden(false);
|
|
8660
|
-
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
8661
8658
|
}
|
|
8662
8659
|
overlay.presented = false;
|
|
8663
8660
|
try {
|
|
@@ -11153,10 +11150,21 @@ class Backdrop {
|
|
|
11153
11150
|
constructor(hostRef) {
|
|
11154
11151
|
registerInstance(this, hostRef);
|
|
11155
11152
|
this.ionBackdropTap = createEvent(this, "ionBackdropTap", 7);
|
|
11153
|
+
this.blocker = GESTURE_CONTROLLER.createBlocker({
|
|
11154
|
+
disableScroll: true,
|
|
11155
|
+
});
|
|
11156
11156
|
this.visible = true;
|
|
11157
11157
|
this.tappable = true;
|
|
11158
11158
|
this.stopPropagation = true;
|
|
11159
11159
|
}
|
|
11160
|
+
connectedCallback() {
|
|
11161
|
+
if (this.stopPropagation) {
|
|
11162
|
+
this.blocker.block();
|
|
11163
|
+
}
|
|
11164
|
+
}
|
|
11165
|
+
disconnectedCallback() {
|
|
11166
|
+
this.blocker.unblock();
|
|
11167
|
+
}
|
|
11160
11168
|
onMouseDown(ev) {
|
|
11161
11169
|
this.emitTap(ev);
|
|
11162
11170
|
}
|
|
@@ -12607,7 +12615,7 @@ const isRTL$1 = (hostEl) => {
|
|
|
12607
12615
|
return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
|
|
12608
12616
|
};
|
|
12609
12617
|
|
|
12610
|
-
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)}";
|
|
12618
|
+
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)}/*!@:host(.outer-content)*/.outer-content.sc-ion-content-h{--background:var(--ion-color-step-50, #f2f2f2)}/*!@#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)}";
|
|
12611
12619
|
|
|
12612
12620
|
/**
|
|
12613
12621
|
* @slot - Content is placed in the scrollable area if provided without a slot.
|
|
@@ -14479,7 +14487,7 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
|
|
|
14479
14487
|
* @param minParts The minimum bound on the date that can be returned
|
|
14480
14488
|
* @param maxParts The maximum bound on the date that can be returned
|
|
14481
14489
|
* @param dayValues The allowed date values
|
|
14482
|
-
* @returns Date data to be used in ion-picker-column
|
|
14490
|
+
* @returns Date data to be used in ion-picker-column-internal
|
|
14483
14491
|
*/
|
|
14484
14492
|
const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
14485
14493
|
day: 'numeric',
|
|
@@ -14826,9 +14834,9 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
|
|
|
14826
14834
|
return undefined;
|
|
14827
14835
|
};
|
|
14828
14836
|
|
|
14829
|
-
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*/ion-picker-column.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-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}/*!@: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%}";
|
|
14837
|
+
const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-ios{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:translucent}/*!@:host .calendar-action-buttons ion-item ion-label*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-label.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .calendar-action-buttons ion-item ion-icon*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons ion-item*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios{--color:var(--ion-color-base)}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@:host .calendar-action-buttons ion-item*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios{--padding-start:16px;--background-hover:transparent;--background-activated:transparent;font-size:min(1rem, 25.6px);font-weight:600}/*!@:host .calendar-action-buttons ion-item ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
|
|
14830
14838
|
|
|
14831
|
-
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*/ion-picker-column.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-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}/*!@: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}";
|
|
14839
|
+
const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-md{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md,.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:translucent}/*!@:host .calendar-action-buttons ion-item ion-label*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md ion-label.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .calendar-action-buttons ion-item ion-icon*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons ion-item*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md{--color:var(--ion-color-base)}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .datetime-calendar .calendar-action-buttons ion-item*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md{--padding-start:20px}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md,.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
|
|
14832
14840
|
|
|
14833
14841
|
/**
|
|
14834
14842
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -15799,7 +15807,7 @@ class Datetime {
|
|
|
15799
15807
|
const renderArray = forcePresentation === 'time-date'
|
|
15800
15808
|
? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
|
|
15801
15809
|
: [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
|
|
15802
|
-
return hAsync("ion-picker", null, renderArray);
|
|
15810
|
+
return hAsync("ion-picker-internal", null, renderArray);
|
|
15803
15811
|
}
|
|
15804
15812
|
renderDatePickerColumns(forcePresentation) {
|
|
15805
15813
|
return forcePresentation === 'date-time' || forcePresentation === 'time-date'
|
|
@@ -15858,7 +15866,7 @@ class Datetime {
|
|
|
15858
15866
|
const todayString = workingParts.day !== null
|
|
15859
15867
|
? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
|
|
15860
15868
|
: `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
|
|
15861
|
-
return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, items: items, value: todayString, onIonChange: (ev) => {
|
|
15869
|
+
return (hAsync("ion-picker-column-internal", { class: "date-column", color: this.color, disabled: disabled, items: items, value: todayString, onIonChange: (ev) => {
|
|
15862
15870
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15863
15871
|
// Due to a Safari 14 issue we need to destroy
|
|
15864
15872
|
// the scroll listener before we update state
|
|
@@ -15942,7 +15950,7 @@ class Datetime {
|
|
|
15942
15950
|
}
|
|
15943
15951
|
const { disabled, workingParts } = this;
|
|
15944
15952
|
const activePart = this.getActivePartsWithFallback();
|
|
15945
|
-
return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, items: days, value: (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined, onIonChange: (ev) => {
|
|
15953
|
+
return (hAsync("ion-picker-column-internal", { class: "day-column", color: this.color, disabled: disabled, items: days, value: (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined, onIonChange: (ev) => {
|
|
15946
15954
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15947
15955
|
// Due to a Safari 14 issue we need to destroy
|
|
15948
15956
|
// the scroll listener before we update state
|
|
@@ -15964,7 +15972,7 @@ class Datetime {
|
|
|
15964
15972
|
}
|
|
15965
15973
|
const { disabled, workingParts } = this;
|
|
15966
15974
|
const activePart = this.getActivePartsWithFallback();
|
|
15967
|
-
return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, items: months, value: workingParts.month, onIonChange: (ev) => {
|
|
15975
|
+
return (hAsync("ion-picker-column-internal", { class: "month-column", color: this.color, disabled: disabled, items: months, value: workingParts.month, onIonChange: (ev) => {
|
|
15968
15976
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15969
15977
|
// Due to a Safari 14 issue we need to destroy
|
|
15970
15978
|
// the scroll listener before we update state
|
|
@@ -15986,7 +15994,7 @@ class Datetime {
|
|
|
15986
15994
|
}
|
|
15987
15995
|
const { disabled, workingParts } = this;
|
|
15988
15996
|
const activePart = this.getActivePartsWithFallback();
|
|
15989
|
-
return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, items: years, value: workingParts.year, onIonChange: (ev) => {
|
|
15997
|
+
return (hAsync("ion-picker-column-internal", { class: "year-column", color: this.color, disabled: disabled, items: years, value: workingParts.year, onIonChange: (ev) => {
|
|
15990
15998
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15991
15999
|
// Due to a Safari 14 issue we need to destroy
|
|
15992
16000
|
// the scroll listener before we update state
|
|
@@ -16029,7 +16037,7 @@ class Datetime {
|
|
|
16029
16037
|
if (hoursData.length === 0)
|
|
16030
16038
|
return [];
|
|
16031
16039
|
const activePart = this.getActivePartsWithFallback();
|
|
16032
|
-
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, items: hoursData, numericInput: true, onIonChange: (ev) => {
|
|
16040
|
+
return (hAsync("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.hour, items: hoursData, numericInput: true, onIonChange: (ev) => {
|
|
16033
16041
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
|
|
16034
16042
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
|
|
16035
16043
|
ev.stopPropagation();
|
|
@@ -16040,7 +16048,7 @@ class Datetime {
|
|
|
16040
16048
|
if (minutesData.length === 0)
|
|
16041
16049
|
return [];
|
|
16042
16050
|
const activePart = this.getActivePartsWithFallback();
|
|
16043
|
-
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, items: minutesData, numericInput: true, onIonChange: (ev) => {
|
|
16051
|
+
return (hAsync("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.minute, items: minutesData, numericInput: true, onIonChange: (ev) => {
|
|
16044
16052
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
|
|
16045
16053
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
|
|
16046
16054
|
ev.stopPropagation();
|
|
@@ -16053,7 +16061,7 @@ class Datetime {
|
|
|
16053
16061
|
}
|
|
16054
16062
|
const activePart = this.getActivePartsWithFallback();
|
|
16055
16063
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
16056
|
-
return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, items: dayPeriodData, onIonChange: (ev) => {
|
|
16064
|
+
return (hAsync("ion-picker-column-internal", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, items: dayPeriodData, onIonChange: (ev) => {
|
|
16057
16065
|
const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
|
|
16058
16066
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
|
|
16059
16067
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
|
|
@@ -16079,11 +16087,26 @@ class Datetime {
|
|
|
16079
16087
|
const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
|
|
16080
16088
|
// don't use the inheritAttributes util because it removes dir from the host, and we still need that
|
|
16081
16089
|
const hostDir = this.el.getAttribute('dir') || undefined;
|
|
16082
|
-
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("
|
|
16083
|
-
|
|
16084
|
-
|
|
16085
|
-
|
|
16086
|
-
|
|
16090
|
+
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("ion-item", { part: "month-year-button", ref: (el) => (this.monthYearToggleItemRef = el), button: true, "aria-label": "Show year picker", detail: false, lines: "none", disabled: disabled, onClick: () => {
|
|
16091
|
+
var _a;
|
|
16092
|
+
this.toggleMonthAndYearView();
|
|
16093
|
+
/**
|
|
16094
|
+
* TODO: FW-3547
|
|
16095
|
+
*
|
|
16096
|
+
* Currently there is not a way to set the aria-label on the inner button
|
|
16097
|
+
* on the `ion-item` and have it be reactive to changes. This is a workaround
|
|
16098
|
+
* until we either refactor `ion-item` to a button or Stencil adds a way to
|
|
16099
|
+
* have reactive props for built-in properties, such as `aria-label`.
|
|
16100
|
+
*/
|
|
16101
|
+
const { monthYearToggleItemRef } = this;
|
|
16102
|
+
if (monthYearToggleItemRef) {
|
|
16103
|
+
const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
|
|
16104
|
+
if (btn) {
|
|
16105
|
+
const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
|
|
16106
|
+
btn.setAttribute('aria-label', monthYearAriaLabel);
|
|
16107
|
+
}
|
|
16108
|
+
}
|
|
16109
|
+
} }, 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) => {
|
|
16087
16110
|
return hAsync("div", { class: "day-of-week" }, d);
|
|
16088
16111
|
}))));
|
|
16089
16112
|
}
|
|
@@ -16244,7 +16267,7 @@ class Datetime {
|
|
|
16244
16267
|
* This will correctly scroll the element position to the correct time value,
|
|
16245
16268
|
* before the popover is fully presented.
|
|
16246
16269
|
*/
|
|
16247
|
-
const cols = ev.target.querySelectorAll('ion-picker-column');
|
|
16270
|
+
const cols = ev.target.querySelectorAll('ion-picker-column-internal');
|
|
16248
16271
|
// TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
|
|
16249
16272
|
cols.forEach((col) => col.scrollActiveItemIntoView());
|
|
16250
16273
|
}, style: {
|
|
@@ -17921,26 +17944,29 @@ const isRTL = (hostEl) => {
|
|
|
17921
17944
|
return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
|
|
17922
17945
|
};
|
|
17923
17946
|
|
|
17924
|
-
const iconCss = "/*!@:host*/.sc-ion-icon-h{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}/*!@:host .ionicon*/.sc-ion-icon-h .ionicon.sc-ion-icon{stroke:currentColor}/*!@.ionicon-fill-none*/.ionicon-fill-none.sc-ion-icon{fill:none}/*!@.ionicon-stroke-width*/.ionicon-stroke-width.sc-ion-icon{stroke-width:32px;stroke-width:var(--ionicon-stroke-width, 32px)}/*!@.icon-inner,\n.ionicon,\nsvg*/.icon-inner.sc-ion-icon,.ionicon.sc-ion-icon,svg.sc-ion-icon{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){/*!@:host(.icon-rtl) .icon-inner*/.icon-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){/*!@:host(.icon-rtl) .icon-inner*/.icon-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}/*!@:host(.flip-rtl):host-context([dir='rtl']) .icon-inner*/.flip-rtl.sc-ion-icon-h -no-combinator[dir='rtl'].sc-ion-icon-h .icon-inner.sc-ion-icon,[dir='rtl'] .sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@supports selector(:dir(rtl)){/*!@:host(.flip-rtl:dir(rtl)) .icon-inner*/.flip-rtl.sc-ion-icon-h:dir(rtl) .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@:host(.flip-rtl:dir(ltr)) .icon-inner*/.flip-rtl.sc-ion-icon-h:dir(ltr) .icon-inner.sc-ion-icon{-webkit-transform:scaleX(1);transform:scaleX(1)}}/*!@:host(.icon-small)*/.icon-small.sc-ion-icon-h{font-size:1.125rem !important}/*!@:host(.icon-large)*/.icon-large.sc-ion-icon-h{font-size:2rem !important}/*!@:host(.ion-color)*/.ion-color.sc-ion-icon-h{color:var(--ion-color-base) !important}/*!@:host(.ion-color-primary)*/.ion-color-primary.sc-ion-icon-h{--ion-color-base:var(--ion-color-primary, #3880ff)}/*!@:host(.ion-color-secondary)*/.ion-color-secondary.sc-ion-icon-h{--ion-color-base:var(--ion-color-secondary, #0cd1e8)}/*!@:host(.ion-color-tertiary)*/.ion-color-tertiary.sc-ion-icon-h{--ion-color-base:var(--ion-color-tertiary, #f4a942)}/*!@:host(.ion-color-success)*/.ion-color-success.sc-ion-icon-h{--ion-color-base:var(--ion-color-success, #10dc60)}/*!@:host(.ion-color-warning)*/.ion-color-warning.sc-ion-icon-h{--ion-color-base:var(--ion-color-warning, #ffce00)}/*!@:host(.ion-color-danger)*/.ion-color-danger.sc-ion-icon-h{--ion-color-base:var(--ion-color-danger, #f14141)}/*!@:host(.ion-color-light)*/.ion-color-light.sc-ion-icon-h{--ion-color-base:var(--ion-color-light, #f4f5f8)}/*!@:host(.ion-color-medium)*/.ion-color-medium.sc-ion-icon-h{--ion-color-base:var(--ion-color-medium, #989aa2)}/*!@:host(.ion-color-dark)*/.ion-color-dark.sc-ion-icon-h{--ion-color-base:var(--ion-color-dark, #222428)}";
|
|
17947
|
+
const iconCss = "/*!@:host*/.sc-ion-icon-h{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;font-size:1rem}/*!@:host .ionicon*/.sc-ion-icon-h .ionicon.sc-ion-icon{stroke:currentColor}/*!@.ionicon-fill-none*/.ionicon-fill-none.sc-ion-icon{fill:none}/*!@.ionicon-stroke-width*/.ionicon-stroke-width.sc-ion-icon{stroke-width:32px;stroke-width:var(--ionicon-stroke-width, 32px)}/*!@.icon-inner,\n.ionicon,\nsvg*/.icon-inner.sc-ion-icon,.ionicon.sc-ion-icon,svg.sc-ion-icon{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){/*!@:host(.icon-rtl) .icon-inner*/.icon-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){/*!@:host(.icon-rtl) .icon-inner*/.icon-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}/*!@:host(.flip-rtl):host-context([dir='rtl']) .icon-inner*/.flip-rtl.sc-ion-icon-h -no-combinator[dir='rtl'].sc-ion-icon-h .icon-inner.sc-ion-icon,[dir='rtl'] .sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@supports selector(:dir(rtl)){/*!@:host(.flip-rtl:dir(rtl)) .icon-inner*/.flip-rtl.sc-ion-icon-h:dir(rtl) .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@:host(.flip-rtl:dir(ltr)) .icon-inner*/.flip-rtl.sc-ion-icon-h:dir(ltr) .icon-inner.sc-ion-icon{-webkit-transform:scaleX(1);transform:scaleX(1)}}/*!@:host(.icon-small)*/.icon-small.sc-ion-icon-h{font-size:1.125rem !important}/*!@:host(.icon-large)*/.icon-large.sc-ion-icon-h{font-size:2rem !important}/*!@:host(.ion-color)*/.ion-color.sc-ion-icon-h{color:var(--ion-color-base) !important}/*!@:host(.ion-color-primary)*/.ion-color-primary.sc-ion-icon-h{--ion-color-base:var(--ion-color-primary, #3880ff)}/*!@:host(.ion-color-secondary)*/.ion-color-secondary.sc-ion-icon-h{--ion-color-base:var(--ion-color-secondary, #0cd1e8)}/*!@:host(.ion-color-tertiary)*/.ion-color-tertiary.sc-ion-icon-h{--ion-color-base:var(--ion-color-tertiary, #f4a942)}/*!@:host(.ion-color-success)*/.ion-color-success.sc-ion-icon-h{--ion-color-base:var(--ion-color-success, #10dc60)}/*!@:host(.ion-color-warning)*/.ion-color-warning.sc-ion-icon-h{--ion-color-base:var(--ion-color-warning, #ffce00)}/*!@:host(.ion-color-danger)*/.ion-color-danger.sc-ion-icon-h{--ion-color-base:var(--ion-color-danger, #f14141)}/*!@:host(.ion-color-light)*/.ion-color-light.sc-ion-icon-h{--ion-color-base:var(--ion-color-light, #f4f5f8)}/*!@:host(.ion-color-medium)*/.ion-color-medium.sc-ion-icon-h{--ion-color-base:var(--ion-color-medium, #989aa2)}/*!@:host(.ion-color-dark)*/.ion-color-dark.sc-ion-icon-h{--ion-color-base:var(--ion-color-dark, #222428)}";
|
|
17925
17948
|
|
|
17926
17949
|
class Icon {
|
|
17927
17950
|
constructor(hostRef) {
|
|
17928
17951
|
registerInstance(this, hostRef);
|
|
17929
17952
|
this.iconName = null;
|
|
17930
17953
|
this.inheritedAttributes = {};
|
|
17931
|
-
this.didLoadIcon = false;
|
|
17932
|
-
this.svgContent = undefined;
|
|
17933
17954
|
this.isVisible = false;
|
|
17955
|
+
/**
|
|
17956
|
+
* The mode determines which platform styles to use.
|
|
17957
|
+
*/
|
|
17934
17958
|
this.mode = getIonMode();
|
|
17935
|
-
|
|
17936
|
-
|
|
17937
|
-
|
|
17938
|
-
|
|
17939
|
-
this.name = undefined;
|
|
17940
|
-
this.src = undefined;
|
|
17941
|
-
this.icon = undefined;
|
|
17942
|
-
this.size = undefined;
|
|
17959
|
+
/**
|
|
17960
|
+
* If enabled, ion-icon will be loaded lazily when it's visible in the viewport.
|
|
17961
|
+
* Default, `false`.
|
|
17962
|
+
*/
|
|
17943
17963
|
this.lazy = false;
|
|
17964
|
+
/**
|
|
17965
|
+
* When set to `false`, SVG content that is HTTP fetched will not be checked
|
|
17966
|
+
* if the response SVG content has any `<script>` elements, or any attributes
|
|
17967
|
+
* that start with `on`, such as `onclick`.
|
|
17968
|
+
* @default true
|
|
17969
|
+
*/
|
|
17944
17970
|
this.sanitize = true;
|
|
17945
17971
|
}
|
|
17946
17972
|
componentWillLoad() {
|
|
@@ -17955,17 +17981,6 @@ class Icon {
|
|
|
17955
17981
|
this.loadIcon();
|
|
17956
17982
|
});
|
|
17957
17983
|
}
|
|
17958
|
-
componentDidLoad() {
|
|
17959
|
-
/**
|
|
17960
|
-
* Addresses an Angular issue where property values are assigned after the 'connectedCallback' but prior to the registration of watchers.
|
|
17961
|
-
* This enhancement ensures the loading of an icon when the component has finished rendering and the icon has yet to apply the SVG data.
|
|
17962
|
-
* This modification pertains to the usage of Angular's binding syntax:
|
|
17963
|
-
* `<ion-icon [name]="myIconName"></ion-icon>`
|
|
17964
|
-
*/
|
|
17965
|
-
if (!this.didLoadIcon) {
|
|
17966
|
-
this.loadIcon();
|
|
17967
|
-
}
|
|
17968
|
-
}
|
|
17969
17984
|
disconnectedCallback() {
|
|
17970
17985
|
if (this.io) {
|
|
17971
17986
|
this.io.disconnect();
|
|
@@ -24463,778 +24478,654 @@ class Note {
|
|
|
24463
24478
|
}; }
|
|
24464
24479
|
}
|
|
24465
24480
|
|
|
24466
|
-
|
|
24481
|
+
/**
|
|
24482
|
+
* iOS Picker Enter Animation
|
|
24483
|
+
*/
|
|
24484
|
+
const iosEnterAnimation$2 = (baseEl) => {
|
|
24485
|
+
const baseAnimation = createAnimation();
|
|
24486
|
+
const backdropAnimation = createAnimation();
|
|
24487
|
+
const wrapperAnimation = createAnimation();
|
|
24488
|
+
backdropAnimation
|
|
24489
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24490
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
24491
|
+
.beforeStyles({
|
|
24492
|
+
'pointer-events': 'none',
|
|
24493
|
+
})
|
|
24494
|
+
.afterClearStyles(['pointer-events']);
|
|
24495
|
+
wrapperAnimation
|
|
24496
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24497
|
+
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
24498
|
+
return baseAnimation
|
|
24499
|
+
.addElement(baseEl)
|
|
24500
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24501
|
+
.duration(400)
|
|
24502
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24503
|
+
};
|
|
24504
|
+
|
|
24505
|
+
/**
|
|
24506
|
+
* iOS Picker Leave Animation
|
|
24507
|
+
*/
|
|
24508
|
+
const iosLeaveAnimation$2 = (baseEl) => {
|
|
24509
|
+
const baseAnimation = createAnimation();
|
|
24510
|
+
const backdropAnimation = createAnimation();
|
|
24511
|
+
const wrapperAnimation = createAnimation();
|
|
24512
|
+
backdropAnimation
|
|
24513
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24514
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
24515
|
+
wrapperAnimation
|
|
24516
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24517
|
+
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
24518
|
+
return baseAnimation
|
|
24519
|
+
.addElement(baseEl)
|
|
24520
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24521
|
+
.duration(400)
|
|
24522
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24523
|
+
};
|
|
24524
|
+
|
|
24525
|
+
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}}}";
|
|
24467
24526
|
|
|
24468
|
-
const pickerMdCss
|
|
24527
|
+
const pickerMdCss = ".sc-ion-picker-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-md-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-md-h{left:0}[dir=rtl].sc-ion-picker-md-h,[dir=rtl] .sc-ion-picker-md-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-md-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-md-h{display:none}.picker-wrapper.sc-ion-picker-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-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-md:active,.picker-button.sc-ion-picker-md:focus{outline:none}.picker-columns.sc-ion-picker-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-md,.picker-below-highlight.sc-ion-picker-md{display:none;pointer-events:none}.sc-ion-picker-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-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-md,.picker-button.ion-activated.sc-ion-picker-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-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-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-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-md{left:0}[dir=rtl].sc-ion-picker-md-h .picker-above-highlight.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-above-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-md .picker-above-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-md:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-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-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-md{left:0}[dir=rtl].sc-ion-picker-md-h .picker-below-highlight.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-below-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-md .picker-below-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-md:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
24469
24528
|
|
|
24529
|
+
// TODO(FW-2832): types
|
|
24470
24530
|
/**
|
|
24471
24531
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
24472
24532
|
*/
|
|
24473
|
-
class Picker
|
|
24533
|
+
class Picker {
|
|
24474
24534
|
constructor(hostRef) {
|
|
24475
24535
|
registerInstance(this, hostRef);
|
|
24476
|
-
this.
|
|
24477
|
-
this.
|
|
24478
|
-
this.
|
|
24479
|
-
|
|
24480
|
-
|
|
24481
|
-
|
|
24482
|
-
|
|
24483
|
-
|
|
24484
|
-
|
|
24485
|
-
|
|
24486
|
-
|
|
24487
|
-
|
|
24488
|
-
|
|
24489
|
-
const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
|
|
24490
|
-
if (outsideX || outsideY) {
|
|
24491
|
-
return false;
|
|
24492
|
-
}
|
|
24493
|
-
return true;
|
|
24494
|
-
};
|
|
24495
|
-
/**
|
|
24496
|
-
* If we are no longer focused
|
|
24497
|
-
* on a picker column, then we should
|
|
24498
|
-
* exit input mode. An exception is made
|
|
24499
|
-
* for the input in the picker since having
|
|
24500
|
-
* that focused means we are still in input mode.
|
|
24501
|
-
*/
|
|
24502
|
-
this.onFocusOut = (ev) => {
|
|
24503
|
-
// TODO(FW-2832): type
|
|
24504
|
-
const { relatedTarget } = ev;
|
|
24505
|
-
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
|
|
24506
|
-
this.exitInputMode();
|
|
24507
|
-
}
|
|
24508
|
-
};
|
|
24509
|
-
/**
|
|
24510
|
-
* When picker columns receive focus
|
|
24511
|
-
* the parent picker needs to determine
|
|
24512
|
-
* whether to enter/exit input mode.
|
|
24513
|
-
*/
|
|
24514
|
-
this.onFocusIn = (ev) => {
|
|
24515
|
-
// TODO(FW-2832): type
|
|
24516
|
-
const { target } = ev;
|
|
24517
|
-
/**
|
|
24518
|
-
* Due to browser differences in how/when focus
|
|
24519
|
-
* is dispatched on certain elements, we need to
|
|
24520
|
-
* make sure that this function only ever runs when
|
|
24521
|
-
* focusing a picker column.
|
|
24522
|
-
*/
|
|
24523
|
-
if (target.tagName !== 'ION-PICKER-COLUMN') {
|
|
24524
|
-
return;
|
|
24525
|
-
}
|
|
24526
|
-
/**
|
|
24527
|
-
* If we have actionOnClick
|
|
24528
|
-
* then this means the user focused
|
|
24529
|
-
* a picker column via mouse or
|
|
24530
|
-
* touch (i.e. a PointerEvent). As a result,
|
|
24531
|
-
* we should not enter/exit input mode
|
|
24532
|
-
* until the click event has fired, which happens
|
|
24533
|
-
* after the `focusin` event.
|
|
24534
|
-
*
|
|
24535
|
-
* Otherwise, the user likely focused
|
|
24536
|
-
* the column using their keyboard and
|
|
24537
|
-
* we should enter/exit input mode automatically.
|
|
24538
|
-
*/
|
|
24539
|
-
if (!this.actionOnClick) {
|
|
24540
|
-
const columnEl = target;
|
|
24541
|
-
const allowInput = columnEl.numericInput;
|
|
24542
|
-
if (allowInput) {
|
|
24543
|
-
this.enterInputMode(columnEl, false);
|
|
24544
|
-
}
|
|
24545
|
-
else {
|
|
24546
|
-
this.exitInputMode();
|
|
24547
|
-
}
|
|
24548
|
-
}
|
|
24536
|
+
this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
|
|
24537
|
+
this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
|
|
24538
|
+
this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
|
|
24539
|
+
this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
|
|
24540
|
+
this.didPresentShorthand = createEvent(this, "didPresent", 7);
|
|
24541
|
+
this.willPresentShorthand = createEvent(this, "willPresent", 7);
|
|
24542
|
+
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
|
24543
|
+
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
24544
|
+
this.delegateController = createDelegateController(this);
|
|
24545
|
+
this.lockController = createLockController();
|
|
24546
|
+
this.triggerController = createTriggerController();
|
|
24547
|
+
this.onBackdropTap = () => {
|
|
24548
|
+
this.dismiss(undefined, BACKDROP);
|
|
24549
24549
|
};
|
|
24550
|
-
|
|
24551
|
-
|
|
24552
|
-
|
|
24553
|
-
|
|
24554
|
-
|
|
24555
|
-
this.onClick = () => {
|
|
24556
|
-
const { actionOnClick } = this;
|
|
24557
|
-
if (actionOnClick) {
|
|
24558
|
-
actionOnClick();
|
|
24559
|
-
this.actionOnClick = undefined;
|
|
24550
|
+
this.dispatchCancelHandler = (ev) => {
|
|
24551
|
+
const role = ev.detail.role;
|
|
24552
|
+
if (isCancel(role)) {
|
|
24553
|
+
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
24554
|
+
this.callButtonHandler(cancelButton);
|
|
24560
24555
|
}
|
|
24561
24556
|
};
|
|
24557
|
+
this.presented = false;
|
|
24558
|
+
this.overlayIndex = undefined;
|
|
24559
|
+
this.delegate = undefined;
|
|
24560
|
+
this.hasController = false;
|
|
24561
|
+
this.keyboardClose = true;
|
|
24562
|
+
this.enterAnimation = undefined;
|
|
24563
|
+
this.leaveAnimation = undefined;
|
|
24564
|
+
this.buttons = [];
|
|
24565
|
+
this.columns = [];
|
|
24566
|
+
this.cssClass = undefined;
|
|
24567
|
+
this.duration = 0;
|
|
24568
|
+
this.showBackdrop = true;
|
|
24569
|
+
this.backdropDismiss = true;
|
|
24570
|
+
this.animated = true;
|
|
24571
|
+
this.htmlAttributes = undefined;
|
|
24572
|
+
this.isOpen = false;
|
|
24573
|
+
this.trigger = undefined;
|
|
24574
|
+
}
|
|
24575
|
+
onIsOpenChange(newValue, oldValue) {
|
|
24576
|
+
if (newValue === true && oldValue === false) {
|
|
24577
|
+
this.present();
|
|
24578
|
+
}
|
|
24579
|
+
else if (newValue === false && oldValue === true) {
|
|
24580
|
+
this.dismiss();
|
|
24581
|
+
}
|
|
24582
|
+
}
|
|
24583
|
+
triggerChanged() {
|
|
24584
|
+
const { trigger, el, triggerController } = this;
|
|
24585
|
+
if (trigger) {
|
|
24586
|
+
triggerController.addClickListener(el, trigger);
|
|
24587
|
+
}
|
|
24588
|
+
}
|
|
24589
|
+
connectedCallback() {
|
|
24590
|
+
prepareOverlay(this.el);
|
|
24591
|
+
this.triggerChanged();
|
|
24592
|
+
}
|
|
24593
|
+
disconnectedCallback() {
|
|
24594
|
+
this.triggerController.removeClickListener();
|
|
24595
|
+
}
|
|
24596
|
+
componentWillLoad() {
|
|
24597
|
+
setOverlayId(this.el);
|
|
24598
|
+
}
|
|
24599
|
+
componentDidLoad() {
|
|
24562
24600
|
/**
|
|
24563
|
-
*
|
|
24564
|
-
*
|
|
24565
|
-
* to tell the onFocusIn function that users
|
|
24566
|
-
* are trying to click the column rather than
|
|
24567
|
-
* focus the column using the keyboard. When the
|
|
24568
|
-
* user completes the click, the onClick function
|
|
24569
|
-
* runs and runs the actionOnClick callback.
|
|
24601
|
+
* If picker was rendered with isOpen="true"
|
|
24602
|
+
* then we should open picker immediately.
|
|
24570
24603
|
*/
|
|
24571
|
-
this.
|
|
24572
|
-
|
|
24573
|
-
|
|
24574
|
-
/**
|
|
24575
|
-
* If we were already in
|
|
24576
|
-
* input mode, then we should determine
|
|
24577
|
-
* if we tapped a particular column and
|
|
24578
|
-
* should switch to input mode for
|
|
24579
|
-
* that specific column.
|
|
24580
|
-
*/
|
|
24581
|
-
if (useInputMode) {
|
|
24582
|
-
/**
|
|
24583
|
-
* If we tapped a picker column
|
|
24584
|
-
* then we should either switch to input
|
|
24585
|
-
* mode for that column or all columns.
|
|
24586
|
-
* Otherwise we should exit input mode
|
|
24587
|
-
* since we just tapped the highlight and
|
|
24588
|
-
* not a column.
|
|
24589
|
-
*/
|
|
24590
|
-
if (ev.target.tagName === 'ION-PICKER-COLUMN') {
|
|
24591
|
-
/**
|
|
24592
|
-
* If user taps 2 different columns
|
|
24593
|
-
* then we should just switch to input mode
|
|
24594
|
-
* for the new column rather than switching to
|
|
24595
|
-
* input mode for all columns.
|
|
24596
|
-
*/
|
|
24597
|
-
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
24598
|
-
this.actionOnClick = () => {
|
|
24599
|
-
this.enterInputMode();
|
|
24600
|
-
};
|
|
24601
|
-
}
|
|
24602
|
-
else {
|
|
24603
|
-
this.actionOnClick = () => {
|
|
24604
|
-
this.enterInputMode(ev.target);
|
|
24605
|
-
};
|
|
24606
|
-
}
|
|
24607
|
-
}
|
|
24608
|
-
else {
|
|
24609
|
-
this.actionOnClick = () => {
|
|
24610
|
-
this.exitInputMode();
|
|
24611
|
-
};
|
|
24612
|
-
}
|
|
24613
|
-
/**
|
|
24614
|
-
* If we were not already in
|
|
24615
|
-
* input mode, then we should
|
|
24616
|
-
* enter input mode for all columns.
|
|
24617
|
-
*/
|
|
24618
|
-
}
|
|
24619
|
-
else {
|
|
24620
|
-
/**
|
|
24621
|
-
* If there is only 1 numeric input column
|
|
24622
|
-
* then we should skip multi column input.
|
|
24623
|
-
*/
|
|
24624
|
-
const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
|
|
24625
|
-
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
24626
|
-
this.actionOnClick = () => {
|
|
24627
|
-
this.enterInputMode(columnEl);
|
|
24628
|
-
};
|
|
24629
|
-
}
|
|
24630
|
-
return;
|
|
24631
|
-
}
|
|
24632
|
-
this.actionOnClick = () => {
|
|
24633
|
-
this.exitInputMode();
|
|
24634
|
-
};
|
|
24635
|
-
};
|
|
24636
|
-
/**
|
|
24637
|
-
* Enters input mode to allow
|
|
24638
|
-
* for text entry of numeric values.
|
|
24639
|
-
* If on mobile, we focus a hidden input
|
|
24640
|
-
* field so that the on screen keyboard
|
|
24641
|
-
* is brought up. When tabbing using a
|
|
24642
|
-
* keyboard, picker columns receive an outline
|
|
24643
|
-
* to indicate they are focused. As a result,
|
|
24644
|
-
* we should not focus the hidden input as it
|
|
24645
|
-
* would cause the outline to go away, preventing
|
|
24646
|
-
* users from having any visual indication of which
|
|
24647
|
-
* column is focused.
|
|
24648
|
-
*/
|
|
24649
|
-
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
24650
|
-
const { inputEl, el } = this;
|
|
24651
|
-
if (!inputEl) {
|
|
24652
|
-
return;
|
|
24653
|
-
}
|
|
24654
|
-
/**
|
|
24655
|
-
* Only active input mode if there is at
|
|
24656
|
-
* least one column that accepts numeric input.
|
|
24657
|
-
*/
|
|
24658
|
-
const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
|
|
24659
|
-
if (!hasInputColumn) {
|
|
24660
|
-
return;
|
|
24661
|
-
}
|
|
24662
|
-
/**
|
|
24663
|
-
* If columnEl is undefined then
|
|
24664
|
-
* it is assumed that all numeric pickers
|
|
24665
|
-
* are eligible for text entry.
|
|
24666
|
-
* (i.e. hour and minute columns)
|
|
24667
|
-
*/
|
|
24668
|
-
this.useInputMode = true;
|
|
24669
|
-
this.inputModeColumn = columnEl;
|
|
24670
|
-
/**
|
|
24671
|
-
* Users with a keyboard and mouse can
|
|
24672
|
-
* activate input mode where the input is
|
|
24673
|
-
* focused as well as when it is not focused,
|
|
24674
|
-
* so we need to make sure we clean up any
|
|
24675
|
-
* old listeners.
|
|
24676
|
-
*/
|
|
24677
|
-
if (focusInput) {
|
|
24678
|
-
if (this.destroyKeypressListener) {
|
|
24679
|
-
this.destroyKeypressListener();
|
|
24680
|
-
this.destroyKeypressListener = undefined;
|
|
24681
|
-
}
|
|
24682
|
-
inputEl.focus();
|
|
24683
|
-
}
|
|
24684
|
-
else {
|
|
24685
|
-
el.addEventListener('keypress', this.onKeyPress);
|
|
24686
|
-
this.destroyKeypressListener = () => {
|
|
24687
|
-
el.removeEventListener('keypress', this.onKeyPress);
|
|
24688
|
-
};
|
|
24689
|
-
}
|
|
24690
|
-
this.emitInputModeChange();
|
|
24691
|
-
};
|
|
24692
|
-
this.onKeyPress = (ev) => {
|
|
24693
|
-
const { inputEl } = this;
|
|
24694
|
-
if (!inputEl) {
|
|
24695
|
-
return;
|
|
24696
|
-
}
|
|
24697
|
-
const parsedValue = parseInt(ev.key, 10);
|
|
24698
|
-
/**
|
|
24699
|
-
* Only numbers should be allowed
|
|
24700
|
-
*/
|
|
24701
|
-
if (!Number.isNaN(parsedValue)) {
|
|
24702
|
-
inputEl.value += ev.key;
|
|
24703
|
-
this.onInputChange();
|
|
24704
|
-
}
|
|
24705
|
-
};
|
|
24706
|
-
this.selectSingleColumn = () => {
|
|
24707
|
-
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
24708
|
-
if (!inputEl || !inputModeColumn) {
|
|
24709
|
-
return;
|
|
24710
|
-
}
|
|
24711
|
-
const values = inputModeColumn.items.filter((item) => item.disabled !== true);
|
|
24712
|
-
/**
|
|
24713
|
-
* If users pause for a bit, the search
|
|
24714
|
-
* value should be reset similar to how a
|
|
24715
|
-
* <select> behaves. So typing "34", waiting,
|
|
24716
|
-
* then typing "5" should select "05".
|
|
24717
|
-
*/
|
|
24718
|
-
if (singleColumnSearchTimeout) {
|
|
24719
|
-
clearTimeout(singleColumnSearchTimeout);
|
|
24720
|
-
}
|
|
24721
|
-
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
24722
|
-
inputEl.value = '';
|
|
24723
|
-
this.singleColumnSearchTimeout = undefined;
|
|
24724
|
-
}, 1000);
|
|
24725
|
-
/**
|
|
24726
|
-
* For values that are longer than 2 digits long
|
|
24727
|
-
* we should shift the value over 1 character
|
|
24728
|
-
* to the left. So typing "456" would result in "56".
|
|
24729
|
-
* TODO: If we want to support more than just
|
|
24730
|
-
* time entry, we should update this value to be
|
|
24731
|
-
* the max length of all of the picker items.
|
|
24732
|
-
*/
|
|
24733
|
-
if (inputEl.value.length >= 3) {
|
|
24734
|
-
const startIndex = inputEl.value.length - 2;
|
|
24735
|
-
const newString = inputEl.value.substring(startIndex);
|
|
24736
|
-
inputEl.value = newString;
|
|
24737
|
-
this.selectSingleColumn();
|
|
24738
|
-
return;
|
|
24739
|
-
}
|
|
24740
|
-
/**
|
|
24741
|
-
* Checking the value of the input gets priority
|
|
24742
|
-
* first. For example, if the value of the input
|
|
24743
|
-
* is "1" and we entered "2", then the complete value
|
|
24744
|
-
* is "12" and we should select hour 12.
|
|
24745
|
-
*
|
|
24746
|
-
* Regex removes any leading zeros from values like "02",
|
|
24747
|
-
* but it keeps a single zero if there are only zeros in the string.
|
|
24748
|
-
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
24749
|
-
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
24750
|
-
*/
|
|
24751
|
-
const findItemFromCompleteValue = values.find(({ text }) => {
|
|
24752
|
-
const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
24753
|
-
return parsedText === inputEl.value;
|
|
24754
|
-
});
|
|
24755
|
-
if (findItemFromCompleteValue) {
|
|
24756
|
-
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
24757
|
-
return;
|
|
24758
|
-
}
|
|
24759
|
-
/**
|
|
24760
|
-
* If we typed "56" to get minute 56, then typed "7",
|
|
24761
|
-
* we should select "07" as "567" is not a valid minute.
|
|
24762
|
-
*/
|
|
24763
|
-
if (inputEl.value.length === 2) {
|
|
24764
|
-
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
24765
|
-
inputEl.value = changedCharacter;
|
|
24766
|
-
this.selectSingleColumn();
|
|
24767
|
-
}
|
|
24768
|
-
};
|
|
24769
|
-
/**
|
|
24770
|
-
* Searches a list of column items for a particular
|
|
24771
|
-
* value. This is currently used for numeric values.
|
|
24772
|
-
* The zeroBehavior can be set to account for leading
|
|
24773
|
-
* or trailing zeros when looking at the item text.
|
|
24774
|
-
*/
|
|
24775
|
-
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
24776
|
-
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
24777
|
-
const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
|
|
24778
|
-
if (item) {
|
|
24779
|
-
colEl.setValue(item.value);
|
|
24780
|
-
}
|
|
24781
|
-
};
|
|
24782
|
-
this.selectMultiColumn = () => {
|
|
24783
|
-
const { inputEl, el } = this;
|
|
24784
|
-
if (!inputEl) {
|
|
24785
|
-
return;
|
|
24786
|
-
}
|
|
24787
|
-
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
|
|
24788
|
-
const firstColumn = numericPickers[0];
|
|
24789
|
-
const lastColumn = numericPickers[1];
|
|
24790
|
-
let value = inputEl.value;
|
|
24791
|
-
let minuteValue;
|
|
24792
|
-
switch (value.length) {
|
|
24793
|
-
case 1:
|
|
24794
|
-
this.searchColumn(firstColumn, value);
|
|
24795
|
-
break;
|
|
24796
|
-
case 2:
|
|
24797
|
-
/**
|
|
24798
|
-
* If the first character is `0` or `1` it is
|
|
24799
|
-
* possible that users are trying to type `09`
|
|
24800
|
-
* or `11` into the hour field, so we should look
|
|
24801
|
-
* at that first.
|
|
24802
|
-
*/
|
|
24803
|
-
const firstCharacter = inputEl.value.substring(0, 1);
|
|
24804
|
-
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
24805
|
-
this.searchColumn(firstColumn, value);
|
|
24806
|
-
/**
|
|
24807
|
-
* If only checked the first value,
|
|
24808
|
-
* we can check the second value
|
|
24809
|
-
* for a match in the minutes column
|
|
24810
|
-
*/
|
|
24811
|
-
if (value.length === 1) {
|
|
24812
|
-
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
24813
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
24814
|
-
}
|
|
24815
|
-
break;
|
|
24816
|
-
case 3:
|
|
24817
|
-
/**
|
|
24818
|
-
* If the first character is `0` or `1` it is
|
|
24819
|
-
* possible that users are trying to type `09`
|
|
24820
|
-
* or `11` into the hour field, so we should look
|
|
24821
|
-
* at that first.
|
|
24822
|
-
*/
|
|
24823
|
-
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
24824
|
-
value =
|
|
24825
|
-
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
24826
|
-
? inputEl.value.substring(0, 2)
|
|
24827
|
-
: firstCharacterAgain;
|
|
24828
|
-
this.searchColumn(firstColumn, value);
|
|
24829
|
-
/**
|
|
24830
|
-
* If only checked the first value,
|
|
24831
|
-
* we can check the second value
|
|
24832
|
-
* for a match in the minutes column
|
|
24833
|
-
*/
|
|
24834
|
-
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
24835
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
24836
|
-
break;
|
|
24837
|
-
case 4:
|
|
24838
|
-
/**
|
|
24839
|
-
* If the first character is `0` or `1` it is
|
|
24840
|
-
* possible that users are trying to type `09`
|
|
24841
|
-
* or `11` into the hour field, so we should look
|
|
24842
|
-
* at that first.
|
|
24843
|
-
*/
|
|
24844
|
-
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
24845
|
-
value =
|
|
24846
|
-
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
24847
|
-
? inputEl.value.substring(0, 2)
|
|
24848
|
-
: firstCharacterAgainAgain;
|
|
24849
|
-
this.searchColumn(firstColumn, value);
|
|
24850
|
-
/**
|
|
24851
|
-
* If only checked the first value,
|
|
24852
|
-
* we can check the second value
|
|
24853
|
-
* for a match in the minutes column
|
|
24854
|
-
*/
|
|
24855
|
-
const minuteValueAgain = value.length === 1
|
|
24856
|
-
? inputEl.value.substring(1, inputEl.value.length)
|
|
24857
|
-
: inputEl.value.substring(2, inputEl.value.length);
|
|
24858
|
-
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
24859
|
-
break;
|
|
24860
|
-
default:
|
|
24861
|
-
const startIndex = inputEl.value.length - 4;
|
|
24862
|
-
const newString = inputEl.value.substring(startIndex);
|
|
24863
|
-
inputEl.value = newString;
|
|
24864
|
-
this.selectMultiColumn();
|
|
24865
|
-
break;
|
|
24866
|
-
}
|
|
24867
|
-
};
|
|
24868
|
-
/**
|
|
24869
|
-
* Searches the value of the active column
|
|
24870
|
-
* to determine which value users are trying
|
|
24871
|
-
* to select
|
|
24872
|
-
*/
|
|
24873
|
-
this.onInputChange = () => {
|
|
24874
|
-
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
24875
|
-
if (!useInputMode || !inputEl) {
|
|
24876
|
-
return;
|
|
24877
|
-
}
|
|
24878
|
-
if (inputModeColumn) {
|
|
24879
|
-
this.selectSingleColumn();
|
|
24880
|
-
}
|
|
24881
|
-
else {
|
|
24882
|
-
this.selectMultiColumn();
|
|
24883
|
-
}
|
|
24884
|
-
};
|
|
24885
|
-
/**
|
|
24886
|
-
* Emit ionInputModeChange. Picker columns
|
|
24887
|
-
* listen for this event to determine whether
|
|
24888
|
-
* or not their column is "active" for text input.
|
|
24889
|
-
*/
|
|
24890
|
-
this.emitInputModeChange = () => {
|
|
24891
|
-
const { useInputMode, inputModeColumn } = this;
|
|
24892
|
-
this.ionInputModeChange.emit({
|
|
24893
|
-
useInputMode,
|
|
24894
|
-
inputModeColumn,
|
|
24895
|
-
});
|
|
24896
|
-
};
|
|
24604
|
+
if (this.isOpen === true) {
|
|
24605
|
+
raf(() => this.present());
|
|
24606
|
+
}
|
|
24897
24607
|
}
|
|
24898
24608
|
/**
|
|
24899
|
-
*
|
|
24900
|
-
* we need to prevent touchstart so other
|
|
24901
|
-
* gestures do not fire. For example,
|
|
24902
|
-
* scrolling on the wheel picker
|
|
24903
|
-
* in ion-datetime should not cause
|
|
24904
|
-
* a card modal to swipe to close.
|
|
24609
|
+
* Present the picker overlay after it has been created.
|
|
24905
24610
|
*/
|
|
24906
|
-
|
|
24907
|
-
|
|
24611
|
+
async present() {
|
|
24612
|
+
const unlock = await this.lockController.lock();
|
|
24613
|
+
await this.delegateController.attachViewToDom();
|
|
24614
|
+
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
24615
|
+
if (this.duration > 0) {
|
|
24616
|
+
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
24617
|
+
}
|
|
24618
|
+
unlock();
|
|
24908
24619
|
}
|
|
24909
|
-
|
|
24910
|
-
|
|
24911
|
-
|
|
24620
|
+
/**
|
|
24621
|
+
* Dismiss the picker overlay after it has been presented.
|
|
24622
|
+
*
|
|
24623
|
+
* @param data Any data to emit in the dismiss events.
|
|
24624
|
+
* @param role The role of the element that is dismissing the picker.
|
|
24625
|
+
* This can be useful in a button handler for determining which button was
|
|
24626
|
+
* clicked to dismiss the picker.
|
|
24627
|
+
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
24628
|
+
*/
|
|
24629
|
+
async dismiss(data, role) {
|
|
24630
|
+
const unlock = await this.lockController.lock();
|
|
24631
|
+
if (this.durationTimeout) {
|
|
24632
|
+
clearTimeout(this.durationTimeout);
|
|
24633
|
+
}
|
|
24634
|
+
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
24635
|
+
if (dismissed) {
|
|
24636
|
+
this.delegateController.removeViewFromDom();
|
|
24637
|
+
}
|
|
24638
|
+
unlock();
|
|
24639
|
+
return dismissed;
|
|
24912
24640
|
}
|
|
24913
24641
|
/**
|
|
24914
|
-
*
|
|
24915
|
-
* Exits text entry mode for the picker
|
|
24916
|
-
* This method blurs the hidden input
|
|
24917
|
-
* and cause the keyboard to dismiss.
|
|
24642
|
+
* Returns a promise that resolves when the picker did dismiss.
|
|
24918
24643
|
*/
|
|
24919
|
-
|
|
24920
|
-
|
|
24921
|
-
|
|
24922
|
-
|
|
24644
|
+
onDidDismiss() {
|
|
24645
|
+
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
24646
|
+
}
|
|
24647
|
+
/**
|
|
24648
|
+
* Returns a promise that resolves when the picker will dismiss.
|
|
24649
|
+
*/
|
|
24650
|
+
onWillDismiss() {
|
|
24651
|
+
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
24652
|
+
}
|
|
24653
|
+
/**
|
|
24654
|
+
* Get the column that matches the specified name.
|
|
24655
|
+
*
|
|
24656
|
+
* @param name The name of the column.
|
|
24657
|
+
*/
|
|
24658
|
+
getColumn(name) {
|
|
24659
|
+
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
24660
|
+
}
|
|
24661
|
+
async buttonClick(button) {
|
|
24662
|
+
const role = button.role;
|
|
24663
|
+
if (isCancel(role)) {
|
|
24664
|
+
return this.dismiss(undefined, role);
|
|
24923
24665
|
}
|
|
24924
|
-
|
|
24925
|
-
|
|
24926
|
-
|
|
24927
|
-
inputEl.value = '';
|
|
24928
|
-
if (this.destroyKeypressListener) {
|
|
24929
|
-
this.destroyKeypressListener();
|
|
24930
|
-
this.destroyKeypressListener = undefined;
|
|
24666
|
+
const shouldDismiss = await this.callButtonHandler(button);
|
|
24667
|
+
if (shouldDismiss) {
|
|
24668
|
+
return this.dismiss(this.getSelected(), button.role);
|
|
24931
24669
|
}
|
|
24932
|
-
|
|
24670
|
+
return Promise.resolve();
|
|
24671
|
+
}
|
|
24672
|
+
async callButtonHandler(button) {
|
|
24673
|
+
if (button) {
|
|
24674
|
+
// a handler has been provided, execute it
|
|
24675
|
+
// pass the handler the values from the inputs
|
|
24676
|
+
const rtn = await safeCall(button.handler, this.getSelected());
|
|
24677
|
+
if (rtn === false) {
|
|
24678
|
+
// if the return value of the handler is false then do not dismiss
|
|
24679
|
+
return false;
|
|
24680
|
+
}
|
|
24681
|
+
}
|
|
24682
|
+
return true;
|
|
24683
|
+
}
|
|
24684
|
+
getSelected() {
|
|
24685
|
+
const selected = {};
|
|
24686
|
+
this.columns.forEach((col, index) => {
|
|
24687
|
+
const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
|
|
24688
|
+
selected[col.name] = {
|
|
24689
|
+
text: selectedColumn ? selectedColumn.text : undefined,
|
|
24690
|
+
value: selectedColumn ? selectedColumn.value : undefined,
|
|
24691
|
+
columnIndex: index,
|
|
24692
|
+
};
|
|
24693
|
+
});
|
|
24694
|
+
return selected;
|
|
24933
24695
|
}
|
|
24934
24696
|
render() {
|
|
24935
|
-
|
|
24697
|
+
const { htmlAttributes } = this;
|
|
24698
|
+
const mode = getIonMode$1(this);
|
|
24699
|
+
return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
24700
|
+
zIndex: `${20000 + this.overlayIndex}`,
|
|
24701
|
+
}, class: Object.assign({ [mode]: true,
|
|
24702
|
+
// Used internally for styling
|
|
24703
|
+
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
|
|
24936
24704
|
}
|
|
24937
24705
|
get el() { return getElement(this); }
|
|
24706
|
+
static get watchers() { return {
|
|
24707
|
+
"isOpen": ["onIsOpenChange"],
|
|
24708
|
+
"trigger": ["triggerChanged"]
|
|
24709
|
+
}; }
|
|
24938
24710
|
static get style() { return {
|
|
24939
|
-
ios: pickerIosCss
|
|
24940
|
-
md: pickerMdCss
|
|
24711
|
+
ios: pickerIosCss,
|
|
24712
|
+
md: pickerMdCss
|
|
24941
24713
|
}; }
|
|
24942
24714
|
static get cmpMeta() { return {
|
|
24943
|
-
"$flags$":
|
|
24715
|
+
"$flags$": 34,
|
|
24944
24716
|
"$tagName$": "ion-picker",
|
|
24945
24717
|
"$members$": {
|
|
24946
|
-
"
|
|
24947
|
-
|
|
24948
|
-
|
|
24949
|
-
|
|
24950
|
-
|
|
24951
|
-
|
|
24952
|
-
|
|
24953
|
-
|
|
24954
|
-
|
|
24955
|
-
|
|
24956
|
-
|
|
24957
|
-
|
|
24958
|
-
|
|
24959
|
-
|
|
24960
|
-
|
|
24961
|
-
|
|
24962
|
-
|
|
24963
|
-
|
|
24964
|
-
|
|
24965
|
-
|
|
24966
|
-
|
|
24967
|
-
|
|
24968
|
-
|
|
24969
|
-
|
|
24970
|
-
|
|
24971
|
-
|
|
24972
|
-
|
|
24973
|
-
|
|
24974
|
-
|
|
24975
|
-
|
|
24976
|
-
}
|
|
24977
|
-
|
|
24978
|
-
|
|
24979
|
-
|
|
24980
|
-
|
|
24981
|
-
|
|
24982
|
-
const baseAnimation = createAnimation();
|
|
24983
|
-
const backdropAnimation = createAnimation();
|
|
24984
|
-
const wrapperAnimation = createAnimation();
|
|
24985
|
-
backdropAnimation
|
|
24986
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24987
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
24988
|
-
wrapperAnimation
|
|
24989
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24990
|
-
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
24991
|
-
return baseAnimation
|
|
24992
|
-
.addElement(baseEl)
|
|
24993
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24994
|
-
.duration(400)
|
|
24995
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24718
|
+
"overlayIndex": [2, "overlay-index"],
|
|
24719
|
+
"delegate": [16],
|
|
24720
|
+
"hasController": [4, "has-controller"],
|
|
24721
|
+
"keyboardClose": [4, "keyboard-close"],
|
|
24722
|
+
"enterAnimation": [16],
|
|
24723
|
+
"leaveAnimation": [16],
|
|
24724
|
+
"buttons": [16],
|
|
24725
|
+
"columns": [16],
|
|
24726
|
+
"cssClass": [1, "css-class"],
|
|
24727
|
+
"duration": [2],
|
|
24728
|
+
"showBackdrop": [4, "show-backdrop"],
|
|
24729
|
+
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
24730
|
+
"animated": [4],
|
|
24731
|
+
"htmlAttributes": [16],
|
|
24732
|
+
"isOpen": [4, "is-open"],
|
|
24733
|
+
"trigger": [1],
|
|
24734
|
+
"presented": [32],
|
|
24735
|
+
"present": [64],
|
|
24736
|
+
"dismiss": [64],
|
|
24737
|
+
"onDidDismiss": [64],
|
|
24738
|
+
"onWillDismiss": [64],
|
|
24739
|
+
"getColumn": [64]
|
|
24740
|
+
},
|
|
24741
|
+
"$listeners$": undefined,
|
|
24742
|
+
"$lazyBundleId$": "-",
|
|
24743
|
+
"$attrsToReflect$": []
|
|
24744
|
+
}; }
|
|
24745
|
+
}
|
|
24746
|
+
const buttonWrapperClass = (button) => {
|
|
24747
|
+
return {
|
|
24748
|
+
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
24749
|
+
'picker-toolbar-button': true,
|
|
24750
|
+
};
|
|
24751
|
+
};
|
|
24752
|
+
const buttonClass$1 = (button) => {
|
|
24753
|
+
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
24996
24754
|
};
|
|
24997
24755
|
|
|
24998
|
-
const
|
|
24756
|
+
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}}";
|
|
24999
24757
|
|
|
25000
|
-
const
|
|
24758
|
+
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)}";
|
|
25001
24759
|
|
|
25002
|
-
// TODO(FW-2832): types
|
|
25003
24760
|
/**
|
|
25004
|
-
* @
|
|
24761
|
+
* @internal
|
|
25005
24762
|
*/
|
|
25006
|
-
class
|
|
24763
|
+
class PickerColumnCmp {
|
|
25007
24764
|
constructor(hostRef) {
|
|
25008
24765
|
registerInstance(this, hostRef);
|
|
25009
|
-
this.
|
|
25010
|
-
this.
|
|
25011
|
-
this.
|
|
25012
|
-
this.
|
|
25013
|
-
this.
|
|
25014
|
-
this.
|
|
25015
|
-
this.
|
|
25016
|
-
|
|
25017
|
-
|
|
25018
|
-
|
|
25019
|
-
this.
|
|
25020
|
-
|
|
25021
|
-
|
|
25022
|
-
|
|
25023
|
-
this.
|
|
25024
|
-
|
|
25025
|
-
if (isCancel(role)) {
|
|
25026
|
-
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
25027
|
-
this.callButtonHandler(cancelButton);
|
|
25028
|
-
}
|
|
25029
|
-
};
|
|
25030
|
-
this.presented = false;
|
|
25031
|
-
this.overlayIndex = undefined;
|
|
25032
|
-
this.delegate = undefined;
|
|
25033
|
-
this.hasController = false;
|
|
25034
|
-
this.keyboardClose = true;
|
|
25035
|
-
this.enterAnimation = undefined;
|
|
25036
|
-
this.leaveAnimation = undefined;
|
|
25037
|
-
this.buttons = [];
|
|
25038
|
-
this.columns = [];
|
|
25039
|
-
this.cssClass = undefined;
|
|
25040
|
-
this.duration = 0;
|
|
25041
|
-
this.showBackdrop = true;
|
|
25042
|
-
this.backdropDismiss = true;
|
|
25043
|
-
this.animated = true;
|
|
25044
|
-
this.htmlAttributes = undefined;
|
|
25045
|
-
this.isOpen = false;
|
|
25046
|
-
this.trigger = undefined;
|
|
24766
|
+
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
24767
|
+
this.optHeight = 0;
|
|
24768
|
+
this.rotateFactor = 0;
|
|
24769
|
+
this.scaleFactor = 1;
|
|
24770
|
+
this.velocity = 0;
|
|
24771
|
+
this.y = 0;
|
|
24772
|
+
this.noAnimate = true;
|
|
24773
|
+
// `colDidChange` is a flag that gets set when the column is changed
|
|
24774
|
+
// dynamically. When this flag is set, the column will refresh
|
|
24775
|
+
// after the component re-renders to incorporate the new column data.
|
|
24776
|
+
// This is necessary because `this.refresh` queries for the option elements,
|
|
24777
|
+
// so it needs to wait for the latest elements to be available in the DOM.
|
|
24778
|
+
// Ex: column is created with 3 options. User updates the column data
|
|
24779
|
+
// to have 5 options. The column will still think it only has 3 options.
|
|
24780
|
+
this.colDidChange = false;
|
|
24781
|
+
this.col = undefined;
|
|
25047
24782
|
}
|
|
25048
|
-
|
|
25049
|
-
|
|
25050
|
-
|
|
24783
|
+
colChanged() {
|
|
24784
|
+
this.colDidChange = true;
|
|
24785
|
+
}
|
|
24786
|
+
async connectedCallback() {
|
|
24787
|
+
let pickerRotateFactor = 0;
|
|
24788
|
+
let pickerScaleFactor = 0.81;
|
|
24789
|
+
const mode = getIonMode$1(this);
|
|
24790
|
+
if (mode === 'ios') {
|
|
24791
|
+
pickerRotateFactor = -0.46;
|
|
24792
|
+
pickerScaleFactor = 1;
|
|
25051
24793
|
}
|
|
25052
|
-
|
|
25053
|
-
|
|
24794
|
+
this.rotateFactor = pickerRotateFactor;
|
|
24795
|
+
this.scaleFactor = pickerScaleFactor;
|
|
24796
|
+
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
24797
|
+
el: this.el,
|
|
24798
|
+
gestureName: 'picker-swipe',
|
|
24799
|
+
gesturePriority: 100,
|
|
24800
|
+
threshold: 0,
|
|
24801
|
+
passive: false,
|
|
24802
|
+
onStart: (ev) => this.onStart(ev),
|
|
24803
|
+
onMove: (ev) => this.onMove(ev),
|
|
24804
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
24805
|
+
});
|
|
24806
|
+
this.gesture.enable();
|
|
24807
|
+
// Options have not been initialized yet
|
|
24808
|
+
// Animation must be disabled through the `noAnimate` flag
|
|
24809
|
+
// Otherwise, the options will render
|
|
24810
|
+
// at the top of the column and transition down
|
|
24811
|
+
this.tmrId = setTimeout(() => {
|
|
24812
|
+
this.noAnimate = false;
|
|
24813
|
+
// After initialization, `refresh()` will be called
|
|
24814
|
+
// At this point, animation will be enabled. The options will
|
|
24815
|
+
// animate as they are being selected.
|
|
24816
|
+
this.refresh(true);
|
|
24817
|
+
}, 250);
|
|
24818
|
+
}
|
|
24819
|
+
componentDidLoad() {
|
|
24820
|
+
this.onDomChange();
|
|
24821
|
+
}
|
|
24822
|
+
componentDidUpdate() {
|
|
24823
|
+
// Options may have changed since last update.
|
|
24824
|
+
if (this.colDidChange) {
|
|
24825
|
+
// Animation must be disabled through the `onDomChange` parameter.
|
|
24826
|
+
// Otherwise, the recently added options will render
|
|
24827
|
+
// at the top of the column and transition down
|
|
24828
|
+
this.onDomChange(true, false);
|
|
24829
|
+
this.colDidChange = false;
|
|
24830
|
+
}
|
|
24831
|
+
}
|
|
24832
|
+
disconnectedCallback() {
|
|
24833
|
+
if (this.rafId !== undefined)
|
|
24834
|
+
cancelAnimationFrame(this.rafId);
|
|
24835
|
+
if (this.tmrId)
|
|
24836
|
+
clearTimeout(this.tmrId);
|
|
24837
|
+
if (this.gesture) {
|
|
24838
|
+
this.gesture.destroy();
|
|
24839
|
+
this.gesture = undefined;
|
|
24840
|
+
}
|
|
24841
|
+
}
|
|
24842
|
+
emitColChange() {
|
|
24843
|
+
this.ionPickerColChange.emit(this.col);
|
|
24844
|
+
}
|
|
24845
|
+
setSelected(selectedIndex, duration) {
|
|
24846
|
+
// if there is a selected index, then figure out it's y position
|
|
24847
|
+
// if there isn't a selected index, then just use the top y position
|
|
24848
|
+
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
24849
|
+
this.velocity = 0;
|
|
24850
|
+
// set what y position we're at
|
|
24851
|
+
if (this.rafId !== undefined)
|
|
24852
|
+
cancelAnimationFrame(this.rafId);
|
|
24853
|
+
this.update(y, duration, true);
|
|
24854
|
+
this.emitColChange();
|
|
24855
|
+
}
|
|
24856
|
+
update(y, duration, saveY) {
|
|
24857
|
+
if (!this.optsEl) {
|
|
24858
|
+
return;
|
|
24859
|
+
}
|
|
24860
|
+
// ensure we've got a good round number :)
|
|
24861
|
+
let translateY = 0;
|
|
24862
|
+
let translateZ = 0;
|
|
24863
|
+
const { col, rotateFactor } = this;
|
|
24864
|
+
const prevSelected = col.selectedIndex;
|
|
24865
|
+
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
24866
|
+
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
24867
|
+
const scaleStr = `scale(${this.scaleFactor})`;
|
|
24868
|
+
const children = this.optsEl.children;
|
|
24869
|
+
for (let i = 0; i < children.length; i++) {
|
|
24870
|
+
const button = children[i];
|
|
24871
|
+
const opt = col.options[i];
|
|
24872
|
+
const optOffset = i * this.optHeight + y;
|
|
24873
|
+
let transform = '';
|
|
24874
|
+
if (rotateFactor !== 0) {
|
|
24875
|
+
const rotateX = optOffset * rotateFactor;
|
|
24876
|
+
if (Math.abs(rotateX) <= 90) {
|
|
24877
|
+
translateY = 0;
|
|
24878
|
+
translateZ = 90;
|
|
24879
|
+
transform = `rotateX(${rotateX}deg) `;
|
|
24880
|
+
}
|
|
24881
|
+
else {
|
|
24882
|
+
translateY = -9999;
|
|
24883
|
+
}
|
|
24884
|
+
}
|
|
24885
|
+
else {
|
|
24886
|
+
translateZ = 0;
|
|
24887
|
+
translateY = optOffset;
|
|
24888
|
+
}
|
|
24889
|
+
const selected = selectedIndex === i;
|
|
24890
|
+
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
24891
|
+
if (this.scaleFactor !== 1 && !selected) {
|
|
24892
|
+
transform += scaleStr;
|
|
24893
|
+
}
|
|
24894
|
+
// Update transition duration
|
|
24895
|
+
if (this.noAnimate) {
|
|
24896
|
+
opt.duration = 0;
|
|
24897
|
+
button.style.transitionDuration = '';
|
|
24898
|
+
}
|
|
24899
|
+
else if (duration !== opt.duration) {
|
|
24900
|
+
opt.duration = duration;
|
|
24901
|
+
button.style.transitionDuration = durationStr;
|
|
24902
|
+
}
|
|
24903
|
+
// Update transform
|
|
24904
|
+
if (transform !== opt.transform) {
|
|
24905
|
+
opt.transform = transform;
|
|
24906
|
+
}
|
|
24907
|
+
button.style.transform = transform;
|
|
24908
|
+
/**
|
|
24909
|
+
* Ensure that the select column
|
|
24910
|
+
* item has the selected class
|
|
24911
|
+
*/
|
|
24912
|
+
opt.selected = selected;
|
|
24913
|
+
if (selected) {
|
|
24914
|
+
button.classList.add(PICKER_OPT_SELECTED);
|
|
24915
|
+
}
|
|
24916
|
+
else {
|
|
24917
|
+
button.classList.remove(PICKER_OPT_SELECTED);
|
|
24918
|
+
}
|
|
24919
|
+
}
|
|
24920
|
+
this.col.prevSelected = prevSelected;
|
|
24921
|
+
if (saveY) {
|
|
24922
|
+
this.y = y;
|
|
24923
|
+
}
|
|
24924
|
+
if (this.lastIndex !== selectedIndex) {
|
|
24925
|
+
// have not set a last index yet
|
|
24926
|
+
hapticSelectionChanged();
|
|
24927
|
+
this.lastIndex = selectedIndex;
|
|
24928
|
+
}
|
|
24929
|
+
}
|
|
24930
|
+
decelerate() {
|
|
24931
|
+
if (this.velocity !== 0) {
|
|
24932
|
+
// still decelerating
|
|
24933
|
+
this.velocity *= DECELERATION_FRICTION;
|
|
24934
|
+
// do not let it go slower than a velocity of 1
|
|
24935
|
+
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
24936
|
+
let y = this.y + this.velocity;
|
|
24937
|
+
if (y > this.minY) {
|
|
24938
|
+
// whoops, it's trying to scroll up farther than the options we have!
|
|
24939
|
+
y = this.minY;
|
|
24940
|
+
this.velocity = 0;
|
|
24941
|
+
}
|
|
24942
|
+
else if (y < this.maxY) {
|
|
24943
|
+
// gahh, it's trying to scroll down farther than we can!
|
|
24944
|
+
y = this.maxY;
|
|
24945
|
+
this.velocity = 0;
|
|
24946
|
+
}
|
|
24947
|
+
this.update(y, 0, true);
|
|
24948
|
+
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
24949
|
+
if (notLockedIn) {
|
|
24950
|
+
// isn't locked in yet, keep decelerating until it is
|
|
24951
|
+
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
24952
|
+
}
|
|
24953
|
+
else {
|
|
24954
|
+
this.velocity = 0;
|
|
24955
|
+
this.emitColChange();
|
|
24956
|
+
hapticSelectionEnd();
|
|
24957
|
+
}
|
|
25054
24958
|
}
|
|
25055
|
-
|
|
25056
|
-
|
|
25057
|
-
|
|
25058
|
-
|
|
25059
|
-
|
|
24959
|
+
else if (this.y % this.optHeight !== 0) {
|
|
24960
|
+
// needs to still get locked into a position so options line up
|
|
24961
|
+
const currentPos = Math.abs(this.y % this.optHeight);
|
|
24962
|
+
// create a velocity in the direction it needs to scroll
|
|
24963
|
+
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
24964
|
+
this.decelerate();
|
|
25060
24965
|
}
|
|
25061
24966
|
}
|
|
25062
|
-
|
|
25063
|
-
|
|
25064
|
-
this.triggerChanged();
|
|
25065
|
-
}
|
|
25066
|
-
disconnectedCallback() {
|
|
25067
|
-
this.triggerController.removeClickListener();
|
|
25068
|
-
}
|
|
25069
|
-
componentWillLoad() {
|
|
25070
|
-
setOverlayId(this.el);
|
|
24967
|
+
indexForY(y) {
|
|
24968
|
+
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
25071
24969
|
}
|
|
25072
|
-
|
|
25073
|
-
|
|
25074
|
-
|
|
25075
|
-
|
|
25076
|
-
|
|
25077
|
-
|
|
25078
|
-
if (this.isOpen === true) {
|
|
25079
|
-
raf(() => this.present());
|
|
24970
|
+
onStart(detail) {
|
|
24971
|
+
// We have to prevent default in order to block scrolling under the picker
|
|
24972
|
+
// but we DO NOT have to stop propagation, since we still want
|
|
24973
|
+
// some "click" events to capture
|
|
24974
|
+
if (detail.event.cancelable) {
|
|
24975
|
+
detail.event.preventDefault();
|
|
25080
24976
|
}
|
|
25081
|
-
|
|
25082
|
-
|
|
25083
|
-
|
|
25084
|
-
|
|
25085
|
-
|
|
25086
|
-
const
|
|
25087
|
-
|
|
25088
|
-
|
|
25089
|
-
|
|
25090
|
-
|
|
24977
|
+
detail.event.stopPropagation();
|
|
24978
|
+
hapticSelectionStart();
|
|
24979
|
+
// reset everything
|
|
24980
|
+
if (this.rafId !== undefined)
|
|
24981
|
+
cancelAnimationFrame(this.rafId);
|
|
24982
|
+
const options = this.col.options;
|
|
24983
|
+
let minY = options.length - 1;
|
|
24984
|
+
let maxY = 0;
|
|
24985
|
+
for (let i = 0; i < options.length; i++) {
|
|
24986
|
+
if (!options[i].disabled) {
|
|
24987
|
+
minY = Math.min(minY, i);
|
|
24988
|
+
maxY = Math.max(maxY, i);
|
|
24989
|
+
}
|
|
25091
24990
|
}
|
|
25092
|
-
|
|
24991
|
+
this.minY = -(minY * this.optHeight);
|
|
24992
|
+
this.maxY = -(maxY * this.optHeight);
|
|
25093
24993
|
}
|
|
25094
|
-
|
|
25095
|
-
|
|
25096
|
-
|
|
25097
|
-
* @param data Any data to emit in the dismiss events.
|
|
25098
|
-
* @param role The role of the element that is dismissing the picker.
|
|
25099
|
-
* This can be useful in a button handler for determining which button was
|
|
25100
|
-
* clicked to dismiss the picker.
|
|
25101
|
-
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
25102
|
-
*/
|
|
25103
|
-
async dismiss(data, role) {
|
|
25104
|
-
const unlock = await this.lockController.lock();
|
|
25105
|
-
if (this.durationTimeout) {
|
|
25106
|
-
clearTimeout(this.durationTimeout);
|
|
24994
|
+
onMove(detail) {
|
|
24995
|
+
if (detail.event.cancelable) {
|
|
24996
|
+
detail.event.preventDefault();
|
|
25107
24997
|
}
|
|
25108
|
-
|
|
25109
|
-
|
|
25110
|
-
|
|
24998
|
+
detail.event.stopPropagation();
|
|
24999
|
+
// update the scroll position relative to pointer start position
|
|
25000
|
+
let y = this.y + detail.deltaY;
|
|
25001
|
+
if (y > this.minY) {
|
|
25002
|
+
// scrolling up higher than scroll area
|
|
25003
|
+
y = Math.pow(y, 0.8);
|
|
25004
|
+
this.bounceFrom = y;
|
|
25111
25005
|
}
|
|
25112
|
-
|
|
25113
|
-
|
|
25114
|
-
|
|
25115
|
-
|
|
25116
|
-
|
|
25117
|
-
|
|
25118
|
-
|
|
25119
|
-
|
|
25120
|
-
|
|
25121
|
-
/**
|
|
25122
|
-
* Returns a promise that resolves when the picker will dismiss.
|
|
25123
|
-
*/
|
|
25124
|
-
onWillDismiss() {
|
|
25125
|
-
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
25126
|
-
}
|
|
25127
|
-
/**
|
|
25128
|
-
* Get the column that matches the specified name.
|
|
25129
|
-
*
|
|
25130
|
-
* @param name The name of the column.
|
|
25131
|
-
*/
|
|
25132
|
-
getColumn(name) {
|
|
25133
|
-
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
25006
|
+
else if (y < this.maxY) {
|
|
25007
|
+
// scrolling down below scroll area
|
|
25008
|
+
y += Math.pow(this.maxY - y, 0.9);
|
|
25009
|
+
this.bounceFrom = y;
|
|
25010
|
+
}
|
|
25011
|
+
else {
|
|
25012
|
+
this.bounceFrom = 0;
|
|
25013
|
+
}
|
|
25014
|
+
this.update(y, 0, false);
|
|
25134
25015
|
}
|
|
25135
|
-
|
|
25136
|
-
|
|
25137
|
-
|
|
25138
|
-
|
|
25016
|
+
onEnd(detail) {
|
|
25017
|
+
if (this.bounceFrom > 0) {
|
|
25018
|
+
// bounce back up
|
|
25019
|
+
this.update(this.minY, 100, true);
|
|
25020
|
+
this.emitColChange();
|
|
25021
|
+
return;
|
|
25139
25022
|
}
|
|
25140
|
-
|
|
25141
|
-
|
|
25142
|
-
|
|
25023
|
+
else if (this.bounceFrom < 0) {
|
|
25024
|
+
// bounce back down
|
|
25025
|
+
this.update(this.maxY, 100, true);
|
|
25026
|
+
this.emitColChange();
|
|
25027
|
+
return;
|
|
25028
|
+
}
|
|
25029
|
+
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
25030
|
+
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
25031
|
+
const opt = detail.event.target.closest('.picker-opt');
|
|
25032
|
+
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
25033
|
+
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
25034
|
+
}
|
|
25035
|
+
}
|
|
25036
|
+
else {
|
|
25037
|
+
this.y += detail.deltaY;
|
|
25038
|
+
if (Math.abs(detail.velocityY) < 0.05) {
|
|
25039
|
+
const isScrollingUp = detail.deltaY > 0;
|
|
25040
|
+
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
25041
|
+
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
25042
|
+
this.velocity = Math.abs(this.velocity) * -1;
|
|
25043
|
+
}
|
|
25044
|
+
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
25045
|
+
this.velocity = Math.abs(this.velocity);
|
|
25046
|
+
}
|
|
25047
|
+
}
|
|
25048
|
+
this.decelerate();
|
|
25143
25049
|
}
|
|
25144
|
-
return Promise.resolve();
|
|
25145
25050
|
}
|
|
25146
|
-
|
|
25147
|
-
|
|
25148
|
-
|
|
25149
|
-
|
|
25150
|
-
|
|
25151
|
-
|
|
25152
|
-
|
|
25153
|
-
|
|
25051
|
+
refresh(forceRefresh, animated) {
|
|
25052
|
+
var _a;
|
|
25053
|
+
let min = this.col.options.length - 1;
|
|
25054
|
+
let max = 0;
|
|
25055
|
+
const options = this.col.options;
|
|
25056
|
+
for (let i = 0; i < options.length; i++) {
|
|
25057
|
+
if (!options[i].disabled) {
|
|
25058
|
+
min = Math.min(min, i);
|
|
25059
|
+
max = Math.max(max, i);
|
|
25154
25060
|
}
|
|
25155
25061
|
}
|
|
25156
|
-
|
|
25062
|
+
/**
|
|
25063
|
+
* Only update selected value if column has a
|
|
25064
|
+
* velocity of 0. If it does not, then the
|
|
25065
|
+
* column is animating might land on
|
|
25066
|
+
* a value different than the value at
|
|
25067
|
+
* selectedIndex
|
|
25068
|
+
*/
|
|
25069
|
+
if (this.velocity !== 0) {
|
|
25070
|
+
return;
|
|
25071
|
+
}
|
|
25072
|
+
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
25073
|
+
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
25074
|
+
const y = selectedIndex * this.optHeight * -1;
|
|
25075
|
+
const duration = animated ? TRANSITION_DURATION : 0;
|
|
25076
|
+
this.velocity = 0;
|
|
25077
|
+
this.update(y, duration, true);
|
|
25078
|
+
}
|
|
25157
25079
|
}
|
|
25158
|
-
|
|
25159
|
-
const
|
|
25160
|
-
|
|
25161
|
-
|
|
25162
|
-
|
|
25163
|
-
|
|
25164
|
-
|
|
25165
|
-
|
|
25166
|
-
};
|
|
25167
|
-
});
|
|
25168
|
-
return selected;
|
|
25080
|
+
onDomChange(forceRefresh, animated) {
|
|
25081
|
+
const colEl = this.optsEl;
|
|
25082
|
+
if (colEl) {
|
|
25083
|
+
// DOM READ
|
|
25084
|
+
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
25085
|
+
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
25086
|
+
}
|
|
25087
|
+
this.refresh(forceRefresh, animated);
|
|
25169
25088
|
}
|
|
25170
25089
|
render() {
|
|
25171
|
-
const
|
|
25090
|
+
const col = this.col;
|
|
25172
25091
|
const mode = getIonMode$1(this);
|
|
25173
|
-
return (hAsync(Host, Object.assign({
|
|
25174
|
-
|
|
25175
|
-
}, class:
|
|
25176
|
-
// Used internally for styling
|
|
25177
|
-
[`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" })));
|
|
25092
|
+
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: {
|
|
25093
|
+
'max-width': this.col.columnWidth,
|
|
25094
|
+
} }, 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))));
|
|
25178
25095
|
}
|
|
25179
25096
|
get el() { return getElement(this); }
|
|
25180
25097
|
static get watchers() { return {
|
|
25181
|
-
"
|
|
25182
|
-
"trigger": ["triggerChanged"]
|
|
25098
|
+
"col": ["colChanged"]
|
|
25183
25099
|
}; }
|
|
25184
25100
|
static get style() { return {
|
|
25185
|
-
ios:
|
|
25186
|
-
md:
|
|
25101
|
+
ios: pickerColumnIosCss,
|
|
25102
|
+
md: pickerColumnMdCss
|
|
25187
25103
|
}; }
|
|
25188
|
-
static get cmpMeta() { return {
|
|
25189
|
-
"$flags$":
|
|
25190
|
-
"$tagName$": "ion-picker-
|
|
25191
|
-
"$members$": {
|
|
25192
|
-
"
|
|
25193
|
-
"delegate": [16],
|
|
25194
|
-
"hasController": [4, "has-controller"],
|
|
25195
|
-
"keyboardClose": [4, "keyboard-close"],
|
|
25196
|
-
"enterAnimation": [16],
|
|
25197
|
-
"leaveAnimation": [16],
|
|
25198
|
-
"buttons": [16],
|
|
25199
|
-
"columns": [16],
|
|
25200
|
-
"cssClass": [1, "css-class"],
|
|
25201
|
-
"duration": [2],
|
|
25202
|
-
"showBackdrop": [4, "show-backdrop"],
|
|
25203
|
-
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
25204
|
-
"animated": [4],
|
|
25205
|
-
"htmlAttributes": [16],
|
|
25206
|
-
"isOpen": [4, "is-open"],
|
|
25207
|
-
"trigger": [1],
|
|
25208
|
-
"presented": [32],
|
|
25209
|
-
"present": [64],
|
|
25210
|
-
"dismiss": [64],
|
|
25211
|
-
"onDidDismiss": [64],
|
|
25212
|
-
"onWillDismiss": [64],
|
|
25213
|
-
"getColumn": [64]
|
|
25104
|
+
static get cmpMeta() { return {
|
|
25105
|
+
"$flags$": 32,
|
|
25106
|
+
"$tagName$": "ion-picker-column",
|
|
25107
|
+
"$members$": {
|
|
25108
|
+
"col": [16]
|
|
25214
25109
|
},
|
|
25215
25110
|
"$listeners$": undefined,
|
|
25216
25111
|
"$lazyBundleId$": "-",
|
|
25217
25112
|
"$attrsToReflect$": []
|
|
25218
25113
|
}; }
|
|
25219
25114
|
}
|
|
25220
|
-
const
|
|
25221
|
-
|
|
25222
|
-
|
|
25223
|
-
|
|
25224
|
-
};
|
|
25225
|
-
};
|
|
25226
|
-
const buttonClass$1 = (button) => {
|
|
25227
|
-
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
25228
|
-
};
|
|
25115
|
+
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
25116
|
+
const DECELERATION_FRICTION = 0.97;
|
|
25117
|
+
const MAX_PICKER_SPEED = 90;
|
|
25118
|
+
const TRANSITION_DURATION = 150;
|
|
25229
25119
|
|
|
25230
|
-
const
|
|
25120
|
+
const pickerColumnInternalIosCss = "/*!@:host*/.sc-ion-picker-column-internal-ios-h{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-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;text-align:center}/*!@:host::-webkit-scrollbar*/.sc-ion-picker-column-internal-ios-h::-webkit-scrollbar{display:none}/*!@:host .picker-item*/.sc-ion-picker-column-internal-ios-h .picker-item.sc-ion-picker-column-internal-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;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;cursor:pointer;overflow:hidden;scroll-snap-align:center}/*!@:host .picker-item-empty,\n:host .picker-item[disabled]*/.sc-ion-picker-column-internal-ios-h .picker-item-empty.sc-ion-picker-column-internal-ios,.sc-ion-picker-column-internal-ios-h .picker-item[disabled].sc-ion-picker-column-internal-ios{cursor:default}/*!@:host .picker-item-empty,\n:host(:not([disabled])) .picker-item[disabled]*/.sc-ion-picker-column-internal-ios-h .picker-item-empty.sc-ion-picker-column-internal-ios,.sc-ion-picker-column-internal-ios-h:not([disabled]) .picker-item[disabled].sc-ion-picker-column-internal-ios{scroll-snap-align:none}/*!@:host([disabled])*/[disabled].sc-ion-picker-column-internal-ios-h{overflow-y:hidden}/*!@:host .picker-item[disabled]*/.sc-ion-picker-column-internal-ios-h .picker-item[disabled].sc-ion-picker-column-internal-ios{opacity:0.4}/*!@:host(.picker-column-active) .picker-item.picker-item-active*/.picker-column-active.sc-ion-picker-column-internal-ios-h .picker-item.picker-item-active.sc-ion-picker-column-internal-ios{color:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(:focus)*/.sc-ion-picker-column-internal-ios-h:focus{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
|
|
25231
25121
|
|
|
25232
|
-
const
|
|
25122
|
+
const pickerColumnInternalMdCss = "/*!@:host*/.sc-ion-picker-column-internal-md-h{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-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;text-align:center}/*!@:host::-webkit-scrollbar*/.sc-ion-picker-column-internal-md-h::-webkit-scrollbar{display:none}/*!@:host .picker-item*/.sc-ion-picker-column-internal-md-h .picker-item.sc-ion-picker-column-internal-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;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;cursor:pointer;overflow:hidden;scroll-snap-align:center}/*!@:host .picker-item-empty,\n:host .picker-item[disabled]*/.sc-ion-picker-column-internal-md-h .picker-item-empty.sc-ion-picker-column-internal-md,.sc-ion-picker-column-internal-md-h .picker-item[disabled].sc-ion-picker-column-internal-md{cursor:default}/*!@:host .picker-item-empty,\n:host(:not([disabled])) .picker-item[disabled]*/.sc-ion-picker-column-internal-md-h .picker-item-empty.sc-ion-picker-column-internal-md,.sc-ion-picker-column-internal-md-h:not([disabled]) .picker-item[disabled].sc-ion-picker-column-internal-md{scroll-snap-align:none}/*!@:host([disabled])*/[disabled].sc-ion-picker-column-internal-md-h{overflow-y:hidden}/*!@:host .picker-item[disabled]*/.sc-ion-picker-column-internal-md-h .picker-item[disabled].sc-ion-picker-column-internal-md{opacity:0.4}/*!@:host(.picker-column-active) .picker-item.picker-item-active*/.picker-column-active.sc-ion-picker-column-internal-md-h .picker-item.picker-item-active.sc-ion-picker-column-internal-md{color:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(:focus)*/.sc-ion-picker-column-internal-md-h:focus{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}/*!@:host .picker-item-active*/.sc-ion-picker-column-internal-md-h .picker-item-active.sc-ion-picker-column-internal-md{color:var(--ion-color-base)}";
|
|
25233
25123
|
|
|
25234
25124
|
/**
|
|
25235
25125
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25126
|
+
* @internal
|
|
25236
25127
|
*/
|
|
25237
|
-
class
|
|
25128
|
+
class PickerColumnInternal {
|
|
25238
25129
|
constructor(hostRef) {
|
|
25239
25130
|
registerInstance(this, hostRef);
|
|
25240
25131
|
this.ionChange = createEvent(this, "ionChange", 7);
|
|
@@ -25496,7 +25387,7 @@ class PickerColumn {
|
|
|
25496
25387
|
}
|
|
25497
25388
|
};
|
|
25498
25389
|
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
25499
|
-
const parentEl = (this.parentEl = this.el.closest('ion-picker'));
|
|
25390
|
+
const parentEl = (this.parentEl = this.el.closest('ion-picker-internal'));
|
|
25500
25391
|
if (parentEl !== null) {
|
|
25501
25392
|
// TODO(FW-2832): type
|
|
25502
25393
|
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
@@ -25556,7 +25447,7 @@ class PickerColumn {
|
|
|
25556
25447
|
* exportparts is needed so ion-datetime can expose the parts
|
|
25557
25448
|
* from two layers of shadow nesting. If this causes problems,
|
|
25558
25449
|
* the attribute can be moved to datetime.tsx and set on every
|
|
25559
|
-
* instance of ion-picker-column there instead.
|
|
25450
|
+
* instance of ion-picker-column-internal there instead.
|
|
25560
25451
|
*/
|
|
25561
25452
|
return (hAsync(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses$1(color, {
|
|
25562
25453
|
[mode]: true,
|
|
@@ -25576,12 +25467,12 @@ class PickerColumn {
|
|
|
25576
25467
|
"value": ["valueChange"]
|
|
25577
25468
|
}; }
|
|
25578
25469
|
static get style() { return {
|
|
25579
|
-
ios:
|
|
25580
|
-
md:
|
|
25470
|
+
ios: pickerColumnInternalIosCss,
|
|
25471
|
+
md: pickerColumnInternalMdCss
|
|
25581
25472
|
}; }
|
|
25582
25473
|
static get cmpMeta() { return {
|
|
25583
25474
|
"$flags$": 41,
|
|
25584
|
-
"$tagName$": "ion-picker-column",
|
|
25475
|
+
"$tagName$": "ion-picker-column-internal",
|
|
25585
25476
|
"$members$": {
|
|
25586
25477
|
"disabled": [4],
|
|
25587
25478
|
"items": [16],
|
|
@@ -25601,369 +25492,494 @@ const PICKER_ITEM_ACTIVE_CLASS = 'picker-item-active';
|
|
|
25601
25492
|
const PICKER_ITEM_PART = 'wheel-item';
|
|
25602
25493
|
const PICKER_ITEM_ACTIVE_PART = 'active';
|
|
25603
25494
|
|
|
25604
|
-
const
|
|
25495
|
+
const pickerInternalIosCss = "/*!@:host*/.sc-ion-picker-internal-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-internal-ios-h .picker-before.sc-ion-picker-internal-ios,.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios,[dir=rtl] .sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-ios selector(.sc-ion-picker-internal-ios:dir(rtl)){.sc-ion-picker-internal-ios-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios,[dir=rtl] .sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-ios selector(.sc-ion-picker-internal-ios:dir(rtl)){.sc-ion-picker-internal-ios-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-internal-ios-h .picker-highlight.sc-ion-picker-internal-ios{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(--wheel-highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-internal-ios-h input.sc-ion-picker-internal-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-internal:first-of-type)*/.sc-ion-picker-internal-ios-h .sc-ion-picker-internal-ios-s>ion-picker-column-internal:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column-internal:last-of-type)*/.sc-ion-picker-internal-ios-h .sc-ion-picker-internal-ios-s>ion-picker-column-internal:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column-internal:only-child)*/.sc-ion-picker-internal-ios-h .sc-ion-picker-internal-ios-s>ion-picker-column-internal:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-highlight*/.sc-ion-picker-internal-ios-h .picker-highlight.sc-ion-picker-internal-ios{background:var(--wheel-highlight-background, var(--ion-color-step-150, #eeeeef))}";
|
|
25605
25496
|
|
|
25606
|
-
const
|
|
25497
|
+
const pickerInternalMdCss = "/*!@:host*/.sc-ion-picker-internal-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-internal-md-h .picker-before.sc-ion-picker-internal-md,.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md,[dir=rtl] .sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-md selector(.sc-ion-picker-internal-md:dir(rtl)){.sc-ion-picker-internal-md-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md,[dir=rtl] .sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-md selector(.sc-ion-picker-internal-md:dir(rtl)){.sc-ion-picker-internal-md-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-internal-md-h .picker-highlight.sc-ion-picker-internal-md{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(--wheel-highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-internal-md-h input.sc-ion-picker-internal-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-internal:first-of-type)*/.sc-ion-picker-internal-md-h .sc-ion-picker-internal-md-s>ion-picker-column-internal:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column-internal:last-of-type)*/.sc-ion-picker-internal-md-h .sc-ion-picker-internal-md-s>ion-picker-column-internal:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column-internal:only-child)*/.sc-ion-picker-internal-md-h .sc-ion-picker-internal-md-s>ion-picker-column-internal:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}";
|
|
25607
25498
|
|
|
25608
25499
|
/**
|
|
25500
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25609
25501
|
* @internal
|
|
25610
25502
|
*/
|
|
25611
|
-
class
|
|
25503
|
+
class PickerInternal {
|
|
25612
25504
|
constructor(hostRef) {
|
|
25613
25505
|
registerInstance(this, hostRef);
|
|
25614
|
-
this.
|
|
25615
|
-
this.
|
|
25616
|
-
this.
|
|
25617
|
-
|
|
25618
|
-
|
|
25619
|
-
|
|
25620
|
-
|
|
25621
|
-
|
|
25622
|
-
|
|
25623
|
-
|
|
25624
|
-
|
|
25625
|
-
|
|
25626
|
-
|
|
25627
|
-
|
|
25628
|
-
|
|
25629
|
-
|
|
25630
|
-
|
|
25631
|
-
|
|
25632
|
-
|
|
25633
|
-
|
|
25634
|
-
|
|
25635
|
-
|
|
25636
|
-
|
|
25637
|
-
|
|
25638
|
-
|
|
25639
|
-
|
|
25640
|
-
|
|
25641
|
-
|
|
25642
|
-
|
|
25643
|
-
|
|
25644
|
-
|
|
25645
|
-
|
|
25646
|
-
|
|
25647
|
-
|
|
25648
|
-
|
|
25649
|
-
|
|
25650
|
-
|
|
25651
|
-
|
|
25652
|
-
|
|
25653
|
-
|
|
25654
|
-
|
|
25655
|
-
|
|
25656
|
-
|
|
25657
|
-
|
|
25658
|
-
|
|
25659
|
-
|
|
25660
|
-
|
|
25661
|
-
|
|
25662
|
-
|
|
25663
|
-
|
|
25664
|
-
|
|
25665
|
-
|
|
25666
|
-
|
|
25667
|
-
|
|
25668
|
-
|
|
25669
|
-
|
|
25670
|
-
|
|
25671
|
-
|
|
25672
|
-
|
|
25673
|
-
|
|
25674
|
-
|
|
25675
|
-
|
|
25676
|
-
|
|
25677
|
-
this.
|
|
25678
|
-
|
|
25679
|
-
|
|
25680
|
-
|
|
25681
|
-
|
|
25682
|
-
|
|
25683
|
-
|
|
25684
|
-
|
|
25685
|
-
|
|
25686
|
-
|
|
25687
|
-
|
|
25688
|
-
|
|
25689
|
-
|
|
25690
|
-
|
|
25691
|
-
|
|
25692
|
-
|
|
25693
|
-
|
|
25694
|
-
|
|
25695
|
-
|
|
25696
|
-
|
|
25697
|
-
|
|
25698
|
-
|
|
25699
|
-
|
|
25700
|
-
|
|
25701
|
-
|
|
25702
|
-
|
|
25703
|
-
|
|
25704
|
-
|
|
25705
|
-
|
|
25706
|
-
|
|
25707
|
-
|
|
25708
|
-
|
|
25709
|
-
|
|
25710
|
-
|
|
25711
|
-
|
|
25712
|
-
|
|
25713
|
-
|
|
25714
|
-
|
|
25715
|
-
|
|
25716
|
-
|
|
25717
|
-
|
|
25718
|
-
|
|
25719
|
-
|
|
25720
|
-
|
|
25721
|
-
|
|
25722
|
-
|
|
25723
|
-
|
|
25724
|
-
|
|
25725
|
-
|
|
25726
|
-
|
|
25727
|
-
|
|
25506
|
+
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
25507
|
+
this.useInputMode = false;
|
|
25508
|
+
this.isInHighlightBounds = (ev) => {
|
|
25509
|
+
const { highlightEl } = this;
|
|
25510
|
+
if (!highlightEl) {
|
|
25511
|
+
return false;
|
|
25512
|
+
}
|
|
25513
|
+
const bbox = highlightEl.getBoundingClientRect();
|
|
25514
|
+
/**
|
|
25515
|
+
* Check to see if the user clicked
|
|
25516
|
+
* outside the bounds of the highlight.
|
|
25517
|
+
*/
|
|
25518
|
+
const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
|
|
25519
|
+
const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
|
|
25520
|
+
if (outsideX || outsideY) {
|
|
25521
|
+
return false;
|
|
25522
|
+
}
|
|
25523
|
+
return true;
|
|
25524
|
+
};
|
|
25525
|
+
/**
|
|
25526
|
+
* If we are no longer focused
|
|
25527
|
+
* on a picker column, then we should
|
|
25528
|
+
* exit input mode. An exception is made
|
|
25529
|
+
* for the input in the picker since having
|
|
25530
|
+
* that focused means we are still in input mode.
|
|
25531
|
+
*/
|
|
25532
|
+
this.onFocusOut = (ev) => {
|
|
25533
|
+
// TODO(FW-2832): type
|
|
25534
|
+
const { relatedTarget } = ev;
|
|
25535
|
+
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN-INTERNAL' && relatedTarget !== this.inputEl)) {
|
|
25536
|
+
this.exitInputMode();
|
|
25537
|
+
}
|
|
25538
|
+
};
|
|
25539
|
+
/**
|
|
25540
|
+
* When picker columns receive focus
|
|
25541
|
+
* the parent picker needs to determine
|
|
25542
|
+
* whether to enter/exit input mode.
|
|
25543
|
+
*/
|
|
25544
|
+
this.onFocusIn = (ev) => {
|
|
25545
|
+
// TODO(FW-2832): type
|
|
25546
|
+
const { target } = ev;
|
|
25547
|
+
/**
|
|
25548
|
+
* Due to browser differences in how/when focus
|
|
25549
|
+
* is dispatched on certain elements, we need to
|
|
25550
|
+
* make sure that this function only ever runs when
|
|
25551
|
+
* focusing a picker column.
|
|
25552
|
+
*/
|
|
25553
|
+
if (target.tagName !== 'ION-PICKER-COLUMN-INTERNAL') {
|
|
25554
|
+
return;
|
|
25555
|
+
}
|
|
25556
|
+
/**
|
|
25557
|
+
* If we have actionOnClick
|
|
25558
|
+
* then this means the user focused
|
|
25559
|
+
* a picker column via mouse or
|
|
25560
|
+
* touch (i.e. a PointerEvent). As a result,
|
|
25561
|
+
* we should not enter/exit input mode
|
|
25562
|
+
* until the click event has fired, which happens
|
|
25563
|
+
* after the `focusin` event.
|
|
25564
|
+
*
|
|
25565
|
+
* Otherwise, the user likely focused
|
|
25566
|
+
* the column using their keyboard and
|
|
25567
|
+
* we should enter/exit input mode automatically.
|
|
25568
|
+
*/
|
|
25569
|
+
if (!this.actionOnClick) {
|
|
25570
|
+
const columnEl = target;
|
|
25571
|
+
const allowInput = columnEl.numericInput;
|
|
25572
|
+
if (allowInput) {
|
|
25573
|
+
this.enterInputMode(columnEl, false);
|
|
25574
|
+
}
|
|
25575
|
+
else {
|
|
25576
|
+
this.exitInputMode();
|
|
25577
|
+
}
|
|
25578
|
+
}
|
|
25579
|
+
};
|
|
25580
|
+
/**
|
|
25581
|
+
* On click we need to run an actionOnClick
|
|
25582
|
+
* function that has been set in onPointerDown
|
|
25583
|
+
* so that we enter/exit input mode correctly.
|
|
25584
|
+
*/
|
|
25585
|
+
this.onClick = () => {
|
|
25586
|
+
const { actionOnClick } = this;
|
|
25587
|
+
if (actionOnClick) {
|
|
25588
|
+
actionOnClick();
|
|
25589
|
+
this.actionOnClick = undefined;
|
|
25590
|
+
}
|
|
25591
|
+
};
|
|
25592
|
+
/**
|
|
25593
|
+
* Clicking a column also focuses the column on
|
|
25594
|
+
* certain browsers, so we use onPointerDown
|
|
25595
|
+
* to tell the onFocusIn function that users
|
|
25596
|
+
* are trying to click the column rather than
|
|
25597
|
+
* focus the column using the keyboard. When the
|
|
25598
|
+
* user completes the click, the onClick function
|
|
25599
|
+
* runs and runs the actionOnClick callback.
|
|
25600
|
+
*/
|
|
25601
|
+
this.onPointerDown = (ev) => {
|
|
25602
|
+
const { useInputMode, inputModeColumn, el } = this;
|
|
25603
|
+
if (this.isInHighlightBounds(ev)) {
|
|
25604
|
+
/**
|
|
25605
|
+
* If we were already in
|
|
25606
|
+
* input mode, then we should determine
|
|
25607
|
+
* if we tapped a particular column and
|
|
25608
|
+
* should switch to input mode for
|
|
25609
|
+
* that specific column.
|
|
25610
|
+
*/
|
|
25611
|
+
if (useInputMode) {
|
|
25612
|
+
/**
|
|
25613
|
+
* If we tapped a picker column
|
|
25614
|
+
* then we should either switch to input
|
|
25615
|
+
* mode for that column or all columns.
|
|
25616
|
+
* Otherwise we should exit input mode
|
|
25617
|
+
* since we just tapped the highlight and
|
|
25618
|
+
* not a column.
|
|
25619
|
+
*/
|
|
25620
|
+
if (ev.target.tagName === 'ION-PICKER-COLUMN-INTERNAL') {
|
|
25621
|
+
/**
|
|
25622
|
+
* If user taps 2 different columns
|
|
25623
|
+
* then we should just switch to input mode
|
|
25624
|
+
* for the new column rather than switching to
|
|
25625
|
+
* input mode for all columns.
|
|
25626
|
+
*/
|
|
25627
|
+
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
25628
|
+
this.actionOnClick = () => {
|
|
25629
|
+
this.enterInputMode();
|
|
25630
|
+
};
|
|
25631
|
+
}
|
|
25632
|
+
else {
|
|
25633
|
+
this.actionOnClick = () => {
|
|
25634
|
+
this.enterInputMode(ev.target);
|
|
25635
|
+
};
|
|
25636
|
+
}
|
|
25637
|
+
}
|
|
25638
|
+
else {
|
|
25639
|
+
this.actionOnClick = () => {
|
|
25640
|
+
this.exitInputMode();
|
|
25641
|
+
};
|
|
25642
|
+
}
|
|
25643
|
+
/**
|
|
25644
|
+
* If we were not already in
|
|
25645
|
+
* input mode, then we should
|
|
25646
|
+
* enter input mode for all columns.
|
|
25647
|
+
*/
|
|
25728
25648
|
}
|
|
25729
25649
|
else {
|
|
25730
|
-
|
|
25650
|
+
/**
|
|
25651
|
+
* If there is only 1 numeric input column
|
|
25652
|
+
* then we should skip multi column input.
|
|
25653
|
+
*/
|
|
25654
|
+
const columns = el.querySelectorAll('ion-picker-column-internal.picker-column-numeric-input');
|
|
25655
|
+
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
25656
|
+
this.actionOnClick = () => {
|
|
25657
|
+
this.enterInputMode(columnEl);
|
|
25658
|
+
};
|
|
25659
|
+
}
|
|
25660
|
+
return;
|
|
25661
|
+
}
|
|
25662
|
+
this.actionOnClick = () => {
|
|
25663
|
+
this.exitInputMode();
|
|
25664
|
+
};
|
|
25665
|
+
};
|
|
25666
|
+
/**
|
|
25667
|
+
* Enters input mode to allow
|
|
25668
|
+
* for text entry of numeric values.
|
|
25669
|
+
* If on mobile, we focus a hidden input
|
|
25670
|
+
* field so that the on screen keyboard
|
|
25671
|
+
* is brought up. When tabbing using a
|
|
25672
|
+
* keyboard, picker columns receive an outline
|
|
25673
|
+
* to indicate they are focused. As a result,
|
|
25674
|
+
* we should not focus the hidden input as it
|
|
25675
|
+
* would cause the outline to go away, preventing
|
|
25676
|
+
* users from having any visual indication of which
|
|
25677
|
+
* column is focused.
|
|
25678
|
+
*/
|
|
25679
|
+
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
25680
|
+
const { inputEl, el } = this;
|
|
25681
|
+
if (!inputEl) {
|
|
25682
|
+
return;
|
|
25683
|
+
}
|
|
25684
|
+
/**
|
|
25685
|
+
* Only active input mode if there is at
|
|
25686
|
+
* least one column that accepts numeric input.
|
|
25687
|
+
*/
|
|
25688
|
+
const hasInputColumn = el.querySelector('ion-picker-column-internal.picker-column-numeric-input');
|
|
25689
|
+
if (!hasInputColumn) {
|
|
25690
|
+
return;
|
|
25691
|
+
}
|
|
25692
|
+
/**
|
|
25693
|
+
* If columnEl is undefined then
|
|
25694
|
+
* it is assumed that all numeric pickers
|
|
25695
|
+
* are eligible for text entry.
|
|
25696
|
+
* (i.e. hour and minute columns)
|
|
25697
|
+
*/
|
|
25698
|
+
this.useInputMode = true;
|
|
25699
|
+
this.inputModeColumn = columnEl;
|
|
25700
|
+
/**
|
|
25701
|
+
* Users with a keyboard and mouse can
|
|
25702
|
+
* activate input mode where the input is
|
|
25703
|
+
* focused as well as when it is not focused,
|
|
25704
|
+
* so we need to make sure we clean up any
|
|
25705
|
+
* old listeners.
|
|
25706
|
+
*/
|
|
25707
|
+
if (focusInput) {
|
|
25708
|
+
if (this.destroyKeypressListener) {
|
|
25709
|
+
this.destroyKeypressListener();
|
|
25710
|
+
this.destroyKeypressListener = undefined;
|
|
25731
25711
|
}
|
|
25712
|
+
inputEl.focus();
|
|
25732
25713
|
}
|
|
25733
25714
|
else {
|
|
25734
|
-
|
|
25735
|
-
|
|
25715
|
+
el.addEventListener('keypress', this.onKeyPress);
|
|
25716
|
+
this.destroyKeypressListener = () => {
|
|
25717
|
+
el.removeEventListener('keypress', this.onKeyPress);
|
|
25718
|
+
};
|
|
25736
25719
|
}
|
|
25737
|
-
|
|
25738
|
-
|
|
25739
|
-
|
|
25740
|
-
|
|
25720
|
+
this.emitInputModeChange();
|
|
25721
|
+
};
|
|
25722
|
+
this.onKeyPress = (ev) => {
|
|
25723
|
+
const { inputEl } = this;
|
|
25724
|
+
if (!inputEl) {
|
|
25725
|
+
return;
|
|
25741
25726
|
}
|
|
25742
|
-
|
|
25743
|
-
|
|
25744
|
-
|
|
25745
|
-
|
|
25727
|
+
const parsedValue = parseInt(ev.key, 10);
|
|
25728
|
+
/**
|
|
25729
|
+
* Only numbers should be allowed
|
|
25730
|
+
*/
|
|
25731
|
+
if (!Number.isNaN(parsedValue)) {
|
|
25732
|
+
inputEl.value += ev.key;
|
|
25733
|
+
this.onInputChange();
|
|
25746
25734
|
}
|
|
25747
|
-
|
|
25748
|
-
|
|
25749
|
-
|
|
25735
|
+
};
|
|
25736
|
+
this.selectSingleColumn = () => {
|
|
25737
|
+
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
25738
|
+
if (!inputEl || !inputModeColumn) {
|
|
25739
|
+
return;
|
|
25750
25740
|
}
|
|
25751
|
-
|
|
25752
|
-
|
|
25753
|
-
|
|
25741
|
+
const values = inputModeColumn.items.filter((item) => item.disabled !== true);
|
|
25742
|
+
/**
|
|
25743
|
+
* If users pause for a bit, the search
|
|
25744
|
+
* value should be reset similar to how a
|
|
25745
|
+
* <select> behaves. So typing "34", waiting,
|
|
25746
|
+
* then typing "5" should select "05".
|
|
25747
|
+
*/
|
|
25748
|
+
if (singleColumnSearchTimeout) {
|
|
25749
|
+
clearTimeout(singleColumnSearchTimeout);
|
|
25754
25750
|
}
|
|
25755
|
-
|
|
25751
|
+
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
25752
|
+
inputEl.value = '';
|
|
25753
|
+
this.singleColumnSearchTimeout = undefined;
|
|
25754
|
+
}, 1000);
|
|
25756
25755
|
/**
|
|
25757
|
-
*
|
|
25758
|
-
*
|
|
25756
|
+
* For values that are longer than 2 digits long
|
|
25757
|
+
* we should shift the value over 1 character
|
|
25758
|
+
* to the left. So typing "456" would result in "56".
|
|
25759
|
+
* TODO: If we want to support more than just
|
|
25760
|
+
* time entry, we should update this value to be
|
|
25761
|
+
* the max length of all of the picker items.
|
|
25759
25762
|
*/
|
|
25760
|
-
|
|
25761
|
-
|
|
25762
|
-
|
|
25763
|
+
if (inputEl.value.length >= 3) {
|
|
25764
|
+
const startIndex = inputEl.value.length - 2;
|
|
25765
|
+
const newString = inputEl.value.substring(startIndex);
|
|
25766
|
+
inputEl.value = newString;
|
|
25767
|
+
this.selectSingleColumn();
|
|
25768
|
+
return;
|
|
25763
25769
|
}
|
|
25764
|
-
|
|
25765
|
-
|
|
25770
|
+
/**
|
|
25771
|
+
* Checking the value of the input gets priority
|
|
25772
|
+
* first. For example, if the value of the input
|
|
25773
|
+
* is "1" and we entered "2", then the complete value
|
|
25774
|
+
* is "12" and we should select hour 12.
|
|
25775
|
+
*
|
|
25776
|
+
* Regex removes any leading zeros from values like "02",
|
|
25777
|
+
* but it keeps a single zero if there are only zeros in the string.
|
|
25778
|
+
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
25779
|
+
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
25780
|
+
*/
|
|
25781
|
+
const findItemFromCompleteValue = values.find(({ text }) => {
|
|
25782
|
+
const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
25783
|
+
return parsedText === inputEl.value;
|
|
25784
|
+
});
|
|
25785
|
+
if (findItemFromCompleteValue) {
|
|
25786
|
+
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
25787
|
+
return;
|
|
25766
25788
|
}
|
|
25767
|
-
|
|
25768
|
-
|
|
25769
|
-
|
|
25770
|
-
|
|
25771
|
-
|
|
25772
|
-
|
|
25773
|
-
|
|
25774
|
-
|
|
25775
|
-
|
|
25776
|
-
}
|
|
25777
|
-
|
|
25778
|
-
|
|
25779
|
-
|
|
25780
|
-
|
|
25781
|
-
|
|
25782
|
-
|
|
25783
|
-
|
|
25784
|
-
|
|
25785
|
-
|
|
25786
|
-
|
|
25787
|
-
|
|
25788
|
-
|
|
25789
|
+
/**
|
|
25790
|
+
* If we typed "56" to get minute 56, then typed "7",
|
|
25791
|
+
* we should select "07" as "567" is not a valid minute.
|
|
25792
|
+
*/
|
|
25793
|
+
if (inputEl.value.length === 2) {
|
|
25794
|
+
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
25795
|
+
inputEl.value = changedCharacter;
|
|
25796
|
+
this.selectSingleColumn();
|
|
25797
|
+
}
|
|
25798
|
+
};
|
|
25799
|
+
/**
|
|
25800
|
+
* Searches a list of column items for a particular
|
|
25801
|
+
* value. This is currently used for numeric values.
|
|
25802
|
+
* The zeroBehavior can be set to account for leading
|
|
25803
|
+
* or trailing zeros when looking at the item text.
|
|
25804
|
+
*/
|
|
25805
|
+
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
25806
|
+
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
25807
|
+
const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
|
|
25808
|
+
if (item) {
|
|
25809
|
+
colEl.setValue(item.value);
|
|
25810
|
+
}
|
|
25811
|
+
};
|
|
25812
|
+
this.selectMultiColumn = () => {
|
|
25813
|
+
const { inputEl, el } = this;
|
|
25814
|
+
if (!inputEl) {
|
|
25815
|
+
return;
|
|
25816
|
+
}
|
|
25817
|
+
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column-internal')).filter((col) => col.numericInput);
|
|
25818
|
+
const firstColumn = numericPickers[0];
|
|
25819
|
+
const lastColumn = numericPickers[1];
|
|
25820
|
+
let value = inputEl.value;
|
|
25821
|
+
let minuteValue;
|
|
25822
|
+
switch (value.length) {
|
|
25823
|
+
case 1:
|
|
25824
|
+
this.searchColumn(firstColumn, value);
|
|
25825
|
+
break;
|
|
25826
|
+
case 2:
|
|
25827
|
+
/**
|
|
25828
|
+
* If the first character is `0` or `1` it is
|
|
25829
|
+
* possible that users are trying to type `09`
|
|
25830
|
+
* or `11` into the hour field, so we should look
|
|
25831
|
+
* at that first.
|
|
25832
|
+
*/
|
|
25833
|
+
const firstCharacter = inputEl.value.substring(0, 1);
|
|
25834
|
+
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
25835
|
+
this.searchColumn(firstColumn, value);
|
|
25836
|
+
/**
|
|
25837
|
+
* If only checked the first value,
|
|
25838
|
+
* we can check the second value
|
|
25839
|
+
* for a match in the minutes column
|
|
25840
|
+
*/
|
|
25841
|
+
if (value.length === 1) {
|
|
25842
|
+
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
25843
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25844
|
+
}
|
|
25845
|
+
break;
|
|
25846
|
+
case 3:
|
|
25847
|
+
/**
|
|
25848
|
+
* If the first character is `0` or `1` it is
|
|
25849
|
+
* possible that users are trying to type `09`
|
|
25850
|
+
* or `11` into the hour field, so we should look
|
|
25851
|
+
* at that first.
|
|
25852
|
+
*/
|
|
25853
|
+
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
25854
|
+
value =
|
|
25855
|
+
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
25856
|
+
? inputEl.value.substring(0, 2)
|
|
25857
|
+
: firstCharacterAgain;
|
|
25858
|
+
this.searchColumn(firstColumn, value);
|
|
25859
|
+
/**
|
|
25860
|
+
* If only checked the first value,
|
|
25861
|
+
* we can check the second value
|
|
25862
|
+
* for a match in the minutes column
|
|
25863
|
+
*/
|
|
25864
|
+
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
25865
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25866
|
+
break;
|
|
25867
|
+
case 4:
|
|
25868
|
+
/**
|
|
25869
|
+
* If the first character is `0` or `1` it is
|
|
25870
|
+
* possible that users are trying to type `09`
|
|
25871
|
+
* or `11` into the hour field, so we should look
|
|
25872
|
+
* at that first.
|
|
25873
|
+
*/
|
|
25874
|
+
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
25875
|
+
value =
|
|
25876
|
+
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
25877
|
+
? inputEl.value.substring(0, 2)
|
|
25878
|
+
: firstCharacterAgainAgain;
|
|
25879
|
+
this.searchColumn(firstColumn, value);
|
|
25880
|
+
/**
|
|
25881
|
+
* If only checked the first value,
|
|
25882
|
+
* we can check the second value
|
|
25883
|
+
* for a match in the minutes column
|
|
25884
|
+
*/
|
|
25885
|
+
const minuteValueAgain = value.length === 1
|
|
25886
|
+
? inputEl.value.substring(1, inputEl.value.length)
|
|
25887
|
+
: inputEl.value.substring(2, inputEl.value.length);
|
|
25888
|
+
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
25889
|
+
break;
|
|
25890
|
+
default:
|
|
25891
|
+
const startIndex = inputEl.value.length - 4;
|
|
25892
|
+
const newString = inputEl.value.substring(startIndex);
|
|
25893
|
+
inputEl.value = newString;
|
|
25894
|
+
this.selectMultiColumn();
|
|
25895
|
+
break;
|
|
25789
25896
|
}
|
|
25790
|
-
|
|
25791
|
-
|
|
25792
|
-
|
|
25793
|
-
|
|
25897
|
+
};
|
|
25898
|
+
/**
|
|
25899
|
+
* Searches the value of the active column
|
|
25900
|
+
* to determine which value users are trying
|
|
25901
|
+
* to select
|
|
25902
|
+
*/
|
|
25903
|
+
this.onInputChange = () => {
|
|
25904
|
+
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
25905
|
+
if (!useInputMode || !inputEl) {
|
|
25906
|
+
return;
|
|
25794
25907
|
}
|
|
25795
|
-
|
|
25796
|
-
|
|
25797
|
-
if (notLockedIn) {
|
|
25798
|
-
// isn't locked in yet, keep decelerating until it is
|
|
25799
|
-
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
25908
|
+
if (inputModeColumn) {
|
|
25909
|
+
this.selectSingleColumn();
|
|
25800
25910
|
}
|
|
25801
25911
|
else {
|
|
25802
|
-
this.
|
|
25803
|
-
this.emitColChange();
|
|
25804
|
-
hapticSelectionEnd();
|
|
25805
|
-
}
|
|
25806
|
-
}
|
|
25807
|
-
else if (this.y % this.optHeight !== 0) {
|
|
25808
|
-
// needs to still get locked into a position so options line up
|
|
25809
|
-
const currentPos = Math.abs(this.y % this.optHeight);
|
|
25810
|
-
// create a velocity in the direction it needs to scroll
|
|
25811
|
-
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
25812
|
-
this.decelerate();
|
|
25813
|
-
}
|
|
25814
|
-
}
|
|
25815
|
-
indexForY(y) {
|
|
25816
|
-
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
25817
|
-
}
|
|
25818
|
-
onStart(detail) {
|
|
25819
|
-
// We have to prevent default in order to block scrolling under the picker
|
|
25820
|
-
// but we DO NOT have to stop propagation, since we still want
|
|
25821
|
-
// some "click" events to capture
|
|
25822
|
-
if (detail.event.cancelable) {
|
|
25823
|
-
detail.event.preventDefault();
|
|
25824
|
-
}
|
|
25825
|
-
detail.event.stopPropagation();
|
|
25826
|
-
hapticSelectionStart();
|
|
25827
|
-
// reset everything
|
|
25828
|
-
if (this.rafId !== undefined)
|
|
25829
|
-
cancelAnimationFrame(this.rafId);
|
|
25830
|
-
const options = this.col.options;
|
|
25831
|
-
let minY = options.length - 1;
|
|
25832
|
-
let maxY = 0;
|
|
25833
|
-
for (let i = 0; i < options.length; i++) {
|
|
25834
|
-
if (!options[i].disabled) {
|
|
25835
|
-
minY = Math.min(minY, i);
|
|
25836
|
-
maxY = Math.max(maxY, i);
|
|
25912
|
+
this.selectMultiColumn();
|
|
25837
25913
|
}
|
|
25838
|
-
}
|
|
25839
|
-
|
|
25840
|
-
|
|
25914
|
+
};
|
|
25915
|
+
/**
|
|
25916
|
+
* Emit ionInputModeChange. Picker columns
|
|
25917
|
+
* listen for this event to determine whether
|
|
25918
|
+
* or not their column is "active" for text input.
|
|
25919
|
+
*/
|
|
25920
|
+
this.emitInputModeChange = () => {
|
|
25921
|
+
const { useInputMode, inputModeColumn } = this;
|
|
25922
|
+
this.ionInputModeChange.emit({
|
|
25923
|
+
useInputMode,
|
|
25924
|
+
inputModeColumn,
|
|
25925
|
+
});
|
|
25926
|
+
};
|
|
25841
25927
|
}
|
|
25842
|
-
|
|
25843
|
-
|
|
25844
|
-
|
|
25845
|
-
|
|
25846
|
-
|
|
25847
|
-
|
|
25848
|
-
|
|
25849
|
-
|
|
25850
|
-
|
|
25851
|
-
|
|
25852
|
-
this.bounceFrom = y;
|
|
25853
|
-
}
|
|
25854
|
-
else if (y < this.maxY) {
|
|
25855
|
-
// scrolling down below scroll area
|
|
25856
|
-
y += Math.pow(this.maxY - y, 0.9);
|
|
25857
|
-
this.bounceFrom = y;
|
|
25858
|
-
}
|
|
25859
|
-
else {
|
|
25860
|
-
this.bounceFrom = 0;
|
|
25861
|
-
}
|
|
25862
|
-
this.update(y, 0, false);
|
|
25928
|
+
/**
|
|
25929
|
+
* When the picker is interacted with
|
|
25930
|
+
* we need to prevent touchstart so other
|
|
25931
|
+
* gestures do not fire. For example,
|
|
25932
|
+
* scrolling on the wheel picker
|
|
25933
|
+
* in ion-datetime should not cause
|
|
25934
|
+
* a card modal to swipe to close.
|
|
25935
|
+
*/
|
|
25936
|
+
preventTouchStartPropagation(ev) {
|
|
25937
|
+
ev.stopPropagation();
|
|
25863
25938
|
}
|
|
25864
|
-
|
|
25865
|
-
|
|
25866
|
-
|
|
25867
|
-
this.update(this.minY, 100, true);
|
|
25868
|
-
this.emitColChange();
|
|
25869
|
-
return;
|
|
25870
|
-
}
|
|
25871
|
-
else if (this.bounceFrom < 0) {
|
|
25872
|
-
// bounce back down
|
|
25873
|
-
this.update(this.maxY, 100, true);
|
|
25874
|
-
this.emitColChange();
|
|
25875
|
-
return;
|
|
25876
|
-
}
|
|
25877
|
-
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
25878
|
-
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
25879
|
-
const opt = detail.event.target.closest('.picker-opt');
|
|
25880
|
-
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
25881
|
-
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
25882
|
-
}
|
|
25883
|
-
}
|
|
25884
|
-
else {
|
|
25885
|
-
this.y += detail.deltaY;
|
|
25886
|
-
if (Math.abs(detail.velocityY) < 0.05) {
|
|
25887
|
-
const isScrollingUp = detail.deltaY > 0;
|
|
25888
|
-
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
25889
|
-
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
25890
|
-
this.velocity = Math.abs(this.velocity) * -1;
|
|
25891
|
-
}
|
|
25892
|
-
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
25893
|
-
this.velocity = Math.abs(this.velocity);
|
|
25894
|
-
}
|
|
25895
|
-
}
|
|
25896
|
-
this.decelerate();
|
|
25897
|
-
}
|
|
25939
|
+
componentWillLoad() {
|
|
25940
|
+
getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
|
|
25941
|
+
getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
|
|
25898
25942
|
}
|
|
25899
|
-
|
|
25900
|
-
|
|
25901
|
-
|
|
25902
|
-
|
|
25903
|
-
|
|
25904
|
-
|
|
25905
|
-
|
|
25906
|
-
|
|
25907
|
-
|
|
25908
|
-
}
|
|
25909
|
-
}
|
|
25910
|
-
/**
|
|
25911
|
-
* Only update selected value if column has a
|
|
25912
|
-
* velocity of 0. If it does not, then the
|
|
25913
|
-
* column is animating might land on
|
|
25914
|
-
* a value different than the value at
|
|
25915
|
-
* selectedIndex
|
|
25916
|
-
*/
|
|
25917
|
-
if (this.velocity !== 0) {
|
|
25943
|
+
/**
|
|
25944
|
+
* @internal
|
|
25945
|
+
* Exits text entry mode for the picker
|
|
25946
|
+
* This method blurs the hidden input
|
|
25947
|
+
* and cause the keyboard to dismiss.
|
|
25948
|
+
*/
|
|
25949
|
+
async exitInputMode() {
|
|
25950
|
+
const { inputEl, useInputMode } = this;
|
|
25951
|
+
if (!useInputMode || !inputEl) {
|
|
25918
25952
|
return;
|
|
25919
25953
|
}
|
|
25920
|
-
|
|
25921
|
-
|
|
25922
|
-
|
|
25923
|
-
|
|
25924
|
-
|
|
25925
|
-
this.
|
|
25926
|
-
|
|
25927
|
-
}
|
|
25928
|
-
onDomChange(forceRefresh, animated) {
|
|
25929
|
-
const colEl = this.optsEl;
|
|
25930
|
-
if (colEl) {
|
|
25931
|
-
// DOM READ
|
|
25932
|
-
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
25933
|
-
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
25954
|
+
this.useInputMode = false;
|
|
25955
|
+
this.inputModeColumn = undefined;
|
|
25956
|
+
inputEl.blur();
|
|
25957
|
+
inputEl.value = '';
|
|
25958
|
+
if (this.destroyKeypressListener) {
|
|
25959
|
+
this.destroyKeypressListener();
|
|
25960
|
+
this.destroyKeypressListener = undefined;
|
|
25934
25961
|
}
|
|
25935
|
-
this.
|
|
25962
|
+
this.emitInputModeChange();
|
|
25936
25963
|
}
|
|
25937
25964
|
render() {
|
|
25938
|
-
|
|
25939
|
-
const mode = getIonMode$1(this);
|
|
25940
|
-
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: {
|
|
25941
|
-
'max-width': this.col.columnWidth,
|
|
25942
|
-
} }, 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))));
|
|
25965
|
+
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)));
|
|
25943
25966
|
}
|
|
25944
25967
|
get el() { return getElement(this); }
|
|
25945
|
-
static get watchers() { return {
|
|
25946
|
-
"col": ["colChanged"]
|
|
25947
|
-
}; }
|
|
25948
25968
|
static get style() { return {
|
|
25949
|
-
ios:
|
|
25950
|
-
md:
|
|
25969
|
+
ios: pickerInternalIosCss,
|
|
25970
|
+
md: pickerInternalMdCss
|
|
25951
25971
|
}; }
|
|
25952
25972
|
static get cmpMeta() { return {
|
|
25953
|
-
"$flags$":
|
|
25954
|
-
"$tagName$": "ion-picker-
|
|
25973
|
+
"$flags$": 41,
|
|
25974
|
+
"$tagName$": "ion-picker-internal",
|
|
25955
25975
|
"$members$": {
|
|
25956
|
-
"
|
|
25976
|
+
"exitInputMode": [64]
|
|
25957
25977
|
},
|
|
25958
|
-
"$listeners$":
|
|
25978
|
+
"$listeners$": [[1, "touchstart", "preventTouchStartPropagation"]],
|
|
25959
25979
|
"$lazyBundleId$": "-",
|
|
25960
25980
|
"$attrsToReflect$": []
|
|
25961
25981
|
}; }
|
|
25962
25982
|
}
|
|
25963
|
-
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
25964
|
-
const DECELERATION_FRICTION = 0.97;
|
|
25965
|
-
const MAX_PICKER_SPEED = 90;
|
|
25966
|
-
const TRANSITION_DURATION = 150;
|
|
25967
25983
|
|
|
25968
25984
|
/**
|
|
25969
25985
|
* Returns the dimensions of the popover
|
|
@@ -34928,10 +34944,10 @@ registerComponents([
|
|
|
34928
34944
|
Nav,
|
|
34929
34945
|
NavLink,
|
|
34930
34946
|
Note,
|
|
34931
|
-
Picker$1,
|
|
34932
34947
|
Picker,
|
|
34933
|
-
PickerColumn,
|
|
34934
34948
|
PickerColumnCmp,
|
|
34949
|
+
PickerColumnInternal,
|
|
34950
|
+
PickerInternal,
|
|
34935
34951
|
Popover,
|
|
34936
34952
|
ProgressBar,
|
|
34937
34953
|
Radio,
|