@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
|
@@ -71,19 +71,6 @@
|
|
|
71
71
|
overflow: hidden;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
/**
|
|
75
|
-
* When using the wheel picker to switch
|
|
76
|
-
* between months, sometimes the allowed
|
|
77
|
-
* dates may be filtered. As a result, it
|
|
78
|
-
* is possible to get a layout shift as
|
|
79
|
-
* the picker column will shrink to fit the
|
|
80
|
-
* widest item in the column. Setting a minimum
|
|
81
|
-
* width avoids this layout shifting.
|
|
82
|
-
*/
|
|
83
|
-
ion-picker-column-internal {
|
|
84
|
-
min-width: 26px;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
74
|
:host(.datetime-size-fixed) {
|
|
88
75
|
width: auto;
|
|
89
76
|
height: auto;
|
|
@@ -94,7 +81,7 @@ ion-picker-column-internal {
|
|
|
94
81
|
}
|
|
95
82
|
|
|
96
83
|
/**
|
|
97
|
-
* This ensures that the picker is
|
|
84
|
+
* This ensures that the picker is appropriately
|
|
98
85
|
* sized and never truncates the text.
|
|
99
86
|
*/
|
|
100
87
|
:host(.datetime-size-fixed.datetime-prefer-wheel) {
|
|
@@ -317,23 +304,8 @@ ion-picker-column-internal {
|
|
|
317
304
|
justify-content: space-between;
|
|
318
305
|
}
|
|
319
306
|
|
|
320
|
-
:host .calendar-action-buttons ion-item,
|
|
321
307
|
:host .calendar-action-buttons ion-button {
|
|
322
|
-
--background:
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
:host .calendar-action-buttons ion-item ion-label {
|
|
326
|
-
display: flex;
|
|
327
|
-
align-items: center;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
:host .calendar-action-buttons ion-item ion-icon {
|
|
331
|
-
-webkit-padding-start: 4px;
|
|
332
|
-
padding-inline-start: 4px;
|
|
333
|
-
-webkit-padding-end: 0;
|
|
334
|
-
padding-inline-end: 0;
|
|
335
|
-
padding-top: 0;
|
|
336
|
-
padding-bottom: 0;
|
|
308
|
+
--background: transparent;
|
|
337
309
|
}
|
|
338
310
|
|
|
339
311
|
:host .calendar-days-of-week {
|
|
@@ -515,8 +487,66 @@ ion-picker-column-internal {
|
|
|
515
487
|
position: static;
|
|
516
488
|
}
|
|
517
489
|
|
|
518
|
-
:host(.show-month-and-year) .calendar-action-buttons
|
|
519
|
-
|
|
490
|
+
:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
|
|
491
|
+
color: var(--ion-color-base);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.calendar-month-year {
|
|
495
|
+
min-width: 0;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.calendar-month-year-toggle {
|
|
499
|
+
font-family: inherit;
|
|
500
|
+
font-size: inherit;
|
|
501
|
+
font-style: inherit;
|
|
502
|
+
font-weight: inherit;
|
|
503
|
+
letter-spacing: inherit;
|
|
504
|
+
text-decoration: inherit;
|
|
505
|
+
text-indent: inherit;
|
|
506
|
+
text-overflow: inherit;
|
|
507
|
+
text-transform: inherit;
|
|
508
|
+
text-align: inherit;
|
|
509
|
+
white-space: inherit;
|
|
510
|
+
color: inherit;
|
|
511
|
+
position: relative;
|
|
512
|
+
border: 0;
|
|
513
|
+
outline: none;
|
|
514
|
+
background: transparent;
|
|
515
|
+
cursor: pointer;
|
|
516
|
+
z-index: 1;
|
|
517
|
+
}
|
|
518
|
+
.calendar-month-year-toggle::after {
|
|
519
|
+
left: 0;
|
|
520
|
+
right: 0;
|
|
521
|
+
top: 0;
|
|
522
|
+
bottom: 0;
|
|
523
|
+
position: absolute;
|
|
524
|
+
content: "";
|
|
525
|
+
opacity: 0;
|
|
526
|
+
transition: opacity 15ms linear, background-color 15ms linear;
|
|
527
|
+
z-index: -1;
|
|
528
|
+
}
|
|
529
|
+
.calendar-month-year-toggle.ion-focused::after {
|
|
530
|
+
background: currentColor;
|
|
531
|
+
}
|
|
532
|
+
.calendar-month-year-toggle:disabled {
|
|
533
|
+
opacity: 0.3;
|
|
534
|
+
pointer-events: none;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
.calendar-month-year-toggle ion-icon {
|
|
538
|
+
-webkit-padding-start: 4px;
|
|
539
|
+
padding-inline-start: 4px;
|
|
540
|
+
-webkit-padding-end: 0;
|
|
541
|
+
padding-inline-end: 0;
|
|
542
|
+
padding-top: 0;
|
|
543
|
+
padding-bottom: 0;
|
|
544
|
+
flex-shrink: 0;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.calendar-month-year-toggle #toggle-wrapper {
|
|
548
|
+
display: inline-flex;
|
|
549
|
+
align-items: center;
|
|
520
550
|
}
|
|
521
551
|
|
|
522
552
|
/**
|
|
@@ -605,15 +635,31 @@ ion-picker-column-internal {
|
|
|
605
635
|
margin-top: 10px;
|
|
606
636
|
}
|
|
607
637
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
638
|
+
.calendar-month-year-toggle {
|
|
639
|
+
-webkit-padding-start: 16px;
|
|
640
|
+
padding-inline-start: 16px;
|
|
641
|
+
-webkit-padding-end: 16px;
|
|
642
|
+
padding-inline-end: 16px;
|
|
643
|
+
padding-top: 0px;
|
|
644
|
+
padding-bottom: 0px;
|
|
645
|
+
min-height: 44px;
|
|
612
646
|
font-size: min(1rem, 25.6px);
|
|
613
647
|
font-weight: 600;
|
|
614
648
|
}
|
|
649
|
+
.calendar-month-year-toggle.ion-focused::after {
|
|
650
|
+
opacity: 0.15;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
.calendar-month-year-toggle #toggle-wrapper {
|
|
654
|
+
-webkit-margin-start: 0;
|
|
655
|
+
margin-inline-start: 0;
|
|
656
|
+
-webkit-margin-end: 8px;
|
|
657
|
+
margin-inline-end: 8px;
|
|
658
|
+
margin-top: 10px;
|
|
659
|
+
margin-bottom: 10px;
|
|
660
|
+
}
|
|
615
661
|
|
|
616
|
-
:host .calendar-action-buttons
|
|
662
|
+
:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,
|
|
617
663
|
:host .calendar-action-buttons ion-buttons ion-button {
|
|
618
664
|
color: var(--ion-color-base);
|
|
619
665
|
}
|
|
@@ -977,7 +977,7 @@ export class Datetime {
|
|
|
977
977
|
const renderArray = forcePresentation === 'time-date'
|
|
978
978
|
? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
|
|
979
979
|
: [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
|
|
980
|
-
return h("ion-picker
|
|
980
|
+
return h("ion-picker", null, renderArray);
|
|
981
981
|
}
|
|
982
982
|
renderDatePickerColumns(forcePresentation) {
|
|
983
983
|
return forcePresentation === 'date-time' || forcePresentation === 'time-date'
|
|
@@ -1036,7 +1036,7 @@ export class Datetime {
|
|
|
1036
1036
|
const todayString = workingParts.day !== null
|
|
1037
1037
|
? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
|
|
1038
1038
|
: `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
|
|
1039
|
-
return (h("ion-picker-column
|
|
1039
|
+
return (h("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
|
|
1040
1040
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
1041
1041
|
// Due to a Safari 14 issue we need to destroy
|
|
1042
1042
|
// the scroll listener before we update state
|
|
@@ -1052,7 +1052,7 @@ export class Datetime {
|
|
|
1052
1052
|
// the working parts have been updated.
|
|
1053
1053
|
this.initializeCalendarListener();
|
|
1054
1054
|
ev.stopPropagation();
|
|
1055
|
-
} }));
|
|
1055
|
+
} }, items.map((item) => (h("ion-picker-column-option", { part: item.value === todayString ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: item.value, disabled: item.disabled, value: item.value }, item.text)))));
|
|
1056
1056
|
}
|
|
1057
1057
|
renderIndividualDatePickerColumns(forcePresentation) {
|
|
1058
1058
|
const { workingParts, isDateEnabled } = this;
|
|
@@ -1120,7 +1120,8 @@ export class Datetime {
|
|
|
1120
1120
|
}
|
|
1121
1121
|
const { disabled, workingParts } = this;
|
|
1122
1122
|
const activePart = this.getActivePartsWithFallback();
|
|
1123
|
-
|
|
1123
|
+
const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
|
|
1124
|
+
return (h("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
|
|
1124
1125
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
1125
1126
|
// Due to a Safari 14 issue we need to destroy
|
|
1126
1127
|
// the scroll listener before we update state
|
|
@@ -1134,7 +1135,7 @@ export class Datetime {
|
|
|
1134
1135
|
// the working parts have been updated.
|
|
1135
1136
|
this.initializeCalendarListener();
|
|
1136
1137
|
ev.stopPropagation();
|
|
1137
|
-
} }));
|
|
1138
|
+
} }, days.map((day) => (h("ion-picker-column-option", { part: day.value === pickerColumnValue ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: day.value, disabled: day.disabled, value: day.value }, day.text)))));
|
|
1138
1139
|
}
|
|
1139
1140
|
renderMonthPickerColumn(months) {
|
|
1140
1141
|
if (months.length === 0) {
|
|
@@ -1142,7 +1143,7 @@ export class Datetime {
|
|
|
1142
1143
|
}
|
|
1143
1144
|
const { disabled, workingParts } = this;
|
|
1144
1145
|
const activePart = this.getActivePartsWithFallback();
|
|
1145
|
-
return (h("ion-picker-column
|
|
1146
|
+
return (h("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
|
|
1146
1147
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
1147
1148
|
// Due to a Safari 14 issue we need to destroy
|
|
1148
1149
|
// the scroll listener before we update state
|
|
@@ -1156,7 +1157,7 @@ export class Datetime {
|
|
|
1156
1157
|
// the working parts have been updated.
|
|
1157
1158
|
this.initializeCalendarListener();
|
|
1158
1159
|
ev.stopPropagation();
|
|
1159
|
-
} }));
|
|
1160
|
+
} }, months.map((month) => (h("ion-picker-column-option", { part: month.value === workingParts.month ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: month.value, disabled: month.disabled, value: month.value }, month.text)))));
|
|
1160
1161
|
}
|
|
1161
1162
|
renderYearPickerColumn(years) {
|
|
1162
1163
|
if (years.length === 0) {
|
|
@@ -1164,7 +1165,7 @@ export class Datetime {
|
|
|
1164
1165
|
}
|
|
1165
1166
|
const { disabled, workingParts } = this;
|
|
1166
1167
|
const activePart = this.getActivePartsWithFallback();
|
|
1167
|
-
return (h("ion-picker-column
|
|
1168
|
+
return (h("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
|
|
1168
1169
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
1169
1170
|
// Due to a Safari 14 issue we need to destroy
|
|
1170
1171
|
// the scroll listener before we update state
|
|
@@ -1178,7 +1179,7 @@ export class Datetime {
|
|
|
1178
1179
|
// the working parts have been updated.
|
|
1179
1180
|
this.initializeCalendarListener();
|
|
1180
1181
|
ev.stopPropagation();
|
|
1181
|
-
} }));
|
|
1182
|
+
} }, years.map((year) => (h("ion-picker-column-option", { part: year.value === workingParts.year ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: year.value, disabled: year.disabled, value: year.value }, year.text)))));
|
|
1182
1183
|
}
|
|
1183
1184
|
renderTimePickerColumns(forcePresentation) {
|
|
1184
1185
|
if (['date', 'month', 'month-year', 'year'].includes(forcePresentation)) {
|
|
@@ -1207,22 +1208,22 @@ export class Datetime {
|
|
|
1207
1208
|
if (hoursData.length === 0)
|
|
1208
1209
|
return [];
|
|
1209
1210
|
const activePart = this.getActivePartsWithFallback();
|
|
1210
|
-
return (h("ion-picker-column
|
|
1211
|
+
return (h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
|
|
1211
1212
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
|
|
1212
1213
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
|
|
1213
1214
|
ev.stopPropagation();
|
|
1214
|
-
} }));
|
|
1215
|
+
} }, hoursData.map((hour) => (h("ion-picker-column-option", { part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
|
|
1215
1216
|
}
|
|
1216
1217
|
renderMinutePickerColumn(minutesData) {
|
|
1217
1218
|
const { disabled, workingParts } = this;
|
|
1218
1219
|
if (minutesData.length === 0)
|
|
1219
1220
|
return [];
|
|
1220
1221
|
const activePart = this.getActivePartsWithFallback();
|
|
1221
|
-
return (h("ion-picker-column
|
|
1222
|
+
return (h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
|
|
1222
1223
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
|
|
1223
1224
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
|
|
1224
1225
|
ev.stopPropagation();
|
|
1225
|
-
} }));
|
|
1226
|
+
} }, minutesData.map((minute) => (h("ion-picker-column-option", { part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
|
|
1226
1227
|
}
|
|
1227
1228
|
renderDayPeriodPickerColumn(dayPeriodData) {
|
|
1228
1229
|
const { disabled, workingParts } = this;
|
|
@@ -1231,12 +1232,12 @@ export class Datetime {
|
|
|
1231
1232
|
}
|
|
1232
1233
|
const activePart = this.getActivePartsWithFallback();
|
|
1233
1234
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
1234
|
-
return (h("ion-picker-column
|
|
1235
|
+
return (h("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
|
|
1235
1236
|
const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
|
|
1236
1237
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
|
|
1237
1238
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
|
|
1238
1239
|
ev.stopPropagation();
|
|
1239
|
-
} }));
|
|
1240
|
+
} }, dayPeriodData.map((dayPeriod) => (h("ion-picker-column-option", { part: dayPeriod.value === activePart.ampm ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: dayPeriod.value, disabled: dayPeriod.disabled, value: dayPeriod.value }, dayPeriod.text)))));
|
|
1240
1241
|
}
|
|
1241
1242
|
renderWheelView(forcePresentation) {
|
|
1242
1243
|
const { locale } = this;
|
|
@@ -1257,26 +1258,11 @@ export class Datetime {
|
|
|
1257
1258
|
const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
|
|
1258
1259
|
// don't use the inheritAttributes util because it removes dir from the host, and we still need that
|
|
1259
1260
|
const hostDir = this.el.getAttribute('dir') || undefined;
|
|
1260
|
-
return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
*
|
|
1266
|
-
* Currently there is not a way to set the aria-label on the inner button
|
|
1267
|
-
* on the `ion-item` and have it be reactive to changes. This is a workaround
|
|
1268
|
-
* until we either refactor `ion-item` to a button or Stencil adds a way to
|
|
1269
|
-
* have reactive props for built-in properties, such as `aria-label`.
|
|
1270
|
-
*/
|
|
1271
|
-
const { monthYearToggleItemRef } = this;
|
|
1272
|
-
if (monthYearToggleItemRef) {
|
|
1273
|
-
const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
|
|
1274
|
-
if (btn) {
|
|
1275
|
-
const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
|
|
1276
|
-
btn.setAttribute('aria-label', monthYearAriaLabel);
|
|
1277
|
-
}
|
|
1278
|
-
}
|
|
1279
|
-
} }, h("ion-label", null, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
|
|
1261
|
+
return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("button", { class: {
|
|
1262
|
+
'calendar-month-year-toggle': true,
|
|
1263
|
+
'ion-activatable': true,
|
|
1264
|
+
'ion-focusable': true,
|
|
1265
|
+
}, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, h("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && h("ion-ripple-effect", null))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
|
|
1280
1266
|
return h("div", { class: "day-of-week" }, d);
|
|
1281
1267
|
}))));
|
|
1282
1268
|
}
|
|
@@ -1437,7 +1423,7 @@ export class Datetime {
|
|
|
1437
1423
|
* This will correctly scroll the element position to the correct time value,
|
|
1438
1424
|
* before the popover is fully presented.
|
|
1439
1425
|
*/
|
|
1440
|
-
const cols = ev.target.querySelectorAll('ion-picker-column
|
|
1426
|
+
const cols = ev.target.querySelectorAll('ion-picker-column');
|
|
1441
1427
|
// TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
|
|
1442
1428
|
cols.forEach((col) => col.scrollActiveItemIntoView());
|
|
1443
1429
|
}, style: {
|
|
@@ -2365,3 +2351,5 @@ export class Datetime {
|
|
|
2365
2351
|
}
|
|
2366
2352
|
}
|
|
2367
2353
|
let datetimeIds = 0;
|
|
2354
|
+
const WHEEL_ITEM_PART = 'wheel-item';
|
|
2355
|
+
const WHEEL_ITEM_ACTIVE_PART = `active`;
|
|
@@ -71,19 +71,6 @@
|
|
|
71
71
|
overflow: hidden;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
/**
|
|
75
|
-
* When using the wheel picker to switch
|
|
76
|
-
* between months, sometimes the allowed
|
|
77
|
-
* dates may be filtered. As a result, it
|
|
78
|
-
* is possible to get a layout shift as
|
|
79
|
-
* the picker column will shrink to fit the
|
|
80
|
-
* widest item in the column. Setting a minimum
|
|
81
|
-
* width avoids this layout shifting.
|
|
82
|
-
*/
|
|
83
|
-
ion-picker-column-internal {
|
|
84
|
-
min-width: 26px;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
74
|
:host(.datetime-size-fixed) {
|
|
88
75
|
width: auto;
|
|
89
76
|
height: auto;
|
|
@@ -94,7 +81,7 @@ ion-picker-column-internal {
|
|
|
94
81
|
}
|
|
95
82
|
|
|
96
83
|
/**
|
|
97
|
-
* This ensures that the picker is
|
|
84
|
+
* This ensures that the picker is appropriately
|
|
98
85
|
* sized and never truncates the text.
|
|
99
86
|
*/
|
|
100
87
|
:host(.datetime-size-fixed.datetime-prefer-wheel) {
|
|
@@ -317,23 +304,8 @@ ion-picker-column-internal {
|
|
|
317
304
|
justify-content: space-between;
|
|
318
305
|
}
|
|
319
306
|
|
|
320
|
-
:host .calendar-action-buttons ion-item,
|
|
321
307
|
:host .calendar-action-buttons ion-button {
|
|
322
|
-
--background:
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
:host .calendar-action-buttons ion-item ion-label {
|
|
326
|
-
display: flex;
|
|
327
|
-
align-items: center;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
:host .calendar-action-buttons ion-item ion-icon {
|
|
331
|
-
-webkit-padding-start: 4px;
|
|
332
|
-
padding-inline-start: 4px;
|
|
333
|
-
-webkit-padding-end: 0;
|
|
334
|
-
padding-inline-end: 0;
|
|
335
|
-
padding-top: 0;
|
|
336
|
-
padding-bottom: 0;
|
|
308
|
+
--background: transparent;
|
|
337
309
|
}
|
|
338
310
|
|
|
339
311
|
:host .calendar-days-of-week {
|
|
@@ -515,8 +487,66 @@ ion-picker-column-internal {
|
|
|
515
487
|
position: static;
|
|
516
488
|
}
|
|
517
489
|
|
|
518
|
-
:host(.show-month-and-year) .calendar-action-buttons
|
|
519
|
-
|
|
490
|
+
:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
|
|
491
|
+
color: var(--ion-color-base);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.calendar-month-year {
|
|
495
|
+
min-width: 0;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.calendar-month-year-toggle {
|
|
499
|
+
font-family: inherit;
|
|
500
|
+
font-size: inherit;
|
|
501
|
+
font-style: inherit;
|
|
502
|
+
font-weight: inherit;
|
|
503
|
+
letter-spacing: inherit;
|
|
504
|
+
text-decoration: inherit;
|
|
505
|
+
text-indent: inherit;
|
|
506
|
+
text-overflow: inherit;
|
|
507
|
+
text-transform: inherit;
|
|
508
|
+
text-align: inherit;
|
|
509
|
+
white-space: inherit;
|
|
510
|
+
color: inherit;
|
|
511
|
+
position: relative;
|
|
512
|
+
border: 0;
|
|
513
|
+
outline: none;
|
|
514
|
+
background: transparent;
|
|
515
|
+
cursor: pointer;
|
|
516
|
+
z-index: 1;
|
|
517
|
+
}
|
|
518
|
+
.calendar-month-year-toggle::after {
|
|
519
|
+
left: 0;
|
|
520
|
+
right: 0;
|
|
521
|
+
top: 0;
|
|
522
|
+
bottom: 0;
|
|
523
|
+
position: absolute;
|
|
524
|
+
content: "";
|
|
525
|
+
opacity: 0;
|
|
526
|
+
transition: opacity 15ms linear, background-color 15ms linear;
|
|
527
|
+
z-index: -1;
|
|
528
|
+
}
|
|
529
|
+
.calendar-month-year-toggle.ion-focused::after {
|
|
530
|
+
background: currentColor;
|
|
531
|
+
}
|
|
532
|
+
.calendar-month-year-toggle:disabled {
|
|
533
|
+
opacity: 0.3;
|
|
534
|
+
pointer-events: none;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
.calendar-month-year-toggle ion-icon {
|
|
538
|
+
-webkit-padding-start: 4px;
|
|
539
|
+
padding-inline-start: 4px;
|
|
540
|
+
-webkit-padding-end: 0;
|
|
541
|
+
padding-inline-end: 0;
|
|
542
|
+
padding-top: 0;
|
|
543
|
+
padding-bottom: 0;
|
|
544
|
+
flex-shrink: 0;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.calendar-month-year-toggle #toggle-wrapper {
|
|
548
|
+
display: inline-flex;
|
|
549
|
+
align-items: center;
|
|
520
550
|
}
|
|
521
551
|
|
|
522
552
|
/**
|
|
@@ -600,15 +630,36 @@ ion-picker-column-internal {
|
|
|
600
630
|
font-size: 2.125rem;
|
|
601
631
|
}
|
|
602
632
|
|
|
603
|
-
:host .datetime-calendar .calendar-action-buttons ion-item {
|
|
604
|
-
--padding-start: 20px;
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
:host .calendar-action-buttons ion-item,
|
|
608
633
|
:host .calendar-action-buttons ion-button {
|
|
609
634
|
--color: var(--ion-color-step-650, #595959);
|
|
610
635
|
}
|
|
611
636
|
|
|
637
|
+
.calendar-month-year-toggle {
|
|
638
|
+
-webkit-padding-start: 20px;
|
|
639
|
+
padding-inline-start: 20px;
|
|
640
|
+
-webkit-padding-end: 16px;
|
|
641
|
+
padding-inline-end: 16px;
|
|
642
|
+
padding-top: 12px;
|
|
643
|
+
padding-bottom: 12px;
|
|
644
|
+
min-height: 48px;
|
|
645
|
+
background: transparent;
|
|
646
|
+
color: var(--ion-color-step-650, #595959);
|
|
647
|
+
z-index: 1;
|
|
648
|
+
}
|
|
649
|
+
.calendar-month-year-toggle.ion-focused::after {
|
|
650
|
+
opacity: 0.04;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
.calendar-month-year-toggle ion-ripple-effect {
|
|
654
|
+
color: currentColor;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
@media (any-hover: hover) {
|
|
658
|
+
.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after {
|
|
659
|
+
background: currentColor;
|
|
660
|
+
opacity: 0.04;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
612
663
|
:host .calendar-days-of-week {
|
|
613
664
|
-webkit-padding-start: 10px;
|
|
614
665
|
padding-inline-start: 10px;
|
|
@@ -38,7 +38,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
38
38
|
`, config);
|
|
39
39
|
const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
|
|
40
40
|
const datetime = page.locator('ion-datetime');
|
|
41
|
-
const monthYearButton = page.locator('.calendar-month-year
|
|
41
|
+
const monthYearButton = page.locator('.calendar-month-year-toggle');
|
|
42
42
|
const prevButton = page.locator('.calendar-next-prev ion-button:nth-child(1)');
|
|
43
43
|
const nextButton = page.locator('.calendar-next-prev ion-button:nth-child(2)');
|
|
44
44
|
await page.keyboard.press(tabKey);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { newSpecPage } from "@stencil/core/testing";
|
|
5
|
-
import { Item } from "../../../item/item";
|
|
6
5
|
import { Datetime } from "../../datetime";
|
|
7
6
|
describe('datetime', () => {
|
|
8
7
|
beforeEach(() => {
|
|
@@ -18,25 +17,23 @@ describe('datetime', () => {
|
|
|
18
17
|
let page;
|
|
19
18
|
beforeEach(async () => {
|
|
20
19
|
page = await newSpecPage({
|
|
21
|
-
components: [Datetime
|
|
20
|
+
components: [Datetime],
|
|
22
21
|
html: `<ion-datetime></ion-datetime>`,
|
|
23
22
|
});
|
|
24
23
|
});
|
|
25
24
|
it('should have aria-label "Show year picker" when collapsed', async () => {
|
|
26
25
|
const datetime = page.body.querySelector('ion-datetime');
|
|
27
|
-
const
|
|
28
|
-
const monthYearToggleBtn = item.shadowRoot.querySelector('button');
|
|
26
|
+
const monthYearToggleBtn = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
|
|
29
27
|
const ariaLabel = monthYearToggleBtn.getAttribute('aria-label');
|
|
30
28
|
expect(ariaLabel).toContain('Show year picker');
|
|
31
29
|
});
|
|
32
30
|
it('should have aria-label "Hide year picker" when expanded', async () => {
|
|
33
31
|
const datetime = page.body.querySelector('ion-datetime');
|
|
34
|
-
const
|
|
35
|
-
|
|
32
|
+
const monthYearToggleBtn = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
|
|
33
|
+
monthYearToggleBtn.click();
|
|
36
34
|
await page.waitForChanges();
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const ariaLabel = monthYearToggleBtn.getAttribute('aria-label');
|
|
35
|
+
const monthYearToggleBtnAfter = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
|
|
36
|
+
const ariaLabel = monthYearToggleBtnAfter.getAttribute('aria-label');
|
|
40
37
|
expect(ariaLabel).toContain('Hide year picker');
|
|
41
38
|
});
|
|
42
39
|
});
|
|
@@ -372,4 +372,14 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
372
372
|
await expect(datetime).toHaveScreenshot(screenshot(`datetime-focus-calendar-day`));
|
|
373
373
|
});
|
|
374
374
|
});
|
|
375
|
+
test.describe(title('datetime: calendar month toggle'), () => {
|
|
376
|
+
test('should have focus styles', async ({ page }) => {
|
|
377
|
+
await page.setContent('<ion-datetime value="2021-01-01"></ion-datetime>', config);
|
|
378
|
+
const datetime = page.locator('ion-datetime');
|
|
379
|
+
await page.waitForSelector('.datetime-ready');
|
|
380
|
+
const monthYearToggle = datetime.locator('.calendar-month-year-toggle');
|
|
381
|
+
monthYearToggle.evaluate((el) => el.classList.add('ion-focused'));
|
|
382
|
+
await expect(datetime).toHaveScreenshot(screenshot(`date-month-toggle-focused`));
|
|
383
|
+
});
|
|
384
|
+
});
|
|
375
385
|
});
|
|
@@ -13,7 +13,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
13
13
|
});
|
|
14
14
|
test('should switch the calendar header when moving to a month with a different number of days', async ({ page, }) => {
|
|
15
15
|
const monthYearToggle = page.locator('ion-datetime .calendar-month-year');
|
|
16
|
-
const monthColumnItems = page.locator('ion-datetime .month-column
|
|
16
|
+
const monthColumnItems = page.locator('ion-datetime .month-column ion-picker-column-option');
|
|
17
17
|
await expect(monthYearToggle).toContainText('January 2022');
|
|
18
18
|
await monthYearToggle.click();
|
|
19
19
|
await page.waitForChanges();
|
|
@@ -24,7 +24,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
|
24
24
|
});
|
|
25
25
|
test('should adjust the selected day when moving to a month with a different number of days', async ({ page }) => {
|
|
26
26
|
const monthYearToggle = page.locator('ion-datetime .calendar-month-year');
|
|
27
|
-
const monthColumnItems = page.locator('ion-datetime .month-column
|
|
27
|
+
const monthColumnItems = page.locator('ion-datetime .month-column ion-picker-column-option');
|
|
28
28
|
const datetime = page.locator('ion-datetime');
|
|
29
29
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
30
30
|
await monthYearToggle.click();
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
import { h } from "@stencil/core";
|
|
5
5
|
import { newSpecPage } from "@stencil/core/testing";
|
|
6
6
|
import { Datetime } from "../../../datetime/datetime";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { PickerColumn } from "../../../picker-column/picker-column";
|
|
8
|
+
import { Picker } from "../../../picker/picker";
|
|
9
9
|
describe('ion-datetime disabled', () => {
|
|
10
10
|
beforeEach(() => {
|
|
11
11
|
// IntersectionObserver isn't available in test environment
|
|
@@ -19,12 +19,12 @@ describe('ion-datetime disabled', () => {
|
|
|
19
19
|
});
|
|
20
20
|
it('picker should be disabled in prefer wheel mode', async () => {
|
|
21
21
|
const page = await newSpecPage({
|
|
22
|
-
components: [Datetime,
|
|
22
|
+
components: [Datetime, PickerColumn, Picker],
|
|
23
23
|
template: () => (h("ion-datetime", { id: "inline-datetime-wheel", disabled: true, "prefer-wheel": true, value: "2022-04-21T00:00:00" })),
|
|
24
24
|
});
|
|
25
25
|
await page.waitForChanges();
|
|
26
26
|
const datetime = page.body.querySelector('ion-datetime');
|
|
27
|
-
const columns = datetime.shadowRoot.querySelectorAll('ion-picker-column
|
|
27
|
+
const columns = datetime.shadowRoot.querySelectorAll('ion-picker-column');
|
|
28
28
|
await expect(columns.length).toEqual(4);
|
|
29
29
|
columns.forEach((column) => {
|
|
30
30
|
expect(column.disabled).toBe(true);
|
|
@@ -85,10 +85,10 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
85
85
|
});
|
|
86
86
|
test('should correctly localize year column data', async ({ page }) => {
|
|
87
87
|
await page.setContent(`
|
|
88
|
-
<ion-datetime prefer-wheel="true" locale="ar-EG" presentation="date" value="2022-01-01"></ion-datetime>
|
|
88
|
+
<ion-datetime prefer-wheel="true" locale="ar-EG" presentation="date" value="2022-01-01" max="2022" min="2022"></ion-datetime>
|
|
89
89
|
`, config);
|
|
90
90
|
await page.waitForSelector('.datetime-ready');
|
|
91
|
-
const datetimeYear = page.locator('ion-datetime .year-column
|
|
91
|
+
const datetimeYear = page.locator('ion-datetime .year-column ion-picker-column-option').nth(0);
|
|
92
92
|
await expect(datetimeYear).toHaveText('٢٠٢٢');
|
|
93
93
|
});
|
|
94
94
|
});
|