voyager-ionic-core 7.5.1 → 7.6.0
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 +299 -289
- package/components/alert.js +477 -467
- package/components/animation.js +992 -976
- package/components/backdrop.js +56 -56
- package/components/button-active.js +56 -56
- package/components/button.js +236 -236
- package/components/buttons.js +29 -29
- package/components/capacitor.js +4 -4
- package/components/checkbox.js +172 -170
- package/components/config.js +142 -142
- package/components/cubic-bezier.js +49 -49
- package/components/data.js +1055 -1055
- package/components/dir.js +5 -5
- package/components/focus-visible.js +63 -63
- package/components/form-controller.js +45 -49
- package/components/framework-delegate.js +121 -121
- package/components/gesture-controller.js +182 -182
- package/components/haptic.js +150 -150
- package/components/hardware-back-button.js +48 -48
- package/components/helpers.js +257 -257
- package/components/icon.js +133 -133
- package/components/index.js +95 -95
- package/components/index2.js +163 -163
- package/components/index3.js +417 -417
- package/components/index4.js +257 -259
- package/components/index5.js +0 -22
- package/components/index6.js +3 -3
- package/components/index8.js +58 -59
- package/components/index9.js +171 -171
- package/components/input-shims.js +488 -475
- package/components/input.utils.js +107 -106
- package/components/ion-accordion-group.d.ts +2 -2
- package/components/ion-accordion-group.js +223 -213
- package/components/ion-accordion.d.ts +2 -2
- package/components/ion-accordion.js +326 -326
- package/components/ion-action-sheet.d.ts +2 -2
- package/components/ion-alert.d.ts +2 -2
- package/components/ion-app.d.ts +2 -2
- package/components/ion-app.js +93 -93
- package/components/ion-avatar.d.ts +2 -2
- package/components/ion-avatar.js +23 -23
- package/components/ion-back-button.d.ts +2 -2
- package/components/ion-back-button.js +102 -102
- package/components/ion-backdrop.d.ts +2 -2
- package/components/ion-badge.d.ts +2 -2
- package/components/ion-badge.js +29 -29
- package/components/ion-breadcrumb.d.ts +2 -2
- package/components/ion-breadcrumb.js +111 -111
- package/components/ion-breadcrumbs.d.ts +2 -2
- package/components/ion-breadcrumbs.js +139 -139
- package/components/ion-button.d.ts +2 -2
- package/components/ion-buttons.d.ts +2 -2
- package/components/ion-card-content.d.ts +2 -2
- package/components/ion-card-content.js +27 -27
- package/components/ion-card-header.d.ts +2 -2
- package/components/ion-card-header.js +33 -33
- package/components/ion-card-subtitle.d.ts +2 -2
- package/components/ion-card-subtitle.js +30 -30
- package/components/ion-card-title.d.ts +2 -2
- package/components/ion-card-title.js +30 -30
- package/components/ion-card.d.ts +2 -2
- package/components/ion-card.js +78 -78
- package/components/ion-checkbox.d.ts +2 -2
- package/components/ion-chip.d.ts +2 -2
- package/components/ion-chip.js +41 -41
- package/components/ion-col.d.ts +2 -2
- package/components/ion-col.js +156 -156
- package/components/ion-content.d.ts +2 -2
- package/components/ion-content.js +394 -394
- package/components/ion-datetime-button.d.ts +2 -2
- package/components/ion-datetime-button.js +348 -348
- package/components/ion-datetime.d.ts +2 -2
- package/components/ion-datetime.js +1722 -1684
- package/components/ion-fab-button.d.ts +2 -2
- package/components/ion-fab-button.js +109 -109
- package/components/ion-fab-list.d.ts +2 -2
- package/components/ion-fab-list.js +45 -45
- package/components/ion-fab.d.ts +2 -2
- package/components/ion-fab.js +76 -76
- package/components/ion-footer.d.ts +2 -2
- package/components/ion-footer.js +124 -124
- package/components/ion-grid.d.ts +2 -2
- package/components/ion-grid.js +27 -27
- package/components/ion-header.d.ts +2 -2
- package/components/ion-header.js +299 -299
- package/components/ion-img.d.ts +2 -2
- package/components/ion-img.js +97 -97
- package/components/ion-infinite-scroll-content.d.ts +2 -2
- package/components/ion-infinite-scroll-content.js +49 -49
- package/components/ion-infinite-scroll.d.ts +2 -2
- package/components/ion-infinite-scroll.js +187 -179
- package/components/ion-input.d.ts +2 -2
- package/components/ion-input.js +482 -450
- package/components/ion-item-divider.d.ts +2 -2
- package/components/ion-item-divider.js +36 -36
- package/components/ion-item-group.d.ts +2 -2
- package/components/ion-item-group.js +28 -28
- package/components/ion-item-option.d.ts +2 -2
- package/components/ion-item-option.js +69 -69
- package/components/ion-item-options.d.ts +2 -2
- package/components/ion-item-options.js +50 -50
- package/components/ion-item-sliding.d.ts +2 -2
- package/components/ion-item-sliding.js +404 -404
- package/components/ion-item.d.ts +2 -2
- package/components/ion-label.d.ts +2 -2
- package/components/ion-list-header.d.ts +2 -2
- package/components/ion-list.d.ts +2 -2
- package/components/ion-loading.d.ts +2 -2
- package/components/ion-loading.js +257 -247
- package/components/ion-menu-button.d.ts +2 -2
- package/components/ion-menu-button.js +77 -77
- package/components/ion-menu-toggle.d.ts +2 -2
- package/components/ion-menu-toggle.js +41 -41
- package/components/ion-menu.d.ts +2 -2
- package/components/ion-menu.js +631 -619
- package/components/ion-modal.d.ts +2 -2
- package/components/ion-modal.js +1451 -1441
- package/components/ion-nav-link.d.ts +2 -2
- package/components/ion-nav-link.js +47 -47
- package/components/ion-nav.d.ts +2 -2
- package/components/ion-nav.js +910 -910
- package/components/ion-note.d.ts +2 -2
- package/components/ion-picker-column-internal.d.ts +2 -2
- package/components/ion-picker-column.d.ts +2 -2
- package/components/ion-picker-internal.d.ts +2 -2
- package/components/ion-picker.d.ts +2 -2
- package/components/ion-picker.js +263 -253
- package/components/ion-popover.d.ts +2 -2
- package/components/ion-progress-bar.d.ts +2 -2
- package/components/ion-progress-bar.js +57 -57
- package/components/ion-radio-group.d.ts +2 -2
- package/components/ion-radio.d.ts +2 -2
- package/components/ion-range.d.ts +2 -2
- package/components/ion-range.js +593 -591
- package/components/ion-refresher-content.d.ts +2 -2
- package/components/ion-refresher-content.js +63 -63
- package/components/ion-refresher.d.ts +2 -2
- package/components/ion-refresher.js +747 -740
- package/components/ion-reorder-group.d.ts +2 -2
- package/components/ion-reorder-group.js +259 -259
- package/components/ion-reorder.d.ts +2 -2
- package/components/ion-reorder.js +41 -41
- package/components/ion-ripple-effect.d.ts +2 -2
- package/components/ion-route-redirect.d.ts +2 -2
- package/components/ion-route-redirect.js +34 -34
- package/components/ion-route.d.ts +2 -2
- package/components/ion-route.js +56 -56
- package/components/ion-router-link.d.ts +2 -2
- package/components/ion-router-link.js +45 -45
- package/components/ion-router-outlet.d.ts +2 -2
- package/components/ion-router-outlet.js +193 -193
- package/components/ion-router.d.ts +2 -2
- package/components/ion-router.js +632 -632
- package/components/ion-row.d.ts +2 -2
- package/components/ion-row.js +20 -20
- package/components/ion-searchbar.d.ts +2 -2
- package/components/ion-searchbar.js +406 -397
- package/components/ion-segment-button.d.ts +2 -2
- package/components/ion-segment-button.js +117 -117
- package/components/ion-segment.d.ts +2 -2
- package/components/ion-segment.js +427 -401
- package/components/ion-select-option.d.ts +2 -2
- package/components/ion-select-option.js +27 -27
- package/components/ion-select-popover.d.ts +2 -2
- package/components/ion-select.d.ts +2 -2
- package/components/ion-select.js +778 -763
- package/components/ion-skeleton-text.d.ts +2 -2
- package/components/ion-skeleton-text.js +45 -32
- package/components/ion-spinner.d.ts +2 -2
- package/components/ion-split-pane.d.ts +2 -2
- package/components/ion-split-pane.js +145 -145
- package/components/ion-tab-bar.d.ts +2 -2
- package/components/ion-tab-bar.js +79 -79
- package/components/ion-tab-button.d.ts +2 -2
- package/components/ion-tab-button.js +106 -106
- package/components/ion-tab.d.ts +2 -2
- package/components/ion-tab.js +72 -72
- package/components/ion-tabs.d.ts +2 -2
- package/components/ion-tabs.js +160 -160
- package/components/ion-text.d.ts +2 -2
- package/components/ion-text.js +26 -26
- package/components/ion-textarea.d.ts +2 -2
- package/components/ion-textarea.js +424 -392
- package/components/ion-thumbnail.d.ts +2 -2
- package/components/ion-thumbnail.js +20 -20
- package/components/ion-title.d.ts +2 -2
- package/components/ion-title.js +57 -57
- package/components/ion-toast.d.ts +2 -2
- package/components/ion-toast.js +819 -464
- package/components/ion-toggle.d.ts +2 -2
- package/components/ion-toggle.js +243 -241
- package/components/ion-toolbar.d.ts +2 -2
- package/components/ion-toolbar.js +71 -71
- package/components/ionic-global.js +163 -163
- package/components/ios.transition.js +598 -598
- package/components/item.js +301 -301
- package/components/keyboard-controller.js +128 -128
- package/components/keyboard.js +62 -62
- package/components/keyboard2.js +59 -59
- package/components/label.js +85 -85
- package/components/list-header.js +35 -35
- package/components/list.js +52 -52
- package/components/lock-controller.js +24 -24
- package/components/md.transition.js +44 -44
- package/components/menu-toggle-util.js +2 -2
- package/components/notch-controller.js +120 -120
- package/components/note.js +29 -29
- package/components/overlays.js +496 -495
- package/components/picker-column-internal.js +350 -345
- package/components/picker-column.js +334 -334
- package/components/picker-internal.js +470 -470
- package/components/popover.js +1156 -1146
- package/components/radio-group.js +162 -151
- package/components/radio.js +248 -209
- package/components/ripple-effect.js +81 -81
- package/components/select-popover.js +163 -163
- package/components/spinner.js +182 -182
- package/components/status-tap.js +26 -26
- package/components/swipe-back.js +65 -65
- package/components/theme.js +23 -23
- package/components/watch-options.js +37 -26
- package/css/core.css +66 -0
- package/css/core.css.map +1 -1
- package/css/display.css +44 -0
- package/css/display.css.map +1 -1
- package/css/float-elements.css +44 -0
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css +88 -0
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-swiper.css +22 -0
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/padding.css +44 -0
- package/css/padding.css.map +1 -1
- package/css/structure.css +44 -0
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css +44 -0
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css +44 -0
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css +44 -0
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +220 -0
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/animation-9b401d39.js +1062 -0
- package/dist/cjs/{app-globals-fe1ad535.js → app-globals-0af482c7.js} +1 -1
- package/dist/cjs/button-active-a5185907.js +69 -0
- package/dist/cjs/{capacitor-2ffba62a.js → capacitor-c04564bf.js} +5 -5
- package/dist/cjs/compare-with-utils-df1001d7.js +44 -0
- package/dist/cjs/config-4f60b98a.js +199 -0
- package/dist/cjs/cubic-bezier-f2dccc53.js +92 -0
- package/dist/cjs/data-36b9094e.js +1622 -0
- package/dist/cjs/{dir-f1e0ca26.js → dir-94c21456.js} +5 -5
- package/dist/cjs/focus-visible-7a0ce04f.js +77 -0
- package/dist/cjs/form-controller-7d42a722.js +66 -0
- package/dist/cjs/framework-delegate-1c29b14a.js +144 -0
- package/dist/cjs/gesture-controller-c40c045a.js +197 -0
- package/dist/cjs/haptic-b882e0bb.js +212 -0
- package/dist/cjs/hardware-back-button-76833cac.js +76 -0
- package/dist/cjs/helpers-76bb7efb.js +441 -0
- package/dist/cjs/{index-cc7dfb7c.js → index-5915f9b3.js} +3 -3
- package/dist/cjs/index-b4f986cd.js +198 -0
- package/dist/cjs/{index-305a23dc.js → index-bbb4336c.js} +184 -63
- package/dist/cjs/index-c8d52405.js +10 -0
- package/dist/cjs/index-ce101dc9.js +308 -0
- package/dist/cjs/index-d1b59ffa.js +459 -0
- package/dist/cjs/{index-10873539.js → index-da15e99c.js} +60 -61
- package/dist/cjs/index-f8f13389.js +243 -0
- package/dist/cjs/index.cjs.js +113 -113
- package/dist/cjs/input-shims-a23bb0f4.js +601 -0
- package/dist/cjs/input.utils-3d0166a2.js +138 -0
- package/dist/cjs/ion-accordion_2.cjs.entry.js +491 -481
- package/dist/cjs/ion-action-sheet.cjs.entry.js +262 -252
- package/dist/cjs/ion-alert.cjs.entry.js +442 -432
- package/dist/cjs/ion-app_8.cjs.entry.js +1153 -1153
- package/dist/cjs/ion-avatar_3.cjs.entry.js +29 -29
- package/dist/cjs/ion-back-button.cjs.entry.js +73 -73
- package/dist/cjs/ion-backdrop.cjs.entry.js +40 -40
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +194 -194
- package/dist/cjs/ion-button_2.cjs.entry.js +303 -303
- package/dist/cjs/ion-card_5.cjs.entry.js +105 -105
- package/dist/cjs/ion-checkbox.cjs.entry.js +149 -147
- package/dist/cjs/ion-chip.cjs.entry.js +20 -20
- package/dist/cjs/ion-col_3.cjs.entry.js +136 -136
- package/dist/cjs/ion-datetime-button.cjs.entry.js +325 -325
- package/dist/cjs/ion-datetime_3.cjs.entry.js +2185 -2137
- package/dist/cjs/ion-fab_3.cjs.entry.js +152 -152
- package/dist/cjs/ion-img.cjs.entry.js +79 -79
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +198 -190
- package/dist/cjs/ion-input.cjs.entry.js +426 -394
- package/dist/cjs/ion-item-option_3.cjs.entry.js +459 -459
- package/dist/cjs/ion-item_8.cjs.entry.js +447 -434
- package/dist/cjs/ion-loading.cjs.entry.js +220 -210
- package/dist/cjs/ion-menu_3.cjs.entry.js +670 -658
- package/dist/cjs/ion-modal.cjs.entry.js +1415 -1405
- package/dist/cjs/ion-nav_2.cjs.entry.js +904 -904
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +331 -327
- package/dist/cjs/ion-picker-internal.cjs.entry.js +455 -455
- package/dist/cjs/ion-popover.cjs.entry.js +1110 -1100
- package/dist/cjs/ion-progress-bar.cjs.entry.js +40 -40
- package/dist/cjs/ion-radio_2.cjs.entry.js +322 -309
- package/dist/cjs/ion-range.cjs.entry.js +558 -556
- package/dist/cjs/ion-refresher_2.cjs.entry.js +786 -779
- package/dist/cjs/ion-reorder_2.cjs.entry.js +269 -269
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +66 -66
- package/dist/cjs/ion-route_4.cjs.entry.js +693 -693
- package/dist/cjs/ion-searchbar.cjs.entry.js +363 -354
- package/dist/cjs/ion-segment_2.cjs.entry.js +509 -483
- package/dist/cjs/ion-select_3.cjs.entry.js +784 -768
- package/dist/cjs/ion-spinner.cjs.entry.js +46 -46
- package/dist/cjs/ion-split-pane.cjs.entry.js +117 -117
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +142 -142
- package/dist/cjs/ion-tab_2.cjs.entry.js +187 -187
- package/dist/cjs/ion-text.cjs.entry.js +13 -13
- package/dist/cjs/ion-textarea.cjs.entry.js +381 -349
- package/dist/cjs/ion-toast.cjs.entry.js +771 -419
- package/dist/cjs/ion-toggle.cjs.entry.js +227 -225
- package/dist/cjs/ionic-global-f4a2093b.js +230 -0
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/ios.transition-6787b799.js +654 -0
- package/dist/cjs/keyboard-0272231f.js +81 -0
- package/dist/cjs/{keyboard-38f2bb7b.js → keyboard-af1bb365.js} +62 -62
- package/dist/cjs/keyboard-controller-c05e747a.js +167 -0
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/lock-controller-6585a42a.js +40 -0
- package/dist/cjs/md.transition-e033d20a.js +59 -0
- package/dist/cjs/notch-controller-9735e7ac.js +155 -0
- package/dist/cjs/overlays-27a6fb16.js +716 -0
- package/dist/cjs/spinner-configs-282fd50a.js +147 -0
- package/dist/cjs/status-tap-415acac6.js +42 -0
- package/dist/cjs/swipe-back-e37a1a5c.js +81 -0
- package/dist/cjs/theme-d1c573d2.js +48 -0
- package/dist/cjs/watch-options-f5f3e158.js +49 -0
- package/dist/collection/collection-manifest.json +7 -7
- package/dist/collection/components/accordion/accordion.ios.css +44 -0
- package/dist/collection/components/accordion/accordion.js +410 -410
- package/dist/collection/components/accordion/accordion.md.css +22 -0
- package/dist/collection/components/accordion/test/a11y/accordion.e2e.js +31 -31
- package/dist/collection/components/accordion/test/accordion.e2e.js +24 -24
- package/dist/collection/components/accordion/test/accordion.spec.js +195 -0
- package/dist/collection/components/accordion/test/basic/accordion.e2e.js +26 -26
- package/dist/collection/components/accordion/test/multiple/accordion.e2e.js +18 -18
- package/dist/collection/components/accordion/test/nested/accordion.e2e.js +16 -16
- package/dist/collection/components/accordion/test/standalone/accordion.e2e.js +6 -6
- package/dist/collection/components/accordion-group/accordion-group.ios.css +44 -0
- package/dist/collection/components/accordion-group/accordion-group.js +422 -412
- package/dist/collection/components/accordion-group/accordion-group.md.css +68 -2
- package/dist/collection/components/action-sheet/action-sheet.ios.css +62 -5
- package/dist/collection/components/action-sheet/action-sheet.js +739 -729
- package/dist/collection/components/action-sheet/action-sheet.md.css +62 -5
- package/dist/collection/components/action-sheet/animations/ios.enter.js +18 -18
- package/dist/collection/components/action-sheet/animations/ios.leave.js +12 -12
- package/dist/collection/components/action-sheet/animations/md.enter.js +18 -18
- package/dist/collection/components/action-sheet/animations/md.leave.js +12 -12
- package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +59 -59
- package/dist/collection/components/action-sheet/test/action-sheet-id.spec.js +32 -0
- package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +33 -33
- package/dist/collection/components/action-sheet/test/basic/action-sheet.e2e.js +118 -59
- package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +18 -0
- package/dist/collection/components/action-sheet/test/basic/fixture.js +23 -23
- package/dist/collection/components/action-sheet/test/is-open/action-sheet.e2e.js +25 -25
- package/dist/collection/components/action-sheet/test/translucent/action-sheet.e2e.js +10 -10
- package/dist/collection/components/action-sheet/test/trigger/action-sheet.e2e.js +21 -21
- package/dist/collection/components/alert/alert.ios.css +122 -5
- package/dist/collection/components/alert/alert.js +977 -967
- package/dist/collection/components/alert/alert.md.css +152 -7
- package/dist/collection/components/alert/animations/ios.enter.js +19 -19
- package/dist/collection/components/alert/animations/ios.leave.js +13 -13
- package/dist/collection/components/alert/animations/md.enter.js +19 -19
- package/dist/collection/components/alert/animations/md.leave.js +10 -10
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +139 -91
- package/dist/collection/components/alert/test/alert-id.spec.js +32 -0
- package/dist/collection/components/alert/test/alert.spec.js +37 -0
- package/dist/collection/components/alert/test/basic/alert-tablet.e2e.js +40 -0
- package/dist/collection/components/alert/test/basic/alert.e2e.js +96 -96
- package/dist/collection/components/alert/test/is-open/alert.e2e.js +25 -25
- package/dist/collection/components/alert/test/standalone/alert.e2e.js +9 -9
- package/dist/collection/components/alert/test/trigger/alert.e2e.js +21 -21
- package/dist/collection/components/app/app.js +116 -116
- package/dist/collection/components/app/test/safe-area/app.e2e.js +24 -24
- package/dist/collection/components/avatar/avatar.ios.css +44 -0
- package/dist/collection/components/avatar/avatar.js +17 -17
- package/dist/collection/components/avatar/avatar.md.css +44 -0
- package/dist/collection/components/avatar/test/basic/avatar.e2e.js +12 -12
- package/dist/collection/components/back-button/back-button.ios.css +44 -0
- package/dist/collection/components/back-button/back-button.js +214 -214
- package/dist/collection/components/back-button/back-button.md.css +44 -0
- package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +6 -6
- package/dist/collection/components/back-button/test/back-button.spec.js +86 -0
- package/dist/collection/components/back-button/test/basic/back-button.e2e.js +6 -6
- package/dist/collection/components/back-button/test/toolbar/back-button.e2e.js +6 -6
- package/dist/collection/components/backdrop/backdrop.ios.css +44 -0
- package/dist/collection/components/backdrop/backdrop.js +131 -131
- package/dist/collection/components/backdrop/backdrop.md.css +44 -0
- package/dist/collection/components/badge/badge.ios.css +44 -0
- package/dist/collection/components/badge/badge.js +49 -49
- package/dist/collection/components/badge/badge.md.css +44 -0
- package/dist/collection/components/badge/test/a11y/badge.e2e.js +6 -6
- package/dist/collection/components/badge/test/basic/badge.e2e.js +6 -6
- package/dist/collection/components/breadcrumb/breadcrumb.ios.css +44 -0
- package/dist/collection/components/breadcrumb/breadcrumb.js +395 -395
- package/dist/collection/components/breadcrumb/breadcrumb.md.css +44 -0
- package/dist/collection/components/breadcrumb/test/aria.spec.js +22 -0
- package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +22 -0
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +247 -247
- package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +22 -0
- package/dist/collection/components/breadcrumbs/test/a11y/breadcrumbs.e2e.js +12 -12
- package/dist/collection/components/breadcrumbs/test/basic/breadcrumbs.e2e.js +6 -6
- package/dist/collection/components/breadcrumbs/test/breadcrumbs.spec.js +58 -0
- package/dist/collection/components/breadcrumbs/test/collapsed/breadcrumbs.e2e.js +6 -6
- package/dist/collection/components/breadcrumbs/test/reactive/breadcrumbs.e2e.js +43 -43
- package/dist/collection/components/button/button.ios.css +66 -0
- package/dist/collection/components/button/button.js +541 -541
- package/dist/collection/components/button/button.md.css +44 -0
- package/dist/collection/components/button/test/a11y/button.e2e.js +21 -21
- package/dist/collection/components/button/test/basic/button.e2e.js +32 -32
- package/dist/collection/components/button/test/clear/button.e2e.js +6 -6
- package/dist/collection/components/button/test/expand/button.e2e.js +6 -6
- package/dist/collection/components/button/test/form-reference/button.e2e.js +84 -84
- package/dist/collection/components/button/test/form-reference/button.spec.js +26 -0
- package/dist/collection/components/button/test/icon/button.e2e.js +6 -6
- package/dist/collection/components/button/test/outline/button.e2e.js +6 -6
- package/dist/collection/components/button/test/round/button.e2e.js +6 -6
- package/dist/collection/components/button/test/size/button.e2e.js +22 -22
- package/dist/collection/components/button/test/strong/button.e2e.js +22 -22
- package/dist/collection/components/button/test/wrap/button.e2e.js +73 -73
- package/dist/collection/components/buttons/buttons.ios.css +66 -0
- package/dist/collection/components/buttons/buttons.js +46 -46
- package/dist/collection/components/buttons/buttons.md.css +66 -0
- package/dist/collection/components/buttons/test/a11y/buttons.e2e.js +21 -21
- package/dist/collection/components/card/card.ios.css +44 -0
- package/dist/collection/components/card/card.js +251 -251
- package/dist/collection/components/card/card.md.css +44 -0
- package/dist/collection/components/card/test/a11y/card.e2e.js +6 -6
- package/dist/collection/components/card/test/aria.spec.js +16 -0
- package/dist/collection/components/card/test/basic/card.e2e.js +38 -38
- package/dist/collection/components/card-content/card-content.ios.css +44 -0
- package/dist/collection/components/card-content/card-content.js +21 -21
- package/dist/collection/components/card-content/card-content.md.css +44 -0
- package/dist/collection/components/card-header/card-header.ios.css +44 -0
- package/dist/collection/components/card-header/card-header.js +70 -70
- package/dist/collection/components/card-header/card-header.md.css +44 -0
- package/dist/collection/components/card-header/test/basic/card-header.e2e.js +6 -6
- package/dist/collection/components/card-subtitle/card-subtitle.ios.css +44 -0
- package/dist/collection/components/card-subtitle/card-subtitle.js +50 -50
- package/dist/collection/components/card-subtitle/card-subtitle.md.css +44 -0
- package/dist/collection/components/card-title/card-title.ios.css +44 -0
- package/dist/collection/components/card-title/card-title.js +50 -50
- package/dist/collection/components/card-title/card-title.md.css +44 -0
- package/dist/collection/components/checkbox/checkbox.ios.css +69 -9
- package/dist/collection/components/checkbox/checkbox.js +418 -415
- package/dist/collection/components/checkbox/checkbox.md.css +69 -9
- package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +14 -14
- package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +50 -50
- package/dist/collection/components/checkbox/test/checkbox.spec.js +34 -0
- package/dist/collection/components/checkbox/test/color/checkbox.e2e.js +11 -11
- package/dist/collection/components/checkbox/test/indeterminate/checkbox.e2e.js +6 -6
- package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +29 -29
- package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +75 -75
- package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +45 -45
- package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +6 -6
- package/dist/collection/components/checkbox/test/states/checkbox.e2e.js +21 -21
- package/dist/collection/components/chip/chip.ios.css +22 -0
- package/dist/collection/components/chip/chip.js +90 -90
- package/dist/collection/components/chip/chip.md.css +22 -0
- package/dist/collection/components/chip/test/a11y/chip.e2e.js +19 -19
- package/dist/collection/components/chip/test/basic/chip.e2e.js +42 -42
- package/dist/collection/components/chip/test/states/chip.e2e.js +14 -14
- package/dist/collection/components/col/col.css +66 -0
- package/dist/collection/components/col/col.js +536 -536
- package/dist/collection/components/content/content.css +22 -0
- package/dist/collection/components/content/content.js +745 -745
- package/dist/collection/components/content/test/basic/content.e2e.js +6 -6
- package/dist/collection/components/content/test/fixed/content.e2e.js +6 -6
- package/dist/collection/components/content/test/fullscreen/content.e2e.js +6 -6
- package/dist/collection/components/content/test/standalone/content.e2e.js +5 -5
- package/dist/collection/components/datetime/datetime.ios.css +69 -4
- package/dist/collection/components/datetime/datetime.js +2246 -2208
- package/dist/collection/components/datetime/datetime.md.css +69 -8
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +73 -7
- package/dist/collection/components/datetime/test/a11y/datetime.spec.js +43 -0
- package/dist/collection/components/datetime/test/basic/datetime.e2e.js +241 -241
- package/dist/collection/components/datetime/test/color/datetime.e2e.js +9 -9
- package/dist/collection/components/datetime/test/comparison.spec.js +43 -0
- package/dist/collection/components/datetime/test/custom/datetime.e2e.js +37 -37
- package/dist/collection/components/datetime/test/data.spec.js +456 -0
- package/dist/collection/components/datetime/test/datetime.e2e.js +29 -29
- package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +119 -119
- package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +68 -0
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +33 -0
- package/dist/collection/components/datetime/test/display/datetime.e2e.js +86 -86
- package/dist/collection/components/datetime/test/first-day-of-week/datetime.e2e.js +6 -6
- package/dist/collection/components/datetime/test/format.spec.js +124 -0
- package/dist/collection/components/datetime/test/helpers.spec.js +72 -0
- package/dist/collection/components/datetime/test/highlighted-dates/datetime.e2e.js +76 -76
- package/dist/collection/components/datetime/test/hour-cycle/datetime.e2e.js +21 -21
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +98 -98
- package/dist/collection/components/datetime/test/manipulation.spec.js +433 -0
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +178 -178
- package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +17 -17
- package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +170 -170
- package/dist/collection/components/datetime/test/parse.spec.js +222 -0
- package/dist/collection/components/datetime/test/position/datetime.e2e.js +14 -14
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +263 -263
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +137 -137
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +113 -0
- package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +40 -40
- package/dist/collection/components/datetime/test/state.spec.js +114 -0
- package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +13 -13
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +77 -77
- package/dist/collection/components/datetime/utils/comparison.js +22 -22
- package/dist/collection/components/datetime/utils/data.js +394 -394
- package/dist/collection/components/datetime/utils/format.js +143 -143
- package/dist/collection/components/datetime/utils/helpers.js +74 -74
- package/dist/collection/components/datetime/utils/manipulation.js +274 -274
- package/dist/collection/components/datetime/utils/parse.js +139 -139
- package/dist/collection/components/datetime/utils/state.js +123 -123
- package/dist/collection/components/datetime-button/datetime-button.css +22 -0
- package/dist/collection/components/datetime-button/datetime-button.js +399 -399
- package/dist/collection/components/datetime-button/test/a11y/datetime-button.e2e.js +11 -11
- package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +123 -123
- package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +13 -13
- package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +38 -38
- package/dist/collection/components/datetime-button/test/overlays/datetime-button.e2e.js +102 -102
- package/dist/collection/components/fab/fab.css +112 -36
- package/dist/collection/components/fab/fab.js +179 -179
- package/dist/collection/components/fab/test/basic/fab.e2e.js +50 -50
- package/dist/collection/components/fab/test/custom-size/fab.e2e.js +6 -6
- package/dist/collection/components/fab/test/safe-area/fab.e2e.js +63 -0
- package/dist/collection/components/fab/test/states/fab.e2e.js +6 -6
- package/dist/collection/components/fab/test/translucent/fab.e2e.js +17 -17
- package/dist/collection/components/fab-button/fab-button.ios.css +44 -0
- package/dist/collection/components/fab-button/fab-button.js +374 -374
- package/dist/collection/components/fab-button/fab-button.md.css +44 -0
- package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +6 -6
- package/dist/collection/components/fab-list/fab-list.css +46 -2
- package/dist/collection/components/fab-list/fab-list.js +79 -79
- package/dist/collection/components/footer/footer.ios.css +44 -0
- package/dist/collection/components/footer/footer.js +135 -135
- package/dist/collection/components/footer/footer.md.css +44 -0
- package/dist/collection/components/footer/footer.utils.js +25 -25
- package/dist/collection/components/footer/test/basic/footer.e2e.js +18 -18
- package/dist/collection/components/footer/test/fade/footer.e2e.js +10 -10
- package/dist/collection/components/footer/test/scroll-target/footer.e2e.js +15 -15
- package/dist/collection/components/footer/test/with-tabs/footer.e2e.js +6 -6
- package/dist/collection/components/grid/grid.css +66 -0
- package/dist/collection/components/grid/grid.js +44 -44
- package/dist/collection/components/grid/test/basic/grid.e2e.js +6 -6
- package/dist/collection/components/grid/test/offsets/grid.e2e.js +6 -6
- package/dist/collection/components/grid/test/padding/grid.e2e.js +6 -6
- package/dist/collection/components/grid/test/sizes/grid.e2e.js +6 -6
- package/dist/collection/components/header/header.ios.css +48 -1
- package/dist/collection/components/header/header.js +181 -181
- package/dist/collection/components/header/header.md.css +44 -0
- package/dist/collection/components/header/header.utils.js +148 -148
- package/dist/collection/components/header/test/a11y/header.e2e.js +18 -18
- package/dist/collection/components/header/test/basic/header.e2e.js +23 -23
- package/dist/collection/components/header/test/condense/header.e2e.js +25 -25
- package/dist/collection/components/header/test/fade/header.e2e.js +10 -10
- package/dist/collection/components/header/test/scroll-target/header.e2e.js +15 -15
- package/dist/collection/components/icon/test/basic/icon.e2e.js +6 -6
- package/dist/collection/components/icon/test/dir/icon.e2e.js +11 -11
- package/dist/collection/components/img/img.js +177 -177
- package/dist/collection/components/img/test/basic/img.e2e.js +62 -62
- package/dist/collection/components/img/test/draggable/img.e2e.js +10 -10
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +279 -271
- package/dist/collection/components/infinite-scroll/test/basic/infinite-scroll.e2e.js +11 -11
- package/dist/collection/components/infinite-scroll/test/scroll-target/infinite-scroll.e2e.js +11 -11
- package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +31 -0
- package/dist/collection/components/infinite-scroll/test/top/infinite-scroll.e2e.js +11 -11
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +44 -0
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +86 -86
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +44 -0
- package/dist/collection/components/infinite-scroll-content/test/infinite-scroll-content.spec.js +37 -0
- package/dist/collection/components/input/input.ios.css +91 -18
- package/dist/collection/components/input/input.js +1234 -1200
- package/dist/collection/components/input/input.md.css +167 -22
- package/dist/collection/components/input/input.utils.js +22 -22
- package/dist/collection/components/input/test/a11y/input.e2e.js +12 -12
- package/dist/collection/components/input/test/basic/input.e2e.js +63 -63
- package/dist/collection/components/input/test/bottom-content/input.e2e.js +89 -89
- package/dist/collection/components/input/test/card/input.e2e.js +6 -6
- package/dist/collection/components/input/test/clear-on-edit/input.e2e.js +25 -25
- package/dist/collection/components/input/test/color/input.e2e.js +88 -88
- package/dist/collection/components/input/test/fill/input.e2e.js +63 -63
- package/dist/collection/components/input/test/highlight/input.e2e.js +52 -52
- package/dist/collection/components/input/test/input.e2e.js +6 -6
- package/dist/collection/components/input/test/input.spec.js +85 -0
- package/dist/collection/components/input/test/item/input.e2e.js +11 -11
- package/dist/collection/components/input/test/item/input.spec.js +24 -0
- package/dist/collection/components/input/test/label-placement/input.e2e.js +104 -104
- package/dist/collection/components/input/test/legacy/a11y/input.e2e.js +15 -15
- package/dist/collection/components/input/test/legacy/basic/input.e2e.js +102 -102
- package/dist/collection/components/input/test/legacy/clear-on-edit/input.e2e.js +44 -44
- package/dist/collection/components/input/test/legacy/input-events.e2e.js +56 -56
- package/dist/collection/components/input/test/legacy/masking/input.e2e.js +15 -15
- package/dist/collection/components/input/test/legacy/spec/input.e2e.js +8 -8
- package/dist/collection/components/input/test/slot/input.e2e.js +51 -0
- package/dist/collection/components/input/test/states/input.e2e.js +11 -11
- package/dist/collection/components/item/item.ios.css +145 -15
- package/dist/collection/components/item/item.js +614 -614
- package/dist/collection/components/item/item.md.css +192 -18
- package/dist/collection/components/item/test/a11y/item.e2e.js +47 -47
- package/dist/collection/components/item/test/a11y/item.spec.js +48 -0
- package/dist/collection/components/item/test/alignment/item.e2e.js +6 -6
- package/dist/collection/components/item/test/basic/item.e2e.js +32 -6
- package/dist/collection/components/item/test/buttons/item.e2e.js +18 -18
- package/dist/collection/components/item/test/colors/item.e2e.js +6 -6
- package/dist/collection/components/item/test/counter/item.e2e.js +34 -34
- package/dist/collection/components/item/test/css-variables/item.e2e.js +6 -6
- package/dist/collection/components/item/test/disabled/item.e2e.js +6 -7
- package/dist/collection/components/item/test/dividers/item.e2e.js +6 -6
- package/dist/collection/components/item/test/groups/item.e2e.js +8 -8
- package/dist/collection/components/item/test/highlight/item.e2e.js +6 -6
- package/dist/collection/components/item/test/icons/item.e2e.js +6 -6
- package/dist/collection/components/item/test/images/item.e2e.js +6 -6
- package/dist/collection/components/item/test/inputs/item.e2e.js +139 -139
- package/dist/collection/components/item/test/legacy/alignment/item.e2e.js +6 -6
- package/dist/collection/components/item/test/legacy/disabled/item.e2e.js +6 -6
- package/dist/collection/components/item/test/legacy/fill/item.e2e.js +6 -6
- package/dist/collection/components/item/test/legacy/form/item.e2e.js +6 -6
- package/dist/collection/components/item/test/lines/item.e2e.js +6 -6
- package/dist/collection/components/item/test/media/item.e2e.js +6 -6
- package/dist/collection/components/item/test/reorder/item.e2e.js +8 -8
- package/dist/collection/components/item/test/slotted-inputs/item.e2e.js +6 -6
- package/dist/collection/components/item/test/states/item.e2e.js +6 -6
- package/dist/collection/components/item-divider/item-divider.ios.css +101 -8
- package/dist/collection/components/item-divider/item-divider.js +71 -71
- package/dist/collection/components/item-divider/item-divider.md.css +101 -8
- package/dist/collection/components/item-divider/test/a11y/item-divider.e2e.js +11 -11
- package/dist/collection/components/item-divider/test/basic/item-divider.e2e.js +38 -16
- package/dist/collection/components/item-divider/test/spec/item-divider.e2e.js +8 -8
- package/dist/collection/components/item-group/item-group.ios.css +44 -0
- package/dist/collection/components/item-group/item-group.js +22 -22
- package/dist/collection/components/item-group/item-group.md.css +44 -0
- package/dist/collection/components/item-option/item-option.ios.css +44 -10
- package/dist/collection/components/item-option/item-option.js +197 -197
- package/dist/collection/components/item-option/item-option.md.css +44 -10
- package/dist/collection/components/item-options/item-options.ios.css +66 -0
- package/dist/collection/components/item-options/item-options.js +110 -110
- package/dist/collection/components/item-options/item-options.md.css +66 -0
- package/dist/collection/components/item-sliding/item-sliding.css +22 -0
- package/dist/collection/components/item-sliding/item-sliding.js +538 -538
- package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +5 -5
- package/dist/collection/components/item-sliding/test/async/item-sliding.e2e.js +25 -25
- package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +140 -63
- package/dist/collection/components/item-sliding/test/icons/item-sliding.e2e.js +20 -20
- package/dist/collection/components/item-sliding/test/scroll-target/item-sliding.e2e.js +18 -18
- package/dist/collection/components/item-sliding/test/test.utils.js +20 -20
- package/dist/collection/components/label/label.ios.css +81 -4
- package/dist/collection/components/label/label.js +174 -174
- package/dist/collection/components/label/label.md.css +80 -3
- package/dist/collection/components/label/test/a11y/label.e2e.js +21 -21
- package/dist/collection/components/label/test/basic/label.e2e.js +21 -21
- package/dist/collection/components/label/test/color/label.e2e.js +21 -21
- package/dist/collection/components/label/test/headings/label.e2e.js +5 -5
- package/dist/collection/components/list/list.ios.css +81 -1
- package/dist/collection/components/list/list.js +101 -101
- package/dist/collection/components/list/list.md.css +107 -3
- package/dist/collection/components/list/test/a11y/list.e2e.js +6 -6
- package/dist/collection/components/list/test/basic/list.e2e.js +6 -6
- package/dist/collection/components/list/test/inset/list.e2e.js +16 -16
- package/dist/collection/components/list/test/lines/list.e2e.js +158 -15
- package/dist/collection/components/list-header/list-header.ios.css +81 -2
- package/dist/collection/components/list-header/list-header.js +69 -69
- package/dist/collection/components/list-header/list-header.md.css +81 -2
- package/dist/collection/components/list-header/test/a11y/list-header.e2e.js +6 -6
- package/dist/collection/components/list-header/test/basic/list-header.e2e.js +34 -6
- package/dist/collection/components/loading/animations/ios.enter.js +19 -19
- package/dist/collection/components/loading/animations/ios.leave.js +13 -13
- package/dist/collection/components/loading/animations/md.enter.js +19 -19
- package/dist/collection/components/loading/animations/md.leave.js +13 -13
- package/dist/collection/components/loading/loading.ios.css +44 -0
- package/dist/collection/components/loading/loading.js +730 -720
- package/dist/collection/components/loading/loading.md.css +44 -0
- package/dist/collection/components/loading/test/a11y/loading.e2e.js +26 -26
- package/dist/collection/components/loading/test/basic/loading.e2e.js +60 -60
- package/dist/collection/components/loading/test/basic/loading.spec.js +16 -0
- package/dist/collection/components/loading/test/is-open/loading.e2e.js +17 -17
- package/dist/collection/components/loading/test/loading-id.spec.js +32 -0
- package/dist/collection/components/loading/test/loading.spec.js +37 -0
- package/dist/collection/components/loading/test/standalone/loading.e2e.js +13 -13
- package/dist/collection/components/loading/test/trigger/loading.e2e.js +21 -21
- package/dist/collection/components/menu/menu.ios.css +48 -4
- package/dist/collection/components/menu/menu.js +956 -944
- package/dist/collection/components/menu/menu.md.css +48 -4
- package/dist/collection/components/menu/test/a11y/menu.e2e.js +13 -13
- package/dist/collection/components/menu/test/basic/menu.e2e.js +102 -102
- package/dist/collection/components/menu/test/disable/menu.e2e.js +44 -44
- package/dist/collection/components/menu/test/focus-trap/menu.e2e.js +61 -61
- package/dist/collection/components/menu/test/multiple/menu.e2e.js +49 -49
- package/dist/collection/components/menu/test/safe-area/menu.e2e.js +54 -54
- package/dist/collection/components/menu-button/menu-button.ios.css +44 -0
- package/dist/collection/components/menu-button/menu-button.js +173 -173
- package/dist/collection/components/menu-button/menu-button.md.css +44 -0
- package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +12 -12
- package/dist/collection/components/menu-button/test/async/menu-button.e2e.js +12 -12
- package/dist/collection/components/menu-button/test/basic/menu-button.e2e.js +6 -6
- package/dist/collection/components/menu-toggle/menu-toggle-util.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +93 -93
- package/dist/collection/components/menu-toggle/test/basic/menu-toggle.e2e.js +33 -33
- package/dist/collection/components/modal/animations/ios.enter.js +81 -81
- package/dist/collection/components/modal/animations/ios.leave.js +74 -74
- package/dist/collection/components/modal/animations/md.enter.js +21 -21
- package/dist/collection/components/modal/animations/md.leave.js +15 -15
- package/dist/collection/components/modal/animations/sheet.js +43 -43
- package/dist/collection/components/modal/gestures/sheet.js +289 -289
- package/dist/collection/components/modal/gestures/swipe-to-close.js +248 -247
- package/dist/collection/components/modal/gestures/utils.js +39 -39
- package/dist/collection/components/modal/modal.ios.css +46 -2
- package/dist/collection/components/modal/modal.js +1290 -1280
- package/dist/collection/components/modal/modal.md.css +44 -0
- package/dist/collection/components/modal/test/a11y/modal.e2e.js +12 -12
- package/dist/collection/components/modal/test/a11y/modal.spec.js +22 -0
- package/dist/collection/components/modal/test/basic/modal.e2e.js +110 -110
- package/dist/collection/components/modal/test/basic/modal.spec.js +16 -0
- package/dist/collection/components/modal/test/can-dismiss/modal-card.e2e.js +44 -44
- package/dist/collection/components/modal/test/can-dismiss/modal-sheet.e2e.js +62 -62
- package/dist/collection/components/modal/test/can-dismiss/modal.e2e.js +16 -16
- package/dist/collection/components/modal/test/can-dismiss/modal.spec.js +191 -0
- package/dist/collection/components/modal/test/card/modal-card.e2e.js +69 -69
- package/dist/collection/components/modal/test/card/modal-tablet.e2e.js +67 -67
- package/dist/collection/components/modal/test/card-nav/modal.e2e.js +26 -26
- package/dist/collection/components/modal/test/card-refresher/modal.e2e.js +14 -14
- package/dist/collection/components/modal/test/card-scroll-target/modal.e2e.js +34 -34
- package/dist/collection/components/modal/test/custom/modal.e2e.js +16 -16
- package/dist/collection/components/modal/test/custom-dialog/modal.e2e.js +12 -12
- package/dist/collection/components/modal/test/dark-mode/model.e2e.js +12 -12
- package/dist/collection/components/modal/test/fixtures.js +21 -21
- package/dist/collection/components/modal/test/inline/modal.e2e.js +34 -34
- package/dist/collection/components/modal/test/is-open/modal.e2e.js +17 -17
- package/dist/collection/components/modal/test/modal-id.spec.js +32 -0
- package/dist/collection/components/modal/test/sheet/modal.e2e.js +178 -178
- package/dist/collection/components/modal/test/standalone/modal.e2e.js +12 -12
- package/dist/collection/components/modal/test/trigger/modal.e2e.js +23 -23
- package/dist/collection/components/modal/utils.js +55 -55
- package/dist/collection/components/modal/utils.spec.js +7 -7
- package/dist/collection/components/nav/nav.css +22 -0
- package/dist/collection/components/nav/nav.js +1748 -1748
- package/dist/collection/components/nav/test/basic/nav.e2e.js +58 -58
- package/dist/collection/components/nav/test/modal-navigation/nav.e2e.js +52 -52
- package/dist/collection/components/nav/test/nav-controller.spec.js +749 -0
- package/dist/collection/components/nav/test/nested/nav.e2e.js +54 -54
- package/dist/collection/components/nav/test/routing/nav.e2e.js +75 -75
- package/dist/collection/components/nav/view-controller.js +52 -52
- package/dist/collection/components/nav-link/nav-link-utils.js +16 -16
- package/dist/collection/components/nav-link/nav-link.js +106 -106
- package/dist/collection/components/note/note.ios.css +44 -0
- package/dist/collection/components/note/note.js +49 -49
- package/dist/collection/components/note/note.md.css +44 -0
- package/dist/collection/components/note/test/a11y/note.e2e.js +59 -16
- package/dist/collection/components/note/test/basic/note.e2e.js +33 -33
- package/dist/collection/components/picker/animations/ios.enter.js +18 -18
- package/dist/collection/components/picker/animations/ios.leave.js +14 -14
- package/dist/collection/components/picker/picker.ios.css +45 -1
- package/dist/collection/components/picker/picker.js +782 -772
- package/dist/collection/components/picker/picker.md.css +45 -1
- package/dist/collection/components/picker/test/basic/picker.e2e.js +17 -17
- package/dist/collection/components/picker/test/is-open/picker.e2e.js +17 -17
- package/dist/collection/components/picker/test/picker-id.spec.js +32 -0
- package/dist/collection/components/picker/test/trigger/picker.e2e.js +21 -21
- package/dist/collection/components/picker-column/picker-column.ios.css +44 -0
- package/dist/collection/components/picker-column/picker-column.js +377 -377
- package/dist/collection/components/picker-column/picker-column.md.css +44 -0
- package/dist/collection/components/picker-column/test/picker-column-aria.spec.js +35 -0
- package/dist/collection/components/picker-column/test/picker-column-dynamic.spec.js +29 -0
- package/dist/collection/components/picker-column/test/picker-column.spec.js +17 -0
- package/dist/collection/components/picker-column/test/standalone/picker-column.e2e.js +27 -27
- package/dist/collection/components/picker-column/test/test.utils.js +29 -29
- package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +33 -3
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +523 -501
- package/dist/collection/components/picker-column-internal/picker-column-internal.md.css +55 -3
- package/dist/collection/components/picker-column-internal/test/basic/picker-column-internal.e2e.js +53 -53
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +66 -37
- package/dist/collection/components/picker-internal/picker-internal.ios.css +46 -2
- package/dist/collection/components/picker-internal/picker-internal.js +517 -517
- package/dist/collection/components/picker-internal/picker-internal.md.css +46 -2
- package/dist/collection/components/picker-internal/test/a11y/picker-internal.e2e.js +6 -6
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +76 -71
- package/dist/collection/components/picker-internal/test/keyboard-entry/picker-internal.e2e.js +39 -39
- package/dist/collection/components/popover/animations/ios.enter.js +79 -79
- package/dist/collection/components/popover/animations/ios.leave.js +28 -28
- package/dist/collection/components/popover/animations/md.enter.js +58 -58
- package/dist/collection/components/popover/animations/md.leave.js +19 -19
- package/dist/collection/components/popover/popover.ios.css +48 -4
- package/dist/collection/components/popover/popover.js +1189 -1179
- package/dist/collection/components/popover/popover.md.css +46 -2
- package/dist/collection/components/popover/test/adjustment/popover.e2e.js +22 -22
- package/dist/collection/components/popover/test/arrow/popover.e2e.js +15 -15
- package/dist/collection/components/popover/test/async/popover.e2e.js +29 -29
- package/dist/collection/components/popover/test/basic/popover.e2e.js +108 -108
- package/dist/collection/components/popover/test/basic/popover.spec.js +16 -0
- package/dist/collection/components/popover/test/dismiss-on-select/popover.e2e.js +26 -26
- package/dist/collection/components/popover/test/fixture.js +16 -16
- package/dist/collection/components/popover/test/inline/popover.e2e.js +18 -18
- package/dist/collection/components/popover/test/is-open/popover.e2e.js +5 -5
- package/dist/collection/components/popover/test/nested/popover.e2e.js +81 -81
- package/dist/collection/components/popover/test/popover-id.spec.js +32 -0
- package/dist/collection/components/popover/test/position/popover.e2e.js +18 -18
- package/dist/collection/components/popover/test/reference/popover.e2e.js +14 -14
- package/dist/collection/components/popover/test/size/popover.e2e.js +29 -29
- package/dist/collection/components/popover/test/standalone/popover.e2e.js +7 -7
- package/dist/collection/components/popover/test/test.utils.js +23 -23
- package/dist/collection/components/popover/test/trigger/popover.e2e.js +35 -35
- package/dist/collection/components/popover/test/util.spec.js +53 -0
- package/dist/collection/components/popover/utils.js +606 -606
- package/dist/collection/components/progress-bar/progress-bar.ios.css +22 -0
- package/dist/collection/components/progress-bar/progress-bar.js +145 -145
- package/dist/collection/components/progress-bar/progress-bar.md.css +22 -0
- package/dist/collection/components/progress-bar/test/basic/progress-bar.e2e.js +6 -6
- package/dist/collection/components/progress-bar/test/buffer/progress-bar.e2e.js +10 -10
- package/dist/collection/components/progress-bar/test/determinate/progress-bar.e2e.js +10 -10
- package/dist/collection/components/radio/radio.ios.css +70 -10
- package/dist/collection/components/radio/radio.js +454 -447
- package/dist/collection/components/radio/radio.md.css +70 -10
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +40 -40
- package/dist/collection/components/radio/test/color/radio.e2e.js +11 -11
- package/dist/collection/components/radio/test/item/radio.e2e.js +37 -37
- package/dist/collection/components/radio/test/label-placement/radio.e2e.js +70 -70
- package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +29 -29
- package/dist/collection/components/radio/test/legacy/basic/radio.e2e.js +43 -43
- package/dist/collection/components/radio/test/radio.spec.js +60 -0
- package/dist/collection/components/radio/test/states/radio.e2e.js +21 -21
- package/dist/collection/components/radio-group/radio-group.js +280 -247
- package/dist/collection/components/radio-group/test/basic/radio-group.e2e.js +35 -35
- package/dist/collection/components/radio-group/test/fixtures.js +22 -22
- package/dist/collection/components/radio-group/test/form/radio-group.e2e.js +39 -39
- package/dist/collection/components/radio-group/test/legacy/basic/radio-group.e2e.js +59 -59
- package/dist/collection/components/radio-group/test/legacy/form/radio-group.e2e.js +22 -22
- package/dist/collection/components/radio-group/test/legacy/search/radio-group.e2e.js +27 -27
- package/dist/collection/components/radio-group/test/radio-group-events.e2e.js +42 -42
- package/dist/collection/components/radio-group/test/radio-group.spec.js +69 -0
- package/dist/collection/components/radio-group/test/search/radio-group.e2e.js +23 -23
- package/dist/collection/components/range/range.ios.css +45 -7
- package/dist/collection/components/range/range.js +1001 -998
- package/dist/collection/components/range/range.md.css +45 -7
- package/dist/collection/components/range/test/a11y/range.e2e.js +46 -46
- package/dist/collection/components/range/test/active-bar-start/range.e2e.js +6 -6
- package/dist/collection/components/range/test/basic/range.e2e.js +23 -23
- package/dist/collection/components/range/test/color/range.e2e.js +6 -6
- package/dist/collection/components/range/test/custom/range.e2e.js +6 -6
- package/dist/collection/components/range/test/item/range.e2e.js +28 -28
- package/dist/collection/components/range/test/label/range.e2e.js +99 -99
- package/dist/collection/components/range/test/label/range.spec.js +23 -0
- package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +25 -25
- package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +6 -6
- package/dist/collection/components/range/test/legacy/basic/range.e2e.js +61 -61
- package/dist/collection/components/range/test/legacy/range-events.e2e.js +80 -80
- package/dist/collection/components/range/test/legacy/scroll-target/range.e2e.js +23 -23
- package/dist/collection/components/range/test/range-events.e2e.js +135 -135
- package/dist/collection/components/range/test/range.spec.js +221 -0
- package/dist/collection/components/range/test/scroll-target/range.e2e.js +23 -23
- package/dist/collection/components/range/test/states/range.e2e.js +21 -21
- package/dist/collection/components/refresher/refresher.ios.css +44 -0
- package/dist/collection/components/refresher/refresher.js +806 -806
- package/dist/collection/components/refresher/refresher.md.css +44 -0
- package/dist/collection/components/refresher/refresher.utils.js +148 -141
- package/dist/collection/components/refresher/test/basic/refresher.e2e.js +25 -25
- package/dist/collection/components/refresher/test/scroll-target/refresher.e2e.js +25 -25
- package/dist/collection/components/refresher/test/test.utils.js +5 -5
- package/dist/collection/components/refresher-content/refresher-content.js +131 -131
- package/dist/collection/components/refresher-content/test/refresher-content.spec.js +46 -0
- package/dist/collection/components/reorder/reorder.ios.css +23 -34
- package/dist/collection/components/reorder/reorder.js +37 -37
- package/dist/collection/components/reorder/reorder.md.css +23 -34
- package/dist/collection/components/reorder-group/reorder-group.css +22 -0
- package/dist/collection/components/reorder-group/reorder-group.js +327 -327
- package/dist/collection/components/reorder-group/test/a11y/reorder-group.e2e.js +6 -6
- package/dist/collection/components/reorder-group/test/basic/reorder-group.e2e.js +11 -11
- package/dist/collection/components/reorder-group/test/interactive/reorder-group.e2e.js +21 -21
- package/dist/collection/components/reorder-group/test/nested/reorder-group.e2e.js +21 -21
- package/dist/collection/components/reorder-group/test/scroll-target/reorder-group.e2e.js +21 -21
- package/dist/collection/components/ripple-effect/ripple-effect.css +22 -0
- package/dist/collection/components/ripple-effect/ripple-effect.js +135 -135
- package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +48 -48
- package/dist/collection/components/route/route.js +151 -151
- package/dist/collection/components/route-redirect/route-redirect.js +76 -76
- package/dist/collection/components/router/router.js +472 -472
- package/dist/collection/components/router/test/basic/router.e2e.js +55 -55
- package/dist/collection/components/router/test/guards/href/router.e2e.js +51 -51
- package/dist/collection/components/router/test/guards/link/router.e2e.js +51 -51
- package/dist/collection/components/router/test/guards/push/router.e2e.js +51 -51
- package/dist/collection/components/router/test/guards/router.e2e.js +5 -5
- package/dist/collection/components/router/test/guards/test.utils.js +2 -2
- package/dist/collection/components/router/test/matching.spec.js +250 -0
- package/dist/collection/components/router/test/parser.spec.js +133 -0
- package/dist/collection/components/router/test/path.spec.js +218 -0
- package/dist/collection/components/router/test/router.spec.js +55 -0
- package/dist/collection/components/router/utils/debug.js +14 -14
- package/dist/collection/components/router/utils/dom.js +56 -56
- package/dist/collection/components/router/utils/matching.js +150 -150
- package/dist/collection/components/router/utils/parser.js +52 -52
- package/dist/collection/components/router/utils/path.js +66 -66
- package/dist/collection/components/router-link/router-link.css +22 -0
- package/dist/collection/components/router-link/router-link.js +157 -157
- package/dist/collection/components/router-outlet/router-outlet.css +22 -0
- package/dist/collection/components/router-outlet/router-outlet.js +459 -459
- package/dist/collection/components/router-outlet/test/basic/router-outlet.e2e.js +31 -31
- package/dist/collection/components/row/row.css +66 -0
- package/dist/collection/components/row/row.js +15 -15
- package/dist/collection/components/searchbar/searchbar.ios.css +44 -0
- package/dist/collection/components/searchbar/searchbar.js +893 -884
- package/dist/collection/components/searchbar/searchbar.md.css +56 -6
- package/dist/collection/components/searchbar/test/a11y/searchbar.e2e.js +11 -11
- package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +116 -91
- package/dist/collection/components/searchbar/test/events/searchbar.e2e.js +55 -55
- package/dist/collection/components/searchbar/test/searchbar.spec.js +15 -0
- package/dist/collection/components/segment/segment.ios.css +66 -0
- package/dist/collection/components/segment/segment.js +633 -607
- package/dist/collection/components/segment/segment.md.css +66 -0
- package/dist/collection/components/segment/test/a11y/segment.e2e.js +37 -37
- package/dist/collection/components/segment/test/basic/segment.e2e.js +22 -22
- package/dist/collection/components/segment/test/custom/segment.e2e.js +6 -6
- package/dist/collection/components/segment/test/icon/segment.e2e.js +6 -6
- package/dist/collection/components/segment/test/modes/segment.e2e.js +15 -15
- package/dist/collection/components/segment/test/scrollable/segment.e2e.js +12 -12
- package/dist/collection/components/segment/test/segment-events.e2e.js +97 -97
- package/dist/collection/components/segment/test/segment.spec.js +37 -0
- package/dist/collection/components/segment/test/toolbar/segment.e2e.js +21 -21
- package/dist/collection/components/segment/test/wrap/segment.e2e.js +21 -21
- package/dist/collection/components/segment-button/segment-button.ios.css +44 -0
- package/dist/collection/components/segment-button/segment-button.js +217 -217
- package/dist/collection/components/segment-button/segment-button.md.css +44 -0
- package/dist/collection/components/select/select.ios.css +138 -22
- package/dist/collection/components/select/select.js +1201 -1184
- package/dist/collection/components/select/select.md.css +189 -26
- package/dist/collection/components/select/test/a11y/select.e2e.js +14 -14
- package/dist/collection/components/select/test/async/select.e2e.js +14 -14
- package/dist/collection/components/select/test/basic/select.e2e.js +140 -140
- package/dist/collection/components/select/test/card/select.e2e.js +6 -6
- package/dist/collection/components/select/test/color/select.e2e.js +22 -22
- package/dist/collection/components/select/test/compare-with/select.e2e.js +33 -33
- package/dist/collection/components/select/test/custom/select.e2e.js +19 -19
- package/dist/collection/components/select/test/disabled/select.e2e.js +17 -17
- package/dist/collection/components/select/test/fill/select.e2e.js +63 -63
- package/dist/collection/components/select/test/highlight/select.e2e.js +74 -74
- package/dist/collection/components/select/test/item/select.e2e.js +26 -11
- package/dist/collection/components/select/test/label/select.e2e.js +141 -141
- package/dist/collection/components/select/test/legacy/async/select.e2e.js +8 -8
- package/dist/collection/components/select/test/legacy/basic/select.e2e.js +108 -108
- package/dist/collection/components/select/test/legacy/compare-with/select.e2e.js +33 -33
- package/dist/collection/components/select/test/legacy/custom/custom.e2e.js +5 -5
- package/dist/collection/components/select/test/legacy/single-value/select.e2e.js +8 -8
- package/dist/collection/components/select/test/legacy/spec/select.e2e.js +6 -6
- package/dist/collection/components/select/test/legacy/standalone/select.e2e.js +11 -11
- package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +17 -17
- package/dist/collection/components/select/test/popover-size/select.e2e.js +63 -63
- package/dist/collection/components/select/test/select.spec.js +59 -0
- package/dist/collection/components/select/test/slot/select.e2e.js +67 -0
- package/dist/collection/components/select/test/states/select.e2e.js +21 -21
- package/dist/collection/components/select/test/toggle-icon/select.e2e.js +14 -14
- package/dist/collection/components/select/test/wrapping/select.e2e.js +16 -16
- package/dist/collection/components/select-option/select-option.js +60 -60
- package/dist/collection/components/select-popover/select-popover.ios.css +66 -0
- package/dist/collection/components/select-popover/select-popover.js +197 -197
- package/dist/collection/components/select-popover/select-popover.md.css +66 -0
- package/dist/collection/components/select-popover/test/basic/select-popover.e2e.js +52 -52
- package/dist/collection/components/select-popover/test/fixtures.js +33 -33
- package/dist/collection/components/skeleton-text/skeleton-text.css +22 -0
- package/dist/collection/components/skeleton-text/skeleton-text.js +87 -48
- package/dist/collection/components/skeleton-text/test/basic/skeleton-text.e2e.js +6 -6
- package/dist/collection/components/skeleton-text/test/custom/skeleton-text.e2e.js +6 -6
- package/dist/collection/components/slides/IonicSlides.js +95 -95
- package/dist/collection/components/spinner/spinner-configs.js +121 -121
- package/dist/collection/components/spinner/spinner.css +22 -0
- package/dist/collection/components/spinner/spinner.js +137 -137
- package/dist/collection/components/spinner/test/basic/spinner.e2e.js +10 -10
- package/dist/collection/components/spinner/test/color/spinner.e2e.js +10 -10
- package/dist/collection/components/spinner/test/resize/spinner.e2e.js +8 -8
- package/dist/collection/components/split-pane/split-pane.ios.css +66 -0
- package/dist/collection/components/split-pane/split-pane.js +225 -225
- package/dist/collection/components/split-pane/split-pane.md.css +66 -0
- package/dist/collection/components/split-pane/test/basic/split-pane.e2e.js +18 -18
- package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +31 -0
- package/dist/collection/components/tab/tab.js +170 -170
- package/dist/collection/components/tab-bar/tab-bar.ios.css +70 -4
- package/dist/collection/components/tab-bar/tab-bar.js +177 -177
- package/dist/collection/components/tab-bar/tab-bar.md.css +70 -4
- package/dist/collection/components/tab-bar/test/basic/tab-bar.e2e.js +43 -0
- package/dist/collection/components/tab-bar/test/custom/tab-bar.e2e.js +6 -6
- package/dist/collection/components/tab-bar/test/translucent/tab-bar.e2e.js +14 -14
- package/dist/collection/components/tab-button/tab-button.ios.css +47 -3
- package/dist/collection/components/tab-button/tab-button.js +267 -267
- package/dist/collection/components/tab-button/tab-button.md.css +47 -3
- package/dist/collection/components/tab-button/test/a11y/tab-button.e2e.js +6 -6
- package/dist/collection/components/tab-button/test/basic/tab-button.e2e.js +16 -16
- package/dist/collection/components/tab-button/test/layout/tab-button.e2e.js +26 -26
- package/dist/collection/components/tab-button/test/states/tab-button.e2e.js +26 -26
- package/dist/collection/components/tabs/tabs.css +22 -0
- package/dist/collection/components/tabs/tabs.js +344 -344
- package/dist/collection/components/tabs/test/basic/tabs.e2e.js +24 -24
- package/dist/collection/components/tabs/test/placements/tabs.e2e.js +17 -17
- package/dist/collection/components/text/test/basic/text.e2e.js +11 -11
- package/dist/collection/components/text/text.css +22 -0
- package/dist/collection/components/text/text.js +47 -47
- package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +12 -12
- package/dist/collection/components/textarea/test/autogrow/textarea.e2e.js +31 -31
- package/dist/collection/components/textarea/test/bottom-content/textarea.e2e.js +82 -82
- package/dist/collection/components/textarea/test/card/textarea.e2e.js +6 -6
- package/dist/collection/components/textarea/test/clear-on-edit/textarea.e2e.js +17 -17
- package/dist/collection/components/textarea/test/color/textarea.e2e.js +88 -88
- package/dist/collection/components/textarea/test/cols/textarea.e2e.js +11 -11
- package/dist/collection/components/textarea/test/fill/textarea.e2e.js +63 -63
- package/dist/collection/components/textarea/test/highlight/textarea.e2e.js +52 -52
- package/dist/collection/components/textarea/test/item/textarea.e2e.js +11 -11
- package/dist/collection/components/textarea/test/label-placement/textarea.e2e.js +150 -150
- package/dist/collection/components/textarea/test/legacy/a11y/textarea.e2e.js +15 -15
- package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +31 -31
- package/dist/collection/components/textarea/test/legacy/basic/textarea.e2e.js +30 -30
- package/dist/collection/components/textarea/test/legacy/clear-on-edit/textarea.e2e.js +17 -17
- package/dist/collection/components/textarea/test/slot/textarea.e2e.js +51 -0
- package/dist/collection/components/textarea/test/states/textarea.e2e.js +11 -11
- package/dist/collection/components/textarea/test/textarea-events.e2e.js +57 -57
- package/dist/collection/components/textarea/test/textarea.spec.js +59 -0
- package/dist/collection/components/textarea/textarea.ios.css +144 -24
- package/dist/collection/components/textarea/textarea.js +1050 -1016
- package/dist/collection/components/textarea/textarea.md.css +205 -34
- package/dist/collection/components/thumbnail/test/basic/thumbnail.e2e.js +28 -28
- package/dist/collection/components/thumbnail/thumbnail.css +22 -0
- package/dist/collection/components/thumbnail/thumbnail.js +15 -15
- package/dist/collection/components/title/test/a11y/title.e2e.js +17 -17
- package/dist/collection/components/title/test/basic/title.e2e.js +13 -13
- package/dist/collection/components/title/title.ios.css +24 -2
- package/dist/collection/components/title/title.js +119 -119
- package/dist/collection/components/title/title.md.css +22 -0
- package/dist/collection/components/toast/animations/ios.enter.js +21 -20
- package/dist/collection/components/toast/animations/ios.leave.js +18 -18
- package/dist/collection/components/toast/animations/md.enter.js +23 -22
- package/dist/collection/components/toast/animations/md.leave.js +6 -6
- package/dist/collection/components/toast/animations/utils.js +62 -56
- package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +267 -0
- package/dist/collection/components/toast/test/a11y/toast.e2e.js +92 -92
- package/dist/collection/components/toast/test/basic/toast.e2e.js +101 -101
- package/dist/collection/components/toast/test/is-open/toast.e2e.js +17 -17
- package/dist/collection/components/toast/test/layout/toast.e2e.js +9 -9
- package/dist/collection/components/toast/test/position-anchor/toast.e2e.js +37 -37
- package/dist/collection/components/toast/test/standalone/toast.e2e.js +10 -10
- package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +84 -0
- package/dist/collection/components/toast/test/toast-config.spec.js +25 -0
- package/dist/collection/components/toast/test/toast-id.spec.js +32 -0
- package/dist/collection/components/toast/test/toast.spec.js +200 -0
- package/dist/collection/components/toast/test/trigger/toast.e2e.js +21 -21
- package/dist/collection/components/toast/toast.ios.css +55 -11
- package/dist/collection/components/toast/toast.js +1065 -952
- package/dist/collection/components/toast/toast.md.css +55 -1
- package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +6 -6
- package/dist/collection/components/toggle/test/color/toggle.e2e.js +11 -11
- package/dist/collection/components/toggle/test/enable-on-off-labels/toggle.e2e.js +27 -27
- package/dist/collection/components/toggle/test/item/toggle.e2e.js +52 -52
- package/dist/collection/components/toggle/test/label/toggle.e2e.js +65 -65
- package/dist/collection/components/toggle/test/legacy/basic/toggle.e2e.js +69 -69
- package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +23 -23
- package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +6 -6
- package/dist/collection/components/toggle/test/sizes/toggle.e2e.js +6 -6
- package/dist/collection/components/toggle/test/states/toggle.e2e.js +16 -16
- package/dist/collection/components/toggle/test/toggle.spec.js +67 -0
- package/dist/collection/components/toggle/toggle.ios.css +69 -9
- package/dist/collection/components/toggle/toggle.js +487 -484
- package/dist/collection/components/toggle/toggle.md.css +69 -9
- package/dist/collection/components/toolbar/test/basic/toolbar.e2e.js +7 -7
- package/dist/collection/components/toolbar/test/colors/toolbar.e2e.js +6 -6
- package/dist/collection/components/toolbar/toolbar.ios.css +44 -0
- package/dist/collection/components/toolbar/toolbar.js +100 -100
- package/dist/collection/components/toolbar/toolbar.md.css +44 -0
- package/dist/collection/css/test/a11y/typography.e2e.js +6 -6
- package/dist/collection/global/config.js +51 -51
- package/dist/collection/global/ionic-global.js +54 -54
- package/dist/collection/global/test/config-controller.spec.js +77 -0
- package/dist/collection/utils/animation/animation-utils.js +91 -91
- package/dist/collection/utils/animation/animation.js +906 -890
- package/dist/collection/utils/animation/cubic-bezier.js +49 -49
- package/dist/collection/utils/animation/test/animation.spec.js +447 -0
- package/dist/collection/utils/animation/test/animationbuilder/animation.e2e.js +26 -26
- package/dist/collection/utils/animation/test/basic/animation.e2e.js +12 -12
- package/dist/collection/utils/animation/test/display/animation.e2e.js +18 -18
- package/dist/collection/utils/animation/test/hooks/animation.e2e.js +39 -39
- package/dist/collection/utils/animation/test/multiple/animation.e2e.js +27 -27
- package/dist/collection/utils/browser/index.js +0 -22
- package/dist/collection/utils/config.js +20 -20
- package/dist/collection/utils/content/content.utils.spec.js +121 -121
- package/dist/collection/utils/content/index.js +58 -59
- package/dist/collection/utils/floating-point/floating-point.spec.js +14 -14
- package/dist/collection/utils/floating-point/index.js +5 -5
- package/dist/collection/utils/focus-visible.js +63 -63
- package/dist/collection/utils/forms/compare-with-utils.js +39 -0
- package/dist/collection/utils/forms/form-controller.js +45 -49
- package/dist/collection/utils/forms/index.js +1 -0
- package/dist/collection/utils/forms/notch-controller.js +120 -120
- package/dist/collection/utils/framework-delegate.js +121 -121
- package/dist/collection/utils/gesture/button-active.js +56 -56
- package/dist/collection/utils/gesture/gesture-controller.js +182 -182
- package/dist/collection/utils/gesture/index.js +222 -222
- package/dist/collection/utils/gesture/listener.js +36 -36
- package/dist/collection/utils/gesture/pointer-events.js +113 -113
- package/dist/collection/utils/gesture/recognizers.js +46 -46
- package/dist/collection/utils/gesture/swipe-back.js +65 -65
- package/dist/collection/utils/hardware-back-button.js +48 -48
- package/dist/collection/utils/helpers.js +258 -258
- package/dist/collection/utils/helpers.spec.js +28 -28
- package/dist/collection/utils/input-shims/hacks/common.js +61 -53
- package/dist/collection/utils/input-shims/hacks/hide-caret.js +19 -19
- package/dist/collection/utils/input-shims/hacks/input-blurring.js +47 -47
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +225 -225
- package/dist/collection/utils/input-shims/hacks/scroll-data.js +29 -29
- package/dist/collection/utils/input-shims/hacks/scroll-padding.js +21 -21
- package/dist/collection/utils/input-shims/hacks/test/scroll-assist.e2e.js +97 -97
- package/dist/collection/utils/input-shims/input-shims.js +87 -81
- package/dist/collection/utils/keyboard/keyboard-controller.js +128 -128
- package/dist/collection/utils/keyboard/keyboard.js +59 -59
- package/dist/collection/utils/keyboard/test/keyboard-controller.spec.js +21 -0
- package/dist/collection/utils/keyboard/test/keyboard.spec.js +214 -0
- package/dist/collection/utils/lock-controller.js +24 -24
- package/dist/collection/utils/logging/index.js +3 -3
- package/dist/collection/utils/media.js +13 -13
- package/dist/collection/utils/menu-controller/animations/base.js +8 -8
- package/dist/collection/utils/menu-controller/animations/overlay.js +21 -21
- package/dist/collection/utils/menu-controller/animations/push.js +20 -20
- package/dist/collection/utils/menu-controller/animations/reveal.js +6 -6
- package/dist/collection/utils/menu-controller/index.js +204 -206
- package/dist/collection/utils/native/capacitor.js +4 -4
- package/dist/collection/utils/native/haptic.js +151 -151
- package/dist/collection/utils/native/keyboard.js +47 -47
- package/dist/collection/utils/native/native-interface.js +15 -15
- package/dist/collection/utils/native/status-bar.js +36 -36
- package/dist/collection/utils/overlays.js +495 -494
- package/dist/collection/utils/platform.js +56 -56
- package/dist/collection/utils/rtl/dir.js +5 -5
- package/dist/collection/utils/rtl/dir.spec.js +17 -17
- package/dist/collection/utils/sanitization/index.js +122 -122
- package/dist/collection/utils/sanitization/test/sanitization.spec.js +43 -0
- package/dist/collection/utils/slot-mutation-controller.js +86 -85
- package/dist/collection/utils/status-tap.js +26 -26
- package/dist/collection/utils/tap-click/index.js +171 -171
- package/dist/collection/utils/tap-click/test/tap-click.e2e.js +12 -12
- package/dist/collection/utils/test/aria.spec.js +79 -0
- package/dist/collection/utils/test/attributes.spec.js +53 -0
- package/dist/collection/utils/test/framework-delegate/framework-delegate.e2e.js +25 -25
- package/dist/collection/utils/test/hardware-back-button.spec.js +53 -0
- package/dist/collection/utils/test/overlays/overlays.e2e.js +137 -137
- package/dist/collection/utils/test/overlays/overlays.spec.js +102 -0
- package/dist/collection/utils/test/platform.spec.js +132 -0
- package/dist/collection/utils/test/platform.utils.js +77 -77
- package/dist/collection/utils/test/playwright/drag-element.js +69 -69
- package/dist/collection/utils/test/playwright/generator.js +48 -25
- package/dist/collection/utils/test/playwright/matchers/index.js +3 -3
- package/dist/collection/utils/test/playwright/matchers/toHaveReceivedEvent.js +21 -21
- package/dist/collection/utils/test/playwright/matchers/toHaveReceivedEventDetail.js +28 -28
- package/dist/collection/utils/test/playwright/matchers/toHaveReceivedEventTimes.js +22 -22
- package/dist/collection/utils/test/playwright/page/event-spy.js +110 -110
- package/dist/collection/utils/test/playwright/page/utils/goto.js +52 -52
- package/dist/collection/utils/test/playwright/page/utils/locator.js +8 -8
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +44 -35
- package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +19 -19
- package/dist/collection/utils/test/playwright/page/utils/spy-on-event.js +4 -4
- package/dist/collection/utils/test/playwright/page/utils/wait-for-changes.js +48 -48
- package/dist/collection/utils/test/playwright/playwright-page.js +35 -35
- package/dist/collection/utils/test/playwright/viewports/index.js +13 -13
- package/dist/collection/utils/test/press-keys.js +77 -77
- package/dist/collection/utils/test/ready.spec.js +39 -0
- package/dist/collection/utils/test/theme.spec.js +56 -0
- package/dist/collection/utils/theme.js +23 -23
- package/dist/collection/utils/transition/index.js +163 -163
- package/dist/collection/utils/transition/ios.transition.js +598 -598
- package/dist/collection/utils/transition/md.transition.js +44 -44
- package/dist/collection/utils/watch-options.js +37 -26
- package/dist/docs.json +196 -39
- package/dist/esm/animation-dde8cc0d.js +1060 -0
- package/dist/esm/{app-globals-ec816a70.js → app-globals-722340c4.js} +1 -1
- package/dist/esm/button-active-c6ee4f50.js +67 -0
- package/dist/esm/capacitor-59395cbd.js +13 -0
- package/dist/esm/compare-with-utils-a96ff2ea.js +41 -0
- package/dist/esm/config-49c88215.js +193 -0
- package/dist/esm/cubic-bezier-fe2083dc.js +90 -0
- package/dist/esm/data-f5c75b4e.js +1575 -0
- package/dist/esm/{dir-912e3e13.js → dir-babeabeb.js} +5 -5
- package/dist/esm/focus-visible-dd40d69f.js +75 -0
- package/dist/esm/form-controller-548aa79c.js +64 -0
- package/dist/esm/framework-delegate-bc1fd82a.js +140 -0
- package/dist/esm/gesture-controller-1bf57181.js +195 -0
- package/dist/esm/haptic-554688a5.js +206 -0
- package/dist/esm/hardware-back-button-b2bc76db.js +71 -0
- package/dist/esm/helpers-ae653409.js +418 -0
- package/dist/esm/{index-b49b173c.js → index-08d686eb.js} +184 -63
- package/dist/esm/index-0c12c22b.js +306 -0
- package/dist/esm/index-1932b201.js +231 -0
- package/dist/esm/index-2cf77112.js +457 -0
- package/dist/esm/index-82eeb47f.js +196 -0
- package/dist/esm/{index-595d62c9.js → index-9b0d46f4.js} +3 -3
- package/dist/esm/index-a5d50daf.js +7 -0
- package/dist/esm/{index-746a238e.js → index-b9e742e5.js} +60 -61
- package/dist/esm/index.js +113 -113
- package/dist/esm/input-shims-6539ce13.js +599 -0
- package/dist/esm/input.utils-a5a2d164.js +135 -0
- package/dist/esm/ion-accordion_2.entry.js +491 -481
- package/dist/esm/ion-action-sheet.entry.js +262 -252
- package/dist/esm/ion-alert.entry.js +442 -432
- package/dist/esm/ion-app_8.entry.js +1153 -1153
- package/dist/esm/ion-avatar_3.entry.js +29 -29
- package/dist/esm/ion-back-button.entry.js +73 -73
- package/dist/esm/ion-backdrop.entry.js +40 -40
- package/dist/esm/ion-breadcrumb_2.entry.js +194 -194
- package/dist/esm/ion-button_2.entry.js +303 -303
- package/dist/esm/ion-card_5.entry.js +105 -105
- package/dist/esm/ion-checkbox.entry.js +149 -147
- package/dist/esm/ion-chip.entry.js +20 -20
- package/dist/esm/ion-col_3.entry.js +136 -136
- package/dist/esm/ion-datetime-button.entry.js +325 -325
- package/dist/esm/ion-datetime_3.entry.js +2185 -2137
- package/dist/esm/ion-fab_3.entry.js +152 -152
- package/dist/esm/ion-img.entry.js +79 -79
- package/dist/esm/ion-infinite-scroll_2.entry.js +198 -190
- package/dist/esm/ion-input.entry.js +426 -394
- package/dist/esm/ion-item-option_3.entry.js +459 -459
- package/dist/esm/ion-item_8.entry.js +447 -434
- package/dist/esm/ion-loading.entry.js +220 -210
- package/dist/esm/ion-menu_3.entry.js +670 -658
- package/dist/esm/ion-modal.entry.js +1415 -1405
- package/dist/esm/ion-nav_2.entry.js +904 -904
- package/dist/esm/ion-picker-column-internal.entry.js +331 -327
- package/dist/esm/ion-picker-internal.entry.js +455 -455
- package/dist/esm/ion-popover.entry.js +1110 -1100
- package/dist/esm/ion-progress-bar.entry.js +40 -40
- package/dist/esm/ion-radio_2.entry.js +322 -309
- package/dist/esm/ion-range.entry.js +558 -556
- package/dist/esm/ion-refresher_2.entry.js +786 -779
- package/dist/esm/ion-reorder_2.entry.js +269 -269
- package/dist/esm/ion-ripple-effect.entry.js +66 -66
- package/dist/esm/ion-route_4.entry.js +693 -693
- package/dist/esm/ion-searchbar.entry.js +363 -354
- package/dist/esm/ion-segment_2.entry.js +509 -483
- package/dist/esm/ion-select_3.entry.js +784 -768
- package/dist/esm/ion-spinner.entry.js +46 -46
- package/dist/esm/ion-split-pane.entry.js +117 -117
- package/dist/esm/ion-tab-bar_2.entry.js +142 -142
- package/dist/esm/ion-tab_2.entry.js +187 -187
- package/dist/esm/ion-text.entry.js +13 -13
- package/dist/esm/ion-textarea.entry.js +381 -349
- package/dist/esm/ion-toast.entry.js +771 -419
- package/dist/esm/ion-toggle.entry.js +227 -225
- package/dist/esm/ionic-global-c0cda98e.js +224 -0
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/ios.transition-802a84a6.js +651 -0
- package/dist/esm/keyboard-52278bd7.js +146 -0
- package/dist/esm/keyboard-73175e24.js +79 -0
- package/dist/esm/keyboard-controller-ec5c2bfa.js +165 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/lock-controller-316928be.js +38 -0
- package/dist/esm/md.transition-43c2874d.js +57 -0
- package/dist/esm/notch-controller-fea7f9c5.js +153 -0
- package/dist/esm/overlays-32ef481d.js +693 -0
- package/dist/esm/spinner-configs-964f7cf3.js +145 -0
- package/dist/esm/status-tap-2b93b1b5.js +40 -0
- package/dist/esm/swipe-back-18cb49f7.js +79 -0
- package/dist/esm/theme-01f3f29c.js +43 -0
- package/dist/esm/watch-options-c2911ace.js +47 -0
- package/dist/esm-es5/animation-dde8cc0d.js +4 -0
- package/dist/esm-es5/app-globals-722340c4.js +4 -0
- package/dist/esm-es5/{button-active-d926d4f4.js → button-active-c6ee4f50.js} +1 -1
- package/dist/esm-es5/{capacitor-b4979570.js → capacitor-59395cbd.js} +1 -1
- package/dist/esm-es5/compare-with-utils-a96ff2ea.js +4 -0
- package/dist/esm-es5/config-49c88215.js +4 -0
- package/dist/esm-es5/cubic-bezier-fe2083dc.js +4 -0
- package/dist/esm-es5/data-f5c75b4e.js +4 -0
- package/dist/esm-es5/{dir-912e3e13.js → dir-babeabeb.js} +1 -1
- package/dist/esm-es5/focus-visible-dd40d69f.js +4 -0
- package/dist/esm-es5/form-controller-548aa79c.js +4 -0
- package/dist/esm-es5/framework-delegate-bc1fd82a.js +4 -0
- package/dist/esm-es5/{gesture-controller-0fa396c4.js → gesture-controller-1bf57181.js} +1 -1
- package/dist/esm-es5/{haptic-1243b917.js → haptic-554688a5.js} +1 -1
- package/dist/esm-es5/hardware-back-button-b2bc76db.js +4 -0
- package/dist/esm-es5/helpers-ae653409.js +4 -0
- package/dist/esm-es5/index-08d686eb.js +5 -0
- package/dist/esm-es5/index-0c12c22b.js +4 -0
- package/dist/esm-es5/{index-a09eac70.js → index-1932b201.js} +1 -1
- package/dist/esm-es5/index-2cf77112.js +4 -0
- package/dist/esm-es5/index-82eeb47f.js +4 -0
- package/dist/esm-es5/index-b9e742e5.js +4 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-6539ce13.js +4 -0
- package/dist/esm-es5/input.utils-a5a2d164.js +4 -0
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-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-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-col_3.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-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
- package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
- 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-ripple-effect.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-spinner.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-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-text.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-global-c0cda98e.js +4 -0
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-4d1322d6.js → ios.transition-802a84a6.js} +1 -1
- package/dist/esm-es5/{keyboard-b551279d.js → keyboard-52278bd7.js} +1 -1
- package/dist/esm-es5/{keyboard-b063f012.js → keyboard-73175e24.js} +1 -1
- package/dist/esm-es5/keyboard-controller-ec5c2bfa.js +4 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-43c2874d.js +4 -0
- package/dist/esm-es5/notch-controller-fea7f9c5.js +4 -0
- package/dist/esm-es5/overlays-32ef481d.js +4 -0
- package/dist/esm-es5/spinner-configs-964f7cf3.js +4 -0
- package/dist/esm-es5/status-tap-2b93b1b5.js +4 -0
- package/dist/esm-es5/swipe-back-18cb49f7.js +4 -0
- package/dist/esm-es5/watch-options-c2911ace.js +4 -0
- package/dist/html.html-data.json +17 -4
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +15 -15
- package/dist/ionic/p-012c3ceb.system.js +4 -0
- package/dist/ionic/p-013013a3.js +4 -0
- package/dist/ionic/p-01d14eba.system.entry.js +4 -0
- package/dist/ionic/p-042e6f4b.entry.js +4 -0
- package/dist/ionic/{p-819ff3b9.system.js → p-08e01816.system.js} +1 -1
- package/dist/ionic/{p-f919c026.entry.js → p-0add7211.entry.js} +1 -1
- package/dist/ionic/p-0bd51c34.system.js +4 -0
- package/dist/ionic/{p-6f6646bf.system.entry.js → p-0e53f8ea.system.entry.js} +1 -1
- package/dist/ionic/{p-6ea2e653.entry.js → p-1161a793.entry.js} +1 -1
- package/dist/ionic/{p-96ba8eac.entry.js → p-1208f939.entry.js} +1 -1
- package/dist/ionic/p-16756e94.system.entry.js +4 -0
- package/dist/ionic/p-1786bc72.js +4 -0
- package/dist/ionic/{p-1ecba429.entry.js → p-17da5ed1.entry.js} +1 -1
- package/dist/ionic/p-18ba8221.entry.js +4 -0
- package/dist/ionic/p-1b19c04b.entry.js +4 -0
- package/dist/ionic/p-1cca10d6.system.js +4 -0
- package/dist/ionic/p-1e4371bd.js +4 -0
- package/dist/ionic/{p-fcf47f80.entry.js → p-2092f39f.entry.js} +1 -1
- package/dist/ionic/p-251666e2.entry.js +4 -0
- package/dist/ionic/{p-7423746f.entry.js → p-270e1a1d.entry.js} +1 -1
- package/dist/ionic/{p-419eb426.js → p-27281edd.js} +1 -1
- package/dist/ionic/p-28249b10.system.entry.js +4 -0
- package/dist/ionic/p-28a2c2a2.entry.js +4 -0
- package/dist/ionic/{p-6129af0a.system.entry.js → p-2938823a.system.entry.js} +1 -1
- package/dist/ionic/p-29d03b3a.js +4 -0
- package/dist/ionic/{p-17240d90.js → p-2aea8b1e.js} +1 -1
- package/dist/ionic/p-2b7827c7.js +4 -0
- package/dist/ionic/p-2d3b9fa3.system.entry.js +4 -0
- package/dist/ionic/p-2d539df1.entry.js +4 -0
- package/dist/ionic/p-31b2326e.system.js +4 -0
- package/dist/ionic/{p-e028178a.system.js → p-31fcb233.system.js} +1 -1
- package/dist/ionic/p-32ad210f.system.js +4 -0
- package/dist/ionic/{p-aa377971.system.js → p-33a37fad.system.js} +1 -1
- package/dist/ionic/p-350f7292.system.entry.js +4 -0
- package/dist/ionic/{p-cabd2c6d.entry.js → p-353b349d.entry.js} +1 -1
- package/dist/ionic/p-36d187af.js +4 -0
- package/dist/ionic/p-376a6063.js +4 -0
- package/dist/ionic/p-38c337e7.system.js +4 -0
- package/dist/ionic/p-38f2c6bb.system.js +4 -0
- package/dist/ionic/{p-9e106f58.entry.js → p-3a45a82b.entry.js} +1 -1
- package/dist/ionic/{p-3bad5c1a.js → p-3a75d7fd.js} +1 -1
- package/dist/ionic/p-3dd98a73.entry.js +4 -0
- package/dist/ionic/p-3e6b47e8.system.entry.js +4 -0
- package/dist/ionic/p-3f5179b5.entry.js +4 -0
- package/dist/ionic/p-40f68333.system.js +4 -0
- package/dist/ionic/p-4155f352.system.js +4 -0
- package/dist/ionic/{p-b287ab05.js → p-4180a747.js} +1 -1
- package/dist/ionic/p-4233cc1e.system.entry.js +4 -0
- package/dist/ionic/{p-b923f3d7.js → p-42f189f4.js} +1 -1
- package/dist/ionic/p-459d13d5.js +4 -0
- package/dist/ionic/p-4609d030.system.js +4 -0
- package/dist/ionic/p-46d400b4.system.entry.js +4 -0
- package/dist/ionic/{p-cf62e1c8.js → p-47b6ba5b.js} +1 -1
- package/dist/ionic/p-4d67d27a.entry.js +4 -0
- package/dist/ionic/p-4f255d5a.system.js +4 -0
- package/dist/ionic/p-4fb51e61.system.entry.js +4 -0
- package/dist/ionic/{p-c575a7b8.system.entry.js → p-517a9885.system.entry.js} +1 -1
- package/dist/ionic/{p-8083aadb.entry.js → p-51a087d6.entry.js} +1 -1
- package/dist/ionic/p-53ec4f1c.system.js +4 -0
- package/dist/ionic/{p-6f8a95a3.system.entry.js → p-564af202.system.entry.js} +2 -2
- package/dist/ionic/{p-0ac3fb2c.entry.js → p-588fdf40.entry.js} +1 -1
- package/dist/ionic/p-5b365ca7.system.js +4 -0
- package/dist/ionic/{p-c42c86c0.system.entry.js → p-5bebc7b3.system.entry.js} +1 -1
- package/dist/ionic/p-5e4eec2e.entry.js +4 -0
- package/dist/ionic/{p-2a8eeef7.system.js → p-5e745192.system.js} +1 -1
- package/dist/ionic/{p-76378400.js → p-5ecae037.js} +1 -1
- package/dist/ionic/{p-c679fcb5.entry.js → p-5eda1d7d.entry.js} +1 -1
- package/dist/ionic/{p-1289b3b5.system.entry.js → p-6577aea9.system.entry.js} +2 -2
- package/dist/ionic/p-66d633fb.js +4 -0
- package/dist/ionic/{p-0bbede6a.system.entry.js → p-6ad34705.system.entry.js} +1 -1
- package/dist/ionic/p-6de472cb.js +4 -0
- package/dist/ionic/{p-ce7d67a7.system.entry.js → p-6de62649.system.entry.js} +2 -2
- package/dist/ionic/{p-8a2801f1.system.entry.js → p-6e70dd1a.system.entry.js} +1 -1
- package/dist/ionic/{p-61b192a4.system.entry.js → p-6f8dbe92.system.entry.js} +1 -1
- package/dist/ionic/{p-0b00b937.entry.js → p-6fbecbda.entry.js} +1 -1
- package/dist/ionic/p-72f6ff89.js +4 -0
- package/dist/ionic/p-765f4dde.entry.js +4 -0
- package/dist/ionic/p-7798c78a.system.js +4 -0
- package/dist/ionic/p-78aadecb.entry.js +4 -0
- package/dist/ionic/p-790220fd.system.js +4 -0
- package/dist/ionic/p-7d92bf15.system.entry.js +4 -0
- package/dist/ionic/p-80fa068e.entry.js +4 -0
- package/dist/ionic/p-82e3d633.system.js +4 -0
- package/dist/ionic/p-8314281e.system.js +4 -0
- package/dist/ionic/p-8804a472.system.entry.js +4 -0
- package/dist/ionic/p-888db766.system.js +4 -0
- package/dist/ionic/p-88d5fbd3.js +4 -0
- package/dist/ionic/p-88fde0e0.entry.js +4 -0
- package/dist/ionic/p-8985cdb6.system.js +4 -0
- package/dist/ionic/p-8aa1d0b7.system.js +4 -0
- package/dist/ionic/p-8acae6b0.system.entry.js +4 -0
- package/dist/ionic/p-8d69a624.entry.js +4 -0
- package/dist/ionic/p-8f5d30f5.entry.js +4 -0
- package/dist/ionic/{p-beb864e4.system.entry.js → p-908475e7.system.entry.js} +1 -1
- package/dist/ionic/p-91d33c4a.js +4 -0
- package/dist/ionic/p-953009b1.entry.js +4 -0
- package/dist/ionic/{p-eb8dc56f.system.entry.js → p-958d6ebe.system.entry.js} +2 -2
- package/dist/ionic/{p-78030c1f.system.entry.js → p-9709ebd8.system.entry.js} +1 -1
- package/dist/ionic/p-9738fd82.js +5 -0
- package/dist/ionic/p-979d4f5c.system.js +4 -0
- package/dist/ionic/{p-c4a5de01.entry.js → p-98f3d827.entry.js} +1 -1
- package/dist/ionic/p-9b7f0b0f.entry.js +4 -0
- package/dist/ionic/p-9e447eb1.system.js +4 -0
- package/dist/ionic/p-9eec42cc.system.entry.js +4 -0
- package/dist/ionic/p-9f6ee2c0.system.entry.js +4 -0
- package/dist/ionic/p-a0bb7b92.system.entry.js +4 -0
- package/dist/ionic/p-a0d7bb5e.system.js +4 -0
- package/dist/ionic/p-a1987850.entry.js +4 -0
- package/dist/ionic/{p-8209372c.entry.js → p-a3277a67.entry.js} +1 -1
- package/dist/ionic/{p-4e6e43c1.entry.js → p-a4afcc88.entry.js} +1 -1
- package/dist/ionic/p-a9978d08.entry.js +4 -0
- package/dist/ionic/p-ada96dd0.system.entry.js +4 -0
- package/dist/ionic/p-afd6ca9d.entry.js +4 -0
- package/dist/ionic/p-b3b3efba.system.entry.js +4 -0
- package/dist/ionic/p-b4a51c42.system.js +4 -0
- package/dist/ionic/p-b56d0866.system.entry.js +4 -0
- package/dist/ionic/{p-4e50b8d1.entry.js → p-b5f9f14c.entry.js} +1 -1
- package/dist/ionic/{p-eab10949.system.entry.js → p-b6f5e4f2.system.entry.js} +1 -1
- package/dist/ionic/p-b6f9d32a.entry.js +4 -0
- package/dist/ionic/p-b7010c69.system.entry.js +4 -0
- package/dist/ionic/{p-181b7c2a.js → p-c3c3333a.js} +1 -1
- package/dist/ionic/p-c468af8a.system.js +4 -0
- package/dist/ionic/p-c61cc894.js +4 -0
- package/dist/ionic/p-c7c8429a.system.js +4 -0
- package/dist/ionic/p-c847fb35.system.entry.js +4 -0
- package/dist/ionic/{p-e0f52215.system.entry.js → p-c91ccbfa.system.entry.js} +1 -1
- package/dist/ionic/p-c9a21dfd.system.entry.js +4 -0
- package/dist/ionic/p-cabad15b.system.js +4 -0
- package/dist/ionic/{p-8c1805f4.system.entry.js → p-caf21b46.system.entry.js} +1 -1
- package/dist/ionic/p-cce9f61a.system.entry.js +4 -0
- package/dist/ionic/{p-de68588d.js → p-cdbeaadc.js} +1 -1
- package/dist/ionic/{p-108f9d49.entry.js → p-cfe57b1b.entry.js} +1 -1
- package/dist/ionic/p-d032f825.system.entry.js +4 -0
- package/dist/ionic/{p-31119a15.entry.js → p-d37b441e.entry.js} +1 -1
- package/dist/ionic/p-d3b030b8.system.js +5 -0
- package/dist/ionic/p-d51674c5.system.js +4 -0
- package/dist/ionic/p-d8d84afa.system.js +4 -0
- package/dist/ionic/p-dc6af8e9.entry.js +4 -0
- package/dist/ionic/{p-3818f63f.entry.js → p-ddb30596.entry.js} +1 -1
- package/dist/ionic/p-ddbb2d5b.system.js +4 -0
- package/dist/ionic/p-de6f8b28.system.js +4 -0
- package/dist/ionic/p-de756e5c.js +4 -0
- package/dist/ionic/p-dee7c1d0.system.entry.js +4 -0
- package/dist/ionic/{p-e0f0d55f.system.js → p-e24ce1e5.system.js} +1 -1
- package/dist/ionic/p-e3584231.system.js +4 -0
- package/dist/ionic/{p-c4f2dce7.system.js → p-e673a0a2.system.js} +1 -1
- package/dist/ionic/p-e6d68e02.system.entry.js +4 -0
- package/dist/ionic/{p-012952cd.system.entry.js → p-e7ea9815.system.entry.js} +2 -2
- package/dist/ionic/{p-db1a1e00.entry.js → p-e94c392d.entry.js} +1 -1
- package/dist/ionic/{p-a04bfada.entry.js → p-ea69616e.entry.js} +1 -1
- package/dist/ionic/p-eef72e06.js +4 -0
- package/dist/ionic/p-ef126ae8.system.entry.js +4 -0
- package/dist/ionic/p-f0445d82.system.entry.js +4 -0
- package/dist/ionic/p-f233f1e0.system.js +4 -0
- package/dist/ionic/p-f5d2dc9b.js +4 -0
- package/dist/ionic/p-f656e032.system.entry.js +4 -0
- package/dist/ionic/p-f70970cf.js +4 -0
- package/dist/ionic/p-f8a5bb89.entry.js +4 -0
- package/dist/ionic/p-fba0a6e7.system.entry.js +4 -0
- package/dist/ionic/p-feae5133.entry.js +4 -0
- package/dist/ionic/p-ff4b7e40.system.js +4 -0
- package/dist/types/components/accordion/accordion.d.ts +62 -62
- package/dist/types/components/accordion-group/accordion-group-interface.d.ts +3 -3
- package/dist/types/components/accordion-group/accordion-group.d.ts +76 -76
- package/dist/types/components/action-sheet/action-sheet-interface.d.ts +25 -25
- package/dist/types/components/action-sheet/action-sheet.d.ts +149 -149
- package/dist/types/components/action-sheet/test/basic/fixture.d.ts +7 -7
- package/dist/types/components/alert/alert-interface.d.ts +45 -45
- package/dist/types/components/alert/alert.d.ts +181 -181
- package/dist/types/components/app/app.d.ts +15 -15
- package/dist/types/components/avatar/avatar.d.ts +1 -1
- package/dist/types/components/back-button/back-button.d.ts +41 -41
- package/dist/types/components/backdrop/backdrop.d.ts +22 -22
- package/dist/types/components/badge/badge.d.ts +7 -7
- package/dist/types/components/breadcrumb/breadcrumb-interface.d.ts +4 -4
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +87 -87
- package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +39 -39
- package/dist/types/components/button/button.d.ts +121 -121
- package/dist/types/components/buttons/buttons.d.ts +14 -14
- package/dist/types/components/card/card.d.ts +57 -57
- package/dist/types/components/card-content/card-content.d.ts +1 -1
- package/dist/types/components/card-header/card-header.d.ts +13 -13
- package/dist/types/components/card-subtitle/card-subtitle.d.ts +7 -7
- package/dist/types/components/card-title/card-title.d.ts +7 -7
- package/dist/types/components/checkbox/checkbox-interface.d.ts +4 -4
- package/dist/types/components/checkbox/checkbox.d.ts +112 -111
- package/dist/types/components/chip/chip.d.ts +15 -15
- package/dist/types/components/col/col.d.ts +128 -128
- package/dist/types/components/content/content-interface.d.ts +6 -6
- package/dist/types/components/content/content.d.ts +129 -129
- package/dist/types/components/datetime/datetime-interface.d.ts +15 -15
- package/dist/types/components/datetime/datetime.d.ts +407 -407
- package/dist/types/components/datetime/utils/data.d.ts +11 -11
- package/dist/types/components/datetime/utils/manipulation.d.ts +25 -25
- package/dist/types/components/datetime/utils/state.d.ts +8 -8
- package/dist/types/components/datetime-button/datetime-button.d.ts +59 -59
- package/dist/types/components/fab/fab.d.ts +33 -33
- package/dist/types/components/fab-button/fab-button.d.ts +88 -88
- package/dist/types/components/fab-list/fab-list.d.ts +11 -11
- package/dist/types/components/footer/footer.d.ts +27 -27
- package/dist/types/components/grid/grid.d.ts +5 -5
- package/dist/types/components/header/header.d.ts +31 -31
- package/dist/types/components/header/header.utils.d.ts +7 -7
- package/dist/types/components/img/img.d.ts +30 -30
- package/dist/types/components/infinite-scroll/infinite-scroll-interface.d.ts +1 -1
- package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +65 -58
- package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +23 -23
- package/dist/types/components/input/input-interface.d.ts +6 -6
- package/dist/types/components/input/input.d.ts +321 -315
- package/dist/types/components/item/item.d.ts +111 -111
- package/dist/types/components/item-divider/item-divider.d.ts +16 -16
- package/dist/types/components/item-group/item-group.d.ts +1 -1
- package/dist/types/components/item-option/item-option.d.ts +44 -44
- package/dist/types/components/item-options/item-options.d.ts +13 -13
- package/dist/types/components/item-sliding/item-sliding-interface.d.ts +1 -1
- package/dist/types/components/item-sliding/item-sliding.d.ts +75 -75
- package/dist/types/components/label/label.d.ts +30 -30
- package/dist/types/components/list/list.d.ts +17 -17
- package/dist/types/components/list-header/list-header.d.ts +11 -11
- package/dist/types/components/loading/loading-interface.d.ts +16 -16
- package/dist/types/components/loading/loading.d.ts +152 -152
- package/dist/types/components/menu/menu-interface.d.ts +39 -39
- package/dist/types/components/menu/menu.d.ts +140 -140
- package/dist/types/components/menu-button/menu-button.d.ts +30 -30
- package/dist/types/components/menu-toggle/menu-toggle.d.ts +21 -21
- package/dist/types/components/modal/animations/sheet.d.ts +4 -4
- package/dist/types/components/modal/gestures/sheet.d.ts +30 -30
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +27 -27
- package/dist/types/components/modal/modal.d.ts +265 -265
- package/dist/types/components/modal/test/fixtures.d.ts +7 -7
- package/dist/types/components/nav/nav-interface.d.ts +40 -40
- package/dist/types/components/nav/nav.d.ts +247 -247
- package/dist/types/components/nav/view-controller.d.ts +13 -13
- package/dist/types/components/nav-link/nav-link.d.ts +19 -19
- package/dist/types/components/note/note.d.ts +7 -7
- package/dist/types/components/picker/picker-interface.d.ts +43 -43
- package/dist/types/components/picker/picker.d.ts +149 -149
- package/dist/types/components/picker-column/picker-column.d.ts +39 -39
- package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +3 -3
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +93 -89
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +4 -4
- package/dist/types/components/picker-internal/picker-internal.d.ts +94 -94
- package/dist/types/components/popover/popover-interface.d.ts +26 -26
- package/dist/types/components/popover/popover.d.ts +279 -279
- package/dist/types/components/popover/test/fixture.d.ts +5 -5
- package/dist/types/components/popover/utils.d.ts +25 -25
- package/dist/types/components/progress-bar/progress-bar.d.ts +27 -27
- package/dist/types/components/radio/radio.d.ts +100 -99
- package/dist/types/components/radio-group/radio-group-interface.d.ts +5 -4
- package/dist/types/components/radio-group/radio-group.d.ts +51 -44
- package/dist/types/components/radio-group/test/fixtures.d.ts +5 -5
- package/dist/types/components/range/range-interface.d.ts +7 -7
- package/dist/types/components/range/range.d.ts +193 -192
- package/dist/types/components/refresher/refresher-interface.d.ts +3 -3
- package/dist/types/components/refresher/refresher.d.ts +132 -132
- package/dist/types/components/refresher-content/refresher-content.d.ts +44 -44
- package/dist/types/components/reorder/reorder.d.ts +3 -3
- package/dist/types/components/reorder-group/reorder-group-interface.d.ts +5 -5
- package/dist/types/components/reorder-group/reorder-group.d.ts +53 -53
- package/dist/types/components/ripple-effect/ripple-effect.d.ts +20 -20
- package/dist/types/components/route/route-interface.d.ts +1 -1
- package/dist/types/components/route/route.d.ts +43 -43
- package/dist/types/components/route-redirect/route-redirect.d.ts +33 -33
- package/dist/types/components/router/router.d.ts +74 -73
- package/dist/types/components/router/utils/dom.d.ts +2 -2
- package/dist/types/components/router/utils/interface.d.ts +31 -31
- package/dist/types/components/router/utils/matching.d.ts +6 -6
- package/dist/types/components/router-link/router-link.d.ts +34 -34
- package/dist/types/components/router-outlet/router-outlet.d.ts +41 -41
- package/dist/types/components/row/row.d.ts +1 -1
- package/dist/types/components/searchbar/searchbar-interface.d.ts +6 -6
- package/dist/types/components/searchbar/searchbar.d.ts +235 -233
- package/dist/types/components/segment/segment-interface.d.ts +3 -3
- package/dist/types/components/segment/segment.d.ts +82 -82
- package/dist/types/components/segment-button/segment-button.d.ts +36 -36
- package/dist/types/components/select/select-interface.d.ts +3 -3
- package/dist/types/components/select/select.d.ts +238 -233
- package/dist/types/components/select-option/select-option.d.ts +11 -11
- package/dist/types/components/select-popover/select-popover-interface.d.ts +8 -8
- package/dist/types/components/select-popover/select-popover.d.ts +39 -39
- package/dist/types/components/select-popover/test/fixtures.d.ts +12 -12
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +15 -7
- package/dist/types/components/spinner/spinner-configs.d.ts +96 -96
- package/dist/types/components/spinner/spinner-interface.d.ts +14 -14
- package/dist/types/components/spinner/spinner.d.ts +21 -21
- package/dist/types/components/split-pane/split-pane.d.ts +33 -33
- package/dist/types/components/tab/tab.d.ts +21 -21
- package/dist/types/components/tab-bar/tab-bar-interface.d.ts +4 -4
- package/dist/types/components/tab-bar/tab-bar.d.ts +34 -34
- package/dist/types/components/tab-button/tab-button.d.ts +56 -56
- package/dist/types/components/tabs/tabs-interface.d.ts +4 -4
- package/dist/types/components/tabs/tabs.d.ts +52 -52
- package/dist/types/components/text/text.d.ts +7 -7
- package/dist/types/components/textarea/textarea-interface.d.ts +6 -6
- package/dist/types/components/textarea/textarea.d.ts +275 -269
- package/dist/types/components/thumbnail/thumbnail.d.ts +1 -1
- package/dist/types/components/title/title.d.ts +21 -21
- package/dist/types/components/toast/animations/utils.d.ts +15 -4
- package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +9 -0
- package/dist/types/components/toast/toast-interface.d.ts +37 -35
- package/dist/types/components/toast/toast.d.ts +241 -214
- package/dist/types/components/toggle/toggle-interface.d.ts +4 -4
- package/dist/types/components/toggle/toggle.d.ts +117 -116
- package/dist/types/components/toolbar/toolbar.d.ts +11 -11
- package/dist/types/components.d.ts +679 -16
- package/dist/types/global/config.d.ts +6 -6
- package/dist/types/interface.d.ts +1 -5
- package/dist/types/jest.d.ts +5 -0
- package/dist/types/stencil-public-runtime.d.ts +10 -0
- package/dist/types/utils/animation/animation-interface.d.ts +205 -205
- package/dist/types/utils/browser/index.d.ts +17 -8
- package/dist/types/utils/config.d.ts +175 -175
- package/dist/types/utils/content/index.d.ts +1 -1
- package/dist/types/utils/element-interface.d.ts +6 -6
- package/dist/types/utils/focus-visible.d.ts +5 -4
- package/dist/types/utils/forms/compare-with-utils.d.ts +18 -0
- package/dist/types/utils/forms/form-controller.d.ts +3 -3
- package/dist/types/utils/forms/index.d.ts +1 -0
- package/dist/types/utils/forms/notch-controller.d.ts +2 -2
- package/dist/types/utils/framework-delegate.d.ts +3 -3
- package/dist/types/utils/gesture/gesture-controller.d.ts +49 -49
- package/dist/types/utils/gesture/index.d.ts +31 -31
- package/dist/types/utils/gesture/listener.d.ts +2 -2
- package/dist/types/utils/gesture/pointer-events.d.ts +12 -12
- package/dist/types/utils/gesture/recognizers.d.ts +4 -4
- package/dist/types/utils/hardware-back-button.d.ts +4 -0
- package/dist/types/utils/helpers.d.ts +8 -8
- package/dist/types/utils/input-shims/hacks/scroll-data.d.ts +4 -4
- package/dist/types/utils/keyboard/keyboard-controller.d.ts +3 -3
- package/dist/types/utils/lock-controller.d.ts +1 -1
- package/dist/types/utils/native/haptic.d.ts +38 -38
- package/dist/types/utils/native/keyboard.d.ts +29 -29
- package/dist/types/utils/native/native-interface.d.ts +15 -15
- package/dist/types/utils/native/status-bar.d.ts +8 -8
- package/dist/types/utils/overlays-interface.d.ts +27 -27
- package/dist/types/utils/overlays.d.ts +29 -28
- package/dist/types/utils/platform.d.ts +16 -16
- package/dist/types/utils/sanitization/index.d.ts +2 -2
- package/dist/types/utils/slot-mutation-controller.d.ts +3 -3
- package/dist/types/utils/test/platform.utils.d.ts +67 -67
- package/dist/types/utils/test/playwright/generator.d.ts +16 -7
- package/dist/types/utils/test/playwright/matchers/index.d.ts +3 -3
- package/dist/types/utils/test/playwright/matchers/toHaveReceivedEvent.d.ts +2 -2
- package/dist/types/utils/test/playwright/matchers/toHaveReceivedEventDetail.d.ts +2 -2
- package/dist/types/utils/test/playwright/matchers/toHaveReceivedEventTimes.d.ts +2 -2
- package/dist/types/utils/test/playwright/page/event-spy.d.ts +15 -15
- package/dist/types/utils/test/playwright/page/utils/goto.d.ts +3 -3
- package/dist/types/utils/test/playwright/page/utils/locator.d.ts +15 -15
- package/dist/types/utils/test/playwright/playwright-declarations.d.ts +92 -92
- package/dist/types/utils/test/playwright/playwright-page.d.ts +3 -3
- package/dist/types/utils/test/playwright/viewports/index.d.ts +12 -12
- package/dist/types/utils/test/press-keys.d.ts +14 -14
- package/dist/types/utils/transition/index.d.ts +6 -6
- package/dist/types/utils/watch-options.d.ts +9 -1
- package/hydrate/index.d.ts +1 -1
- package/hydrate/index.js +30673 -29948
- package/package.json +10 -12
- package/dist/cjs/animation-c8bdd3c7.js +0 -1046
- package/dist/cjs/button-active-c0ff1915.js +0 -69
- package/dist/cjs/config-d5882735.js +0 -199
- package/dist/cjs/cubic-bezier-6b9222ad.js +0 -92
- package/dist/cjs/data-c8d21093.js +0 -1622
- package/dist/cjs/focus-visible-a7545600.js +0 -77
- package/dist/cjs/form-controller-5e223b54.js +0 -70
- package/dist/cjs/framework-delegate-c0873a6f.js +0 -144
- package/dist/cjs/gesture-controller-b46721be.js +0 -197
- package/dist/cjs/haptic-678abc9f.js +0 -212
- package/dist/cjs/hardware-back-button-b67c8e75.js +0 -76
- package/dist/cjs/helpers-ea4ccbcb.js +0 -441
- package/dist/cjs/index-0ee995e4.js +0 -459
- package/dist/cjs/index-306a7476.js +0 -32
- package/dist/cjs/index-5e7529f6.js +0 -310
- package/dist/cjs/index-9f379eaa.js +0 -198
- package/dist/cjs/index-eccba000.js +0 -243
- package/dist/cjs/input-shims-da7dc0de.js +0 -588
- package/dist/cjs/input.utils-0fe3097c.js +0 -137
- package/dist/cjs/ionic-global-fb752503.js +0 -230
- package/dist/cjs/ios.transition-5af5991e.js +0 -654
- package/dist/cjs/keyboard-controller-50beb83a.js +0 -167
- package/dist/cjs/keyboard-fd7db491.js +0 -81
- package/dist/cjs/lock-controller-4ae2eb59.js +0 -40
- package/dist/cjs/md.transition-1e740a6a.js +0 -59
- package/dist/cjs/notch-controller-f4f6af5d.js +0 -155
- package/dist/cjs/overlays-1a734051.js +0 -714
- package/dist/cjs/spinner-configs-f7b5105b.js +0 -147
- package/dist/cjs/status-tap-778e8054.js +0 -42
- package/dist/cjs/swipe-back-7e843e77.js +0 -81
- package/dist/cjs/theme-fbc56b3b.js +0 -48
- package/dist/cjs/watch-options-f3f77e54.js +0 -38
- package/dist/collection/components/item/test/text/item.e2e.js +0 -14
- package/dist/esm/animation-92066c62.js +0 -1044
- package/dist/esm/button-active-d926d4f4.js +0 -67
- package/dist/esm/capacitor-b4979570.js +0 -13
- package/dist/esm/config-96c9ace3.js +0 -193
- package/dist/esm/cubic-bezier-66542bc5.js +0 -90
- package/dist/esm/data-44d9e816.js +0 -1575
- package/dist/esm/focus-visible-85493433.js +0 -75
- package/dist/esm/form-controller-ed77647a.js +0 -68
- package/dist/esm/framework-delegate-aa433dea.js +0 -140
- package/dist/esm/gesture-controller-0fa396c4.js +0 -195
- package/dist/esm/haptic-1243b917.js +0 -206
- package/dist/esm/hardware-back-button-39299f84.js +0 -71
- package/dist/esm/helpers-3379ba19.js +0 -418
- package/dist/esm/index-7a14ecec.js +0 -29
- package/dist/esm/index-a09eac70.js +0 -231
- package/dist/esm/index-df55802d.js +0 -308
- package/dist/esm/index-f0cc4e14.js +0 -196
- package/dist/esm/index-ff313b19.js +0 -457
- package/dist/esm/input-shims-d78a3c77.js +0 -586
- package/dist/esm/input.utils-ec063df4.js +0 -134
- package/dist/esm/ionic-global-246ca78f.js +0 -224
- package/dist/esm/ios.transition-4d1322d6.js +0 -651
- package/dist/esm/keyboard-b063f012.js +0 -79
- package/dist/esm/keyboard-b551279d.js +0 -146
- package/dist/esm/keyboard-controller-0c2dce71.js +0 -165
- package/dist/esm/lock-controller-e8c6c051.js +0 -38
- package/dist/esm/md.transition-66b425d0.js +0 -57
- package/dist/esm/notch-controller-8c9c0e54.js +0 -153
- package/dist/esm/overlays-cec6bac8.js +0 -692
- package/dist/esm/spinner-configs-d09fbbbb.js +0 -145
- package/dist/esm/status-tap-9aeeaca5.js +0 -40
- package/dist/esm/swipe-back-cd4295f3.js +0 -79
- package/dist/esm/theme-17531cdf.js +0 -43
- package/dist/esm/watch-options-355a920a.js +0 -36
- package/dist/esm-es5/animation-92066c62.js +0 -4
- package/dist/esm-es5/app-globals-ec816a70.js +0 -4
- package/dist/esm-es5/config-96c9ace3.js +0 -4
- package/dist/esm-es5/cubic-bezier-66542bc5.js +0 -4
- package/dist/esm-es5/data-44d9e816.js +0 -4
- package/dist/esm-es5/focus-visible-85493433.js +0 -4
- package/dist/esm-es5/form-controller-ed77647a.js +0 -4
- package/dist/esm-es5/framework-delegate-aa433dea.js +0 -4
- package/dist/esm-es5/hardware-back-button-39299f84.js +0 -4
- package/dist/esm-es5/helpers-3379ba19.js +0 -4
- package/dist/esm-es5/index-746a238e.js +0 -4
- package/dist/esm-es5/index-b49b173c.js +0 -5
- package/dist/esm-es5/index-df55802d.js +0 -4
- package/dist/esm-es5/index-f0cc4e14.js +0 -4
- package/dist/esm-es5/index-ff313b19.js +0 -4
- package/dist/esm-es5/input-shims-d78a3c77.js +0 -4
- package/dist/esm-es5/input.utils-ec063df4.js +0 -4
- package/dist/esm-es5/ionic-global-246ca78f.js +0 -4
- package/dist/esm-es5/keyboard-controller-0c2dce71.js +0 -4
- package/dist/esm-es5/md.transition-66b425d0.js +0 -4
- package/dist/esm-es5/notch-controller-8c9c0e54.js +0 -4
- package/dist/esm-es5/overlays-cec6bac8.js +0 -4
- package/dist/esm-es5/spinner-configs-d09fbbbb.js +0 -4
- package/dist/esm-es5/status-tap-9aeeaca5.js +0 -4
- package/dist/esm-es5/swipe-back-cd4295f3.js +0 -4
- package/dist/esm-es5/watch-options-355a920a.js +0 -4
- package/dist/ionic/p-015187e5.system.js +0 -4
- package/dist/ionic/p-06ac429a.js +0 -5
- package/dist/ionic/p-091c8792.system.js +0 -4
- package/dist/ionic/p-0b7c25ee.system.entry.js +0 -4
- package/dist/ionic/p-0f1f59da.system.entry.js +0 -4
- package/dist/ionic/p-19fba51c.entry.js +0 -4
- package/dist/ionic/p-1a463b1e.system.entry.js +0 -4
- package/dist/ionic/p-1edb53a1.entry.js +0 -4
- package/dist/ionic/p-1f260a7b.entry.js +0 -4
- package/dist/ionic/p-1f81b5be.entry.js +0 -4
- package/dist/ionic/p-276afddd.js +0 -4
- package/dist/ionic/p-28ea45b9.js +0 -4
- package/dist/ionic/p-29073efe.system.entry.js +0 -4
- package/dist/ionic/p-2b89ea1b.system.js +0 -4
- package/dist/ionic/p-303bf1e8.system.entry.js +0 -4
- package/dist/ionic/p-32083c2d.js +0 -4
- package/dist/ionic/p-33a8349a.system.entry.js +0 -4
- package/dist/ionic/p-34259245.system.entry.js +0 -4
- package/dist/ionic/p-35b26732.entry.js +0 -4
- package/dist/ionic/p-35e399bd.entry.js +0 -4
- package/dist/ionic/p-3632220b.system.js +0 -4
- package/dist/ionic/p-38089641.entry.js +0 -4
- package/dist/ionic/p-38c5fe2b.system.entry.js +0 -4
- package/dist/ionic/p-3a58e3a4.system.entry.js +0 -4
- package/dist/ionic/p-3d726a67.system.js +0 -4
- package/dist/ionic/p-3f3da911.system.entry.js +0 -4
- package/dist/ionic/p-41477ad9.system.js +0 -4
- package/dist/ionic/p-4215652f.system.entry.js +0 -4
- package/dist/ionic/p-446230d7.js +0 -4
- package/dist/ionic/p-44bc8b45.system.js +0 -4
- package/dist/ionic/p-479cdbf8.system.js +0 -4
- package/dist/ionic/p-4f97c112.entry.js +0 -4
- package/dist/ionic/p-54200074.entry.js +0 -4
- package/dist/ionic/p-54f6cd27.system.entry.js +0 -4
- package/dist/ionic/p-56dc022e.system.js +0 -4
- package/dist/ionic/p-572cce26.system.entry.js +0 -4
- package/dist/ionic/p-5b976d70.entry.js +0 -4
- package/dist/ionic/p-5bf16a18.js +0 -4
- package/dist/ionic/p-613d4042.system.js +0 -4
- package/dist/ionic/p-629aa3fd.system.js +0 -5
- package/dist/ionic/p-62e7d4fa.js +0 -4
- package/dist/ionic/p-64475ab5.system.js +0 -4
- package/dist/ionic/p-673846f6.entry.js +0 -4
- package/dist/ionic/p-6ce0a709.system.entry.js +0 -4
- package/dist/ionic/p-755b2917.system.js +0 -4
- package/dist/ionic/p-772f6c84.system.js +0 -4
- package/dist/ionic/p-815c2fba.system.js +0 -4
- package/dist/ionic/p-818b2e75.entry.js +0 -4
- package/dist/ionic/p-81c818e7.js +0 -4
- package/dist/ionic/p-81ef7437.system.entry.js +0 -4
- package/dist/ionic/p-87411e39.system.js +0 -4
- package/dist/ionic/p-8b1be026.js +0 -4
- package/dist/ionic/p-8c15eda7.system.js +0 -4
- package/dist/ionic/p-8cf94fc1.js +0 -4
- package/dist/ionic/p-8d6728a1.system.entry.js +0 -4
- package/dist/ionic/p-8e24ebbc.js +0 -4
- package/dist/ionic/p-8f01a9a2.system.js +0 -4
- package/dist/ionic/p-939e0fa1.system.js +0 -4
- package/dist/ionic/p-9ab6f3e6.system.js +0 -4
- package/dist/ionic/p-9dc85536.system.entry.js +0 -4
- package/dist/ionic/p-9e852ff1.system.js +0 -4
- package/dist/ionic/p-9f2e0db9.js +0 -4
- package/dist/ionic/p-a164e3ab.system.entry.js +0 -4
- package/dist/ionic/p-a200a7fc.entry.js +0 -4
- package/dist/ionic/p-a34fc12e.system.entry.js +0 -4
- package/dist/ionic/p-a9c32660.entry.js +0 -4
- package/dist/ionic/p-ab4cff27.system.js +0 -4
- package/dist/ionic/p-ad48dd13.system.js +0 -4
- package/dist/ionic/p-afb6658f.entry.js +0 -4
- package/dist/ionic/p-b132c2c0.system.js +0 -4
- package/dist/ionic/p-b24aa895.js +0 -4
- package/dist/ionic/p-b3c68723.system.js +0 -4
- package/dist/ionic/p-b4b4bb29.system.js +0 -4
- package/dist/ionic/p-b61a2fa0.system.entry.js +0 -4
- package/dist/ionic/p-b753ec0d.system.entry.js +0 -4
- package/dist/ionic/p-b8c3f071.system.js +0 -4
- package/dist/ionic/p-b912e055.system.js +0 -4
- package/dist/ionic/p-bb055450.system.entry.js +0 -4
- package/dist/ionic/p-bba2ce59.system.js +0 -4
- package/dist/ionic/p-c105bd36.entry.js +0 -4
- package/dist/ionic/p-c44fe9fd.js +0 -4
- package/dist/ionic/p-c49672d8.system.js +0 -4
- package/dist/ionic/p-c87827ca.system.js +0 -4
- package/dist/ionic/p-c8c9d699.system.entry.js +0 -4
- package/dist/ionic/p-c92f0a6d.system.entry.js +0 -4
- package/dist/ionic/p-c956e82c.system.entry.js +0 -4
- package/dist/ionic/p-ca5cf574.js +0 -4
- package/dist/ionic/p-cc196b34.js +0 -4
- package/dist/ionic/p-ccdcb022.system.js +0 -4
- package/dist/ionic/p-cd2d17c3.system.entry.js +0 -4
- package/dist/ionic/p-cf0c93e3.system.entry.js +0 -4
- package/dist/ionic/p-d1de1188.js +0 -4
- package/dist/ionic/p-d35217be.entry.js +0 -4
- package/dist/ionic/p-d6e53e66.entry.js +0 -4
- package/dist/ionic/p-e1d5752d.system.entry.js +0 -4
- package/dist/ionic/p-e25cb483.entry.js +0 -4
- package/dist/ionic/p-e65ebe96.entry.js +0 -4
- package/dist/ionic/p-e74faf2a.entry.js +0 -4
- package/dist/ionic/p-eac263dd.entry.js +0 -4
- package/dist/ionic/p-eb7d0922.js +0 -4
- package/dist/ionic/p-f4309ac7.entry.js +0 -4
- package/dist/ionic/p-f5bf698b.entry.js +0 -4
- package/dist/ionic/p-f7566bad.entry.js +0 -4
- package/dist/ionic/p-f9fa802c.system.entry.js +0 -4
- package/dist/ionic/p-fa8d4788.system.js +0 -4
- package/dist/ionic/p-ff5a10f9.system.js +0 -4
- /package/dist/esm-es5/{index-595d62c9.js → index-9b0d46f4.js} +0 -0
- /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
- /package/dist/esm-es5/{lock-controller-e8c6c051.js → lock-controller-316928be.js} +0 -0
- /package/dist/esm-es5/{theme-17531cdf.js → theme-01f3f29c.js} +0 -0
- /package/dist/ionic/{p-1b8e1d03.js → p-06fee233.js} +0 -0
- /package/dist/ionic/{p-63eb0acd.js → p-23a9d086.js} +0 -0
- /package/dist/ionic/{p-7c2bac85.js → p-2408c236.js} +0 -0
- /package/dist/ionic/{p-7b021525.js → p-41d5544e.js} +0 -0
- /package/dist/ionic/{p-1d072d3d.js → p-47794def.js} +0 -0
- /package/dist/ionic/{p-185e427e.js → p-4b3623da.js} +0 -0
- /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
- /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
- /package/dist/ionic/{p-e0b06b65.js → p-bb3615f7.js} +0 -0
- /package/dist/ionic/{p-53b2a46f.js → p-ccd02320.js} +0 -0
- /package/dist/ionic/{p-76fce40e.js → p-d47265c8.js} +0 -0
- /package/dist/ionic/{p-c18d6eac.js → p-f0c2a614.js} +0 -0
- /package/dist/ionic/{p-6dbfe5d4.js → p-fb813dab.js} +0 -0
package/components/data.js
CHANGED
|
@@ -7,41 +7,41 @@ import { p as printIonWarning } from './index6.js';
|
|
|
7
7
|
* Returns true if the selected day is equal to the reference day
|
|
8
8
|
*/
|
|
9
9
|
const isSameDay = (baseParts, compareParts) => {
|
|
10
|
-
|
|
10
|
+
return (baseParts.month === compareParts.month && baseParts.day === compareParts.day && baseParts.year === compareParts.year);
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
13
|
* Returns true is the selected day is before the reference day.
|
|
14
14
|
*/
|
|
15
15
|
const isBefore = (baseParts, compareParts) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
return !!(baseParts.year < compareParts.year ||
|
|
17
|
+
(baseParts.year === compareParts.year && baseParts.month < compareParts.month) ||
|
|
18
|
+
(baseParts.year === compareParts.year &&
|
|
19
|
+
baseParts.month === compareParts.month &&
|
|
20
|
+
baseParts.day !== null &&
|
|
21
|
+
baseParts.day < compareParts.day));
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* Returns true is the selected day is after the reference day.
|
|
25
25
|
*/
|
|
26
26
|
const isAfter = (baseParts, compareParts) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
return !!(baseParts.year > compareParts.year ||
|
|
28
|
+
(baseParts.year === compareParts.year && baseParts.month > compareParts.month) ||
|
|
29
|
+
(baseParts.year === compareParts.year &&
|
|
30
|
+
baseParts.month === compareParts.month &&
|
|
31
|
+
baseParts.day !== null &&
|
|
32
|
+
baseParts.day > compareParts.day));
|
|
33
33
|
};
|
|
34
34
|
const warnIfValueOutOfBounds = (value, min, max) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
const valueArray = Array.isArray(value) ? value : [value];
|
|
36
|
+
for (const val of valueArray) {
|
|
37
|
+
if ((min !== undefined && isBefore(val, min)) || (max !== undefined && isAfter(val, max))) {
|
|
38
|
+
printIonWarning('The value provided to ion-datetime is out of bounds.\n\n' +
|
|
39
|
+
`Min: ${JSON.stringify(min)}\n` +
|
|
40
|
+
`Max: ${JSON.stringify(max)}\n` +
|
|
41
|
+
`Value: ${JSON.stringify(value)}`);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
43
44
|
}
|
|
44
|
-
}
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -51,7 +51,7 @@ const warnIfValueOutOfBounds = (value, min, max) => {
|
|
|
51
51
|
* otherwise.
|
|
52
52
|
*/
|
|
53
53
|
const isLeapYear = (year) => {
|
|
54
|
-
|
|
54
|
+
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
|
55
55
|
};
|
|
56
56
|
/**
|
|
57
57
|
* Determines the hour cycle for a user.
|
|
@@ -60,53 +60,53 @@ const isLeapYear = (year) => {
|
|
|
60
60
|
* locale extension tags or from Intl.DateTimeFormat directly.
|
|
61
61
|
*/
|
|
62
62
|
const getHourCycle = (locale, hourCycle) => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
63
|
+
/**
|
|
64
|
+
* If developer has explicitly enabled 24-hour time
|
|
65
|
+
* then return early and do not look at the system default.
|
|
66
|
+
*/
|
|
67
|
+
if (hourCycle !== undefined) {
|
|
68
|
+
return hourCycle;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* If hourCycle was not specified, check the locale
|
|
72
|
+
* that is set on the user's device. We first check the
|
|
73
|
+
* Intl.DateTimeFormat hourCycle option as developers can encode this
|
|
74
|
+
* option into the locale string. Example: `en-US-u-hc-h23`
|
|
75
|
+
*/
|
|
76
|
+
const formatted = new Intl.DateTimeFormat(locale, { hour: 'numeric' });
|
|
77
|
+
const options = formatted.resolvedOptions();
|
|
78
|
+
if (options.hourCycle !== undefined) {
|
|
79
|
+
return options.hourCycle;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* If hourCycle is not specified (either through lack
|
|
83
|
+
* of browser support or locale information) then fall
|
|
84
|
+
* back to this slower hourCycle check.
|
|
85
|
+
*/
|
|
86
|
+
const date = new Date('5/18/2021 00:00');
|
|
87
|
+
const parts = formatted.formatToParts(date);
|
|
88
|
+
const hour = parts.find((p) => p.type === 'hour');
|
|
89
|
+
if (!hour) {
|
|
90
|
+
throw new Error('Hour value not found from DateTimeFormat');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Midnight for h11 starts at 0:00am
|
|
94
|
+
* Midnight for h12 starts at 12:00am
|
|
95
|
+
* Midnight for h23 starts at 00:00
|
|
96
|
+
* Midnight for h24 starts at 24:00
|
|
97
|
+
*/
|
|
98
|
+
switch (hour.value) {
|
|
99
|
+
case '0':
|
|
100
|
+
return 'h11';
|
|
101
|
+
case '12':
|
|
102
|
+
return 'h12';
|
|
103
|
+
case '00':
|
|
104
|
+
return 'h23';
|
|
105
|
+
case '24':
|
|
106
|
+
return 'h24';
|
|
107
|
+
default:
|
|
108
|
+
throw new Error(`Invalid hour cycle "${hourCycle}"`);
|
|
109
|
+
}
|
|
110
110
|
};
|
|
111
111
|
/**
|
|
112
112
|
* Determine if the hour cycle uses a 24-hour format.
|
|
@@ -115,7 +115,7 @@ const getHourCycle = (locale, hourCycle) => {
|
|
|
115
115
|
* and pass the result into this function.
|
|
116
116
|
*/
|
|
117
117
|
const is24Hour = (hourCycle) => {
|
|
118
|
-
|
|
118
|
+
return hourCycle === 'h23' || hourCycle === 'h24';
|
|
119
119
|
};
|
|
120
120
|
/**
|
|
121
121
|
* Given a date object, returns the number
|
|
@@ -124,13 +124,13 @@ const is24Hour = (hourCycle) => {
|
|
|
124
124
|
* i.e. January = month 1.
|
|
125
125
|
*/
|
|
126
126
|
const getNumDaysInMonth = (month, year) => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
return month === 4 || month === 6 || month === 9 || month === 11
|
|
128
|
+
? 30
|
|
129
|
+
: month === 2
|
|
130
|
+
? isLeapYear(year)
|
|
131
|
+
? 29
|
|
132
|
+
: 28
|
|
133
|
+
: 31;
|
|
134
134
|
};
|
|
135
135
|
/**
|
|
136
136
|
* Certain locales display month then year while
|
|
@@ -144,23 +144,23 @@ const getNumDaysInMonth = (month, year) => {
|
|
|
144
144
|
* used for variations of the same "month first" check.
|
|
145
145
|
*/
|
|
146
146
|
const isMonthFirstLocale = (locale, formatOptions = {
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
month: 'numeric',
|
|
148
|
+
year: 'numeric',
|
|
149
149
|
}) => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
150
|
+
/**
|
|
151
|
+
* By setting month and year we guarantee that only
|
|
152
|
+
* month, year, and literal (slashes '/', for example)
|
|
153
|
+
* values are included in the formatToParts results.
|
|
154
|
+
*
|
|
155
|
+
* The ordering of the parts will be determined by
|
|
156
|
+
* the locale. So if the month is the first value,
|
|
157
|
+
* then we know month should be shown first. If the
|
|
158
|
+
* year is the first value, then we know year should be shown first.
|
|
159
|
+
*
|
|
160
|
+
* This ordering can be controlled by customizing the locale property.
|
|
161
|
+
*/
|
|
162
|
+
const parts = new Intl.DateTimeFormat(locale, formatOptions).formatToParts(new Date());
|
|
163
|
+
return parts[0].type === 'month';
|
|
164
164
|
};
|
|
165
165
|
/**
|
|
166
166
|
* Determines if the given locale formats the day period (am/pm) to the
|
|
@@ -169,8 +169,8 @@ const isMonthFirstLocale = (locale, formatOptions = {
|
|
|
169
169
|
* @returns `true` if the locale formats the day period to the left of the hour.
|
|
170
170
|
*/
|
|
171
171
|
const isLocaleDayPeriodRTL = (locale) => {
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
const parts = new Intl.DateTimeFormat(locale, { hour: 'numeric' }).formatToParts(new Date());
|
|
173
|
+
return parts[0].type === 'dayPeriod';
|
|
174
174
|
};
|
|
175
175
|
|
|
176
176
|
const ISO_8601_REGEXP =
|
|
@@ -183,24 +183,24 @@ const TIME_REGEXP = /^((\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(
|
|
|
183
183
|
* an array of numbers, and clean up any user input
|
|
184
184
|
*/
|
|
185
185
|
const convertToArrayOfNumbers = (input) => {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
186
|
+
if (input === undefined) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
let processedInput = input;
|
|
190
|
+
if (typeof input === 'string') {
|
|
191
|
+
// convert the string to an array of strings
|
|
192
|
+
// auto remove any whitespace and [] characters
|
|
193
|
+
processedInput = input.replace(/\[|\]|\s/g, '').split(',');
|
|
194
|
+
}
|
|
195
|
+
let values;
|
|
196
|
+
if (Array.isArray(processedInput)) {
|
|
197
|
+
// ensure each value is an actual number in the returned array
|
|
198
|
+
values = processedInput.map((num) => parseInt(num, 10)).filter(isFinite);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
values = [processedInput];
|
|
202
|
+
}
|
|
203
|
+
return values;
|
|
204
204
|
};
|
|
205
205
|
/**
|
|
206
206
|
* Extracts date information
|
|
@@ -208,75 +208,75 @@ const convertToArrayOfNumbers = (input) => {
|
|
|
208
208
|
* into DatetimeParts.
|
|
209
209
|
*/
|
|
210
210
|
const getPartsFromCalendarDay = (el) => {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
211
|
+
return {
|
|
212
|
+
month: parseInt(el.getAttribute('data-month'), 10),
|
|
213
|
+
day: parseInt(el.getAttribute('data-day'), 10),
|
|
214
|
+
year: parseInt(el.getAttribute('data-year'), 10),
|
|
215
|
+
dayOfWeek: parseInt(el.getAttribute('data-day-of-week'), 10),
|
|
216
|
+
};
|
|
217
217
|
};
|
|
218
218
|
function parseDate(val) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
219
|
+
if (Array.isArray(val)) {
|
|
220
|
+
const parsedArray = [];
|
|
221
|
+
for (const valStr of val) {
|
|
222
|
+
const parsedVal = parseDate(valStr);
|
|
223
|
+
/**
|
|
224
|
+
* If any of the values weren't parsed correctly, consider
|
|
225
|
+
* the entire batch incorrect. This simplifies the type
|
|
226
|
+
* signatures by having "undefined" be a general error case
|
|
227
|
+
* instead of returning (Datetime | undefined)[], which is
|
|
228
|
+
* harder for TS to perform type narrowing on.
|
|
229
|
+
*/
|
|
230
|
+
if (!parsedVal) {
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
parsedArray.push(parsedVal);
|
|
234
|
+
}
|
|
235
|
+
return parsedArray;
|
|
236
|
+
}
|
|
237
|
+
// manually parse IS0 cuz Date.parse cannot be trusted
|
|
238
|
+
// ISO 8601 format: 1994-12-15T13:47:20Z
|
|
239
|
+
let parse = null;
|
|
240
|
+
if (val != null && val !== '') {
|
|
241
|
+
// try parsing for just time first, HH:MM
|
|
242
|
+
parse = TIME_REGEXP.exec(val);
|
|
243
|
+
if (parse) {
|
|
244
|
+
// adjust the array so it fits nicely with the datetime parse
|
|
245
|
+
parse.unshift(undefined, undefined);
|
|
246
|
+
parse[2] = parse[3] = undefined;
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
// try parsing for full ISO datetime
|
|
250
|
+
parse = ISO_8601_REGEXP.exec(val);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (parse === null) {
|
|
254
|
+
// wasn't able to parse the ISO datetime
|
|
255
|
+
printIonWarning(`Unable to parse date string: ${val}. Please provide a valid ISO 8601 datetime string.`);
|
|
231
256
|
return undefined;
|
|
232
|
-
}
|
|
233
|
-
parsedArray.push(parsedVal);
|
|
234
|
-
}
|
|
235
|
-
return parsedArray;
|
|
236
|
-
}
|
|
237
|
-
// manually parse IS0 cuz Date.parse cannot be trusted
|
|
238
|
-
// ISO 8601 format: 1994-12-15T13:47:20Z
|
|
239
|
-
let parse = null;
|
|
240
|
-
if (val != null && val !== '') {
|
|
241
|
-
// try parsing for just time first, HH:MM
|
|
242
|
-
parse = TIME_REGEXP.exec(val);
|
|
243
|
-
if (parse) {
|
|
244
|
-
// adjust the array so it fits nicely with the datetime parse
|
|
245
|
-
parse.unshift(undefined, undefined);
|
|
246
|
-
parse[2] = parse[3] = undefined;
|
|
247
257
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
// can also get second and millisecond from parse[6] and parse[7] if needed
|
|
263
|
-
return {
|
|
264
|
-
year: parse[1],
|
|
265
|
-
month: parse[2],
|
|
266
|
-
day: parse[3],
|
|
267
|
-
hour: parse[4],
|
|
268
|
-
minute: parse[5],
|
|
269
|
-
ampm: parse[4] < 12 ? 'am' : 'pm',
|
|
270
|
-
};
|
|
258
|
+
// ensure all the parse values exist with at least 0
|
|
259
|
+
for (let i = 1; i < 8; i++) {
|
|
260
|
+
parse[i] = parse[i] !== undefined ? parseInt(parse[i], 10) : undefined;
|
|
261
|
+
}
|
|
262
|
+
// can also get second and millisecond from parse[6] and parse[7] if needed
|
|
263
|
+
return {
|
|
264
|
+
year: parse[1],
|
|
265
|
+
month: parse[2],
|
|
266
|
+
day: parse[3],
|
|
267
|
+
hour: parse[4],
|
|
268
|
+
minute: parse[5],
|
|
269
|
+
ampm: parse[4] < 12 ? 'am' : 'pm',
|
|
270
|
+
};
|
|
271
271
|
}
|
|
272
272
|
const clampDate = (dateParts, minParts, maxParts) => {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
273
|
+
if (minParts && isBefore(dateParts, minParts)) {
|
|
274
|
+
return minParts;
|
|
275
|
+
}
|
|
276
|
+
else if (maxParts && isAfter(dateParts, maxParts)) {
|
|
277
|
+
return maxParts;
|
|
278
|
+
}
|
|
279
|
+
return dateParts;
|
|
280
280
|
};
|
|
281
281
|
/**
|
|
282
282
|
* Parses an hour and returns if the value is in the morning (am) or afternoon (pm).
|
|
@@ -284,7 +284,7 @@ const clampDate = (dateParts, minParts, maxParts) => {
|
|
|
284
284
|
* @returns `pm` if the hour is greater than or equal to 12, `am` if less than 12.
|
|
285
285
|
*/
|
|
286
286
|
const parseAmPm = (hour) => {
|
|
287
|
-
|
|
287
|
+
return hour >= 12 ? 'pm' : 'am';
|
|
288
288
|
};
|
|
289
289
|
/**
|
|
290
290
|
* Takes a max date string and creates a DatetimeParts
|
|
@@ -293,38 +293,38 @@ const parseAmPm = (hour) => {
|
|
|
293
293
|
* month, day, hour, and minute information.
|
|
294
294
|
*/
|
|
295
295
|
const parseMaxParts = (max, todayParts) => {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* When passing in `max` or `min`, developers
|
|
306
|
-
* can pass in any ISO-8601 string. This means
|
|
307
|
-
* that not all of the date/time fields are defined.
|
|
308
|
-
* For example, passing max="2012" is valid even though
|
|
309
|
-
* there is no month, day, hour, or minute data.
|
|
310
|
-
* However, all of this data is required when clamping the date
|
|
311
|
-
* so that the correct initial value can be selected. As a result,
|
|
312
|
-
* we need to fill in any omitted data with the min or max values.
|
|
313
|
-
*/
|
|
314
|
-
const yearValue = year !== null && year !== void 0 ? year : todayParts.year;
|
|
315
|
-
const monthValue = month !== null && month !== void 0 ? month : 12;
|
|
316
|
-
return {
|
|
317
|
-
month: monthValue,
|
|
318
|
-
day: day !== null && day !== void 0 ? day : getNumDaysInMonth(monthValue, yearValue),
|
|
296
|
+
const result = parseDate(max);
|
|
297
|
+
/**
|
|
298
|
+
* If min was not a valid date then return undefined.
|
|
299
|
+
*/
|
|
300
|
+
if (result === undefined) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const { month, day, year, hour, minute } = result;
|
|
319
304
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
305
|
+
* When passing in `max` or `min`, developers
|
|
306
|
+
* can pass in any ISO-8601 string. This means
|
|
307
|
+
* that not all of the date/time fields are defined.
|
|
308
|
+
* For example, passing max="2012" is valid even though
|
|
309
|
+
* there is no month, day, hour, or minute data.
|
|
310
|
+
* However, all of this data is required when clamping the date
|
|
311
|
+
* so that the correct initial value can be selected. As a result,
|
|
312
|
+
* we need to fill in any omitted data with the min or max values.
|
|
323
313
|
*/
|
|
324
|
-
year:
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
314
|
+
const yearValue = year !== null && year !== void 0 ? year : todayParts.year;
|
|
315
|
+
const monthValue = month !== null && month !== void 0 ? month : 12;
|
|
316
|
+
return {
|
|
317
|
+
month: monthValue,
|
|
318
|
+
day: day !== null && day !== void 0 ? day : getNumDaysInMonth(monthValue, yearValue),
|
|
319
|
+
/**
|
|
320
|
+
* Passing in "HH:mm" is a valid ISO-8601
|
|
321
|
+
* string, so we just default to the current year
|
|
322
|
+
* in this case.
|
|
323
|
+
*/
|
|
324
|
+
year: yearValue,
|
|
325
|
+
hour: hour !== null && hour !== void 0 ? hour : 23,
|
|
326
|
+
minute: minute !== null && minute !== void 0 ? minute : 59,
|
|
327
|
+
};
|
|
328
328
|
};
|
|
329
329
|
/**
|
|
330
330
|
* Takes a min date string and creates a DatetimeParts
|
|
@@ -333,130 +333,130 @@ const parseMaxParts = (max, todayParts) => {
|
|
|
333
333
|
* month, day, hour, and minute information.
|
|
334
334
|
*/
|
|
335
335
|
const parseMinParts = (min, todayParts) => {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* When passing in `max` or `min`, developers
|
|
346
|
-
* can pass in any ISO-8601 string. This means
|
|
347
|
-
* that not all of the date/time fields are defined.
|
|
348
|
-
* For example, passing max="2012" is valid even though
|
|
349
|
-
* there is no month, day, hour, or minute data.
|
|
350
|
-
* However, all of this data is required when clamping the date
|
|
351
|
-
* so that the correct initial value can be selected. As a result,
|
|
352
|
-
* we need to fill in any omitted data with the min or max values.
|
|
353
|
-
*/
|
|
354
|
-
return {
|
|
355
|
-
month: month !== null && month !== void 0 ? month : 1,
|
|
356
|
-
day: day !== null && day !== void 0 ? day : 1,
|
|
336
|
+
const result = parseDate(min);
|
|
337
|
+
/**
|
|
338
|
+
* If min was not a valid date then return undefined.
|
|
339
|
+
*/
|
|
340
|
+
if (result === undefined) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
const { month, day, year, hour, minute } = result;
|
|
357
344
|
/**
|
|
358
|
-
*
|
|
359
|
-
*
|
|
360
|
-
*
|
|
345
|
+
* When passing in `max` or `min`, developers
|
|
346
|
+
* can pass in any ISO-8601 string. This means
|
|
347
|
+
* that not all of the date/time fields are defined.
|
|
348
|
+
* For example, passing max="2012" is valid even though
|
|
349
|
+
* there is no month, day, hour, or minute data.
|
|
350
|
+
* However, all of this data is required when clamping the date
|
|
351
|
+
* so that the correct initial value can be selected. As a result,
|
|
352
|
+
* we need to fill in any omitted data with the min or max values.
|
|
361
353
|
*/
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
354
|
+
return {
|
|
355
|
+
month: month !== null && month !== void 0 ? month : 1,
|
|
356
|
+
day: day !== null && day !== void 0 ? day : 1,
|
|
357
|
+
/**
|
|
358
|
+
* Passing in "HH:mm" is a valid ISO-8601
|
|
359
|
+
* string, so we just default to the current year
|
|
360
|
+
* in this case.
|
|
361
|
+
*/
|
|
362
|
+
year: year !== null && year !== void 0 ? year : todayParts.year,
|
|
363
|
+
hour: hour !== null && hour !== void 0 ? hour : 0,
|
|
364
|
+
minute: minute !== null && minute !== void 0 ? minute : 0,
|
|
365
|
+
};
|
|
366
366
|
};
|
|
367
367
|
|
|
368
368
|
const twoDigit = (val) => {
|
|
369
|
-
|
|
369
|
+
return ('0' + (val !== undefined ? Math.abs(val) : '0')).slice(-2);
|
|
370
370
|
};
|
|
371
371
|
const fourDigit = (val) => {
|
|
372
|
-
|
|
372
|
+
return ('000' + (val !== undefined ? Math.abs(val) : '0')).slice(-4);
|
|
373
373
|
};
|
|
374
374
|
function convertDataToISO(data) {
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
375
|
+
if (Array.isArray(data)) {
|
|
376
|
+
return data.map((parts) => convertDataToISO(parts));
|
|
377
|
+
}
|
|
378
|
+
// https://www.w3.org/TR/NOTE-datetime
|
|
379
|
+
let rtn = '';
|
|
380
|
+
if (data.year !== undefined) {
|
|
381
|
+
// YYYY
|
|
382
|
+
rtn = fourDigit(data.year);
|
|
383
|
+
if (data.month !== undefined) {
|
|
384
|
+
// YYYY-MM
|
|
385
|
+
rtn += '-' + twoDigit(data.month);
|
|
386
|
+
if (data.day !== undefined) {
|
|
387
|
+
// YYYY-MM-DD
|
|
388
|
+
rtn += '-' + twoDigit(data.day);
|
|
389
|
+
if (data.hour !== undefined) {
|
|
390
|
+
// YYYY-MM-DDTHH:mm:SS
|
|
391
|
+
rtn += `T${twoDigit(data.hour)}:${twoDigit(data.minute)}:00`;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
392
394
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
rtn
|
|
399
|
-
}
|
|
400
|
-
return rtn;
|
|
395
|
+
}
|
|
396
|
+
else if (data.hour !== undefined) {
|
|
397
|
+
// HH:mm
|
|
398
|
+
rtn = twoDigit(data.hour) + ':' + twoDigit(data.minute);
|
|
399
|
+
}
|
|
400
|
+
return rtn;
|
|
401
401
|
}
|
|
402
402
|
/**
|
|
403
403
|
* Converts an 12 hour value to 24 hours.
|
|
404
404
|
*/
|
|
405
405
|
const convert12HourTo24Hour = (hour, ampm) => {
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
406
|
+
if (ampm === undefined) {
|
|
407
|
+
return hour;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* If AM and 12am
|
|
411
|
+
* then return 00:00.
|
|
412
|
+
* Otherwise just return
|
|
413
|
+
* the hour since it is
|
|
414
|
+
* already in 24 hour format.
|
|
415
|
+
*/
|
|
416
|
+
if (ampm === 'am') {
|
|
417
|
+
if (hour === 12) {
|
|
418
|
+
return 0;
|
|
419
|
+
}
|
|
420
|
+
return hour;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* If PM and 12pm
|
|
424
|
+
* just return 12:00
|
|
425
|
+
* since it is already
|
|
426
|
+
* in 24 hour format.
|
|
427
|
+
* Otherwise add 12 hours
|
|
428
|
+
* to the time.
|
|
429
|
+
*/
|
|
417
430
|
if (hour === 12) {
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
return hour;
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* If PM and 12pm
|
|
424
|
-
* just return 12:00
|
|
425
|
-
* since it is already
|
|
426
|
-
* in 24 hour format.
|
|
427
|
-
* Otherwise add 12 hours
|
|
428
|
-
* to the time.
|
|
429
|
-
*/
|
|
430
|
-
if (hour === 12) {
|
|
431
|
-
return 12;
|
|
432
|
-
}
|
|
433
|
-
return hour + 12;
|
|
431
|
+
return 12;
|
|
432
|
+
}
|
|
433
|
+
return hour + 12;
|
|
434
434
|
};
|
|
435
435
|
const getStartOfWeek = (refParts) => {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
436
|
+
const { dayOfWeek } = refParts;
|
|
437
|
+
if (dayOfWeek === null || dayOfWeek === undefined) {
|
|
438
|
+
throw new Error('No day of week provided');
|
|
439
|
+
}
|
|
440
|
+
return subtractDays(refParts, dayOfWeek);
|
|
441
441
|
};
|
|
442
442
|
const getEndOfWeek = (refParts) => {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
443
|
+
const { dayOfWeek } = refParts;
|
|
444
|
+
if (dayOfWeek === null || dayOfWeek === undefined) {
|
|
445
|
+
throw new Error('No day of week provided');
|
|
446
|
+
}
|
|
447
|
+
return addDays(refParts, 6 - dayOfWeek);
|
|
448
448
|
};
|
|
449
449
|
const getNextDay = (refParts) => {
|
|
450
|
-
|
|
450
|
+
return addDays(refParts, 1);
|
|
451
451
|
};
|
|
452
452
|
const getPreviousDay = (refParts) => {
|
|
453
|
-
|
|
453
|
+
return subtractDays(refParts, 1);
|
|
454
454
|
};
|
|
455
455
|
const getPreviousWeek = (refParts) => {
|
|
456
|
-
|
|
456
|
+
return subtractDays(refParts, 7);
|
|
457
457
|
};
|
|
458
458
|
const getNextWeek = (refParts) => {
|
|
459
|
-
|
|
459
|
+
return addDays(refParts, 7);
|
|
460
460
|
};
|
|
461
461
|
/**
|
|
462
462
|
* Given datetime parts, subtract
|
|
@@ -465,49 +465,49 @@ const getNextWeek = (refParts) => {
|
|
|
465
465
|
* Currently can only go backward at most 1 month.
|
|
466
466
|
*/
|
|
467
467
|
const subtractDays = (refParts, numDays) => {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Determine how many days are in the current
|
|
495
|
-
* month
|
|
496
|
-
*/
|
|
497
|
-
if (workingParts.day < 1) {
|
|
498
|
-
const daysInMonth = getNumDaysInMonth(workingParts.month, workingParts.year);
|
|
468
|
+
const { month, day, year } = refParts;
|
|
469
|
+
if (day === null) {
|
|
470
|
+
throw new Error('No day provided');
|
|
471
|
+
}
|
|
472
|
+
const workingParts = {
|
|
473
|
+
month,
|
|
474
|
+
day,
|
|
475
|
+
year,
|
|
476
|
+
};
|
|
477
|
+
workingParts.day = day - numDays;
|
|
478
|
+
/**
|
|
479
|
+
* If wrapping to previous month
|
|
480
|
+
* update days and decrement month
|
|
481
|
+
*/
|
|
482
|
+
if (workingParts.day < 1) {
|
|
483
|
+
workingParts.month -= 1;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* If moving to previous year, reset
|
|
487
|
+
* month to December and decrement year
|
|
488
|
+
*/
|
|
489
|
+
if (workingParts.month < 1) {
|
|
490
|
+
workingParts.month = 12;
|
|
491
|
+
workingParts.year -= 1;
|
|
492
|
+
}
|
|
499
493
|
/**
|
|
500
|
-
*
|
|
501
|
-
*
|
|
502
|
-
* be negative.
|
|
503
|
-
* Example: 1 week before Jan 2, 2021 is
|
|
504
|
-
* December 26, 2021 so:
|
|
505
|
-
* 2 - 7 = -5
|
|
506
|
-
* 31 + (-5) = 26
|
|
494
|
+
* Determine how many days are in the current
|
|
495
|
+
* month
|
|
507
496
|
*/
|
|
508
|
-
workingParts.day
|
|
509
|
-
|
|
510
|
-
|
|
497
|
+
if (workingParts.day < 1) {
|
|
498
|
+
const daysInMonth = getNumDaysInMonth(workingParts.month, workingParts.year);
|
|
499
|
+
/**
|
|
500
|
+
* Take num days in month and add the
|
|
501
|
+
* number of underflow days. This number will
|
|
502
|
+
* be negative.
|
|
503
|
+
* Example: 1 week before Jan 2, 2021 is
|
|
504
|
+
* December 26, 2021 so:
|
|
505
|
+
* 2 - 7 = -5
|
|
506
|
+
* 31 + (-5) = 26
|
|
507
|
+
*/
|
|
508
|
+
workingParts.day = daysInMonth + workingParts.day;
|
|
509
|
+
}
|
|
510
|
+
return workingParts;
|
|
511
511
|
};
|
|
512
512
|
/**
|
|
513
513
|
* Given datetime parts, add
|
|
@@ -516,81 +516,81 @@ const subtractDays = (refParts, numDays) => {
|
|
|
516
516
|
* Currently can only go forward at most 1 month.
|
|
517
517
|
*/
|
|
518
518
|
const addDays = (refParts, numDays) => {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
519
|
+
const { month, day, year } = refParts;
|
|
520
|
+
if (day === null) {
|
|
521
|
+
throw new Error('No day provided');
|
|
522
|
+
}
|
|
523
|
+
const workingParts = {
|
|
524
|
+
month,
|
|
525
|
+
day,
|
|
526
|
+
year,
|
|
527
|
+
};
|
|
528
|
+
const daysInMonth = getNumDaysInMonth(month, year);
|
|
529
|
+
workingParts.day = day + numDays;
|
|
530
|
+
/**
|
|
531
|
+
* If wrapping to next month
|
|
532
|
+
* update days and increment month
|
|
533
|
+
*/
|
|
534
|
+
if (workingParts.day > daysInMonth) {
|
|
535
|
+
workingParts.day -= daysInMonth;
|
|
536
|
+
workingParts.month += 1;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* If moving to next year, reset
|
|
540
|
+
* month to January and increment year
|
|
541
|
+
*/
|
|
542
|
+
if (workingParts.month > 12) {
|
|
543
|
+
workingParts.month = 1;
|
|
544
|
+
workingParts.year += 1;
|
|
545
|
+
}
|
|
546
|
+
return workingParts;
|
|
547
547
|
};
|
|
548
548
|
/**
|
|
549
549
|
* Given DatetimeParts, generate the previous month.
|
|
550
550
|
*/
|
|
551
551
|
const getPreviousMonth = (refParts) => {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
552
|
+
/**
|
|
553
|
+
* If current month is January, wrap backwards
|
|
554
|
+
* to December of the previous year.
|
|
555
|
+
*/
|
|
556
|
+
const month = refParts.month === 1 ? 12 : refParts.month - 1;
|
|
557
|
+
const year = refParts.month === 1 ? refParts.year - 1 : refParts.year;
|
|
558
|
+
const numDaysInMonth = getNumDaysInMonth(month, year);
|
|
559
|
+
const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;
|
|
560
|
+
return { month, year, day };
|
|
561
561
|
};
|
|
562
562
|
/**
|
|
563
563
|
* Given DatetimeParts, generate the next month.
|
|
564
564
|
*/
|
|
565
565
|
const getNextMonth = (refParts) => {
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
566
|
+
/**
|
|
567
|
+
* If current month is December, wrap forwards
|
|
568
|
+
* to January of the next year.
|
|
569
|
+
*/
|
|
570
|
+
const month = refParts.month === 12 ? 1 : refParts.month + 1;
|
|
571
|
+
const year = refParts.month === 12 ? refParts.year + 1 : refParts.year;
|
|
572
|
+
const numDaysInMonth = getNumDaysInMonth(month, year);
|
|
573
|
+
const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;
|
|
574
|
+
return { month, year, day };
|
|
575
575
|
};
|
|
576
576
|
const changeYear = (refParts, yearDelta) => {
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
577
|
+
const month = refParts.month;
|
|
578
|
+
const year = refParts.year + yearDelta;
|
|
579
|
+
const numDaysInMonth = getNumDaysInMonth(month, year);
|
|
580
|
+
const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;
|
|
581
|
+
return { month, year, day };
|
|
582
582
|
};
|
|
583
583
|
/**
|
|
584
584
|
* Given DatetimeParts, generate the previous year.
|
|
585
585
|
*/
|
|
586
586
|
const getPreviousYear = (refParts) => {
|
|
587
|
-
|
|
587
|
+
return changeYear(refParts, -1);
|
|
588
588
|
};
|
|
589
589
|
/**
|
|
590
590
|
* Given DatetimeParts, generate the next year.
|
|
591
591
|
*/
|
|
592
592
|
const getNextYear = (refParts) => {
|
|
593
|
-
|
|
593
|
+
return changeYear(refParts, 1);
|
|
594
594
|
};
|
|
595
595
|
/**
|
|
596
596
|
* If PM, then internal value should
|
|
@@ -599,10 +599,10 @@ const getNextYear = (refParts) => {
|
|
|
599
599
|
* values are already 24-hr time.
|
|
600
600
|
*/
|
|
601
601
|
const getInternalHourValue = (hour, use24Hour, ampm) => {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
602
|
+
if (use24Hour) {
|
|
603
|
+
return hour;
|
|
604
|
+
}
|
|
605
|
+
return convert12HourTo24Hour(hour, ampm);
|
|
606
606
|
};
|
|
607
607
|
/**
|
|
608
608
|
* Unless otherwise stated, all month values are
|
|
@@ -618,22 +618,22 @@ const getInternalHourValue = (hour, use24Hour, ampm) => {
|
|
|
618
618
|
* in 24-hour time format internally.
|
|
619
619
|
*/
|
|
620
620
|
const calculateHourFromAMPM = (currentParts, newAMPM) => {
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
/**
|
|
624
|
-
* If going from AM --> PM, need to update the
|
|
625
|
-
*
|
|
626
|
-
*/
|
|
627
|
-
if (currentAMPM === 'am' && newAMPM === 'pm') {
|
|
628
|
-
newHour = convert12HourTo24Hour(newHour, 'pm');
|
|
621
|
+
const { ampm: currentAMPM, hour } = currentParts;
|
|
622
|
+
let newHour = hour;
|
|
629
623
|
/**
|
|
630
|
-
* If going from
|
|
624
|
+
* If going from AM --> PM, need to update the
|
|
625
|
+
*
|
|
631
626
|
*/
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
627
|
+
if (currentAMPM === 'am' && newAMPM === 'pm') {
|
|
628
|
+
newHour = convert12HourTo24Hour(newHour, 'pm');
|
|
629
|
+
/**
|
|
630
|
+
* If going from PM --> AM
|
|
631
|
+
*/
|
|
632
|
+
}
|
|
633
|
+
else if (currentAMPM === 'pm' && newAMPM === 'am') {
|
|
634
|
+
newHour = Math.abs(newHour - 12);
|
|
635
|
+
}
|
|
636
|
+
return newHour;
|
|
637
637
|
};
|
|
638
638
|
/**
|
|
639
639
|
* Updates parts to ensure that month and day
|
|
@@ -642,75 +642,75 @@ const calculateHourFromAMPM = (currentParts, newAMPM) => {
|
|
|
642
642
|
* valid day is used.
|
|
643
643
|
*/
|
|
644
644
|
const validateParts = (parts, minParts, maxParts) => {
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
/**
|
|
649
|
-
* If the max number of days
|
|
650
|
-
* is greater than the day we want
|
|
651
|
-
* to set, update the DatetimeParts
|
|
652
|
-
* day field to be the max days.
|
|
653
|
-
*/
|
|
654
|
-
if (day !== null && numDays < day) {
|
|
655
|
-
partsCopy.day = numDays;
|
|
656
|
-
}
|
|
657
|
-
/**
|
|
658
|
-
* If value is same day as min day,
|
|
659
|
-
* make sure the time value is in bounds.
|
|
660
|
-
*/
|
|
661
|
-
if (minParts !== undefined && isSameDay(partsCopy, minParts)) {
|
|
645
|
+
const { month, day, year } = parts;
|
|
646
|
+
const partsCopy = clampDate(Object.assign({}, parts), minParts, maxParts);
|
|
647
|
+
const numDays = getNumDaysInMonth(month, year);
|
|
662
648
|
/**
|
|
663
|
-
* If the
|
|
664
|
-
*
|
|
665
|
-
*
|
|
666
|
-
*
|
|
649
|
+
* If the max number of days
|
|
650
|
+
* is greater than the day we want
|
|
651
|
+
* to set, update the DatetimeParts
|
|
652
|
+
* day field to be the max days.
|
|
667
653
|
*/
|
|
668
|
-
if (
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
654
|
+
if (day !== null && numDays < day) {
|
|
655
|
+
partsCopy.day = numDays;
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* If value is same day as min day,
|
|
659
|
+
* make sure the time value is in bounds.
|
|
660
|
+
*/
|
|
661
|
+
if (minParts !== undefined && isSameDay(partsCopy, minParts)) {
|
|
672
662
|
/**
|
|
673
|
-
* If
|
|
674
|
-
*
|
|
663
|
+
* If the hour is out of bounds,
|
|
664
|
+
* update both the hour and minute.
|
|
665
|
+
* This is done so that the new time
|
|
666
|
+
* is closest to what the user selected.
|
|
675
667
|
*/
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
668
|
+
if (partsCopy.hour !== undefined && minParts.hour !== undefined) {
|
|
669
|
+
if (partsCopy.hour < minParts.hour) {
|
|
670
|
+
partsCopy.hour = minParts.hour;
|
|
671
|
+
partsCopy.minute = minParts.minute;
|
|
672
|
+
/**
|
|
673
|
+
* If only the minute is out of bounds,
|
|
674
|
+
* set it to the min minute.
|
|
675
|
+
*/
|
|
676
|
+
}
|
|
677
|
+
else if (partsCopy.hour === minParts.hour &&
|
|
678
|
+
partsCopy.minute !== undefined &&
|
|
679
|
+
minParts.minute !== undefined &&
|
|
680
|
+
partsCopy.minute < minParts.minute) {
|
|
681
|
+
partsCopy.minute = minParts.minute;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
}
|
|
690
685
|
/**
|
|
691
|
-
* If
|
|
692
|
-
*
|
|
693
|
-
* This is done so that the new time
|
|
694
|
-
* is closest to what the user selected.
|
|
686
|
+
* If value is same day as max day,
|
|
687
|
+
* make sure the time value is in bounds.
|
|
695
688
|
*/
|
|
696
|
-
if (
|
|
697
|
-
if (partsCopy.hour > maxParts.hour) {
|
|
698
|
-
partsCopy.hour = maxParts.hour;
|
|
699
|
-
partsCopy.minute = maxParts.minute;
|
|
689
|
+
if (maxParts !== undefined && isSameDay(parts, maxParts)) {
|
|
700
690
|
/**
|
|
701
|
-
* If
|
|
702
|
-
*
|
|
691
|
+
* If the hour is out of bounds,
|
|
692
|
+
* update both the hour and minute.
|
|
693
|
+
* This is done so that the new time
|
|
694
|
+
* is closest to what the user selected.
|
|
703
695
|
*/
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
696
|
+
if (partsCopy.hour !== undefined && maxParts.hour !== undefined) {
|
|
697
|
+
if (partsCopy.hour > maxParts.hour) {
|
|
698
|
+
partsCopy.hour = maxParts.hour;
|
|
699
|
+
partsCopy.minute = maxParts.minute;
|
|
700
|
+
/**
|
|
701
|
+
* If only the minute is out of bounds,
|
|
702
|
+
* set it to the max minute.
|
|
703
|
+
*/
|
|
704
|
+
}
|
|
705
|
+
else if (partsCopy.hour === maxParts.hour &&
|
|
706
|
+
partsCopy.minute !== undefined &&
|
|
707
|
+
maxParts.minute !== undefined &&
|
|
708
|
+
partsCopy.minute > maxParts.minute) {
|
|
709
|
+
partsCopy.minute = maxParts.minute;
|
|
710
|
+
}
|
|
711
|
+
}
|
|
711
712
|
}
|
|
712
|
-
|
|
713
|
-
return partsCopy;
|
|
713
|
+
return partsCopy;
|
|
714
714
|
};
|
|
715
715
|
/**
|
|
716
716
|
* Returns the closest date to refParts
|
|
@@ -724,26 +724,26 @@ const validateParts = (parts, minParts, maxParts) => {
|
|
|
724
724
|
* @param minuteValues The allowed minute values
|
|
725
725
|
*/
|
|
726
726
|
const getClosestValidDate = (refParts, monthValues, dayValues, yearValues, hourValues, minuteValues) => {
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
727
|
+
const { hour, minute, day, month, year } = refParts;
|
|
728
|
+
const copyParts = Object.assign(Object.assign({}, refParts), { dayOfWeek: undefined });
|
|
729
|
+
if (monthValues !== undefined) {
|
|
730
|
+
copyParts.month = findClosestValue(month, monthValues);
|
|
731
|
+
}
|
|
732
|
+
// Day is nullable but cannot be undefined
|
|
733
|
+
if (day !== null && dayValues !== undefined) {
|
|
734
|
+
copyParts.day = findClosestValue(day, dayValues);
|
|
735
|
+
}
|
|
736
|
+
if (yearValues !== undefined) {
|
|
737
|
+
copyParts.year = findClosestValue(year, yearValues);
|
|
738
|
+
}
|
|
739
|
+
if (hour !== undefined && hourValues !== undefined) {
|
|
740
|
+
copyParts.hour = findClosestValue(hour, hourValues);
|
|
741
|
+
copyParts.ampm = parseAmPm(copyParts.hour);
|
|
742
|
+
}
|
|
743
|
+
if (minute !== undefined && minuteValues !== undefined) {
|
|
744
|
+
copyParts.minute = findClosestValue(minute, minuteValues);
|
|
745
|
+
}
|
|
746
|
+
return copyParts;
|
|
747
747
|
};
|
|
748
748
|
/**
|
|
749
749
|
* Finds the value in "values" that is
|
|
@@ -756,85 +756,85 @@ const getClosestValidDate = (refParts, monthValues, dayValues, yearValues, hourV
|
|
|
756
756
|
* searched to find the closest value to "reference"
|
|
757
757
|
*/
|
|
758
758
|
const findClosestValue = (reference, values) => {
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
759
|
+
let closestValue = values[0];
|
|
760
|
+
let rank = Math.abs(closestValue - reference);
|
|
761
|
+
for (let i = 1; i < values.length; i++) {
|
|
762
|
+
const value = values[i];
|
|
763
|
+
/**
|
|
764
|
+
* This code prioritizes the first
|
|
765
|
+
* closest result. Given two values
|
|
766
|
+
* with the same distance from reference,
|
|
767
|
+
* this code will prioritize the smaller of
|
|
768
|
+
* the two values.
|
|
769
|
+
*/
|
|
770
|
+
const valueRank = Math.abs(value - reference);
|
|
771
|
+
if (valueRank < rank) {
|
|
772
|
+
closestValue = value;
|
|
773
|
+
rank = valueRank;
|
|
774
|
+
}
|
|
774
775
|
}
|
|
775
|
-
|
|
776
|
-
return closestValue;
|
|
776
|
+
return closestValue;
|
|
777
777
|
};
|
|
778
778
|
|
|
779
779
|
const getFormattedDayPeriod = (dayPeriod) => {
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
780
|
+
if (dayPeriod === undefined) {
|
|
781
|
+
return '';
|
|
782
|
+
}
|
|
783
|
+
return dayPeriod.toUpperCase();
|
|
784
784
|
};
|
|
785
785
|
const getLocalizedTime = (locale, refParts, hourCycle) => {
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
786
|
+
const timeParts = {
|
|
787
|
+
hour: refParts.hour,
|
|
788
|
+
minute: refParts.minute,
|
|
789
|
+
};
|
|
790
|
+
if (timeParts.hour === undefined || timeParts.minute === undefined) {
|
|
791
|
+
return 'Invalid Time';
|
|
792
|
+
}
|
|
793
|
+
return new Intl.DateTimeFormat(locale, {
|
|
794
|
+
hour: 'numeric',
|
|
795
|
+
minute: 'numeric',
|
|
796
|
+
/**
|
|
797
|
+
* Setting the timeZone to UTC prevents
|
|
798
|
+
* new Intl.DatetimeFormat from subtracting
|
|
799
|
+
* the user's current timezone offset
|
|
800
|
+
* when formatting the time.
|
|
801
|
+
*/
|
|
802
|
+
timeZone: 'UTC',
|
|
803
|
+
/**
|
|
804
|
+
* We use hourCycle here instead of hour12 due to:
|
|
805
|
+
* https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
|
|
806
|
+
*/
|
|
807
|
+
hourCycle,
|
|
808
|
+
/**
|
|
809
|
+
* Setting Z at the end indicates that this
|
|
810
|
+
* date string is in the UTC time zone. This
|
|
811
|
+
* prevents new Date from adding the time zone
|
|
812
|
+
* offset when getting the ISO string.
|
|
813
|
+
*/
|
|
814
|
+
}).format(new Date(convertDataToISO(Object.assign({
|
|
815
|
+
/**
|
|
816
|
+
* JS uses a simplified ISO 8601 format which allows for
|
|
817
|
+
* date-only formats and date-time formats, but not
|
|
818
|
+
* time-only formats: https://tc39.es/ecma262/#sec-date-time-string-format
|
|
819
|
+
* As a result, developers who only pass a time will get
|
|
820
|
+
* an "Invalid Date" error. To account for this, we make sure that
|
|
821
|
+
* year/day/month values are set when passing to new Date().
|
|
822
|
+
* The Intl.DateTimeFormat call above only uses the hour/minute
|
|
823
|
+
* values, so passing these date values should have no impact
|
|
824
|
+
* on the time output.
|
|
825
|
+
*/
|
|
826
|
+
year: 2023, day: 1, month: 1 }, timeParts)) + 'Z'));
|
|
827
827
|
};
|
|
828
828
|
/**
|
|
829
829
|
* Adds padding to a time value so
|
|
830
830
|
* that it is always 2 digits.
|
|
831
831
|
*/
|
|
832
832
|
const addTimePadding = (value) => {
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
833
|
+
const valueToString = value.toString();
|
|
834
|
+
if (valueToString.length > 1) {
|
|
835
|
+
return valueToString;
|
|
836
|
+
}
|
|
837
|
+
return `0${valueToString}`;
|
|
838
838
|
};
|
|
839
839
|
/**
|
|
840
840
|
* Formats 24 hour times so that
|
|
@@ -843,34 +843,34 @@ const addTimePadding = (value) => {
|
|
|
843
843
|
* hour 0 is formatted as '12'.
|
|
844
844
|
*/
|
|
845
845
|
const getFormattedHour = (hour, hourCycle) => {
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
846
|
+
/**
|
|
847
|
+
* Midnight for h11 starts at 0:00am
|
|
848
|
+
* Midnight for h12 starts at 12:00am
|
|
849
|
+
* Midnight for h23 starts at 00:00
|
|
850
|
+
* Midnight for h24 starts at 24:00
|
|
851
|
+
*/
|
|
852
|
+
if (hour === 0) {
|
|
853
|
+
switch (hourCycle) {
|
|
854
|
+
case 'h11':
|
|
855
|
+
return '0';
|
|
856
|
+
case 'h12':
|
|
857
|
+
return '12';
|
|
858
|
+
case 'h23':
|
|
859
|
+
return '00';
|
|
860
|
+
case 'h24':
|
|
861
|
+
return '24';
|
|
862
|
+
default:
|
|
863
|
+
throw new Error(`Invalid hour cycle "${hourCycle}"`);
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
const use24Hour = is24Hour(hourCycle);
|
|
867
|
+
/**
|
|
868
|
+
* h23 and h24 use 24 hour times.
|
|
869
|
+
*/
|
|
870
|
+
if (use24Hour) {
|
|
871
|
+
return addTimePadding(hour);
|
|
872
|
+
}
|
|
873
|
+
return hour.toString();
|
|
874
874
|
};
|
|
875
875
|
/**
|
|
876
876
|
* Generates an aria-label to be read by screen readers
|
|
@@ -878,32 +878,32 @@ const getFormattedHour = (hour, hourCycle) => {
|
|
|
878
878
|
* today's date.
|
|
879
879
|
*/
|
|
880
880
|
const generateDayAriaLabel = (locale, today, refParts) => {
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
881
|
+
if (refParts.day === null) {
|
|
882
|
+
return null;
|
|
883
|
+
}
|
|
884
|
+
/**
|
|
885
|
+
* MM/DD/YYYY will return midnight in the user's timezone.
|
|
886
|
+
*/
|
|
887
|
+
const date = getNormalizedDate(refParts);
|
|
888
|
+
const labelString = new Intl.DateTimeFormat(locale, {
|
|
889
|
+
weekday: 'long',
|
|
890
|
+
month: 'long',
|
|
891
|
+
day: 'numeric',
|
|
892
|
+
timeZone: 'UTC',
|
|
893
|
+
}).format(date);
|
|
894
|
+
/**
|
|
895
|
+
* If date is today, prepend "Today" so screen readers indicate
|
|
896
|
+
* that the date is today.
|
|
897
|
+
*/
|
|
898
|
+
return today ? `Today, ${labelString}` : labelString;
|
|
899
899
|
};
|
|
900
900
|
/**
|
|
901
901
|
* Gets the day of the week, month, and day
|
|
902
902
|
* Used for the header in MD mode.
|
|
903
903
|
*/
|
|
904
904
|
const getMonthAndDay = (locale, refParts) => {
|
|
905
|
-
|
|
906
|
-
|
|
905
|
+
const date = getNormalizedDate(refParts);
|
|
906
|
+
return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format(date);
|
|
907
907
|
};
|
|
908
908
|
/**
|
|
909
909
|
* Given a locale and a date object,
|
|
@@ -912,8 +912,8 @@ const getMonthAndDay = (locale, refParts) => {
|
|
|
912
912
|
* Example: May 2021
|
|
913
913
|
*/
|
|
914
914
|
const getMonthAndYear = (locale, refParts) => {
|
|
915
|
-
|
|
916
|
-
|
|
915
|
+
const date = getNormalizedDate(refParts);
|
|
916
|
+
return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(date);
|
|
917
917
|
};
|
|
918
918
|
/**
|
|
919
919
|
* Given a locale and a date object,
|
|
@@ -922,7 +922,7 @@ const getMonthAndYear = (locale, refParts) => {
|
|
|
922
922
|
* Example: Apr 22, 2021
|
|
923
923
|
*/
|
|
924
924
|
const getMonthDayAndYear = (locale, refParts) => {
|
|
925
|
-
|
|
925
|
+
return getLocalizedDateTime(locale, refParts, { month: 'short', day: 'numeric', year: 'numeric' });
|
|
926
926
|
};
|
|
927
927
|
/**
|
|
928
928
|
* Given a locale and a date object,
|
|
@@ -933,7 +933,7 @@ const getMonthDayAndYear = (locale, refParts) => {
|
|
|
933
933
|
* Example: 29
|
|
934
934
|
*/
|
|
935
935
|
const getDay = (locale, refParts) => {
|
|
936
|
-
|
|
936
|
+
return getLocalizedDateTimeParts(locale, refParts, { day: 'numeric' }).find((obj) => obj.type === 'day').value;
|
|
937
937
|
};
|
|
938
938
|
/**
|
|
939
939
|
* Given a locale and a date object,
|
|
@@ -942,26 +942,26 @@ const getDay = (locale, refParts) => {
|
|
|
942
942
|
* Example: 2022
|
|
943
943
|
*/
|
|
944
944
|
const getYear = (locale, refParts) => {
|
|
945
|
-
|
|
945
|
+
return getLocalizedDateTime(locale, refParts, { year: 'numeric' });
|
|
946
946
|
};
|
|
947
947
|
/**
|
|
948
948
|
* Given reference parts, return a JS Date object
|
|
949
949
|
* with a normalized time.
|
|
950
950
|
*/
|
|
951
951
|
const getNormalizedDate = (refParts) => {
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
952
|
+
var _a, _b, _c;
|
|
953
|
+
const timeString = refParts.hour !== undefined && refParts.minute !== undefined ? ` ${refParts.hour}:${refParts.minute}` : '';
|
|
954
|
+
/**
|
|
955
|
+
* We use / notation here for the date
|
|
956
|
+
* so we do not need to do extra work and pad values with zeroes.
|
|
957
|
+
* Values such as YYYY-MM are still valid, so
|
|
958
|
+
* we add fallback values so we still get
|
|
959
|
+
* a valid date otherwise we will pass in a string
|
|
960
|
+
* like "//2023". Some browsers, such as Chrome, will
|
|
961
|
+
* account for this and still return a valid date. However,
|
|
962
|
+
* this is not a consistent behavior across all browsers.
|
|
963
|
+
*/
|
|
964
|
+
return new Date(`${(_a = refParts.month) !== null && _a !== void 0 ? _a : 1}/${(_b = refParts.day) !== null && _b !== void 0 ? _b : 1}/${(_c = refParts.year) !== null && _c !== void 0 ? _c : 2023}${timeString} GMT+0000`);
|
|
965
965
|
};
|
|
966
966
|
/**
|
|
967
967
|
* Given a locale, DatetimeParts, and options
|
|
@@ -972,8 +972,8 @@ const getNormalizedDate = (refParts) => {
|
|
|
972
972
|
* getLocalizedDateTimeParts.
|
|
973
973
|
*/
|
|
974
974
|
const getLocalizedDateTime = (locale, refParts, options) => {
|
|
975
|
-
|
|
976
|
-
|
|
975
|
+
const date = getNormalizedDate(refParts);
|
|
976
|
+
return getDateTimeFormat(locale, options).format(date);
|
|
977
977
|
};
|
|
978
978
|
/**
|
|
979
979
|
* Given a locale, DatetimeParts, and options
|
|
@@ -982,8 +982,8 @@ const getLocalizedDateTime = (locale, refParts, options) => {
|
|
|
982
982
|
* each piece of the date.
|
|
983
983
|
*/
|
|
984
984
|
const getLocalizedDateTimeParts = (locale, refParts, options) => {
|
|
985
|
-
|
|
986
|
-
|
|
985
|
+
const date = getNormalizedDate(refParts);
|
|
986
|
+
return getDateTimeFormat(locale, options).formatToParts(date);
|
|
987
987
|
};
|
|
988
988
|
/**
|
|
989
989
|
* Wrapper function for Intl.DateTimeFormat.
|
|
@@ -992,7 +992,7 @@ const getLocalizedDateTimeParts = (locale, refParts, options) => {
|
|
|
992
992
|
* with Intl.DateTimeFormat.
|
|
993
993
|
*/
|
|
994
994
|
const getDateTimeFormat = (locale, options) => {
|
|
995
|
-
|
|
995
|
+
return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, options), { timeZone: 'UTC' }));
|
|
996
996
|
};
|
|
997
997
|
/**
|
|
998
998
|
* Gets a localized version of "Today"
|
|
@@ -1000,13 +1000,13 @@ const getDateTimeFormat = (locale, options) => {
|
|
|
1000
1000
|
* browsers that do not support RelativeTimeFormat.
|
|
1001
1001
|
*/
|
|
1002
1002
|
const getTodayLabel = (locale) => {
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1003
|
+
if ('RelativeTimeFormat' in Intl) {
|
|
1004
|
+
const label = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(0, 'day');
|
|
1005
|
+
return label.charAt(0).toUpperCase() + label.slice(1);
|
|
1006
|
+
}
|
|
1007
|
+
else {
|
|
1008
|
+
return 'Today';
|
|
1009
|
+
}
|
|
1010
1010
|
};
|
|
1011
1011
|
/**
|
|
1012
1012
|
* When calling toISOString(), the browser
|
|
@@ -1038,9 +1038,9 @@ const getTodayLabel = (locale) => {
|
|
|
1038
1038
|
* https://www.timeanddate.com/time/time-zones-interesting.html
|
|
1039
1039
|
*/
|
|
1040
1040
|
const removeDateTzOffset = (date) => {
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1041
|
+
const tzOffset = date.getTimezoneOffset();
|
|
1042
|
+
date.setMinutes(date.getMinutes() - tzOffset);
|
|
1043
|
+
return date;
|
|
1044
1044
|
};
|
|
1045
1045
|
const DATE_AM = removeDateTzOffset(new Date('2022T01:00'));
|
|
1046
1046
|
const DATE_PM = removeDateTzOffset(new Date('2022T13:00'));
|
|
@@ -1053,17 +1053,17 @@ const DATE_PM = removeDateTzOffset(new Date('2022T13:00'));
|
|
|
1053
1053
|
* @returns The localized day period (am/pm) representation of the given value.
|
|
1054
1054
|
*/
|
|
1055
1055
|
const getLocalizedDayPeriod = (locale, dayPeriod) => {
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1056
|
+
const date = dayPeriod === 'am' ? DATE_AM : DATE_PM;
|
|
1057
|
+
const localizedDayPeriod = new Intl.DateTimeFormat(locale, {
|
|
1058
|
+
hour: 'numeric',
|
|
1059
|
+
timeZone: 'UTC',
|
|
1060
|
+
})
|
|
1061
|
+
.formatToParts(date)
|
|
1062
|
+
.find((part) => part.type === 'dayPeriod');
|
|
1063
|
+
if (localizedDayPeriod) {
|
|
1064
|
+
return localizedDayPeriod.value;
|
|
1065
|
+
}
|
|
1066
|
+
return getFormattedDayPeriod(dayPeriod);
|
|
1067
1067
|
};
|
|
1068
1068
|
/**
|
|
1069
1069
|
* Formats the datetime's value to a string, for use in the native input.
|
|
@@ -1071,7 +1071,7 @@ const getLocalizedDayPeriod = (locale, dayPeriod) => {
|
|
|
1071
1071
|
* @param value The value to format, either an ISO string or an array thereof.
|
|
1072
1072
|
*/
|
|
1073
1073
|
const formatValue = (value) => {
|
|
1074
|
-
|
|
1074
|
+
return Array.isArray(value) ? value.join(',') : value;
|
|
1075
1075
|
};
|
|
1076
1076
|
|
|
1077
1077
|
/**
|
|
@@ -1080,28 +1080,28 @@ const formatValue = (value) => {
|
|
|
1080
1080
|
* time zone.
|
|
1081
1081
|
*/
|
|
1082
1082
|
const getToday = () => {
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1083
|
+
/**
|
|
1084
|
+
* ion-datetime intentionally does not
|
|
1085
|
+
* parse time zones/do automatic time zone
|
|
1086
|
+
* conversion when accepting user input.
|
|
1087
|
+
* However when we get today's date string,
|
|
1088
|
+
* we want it formatted relative to the user's
|
|
1089
|
+
* time zone.
|
|
1090
|
+
*
|
|
1091
|
+
* When calling toISOString(), the browser
|
|
1092
|
+
* will convert the date to UTC time by either adding
|
|
1093
|
+
* or subtracting the time zone offset.
|
|
1094
|
+
* To work around this, we need to either add
|
|
1095
|
+
* or subtract the time zone offset to the Date
|
|
1096
|
+
* object prior to calling toISOString().
|
|
1097
|
+
* This allows us to get an ISO string
|
|
1098
|
+
* that is in the user's time zone.
|
|
1099
|
+
*/
|
|
1100
|
+
return removeDateTzOffset(new Date()).toISOString();
|
|
1101
1101
|
};
|
|
1102
1102
|
const minutes = [
|
|
1103
|
-
|
|
1104
|
-
|
|
1103
|
+
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
1104
|
+
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
|
1105
1105
|
];
|
|
1106
1106
|
// h11 hour system uses 0-11. Midnight starts at 0:00am.
|
|
1107
1107
|
const hour11 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
@@ -1120,25 +1120,25 @@ const hour24 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1
|
|
|
1120
1120
|
* or "T".
|
|
1121
1121
|
*/
|
|
1122
1122
|
const getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1123
|
+
/**
|
|
1124
|
+
* Nov 1st, 2020 starts on a Sunday.
|
|
1125
|
+
* ion-datetime assumes weeks start on Sunday,
|
|
1126
|
+
* but is configurable via `firstDayOfWeek`.
|
|
1127
|
+
*/
|
|
1128
|
+
const weekdayFormat = mode === 'ios' ? 'short' : 'narrow';
|
|
1129
|
+
const intl = new Intl.DateTimeFormat(locale, { weekday: weekdayFormat });
|
|
1130
|
+
const startDate = new Date('11/01/2020');
|
|
1131
|
+
const daysOfWeek = [];
|
|
1132
|
+
/**
|
|
1133
|
+
* For each day of the week,
|
|
1134
|
+
* get the day name.
|
|
1135
|
+
*/
|
|
1136
|
+
for (let i = firstDayOfWeek; i < firstDayOfWeek + 7; i++) {
|
|
1137
|
+
const currentDate = new Date(startDate);
|
|
1138
|
+
currentDate.setDate(currentDate.getDate() + i);
|
|
1139
|
+
daysOfWeek.push(intl.format(currentDate));
|
|
1140
|
+
}
|
|
1141
|
+
return daysOfWeek;
|
|
1142
1142
|
};
|
|
1143
1143
|
/**
|
|
1144
1144
|
* Returns an array containing all of the
|
|
@@ -1148,54 +1148,54 @@ const getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {
|
|
|
1148
1148
|
* using null values.
|
|
1149
1149
|
*/
|
|
1150
1150
|
const getDaysOfMonth = (month, year, firstDayOfWeek) => {
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1151
|
+
const numDays = getNumDaysInMonth(month, year);
|
|
1152
|
+
const firstOfMonth = new Date(`${month}/1/${year}`).getDay();
|
|
1153
|
+
/**
|
|
1154
|
+
* To get the first day of the month aligned on the correct
|
|
1155
|
+
* day of the week, we need to determine how many "filler" days
|
|
1156
|
+
* to generate. These filler days as empty/disabled buttons
|
|
1157
|
+
* that fill the space of the days of the week before the first
|
|
1158
|
+
* of the month.
|
|
1159
|
+
*
|
|
1160
|
+
* There are two cases here:
|
|
1161
|
+
*
|
|
1162
|
+
* 1. If firstOfMonth = 4, firstDayOfWeek = 0 then the offset
|
|
1163
|
+
* is (4 - (0 + 1)) = 3. Since the offset loop goes from 0 to 3 inclusive,
|
|
1164
|
+
* this will generate 4 filler days (0, 1, 2, 3), and then day of week 4 will have
|
|
1165
|
+
* the first day of the month.
|
|
1166
|
+
*
|
|
1167
|
+
* 2. If firstOfMonth = 2, firstDayOfWeek = 4 then the offset
|
|
1168
|
+
* is (6 - (4 - 2)) = 4. Since the offset loop goes from 0 to 4 inclusive,
|
|
1169
|
+
* this will generate 5 filler days (0, 1, 2, 3, 4), and then day of week 5 will have
|
|
1170
|
+
* the first day of the month.
|
|
1171
|
+
*/
|
|
1172
|
+
const offset = firstOfMonth >= firstDayOfWeek ? firstOfMonth - (firstDayOfWeek + 1) : 6 - (firstDayOfWeek - firstOfMonth);
|
|
1173
|
+
let days = [];
|
|
1174
|
+
for (let i = 1; i <= numDays; i++) {
|
|
1175
|
+
days.push({ day: i, dayOfWeek: (offset + i) % 7 });
|
|
1176
|
+
}
|
|
1177
|
+
for (let i = 0; i <= offset; i++) {
|
|
1178
|
+
days = [{ day: null, dayOfWeek: null }, ...days];
|
|
1179
|
+
}
|
|
1180
|
+
return days;
|
|
1181
1181
|
};
|
|
1182
1182
|
/**
|
|
1183
1183
|
* Returns an array of pre-defined hour
|
|
1184
1184
|
* values based on the provided hourCycle.
|
|
1185
1185
|
*/
|
|
1186
1186
|
const getHourData = (hourCycle) => {
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1187
|
+
switch (hourCycle) {
|
|
1188
|
+
case 'h11':
|
|
1189
|
+
return hour11;
|
|
1190
|
+
case 'h12':
|
|
1191
|
+
return hour12;
|
|
1192
|
+
case 'h23':
|
|
1193
|
+
return hour23;
|
|
1194
|
+
case 'h24':
|
|
1195
|
+
return hour24;
|
|
1196
|
+
default:
|
|
1197
|
+
throw new Error(`Invalid hour cycle "${hourCycle}"`);
|
|
1198
|
+
}
|
|
1199
1199
|
};
|
|
1200
1200
|
/**
|
|
1201
1201
|
* Given a local, reference datetime parts and option
|
|
@@ -1203,185 +1203,185 @@ const getHourData = (hourCycle) => {
|
|
|
1203
1203
|
* hour and minute values according to the bounds and locale.
|
|
1204
1204
|
*/
|
|
1205
1205
|
const generateTime = (locale, refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
/**
|
|
1220
|
-
* If ref day is the same as the
|
|
1221
|
-
* minimum allowed day, filter hour/minute
|
|
1222
|
-
* values according to min hour and minute.
|
|
1223
|
-
*/
|
|
1224
|
-
if (isSameDay(refParts, minParts)) {
|
|
1225
|
-
/**
|
|
1226
|
-
* Users may not always set the hour/minute for
|
|
1227
|
-
* min value (i.e. 2021-06-02) so we should allow
|
|
1228
|
-
* all hours/minutes in that case.
|
|
1229
|
-
*/
|
|
1230
|
-
if (minParts.hour !== undefined) {
|
|
1231
|
-
processedHours = processedHours.filter((hour) => {
|
|
1232
|
-
const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;
|
|
1233
|
-
return (use24Hour ? hour : convertedHour) >= minParts.hour;
|
|
1234
|
-
});
|
|
1235
|
-
isAMAllowed = minParts.hour < 13;
|
|
1236
|
-
}
|
|
1237
|
-
if (minParts.minute !== undefined) {
|
|
1206
|
+
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
1207
|
+
const use24Hour = is24Hour(computedHourCycle);
|
|
1208
|
+
let processedHours = getHourData(computedHourCycle);
|
|
1209
|
+
let processedMinutes = minutes;
|
|
1210
|
+
let isAMAllowed = true;
|
|
1211
|
+
let isPMAllowed = true;
|
|
1212
|
+
if (hourValues) {
|
|
1213
|
+
processedHours = processedHours.filter((hour) => hourValues.includes(hour));
|
|
1214
|
+
}
|
|
1215
|
+
if (minuteValues) {
|
|
1216
|
+
processedMinutes = processedMinutes.filter((minute) => minuteValues.includes(minute));
|
|
1217
|
+
}
|
|
1218
|
+
if (minParts) {
|
|
1238
1219
|
/**
|
|
1239
|
-
*
|
|
1240
|
-
*
|
|
1241
|
-
*
|
|
1242
|
-
* For example with a minimum range of 09:30, users
|
|
1243
|
-
* should be able to select 10:00-10:29 and beyond.
|
|
1220
|
+
* If ref day is the same as the
|
|
1221
|
+
* minimum allowed day, filter hour/minute
|
|
1222
|
+
* values according to min hour and minute.
|
|
1244
1223
|
*/
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1224
|
+
if (isSameDay(refParts, minParts)) {
|
|
1225
|
+
/**
|
|
1226
|
+
* Users may not always set the hour/minute for
|
|
1227
|
+
* min value (i.e. 2021-06-02) so we should allow
|
|
1228
|
+
* all hours/minutes in that case.
|
|
1229
|
+
*/
|
|
1230
|
+
if (minParts.hour !== undefined) {
|
|
1231
|
+
processedHours = processedHours.filter((hour) => {
|
|
1232
|
+
const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;
|
|
1233
|
+
return (use24Hour ? hour : convertedHour) >= minParts.hour;
|
|
1234
|
+
});
|
|
1235
|
+
isAMAllowed = minParts.hour < 13;
|
|
1236
|
+
}
|
|
1237
|
+
if (minParts.minute !== undefined) {
|
|
1238
|
+
/**
|
|
1239
|
+
* The minimum minute range should not be enforced when
|
|
1240
|
+
* the hour is greater than the min hour.
|
|
1241
|
+
*
|
|
1242
|
+
* For example with a minimum range of 09:30, users
|
|
1243
|
+
* should be able to select 10:00-10:29 and beyond.
|
|
1244
|
+
*/
|
|
1245
|
+
let isPastMinHour = false;
|
|
1246
|
+
if (minParts.hour !== undefined && refParts.hour !== undefined) {
|
|
1247
|
+
if (refParts.hour > minParts.hour) {
|
|
1248
|
+
isPastMinHour = true;
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
processedMinutes = processedMinutes.filter((minute) => {
|
|
1252
|
+
if (isPastMinHour) {
|
|
1253
|
+
return true;
|
|
1254
|
+
}
|
|
1255
|
+
return minute >= minParts.minute;
|
|
1256
|
+
});
|
|
1257
|
+
}
|
|
1258
|
+
/**
|
|
1259
|
+
* If ref day is before minimum
|
|
1260
|
+
* day do not render any hours/minute values
|
|
1261
|
+
*/
|
|
1250
1262
|
}
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
}
|
|
1300
|
-
else if (isAfter(refParts, maxParts)) {
|
|
1301
|
-
processedHours = [];
|
|
1302
|
-
processedMinutes = [];
|
|
1303
|
-
isAMAllowed = isPMAllowed = false;
|
|
1304
|
-
}
|
|
1305
|
-
}
|
|
1306
|
-
return {
|
|
1307
|
-
hours: processedHours,
|
|
1308
|
-
minutes: processedMinutes,
|
|
1309
|
-
am: isAMAllowed,
|
|
1310
|
-
pm: isPMAllowed,
|
|
1311
|
-
};
|
|
1263
|
+
else if (isBefore(refParts, minParts)) {
|
|
1264
|
+
processedHours = [];
|
|
1265
|
+
processedMinutes = [];
|
|
1266
|
+
isAMAllowed = isPMAllowed = false;
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
if (maxParts) {
|
|
1270
|
+
/**
|
|
1271
|
+
* If ref day is the same as the
|
|
1272
|
+
* maximum allowed day, filter hour/minute
|
|
1273
|
+
* values according to max hour and minute.
|
|
1274
|
+
*/
|
|
1275
|
+
if (isSameDay(refParts, maxParts)) {
|
|
1276
|
+
/**
|
|
1277
|
+
* Users may not always set the hour/minute for
|
|
1278
|
+
* max value (i.e. 2021-06-02) so we should allow
|
|
1279
|
+
* all hours/minutes in that case.
|
|
1280
|
+
*/
|
|
1281
|
+
if (maxParts.hour !== undefined) {
|
|
1282
|
+
processedHours = processedHours.filter((hour) => {
|
|
1283
|
+
const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;
|
|
1284
|
+
return (use24Hour ? hour : convertedHour) <= maxParts.hour;
|
|
1285
|
+
});
|
|
1286
|
+
isPMAllowed = maxParts.hour >= 12;
|
|
1287
|
+
}
|
|
1288
|
+
if (maxParts.minute !== undefined && refParts.hour === maxParts.hour) {
|
|
1289
|
+
// The available minutes should only be filtered when the hour is the same as the max hour.
|
|
1290
|
+
// For example if the max hour is 10:30 and the current hour is 10:00,
|
|
1291
|
+
// users should be able to select 00-30 minutes.
|
|
1292
|
+
// If the current hour is 09:00, users should be able to select 00-60 minutes.
|
|
1293
|
+
processedMinutes = processedMinutes.filter((minute) => minute <= maxParts.minute);
|
|
1294
|
+
}
|
|
1295
|
+
/**
|
|
1296
|
+
* If ref day is after minimum
|
|
1297
|
+
* day do not render any hours/minute values
|
|
1298
|
+
*/
|
|
1299
|
+
}
|
|
1300
|
+
else if (isAfter(refParts, maxParts)) {
|
|
1301
|
+
processedHours = [];
|
|
1302
|
+
processedMinutes = [];
|
|
1303
|
+
isAMAllowed = isPMAllowed = false;
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
return {
|
|
1307
|
+
hours: processedHours,
|
|
1308
|
+
minutes: processedMinutes,
|
|
1309
|
+
am: isAMAllowed,
|
|
1310
|
+
pm: isPMAllowed,
|
|
1311
|
+
};
|
|
1312
1312
|
};
|
|
1313
1313
|
/**
|
|
1314
1314
|
* Given DatetimeParts, generate the previous,
|
|
1315
1315
|
* current, and and next months.
|
|
1316
1316
|
*/
|
|
1317
1317
|
const generateMonths = (refParts, forcedDate) => {
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1318
|
+
const current = { month: refParts.month, year: refParts.year, day: refParts.day };
|
|
1319
|
+
/**
|
|
1320
|
+
* If we're forcing a month to appear, and it's different from the current month,
|
|
1321
|
+
* ensure it appears by replacing the next or previous month as appropriate.
|
|
1322
|
+
*/
|
|
1323
|
+
if (forcedDate !== undefined && (refParts.month !== forcedDate.month || refParts.year !== forcedDate.year)) {
|
|
1324
|
+
const forced = { month: forcedDate.month, year: forcedDate.year, day: forcedDate.day };
|
|
1325
|
+
const forcedMonthIsBefore = isBefore(forced, current);
|
|
1326
|
+
return forcedMonthIsBefore
|
|
1327
|
+
? [forced, current, getNextMonth(refParts)]
|
|
1328
|
+
: [getPreviousMonth(refParts), current, forced];
|
|
1329
|
+
}
|
|
1330
|
+
return [getPreviousMonth(refParts), current, getNextMonth(refParts)];
|
|
1331
1331
|
};
|
|
1332
1332
|
const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, formatOptions = {
|
|
1333
|
-
|
|
1333
|
+
month: 'long',
|
|
1334
1334
|
}) => {
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1335
|
+
const { year } = refParts;
|
|
1336
|
+
const months = [];
|
|
1337
|
+
if (monthValues !== undefined) {
|
|
1338
|
+
let processedMonths = monthValues;
|
|
1339
|
+
if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.month) !== undefined) {
|
|
1340
|
+
processedMonths = processedMonths.filter((month) => month <= maxParts.month);
|
|
1341
|
+
}
|
|
1342
|
+
if ((minParts === null || minParts === void 0 ? void 0 : minParts.month) !== undefined) {
|
|
1343
|
+
processedMonths = processedMonths.filter((month) => month >= minParts.month);
|
|
1344
|
+
}
|
|
1345
|
+
processedMonths.forEach((processedMonth) => {
|
|
1346
|
+
const date = new Date(`${processedMonth}/1/${year} GMT+0000`);
|
|
1347
|
+
const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1348
|
+
months.push({ text: monthString, value: processedMonth });
|
|
1349
|
+
});
|
|
1350
|
+
}
|
|
1351
|
+
else {
|
|
1352
|
+
const maxMonth = maxParts && maxParts.year === year ? maxParts.month : 12;
|
|
1353
|
+
const minMonth = minParts && minParts.year === year ? minParts.month : 1;
|
|
1354
|
+
for (let i = minMonth; i <= maxMonth; i++) {
|
|
1355
|
+
/**
|
|
1356
|
+
*
|
|
1357
|
+
* There is a bug on iOS 14 where
|
|
1358
|
+
* Intl.DateTimeFormat takes into account
|
|
1359
|
+
* the local timezone offset when formatting dates.
|
|
1360
|
+
*
|
|
1361
|
+
* Forcing the timezone to 'UTC' fixes the issue. However,
|
|
1362
|
+
* we should keep this workaround as it is safer. In the event
|
|
1363
|
+
* this breaks in another browser, we will not be impacted
|
|
1364
|
+
* because all dates will be interpreted in UTC.
|
|
1365
|
+
*
|
|
1366
|
+
* Example:
|
|
1367
|
+
* new Intl.DateTimeFormat('en-US', { month: 'long' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // "March"
|
|
1368
|
+
* new Intl.DateTimeFormat('en-US', { month: 'long', timeZone: 'UTC' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // "April"
|
|
1369
|
+
*
|
|
1370
|
+
* In certain timezones, iOS 14 shows the wrong
|
|
1371
|
+
* date for .toUTCString(). To combat this, we
|
|
1372
|
+
* force all of the timezones to GMT+0000 (UTC).
|
|
1373
|
+
*
|
|
1374
|
+
* Example:
|
|
1375
|
+
* Time Zone: Central European Standard Time
|
|
1376
|
+
* new Date('1/1/1992').toUTCString() // "Tue, 31 Dec 1991 23:00:00 GMT"
|
|
1377
|
+
* new Date('1/1/1992 GMT+0000').toUTCString() // "Wed, 01 Jan 1992 00:00:00 GMT"
|
|
1378
|
+
*/
|
|
1379
|
+
const date = new Date(`${i}/1/${year} GMT+0000`);
|
|
1380
|
+
const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1381
|
+
months.push({ text: monthString, value: i });
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
return months;
|
|
1385
1385
|
};
|
|
1386
1386
|
/**
|
|
1387
1387
|
* Returns information regarding
|
|
@@ -1395,65 +1395,65 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
|
|
|
1395
1395
|
* @returns Date data to be used in ion-picker-column-internal
|
|
1396
1396
|
*/
|
|
1397
1397
|
const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
1398
|
-
|
|
1398
|
+
day: 'numeric',
|
|
1399
1399
|
}) => {
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
}
|
|
1424
|
-
else {
|
|
1425
|
-
for (let i = minDay; i <= maxDay; i++) {
|
|
1426
|
-
const date = new Date(`${month}/${i}/${year} GMT+0000`);
|
|
1427
|
-
const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1428
|
-
days.push({ text: dayString, value: i });
|
|
1400
|
+
const { month, year } = refParts;
|
|
1401
|
+
const days = [];
|
|
1402
|
+
/**
|
|
1403
|
+
* If we have max/min bounds that in the same
|
|
1404
|
+
* month/year as the refParts, we should
|
|
1405
|
+
* use the define day as the max/min day.
|
|
1406
|
+
* Otherwise, fallback to the max/min days in a month.
|
|
1407
|
+
*/
|
|
1408
|
+
const numDaysInMonth = getNumDaysInMonth(month, year);
|
|
1409
|
+
const maxDay = (maxParts === null || maxParts === void 0 ? void 0 : maxParts.day) !== null && (maxParts === null || maxParts === void 0 ? void 0 : maxParts.day) !== undefined && maxParts.year === year && maxParts.month === month
|
|
1410
|
+
? maxParts.day
|
|
1411
|
+
: numDaysInMonth;
|
|
1412
|
+
const minDay = (minParts === null || minParts === void 0 ? void 0 : minParts.day) !== null && (minParts === null || minParts === void 0 ? void 0 : minParts.day) !== undefined && minParts.year === year && minParts.month === month
|
|
1413
|
+
? minParts.day
|
|
1414
|
+
: 1;
|
|
1415
|
+
if (dayValues !== undefined) {
|
|
1416
|
+
let processedDays = dayValues;
|
|
1417
|
+
processedDays = processedDays.filter((day) => day >= minDay && day <= maxDay);
|
|
1418
|
+
processedDays.forEach((processedDay) => {
|
|
1419
|
+
const date = new Date(`${month}/${processedDay}/${year} GMT+0000`);
|
|
1420
|
+
const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1421
|
+
days.push({ text: dayString, value: processedDay });
|
|
1422
|
+
});
|
|
1429
1423
|
}
|
|
1430
|
-
|
|
1431
|
-
|
|
1424
|
+
else {
|
|
1425
|
+
for (let i = minDay; i <= maxDay; i++) {
|
|
1426
|
+
const date = new Date(`${month}/${i}/${year} GMT+0000`);
|
|
1427
|
+
const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1428
|
+
days.push({ text: dayString, value: i });
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
return days;
|
|
1432
1432
|
};
|
|
1433
1433
|
const getYearColumnData = (locale, refParts, minParts, maxParts, yearValues) => {
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
}
|
|
1445
|
-
else {
|
|
1446
|
-
const { year } = refParts;
|
|
1447
|
-
const maxYear = (_a = maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== null && _a !== void 0 ? _a : year;
|
|
1448
|
-
const minYear = (_b = minParts === null || minParts === void 0 ? void 0 : minParts.year) !== null && _b !== void 0 ? _b : year - 100;
|
|
1449
|
-
for (let i = minYear; i <= maxYear; i++) {
|
|
1450
|
-
processedYears.push(i);
|
|
1434
|
+
var _a, _b;
|
|
1435
|
+
let processedYears = [];
|
|
1436
|
+
if (yearValues !== undefined) {
|
|
1437
|
+
processedYears = yearValues;
|
|
1438
|
+
if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== undefined) {
|
|
1439
|
+
processedYears = processedYears.filter((year) => year <= maxParts.year);
|
|
1440
|
+
}
|
|
1441
|
+
if ((minParts === null || minParts === void 0 ? void 0 : minParts.year) !== undefined) {
|
|
1442
|
+
processedYears = processedYears.filter((year) => year >= minParts.year);
|
|
1443
|
+
}
|
|
1451
1444
|
}
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1445
|
+
else {
|
|
1446
|
+
const { year } = refParts;
|
|
1447
|
+
const maxYear = (_a = maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== null && _a !== void 0 ? _a : year;
|
|
1448
|
+
const minYear = (_b = minParts === null || minParts === void 0 ? void 0 : minParts.year) !== null && _b !== void 0 ? _b : year - 100;
|
|
1449
|
+
for (let i = minYear; i <= maxYear; i++) {
|
|
1450
|
+
processedYears.push(i);
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
return processedYears.map((year) => ({
|
|
1454
|
+
text: getYear(locale, { year, month: refParts.month, day: refParts.day }),
|
|
1455
|
+
value: year,
|
|
1456
|
+
}));
|
|
1457
1457
|
};
|
|
1458
1458
|
/**
|
|
1459
1459
|
* Given a starting date and an upper bound,
|
|
@@ -1461,10 +1461,10 @@ const getYearColumnData = (locale, refParts, minParts, maxParts, yearValues) =>
|
|
|
1461
1461
|
* month objects in that range.
|
|
1462
1462
|
*/
|
|
1463
1463
|
const getAllMonthsInRange = (currentParts, maxParts) => {
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1464
|
+
if (currentParts.month === maxParts.month && currentParts.year === maxParts.year) {
|
|
1465
|
+
return [currentParts];
|
|
1466
|
+
}
|
|
1467
|
+
return [currentParts, ...getAllMonthsInRange(getNextMonth(currentParts), maxParts)];
|
|
1468
1468
|
};
|
|
1469
1469
|
/**
|
|
1470
1470
|
* Creates and returns picker items
|
|
@@ -1472,104 +1472,104 @@ const getAllMonthsInRange = (currentParts, maxParts) => {
|
|
|
1472
1472
|
* Example: "Thu, Jun 2"
|
|
1473
1473
|
*/
|
|
1474
1474
|
const getCombinedDateColumnData = (locale, todayParts, minParts, maxParts, dayValues, monthValues) => {
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1475
|
+
let items = [];
|
|
1476
|
+
let parts = [];
|
|
1477
|
+
/**
|
|
1478
|
+
* Get all month objects from the min date
|
|
1479
|
+
* to the max date. Note: Do not use getMonthColumnData
|
|
1480
|
+
* as that function only generates dates within a
|
|
1481
|
+
* single year.
|
|
1482
|
+
*/
|
|
1483
|
+
let months = getAllMonthsInRange(minParts, maxParts);
|
|
1484
|
+
/**
|
|
1485
|
+
* Filter out any disallowed month values.
|
|
1486
|
+
*/
|
|
1487
|
+
if (monthValues) {
|
|
1488
|
+
months = months.filter(({ month }) => monthValues.includes(month));
|
|
1489
|
+
}
|
|
1490
|
+
/**
|
|
1491
|
+
* Get all of the days in the month.
|
|
1492
|
+
* From there, generate an array where
|
|
1493
|
+
* each item has the month, date, and day
|
|
1494
|
+
* of work as the text.
|
|
1495
|
+
*/
|
|
1496
|
+
months.forEach((monthObject) => {
|
|
1497
|
+
const referenceMonth = { month: monthObject.month, day: null, year: monthObject.year };
|
|
1498
|
+
const monthDays = getDayColumnData(locale, referenceMonth, minParts, maxParts, dayValues, {
|
|
1499
|
+
month: 'short',
|
|
1500
|
+
day: 'numeric',
|
|
1501
|
+
weekday: 'short',
|
|
1502
|
+
});
|
|
1503
|
+
const dateParts = [];
|
|
1504
|
+
const dateColumnItems = [];
|
|
1505
|
+
monthDays.forEach((dayObject) => {
|
|
1506
|
+
const isToday = isSameDay(Object.assign(Object.assign({}, referenceMonth), { day: dayObject.value }), todayParts);
|
|
1507
|
+
/**
|
|
1508
|
+
* Today's date should read as "Today" (localized)
|
|
1509
|
+
* not the actual date string
|
|
1510
|
+
*/
|
|
1511
|
+
dateColumnItems.push({
|
|
1512
|
+
text: isToday ? getTodayLabel(locale) : dayObject.text,
|
|
1513
|
+
value: `${referenceMonth.year}-${referenceMonth.month}-${dayObject.value}`,
|
|
1514
|
+
});
|
|
1515
|
+
/**
|
|
1516
|
+
* When selecting a date in the wheel picker
|
|
1517
|
+
* we need access to the raw datetime parts data.
|
|
1518
|
+
* The picker column only accepts values of
|
|
1519
|
+
* type string or number, so we need to return
|
|
1520
|
+
* two sets of data: A data set to be passed
|
|
1521
|
+
* to the picker column, and a data set to
|
|
1522
|
+
* be used to reference the raw data when
|
|
1523
|
+
* updating the picker column value.
|
|
1524
|
+
*/
|
|
1525
|
+
dateParts.push({
|
|
1526
|
+
month: referenceMonth.month,
|
|
1527
|
+
year: referenceMonth.year,
|
|
1528
|
+
day: dayObject.value,
|
|
1529
|
+
});
|
|
1530
|
+
});
|
|
1531
|
+
parts = [...parts, ...dateParts];
|
|
1532
|
+
items = [...items, ...dateColumnItems];
|
|
1530
1533
|
});
|
|
1531
|
-
parts = [...parts, ...dateParts];
|
|
1532
|
-
items = [...items, ...dateColumnItems];
|
|
1533
|
-
});
|
|
1534
|
-
return {
|
|
1535
|
-
parts,
|
|
1536
|
-
items,
|
|
1537
|
-
};
|
|
1538
|
-
};
|
|
1539
|
-
const getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {
|
|
1540
|
-
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
1541
|
-
const use24Hour = is24Hour(computedHourCycle);
|
|
1542
|
-
const { hours, minutes, am, pm } = generateTime(locale, refParts, computedHourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues);
|
|
1543
|
-
const hoursItems = hours.map((hour) => {
|
|
1544
1534
|
return {
|
|
1545
|
-
|
|
1546
|
-
|
|
1535
|
+
parts,
|
|
1536
|
+
items,
|
|
1547
1537
|
};
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
text: getLocalizedDayPeriod(locale, 'am'),
|
|
1559
|
-
value: 'am',
|
|
1538
|
+
};
|
|
1539
|
+
const getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {
|
|
1540
|
+
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
1541
|
+
const use24Hour = is24Hour(computedHourCycle);
|
|
1542
|
+
const { hours, minutes, am, pm } = generateTime(locale, refParts, computedHourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues);
|
|
1543
|
+
const hoursItems = hours.map((hour) => {
|
|
1544
|
+
return {
|
|
1545
|
+
text: getFormattedHour(hour, computedHourCycle),
|
|
1546
|
+
value: getInternalHourValue(hour, use24Hour, refParts.ampm),
|
|
1547
|
+
};
|
|
1560
1548
|
});
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1549
|
+
const minutesItems = minutes.map((minute) => {
|
|
1550
|
+
return {
|
|
1551
|
+
text: addTimePadding(minute),
|
|
1552
|
+
value: minute,
|
|
1553
|
+
};
|
|
1566
1554
|
});
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1555
|
+
const dayPeriodItems = [];
|
|
1556
|
+
if (am && !use24Hour) {
|
|
1557
|
+
dayPeriodItems.push({
|
|
1558
|
+
text: getLocalizedDayPeriod(locale, 'am'),
|
|
1559
|
+
value: 'am',
|
|
1560
|
+
});
|
|
1561
|
+
}
|
|
1562
|
+
if (pm && !use24Hour) {
|
|
1563
|
+
dayPeriodItems.push({
|
|
1564
|
+
text: getLocalizedDayPeriod(locale, 'pm'),
|
|
1565
|
+
value: 'pm',
|
|
1566
|
+
});
|
|
1567
|
+
}
|
|
1568
|
+
return {
|
|
1569
|
+
minutesData: minutesItems,
|
|
1570
|
+
hoursData: hoursItems,
|
|
1571
|
+
dayPeriodData: dayPeriodItems,
|
|
1572
|
+
};
|
|
1573
1573
|
};
|
|
1574
1574
|
|
|
1575
1575
|
export { getDayColumnData as A, getYearColumnData as B, isMonthFirstLocale as C, getTimeColumnsData as D, isLocaleDayPeriodRTL as E, getMonthAndYear as F, getDaysOfWeek as G, getDaysOfMonth as H, generateMonths as I, getHourCycle as J, getLocalizedTime as K, getMonthAndDay as L, formatValue as M, getNextYear as N, getPreviousYear as O, clampDate as P, parseAmPm as Q, calculateHourFromAMPM as R, getLocalizedDateTime as S, getMonthDayAndYear as T, getDay as a, isAfter as b, isSameDay as c, getPreviousMonth as d, getNextMonth as e, getPartsFromCalendarDay as f, generateDayAriaLabel as g, getEndOfWeek as h, isBefore as i, getStartOfWeek as j, getPreviousDay as k, getNextDay as l, getPreviousWeek as m, getNextWeek as n, parseMaxParts as o, parseMinParts as p, parseDate as q, convertToArrayOfNumbers as r, convertDataToISO as s, getToday as t, getClosestValidDate as u, validateParts as v, warnIfValueOutOfBounds as w, getNumDaysInMonth as x, getCombinedDateColumnData as y, getMonthColumnData as z };
|