@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
|
@@ -2,377 +2,366 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { m as clamp } from './helpers.js';
|
|
6
|
+
import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic.js';
|
|
7
|
+
import { g as getClassMap } from './theme.js';
|
|
8
|
+
import { b as getIonMode } from './ionic-global.js';
|
|
9
9
|
|
|
10
|
-
const pickerColumnIosCss = ":host{-webkit-padding-start:
|
|
10
|
+
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}}";
|
|
11
11
|
|
|
12
|
-
const pickerColumnMdCss = "
|
|
12
|
+
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)}";
|
|
13
13
|
|
|
14
|
-
const
|
|
14
|
+
const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp extends HTMLElement {
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
17
|
this.__registerHost();
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
18
|
+
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
19
|
+
this.optHeight = 0;
|
|
20
|
+
this.rotateFactor = 0;
|
|
21
|
+
this.scaleFactor = 1;
|
|
22
|
+
this.velocity = 0;
|
|
23
|
+
this.y = 0;
|
|
24
|
+
this.noAnimate = true;
|
|
25
|
+
// `colDidChange` is a flag that gets set when the column is changed
|
|
26
|
+
// dynamically. When this flag is set, the column will refresh
|
|
27
|
+
// after the component re-renders to incorporate the new column data.
|
|
28
|
+
// This is necessary because `this.refresh` queries for the option elements,
|
|
29
|
+
// so it needs to wait for the latest elements to be available in the DOM.
|
|
30
|
+
// Ex: column is created with 3 options. User updates the column data
|
|
31
|
+
// to have 5 options. The column will still think it only has 3 options.
|
|
32
|
+
this.colDidChange = false;
|
|
33
|
+
this.col = undefined;
|
|
34
|
+
}
|
|
35
|
+
colChanged() {
|
|
36
|
+
this.colDidChange = true;
|
|
37
|
+
}
|
|
38
|
+
async connectedCallback() {
|
|
39
|
+
let pickerRotateFactor = 0;
|
|
40
|
+
let pickerScaleFactor = 0.81;
|
|
41
|
+
const mode = getIonMode(this);
|
|
42
|
+
if (mode === 'ios') {
|
|
43
|
+
pickerRotateFactor = -0.46;
|
|
44
|
+
pickerScaleFactor = 1;
|
|
45
|
+
}
|
|
46
|
+
this.rotateFactor = pickerRotateFactor;
|
|
47
|
+
this.scaleFactor = pickerScaleFactor;
|
|
48
|
+
this.gesture = (await import('./index3.js')).createGesture({
|
|
49
|
+
el: this.el,
|
|
50
|
+
gestureName: 'picker-swipe',
|
|
51
|
+
gesturePriority: 100,
|
|
52
|
+
threshold: 0,
|
|
53
|
+
passive: false,
|
|
54
|
+
onStart: (ev) => this.onStart(ev),
|
|
55
|
+
onMove: (ev) => this.onMove(ev),
|
|
56
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
57
|
+
});
|
|
58
|
+
this.gesture.enable();
|
|
59
|
+
// Options have not been initialized yet
|
|
60
|
+
// Animation must be disabled through the `noAnimate` flag
|
|
61
|
+
// Otherwise, the options will render
|
|
62
|
+
// at the top of the column and transition down
|
|
63
|
+
this.tmrId = setTimeout(() => {
|
|
64
|
+
this.noAnimate = false;
|
|
65
|
+
// After initialization, `refresh()` will be called
|
|
66
|
+
// At this point, animation will be enabled. The options will
|
|
67
|
+
// animate as they are being selected.
|
|
68
|
+
this.refresh(true);
|
|
69
|
+
}, 250);
|
|
70
|
+
}
|
|
71
|
+
componentDidLoad() {
|
|
72
|
+
this.onDomChange();
|
|
73
|
+
}
|
|
74
|
+
componentDidUpdate() {
|
|
75
|
+
// Options may have changed since last update.
|
|
76
|
+
if (this.colDidChange) {
|
|
77
|
+
// Animation must be disabled through the `onDomChange` parameter.
|
|
78
|
+
// Otherwise, the recently added options will render
|
|
79
|
+
// at the top of the column and transition down
|
|
80
|
+
this.onDomChange(true, false);
|
|
81
|
+
this.colDidChange = false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
disconnectedCallback() {
|
|
85
|
+
if (this.rafId !== undefined)
|
|
86
|
+
cancelAnimationFrame(this.rafId);
|
|
87
|
+
if (this.tmrId)
|
|
88
|
+
clearTimeout(this.tmrId);
|
|
89
|
+
if (this.gesture) {
|
|
90
|
+
this.gesture.destroy();
|
|
91
|
+
this.gesture = undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
emitColChange() {
|
|
95
|
+
this.ionPickerColChange.emit(this.col);
|
|
96
|
+
}
|
|
97
|
+
setSelected(selectedIndex, duration) {
|
|
98
|
+
// if there is a selected index, then figure out it's y position
|
|
99
|
+
// if there isn't a selected index, then just use the top y position
|
|
100
|
+
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
101
|
+
this.velocity = 0;
|
|
102
|
+
// set what y position we're at
|
|
103
|
+
if (this.rafId !== undefined)
|
|
104
|
+
cancelAnimationFrame(this.rafId);
|
|
105
|
+
this.update(y, duration, true);
|
|
106
|
+
this.emitColChange();
|
|
107
|
+
}
|
|
108
|
+
update(y, duration, saveY) {
|
|
109
|
+
if (!this.optsEl) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// ensure we've got a good round number :)
|
|
113
|
+
let translateY = 0;
|
|
114
|
+
let translateZ = 0;
|
|
115
|
+
const { col, rotateFactor } = this;
|
|
116
|
+
const prevSelected = col.selectedIndex;
|
|
117
|
+
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
118
|
+
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
119
|
+
const scaleStr = `scale(${this.scaleFactor})`;
|
|
120
|
+
const children = this.optsEl.children;
|
|
121
|
+
for (let i = 0; i < children.length; i++) {
|
|
122
|
+
const button = children[i];
|
|
123
|
+
const opt = col.options[i];
|
|
124
|
+
const optOffset = i * this.optHeight + y;
|
|
125
|
+
let transform = '';
|
|
126
|
+
if (rotateFactor !== 0) {
|
|
127
|
+
const rotateX = optOffset * rotateFactor;
|
|
128
|
+
if (Math.abs(rotateX) <= 90) {
|
|
129
|
+
translateY = 0;
|
|
130
|
+
translateZ = 90;
|
|
131
|
+
transform = `rotateX(${rotateX}deg) `;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
translateY = -9999;
|
|
42
135
|
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
this.setPickerItemActiveState = (item, isActive) => {
|
|
46
|
-
if (isActive) {
|
|
47
|
-
item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
|
|
48
|
-
item.part.add(PICKER_ITEM_ACTIVE_PART);
|
|
49
136
|
}
|
|
50
137
|
else {
|
|
51
|
-
|
|
52
|
-
|
|
138
|
+
translateZ = 0;
|
|
139
|
+
translateY = optOffset;
|
|
53
140
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
* for text entry.
|
|
59
|
-
*/
|
|
60
|
-
this.inputModeChange = (ev) => {
|
|
61
|
-
if (!this.numericInput) {
|
|
62
|
-
return;
|
|
141
|
+
const selected = selectedIndex === i;
|
|
142
|
+
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
143
|
+
if (this.scaleFactor !== 1 && !selected) {
|
|
144
|
+
transform += scaleStr;
|
|
63
145
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
*/
|
|
69
|
-
const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
|
|
70
|
-
if (!useInputMode || !isColumnActive) {
|
|
71
|
-
this.setInputModeActive(false);
|
|
72
|
-
return;
|
|
146
|
+
// Update transition duration
|
|
147
|
+
if (this.noAnimate) {
|
|
148
|
+
opt.duration = 0;
|
|
149
|
+
button.style.transitionDuration = '';
|
|
73
150
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* Setting isActive will cause a re-render.
|
|
78
|
-
* As a result, we do not want to cause the
|
|
79
|
-
* re-render mid scroll as this will cause
|
|
80
|
-
* the picker column to jump back to
|
|
81
|
-
* whatever value was selected at the
|
|
82
|
-
* start of the scroll interaction.
|
|
83
|
-
*/
|
|
84
|
-
this.setInputModeActive = (state) => {
|
|
85
|
-
if (this.isScrolling) {
|
|
86
|
-
this.scrollEndCallback = () => {
|
|
87
|
-
this.isActive = state;
|
|
88
|
-
};
|
|
89
|
-
return;
|
|
151
|
+
else if (duration !== opt.duration) {
|
|
152
|
+
opt.duration = duration;
|
|
153
|
+
button.style.transitionDuration = durationStr;
|
|
90
154
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
* in the view and will emit an ionChange with
|
|
97
|
-
* the item object.
|
|
98
|
-
*/
|
|
99
|
-
this.initializeScrollListener = () => {
|
|
100
|
-
/**
|
|
101
|
-
* The haptics for the wheel picker are
|
|
102
|
-
* an iOS-only feature. As a result, they should
|
|
103
|
-
* be disabled on Android.
|
|
104
|
-
*/
|
|
105
|
-
const enableHaptics = isPlatform('ios');
|
|
106
|
-
const { el } = this;
|
|
107
|
-
let timeout;
|
|
108
|
-
let activeEl = this.activeItem;
|
|
109
|
-
const scrollCallback = () => {
|
|
110
|
-
raf(() => {
|
|
111
|
-
if (timeout) {
|
|
112
|
-
clearTimeout(timeout);
|
|
113
|
-
timeout = undefined;
|
|
114
|
-
}
|
|
115
|
-
if (!this.isScrolling) {
|
|
116
|
-
enableHaptics && hapticSelectionStart();
|
|
117
|
-
this.isScrolling = true;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Select item in the center of the column
|
|
121
|
-
* which is the month/year that we want to select
|
|
122
|
-
*/
|
|
123
|
-
const bbox = el.getBoundingClientRect();
|
|
124
|
-
const centerX = bbox.x + bbox.width / 2;
|
|
125
|
-
const centerY = bbox.y + bbox.height / 2;
|
|
126
|
-
const activeElement = el.shadowRoot.elementFromPoint(centerX, centerY);
|
|
127
|
-
if (activeEl !== null) {
|
|
128
|
-
this.setPickerItemActiveState(activeEl, false);
|
|
129
|
-
}
|
|
130
|
-
if (activeElement === null || activeElement.disabled) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* If we are selecting a new value,
|
|
135
|
-
* we need to run haptics again.
|
|
136
|
-
*/
|
|
137
|
-
if (activeElement !== activeEl) {
|
|
138
|
-
enableHaptics && hapticSelectionChanged();
|
|
139
|
-
if (this.canExitInputMode) {
|
|
140
|
-
/**
|
|
141
|
-
* The native iOS wheel picker
|
|
142
|
-
* only dismisses the keyboard
|
|
143
|
-
* once the selected item has changed
|
|
144
|
-
* as a result of a swipe
|
|
145
|
-
* from the user. If `canExitInputMode` is
|
|
146
|
-
* `false` then this means that the
|
|
147
|
-
* scroll is happening as a result of
|
|
148
|
-
* the `value` property programmatically changing
|
|
149
|
-
* either by an application or by the user via the keyboard.
|
|
150
|
-
*/
|
|
151
|
-
this.exitInputMode();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
activeEl = activeElement;
|
|
155
|
-
this.setPickerItemActiveState(activeElement, true);
|
|
156
|
-
timeout = setTimeout(() => {
|
|
157
|
-
this.isScrolling = false;
|
|
158
|
-
enableHaptics && hapticSelectionEnd();
|
|
159
|
-
/**
|
|
160
|
-
* Certain tasks (such as those that
|
|
161
|
-
* cause re-renders) should only be done
|
|
162
|
-
* once scrolling has finished, otherwise
|
|
163
|
-
* flickering may occur.
|
|
164
|
-
*/
|
|
165
|
-
const { scrollEndCallback } = this;
|
|
166
|
-
if (scrollEndCallback) {
|
|
167
|
-
scrollEndCallback();
|
|
168
|
-
this.scrollEndCallback = undefined;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Reset this flag as the
|
|
172
|
-
* next scroll interaction could
|
|
173
|
-
* be a scroll from the user. In this
|
|
174
|
-
* case, we should exit input mode.
|
|
175
|
-
*/
|
|
176
|
-
this.canExitInputMode = true;
|
|
177
|
-
const dataIndex = activeElement.getAttribute('data-index');
|
|
178
|
-
/**
|
|
179
|
-
* If no value it is
|
|
180
|
-
* possible we hit one of the
|
|
181
|
-
* empty padding columns.
|
|
182
|
-
*/
|
|
183
|
-
if (dataIndex === null) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
const index = parseInt(dataIndex, 10);
|
|
187
|
-
const selectedItem = this.items[index];
|
|
188
|
-
if (selectedItem.value !== this.value) {
|
|
189
|
-
this.setValue(selectedItem.value);
|
|
190
|
-
}
|
|
191
|
-
}, 250);
|
|
192
|
-
});
|
|
193
|
-
};
|
|
194
|
-
/**
|
|
195
|
-
* Wrap this in an raf so that the scroll callback
|
|
196
|
-
* does not fire when component is initially shown.
|
|
197
|
-
*/
|
|
198
|
-
raf(() => {
|
|
199
|
-
el.addEventListener('scroll', scrollCallback);
|
|
200
|
-
this.destroyScrollListener = () => {
|
|
201
|
-
el.removeEventListener('scroll', scrollCallback);
|
|
202
|
-
};
|
|
203
|
-
});
|
|
204
|
-
};
|
|
205
|
-
/**
|
|
206
|
-
* Tells the parent picker to
|
|
207
|
-
* exit text entry mode. This is only called
|
|
208
|
-
* when the selected item changes during scroll, so
|
|
209
|
-
* we know that the user likely wants to scroll
|
|
210
|
-
* instead of type.
|
|
211
|
-
*/
|
|
212
|
-
this.exitInputMode = () => {
|
|
213
|
-
const { parentEl } = this;
|
|
214
|
-
if (parentEl == null)
|
|
215
|
-
return;
|
|
216
|
-
parentEl.exitInputMode();
|
|
217
|
-
/**
|
|
218
|
-
* setInputModeActive only takes
|
|
219
|
-
* effect once scrolling stops to avoid
|
|
220
|
-
* a component re-render while scrolling.
|
|
221
|
-
* However, we want the visual active
|
|
222
|
-
* indicator to go away immediately, so
|
|
223
|
-
* we call classList.remove here.
|
|
224
|
-
*/
|
|
225
|
-
this.el.classList.remove('picker-column-active');
|
|
226
|
-
};
|
|
227
|
-
this.isActive = false;
|
|
228
|
-
this.disabled = false;
|
|
229
|
-
this.items = [];
|
|
230
|
-
this.value = undefined;
|
|
231
|
-
this.color = 'primary';
|
|
232
|
-
this.numericInput = false;
|
|
233
|
-
}
|
|
234
|
-
valueChange() {
|
|
235
|
-
if (this.isColumnVisible) {
|
|
155
|
+
// Update transform
|
|
156
|
+
if (transform !== opt.transform) {
|
|
157
|
+
opt.transform = transform;
|
|
158
|
+
}
|
|
159
|
+
button.style.transform = transform;
|
|
236
160
|
/**
|
|
237
|
-
*
|
|
238
|
-
*
|
|
161
|
+
* Ensure that the select column
|
|
162
|
+
* item has the selected class
|
|
239
163
|
*/
|
|
240
|
-
|
|
164
|
+
opt.selected = selected;
|
|
165
|
+
if (selected) {
|
|
166
|
+
button.classList.add(PICKER_OPT_SELECTED);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
button.classList.remove(PICKER_OPT_SELECTED);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.col.prevSelected = prevSelected;
|
|
173
|
+
if (saveY) {
|
|
174
|
+
this.y = y;
|
|
175
|
+
}
|
|
176
|
+
if (this.lastIndex !== selectedIndex) {
|
|
177
|
+
// have not set a last index yet
|
|
178
|
+
hapticSelectionChanged();
|
|
179
|
+
this.lastIndex = selectedIndex;
|
|
241
180
|
}
|
|
242
181
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
this.setPickerItemActiveState(activeItem, true);
|
|
266
|
-
}
|
|
267
|
-
this.initializeScrollListener();
|
|
182
|
+
decelerate() {
|
|
183
|
+
if (this.velocity !== 0) {
|
|
184
|
+
// still decelerating
|
|
185
|
+
this.velocity *= DECELERATION_FRICTION;
|
|
186
|
+
// do not let it go slower than a velocity of 1
|
|
187
|
+
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
188
|
+
let y = this.y + this.velocity;
|
|
189
|
+
if (y > this.minY) {
|
|
190
|
+
// whoops, it's trying to scroll up farther than the options we have!
|
|
191
|
+
y = this.minY;
|
|
192
|
+
this.velocity = 0;
|
|
193
|
+
}
|
|
194
|
+
else if (y < this.maxY) {
|
|
195
|
+
// gahh, it's trying to scroll down farther than we can!
|
|
196
|
+
y = this.maxY;
|
|
197
|
+
this.velocity = 0;
|
|
198
|
+
}
|
|
199
|
+
this.update(y, 0, true);
|
|
200
|
+
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
201
|
+
if (notLockedIn) {
|
|
202
|
+
// isn't locked in yet, keep decelerating until it is
|
|
203
|
+
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
268
204
|
}
|
|
269
205
|
else {
|
|
270
|
-
this.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
this.destroyScrollListener = undefined;
|
|
274
|
-
}
|
|
206
|
+
this.velocity = 0;
|
|
207
|
+
this.emitColChange();
|
|
208
|
+
hapticSelectionEnd();
|
|
275
209
|
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
//
|
|
281
|
-
|
|
210
|
+
}
|
|
211
|
+
else if (this.y % this.optHeight !== 0) {
|
|
212
|
+
// needs to still get locked into a position so options line up
|
|
213
|
+
const currentPos = Math.abs(this.y % this.optHeight);
|
|
214
|
+
// create a velocity in the direction it needs to scroll
|
|
215
|
+
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
216
|
+
this.decelerate();
|
|
282
217
|
}
|
|
283
218
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
219
|
+
indexForY(y) {
|
|
220
|
+
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
221
|
+
}
|
|
222
|
+
onStart(detail) {
|
|
223
|
+
// We have to prevent default in order to block scrolling under the picker
|
|
224
|
+
// but we DO NOT have to stop propagation, since we still want
|
|
225
|
+
// some "click" events to capture
|
|
226
|
+
if (detail.event.cancelable) {
|
|
227
|
+
detail.event.preventDefault();
|
|
228
|
+
}
|
|
229
|
+
detail.event.stopPropagation();
|
|
230
|
+
hapticSelectionStart();
|
|
231
|
+
// reset everything
|
|
232
|
+
if (this.rafId !== undefined)
|
|
233
|
+
cancelAnimationFrame(this.rafId);
|
|
234
|
+
const options = this.col.options;
|
|
235
|
+
let minY = options.length - 1;
|
|
236
|
+
let maxY = 0;
|
|
237
|
+
for (let i = 0; i < options.length; i++) {
|
|
238
|
+
if (!options[i].disabled) {
|
|
239
|
+
minY = Math.min(minY, i);
|
|
240
|
+
maxY = Math.max(maxY, i);
|
|
300
241
|
}
|
|
301
242
|
}
|
|
243
|
+
this.minY = -(minY * this.optHeight);
|
|
244
|
+
this.maxY = -(maxY * this.optHeight);
|
|
245
|
+
}
|
|
246
|
+
onMove(detail) {
|
|
247
|
+
if (detail.event.cancelable) {
|
|
248
|
+
detail.event.preventDefault();
|
|
249
|
+
}
|
|
250
|
+
detail.event.stopPropagation();
|
|
251
|
+
// update the scroll position relative to pointer start position
|
|
252
|
+
let y = this.y + detail.deltaY;
|
|
253
|
+
if (y > this.minY) {
|
|
254
|
+
// scrolling up higher than scroll area
|
|
255
|
+
y = Math.pow(y, 0.8);
|
|
256
|
+
this.bounceFrom = y;
|
|
257
|
+
}
|
|
258
|
+
else if (y < this.maxY) {
|
|
259
|
+
// scrolling down below scroll area
|
|
260
|
+
y += Math.pow(this.maxY - y, 0.9);
|
|
261
|
+
this.bounceFrom = y;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
this.bounceFrom = 0;
|
|
265
|
+
}
|
|
266
|
+
this.update(y, 0, false);
|
|
302
267
|
}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
this.
|
|
268
|
+
onEnd(detail) {
|
|
269
|
+
if (this.bounceFrom > 0) {
|
|
270
|
+
// bounce back up
|
|
271
|
+
this.update(this.minY, 100, true);
|
|
272
|
+
this.emitColChange();
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
else if (this.bounceFrom < 0) {
|
|
276
|
+
// bounce back down
|
|
277
|
+
this.update(this.maxY, 100, true);
|
|
278
|
+
this.emitColChange();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
282
|
+
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
283
|
+
const opt = detail.event.target.closest('.picker-opt');
|
|
284
|
+
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
285
|
+
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
this.y += detail.deltaY;
|
|
290
|
+
if (Math.abs(detail.velocityY) < 0.05) {
|
|
291
|
+
const isScrollingUp = detail.deltaY > 0;
|
|
292
|
+
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
293
|
+
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
294
|
+
this.velocity = Math.abs(this.velocity) * -1;
|
|
295
|
+
}
|
|
296
|
+
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
297
|
+
this.velocity = Math.abs(this.velocity);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
this.decelerate();
|
|
308
301
|
}
|
|
309
302
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
303
|
+
refresh(forceRefresh, animated) {
|
|
304
|
+
var _a;
|
|
305
|
+
let min = this.col.options.length - 1;
|
|
306
|
+
let max = 0;
|
|
307
|
+
const options = this.col.options;
|
|
308
|
+
for (let i = 0; i < options.length; i++) {
|
|
309
|
+
if (!options[i].disabled) {
|
|
310
|
+
min = Math.min(min, i);
|
|
311
|
+
max = Math.max(max, i);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Only update selected value if column has a
|
|
316
|
+
* velocity of 0. If it does not, then the
|
|
317
|
+
* column is animating might land on
|
|
318
|
+
* a value different than the value at
|
|
319
|
+
* selectedIndex
|
|
320
|
+
*/
|
|
321
|
+
if (this.velocity !== 0) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
325
|
+
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
326
|
+
const y = selectedIndex * this.optHeight * -1;
|
|
327
|
+
const duration = animated ? TRANSITION_DURATION : 0;
|
|
328
|
+
this.velocity = 0;
|
|
329
|
+
this.update(y, duration, true);
|
|
323
330
|
}
|
|
324
331
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
332
|
+
onDomChange(forceRefresh, animated) {
|
|
333
|
+
const colEl = this.optsEl;
|
|
334
|
+
if (colEl) {
|
|
335
|
+
// DOM READ
|
|
336
|
+
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
337
|
+
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
338
|
+
}
|
|
339
|
+
this.refresh(forceRefresh, animated);
|
|
330
340
|
}
|
|
331
341
|
render() {
|
|
332
|
-
const
|
|
342
|
+
const col = this.col;
|
|
333
343
|
const mode = getIonMode(this);
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
* the attribute can be moved to datetime.tsx and set on every
|
|
338
|
-
* instance of ion-picker-column there instead.
|
|
339
|
-
*/
|
|
340
|
-
return (h(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses(color, {
|
|
341
|
-
[mode]: true,
|
|
342
|
-
['picker-column-active']: isActive,
|
|
343
|
-
['picker-column-numeric-input']: numericInput,
|
|
344
|
-
}) }, h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
|
|
345
|
-
const isItemDisabled = pickerDisabled || item.disabled || false;
|
|
346
|
-
return (h("button", { tabindex: "-1", class: {
|
|
347
|
-
'picker-item': true,
|
|
348
|
-
}, "data-value": item.value, "data-index": index, onClick: (ev) => {
|
|
349
|
-
this.centerPickerItemInView(ev.target, true);
|
|
350
|
-
}, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
|
|
351
|
-
}), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
|
|
344
|
+
return (h(Host, { class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
|
|
345
|
+
'max-width': this.col.columnWidth,
|
|
346
|
+
} }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
|
|
352
347
|
}
|
|
353
348
|
get el() { return this; }
|
|
354
349
|
static get watchers() { return {
|
|
355
|
-
"
|
|
350
|
+
"col": ["colChanged"]
|
|
356
351
|
}; }
|
|
357
352
|
static get style() { return {
|
|
358
353
|
ios: pickerColumnIosCss,
|
|
359
354
|
md: pickerColumnMdCss
|
|
360
355
|
}; }
|
|
361
|
-
}, [
|
|
362
|
-
"
|
|
363
|
-
"items": [16],
|
|
364
|
-
"value": [1032],
|
|
365
|
-
"color": [513],
|
|
366
|
-
"numericInput": [4, "numeric-input"],
|
|
367
|
-
"isActive": [32],
|
|
368
|
-
"scrollActiveItemIntoView": [64],
|
|
369
|
-
"setValue": [64]
|
|
356
|
+
}, [32, "ion-picker-column", {
|
|
357
|
+
"col": [16]
|
|
370
358
|
}, undefined, {
|
|
371
|
-
"
|
|
359
|
+
"col": ["colChanged"]
|
|
372
360
|
}]);
|
|
373
|
-
const
|
|
374
|
-
const
|
|
375
|
-
const
|
|
361
|
+
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
362
|
+
const DECELERATION_FRICTION = 0.97;
|
|
363
|
+
const MAX_PICKER_SPEED = 90;
|
|
364
|
+
const TRANSITION_DURATION = 150;
|
|
376
365
|
function defineCustomElement() {
|
|
377
366
|
if (typeof customElements === "undefined") {
|
|
378
367
|
return;
|
|
@@ -381,10 +370,10 @@ function defineCustomElement() {
|
|
|
381
370
|
components.forEach(tagName => { switch (tagName) {
|
|
382
371
|
case "ion-picker-column":
|
|
383
372
|
if (!customElements.get(tagName)) {
|
|
384
|
-
customElements.define(tagName,
|
|
373
|
+
customElements.define(tagName, PickerColumnCmp);
|
|
385
374
|
}
|
|
386
375
|
break;
|
|
387
376
|
} });
|
|
388
377
|
}
|
|
389
378
|
|
|
390
|
-
export {
|
|
379
|
+
export { PickerColumnCmp as P, defineCustomElement as d };
|