@ionic/core 7.3.4-dev.11694438635.14743086 → 7.3.4-dev.11694441708.198de185
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 +2 -2
- package/components/button-active.js +1 -1
- package/components/button.js +2 -2
- package/components/buttons.js +2 -2
- package/components/checkbox.js +3 -6
- package/components/data.js +7 -31
- package/components/index.js +2 -2
- package/components/index2.js +429 -203
- package/components/index3.js +203 -429
- package/components/ion-back-button.js +2 -2
- package/components/ion-badge.js +2 -2
- package/components/ion-breadcrumb.js +2 -2
- package/components/ion-card-content.js +2 -2
- package/components/ion-card-subtitle.js +2 -2
- package/components/ion-card-title.js +2 -2
- package/components/ion-card.js +2 -2
- package/components/ion-chip.js +8 -3
- package/components/ion-datetime-button.js +2 -5
- package/components/ion-datetime.js +92 -132
- package/components/ion-header.js +1 -1
- package/components/ion-item-divider.js +2 -2
- package/components/ion-item-option.js +2 -2
- package/components/ion-item-options.js +2 -2
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-loading.js +2 -2
- package/components/ion-menu-button.js +2 -2
- package/components/ion-menu.js +3 -3
- package/components/ion-modal.js +2 -2
- package/components/ion-nav.js +1 -1
- package/components/ion-range.js +3 -3
- package/components/ion-refresher.js +3 -3
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +2 -2
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-searchbar.js +9 -3
- package/components/ion-segment.js +1 -1
- package/components/ion-textarea.js +2 -2
- package/components/ion-title.js +2 -2
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +4 -7
- package/components/ion-toolbar.js +2 -2
- package/components/ios.transition.js +5 -5
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/list-header.js +2 -2
- package/components/md.transition.js +1 -1
- package/components/note.js +2 -2
- package/components/picker-column.js +1 -1
- package/components/popover.js +1 -1
- package/components/radio.js +3 -6
- package/components/swipe-back.js +1 -1
- package/css/core.css +100 -0
- package/css/core.css.map +1 -1
- package/css/display.css +33 -0
- package/css/display.css.map +1 -1
- package/css/float-elements.css +33 -0
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css +84 -6
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-swiper.css +33 -0
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/padding.css +33 -0
- package/css/padding.css.map +1 -1
- package/css/structure.css +33 -0
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css +33 -0
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css +33 -0
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css +51 -6
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +165 -0
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/{data-db832785.js → data-967b9c15.js} +7 -31
- package/dist/cjs/{index-8568bedb.js → index-552c4df4.js} +2 -2
- package/dist/cjs/index.cjs.js +11 -12
- package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
- package/dist/cjs/ion-app_8.cjs.entry.js +8 -8
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
- package/dist/cjs/ion-checkbox.cjs.entry.js +3 -5
- package/dist/cjs/ion-chip.cjs.entry.js +7 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -6
- package/dist/cjs/ion-datetime_3.cjs.entry.js +93 -132
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -5
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +9 -3
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +2 -2
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -5
- package/dist/cjs/ionic.cjs.js +2 -2
- package/dist/cjs/{ios.transition-f7c78d7c.js → ios.transition-b53fc1d5.js} +5 -5
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{md.transition-65dc7dce.js → md.transition-d96426d5.js} +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion/accordion.ios.css +66 -0
- package/dist/collection/components/accordion/accordion.md.css +33 -0
- package/dist/collection/components/accordion-group/accordion-group.ios.css +66 -0
- package/dist/collection/components/accordion-group/accordion-group.md.css +99 -0
- package/dist/collection/components/action-sheet/action-sheet.ios.css +80 -12
- package/dist/collection/components/action-sheet/action-sheet.md.css +76 -8
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +27 -0
- package/dist/collection/components/alert/alert.ios.css +99 -0
- package/dist/collection/components/alert/alert.md.css +99 -0
- package/dist/collection/components/avatar/avatar.ios.css +66 -0
- package/dist/collection/components/avatar/avatar.md.css +66 -0
- package/dist/collection/components/back-button/back-button.ios.css +83 -1
- package/dist/collection/components/back-button/back-button.md.css +75 -3
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +26 -0
- package/dist/collection/components/backdrop/backdrop.ios.css +66 -0
- package/dist/collection/components/backdrop/backdrop.md.css +66 -0
- package/dist/collection/components/badge/badge.ios.css +75 -1
- package/dist/collection/components/badge/badge.md.css +67 -1
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +22 -0
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +80 -3
- package/dist/collection/components/breadcrumb/breadcrumb.md.css +69 -3
- package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +33 -0
- package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +33 -0
- package/dist/collection/components/breadcrumbs/test/a11y/breadcrumbs.e2e.js +21 -0
- package/dist/collection/components/button/button.ios.css +118 -19
- package/dist/collection/components/button/button.md.css +69 -3
- package/dist/collection/components/button/test/a11y/button.e2e.js +61 -0
- package/dist/collection/components/buttons/buttons.ios.css +102 -3
- package/dist/collection/components/buttons/buttons.md.css +101 -2
- package/dist/collection/components/buttons/test/a11y/buttons.e2e.js +74 -0
- package/dist/collection/components/card/card.ios.css +67 -1
- package/dist/collection/components/card/card.md.css +67 -1
- package/dist/collection/components/card/test/a11y/card.e2e.js +31 -0
- package/dist/collection/components/card-content/card-content.ios.css +71 -5
- package/dist/collection/components/card-content/card-content.md.css +71 -5
- package/dist/collection/components/card-header/card-header.ios.css +66 -0
- package/dist/collection/components/card-header/card-header.md.css +66 -0
- package/dist/collection/components/card-subtitle/card-subtitle.ios.css +67 -1
- package/dist/collection/components/card-subtitle/card-subtitle.md.css +67 -1
- package/dist/collection/components/card-title/card-title.ios.css +67 -1
- package/dist/collection/components/card-title/card-title.md.css +67 -1
- package/dist/collection/components/checkbox/checkbox.ios.css +99 -35
- package/dist/collection/components/checkbox/checkbox.js +4 -24
- package/dist/collection/components/checkbox/checkbox.md.css +99 -35
- package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +0 -13
- package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +0 -16
- package/dist/collection/components/chip/chip.ios.css +190 -0
- package/dist/collection/components/chip/chip.js +4 -2
- package/dist/collection/components/chip/{chip.css → chip.md.css} +43 -7
- package/dist/collection/components/chip/test/a11y/chip.e2e.js +58 -0
- package/dist/collection/components/col/col.css +66 -0
- package/dist/collection/components/content/content.css +33 -0
- package/dist/collection/components/datetime/datetime.ios.css +95 -32
- package/dist/collection/components/datetime/datetime.js +93 -137
- package/dist/collection/components/datetime/datetime.md.css +94 -20
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -25
- package/dist/collection/components/datetime/test/color/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/custom/datetime.e2e.js +1 -27
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +0 -15
- package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +12 -9
- package/dist/collection/components/datetime/utils/data.js +6 -14
- package/dist/collection/components/datetime/utils/parse.js +1 -18
- package/dist/collection/components/datetime-button/datetime-button.css +36 -2
- package/dist/collection/components/datetime-button/datetime-button.js +0 -3
- package/dist/collection/components/datetime-button/test/a11y/datetime-button.e2e.js +38 -0
- package/dist/collection/components/fab/fab.css +66 -0
- package/dist/collection/components/fab-button/fab-button.ios.css +66 -0
- package/dist/collection/components/fab-button/fab-button.md.css +66 -0
- package/dist/collection/components/fab-list/fab-list.css +66 -0
- package/dist/collection/components/footer/footer.ios.css +66 -0
- package/dist/collection/components/footer/footer.md.css +66 -0
- package/dist/collection/components/grid/grid.css +66 -0
- package/dist/collection/components/header/header.ios.css +71 -2
- package/dist/collection/components/header/header.md.css +66 -0
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +66 -0
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +66 -0
- package/dist/collection/components/input/input.ios.css +99 -0
- package/dist/collection/components/input/input.md.css +198 -0
- package/dist/collection/components/item/item.ios.css +70 -4
- package/dist/collection/components/item/item.md.css +138 -6
- package/dist/collection/components/item/test/a11y/item.e2e.js +116 -1
- package/dist/collection/components/item-divider/item-divider.ios.css +101 -9
- package/dist/collection/components/item-divider/item-divider.md.css +103 -11
- package/dist/collection/components/item-divider/test/a11y/item-divider.e2e.js +44 -0
- package/dist/collection/components/item-group/item-group.ios.css +68 -1
- package/dist/collection/components/item-group/item-group.md.css +68 -1
- package/dist/collection/components/item-option/item-option.ios.css +67 -1
- package/dist/collection/components/item-option/item-option.md.css +67 -1
- package/dist/collection/components/item-options/item-options.ios.css +99 -1
- package/dist/collection/components/item-options/item-options.md.css +99 -1
- package/dist/collection/components/item-sliding/item-sliding.css +33 -0
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +34 -0
- package/dist/collection/components/label/label.ios.css +105 -6
- package/dist/collection/components/label/label.md.css +104 -5
- package/dist/collection/components/label/test/a11y/label.e2e.js +66 -0
- package/dist/collection/components/list/list.ios.css +99 -0
- package/dist/collection/components/list/list.md.css +99 -0
- package/dist/collection/components/list-header/list-header.ios.css +100 -1
- package/dist/collection/components/list-header/list-header.md.css +100 -1
- package/dist/collection/components/list-header/test/a11y/list-header.e2e.js +24 -0
- package/dist/collection/components/loading/loading.ios.css +67 -1
- package/dist/collection/components/loading/loading.md.css +67 -1
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +19 -0
- package/dist/collection/components/menu/menu.ios.css +66 -94
- package/dist/collection/components/menu/menu.md.css +66 -94
- package/dist/collection/components/menu-button/menu-button.ios.css +70 -2
- package/dist/collection/components/menu-button/menu-button.md.css +71 -3
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +20 -1
- package/dist/collection/components/modal/modal.ios.css +66 -0
- package/dist/collection/components/modal/modal.md.css +66 -0
- package/dist/collection/components/nav/nav.css +33 -0
- package/dist/collection/components/note/note.ios.css +67 -0
- package/dist/collection/components/note/note.md.css +67 -1
- package/dist/collection/components/note/test/a11y/note.e2e.js +52 -0
- package/dist/collection/components/picker/picker.ios.css +66 -0
- package/dist/collection/components/picker/picker.md.css +66 -0
- package/dist/collection/components/picker-column/picker-column.ios.css +66 -0
- package/dist/collection/components/picker-column/picker-column.md.css +66 -0
- package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +33 -0
- package/dist/collection/components/picker-column-internal/picker-column-internal.md.css +66 -0
- package/dist/collection/components/picker-internal/picker-internal.ios.css +66 -0
- package/dist/collection/components/picker-internal/picker-internal.md.css +66 -0
- package/dist/collection/components/popover/popover.ios.css +66 -0
- package/dist/collection/components/popover/popover.md.css +66 -0
- package/dist/collection/components/progress-bar/progress-bar.ios.css +33 -0
- package/dist/collection/components/progress-bar/progress-bar.md.css +33 -0
- package/dist/collection/components/radio/radio.ios.css +97 -33
- package/dist/collection/components/radio/radio.js +4 -24
- package/dist/collection/components/radio/radio.md.css +97 -33
- package/dist/collection/components/radio/test/item/radio.e2e.js +0 -15
- package/dist/collection/components/radio/test/label-placement/radio.e2e.js +0 -20
- package/dist/collection/components/range/range.ios.css +80 -46
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/range/range.md.css +97 -49
- package/dist/collection/components/range/test/a11y/range.e2e.js +22 -0
- package/dist/collection/components/range/test/label/range.e2e.js +0 -48
- package/dist/collection/components/refresher/refresher.ios.css +66 -0
- package/dist/collection/components/refresher/refresher.md.css +66 -0
- package/dist/collection/components/reorder/reorder.ios.css +75 -2
- package/dist/collection/components/reorder/reorder.md.css +75 -2
- package/dist/collection/components/reorder-group/reorder-group.css +33 -0
- package/dist/collection/components/reorder-group/test/a11y/reorder-group.e2e.js +33 -0
- package/dist/collection/components/ripple-effect/ripple-effect.css +33 -0
- package/dist/collection/components/router-link/router-link.css +33 -0
- package/dist/collection/components/router-outlet/router-outlet.css +33 -0
- package/dist/collection/components/router-outlet/router-outlet.js +1 -6
- package/dist/collection/components/row/row.css +66 -0
- package/dist/collection/components/searchbar/searchbar.ios.css +95 -16
- package/dist/collection/components/searchbar/searchbar.js +7 -1
- package/dist/collection/components/searchbar/searchbar.md.css +77 -10
- package/dist/collection/components/searchbar/test/a11y/searchbar.e2e.js +37 -0
- package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +18 -0
- package/dist/collection/components/segment/segment.ios.css +99 -0
- package/dist/collection/components/segment/segment.md.css +99 -0
- package/dist/collection/components/segment-button/segment-button.ios.css +66 -0
- package/dist/collection/components/segment-button/segment-button.md.css +66 -0
- package/dist/collection/components/select/select.ios.css +99 -0
- package/dist/collection/components/select/select.md.css +165 -0
- package/dist/collection/components/select-popover/select-popover.ios.css +101 -1
- package/dist/collection/components/select-popover/select-popover.md.css +99 -0
- package/dist/collection/components/skeleton-text/skeleton-text.css +33 -0
- package/dist/collection/components/spinner/spinner.css +33 -0
- package/dist/collection/components/split-pane/split-pane.ios.css +99 -0
- package/dist/collection/components/split-pane/split-pane.md.css +99 -0
- package/dist/collection/components/tab-bar/tab-bar.ios.css +99 -0
- package/dist/collection/components/tab-bar/tab-bar.md.css +99 -0
- package/dist/collection/components/tab-button/tab-button.ios.css +66 -0
- package/dist/collection/components/tab-button/tab-button.md.css +66 -0
- package/dist/collection/components/tabs/tabs.css +33 -0
- package/dist/collection/components/text/text.css +33 -0
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +15 -1
- package/dist/collection/components/textarea/textarea.ios.css +133 -1
- package/dist/collection/components/textarea/textarea.md.css +199 -1
- package/dist/collection/components/thumbnail/thumbnail.css +33 -0
- package/dist/collection/components/title/test/a11y/title.e2e.js +61 -0
- package/dist/collection/components/title/title.ios.css +43 -10
- package/dist/collection/components/title/title.md.css +35 -2
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +98 -1
- package/dist/collection/components/toast/toast.ios.css +74 -3
- package/dist/collection/components/toast/toast.md.css +74 -4
- package/dist/collection/components/toggle/test/item/toggle.e2e.js +0 -15
- package/dist/collection/components/toggle/test/label/toggle.e2e.js +0 -16
- package/dist/collection/components/toggle/toggle.ios.css +100 -35
- package/dist/collection/components/toggle/toggle.js +4 -24
- package/dist/collection/components/toggle/toggle.md.css +100 -35
- package/dist/collection/components/toolbar/toolbar.ios.css +70 -16
- package/dist/collection/components/toolbar/toolbar.md.css +70 -2
- package/dist/collection/css/test/a11y/typography.e2e.js +32 -0
- package/dist/collection/index.js +0 -1
- package/dist/collection/utils/transition/ios.transition.js +4 -4
- package/dist/docs.json +21 -155
- package/dist/esm/{data-009dbf15.js → data-4b448e3a.js} +7 -31
- package/dist/esm/{index-6391de89.js → index-2970aafc.js} +2 -2
- package/dist/esm/index.js +4 -4
- package/dist/esm/ion-action-sheet.entry.js +2 -2
- package/dist/esm/ion-app_8.entry.js +8 -8
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
- package/dist/esm/ion-button_2.entry.js +2 -2
- package/dist/esm/ion-card_5.entry.js +8 -8
- package/dist/esm/ion-checkbox.entry.js +3 -5
- package/dist/esm/ion-chip.entry.js +7 -2
- package/dist/esm/ion-datetime-button.entry.js +3 -6
- package/dist/esm/ion-datetime_3.entry.js +93 -132
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +10 -10
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +4 -4
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/ion-nav_2.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +3 -5
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +9 -3
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +2 -2
- package/dist/esm/ion-toggle.entry.js +3 -5
- package/dist/esm/ionic.js +2 -2
- package/dist/esm/{ios.transition-3137d23e.js → ios.transition-4e8d7fb7.js} +5 -5
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{md.transition-48b3b77c.js → md.transition-2b41d64c.js} +1 -1
- package/dist/esm-es5/data-4b448e3a.js +4 -0
- package/dist/esm-es5/{index-6391de89.js → index-2970aafc.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-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-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.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-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-popover.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-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.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/ios.transition-4e8d7fb7.js +4 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{md.transition-48b3b77c.js → md.transition-2b41d64c.js} +1 -1
- package/dist/html.html-data.json +4 -52
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/p-0053fe81.system.entry.js +4 -0
- package/dist/ionic/p-060aa1aa.entry.js +4 -0
- package/dist/ionic/p-0e4377e6.system.entry.js +4 -0
- package/dist/ionic/{p-a2b25750.js → p-1decbac2.js} +1 -1
- package/dist/ionic/p-1e5f9f20.entry.js +4 -0
- package/dist/ionic/p-2c012642.entry.js +4 -0
- package/dist/ionic/p-2cdcd6f2.entry.js +4 -0
- package/dist/ionic/{p-62324608.system.entry.js → p-2e45dce9.system.entry.js} +1 -1
- package/dist/ionic/p-2f4e5cd6.system.entry.js +4 -0
- package/dist/ionic/p-2f6fbeab.system.entry.js +4 -0
- package/dist/ionic/p-39bf6a89.js +4 -0
- package/dist/ionic/p-418fc6f2.system.entry.js +4 -0
- package/dist/ionic/p-468ac44a.system.entry.js +4 -0
- package/dist/ionic/p-5009cb46.entry.js +4 -0
- package/dist/ionic/{p-87383d00.system.entry.js → p-586e0a90.system.entry.js} +1 -1
- package/dist/ionic/p-5b88f780.entry.js +4 -0
- package/dist/ionic/{p-653f2fc6.entry.js → p-5d418c78.entry.js} +1 -1
- package/dist/ionic/p-5e8d7def.system.entry.js +4 -0
- package/dist/ionic/p-601fd53c.js +4 -0
- package/dist/ionic/p-65105512.entry.js +4 -0
- package/dist/ionic/p-66d2ef38.entry.js +4 -0
- package/dist/ionic/p-721933ff.system.js +4 -0
- package/dist/ionic/p-7ea1a467.system.js +4 -0
- package/dist/ionic/p-80b152fd.system.entry.js +4 -0
- package/dist/ionic/{p-208f640c.entry.js → p-80eed21b.entry.js} +1 -1
- package/dist/ionic/p-89d96720.entry.js +4 -0
- package/dist/ionic/{p-fac1660b.entry.js → p-8eed522b.entry.js} +1 -1
- package/dist/ionic/p-91f9a6aa.system.entry.js +4 -0
- package/dist/ionic/p-94f99a8b.entry.js +4 -0
- package/dist/ionic/p-985d547d.system.entry.js +4 -0
- package/dist/ionic/p-98b618ce.system.entry.js +4 -0
- package/dist/ionic/p-9e306450.system.entry.js +4 -0
- package/dist/ionic/{p-0b68c41d.system.entry.js → p-a5481fd3.system.entry.js} +1 -1
- package/dist/ionic/p-b03dae0c.system.entry.js +4 -0
- package/dist/ionic/p-b062bc29.entry.js +4 -0
- package/dist/ionic/p-b0b8c0c9.system.entry.js +4 -0
- package/dist/ionic/p-b3394798.system.entry.js +4 -0
- package/dist/ionic/p-bc8b9c38.system.entry.js +4 -0
- package/dist/ionic/p-c4aea998.entry.js +4 -0
- package/dist/ionic/{p-728ac2b3.entry.js → p-c569a270.entry.js} +1 -1
- package/dist/ionic/p-c64711cc.entry.js +4 -0
- package/dist/ionic/p-c9fd7db5.system.entry.js +4 -0
- package/dist/ionic/p-caa4c0fa.entry.js +4 -0
- package/dist/ionic/p-cc8910e7.system.js +4 -0
- package/dist/ionic/p-cd4b6518.system.js +4 -0
- package/dist/ionic/p-d1e6b365.entry.js +4 -0
- package/dist/ionic/p-d4044209.system.entry.js +4 -0
- package/dist/ionic/p-d6de281e.entry.js +4 -0
- package/dist/ionic/p-e497d6a5.js +4 -0
- package/dist/ionic/p-e53b8af4.system.entry.js +4 -0
- package/dist/ionic/{p-98ebc376.entry.js → p-eaede417.entry.js} +1 -1
- package/dist/ionic/p-f1e5e368.system.entry.js +4 -0
- package/dist/ionic/{p-e3d5608d.system.js → p-f29fe8c3.system.js} +1 -1
- package/dist/ionic/p-f2b925a2.system.entry.js +4 -0
- package/dist/ionic/p-f78e60a5.entry.js +4 -0
- package/dist/ionic/{p-df6743df.system.js → p-f7dcca6a.system.js} +1 -1
- package/dist/ionic/p-f902ddc6.entry.js +4 -0
- package/dist/ionic/p-f9ec8c18.entry.js +4 -0
- package/dist/ionic/p-fade59a2.system.entry.js +4 -0
- package/dist/ionic/{p-fabb7294.entry.js → p-fbb2649b.entry.js} +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +1 -8
- package/dist/types/components/datetime/datetime.d.ts +10 -23
- package/dist/types/components/datetime/utils/data.d.ts +1 -1
- package/dist/types/components/datetime/utils/parse.d.ts +3 -3
- package/dist/types/components/radio/radio.d.ts +1 -8
- package/dist/types/components/range/range.d.ts +1 -2
- package/dist/types/components/toast/toast-interface.d.ts +0 -3
- package/dist/types/components/toggle/toggle.d.ts +1 -8
- package/dist/types/components.d.ts +16 -40
- package/dist/types/index.d.ts +0 -1
- package/dist/types/interface.d.ts +0 -1
- package/hydrate/index.js +264 -345
- package/package.json +3 -3
- package/dist/esm-es5/data-009dbf15.js +0 -4
- package/dist/esm-es5/ios.transition-3137d23e.js +0 -4
- package/dist/ionic/p-06902103.system.js +0 -4
- package/dist/ionic/p-0cc2bf5a.system.entry.js +0 -4
- package/dist/ionic/p-11248f01.js +0 -4
- package/dist/ionic/p-1f4adf06.system.entry.js +0 -4
- package/dist/ionic/p-2061c86f.system.entry.js +0 -4
- package/dist/ionic/p-218b6f33.entry.js +0 -4
- package/dist/ionic/p-2da6ba37.system.entry.js +0 -4
- package/dist/ionic/p-341d5877.entry.js +0 -4
- package/dist/ionic/p-38dd9aec.entry.js +0 -4
- package/dist/ionic/p-40138199.entry.js +0 -4
- package/dist/ionic/p-430e902d.entry.js +0 -4
- package/dist/ionic/p-44ef7224.system.js +0 -4
- package/dist/ionic/p-48144921.entry.js +0 -4
- package/dist/ionic/p-4ca1ce6b.system.entry.js +0 -4
- package/dist/ionic/p-51b165af.system.js +0 -4
- package/dist/ionic/p-57f0efcc.entry.js +0 -4
- package/dist/ionic/p-5ba27716.system.entry.js +0 -4
- package/dist/ionic/p-67b891af.entry.js +0 -4
- package/dist/ionic/p-69303bb5.system.js +0 -4
- package/dist/ionic/p-6b3afb0f.entry.js +0 -4
- package/dist/ionic/p-6bf632d0.system.entry.js +0 -4
- package/dist/ionic/p-7cfd253c.js +0 -4
- package/dist/ionic/p-82f5c07e.system.entry.js +0 -4
- package/dist/ionic/p-82f8ee51.entry.js +0 -4
- package/dist/ionic/p-83bcaec9.system.entry.js +0 -4
- package/dist/ionic/p-86c5c320.entry.js +0 -4
- package/dist/ionic/p-90ec5785.system.entry.js +0 -4
- package/dist/ionic/p-9c32000a.entry.js +0 -4
- package/dist/ionic/p-a34669bf.system.entry.js +0 -4
- package/dist/ionic/p-a3f9d271.entry.js +0 -4
- package/dist/ionic/p-a62c0ff4.js +0 -4
- package/dist/ionic/p-af0bc751.system.entry.js +0 -4
- package/dist/ionic/p-af986299.system.entry.js +0 -4
- package/dist/ionic/p-b0e9e0b8.system.entry.js +0 -4
- package/dist/ionic/p-b321c999.entry.js +0 -4
- package/dist/ionic/p-bbae0ac3.system.entry.js +0 -4
- package/dist/ionic/p-bf4b8d8a.system.entry.js +0 -4
- package/dist/ionic/p-d5e3bff3.entry.js +0 -4
- package/dist/ionic/p-d8a0267b.system.entry.js +0 -4
- package/dist/ionic/p-dbb48066.system.entry.js +0 -4
- package/dist/ionic/p-dc49c681.system.entry.js +0 -4
- package/dist/ionic/p-e112994b.system.entry.js +0 -4
- package/dist/ionic/p-e805ff9f.system.entry.js +0 -4
- package/dist/ionic/p-ed7b205b.entry.js +0 -4
- package/dist/ionic/p-f5c19164.entry.js +0 -4
- package/dist/ionic/p-f9567c67.entry.js +0 -4
- package/dist/ionic/p-fa3327e8.system.entry.js +0 -4
- package/dist/ionic/p-fe83e3e2.entry.js +0 -4
|
@@ -33,17 +33,16 @@ import { getCalendarDayState, getHighlightStyles, isDayDisabled, isMonthDisabled
|
|
|
33
33
|
*
|
|
34
34
|
* @part month-year-button - The button that opens the month/year picker when
|
|
35
35
|
* using a grid style layout.
|
|
36
|
-
*
|
|
37
|
-
* @part calendar-day - The individual buttons that display a day inside of the datetime
|
|
38
|
-
* calendar.
|
|
39
|
-
* @part calendar-day active - The currently selected calendar day.
|
|
40
|
-
* @part calendar-day today - The calendar day that contains the current day.
|
|
41
|
-
* @part calendar-day disabled - The calendar day that is disabled.
|
|
42
36
|
*/
|
|
43
37
|
export class Datetime {
|
|
44
38
|
constructor() {
|
|
45
39
|
this.inputId = `ion-dt-${datetimeIds++}`;
|
|
46
40
|
this.prevPresentation = null;
|
|
41
|
+
/**
|
|
42
|
+
* Duplicate reference to `activeParts` that does not trigger a re-render of the component.
|
|
43
|
+
* Allows caching an instance of the `activeParts` in between render cycles.
|
|
44
|
+
*/
|
|
45
|
+
this.activePartsClone = [];
|
|
47
46
|
this.warnIfIncorrectValueUsage = () => {
|
|
48
47
|
const { multiple, value } = this;
|
|
49
48
|
if (!multiple && Array.isArray(value)) {
|
|
@@ -71,9 +70,9 @@ export class Datetime {
|
|
|
71
70
|
* data. This should be used when rendering an
|
|
72
71
|
* interface in an environment where the `value`
|
|
73
72
|
* may not be set. This function works
|
|
74
|
-
* by returning the first selected date
|
|
75
|
-
* falling back to
|
|
76
|
-
* is selected.
|
|
73
|
+
* by returning the first selected date in
|
|
74
|
+
* "activePartsClone" and then falling back to
|
|
75
|
+
* defaultParts if no active date is selected.
|
|
77
76
|
*/
|
|
78
77
|
this.getActivePartsWithFallback = () => {
|
|
79
78
|
var _a;
|
|
@@ -81,8 +80,8 @@ export class Datetime {
|
|
|
81
80
|
return (_a = this.getActivePart()) !== null && _a !== void 0 ? _a : defaultParts;
|
|
82
81
|
};
|
|
83
82
|
this.getActivePart = () => {
|
|
84
|
-
const {
|
|
85
|
-
return Array.isArray(
|
|
83
|
+
const { activePartsClone } = this;
|
|
84
|
+
return Array.isArray(activePartsClone) ? activePartsClone[0] : activePartsClone;
|
|
86
85
|
};
|
|
87
86
|
this.closeParentOverlay = () => {
|
|
88
87
|
const popoverOrModal = this.el.closest('ion-modal, ion-popover');
|
|
@@ -94,7 +93,7 @@ export class Datetime {
|
|
|
94
93
|
this.workingParts = Object.assign({}, parts);
|
|
95
94
|
};
|
|
96
95
|
this.setActiveParts = (parts, removeDate = false) => {
|
|
97
|
-
const { multiple, minParts, maxParts,
|
|
96
|
+
const { multiple, minParts, maxParts, activePartsClone } = this;
|
|
98
97
|
/**
|
|
99
98
|
* When setting the active parts, it is possible
|
|
100
99
|
* to set invalid data. For example,
|
|
@@ -108,7 +107,16 @@ export class Datetime {
|
|
|
108
107
|
const validatedParts = validateParts(parts, minParts, maxParts);
|
|
109
108
|
this.setWorkingParts(validatedParts);
|
|
110
109
|
if (multiple) {
|
|
111
|
-
|
|
110
|
+
/**
|
|
111
|
+
* We read from activePartsClone here because valueChanged() only updates that,
|
|
112
|
+
* so it's the more reliable source of truth. If we read from activeParts, then
|
|
113
|
+
* if you click July 1, manually set the value to July 2, and then click July 3,
|
|
114
|
+
* the new value would be [July 1, July 3], ignoring the value set.
|
|
115
|
+
*
|
|
116
|
+
* We can then pass the new value to activeParts (rather than activePartsClone)
|
|
117
|
+
* since the clone will be updated automatically by activePartsChanged().
|
|
118
|
+
*/
|
|
119
|
+
const activePartsArray = Array.isArray(activePartsClone) ? activePartsClone : [activePartsClone];
|
|
112
120
|
if (removeDate) {
|
|
113
121
|
this.activeParts = activePartsArray.filter((p) => !isSameDay(p, validatedParts));
|
|
114
122
|
}
|
|
@@ -233,7 +241,7 @@ export class Datetime {
|
|
|
233
241
|
/**
|
|
234
242
|
* Get the number of padding days so
|
|
235
243
|
* we know how much to offset our next selector by
|
|
236
|
-
* to grab the correct
|
|
244
|
+
* to grab the correct calenday-day element.
|
|
237
245
|
*/
|
|
238
246
|
const padding = currentMonth.querySelectorAll('.calendar-day-padding');
|
|
239
247
|
const { day } = this.workingParts;
|
|
@@ -244,7 +252,7 @@ export class Datetime {
|
|
|
244
252
|
* Get the calendar day element
|
|
245
253
|
* and focus it.
|
|
246
254
|
*/
|
|
247
|
-
const dayEl = currentMonth.querySelector(`.calendar-day
|
|
255
|
+
const dayEl = currentMonth.querySelector(`.calendar-day:nth-of-type(${padding.length + day})`);
|
|
248
256
|
if (dayEl) {
|
|
249
257
|
dayEl.focus();
|
|
250
258
|
}
|
|
@@ -325,19 +333,6 @@ export class Datetime {
|
|
|
325
333
|
const monthBox = month.getBoundingClientRect();
|
|
326
334
|
if (Math.abs(monthBox.x - box.x) > 2)
|
|
327
335
|
return;
|
|
328
|
-
/**
|
|
329
|
-
* If we're force-rendering a month, assume we've
|
|
330
|
-
* scrolled to that and return it.
|
|
331
|
-
*
|
|
332
|
-
* If forceRenderDate is ever used in a context where the
|
|
333
|
-
* forced month is not immediately auto-scrolled to, this
|
|
334
|
-
* should be updated to also check whether `month` has the
|
|
335
|
-
* same month and year as the forced date.
|
|
336
|
-
*/
|
|
337
|
-
const { forceRenderDate } = this;
|
|
338
|
-
if (forceRenderDate !== undefined) {
|
|
339
|
-
return { month: forceRenderDate.month, year: forceRenderDate.year, day: forceRenderDate.day };
|
|
340
|
-
}
|
|
341
336
|
/**
|
|
342
337
|
* From here, we can determine if the start
|
|
343
338
|
* month or the end month was scrolled into view.
|
|
@@ -392,9 +387,6 @@ export class Datetime {
|
|
|
392
387
|
this.setWorkingParts(Object.assign(Object.assign({}, this.workingParts), { month, day: day, year }));
|
|
393
388
|
calendarBodyRef.scrollLeft = workingMonth.clientWidth * (isRTL(this.el) ? -1 : 1);
|
|
394
389
|
calendarBodyRef.style.removeProperty('overflow');
|
|
395
|
-
if (this.resolveForceDateScrolling) {
|
|
396
|
-
this.resolveForceDateScrolling();
|
|
397
|
-
}
|
|
398
390
|
});
|
|
399
391
|
};
|
|
400
392
|
/**
|
|
@@ -449,17 +441,10 @@ export class Datetime {
|
|
|
449
441
|
}
|
|
450
442
|
};
|
|
451
443
|
this.processValue = (value) => {
|
|
452
|
-
const hasValue = value !== null && value !== undefined
|
|
444
|
+
const hasValue = value !== null && value !== undefined;
|
|
453
445
|
const valueToProcess = hasValue ? parseDate(value) : this.defaultParts;
|
|
454
|
-
const { minParts, maxParts
|
|
446
|
+
const { minParts, maxParts } = this;
|
|
455
447
|
this.warnIfIncorrectValueUsage();
|
|
456
|
-
/**
|
|
457
|
-
* Return early if the value wasn't parsed correctly, such as
|
|
458
|
-
* if an improperly formatted date string was provided.
|
|
459
|
-
*/
|
|
460
|
-
if (!valueToProcess) {
|
|
461
|
-
return;
|
|
462
|
-
}
|
|
463
448
|
/**
|
|
464
449
|
* Datetime should only warn of out of bounds values
|
|
465
450
|
* if set by the user. If the `value` is undefined,
|
|
@@ -477,9 +462,16 @@ export class Datetime {
|
|
|
477
462
|
* that the values don't necessarily have to be in order.
|
|
478
463
|
*/
|
|
479
464
|
const singleValue = Array.isArray(valueToProcess) ? valueToProcess[0] : valueToProcess;
|
|
480
|
-
const
|
|
481
|
-
const { month, day, year, hour, minute } = targetValue;
|
|
465
|
+
const { month, day, year, hour, minute } = clampDate(singleValue, minParts, maxParts);
|
|
482
466
|
const ampm = parseAmPm(hour);
|
|
467
|
+
this.setWorkingParts({
|
|
468
|
+
month,
|
|
469
|
+
day,
|
|
470
|
+
year,
|
|
471
|
+
hour,
|
|
472
|
+
minute,
|
|
473
|
+
ampm,
|
|
474
|
+
});
|
|
483
475
|
/**
|
|
484
476
|
* Since `activeParts` indicates a value that
|
|
485
477
|
* been explicitly selected either by the
|
|
@@ -509,62 +501,6 @@ export class Datetime {
|
|
|
509
501
|
*/
|
|
510
502
|
this.activeParts = [];
|
|
511
503
|
}
|
|
512
|
-
/**
|
|
513
|
-
* Only animate if:
|
|
514
|
-
* 1. We're using grid style (wheel style pickers should just jump to new value)
|
|
515
|
-
* 2. The month and/or year actually changed, and both are defined (otherwise there's nothing to animate to)
|
|
516
|
-
* 3. The calendar body is visible (prevents animation when in collapsed datetime-button, for example)
|
|
517
|
-
* 4. The month/year picker is not open (since you wouldn't see the animation anyway)
|
|
518
|
-
*/
|
|
519
|
-
const didChangeMonth = (month !== undefined && month !== workingParts.month) || (year !== undefined && year !== workingParts.year);
|
|
520
|
-
const bodyIsVisible = el.classList.contains('datetime-ready');
|
|
521
|
-
const { isGridStyle, showMonthAndYear } = this;
|
|
522
|
-
if (isGridStyle && didChangeMonth && bodyIsVisible && !showMonthAndYear) {
|
|
523
|
-
this.animateToDate(targetValue);
|
|
524
|
-
}
|
|
525
|
-
else {
|
|
526
|
-
/**
|
|
527
|
-
* We only need to do this if we didn't just animate to a new month,
|
|
528
|
-
* since that calls prevMonth/nextMonth which calls setWorkingParts for us.
|
|
529
|
-
*/
|
|
530
|
-
this.setWorkingParts({
|
|
531
|
-
month,
|
|
532
|
-
day,
|
|
533
|
-
year,
|
|
534
|
-
hour,
|
|
535
|
-
minute,
|
|
536
|
-
ampm,
|
|
537
|
-
});
|
|
538
|
-
}
|
|
539
|
-
};
|
|
540
|
-
this.animateToDate = async (targetValue) => {
|
|
541
|
-
const { workingParts } = this;
|
|
542
|
-
/**
|
|
543
|
-
* Tell other render functions that we need to force the
|
|
544
|
-
* target month to appear in place of the actual next/prev month.
|
|
545
|
-
* Because this is a State variable, a rerender will be triggered
|
|
546
|
-
* automatically, updating the rendered months.
|
|
547
|
-
*/
|
|
548
|
-
this.forceRenderDate = targetValue;
|
|
549
|
-
/**
|
|
550
|
-
* Flag that we've started scrolling to the forced date.
|
|
551
|
-
* The resolve function will be called by the datetime's
|
|
552
|
-
* scroll listener when it's done updating everything.
|
|
553
|
-
* This is a replacement for making prev/nextMonth async,
|
|
554
|
-
* since the logic we're waiting on is in a listener.
|
|
555
|
-
*/
|
|
556
|
-
const forceDateScrollingPromise = new Promise((resolve) => {
|
|
557
|
-
this.resolveForceDateScrolling = resolve;
|
|
558
|
-
});
|
|
559
|
-
/**
|
|
560
|
-
* Animate smoothly to the forced month. This will also update
|
|
561
|
-
* workingParts and correct the surrounding months for us.
|
|
562
|
-
*/
|
|
563
|
-
const targetMonthIsBefore = isBefore(targetValue, workingParts);
|
|
564
|
-
targetMonthIsBefore ? this.prevMonth() : this.nextMonth();
|
|
565
|
-
await forceDateScrollingPromise;
|
|
566
|
-
this.resolveForceDateScrolling = undefined;
|
|
567
|
-
this.forceRenderDate = undefined;
|
|
568
504
|
};
|
|
569
505
|
this.onFocus = () => {
|
|
570
506
|
this.ionFocus.emit();
|
|
@@ -620,7 +556,6 @@ export class Datetime {
|
|
|
620
556
|
ampm: 'pm',
|
|
621
557
|
};
|
|
622
558
|
this.isTimePopoverOpen = false;
|
|
623
|
-
this.forceRenderDate = undefined;
|
|
624
559
|
this.color = 'primary';
|
|
625
560
|
this.name = this.inputId;
|
|
626
561
|
this.disabled = false;
|
|
@@ -660,11 +595,6 @@ export class Datetime {
|
|
|
660
595
|
maxChanged() {
|
|
661
596
|
this.processMaxParts();
|
|
662
597
|
}
|
|
663
|
-
get isGridStyle() {
|
|
664
|
-
const { presentation, preferWheel } = this;
|
|
665
|
-
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
666
|
-
return hasDatePresentation && !preferWheel;
|
|
667
|
-
}
|
|
668
598
|
yearValuesChanged() {
|
|
669
599
|
this.parsedYearValues = convertToArrayOfNumbers(this.yearValues);
|
|
670
600
|
}
|
|
@@ -680,13 +610,51 @@ export class Datetime {
|
|
|
680
610
|
minuteValuesChanged() {
|
|
681
611
|
this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues);
|
|
682
612
|
}
|
|
613
|
+
activePartsChanged() {
|
|
614
|
+
this.activePartsClone = this.activeParts;
|
|
615
|
+
}
|
|
683
616
|
/**
|
|
684
617
|
* Update the datetime value when the value changes
|
|
685
618
|
*/
|
|
686
|
-
|
|
687
|
-
const { value } = this;
|
|
619
|
+
valueChanged() {
|
|
620
|
+
const { value, minParts, maxParts, workingParts } = this;
|
|
688
621
|
if (this.hasValue()) {
|
|
689
|
-
this.
|
|
622
|
+
this.warnIfIncorrectValueUsage();
|
|
623
|
+
/**
|
|
624
|
+
* Clones the value of the `activeParts` to the private clone, to update
|
|
625
|
+
* the date display on the current render cycle without causing another render.
|
|
626
|
+
*
|
|
627
|
+
* This allows us to update the current value's date/time display without
|
|
628
|
+
* refocusing or shifting the user's display (leaves the user in place).
|
|
629
|
+
*/
|
|
630
|
+
const valueDateParts = parseDate(value);
|
|
631
|
+
if (valueDateParts) {
|
|
632
|
+
warnIfValueOutOfBounds(valueDateParts, minParts, maxParts);
|
|
633
|
+
if (Array.isArray(valueDateParts)) {
|
|
634
|
+
this.activePartsClone = [...valueDateParts];
|
|
635
|
+
}
|
|
636
|
+
else {
|
|
637
|
+
const { month, day, year, hour, minute } = valueDateParts;
|
|
638
|
+
const ampm = hour != null ? (hour >= 12 ? 'pm' : 'am') : undefined;
|
|
639
|
+
this.activePartsClone = Object.assign(Object.assign({}, this.activeParts), { month,
|
|
640
|
+
day,
|
|
641
|
+
year,
|
|
642
|
+
hour,
|
|
643
|
+
minute,
|
|
644
|
+
ampm });
|
|
645
|
+
/**
|
|
646
|
+
* The working parts am/pm value must be updated when the value changes, to
|
|
647
|
+
* ensure the time picker hour column values are generated correctly.
|
|
648
|
+
*
|
|
649
|
+
* Note that we don't need to do this if valueDateParts is an array, since
|
|
650
|
+
* multiple="true" does not apply to time pickers.
|
|
651
|
+
*/
|
|
652
|
+
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm }));
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
else {
|
|
656
|
+
printIonWarning(`Unable to parse date string: ${value}. Please provide a valid ISO 8601 datetime string.`);
|
|
657
|
+
}
|
|
690
658
|
}
|
|
691
659
|
this.emitStyle();
|
|
692
660
|
this.ionValueChange.emit({ value });
|
|
@@ -889,6 +857,8 @@ export class Datetime {
|
|
|
889
857
|
printIonWarning('The highlightedDates property is not supported with preferWheel="true".', el);
|
|
890
858
|
}
|
|
891
859
|
}
|
|
860
|
+
this.processMinParts();
|
|
861
|
+
this.processMaxParts();
|
|
892
862
|
const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues));
|
|
893
863
|
const minuteValues = (this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues));
|
|
894
864
|
const monthValues = (this.parsedMonthValues = convertToArrayOfNumbers(this.monthValues));
|
|
@@ -896,8 +866,6 @@ export class Datetime {
|
|
|
896
866
|
const dayValues = (this.parsedDayValues = convertToArrayOfNumbers(this.dayValues));
|
|
897
867
|
const todayParts = (this.todayParts = parseDate(getToday()));
|
|
898
868
|
this.defaultParts = getClosestValidDate(todayParts, monthValues, dayValues, yearValues, hourValues, minuteValues);
|
|
899
|
-
this.processMinParts();
|
|
900
|
-
this.processMaxParts();
|
|
901
869
|
this.processValue(this.value);
|
|
902
870
|
this.emitStyle();
|
|
903
871
|
}
|
|
@@ -1282,7 +1250,7 @@ export class Datetime {
|
|
|
1282
1250
|
const { el, highlightedDates, isDateEnabled, multiple } = this;
|
|
1283
1251
|
const referenceParts = { month, day, year };
|
|
1284
1252
|
const isCalendarPadding = day === null;
|
|
1285
|
-
const { isActive, isToday, ariaLabel, ariaSelected, disabled, text } = getCalendarDayState(this.locale, referenceParts, this.
|
|
1253
|
+
const { isActive, isToday, ariaLabel, ariaSelected, disabled, text } = getCalendarDayState(this.locale, referenceParts, this.activePartsClone, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
|
|
1286
1254
|
const dateIsoString = convertDataToISO(referenceParts);
|
|
1287
1255
|
let isCalDayDisabled = isCalMonthDisabled || disabled;
|
|
1288
1256
|
if (!isCalDayDisabled && isDateEnabled !== undefined) {
|
|
@@ -1306,30 +1274,14 @@ export class Datetime {
|
|
|
1306
1274
|
if (highlightedDates !== undefined && !isActive && day !== null) {
|
|
1307
1275
|
dateStyle = getHighlightStyles(highlightedDates, dateIsoString, el);
|
|
1308
1276
|
}
|
|
1309
|
-
|
|
1310
|
-
// "Filler days" at the beginning of the grid should not get the calendar day
|
|
1311
|
-
// CSS parts added to them
|
|
1312
|
-
if (!isCalendarPadding) {
|
|
1313
|
-
dateParts = `calendar-day${isActive ? ' active' : ''}${isToday ? ' today' : ''}${isCalDayDisabled ? ' disabled' : ''}`;
|
|
1314
|
-
}
|
|
1315
|
-
return (h("div", { class: "calendar-day-wrapper" }, h("button", {
|
|
1316
|
-
// We need to use !important for the inline styles here because
|
|
1317
|
-
// otherwise the CSS shadow parts will override these styles.
|
|
1318
|
-
// See https://github.com/WICG/webcomponents/issues/847
|
|
1319
|
-
// Both the CSS shadow parts and highlightedDates styles are
|
|
1320
|
-
// provided by the developer, but highlightedDates styles should
|
|
1321
|
-
// always take priority.
|
|
1322
|
-
ref: (el) => {
|
|
1323
|
-
if (el) {
|
|
1324
|
-
el.style.setProperty('color', `${dateStyle ? dateStyle.textColor : ''}`, 'important');
|
|
1325
|
-
el.style.setProperty('background-color', `${dateStyle ? dateStyle.backgroundColor : ''}`, 'important');
|
|
1326
|
-
}
|
|
1327
|
-
}, tabindex: "-1", "data-day": day, "data-month": month, "data-year": year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isCalDayDisabled, class: {
|
|
1277
|
+
return (h("button", { tabindex: "-1", "data-day": day, "data-month": month, "data-year": year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isCalDayDisabled, class: {
|
|
1328
1278
|
'calendar-day-padding': isCalendarPadding,
|
|
1329
1279
|
'calendar-day': true,
|
|
1330
1280
|
'calendar-day-active': isActive,
|
|
1331
1281
|
'calendar-day-today': isToday,
|
|
1332
|
-
},
|
|
1282
|
+
}, style: dateStyle && {
|
|
1283
|
+
color: dateStyle.textColor,
|
|
1284
|
+
}, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
|
|
1333
1285
|
if (isCalendarPadding) {
|
|
1334
1286
|
return;
|
|
1335
1287
|
}
|
|
@@ -1349,12 +1301,13 @@ export class Datetime {
|
|
|
1349
1301
|
day,
|
|
1350
1302
|
year }));
|
|
1351
1303
|
}
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1304
|
+
} }, h("div", { class: "calendar-day-highlight", style: {
|
|
1305
|
+
backgroundColor: dateStyle === null || dateStyle === void 0 ? void 0 : dateStyle.backgroundColor,
|
|
1306
|
+
} }), text));
|
|
1354
1307
|
}))));
|
|
1355
1308
|
}
|
|
1356
1309
|
renderCalendarBody() {
|
|
1357
|
-
return (h("div", { class: "calendar-body ion-focusable", ref: (el) => (this.calendarBodyRef = el), tabindex: "0" }, generateMonths(this.workingParts
|
|
1310
|
+
return (h("div", { class: "calendar-body ion-focusable", ref: (el) => (this.calendarBodyRef = el), tabindex: "0" }, generateMonths(this.workingParts).map(({ month, year }) => {
|
|
1358
1311
|
return this.renderMonth(month, year);
|
|
1359
1312
|
})));
|
|
1360
1313
|
}
|
|
@@ -1509,13 +1462,14 @@ export class Datetime {
|
|
|
1509
1462
|
}
|
|
1510
1463
|
}
|
|
1511
1464
|
render() {
|
|
1512
|
-
const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size
|
|
1465
|
+
const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size } = this;
|
|
1513
1466
|
const mode = getIonMode(this);
|
|
1514
1467
|
const isMonthAndYearPresentation = presentation === 'year' || presentation === 'month' || presentation === 'month-year';
|
|
1515
1468
|
const shouldShowMonthAndYear = showMonthAndYear || isMonthAndYearPresentation;
|
|
1516
1469
|
const monthYearPickerOpen = showMonthAndYear && !isMonthAndYearPresentation;
|
|
1517
1470
|
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
1518
1471
|
const hasWheelVariant = hasDatePresentation && preferWheel;
|
|
1472
|
+
const hasGrid = hasDatePresentation && !preferWheel;
|
|
1519
1473
|
renderHiddenInput(true, el, name, formatValue(value), disabled);
|
|
1520
1474
|
return (h(Host, { "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
|
|
1521
1475
|
[mode]: true,
|
|
@@ -1526,7 +1480,7 @@ export class Datetime {
|
|
|
1526
1480
|
[`datetime-presentation-${presentation}`]: true,
|
|
1527
1481
|
[`datetime-size-${size}`]: true,
|
|
1528
1482
|
[`datetime-prefer-wheel`]: hasWheelVariant,
|
|
1529
|
-
[`datetime-grid`]:
|
|
1483
|
+
[`datetime-grid`]: hasGrid,
|
|
1530
1484
|
})) }, this.renderDatetime(mode)));
|
|
1531
1485
|
}
|
|
1532
1486
|
static get is() { return "ion-datetime"; }
|
|
@@ -2085,8 +2039,7 @@ export class Datetime {
|
|
|
2085
2039
|
"showMonthAndYear": {},
|
|
2086
2040
|
"activeParts": {},
|
|
2087
2041
|
"workingParts": {},
|
|
2088
|
-
"isTimePopoverOpen": {}
|
|
2089
|
-
"forceRenderDate": {}
|
|
2042
|
+
"isTimePopoverOpen": {}
|
|
2090
2043
|
};
|
|
2091
2044
|
}
|
|
2092
2045
|
static get events() {
|
|
@@ -2314,6 +2267,9 @@ export class Datetime {
|
|
|
2314
2267
|
}, {
|
|
2315
2268
|
"propName": "minuteValues",
|
|
2316
2269
|
"methodName": "minuteValuesChanged"
|
|
2270
|
+
}, {
|
|
2271
|
+
"propName": "activeParts",
|
|
2272
|
+
"methodName": "activePartsChanged"
|
|
2317
2273
|
}, {
|
|
2318
2274
|
"propName": "value",
|
|
2319
2275
|
"methodName": "valueChanged"
|
|
@@ -1,3 +1,36 @@
|
|
|
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
|
+
*/
|
|
1
34
|
:host {
|
|
2
35
|
/**
|
|
3
36
|
* @prop --background: The primary background of the datetime component.
|
|
@@ -281,8 +314,6 @@ ion-picker-column-internal {
|
|
|
281
314
|
}
|
|
282
315
|
|
|
283
316
|
:host .calendar-body .calendar-month {
|
|
284
|
-
display: flex;
|
|
285
|
-
flex-flow: column;
|
|
286
317
|
/**
|
|
287
318
|
* Swiping should snap to at
|
|
288
319
|
* most one month at a time.
|
|
@@ -316,21 +347,11 @@ ion-picker-column-internal {
|
|
|
316
347
|
grid-template-columns: repeat(7, 1fr);
|
|
317
348
|
}
|
|
318
349
|
|
|
319
|
-
:host .calendar-day-wrapper {
|
|
320
|
-
display: flex;
|
|
321
|
-
align-items: center;
|
|
322
|
-
justify-content: center;
|
|
323
|
-
min-width: 0;
|
|
324
|
-
min-height: 0;
|
|
325
|
-
overflow: visible;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
350
|
/**
|
|
329
351
|
* Center the day text vertically
|
|
330
352
|
* and horizontally within its grid cell.
|
|
331
353
|
*/
|
|
332
354
|
:host .calendar-day {
|
|
333
|
-
border-radius: 50%;
|
|
334
355
|
-webkit-padding-start: 0px;
|
|
335
356
|
padding-inline-start: 0px;
|
|
336
357
|
-webkit-padding-end: 0px;
|
|
@@ -362,9 +383,18 @@ ion-picker-column-internal {
|
|
|
362
383
|
opacity: 0.4;
|
|
363
384
|
}
|
|
364
385
|
|
|
365
|
-
.calendar-day
|
|
366
|
-
|
|
367
|
-
|
|
386
|
+
.calendar-day-highlight {
|
|
387
|
+
border-radius: 32px;
|
|
388
|
+
-webkit-padding-start: 4px;
|
|
389
|
+
padding-inline-start: 4px;
|
|
390
|
+
-webkit-padding-end: 4px;
|
|
391
|
+
padding-inline-end: 4px;
|
|
392
|
+
padding-top: 4px;
|
|
393
|
+
padding-bottom: 4px;
|
|
394
|
+
position: absolute;
|
|
395
|
+
width: 32px;
|
|
396
|
+
height: 32px;
|
|
397
|
+
z-index: -1;
|
|
368
398
|
}
|
|
369
399
|
|
|
370
400
|
:host .datetime-time {
|
|
@@ -418,6 +448,39 @@ ion-picker-column-internal {
|
|
|
418
448
|
--color: var(--ion-color-base);
|
|
419
449
|
}
|
|
420
450
|
|
|
451
|
+
/**
|
|
452
|
+
* Convert a font size to a dynamic font size.
|
|
453
|
+
* Fonts that participate in Dynamic Type should use
|
|
454
|
+
* dynamic font sizes.
|
|
455
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
456
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
457
|
+
* convert to a unit other than $baselineUnit.
|
|
458
|
+
*/
|
|
459
|
+
/**
|
|
460
|
+
* Convert a font size to a dynamic font size but impose
|
|
461
|
+
* a maximum font size.
|
|
462
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
463
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
464
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
465
|
+
* convert to a unit other than $baselineUnit.
|
|
466
|
+
*/
|
|
467
|
+
/**
|
|
468
|
+
* Convert a font size to a dynamic font size but impose
|
|
469
|
+
* a minimum font size.
|
|
470
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
471
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
472
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
473
|
+
* convert to a unit other than $baselineUnit.
|
|
474
|
+
*/
|
|
475
|
+
/**
|
|
476
|
+
* Convert a font size to a dynamic font size but impose
|
|
477
|
+
* maximum and minimum font sizes.
|
|
478
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
479
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
480
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
481
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
482
|
+
* convert to a unit other than $baselineUnit.
|
|
483
|
+
*/
|
|
421
484
|
:host {
|
|
422
485
|
--background: var(--ion-color-step-100, #ffffff);
|
|
423
486
|
--title-color: var(--ion-color-contrast);
|
|
@@ -483,21 +546,32 @@ ion-picker-column-internal {
|
|
|
483
546
|
}
|
|
484
547
|
|
|
485
548
|
:host .calendar-day {
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
549
|
+
-webkit-padding-start: 0px;
|
|
550
|
+
padding-inline-start: 0px;
|
|
551
|
+
-webkit-padding-end: 0;
|
|
552
|
+
padding-inline-end: 0;
|
|
553
|
+
padding-top: 13px;
|
|
554
|
+
padding-bottom: 13px;
|
|
489
555
|
font-size: 14px;
|
|
490
556
|
}
|
|
491
557
|
|
|
558
|
+
.calendar-day:focus .calendar-day-highlight {
|
|
559
|
+
background: rgba(var(--ion-color-base-rgb), 0.2);
|
|
560
|
+
box-shadow: 0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);
|
|
561
|
+
}
|
|
562
|
+
|
|
492
563
|
/**
|
|
493
564
|
* Day that today but not selected
|
|
494
565
|
* should have ion-color for text color.
|
|
495
566
|
*/
|
|
496
567
|
:host .calendar-day.calendar-day-today {
|
|
497
|
-
border: 1px solid var(--ion-color-base);
|
|
498
568
|
color: var(--ion-color-base);
|
|
499
569
|
}
|
|
500
570
|
|
|
571
|
+
.calendar-day.calendar-day-today .calendar-day-highlight {
|
|
572
|
+
border: 1px solid var(--ion-color-base);
|
|
573
|
+
}
|
|
574
|
+
|
|
501
575
|
/**
|
|
502
576
|
* Day that is not today but
|
|
503
577
|
* is selected should have ion-color for
|
|
@@ -507,7 +581,7 @@ ion-picker-column-internal {
|
|
|
507
581
|
color: var(--ion-color-contrast);
|
|
508
582
|
}
|
|
509
583
|
|
|
510
|
-
.calendar-day.calendar-day-active {
|
|
584
|
+
.calendar-day.calendar-day-active .calendar-day-highlight {
|
|
511
585
|
border: 1px solid var(--ion-color-base);
|
|
512
586
|
background: var(--ion-color-base);
|
|
513
587
|
}
|
|
@@ -348,28 +348,3 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
|
|
|
348
348
|
});
|
|
349
349
|
});
|
|
350
350
|
});
|
|
351
|
-
/**
|
|
352
|
-
* This behavior does not differ across
|
|
353
|
-
* directions.
|
|
354
|
-
*/
|
|
355
|
-
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
356
|
-
test.describe(title('datetime: focus'), () => {
|
|
357
|
-
test('should focus the selected day and then the day after', async ({ page }) => {
|
|
358
|
-
await page.setContent(`
|
|
359
|
-
<ion-datetime value="2023-08-01"></ion-datetime>
|
|
360
|
-
`, config);
|
|
361
|
-
await page.waitForSelector('.datetime-ready');
|
|
362
|
-
const datetime = page.locator('ion-datetime');
|
|
363
|
-
const day = datetime.locator(`.calendar-day[data-day='1'][data-month='8']`);
|
|
364
|
-
await day.focus();
|
|
365
|
-
await page.waitForChanges();
|
|
366
|
-
await expect(day).toBeFocused();
|
|
367
|
-
await expect(datetime).toHaveScreenshot(screenshot(`datetime-focus-selected-calendar-day`));
|
|
368
|
-
await page.keyboard.press('ArrowRight');
|
|
369
|
-
await page.waitForChanges();
|
|
370
|
-
const nextDay = datetime.locator(`.calendar-day[data-day='2'][data-month='8']`);
|
|
371
|
-
await expect(nextDay).toBeFocused();
|
|
372
|
-
await expect(datetime).toHaveScreenshot(screenshot(`datetime-focus-calendar-day`));
|
|
373
|
-
});
|
|
374
|
-
});
|
|
375
|
-
});
|
|
@@ -10,7 +10,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
10
10
|
test.describe(title('datetime: color'), () => {
|
|
11
11
|
test('should not have visual regressions', async ({ page }) => {
|
|
12
12
|
await page.goto('/src/components/datetime/test/color', config);
|
|
13
|
-
const datetime = page.locator('
|
|
13
|
+
const datetime = page.locator('ion-datetime');
|
|
14
14
|
await expect(datetime).toHaveScreenshot(screenshot(`datetime-color`));
|
|
15
15
|
await page.evaluate(() => document.body.classList.toggle('dark'));
|
|
16
16
|
await page.waitForChanges();
|
|
@@ -13,7 +13,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
13
13
|
await expect(datetime).toHaveScreenshot(screenshot(`datetime-custom-wheel`));
|
|
14
14
|
});
|
|
15
15
|
test('should allow styling time picker in grid style datetimes', async ({ page }) => {
|
|
16
|
-
const timeButton = page.locator('
|
|
16
|
+
const timeButton = page.locator('ion-datetime .time-body');
|
|
17
17
|
const popover = page.locator('.popover-viewport');
|
|
18
18
|
const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent');
|
|
19
19
|
await expect(timeButton).toHaveScreenshot(screenshot(`datetime-custom-time-button`));
|
|
@@ -22,31 +22,5 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
22
22
|
await expect(popover).toHaveScreenshot(screenshot(`datetime-custom-time-picker`));
|
|
23
23
|
await expect(timeButton).toHaveScreenshot(screenshot(`datetime-custom-time-button-active`));
|
|
24
24
|
});
|
|
25
|
-
test('should allow styling calendar days in grid style datetimes', async ({ page }) => {
|
|
26
|
-
const datetime = page.locator('#custom-calendar-days');
|
|
27
|
-
await expect(datetime).toHaveScreenshot(screenshot(`datetime-custom-calendar-days`));
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
/**
|
|
32
|
-
* This behavior does not differ across
|
|
33
|
-
* directions.
|
|
34
|
-
*/
|
|
35
|
-
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
36
|
-
test.describe(title('datetime: custom focus'), () => {
|
|
37
|
-
test('should focus the selected day and then the day after', async ({ page }) => {
|
|
38
|
-
await page.goto(`/src/components/datetime/test/custom`, config);
|
|
39
|
-
const datetime = page.locator('#custom-calendar-days');
|
|
40
|
-
const day = datetime.locator(`.calendar-day[data-day='15'][data-month='6']`);
|
|
41
|
-
await day.focus();
|
|
42
|
-
await page.waitForChanges();
|
|
43
|
-
await expect(day).toBeFocused();
|
|
44
|
-
await expect(datetime).toHaveScreenshot(screenshot(`datetime-custom-focus-selected-calendar-day`));
|
|
45
|
-
await page.keyboard.press('ArrowRight');
|
|
46
|
-
await page.waitForChanges();
|
|
47
|
-
const nextDay = datetime.locator(`.calendar-day[data-day='16'][data-month='6']`);
|
|
48
|
-
await expect(nextDay).toBeFocused();
|
|
49
|
-
await expect(datetime).toHaveScreenshot(screenshot(`datetime-custom-focus-calendar-day`));
|
|
50
|
-
});
|
|
51
25
|
});
|
|
52
26
|
});
|