@ionic/core 7.5.8-dev.11701791090.18ebbea8 → 7.5.8-dev.11701806358.1ca1b519
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/backdrop.js +0 -12
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +40 -64
- package/components/ion-input.js +2 -21
- package/components/ion-picker-column-option.d.ts +11 -0
- package/components/ion-picker-column-option.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/ion-picker-legacy-column.d.ts +11 -0
- package/components/ion-picker-legacy-column.js +9 -0
- package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
- package/components/ion-picker-legacy.js +309 -0
- package/components/ion-picker.js +1 -309
- package/components/ion-textarea.js +2 -25
- package/components/overlays.js +11 -4
- package/components/picker-column-option.js +122 -0
- package/components/picker-column.js +363 -317
- package/components/picker-column2.js +379 -0
- package/components/{picker-internal.js → picker.js} +16 -16
- package/dist/cjs/{button-active-417ccdcb.js → button-active-9d7e0640.js} +1 -1
- package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
- package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
- package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
- package/dist/cjs/ion-alert.cjs.entry.js +4 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +36 -56
- package/dist/cjs/ion-input.cjs.entry.js +2 -21
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +2 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
- package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +105 -72
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +13 -13
- package/dist/cjs/ion-popover.cjs.entry.js +2 -1
- package/dist/cjs/ion-range.cjs.entry.js +1 -1
- package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +2 -1
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -25
- package/dist/cjs/ion-toast.cjs.entry.js +2 -1
- package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-5c379703.js → overlays-e8e05b0e.js} +11 -4
- package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
- package/dist/collection/collection-manifest.json +7 -6
- package/dist/collection/components/backdrop/backdrop.js +0 -12
- package/dist/collection/components/content/content.css +0 -4
- package/dist/collection/components/datetime/datetime.ios.css +83 -37
- package/dist/collection/components/datetime/datetime.js +24 -36
- package/dist/collection/components/datetime/datetime.md.css +88 -37
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
- package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/input/input.js +2 -21
- package/dist/collection/components/input/test/clear-on-edit/input.e2e.js +9 -21
- package/dist/collection/components/picker/picker.ios.css +100 -205
- package/dist/collection/components/picker/picker.js +461 -743
- package/dist/collection/components/picker/picker.md.css +98 -194
- package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
- package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
- package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +23 -22
- package/dist/collection/components/picker-column/picker-column.ios.css +120 -160
- package/dist/collection/components/picker-column/picker-column.js +514 -329
- package/dist/collection/components/picker-column/picker-column.md.css +134 -107
- package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +113 -0
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
- package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +367 -0
- package/dist/collection/components/picker-legacy/picker.js +817 -0
- package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
- package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy-column/picker-column.ios.css} +98 -101
- package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
- package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-legacy-column/picker-column.md.css} +113 -63
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/textarea/test/clear-on-edit/textarea.e2e.js +0 -28
- package/dist/collection/components/textarea/textarea.js +2 -25
- package/dist/collection/utils/gesture/gesture-controller.js +1 -1
- package/dist/collection/utils/overlays.js +11 -4
- package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
- package/dist/docs.json +493 -40
- package/dist/esm/{button-active-3fdf3e4f.js → button-active-ed9d848c.js} +1 -1
- package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
- package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
- package/dist/esm/index.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +4 -4
- package/dist/esm/ion-alert.entry.js +4 -4
- package/dist/esm/ion-app_8.entry.js +2 -2
- package/dist/esm/ion-backdrop.entry.js +0 -12
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +35 -55
- package/dist/esm/ion-input.entry.js +2 -21
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +2 -1
- package/dist/esm/ion-menu_3.entry.js +3 -3
- package/dist/esm/ion-modal.entry.js +3 -3
- package/dist/esm/ion-nav_2.entry.js +1 -1
- package/dist/esm/ion-picker-column-option.entry.js +100 -0
- package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +105 -72
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +13 -13
- package/dist/esm/ion-popover.entry.js +2 -1
- package/dist/esm/ion-range.entry.js +1 -1
- package/dist/esm/ion-refresher_2.entry.js +3 -3
- package/dist/esm/ion-reorder_2.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +2 -1
- package/dist/esm/ion-textarea.entry.js +2 -25
- package/dist/esm/ion-toast.entry.js +2 -1
- package/dist/esm/ion-toggle.entry.js +1 -1
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-abf58489.js → overlays-fbc5cab5.js} +11 -4
- package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
- package/dist/esm-es5/{button-active-3fdf3e4f.js → button-active-ed9d848c.js} +1 -1
- package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_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-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
- package/dist/esm-es5/ion-picker-column.entry.js +4 -0
- package/dist/esm-es5/ion-picker.entry.js +4 -0
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
- package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
- package/dist/html.html-data.json +152 -1
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-b0dc1cf9.system.js → p-1d624e03.system.js} +1 -1
- package/dist/ionic/{p-d40a974a.entry.js → p-1fc72959.entry.js} +1 -1
- package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
- package/dist/ionic/{p-0519cd21.entry.js → p-21c3515a.entry.js} +1 -1
- package/dist/ionic/{p-6470b136.entry.js → p-22e5af95.entry.js} +1 -1
- package/dist/ionic/p-232d1f22.entry.js +4 -0
- package/dist/ionic/p-23672c82.system.entry.js +4 -0
- package/dist/ionic/p-26798a7b.system.entry.js +4 -0
- package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
- package/dist/ionic/{p-765a08a7.system.entry.js → p-32303650.system.entry.js} +1 -1
- package/dist/ionic/p-3ba01a9c.system.entry.js +4 -0
- package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
- package/dist/ionic/{p-667df818.system.entry.js → p-3fd26bd6.system.entry.js} +1 -1
- package/dist/ionic/{p-864c4046.entry.js → p-42ba3902.entry.js} +1 -1
- package/dist/ionic/{p-88fde0e0.entry.js → p-4911a5d6.entry.js} +1 -1
- package/dist/ionic/{p-a6f9dd7b.entry.js → p-4a081ea9.entry.js} +1 -1
- package/dist/ionic/{p-7b8d0af2.system.entry.js → p-4a36430f.system.entry.js} +1 -1
- package/dist/ionic/p-51abefb7.system.js +4 -0
- package/dist/ionic/{p-0b1bc636.entry.js → p-535d2a67.entry.js} +1 -1
- package/dist/ionic/{p-af5cfad2.system.js → p-54dfc9b5.system.js} +1 -1
- package/dist/ionic/p-563c41f0.system.entry.js +4 -0
- package/dist/ionic/{p-b04e4d62.entry.js → p-5d42b6b4.entry.js} +1 -1
- package/dist/ionic/{p-50880712.entry.js → p-6b7c55cd.entry.js} +1 -1
- package/dist/ionic/{p-a1987850.entry.js → p-6d72fb44.entry.js} +1 -1
- package/dist/ionic/{p-e6d68e02.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
- package/dist/ionic/p-73190c5f.entry.js +4 -0
- package/dist/ionic/p-73aa7604.entry.js +4 -0
- package/dist/ionic/{p-17f893be.js → p-76d3765d.js} +1 -1
- package/dist/ionic/{p-94389114.system.entry.js → p-77965464.system.entry.js} +1 -1
- package/dist/ionic/{p-98b14ece.entry.js → p-7b725280.entry.js} +1 -1
- package/dist/ionic/p-8017aad2.system.entry.js +4 -0
- package/dist/ionic/p-846ee227.entry.js +4 -0
- package/dist/ionic/p-8c97cdc0.entry.js +4 -0
- package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
- package/dist/ionic/p-8fa6583d.system.js +4 -0
- package/dist/ionic/p-9282b16f.entry.js +4 -0
- package/dist/ionic/{p-d7be6b7e.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
- package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
- package/dist/ionic/p-9ba90516.system.entry.js +4 -0
- package/dist/ionic/{p-a0126dd5.system.entry.js → p-9c229210.system.entry.js} +2 -2
- package/dist/ionic/{p-7faba551.system.entry.js → p-a225bf0f.system.entry.js} +1 -1
- package/dist/ionic/p-a60a1ce5.js +4 -0
- package/dist/ionic/p-a8baa23e.entry.js +4 -0
- package/dist/ionic/{p-ad019ef0.entry.js → p-a9a80f5b.entry.js} +1 -1
- package/dist/ionic/p-afcf4620.entry.js +4 -0
- package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
- package/dist/ionic/{p-08f196ce.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
- package/dist/ionic/{p-e553006f.system.entry.js → p-c18de88a.system.entry.js} +1 -1
- package/dist/ionic/p-c2910c78.entry.js +4 -0
- package/dist/ionic/p-c8f0a036.entry.js +4 -0
- package/dist/ionic/p-ca8938f4.js +4 -0
- package/dist/ionic/p-ca9d1792.system.entry.js +4 -0
- package/dist/ionic/{p-c3d09cf2.system.entry.js → p-cde52378.system.entry.js} +1 -1
- package/dist/ionic/p-da15f571.system.entry.js +4 -0
- package/dist/ionic/p-e3584231.system.js +1 -1
- package/dist/ionic/{p-6577aea9.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
- package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
- package/dist/ionic/{p-3b686a65.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
- package/dist/ionic/p-fe4dde76.entry.js +4 -0
- package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
- package/dist/types/components/backdrop/backdrop.d.ts +0 -3
- package/dist/types/components/datetime/datetime.d.ts +0 -1
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
- package/dist/types/components/picker/picker.d.ts +74 -131
- package/dist/types/components/picker-column/picker-column.d.ts +105 -39
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
- package/dist/types/components/picker-legacy/picker.d.ts +158 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components.d.ts +163 -122
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
- package/dist/types/utils/overlays.d.ts +5 -2
- package/hydrate/index.js +1367 -1296
- package/package.json +1 -1
- package/components/ion-picker-column-internal.d.ts +0 -11
- package/components/ion-picker-column-internal.js +0 -9
- package/components/ion-picker-internal.js +0 -9
- package/components/picker-column-internal.js +0 -390
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
- package/dist/collection/components/picker-internal/picker-internal.js +0 -544
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
- package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
- package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
- package/dist/esm-es5/overlays-abf58489.js +0 -4
- package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
- package/dist/ionic/p-18b6bd23.system.entry.js +0 -4
- package/dist/ionic/p-1d17219f.entry.js +0 -4
- package/dist/ionic/p-25b32c3d.entry.js +0 -4
- package/dist/ionic/p-2ba0657d.system.entry.js +0 -4
- package/dist/ionic/p-35ce400e.system.js +0 -4
- package/dist/ionic/p-3de71759.entry.js +0 -4
- package/dist/ionic/p-3e960213.system.entry.js +0 -4
- package/dist/ionic/p-61d7d7fb.js +0 -4
- package/dist/ionic/p-67da080d.entry.js +0 -4
- package/dist/ionic/p-6a6477b2.js +0 -4
- package/dist/ionic/p-73637557.system.entry.js +0 -4
- package/dist/ionic/p-73ea8f82.system.entry.js +0 -4
- package/dist/ionic/p-80fa068e.entry.js +0 -4
- package/dist/ionic/p-82045bc1.entry.js +0 -4
- package/dist/ionic/p-908475e7.system.entry.js +0 -4
- package/dist/ionic/p-9c3b6849.entry.js +0 -4
- package/dist/ionic/p-b4bad293.system.entry.js +0 -4
- package/dist/ionic/p-c3289ef2.entry.js +0 -4
- package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
- package/dist/ionic/p-d1cb29a8.system.entry.js +0 -4
- package/dist/ionic/p-e94c392d.entry.js +0 -4
- package/dist/ionic/p-f2c21dae.system.js +0 -4
- package/dist/ionic/p-f51666d3.entry.js +0 -4
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
- package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
- /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
- /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
- /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
- /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
- /package/dist/types/components/{picker-column-internal/picker-column-internal-interfaces.d.ts → picker-column/picker-column-interfaces.d.ts} +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
|
@@ -272,34 +272,15 @@ const Input = class {
|
|
|
272
272
|
if (!this.shouldClearOnEdit()) {
|
|
273
273
|
return;
|
|
274
274
|
}
|
|
275
|
-
/**
|
|
276
|
-
* The following keys do not modify the
|
|
277
|
-
* contents of the input. As a result, pressing
|
|
278
|
-
* them should not edit the input.
|
|
279
|
-
*
|
|
280
|
-
* We can't check to see if the value of the input
|
|
281
|
-
* was changed because we call checkClearOnEdit
|
|
282
|
-
* in a keydown listener, and the key has not yet
|
|
283
|
-
* been added to the input.
|
|
284
|
-
*/
|
|
285
|
-
const IGNORED_KEYS = ['Enter', 'Tab', 'Shift', 'Meta', 'Alt', 'Control'];
|
|
286
|
-
const pressedIgnoredKey = IGNORED_KEYS.includes(ev.key);
|
|
287
275
|
/**
|
|
288
276
|
* Clear the input if the control has not been previously cleared during focus.
|
|
289
277
|
* Do not clear if the user hitting enter to submit a form.
|
|
290
278
|
*/
|
|
291
|
-
if (!this.didInputClearOnEdit && this.hasValue() &&
|
|
279
|
+
if (!this.didInputClearOnEdit && this.hasValue() && ev.key !== 'Enter' && ev.key !== 'Tab') {
|
|
292
280
|
this.value = '';
|
|
293
281
|
this.emitInputChange(ev);
|
|
294
282
|
}
|
|
295
|
-
|
|
296
|
-
* Pressing an IGNORED_KEYS first and
|
|
297
|
-
* then an allowed key will cause the input to not
|
|
298
|
-
* be cleared.
|
|
299
|
-
*/
|
|
300
|
-
if (!pressedIgnoredKey) {
|
|
301
|
-
this.didInputClearOnEdit = true;
|
|
302
|
-
}
|
|
283
|
+
this.didInputClearOnEdit = true;
|
|
303
284
|
}
|
|
304
285
|
hasValue() {
|
|
305
286
|
return this.getValue().length > 0;
|
|
@@ -139,7 +139,7 @@ const ItemSliding = class {
|
|
|
139
139
|
await this.updateOptions();
|
|
140
140
|
});
|
|
141
141
|
await this.updateOptions();
|
|
142
|
-
this.gesture = (await import('./index-
|
|
142
|
+
this.gesture = (await import('./index-39782642.js')).createGesture({
|
|
143
143
|
el,
|
|
144
144
|
gestureName: 'item-swipe',
|
|
145
145
|
gesturePriority: 100,
|
|
@@ -5,12 +5,13 @@ import { r as registerInstance, d as createEvent, h, H as Host, f as getElement
|
|
|
5
5
|
import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-49c88215.js';
|
|
6
6
|
import { r as raf } from './helpers-ae653409.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller-316928be.js';
|
|
8
|
-
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-
|
|
8
|
+
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-fbc5cab5.js';
|
|
9
9
|
import { g as getClassMap } from './theme-01f3f29c.js';
|
|
10
10
|
import { c as config, b as getIonMode } from './ionic-global-c0cda98e.js';
|
|
11
11
|
import { c as createAnimation } from './animation-fb0e0f6f.js';
|
|
12
12
|
import './index-7a14ecec.js';
|
|
13
13
|
import './framework-delegate-bc1fd82a.js';
|
|
14
|
+
import './gesture-controller-314a54f6.js';
|
|
14
15
|
import './hardware-back-button-b2bc76db.js';
|
|
15
16
|
import './index-9b0d46f4.js';
|
|
16
17
|
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, d as createEvent, h, H as Host, f as getElement } from './index-08d686eb.js';
|
|
5
5
|
import { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
|
|
6
|
-
import { G as GESTURE_CONTROLLER } from './gesture-controller-
|
|
6
|
+
import { G as GESTURE_CONTROLLER } from './gesture-controller-314a54f6.js';
|
|
7
7
|
import { p as isEndSide, i as inheritAriaAttributes, o as assert, l as clamp } from './helpers-ae653409.js';
|
|
8
8
|
import { m as menuController } from './index-80492ed3.js';
|
|
9
|
-
import { q as getPresentedOverlay } from './overlays-
|
|
9
|
+
import { q as getPresentedOverlay } from './overlays-fbc5cab5.js';
|
|
10
10
|
import { c as config, b as getIonMode } from './ionic-global-c0cda98e.js';
|
|
11
11
|
import { c as createColorClasses, h as hostContext } from './theme-01f3f29c.js';
|
|
12
12
|
import { u as menuOutline, v as menuSharp } from './index-c132c5f1.js';
|
|
@@ -129,7 +129,7 @@ const Menu = class {
|
|
|
129
129
|
// register this menu with the app's menu controller
|
|
130
130
|
menuController._register(this);
|
|
131
131
|
this.menuChanged();
|
|
132
|
-
this.gesture = (await import('./index-
|
|
132
|
+
this.gesture = (await import('./index-39782642.js')).createGesture({
|
|
133
133
|
el: document,
|
|
134
134
|
gestureName: 'menu-swipe',
|
|
135
135
|
gesturePriority: 30,
|
|
@@ -8,18 +8,18 @@ import { g as getElementRoot, l as clamp, r as raf, k as inheritAttributes, m as
|
|
|
8
8
|
import { c as createLockController } from './lock-controller-316928be.js';
|
|
9
9
|
import { p as printIonWarning } from './index-9b0d46f4.js';
|
|
10
10
|
import { g as getCapacitor } from './capacitor-b0e5fe83.js';
|
|
11
|
-
import { G as GESTURE, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as activeAnimations, g as dismiss, h as eventMethod } from './overlays-
|
|
11
|
+
import { G as GESTURE, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as activeAnimations, g as dismiss, h as eventMethod } from './overlays-fbc5cab5.js';
|
|
12
12
|
import { g as getClassMap } from './theme-01f3f29c.js';
|
|
13
13
|
import { e as deepReady, w as waitForMount } from './index-d8817fb0.js';
|
|
14
14
|
import { b as getIonMode, c as config } from './ionic-global-c0cda98e.js';
|
|
15
15
|
import { KEYBOARD_DID_OPEN } from './keyboard-c402e885.js';
|
|
16
16
|
import { c as createAnimation } from './animation-fb0e0f6f.js';
|
|
17
17
|
import { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
|
|
18
|
-
import { createGesture } from './index-
|
|
18
|
+
import { createGesture } from './index-39782642.js';
|
|
19
19
|
import { w as win } from './index-7a14ecec.js';
|
|
20
|
+
import './gesture-controller-314a54f6.js';
|
|
20
21
|
import './hardware-back-button-b2bc76db.js';
|
|
21
22
|
import './keyboard-dbb05fb9.js';
|
|
22
|
-
import './gesture-controller-1bf57181.js';
|
|
23
23
|
|
|
24
24
|
var Style;
|
|
25
25
|
(function (Style) {
|
|
@@ -131,7 +131,7 @@ const Nav = class {
|
|
|
131
131
|
// We want to set this flag before any watch callbacks are manually called
|
|
132
132
|
this.didLoad = true;
|
|
133
133
|
this.rootChanged();
|
|
134
|
-
this.gesture = (await import('./swipe-back-
|
|
134
|
+
this.gesture = (await import('./swipe-back-a8ca7f93.js')).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
|
|
135
135
|
this.swipeGestureChanged();
|
|
136
136
|
}
|
|
137
137
|
connectedCallback() {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { r as registerInstance, h, H as Host, f as getElement } from './index-08d686eb.js';
|
|
5
|
+
import { k as inheritAttributes } from './helpers-ae653409.js';
|
|
6
|
+
import { c as createColorClasses } from './theme-01f3f29c.js';
|
|
7
|
+
import { b as getIonMode } from './ionic-global-c0cda98e.js';
|
|
8
|
+
|
|
9
|
+
const pickerColumnOptionIosCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}";
|
|
10
|
+
|
|
11
|
+
const pickerColumnOptionMdCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
|
|
12
|
+
|
|
13
|
+
const PickerColumnOption = class {
|
|
14
|
+
constructor(hostRef) {
|
|
15
|
+
registerInstance(this, hostRef);
|
|
16
|
+
/**
|
|
17
|
+
* We keep track of the parent picker column
|
|
18
|
+
* so we can update the value of it when
|
|
19
|
+
* clicking an enable option.
|
|
20
|
+
*/
|
|
21
|
+
this.pickerColumn = null;
|
|
22
|
+
this.ariaLabel = null;
|
|
23
|
+
this.disabled = false;
|
|
24
|
+
this.value = undefined;
|
|
25
|
+
this.color = 'primary';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The aria-label of the option has changed after the
|
|
29
|
+
* first render and needs to be updated within the component.
|
|
30
|
+
*
|
|
31
|
+
* @param ariaLbl The new aria-label value.
|
|
32
|
+
*/
|
|
33
|
+
onAriaLabelChange(ariaLbl) {
|
|
34
|
+
this.ariaLabel = ariaLbl;
|
|
35
|
+
}
|
|
36
|
+
componentWillLoad() {
|
|
37
|
+
const inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
|
|
38
|
+
/**
|
|
39
|
+
* The initial value of `aria-label` needs to be set for
|
|
40
|
+
* the first render.
|
|
41
|
+
|
|
42
|
+
*/
|
|
43
|
+
this.ariaLabel = inheritedAttributes['aria-label'] || null;
|
|
44
|
+
}
|
|
45
|
+
connectedCallback() {
|
|
46
|
+
this.pickerColumn = this.el.closest('ion-picker-column');
|
|
47
|
+
}
|
|
48
|
+
disconnectedCallback() {
|
|
49
|
+
this.pickerColumn = null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The column options can load at any time
|
|
53
|
+
* so the options needs to tell the
|
|
54
|
+
* parent picker column when it is loaded
|
|
55
|
+
* so the picker column can ensure it is
|
|
56
|
+
* centered in the view.
|
|
57
|
+
*
|
|
58
|
+
* We intentionally run this for every
|
|
59
|
+
* option. If we only ran this from
|
|
60
|
+
* the selected option then if the newly
|
|
61
|
+
* loaded options were not selected then
|
|
62
|
+
* scrollActiveItemIntoView would not be called.
|
|
63
|
+
*/
|
|
64
|
+
componentDidLoad() {
|
|
65
|
+
const { pickerColumn } = this;
|
|
66
|
+
if (pickerColumn !== null) {
|
|
67
|
+
pickerColumn.scrollActiveItemIntoView();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* When an option is clicked update the
|
|
72
|
+
* parent picker column value. This
|
|
73
|
+
* component will handle centering the option
|
|
74
|
+
* in the column view.
|
|
75
|
+
*/
|
|
76
|
+
onClick() {
|
|
77
|
+
const { pickerColumn } = this;
|
|
78
|
+
if (pickerColumn !== null) {
|
|
79
|
+
pickerColumn.setValue(this.value);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
render() {
|
|
83
|
+
const { color, disabled, ariaLabel } = this;
|
|
84
|
+
const mode = getIonMode(this);
|
|
85
|
+
return (h(Host, { class: createColorClasses(color, {
|
|
86
|
+
[mode]: true,
|
|
87
|
+
['option-disabled']: disabled,
|
|
88
|
+
}) }, h("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", null))));
|
|
89
|
+
}
|
|
90
|
+
get el() { return getElement(this); }
|
|
91
|
+
static get watchers() { return {
|
|
92
|
+
"aria-label": ["onAriaLabelChange"]
|
|
93
|
+
}; }
|
|
94
|
+
};
|
|
95
|
+
PickerColumnOption.style = {
|
|
96
|
+
ios: pickerColumnOptionIosCss,
|
|
97
|
+
md: pickerColumnOptionMdCss
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export { PickerColumnOption as ion_picker_column_option };
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, d as createEvent, h, H as Host, f as getElement } from './index-08d686eb.js';
|
|
5
|
+
import { d as doc } from './index-7a14ecec.js';
|
|
5
6
|
import { r as raf, g as getElementRoot } from './helpers-ae653409.js';
|
|
6
7
|
import { a as hapticSelectionStart, b as hapticSelectionChanged, h as hapticSelectionEnd } from './haptic-152c4172.js';
|
|
7
8
|
import { a as isPlatform, b as getIonMode } from './ionic-global-c0cda98e.js';
|
|
8
9
|
import { c as createColorClasses } from './theme-01f3f29c.js';
|
|
9
10
|
import './capacitor-b0e5fe83.js';
|
|
10
|
-
import './index-7a14ecec.js';
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const pickerColumnIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host .picker-item{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,:host .picker-item[disabled]{cursor:default}:host .picker-item-empty,:host(:not([disabled])) .picker-item[disabled]{scroll-snap-align:none}:host([disabled]){overflow-y:hidden}:host .picker-item[disabled]{opacity:0.4}:host(.picker-column-active) .picker-item.picker-item-active{color:var(--ion-color-base)}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
|
|
13
13
|
|
|
14
|
-
const
|
|
14
|
+
const pickerColumnMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host .picker-item{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,:host .picker-item[disabled]{cursor:default}:host .picker-item-empty,:host(:not([disabled])) .picker-item[disabled]{scroll-snap-align:none}:host([disabled]){overflow-y:hidden}:host .picker-item[disabled]{opacity:0.4}:host(.picker-column-active) .picker-item.picker-item-active{color:var(--ion-color-base)}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}:host .picker-item-active{color:var(--ion-color-base)}";
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const PickerColumn = class {
|
|
17
17
|
constructor(hostRef) {
|
|
18
18
|
registerInstance(this, hostRef);
|
|
19
19
|
this.ionChange = createEvent(this, "ionChange", 7);
|
|
@@ -21,11 +21,11 @@ const PickerColumnInternal = class {
|
|
|
21
21
|
this.isColumnVisible = false;
|
|
22
22
|
this.canExitInputMode = true;
|
|
23
23
|
this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
|
|
24
|
-
const {
|
|
25
|
-
if (isColumnVisible) {
|
|
24
|
+
const { isColumnVisible, scrollEl } = this;
|
|
25
|
+
if (isColumnVisible && scrollEl) {
|
|
26
26
|
// (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
|
|
27
27
|
const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
|
|
28
|
-
if (
|
|
28
|
+
if (scrollEl.scrollTop !== top) {
|
|
29
29
|
/**
|
|
30
30
|
* Setting this flag prevents input
|
|
31
31
|
* mode from exiting in the picker column's
|
|
@@ -34,7 +34,7 @@ const PickerColumnInternal = class {
|
|
|
34
34
|
* of these can cause a scroll to occur.
|
|
35
35
|
*/
|
|
36
36
|
this.canExitInputMode = canExitInputMode;
|
|
37
|
-
|
|
37
|
+
scrollEl.scroll({
|
|
38
38
|
top,
|
|
39
39
|
left: 0,
|
|
40
40
|
behavior: smooth ? 'smooth' : undefined,
|
|
@@ -103,11 +103,13 @@ const PickerColumnInternal = class {
|
|
|
103
103
|
* be disabled on Android.
|
|
104
104
|
*/
|
|
105
105
|
const enableHaptics = isPlatform('ios');
|
|
106
|
-
const { el } = this;
|
|
106
|
+
const { el, scrollEl } = this;
|
|
107
107
|
let timeout;
|
|
108
108
|
let activeEl = this.activeItem;
|
|
109
109
|
const scrollCallback = () => {
|
|
110
110
|
raf(() => {
|
|
111
|
+
if (!scrollEl)
|
|
112
|
+
return;
|
|
111
113
|
if (timeout) {
|
|
112
114
|
clearTimeout(timeout);
|
|
113
115
|
timeout = undefined;
|
|
@@ -120,21 +122,54 @@ const PickerColumnInternal = class {
|
|
|
120
122
|
* Select item in the center of the column
|
|
121
123
|
* which is the month/year that we want to select
|
|
122
124
|
*/
|
|
123
|
-
const bbox =
|
|
125
|
+
const bbox = scrollEl.getBoundingClientRect();
|
|
124
126
|
const centerX = bbox.x + bbox.width / 2;
|
|
125
127
|
const centerY = bbox.y + bbox.height / 2;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
/**
|
|
129
|
+
* elementFromPoint returns the top-most element.
|
|
130
|
+
* This means that if an ion-backdrop is overlaying the
|
|
131
|
+
* picker then the appropriate picker column option will
|
|
132
|
+
* not be selected. To account for this, we use elementsFromPoint
|
|
133
|
+
* and use an Array.find to find the appropriate column option
|
|
134
|
+
* at that point.
|
|
135
|
+
*
|
|
136
|
+
* Additionally, the picker column could be used in the
|
|
137
|
+
* Shadow DOM (i.e. in ion-datetime) so we need to make
|
|
138
|
+
* sure we are choosing the correct host otherwise
|
|
139
|
+
* the elements returns by elementsFromPoint will be
|
|
140
|
+
* retargeted. To account for this, we check to see
|
|
141
|
+
* if the picker column has a parent shadow root. If
|
|
142
|
+
* so, we use that shadow root when doing elementsFromPoint.
|
|
143
|
+
* Otherwise, we just use the document.
|
|
144
|
+
*/
|
|
145
|
+
const rootNode = el.getRootNode();
|
|
146
|
+
const hasParentShadow = rootNode instanceof ShadowRoot;
|
|
147
|
+
const referenceNode = hasParentShadow ? rootNode : doc;
|
|
148
|
+
/**
|
|
149
|
+
* If the reference node is undefined
|
|
150
|
+
* then it's likely that doc is undefined
|
|
151
|
+
* due to being in an SSR environment.
|
|
152
|
+
*/
|
|
153
|
+
if (referenceNode === undefined) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
|
|
157
|
+
/**
|
|
158
|
+
* elementsFromPoint can returns multiple elements
|
|
159
|
+
* so find the relevant picker column option if one exists.
|
|
160
|
+
*/
|
|
161
|
+
const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
|
|
162
|
+
if (activeEl !== undefined) {
|
|
128
163
|
this.setPickerItemActiveState(activeEl, false);
|
|
129
164
|
}
|
|
130
|
-
if (
|
|
165
|
+
if (newActiveElement === undefined || newActiveElement.disabled) {
|
|
131
166
|
return;
|
|
132
167
|
}
|
|
133
168
|
/**
|
|
134
169
|
* If we are selecting a new value,
|
|
135
170
|
* we need to run haptics again.
|
|
136
171
|
*/
|
|
137
|
-
if (
|
|
172
|
+
if (newActiveElement !== activeEl) {
|
|
138
173
|
enableHaptics && hapticSelectionChanged();
|
|
139
174
|
if (this.canExitInputMode) {
|
|
140
175
|
/**
|
|
@@ -151,8 +186,8 @@ const PickerColumnInternal = class {
|
|
|
151
186
|
this.exitInputMode();
|
|
152
187
|
}
|
|
153
188
|
}
|
|
154
|
-
activeEl =
|
|
155
|
-
this.setPickerItemActiveState(
|
|
189
|
+
activeEl = newActiveElement;
|
|
190
|
+
this.setPickerItemActiveState(newActiveElement, true);
|
|
156
191
|
timeout = setTimeout(() => {
|
|
157
192
|
this.isScrolling = false;
|
|
158
193
|
enableHaptics && hapticSelectionEnd();
|
|
@@ -174,20 +209,7 @@ const PickerColumnInternal = class {
|
|
|
174
209
|
* case, we should exit input mode.
|
|
175
210
|
*/
|
|
176
211
|
this.canExitInputMode = true;
|
|
177
|
-
|
|
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
|
-
}
|
|
212
|
+
this.setValue(newActiveElement.value);
|
|
191
213
|
}, 250);
|
|
192
214
|
});
|
|
193
215
|
};
|
|
@@ -196,9 +218,11 @@ const PickerColumnInternal = class {
|
|
|
196
218
|
* does not fire when component is initially shown.
|
|
197
219
|
*/
|
|
198
220
|
raf(() => {
|
|
199
|
-
|
|
221
|
+
if (!scrollEl)
|
|
222
|
+
return;
|
|
223
|
+
scrollEl.addEventListener('scroll', scrollCallback);
|
|
200
224
|
this.destroyScrollListener = () => {
|
|
201
|
-
|
|
225
|
+
scrollEl.removeEventListener('scroll', scrollCallback);
|
|
202
226
|
};
|
|
203
227
|
});
|
|
204
228
|
};
|
|
@@ -275,28 +299,25 @@ const PickerColumnInternal = class {
|
|
|
275
299
|
}
|
|
276
300
|
};
|
|
277
301
|
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
278
|
-
const parentEl = (this.parentEl = this.el.closest('ion-picker
|
|
302
|
+
const parentEl = (this.parentEl = this.el.closest('ion-picker'));
|
|
279
303
|
if (parentEl !== null) {
|
|
280
304
|
// TODO(FW-2832): type
|
|
281
305
|
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
282
306
|
}
|
|
283
307
|
}
|
|
284
308
|
componentDidRender() {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
*
|
|
298
|
-
*/
|
|
299
|
-
this.setValue(items[0].value);
|
|
309
|
+
const { el, activeItem, isColumnVisible, value } = this;
|
|
310
|
+
if (isColumnVisible && !activeItem) {
|
|
311
|
+
const firstOption = el.querySelector('ion-picker-column-option');
|
|
312
|
+
/**
|
|
313
|
+
* If the picker column does not have an active item and the current value
|
|
314
|
+
* does not match the first item in the picker column, that means
|
|
315
|
+
* the value is out of bounds. In this case, we assign the value to the
|
|
316
|
+
* first item to match the scroll position of the column.
|
|
317
|
+
*
|
|
318
|
+
*/
|
|
319
|
+
if (firstOption !== null && firstOption.value !== value) {
|
|
320
|
+
this.setValue(firstOption.value);
|
|
300
321
|
}
|
|
301
322
|
}
|
|
302
323
|
}
|
|
@@ -315,52 +336,64 @@ const PickerColumnInternal = class {
|
|
|
315
336
|
* @internal
|
|
316
337
|
*/
|
|
317
338
|
async setValue(value) {
|
|
318
|
-
|
|
339
|
+
if (this.value === value) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
319
342
|
this.value = value;
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
343
|
+
this.ionChange.emit({ value });
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Sets focus on the scrollable container within the picker column.
|
|
347
|
+
* Use this method instead of the global `pickerColumn.focus()`.
|
|
348
|
+
*/
|
|
349
|
+
async setFocus() {
|
|
350
|
+
if (this.scrollEl) {
|
|
351
|
+
this.scrollEl.focus();
|
|
323
352
|
}
|
|
324
353
|
}
|
|
325
354
|
get activeItem() {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
355
|
+
const { value } = this;
|
|
356
|
+
const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
|
|
357
|
+
return options.find((option) => {
|
|
358
|
+
/**
|
|
359
|
+
* If the whole picker column is disabled, the current value should appear active
|
|
360
|
+
* If the current value item is specifically disabled, it should not appear active
|
|
361
|
+
*/
|
|
362
|
+
if (!this.disabled && option.disabled) {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
return option.value === value;
|
|
366
|
+
});
|
|
330
367
|
}
|
|
331
368
|
render() {
|
|
332
|
-
const {
|
|
369
|
+
const { color, disabled: pickerDisabled, isActive, numericInput } = this;
|
|
333
370
|
const mode = getIonMode(this);
|
|
334
371
|
/**
|
|
335
372
|
* exportparts is needed so ion-datetime can expose the parts
|
|
336
373
|
* from two layers of shadow nesting. If this causes problems,
|
|
337
374
|
* the attribute can be moved to datetime.tsx and set on every
|
|
338
|
-
* instance of ion-picker-column
|
|
375
|
+
* instance of ion-picker-column there instead.
|
|
376
|
+
* TODO FW-5580 remove exportparts
|
|
339
377
|
*/
|
|
340
|
-
return (h(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled,
|
|
378
|
+
return (h(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, class: createColorClasses(color, {
|
|
341
379
|
[mode]: true,
|
|
342
380
|
['picker-column-active']: isActive,
|
|
343
381
|
['picker-column-numeric-input']: numericInput,
|
|
344
|
-
}) }, h("
|
|
345
|
-
|
|
346
|
-
|
|
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")));
|
|
382
|
+
}) }, h("slot", { name: "prefix" }), h("div", { class: "picker-opts", tabindex: pickerDisabled ? undefined : 0, ref: (el) => {
|
|
383
|
+
this.scrollEl = el;
|
|
384
|
+
} }, 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"), h("slot", null), 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")), h("slot", { name: "suffix" })));
|
|
352
385
|
}
|
|
353
386
|
get el() { return getElement(this); }
|
|
354
387
|
static get watchers() { return {
|
|
355
388
|
"value": ["valueChange"]
|
|
356
389
|
}; }
|
|
357
390
|
};
|
|
358
|
-
const PICKER_ITEM_ACTIVE_CLASS = '
|
|
391
|
+
const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
|
|
359
392
|
const PICKER_ITEM_PART = 'wheel-item';
|
|
360
393
|
const PICKER_ITEM_ACTIVE_PART = 'active';
|
|
361
|
-
|
|
362
|
-
ios:
|
|
363
|
-
md:
|
|
394
|
+
PickerColumn.style = {
|
|
395
|
+
ios: pickerColumnIosCss,
|
|
396
|
+
md: pickerColumnMdCss
|
|
364
397
|
};
|
|
365
398
|
|
|
366
|
-
export {
|
|
399
|
+
export { PickerColumn as ion_picker_column };
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
import { r as registerInstance, d as createEvent, h, H as Host, f as getElement } from './index-08d686eb.js';
|
|
5
5
|
import { g as getElementRoot } from './helpers-ae653409.js';
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const pickerIosCss = ":host{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,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}@supports (inset-inline-start: 0){:host .picker-before{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host .picker-before{left:0}:host-context([dir=rtl]) .picker-before{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)) .picker-before{left:unset;right:unset;right:0}}}:host .picker-after{top:116px;height:84px}@supports (inset-inline-start: 0){:host .picker-after{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host .picker-after{left:0}:host-context([dir=rtl]) .picker-after{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)) .picker-after{left:unset;right:unset;right:0}}}:host .picker-highlight{border-radius:8px;left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--wheel-highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{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{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{background:var(--wheel-highlight-background, var(--ion-color-step-150, #eeeeef))}";
|
|
8
8
|
|
|
9
|
-
const
|
|
9
|
+
const pickerMdCss = ":host{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,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}@supports (inset-inline-start: 0){:host .picker-before{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host .picker-before{left:0}:host-context([dir=rtl]) .picker-before{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)) .picker-before{left:unset;right:unset;right:0}}}:host .picker-after{top:116px;height:84px}@supports (inset-inline-start: 0){:host .picker-after{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host .picker-after{left:0}:host-context([dir=rtl]) .picker-after{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)) .picker-after{left:unset;right:unset;right:0}}}:host .picker-highlight{border-radius:8px;left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--wheel-highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{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{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%)}";
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const Picker = class {
|
|
12
12
|
constructor(hostRef) {
|
|
13
13
|
registerInstance(this, hostRef);
|
|
14
14
|
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
@@ -40,7 +40,7 @@ const PickerInternal = class {
|
|
|
40
40
|
this.onFocusOut = (ev) => {
|
|
41
41
|
// TODO(FW-2832): type
|
|
42
42
|
const { relatedTarget } = ev;
|
|
43
|
-
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN
|
|
43
|
+
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
|
|
44
44
|
this.exitInputMode();
|
|
45
45
|
}
|
|
46
46
|
};
|
|
@@ -58,7 +58,7 @@ const PickerInternal = class {
|
|
|
58
58
|
* make sure that this function only ever runs when
|
|
59
59
|
* focusing a picker column.
|
|
60
60
|
*/
|
|
61
|
-
if (target.tagName !== 'ION-PICKER-COLUMN
|
|
61
|
+
if (target.tagName !== 'ION-PICKER-COLUMN') {
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
@@ -125,7 +125,7 @@ const PickerInternal = class {
|
|
|
125
125
|
* since we just tapped the highlight and
|
|
126
126
|
* not a column.
|
|
127
127
|
*/
|
|
128
|
-
if (ev.target.tagName === 'ION-PICKER-COLUMN
|
|
128
|
+
if (ev.target.tagName === 'ION-PICKER-COLUMN') {
|
|
129
129
|
/**
|
|
130
130
|
* If user taps 2 different columns
|
|
131
131
|
* then we should just switch to input mode
|
|
@@ -159,7 +159,7 @@ const PickerInternal = class {
|
|
|
159
159
|
* If there is only 1 numeric input column
|
|
160
160
|
* then we should skip multi column input.
|
|
161
161
|
*/
|
|
162
|
-
const columns = el.querySelectorAll('ion-picker-column
|
|
162
|
+
const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
|
|
163
163
|
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
164
164
|
this.actionOnClick = () => {
|
|
165
165
|
this.enterInputMode(columnEl);
|
|
@@ -193,7 +193,7 @@ const PickerInternal = class {
|
|
|
193
193
|
* Only active input mode if there is at
|
|
194
194
|
* least one column that accepts numeric input.
|
|
195
195
|
*/
|
|
196
|
-
const hasInputColumn = el.querySelector('ion-picker-column
|
|
196
|
+
const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
|
|
197
197
|
if (!hasInputColumn) {
|
|
198
198
|
return;
|
|
199
199
|
}
|
|
@@ -322,7 +322,7 @@ const PickerInternal = class {
|
|
|
322
322
|
if (!inputEl) {
|
|
323
323
|
return;
|
|
324
324
|
}
|
|
325
|
-
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column
|
|
325
|
+
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
|
|
326
326
|
const firstColumn = numericPickers[0];
|
|
327
327
|
const lastColumn = numericPickers[1];
|
|
328
328
|
let value = inputEl.value;
|
|
@@ -474,9 +474,9 @@ const PickerInternal = class {
|
|
|
474
474
|
}
|
|
475
475
|
get el() { return getElement(this); }
|
|
476
476
|
};
|
|
477
|
-
|
|
478
|
-
ios:
|
|
479
|
-
md:
|
|
477
|
+
Picker.style = {
|
|
478
|
+
ios: pickerIosCss,
|
|
479
|
+
md: pickerMdCss
|
|
480
480
|
};
|
|
481
481
|
|
|
482
|
-
export {
|
|
482
|
+
export { Picker as ion_picker };
|