@ionic/core 7.6.7-dev.11706551494.19e19037 → 7.6.7-dev.11706551842.118ce6e0
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/action-sheet.js +1 -1
- package/components/alert.js +2 -2
- package/components/backdrop.js +0 -12
- package/components/button.js +2 -2
- package/components/checkbox.js +2 -2
- package/components/data.js +1 -1
- package/components/gesture-controller.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-badge.js +2 -2
- package/components/ion-content.js +3 -4
- package/components/ion-datetime.js +40 -64
- package/components/ion-fab-button.js +2 -2
- package/components/ion-input.js +2 -2
- package/components/ion-item-option.js +2 -2
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu.js +21 -15
- package/components/ion-nav.js +7 -3
- 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-progress-bar.js +2 -2
- package/components/ion-range.js +2 -2
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-select.js +2 -2
- package/components/ion-split-pane.js +26 -15
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-textarea.js +2 -2
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +2 -2
- package/components/item.js +2 -8
- package/components/label.js +1 -1
- package/components/overlays.js +11 -4
- package/components/picker-column-option.js +122 -0
- package/components/picker-column.js +351 -322
- package/components/picker-column2.js +379 -0
- package/components/{picker-internal.js → picker.js} +29 -22
- package/components/radio.js +2 -2
- package/components/select-popover.js +1 -1
- package/css/core.css +101 -34
- package/css/core.css.map +1 -1
- package/css/global.bundle.css +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/themes/dark.always.css +122 -0
- package/css/themes/dark.always.css.map +1 -0
- package/css/themes/dark.class.css +122 -0
- package/css/themes/dark.class.css.map +1 -0
- package/css/themes/dark.css +3 -0
- package/css/themes/dark.css.map +1 -0
- package/css/themes/dark.system.css +124 -0
- package/css/themes/dark.system.css.map +1 -0
- package/css/typography.css +1 -1
- package/dist/cjs/{button-active-85665616.js → button-active-d432e262.js} +1 -1
- package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
- package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
- package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
- package/dist/cjs/ion-alert.cjs.entry.js +6 -6
- package/dist/cjs/ion-app_8.cjs.entry.js +4 -5
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +37 -57
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -8
- package/dist/cjs/ion-loading.cjs.entry.js +3 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +25 -20
- package/dist/cjs/ion-modal.cjs.entry.js +3 -3
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -3
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
- package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
- package/dist/cjs/ion-popover.cjs.entry.js +2 -1
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +5 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +24 -14
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +5 -5
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-8285b485.js → overlays-3afa911d.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/action-sheet/action-sheet.ios.css +3 -3
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
- package/dist/collection/components/alert/alert.ios.css +6 -6
- package/dist/collection/components/alert/alert.md.css +6 -6
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
- package/dist/collection/components/back-button/back-button.ios.css +1 -1
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
- package/dist/collection/components/backdrop/backdrop.js +0 -12
- package/dist/collection/components/badge/badge.ios.css +1 -1
- package/dist/collection/components/badge/badge.md.css +1 -1
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
- package/dist/collection/components/button/button.ios.css +11 -11
- package/dist/collection/components/button/button.md.css +9 -9
- package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
- package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
- package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
- package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
- package/dist/collection/components/checkbox/checkbox.md.css +2 -2
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
- package/dist/collection/components/content/content.css +0 -4
- package/dist/collection/components/content/content.js +2 -3
- package/dist/collection/components/datetime/datetime.ios.css +93 -40
- package/dist/collection/components/datetime/datetime.js +24 -36
- package/dist/collection/components/datetime/datetime.md.css +96 -38
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +22 -12
- package/dist/collection/components/datetime/test/datetime.e2e.js +3 -3
- package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +17 -17
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/position/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +75 -73
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +8 -8
- package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +4 -4
- package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +19 -16
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +14 -14
- package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +2 -2
- package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +6 -6
- package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
- package/dist/collection/components/fab-button/fab-button.md.css +4 -4
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
- package/dist/collection/components/header/test/condense/header.e2e.js +2 -2
- package/dist/collection/components/input/input.ios.css +3 -3
- package/dist/collection/components/input/input.md.css +3 -3
- package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
- package/dist/collection/components/item/item.ios.css +42 -5
- package/dist/collection/components/item/item.js +0 -7
- package/dist/collection/components/item/item.md.css +43 -6
- package/dist/collection/components/item-option/item-option.ios.css +2 -2
- package/dist/collection/components/item-option/item-option.md.css +1 -1
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
- package/dist/collection/components/label/label.md.css +1 -1
- package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
- package/dist/collection/components/loading/loading.md.css +1 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
- package/dist/collection/components/menu/menu.ios.css +64 -3
- package/dist/collection/components/menu/menu.js +19 -13
- package/dist/collection/components/menu/menu.md.css +64 -3
- package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
- package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
- package/dist/collection/components/nav/nav.js +22 -2
- package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
- package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
- package/dist/collection/components/picker/picker.ios.css +112 -211
- package/dist/collection/components/picker/picker.js +488 -738
- package/dist/collection/components/picker/picker.md.css +108 -198
- package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
- package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
- package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
- package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
- package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
- package/dist/collection/components/picker-column/picker-column.js +499 -335
- package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
- package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
- package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
- package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
- package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
- package/dist/collection/components/picker-legacy/picker.js +811 -0
- package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
- package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
- package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +1 -1
- 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/progress-bar/progress-bar.ios.css +2 -2
- package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
- package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
- package/dist/collection/components/radio/radio.ios.css +2 -2
- package/dist/collection/components/radio/radio.md.css +2 -2
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
- package/dist/collection/components/range/range.ios.css +1 -1
- package/dist/collection/components/range/range.md.css +3 -3
- package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
- package/dist/collection/components/refresher/refresher.md.css +2 -2
- package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
- package/dist/collection/components/refresher/test/test.utils.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
- package/dist/collection/components/router-link/router-link.css +1 -1
- package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +1 -1
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
- package/dist/collection/components/segment-button/segment-button.md.css +2 -2
- package/dist/collection/components/select/select.ios.css +3 -3
- package/dist/collection/components/select/select.md.css +3 -3
- package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
- package/dist/collection/components/select-popover/select-popover.md.css +4 -4
- package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
- package/dist/collection/components/split-pane/split-pane.ios.css +2 -54
- package/dist/collection/components/split-pane/split-pane.js +46 -12
- package/dist/collection/components/split-pane/split-pane.md.css +2 -54
- package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
- package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
- package/dist/collection/components/textarea/textarea.ios.css +3 -3
- package/dist/collection/components/textarea/textarea.md.css +3 -3
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +56 -24
- package/dist/collection/components/toast/toast.ios.css +1 -1
- package/dist/collection/components/toast/toast.md.css +2 -2
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
- package/dist/collection/components/toggle/toggle.ios.css +2 -2
- package/dist/collection/components/toggle/toggle.md.css +2 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
- package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
- 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/collection/utils/test/playwright/generator.js +1 -0
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
- package/dist/docs.json +500 -41
- package/dist/esm/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
- package/dist/esm/{data-775093f5.js → data-6a31d701.js} +1 -1
- package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
- package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
- package/dist/esm/index.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +5 -5
- package/dist/esm/ion-alert.entry.js +6 -6
- package/dist/esm/ion-app_8.entry.js +4 -5
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-backdrop.entry.js +0 -12
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +36 -56
- package/dist/esm/ion-fab_3.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +2 -2
- package/dist/esm/ion-item-option_3.entry.js +3 -3
- package/dist/esm/ion-item_8.entry.js +3 -8
- package/dist/esm/ion-loading.entry.js +3 -2
- package/dist/esm/ion-menu_3.entry.js +25 -20
- package/dist/esm/ion-modal.entry.js +3 -3
- package/dist/esm/ion-nav_2.entry.js +6 -3
- package/dist/esm/ion-picker-column-option.entry.js +100 -0
- package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
- package/dist/esm/ion-popover.entry.js +2 -1
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +5 -5
- package/dist/esm/ion-reorder_2.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +5 -4
- package/dist/esm/ion-split-pane.entry.js +24 -14
- package/dist/esm/ion-tab-bar_2.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +5 -5
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-bb824d56.js → overlays-8b24f0d5.js} +11 -4
- package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
- package/dist/esm-es5/{button-active-b62776db.js → button-active-3bcbd115.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-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-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-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.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-8b24f0d5.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-249633a4.entry.js → p-0055506a.entry.js} +1 -1
- package/dist/ionic/p-0708a9c1.system.js +4 -0
- package/dist/ionic/p-09890dd9.entry.js +4 -0
- package/dist/ionic/{p-c1c57873.system.entry.js → p-0a0a84ce.system.entry.js} +1 -1
- package/dist/ionic/p-0d3c5eaa.system.entry.js +4 -0
- package/dist/ionic/p-10607f89.entry.js +4 -0
- package/dist/ionic/{p-d2707f9d.system.js → p-114ea79c.system.js} +1 -1
- package/dist/ionic/{p-41040a92.system.entry.js → p-14311a1d.system.entry.js} +1 -1
- package/dist/ionic/p-1a5f0313.system.js +1 -1
- package/dist/ionic/{p-c3bfe92d.entry.js → p-1d1ce54e.entry.js} +1 -1
- package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
- package/dist/ionic/p-26976bfc.system.entry.js +4 -0
- package/dist/ionic/{p-8084e9cb.entry.js → p-28525772.entry.js} +1 -1
- package/dist/ionic/p-2c02fb1c.system.entry.js +4 -0
- package/dist/ionic/{p-928e945d.system.entry.js → p-2fda36b6.system.entry.js} +1 -1
- package/dist/ionic/p-3065cecc.entry.js +4 -0
- package/dist/ionic/{p-b43cf55f.entry.js → p-34f05cec.entry.js} +1 -1
- package/dist/ionic/p-381ca6f8.system.entry.js +4 -0
- package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
- package/dist/ionic/{p-3b83e483.system.entry.js → p-3f3ae637.system.entry.js} +2 -2
- package/dist/ionic/{p-d6beb1c9.system.entry.js → p-41dcd6c0.system.entry.js} +1 -1
- package/dist/ionic/{p-54c92c77.entry.js → p-42d5f6ae.entry.js} +1 -1
- package/dist/ionic/p-4a13a07c.system.entry.js +4 -0
- package/dist/ionic/{p-bc6d16ca.entry.js → p-4b94c354.entry.js} +1 -1
- package/dist/ionic/p-51abefb7.system.js +4 -0
- package/dist/ionic/{p-e150f8fc.entry.js → p-598bd8e2.entry.js} +1 -1
- package/dist/ionic/p-5d22095a.entry.js +4 -0
- package/dist/ionic/{p-e814f9c0.entry.js → p-67b167bc.entry.js} +1 -1
- package/dist/ionic/p-67c1996d.entry.js +4 -0
- package/dist/ionic/p-6d42a37b.entry.js +4 -0
- package/dist/ionic/p-6db68be9.system.entry.js +4 -0
- package/dist/ionic/p-71f30cfc.system.entry.js +4 -0
- package/dist/ionic/{p-eb210b21.system.entry.js → p-75017f39.system.entry.js} +1 -1
- package/dist/ionic/{p-10c34f0a.system.entry.js → p-7a1ef06a.system.entry.js} +1 -1
- package/dist/ionic/{p-b09c8228.entry.js → p-7a2c6bb5.entry.js} +1 -1
- package/dist/ionic/p-7a343dca.system.entry.js +4 -0
- package/dist/ionic/p-7a3e1f37.system.entry.js +4 -0
- package/dist/ionic/{p-4dc3bc8b.entry.js → p-7acc89e0.entry.js} +1 -1
- package/dist/ionic/p-7ae141f1.entry.js +4 -0
- package/dist/ionic/p-7e8ef0bb.system.entry.js +4 -0
- package/dist/ionic/{p-5628d04e.entry.js → p-870453fd.entry.js} +1 -1
- package/dist/ionic/{p-cdce5ba3.system.entry.js → p-8a1d33e3.system.entry.js} +1 -1
- package/dist/ionic/{p-1f7fc88d.entry.js → p-8aaade76.entry.js} +1 -1
- package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
- package/dist/ionic/p-94265b3d.entry.js +4 -0
- package/dist/ionic/{p-35e1a80f.system.entry.js → p-943caced.system.entry.js} +1 -1
- package/dist/ionic/p-95d8071f.entry.js +4 -0
- package/dist/ionic/{p-7bae84aa.entry.js → p-9928b546.entry.js} +1 -1
- package/dist/ionic/{p-6b9eee40.system.entry.js → p-9a9deb33.system.entry.js} +1 -1
- package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
- package/dist/ionic/p-9c9eb63f.system.entry.js +4 -0
- package/dist/ionic/{p-db798370.system.entry.js → p-9cbfb298.system.entry.js} +1 -1
- package/dist/ionic/{p-0d2b6901.entry.js → p-9cd05453.entry.js} +1 -1
- package/dist/ionic/p-a01d6784.system.entry.js +4 -0
- package/dist/ionic/{p-c10cc51e.system.entry.js → p-a068b1c7.system.entry.js} +2 -2
- package/dist/ionic/{p-2c3842e8.system.entry.js → p-a11e45fe.system.entry.js} +1 -1
- package/dist/ionic/p-a259fa5f.system.entry.js +4 -0
- package/dist/ionic/p-a60a1ce5.js +4 -0
- package/dist/ionic/{p-436bd99a.entry.js → p-a72be676.entry.js} +1 -1
- package/dist/ionic/p-acbb36a1.entry.js +4 -0
- package/dist/ionic/{p-f865bc9a.entry.js → p-adba40e6.entry.js} +1 -1
- package/dist/ionic/{p-1052ef2b.entry.js → p-ae8747aa.entry.js} +1 -1
- package/dist/ionic/{p-525b6ac4.system.entry.js → p-bad61026.system.entry.js} +1 -1
- package/dist/ionic/p-c33d312f.js +4 -0
- package/dist/ionic/{p-688a36c7.entry.js → p-c7bdd72f.entry.js} +1 -1
- package/dist/ionic/{p-df62accd.entry.js → p-c9028fdc.entry.js} +1 -1
- package/dist/ionic/p-c9b8f9e5.system.entry.js +4 -0
- package/dist/ionic/{p-5c2da581.system.entry.js → p-cb0cfc39.system.entry.js} +1 -1
- package/dist/ionic/{p-49c52149.system.entry.js → p-cb304e5f.system.entry.js} +1 -1
- package/dist/ionic/{p-7510e462.entry.js → p-d545e325.entry.js} +1 -1
- package/dist/ionic/p-d6674fed.entry.js +4 -0
- package/dist/ionic/{p-8f1ebb7d.system.js → p-df75bd2c.system.js} +1 -1
- package/dist/ionic/p-dfd21411.system.entry.js +4 -0
- package/dist/ionic/p-e22bf111.js +4 -0
- package/dist/ionic/p-e652d9e4.entry.js +4 -0
- package/dist/ionic/p-ea4b254e.entry.js +4 -0
- package/dist/ionic/p-ea9a8424.system.entry.js +4 -0
- package/dist/ionic/p-eaa4e76f.system.entry.js +4 -0
- package/dist/ionic/{p-dc1d883c.system.entry.js → p-ee1214e0.system.entry.js} +1 -1
- package/dist/ionic/{p-41aa2662.entry.js → p-eeb87a49.entry.js} +1 -1
- package/dist/ionic/{p-b6f6f00e.entry.js → p-efa1c7f0.entry.js} +1 -1
- package/dist/ionic/{p-3dbaaa5b.system.entry.js → p-f2ed3039.system.entry.js} +1 -1
- package/dist/ionic/{p-1a0bf247.system.entry.js → p-fc58a772.system.entry.js} +1 -1
- package/dist/ionic/p-fdc3ff96.entry.js +4 -0
- package/dist/types/components/backdrop/backdrop.d.ts +0 -3
- package/dist/types/components/datetime/datetime.d.ts +0 -1
- package/dist/types/components/datetime/utils/data.d.ts +11 -7
- package/dist/types/components/item/item.d.ts +0 -1
- package/dist/types/components/menu/menu.d.ts +12 -2
- package/dist/types/components/nav/nav.d.ts +4 -1
- package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
- package/dist/types/components/picker/picker.d.ts +75 -129
- package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
- package/dist/types/components/picker-column/picker-column.d.ts +99 -39
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
- package/dist/types/components/picker-legacy/picker.d.ts +158 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components/split-pane/split-pane.d.ts +14 -2
- package/dist/types/components.d.ts +159 -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 +1462 -1350
- package/package.json +2 -2
- 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/item/test/item.spec.js +0 -20
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
- 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 -560
- 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-bb824d56.js +0 -4
- package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
- package/dist/ionic/p-024e2739.entry.js +0 -4
- package/dist/ionic/p-06128c8c.entry.js +0 -4
- package/dist/ionic/p-06f72943.system.entry.js +0 -4
- package/dist/ionic/p-35ce400e.system.js +0 -4
- package/dist/ionic/p-3de38800.system.entry.js +0 -4
- package/dist/ionic/p-5aecd304.system.entry.js +0 -4
- package/dist/ionic/p-5f698182.entry.js +0 -4
- package/dist/ionic/p-61bf9f6f.system.entry.js +0 -4
- package/dist/ionic/p-6899d5af.entry.js +0 -4
- package/dist/ionic/p-6a6477b2.js +0 -4
- package/dist/ionic/p-6e165986.system.entry.js +0 -4
- package/dist/ionic/p-719ad110.system.entry.js +0 -4
- package/dist/ionic/p-73547cf9.entry.js +0 -4
- package/dist/ionic/p-7a02dd61.system.entry.js +0 -4
- package/dist/ionic/p-7ffe791a.system.js +0 -4
- package/dist/ionic/p-80ddd0c1.entry.js +0 -4
- package/dist/ionic/p-87e10168.system.entry.js +0 -4
- package/dist/ionic/p-89c28901.system.entry.js +0 -4
- package/dist/ionic/p-8bad1486.system.entry.js +0 -4
- package/dist/ionic/p-90000ff6.js +0 -4
- package/dist/ionic/p-9cf0846d.system.entry.js +0 -4
- package/dist/ionic/p-a0953474.entry.js +0 -4
- package/dist/ionic/p-a2d75455.entry.js +0 -4
- package/dist/ionic/p-a706cf11.system.entry.js +0 -4
- package/dist/ionic/p-aca77953.entry.js +0 -4
- package/dist/ionic/p-afafbba0.entry.js +0 -4
- package/dist/ionic/p-ba4890eb.system.entry.js +0 -4
- package/dist/ionic/p-beeceaf5.system.entry.js +0 -4
- package/dist/ionic/p-c4177035.entry.js +0 -4
- package/dist/ionic/p-c48a9ef3.system.entry.js +0 -4
- package/dist/ionic/p-cb301b9a.entry.js +0 -4
- package/dist/ionic/p-eb80ca40.entry.js +0 -4
- package/dist/ionic/p-f48a49ae.system.entry.js +0 -4
- package/dist/ionic/p-fd1a0431.js +0 -4
- package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
- package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
- /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
- /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
- /package/dist/esm-es5/{data-775093f5.js → data-6a31d701.js} +0 -0
- /package/dist/ionic/{p-87bb3735.system.js → p-7ff4359e.system.js} +0 -0
- /package/dist/ionic/{p-18cae04f.js → p-a64accf5.js} +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
|
@@ -7,20 +7,20 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
7
7
|
* This behavior does not vary across modes/directions.
|
|
8
8
|
*/
|
|
9
9
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
10
|
-
test.describe(title('picker-column
|
|
10
|
+
test.describe(title('picker-column'), () => {
|
|
11
11
|
test.beforeEach(async ({ page }) => {
|
|
12
|
-
await page.goto('/src/components/picker-column
|
|
12
|
+
await page.goto('/src/components/picker-column/test/basic', config);
|
|
13
13
|
});
|
|
14
14
|
test('should render a picker item for each item', async ({ page }) => {
|
|
15
|
-
const columns = page.locator('ion-picker-column
|
|
15
|
+
const columns = page.locator('ion-picker-column ion-picker-column-option');
|
|
16
16
|
await expect(columns).toHaveCount(24);
|
|
17
17
|
});
|
|
18
18
|
test('should render 6 empty picker items', async ({ page }) => {
|
|
19
|
-
const columns = page.locator('ion-picker-column
|
|
19
|
+
const columns = page.locator('ion-picker-column .picker-item-empty');
|
|
20
20
|
await expect(columns).toHaveCount(6);
|
|
21
21
|
});
|
|
22
22
|
test('should not have an active item when value is not set', async ({ page }) => {
|
|
23
|
-
const activeColumn = page.locator('ion-picker-column-
|
|
23
|
+
const activeColumn = page.locator('ion-picker-column ion-picker-column-option.option-active');
|
|
24
24
|
await expect(activeColumn).toHaveCount(0);
|
|
25
25
|
});
|
|
26
26
|
test('should have an active item when value is set', async ({ page }) => {
|
|
@@ -28,7 +28,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
28
28
|
el.value = '12';
|
|
29
29
|
});
|
|
30
30
|
await page.waitForChanges();
|
|
31
|
-
const activeColumn = page.locator('ion-picker-column-
|
|
31
|
+
const activeColumn = page.locator('ion-picker-column ion-picker-column-option.option-active');
|
|
32
32
|
expect(activeColumn).not.toBeNull();
|
|
33
33
|
});
|
|
34
34
|
// TODO FW-3616
|
|
@@ -38,8 +38,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
38
38
|
el.scrollTop = 801;
|
|
39
39
|
});
|
|
40
40
|
await page.waitForChanges();
|
|
41
|
-
const activeColumn = page.locator('ion-picker-column-
|
|
42
|
-
|
|
41
|
+
const activeColumn = page.locator('ion-picker-column ion-picker-column-option.option-active');
|
|
42
|
+
await expect(activeColumn).toHaveJSProperty('value', 23);
|
|
43
43
|
});
|
|
44
44
|
test('should not emit ionChange when the value is modified externally', async ({ page, skip }) => {
|
|
45
45
|
skip.browser('firefox', 'https://bugzilla.mozilla.org/show_bug.cgi?id=1766890');
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
5
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
|
+
/**
|
|
7
|
+
* This behavior does not vary across modes/directions.
|
|
8
|
+
*/
|
|
9
|
+
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
10
|
+
test.describe(title('picker-column: disabled items'), () => {
|
|
11
|
+
test('disabled picker item should not be considered active', async ({ page }) => {
|
|
12
|
+
await page.setContent(`
|
|
13
|
+
<ion-picker>
|
|
14
|
+
<ion-picker-column value="b">
|
|
15
|
+
<ion-picker-column-option value="a">A</ion-picker-column-option>
|
|
16
|
+
<ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
|
|
17
|
+
<ion-picker-column-option value="c">C</ion-picker-column-option>
|
|
18
|
+
</ion-picker-column>
|
|
19
|
+
</ion-picker>
|
|
20
|
+
`, config);
|
|
21
|
+
const disabledItem = page.locator('ion-picker-column-option').nth(1);
|
|
22
|
+
await expect(disabledItem).not.toHaveClass(/option-active/);
|
|
23
|
+
});
|
|
24
|
+
test('setting the value to a disabled item should not cause that item to be active', async ({ page }) => {
|
|
25
|
+
await page.setContent(`
|
|
26
|
+
<ion-picker>
|
|
27
|
+
<ion-picker-column>
|
|
28
|
+
<ion-picker-column-option value="a">A</ion-picker-column-option>
|
|
29
|
+
<ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
|
|
30
|
+
<ion-picker-column-option value="c">C</ion-picker-column-option>
|
|
31
|
+
</ion-picker-column>
|
|
32
|
+
</ion-picker>
|
|
33
|
+
`, config);
|
|
34
|
+
const pickerColumn = page.locator('ion-picker-column');
|
|
35
|
+
await pickerColumn.evaluate((el) => (el.value = 'b'));
|
|
36
|
+
await page.waitForChanges();
|
|
37
|
+
const disabledItem = page.locator('ion-picker-column ion-picker-column-option').nth(1);
|
|
38
|
+
await expect(disabledItem).not.toHaveClass(/option-active/);
|
|
39
|
+
});
|
|
40
|
+
test('defaulting the value to a disabled item should not cause that item to be active', async ({ page }) => {
|
|
41
|
+
await page.setContent(`
|
|
42
|
+
<ion-picker>
|
|
43
|
+
<ion-picker-column value="b">
|
|
44
|
+
<ion-picker-column-option value="a">A</ion-picker-column-option>
|
|
45
|
+
<ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
|
|
46
|
+
<ion-picker-column-option value="c">C</ion-picker-column-option>
|
|
47
|
+
</ion-picker-column>
|
|
48
|
+
</ion-picker>
|
|
49
|
+
`, config);
|
|
50
|
+
const disabledItem = page.locator('ion-picker-column ion-picker-column-option').nth(1);
|
|
51
|
+
await expect(disabledItem).not.toHaveClass(/option-active/);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* This behavior does not vary across directions.
|
|
57
|
+
*/
|
|
58
|
+
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
59
|
+
test.describe(title('picker-column: disabled column rendering'), () => {
|
|
60
|
+
test.beforeEach(async ({ page }) => {
|
|
61
|
+
await page.goto('/src/components/picker-column/test/disabled', config);
|
|
62
|
+
});
|
|
63
|
+
test('disabled column should not have visual regressions', async ({ page }) => {
|
|
64
|
+
const disabledColumn = page.locator('#column-disabled');
|
|
65
|
+
await page.waitForChanges();
|
|
66
|
+
await expect(disabledColumn).toHaveScreenshot(screenshot('picker-disabled-column'));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* This behavior does not vary across modes/directions.
|
|
72
|
+
*/
|
|
73
|
+
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
74
|
+
test.describe(title('picker-column: disabled column'), () => {
|
|
75
|
+
test.beforeEach(async ({ page }) => {
|
|
76
|
+
await page.goto('/src/components/picker-column/test/disabled', config);
|
|
77
|
+
});
|
|
78
|
+
test('clicking option in disabled column should not change value', async ({ page }) => {
|
|
79
|
+
const column = page.locator('#column-disabled');
|
|
80
|
+
const option = column.locator('ion-picker-column-option').nth(1);
|
|
81
|
+
await expect(column).toHaveJSProperty('value', 11);
|
|
82
|
+
/**
|
|
83
|
+
* Options do not receive pointer events
|
|
84
|
+
* so we need to forcibly click the element.
|
|
85
|
+
*/
|
|
86
|
+
await option.click({ force: true });
|
|
87
|
+
await page.waitForChanges();
|
|
88
|
+
await expect(column).toHaveJSProperty('value', 11);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
5
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
|
+
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
7
|
+
test.describe(title('picker-column: slots'), () => {
|
|
8
|
+
test('should not have visual regressions with prefix and suffix', async ({ page }) => {
|
|
9
|
+
await page.setContent(`
|
|
10
|
+
<ion-picker>
|
|
11
|
+
<ion-picker-column value="b">
|
|
12
|
+
<ion-picker-column-option value="a">A</ion-picker-column-option>
|
|
13
|
+
<ion-picker-column-option value="b">B</ion-picker-column-option>
|
|
14
|
+
<ion-picker-column-option value="c">C</ion-picker-column-option>
|
|
15
|
+
<div slot="prefix">Prefix</div>
|
|
16
|
+
<div slot="suffix">Suffix</div>
|
|
17
|
+
</ion-picker-column>
|
|
18
|
+
</ion-picker>
|
|
19
|
+
`, config);
|
|
20
|
+
const picker = page.locator('ion-picker');
|
|
21
|
+
await expect(picker).toHaveScreenshot(screenshot(`picker-prefix-suffix`));
|
|
22
|
+
});
|
|
23
|
+
test('should not have visual regressions with a long prefix and suffix', async ({ page }) => {
|
|
24
|
+
await page.setContent(`
|
|
25
|
+
<ion-picker>
|
|
26
|
+
<ion-picker-column value="b">
|
|
27
|
+
<ion-picker-column-option value="a">A</ion-picker-column-option>
|
|
28
|
+
<ion-picker-column-option value="b">B</ion-picker-column-option>
|
|
29
|
+
<ion-picker-column-option value="c">C</ion-picker-column-option>
|
|
30
|
+
<div slot="prefix">Long prefix long prefix long prefix</div>
|
|
31
|
+
<div slot="suffix">Long suffix long suffix long suffix</div>
|
|
32
|
+
</ion-picker-column>
|
|
33
|
+
</ion-picker>
|
|
34
|
+
`, config);
|
|
35
|
+
const picker = page.locator('ion-picker');
|
|
36
|
+
await expect(picker).toHaveScreenshot(screenshot(`picker-long-prefix-suffix`));
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a font size to a dynamic font size.
|
|
3
|
+
* Fonts that participate in Dynamic Type should use
|
|
4
|
+
* dynamic font sizes.
|
|
5
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
6
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
7
|
+
* convert to a unit other than $baselineUnit.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Convert a font size to a dynamic font size but impose
|
|
11
|
+
* a maximum font size.
|
|
12
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
13
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
14
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
15
|
+
* convert to a unit other than $baselineUnit.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Convert a font size to a dynamic font size but impose
|
|
19
|
+
* a minimum font size.
|
|
20
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
21
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
22
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
23
|
+
* convert to a unit other than $baselineUnit.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Convert a font size to a dynamic font size but impose
|
|
27
|
+
* maximum and minimum font sizes.
|
|
28
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
29
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
30
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
31
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
32
|
+
* convert to a unit other than $baselineUnit.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* A heuristic that applies CSS to tablet
|
|
36
|
+
* viewports.
|
|
37
|
+
*
|
|
38
|
+
* Usage:
|
|
39
|
+
* @include tablet-viewport() {
|
|
40
|
+
* :host {
|
|
41
|
+
* background-color: green;
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* A heuristic that applies CSS to mobile
|
|
47
|
+
* viewports (i.e. phones, not tablets).
|
|
48
|
+
*
|
|
49
|
+
* Usage:
|
|
50
|
+
* @include mobile-viewport() {
|
|
51
|
+
* :host {
|
|
52
|
+
* background-color: blue;
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
*/
|
|
56
|
+
button {
|
|
57
|
+
padding-left: 0;
|
|
58
|
+
padding-right: 0;
|
|
59
|
+
padding-top: 0;
|
|
60
|
+
padding-bottom: 0;
|
|
61
|
+
margin-left: 0;
|
|
62
|
+
margin-right: 0;
|
|
63
|
+
margin-top: 0;
|
|
64
|
+
margin-bottom: 0;
|
|
65
|
+
width: 100%;
|
|
66
|
+
height: 34px;
|
|
67
|
+
border: 0px;
|
|
68
|
+
outline: none;
|
|
69
|
+
background: transparent;
|
|
70
|
+
color: inherit;
|
|
71
|
+
font-family: var(--ion-font-family, inherit);
|
|
72
|
+
font-size: inherit;
|
|
73
|
+
line-height: 34px;
|
|
74
|
+
text-align: inherit;
|
|
75
|
+
text-overflow: ellipsis;
|
|
76
|
+
white-space: nowrap;
|
|
77
|
+
cursor: pointer;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:host(.option-disabled) {
|
|
82
|
+
opacity: 0.4;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:host(.option-disabled) button {
|
|
86
|
+
cursor: default;
|
|
87
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { Host, h } from "@stencil/core";
|
|
5
|
+
import { inheritAttributes } from "../../utils/helpers";
|
|
6
|
+
import { createColorClasses } from "../../utils/theme";
|
|
7
|
+
import { getIonMode } from "../../global/ionic-global";
|
|
8
|
+
export class PickerColumnOption {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* We keep track of the parent picker column
|
|
12
|
+
* so we can update the value of it when
|
|
13
|
+
* clicking an enable option.
|
|
14
|
+
*/
|
|
15
|
+
this.pickerColumn = null;
|
|
16
|
+
this.ariaLabel = null;
|
|
17
|
+
this.disabled = false;
|
|
18
|
+
this.value = undefined;
|
|
19
|
+
this.color = 'primary';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The aria-label of the option has changed after the
|
|
23
|
+
* first render and needs to be updated within the component.
|
|
24
|
+
*
|
|
25
|
+
* @param ariaLbl The new aria-label value.
|
|
26
|
+
*/
|
|
27
|
+
onAriaLabelChange(ariaLbl) {
|
|
28
|
+
this.ariaLabel = ariaLbl;
|
|
29
|
+
}
|
|
30
|
+
componentWillLoad() {
|
|
31
|
+
const inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
|
|
32
|
+
/**
|
|
33
|
+
* The initial value of `aria-label` needs to be set for
|
|
34
|
+
* the first render.
|
|
35
|
+
|
|
36
|
+
*/
|
|
37
|
+
this.ariaLabel = inheritedAttributes['aria-label'] || null;
|
|
38
|
+
}
|
|
39
|
+
connectedCallback() {
|
|
40
|
+
this.pickerColumn = this.el.closest('ion-picker-column');
|
|
41
|
+
}
|
|
42
|
+
disconnectedCallback() {
|
|
43
|
+
this.pickerColumn = null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The column options can load at any time
|
|
47
|
+
* so the options needs to tell the
|
|
48
|
+
* parent picker column when it is loaded
|
|
49
|
+
* so the picker column can ensure it is
|
|
50
|
+
* centered in the view.
|
|
51
|
+
*
|
|
52
|
+
* We intentionally run this for every
|
|
53
|
+
* option. If we only ran this from
|
|
54
|
+
* the selected option then if the newly
|
|
55
|
+
* loaded options were not selected then
|
|
56
|
+
* scrollActiveItemIntoView would not be called.
|
|
57
|
+
*/
|
|
58
|
+
componentDidLoad() {
|
|
59
|
+
const { pickerColumn } = this;
|
|
60
|
+
if (pickerColumn !== null) {
|
|
61
|
+
pickerColumn.scrollActiveItemIntoView();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* When an option is clicked, update the
|
|
66
|
+
* parent picker column value. This
|
|
67
|
+
* component will handle centering the option
|
|
68
|
+
* in the column view.
|
|
69
|
+
*/
|
|
70
|
+
onClick() {
|
|
71
|
+
const { pickerColumn } = this;
|
|
72
|
+
if (pickerColumn !== null) {
|
|
73
|
+
pickerColumn.setValue(this.value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
render() {
|
|
77
|
+
const { color, disabled, ariaLabel } = this;
|
|
78
|
+
const mode = getIonMode(this);
|
|
79
|
+
return (h(Host, { class: createColorClasses(color, {
|
|
80
|
+
[mode]: true,
|
|
81
|
+
['option-disabled']: disabled,
|
|
82
|
+
}) }, h("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", null))));
|
|
83
|
+
}
|
|
84
|
+
static get is() { return "ion-picker-column-option"; }
|
|
85
|
+
static get encapsulation() { return "shadow"; }
|
|
86
|
+
static get originalStyleUrls() {
|
|
87
|
+
return {
|
|
88
|
+
"ios": ["picker-column-option.ios.scss"],
|
|
89
|
+
"md": ["picker-column-option.md.scss"]
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
static get styleUrls() {
|
|
93
|
+
return {
|
|
94
|
+
"ios": ["picker-column-option.ios.css"],
|
|
95
|
+
"md": ["picker-column-option.md.css"]
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
static get properties() {
|
|
99
|
+
return {
|
|
100
|
+
"disabled": {
|
|
101
|
+
"type": "boolean",
|
|
102
|
+
"mutable": false,
|
|
103
|
+
"complexType": {
|
|
104
|
+
"original": "boolean",
|
|
105
|
+
"resolved": "boolean",
|
|
106
|
+
"references": {}
|
|
107
|
+
},
|
|
108
|
+
"required": false,
|
|
109
|
+
"optional": false,
|
|
110
|
+
"docs": {
|
|
111
|
+
"tags": [],
|
|
112
|
+
"text": "If `true`, the user cannot interact with the picker column option."
|
|
113
|
+
},
|
|
114
|
+
"attribute": "disabled",
|
|
115
|
+
"reflect": false,
|
|
116
|
+
"defaultValue": "false"
|
|
117
|
+
},
|
|
118
|
+
"value": {
|
|
119
|
+
"type": "any",
|
|
120
|
+
"mutable": false,
|
|
121
|
+
"complexType": {
|
|
122
|
+
"original": "any | null",
|
|
123
|
+
"resolved": "any",
|
|
124
|
+
"references": {}
|
|
125
|
+
},
|
|
126
|
+
"required": false,
|
|
127
|
+
"optional": true,
|
|
128
|
+
"docs": {
|
|
129
|
+
"tags": [],
|
|
130
|
+
"text": "The text value of the option."
|
|
131
|
+
},
|
|
132
|
+
"attribute": "value",
|
|
133
|
+
"reflect": false
|
|
134
|
+
},
|
|
135
|
+
"color": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"mutable": false,
|
|
138
|
+
"complexType": {
|
|
139
|
+
"original": "Color",
|
|
140
|
+
"resolved": "\"danger\" | \"dark\" | \"light\" | \"medium\" | \"primary\" | \"secondary\" | \"success\" | \"tertiary\" | \"warning\" | string & Record<never, never> | undefined",
|
|
141
|
+
"references": {
|
|
142
|
+
"Color": {
|
|
143
|
+
"location": "import",
|
|
144
|
+
"path": "../../interface",
|
|
145
|
+
"id": "src/interface.d.ts::Color"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"required": false,
|
|
150
|
+
"optional": true,
|
|
151
|
+
"docs": {
|
|
152
|
+
"tags": [],
|
|
153
|
+
"text": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics)."
|
|
154
|
+
},
|
|
155
|
+
"attribute": "color",
|
|
156
|
+
"reflect": true,
|
|
157
|
+
"defaultValue": "'primary'"
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
static get states() {
|
|
162
|
+
return {
|
|
163
|
+
"ariaLabel": {}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
static get elementRef() { return "el"; }
|
|
167
|
+
static get watchers() {
|
|
168
|
+
return [{
|
|
169
|
+
"propName": "aria-label",
|
|
170
|
+
"methodName": "onAriaLabelChange"
|
|
171
|
+
}];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -53,35 +53,7 @@
|
|
|
53
53
|
* }
|
|
54
54
|
* }
|
|
55
55
|
*/
|
|
56
|
-
|
|
57
|
-
-webkit-padding-start: 16px;
|
|
58
|
-
padding-inline-start: 16px;
|
|
59
|
-
-webkit-padding-end: 16px;
|
|
60
|
-
padding-inline-end: 16px;
|
|
61
|
-
padding-top: 0px;
|
|
62
|
-
padding-bottom: 0px;
|
|
63
|
-
height: 200px;
|
|
64
|
-
outline: none;
|
|
65
|
-
font-size: 22px;
|
|
66
|
-
scroll-snap-type: y mandatory;
|
|
67
|
-
/**
|
|
68
|
-
* Need to explicitly set overflow-x: hidden
|
|
69
|
-
* for older implementations of scroll snapping.
|
|
70
|
-
*/
|
|
71
|
-
overflow-x: hidden;
|
|
72
|
-
overflow-y: scroll;
|
|
73
|
-
scrollbar-width: none;
|
|
74
|
-
text-align: center;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Hide scrollbars on Chrome and Safari
|
|
79
|
-
*/
|
|
80
|
-
:host::-webkit-scrollbar {
|
|
81
|
-
display: none;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
:host .picker-item {
|
|
56
|
+
button {
|
|
85
57
|
padding-left: 0;
|
|
86
58
|
padding-right: 0;
|
|
87
59
|
padding-top: 0;
|
|
@@ -90,7 +62,6 @@
|
|
|
90
62
|
margin-right: 0;
|
|
91
63
|
margin-top: 0;
|
|
92
64
|
margin-bottom: 0;
|
|
93
|
-
display: block;
|
|
94
65
|
width: 100%;
|
|
95
66
|
height: 34px;
|
|
96
67
|
border: 0px;
|
|
@@ -105,34 +76,16 @@
|
|
|
105
76
|
white-space: nowrap;
|
|
106
77
|
cursor: pointer;
|
|
107
78
|
overflow: hidden;
|
|
108
|
-
scroll-snap-align: center;
|
|
109
79
|
}
|
|
110
80
|
|
|
111
|
-
:host
|
|
112
|
-
:host .picker-item[disabled] {
|
|
113
|
-
cursor: default;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
:host .picker-item-empty,
|
|
117
|
-
:host(:not([disabled])) .picker-item[disabled] {
|
|
118
|
-
scroll-snap-align: none;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
:host([disabled]) {
|
|
122
|
-
overflow-y: hidden;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
:host .picker-item[disabled] {
|
|
81
|
+
:host(.option-disabled) {
|
|
126
82
|
opacity: 0.4;
|
|
127
83
|
}
|
|
128
84
|
|
|
129
|
-
:host(.
|
|
130
|
-
|
|
85
|
+
:host(.option-disabled) button {
|
|
86
|
+
cursor: default;
|
|
131
87
|
}
|
|
132
88
|
|
|
133
|
-
|
|
134
|
-
:
|
|
135
|
-
outline: none;
|
|
136
|
-
background: rgba(var(--ion-color-base-rgb), 0.2);
|
|
137
|
-
}
|
|
89
|
+
:host(.option-active) {
|
|
90
|
+
color: var(--ion-color-base);
|
|
138
91
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
5
|
+
import { expect } from "@playwright/test";
|
|
6
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
7
|
+
/**
|
|
8
|
+
* This behavior does not vary across directions
|
|
9
|
+
*/
|
|
10
|
+
configs({ directions: ['ltr'] }).forEach(({ config, title }) => {
|
|
11
|
+
test.describe(title('picker column option: a11y'), () => {
|
|
12
|
+
test('should not have accessibility violations', async ({ page }) => {
|
|
13
|
+
await page.goto(`/src/components/picker-column-option/test/a11y`, config);
|
|
14
|
+
const results = await new AxeBuilder({ page }).analyze();
|
|
15
|
+
expect(results.violations).toEqual([]);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
});
|
package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
5
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
|
+
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
7
|
+
test.describe(title('picker-column-option: rendering'), () => {
|
|
8
|
+
test('picker option should not have visual regressions', async ({ page }) => {
|
|
9
|
+
await page.setContent(`
|
|
10
|
+
<ion-picker-column-option value="option">My Option</ion-picker-column-option>
|
|
11
|
+
`, config);
|
|
12
|
+
const option = page.locator('ion-picker-column-option');
|
|
13
|
+
await expect(option).toHaveScreenshot(screenshot('picker-column-option'));
|
|
14
|
+
});
|
|
15
|
+
test('disabled picker option should not have visual regressions', async ({ page }) => {
|
|
16
|
+
await page.setContent(`
|
|
17
|
+
<ion-picker-column-option disabled="true" value="option">My Option</ion-picker-column-option>
|
|
18
|
+
`, config);
|
|
19
|
+
const option = page.locator('ion-picker-column-option');
|
|
20
|
+
await expect(option).toHaveScreenshot(screenshot('disabled-picker-column-option'));
|
|
21
|
+
});
|
|
22
|
+
test('active picker option should not have visual regressions', async ({ page }) => {
|
|
23
|
+
await page.setContent(`
|
|
24
|
+
<ion-picker-column-option class="option-active" value="option">My Option</ion-picker-column-option>
|
|
25
|
+
`, config);
|
|
26
|
+
const option = page.locator('ion-picker-column-option');
|
|
27
|
+
await expect(option).toHaveScreenshot(screenshot('active-picker-column-option'));
|
|
28
|
+
});
|
|
29
|
+
test('disabled active picker option should not have visual regressions', async ({ page }) => {
|
|
30
|
+
await page.setContent(`
|
|
31
|
+
<ion-picker-column-option class="option-active" disabled="true" value="option">My Option</ion-picker-column-option>
|
|
32
|
+
`, config);
|
|
33
|
+
const option = page.locator('ion-picker-column-option');
|
|
34
|
+
await expect(option).toHaveScreenshot(screenshot('disabled-active-picker-column-option'));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
5
|
+
import { PickerColumnOption } from "../picker-column-option";
|
|
6
|
+
describe('picker column option', () => {
|
|
7
|
+
it('button should be enabled by default', async () => {
|
|
8
|
+
const page = await newSpecPage({
|
|
9
|
+
components: [PickerColumnOption],
|
|
10
|
+
html: `
|
|
11
|
+
<ion-picker-column-option value="test">Test</ion-picker-column-otion>
|
|
12
|
+
`,
|
|
13
|
+
});
|
|
14
|
+
const option = page.body.querySelector('ion-picker-column-option');
|
|
15
|
+
const button = option.shadowRoot.querySelector('button');
|
|
16
|
+
await expect(button.hasAttribute('disabled')).toEqual(false);
|
|
17
|
+
});
|
|
18
|
+
it('button should be disabled if specified', async () => {
|
|
19
|
+
const page = await newSpecPage({
|
|
20
|
+
components: [PickerColumnOption],
|
|
21
|
+
html: `
|
|
22
|
+
<ion-picker-column-option disabled="true" value="test">Test</ion-picker-column-otion>
|
|
23
|
+
`,
|
|
24
|
+
});
|
|
25
|
+
const option = page.body.querySelector('ion-picker-column-option');
|
|
26
|
+
const button = option.shadowRoot.querySelector('button');
|
|
27
|
+
await expect(button.hasAttribute('disabled')).toEqual(true);
|
|
28
|
+
});
|
|
29
|
+
});
|