voyager-ionic-core 7.5.5 → 7.6.1
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 +297 -287
- package/components/alert.js +477 -467
- package/components/animation.js +991 -990
- 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 +1112 -1062
- package/components/dir.js +5 -5
- package/components/focus-visible.js +63 -63
- package/components/form-controller.js +45 -45
- 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 -58
- package/components/index9.js +171 -171
- package/components/input-shims.js +488 -483
- package/components/input.utils.js +107 -106
- package/components/ion-accordion-group.d.ts +2 -2
- package/components/ion-accordion-group.js +220 -220
- 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 +1741 -1709
- 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 +44 -44
- package/components/ion-fab.d.ts +2 -2
- package/components/ion-fab.js +75 -75
- 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 +298 -298
- 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 +498 -454
- package/components/ion-item-divider.d.ts +2 -2
- package/components/ion-item-divider.js +34 -34
- 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 +67 -67
- 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 -631
- 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 -747
- 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 +39 -39
- 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 +402 -400
- 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 -427
- 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 +147 -147
- package/components/ion-tab-bar.d.ts +2 -2
- package/components/ion-tab-bar.js +77 -77
- package/components/ion-tab-button.d.ts +2 -2
- package/components/ion-tab-button.js +104 -104
- 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 +443 -395
- 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 +56 -56
- 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 +33 -33
- package/components/list.js +50 -50
- 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 +468 -468
- package/components/popover.js +1154 -1144
- package/components/radio-group.js +161 -159
- package/components/radio.js +248 -208
- 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 +30 -30
- package/css/core.css +66 -8
- 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 +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-1d4c1dbf.js → app-globals-7def22c8.js} +1 -1
- package/dist/cjs/button-active-962fe442.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-a5109f09.js +1672 -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-17ab7794.js +243 -0
- package/dist/cjs/index-3b012034.js +308 -0
- package/dist/cjs/{index-c2940dc1.js → index-50dcfe2f.js} +79 -15
- package/dist/cjs/{index-cc7dfb7c.js → index-5915f9b3.js} +3 -3
- package/dist/cjs/index-b4f986cd.js +198 -0
- package/dist/cjs/index-c8d52405.js +10 -0
- package/dist/cjs/index-d1b59ffa.js +459 -0
- package/dist/cjs/{index-da2c7a37.js → index-da15e99c.js} +60 -60
- 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 +488 -488
- package/dist/cjs/ion-action-sheet.cjs.entry.js +260 -250
- package/dist/cjs/ion-alert.cjs.entry.js +442 -432
- package/dist/cjs/ion-app_8.cjs.entry.js +1151 -1151
- 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 +2204 -2162
- package/dist/cjs/ion-fab_3.cjs.entry.js +150 -150
- 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 +443 -399
- package/dist/cjs/ion-item-option_3.cjs.entry.js +457 -457
- package/dist/cjs/ion-item_8.cjs.entry.js +441 -428
- package/dist/cjs/ion-loading.cjs.entry.js +220 -210
- package/dist/cjs/ion-menu_3.cjs.entry.js +670 -670
- 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 +453 -453
- package/dist/cjs/ion-popover.cjs.entry.js +1108 -1098
- package/dist/cjs/ion-progress-bar.cjs.entry.js +40 -40
- package/dist/cjs/ion-radio_2.cjs.entry.js +321 -316
- package/dist/cjs/ion-range.cjs.entry.js +558 -556
- package/dist/cjs/ion-refresher_2.cjs.entry.js +786 -786
- package/dist/cjs/ion-reorder_2.cjs.entry.js +267 -267
- 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 +360 -358
- package/dist/cjs/ion-segment_2.cjs.entry.js +507 -507
- 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 +119 -119
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +138 -138
- 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 +401 -353
- 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-a4edbf03.js +230 -0
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/ios.transition-b5353f3e.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-67157dd9.js +59 -0
- package/dist/cjs/notch-controller-9735e7ac.js +155 -0
- package/dist/cjs/overlays-e77cc023.js +716 -0
- package/dist/cjs/spinner-configs-282fd50a.js +147 -0
- package/dist/cjs/status-tap-b5d77c08.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 +421 -421
- package/dist/collection/components/accordion-group/accordion-group.md.css +66 -0
- package/dist/collection/components/action-sheet/action-sheet.ios.css +44 -0
- package/dist/collection/components/action-sheet/action-sheet.js +739 -729
- package/dist/collection/components/action-sheet/action-sheet.md.css +44 -0
- 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 +74 -74
- 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 +85 -1
- package/dist/collection/components/alert/alert.js +977 -967
- package/dist/collection/components/alert/alert.md.css +115 -3
- 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 +116 -116
- 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 +66 -6
- package/dist/collection/components/checkbox/checkbox.js +418 -415
- package/dist/collection/components/checkbox/checkbox.md.css +66 -6
- 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 +45 -0
- package/dist/collection/components/datetime/datetime.js +2264 -2232
- package/dist/collection/components/datetime/datetime.md.css +45 -0
- package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +58 -58
- 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 +43 -43
- 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 +565 -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/prefer-wheel/datetime.spec.js +27 -0
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +137 -137
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +86 -86
- 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 +332 -282
- 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 +88 -0
- 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 +25 -25
- 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 +44 -0
- 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 +44 -0
- 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 +76 -3
- package/dist/collection/components/input/input.js +1250 -1204
- package/dist/collection/components/input/input.md.css +145 -12
- 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 +45 -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 +85 -3
- package/dist/collection/components/item/item.js +614 -614
- package/dist/collection/components/item/item.md.css +129 -3
- 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 +16 -16
- 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 +66 -0
- package/dist/collection/components/item-divider/item-divider.js +71 -71
- package/dist/collection/components/item-divider/item-divider.md.css +66 -0
- 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 +25 -25
- 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 -0
- package/dist/collection/components/item-option/item-option.js +197 -197
- package/dist/collection/components/item-option/item-option.md.css +44 -0
- 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 +87 -87
- 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 +80 -3
- 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 +66 -0
- package/dist/collection/components/list/list.js +101 -101
- package/dist/collection/components/list/list.md.css +66 -0
- 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 +40 -40
- package/dist/collection/components/list-header/list-header.ios.css +66 -0
- package/dist/collection/components/list-header/list-header.js +69 -69
- package/dist/collection/components/list-header/list-header.md.css +66 -0
- 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 +14 -14
- 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 +47 -4
- package/dist/collection/components/menu/menu.js +956 -956
- package/dist/collection/components/menu/menu.md.css +47 -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/custom/menu.e2e.js +61 -0
- 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 +44 -0
- 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 +44 -0
- package/dist/collection/components/picker/picker.js +782 -772
- package/dist/collection/components/picker/picker.md.css +44 -0
- 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 +44 -0
- package/dist/collection/components/picker-internal/picker-internal.js +517 -517
- package/dist/collection/components/picker-internal/picker-internal.md.css +44 -0
- 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 -76
- 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 +44 -0
- package/dist/collection/components/popover/popover.js +1189 -1179
- package/dist/collection/components/popover/popover.md.css +44 -0
- 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 +66 -6
- package/dist/collection/components/radio/radio.js +453 -449
- package/dist/collection/components/radio/radio.md.css +66 -6
- package/dist/collection/components/radio/test/a11y/radio.e2e.js +41 -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 +279 -255
- 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 +44 -6
- package/dist/collection/components/range/range.js +1001 -998
- package/dist/collection/components/range/range.md.css +44 -6
- 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 -148
- 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 +22 -0
- package/dist/collection/components/reorder/reorder.js +37 -37
- package/dist/collection/components/reorder/reorder.md.css +22 -0
- 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 +891 -889
- package/dist/collection/components/searchbar/searchbar.md.css +44 -0
- package/dist/collection/components/searchbar/test/a11y/searchbar.e2e.js +11 -11
- package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +101 -101
- 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 +631 -631
- 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 +126 -7
- package/dist/collection/components/select/select.js +1201 -1184
- package/dist/collection/components/select/select.md.css +173 -19
- 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 +67 -2
- package/dist/collection/components/split-pane/split-pane.js +225 -225
- package/dist/collection/components/split-pane/split-pane.md.css +67 -2
- 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 +23 -23
- package/dist/collection/components/tab/tab.js +170 -170
- package/dist/collection/components/tab-bar/tab-bar.ios.css +66 -0
- package/dist/collection/components/tab-bar/tab-bar.js +177 -177
- package/dist/collection/components/tab-bar/tab-bar.md.css +66 -0
- package/dist/collection/components/tab-bar/test/basic/tab-bar.e2e.js +8 -8
- 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 +44 -0
- package/dist/collection/components/tab-button/tab-button.js +267 -267
- package/dist/collection/components/tab-button/tab-button.md.css +44 -0
- 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 +53 -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 +125 -5
- package/dist/collection/components/textarea/textarea.js +1069 -1019
- package/dist/collection/components/textarea/textarea.md.css +179 -14
- 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 +22 -0
- 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 +54 -10
- package/dist/collection/components/toast/toast.js +1065 -952
- package/dist/collection/components/toast/toast.md.css +54 -0
- 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 +66 -6
- package/dist/collection/components/toggle/toggle.js +487 -484
- package/dist/collection/components/toggle/toggle.md.css +66 -6
- 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 +905 -904
- 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 -58
- 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 -45
- 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 -61
- 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 +30 -30
- package/dist/docs.json +195 -38
- package/dist/esm/animation-dde8cc0d.js +1060 -0
- package/dist/esm/{app-globals-2398e405.js → app-globals-8c62bec2.js} +1 -1
- package/dist/esm/button-active-308d3edd.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-775093f5.js +1625 -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-1193f005.js +306 -0
- package/dist/esm/index-2cf77112.js +457 -0
- package/dist/esm/index-4743453d.js +231 -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-7c9b1bca.js → index-b7d870cf.js} +79 -15
- package/dist/esm/{index-4392efa5.js → index-b9e742e5.js} +60 -60
- 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 +488 -488
- package/dist/esm/ion-action-sheet.entry.js +260 -250
- package/dist/esm/ion-alert.entry.js +442 -432
- package/dist/esm/ion-app_8.entry.js +1151 -1151
- 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 +2204 -2162
- package/dist/esm/ion-fab_3.entry.js +150 -150
- 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 +443 -399
- package/dist/esm/ion-item-option_3.entry.js +457 -457
- package/dist/esm/ion-item_8.entry.js +441 -428
- package/dist/esm/ion-loading.entry.js +220 -210
- package/dist/esm/ion-menu_3.entry.js +670 -670
- 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 +453 -453
- package/dist/esm/ion-popover.entry.js +1108 -1098
- package/dist/esm/ion-progress-bar.entry.js +40 -40
- package/dist/esm/ion-radio_2.entry.js +321 -316
- package/dist/esm/ion-range.entry.js +558 -556
- package/dist/esm/ion-refresher_2.entry.js +786 -786
- package/dist/esm/ion-reorder_2.entry.js +267 -267
- 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 +360 -358
- package/dist/esm/ion-segment_2.entry.js +507 -507
- 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 +119 -119
- package/dist/esm/ion-tab-bar_2.entry.js +138 -138
- 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 +401 -353
- package/dist/esm/ion-toast.entry.js +771 -419
- package/dist/esm/ion-toggle.entry.js +227 -225
- package/dist/esm/ionic-global-1f99b929.js +224 -0
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/ios.transition-3376ccb2.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-f992779f.js +57 -0
- package/dist/esm/notch-controller-fea7f9c5.js +153 -0
- package/dist/esm/overlays-b33f6bca.js +693 -0
- package/dist/esm/spinner-configs-964f7cf3.js +145 -0
- package/dist/esm/status-tap-16fd8f3d.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-8aa13916.js → animation-dde8cc0d.js} +1 -1
- package/dist/esm-es5/app-globals-8c62bec2.js +4 -0
- package/dist/esm-es5/{button-active-ce5cba4c.js → button-active-308d3edd.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/data-775093f5.js +4 -0
- package/dist/esm-es5/{form-controller-64edeaad.js → form-controller-548aa79c.js} +1 -1
- package/dist/esm-es5/{framework-delegate-aa433dea.js → framework-delegate-bc1fd82a.js} +1 -1
- package/dist/esm-es5/{haptic-1243b917.js → haptic-554688a5.js} +1 -1
- package/dist/esm-es5/index-1193f005.js +4 -0
- package/dist/esm-es5/{index-ff313b19.js → index-2cf77112.js} +1 -1
- package/dist/esm-es5/{index-6a0ccabb.js → index-4743453d.js} +1 -1
- package/dist/esm-es5/{index-f0cc4e14.js → index-82eeb47f.js} +1 -1
- package/dist/esm-es5/index-b7d870cf.js +5 -0
- package/dist/esm-es5/{index-4392efa5.js → index-b9e742e5.js} +1 -1
- 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-40e42e7f.js → ionic-global-1f99b929.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-1651c430.js → ios.transition-3376ccb2.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-0c2dce71.js → keyboard-controller-ec5c2bfa.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-f992779f.js +4 -0
- package/dist/esm-es5/{notch-controller-8c9c0e54.js → notch-controller-fea7f9c5.js} +1 -1
- package/dist/esm-es5/{overlays-6c9feb7e.js → overlays-b33f6bca.js} +1 -1
- package/dist/esm-es5/{status-tap-9ce68758.js → status-tap-16fd8f3d.js} +1 -1
- package/dist/esm-es5/{swipe-back-cd4295f3.js → swipe-back-18cb49f7.js} +1 -1
- package/dist/html.html-data.json +16 -3
- 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-013013a3.js +4 -0
- package/dist/ionic/p-0235067a.js +4 -0
- package/dist/ionic/{p-a0b6d438.js → p-04377cfa.js} +1 -1
- package/dist/ionic/p-043aa6cc.system.entry.js +4 -0
- package/dist/ionic/{p-5d711127.js → p-0509fd34.js} +1 -1
- package/dist/ionic/p-0550f802.entry.js +4 -0
- package/dist/ionic/p-06abe918.system.entry.js +4 -0
- package/dist/ionic/{p-702d85d8.system.js → p-0aa78a8d.system.js} +1 -1
- package/dist/ionic/{p-41477ad9.system.js → p-0bd51c34.system.js} +1 -1
- package/dist/ionic/p-0dfa4ab4.system.entry.js +4 -0
- package/dist/ionic/p-0ebc87b7.system.entry.js +4 -0
- package/dist/ionic/{p-bed722c4.system.entry.js → p-10ec9af7.system.entry.js} +1 -1
- package/dist/ionic/{p-f4cc91f6.entry.js → p-11786dc7.entry.js} +1 -1
- package/dist/ionic/{p-0dc0d9b5.entry.js → p-11a3973f.entry.js} +1 -1
- package/dist/ionic/{p-a545b4f1.system.js → p-1501b945.system.js} +1 -1
- package/dist/ionic/{p-4e6a1efb.system.entry.js → p-158efe8d.system.entry.js} +1 -1
- package/dist/ionic/p-164aa69c.entry.js +4 -0
- package/dist/ionic/p-17d283b9.system.entry.js +4 -0
- package/dist/ionic/p-18cae04f.js +4 -0
- package/dist/ionic/{p-abacb44b.system.entry.js → p-19c379da.system.entry.js} +1 -1
- package/dist/ionic/p-19d9ceb8.system.js +4 -0
- package/dist/ionic/p-1b27ac67.entry.js +4 -0
- package/dist/ionic/{p-b91fe549.entry.js → p-1c249831.entry.js} +1 -1
- package/dist/ionic/{p-b4b4bb29.system.js → p-1cca10d6.system.js} +1 -1
- package/dist/ionic/p-1e4371bd.js +4 -0
- package/dist/ionic/{p-c7b8c2ef.system.entry.js → p-20e0e75d.system.entry.js} +1 -1
- package/dist/ionic/{p-34d2de14.system.entry.js → p-22827063.system.entry.js} +1 -1
- package/dist/ionic/{p-64ed03a3.entry.js → p-26c4bf85.entry.js} +1 -1
- package/dist/ionic/{p-419eb426.js → p-27281edd.js} +1 -1
- package/dist/ionic/{p-965677f1.entry.js → p-2894d5f6.entry.js} +1 -1
- package/dist/ionic/p-290d3fe9.js +5 -0
- package/dist/ionic/p-29d03b3a.js +4 -0
- package/dist/ionic/p-2a583966.entry.js +4 -0
- package/dist/ionic/p-2b7827c7.js +4 -0
- package/dist/ionic/{p-3d7fea9b.system.entry.js → p-2ba9a9bd.system.entry.js} +1 -1
- package/dist/ionic/p-2cf21a15.system.entry.js +4 -0
- package/dist/ionic/p-2df97906.system.entry.js +4 -0
- package/dist/ionic/{p-fa8d4788.system.js → p-31b2326e.system.js} +1 -1
- package/dist/ionic/{p-744973f3.entry.js → p-3313c481.entry.js} +1 -1
- package/dist/ionic/{p-ffb876b0.system.entry.js → p-332ea4d3.system.entry.js} +1 -1
- package/dist/ionic/{p-97e31c0a.system.js → p-3671f1b9.system.js} +1 -1
- package/dist/ionic/p-36d187af.js +4 -0
- package/dist/ionic/p-376a6063.js +4 -0
- package/dist/ionic/p-38531958.system.entry.js +4 -0
- package/dist/ionic/{p-55ed230e.system.js → p-38c337e7.system.js} +1 -1
- package/dist/ionic/p-38f2c6bb.system.js +4 -0
- package/dist/ionic/{p-3bad5c1a.js → p-3a75d7fd.js} +1 -1
- package/dist/ionic/{p-8b29691f.entry.js → p-3dfc522b.entry.js} +1 -1
- package/dist/ionic/{p-3de79805.entry.js → p-3e8d5e53.entry.js} +1 -1
- package/dist/ionic/p-40f68333.system.js +4 -0
- package/dist/ionic/{p-a6d83a03.system.entry.js → p-41208f54.system.entry.js} +1 -1
- package/dist/ionic/{p-b287ab05.js → p-4180a747.js} +1 -1
- package/dist/ionic/{p-b923f3d7.js → p-42f189f4.js} +1 -1
- package/dist/ionic/{p-d7ea6a0d.system.entry.js → p-4489dd20.system.entry.js} +1 -1
- package/dist/ionic/p-44a56556.js +4 -0
- package/dist/ionic/{p-e76a4bc8.entry.js → p-44dc52e5.entry.js} +1 -1
- package/dist/ionic/{p-f5a750e4.system.entry.js → p-4685218a.system.entry.js} +1 -1
- package/dist/ionic/p-469dd571.system.entry.js +4 -0
- package/dist/ionic/{p-5bd4e009.entry.js → p-47bb15a1.entry.js} +1 -1
- package/dist/ionic/{p-664d2b07.system.entry.js → p-4981ea0a.system.entry.js} +1 -1
- package/dist/ionic/{p-cf425ec5.system.entry.js → p-507ddbfe.system.entry.js} +1 -1
- package/dist/ionic/{p-14aca3fb.entry.js → p-529b24fb.entry.js} +1 -1
- package/dist/ionic/p-52cfafe9.system.js +5 -0
- package/dist/ionic/p-53ec4f1c.system.js +4 -0
- package/dist/ionic/{p-c0c81820.system.js → p-5ad1fe3b.system.js} +1 -1
- package/dist/ionic/{p-7cee75c0.entry.js → p-60959b71.entry.js} +1 -1
- package/dist/ionic/p-61e4d3ec.entry.js +4 -0
- package/dist/ionic/{p-1cb5f2f8.system.entry.js → p-648ad047.system.entry.js} +1 -1
- package/dist/ionic/p-66d633fb.js +4 -0
- package/dist/ionic/{p-63f08fe3.entry.js → p-6855f26a.entry.js} +1 -1
- package/dist/ionic/{p-1a8ae7a7.system.entry.js → p-69641343.system.entry.js} +1 -1
- package/dist/ionic/{p-800ef057.js → p-6ab03751.js} +1 -1
- package/dist/ionic/{p-18e01b30.system.entry.js → p-6c277fa2.system.entry.js} +1 -1
- package/dist/ionic/{p-0e23256e.system.entry.js → p-6e0539ea.system.entry.js} +1 -1
- package/dist/ionic/p-6fba0ce1.system.entry.js +4 -0
- package/dist/ionic/{p-4c80afe1.system.entry.js → p-745e3339.system.entry.js} +1 -1
- package/dist/ionic/p-767f1a92.entry.js +4 -0
- package/dist/ionic/{p-8a308596.system.js → p-7798c78a.system.js} +2 -2
- package/dist/ionic/p-7dc892f8.entry.js +4 -0
- package/dist/ionic/{p-6c3d5383.js → p-7fae5c36.js} +1 -1
- package/dist/ionic/{p-48d9faa7.entry.js → p-803efb5d.entry.js} +1 -1
- package/dist/ionic/{p-a8e68fd9.entry.js → p-806a9810.entry.js} +1 -1
- package/dist/ionic/p-84b567a6.entry.js +4 -0
- package/dist/ionic/p-85f48531.entry.js +4 -0
- package/dist/ionic/p-87bb3735.system.js +4 -0
- package/dist/ionic/{p-613d4042.system.js → p-888db766.system.js} +1 -1
- package/dist/ionic/p-88d5fbd3.js +4 -0
- package/dist/ionic/{p-ccdcb022.system.js → p-8985cdb6.system.js} +1 -1
- package/dist/ionic/p-8aa1d0b7.system.js +4 -0
- package/dist/ionic/{p-a9c3699b.system.entry.js → p-8f301ac5.system.entry.js} +1 -1
- package/dist/ionic/{p-174f3446.entry.js → p-928ee57a.entry.js} +1 -1
- package/dist/ionic/p-932f2259.system.entry.js +4 -0
- package/dist/ionic/p-93390f78.entry.js +4 -0
- package/dist/ionic/p-950c05ad.entry.js +4 -0
- package/dist/ionic/{p-3fb57e1b.system.entry.js → p-96d4814f.system.entry.js} +1 -1
- package/dist/ionic/p-97174c1e.js +4 -0
- package/dist/ionic/p-979d4f5c.system.js +4 -0
- package/dist/ionic/p-98f35d98.js +4 -0
- package/dist/ionic/{p-14b4348c.system.js → p-9a68d8ef.system.js} +1 -1
- package/dist/ionic/p-9ba72fdb.system.entry.js +4 -0
- package/dist/ionic/{p-41122cd6.system.js → p-9f94c72e.system.js} +1 -1
- package/dist/ionic/{p-92800752.entry.js → p-9fb45814.entry.js} +1 -1
- package/dist/ionic/p-9fda6824.system.entry.js +4 -0
- package/dist/ionic/{p-1dc91702.entry.js → p-a06501e3.entry.js} +1 -1
- package/dist/ionic/{p-c4042875.system.js → p-a074be82.system.js} +1 -1
- package/dist/ionic/{p-c7d30db9.entry.js → p-a3013394.entry.js} +1 -1
- package/dist/ionic/p-a42ef163.system.entry.js +4 -0
- package/dist/ionic/p-a49931aa.system.js +4 -0
- package/dist/ionic/{p-db5043df.system.entry.js → p-a821750c.system.entry.js} +1 -1
- package/dist/ionic/{p-1d269117.system.entry.js → p-abd5d0d5.system.entry.js} +1 -1
- package/dist/ionic/{p-9209d90c.entry.js → p-ade3cf46.entry.js} +1 -1
- package/dist/ionic/{p-1e86a71b.entry.js → p-ae4b7df8.entry.js} +1 -1
- package/dist/ionic/p-aee39e06.entry.js +4 -0
- package/dist/ionic/{p-09d142b3.system.js → p-afa9f205.system.js} +1 -1
- package/dist/ionic/{p-67e18f02.system.entry.js → p-b7058a0e.system.entry.js} +1 -1
- package/dist/ionic/p-b78e6a44.entry.js +4 -0
- package/dist/ionic/{p-beb64be7.system.entry.js → p-b7a2ffc9.system.entry.js} +1 -1
- package/dist/ionic/{p-0330f0a3.system.entry.js → p-b8a9e195.system.entry.js} +1 -1
- package/dist/ionic/{p-8ad82eb3.entry.js → p-b964aba3.entry.js} +1 -1
- package/dist/ionic/{p-ff5144f3.system.entry.js → p-beeed22c.system.entry.js} +1 -1
- package/dist/ionic/{p-5deff017.entry.js → p-c08fe2c0.entry.js} +1 -1
- package/dist/ionic/p-c1701827.entry.js +4 -0
- package/dist/ionic/{p-b2a74a72.entry.js → p-c5acfeb1.entry.js} +1 -1
- package/dist/ionic/p-c61cc894.js +4 -0
- package/dist/ionic/{p-ab4cff27.system.js → p-cabad15b.system.js} +1 -1
- package/dist/ionic/{p-07d9e9cd.system.entry.js → p-cb8dff22.system.entry.js} +1 -1
- package/dist/ionic/p-cd1b920b.entry.js +4 -0
- package/dist/ionic/p-cd574dfa.js +4 -0
- package/dist/ionic/{p-0492946a.entry.js → p-cf235986.entry.js} +1 -1
- package/dist/ionic/p-cf53213c.entry.js +4 -0
- package/dist/ionic/p-d51674c5.system.js +4 -0
- package/dist/ionic/{p-45da1e68.system.entry.js → p-d93eed83.system.entry.js} +1 -1
- package/dist/ionic/{p-c919498d.entry.js → p-da5e2652.entry.js} +1 -1
- package/dist/ionic/p-dc6d8647.entry.js +4 -0
- package/dist/ionic/p-dc71e4ef.system.entry.js +4 -0
- package/dist/ionic/{p-bba2ce59.system.js → p-ddbb2d5b.system.js} +1 -1
- package/dist/ionic/{p-6e23777e.system.entry.js → p-ddd48faf.system.entry.js} +1 -1
- package/dist/ionic/p-de6f8b28.system.js +4 -0
- package/dist/ionic/p-de756e5c.js +4 -0
- package/dist/ionic/{p-7ab6fc5a.system.entry.js → p-e2903cdc.system.entry.js} +1 -1
- package/dist/ionic/{p-0a794e83.entry.js → p-e33d1ebc.entry.js} +1 -1
- package/dist/ionic/p-ebe8bd8a.entry.js +4 -0
- package/dist/ionic/p-eef72e06.js +4 -0
- package/dist/ionic/{p-5da0eb3e.system.entry.js → p-f0504446.system.entry.js} +1 -1
- package/dist/ionic/p-f434bcf3.system.entry.js +4 -0
- package/dist/ionic/p-f5d2dc9b.js +4 -0
- package/dist/ionic/{p-a936d224.system.js → p-f6e9c227.system.js} +1 -1
- package/dist/ionic/p-f894e0ad.entry.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 +59 -32
- 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 +52 -13
- 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 +8 -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/element-interface.d.ts +6 -6
- package/dist/types/utils/focus-visible.d.ts +2 -2
- 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 +66 -66
- 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 +1 -1
- package/hydrate/index.d.ts +1 -1
- package/hydrate/index.js +30685 -30001
- package/package.json +4 -3
- package/dist/cjs/animation-1083855c.js +0 -1061
- package/dist/cjs/button-active-af897e0e.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-9343050c.js +0 -66
- 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-573877f3.js +0 -243
- package/dist/cjs/index-9f379eaa.js +0 -198
- package/dist/cjs/index-d7561763.js +0 -310
- package/dist/cjs/input-shims-b0a75a01.js +0 -596
- package/dist/cjs/input.utils-0fe3097c.js +0 -137
- package/dist/cjs/ionic-global-ea2901a3.js +0 -230
- package/dist/cjs/ios.transition-ac909bc8.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-907af519.js +0 -59
- package/dist/cjs/notch-controller-f4f6af5d.js +0 -155
- package/dist/cjs/overlays-2ffc5f27.js +0 -714
- package/dist/cjs/spinner-configs-f7b5105b.js +0 -147
- package/dist/cjs/status-tap-3fb2391a.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-53bbb124.js +0 -49
- package/dist/collection/components/item/test/text/item.e2e.js +0 -14
- package/dist/esm/animation-8aa13916.js +0 -1059
- package/dist/esm/button-active-ce5cba4c.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-64edeaad.js +0 -64
- 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-0aa6e61f.js +0 -308
- package/dist/esm/index-6a0ccabb.js +0 -231
- package/dist/esm/index-7a14ecec.js +0 -29
- package/dist/esm/index-f0cc4e14.js +0 -196
- package/dist/esm/index-ff313b19.js +0 -457
- package/dist/esm/input-shims-d0c93e5d.js +0 -594
- package/dist/esm/input.utils-ec063df4.js +0 -134
- package/dist/esm/ionic-global-40e42e7f.js +0 -224
- package/dist/esm/ios.transition-1651c430.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-66f18369.js +0 -57
- package/dist/esm/notch-controller-8c9c0e54.js +0 -153
- package/dist/esm/overlays-6c9feb7e.js +0 -692
- package/dist/esm/spinner-configs-d09fbbbb.js +0 -145
- package/dist/esm/status-tap-9ce68758.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-02d8498b.js +0 -47
- package/dist/esm-es5/app-globals-2398e405.js +0 -4
- package/dist/esm-es5/data-44d9e816.js +0 -4
- package/dist/esm-es5/index-0aa6e61f.js +0 -4
- package/dist/esm-es5/index-7c9b1bca.js +0 -5
- package/dist/esm-es5/input-shims-d0c93e5d.js +0 -4
- package/dist/esm-es5/input.utils-ec063df4.js +0 -4
- package/dist/esm-es5/md.transition-66f18369.js +0 -4
- package/dist/ionic/p-0d8e9393.entry.js +0 -4
- package/dist/ionic/p-114a36ed.js +0 -4
- package/dist/ionic/p-17240d90.js +0 -4
- package/dist/ionic/p-1e5165db.system.entry.js +0 -4
- package/dist/ionic/p-1f4f0d59.system.entry.js +0 -4
- package/dist/ionic/p-20cf4994.js +0 -4
- package/dist/ionic/p-236063ec.system.entry.js +0 -4
- package/dist/ionic/p-276afddd.js +0 -4
- package/dist/ionic/p-2e8e0045.js +0 -4
- package/dist/ionic/p-32083c2d.js +0 -4
- package/dist/ionic/p-352c0232.system.entry.js +0 -4
- package/dist/ionic/p-3602001b.system.js +0 -4
- package/dist/ionic/p-3632220b.system.js +0 -4
- package/dist/ionic/p-377c636c.system.entry.js +0 -4
- package/dist/ionic/p-39044fe6.system.entry.js +0 -4
- package/dist/ionic/p-3ce8c3e3.entry.js +0 -4
- package/dist/ionic/p-40903d34.system.js +0 -4
- package/dist/ionic/p-4518e4c0.system.entry.js +0 -4
- package/dist/ionic/p-4794e0ac.system.entry.js +0 -4
- package/dist/ionic/p-4a142496.system.entry.js +0 -4
- package/dist/ionic/p-4cd588b3.system.entry.js +0 -4
- package/dist/ionic/p-4dbac22d.entry.js +0 -4
- package/dist/ionic/p-4ecb5692.entry.js +0 -4
- package/dist/ionic/p-5370e786.js +0 -4
- package/dist/ionic/p-5cfb3feb.system.entry.js +0 -4
- package/dist/ionic/p-63d519fb.entry.js +0 -4
- package/dist/ionic/p-64296b15.entry.js +0 -4
- package/dist/ionic/p-67aab78f.js +0 -4
- package/dist/ionic/p-67ed452a.system.entry.js +0 -4
- package/dist/ionic/p-67eecef4.system.js +0 -4
- package/dist/ionic/p-7176cea3.entry.js +0 -4
- package/dist/ionic/p-73411c1b.entry.js +0 -4
- package/dist/ionic/p-73420380.js +0 -4
- package/dist/ionic/p-77e7a9c8.entry.js +0 -4
- package/dist/ionic/p-81c818e7.js +0 -4
- package/dist/ionic/p-8b1be026.js +0 -4
- package/dist/ionic/p-8cf94fc1.js +0 -4
- package/dist/ionic/p-8e1bded3.entry.js +0 -4
- package/dist/ionic/p-97c65aa5.js +0 -4
- package/dist/ionic/p-9ab6f3e6.system.js +0 -4
- package/dist/ionic/p-9b89cbde.js +0 -4
- package/dist/ionic/p-a5c1e6ce.entry.js +0 -4
- package/dist/ionic/p-af016cd3.entry.js +0 -4
- package/dist/ionic/p-b0cee324.entry.js +0 -4
- package/dist/ionic/p-b1142133.entry.js +0 -4
- package/dist/ionic/p-b17b7c3c.system.entry.js +0 -4
- package/dist/ionic/p-b203659a.system.entry.js +0 -4
- package/dist/ionic/p-b6f8ee31.entry.js +0 -4
- package/dist/ionic/p-b8c3f071.system.js +0 -4
- package/dist/ionic/p-b906c5ca.entry.js +0 -4
- package/dist/ionic/p-b912e055.system.js +0 -4
- package/dist/ionic/p-c224b9a9.js +0 -5
- package/dist/ionic/p-ca5219df.entry.js +0 -4
- package/dist/ionic/p-cc196b34.js +0 -4
- package/dist/ionic/p-d1de1188.js +0 -4
- package/dist/ionic/p-d2597b3e.system.js +0 -5
- package/dist/ionic/p-d3952bd5.system.entry.js +0 -4
- package/dist/ionic/p-dfa756ed.system.js +0 -4
- package/dist/ionic/p-e6b240a0.js +0 -4
- package/dist/ionic/p-e8400078.system.entry.js +0 -4
- package/dist/ionic/p-ed636a74.entry.js +0 -4
- package/dist/ionic/p-f8e620f1.entry.js +0 -4
- package/dist/ionic/p-ff5a10f9.system.js +0 -4
- /package/dist/esm-es5/{config-96c9ace3.js → config-49c88215.js} +0 -0
- /package/dist/esm-es5/{cubic-bezier-66542bc5.js → cubic-bezier-fe2083dc.js} +0 -0
- /package/dist/esm-es5/{dir-912e3e13.js → dir-babeabeb.js} +0 -0
- /package/dist/esm-es5/{focus-visible-85493433.js → focus-visible-dd40d69f.js} +0 -0
- /package/dist/esm-es5/{gesture-controller-0fa396c4.js → gesture-controller-1bf57181.js} +0 -0
- /package/dist/esm-es5/{hardware-back-button-39299f84.js → hardware-back-button-b2bc76db.js} +0 -0
- /package/dist/esm-es5/{helpers-3379ba19.js → helpers-ae653409.js} +0 -0
- /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/{spinner-configs-d09fbbbb.js → spinner-configs-964f7cf3.js} +0 -0
- /package/dist/esm-es5/{theme-17531cdf.js → theme-01f3f29c.js} +0 -0
- /package/dist/esm-es5/{watch-options-02d8498b.js → watch-options-c2911ace.js} +0 -0
- /package/dist/ionic/{p-5aac9314.system.js → p-012c3ceb.system.js} +0 -0
- /package/dist/ionic/{p-1b8e1d03.js → p-06fee233.js} +0 -0
- /package/dist/ionic/{p-819ff3b9.system.js → p-08e01816.system.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-815c2fba.system.js → p-32ad210f.system.js} +0 -0
- /package/dist/ionic/{p-7b021525.js → p-41d5544e.js} +0 -0
- /package/dist/ionic/{p-f10de93b.js → p-459d13d5.js} +0 -0
- /package/dist/ionic/{p-44bc8b45.system.js → p-4609d030.system.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-772f6c84.system.js → p-4f255d5a.system.js} +0 -0
- /package/dist/ionic/{p-8c15eda7.system.js → p-790220fd.system.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-87411e39.system.js → p-c468af8a.system.js} +0 -0
- /package/dist/ionic/{p-9e852ff1.system.js → p-c7c8429a.system.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-56dc022e.system.js → p-d8d84afa.system.js} +0 -0
- /package/dist/ionic/{p-c4f2dce7.system.js → p-e673a0a2.system.js} +0 -0
- /package/dist/ionic/{p-c18d6eac.js → p-f0c2a614.js} +0 -0
- /package/dist/ionic/{p-2b89ea1b.system.js → p-f233f1e0.system.js} +0 -0
- /package/dist/ionic/{p-6dbfe5d4.js → p-fb813dab.js} +0 -0
- /package/dist/ionic/{p-479cdbf8.system.js → p-ff4b7e40.system.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
|
-
* 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;
|
|
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);
|
|
357
337
|
/**
|
|
358
|
-
*
|
|
359
|
-
* string, so we just default to the current year
|
|
360
|
-
* in this case.
|
|
338
|
+
* If min was not a valid date then return undefined.
|
|
361
339
|
*/
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
340
|
+
if (result === undefined) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
const { month, day, year, hour, minute } = result;
|
|
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,
|
|
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,108 +642,158 @@ 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
|
|
717
717
|
* that also meets the constraints of
|
|
718
718
|
* the *Values params.
|
|
719
|
-
* @param refParts The reference date
|
|
720
|
-
* @param monthValues The allowed month values
|
|
721
|
-
* @param dayValues The allowed day (of the month) values
|
|
722
|
-
* @param yearValues The allowed year values
|
|
723
|
-
* @param hourValues The allowed hour values
|
|
724
|
-
* @param minuteValues The allowed minute values
|
|
725
719
|
*/
|
|
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
|
-
|
|
720
|
+
const getClosestValidDate = ({ refParts, monthValues, dayValues, yearValues, hourValues, minuteValues, minParts, maxParts, }) => {
|
|
721
|
+
const { hour, minute, day, month, year } = refParts;
|
|
722
|
+
const copyParts = Object.assign(Object.assign({}, refParts), { dayOfWeek: undefined });
|
|
723
|
+
if (yearValues !== undefined) {
|
|
724
|
+
// Filters out years that are out of the min/max bounds
|
|
725
|
+
const filteredYears = yearValues.filter((year) => {
|
|
726
|
+
if (minParts !== undefined && year < minParts.year) {
|
|
727
|
+
return false;
|
|
728
|
+
}
|
|
729
|
+
if (maxParts !== undefined && year > maxParts.year) {
|
|
730
|
+
return false;
|
|
731
|
+
}
|
|
732
|
+
return true;
|
|
733
|
+
});
|
|
734
|
+
copyParts.year = findClosestValue(year, filteredYears);
|
|
735
|
+
}
|
|
736
|
+
if (monthValues !== undefined) {
|
|
737
|
+
// Filters out months that are out of the min/max bounds
|
|
738
|
+
const filteredMonths = monthValues.filter((month) => {
|
|
739
|
+
if (minParts !== undefined && copyParts.year === minParts.year && month < minParts.month) {
|
|
740
|
+
return false;
|
|
741
|
+
}
|
|
742
|
+
if (maxParts !== undefined && copyParts.year === maxParts.year && month > maxParts.month) {
|
|
743
|
+
return false;
|
|
744
|
+
}
|
|
745
|
+
return true;
|
|
746
|
+
});
|
|
747
|
+
copyParts.month = findClosestValue(month, filteredMonths);
|
|
748
|
+
}
|
|
749
|
+
// Day is nullable but cannot be undefined
|
|
750
|
+
if (day !== null && dayValues !== undefined) {
|
|
751
|
+
// Filters out days that are out of the min/max bounds
|
|
752
|
+
const filteredDays = dayValues.filter((day) => {
|
|
753
|
+
if (minParts !== undefined && isBefore(Object.assign(Object.assign({}, copyParts), { day }), minParts)) {
|
|
754
|
+
return false;
|
|
755
|
+
}
|
|
756
|
+
if (maxParts !== undefined && isAfter(Object.assign(Object.assign({}, copyParts), { day }), maxParts)) {
|
|
757
|
+
return false;
|
|
758
|
+
}
|
|
759
|
+
return true;
|
|
760
|
+
});
|
|
761
|
+
copyParts.day = findClosestValue(day, filteredDays);
|
|
762
|
+
}
|
|
763
|
+
if (hour !== undefined && hourValues !== undefined) {
|
|
764
|
+
// Filters out hours that are out of the min/max bounds
|
|
765
|
+
const filteredHours = hourValues.filter((hour) => {
|
|
766
|
+
if ((minParts === null || minParts === void 0 ? void 0 : minParts.hour) !== undefined && isSameDay(copyParts, minParts) && hour < minParts.hour) {
|
|
767
|
+
return false;
|
|
768
|
+
}
|
|
769
|
+
if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.hour) !== undefined && isSameDay(copyParts, maxParts) && hour > maxParts.hour) {
|
|
770
|
+
return false;
|
|
771
|
+
}
|
|
772
|
+
return true;
|
|
773
|
+
});
|
|
774
|
+
copyParts.hour = findClosestValue(hour, filteredHours);
|
|
775
|
+
copyParts.ampm = parseAmPm(copyParts.hour);
|
|
776
|
+
}
|
|
777
|
+
if (minute !== undefined && minuteValues !== undefined) {
|
|
778
|
+
// Filters out minutes that are out of the min/max bounds
|
|
779
|
+
const filteredMinutes = minuteValues.filter((minute) => {
|
|
780
|
+
if ((minParts === null || minParts === void 0 ? void 0 : minParts.minute) !== undefined &&
|
|
781
|
+
isSameDay(copyParts, minParts) &&
|
|
782
|
+
copyParts.hour === minParts.hour &&
|
|
783
|
+
minute < minParts.minute) {
|
|
784
|
+
return false;
|
|
785
|
+
}
|
|
786
|
+
if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.minute) !== undefined &&
|
|
787
|
+
isSameDay(copyParts, maxParts) &&
|
|
788
|
+
copyParts.hour === maxParts.hour &&
|
|
789
|
+
minute > maxParts.minute) {
|
|
790
|
+
return false;
|
|
791
|
+
}
|
|
792
|
+
return true;
|
|
793
|
+
});
|
|
794
|
+
copyParts.minute = findClosestValue(minute, filteredMinutes);
|
|
795
|
+
}
|
|
796
|
+
return copyParts;
|
|
747
797
|
};
|
|
748
798
|
/**
|
|
749
799
|
* Finds the value in "values" that is
|
|
@@ -756,85 +806,85 @@ const getClosestValidDate = (refParts, monthValues, dayValues, yearValues, hourV
|
|
|
756
806
|
* searched to find the closest value to "reference"
|
|
757
807
|
*/
|
|
758
808
|
const findClosestValue = (reference, values) => {
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
809
|
+
let closestValue = values[0];
|
|
810
|
+
let rank = Math.abs(closestValue - reference);
|
|
811
|
+
for (let i = 1; i < values.length; i++) {
|
|
812
|
+
const value = values[i];
|
|
813
|
+
/**
|
|
814
|
+
* This code prioritizes the first
|
|
815
|
+
* closest result. Given two values
|
|
816
|
+
* with the same distance from reference,
|
|
817
|
+
* this code will prioritize the smaller of
|
|
818
|
+
* the two values.
|
|
819
|
+
*/
|
|
820
|
+
const valueRank = Math.abs(value - reference);
|
|
821
|
+
if (valueRank < rank) {
|
|
822
|
+
closestValue = value;
|
|
823
|
+
rank = valueRank;
|
|
824
|
+
}
|
|
774
825
|
}
|
|
775
|
-
|
|
776
|
-
return closestValue;
|
|
826
|
+
return closestValue;
|
|
777
827
|
};
|
|
778
828
|
|
|
779
829
|
const getFormattedDayPeriod = (dayPeriod) => {
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
830
|
+
if (dayPeriod === undefined) {
|
|
831
|
+
return '';
|
|
832
|
+
}
|
|
833
|
+
return dayPeriod.toUpperCase();
|
|
784
834
|
};
|
|
785
835
|
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
|
-
|
|
836
|
+
const timeParts = {
|
|
837
|
+
hour: refParts.hour,
|
|
838
|
+
minute: refParts.minute,
|
|
839
|
+
};
|
|
840
|
+
if (timeParts.hour === undefined || timeParts.minute === undefined) {
|
|
841
|
+
return 'Invalid Time';
|
|
842
|
+
}
|
|
843
|
+
return new Intl.DateTimeFormat(locale, {
|
|
844
|
+
hour: 'numeric',
|
|
845
|
+
minute: 'numeric',
|
|
846
|
+
/**
|
|
847
|
+
* Setting the timeZone to UTC prevents
|
|
848
|
+
* new Intl.DatetimeFormat from subtracting
|
|
849
|
+
* the user's current timezone offset
|
|
850
|
+
* when formatting the time.
|
|
851
|
+
*/
|
|
852
|
+
timeZone: 'UTC',
|
|
853
|
+
/**
|
|
854
|
+
* We use hourCycle here instead of hour12 due to:
|
|
855
|
+
* https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
|
|
856
|
+
*/
|
|
857
|
+
hourCycle,
|
|
858
|
+
/**
|
|
859
|
+
* Setting Z at the end indicates that this
|
|
860
|
+
* date string is in the UTC time zone. This
|
|
861
|
+
* prevents new Date from adding the time zone
|
|
862
|
+
* offset when getting the ISO string.
|
|
863
|
+
*/
|
|
864
|
+
}).format(new Date(convertDataToISO(Object.assign({
|
|
865
|
+
/**
|
|
866
|
+
* JS uses a simplified ISO 8601 format which allows for
|
|
867
|
+
* date-only formats and date-time formats, but not
|
|
868
|
+
* time-only formats: https://tc39.es/ecma262/#sec-date-time-string-format
|
|
869
|
+
* As a result, developers who only pass a time will get
|
|
870
|
+
* an "Invalid Date" error. To account for this, we make sure that
|
|
871
|
+
* year/day/month values are set when passing to new Date().
|
|
872
|
+
* The Intl.DateTimeFormat call above only uses the hour/minute
|
|
873
|
+
* values, so passing these date values should have no impact
|
|
874
|
+
* on the time output.
|
|
875
|
+
*/
|
|
876
|
+
year: 2023, day: 1, month: 1 }, timeParts)) + 'Z'));
|
|
827
877
|
};
|
|
828
878
|
/**
|
|
829
879
|
* Adds padding to a time value so
|
|
830
880
|
* that it is always 2 digits.
|
|
831
881
|
*/
|
|
832
882
|
const addTimePadding = (value) => {
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
883
|
+
const valueToString = value.toString();
|
|
884
|
+
if (valueToString.length > 1) {
|
|
885
|
+
return valueToString;
|
|
886
|
+
}
|
|
887
|
+
return `0${valueToString}`;
|
|
838
888
|
};
|
|
839
889
|
/**
|
|
840
890
|
* Formats 24 hour times so that
|
|
@@ -843,34 +893,34 @@ const addTimePadding = (value) => {
|
|
|
843
893
|
* hour 0 is formatted as '12'.
|
|
844
894
|
*/
|
|
845
895
|
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
|
-
|
|
896
|
+
/**
|
|
897
|
+
* Midnight for h11 starts at 0:00am
|
|
898
|
+
* Midnight for h12 starts at 12:00am
|
|
899
|
+
* Midnight for h23 starts at 00:00
|
|
900
|
+
* Midnight for h24 starts at 24:00
|
|
901
|
+
*/
|
|
902
|
+
if (hour === 0) {
|
|
903
|
+
switch (hourCycle) {
|
|
904
|
+
case 'h11':
|
|
905
|
+
return '0';
|
|
906
|
+
case 'h12':
|
|
907
|
+
return '12';
|
|
908
|
+
case 'h23':
|
|
909
|
+
return '00';
|
|
910
|
+
case 'h24':
|
|
911
|
+
return '24';
|
|
912
|
+
default:
|
|
913
|
+
throw new Error(`Invalid hour cycle "${hourCycle}"`);
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
const use24Hour = is24Hour(hourCycle);
|
|
917
|
+
/**
|
|
918
|
+
* h23 and h24 use 24 hour times.
|
|
919
|
+
*/
|
|
920
|
+
if (use24Hour) {
|
|
921
|
+
return addTimePadding(hour);
|
|
922
|
+
}
|
|
923
|
+
return hour.toString();
|
|
874
924
|
};
|
|
875
925
|
/**
|
|
876
926
|
* Generates an aria-label to be read by screen readers
|
|
@@ -878,32 +928,32 @@ const getFormattedHour = (hour, hourCycle) => {
|
|
|
878
928
|
* today's date.
|
|
879
929
|
*/
|
|
880
930
|
const generateDayAriaLabel = (locale, today, refParts) => {
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
931
|
+
if (refParts.day === null) {
|
|
932
|
+
return null;
|
|
933
|
+
}
|
|
934
|
+
/**
|
|
935
|
+
* MM/DD/YYYY will return midnight in the user's timezone.
|
|
936
|
+
*/
|
|
937
|
+
const date = getNormalizedDate(refParts);
|
|
938
|
+
const labelString = new Intl.DateTimeFormat(locale, {
|
|
939
|
+
weekday: 'long',
|
|
940
|
+
month: 'long',
|
|
941
|
+
day: 'numeric',
|
|
942
|
+
timeZone: 'UTC',
|
|
943
|
+
}).format(date);
|
|
944
|
+
/**
|
|
945
|
+
* If date is today, prepend "Today" so screen readers indicate
|
|
946
|
+
* that the date is today.
|
|
947
|
+
*/
|
|
948
|
+
return today ? `Today, ${labelString}` : labelString;
|
|
899
949
|
};
|
|
900
950
|
/**
|
|
901
951
|
* Gets the day of the week, month, and day
|
|
902
952
|
* Used for the header in MD mode.
|
|
903
953
|
*/
|
|
904
954
|
const getMonthAndDay = (locale, refParts) => {
|
|
905
|
-
|
|
906
|
-
|
|
955
|
+
const date = getNormalizedDate(refParts);
|
|
956
|
+
return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format(date);
|
|
907
957
|
};
|
|
908
958
|
/**
|
|
909
959
|
* Given a locale and a date object,
|
|
@@ -912,8 +962,8 @@ const getMonthAndDay = (locale, refParts) => {
|
|
|
912
962
|
* Example: May 2021
|
|
913
963
|
*/
|
|
914
964
|
const getMonthAndYear = (locale, refParts) => {
|
|
915
|
-
|
|
916
|
-
|
|
965
|
+
const date = getNormalizedDate(refParts);
|
|
966
|
+
return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(date);
|
|
917
967
|
};
|
|
918
968
|
/**
|
|
919
969
|
* Given a locale and a date object,
|
|
@@ -922,7 +972,7 @@ const getMonthAndYear = (locale, refParts) => {
|
|
|
922
972
|
* Example: Apr 22, 2021
|
|
923
973
|
*/
|
|
924
974
|
const getMonthDayAndYear = (locale, refParts) => {
|
|
925
|
-
|
|
975
|
+
return getLocalizedDateTime(locale, refParts, { month: 'short', day: 'numeric', year: 'numeric' });
|
|
926
976
|
};
|
|
927
977
|
/**
|
|
928
978
|
* Given a locale and a date object,
|
|
@@ -933,7 +983,7 @@ const getMonthDayAndYear = (locale, refParts) => {
|
|
|
933
983
|
* Example: 29
|
|
934
984
|
*/
|
|
935
985
|
const getDay = (locale, refParts) => {
|
|
936
|
-
|
|
986
|
+
return getLocalizedDateTimeParts(locale, refParts, { day: 'numeric' }).find((obj) => obj.type === 'day').value;
|
|
937
987
|
};
|
|
938
988
|
/**
|
|
939
989
|
* Given a locale and a date object,
|
|
@@ -942,26 +992,26 @@ const getDay = (locale, refParts) => {
|
|
|
942
992
|
* Example: 2022
|
|
943
993
|
*/
|
|
944
994
|
const getYear = (locale, refParts) => {
|
|
945
|
-
|
|
995
|
+
return getLocalizedDateTime(locale, refParts, { year: 'numeric' });
|
|
946
996
|
};
|
|
947
997
|
/**
|
|
948
998
|
* Given reference parts, return a JS Date object
|
|
949
999
|
* with a normalized time.
|
|
950
1000
|
*/
|
|
951
1001
|
const getNormalizedDate = (refParts) => {
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
1002
|
+
var _a, _b, _c;
|
|
1003
|
+
const timeString = refParts.hour !== undefined && refParts.minute !== undefined ? ` ${refParts.hour}:${refParts.minute}` : '';
|
|
1004
|
+
/**
|
|
1005
|
+
* We use / notation here for the date
|
|
1006
|
+
* so we do not need to do extra work and pad values with zeroes.
|
|
1007
|
+
* Values such as YYYY-MM are still valid, so
|
|
1008
|
+
* we add fallback values so we still get
|
|
1009
|
+
* a valid date otherwise we will pass in a string
|
|
1010
|
+
* like "//2023". Some browsers, such as Chrome, will
|
|
1011
|
+
* account for this and still return a valid date. However,
|
|
1012
|
+
* this is not a consistent behavior across all browsers.
|
|
1013
|
+
*/
|
|
1014
|
+
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
1015
|
};
|
|
966
1016
|
/**
|
|
967
1017
|
* Given a locale, DatetimeParts, and options
|
|
@@ -972,8 +1022,8 @@ const getNormalizedDate = (refParts) => {
|
|
|
972
1022
|
* getLocalizedDateTimeParts.
|
|
973
1023
|
*/
|
|
974
1024
|
const getLocalizedDateTime = (locale, refParts, options) => {
|
|
975
|
-
|
|
976
|
-
|
|
1025
|
+
const date = getNormalizedDate(refParts);
|
|
1026
|
+
return getDateTimeFormat(locale, options).format(date);
|
|
977
1027
|
};
|
|
978
1028
|
/**
|
|
979
1029
|
* Given a locale, DatetimeParts, and options
|
|
@@ -982,8 +1032,8 @@ const getLocalizedDateTime = (locale, refParts, options) => {
|
|
|
982
1032
|
* each piece of the date.
|
|
983
1033
|
*/
|
|
984
1034
|
const getLocalizedDateTimeParts = (locale, refParts, options) => {
|
|
985
|
-
|
|
986
|
-
|
|
1035
|
+
const date = getNormalizedDate(refParts);
|
|
1036
|
+
return getDateTimeFormat(locale, options).formatToParts(date);
|
|
987
1037
|
};
|
|
988
1038
|
/**
|
|
989
1039
|
* Wrapper function for Intl.DateTimeFormat.
|
|
@@ -992,7 +1042,7 @@ const getLocalizedDateTimeParts = (locale, refParts, options) => {
|
|
|
992
1042
|
* with Intl.DateTimeFormat.
|
|
993
1043
|
*/
|
|
994
1044
|
const getDateTimeFormat = (locale, options) => {
|
|
995
|
-
|
|
1045
|
+
return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, options), { timeZone: 'UTC' }));
|
|
996
1046
|
};
|
|
997
1047
|
/**
|
|
998
1048
|
* Gets a localized version of "Today"
|
|
@@ -1000,13 +1050,13 @@ const getDateTimeFormat = (locale, options) => {
|
|
|
1000
1050
|
* browsers that do not support RelativeTimeFormat.
|
|
1001
1051
|
*/
|
|
1002
1052
|
const getTodayLabel = (locale) => {
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1053
|
+
if ('RelativeTimeFormat' in Intl) {
|
|
1054
|
+
const label = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(0, 'day');
|
|
1055
|
+
return label.charAt(0).toUpperCase() + label.slice(1);
|
|
1056
|
+
}
|
|
1057
|
+
else {
|
|
1058
|
+
return 'Today';
|
|
1059
|
+
}
|
|
1010
1060
|
};
|
|
1011
1061
|
/**
|
|
1012
1062
|
* When calling toISOString(), the browser
|
|
@@ -1038,9 +1088,9 @@ const getTodayLabel = (locale) => {
|
|
|
1038
1088
|
* https://www.timeanddate.com/time/time-zones-interesting.html
|
|
1039
1089
|
*/
|
|
1040
1090
|
const removeDateTzOffset = (date) => {
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1091
|
+
const tzOffset = date.getTimezoneOffset();
|
|
1092
|
+
date.setMinutes(date.getMinutes() - tzOffset);
|
|
1093
|
+
return date;
|
|
1044
1094
|
};
|
|
1045
1095
|
const DATE_AM = removeDateTzOffset(new Date('2022T01:00'));
|
|
1046
1096
|
const DATE_PM = removeDateTzOffset(new Date('2022T13:00'));
|
|
@@ -1053,17 +1103,17 @@ const DATE_PM = removeDateTzOffset(new Date('2022T13:00'));
|
|
|
1053
1103
|
* @returns The localized day period (am/pm) representation of the given value.
|
|
1054
1104
|
*/
|
|
1055
1105
|
const getLocalizedDayPeriod = (locale, dayPeriod) => {
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1106
|
+
const date = dayPeriod === 'am' ? DATE_AM : DATE_PM;
|
|
1107
|
+
const localizedDayPeriod = new Intl.DateTimeFormat(locale, {
|
|
1108
|
+
hour: 'numeric',
|
|
1109
|
+
timeZone: 'UTC',
|
|
1110
|
+
})
|
|
1111
|
+
.formatToParts(date)
|
|
1112
|
+
.find((part) => part.type === 'dayPeriod');
|
|
1113
|
+
if (localizedDayPeriod) {
|
|
1114
|
+
return localizedDayPeriod.value;
|
|
1115
|
+
}
|
|
1116
|
+
return getFormattedDayPeriod(dayPeriod);
|
|
1067
1117
|
};
|
|
1068
1118
|
/**
|
|
1069
1119
|
* Formats the datetime's value to a string, for use in the native input.
|
|
@@ -1071,7 +1121,7 @@ const getLocalizedDayPeriod = (locale, dayPeriod) => {
|
|
|
1071
1121
|
* @param value The value to format, either an ISO string or an array thereof.
|
|
1072
1122
|
*/
|
|
1073
1123
|
const formatValue = (value) => {
|
|
1074
|
-
|
|
1124
|
+
return Array.isArray(value) ? value.join(',') : value;
|
|
1075
1125
|
};
|
|
1076
1126
|
|
|
1077
1127
|
/**
|
|
@@ -1080,28 +1130,28 @@ const formatValue = (value) => {
|
|
|
1080
1130
|
* time zone.
|
|
1081
1131
|
*/
|
|
1082
1132
|
const getToday = () => {
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1133
|
+
/**
|
|
1134
|
+
* ion-datetime intentionally does not
|
|
1135
|
+
* parse time zones/do automatic time zone
|
|
1136
|
+
* conversion when accepting user input.
|
|
1137
|
+
* However when we get today's date string,
|
|
1138
|
+
* we want it formatted relative to the user's
|
|
1139
|
+
* time zone.
|
|
1140
|
+
*
|
|
1141
|
+
* When calling toISOString(), the browser
|
|
1142
|
+
* will convert the date to UTC time by either adding
|
|
1143
|
+
* or subtracting the time zone offset.
|
|
1144
|
+
* To work around this, we need to either add
|
|
1145
|
+
* or subtract the time zone offset to the Date
|
|
1146
|
+
* object prior to calling toISOString().
|
|
1147
|
+
* This allows us to get an ISO string
|
|
1148
|
+
* that is in the user's time zone.
|
|
1149
|
+
*/
|
|
1150
|
+
return removeDateTzOffset(new Date()).toISOString();
|
|
1101
1151
|
};
|
|
1102
1152
|
const minutes = [
|
|
1103
|
-
|
|
1104
|
-
|
|
1153
|
+
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,
|
|
1154
|
+
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
1155
|
];
|
|
1106
1156
|
// h11 hour system uses 0-11. Midnight starts at 0:00am.
|
|
1107
1157
|
const hour11 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
@@ -1120,25 +1170,25 @@ const hour24 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1
|
|
|
1120
1170
|
* or "T".
|
|
1121
1171
|
*/
|
|
1122
1172
|
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
|
-
|
|
1173
|
+
/**
|
|
1174
|
+
* Nov 1st, 2020 starts on a Sunday.
|
|
1175
|
+
* ion-datetime assumes weeks start on Sunday,
|
|
1176
|
+
* but is configurable via `firstDayOfWeek`.
|
|
1177
|
+
*/
|
|
1178
|
+
const weekdayFormat = mode === 'ios' ? 'short' : 'narrow';
|
|
1179
|
+
const intl = new Intl.DateTimeFormat(locale, { weekday: weekdayFormat });
|
|
1180
|
+
const startDate = new Date('11/01/2020');
|
|
1181
|
+
const daysOfWeek = [];
|
|
1182
|
+
/**
|
|
1183
|
+
* For each day of the week,
|
|
1184
|
+
* get the day name.
|
|
1185
|
+
*/
|
|
1186
|
+
for (let i = firstDayOfWeek; i < firstDayOfWeek + 7; i++) {
|
|
1187
|
+
const currentDate = new Date(startDate);
|
|
1188
|
+
currentDate.setDate(currentDate.getDate() + i);
|
|
1189
|
+
daysOfWeek.push(intl.format(currentDate));
|
|
1190
|
+
}
|
|
1191
|
+
return daysOfWeek;
|
|
1142
1192
|
};
|
|
1143
1193
|
/**
|
|
1144
1194
|
* Returns an array containing all of the
|
|
@@ -1148,54 +1198,54 @@ const getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {
|
|
|
1148
1198
|
* using null values.
|
|
1149
1199
|
*/
|
|
1150
1200
|
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
|
-
|
|
1201
|
+
const numDays = getNumDaysInMonth(month, year);
|
|
1202
|
+
const firstOfMonth = new Date(`${month}/1/${year}`).getDay();
|
|
1203
|
+
/**
|
|
1204
|
+
* To get the first day of the month aligned on the correct
|
|
1205
|
+
* day of the week, we need to determine how many "filler" days
|
|
1206
|
+
* to generate. These filler days as empty/disabled buttons
|
|
1207
|
+
* that fill the space of the days of the week before the first
|
|
1208
|
+
* of the month.
|
|
1209
|
+
*
|
|
1210
|
+
* There are two cases here:
|
|
1211
|
+
*
|
|
1212
|
+
* 1. If firstOfMonth = 4, firstDayOfWeek = 0 then the offset
|
|
1213
|
+
* is (4 - (0 + 1)) = 3. Since the offset loop goes from 0 to 3 inclusive,
|
|
1214
|
+
* this will generate 4 filler days (0, 1, 2, 3), and then day of week 4 will have
|
|
1215
|
+
* the first day of the month.
|
|
1216
|
+
*
|
|
1217
|
+
* 2. If firstOfMonth = 2, firstDayOfWeek = 4 then the offset
|
|
1218
|
+
* is (6 - (4 - 2)) = 4. Since the offset loop goes from 0 to 4 inclusive,
|
|
1219
|
+
* this will generate 5 filler days (0, 1, 2, 3, 4), and then day of week 5 will have
|
|
1220
|
+
* the first day of the month.
|
|
1221
|
+
*/
|
|
1222
|
+
const offset = firstOfMonth >= firstDayOfWeek ? firstOfMonth - (firstDayOfWeek + 1) : 6 - (firstDayOfWeek - firstOfMonth);
|
|
1223
|
+
let days = [];
|
|
1224
|
+
for (let i = 1; i <= numDays; i++) {
|
|
1225
|
+
days.push({ day: i, dayOfWeek: (offset + i) % 7 });
|
|
1226
|
+
}
|
|
1227
|
+
for (let i = 0; i <= offset; i++) {
|
|
1228
|
+
days = [{ day: null, dayOfWeek: null }, ...days];
|
|
1229
|
+
}
|
|
1230
|
+
return days;
|
|
1181
1231
|
};
|
|
1182
1232
|
/**
|
|
1183
1233
|
* Returns an array of pre-defined hour
|
|
1184
1234
|
* values based on the provided hourCycle.
|
|
1185
1235
|
*/
|
|
1186
1236
|
const getHourData = (hourCycle) => {
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1237
|
+
switch (hourCycle) {
|
|
1238
|
+
case 'h11':
|
|
1239
|
+
return hour11;
|
|
1240
|
+
case 'h12':
|
|
1241
|
+
return hour12;
|
|
1242
|
+
case 'h23':
|
|
1243
|
+
return hour23;
|
|
1244
|
+
case 'h24':
|
|
1245
|
+
return hour24;
|
|
1246
|
+
default:
|
|
1247
|
+
throw new Error(`Invalid hour cycle "${hourCycle}"`);
|
|
1248
|
+
}
|
|
1199
1249
|
};
|
|
1200
1250
|
/**
|
|
1201
1251
|
* Given a local, reference datetime parts and option
|
|
@@ -1203,185 +1253,185 @@ const getHourData = (hourCycle) => {
|
|
|
1203
1253
|
* hour and minute values according to the bounds and locale.
|
|
1204
1254
|
*/
|
|
1205
1255
|
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) {
|
|
1256
|
+
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
1257
|
+
const use24Hour = is24Hour(computedHourCycle);
|
|
1258
|
+
let processedHours = getHourData(computedHourCycle);
|
|
1259
|
+
let processedMinutes = minutes;
|
|
1260
|
+
let isAMAllowed = true;
|
|
1261
|
+
let isPMAllowed = true;
|
|
1262
|
+
if (hourValues) {
|
|
1263
|
+
processedHours = processedHours.filter((hour) => hourValues.includes(hour));
|
|
1264
|
+
}
|
|
1265
|
+
if (minuteValues) {
|
|
1266
|
+
processedMinutes = processedMinutes.filter((minute) => minuteValues.includes(minute));
|
|
1267
|
+
}
|
|
1268
|
+
if (minParts) {
|
|
1238
1269
|
/**
|
|
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.
|
|
1270
|
+
* If ref day is the same as the
|
|
1271
|
+
* minimum allowed day, filter hour/minute
|
|
1272
|
+
* values according to min hour and minute.
|
|
1244
1273
|
*/
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1274
|
+
if (isSameDay(refParts, minParts)) {
|
|
1275
|
+
/**
|
|
1276
|
+
* Users may not always set the hour/minute for
|
|
1277
|
+
* min value (i.e. 2021-06-02) so we should allow
|
|
1278
|
+
* all hours/minutes in that case.
|
|
1279
|
+
*/
|
|
1280
|
+
if (minParts.hour !== undefined) {
|
|
1281
|
+
processedHours = processedHours.filter((hour) => {
|
|
1282
|
+
const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;
|
|
1283
|
+
return (use24Hour ? hour : convertedHour) >= minParts.hour;
|
|
1284
|
+
});
|
|
1285
|
+
isAMAllowed = minParts.hour < 13;
|
|
1286
|
+
}
|
|
1287
|
+
if (minParts.minute !== undefined) {
|
|
1288
|
+
/**
|
|
1289
|
+
* The minimum minute range should not be enforced when
|
|
1290
|
+
* the hour is greater than the min hour.
|
|
1291
|
+
*
|
|
1292
|
+
* For example with a minimum range of 09:30, users
|
|
1293
|
+
* should be able to select 10:00-10:29 and beyond.
|
|
1294
|
+
*/
|
|
1295
|
+
let isPastMinHour = false;
|
|
1296
|
+
if (minParts.hour !== undefined && refParts.hour !== undefined) {
|
|
1297
|
+
if (refParts.hour > minParts.hour) {
|
|
1298
|
+
isPastMinHour = true;
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
processedMinutes = processedMinutes.filter((minute) => {
|
|
1302
|
+
if (isPastMinHour) {
|
|
1303
|
+
return true;
|
|
1304
|
+
}
|
|
1305
|
+
return minute >= minParts.minute;
|
|
1306
|
+
});
|
|
1307
|
+
}
|
|
1308
|
+
/**
|
|
1309
|
+
* If ref day is before minimum
|
|
1310
|
+
* day do not render any hours/minute values
|
|
1311
|
+
*/
|
|
1250
1312
|
}
|
|
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
|
-
};
|
|
1313
|
+
else if (isBefore(refParts, minParts)) {
|
|
1314
|
+
processedHours = [];
|
|
1315
|
+
processedMinutes = [];
|
|
1316
|
+
isAMAllowed = isPMAllowed = false;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
if (maxParts) {
|
|
1320
|
+
/**
|
|
1321
|
+
* If ref day is the same as the
|
|
1322
|
+
* maximum allowed day, filter hour/minute
|
|
1323
|
+
* values according to max hour and minute.
|
|
1324
|
+
*/
|
|
1325
|
+
if (isSameDay(refParts, maxParts)) {
|
|
1326
|
+
/**
|
|
1327
|
+
* Users may not always set the hour/minute for
|
|
1328
|
+
* max value (i.e. 2021-06-02) so we should allow
|
|
1329
|
+
* all hours/minutes in that case.
|
|
1330
|
+
*/
|
|
1331
|
+
if (maxParts.hour !== undefined) {
|
|
1332
|
+
processedHours = processedHours.filter((hour) => {
|
|
1333
|
+
const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;
|
|
1334
|
+
return (use24Hour ? hour : convertedHour) <= maxParts.hour;
|
|
1335
|
+
});
|
|
1336
|
+
isPMAllowed = maxParts.hour >= 12;
|
|
1337
|
+
}
|
|
1338
|
+
if (maxParts.minute !== undefined && refParts.hour === maxParts.hour) {
|
|
1339
|
+
// The available minutes should only be filtered when the hour is the same as the max hour.
|
|
1340
|
+
// For example if the max hour is 10:30 and the current hour is 10:00,
|
|
1341
|
+
// users should be able to select 00-30 minutes.
|
|
1342
|
+
// If the current hour is 09:00, users should be able to select 00-60 minutes.
|
|
1343
|
+
processedMinutes = processedMinutes.filter((minute) => minute <= maxParts.minute);
|
|
1344
|
+
}
|
|
1345
|
+
/**
|
|
1346
|
+
* If ref day is after minimum
|
|
1347
|
+
* day do not render any hours/minute values
|
|
1348
|
+
*/
|
|
1349
|
+
}
|
|
1350
|
+
else if (isAfter(refParts, maxParts)) {
|
|
1351
|
+
processedHours = [];
|
|
1352
|
+
processedMinutes = [];
|
|
1353
|
+
isAMAllowed = isPMAllowed = false;
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
return {
|
|
1357
|
+
hours: processedHours,
|
|
1358
|
+
minutes: processedMinutes,
|
|
1359
|
+
am: isAMAllowed,
|
|
1360
|
+
pm: isPMAllowed,
|
|
1361
|
+
};
|
|
1312
1362
|
};
|
|
1313
1363
|
/**
|
|
1314
1364
|
* Given DatetimeParts, generate the previous,
|
|
1315
1365
|
* current, and and next months.
|
|
1316
1366
|
*/
|
|
1317
1367
|
const generateMonths = (refParts, forcedDate) => {
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1368
|
+
const current = { month: refParts.month, year: refParts.year, day: refParts.day };
|
|
1369
|
+
/**
|
|
1370
|
+
* If we're forcing a month to appear, and it's different from the current month,
|
|
1371
|
+
* ensure it appears by replacing the next or previous month as appropriate.
|
|
1372
|
+
*/
|
|
1373
|
+
if (forcedDate !== undefined && (refParts.month !== forcedDate.month || refParts.year !== forcedDate.year)) {
|
|
1374
|
+
const forced = { month: forcedDate.month, year: forcedDate.year, day: forcedDate.day };
|
|
1375
|
+
const forcedMonthIsBefore = isBefore(forced, current);
|
|
1376
|
+
return forcedMonthIsBefore
|
|
1377
|
+
? [forced, current, getNextMonth(refParts)]
|
|
1378
|
+
: [getPreviousMonth(refParts), current, forced];
|
|
1379
|
+
}
|
|
1380
|
+
return [getPreviousMonth(refParts), current, getNextMonth(refParts)];
|
|
1331
1381
|
};
|
|
1332
1382
|
const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, formatOptions = {
|
|
1333
|
-
|
|
1383
|
+
month: 'long',
|
|
1334
1384
|
}) => {
|
|
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
|
-
|
|
1385
|
+
const { year } = refParts;
|
|
1386
|
+
const months = [];
|
|
1387
|
+
if (monthValues !== undefined) {
|
|
1388
|
+
let processedMonths = monthValues;
|
|
1389
|
+
if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.month) !== undefined) {
|
|
1390
|
+
processedMonths = processedMonths.filter((month) => month <= maxParts.month);
|
|
1391
|
+
}
|
|
1392
|
+
if ((minParts === null || minParts === void 0 ? void 0 : minParts.month) !== undefined) {
|
|
1393
|
+
processedMonths = processedMonths.filter((month) => month >= minParts.month);
|
|
1394
|
+
}
|
|
1395
|
+
processedMonths.forEach((processedMonth) => {
|
|
1396
|
+
const date = new Date(`${processedMonth}/1/${year} GMT+0000`);
|
|
1397
|
+
const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1398
|
+
months.push({ text: monthString, value: processedMonth });
|
|
1399
|
+
});
|
|
1400
|
+
}
|
|
1401
|
+
else {
|
|
1402
|
+
const maxMonth = maxParts && maxParts.year === year ? maxParts.month : 12;
|
|
1403
|
+
const minMonth = minParts && minParts.year === year ? minParts.month : 1;
|
|
1404
|
+
for (let i = minMonth; i <= maxMonth; i++) {
|
|
1405
|
+
/**
|
|
1406
|
+
*
|
|
1407
|
+
* There is a bug on iOS 14 where
|
|
1408
|
+
* Intl.DateTimeFormat takes into account
|
|
1409
|
+
* the local timezone offset when formatting dates.
|
|
1410
|
+
*
|
|
1411
|
+
* Forcing the timezone to 'UTC' fixes the issue. However,
|
|
1412
|
+
* we should keep this workaround as it is safer. In the event
|
|
1413
|
+
* this breaks in another browser, we will not be impacted
|
|
1414
|
+
* because all dates will be interpreted in UTC.
|
|
1415
|
+
*
|
|
1416
|
+
* Example:
|
|
1417
|
+
* new Intl.DateTimeFormat('en-US', { month: 'long' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // "March"
|
|
1418
|
+
* new Intl.DateTimeFormat('en-US', { month: 'long', timeZone: 'UTC' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // "April"
|
|
1419
|
+
*
|
|
1420
|
+
* In certain timezones, iOS 14 shows the wrong
|
|
1421
|
+
* date for .toUTCString(). To combat this, we
|
|
1422
|
+
* force all of the timezones to GMT+0000 (UTC).
|
|
1423
|
+
*
|
|
1424
|
+
* Example:
|
|
1425
|
+
* Time Zone: Central European Standard Time
|
|
1426
|
+
* new Date('1/1/1992').toUTCString() // "Tue, 31 Dec 1991 23:00:00 GMT"
|
|
1427
|
+
* new Date('1/1/1992 GMT+0000').toUTCString() // "Wed, 01 Jan 1992 00:00:00 GMT"
|
|
1428
|
+
*/
|
|
1429
|
+
const date = new Date(`${i}/1/${year} GMT+0000`);
|
|
1430
|
+
const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1431
|
+
months.push({ text: monthString, value: i });
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
return months;
|
|
1385
1435
|
};
|
|
1386
1436
|
/**
|
|
1387
1437
|
* Returns information regarding
|
|
@@ -1395,65 +1445,65 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
|
|
|
1395
1445
|
* @returns Date data to be used in ion-picker-column-internal
|
|
1396
1446
|
*/
|
|
1397
1447
|
const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
1398
|
-
|
|
1448
|
+
day: 'numeric',
|
|
1399
1449
|
}) => {
|
|
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
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1450
|
+
const { month, year } = refParts;
|
|
1451
|
+
const days = [];
|
|
1452
|
+
/**
|
|
1453
|
+
* If we have max/min bounds that in the same
|
|
1454
|
+
* month/year as the refParts, we should
|
|
1455
|
+
* use the define day as the max/min day.
|
|
1456
|
+
* Otherwise, fallback to the max/min days in a month.
|
|
1457
|
+
*/
|
|
1458
|
+
const numDaysInMonth = getNumDaysInMonth(month, year);
|
|
1459
|
+
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
|
|
1460
|
+
? maxParts.day
|
|
1461
|
+
: numDaysInMonth;
|
|
1462
|
+
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
|
|
1463
|
+
? minParts.day
|
|
1464
|
+
: 1;
|
|
1465
|
+
if (dayValues !== undefined) {
|
|
1466
|
+
let processedDays = dayValues;
|
|
1467
|
+
processedDays = processedDays.filter((day) => day >= minDay && day <= maxDay);
|
|
1468
|
+
processedDays.forEach((processedDay) => {
|
|
1469
|
+
const date = new Date(`${month}/${processedDay}/${year} GMT+0000`);
|
|
1470
|
+
const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1471
|
+
days.push({ text: dayString, value: processedDay });
|
|
1472
|
+
});
|
|
1473
|
+
}
|
|
1474
|
+
else {
|
|
1475
|
+
for (let i = minDay; i <= maxDay; i++) {
|
|
1476
|
+
const date = new Date(`${month}/${i}/${year} GMT+0000`);
|
|
1477
|
+
const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), { timeZone: 'UTC' })).format(date);
|
|
1478
|
+
days.push({ text: dayString, value: i });
|
|
1479
|
+
}
|
|
1429
1480
|
}
|
|
1430
|
-
|
|
1431
|
-
return days;
|
|
1481
|
+
return days;
|
|
1432
1482
|
};
|
|
1433
1483
|
const getYearColumnData = (locale, refParts, minParts, maxParts, yearValues) => {
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1484
|
+
var _a, _b;
|
|
1485
|
+
let processedYears = [];
|
|
1486
|
+
if (yearValues !== undefined) {
|
|
1487
|
+
processedYears = yearValues;
|
|
1488
|
+
if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== undefined) {
|
|
1489
|
+
processedYears = processedYears.filter((year) => year <= maxParts.year);
|
|
1490
|
+
}
|
|
1491
|
+
if ((minParts === null || minParts === void 0 ? void 0 : minParts.year) !== undefined) {
|
|
1492
|
+
processedYears = processedYears.filter((year) => year >= minParts.year);
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
else {
|
|
1496
|
+
const { year } = refParts;
|
|
1497
|
+
const maxYear = (_a = maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== null && _a !== void 0 ? _a : year;
|
|
1498
|
+
const minYear = (_b = minParts === null || minParts === void 0 ? void 0 : minParts.year) !== null && _b !== void 0 ? _b : year - 100;
|
|
1499
|
+
for (let i = minYear; i <= maxYear; i++) {
|
|
1500
|
+
processedYears.push(i);
|
|
1501
|
+
}
|
|
1451
1502
|
}
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
}));
|
|
1503
|
+
return processedYears.map((year) => ({
|
|
1504
|
+
text: getYear(locale, { year, month: refParts.month, day: refParts.day }),
|
|
1505
|
+
value: year,
|
|
1506
|
+
}));
|
|
1457
1507
|
};
|
|
1458
1508
|
/**
|
|
1459
1509
|
* Given a starting date and an upper bound,
|
|
@@ -1461,10 +1511,10 @@ const getYearColumnData = (locale, refParts, minParts, maxParts, yearValues) =>
|
|
|
1461
1511
|
* month objects in that range.
|
|
1462
1512
|
*/
|
|
1463
1513
|
const getAllMonthsInRange = (currentParts, maxParts) => {
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1514
|
+
if (currentParts.month === maxParts.month && currentParts.year === maxParts.year) {
|
|
1515
|
+
return [currentParts];
|
|
1516
|
+
}
|
|
1517
|
+
return [currentParts, ...getAllMonthsInRange(getNextMonth(currentParts), maxParts)];
|
|
1468
1518
|
};
|
|
1469
1519
|
/**
|
|
1470
1520
|
* Creates and returns picker items
|
|
@@ -1472,104 +1522,104 @@ const getAllMonthsInRange = (currentParts, maxParts) => {
|
|
|
1472
1522
|
* Example: "Thu, Jun 2"
|
|
1473
1523
|
*/
|
|
1474
1524
|
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
|
-
|
|
1525
|
+
let items = [];
|
|
1526
|
+
let parts = [];
|
|
1527
|
+
/**
|
|
1528
|
+
* Get all month objects from the min date
|
|
1529
|
+
* to the max date. Note: Do not use getMonthColumnData
|
|
1530
|
+
* as that function only generates dates within a
|
|
1531
|
+
* single year.
|
|
1532
|
+
*/
|
|
1533
|
+
let months = getAllMonthsInRange(minParts, maxParts);
|
|
1534
|
+
/**
|
|
1535
|
+
* Filter out any disallowed month values.
|
|
1536
|
+
*/
|
|
1537
|
+
if (monthValues) {
|
|
1538
|
+
months = months.filter(({ month }) => monthValues.includes(month));
|
|
1539
|
+
}
|
|
1540
|
+
/**
|
|
1541
|
+
* Get all of the days in the month.
|
|
1542
|
+
* From there, generate an array where
|
|
1543
|
+
* each item has the month, date, and day
|
|
1544
|
+
* of work as the text.
|
|
1545
|
+
*/
|
|
1546
|
+
months.forEach((monthObject) => {
|
|
1547
|
+
const referenceMonth = { month: monthObject.month, day: null, year: monthObject.year };
|
|
1548
|
+
const monthDays = getDayColumnData(locale, referenceMonth, minParts, maxParts, dayValues, {
|
|
1549
|
+
month: 'short',
|
|
1550
|
+
day: 'numeric',
|
|
1551
|
+
weekday: 'short',
|
|
1552
|
+
});
|
|
1553
|
+
const dateParts = [];
|
|
1554
|
+
const dateColumnItems = [];
|
|
1555
|
+
monthDays.forEach((dayObject) => {
|
|
1556
|
+
const isToday = isSameDay(Object.assign(Object.assign({}, referenceMonth), { day: dayObject.value }), todayParts);
|
|
1557
|
+
/**
|
|
1558
|
+
* Today's date should read as "Today" (localized)
|
|
1559
|
+
* not the actual date string
|
|
1560
|
+
*/
|
|
1561
|
+
dateColumnItems.push({
|
|
1562
|
+
text: isToday ? getTodayLabel(locale) : dayObject.text,
|
|
1563
|
+
value: `${referenceMonth.year}-${referenceMonth.month}-${dayObject.value}`,
|
|
1564
|
+
});
|
|
1565
|
+
/**
|
|
1566
|
+
* When selecting a date in the wheel picker
|
|
1567
|
+
* we need access to the raw datetime parts data.
|
|
1568
|
+
* The picker column only accepts values of
|
|
1569
|
+
* type string or number, so we need to return
|
|
1570
|
+
* two sets of data: A data set to be passed
|
|
1571
|
+
* to the picker column, and a data set to
|
|
1572
|
+
* be used to reference the raw data when
|
|
1573
|
+
* updating the picker column value.
|
|
1574
|
+
*/
|
|
1575
|
+
dateParts.push({
|
|
1576
|
+
month: referenceMonth.month,
|
|
1577
|
+
year: referenceMonth.year,
|
|
1578
|
+
day: dayObject.value,
|
|
1579
|
+
});
|
|
1580
|
+
});
|
|
1581
|
+
parts = [...parts, ...dateParts];
|
|
1582
|
+
items = [...items, ...dateColumnItems];
|
|
1530
1583
|
});
|
|
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
1584
|
return {
|
|
1545
|
-
|
|
1546
|
-
|
|
1585
|
+
parts,
|
|
1586
|
+
items,
|
|
1547
1587
|
};
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
text: getLocalizedDayPeriod(locale, 'am'),
|
|
1559
|
-
value: 'am',
|
|
1588
|
+
};
|
|
1589
|
+
const getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {
|
|
1590
|
+
const computedHourCycle = getHourCycle(locale, hourCycle);
|
|
1591
|
+
const use24Hour = is24Hour(computedHourCycle);
|
|
1592
|
+
const { hours, minutes, am, pm } = generateTime(locale, refParts, computedHourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues);
|
|
1593
|
+
const hoursItems = hours.map((hour) => {
|
|
1594
|
+
return {
|
|
1595
|
+
text: getFormattedHour(hour, computedHourCycle),
|
|
1596
|
+
value: getInternalHourValue(hour, use24Hour, refParts.ampm),
|
|
1597
|
+
};
|
|
1560
1598
|
});
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1599
|
+
const minutesItems = minutes.map((minute) => {
|
|
1600
|
+
return {
|
|
1601
|
+
text: addTimePadding(minute),
|
|
1602
|
+
value: minute,
|
|
1603
|
+
};
|
|
1566
1604
|
});
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1605
|
+
const dayPeriodItems = [];
|
|
1606
|
+
if (am && !use24Hour) {
|
|
1607
|
+
dayPeriodItems.push({
|
|
1608
|
+
text: getLocalizedDayPeriod(locale, 'am'),
|
|
1609
|
+
value: 'am',
|
|
1610
|
+
});
|
|
1611
|
+
}
|
|
1612
|
+
if (pm && !use24Hour) {
|
|
1613
|
+
dayPeriodItems.push({
|
|
1614
|
+
text: getLocalizedDayPeriod(locale, 'pm'),
|
|
1615
|
+
value: 'pm',
|
|
1616
|
+
});
|
|
1617
|
+
}
|
|
1618
|
+
return {
|
|
1619
|
+
minutesData: minutesItems,
|
|
1620
|
+
hoursData: hoursItems,
|
|
1621
|
+
dayPeriodData: dayPeriodItems,
|
|
1622
|
+
};
|
|
1573
1623
|
};
|
|
1574
1624
|
|
|
1575
1625
|
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 };
|