@six-group/ui-library 3.0.0-beta.1.7 → 3.0.0-beta.1.8
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/dist/cjs/{event-listeners-4a8d66d5.js → event-listeners-74715e62.js} +38 -38
- package/dist/cjs/{execution-control-3bc9c7c4.js → execution-control-46f388e0.js} +35 -35
- package/dist/cjs/{focus-visible-b08d956f.js → focus-visible-0b352c74.js} +40 -40
- package/dist/cjs/{form-control-9e4dffd1.js → form-control-866bbece.js} +25 -25
- package/dist/cjs/{modal-a9679ddf.js → modal-48d42228.js} +41 -41
- package/dist/cjs/{popover-e3781f5a.js → popover-1d2a037c.js} +95 -95
- package/dist/cjs/{scroll-5b8676ba.js → scroll-76e6f5d7.js} +57 -57
- package/dist/cjs/set-attributes_2.cjs.entry.js +57 -57
- package/dist/cjs/six-alert.cjs.entry.js +131 -131
- package/dist/cjs/six-avatar.cjs.entry.js +28 -28
- package/dist/cjs/six-badge.cjs.entry.js +26 -26
- package/dist/cjs/six-button.cjs.entry.js +97 -97
- package/dist/cjs/six-card.cjs.entry.js +8 -8
- package/dist/cjs/six-checkbox.cjs.entry.js +152 -152
- package/dist/cjs/six-datepicker.cjs.entry.js +1189 -1189
- package/dist/cjs/six-details.cjs.entry.js +139 -139
- package/dist/cjs/six-dialog.cjs.entry.js +152 -152
- package/dist/cjs/six-drawer.cjs.entry.js +174 -174
- package/dist/cjs/six-dropdown_3.cjs.entry.js +728 -728
- package/dist/cjs/six-error-page.cjs.entry.js +94 -94
- package/dist/cjs/six-file-list-item.cjs.entry.js +38 -38
- package/dist/cjs/six-file-list.cjs.entry.js +8 -8
- package/dist/cjs/six-file-upload.cjs.entry.js +96 -96
- package/dist/cjs/six-footer.cjs.entry.js +8 -8
- package/dist/cjs/six-form.cjs.entry.js +219 -219
- package/dist/cjs/six-group-label.cjs.entry.js +46 -46
- package/dist/cjs/six-header.cjs.entry.js +149 -149
- package/dist/cjs/six-icon-button.cjs.entry.js +33 -33
- package/dist/cjs/six-icon.cjs.entry.js +24 -24
- package/dist/cjs/six-input.cjs.entry.js +230 -230
- package/dist/cjs/six-item-picker.cjs.entry.js +361 -361
- package/dist/cjs/six-language-switcher.cjs.entry.js +52 -52
- package/dist/cjs/six-layout-grid.cjs.entry.js +19 -19
- package/dist/cjs/six-main-container.cjs.entry.js +11 -11
- package/dist/cjs/six-menu-divider.cjs.entry.js +8 -8
- package/dist/cjs/six-menu-label.cjs.entry.js +8 -8
- package/dist/cjs/six-picto.cjs.entry.js +15 -15
- package/dist/cjs/six-progress-bar.cjs.entry.js +17 -17
- package/dist/cjs/six-progress-ring.cjs.entry.js +31 -31
- package/dist/cjs/six-radio.cjs.entry.js +121 -121
- package/dist/cjs/six-range.cjs.entry.js +198 -198
- package/dist/cjs/six-root.cjs.entry.js +34 -34
- package/dist/cjs/six-search-field.cjs.entry.js +43 -43
- package/dist/cjs/six-select.cjs.entry.js +447 -447
- package/dist/cjs/six-sidebar-item-group.cjs.entry.js +42 -42
- package/dist/cjs/six-sidebar-item.cjs.entry.js +18 -18
- package/dist/cjs/six-sidebar.cjs.entry.js +171 -171
- package/dist/cjs/six-spinner.cjs.entry.js +16 -16
- package/dist/cjs/six-switch.cjs.entry.js +100 -100
- package/dist/cjs/six-tab-group.cjs.entry.js +226 -226
- package/dist/cjs/six-tab-panel.cjs.entry.js +17 -17
- package/dist/cjs/six-tab.cjs.entry.js +42 -42
- package/dist/cjs/six-table-cell_4.cjs.entry.js +70 -70
- package/dist/cjs/six-table.cjs.entry.js +145 -145
- package/dist/cjs/six-tag.cjs.entry.js +40 -40
- package/dist/cjs/six-textarea.cjs.entry.js +211 -211
- package/dist/cjs/six-tile.cjs.entry.js +89 -89
- package/dist/cjs/six-timepicker.cjs.entry.js +489 -489
- package/dist/cjs/{six-timepicker.types-c58cc88b.js → six-timepicker.types-c19ebff3.js} +43 -43
- package/dist/cjs/six-tooltip.cjs.entry.js +172 -172
- package/dist/cjs/{slot-8abe833c.js → slot-ad537f24.js} +42 -42
- package/dist/cjs/{types-65e5c95b.js → types-581e8ff0.js} +12 -12
- package/dist/cjs/{types-0c28e484.js → types-64878648.js} +12 -12
- package/dist/collection/components/six-alert/six-alert.js +366 -366
- package/dist/collection/components/six-avatar/six-avatar.js +131 -131
- package/dist/collection/components/six-badge/six-badge.js +101 -101
- package/dist/collection/components/six-button/six-button.js +466 -466
- package/dist/collection/components/six-card/six-card.js +21 -21
- package/dist/collection/components/six-checkbox/six-checkbox.js +550 -550
- package/dist/collection/components/six-datepicker/components/day-selection.js +13 -13
- package/dist/collection/components/six-datepicker/components/month-selection.js +12 -12
- package/dist/collection/components/six-datepicker/components/year-selection.js +10 -10
- package/dist/collection/components/six-datepicker/six-date-formats.js +23 -23
- package/dist/collection/components/six-datepicker/six-datepicker.js +1343 -1343
- package/dist/collection/components/six-datepicker/test/six-datepicker.test-helpers.js +16 -16
- package/dist/collection/components/six-details/six-details.js +432 -432
- package/dist/collection/components/six-dialog/six-dialog.js +401 -401
- package/dist/collection/components/six-drawer/six-drawer.js +458 -458
- package/dist/collection/components/six-dropdown/six-dropdown.js +939 -939
- package/dist/collection/components/six-error-page/six-error-page.js +199 -199
- package/dist/collection/components/six-file-list/six-file-list.js +20 -20
- package/dist/collection/components/six-file-list-item/six-file-list-item.js +203 -203
- package/dist/collection/components/six-file-upload/six-file-upload.js +272 -272
- package/dist/collection/components/six-footer/six-footer.js +21 -21
- package/dist/collection/components/six-form/six-form.js +408 -408
- package/dist/collection/components/six-group-label/six-group-label.js +166 -166
- package/dist/collection/components/six-header/six-header.js +420 -420
- package/dist/collection/components/six-icon/six-icon.js +77 -77
- package/dist/collection/components/six-icon-button/six-icon-button.js +142 -142
- package/dist/collection/components/six-input/six-input.js +1141 -1141
- package/dist/collection/components/six-item-picker/six-item-picker.js +688 -688
- package/dist/collection/components/six-item-picker/types.js +13 -13
- package/dist/collection/components/six-language-switcher/six-language-switcher.js +128 -128
- package/dist/collection/components/six-layout-grid/six-layout-grid.js +52 -52
- package/dist/collection/components/six-main-container/six-main-container.js +53 -53
- package/dist/collection/components/six-menu/six-menu.js +406 -406
- package/dist/collection/components/six-menu-divider/six-menu-divider.js +22 -22
- package/dist/collection/components/six-menu-item/six-menu-item.js +177 -177
- package/dist/collection/components/six-menu-label/six-menu-label.js +25 -25
- package/dist/collection/components/six-picto/six-picto.js +50 -50
- package/dist/collection/components/six-progress-bar/six-progress-bar.js +77 -77
- package/dist/collection/components/six-progress-ring/six-progress-ring.js +111 -111
- package/dist/collection/components/six-radio/six-radio.js +410 -410
- package/dist/collection/components/six-range/six-range.js +620 -620
- package/dist/collection/components/six-root/six-root.js +167 -167
- package/dist/collection/components/six-search-field/six-search-field.js +171 -171
- package/dist/collection/components/six-select/six-select.js +1105 -1105
- package/dist/collection/components/six-sidebar/six-sidebar.js +455 -455
- package/dist/collection/components/six-sidebar-item/six-sidebar-item.js +89 -89
- package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.js +158 -158
- package/dist/collection/components/six-spinner/six-spinner.js +55 -55
- package/dist/collection/components/six-stage-indicator/six-stage-indicator.js +46 -46
- package/dist/collection/components/six-switch/six-switch.js +393 -393
- package/dist/collection/components/six-tab/six-tab.js +198 -198
- package/dist/collection/components/six-tab-group/six-tab-group.js +362 -362
- package/dist/collection/components/six-tab-panel/six-tab-panel.js +75 -75
- package/dist/collection/components/six-table/six-table.js +209 -209
- package/dist/collection/components/six-table/test/helpers.js +13 -13
- package/dist/collection/components/six-table/types.js +8 -8
- package/dist/collection/components/six-table/util/filter-by.js +34 -34
- package/dist/collection/components/six-table/util/from-data.js +33 -33
- package/dist/collection/components/six-table/util/is.js +3 -3
- package/dist/collection/components/six-table/util/quick-filter-by.js +13 -13
- package/dist/collection/components/six-table/util/sort-by.js +25 -25
- package/dist/collection/components/six-table-cell/six-table-cell.js +21 -21
- package/dist/collection/components/six-table-header/six-table-header.js +21 -21
- package/dist/collection/components/six-table-header-cell/get-next-state.js +7 -7
- package/dist/collection/components/six-table-header-cell/icons.js +12 -12
- package/dist/collection/components/six-table-header-cell/six-table-header-cell.js +174 -174
- package/dist/collection/components/six-table-header-cell/types.js +13 -13
- package/dist/collection/components/six-table-header-cell/util/create-model.js +6 -6
- package/dist/collection/components/six-table-header-cell/util/get-next-state.js +7 -7
- package/dist/collection/components/six-table-row/six-table-row.js +21 -21
- package/dist/collection/components/six-tag/six-tag.js +157 -157
- package/dist/collection/components/six-textarea/six-textarea.js +912 -912
- package/dist/collection/components/six-tile/six-tile.js +315 -315
- package/dist/collection/components/six-timepicker/six-time-format.js +14 -14
- package/dist/collection/components/six-timepicker/six-timepicker.js +980 -980
- package/dist/collection/components/six-timepicker/six-timepicker.types.js +40 -40
- package/dist/collection/components/six-tooltip/six-tooltip.js +435 -435
- package/dist/collection/functional-components/form-control/form-control.js +28 -28
- package/dist/collection/index.js +1 -1
- package/dist/collection/testUtil/delay.js +3 -3
- package/dist/collection/utils/as-array.js +1 -1
- package/dist/collection/utils/date-util.js +712 -712
- package/dist/collection/utils/event-listeners.js +39 -39
- package/dist/collection/utils/execution-control.js +38 -38
- package/dist/collection/utils/focus-visible.js +41 -41
- package/dist/collection/utils/matchers.js +2 -2
- package/dist/collection/utils/modal.js +28 -28
- package/dist/collection/utils/offset.js +13 -13
- package/dist/collection/utils/popover.js +113 -113
- package/dist/collection/utils/scroll.js +47 -47
- package/dist/collection/utils/slot.js +59 -59
- package/dist/collection/utils/support.js +15 -15
- package/dist/collection/utils/tabbable.js +22 -22
- package/dist/collection/utils/testing.js +38 -38
- package/dist/collection/utils/time.util.js +74 -74
- package/dist/collection/utils/type-check.js +5 -5
- package/dist/collection/utils/types.js +1 -1
- package/dist/collection/wrappers/set-attributes/set-attributes.js +68 -68
- package/dist/components.json +1 -1
- package/dist/custom-elements/index.js +7595 -7595
- package/dist/esm/{event-listeners-1bef934e.js → event-listeners-570a24ea.js} +38 -38
- package/dist/esm/{execution-control-235f5126.js → execution-control-1a60d709.js} +35 -35
- package/dist/esm/{focus-visible-4b7946aa.js → focus-visible-97933ea9.js} +40 -40
- package/dist/esm/{form-control-17478ad2.js → form-control-24f446af.js} +25 -25
- package/dist/esm/{modal-e5709f6b.js → modal-5ebdc320.js} +41 -41
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/{popover-5a51f84d.js → popover-1c7a1139.js} +95 -95
- package/dist/esm/{scroll-99b214c2.js → scroll-180b53fd.js} +57 -57
- package/dist/esm/set-attributes_2.entry.js +57 -57
- package/dist/esm/six-alert.entry.js +131 -131
- package/dist/esm/six-avatar.entry.js +28 -28
- package/dist/esm/six-badge.entry.js +26 -26
- package/dist/esm/six-button.entry.js +97 -97
- package/dist/esm/six-card.entry.js +8 -8
- package/dist/esm/six-checkbox.entry.js +152 -152
- package/dist/esm/six-datepicker.entry.js +1189 -1189
- package/dist/esm/six-details.entry.js +139 -139
- package/dist/esm/six-dialog.entry.js +152 -152
- package/dist/esm/six-drawer.entry.js +174 -174
- package/dist/esm/six-dropdown_3.entry.js +728 -728
- package/dist/esm/six-error-page.entry.js +94 -94
- package/dist/esm/six-file-list-item.entry.js +38 -38
- package/dist/esm/six-file-list.entry.js +8 -8
- package/dist/esm/six-file-upload.entry.js +96 -96
- package/dist/esm/six-footer.entry.js +8 -8
- package/dist/esm/six-form.entry.js +219 -219
- package/dist/esm/six-group-label.entry.js +46 -46
- package/dist/esm/six-header.entry.js +149 -149
- package/dist/esm/six-icon-button.entry.js +33 -33
- package/dist/esm/six-icon.entry.js +24 -24
- package/dist/esm/six-input.entry.js +230 -230
- package/dist/esm/six-item-picker.entry.js +361 -361
- package/dist/esm/six-language-switcher.entry.js +52 -52
- package/dist/esm/six-layout-grid.entry.js +19 -19
- package/dist/esm/six-main-container.entry.js +11 -11
- package/dist/esm/six-menu-divider.entry.js +8 -8
- package/dist/esm/six-menu-label.entry.js +8 -8
- package/dist/esm/six-picto.entry.js +15 -15
- package/dist/esm/six-progress-bar.entry.js +17 -17
- package/dist/esm/six-progress-ring.entry.js +31 -31
- package/dist/esm/six-radio.entry.js +121 -121
- package/dist/esm/six-range.entry.js +198 -198
- package/dist/esm/six-root.entry.js +34 -34
- package/dist/esm/six-search-field.entry.js +43 -43
- package/dist/esm/six-select.entry.js +447 -447
- package/dist/esm/six-sidebar-item-group.entry.js +42 -42
- package/dist/esm/six-sidebar-item.entry.js +18 -18
- package/dist/esm/six-sidebar.entry.js +171 -171
- package/dist/esm/six-spinner.entry.js +16 -16
- package/dist/esm/six-switch.entry.js +100 -100
- package/dist/esm/six-tab-group.entry.js +226 -226
- package/dist/esm/six-tab-panel.entry.js +17 -17
- package/dist/esm/six-tab.entry.js +42 -42
- package/dist/esm/six-table-cell_4.entry.js +70 -70
- package/dist/esm/six-table.entry.js +145 -145
- package/dist/esm/six-tag.entry.js +40 -40
- package/dist/esm/six-textarea.entry.js +211 -211
- package/dist/esm/six-tile.entry.js +89 -89
- package/dist/esm/six-timepicker.entry.js +489 -489
- package/dist/esm/{six-timepicker.types-cd6bac03.js → six-timepicker.types-e161a447.js} +43 -43
- package/dist/esm/six-tooltip.entry.js +172 -172
- package/dist/esm/{slot-5253e199.js → slot-6f3984c7.js} +42 -42
- package/dist/esm/{types-a37c1695.js → types-4b10b413.js} +12 -12
- package/dist/esm/{types-33d15673.js → types-ed860f7c.js} +12 -12
- package/dist/types/components/six-alert/six-alert.d.ts +60 -60
- package/dist/types/components/six-avatar/six-avatar.d.ts +27 -27
- package/dist/types/components/six-badge/six-badge.d.ts +20 -20
- package/dist/types/components/six-button/six-button.d.ts +69 -69
- package/dist/types/components/six-card/six-card.d.ts +9 -9
- package/dist/types/components/six-checkbox/six-checkbox.d.ts +86 -86
- package/dist/types/components/six-datepicker/components/day-selection.d.ts +5 -5
- package/dist/types/components/six-datepicker/components/month-selection.d.ts +5 -5
- package/dist/types/components/six-datepicker/components/year-selection.d.ts +5 -5
- package/dist/types/components/six-datepicker/six-date-formats.d.ts +22 -22
- package/dist/types/components/six-datepicker/six-datepicker.d.ts +214 -214
- package/dist/types/components/six-datepicker/test/six-datepicker.test-helpers.d.ts +1 -1
- package/dist/types/components/six-details/six-details.d.ts +61 -61
- package/dist/types/components/six-dialog/six-dialog.d.ts +75 -75
- package/dist/types/components/six-drawer/six-drawer.d.ts +82 -82
- package/dist/types/components/six-dropdown/six-dropdown.d.ts +140 -140
- package/dist/types/components/six-error-page/six-error-page.d.ts +27 -27
- package/dist/types/components/six-file-list/six-file-list.d.ts +8 -8
- package/dist/types/components/six-file-list-item/six-file-list-item.d.ts +35 -35
- package/dist/types/components/six-file-upload/six-file-upload.d.ts +42 -42
- package/dist/types/components/six-footer/six-footer.d.ts +9 -9
- package/dist/types/components/six-form/six-form.d.ts +69 -69
- package/dist/types/components/six-group-label/six-group-label.d.ts +37 -37
- package/dist/types/components/six-header/six-header.d.ts +90 -90
- package/dist/types/components/six-icon/six-icon.d.ts +13 -13
- package/dist/types/components/six-icon-button/six-icon-button.d.ts +28 -28
- package/dist/types/components/six-input/six-input.d.ts +165 -165
- package/dist/types/components/six-item-picker/six-item-picker.d.ts +106 -106
- package/dist/types/components/six-item-picker/types.d.ts +11 -11
- package/dist/types/components/six-language-switcher/six-language-switcher.d.ts +25 -25
- package/dist/types/components/six-layout-grid/six-layout-grid.d.ts +14 -14
- package/dist/types/components/six-main-container/six-main-container.d.ts +16 -16
- package/dist/types/components/six-menu/six-menu.d.ts +81 -81
- package/dist/types/components/six-menu-divider/six-menu-divider.d.ts +11 -11
- package/dist/types/components/six-menu-item/six-menu-item.d.ts +36 -36
- package/dist/types/components/six-menu-label/six-menu-label.d.ts +13 -13
- package/dist/types/components/six-picto/six-picto.d.ts +14 -14
- package/dist/types/components/six-progress-bar/six-progress-bar.d.ts +19 -19
- package/dist/types/components/six-progress-ring/six-progress-ring.d.ts +24 -24
- package/dist/types/components/six-radio/six-radio.d.ts +66 -66
- package/dist/types/components/six-range/six-range.d.ts +101 -101
- package/dist/types/components/six-root/six-root.d.ts +34 -34
- package/dist/types/components/six-search-field/six-search-field.d.ts +32 -32
- package/dist/types/components/six-select/six-select.d.ts +163 -163
- package/dist/types/components/six-sidebar/six-sidebar.d.ts +55 -55
- package/dist/types/components/six-sidebar-item/six-sidebar-item.d.ts +15 -15
- package/dist/types/components/six-sidebar-item-group/six-sidebar-item-group.d.ts +26 -26
- package/dist/types/components/six-spinner/six-spinner.d.ts +15 -15
- package/dist/types/components/six-stage-indicator/six-stage-indicator.d.ts +6 -6
- package/dist/types/components/six-switch/six-switch.d.ts +62 -62
- package/dist/types/components/six-tab/six-tab.d.ts +35 -35
- package/dist/types/components/six-tab-group/six-tab-group.d.ts +62 -62
- package/dist/types/components/six-tab-panel/six-tab-panel.d.ts +19 -19
- package/dist/types/components/six-table/six-table.d.ts +30 -30
- package/dist/types/components/six-table/test/helpers.d.ts +2 -2
- package/dist/types/components/six-table/types.d.ts +33 -33
- package/dist/types/components/six-table/util/filter-by.d.ts +2 -2
- package/dist/types/components/six-table/util/from-data.d.ts +8 -8
- package/dist/types/components/six-table/util/is.d.ts +3 -3
- package/dist/types/components/six-table/util/quick-filter-by.d.ts +2 -2
- package/dist/types/components/six-table/util/sort-by.d.ts +2 -2
- package/dist/types/components/six-table-cell/six-table-cell.d.ts +9 -9
- package/dist/types/components/six-table-header/six-table-header.d.ts +9 -9
- package/dist/types/components/six-table-header-cell/get-next-state.d.ts +2 -2
- package/dist/types/components/six-table-header-cell/icons.d.ts +3 -3
- package/dist/types/components/six-table-header-cell/six-table-header-cell.d.ts +32 -32
- package/dist/types/components/six-table-header-cell/types.d.ts +11 -11
- package/dist/types/components/six-table-header-cell/util/create-model.d.ts +4 -4
- package/dist/types/components/six-table-header-cell/util/get-next-state.d.ts +3 -3
- package/dist/types/components/six-table-row/six-table-row.d.ts +9 -9
- package/dist/types/components/six-tag/six-tag.d.ts +30 -30
- package/dist/types/components/six-textarea/six-textarea.d.ts +134 -134
- package/dist/types/components/six-tile/six-tile.d.ts +40 -40
- package/dist/types/components/six-timepicker/six-time-format.d.ts +13 -13
- package/dist/types/components/six-timepicker/six-timepicker.d.ts +184 -184
- package/dist/types/components/six-timepicker/six-timepicker.types.d.ts +36 -36
- package/dist/types/components/six-tooltip/six-tooltip.d.ts +72 -72
- package/dist/types/functional-components/form-control/form-control.d.ts +34 -34
- package/dist/types/index.d.ts +1 -1
- package/dist/types/testUtil/delay.d.ts +1 -1
- package/dist/types/utils/as-array.d.ts +1 -1
- package/dist/types/utils/date-util.d.ts +194 -194
- package/dist/types/utils/event-listeners.d.ts +15 -15
- package/dist/types/utils/execution-control.d.ts +26 -26
- package/dist/types/utils/focus-visible.d.ts +6 -6
- package/dist/types/utils/matchers.d.ts +2 -2
- package/dist/types/utils/modal.d.ts +13 -13
- package/dist/types/utils/offset.d.ts +4 -4
- package/dist/types/utils/popover.d.ts +27 -27
- package/dist/types/utils/scroll.d.ts +3 -3
- package/dist/types/utils/slot.d.ts +9 -9
- package/dist/types/utils/support.d.ts +1 -1
- package/dist/types/utils/tabbable.d.ts +2 -2
- package/dist/types/utils/testing.d.ts +2 -2
- package/dist/types/utils/time.util.d.ts +10 -10
- package/dist/types/utils/type-check.d.ts +4 -4
- package/dist/types/utils/types.d.ts +4 -4
- package/dist/types/wrappers/set-attributes/set-attributes.d.ts +9 -9
- package/dist/ui-library/{p-a8c225f2.entry.js → p-007bc8e8.entry.js} +1 -1
- package/dist/ui-library/{p-f9c0cfb7.entry.js → p-044b784e.entry.js} +1 -1
- package/dist/ui-library/{p-c733dead.js → p-0786fa7c.js} +0 -0
- package/dist/ui-library/{p-12cc24c3.js → p-07d1e830.js} +0 -0
- package/dist/ui-library/{p-48ea4419.entry.js → p-09cb13fa.entry.js} +1 -1
- package/dist/ui-library/{p-e96dcf96.entry.js → p-0c596054.entry.js} +1 -1
- package/dist/ui-library/{p-a77a6442.entry.js → p-1b8dc7b7.entry.js} +1 -1
- package/dist/ui-library/{p-68d31736.js → p-25a3bf57.js} +0 -0
- package/dist/ui-library/{p-ebaea182.entry.js → p-281e8c2d.entry.js} +1 -1
- package/dist/ui-library/{p-9f2dc381.entry.js → p-2924f82f.entry.js} +1 -1
- package/dist/ui-library/{p-ea1fcff2.entry.js → p-2d7ed407.entry.js} +1 -1
- package/dist/ui-library/{p-89f68e76.entry.js → p-4162dcdd.entry.js} +1 -1
- package/dist/ui-library/{p-6f67f986.entry.js → p-4d3a4e93.entry.js} +1 -1
- package/dist/ui-library/{p-8bd0873f.entry.js → p-4ed023b8.entry.js} +1 -1
- package/dist/ui-library/{p-af3d757c.js → p-4f8394d7.js} +0 -0
- package/dist/ui-library/{p-1b92cc7a.entry.js → p-530ea6ec.entry.js} +1 -1
- package/dist/ui-library/{p-19543c96.entry.js → p-531ab886.entry.js} +1 -1
- package/dist/ui-library/{p-fdb455d7.entry.js → p-54c48654.entry.js} +1 -1
- package/dist/ui-library/{p-c948d3db.entry.js → p-55c64cbc.entry.js} +1 -1
- package/dist/ui-library/{p-1c9f0dc6.js → p-5f1c6a5f.js} +0 -0
- package/dist/ui-library/{p-60491176.entry.js → p-675a8243.entry.js} +1 -1
- package/dist/ui-library/{p-b9fb8455.entry.js → p-6d622ed0.entry.js} +1 -1
- package/dist/ui-library/{p-572e3690.js → p-75297ad7.js} +0 -0
- package/dist/ui-library/{p-2ff97cdf.entry.js → p-90b26447.entry.js} +1 -1
- package/dist/ui-library/{p-fcd2356c.entry.js → p-93945629.entry.js} +1 -1
- package/dist/ui-library/{p-7735d99f.js → p-9a860acc.js} +0 -0
- package/dist/ui-library/{p-4cc01afc.entry.js → p-aa37e45a.entry.js} +1 -1
- package/dist/ui-library/{p-191f958b.js → p-b1e66136.js} +0 -0
- package/dist/ui-library/{p-c09dc3a9.js → p-b4dfb7cf.js} +0 -0
- package/dist/ui-library/{p-968c5169.entry.js → p-c24292b3.entry.js} +1 -1
- package/dist/ui-library/{p-ed21cc57.entry.js → p-cd79de73.entry.js} +1 -1
- package/dist/ui-library/{p-34e6d8e8.js → p-d12c6092.js} +0 -0
- package/dist/ui-library/{p-f0e91e17.entry.js → p-d28ac80a.entry.js} +1 -1
- package/dist/ui-library/{p-5ead7b2f.entry.js → p-d837e5a8.entry.js} +1 -1
- package/dist/ui-library/{p-ec1ecc2a.entry.js → p-dd3cae68.entry.js} +1 -1
- package/dist/ui-library/{p-044c6bf9.js → p-eb8f05a9.js} +0 -0
- package/dist/ui-library/ui-library.esm.js +1 -1
- package/package.json +1 -1
|
@@ -1,1343 +1,1343 @@
|
|
|
1
|
-
import { Component, Element, Event, h, Listen, Method, Prop, State, Watch } from '@stencil/core';
|
|
2
|
-
import { createCalendarGrid, day, formatDate, getFirstDayOfTheWeek, hours, i18nDate, isValidDate, isValidDateString, minutes, month, now, seconds, toDate, year, } from '../../utils/date-util';
|
|
3
|
-
import { EventListeners } from '../../utils/event-listeners';
|
|
4
|
-
import { isNil } from '../../utils/type-check';
|
|
5
|
-
import { debounce, debounceEvent, DEFAULT_DEBOUNCE_FAST } from '../../utils/execution-control';
|
|
6
|
-
import { hasSlot } from '../../utils/slot';
|
|
7
|
-
import { SixDateFormats } from './six-date-formats';
|
|
8
|
-
import { MonthSelection } from './components/month-selection';
|
|
9
|
-
import { DaySelection } from './components/day-selection';
|
|
10
|
-
import { YearSelection } from './components/year-selection';
|
|
11
|
-
import { SixTimePropertyName } from '../six-timepicker/six-timepicker.types';
|
|
12
|
-
const NUMBER_OF_YEARS_SHOWN = 25;
|
|
13
|
-
const MIN_POPUP_HEIGHT = 400;
|
|
14
|
-
var SelectionMode;
|
|
15
|
-
(function (SelectionMode) {
|
|
16
|
-
SelectionMode["DAY"] = "day";
|
|
17
|
-
SelectionMode["MONTH"] = "month";
|
|
18
|
-
SelectionMode["YEAR"] = "year";
|
|
19
|
-
})(SelectionMode || (SelectionMode = {}));
|
|
20
|
-
const getYearSelectionAroundYear = (year) => {
|
|
21
|
-
const numberOfElementsPerRow = 5;
|
|
22
|
-
return Array.from(new Array(NUMBER_OF_YEARS_SHOWN).keys())
|
|
23
|
-
.map((n) => n + year - Math.floor(NUMBER_OF_YEARS_SHOWN / 2))
|
|
24
|
-
.reduce((curr, item, index) => {
|
|
25
|
-
if (index % numberOfElementsPerRow === 0) {
|
|
26
|
-
curr.push([]);
|
|
27
|
-
}
|
|
28
|
-
curr[curr.length - 1].push(item);
|
|
29
|
-
return curr;
|
|
30
|
-
}, []);
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* @since 1.0
|
|
34
|
-
* @status stable
|
|
35
|
-
*
|
|
36
|
-
* @slot - Used to define a footer for the date picker.
|
|
37
|
-
*/
|
|
38
|
-
export class SixDatepicker {
|
|
39
|
-
constructor() {
|
|
40
|
-
this.eventListeners = new EventListeners();
|
|
41
|
-
this.selectedDate = null;
|
|
42
|
-
this.pointerDate = SixDatepicker.getCurrentDateAsPointer();
|
|
43
|
-
this.selectionMode = SelectionMode.DAY;
|
|
44
|
-
this.isDropDownContentUp = false;
|
|
45
|
-
/**
|
|
46
|
-
* Set the type.
|
|
47
|
-
*/
|
|
48
|
-
this.type = 'date';
|
|
49
|
-
/**
|
|
50
|
-
* The language used to render the weekdays and months.
|
|
51
|
-
*/
|
|
52
|
-
this.locale = 'en';
|
|
53
|
-
/** Indicates whether or not the calendar dropdown is open on startup. You can use this in lieu of the show/hide methods. */
|
|
54
|
-
this.open = false;
|
|
55
|
-
/** Indicates whether or not the calendar should be shown as an inline (always open) component */
|
|
56
|
-
this.inline = false;
|
|
57
|
-
/**
|
|
58
|
-
* If `true` the user can only select a date via the component in the popup, but not directly edit the input field.
|
|
59
|
-
*/
|
|
60
|
-
this.readonly = false;
|
|
61
|
-
/**
|
|
62
|
-
* If `true` the component is disabled.
|
|
63
|
-
*/
|
|
64
|
-
this.disabled = false;
|
|
65
|
-
/**
|
|
66
|
-
* Callback to determine which date in the datepicker should be selectable.
|
|
67
|
-
* the callback function will get a datestring as an argument, e.g. '2021-07-04'
|
|
68
|
-
*
|
|
69
|
-
* Usage e.g.:
|
|
70
|
-
* const datepicker = document.getElementById('allowed-date-picker');
|
|
71
|
-
* datepicker.allowedDates = datestring => parseInt(datestring.split('-')[2], 10) % 2 === 0;
|
|
72
|
-
*/
|
|
73
|
-
this.allowedDates = () => true;
|
|
74
|
-
/**
|
|
75
|
-
* The minimum datetime allowed. Value must be a date object
|
|
76
|
-
*/
|
|
77
|
-
this.min = null;
|
|
78
|
-
/**
|
|
79
|
-
* The maximum datetime allowed. Value must be a date object
|
|
80
|
-
*/
|
|
81
|
-
this.max = null;
|
|
82
|
-
/**
|
|
83
|
-
* Closes the datepicker dropdown after selection
|
|
84
|
-
*/
|
|
85
|
-
this.closeOnSelect = this.type === 'date';
|
|
86
|
-
/** Datepicker size. */
|
|
87
|
-
this.size = 'medium';
|
|
88
|
-
/**
|
|
89
|
-
* The value of the form field, which accepts a date object.
|
|
90
|
-
*/
|
|
91
|
-
this.value = null;
|
|
92
|
-
/** Define the dateFormat. Valid formats are:
|
|
93
|
-
* 'dd.mm.yyyy'
|
|
94
|
-
* 'yyyy-mm-dd'
|
|
95
|
-
* 'dd-mm-yyyy'
|
|
96
|
-
* 'dd/mm/yyyy'
|
|
97
|
-
* 'yyyy/mm/dd'
|
|
98
|
-
* 'dd.mm.yy'
|
|
99
|
-
* 'yy-mm-dd'
|
|
100
|
-
* 'dd-mm-yy'
|
|
101
|
-
* 'dd/mm/yy'
|
|
102
|
-
* 'yy/mm/dd'
|
|
103
|
-
* */
|
|
104
|
-
this.dateFormat = SixDateFormats.DDMMYYY_DOT;
|
|
105
|
-
/**
|
|
106
|
-
* Set the amount of time, in milliseconds, to wait to trigger the `dateChange` event after each keystroke.
|
|
107
|
-
*/
|
|
108
|
-
this.debounce = DEFAULT_DEBOUNCE_FAST;
|
|
109
|
-
/** Set to display the error text on blur and not when typing */
|
|
110
|
-
this.errorOnBlur = false;
|
|
111
|
-
/** The input's error text. Alternatively, you can use the error-text slot. */
|
|
112
|
-
this.errorText = '';
|
|
113
|
-
/** The input's label. Alternatively, you can use the label slot. */
|
|
114
|
-
this.label = '';
|
|
115
|
-
/** The input's name attribute. */
|
|
116
|
-
this.name = '';
|
|
117
|
-
/** Set to true to add a clear button when the input is populated. */
|
|
118
|
-
this.clearable = false;
|
|
119
|
-
/** Set the position of the icon */
|
|
120
|
-
this.iconPosition = 'left';
|
|
121
|
-
/**
|
|
122
|
-
* Enable this option to prevent the panel from being clipped when the component is placed inside a container with
|
|
123
|
-
* `overflow: auto|scroll`.
|
|
124
|
-
*/
|
|
125
|
-
this.hoist = false;
|
|
126
|
-
this.defaultValue = null;
|
|
127
|
-
this.handleDocumentKeyDown = (event) => {
|
|
128
|
-
// Close when escape is pressed
|
|
129
|
-
if (this.open && event.key === 'Escape') {
|
|
130
|
-
event.stopPropagation();
|
|
131
|
-
this.closePopup();
|
|
132
|
-
void this.inputElement.setFocus();
|
|
133
|
-
}
|
|
134
|
-
// Handle tabbing
|
|
135
|
-
if (event.key === 'Tab') {
|
|
136
|
-
this.closePopup();
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
this.handleDocumentMouseDown = (event) => {
|
|
140
|
-
// Close when clicking outside of the containing element
|
|
141
|
-
const path = event.composedPath();
|
|
142
|
-
if (!path.includes(this.container)) {
|
|
143
|
-
this.closePopup();
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
this.onTimepickerChange = (sixTimepickerChange) => {
|
|
148
|
-
const time = sixTimepickerChange.detail.value;
|
|
149
|
-
const newDate = new Date();
|
|
150
|
-
if (this.selectedDate) {
|
|
151
|
-
newDate.setFullYear(this.selectedDate.getFullYear(), this.selectedDate.getMonth(), this.selectedDate.getDate());
|
|
152
|
-
}
|
|
153
|
-
newDate.setHours(time[SixTimePropertyName.HOURS], time[SixTimePropertyName.MINUTES], time[SixTimePropertyName.SECONDS]);
|
|
154
|
-
this.updateValue(newDate);
|
|
155
|
-
this.updatePointerDates();
|
|
156
|
-
};
|
|
157
|
-
this.onClickDateCell = (cell) => {
|
|
158
|
-
if (!cell.isDisabled) {
|
|
159
|
-
void this.select(cell.dateString);
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
this.onClickMonthCell = (selectedMonth) => {
|
|
163
|
-
const month = i18nDate[this.locale].monthsShort.findIndex((monthShort) => monthShort === selectedMonth);
|
|
164
|
-
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { month });
|
|
165
|
-
this.selectionMode = SelectionMode.DAY;
|
|
166
|
-
};
|
|
167
|
-
this.onClickYearCell = (year) => {
|
|
168
|
-
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year });
|
|
169
|
-
this.selectionMode = SelectionMode.DAY;
|
|
170
|
-
};
|
|
171
|
-
this.handleInputChange = (event) => {
|
|
172
|
-
const inputValue = this.inputElement.value;
|
|
173
|
-
if (!isValidDateString(inputValue, this.dateFormat)) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
const inputValueDate = toDate(inputValue, this.dateFormat);
|
|
177
|
-
if (inputValueDate === undefined) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
if (this.min && this.min.getTime() > inputValueDate.getTime()) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
if (this.max && this.max.getTime() < inputValueDate.getTime()) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
this.updateIfChanged(inputValueDate);
|
|
187
|
-
event.stopPropagation();
|
|
188
|
-
const datesOnly = inputValue.replace(/[^\d]/g, '');
|
|
189
|
-
let isDateValid = !inputValue;
|
|
190
|
-
if (inputValue && datesOnly.length >= 6) {
|
|
191
|
-
const date = toDate(inputValue, this.dateFormat);
|
|
192
|
-
const datestring = formatDate(date, this.dateFormat);
|
|
193
|
-
if (isValidDateString(datestring, this.dateFormat)) {
|
|
194
|
-
this.selectedDate = toDate(datestring, this.dateFormat);
|
|
195
|
-
this.updatePointerDates();
|
|
196
|
-
this.updateValue(this.selectedDate);
|
|
197
|
-
isDateValid = true;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
this.displayCustomMessage(isDateValid);
|
|
201
|
-
};
|
|
202
|
-
this.handleOnBlur = (event) => {
|
|
203
|
-
// clear the value if the user deleted the date
|
|
204
|
-
if (this.inputElement.value === '' && isValidDate(this.value)) {
|
|
205
|
-
this.value = undefined;
|
|
206
|
-
}
|
|
207
|
-
event.stopPropagation();
|
|
208
|
-
const inputValue = this.inputElement.value;
|
|
209
|
-
const inputValueDate = toDate(inputValue, this.dateFormat);
|
|
210
|
-
const formattedDate = formatDate(this.value, this.dateFormat);
|
|
211
|
-
if (inputValueDate && inputValue !== formattedDate) {
|
|
212
|
-
// properly format date if necessary
|
|
213
|
-
this.inputElement.value = formattedDate;
|
|
214
|
-
}
|
|
215
|
-
this.sixBlur.emit(this.value);
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
debounceChanged() {
|
|
219
|
-
this.sixSelect = debounceEvent(this.sixSelect, this.debounce);
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Update the native input element when the value changes
|
|
223
|
-
*/
|
|
224
|
-
valueChanged() {
|
|
225
|
-
// map unreadable values to undefined to make the datepicker fault-tolerant
|
|
226
|
-
if (this.isValidValue()) {
|
|
227
|
-
console.warn('Encountered unreadable date, will map to undefined. Received value', this.value);
|
|
228
|
-
this.value = undefined;
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
this.selectedDate = this.value;
|
|
232
|
-
this.updatePointerDates();
|
|
233
|
-
this.sixSelect.emit(this.value);
|
|
234
|
-
}
|
|
235
|
-
async resizeHandler() {
|
|
236
|
-
this.calcIsDropDownContentUp();
|
|
237
|
-
this.moveOpenHoistedPopup();
|
|
238
|
-
this.adjustPopupPosition();
|
|
239
|
-
}
|
|
240
|
-
async scrollHandler() {
|
|
241
|
-
this.calcIsDropDownContentUp();
|
|
242
|
-
this.moveOpenHoistedPopup();
|
|
243
|
-
}
|
|
244
|
-
get container() {
|
|
245
|
-
return this.containingElement || this.host;
|
|
246
|
-
}
|
|
247
|
-
get firstDateOfBox() {
|
|
248
|
-
const date = new Date(this.pointerDate.year, this.pointerDate.month, 1);
|
|
249
|
-
return getFirstDayOfTheWeek(date);
|
|
250
|
-
}
|
|
251
|
-
/** Checks for validity and shows the browser's validation message if the control is invalid. */
|
|
252
|
-
async reportValidity() {
|
|
253
|
-
return this.inputElement.reportValidity();
|
|
254
|
-
}
|
|
255
|
-
/** Checks for validity. */
|
|
256
|
-
async checkValidity() {
|
|
257
|
-
return this.inputElement.checkValidity();
|
|
258
|
-
}
|
|
259
|
-
/** Sets a custom validation message. If `message` is not empty, the field will be considered invalid. */
|
|
260
|
-
async setCustomValidity(message) {
|
|
261
|
-
await this.inputElement.setCustomValidity(message);
|
|
262
|
-
}
|
|
263
|
-
/** Resets the formcontrol */
|
|
264
|
-
async reset() {
|
|
265
|
-
this.value = this.defaultValue;
|
|
266
|
-
this.inputElement.value = formatDate(this.defaultValue, this.dateFormat);
|
|
267
|
-
await this.inputElement.reset();
|
|
268
|
-
}
|
|
269
|
-
isValidValue() {
|
|
270
|
-
if (this.value === undefined || this.value === null) {
|
|
271
|
-
return false;
|
|
272
|
-
}
|
|
273
|
-
if (!(this.value instanceof Date)) {
|
|
274
|
-
return true;
|
|
275
|
-
}
|
|
276
|
-
return this.value instanceof Date && isNaN(this.value);
|
|
277
|
-
}
|
|
278
|
-
get calendarGrid() {
|
|
279
|
-
return createCalendarGrid({
|
|
280
|
-
firstDateOfBox: this.firstDateOfBox,
|
|
281
|
-
allowedDates: this.allowedDates,
|
|
282
|
-
dateFormat: this.dateFormat,
|
|
283
|
-
locale: this.locale,
|
|
284
|
-
selectedDate: this.selectedDate,
|
|
285
|
-
minDate: this.min,
|
|
286
|
-
maxDate: this.max,
|
|
287
|
-
pointerDate: this.pointerDate,
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
calcIsDropDownContentUp() {
|
|
291
|
-
if (!this.inputElement || !this.wrapper) {
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
const inputBoundingRect = this.inputElement.getBoundingClientRect();
|
|
295
|
-
const wrapperBoundingRect = this.wrapper.getBoundingClientRect();
|
|
296
|
-
const minPopupHeight = Math.max(wrapperBoundingRect.height, MIN_POPUP_HEIGHT);
|
|
297
|
-
const moreSpaceInTop = inputBoundingRect.y > window.innerHeight / 2;
|
|
298
|
-
this.isDropDownContentUp = moreSpaceInTop && window.innerHeight < inputBoundingRect.bottom + minPopupHeight;
|
|
299
|
-
}
|
|
300
|
-
getMonthStringForIndex(index) {
|
|
301
|
-
return i18nDate[this.locale].months[index];
|
|
302
|
-
}
|
|
303
|
-
previousUnit() {
|
|
304
|
-
if (this.selectionMode === SelectionMode.DAY) {
|
|
305
|
-
this.previousMonth();
|
|
306
|
-
}
|
|
307
|
-
else if (this.selectionMode === SelectionMode.MONTH) {
|
|
308
|
-
this.previousYear();
|
|
309
|
-
}
|
|
310
|
-
else if (this.selectionMode === SelectionMode.YEAR) {
|
|
311
|
-
this.previousYearGroup();
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
previousYear() {
|
|
315
|
-
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year - 1 });
|
|
316
|
-
}
|
|
317
|
-
previousYearGroup() {
|
|
318
|
-
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year - NUMBER_OF_YEARS_SHOWN });
|
|
319
|
-
}
|
|
320
|
-
previousMonth() {
|
|
321
|
-
if (this.pointerDate.month === 0) {
|
|
322
|
-
this.pointerDate = { year: this.pointerDate.year - 1, month: 11, day: 1, hours: 0, minutes: 0, seconds: 0 };
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
this.pointerDate = {
|
|
326
|
-
year: this.pointerDate.year,
|
|
327
|
-
month: this.pointerDate.month - 1,
|
|
328
|
-
day: 1,
|
|
329
|
-
hours: 0,
|
|
330
|
-
minutes: 0,
|
|
331
|
-
seconds: 0,
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
nextUnit() {
|
|
336
|
-
if (this.selectionMode === SelectionMode.DAY) {
|
|
337
|
-
this.nextMonth();
|
|
338
|
-
}
|
|
339
|
-
else if (this.selectionMode === SelectionMode.MONTH) {
|
|
340
|
-
this.nextYear();
|
|
341
|
-
}
|
|
342
|
-
else if (this.selectionMode === SelectionMode.YEAR) {
|
|
343
|
-
this.nextYearGroup();
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
nextMonth() {
|
|
347
|
-
if (this.pointerDate.month === 11) {
|
|
348
|
-
this.pointerDate = { year: this.pointerDate.year + 1, month: 0, day: 1, hours: 0, minutes: 0, seconds: 0 };
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
this.pointerDate = {
|
|
352
|
-
year: this.pointerDate.year,
|
|
353
|
-
month: this.pointerDate.month + 1,
|
|
354
|
-
day: 1,
|
|
355
|
-
hours: 0,
|
|
356
|
-
minutes: 0,
|
|
357
|
-
seconds: 0,
|
|
358
|
-
};
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
nextYear() {
|
|
362
|
-
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year + 1 });
|
|
363
|
-
}
|
|
364
|
-
nextYearGroup() {
|
|
365
|
-
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year + NUMBER_OF_YEARS_SHOWN });
|
|
366
|
-
}
|
|
367
|
-
openCalendar() {
|
|
368
|
-
if (!this.open && !this.disabled) {
|
|
369
|
-
this.open = true;
|
|
370
|
-
this.setupEventListenersForOpenPopup();
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
setupEventListenersForOpenPopup() {
|
|
374
|
-
this.eventListeners.add(document, 'keydown', this.handleDocumentKeyDown);
|
|
375
|
-
this.eventListeners.add(document, 'mousedown', this.handleDocumentMouseDown);
|
|
376
|
-
}
|
|
377
|
-
handleClearClick(event) {
|
|
378
|
-
event.stopPropagation();
|
|
379
|
-
void this.select(undefined);
|
|
380
|
-
this.sixClear.emit();
|
|
381
|
-
}
|
|
382
|
-
closePopup() {
|
|
383
|
-
if (this.inline) {
|
|
384
|
-
return;
|
|
385
|
-
}
|
|
386
|
-
this.open = false;
|
|
387
|
-
this.eventListeners.remove(document, 'keydown', this.handleDocumentKeyDown);
|
|
388
|
-
this.eventListeners.remove(document, 'mousedown', this.handleDocumentMouseDown);
|
|
389
|
-
this.selectionMode = SelectionMode.DAY;
|
|
390
|
-
}
|
|
391
|
-
updatePointerDates() {
|
|
392
|
-
const date = this.getPointerDate();
|
|
393
|
-
if (this.differsFromPointerDate(date)) {
|
|
394
|
-
this.pointerDate = {
|
|
395
|
-
year: year(date),
|
|
396
|
-
month: month(date),
|
|
397
|
-
day: day(date),
|
|
398
|
-
hours: hours(date),
|
|
399
|
-
minutes: minutes(date),
|
|
400
|
-
seconds: seconds(date),
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
differsFromPointerDate(date) {
|
|
405
|
-
return (this.pointerDate.day !== day(date) ||
|
|
406
|
-
this.pointerDate.month !== month(date) ||
|
|
407
|
-
this.pointerDate.year !== year(date) ||
|
|
408
|
-
this.pointerDate.hours !== hours(date) ||
|
|
409
|
-
this.pointerDate.minutes !== minutes(date) ||
|
|
410
|
-
this.pointerDate.seconds !== seconds(date));
|
|
411
|
-
}
|
|
412
|
-
getPointerDate() {
|
|
413
|
-
if (this.selectedDate !== undefined && this.selectedDate !== null) {
|
|
414
|
-
return this.selectedDate;
|
|
415
|
-
}
|
|
416
|
-
if (isNil(this.defaultDate)) {
|
|
417
|
-
return now();
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
return this.defaultDate && toDate(this.defaultDate, this.dateFormat);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
updateValue(newDate) {
|
|
424
|
-
this.displayCustomMessage(true);
|
|
425
|
-
this.updateIfChanged(newDate);
|
|
426
|
-
}
|
|
427
|
-
updateIfChanged(newDate) {
|
|
428
|
-
var _a;
|
|
429
|
-
if (((_a = this.value) === null || _a === void 0 ? void 0 : _a.getTime()) === (newDate === null || newDate === void 0 ? void 0 : newDate.getTime())) {
|
|
430
|
-
return;
|
|
431
|
-
}
|
|
432
|
-
this.value = newDate;
|
|
433
|
-
}
|
|
434
|
-
/**
|
|
435
|
-
* Selects an option
|
|
436
|
-
*/
|
|
437
|
-
async select(datestring) {
|
|
438
|
-
if (!datestring) {
|
|
439
|
-
this.updateValue(undefined);
|
|
440
|
-
}
|
|
441
|
-
else {
|
|
442
|
-
const newDate = toDate(datestring, this.dateFormat);
|
|
443
|
-
newDate.setHours(this.pointerDate.hours, this.pointerDate.minutes, this.pointerDate.seconds);
|
|
444
|
-
this.updateValue(newDate);
|
|
445
|
-
}
|
|
446
|
-
this.updatePointerDates();
|
|
447
|
-
if (this.closeOnSelect) {
|
|
448
|
-
this.closePopup();
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
componentWillLoad() {
|
|
452
|
-
this.validateProps();
|
|
453
|
-
this.defaultValue = this.value;
|
|
454
|
-
this.selectedDate = this.value;
|
|
455
|
-
this.updatePointerDates();
|
|
456
|
-
this.updateValue(this.value);
|
|
457
|
-
if (this.inline) {
|
|
458
|
-
this.open = true;
|
|
459
|
-
}
|
|
460
|
-
if (this.open) {
|
|
461
|
-
this.setupEventListenersForOpenPopup();
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
validateProps() {
|
|
465
|
-
if (this.value !== null && this.value !== undefined && !(this.value instanceof Date)) {
|
|
466
|
-
throw new Error('Datepicker no longer supports strings as value. Use a date object instead!');
|
|
467
|
-
}
|
|
468
|
-
if (this.min !== null && this.min !== undefined && !(this.min instanceof Date)) {
|
|
469
|
-
throw new Error('Datepicker no longer supports strings as min. Use a date object instead!');
|
|
470
|
-
}
|
|
471
|
-
if (this.max !== null && this.max !== undefined && !(this.max instanceof Date)) {
|
|
472
|
-
throw new Error('Datepicker no longer supports strings as min. Use a date object instead!');
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
componentDidLoad() {
|
|
476
|
-
this.eventListeners.add(this.inputElement, 'six-input-input', debounce(this.handleInputChange, this.debounce));
|
|
477
|
-
this.eventListeners.add(this.inputElement, 'six-input-blur', this.handleOnBlur);
|
|
478
|
-
}
|
|
479
|
-
renderHeader() {
|
|
480
|
-
return (h("header", { class: "datepicker-header", part: "header" },
|
|
481
|
-
h("div", { class: "datepicker-header__btn prev", onClick: () => this.previousUnit() },
|
|
482
|
-
h("svg", { viewBox: "0 5 13 13", width: "14", height: "23" },
|
|
483
|
-
h("path", { d: "M11.67 3.87L9.9 2.1 0 12l9.9 9.9 1.77-1.77L3.54 12z" }))),
|
|
484
|
-
h("div", { class: "datepicker-header__label" },
|
|
485
|
-
this.selectionMode === SelectionMode.DAY && (h("div", { onClick: () => (this.selectionMode = SelectionMode.MONTH) },
|
|
486
|
-
h("span", { class: "datepicker-header__label-month" }, this.getMonthStringForIndex(this.pointerDate.month)),
|
|
487
|
-
h("span", null,
|
|
488
|
-
h("svg", { viewBox: "-3 -4 24 24", width: "20", height: "20" },
|
|
489
|
-
h("polyline", { points: "6 9 12 15 18 9" }))))),
|
|
490
|
-
this.selectionMode !== SelectionMode.YEAR && (h("div", { onClick: () => (this.selectionMode = SelectionMode.YEAR) },
|
|
491
|
-
h("span", { class: "datepicker-header__label-year" }, this.pointerDate.year),
|
|
492
|
-
h("span", null,
|
|
493
|
-
h("svg", { viewBox: "-3 -4 24 24", width: "20", height: "20" },
|
|
494
|
-
h("polyline", { points: "6 9 12 15 18 9" }))))),
|
|
495
|
-
this.selectionMode === SelectionMode.YEAR && (h("div", null,
|
|
496
|
-
this.pointerDate.year - Math.floor(NUMBER_OF_YEARS_SHOWN / 2),
|
|
497
|
-
" \u2013",
|
|
498
|
-
' ',
|
|
499
|
-
this.pointerDate.year + Math.floor(NUMBER_OF_YEARS_SHOWN / 2)))),
|
|
500
|
-
h("div", { class: "datepicker-header__btn next", onClick: () => this.nextUnit() },
|
|
501
|
-
h("svg", { viewBox: "5 5 13 13", width: "14", height: "23" },
|
|
502
|
-
h("path", { d: "M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z" })))));
|
|
503
|
-
}
|
|
504
|
-
renderBody() {
|
|
505
|
-
switch (this.selectionMode) {
|
|
506
|
-
case SelectionMode.DAY:
|
|
507
|
-
return (h(DaySelection, { locale: i18nDate[this.locale], calendarGrid: this.calendarGrid, onClickDateCell: this.onClickDateCell }));
|
|
508
|
-
case SelectionMode.MONTH:
|
|
509
|
-
return (h(MonthSelection, { locale: i18nDate[this.locale], selectedDate: this.selectedDate, onClickMonthCell: this.onClickMonthCell }));
|
|
510
|
-
case SelectionMode.YEAR:
|
|
511
|
-
return (h(YearSelection, { selectedDate: this.selectedDate, yearSelection: getYearSelectionAroundYear(this.pointerDate.year), onClickYearCell: this.onClickYearCell }));
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
renderCustomIcon() {
|
|
515
|
-
const icon = hasSlot(this.host, 'custom-icon') ? (h("slot", { name: "custom-icon" })) : (h("six-icon", { size: this.size === 'large' ? 'medium' : this.size }, "today"));
|
|
516
|
-
return (h("span", { slot: "prefix", part: "icon", class: {
|
|
517
|
-
prefix: true,
|
|
518
|
-
'prefix--right': this.iconPosition === 'right',
|
|
519
|
-
} }, icon));
|
|
520
|
-
}
|
|
521
|
-
renderClearable() {
|
|
522
|
-
return (this.clearable && (h("button", { slot: "suffix", class: {
|
|
523
|
-
'datepicker-clear': true,
|
|
524
|
-
'datepicker-clear--right': this.iconPosition === 'left',
|
|
525
|
-
'datepicker-clear--left': this.iconPosition === 'right',
|
|
526
|
-
}, type: "button", onClick: this.handleClearClick, tabindex: "-1" },
|
|
527
|
-
h("six-icon", { size: "small" }, "clear"))));
|
|
528
|
-
}
|
|
529
|
-
render() {
|
|
530
|
-
var _a, _b, _c;
|
|
531
|
-
this.adjustPopupPosition();
|
|
532
|
-
return (h("div", { ref: (el) => (this.wrapper = el), class: "datepicker__container" },
|
|
533
|
-
h("six-input", { part: "base", value: formatDate(this.value, this.dateFormat), ref: (el) => (this.inputElement = el), placeholder: this.placeholder, readonly: this.readonly, disabled: this.disabled, name: this.name, label: this.label, required: this.required, "error-text": this.errorText, "error-on-blur": this.errorOnBlur, onClick: () => this.openCalendar(), size: this.size, class: { 'input--empty': !this.value } },
|
|
534
|
-
this.renderCustomIcon(),
|
|
535
|
-
this.renderClearable(),
|
|
536
|
-
hasSlot(this.host, 'error-text') ? (h("span", { slot: "error-text" },
|
|
537
|
-
h("slot", { name: "error-text" }))) : null,
|
|
538
|
-
hasSlot(this.host, 'label') ? (h("span", { slot: "label" },
|
|
539
|
-
h("slot", { name: "label" }))) : null),
|
|
540
|
-
this.open && (h("div", { part: "popup", ref: (el) => (this.popup = el), class: {
|
|
541
|
-
datepicker__popup: true,
|
|
542
|
-
'datepicker__popup--is-up': this.placement ? this.placement === 'top' : this.isDropDownContentUp,
|
|
543
|
-
'datepicker__popup--is-inline': this.inline,
|
|
544
|
-
} },
|
|
545
|
-
this.renderHeader(),
|
|
546
|
-
this.renderBody(),
|
|
547
|
-
this.type === 'date-time' && (h("six-timepicker", { inline: true, "onSix-timepicker-change-debounced": (event) => this.onTimepickerChange(event), value: ((_a = this.selectedDate) === null || _a === void 0 ? void 0 : _a.getHours()) +
|
|
548
|
-
':' +
|
|
549
|
-
((_b = this.selectedDate) === null || _b === void 0 ? void 0 : _b.getMinutes()) +
|
|
550
|
-
':' +
|
|
551
|
-
((_c = this.selectedDate) === null || _c === void 0 ? void 0 : _c.getSeconds()) })),
|
|
552
|
-
h("div", { class: "datepicker__footer" },
|
|
553
|
-
h("slot", null))))));
|
|
554
|
-
}
|
|
555
|
-
adjustPopupPosition() {
|
|
556
|
-
this.adjustPopupForHoisting();
|
|
557
|
-
this.adjustPopupForSmallScreens();
|
|
558
|
-
}
|
|
559
|
-
/*
|
|
560
|
-
* The position of the hoisted datepicker needs to be correctly calculated since the position changes to fixed.
|
|
561
|
-
* Thus if the user scrolls or adjusts the screen size we need to recalculate the datepicker position.
|
|
562
|
-
*/
|
|
563
|
-
moveOpenHoistedPopup() {
|
|
564
|
-
if (!this.hoist || !this.open) {
|
|
565
|
-
return;
|
|
566
|
-
}
|
|
567
|
-
const popupBoundingClientRect = this.popup.getBoundingClientRect();
|
|
568
|
-
const popupHeight = popupBoundingClientRect.height;
|
|
569
|
-
const inputBoundingClientRect = this.inputElement.getBoundingClientRect();
|
|
570
|
-
const inputTop = inputBoundingClientRect.top;
|
|
571
|
-
const inputHeight = inputBoundingClientRect.height;
|
|
572
|
-
this.calcIsDropDownContentUp();
|
|
573
|
-
if (this.isDropDownContentUp) {
|
|
574
|
-
this.popup.style.top = `${inputTop - popupHeight}px`;
|
|
575
|
-
}
|
|
576
|
-
else {
|
|
577
|
-
this.popup.style.top = `${inputTop + inputHeight}px`;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
/*
|
|
581
|
-
* For small screens the datepicker popup could be cut-off even though there might still be space within the viewport.
|
|
582
|
-
* This is because the popup is always aligned with the trigger input field. However in the scenario of small screens
|
|
583
|
-
* we should reposition the popup to use the space available.
|
|
584
|
-
*/
|
|
585
|
-
adjustPopupForSmallScreens() {
|
|
586
|
-
// execute after dropdown has been rendered to make sure the popup reference is correctly set
|
|
587
|
-
setTimeout(() => {
|
|
588
|
-
if (!this.popup) {
|
|
589
|
-
return;
|
|
590
|
-
}
|
|
591
|
-
const popupBoundingClientRect = this.popup.getBoundingClientRect();
|
|
592
|
-
const setPopupAsFixPosition = () => {
|
|
593
|
-
// apply screen position to fixed popup
|
|
594
|
-
this.popup.style.position = 'fixed';
|
|
595
|
-
['top', 'left', 'width', 'height'].forEach((property) => {
|
|
596
|
-
this.popup.style[property] = `${popupBoundingClientRect[property]}px`;
|
|
597
|
-
});
|
|
598
|
-
};
|
|
599
|
-
if (popupBoundingClientRect.y < 0 &&
|
|
600
|
-
window.innerHeight - popupBoundingClientRect.height > 0 &&
|
|
601
|
-
Math.abs(popupBoundingClientRect.y) <= popupBoundingClientRect.height) {
|
|
602
|
-
// handle case where popup is cut-off on top but there is still space available
|
|
603
|
-
setPopupAsFixPosition();
|
|
604
|
-
this.popup.style.top = '0px';
|
|
605
|
-
}
|
|
606
|
-
else if (window.innerHeight < popupBoundingClientRect.y + popupBoundingClientRect.height &&
|
|
607
|
-
window.innerHeight > popupBoundingClientRect.height &&
|
|
608
|
-
Math.abs(popupBoundingClientRect.y - window.innerHeight) <= popupBoundingClientRect.height) {
|
|
609
|
-
// handle case where popup is cut-off at the bottom but there is still space available above
|
|
610
|
-
// apply screen position to fixed popup
|
|
611
|
-
setPopupAsFixPosition();
|
|
612
|
-
this.popup.style.top = `${window.innerHeight - popupBoundingClientRect.height}px`;
|
|
613
|
-
}
|
|
614
|
-
if (window.innerWidth < popupBoundingClientRect.x + popupBoundingClientRect.width &&
|
|
615
|
-
window.innerWidth > popupBoundingClientRect.width &&
|
|
616
|
-
Math.abs(popupBoundingClientRect.x - window.innerWidth) <= popupBoundingClientRect.width) {
|
|
617
|
-
// handle case where popup is cut-off to the right
|
|
618
|
-
setPopupAsFixPosition();
|
|
619
|
-
this.popup.style.left = `${window.innerWidth - popupBoundingClientRect.width}px`;
|
|
620
|
-
}
|
|
621
|
-
}, 0);
|
|
622
|
-
}
|
|
623
|
-
/*
|
|
624
|
-
* If the popup is hoisted we popup is hoisted its position will change to fix to not be clipped of by a containing container.
|
|
625
|
-
* To render the popup correctly we render it normally, and then assign this screenposition to the fixed popup
|
|
626
|
-
*/
|
|
627
|
-
adjustPopupForHoisting() {
|
|
628
|
-
if (!this.hoist) {
|
|
629
|
-
return;
|
|
630
|
-
}
|
|
631
|
-
// execute after dropdown has been rendered to make sure the popup reference is correctly set
|
|
632
|
-
setTimeout(() => {
|
|
633
|
-
if (!this.popup) {
|
|
634
|
-
return;
|
|
635
|
-
}
|
|
636
|
-
// take a snapshot of normally rendered popup
|
|
637
|
-
const popupBoundingClientRect = this.popup.getBoundingClientRect();
|
|
638
|
-
// apply screen position to fixed popup
|
|
639
|
-
this.popup.style.position = 'fixed';
|
|
640
|
-
['top', 'left', 'width', 'height'].forEach((property) => {
|
|
641
|
-
this.popup.style[property] = `${popupBoundingClientRect[property]}px`;
|
|
642
|
-
});
|
|
643
|
-
const inputBoundingClientRect = this.inputElement.getBoundingClientRect();
|
|
644
|
-
const inputTop = inputBoundingClientRect.top;
|
|
645
|
-
const popupTop = popupBoundingClientRect.top;
|
|
646
|
-
this.calcIsDropDownContentUp();
|
|
647
|
-
// check screen position to check whether the popup should be moved above or below the trigger element
|
|
648
|
-
if (this.isDropDownContentUp && inputTop < popupTop) {
|
|
649
|
-
// move popup above input field if datepicker is at bottom of screen
|
|
650
|
-
this.popup.style.top = `${popupTop - popupBoundingClientRect.height - inputBoundingClientRect.height}px`;
|
|
651
|
-
}
|
|
652
|
-
}, 0);
|
|
653
|
-
}
|
|
654
|
-
connectedCallback() {
|
|
655
|
-
this.handleClearClick = this.handleClearClick.bind(this);
|
|
656
|
-
}
|
|
657
|
-
disconnectedCallback() {
|
|
658
|
-
this.eventListeners.removeAll();
|
|
659
|
-
}
|
|
660
|
-
displayCustomMessage(valid) {
|
|
661
|
-
if (!this.inputElement) {
|
|
662
|
-
return;
|
|
663
|
-
}
|
|
664
|
-
if (valid) {
|
|
665
|
-
void this.setCustomValidity('');
|
|
666
|
-
}
|
|
667
|
-
else {
|
|
668
|
-
const message = this.errorText ? this.errorText : 'Invalid date format';
|
|
669
|
-
void this.setCustomValidity(message);
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
static getCurrentDateAsPointer() {
|
|
673
|
-
return {
|
|
674
|
-
year: year(now()),
|
|
675
|
-
month: month(now()),
|
|
676
|
-
day: day(now()),
|
|
677
|
-
hours: hours(now()),
|
|
678
|
-
minutes: minutes(now()),
|
|
679
|
-
seconds: seconds(now()),
|
|
680
|
-
};
|
|
681
|
-
}
|
|
682
|
-
static get is() { return "six-datepicker"; }
|
|
683
|
-
static get encapsulation() { return "shadow"; }
|
|
684
|
-
static get originalStyleUrls() { return {
|
|
685
|
-
"$": ["six-datepicker.scss"]
|
|
686
|
-
}; }
|
|
687
|
-
static get styleUrls() { return {
|
|
688
|
-
"$": ["six-datepicker.css"]
|
|
689
|
-
}; }
|
|
690
|
-
static get properties() { return {
|
|
691
|
-
"type": {
|
|
692
|
-
"type": "string",
|
|
693
|
-
"mutable": false,
|
|
694
|
-
"complexType": {
|
|
695
|
-
"original": "'date' | 'date-time'",
|
|
696
|
-
"resolved": "\"date\" | \"date-time\"",
|
|
697
|
-
"references": {}
|
|
698
|
-
},
|
|
699
|
-
"required": false,
|
|
700
|
-
"optional": false,
|
|
701
|
-
"docs": {
|
|
702
|
-
"tags": [],
|
|
703
|
-
"text": "Set the type."
|
|
704
|
-
},
|
|
705
|
-
"attribute": "type",
|
|
706
|
-
"reflect": false,
|
|
707
|
-
"defaultValue": "'date'"
|
|
708
|
-
},
|
|
709
|
-
"locale": {
|
|
710
|
-
"type": "string",
|
|
711
|
-
"mutable": false,
|
|
712
|
-
"complexType": {
|
|
713
|
-
"original": "'en' | 'de' | 'fr' | 'it'",
|
|
714
|
-
"resolved": "\"de\" | \"en\" | \"fr\" | \"it\"",
|
|
715
|
-
"references": {}
|
|
716
|
-
},
|
|
717
|
-
"required": false,
|
|
718
|
-
"optional": false,
|
|
719
|
-
"docs": {
|
|
720
|
-
"tags": [],
|
|
721
|
-
"text": "The language used to render the weekdays and months."
|
|
722
|
-
},
|
|
723
|
-
"attribute": "locale",
|
|
724
|
-
"reflect": false,
|
|
725
|
-
"defaultValue": "'en'"
|
|
726
|
-
},
|
|
727
|
-
"open": {
|
|
728
|
-
"type": "boolean",
|
|
729
|
-
"mutable": true,
|
|
730
|
-
"complexType": {
|
|
731
|
-
"original": "boolean",
|
|
732
|
-
"resolved": "boolean",
|
|
733
|
-
"references": {}
|
|
734
|
-
},
|
|
735
|
-
"required": false,
|
|
736
|
-
"optional": false,
|
|
737
|
-
"docs": {
|
|
738
|
-
"tags": [],
|
|
739
|
-
"text": "Indicates whether or not the calendar dropdown is open on startup. You can use this in lieu of the show/hide methods."
|
|
740
|
-
},
|
|
741
|
-
"attribute": "open",
|
|
742
|
-
"reflect": true,
|
|
743
|
-
"defaultValue": "false"
|
|
744
|
-
},
|
|
745
|
-
"inline": {
|
|
746
|
-
"type": "boolean",
|
|
747
|
-
"mutable": false,
|
|
748
|
-
"complexType": {
|
|
749
|
-
"original": "boolean",
|
|
750
|
-
"resolved": "boolean",
|
|
751
|
-
"references": {}
|
|
752
|
-
},
|
|
753
|
-
"required": false,
|
|
754
|
-
"optional": false,
|
|
755
|
-
"docs": {
|
|
756
|
-
"tags": [],
|
|
757
|
-
"text": "Indicates whether or not the calendar should be shown as an inline (always open) component"
|
|
758
|
-
},
|
|
759
|
-
"attribute": "inline",
|
|
760
|
-
"reflect": true,
|
|
761
|
-
"defaultValue": "false"
|
|
762
|
-
},
|
|
763
|
-
"readonly": {
|
|
764
|
-
"type": "boolean",
|
|
765
|
-
"mutable": false,
|
|
766
|
-
"complexType": {
|
|
767
|
-
"original": "boolean",
|
|
768
|
-
"resolved": "boolean",
|
|
769
|
-
"references": {}
|
|
770
|
-
},
|
|
771
|
-
"required": false,
|
|
772
|
-
"optional": false,
|
|
773
|
-
"docs": {
|
|
774
|
-
"tags": [],
|
|
775
|
-
"text": "If `true` the user can only select a date via the component in the popup, but not directly edit the input field."
|
|
776
|
-
},
|
|
777
|
-
"attribute": "readonly",
|
|
778
|
-
"reflect": false,
|
|
779
|
-
"defaultValue": "false"
|
|
780
|
-
},
|
|
781
|
-
"disabled": {
|
|
782
|
-
"type": "boolean",
|
|
783
|
-
"mutable": false,
|
|
784
|
-
"complexType": {
|
|
785
|
-
"original": "boolean",
|
|
786
|
-
"resolved": "boolean",
|
|
787
|
-
"references": {}
|
|
788
|
-
},
|
|
789
|
-
"required": false,
|
|
790
|
-
"optional": false,
|
|
791
|
-
"docs": {
|
|
792
|
-
"tags": [],
|
|
793
|
-
"text": "If `true` the component is disabled."
|
|
794
|
-
},
|
|
795
|
-
"attribute": "disabled",
|
|
796
|
-
"reflect": false,
|
|
797
|
-
"defaultValue": "false"
|
|
798
|
-
},
|
|
799
|
-
"allowedDates": {
|
|
800
|
-
"type": "unknown",
|
|
801
|
-
"mutable": false,
|
|
802
|
-
"complexType": {
|
|
803
|
-
"original": "(date: Date) => boolean",
|
|
804
|
-
"resolved": "(date: Date) => boolean",
|
|
805
|
-
"references": {
|
|
806
|
-
"Date": {
|
|
807
|
-
"location": "global"
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
},
|
|
811
|
-
"required": false,
|
|
812
|
-
"optional": false,
|
|
813
|
-
"docs": {
|
|
814
|
-
"tags": [],
|
|
815
|
-
"text": "Callback to determine which date in the datepicker should be selectable.\nthe callback function will get a datestring as an argument, e.g. '2021-07-04'\n\nUsage e.g.:\nconst datepicker = document.getElementById('allowed-date-picker');\ndatepicker.allowedDates = datestring => parseInt(datestring.split('-')[2], 10) % 2 === 0;"
|
|
816
|
-
},
|
|
817
|
-
"defaultValue": "() => true"
|
|
818
|
-
},
|
|
819
|
-
"min": {
|
|
820
|
-
"type": "unknown",
|
|
821
|
-
"mutable": false,
|
|
822
|
-
"complexType": {
|
|
823
|
-
"original": "Date | null",
|
|
824
|
-
"resolved": "Date",
|
|
825
|
-
"references": {
|
|
826
|
-
"Date": {
|
|
827
|
-
"location": "global"
|
|
828
|
-
}
|
|
829
|
-
}
|
|
830
|
-
},
|
|
831
|
-
"required": false,
|
|
832
|
-
"optional": true,
|
|
833
|
-
"docs": {
|
|
834
|
-
"tags": [],
|
|
835
|
-
"text": "The minimum datetime allowed. Value must be a date object"
|
|
836
|
-
},
|
|
837
|
-
"defaultValue": "null"
|
|
838
|
-
},
|
|
839
|
-
"max": {
|
|
840
|
-
"type": "unknown",
|
|
841
|
-
"mutable": false,
|
|
842
|
-
"complexType": {
|
|
843
|
-
"original": "Date | null",
|
|
844
|
-
"resolved": "Date",
|
|
845
|
-
"references": {
|
|
846
|
-
"Date": {
|
|
847
|
-
"location": "global"
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
},
|
|
851
|
-
"required": false,
|
|
852
|
-
"optional": true,
|
|
853
|
-
"docs": {
|
|
854
|
-
"tags": [],
|
|
855
|
-
"text": "The maximum datetime allowed. Value must be a date object"
|
|
856
|
-
},
|
|
857
|
-
"defaultValue": "null"
|
|
858
|
-
},
|
|
859
|
-
"closeOnSelect": {
|
|
860
|
-
"type": "boolean",
|
|
861
|
-
"mutable": false,
|
|
862
|
-
"complexType": {
|
|
863
|
-
"original": "boolean",
|
|
864
|
-
"resolved": "boolean",
|
|
865
|
-
"references": {}
|
|
866
|
-
},
|
|
867
|
-
"required": false,
|
|
868
|
-
"optional": false,
|
|
869
|
-
"docs": {
|
|
870
|
-
"tags": [],
|
|
871
|
-
"text": "Closes the datepicker dropdown after selection"
|
|
872
|
-
},
|
|
873
|
-
"attribute": "close-on-select",
|
|
874
|
-
"reflect": false,
|
|
875
|
-
"defaultValue": "this.type === 'date'"
|
|
876
|
-
},
|
|
877
|
-
"placement": {
|
|
878
|
-
"type": "string",
|
|
879
|
-
"mutable": false,
|
|
880
|
-
"complexType": {
|
|
881
|
-
"original": "'top' | 'bottom'",
|
|
882
|
-
"resolved": "\"bottom\" | \"top\"",
|
|
883
|
-
"references": {}
|
|
884
|
-
},
|
|
885
|
-
"required": false,
|
|
886
|
-
"optional": false,
|
|
887
|
-
"docs": {
|
|
888
|
-
"tags": [],
|
|
889
|
-
"text": "The enforced placement of the dropdown panel."
|
|
890
|
-
},
|
|
891
|
-
"attribute": "placement",
|
|
892
|
-
"reflect": false
|
|
893
|
-
},
|
|
894
|
-
"size": {
|
|
895
|
-
"type": "string",
|
|
896
|
-
"mutable": false,
|
|
897
|
-
"complexType": {
|
|
898
|
-
"original": "'small' | 'medium' | 'large'",
|
|
899
|
-
"resolved": "\"large\" | \"medium\" | \"small\"",
|
|
900
|
-
"references": {}
|
|
901
|
-
},
|
|
902
|
-
"required": false,
|
|
903
|
-
"optional": false,
|
|
904
|
-
"docs": {
|
|
905
|
-
"tags": [],
|
|
906
|
-
"text": "Datepicker size."
|
|
907
|
-
},
|
|
908
|
-
"attribute": "size",
|
|
909
|
-
"reflect": false,
|
|
910
|
-
"defaultValue": "'medium'"
|
|
911
|
-
},
|
|
912
|
-
"required": {
|
|
913
|
-
"type": "boolean",
|
|
914
|
-
"mutable": false,
|
|
915
|
-
"complexType": {
|
|
916
|
-
"original": "boolean",
|
|
917
|
-
"resolved": "boolean",
|
|
918
|
-
"references": {}
|
|
919
|
-
},
|
|
920
|
-
"required": false,
|
|
921
|
-
"optional": false,
|
|
922
|
-
"docs": {
|
|
923
|
-
"tags": [],
|
|
924
|
-
"text": "Set to true to make the input a required field."
|
|
925
|
-
},
|
|
926
|
-
"attribute": "required",
|
|
927
|
-
"reflect": true
|
|
928
|
-
},
|
|
929
|
-
"defaultDate": {
|
|
930
|
-
"type": "string",
|
|
931
|
-
"mutable": false,
|
|
932
|
-
"complexType": {
|
|
933
|
-
"original": "string | null",
|
|
934
|
-
"resolved": "string",
|
|
935
|
-
"references": {}
|
|
936
|
-
},
|
|
937
|
-
"required": false,
|
|
938
|
-
"optional": true,
|
|
939
|
-
"docs": {
|
|
940
|
-
"tags": [],
|
|
941
|
-
"text": "The date to defines where the datepicker popup starts. The prop accepts ISO 8601 date strings (YYYY-MM-DD)."
|
|
942
|
-
},
|
|
943
|
-
"attribute": "default-date",
|
|
944
|
-
"reflect": false
|
|
945
|
-
},
|
|
946
|
-
"placeholder": {
|
|
947
|
-
"type": "string",
|
|
948
|
-
"mutable": false,
|
|
949
|
-
"complexType": {
|
|
950
|
-
"original": "string | null",
|
|
951
|
-
"resolved": "string",
|
|
952
|
-
"references": {}
|
|
953
|
-
},
|
|
954
|
-
"required": false,
|
|
955
|
-
"optional": true,
|
|
956
|
-
"docs": {
|
|
957
|
-
"tags": [],
|
|
958
|
-
"text": "The placeholder defines what text to be shown on the input element"
|
|
959
|
-
},
|
|
960
|
-
"attribute": "placeholder",
|
|
961
|
-
"reflect": false
|
|
962
|
-
},
|
|
963
|
-
"value": {
|
|
964
|
-
"type": "unknown",
|
|
965
|
-
"mutable": true,
|
|
966
|
-
"complexType": {
|
|
967
|
-
"original": "Date | null",
|
|
968
|
-
"resolved": "Date",
|
|
969
|
-
"references": {
|
|
970
|
-
"Date": {
|
|
971
|
-
"location": "global"
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
},
|
|
975
|
-
"required": false,
|
|
976
|
-
"optional": true,
|
|
977
|
-
"docs": {
|
|
978
|
-
"tags": [],
|
|
979
|
-
"text": "The value of the form field, which accepts a date object."
|
|
980
|
-
},
|
|
981
|
-
"defaultValue": "null"
|
|
982
|
-
},
|
|
983
|
-
"containingElement": {
|
|
984
|
-
"type": "unknown",
|
|
985
|
-
"mutable": false,
|
|
986
|
-
"complexType": {
|
|
987
|
-
"original": "HTMLElement",
|
|
988
|
-
"resolved": "HTMLElement",
|
|
989
|
-
"references": {
|
|
990
|
-
"HTMLElement": {
|
|
991
|
-
"location": "global"
|
|
992
|
-
}
|
|
993
|
-
}
|
|
994
|
-
},
|
|
995
|
-
"required": false,
|
|
996
|
-
"optional": false,
|
|
997
|
-
"docs": {
|
|
998
|
-
"tags": [],
|
|
999
|
-
"text": "The dropdown will close when the user interacts outside of this element (e.g. clicking)."
|
|
1000
|
-
}
|
|
1001
|
-
},
|
|
1002
|
-
"dateFormat": {
|
|
1003
|
-
"type": "string",
|
|
1004
|
-
"mutable": false,
|
|
1005
|
-
"complexType": {
|
|
1006
|
-
"original": "SixDateFormats",
|
|
1007
|
-
"resolved": "SixDateFormats.DDMMYYYY_DASH | SixDateFormats.DDMMYYYY_DASH_TIME | SixDateFormats.DDMMYYYY_SLASH | SixDateFormats.DDMMYYYY_SLASH_TIME | SixDateFormats.DDMMYYY_DOT | SixDateFormats.DDMMYYY_DOT_TIME | SixDateFormats.DDMMYY_DASH | SixDateFormats.DDMMYY_DASH_TIME | SixDateFormats.DDMMYY_DOT | SixDateFormats.DDMMYY_DOT_TIME | SixDateFormats.DDMMYY_SLASH | SixDateFormats.DDMMYY_SLASH_TIME | SixDateFormats.YYMMDD_DASH | SixDateFormats.YYMMDD_DASH_TIME | SixDateFormats.YYMMDD_SLASH | SixDateFormats.YYMMDD_SLASH_TIME | SixDateFormats.YYYYMMDD_DASH | SixDateFormats.YYYYMMDD_DASH_TIME | SixDateFormats.YYYYMMDD_SLASH | SixDateFormats.YYYYMMDD_SLASH_TIME",
|
|
1008
|
-
"references": {
|
|
1009
|
-
"SixDateFormats": {
|
|
1010
|
-
"location": "import",
|
|
1011
|
-
"path": "./six-date-formats"
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
},
|
|
1015
|
-
"required": false,
|
|
1016
|
-
"optional": false,
|
|
1017
|
-
"docs": {
|
|
1018
|
-
"tags": [],
|
|
1019
|
-
"text": "Define the dateFormat. Valid formats are:\n'dd.mm.yyyy'\n'yyyy-mm-dd'\n'dd-mm-yyyy'\n'dd/mm/yyyy'\n'yyyy/mm/dd'\n'dd.mm.yy'\n'yy-mm-dd'\n'dd-mm-yy'\n'dd/mm/yy'\n'yy/mm/dd'"
|
|
1020
|
-
},
|
|
1021
|
-
"attribute": "date-format",
|
|
1022
|
-
"reflect": false,
|
|
1023
|
-
"defaultValue": "SixDateFormats.DDMMYYY_DOT"
|
|
1024
|
-
},
|
|
1025
|
-
"debounce": {
|
|
1026
|
-
"type": "number",
|
|
1027
|
-
"mutable": false,
|
|
1028
|
-
"complexType": {
|
|
1029
|
-
"original": "number",
|
|
1030
|
-
"resolved": "number",
|
|
1031
|
-
"references": {}
|
|
1032
|
-
},
|
|
1033
|
-
"required": false,
|
|
1034
|
-
"optional": false,
|
|
1035
|
-
"docs": {
|
|
1036
|
-
"tags": [],
|
|
1037
|
-
"text": "Set the amount of time, in milliseconds, to wait to trigger the `dateChange` event after each keystroke."
|
|
1038
|
-
},
|
|
1039
|
-
"attribute": "debounce",
|
|
1040
|
-
"reflect": false,
|
|
1041
|
-
"defaultValue": "DEFAULT_DEBOUNCE_FAST"
|
|
1042
|
-
},
|
|
1043
|
-
"errorOnBlur": {
|
|
1044
|
-
"type": "boolean",
|
|
1045
|
-
"mutable": false,
|
|
1046
|
-
"complexType": {
|
|
1047
|
-
"original": "boolean",
|
|
1048
|
-
"resolved": "boolean",
|
|
1049
|
-
"references": {}
|
|
1050
|
-
},
|
|
1051
|
-
"required": false,
|
|
1052
|
-
"optional": false,
|
|
1053
|
-
"docs": {
|
|
1054
|
-
"tags": [],
|
|
1055
|
-
"text": "Set to display the error text on blur and not when typing"
|
|
1056
|
-
},
|
|
1057
|
-
"attribute": "error-on-blur",
|
|
1058
|
-
"reflect": false,
|
|
1059
|
-
"defaultValue": "false"
|
|
1060
|
-
},
|
|
1061
|
-
"errorText": {
|
|
1062
|
-
"type": "string",
|
|
1063
|
-
"mutable": false,
|
|
1064
|
-
"complexType": {
|
|
1065
|
-
"original": "string",
|
|
1066
|
-
"resolved": "string",
|
|
1067
|
-
"references": {}
|
|
1068
|
-
},
|
|
1069
|
-
"required": false,
|
|
1070
|
-
"optional": false,
|
|
1071
|
-
"docs": {
|
|
1072
|
-
"tags": [],
|
|
1073
|
-
"text": "The input's error text. Alternatively, you can use the error-text slot."
|
|
1074
|
-
},
|
|
1075
|
-
"attribute": "error-text",
|
|
1076
|
-
"reflect": false,
|
|
1077
|
-
"defaultValue": "''"
|
|
1078
|
-
},
|
|
1079
|
-
"label": {
|
|
1080
|
-
"type": "string",
|
|
1081
|
-
"mutable": false,
|
|
1082
|
-
"complexType": {
|
|
1083
|
-
"original": "string",
|
|
1084
|
-
"resolved": "string",
|
|
1085
|
-
"references": {}
|
|
1086
|
-
},
|
|
1087
|
-
"required": false,
|
|
1088
|
-
"optional": false,
|
|
1089
|
-
"docs": {
|
|
1090
|
-
"tags": [],
|
|
1091
|
-
"text": "The input's label. Alternatively, you can use the label slot."
|
|
1092
|
-
},
|
|
1093
|
-
"attribute": "label",
|
|
1094
|
-
"reflect": false,
|
|
1095
|
-
"defaultValue": "''"
|
|
1096
|
-
},
|
|
1097
|
-
"name": {
|
|
1098
|
-
"type": "string",
|
|
1099
|
-
"mutable": false,
|
|
1100
|
-
"complexType": {
|
|
1101
|
-
"original": "string",
|
|
1102
|
-
"resolved": "string",
|
|
1103
|
-
"references": {}
|
|
1104
|
-
},
|
|
1105
|
-
"required": false,
|
|
1106
|
-
"optional": false,
|
|
1107
|
-
"docs": {
|
|
1108
|
-
"tags": [],
|
|
1109
|
-
"text": "The input's name attribute."
|
|
1110
|
-
},
|
|
1111
|
-
"attribute": "name",
|
|
1112
|
-
"reflect": true,
|
|
1113
|
-
"defaultValue": "''"
|
|
1114
|
-
},
|
|
1115
|
-
"clearable": {
|
|
1116
|
-
"type": "boolean",
|
|
1117
|
-
"mutable": false,
|
|
1118
|
-
"complexType": {
|
|
1119
|
-
"original": "boolean",
|
|
1120
|
-
"resolved": "boolean",
|
|
1121
|
-
"references": {}
|
|
1122
|
-
},
|
|
1123
|
-
"required": false,
|
|
1124
|
-
"optional": false,
|
|
1125
|
-
"docs": {
|
|
1126
|
-
"tags": [],
|
|
1127
|
-
"text": "Set to true to add a clear button when the input is populated."
|
|
1128
|
-
},
|
|
1129
|
-
"attribute": "clearable",
|
|
1130
|
-
"reflect": false,
|
|
1131
|
-
"defaultValue": "false"
|
|
1132
|
-
},
|
|
1133
|
-
"iconPosition": {
|
|
1134
|
-
"type": "string",
|
|
1135
|
-
"mutable": false,
|
|
1136
|
-
"complexType": {
|
|
1137
|
-
"original": "'left' | 'right'",
|
|
1138
|
-
"resolved": "\"left\" | \"right\"",
|
|
1139
|
-
"references": {}
|
|
1140
|
-
},
|
|
1141
|
-
"required": false,
|
|
1142
|
-
"optional": false,
|
|
1143
|
-
"docs": {
|
|
1144
|
-
"tags": [],
|
|
1145
|
-
"text": "Set the position of the icon"
|
|
1146
|
-
},
|
|
1147
|
-
"attribute": "icon-position",
|
|
1148
|
-
"reflect": false,
|
|
1149
|
-
"defaultValue": "'left'"
|
|
1150
|
-
},
|
|
1151
|
-
"hoist": {
|
|
1152
|
-
"type": "boolean",
|
|
1153
|
-
"mutable": false,
|
|
1154
|
-
"complexType": {
|
|
1155
|
-
"original": "boolean",
|
|
1156
|
-
"resolved": "boolean",
|
|
1157
|
-
"references": {}
|
|
1158
|
-
},
|
|
1159
|
-
"required": false,
|
|
1160
|
-
"optional": false,
|
|
1161
|
-
"docs": {
|
|
1162
|
-
"tags": [],
|
|
1163
|
-
"text": "Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`."
|
|
1164
|
-
},
|
|
1165
|
-
"attribute": "hoist",
|
|
1166
|
-
"reflect": false,
|
|
1167
|
-
"defaultValue": "false"
|
|
1168
|
-
}
|
|
1169
|
-
}; }
|
|
1170
|
-
static get states() { return {
|
|
1171
|
-
"pointerDate": {},
|
|
1172
|
-
"selectionMode": {},
|
|
1173
|
-
"isDropDownContentUp": {}
|
|
1174
|
-
}; }
|
|
1175
|
-
static get events() { return [{
|
|
1176
|
-
"method": "sixSelect",
|
|
1177
|
-
"name": "six-datepicker-select",
|
|
1178
|
-
"bubbles": true,
|
|
1179
|
-
"cancelable": true,
|
|
1180
|
-
"composed": true,
|
|
1181
|
-
"docs": {
|
|
1182
|
-
"tags": [],
|
|
1183
|
-
"text": "Emitted when a option got selected."
|
|
1184
|
-
},
|
|
1185
|
-
"complexType": {
|
|
1186
|
-
"original": "SixDatepickerSelectPayload",
|
|
1187
|
-
"resolved": "Date",
|
|
1188
|
-
"references": {
|
|
1189
|
-
"SixDatepickerSelectPayload": {
|
|
1190
|
-
"location": "local"
|
|
1191
|
-
}
|
|
1192
|
-
}
|
|
1193
|
-
}
|
|
1194
|
-
}, {
|
|
1195
|
-
"method": "sixClear",
|
|
1196
|
-
"name": "six-datepicker-clear",
|
|
1197
|
-
"bubbles": true,
|
|
1198
|
-
"cancelable": true,
|
|
1199
|
-
"composed": true,
|
|
1200
|
-
"docs": {
|
|
1201
|
-
"tags": [],
|
|
1202
|
-
"text": "Emitted when the clear button is activated."
|
|
1203
|
-
},
|
|
1204
|
-
"complexType": {
|
|
1205
|
-
"original": "EmptyPayload",
|
|
1206
|
-
"resolved": "undefined",
|
|
1207
|
-
"references": {
|
|
1208
|
-
"EmptyPayload": {
|
|
1209
|
-
"location": "import",
|
|
1210
|
-
"path": "../../utils/types"
|
|
1211
|
-
}
|
|
1212
|
-
}
|
|
1213
|
-
}
|
|
1214
|
-
}, {
|
|
1215
|
-
"method": "sixBlur",
|
|
1216
|
-
"name": "six-datepicker-blur",
|
|
1217
|
-
"bubbles": true,
|
|
1218
|
-
"cancelable": true,
|
|
1219
|
-
"composed": true,
|
|
1220
|
-
"docs": {
|
|
1221
|
-
"tags": [],
|
|
1222
|
-
"text": "Emitted when a option got selected."
|
|
1223
|
-
},
|
|
1224
|
-
"complexType": {
|
|
1225
|
-
"original": "SixDatepickerSelectPayload",
|
|
1226
|
-
"resolved": "Date",
|
|
1227
|
-
"references": {
|
|
1228
|
-
"SixDatepickerSelectPayload": {
|
|
1229
|
-
"location": "local"
|
|
1230
|
-
}
|
|
1231
|
-
}
|
|
1232
|
-
}
|
|
1233
|
-
}]; }
|
|
1234
|
-
static get methods() { return {
|
|
1235
|
-
"reportValidity": {
|
|
1236
|
-
"complexType": {
|
|
1237
|
-
"signature": "() => Promise<boolean>",
|
|
1238
|
-
"parameters": [],
|
|
1239
|
-
"references": {
|
|
1240
|
-
"Promise": {
|
|
1241
|
-
"location": "global"
|
|
1242
|
-
}
|
|
1243
|
-
},
|
|
1244
|
-
"return": "Promise<boolean>"
|
|
1245
|
-
},
|
|
1246
|
-
"docs": {
|
|
1247
|
-
"text": "Checks for validity and shows the browser's validation message if the control is invalid.",
|
|
1248
|
-
"tags": []
|
|
1249
|
-
}
|
|
1250
|
-
},
|
|
1251
|
-
"checkValidity": {
|
|
1252
|
-
"complexType": {
|
|
1253
|
-
"signature": "() => Promise<boolean>",
|
|
1254
|
-
"parameters": [],
|
|
1255
|
-
"references": {
|
|
1256
|
-
"Promise": {
|
|
1257
|
-
"location": "global"
|
|
1258
|
-
}
|
|
1259
|
-
},
|
|
1260
|
-
"return": "Promise<boolean>"
|
|
1261
|
-
},
|
|
1262
|
-
"docs": {
|
|
1263
|
-
"text": "Checks for validity.",
|
|
1264
|
-
"tags": []
|
|
1265
|
-
}
|
|
1266
|
-
},
|
|
1267
|
-
"setCustomValidity": {
|
|
1268
|
-
"complexType": {
|
|
1269
|
-
"signature": "(message: string) => Promise<void>",
|
|
1270
|
-
"parameters": [{
|
|
1271
|
-
"tags": [],
|
|
1272
|
-
"text": ""
|
|
1273
|
-
}],
|
|
1274
|
-
"references": {
|
|
1275
|
-
"Promise": {
|
|
1276
|
-
"location": "global"
|
|
1277
|
-
}
|
|
1278
|
-
},
|
|
1279
|
-
"return": "Promise<void>"
|
|
1280
|
-
},
|
|
1281
|
-
"docs": {
|
|
1282
|
-
"text": "Sets a custom validation message. If `message` is not empty, the field will be considered invalid.",
|
|
1283
|
-
"tags": []
|
|
1284
|
-
}
|
|
1285
|
-
},
|
|
1286
|
-
"reset": {
|
|
1287
|
-
"complexType": {
|
|
1288
|
-
"signature": "() => Promise<void>",
|
|
1289
|
-
"parameters": [],
|
|
1290
|
-
"references": {
|
|
1291
|
-
"Promise": {
|
|
1292
|
-
"location": "global"
|
|
1293
|
-
}
|
|
1294
|
-
},
|
|
1295
|
-
"return": "Promise<void>"
|
|
1296
|
-
},
|
|
1297
|
-
"docs": {
|
|
1298
|
-
"text": "Resets the formcontrol",
|
|
1299
|
-
"tags": []
|
|
1300
|
-
}
|
|
1301
|
-
},
|
|
1302
|
-
"select": {
|
|
1303
|
-
"complexType": {
|
|
1304
|
-
"signature": "(datestring: string) => Promise<void>",
|
|
1305
|
-
"parameters": [{
|
|
1306
|
-
"tags": [],
|
|
1307
|
-
"text": ""
|
|
1308
|
-
}],
|
|
1309
|
-
"references": {
|
|
1310
|
-
"Promise": {
|
|
1311
|
-
"location": "global"
|
|
1312
|
-
}
|
|
1313
|
-
},
|
|
1314
|
-
"return": "Promise<void>"
|
|
1315
|
-
},
|
|
1316
|
-
"docs": {
|
|
1317
|
-
"text": "Selects an option",
|
|
1318
|
-
"tags": []
|
|
1319
|
-
}
|
|
1320
|
-
}
|
|
1321
|
-
}; }
|
|
1322
|
-
static get elementRef() { return "host"; }
|
|
1323
|
-
static get watchers() { return [{
|
|
1324
|
-
"propName": "debounce",
|
|
1325
|
-
"methodName": "debounceChanged"
|
|
1326
|
-
}, {
|
|
1327
|
-
"propName": "value",
|
|
1328
|
-
"methodName": "valueChanged"
|
|
1329
|
-
}]; }
|
|
1330
|
-
static get listeners() { return [{
|
|
1331
|
-
"name": "resize",
|
|
1332
|
-
"method": "resizeHandler",
|
|
1333
|
-
"target": "window",
|
|
1334
|
-
"capture": false,
|
|
1335
|
-
"passive": true
|
|
1336
|
-
}, {
|
|
1337
|
-
"name": "scroll",
|
|
1338
|
-
"method": "scrollHandler",
|
|
1339
|
-
"target": "window",
|
|
1340
|
-
"capture": false,
|
|
1341
|
-
"passive": true
|
|
1342
|
-
}]; }
|
|
1343
|
-
}
|
|
1
|
+
import { Component, Element, Event, h, Listen, Method, Prop, State, Watch } from '@stencil/core';
|
|
2
|
+
import { createCalendarGrid, day, formatDate, getFirstDayOfTheWeek, hours, i18nDate, isValidDate, isValidDateString, minutes, month, now, seconds, toDate, year, } from '../../utils/date-util';
|
|
3
|
+
import { EventListeners } from '../../utils/event-listeners';
|
|
4
|
+
import { isNil } from '../../utils/type-check';
|
|
5
|
+
import { debounce, debounceEvent, DEFAULT_DEBOUNCE_FAST } from '../../utils/execution-control';
|
|
6
|
+
import { hasSlot } from '../../utils/slot';
|
|
7
|
+
import { SixDateFormats } from './six-date-formats';
|
|
8
|
+
import { MonthSelection } from './components/month-selection';
|
|
9
|
+
import { DaySelection } from './components/day-selection';
|
|
10
|
+
import { YearSelection } from './components/year-selection';
|
|
11
|
+
import { SixTimePropertyName } from '../six-timepicker/six-timepicker.types';
|
|
12
|
+
const NUMBER_OF_YEARS_SHOWN = 25;
|
|
13
|
+
const MIN_POPUP_HEIGHT = 400;
|
|
14
|
+
var SelectionMode;
|
|
15
|
+
(function (SelectionMode) {
|
|
16
|
+
SelectionMode["DAY"] = "day";
|
|
17
|
+
SelectionMode["MONTH"] = "month";
|
|
18
|
+
SelectionMode["YEAR"] = "year";
|
|
19
|
+
})(SelectionMode || (SelectionMode = {}));
|
|
20
|
+
const getYearSelectionAroundYear = (year) => {
|
|
21
|
+
const numberOfElementsPerRow = 5;
|
|
22
|
+
return Array.from(new Array(NUMBER_OF_YEARS_SHOWN).keys())
|
|
23
|
+
.map((n) => n + year - Math.floor(NUMBER_OF_YEARS_SHOWN / 2))
|
|
24
|
+
.reduce((curr, item, index) => {
|
|
25
|
+
if (index % numberOfElementsPerRow === 0) {
|
|
26
|
+
curr.push([]);
|
|
27
|
+
}
|
|
28
|
+
curr[curr.length - 1].push(item);
|
|
29
|
+
return curr;
|
|
30
|
+
}, []);
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* @since 1.0
|
|
34
|
+
* @status stable
|
|
35
|
+
*
|
|
36
|
+
* @slot - Used to define a footer for the date picker.
|
|
37
|
+
*/
|
|
38
|
+
export class SixDatepicker {
|
|
39
|
+
constructor() {
|
|
40
|
+
this.eventListeners = new EventListeners();
|
|
41
|
+
this.selectedDate = null;
|
|
42
|
+
this.pointerDate = SixDatepicker.getCurrentDateAsPointer();
|
|
43
|
+
this.selectionMode = SelectionMode.DAY;
|
|
44
|
+
this.isDropDownContentUp = false;
|
|
45
|
+
/**
|
|
46
|
+
* Set the type.
|
|
47
|
+
*/
|
|
48
|
+
this.type = 'date';
|
|
49
|
+
/**
|
|
50
|
+
* The language used to render the weekdays and months.
|
|
51
|
+
*/
|
|
52
|
+
this.locale = 'en';
|
|
53
|
+
/** Indicates whether or not the calendar dropdown is open on startup. You can use this in lieu of the show/hide methods. */
|
|
54
|
+
this.open = false;
|
|
55
|
+
/** Indicates whether or not the calendar should be shown as an inline (always open) component */
|
|
56
|
+
this.inline = false;
|
|
57
|
+
/**
|
|
58
|
+
* If `true` the user can only select a date via the component in the popup, but not directly edit the input field.
|
|
59
|
+
*/
|
|
60
|
+
this.readonly = false;
|
|
61
|
+
/**
|
|
62
|
+
* If `true` the component is disabled.
|
|
63
|
+
*/
|
|
64
|
+
this.disabled = false;
|
|
65
|
+
/**
|
|
66
|
+
* Callback to determine which date in the datepicker should be selectable.
|
|
67
|
+
* the callback function will get a datestring as an argument, e.g. '2021-07-04'
|
|
68
|
+
*
|
|
69
|
+
* Usage e.g.:
|
|
70
|
+
* const datepicker = document.getElementById('allowed-date-picker');
|
|
71
|
+
* datepicker.allowedDates = datestring => parseInt(datestring.split('-')[2], 10) % 2 === 0;
|
|
72
|
+
*/
|
|
73
|
+
this.allowedDates = () => true;
|
|
74
|
+
/**
|
|
75
|
+
* The minimum datetime allowed. Value must be a date object
|
|
76
|
+
*/
|
|
77
|
+
this.min = null;
|
|
78
|
+
/**
|
|
79
|
+
* The maximum datetime allowed. Value must be a date object
|
|
80
|
+
*/
|
|
81
|
+
this.max = null;
|
|
82
|
+
/**
|
|
83
|
+
* Closes the datepicker dropdown after selection
|
|
84
|
+
*/
|
|
85
|
+
this.closeOnSelect = this.type === 'date';
|
|
86
|
+
/** Datepicker size. */
|
|
87
|
+
this.size = 'medium';
|
|
88
|
+
/**
|
|
89
|
+
* The value of the form field, which accepts a date object.
|
|
90
|
+
*/
|
|
91
|
+
this.value = null;
|
|
92
|
+
/** Define the dateFormat. Valid formats are:
|
|
93
|
+
* 'dd.mm.yyyy'
|
|
94
|
+
* 'yyyy-mm-dd'
|
|
95
|
+
* 'dd-mm-yyyy'
|
|
96
|
+
* 'dd/mm/yyyy'
|
|
97
|
+
* 'yyyy/mm/dd'
|
|
98
|
+
* 'dd.mm.yy'
|
|
99
|
+
* 'yy-mm-dd'
|
|
100
|
+
* 'dd-mm-yy'
|
|
101
|
+
* 'dd/mm/yy'
|
|
102
|
+
* 'yy/mm/dd'
|
|
103
|
+
* */
|
|
104
|
+
this.dateFormat = SixDateFormats.DDMMYYY_DOT;
|
|
105
|
+
/**
|
|
106
|
+
* Set the amount of time, in milliseconds, to wait to trigger the `dateChange` event after each keystroke.
|
|
107
|
+
*/
|
|
108
|
+
this.debounce = DEFAULT_DEBOUNCE_FAST;
|
|
109
|
+
/** Set to display the error text on blur and not when typing */
|
|
110
|
+
this.errorOnBlur = false;
|
|
111
|
+
/** The input's error text. Alternatively, you can use the error-text slot. */
|
|
112
|
+
this.errorText = '';
|
|
113
|
+
/** The input's label. Alternatively, you can use the label slot. */
|
|
114
|
+
this.label = '';
|
|
115
|
+
/** The input's name attribute. */
|
|
116
|
+
this.name = '';
|
|
117
|
+
/** Set to true to add a clear button when the input is populated. */
|
|
118
|
+
this.clearable = false;
|
|
119
|
+
/** Set the position of the icon */
|
|
120
|
+
this.iconPosition = 'left';
|
|
121
|
+
/**
|
|
122
|
+
* Enable this option to prevent the panel from being clipped when the component is placed inside a container with
|
|
123
|
+
* `overflow: auto|scroll`.
|
|
124
|
+
*/
|
|
125
|
+
this.hoist = false;
|
|
126
|
+
this.defaultValue = null;
|
|
127
|
+
this.handleDocumentKeyDown = (event) => {
|
|
128
|
+
// Close when escape is pressed
|
|
129
|
+
if (this.open && event.key === 'Escape') {
|
|
130
|
+
event.stopPropagation();
|
|
131
|
+
this.closePopup();
|
|
132
|
+
void this.inputElement.setFocus();
|
|
133
|
+
}
|
|
134
|
+
// Handle tabbing
|
|
135
|
+
if (event.key === 'Tab') {
|
|
136
|
+
this.closePopup();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
this.handleDocumentMouseDown = (event) => {
|
|
140
|
+
// Close when clicking outside of the containing element
|
|
141
|
+
const path = event.composedPath();
|
|
142
|
+
if (!path.includes(this.container)) {
|
|
143
|
+
this.closePopup();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
this.onTimepickerChange = (sixTimepickerChange) => {
|
|
148
|
+
const time = sixTimepickerChange.detail.value;
|
|
149
|
+
const newDate = new Date();
|
|
150
|
+
if (this.selectedDate) {
|
|
151
|
+
newDate.setFullYear(this.selectedDate.getFullYear(), this.selectedDate.getMonth(), this.selectedDate.getDate());
|
|
152
|
+
}
|
|
153
|
+
newDate.setHours(time[SixTimePropertyName.HOURS], time[SixTimePropertyName.MINUTES], time[SixTimePropertyName.SECONDS]);
|
|
154
|
+
this.updateValue(newDate);
|
|
155
|
+
this.updatePointerDates();
|
|
156
|
+
};
|
|
157
|
+
this.onClickDateCell = (cell) => {
|
|
158
|
+
if (!cell.isDisabled) {
|
|
159
|
+
void this.select(cell.dateString);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
this.onClickMonthCell = (selectedMonth) => {
|
|
163
|
+
const month = i18nDate[this.locale].monthsShort.findIndex((monthShort) => monthShort === selectedMonth);
|
|
164
|
+
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { month });
|
|
165
|
+
this.selectionMode = SelectionMode.DAY;
|
|
166
|
+
};
|
|
167
|
+
this.onClickYearCell = (year) => {
|
|
168
|
+
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year });
|
|
169
|
+
this.selectionMode = SelectionMode.DAY;
|
|
170
|
+
};
|
|
171
|
+
this.handleInputChange = (event) => {
|
|
172
|
+
const inputValue = this.inputElement.value;
|
|
173
|
+
if (!isValidDateString(inputValue, this.dateFormat)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const inputValueDate = toDate(inputValue, this.dateFormat);
|
|
177
|
+
if (inputValueDate === undefined) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (this.min && this.min.getTime() > inputValueDate.getTime()) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (this.max && this.max.getTime() < inputValueDate.getTime()) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
this.updateIfChanged(inputValueDate);
|
|
187
|
+
event.stopPropagation();
|
|
188
|
+
const datesOnly = inputValue.replace(/[^\d]/g, '');
|
|
189
|
+
let isDateValid = !inputValue;
|
|
190
|
+
if (inputValue && datesOnly.length >= 6) {
|
|
191
|
+
const date = toDate(inputValue, this.dateFormat);
|
|
192
|
+
const datestring = formatDate(date, this.dateFormat);
|
|
193
|
+
if (isValidDateString(datestring, this.dateFormat)) {
|
|
194
|
+
this.selectedDate = toDate(datestring, this.dateFormat);
|
|
195
|
+
this.updatePointerDates();
|
|
196
|
+
this.updateValue(this.selectedDate);
|
|
197
|
+
isDateValid = true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
this.displayCustomMessage(isDateValid);
|
|
201
|
+
};
|
|
202
|
+
this.handleOnBlur = (event) => {
|
|
203
|
+
// clear the value if the user deleted the date
|
|
204
|
+
if (this.inputElement.value === '' && isValidDate(this.value)) {
|
|
205
|
+
this.value = undefined;
|
|
206
|
+
}
|
|
207
|
+
event.stopPropagation();
|
|
208
|
+
const inputValue = this.inputElement.value;
|
|
209
|
+
const inputValueDate = toDate(inputValue, this.dateFormat);
|
|
210
|
+
const formattedDate = formatDate(this.value, this.dateFormat);
|
|
211
|
+
if (inputValueDate && inputValue !== formattedDate) {
|
|
212
|
+
// properly format date if necessary
|
|
213
|
+
this.inputElement.value = formattedDate;
|
|
214
|
+
}
|
|
215
|
+
this.sixBlur.emit(this.value);
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
debounceChanged() {
|
|
219
|
+
this.sixSelect = debounceEvent(this.sixSelect, this.debounce);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Update the native input element when the value changes
|
|
223
|
+
*/
|
|
224
|
+
valueChanged() {
|
|
225
|
+
// map unreadable values to undefined to make the datepicker fault-tolerant
|
|
226
|
+
if (this.isValidValue()) {
|
|
227
|
+
console.warn('Encountered unreadable date, will map to undefined. Received value', this.value);
|
|
228
|
+
this.value = undefined;
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
this.selectedDate = this.value;
|
|
232
|
+
this.updatePointerDates();
|
|
233
|
+
this.sixSelect.emit(this.value);
|
|
234
|
+
}
|
|
235
|
+
async resizeHandler() {
|
|
236
|
+
this.calcIsDropDownContentUp();
|
|
237
|
+
this.moveOpenHoistedPopup();
|
|
238
|
+
this.adjustPopupPosition();
|
|
239
|
+
}
|
|
240
|
+
async scrollHandler() {
|
|
241
|
+
this.calcIsDropDownContentUp();
|
|
242
|
+
this.moveOpenHoistedPopup();
|
|
243
|
+
}
|
|
244
|
+
get container() {
|
|
245
|
+
return this.containingElement || this.host;
|
|
246
|
+
}
|
|
247
|
+
get firstDateOfBox() {
|
|
248
|
+
const date = new Date(this.pointerDate.year, this.pointerDate.month, 1);
|
|
249
|
+
return getFirstDayOfTheWeek(date);
|
|
250
|
+
}
|
|
251
|
+
/** Checks for validity and shows the browser's validation message if the control is invalid. */
|
|
252
|
+
async reportValidity() {
|
|
253
|
+
return this.inputElement.reportValidity();
|
|
254
|
+
}
|
|
255
|
+
/** Checks for validity. */
|
|
256
|
+
async checkValidity() {
|
|
257
|
+
return this.inputElement.checkValidity();
|
|
258
|
+
}
|
|
259
|
+
/** Sets a custom validation message. If `message` is not empty, the field will be considered invalid. */
|
|
260
|
+
async setCustomValidity(message) {
|
|
261
|
+
await this.inputElement.setCustomValidity(message);
|
|
262
|
+
}
|
|
263
|
+
/** Resets the formcontrol */
|
|
264
|
+
async reset() {
|
|
265
|
+
this.value = this.defaultValue;
|
|
266
|
+
this.inputElement.value = formatDate(this.defaultValue, this.dateFormat);
|
|
267
|
+
await this.inputElement.reset();
|
|
268
|
+
}
|
|
269
|
+
isValidValue() {
|
|
270
|
+
if (this.value === undefined || this.value === null) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
if (!(this.value instanceof Date)) {
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
return this.value instanceof Date && isNaN(this.value);
|
|
277
|
+
}
|
|
278
|
+
get calendarGrid() {
|
|
279
|
+
return createCalendarGrid({
|
|
280
|
+
firstDateOfBox: this.firstDateOfBox,
|
|
281
|
+
allowedDates: this.allowedDates,
|
|
282
|
+
dateFormat: this.dateFormat,
|
|
283
|
+
locale: this.locale,
|
|
284
|
+
selectedDate: this.selectedDate,
|
|
285
|
+
minDate: this.min,
|
|
286
|
+
maxDate: this.max,
|
|
287
|
+
pointerDate: this.pointerDate,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
calcIsDropDownContentUp() {
|
|
291
|
+
if (!this.inputElement || !this.wrapper) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const inputBoundingRect = this.inputElement.getBoundingClientRect();
|
|
295
|
+
const wrapperBoundingRect = this.wrapper.getBoundingClientRect();
|
|
296
|
+
const minPopupHeight = Math.max(wrapperBoundingRect.height, MIN_POPUP_HEIGHT);
|
|
297
|
+
const moreSpaceInTop = inputBoundingRect.y > window.innerHeight / 2;
|
|
298
|
+
this.isDropDownContentUp = moreSpaceInTop && window.innerHeight < inputBoundingRect.bottom + minPopupHeight;
|
|
299
|
+
}
|
|
300
|
+
getMonthStringForIndex(index) {
|
|
301
|
+
return i18nDate[this.locale].months[index];
|
|
302
|
+
}
|
|
303
|
+
previousUnit() {
|
|
304
|
+
if (this.selectionMode === SelectionMode.DAY) {
|
|
305
|
+
this.previousMonth();
|
|
306
|
+
}
|
|
307
|
+
else if (this.selectionMode === SelectionMode.MONTH) {
|
|
308
|
+
this.previousYear();
|
|
309
|
+
}
|
|
310
|
+
else if (this.selectionMode === SelectionMode.YEAR) {
|
|
311
|
+
this.previousYearGroup();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
previousYear() {
|
|
315
|
+
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year - 1 });
|
|
316
|
+
}
|
|
317
|
+
previousYearGroup() {
|
|
318
|
+
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year - NUMBER_OF_YEARS_SHOWN });
|
|
319
|
+
}
|
|
320
|
+
previousMonth() {
|
|
321
|
+
if (this.pointerDate.month === 0) {
|
|
322
|
+
this.pointerDate = { year: this.pointerDate.year - 1, month: 11, day: 1, hours: 0, minutes: 0, seconds: 0 };
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
this.pointerDate = {
|
|
326
|
+
year: this.pointerDate.year,
|
|
327
|
+
month: this.pointerDate.month - 1,
|
|
328
|
+
day: 1,
|
|
329
|
+
hours: 0,
|
|
330
|
+
minutes: 0,
|
|
331
|
+
seconds: 0,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
nextUnit() {
|
|
336
|
+
if (this.selectionMode === SelectionMode.DAY) {
|
|
337
|
+
this.nextMonth();
|
|
338
|
+
}
|
|
339
|
+
else if (this.selectionMode === SelectionMode.MONTH) {
|
|
340
|
+
this.nextYear();
|
|
341
|
+
}
|
|
342
|
+
else if (this.selectionMode === SelectionMode.YEAR) {
|
|
343
|
+
this.nextYearGroup();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
nextMonth() {
|
|
347
|
+
if (this.pointerDate.month === 11) {
|
|
348
|
+
this.pointerDate = { year: this.pointerDate.year + 1, month: 0, day: 1, hours: 0, minutes: 0, seconds: 0 };
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
this.pointerDate = {
|
|
352
|
+
year: this.pointerDate.year,
|
|
353
|
+
month: this.pointerDate.month + 1,
|
|
354
|
+
day: 1,
|
|
355
|
+
hours: 0,
|
|
356
|
+
minutes: 0,
|
|
357
|
+
seconds: 0,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
nextYear() {
|
|
362
|
+
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year + 1 });
|
|
363
|
+
}
|
|
364
|
+
nextYearGroup() {
|
|
365
|
+
this.pointerDate = Object.assign(Object.assign({}, this.pointerDate), { year: this.pointerDate.year + NUMBER_OF_YEARS_SHOWN });
|
|
366
|
+
}
|
|
367
|
+
openCalendar() {
|
|
368
|
+
if (!this.open && !this.disabled) {
|
|
369
|
+
this.open = true;
|
|
370
|
+
this.setupEventListenersForOpenPopup();
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
setupEventListenersForOpenPopup() {
|
|
374
|
+
this.eventListeners.add(document, 'keydown', this.handleDocumentKeyDown);
|
|
375
|
+
this.eventListeners.add(document, 'mousedown', this.handleDocumentMouseDown);
|
|
376
|
+
}
|
|
377
|
+
handleClearClick(event) {
|
|
378
|
+
event.stopPropagation();
|
|
379
|
+
void this.select(undefined);
|
|
380
|
+
this.sixClear.emit();
|
|
381
|
+
}
|
|
382
|
+
closePopup() {
|
|
383
|
+
if (this.inline) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
this.open = false;
|
|
387
|
+
this.eventListeners.remove(document, 'keydown', this.handleDocumentKeyDown);
|
|
388
|
+
this.eventListeners.remove(document, 'mousedown', this.handleDocumentMouseDown);
|
|
389
|
+
this.selectionMode = SelectionMode.DAY;
|
|
390
|
+
}
|
|
391
|
+
updatePointerDates() {
|
|
392
|
+
const date = this.getPointerDate();
|
|
393
|
+
if (this.differsFromPointerDate(date)) {
|
|
394
|
+
this.pointerDate = {
|
|
395
|
+
year: year(date),
|
|
396
|
+
month: month(date),
|
|
397
|
+
day: day(date),
|
|
398
|
+
hours: hours(date),
|
|
399
|
+
minutes: minutes(date),
|
|
400
|
+
seconds: seconds(date),
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
differsFromPointerDate(date) {
|
|
405
|
+
return (this.pointerDate.day !== day(date) ||
|
|
406
|
+
this.pointerDate.month !== month(date) ||
|
|
407
|
+
this.pointerDate.year !== year(date) ||
|
|
408
|
+
this.pointerDate.hours !== hours(date) ||
|
|
409
|
+
this.pointerDate.minutes !== minutes(date) ||
|
|
410
|
+
this.pointerDate.seconds !== seconds(date));
|
|
411
|
+
}
|
|
412
|
+
getPointerDate() {
|
|
413
|
+
if (this.selectedDate !== undefined && this.selectedDate !== null) {
|
|
414
|
+
return this.selectedDate;
|
|
415
|
+
}
|
|
416
|
+
if (isNil(this.defaultDate)) {
|
|
417
|
+
return now();
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
return this.defaultDate && toDate(this.defaultDate, this.dateFormat);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
updateValue(newDate) {
|
|
424
|
+
this.displayCustomMessage(true);
|
|
425
|
+
this.updateIfChanged(newDate);
|
|
426
|
+
}
|
|
427
|
+
updateIfChanged(newDate) {
|
|
428
|
+
var _a;
|
|
429
|
+
if (((_a = this.value) === null || _a === void 0 ? void 0 : _a.getTime()) === (newDate === null || newDate === void 0 ? void 0 : newDate.getTime())) {
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
this.value = newDate;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Selects an option
|
|
436
|
+
*/
|
|
437
|
+
async select(datestring) {
|
|
438
|
+
if (!datestring) {
|
|
439
|
+
this.updateValue(undefined);
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
const newDate = toDate(datestring, this.dateFormat);
|
|
443
|
+
newDate.setHours(this.pointerDate.hours, this.pointerDate.minutes, this.pointerDate.seconds);
|
|
444
|
+
this.updateValue(newDate);
|
|
445
|
+
}
|
|
446
|
+
this.updatePointerDates();
|
|
447
|
+
if (this.closeOnSelect) {
|
|
448
|
+
this.closePopup();
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
componentWillLoad() {
|
|
452
|
+
this.validateProps();
|
|
453
|
+
this.defaultValue = this.value;
|
|
454
|
+
this.selectedDate = this.value;
|
|
455
|
+
this.updatePointerDates();
|
|
456
|
+
this.updateValue(this.value);
|
|
457
|
+
if (this.inline) {
|
|
458
|
+
this.open = true;
|
|
459
|
+
}
|
|
460
|
+
if (this.open) {
|
|
461
|
+
this.setupEventListenersForOpenPopup();
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
validateProps() {
|
|
465
|
+
if (this.value !== null && this.value !== undefined && !(this.value instanceof Date)) {
|
|
466
|
+
throw new Error('Datepicker no longer supports strings as value. Use a date object instead!');
|
|
467
|
+
}
|
|
468
|
+
if (this.min !== null && this.min !== undefined && !(this.min instanceof Date)) {
|
|
469
|
+
throw new Error('Datepicker no longer supports strings as min. Use a date object instead!');
|
|
470
|
+
}
|
|
471
|
+
if (this.max !== null && this.max !== undefined && !(this.max instanceof Date)) {
|
|
472
|
+
throw new Error('Datepicker no longer supports strings as min. Use a date object instead!');
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
componentDidLoad() {
|
|
476
|
+
this.eventListeners.add(this.inputElement, 'six-input-input', debounce(this.handleInputChange, this.debounce));
|
|
477
|
+
this.eventListeners.add(this.inputElement, 'six-input-blur', this.handleOnBlur);
|
|
478
|
+
}
|
|
479
|
+
renderHeader() {
|
|
480
|
+
return (h("header", { class: "datepicker-header", part: "header" },
|
|
481
|
+
h("div", { class: "datepicker-header__btn prev", onClick: () => this.previousUnit() },
|
|
482
|
+
h("svg", { viewBox: "0 5 13 13", width: "14", height: "23" },
|
|
483
|
+
h("path", { d: "M11.67 3.87L9.9 2.1 0 12l9.9 9.9 1.77-1.77L3.54 12z" }))),
|
|
484
|
+
h("div", { class: "datepicker-header__label" },
|
|
485
|
+
this.selectionMode === SelectionMode.DAY && (h("div", { onClick: () => (this.selectionMode = SelectionMode.MONTH) },
|
|
486
|
+
h("span", { class: "datepicker-header__label-month" }, this.getMonthStringForIndex(this.pointerDate.month)),
|
|
487
|
+
h("span", null,
|
|
488
|
+
h("svg", { viewBox: "-3 -4 24 24", width: "20", height: "20" },
|
|
489
|
+
h("polyline", { points: "6 9 12 15 18 9" }))))),
|
|
490
|
+
this.selectionMode !== SelectionMode.YEAR && (h("div", { onClick: () => (this.selectionMode = SelectionMode.YEAR) },
|
|
491
|
+
h("span", { class: "datepicker-header__label-year" }, this.pointerDate.year),
|
|
492
|
+
h("span", null,
|
|
493
|
+
h("svg", { viewBox: "-3 -4 24 24", width: "20", height: "20" },
|
|
494
|
+
h("polyline", { points: "6 9 12 15 18 9" }))))),
|
|
495
|
+
this.selectionMode === SelectionMode.YEAR && (h("div", null,
|
|
496
|
+
this.pointerDate.year - Math.floor(NUMBER_OF_YEARS_SHOWN / 2),
|
|
497
|
+
" \u2013",
|
|
498
|
+
' ',
|
|
499
|
+
this.pointerDate.year + Math.floor(NUMBER_OF_YEARS_SHOWN / 2)))),
|
|
500
|
+
h("div", { class: "datepicker-header__btn next", onClick: () => this.nextUnit() },
|
|
501
|
+
h("svg", { viewBox: "5 5 13 13", width: "14", height: "23" },
|
|
502
|
+
h("path", { d: "M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z" })))));
|
|
503
|
+
}
|
|
504
|
+
renderBody() {
|
|
505
|
+
switch (this.selectionMode) {
|
|
506
|
+
case SelectionMode.DAY:
|
|
507
|
+
return (h(DaySelection, { locale: i18nDate[this.locale], calendarGrid: this.calendarGrid, onClickDateCell: this.onClickDateCell }));
|
|
508
|
+
case SelectionMode.MONTH:
|
|
509
|
+
return (h(MonthSelection, { locale: i18nDate[this.locale], selectedDate: this.selectedDate, onClickMonthCell: this.onClickMonthCell }));
|
|
510
|
+
case SelectionMode.YEAR:
|
|
511
|
+
return (h(YearSelection, { selectedDate: this.selectedDate, yearSelection: getYearSelectionAroundYear(this.pointerDate.year), onClickYearCell: this.onClickYearCell }));
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
renderCustomIcon() {
|
|
515
|
+
const icon = hasSlot(this.host, 'custom-icon') ? (h("slot", { name: "custom-icon" })) : (h("six-icon", { size: this.size === 'large' ? 'medium' : this.size }, "today"));
|
|
516
|
+
return (h("span", { slot: "prefix", part: "icon", class: {
|
|
517
|
+
prefix: true,
|
|
518
|
+
'prefix--right': this.iconPosition === 'right',
|
|
519
|
+
} }, icon));
|
|
520
|
+
}
|
|
521
|
+
renderClearable() {
|
|
522
|
+
return (this.clearable && (h("button", { slot: "suffix", class: {
|
|
523
|
+
'datepicker-clear': true,
|
|
524
|
+
'datepicker-clear--right': this.iconPosition === 'left',
|
|
525
|
+
'datepicker-clear--left': this.iconPosition === 'right',
|
|
526
|
+
}, type: "button", onClick: this.handleClearClick, tabindex: "-1" },
|
|
527
|
+
h("six-icon", { size: "small" }, "clear"))));
|
|
528
|
+
}
|
|
529
|
+
render() {
|
|
530
|
+
var _a, _b, _c;
|
|
531
|
+
this.adjustPopupPosition();
|
|
532
|
+
return (h("div", { ref: (el) => (this.wrapper = el), class: "datepicker__container" },
|
|
533
|
+
h("six-input", { part: "base", value: formatDate(this.value, this.dateFormat), ref: (el) => (this.inputElement = el), placeholder: this.placeholder, readonly: this.readonly, disabled: this.disabled, name: this.name, label: this.label, required: this.required, "error-text": this.errorText, "error-on-blur": this.errorOnBlur, onClick: () => this.openCalendar(), size: this.size, class: { 'input--empty': !this.value } },
|
|
534
|
+
this.renderCustomIcon(),
|
|
535
|
+
this.renderClearable(),
|
|
536
|
+
hasSlot(this.host, 'error-text') ? (h("span", { slot: "error-text" },
|
|
537
|
+
h("slot", { name: "error-text" }))) : null,
|
|
538
|
+
hasSlot(this.host, 'label') ? (h("span", { slot: "label" },
|
|
539
|
+
h("slot", { name: "label" }))) : null),
|
|
540
|
+
this.open && (h("div", { part: "popup", ref: (el) => (this.popup = el), class: {
|
|
541
|
+
datepicker__popup: true,
|
|
542
|
+
'datepicker__popup--is-up': this.placement ? this.placement === 'top' : this.isDropDownContentUp,
|
|
543
|
+
'datepicker__popup--is-inline': this.inline,
|
|
544
|
+
} },
|
|
545
|
+
this.renderHeader(),
|
|
546
|
+
this.renderBody(),
|
|
547
|
+
this.type === 'date-time' && (h("six-timepicker", { inline: true, "onSix-timepicker-change-debounced": (event) => this.onTimepickerChange(event), value: ((_a = this.selectedDate) === null || _a === void 0 ? void 0 : _a.getHours()) +
|
|
548
|
+
':' +
|
|
549
|
+
((_b = this.selectedDate) === null || _b === void 0 ? void 0 : _b.getMinutes()) +
|
|
550
|
+
':' +
|
|
551
|
+
((_c = this.selectedDate) === null || _c === void 0 ? void 0 : _c.getSeconds()) })),
|
|
552
|
+
h("div", { class: "datepicker__footer" },
|
|
553
|
+
h("slot", null))))));
|
|
554
|
+
}
|
|
555
|
+
adjustPopupPosition() {
|
|
556
|
+
this.adjustPopupForHoisting();
|
|
557
|
+
this.adjustPopupForSmallScreens();
|
|
558
|
+
}
|
|
559
|
+
/*
|
|
560
|
+
* The position of the hoisted datepicker needs to be correctly calculated since the position changes to fixed.
|
|
561
|
+
* Thus if the user scrolls or adjusts the screen size we need to recalculate the datepicker position.
|
|
562
|
+
*/
|
|
563
|
+
moveOpenHoistedPopup() {
|
|
564
|
+
if (!this.hoist || !this.open) {
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
const popupBoundingClientRect = this.popup.getBoundingClientRect();
|
|
568
|
+
const popupHeight = popupBoundingClientRect.height;
|
|
569
|
+
const inputBoundingClientRect = this.inputElement.getBoundingClientRect();
|
|
570
|
+
const inputTop = inputBoundingClientRect.top;
|
|
571
|
+
const inputHeight = inputBoundingClientRect.height;
|
|
572
|
+
this.calcIsDropDownContentUp();
|
|
573
|
+
if (this.isDropDownContentUp) {
|
|
574
|
+
this.popup.style.top = `${inputTop - popupHeight}px`;
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
this.popup.style.top = `${inputTop + inputHeight}px`;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
/*
|
|
581
|
+
* For small screens the datepicker popup could be cut-off even though there might still be space within the viewport.
|
|
582
|
+
* This is because the popup is always aligned with the trigger input field. However in the scenario of small screens
|
|
583
|
+
* we should reposition the popup to use the space available.
|
|
584
|
+
*/
|
|
585
|
+
adjustPopupForSmallScreens() {
|
|
586
|
+
// execute after dropdown has been rendered to make sure the popup reference is correctly set
|
|
587
|
+
setTimeout(() => {
|
|
588
|
+
if (!this.popup) {
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
const popupBoundingClientRect = this.popup.getBoundingClientRect();
|
|
592
|
+
const setPopupAsFixPosition = () => {
|
|
593
|
+
// apply screen position to fixed popup
|
|
594
|
+
this.popup.style.position = 'fixed';
|
|
595
|
+
['top', 'left', 'width', 'height'].forEach((property) => {
|
|
596
|
+
this.popup.style[property] = `${popupBoundingClientRect[property]}px`;
|
|
597
|
+
});
|
|
598
|
+
};
|
|
599
|
+
if (popupBoundingClientRect.y < 0 &&
|
|
600
|
+
window.innerHeight - popupBoundingClientRect.height > 0 &&
|
|
601
|
+
Math.abs(popupBoundingClientRect.y) <= popupBoundingClientRect.height) {
|
|
602
|
+
// handle case where popup is cut-off on top but there is still space available
|
|
603
|
+
setPopupAsFixPosition();
|
|
604
|
+
this.popup.style.top = '0px';
|
|
605
|
+
}
|
|
606
|
+
else if (window.innerHeight < popupBoundingClientRect.y + popupBoundingClientRect.height &&
|
|
607
|
+
window.innerHeight > popupBoundingClientRect.height &&
|
|
608
|
+
Math.abs(popupBoundingClientRect.y - window.innerHeight) <= popupBoundingClientRect.height) {
|
|
609
|
+
// handle case where popup is cut-off at the bottom but there is still space available above
|
|
610
|
+
// apply screen position to fixed popup
|
|
611
|
+
setPopupAsFixPosition();
|
|
612
|
+
this.popup.style.top = `${window.innerHeight - popupBoundingClientRect.height}px`;
|
|
613
|
+
}
|
|
614
|
+
if (window.innerWidth < popupBoundingClientRect.x + popupBoundingClientRect.width &&
|
|
615
|
+
window.innerWidth > popupBoundingClientRect.width &&
|
|
616
|
+
Math.abs(popupBoundingClientRect.x - window.innerWidth) <= popupBoundingClientRect.width) {
|
|
617
|
+
// handle case where popup is cut-off to the right
|
|
618
|
+
setPopupAsFixPosition();
|
|
619
|
+
this.popup.style.left = `${window.innerWidth - popupBoundingClientRect.width}px`;
|
|
620
|
+
}
|
|
621
|
+
}, 0);
|
|
622
|
+
}
|
|
623
|
+
/*
|
|
624
|
+
* If the popup is hoisted we popup is hoisted its position will change to fix to not be clipped of by a containing container.
|
|
625
|
+
* To render the popup correctly we render it normally, and then assign this screenposition to the fixed popup
|
|
626
|
+
*/
|
|
627
|
+
adjustPopupForHoisting() {
|
|
628
|
+
if (!this.hoist) {
|
|
629
|
+
return;
|
|
630
|
+
}
|
|
631
|
+
// execute after dropdown has been rendered to make sure the popup reference is correctly set
|
|
632
|
+
setTimeout(() => {
|
|
633
|
+
if (!this.popup) {
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
// take a snapshot of normally rendered popup
|
|
637
|
+
const popupBoundingClientRect = this.popup.getBoundingClientRect();
|
|
638
|
+
// apply screen position to fixed popup
|
|
639
|
+
this.popup.style.position = 'fixed';
|
|
640
|
+
['top', 'left', 'width', 'height'].forEach((property) => {
|
|
641
|
+
this.popup.style[property] = `${popupBoundingClientRect[property]}px`;
|
|
642
|
+
});
|
|
643
|
+
const inputBoundingClientRect = this.inputElement.getBoundingClientRect();
|
|
644
|
+
const inputTop = inputBoundingClientRect.top;
|
|
645
|
+
const popupTop = popupBoundingClientRect.top;
|
|
646
|
+
this.calcIsDropDownContentUp();
|
|
647
|
+
// check screen position to check whether the popup should be moved above or below the trigger element
|
|
648
|
+
if (this.isDropDownContentUp && inputTop < popupTop) {
|
|
649
|
+
// move popup above input field if datepicker is at bottom of screen
|
|
650
|
+
this.popup.style.top = `${popupTop - popupBoundingClientRect.height - inputBoundingClientRect.height}px`;
|
|
651
|
+
}
|
|
652
|
+
}, 0);
|
|
653
|
+
}
|
|
654
|
+
connectedCallback() {
|
|
655
|
+
this.handleClearClick = this.handleClearClick.bind(this);
|
|
656
|
+
}
|
|
657
|
+
disconnectedCallback() {
|
|
658
|
+
this.eventListeners.removeAll();
|
|
659
|
+
}
|
|
660
|
+
displayCustomMessage(valid) {
|
|
661
|
+
if (!this.inputElement) {
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
664
|
+
if (valid) {
|
|
665
|
+
void this.setCustomValidity('');
|
|
666
|
+
}
|
|
667
|
+
else {
|
|
668
|
+
const message = this.errorText ? this.errorText : 'Invalid date format';
|
|
669
|
+
void this.setCustomValidity(message);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
static getCurrentDateAsPointer() {
|
|
673
|
+
return {
|
|
674
|
+
year: year(now()),
|
|
675
|
+
month: month(now()),
|
|
676
|
+
day: day(now()),
|
|
677
|
+
hours: hours(now()),
|
|
678
|
+
minutes: minutes(now()),
|
|
679
|
+
seconds: seconds(now()),
|
|
680
|
+
};
|
|
681
|
+
}
|
|
682
|
+
static get is() { return "six-datepicker"; }
|
|
683
|
+
static get encapsulation() { return "shadow"; }
|
|
684
|
+
static get originalStyleUrls() { return {
|
|
685
|
+
"$": ["six-datepicker.scss"]
|
|
686
|
+
}; }
|
|
687
|
+
static get styleUrls() { return {
|
|
688
|
+
"$": ["six-datepicker.css"]
|
|
689
|
+
}; }
|
|
690
|
+
static get properties() { return {
|
|
691
|
+
"type": {
|
|
692
|
+
"type": "string",
|
|
693
|
+
"mutable": false,
|
|
694
|
+
"complexType": {
|
|
695
|
+
"original": "'date' | 'date-time'",
|
|
696
|
+
"resolved": "\"date\" | \"date-time\"",
|
|
697
|
+
"references": {}
|
|
698
|
+
},
|
|
699
|
+
"required": false,
|
|
700
|
+
"optional": false,
|
|
701
|
+
"docs": {
|
|
702
|
+
"tags": [],
|
|
703
|
+
"text": "Set the type."
|
|
704
|
+
},
|
|
705
|
+
"attribute": "type",
|
|
706
|
+
"reflect": false,
|
|
707
|
+
"defaultValue": "'date'"
|
|
708
|
+
},
|
|
709
|
+
"locale": {
|
|
710
|
+
"type": "string",
|
|
711
|
+
"mutable": false,
|
|
712
|
+
"complexType": {
|
|
713
|
+
"original": "'en' | 'de' | 'fr' | 'it'",
|
|
714
|
+
"resolved": "\"de\" | \"en\" | \"fr\" | \"it\"",
|
|
715
|
+
"references": {}
|
|
716
|
+
},
|
|
717
|
+
"required": false,
|
|
718
|
+
"optional": false,
|
|
719
|
+
"docs": {
|
|
720
|
+
"tags": [],
|
|
721
|
+
"text": "The language used to render the weekdays and months."
|
|
722
|
+
},
|
|
723
|
+
"attribute": "locale",
|
|
724
|
+
"reflect": false,
|
|
725
|
+
"defaultValue": "'en'"
|
|
726
|
+
},
|
|
727
|
+
"open": {
|
|
728
|
+
"type": "boolean",
|
|
729
|
+
"mutable": true,
|
|
730
|
+
"complexType": {
|
|
731
|
+
"original": "boolean",
|
|
732
|
+
"resolved": "boolean",
|
|
733
|
+
"references": {}
|
|
734
|
+
},
|
|
735
|
+
"required": false,
|
|
736
|
+
"optional": false,
|
|
737
|
+
"docs": {
|
|
738
|
+
"tags": [],
|
|
739
|
+
"text": "Indicates whether or not the calendar dropdown is open on startup. You can use this in lieu of the show/hide methods."
|
|
740
|
+
},
|
|
741
|
+
"attribute": "open",
|
|
742
|
+
"reflect": true,
|
|
743
|
+
"defaultValue": "false"
|
|
744
|
+
},
|
|
745
|
+
"inline": {
|
|
746
|
+
"type": "boolean",
|
|
747
|
+
"mutable": false,
|
|
748
|
+
"complexType": {
|
|
749
|
+
"original": "boolean",
|
|
750
|
+
"resolved": "boolean",
|
|
751
|
+
"references": {}
|
|
752
|
+
},
|
|
753
|
+
"required": false,
|
|
754
|
+
"optional": false,
|
|
755
|
+
"docs": {
|
|
756
|
+
"tags": [],
|
|
757
|
+
"text": "Indicates whether or not the calendar should be shown as an inline (always open) component"
|
|
758
|
+
},
|
|
759
|
+
"attribute": "inline",
|
|
760
|
+
"reflect": true,
|
|
761
|
+
"defaultValue": "false"
|
|
762
|
+
},
|
|
763
|
+
"readonly": {
|
|
764
|
+
"type": "boolean",
|
|
765
|
+
"mutable": false,
|
|
766
|
+
"complexType": {
|
|
767
|
+
"original": "boolean",
|
|
768
|
+
"resolved": "boolean",
|
|
769
|
+
"references": {}
|
|
770
|
+
},
|
|
771
|
+
"required": false,
|
|
772
|
+
"optional": false,
|
|
773
|
+
"docs": {
|
|
774
|
+
"tags": [],
|
|
775
|
+
"text": "If `true` the user can only select a date via the component in the popup, but not directly edit the input field."
|
|
776
|
+
},
|
|
777
|
+
"attribute": "readonly",
|
|
778
|
+
"reflect": false,
|
|
779
|
+
"defaultValue": "false"
|
|
780
|
+
},
|
|
781
|
+
"disabled": {
|
|
782
|
+
"type": "boolean",
|
|
783
|
+
"mutable": false,
|
|
784
|
+
"complexType": {
|
|
785
|
+
"original": "boolean",
|
|
786
|
+
"resolved": "boolean",
|
|
787
|
+
"references": {}
|
|
788
|
+
},
|
|
789
|
+
"required": false,
|
|
790
|
+
"optional": false,
|
|
791
|
+
"docs": {
|
|
792
|
+
"tags": [],
|
|
793
|
+
"text": "If `true` the component is disabled."
|
|
794
|
+
},
|
|
795
|
+
"attribute": "disabled",
|
|
796
|
+
"reflect": false,
|
|
797
|
+
"defaultValue": "false"
|
|
798
|
+
},
|
|
799
|
+
"allowedDates": {
|
|
800
|
+
"type": "unknown",
|
|
801
|
+
"mutable": false,
|
|
802
|
+
"complexType": {
|
|
803
|
+
"original": "(date: Date) => boolean",
|
|
804
|
+
"resolved": "(date: Date) => boolean",
|
|
805
|
+
"references": {
|
|
806
|
+
"Date": {
|
|
807
|
+
"location": "global"
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
},
|
|
811
|
+
"required": false,
|
|
812
|
+
"optional": false,
|
|
813
|
+
"docs": {
|
|
814
|
+
"tags": [],
|
|
815
|
+
"text": "Callback to determine which date in the datepicker should be selectable.\nthe callback function will get a datestring as an argument, e.g. '2021-07-04'\n\nUsage e.g.:\nconst datepicker = document.getElementById('allowed-date-picker');\ndatepicker.allowedDates = datestring => parseInt(datestring.split('-')[2], 10) % 2 === 0;"
|
|
816
|
+
},
|
|
817
|
+
"defaultValue": "() => true"
|
|
818
|
+
},
|
|
819
|
+
"min": {
|
|
820
|
+
"type": "unknown",
|
|
821
|
+
"mutable": false,
|
|
822
|
+
"complexType": {
|
|
823
|
+
"original": "Date | null",
|
|
824
|
+
"resolved": "Date",
|
|
825
|
+
"references": {
|
|
826
|
+
"Date": {
|
|
827
|
+
"location": "global"
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
},
|
|
831
|
+
"required": false,
|
|
832
|
+
"optional": true,
|
|
833
|
+
"docs": {
|
|
834
|
+
"tags": [],
|
|
835
|
+
"text": "The minimum datetime allowed. Value must be a date object"
|
|
836
|
+
},
|
|
837
|
+
"defaultValue": "null"
|
|
838
|
+
},
|
|
839
|
+
"max": {
|
|
840
|
+
"type": "unknown",
|
|
841
|
+
"mutable": false,
|
|
842
|
+
"complexType": {
|
|
843
|
+
"original": "Date | null",
|
|
844
|
+
"resolved": "Date",
|
|
845
|
+
"references": {
|
|
846
|
+
"Date": {
|
|
847
|
+
"location": "global"
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
"required": false,
|
|
852
|
+
"optional": true,
|
|
853
|
+
"docs": {
|
|
854
|
+
"tags": [],
|
|
855
|
+
"text": "The maximum datetime allowed. Value must be a date object"
|
|
856
|
+
},
|
|
857
|
+
"defaultValue": "null"
|
|
858
|
+
},
|
|
859
|
+
"closeOnSelect": {
|
|
860
|
+
"type": "boolean",
|
|
861
|
+
"mutable": false,
|
|
862
|
+
"complexType": {
|
|
863
|
+
"original": "boolean",
|
|
864
|
+
"resolved": "boolean",
|
|
865
|
+
"references": {}
|
|
866
|
+
},
|
|
867
|
+
"required": false,
|
|
868
|
+
"optional": false,
|
|
869
|
+
"docs": {
|
|
870
|
+
"tags": [],
|
|
871
|
+
"text": "Closes the datepicker dropdown after selection"
|
|
872
|
+
},
|
|
873
|
+
"attribute": "close-on-select",
|
|
874
|
+
"reflect": false,
|
|
875
|
+
"defaultValue": "this.type === 'date'"
|
|
876
|
+
},
|
|
877
|
+
"placement": {
|
|
878
|
+
"type": "string",
|
|
879
|
+
"mutable": false,
|
|
880
|
+
"complexType": {
|
|
881
|
+
"original": "'top' | 'bottom'",
|
|
882
|
+
"resolved": "\"bottom\" | \"top\"",
|
|
883
|
+
"references": {}
|
|
884
|
+
},
|
|
885
|
+
"required": false,
|
|
886
|
+
"optional": false,
|
|
887
|
+
"docs": {
|
|
888
|
+
"tags": [],
|
|
889
|
+
"text": "The enforced placement of the dropdown panel."
|
|
890
|
+
},
|
|
891
|
+
"attribute": "placement",
|
|
892
|
+
"reflect": false
|
|
893
|
+
},
|
|
894
|
+
"size": {
|
|
895
|
+
"type": "string",
|
|
896
|
+
"mutable": false,
|
|
897
|
+
"complexType": {
|
|
898
|
+
"original": "'small' | 'medium' | 'large'",
|
|
899
|
+
"resolved": "\"large\" | \"medium\" | \"small\"",
|
|
900
|
+
"references": {}
|
|
901
|
+
},
|
|
902
|
+
"required": false,
|
|
903
|
+
"optional": false,
|
|
904
|
+
"docs": {
|
|
905
|
+
"tags": [],
|
|
906
|
+
"text": "Datepicker size."
|
|
907
|
+
},
|
|
908
|
+
"attribute": "size",
|
|
909
|
+
"reflect": false,
|
|
910
|
+
"defaultValue": "'medium'"
|
|
911
|
+
},
|
|
912
|
+
"required": {
|
|
913
|
+
"type": "boolean",
|
|
914
|
+
"mutable": false,
|
|
915
|
+
"complexType": {
|
|
916
|
+
"original": "boolean",
|
|
917
|
+
"resolved": "boolean",
|
|
918
|
+
"references": {}
|
|
919
|
+
},
|
|
920
|
+
"required": false,
|
|
921
|
+
"optional": false,
|
|
922
|
+
"docs": {
|
|
923
|
+
"tags": [],
|
|
924
|
+
"text": "Set to true to make the input a required field."
|
|
925
|
+
},
|
|
926
|
+
"attribute": "required",
|
|
927
|
+
"reflect": true
|
|
928
|
+
},
|
|
929
|
+
"defaultDate": {
|
|
930
|
+
"type": "string",
|
|
931
|
+
"mutable": false,
|
|
932
|
+
"complexType": {
|
|
933
|
+
"original": "string | null",
|
|
934
|
+
"resolved": "string",
|
|
935
|
+
"references": {}
|
|
936
|
+
},
|
|
937
|
+
"required": false,
|
|
938
|
+
"optional": true,
|
|
939
|
+
"docs": {
|
|
940
|
+
"tags": [],
|
|
941
|
+
"text": "The date to defines where the datepicker popup starts. The prop accepts ISO 8601 date strings (YYYY-MM-DD)."
|
|
942
|
+
},
|
|
943
|
+
"attribute": "default-date",
|
|
944
|
+
"reflect": false
|
|
945
|
+
},
|
|
946
|
+
"placeholder": {
|
|
947
|
+
"type": "string",
|
|
948
|
+
"mutable": false,
|
|
949
|
+
"complexType": {
|
|
950
|
+
"original": "string | null",
|
|
951
|
+
"resolved": "string",
|
|
952
|
+
"references": {}
|
|
953
|
+
},
|
|
954
|
+
"required": false,
|
|
955
|
+
"optional": true,
|
|
956
|
+
"docs": {
|
|
957
|
+
"tags": [],
|
|
958
|
+
"text": "The placeholder defines what text to be shown on the input element"
|
|
959
|
+
},
|
|
960
|
+
"attribute": "placeholder",
|
|
961
|
+
"reflect": false
|
|
962
|
+
},
|
|
963
|
+
"value": {
|
|
964
|
+
"type": "unknown",
|
|
965
|
+
"mutable": true,
|
|
966
|
+
"complexType": {
|
|
967
|
+
"original": "Date | null",
|
|
968
|
+
"resolved": "Date",
|
|
969
|
+
"references": {
|
|
970
|
+
"Date": {
|
|
971
|
+
"location": "global"
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
"required": false,
|
|
976
|
+
"optional": true,
|
|
977
|
+
"docs": {
|
|
978
|
+
"tags": [],
|
|
979
|
+
"text": "The value of the form field, which accepts a date object."
|
|
980
|
+
},
|
|
981
|
+
"defaultValue": "null"
|
|
982
|
+
},
|
|
983
|
+
"containingElement": {
|
|
984
|
+
"type": "unknown",
|
|
985
|
+
"mutable": false,
|
|
986
|
+
"complexType": {
|
|
987
|
+
"original": "HTMLElement",
|
|
988
|
+
"resolved": "HTMLElement",
|
|
989
|
+
"references": {
|
|
990
|
+
"HTMLElement": {
|
|
991
|
+
"location": "global"
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
},
|
|
995
|
+
"required": false,
|
|
996
|
+
"optional": false,
|
|
997
|
+
"docs": {
|
|
998
|
+
"tags": [],
|
|
999
|
+
"text": "The dropdown will close when the user interacts outside of this element (e.g. clicking)."
|
|
1000
|
+
}
|
|
1001
|
+
},
|
|
1002
|
+
"dateFormat": {
|
|
1003
|
+
"type": "string",
|
|
1004
|
+
"mutable": false,
|
|
1005
|
+
"complexType": {
|
|
1006
|
+
"original": "SixDateFormats",
|
|
1007
|
+
"resolved": "SixDateFormats.DDMMYYYY_DASH | SixDateFormats.DDMMYYYY_DASH_TIME | SixDateFormats.DDMMYYYY_SLASH | SixDateFormats.DDMMYYYY_SLASH_TIME | SixDateFormats.DDMMYYY_DOT | SixDateFormats.DDMMYYY_DOT_TIME | SixDateFormats.DDMMYY_DASH | SixDateFormats.DDMMYY_DASH_TIME | SixDateFormats.DDMMYY_DOT | SixDateFormats.DDMMYY_DOT_TIME | SixDateFormats.DDMMYY_SLASH | SixDateFormats.DDMMYY_SLASH_TIME | SixDateFormats.YYMMDD_DASH | SixDateFormats.YYMMDD_DASH_TIME | SixDateFormats.YYMMDD_SLASH | SixDateFormats.YYMMDD_SLASH_TIME | SixDateFormats.YYYYMMDD_DASH | SixDateFormats.YYYYMMDD_DASH_TIME | SixDateFormats.YYYYMMDD_SLASH | SixDateFormats.YYYYMMDD_SLASH_TIME",
|
|
1008
|
+
"references": {
|
|
1009
|
+
"SixDateFormats": {
|
|
1010
|
+
"location": "import",
|
|
1011
|
+
"path": "./six-date-formats"
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
},
|
|
1015
|
+
"required": false,
|
|
1016
|
+
"optional": false,
|
|
1017
|
+
"docs": {
|
|
1018
|
+
"tags": [],
|
|
1019
|
+
"text": "Define the dateFormat. Valid formats are:\n'dd.mm.yyyy'\n'yyyy-mm-dd'\n'dd-mm-yyyy'\n'dd/mm/yyyy'\n'yyyy/mm/dd'\n'dd.mm.yy'\n'yy-mm-dd'\n'dd-mm-yy'\n'dd/mm/yy'\n'yy/mm/dd'"
|
|
1020
|
+
},
|
|
1021
|
+
"attribute": "date-format",
|
|
1022
|
+
"reflect": false,
|
|
1023
|
+
"defaultValue": "SixDateFormats.DDMMYYY_DOT"
|
|
1024
|
+
},
|
|
1025
|
+
"debounce": {
|
|
1026
|
+
"type": "number",
|
|
1027
|
+
"mutable": false,
|
|
1028
|
+
"complexType": {
|
|
1029
|
+
"original": "number",
|
|
1030
|
+
"resolved": "number",
|
|
1031
|
+
"references": {}
|
|
1032
|
+
},
|
|
1033
|
+
"required": false,
|
|
1034
|
+
"optional": false,
|
|
1035
|
+
"docs": {
|
|
1036
|
+
"tags": [],
|
|
1037
|
+
"text": "Set the amount of time, in milliseconds, to wait to trigger the `dateChange` event after each keystroke."
|
|
1038
|
+
},
|
|
1039
|
+
"attribute": "debounce",
|
|
1040
|
+
"reflect": false,
|
|
1041
|
+
"defaultValue": "DEFAULT_DEBOUNCE_FAST"
|
|
1042
|
+
},
|
|
1043
|
+
"errorOnBlur": {
|
|
1044
|
+
"type": "boolean",
|
|
1045
|
+
"mutable": false,
|
|
1046
|
+
"complexType": {
|
|
1047
|
+
"original": "boolean",
|
|
1048
|
+
"resolved": "boolean",
|
|
1049
|
+
"references": {}
|
|
1050
|
+
},
|
|
1051
|
+
"required": false,
|
|
1052
|
+
"optional": false,
|
|
1053
|
+
"docs": {
|
|
1054
|
+
"tags": [],
|
|
1055
|
+
"text": "Set to display the error text on blur and not when typing"
|
|
1056
|
+
},
|
|
1057
|
+
"attribute": "error-on-blur",
|
|
1058
|
+
"reflect": false,
|
|
1059
|
+
"defaultValue": "false"
|
|
1060
|
+
},
|
|
1061
|
+
"errorText": {
|
|
1062
|
+
"type": "string",
|
|
1063
|
+
"mutable": false,
|
|
1064
|
+
"complexType": {
|
|
1065
|
+
"original": "string",
|
|
1066
|
+
"resolved": "string",
|
|
1067
|
+
"references": {}
|
|
1068
|
+
},
|
|
1069
|
+
"required": false,
|
|
1070
|
+
"optional": false,
|
|
1071
|
+
"docs": {
|
|
1072
|
+
"tags": [],
|
|
1073
|
+
"text": "The input's error text. Alternatively, you can use the error-text slot."
|
|
1074
|
+
},
|
|
1075
|
+
"attribute": "error-text",
|
|
1076
|
+
"reflect": false,
|
|
1077
|
+
"defaultValue": "''"
|
|
1078
|
+
},
|
|
1079
|
+
"label": {
|
|
1080
|
+
"type": "string",
|
|
1081
|
+
"mutable": false,
|
|
1082
|
+
"complexType": {
|
|
1083
|
+
"original": "string",
|
|
1084
|
+
"resolved": "string",
|
|
1085
|
+
"references": {}
|
|
1086
|
+
},
|
|
1087
|
+
"required": false,
|
|
1088
|
+
"optional": false,
|
|
1089
|
+
"docs": {
|
|
1090
|
+
"tags": [],
|
|
1091
|
+
"text": "The input's label. Alternatively, you can use the label slot."
|
|
1092
|
+
},
|
|
1093
|
+
"attribute": "label",
|
|
1094
|
+
"reflect": false,
|
|
1095
|
+
"defaultValue": "''"
|
|
1096
|
+
},
|
|
1097
|
+
"name": {
|
|
1098
|
+
"type": "string",
|
|
1099
|
+
"mutable": false,
|
|
1100
|
+
"complexType": {
|
|
1101
|
+
"original": "string",
|
|
1102
|
+
"resolved": "string",
|
|
1103
|
+
"references": {}
|
|
1104
|
+
},
|
|
1105
|
+
"required": false,
|
|
1106
|
+
"optional": false,
|
|
1107
|
+
"docs": {
|
|
1108
|
+
"tags": [],
|
|
1109
|
+
"text": "The input's name attribute."
|
|
1110
|
+
},
|
|
1111
|
+
"attribute": "name",
|
|
1112
|
+
"reflect": true,
|
|
1113
|
+
"defaultValue": "''"
|
|
1114
|
+
},
|
|
1115
|
+
"clearable": {
|
|
1116
|
+
"type": "boolean",
|
|
1117
|
+
"mutable": false,
|
|
1118
|
+
"complexType": {
|
|
1119
|
+
"original": "boolean",
|
|
1120
|
+
"resolved": "boolean",
|
|
1121
|
+
"references": {}
|
|
1122
|
+
},
|
|
1123
|
+
"required": false,
|
|
1124
|
+
"optional": false,
|
|
1125
|
+
"docs": {
|
|
1126
|
+
"tags": [],
|
|
1127
|
+
"text": "Set to true to add a clear button when the input is populated."
|
|
1128
|
+
},
|
|
1129
|
+
"attribute": "clearable",
|
|
1130
|
+
"reflect": false,
|
|
1131
|
+
"defaultValue": "false"
|
|
1132
|
+
},
|
|
1133
|
+
"iconPosition": {
|
|
1134
|
+
"type": "string",
|
|
1135
|
+
"mutable": false,
|
|
1136
|
+
"complexType": {
|
|
1137
|
+
"original": "'left' | 'right'",
|
|
1138
|
+
"resolved": "\"left\" | \"right\"",
|
|
1139
|
+
"references": {}
|
|
1140
|
+
},
|
|
1141
|
+
"required": false,
|
|
1142
|
+
"optional": false,
|
|
1143
|
+
"docs": {
|
|
1144
|
+
"tags": [],
|
|
1145
|
+
"text": "Set the position of the icon"
|
|
1146
|
+
},
|
|
1147
|
+
"attribute": "icon-position",
|
|
1148
|
+
"reflect": false,
|
|
1149
|
+
"defaultValue": "'left'"
|
|
1150
|
+
},
|
|
1151
|
+
"hoist": {
|
|
1152
|
+
"type": "boolean",
|
|
1153
|
+
"mutable": false,
|
|
1154
|
+
"complexType": {
|
|
1155
|
+
"original": "boolean",
|
|
1156
|
+
"resolved": "boolean",
|
|
1157
|
+
"references": {}
|
|
1158
|
+
},
|
|
1159
|
+
"required": false,
|
|
1160
|
+
"optional": false,
|
|
1161
|
+
"docs": {
|
|
1162
|
+
"tags": [],
|
|
1163
|
+
"text": "Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`."
|
|
1164
|
+
},
|
|
1165
|
+
"attribute": "hoist",
|
|
1166
|
+
"reflect": false,
|
|
1167
|
+
"defaultValue": "false"
|
|
1168
|
+
}
|
|
1169
|
+
}; }
|
|
1170
|
+
static get states() { return {
|
|
1171
|
+
"pointerDate": {},
|
|
1172
|
+
"selectionMode": {},
|
|
1173
|
+
"isDropDownContentUp": {}
|
|
1174
|
+
}; }
|
|
1175
|
+
static get events() { return [{
|
|
1176
|
+
"method": "sixSelect",
|
|
1177
|
+
"name": "six-datepicker-select",
|
|
1178
|
+
"bubbles": true,
|
|
1179
|
+
"cancelable": true,
|
|
1180
|
+
"composed": true,
|
|
1181
|
+
"docs": {
|
|
1182
|
+
"tags": [],
|
|
1183
|
+
"text": "Emitted when a option got selected."
|
|
1184
|
+
},
|
|
1185
|
+
"complexType": {
|
|
1186
|
+
"original": "SixDatepickerSelectPayload",
|
|
1187
|
+
"resolved": "Date",
|
|
1188
|
+
"references": {
|
|
1189
|
+
"SixDatepickerSelectPayload": {
|
|
1190
|
+
"location": "local"
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
}, {
|
|
1195
|
+
"method": "sixClear",
|
|
1196
|
+
"name": "six-datepicker-clear",
|
|
1197
|
+
"bubbles": true,
|
|
1198
|
+
"cancelable": true,
|
|
1199
|
+
"composed": true,
|
|
1200
|
+
"docs": {
|
|
1201
|
+
"tags": [],
|
|
1202
|
+
"text": "Emitted when the clear button is activated."
|
|
1203
|
+
},
|
|
1204
|
+
"complexType": {
|
|
1205
|
+
"original": "EmptyPayload",
|
|
1206
|
+
"resolved": "undefined",
|
|
1207
|
+
"references": {
|
|
1208
|
+
"EmptyPayload": {
|
|
1209
|
+
"location": "import",
|
|
1210
|
+
"path": "../../utils/types"
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}, {
|
|
1215
|
+
"method": "sixBlur",
|
|
1216
|
+
"name": "six-datepicker-blur",
|
|
1217
|
+
"bubbles": true,
|
|
1218
|
+
"cancelable": true,
|
|
1219
|
+
"composed": true,
|
|
1220
|
+
"docs": {
|
|
1221
|
+
"tags": [],
|
|
1222
|
+
"text": "Emitted when a option got selected."
|
|
1223
|
+
},
|
|
1224
|
+
"complexType": {
|
|
1225
|
+
"original": "SixDatepickerSelectPayload",
|
|
1226
|
+
"resolved": "Date",
|
|
1227
|
+
"references": {
|
|
1228
|
+
"SixDatepickerSelectPayload": {
|
|
1229
|
+
"location": "local"
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
}]; }
|
|
1234
|
+
static get methods() { return {
|
|
1235
|
+
"reportValidity": {
|
|
1236
|
+
"complexType": {
|
|
1237
|
+
"signature": "() => Promise<boolean>",
|
|
1238
|
+
"parameters": [],
|
|
1239
|
+
"references": {
|
|
1240
|
+
"Promise": {
|
|
1241
|
+
"location": "global"
|
|
1242
|
+
}
|
|
1243
|
+
},
|
|
1244
|
+
"return": "Promise<boolean>"
|
|
1245
|
+
},
|
|
1246
|
+
"docs": {
|
|
1247
|
+
"text": "Checks for validity and shows the browser's validation message if the control is invalid.",
|
|
1248
|
+
"tags": []
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1251
|
+
"checkValidity": {
|
|
1252
|
+
"complexType": {
|
|
1253
|
+
"signature": "() => Promise<boolean>",
|
|
1254
|
+
"parameters": [],
|
|
1255
|
+
"references": {
|
|
1256
|
+
"Promise": {
|
|
1257
|
+
"location": "global"
|
|
1258
|
+
}
|
|
1259
|
+
},
|
|
1260
|
+
"return": "Promise<boolean>"
|
|
1261
|
+
},
|
|
1262
|
+
"docs": {
|
|
1263
|
+
"text": "Checks for validity.",
|
|
1264
|
+
"tags": []
|
|
1265
|
+
}
|
|
1266
|
+
},
|
|
1267
|
+
"setCustomValidity": {
|
|
1268
|
+
"complexType": {
|
|
1269
|
+
"signature": "(message: string) => Promise<void>",
|
|
1270
|
+
"parameters": [{
|
|
1271
|
+
"tags": [],
|
|
1272
|
+
"text": ""
|
|
1273
|
+
}],
|
|
1274
|
+
"references": {
|
|
1275
|
+
"Promise": {
|
|
1276
|
+
"location": "global"
|
|
1277
|
+
}
|
|
1278
|
+
},
|
|
1279
|
+
"return": "Promise<void>"
|
|
1280
|
+
},
|
|
1281
|
+
"docs": {
|
|
1282
|
+
"text": "Sets a custom validation message. If `message` is not empty, the field will be considered invalid.",
|
|
1283
|
+
"tags": []
|
|
1284
|
+
}
|
|
1285
|
+
},
|
|
1286
|
+
"reset": {
|
|
1287
|
+
"complexType": {
|
|
1288
|
+
"signature": "() => Promise<void>",
|
|
1289
|
+
"parameters": [],
|
|
1290
|
+
"references": {
|
|
1291
|
+
"Promise": {
|
|
1292
|
+
"location": "global"
|
|
1293
|
+
}
|
|
1294
|
+
},
|
|
1295
|
+
"return": "Promise<void>"
|
|
1296
|
+
},
|
|
1297
|
+
"docs": {
|
|
1298
|
+
"text": "Resets the formcontrol",
|
|
1299
|
+
"tags": []
|
|
1300
|
+
}
|
|
1301
|
+
},
|
|
1302
|
+
"select": {
|
|
1303
|
+
"complexType": {
|
|
1304
|
+
"signature": "(datestring: string) => Promise<void>",
|
|
1305
|
+
"parameters": [{
|
|
1306
|
+
"tags": [],
|
|
1307
|
+
"text": ""
|
|
1308
|
+
}],
|
|
1309
|
+
"references": {
|
|
1310
|
+
"Promise": {
|
|
1311
|
+
"location": "global"
|
|
1312
|
+
}
|
|
1313
|
+
},
|
|
1314
|
+
"return": "Promise<void>"
|
|
1315
|
+
},
|
|
1316
|
+
"docs": {
|
|
1317
|
+
"text": "Selects an option",
|
|
1318
|
+
"tags": []
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
}; }
|
|
1322
|
+
static get elementRef() { return "host"; }
|
|
1323
|
+
static get watchers() { return [{
|
|
1324
|
+
"propName": "debounce",
|
|
1325
|
+
"methodName": "debounceChanged"
|
|
1326
|
+
}, {
|
|
1327
|
+
"propName": "value",
|
|
1328
|
+
"methodName": "valueChanged"
|
|
1329
|
+
}]; }
|
|
1330
|
+
static get listeners() { return [{
|
|
1331
|
+
"name": "resize",
|
|
1332
|
+
"method": "resizeHandler",
|
|
1333
|
+
"target": "window",
|
|
1334
|
+
"capture": false,
|
|
1335
|
+
"passive": true
|
|
1336
|
+
}, {
|
|
1337
|
+
"name": "scroll",
|
|
1338
|
+
"method": "scrollHandler",
|
|
1339
|
+
"target": "window",
|
|
1340
|
+
"capture": false,
|
|
1341
|
+
"passive": true
|
|
1342
|
+
}]; }
|
|
1343
|
+
}
|