q2-tecton-elements 1.13.0-alpha.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-elsewhere.cjs.entry.js +5 -7
- package/dist/cjs/{icons-4595ee47.js → icons-08ffe5c9.js} +394 -384
- package/dist/cjs/{index-c2e53804.js → index-7febb200.js} +112 -65
- package/dist/cjs/{index-a55d3c34.js → index-dd823ee6.js} +27 -14
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/q2-avatar.cjs.entry.js +2 -2
- package/dist/cjs/q2-badge.cjs.entry.js +43 -0
- package/dist/cjs/q2-btn_2.cjs.entry.js +13 -13
- package/dist/cjs/q2-calendar.cjs.entry.js +53 -59
- package/dist/cjs/q2-card.cjs.entry.js +127 -0
- package/dist/cjs/q2-carousel-pane.cjs.entry.js +5 -5
- package/dist/cjs/q2-carousel.cjs.entry.js +318 -106
- package/dist/cjs/q2-checkbox-group.cjs.entry.js +6 -3
- package/dist/cjs/q2-checkbox.cjs.entry.js +18 -10
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +7 -7
- package/dist/cjs/q2-dropdown.cjs.entry.js +8 -17
- package/dist/cjs/q2-editable-field.cjs.entry.js +5 -8
- package/dist/cjs/q2-icon.cjs.entry.js +3 -3
- package/dist/cjs/q2-input.cjs.entry.js +439 -437
- package/dist/cjs/q2-loading-element.cjs.entry.js +3 -3
- package/dist/cjs/q2-loc.cjs.entry.js +2 -2
- package/dist/cjs/q2-message.cjs.entry.js +5 -5
- package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
- package/dist/cjs/q2-option-list.cjs.entry.js +359 -0
- package/dist/cjs/q2-option.cjs.entry.js +3 -11
- package/dist/cjs/q2-pagination.cjs.entry.js +116 -0
- package/dist/cjs/q2-pill.cjs.entry.js +137 -0
- package/dist/cjs/q2-radio-group.cjs.entry.js +43 -18
- package/dist/cjs/q2-radio.cjs.entry.js +21 -4
- package/dist/cjs/q2-section.cjs.entry.js +5 -7
- package/dist/cjs/q2-select.cjs.entry.js +23 -26
- package/dist/cjs/q2-stepper-pane.cjs.entry.js +42 -4
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +278 -0
- package/dist/cjs/q2-stepper.cjs.entry.js +10 -12
- package/dist/cjs/q2-tab-container.cjs.entry.js +12 -8
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +94 -0
- package/dist/cjs/q2-tecton-elements.cjs.js +3 -3
- package/dist/cjs/q2-textarea.cjs.entry.js +8 -8
- package/dist/cjs/{shapes-086c0365.js → shapes-305746b5.js} +9 -16
- package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -5
- package/dist/collection/collection-manifest.json +10 -3
- package/dist/collection/components/click-elsewhere/index.js +4 -6
- package/dist/collection/components/q2-badge/index.js +148 -0
- package/dist/collection/components/q2-badge/styles.css +134 -0
- package/dist/collection/components/q2-btn/index.js +14 -14
- package/dist/collection/components/q2-btn/styles.css +1 -1
- package/dist/collection/components/q2-calendar/helpers.js +22 -20
- package/dist/collection/components/q2-calendar/index.js +44 -37
- package/dist/collection/components/q2-calendar/validation.js +4 -2
- package/dist/collection/components/q2-card/index.js +347 -0
- package/dist/collection/components/q2-card/styles.css +177 -0
- package/dist/collection/components/q2-carousel/index.js +11 -16
- package/dist/collection/components/q2-carousel/styles.css +3 -3
- package/dist/collection/components/q2-carousel-pane/index.js +2 -2
- package/dist/collection/components/q2-carousel-pane/styles.css +8 -3
- package/dist/collection/components/q2-checkbox/index.js +37 -12
- package/dist/collection/components/q2-checkbox-group/index.js +22 -1
- package/dist/collection/components/q2-dropdown/index.js +6 -15
- package/dist/collection/components/q2-dropdown-item/index.js +5 -5
- package/dist/collection/components/q2-editable-field/index.js +3 -6
- package/dist/collection/components/q2-icon/icons.js +393 -383
- package/dist/collection/components/q2-input/formatting/credit-card.js +15 -13
- package/dist/collection/components/q2-input/formatting/currency.js +162 -162
- package/dist/collection/components/q2-input/formatting/date.js +1 -1
- package/dist/collection/components/q2-input/formatting/generic.js +7 -8
- package/dist/collection/components/q2-input/formatting/number.js +6 -9
- package/dist/collection/components/q2-input/formatting/numeric.js +5 -5
- package/dist/collection/components/q2-input/formatting/phone.js +215 -215
- package/dist/collection/components/q2-input/formatting/postal.js +1 -1
- package/dist/collection/components/q2-input/index.js +81 -25
- package/dist/collection/components/q2-input/styles.css +19 -14
- package/dist/collection/components/q2-loading/index.js +4 -4
- package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js +1 -1
- package/dist/collection/components/q2-loading/skeleton/shapes.js +8 -15
- package/dist/collection/components/q2-message/index.js +3 -3
- package/dist/collection/components/q2-optgroup/index.js +1 -1
- package/dist/collection/components/q2-option/index.js +19 -25
- package/dist/collection/components/q2-option/styles.css +5 -0
- package/dist/collection/components/q2-option-list/index.js +648 -0
- package/dist/collection/components/q2-option-list/styles.css +128 -0
- package/dist/collection/components/q2-pagination/index.js +275 -0
- package/dist/collection/components/q2-pagination/styles.css +120 -0
- package/dist/collection/components/q2-pill/index.js +324 -0
- package/dist/collection/components/q2-pill/styles.css +229 -0
- package/dist/collection/components/q2-radio/index.js +38 -1
- package/dist/collection/components/q2-radio-group/index.js +66 -24
- package/dist/collection/components/q2-section/index.js +5 -7
- package/dist/collection/components/q2-select/index.js +40 -25
- package/dist/collection/components/q2-stepper/index.js +8 -10
- package/dist/collection/components/q2-stepper/styles.css +5 -5
- package/dist/collection/components/q2-stepper-pane/index.js +133 -5
- package/dist/collection/components/q2-stepper-vertical/index.js +346 -0
- package/dist/collection/components/q2-stepper-vertical/styles.css +273 -0
- package/dist/collection/components/q2-tab-container/index.js +11 -7
- package/dist/collection/components/q2-tag/index.js +200 -0
- package/dist/collection/components/q2-tag/styles.css +141 -0
- package/dist/collection/components/q2-textarea/index.js +6 -6
- package/dist/collection/components/tecton-tab-pane/index.js +3 -10
- package/dist/collection/utils/index.js +25 -13
- package/dist/esm/click-elsewhere.entry.js +5 -7
- package/dist/esm/{icons-3ee662ea.js → icons-b1e11526.js} +394 -384
- package/dist/esm/{index-ec6660af.js → index-0ff8de52.js} +27 -15
- package/dist/esm/{index-be8376c0.js → index-dbfb3ecc.js} +112 -65
- package/dist/esm/loader.js +3 -3
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/q2-avatar.entry.js +2 -2
- package/dist/esm/q2-badge.entry.js +39 -0
- package/dist/esm/q2-btn_2.entry.js +13 -13
- package/dist/esm/q2-calendar.entry.js +53 -59
- package/dist/esm/q2-card.entry.js +123 -0
- package/dist/esm/q2-carousel-pane.entry.js +5 -5
- package/dist/esm/q2-carousel.entry.js +318 -106
- package/dist/esm/q2-checkbox-group.entry.js +6 -3
- package/dist/esm/q2-checkbox.entry.js +18 -10
- package/dist/esm/q2-dropdown-item.entry.js +7 -7
- package/dist/esm/q2-dropdown.entry.js +8 -17
- package/dist/esm/q2-editable-field.entry.js +5 -8
- package/dist/esm/q2-icon.entry.js +3 -3
- package/dist/esm/q2-input.entry.js +439 -437
- package/dist/esm/q2-loading-element.entry.js +3 -3
- package/dist/esm/q2-loc.entry.js +2 -2
- package/dist/esm/q2-message.entry.js +5 -5
- package/dist/esm/q2-optgroup.entry.js +3 -3
- package/dist/esm/q2-option-list.entry.js +355 -0
- package/dist/esm/q2-option.entry.js +3 -11
- package/dist/esm/q2-pagination.entry.js +112 -0
- package/dist/esm/q2-pill.entry.js +133 -0
- package/dist/esm/q2-radio-group.entry.js +43 -18
- package/dist/esm/q2-radio.entry.js +21 -4
- package/dist/esm/q2-section.entry.js +5 -7
- package/dist/esm/q2-select.entry.js +23 -26
- package/dist/esm/q2-stepper-pane.entry.js +42 -4
- package/dist/esm/q2-stepper-vertical.entry.js +274 -0
- package/dist/esm/q2-stepper.entry.js +10 -12
- package/dist/esm/q2-tab-container.entry.js +12 -8
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js +90 -0
- package/dist/esm/q2-tecton-elements.js +3 -3
- package/dist/esm/q2-textarea.entry.js +8 -8
- package/dist/esm/{shapes-81c11dfe.js → shapes-cff4e1f0.js} +9 -16
- package/dist/esm/tecton-tab-pane.entry.js +2 -5
- package/dist/loader/index.d.ts +0 -1
- package/dist/q2-tecton-elements/{p-75e87cca.entry.js → p-00e8f782.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-0900bec1.entry.js +1 -0
- package/dist/q2-tecton-elements/p-10264ecb.entry.js +1 -0
- package/dist/q2-tecton-elements/p-123cdfb9.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-fbf7c5e6.entry.js → p-1305ec5f.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-148391d6.entry.js +1 -0
- package/dist/q2-tecton-elements/p-1dfaee64.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-32ad664c.entry.js → p-221abbf6.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-c90a6016.js → p-255b2b4c.js} +1 -1
- package/dist/q2-tecton-elements/p-27736b6b.entry.js +1 -0
- package/dist/q2-tecton-elements/p-2846ab94.entry.js +1 -0
- package/dist/q2-tecton-elements/p-2bc1de01.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-8ea2c4f7.entry.js → p-2c15414c.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-2caa89fd.js +1 -0
- package/dist/q2-tecton-elements/p-327cca41.entry.js +1 -0
- package/dist/q2-tecton-elements/p-3a420dbf.entry.js +1 -0
- package/dist/q2-tecton-elements/p-3abcb09d.entry.js +1 -0
- package/dist/q2-tecton-elements/p-3fe98e3e.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-bb2e110a.entry.js → p-430a979b.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-7e6fc65d.entry.js → p-45eb7739.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-750bcd33.entry.js → p-49b2abc4.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-9b50c3c3.entry.js → p-4ab30466.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-50e218c7.entry.js +1 -0
- package/dist/q2-tecton-elements/p-5bbf2bfe.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-ac859fcc.entry.js → p-6fec9235.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-824aebd9.js +1 -0
- package/dist/q2-tecton-elements/p-a4ae89cc.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-50967020.entry.js → p-a5562aaa.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-ae4fed23.entry.js +1 -0
- package/dist/q2-tecton-elements/p-b2302cd3.entry.js +1 -0
- package/dist/q2-tecton-elements/p-c20cbb2d.entry.js +1 -0
- package/dist/q2-tecton-elements/p-ca7a3380.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-a6f8d09a.entry.js → p-d33e152c.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-9024859f.entry.js → p-d5218cd6.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-d52b435e.entry.js +1 -0
- package/dist/q2-tecton-elements/p-dd02cf8d.js +1 -0
- package/dist/q2-tecton-elements/{p-07a5d703.entry.js → p-e0e7ae8b.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-7e030e92.entry.js → p-ede12fc1.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-df182f61.entry.js → p-fdfbe75b.entry.js} +1 -1
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/test/elements/q2-tag-test.js +151 -0
- package/dist/test/helpers.js +20 -9
- package/dist/types/components/q2-badge/index.d.ts +13 -0
- package/dist/types/components/q2-btn/index.d.ts +3 -3
- package/dist/types/components/q2-calendar/helpers.d.ts +1 -0
- package/dist/types/components/q2-calendar/index.d.ts +2 -1
- package/dist/types/components/q2-calendar/validation.d.ts +1 -1
- package/dist/types/components/q2-card/index.d.ts +35 -0
- package/dist/types/components/q2-checkbox/index.d.ts +3 -1
- package/dist/types/components/q2-checkbox-group/index.d.ts +1 -0
- package/dist/types/components/q2-dropdown/index.d.ts +1 -1
- package/dist/types/components/q2-editable-field/index.d.ts +1 -1
- package/dist/types/components/q2-input/formatting/credit-card.d.ts +1 -3
- package/dist/types/components/q2-input/index.d.ts +5 -2
- package/dist/types/components/q2-option/index.d.ts +2 -3
- package/dist/types/components/q2-option-list/index.d.ts +62 -0
- package/dist/types/components/q2-pagination/index.d.ts +30 -0
- package/dist/types/components/q2-pill/index.d.ts +39 -0
- package/dist/types/components/q2-radio/index.d.ts +4 -1
- package/dist/types/components/q2-radio-group/index.d.ts +5 -1
- package/dist/types/components/q2-select/index.d.ts +2 -1
- package/dist/types/components/q2-stepper/index.d.ts +1 -1
- package/dist/types/components/q2-stepper-pane/index.d.ts +16 -1
- package/dist/types/components/q2-stepper-vertical/index.d.ts +52 -0
- package/dist/types/components/q2-tab-container/index.d.ts +1 -1
- package/dist/types/components/q2-tag/index.d.ts +28 -0
- package/dist/types/components/tecton-tab-pane/index.d.ts +2 -2
- package/dist/types/components.d.ts +235 -11
- package/dist/types/global.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +6 -4
- package/dist/types/util.d.ts +2 -10
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/workspace/workspace/Tecton_tecton-production_master/packages/q2-tecton-elements/.stencil/test/elements/q2-tag-test.d.ts +1 -0
- package/dist/types/workspace/workspace/{_production_release_1.11.0-alpha → Tecton_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +6 -3
- package/package.json +13 -13
- package/dist/q2-tecton-elements/p-06fff43d.entry.js +0 -1
- package/dist/q2-tecton-elements/p-080839ed.js +0 -1
- package/dist/q2-tecton-elements/p-29a37091.entry.js +0 -1
- package/dist/q2-tecton-elements/p-37aba2a4.js +0 -1
- package/dist/q2-tecton-elements/p-4cd00f1a.js +0 -1
- package/dist/q2-tecton-elements/p-6702eb4d.entry.js +0 -1
- package/dist/q2-tecton-elements/p-768e3a5d.entry.js +0 -1
- package/dist/q2-tecton-elements/p-843b1ee9.entry.js +0 -1
- package/dist/q2-tecton-elements/p-943c7745.entry.js +0 -1
- package/dist/q2-tecton-elements/p-95a73559.entry.js +0 -1
- package/dist/q2-tecton-elements/p-9a977ee6.entry.js +0 -1
- package/dist/q2-tecton-elements/p-b281c349.entry.js +0 -1
- package/dist/q2-tecton-elements/p-c5e55b9f.entry.js +0 -1
- package/dist/q2-tecton-elements/p-ccbe9158.entry.js +0 -1
- package/dist/q2-tecton-elements/p-db6f90ac.entry.js +0 -1
- package/dist/q2-tecton-elements/p-fa6eea5c.entry.js +0 -1
|
@@ -61,17 +61,17 @@ export class Q2Btn {
|
|
|
61
61
|
return (h("button", { "aria-expanded": ariaExpanded, "aria-haspopup": ariaHasPopup, "aria-label": hideLabel && loc(label), "aria-selected": ariaSelected, disabled: disabled, type: type, tabindex: tabindex, "test-id": "q2BtnInnerButton", class: iconPosition && `icon-${iconPosition}` },
|
|
62
62
|
h("div", null,
|
|
63
63
|
renderLoadingSpinner && (h("q2-loading", { hidden: !loading, modifiers: isLoadingSpinnerInline ? 'inline' : undefined })),
|
|
64
|
-
!hideLabel && label ?
|
|
64
|
+
!hideLabel && label ? loc(label) : h("slot", { onSlotchange: this.handleSlotChange }))));
|
|
65
65
|
}
|
|
66
66
|
get buttonAttributes() {
|
|
67
67
|
return {
|
|
68
|
-
ariaExpanded: this.ariaExpanded !== undefined ? `${
|
|
69
|
-
ariaHasPopup: this.ariaHasPopup ? `${this.ariaHasPopup}` : undefined,
|
|
68
|
+
ariaExpanded: this.ariaExpanded !== undefined ? `${this.ariaExpanded.toString() === 'true'}` : undefined,
|
|
69
|
+
ariaHasPopup: this.ariaHasPopup !== undefined ? `${this.ariaHasPopup.toString() === 'true'}` : undefined,
|
|
70
70
|
ariaLabel: this.label && this.hideLabel ? loc(this.label) : undefined,
|
|
71
|
-
ariaSelected: this.ariaSelected ? `${this.ariaSelected}` : undefined,
|
|
71
|
+
ariaSelected: this.ariaSelected !== undefined ? `${this.ariaSelected.toString() === 'true'}` : undefined,
|
|
72
72
|
disabled: this.disabled || false,
|
|
73
73
|
type: this.type || 'button',
|
|
74
|
-
tabindex: this.tabIndex || undefined
|
|
74
|
+
tabindex: this.tabIndex || undefined,
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
static get is() { return "q2-btn"; }
|
|
@@ -84,11 +84,11 @@ export class Q2Btn {
|
|
|
84
84
|
}; }
|
|
85
85
|
static get properties() { return {
|
|
86
86
|
"ariaExpanded": {
|
|
87
|
-
"type": "
|
|
87
|
+
"type": "string",
|
|
88
88
|
"mutable": false,
|
|
89
89
|
"complexType": {
|
|
90
|
-
"original": "
|
|
91
|
-
"resolved": "
|
|
90
|
+
"original": "string",
|
|
91
|
+
"resolved": "string",
|
|
92
92
|
"references": {}
|
|
93
93
|
},
|
|
94
94
|
"required": false,
|
|
@@ -101,11 +101,11 @@ export class Q2Btn {
|
|
|
101
101
|
"reflect": false
|
|
102
102
|
},
|
|
103
103
|
"ariaHasPopup": {
|
|
104
|
-
"type": "
|
|
104
|
+
"type": "string",
|
|
105
105
|
"mutable": false,
|
|
106
106
|
"complexType": {
|
|
107
|
-
"original": "
|
|
108
|
-
"resolved": "
|
|
107
|
+
"original": "string",
|
|
108
|
+
"resolved": "string",
|
|
109
109
|
"references": {}
|
|
110
110
|
},
|
|
111
111
|
"required": false,
|
|
@@ -135,11 +135,11 @@ export class Q2Btn {
|
|
|
135
135
|
"reflect": false
|
|
136
136
|
},
|
|
137
137
|
"ariaSelected": {
|
|
138
|
-
"type": "
|
|
138
|
+
"type": "string",
|
|
139
139
|
"mutable": false,
|
|
140
140
|
"complexType": {
|
|
141
|
-
"original": "
|
|
142
|
-
"resolved": "
|
|
141
|
+
"original": "string",
|
|
142
|
+
"resolved": "string",
|
|
143
143
|
"references": {}
|
|
144
144
|
},
|
|
145
145
|
"required": false,
|
|
@@ -237,7 +237,7 @@ button:disabled {
|
|
|
237
237
|
}
|
|
238
238
|
:host([badge]) button {
|
|
239
239
|
padding: var(--tct-btn-badge-padding, var(--t-btn-badge-padding, 2px 5px));
|
|
240
|
-
font-size: var(--tct-btn-badge-font-size, var(--t-btn-badge-font-size, var(--tct
|
|
240
|
+
font-size: var(--tct-btn-badge-font-size, var(--t-btn-badge-font-size, var(--tct-btn-font-size, var(--t-btn-font-size, inherit))));
|
|
241
241
|
border-radius: var(--tct-btn-badge-border-radius, var(--t-btn-badge-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
|
|
242
242
|
background-color: var(--tct-btn-badge-bg, var(--t-btn-badge-bg, transparent));
|
|
243
243
|
color: var(--tct-btn-badge-font-color, var(--t-btn-badge-font-color, inherit));
|
|
@@ -15,7 +15,7 @@ export function formatDateShort(value) {
|
|
|
15
15
|
month: '2-digit',
|
|
16
16
|
day: '2-digit',
|
|
17
17
|
year: 'numeric',
|
|
18
|
-
timeZone: 'UTC'
|
|
18
|
+
timeZone: 'UTC',
|
|
19
19
|
}).format(new Date(isoDate));
|
|
20
20
|
}
|
|
21
21
|
export function formatDateLong(value) {
|
|
@@ -25,7 +25,7 @@ export function formatDateLong(value) {
|
|
|
25
25
|
return new Intl.DateTimeFormat('default', {
|
|
26
26
|
month: 'short',
|
|
27
27
|
day: 'numeric',
|
|
28
|
-
year: 'numeric'
|
|
28
|
+
year: 'numeric',
|
|
29
29
|
}).format(date);
|
|
30
30
|
}
|
|
31
31
|
export function convertMomentFormat(stringFormat) {
|
|
@@ -45,7 +45,7 @@ export function stringToDate(date) {
|
|
|
45
45
|
return undefined;
|
|
46
46
|
}
|
|
47
47
|
let result;
|
|
48
|
-
|
|
48
|
+
const dateParts = date.split(/[\/\-]/).map(part => part.padStart(2, '0'));
|
|
49
49
|
const isIsoString = isString && date.length >= 24 && date[10] === 'T';
|
|
50
50
|
const isCompleteDate = dateParts.length === 3;
|
|
51
51
|
const isPartialDate = dateParts.length < 3;
|
|
@@ -100,7 +100,7 @@ export function setupMonthYear(value = new Date()) {
|
|
|
100
100
|
const monthIndex = Number(value.toISOString().split('-')[1]) - 1;
|
|
101
101
|
return {
|
|
102
102
|
monthIndex,
|
|
103
|
-
selectedYear: value.getFullYear()
|
|
103
|
+
selectedYear: value.getFullYear(),
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
export function validateInput(input = '', validDays = [], validDates = [], // white list
|
|
@@ -144,14 +144,10 @@ startDate, endDate, formatString = 'mm/dd/yyyy', assume) {
|
|
|
144
144
|
if (input.length >= 5 && !isAvailable) {
|
|
145
145
|
isValid = false;
|
|
146
146
|
messageType = 'error';
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
message = loc('tecton.element.calendar.hint.notAvailableDate', [
|
|
152
|
-
formatDateLong(inputDate)
|
|
153
|
-
]);
|
|
154
|
-
}
|
|
147
|
+
const isInvalid = !monthName || !date || !year;
|
|
148
|
+
message = isInvalid
|
|
149
|
+
? `${loc('tecton.element.calendar.hint.invalidDate')}: ${formatString}`
|
|
150
|
+
: loc('tecton.element.calendar.hint.notAvailableDate', [formatDateLong(inputDate)]);
|
|
155
151
|
}
|
|
156
152
|
}
|
|
157
153
|
else {
|
|
@@ -165,19 +161,19 @@ startDate, endDate, formatString = 'mm/dd/yyyy', assume) {
|
|
|
165
161
|
message,
|
|
166
162
|
inputDate,
|
|
167
163
|
isAvailable,
|
|
168
|
-
calendarPosition
|
|
164
|
+
calendarPosition,
|
|
169
165
|
};
|
|
170
166
|
}
|
|
171
167
|
function buildInputDate(input, assume) {
|
|
172
168
|
const now = new Date();
|
|
173
|
-
|
|
169
|
+
const [month, day, year] = input.split('/');
|
|
174
170
|
if (input.length === 10) {
|
|
175
171
|
return new Date(input);
|
|
176
172
|
}
|
|
177
173
|
else if (month && day && Number(day) > 0) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return new Date(`${month}/${
|
|
174
|
+
const twoDigitDay = Number(day) < 10 ? `0${Number(day)}` : day;
|
|
175
|
+
const fourDigitYear = !year || year.length < 4 ? assumeYear(month, day, assume) : year;
|
|
176
|
+
return new Date(`${month}/${twoDigitDay}/${fourDigitYear}`);
|
|
181
177
|
}
|
|
182
178
|
else if (month && day && Number(day) === 0) {
|
|
183
179
|
return new Date(''); // invalid date: 09/0/2021
|
|
@@ -214,6 +210,12 @@ export function handleMissingZeros(input) {
|
|
|
214
210
|
}
|
|
215
211
|
return input;
|
|
216
212
|
}
|
|
213
|
+
export function reorderDateString(input) {
|
|
214
|
+
const dateParts = (input || '').split('-');
|
|
215
|
+
if (dateParts.length !== 3)
|
|
216
|
+
return '';
|
|
217
|
+
return `${dateParts[1]}/${dateParts[2]}/${dateParts[0]}`;
|
|
218
|
+
}
|
|
217
219
|
export function firstDayOfWeekInMonth(month, year) {
|
|
218
220
|
return new Date(year, month, 1, 1, 1, 1, 1).getDay();
|
|
219
221
|
}
|
|
@@ -225,7 +227,7 @@ export function getDays() {
|
|
|
225
227
|
loc('tecton.element.calendar.days.short.Wednesday'),
|
|
226
228
|
loc('tecton.element.calendar.days.short.Thursday'),
|
|
227
229
|
loc('tecton.element.calendar.days.short.Friday'),
|
|
228
|
-
loc('tecton.element.calendar.days.short.Saturday')
|
|
230
|
+
loc('tecton.element.calendar.days.short.Saturday'),
|
|
229
231
|
];
|
|
230
232
|
}
|
|
231
233
|
export function getDaysOfWeek() {
|
|
@@ -236,7 +238,7 @@ export function getDaysOfWeek() {
|
|
|
236
238
|
loc('tecton.element.calendar.days.Wednesday'),
|
|
237
239
|
loc('tecton.element.calendar.days.Thursday'),
|
|
238
240
|
loc('tecton.element.calendar.days.Friday'),
|
|
239
|
-
loc('tecton.element.calendar.days.Saturday')
|
|
241
|
+
loc('tecton.element.calendar.days.Saturday'),
|
|
240
242
|
];
|
|
241
243
|
}
|
|
242
244
|
export function getMonths() {
|
|
@@ -252,6 +254,6 @@ export function getMonths() {
|
|
|
252
254
|
loc('tecton.element.calendar.months.September'),
|
|
253
255
|
loc('tecton.element.calendar.months.October'),
|
|
254
256
|
loc('tecton.element.calendar.months.November'),
|
|
255
|
-
loc('tecton.element.calendar.months.December')
|
|
257
|
+
loc('tecton.element.calendar.months.December'),
|
|
256
258
|
];
|
|
257
259
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Component, Prop, Element, State, Event, Listen, Watch, h } from '@stencil/core';
|
|
1
|
+
import { Component, Prop, Element, State, Event, Listen, Watch, h, } from '@stencil/core';
|
|
2
2
|
import { addDays, isSameDay, format, isValid as isValidDate } from 'date-fns';
|
|
3
|
-
import { stringToDate, setupMonthYear, getMonths, getDays, getDaysOfWeek, stringArrayToDate, convertMomentFormat, validateInput, handleMissingZeros, formatDateISO, formatDateLong, formatDateShort, removeTimezoneOffset } from './helpers';
|
|
3
|
+
import { stringToDate, setupMonthYear, getMonths, getDays, getDaysOfWeek, stringArrayToDate, convertMomentFormat, validateInput, handleMissingZeros, formatDateISO, formatDateLong, formatDateShort, removeTimezoneOffset, reorderDateString, } from './helpers';
|
|
4
4
|
import { buildDates, getValidDaysOfWeek } from './validation';
|
|
5
5
|
import { handleAriaLabel, loc, setPopProperties, overrideFocus, isEventFromElement } from 'src/utils';
|
|
6
6
|
export class Q2Calendar {
|
|
@@ -26,7 +26,7 @@ export class Q2Calendar {
|
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
this.openCalendar = () => {
|
|
29
|
-
if (!this.dropdownOpen) {
|
|
29
|
+
if (!this.readonly && !this.dropdownOpen) {
|
|
30
30
|
this.selectedMonthYear = setupMonthYear(this.dateValue);
|
|
31
31
|
this.dateList = this.buildDateList(this.selectedMonthYear);
|
|
32
32
|
this.dropdownOpen = true;
|
|
@@ -35,6 +35,8 @@ export class Q2Calendar {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
this.toggleCalendar = () => {
|
|
38
|
+
if (this.readonly)
|
|
39
|
+
return;
|
|
38
40
|
this.dropdownOpen = !this.dropdownOpen;
|
|
39
41
|
this.scheduledAfterRender.push(this.resizeIframe);
|
|
40
42
|
if (this.dropdownOpen) {
|
|
@@ -162,7 +164,7 @@ export class Q2Calendar {
|
|
|
162
164
|
const newYear = removeTimezoneOffset(new Date(year, monthIndex));
|
|
163
165
|
this.selectedMonthYear = {
|
|
164
166
|
monthIndex: newYear.getMonth(),
|
|
165
|
-
selectedYear: newYear.getFullYear()
|
|
167
|
+
selectedYear: newYear.getFullYear(),
|
|
166
168
|
};
|
|
167
169
|
this.dateList = this.buildDateList(this.selectedMonthYear);
|
|
168
170
|
this.scheduledAfterRender.push(() => this.checkActiveCellForBlankness());
|
|
@@ -250,13 +252,14 @@ export class Q2Calendar {
|
|
|
250
252
|
};
|
|
251
253
|
}
|
|
252
254
|
resizeIframe() {
|
|
253
|
-
return
|
|
254
|
-
window.TectonElements.resizeIframe &&
|
|
255
|
-
window.TectonElements.resizeIframe());
|
|
255
|
+
return window.TectonElements && window.TectonElements.resizeIframe && window.TectonElements.resizeIframe();
|
|
256
256
|
}
|
|
257
257
|
connectedCallback() {
|
|
258
258
|
this.selectedMonthYear = setupMonthYear(this.dateValue);
|
|
259
259
|
this.dateList = this.buildDateList(this.selectedMonthYear);
|
|
260
|
+
if (this.value && this.isTypeable && !this.typedValue) {
|
|
261
|
+
this.typedValue = reorderDateString(this.value);
|
|
262
|
+
}
|
|
260
263
|
this.validateDate();
|
|
261
264
|
}
|
|
262
265
|
componentWillLoad() {
|
|
@@ -284,9 +287,7 @@ export class Q2Calendar {
|
|
|
284
287
|
}
|
|
285
288
|
get localizedErrors() {
|
|
286
289
|
return ((Array.isArray(this.errors) &&
|
|
287
|
-
this.errors
|
|
288
|
-
.filter((error) => error)
|
|
289
|
-
.map((error) => error && loc(error))) ||
|
|
290
|
+
this.errors.filter((error) => error).map((error) => error && loc(error))) ||
|
|
290
291
|
[]);
|
|
291
292
|
}
|
|
292
293
|
get formattedValue() {
|
|
@@ -301,7 +302,7 @@ export class Q2Calendar {
|
|
|
301
302
|
year: 'numeric',
|
|
302
303
|
month: '2-digit',
|
|
303
304
|
day: '2-digit',
|
|
304
|
-
timeZone: 'UTC'
|
|
305
|
+
timeZone: 'UTC',
|
|
305
306
|
}).format(dateValue);
|
|
306
307
|
}
|
|
307
308
|
get computedPlaceholder() {
|
|
@@ -323,9 +324,7 @@ export class Q2Calendar {
|
|
|
323
324
|
if (isMoment)
|
|
324
325
|
return value.toDate();
|
|
325
326
|
// stringified moment value assigned in html template e.g.) handlebar
|
|
326
|
-
const isMomentString = typeof value === 'string' &&
|
|
327
|
-
value.split(' ').length === 6 &&
|
|
328
|
-
/GMT-\d{4}/g.test(value);
|
|
327
|
+
const isMomentString = typeof value === 'string' && value.split(' ').length === 6 && /GMT-\d{4}/g.test(value);
|
|
329
328
|
if (isMomentString) {
|
|
330
329
|
value = formatDateISO(value);
|
|
331
330
|
}
|
|
@@ -336,7 +335,7 @@ export class Q2Calendar {
|
|
|
336
335
|
return {
|
|
337
336
|
startDate: stringToDate(this.startDate),
|
|
338
337
|
endDate: stringToDate(this.endDate),
|
|
339
|
-
cutOffTime: stringToDate(this.cutoffTime)
|
|
338
|
+
cutOffTime: stringToDate(this.cutoffTime),
|
|
340
339
|
};
|
|
341
340
|
}
|
|
342
341
|
get isTypeable() {
|
|
@@ -353,8 +352,7 @@ export class Q2Calendar {
|
|
|
353
352
|
}
|
|
354
353
|
defaultErrorHandler(event) {
|
|
355
354
|
if (event.target === this.hostElement && !this.hostElement.onerror) {
|
|
356
|
-
if (Array.isArray(this.errors) &&
|
|
357
|
-
this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
355
|
+
if (Array.isArray(this.errors) && this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
358
356
|
return;
|
|
359
357
|
}
|
|
360
358
|
this.errors = (this.errors || []).concat(['tecton.element.calendar.invalidDate']);
|
|
@@ -368,8 +366,7 @@ export class Q2Calendar {
|
|
|
368
366
|
this.onsuccess(event);
|
|
369
367
|
}
|
|
370
368
|
else {
|
|
371
|
-
if (Array.isArray(this.errors) &&
|
|
372
|
-
this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
369
|
+
if (Array.isArray(this.errors) && this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
373
370
|
this.errors = this.errors.filter(x => x !== 'tecton.element.calendar.invalidDate');
|
|
374
371
|
}
|
|
375
372
|
}
|
|
@@ -392,9 +389,7 @@ export class Q2Calendar {
|
|
|
392
389
|
this.typedValue = newValueAsString;
|
|
393
390
|
}
|
|
394
391
|
else {
|
|
395
|
-
const dateValue = isMoment
|
|
396
|
-
? newValue.toDate()
|
|
397
|
-
: stringToDate(newValue);
|
|
392
|
+
const dateValue = isMoment ? newValue.toDate() : stringToDate(newValue);
|
|
398
393
|
this.inputField.value = formatDateShort(dateValue);
|
|
399
394
|
this.selectedMonthYear = setupMonthYear(dateValue);
|
|
400
395
|
this.dateList = this.buildDateList(this.selectedMonthYear);
|
|
@@ -451,22 +446,21 @@ export class Q2Calendar {
|
|
|
451
446
|
else {
|
|
452
447
|
calculationDateList = this.buildDateList({
|
|
453
448
|
monthIndex: month,
|
|
454
|
-
selectedYear: year
|
|
449
|
+
selectedYear: year,
|
|
455
450
|
});
|
|
456
451
|
}
|
|
457
452
|
const dateValueDayOfMonth = (_c = dateValue === null || dateValue === void 0 ? void 0 : dateValue.getDate()) !== null && _c !== void 0 ? _c : undefined;
|
|
458
453
|
const isDateValueInvalid = dateValueDayOfMonth
|
|
459
|
-
? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth)
|
|
460
|
-
.isValid
|
|
454
|
+
? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth).isValid
|
|
461
455
|
: true;
|
|
462
456
|
if (isDateValueInvalid) {
|
|
463
457
|
this.error.emit({
|
|
464
458
|
errors: [
|
|
465
459
|
{
|
|
466
460
|
message: `Value passed is invalid: The date ${this.value} is not valid`,
|
|
467
|
-
errorCode: 'generalInvalid'
|
|
468
|
-
}
|
|
469
|
-
]
|
|
461
|
+
errorCode: 'generalInvalid',
|
|
462
|
+
},
|
|
463
|
+
],
|
|
470
464
|
});
|
|
471
465
|
}
|
|
472
466
|
else {
|
|
@@ -475,7 +469,7 @@ export class Q2Calendar {
|
|
|
475
469
|
}
|
|
476
470
|
}
|
|
477
471
|
catch (error) {
|
|
478
|
-
console.
|
|
472
|
+
console.warn('Invalid moment value ', this.dateValue);
|
|
479
473
|
}
|
|
480
474
|
}
|
|
481
475
|
focusInput() {
|
|
@@ -484,16 +478,12 @@ export class Q2Calendar {
|
|
|
484
478
|
}
|
|
485
479
|
checkActiveCellForBlankness() {
|
|
486
480
|
const activeElement = this.hostElement.shadowRoot.activeElement;
|
|
487
|
-
if (!activeElement ||
|
|
488
|
-
activeElement.tagName !== 'TD' ||
|
|
489
|
-
!activeElement.hasAttribute('aria-hidden'))
|
|
481
|
+
if (!activeElement || activeElement.tagName !== 'TD' || !activeElement.hasAttribute('aria-hidden'))
|
|
490
482
|
return;
|
|
491
483
|
const { calendarBody } = this;
|
|
492
484
|
const calendarCells = Array.from(calendarBody.querySelectorAll('td'));
|
|
493
485
|
const indexOfCell = Array.from(calendarCells).indexOf(activeElement);
|
|
494
|
-
const dayToFocus = indexOfCell < 15
|
|
495
|
-
? 1
|
|
496
|
-
: calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;
|
|
486
|
+
const dayToFocus = indexOfCell < 15 ? 1 : calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;
|
|
497
487
|
this.focusDay(this.generateDateFromDay(dayToFocus));
|
|
498
488
|
}
|
|
499
489
|
generateDateFromDay(day) {
|
|
@@ -533,11 +523,11 @@ export class Q2Calendar {
|
|
|
533
523
|
this.setHints({
|
|
534
524
|
isValid: true,
|
|
535
525
|
message: `${loc('tecton.element.calendar.hint.selection')}: ${formatDateLong(inputDate)}`,
|
|
536
|
-
messageType: 'success'
|
|
526
|
+
messageType: 'success',
|
|
537
527
|
});
|
|
538
528
|
}
|
|
539
529
|
calendarField() {
|
|
540
|
-
return (h("q2-input", { ref: el => (this.inputField = el), class: "calendar-input-field", value: this.formattedValue, label: loc(this.label), hideLabel: this.hideLabel, disabled: !!this.disabled, placeholder: this.computedPlaceholder, optional: !!this.optional, ariaExpanded: this.dropdownOpen
|
|
530
|
+
return (h("q2-input", { ref: el => (this.inputField = el), class: "calendar-input-field", value: this.formattedValue, label: loc(this.label), hideLabel: this.hideLabel, disabled: !!this.disabled, readonly: !!this.readonly, placeholder: this.computedPlaceholder, optional: !!this.optional, ariaExpanded: `${!!this.dropdownOpen}`, errors: (this.localizedErrors.length > 0 && this.localizedErrors) ||
|
|
541
531
|
(this.invalid && ['tecton.element.calendar.invalid']) ||
|
|
542
532
|
[], onClick: this.onInputClick, onChange: this.onInputChange, onInput: this.onInputInput, onKeyDown: this.onInputKeydown, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, "icon-right": "calendar", "format-modifier": this.isTypeable ? this.formatModifier : '', pseudo: !this.isTypeable, type: "date", "hide-messages": true, "test-id": "inputAndCalendarToggle" }));
|
|
543
533
|
}
|
|
@@ -691,6 +681,23 @@ export class Q2Calendar {
|
|
|
691
681
|
"attribute": "disabled",
|
|
692
682
|
"reflect": true
|
|
693
683
|
},
|
|
684
|
+
"readonly": {
|
|
685
|
+
"type": "boolean",
|
|
686
|
+
"mutable": false,
|
|
687
|
+
"complexType": {
|
|
688
|
+
"original": "boolean",
|
|
689
|
+
"resolved": "boolean",
|
|
690
|
+
"references": {}
|
|
691
|
+
},
|
|
692
|
+
"required": false,
|
|
693
|
+
"optional": false,
|
|
694
|
+
"docs": {
|
|
695
|
+
"tags": [],
|
|
696
|
+
"text": ""
|
|
697
|
+
},
|
|
698
|
+
"attribute": "readonly",
|
|
699
|
+
"reflect": true
|
|
700
|
+
},
|
|
694
701
|
"invalid": {
|
|
695
702
|
"type": "boolean",
|
|
696
703
|
"mutable": true,
|
|
@@ -8,6 +8,7 @@ export function generateDatesFromMonthYear(month, year) {
|
|
|
8
8
|
}, []);
|
|
9
9
|
}
|
|
10
10
|
export function getValidDaysOfWeek(checksum = 127) {
|
|
11
|
+
/* tslint:disable:no-bitwise */
|
|
11
12
|
const sunValid = checksum & 1;
|
|
12
13
|
const monValid = checksum & 2;
|
|
13
14
|
const tuesValid = checksum & 4;
|
|
@@ -15,6 +16,7 @@ export function getValidDaysOfWeek(checksum = 127) {
|
|
|
15
16
|
const thursValid = checksum & 16;
|
|
16
17
|
const friValid = checksum & 32;
|
|
17
18
|
const satValid = checksum & 64;
|
|
19
|
+
/* tslint:enable:no-bitwise */
|
|
18
20
|
const ret = [];
|
|
19
21
|
if (checksum <= 0)
|
|
20
22
|
return ret;
|
|
@@ -82,7 +84,7 @@ export function getDayState(dayInMonth, dateValidators, currentDate) {
|
|
|
82
84
|
const isEndDate = isSameDay(dayInMonth, dateValidators === null || dateValidators === void 0 ? void 0 : dateValidators.endDate);
|
|
83
85
|
return { isSelected, isToday, isStartDate, isEndDate };
|
|
84
86
|
}
|
|
85
|
-
export function generateClassesForCalDay({ isInvalid, isSelected, isEndDate, isStartDate, isToday, isIncompleteDate }) {
|
|
87
|
+
export function generateClassesForCalDay({ isInvalid, isSelected, isEndDate, isStartDate, isToday, isIncompleteDate, }) {
|
|
86
88
|
const classes = [];
|
|
87
89
|
if (!isInvalid)
|
|
88
90
|
classes.push('is-valid');
|
|
@@ -116,7 +118,7 @@ export const emptyDate = {
|
|
|
116
118
|
isSelected: false,
|
|
117
119
|
isStartDate: false,
|
|
118
120
|
isEndDate: false,
|
|
119
|
-
classList: ''
|
|
121
|
+
classList: '',
|
|
120
122
|
};
|
|
121
123
|
export function addEmptyDates(from, to) {
|
|
122
124
|
if (from === 7)
|