q2-tecton-elements 1.12.1 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-elsewhere.cjs.entry.js +5 -7
- package/dist/cjs/{icons-9bd0febe.js → icons-08ffe5c9.js} +386 -386
- package/dist/cjs/{index-c2e53804.js → index-7febb200.js} +112 -65
- package/dist/cjs/{index-773c3eec.js → index-dd823ee6.js} +2 -2
- 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 +42 -59
- package/dist/cjs/q2-card.cjs.entry.js +43 -5
- 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 +3 -3
- package/dist/cjs/q2-checkbox.cjs.entry.js +8 -11
- package/dist/cjs/q2-dropdown-item.cjs.entry.js +7 -7
- package/dist/cjs/q2-dropdown.cjs.entry.js +9 -18
- 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 +431 -434
- 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 +5 -3
- package/dist/cjs/q2-option.cjs.entry.js +1 -1
- package/dist/cjs/q2-pagination.cjs.entry.js +6 -8
- package/dist/cjs/q2-pill.cjs.entry.js +9 -9
- package/dist/cjs/q2-radio-group.cjs.entry.js +4 -7
- package/dist/cjs/q2-radio.cjs.entry.js +2 -2
- package/dist/cjs/q2-section.cjs.entry.js +5 -7
- package/dist/cjs/q2-select.cjs.entry.js +17 -29
- 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 +8 -8
- package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
- package/dist/cjs/q2-tag.cjs.entry.js +4 -4
- 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 +5 -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-calendar/helpers.js +16 -20
- package/dist/collection/components/q2-calendar/index.js +21 -36
- package/dist/collection/components/q2-calendar/styles.css +1 -1
- package/dist/collection/components/q2-calendar/validation.js +4 -2
- package/dist/collection/components/q2-card/index.js +59 -2
- package/dist/collection/components/q2-card/styles.css +17 -1
- 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 +8 -11
- package/dist/collection/components/q2-checkbox/styles.css +1 -1
- package/dist/collection/components/q2-checkbox-group/index.js +1 -1
- package/dist/collection/components/q2-dropdown/index.js +6 -15
- package/dist/collection/components/q2-dropdown/styles.css +3 -3
- 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 +385 -385
- 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 +20 -21
- package/dist/collection/components/q2-input/styles.css +19 -6
- 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-loading/styles.css +1 -1
- 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-list/index.js +4 -2
- package/dist/collection/components/q2-pagination/index.js +4 -6
- package/dist/collection/components/q2-pill/index.js +8 -8
- package/dist/collection/components/q2-pill/styles.css +3 -1
- package/dist/collection/components/q2-radio-group/index.js +3 -6
- package/dist/collection/components/q2-section/index.js +5 -7
- package/dist/collection/components/q2-select/index.js +15 -27
- package/dist/collection/components/q2-select/styles.css +4 -4
- package/dist/collection/components/q2-stepper/index.js +8 -10
- package/dist/collection/components/q2-stepper/styles.css +3 -3
- 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 +7 -7
- package/dist/collection/components/q2-tag/index.js +3 -3
- 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 +1 -1
- package/dist/esm/click-elsewhere.entry.js +5 -7
- package/dist/esm/{icons-6a143c2f.js → icons-b1e11526.js} +386 -386
- package/dist/esm/{index-fa32f694.js → index-0ff8de52.js} +2 -2
- 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 +42 -59
- package/dist/esm/q2-card.entry.js +43 -5
- 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 +3 -3
- package/dist/esm/q2-checkbox.entry.js +8 -11
- package/dist/esm/q2-dropdown-item.entry.js +7 -7
- package/dist/esm/q2-dropdown.entry.js +9 -18
- 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 +431 -434
- 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 +5 -3
- package/dist/esm/q2-option.entry.js +1 -1
- package/dist/esm/q2-pagination.entry.js +6 -8
- package/dist/esm/q2-pill.entry.js +9 -9
- package/dist/esm/q2-radio-group.entry.js +4 -7
- package/dist/esm/q2-radio.entry.js +2 -2
- package/dist/esm/q2-section.entry.js +5 -7
- package/dist/esm/q2-select.entry.js +17 -29
- 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 +8 -8
- package/dist/esm/q2-tab-pane.entry.js +1 -1
- package/dist/esm/q2-tag.entry.js +4 -4
- 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-a0248299.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-f98dc161.entry.js → p-10264ecb.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-0a7cff38.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-167a19fd.entry.js → p-2bc1de01.entry.js} +1 -1
- 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-54f0d64e.entry.js → p-3a420dbf.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-c460e5ed.entry.js → p-3a64e5ce.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-aca8302b.entry.js → p-3abcb09d.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-08668234.entry.js → p-3fe98e3e.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-c5199147.entry.js → p-430a979b.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-fa9e3825.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-d9bc6494.entry.js → p-4ab30466.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-5bbf2bfe.entry.js +1 -0
- package/dist/q2-tecton-elements/p-6fec9235.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-3c6f73cb.js → p-824aebd9.js} +1 -1
- package/dist/q2-tecton-elements/{p-91dba21f.entry.js → p-a4ae89cc.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-d3058002.entry.js → p-a5562aaa.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-5effd81a.entry.js → p-ae130f70.entry.js} +1 -1
- 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-9a3c37ab.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-54300d2f.entry.js → p-d52b435e.entry.js} +1 -1
- package/dist/q2-tecton-elements/{p-c3d68d5c.js → p-dd02cf8d.js} +1 -1
- package/dist/q2-tecton-elements/{p-30bf5f44.entry.js → p-e0e7ae8b.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-ede12fc1.entry.js +1 -0
- package/dist/q2-tecton-elements/{p-af202624.entry.js → p-fdfbe75b.entry.js} +1 -1
- package/dist/q2-tecton-elements/p-ffbded54.entry.js +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/test/elements/q2-tag-test.js +6 -6
- package/dist/test/helpers.js +7 -7
- 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/index.d.ts +1 -1
- package/dist/types/components/q2-calendar/validation.d.ts +1 -1
- package/dist/types/components/q2-card/index.d.ts +4 -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 +2 -2
- package/dist/types/components/q2-option-list/index.d.ts +1 -1
- package/dist/types/components/q2-pill/index.d.ts +1 -1
- package/dist/types/components/q2-select/index.d.ts +1 -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/tecton-tab-pane/index.d.ts +2 -2
- package/dist/types/components.d.ts +63 -13
- 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/workspace/workspace/{tecton-production_release_1.12.x → tecton-production_release_1.13.x}/packages/q2-tecton-elements/.stencil/test/elements/q2-tag-test.d.ts +0 -0
- package/dist/types/workspace/workspace/{tecton-production_release_1.12.x → tecton-production_release_1.13.x}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +2 -2
- package/package.json +13 -13
- package/dist/q2-tecton-elements/p-080839ed.js +0 -1
- package/dist/q2-tecton-elements/p-2afdc922.entry.js +0 -1
- package/dist/q2-tecton-elements/p-34415315.entry.js +0 -1
- package/dist/q2-tecton-elements/p-5b906cf1.entry.js +0 -1
- package/dist/q2-tecton-elements/p-7ce98c1a.entry.js +0 -1
- package/dist/q2-tecton-elements/p-b9c2c1d3.entry.js +0 -1
- package/dist/q2-tecton-elements/p-c5e6f7fa.entry.js +0 -1
- package/dist/q2-tecton-elements/p-d65aaed2.entry.js +0 -1
- package/dist/q2-tecton-elements/p-df86f160.entry.js +0 -1
- package/dist/q2-tecton-elements/p-e38080d2.entry.js +0 -1
- package/dist/q2-tecton-elements/p-e9d69ba8.entry.js +0 -1
- package/dist/q2-tecton-elements/p-fe6407a4.entry.js +0 -1
|
@@ -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
|
|
@@ -231,7 +227,7 @@ export function getDays() {
|
|
|
231
227
|
loc('tecton.element.calendar.days.short.Wednesday'),
|
|
232
228
|
loc('tecton.element.calendar.days.short.Thursday'),
|
|
233
229
|
loc('tecton.element.calendar.days.short.Friday'),
|
|
234
|
-
loc('tecton.element.calendar.days.short.Saturday')
|
|
230
|
+
loc('tecton.element.calendar.days.short.Saturday'),
|
|
235
231
|
];
|
|
236
232
|
}
|
|
237
233
|
export function getDaysOfWeek() {
|
|
@@ -242,7 +238,7 @@ export function getDaysOfWeek() {
|
|
|
242
238
|
loc('tecton.element.calendar.days.Wednesday'),
|
|
243
239
|
loc('tecton.element.calendar.days.Thursday'),
|
|
244
240
|
loc('tecton.element.calendar.days.Friday'),
|
|
245
|
-
loc('tecton.element.calendar.days.Saturday')
|
|
241
|
+
loc('tecton.element.calendar.days.Saturday'),
|
|
246
242
|
];
|
|
247
243
|
}
|
|
248
244
|
export function getMonths() {
|
|
@@ -258,6 +254,6 @@ export function getMonths() {
|
|
|
258
254
|
loc('tecton.element.calendar.months.September'),
|
|
259
255
|
loc('tecton.element.calendar.months.October'),
|
|
260
256
|
loc('tecton.element.calendar.months.November'),
|
|
261
|
-
loc('tecton.element.calendar.months.December')
|
|
257
|
+
loc('tecton.element.calendar.months.December'),
|
|
262
258
|
];
|
|
263
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, reorderDateString } 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 {
|
|
@@ -164,7 +164,7 @@ export class Q2Calendar {
|
|
|
164
164
|
const newYear = removeTimezoneOffset(new Date(year, monthIndex));
|
|
165
165
|
this.selectedMonthYear = {
|
|
166
166
|
monthIndex: newYear.getMonth(),
|
|
167
|
-
selectedYear: newYear.getFullYear()
|
|
167
|
+
selectedYear: newYear.getFullYear(),
|
|
168
168
|
};
|
|
169
169
|
this.dateList = this.buildDateList(this.selectedMonthYear);
|
|
170
170
|
this.scheduledAfterRender.push(() => this.checkActiveCellForBlankness());
|
|
@@ -252,9 +252,7 @@ export class Q2Calendar {
|
|
|
252
252
|
};
|
|
253
253
|
}
|
|
254
254
|
resizeIframe() {
|
|
255
|
-
return
|
|
256
|
-
window.TectonElements.resizeIframe &&
|
|
257
|
-
window.TectonElements.resizeIframe());
|
|
255
|
+
return window.TectonElements && window.TectonElements.resizeIframe && window.TectonElements.resizeIframe();
|
|
258
256
|
}
|
|
259
257
|
connectedCallback() {
|
|
260
258
|
this.selectedMonthYear = setupMonthYear(this.dateValue);
|
|
@@ -289,9 +287,7 @@ export class Q2Calendar {
|
|
|
289
287
|
}
|
|
290
288
|
get localizedErrors() {
|
|
291
289
|
return ((Array.isArray(this.errors) &&
|
|
292
|
-
this.errors
|
|
293
|
-
.filter((error) => error)
|
|
294
|
-
.map((error) => error && loc(error))) ||
|
|
290
|
+
this.errors.filter((error) => error).map((error) => error && loc(error))) ||
|
|
295
291
|
[]);
|
|
296
292
|
}
|
|
297
293
|
get formattedValue() {
|
|
@@ -306,7 +302,7 @@ export class Q2Calendar {
|
|
|
306
302
|
year: 'numeric',
|
|
307
303
|
month: '2-digit',
|
|
308
304
|
day: '2-digit',
|
|
309
|
-
timeZone: 'UTC'
|
|
305
|
+
timeZone: 'UTC',
|
|
310
306
|
}).format(dateValue);
|
|
311
307
|
}
|
|
312
308
|
get computedPlaceholder() {
|
|
@@ -328,9 +324,7 @@ export class Q2Calendar {
|
|
|
328
324
|
if (isMoment)
|
|
329
325
|
return value.toDate();
|
|
330
326
|
// stringified moment value assigned in html template e.g.) handlebar
|
|
331
|
-
const isMomentString = typeof value === 'string' &&
|
|
332
|
-
value.split(' ').length === 6 &&
|
|
333
|
-
/GMT-\d{4}/g.test(value);
|
|
327
|
+
const isMomentString = typeof value === 'string' && value.split(' ').length === 6 && /GMT-\d{4}/g.test(value);
|
|
334
328
|
if (isMomentString) {
|
|
335
329
|
value = formatDateISO(value);
|
|
336
330
|
}
|
|
@@ -342,7 +336,7 @@ export class Q2Calendar {
|
|
|
342
336
|
return {
|
|
343
337
|
startDate: stringToDate(this.startDate),
|
|
344
338
|
endDate: stringToDate(this.endDate),
|
|
345
|
-
cutOffTime: isValidDate(ct) ? ct : undefined
|
|
339
|
+
cutOffTime: isValidDate(ct) ? ct : undefined,
|
|
346
340
|
};
|
|
347
341
|
}
|
|
348
342
|
get isTypeable() {
|
|
@@ -359,8 +353,7 @@ export class Q2Calendar {
|
|
|
359
353
|
}
|
|
360
354
|
defaultErrorHandler(event) {
|
|
361
355
|
if (event.target === this.hostElement && !this.hostElement.onerror) {
|
|
362
|
-
if (Array.isArray(this.errors) &&
|
|
363
|
-
this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
356
|
+
if (Array.isArray(this.errors) && this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
364
357
|
return;
|
|
365
358
|
}
|
|
366
359
|
this.errors = (this.errors || []).concat(['tecton.element.calendar.invalidDate']);
|
|
@@ -374,8 +367,7 @@ export class Q2Calendar {
|
|
|
374
367
|
this.onsuccess(event);
|
|
375
368
|
}
|
|
376
369
|
else {
|
|
377
|
-
if (Array.isArray(this.errors) &&
|
|
378
|
-
this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
370
|
+
if (Array.isArray(this.errors) && this.errors.includes('tecton.element.calendar.invalidDate')) {
|
|
379
371
|
this.errors = this.errors.filter(x => x !== 'tecton.element.calendar.invalidDate');
|
|
380
372
|
}
|
|
381
373
|
}
|
|
@@ -398,9 +390,7 @@ export class Q2Calendar {
|
|
|
398
390
|
this.typedValue = newValueAsString;
|
|
399
391
|
}
|
|
400
392
|
else {
|
|
401
|
-
const dateValue = isMoment
|
|
402
|
-
? newValue.toDate()
|
|
403
|
-
: stringToDate(newValue);
|
|
393
|
+
const dateValue = isMoment ? newValue.toDate() : stringToDate(newValue);
|
|
404
394
|
this.inputField.value = formatDateShort(dateValue);
|
|
405
395
|
this.selectedMonthYear = setupMonthYear(dateValue);
|
|
406
396
|
this.dateList = this.buildDateList(this.selectedMonthYear);
|
|
@@ -457,22 +447,21 @@ export class Q2Calendar {
|
|
|
457
447
|
else {
|
|
458
448
|
calculationDateList = this.buildDateList({
|
|
459
449
|
monthIndex: month,
|
|
460
|
-
selectedYear: year
|
|
450
|
+
selectedYear: year,
|
|
461
451
|
});
|
|
462
452
|
}
|
|
463
453
|
const dateValueDayOfMonth = (_c = dateValue === null || dateValue === void 0 ? void 0 : dateValue.getDate()) !== null && _c !== void 0 ? _c : undefined;
|
|
464
454
|
const isDateValueInvalid = dateValueDayOfMonth
|
|
465
|
-
? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth)
|
|
466
|
-
.isValid
|
|
455
|
+
? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth).isValid
|
|
467
456
|
: true;
|
|
468
457
|
if (isDateValueInvalid) {
|
|
469
458
|
this.error.emit({
|
|
470
459
|
errors: [
|
|
471
460
|
{
|
|
472
461
|
message: `Value passed is invalid: The date ${this.value} is not valid`,
|
|
473
|
-
errorCode: 'generalInvalid'
|
|
474
|
-
}
|
|
475
|
-
]
|
|
462
|
+
errorCode: 'generalInvalid',
|
|
463
|
+
},
|
|
464
|
+
],
|
|
476
465
|
});
|
|
477
466
|
}
|
|
478
467
|
else {
|
|
@@ -481,7 +470,7 @@ export class Q2Calendar {
|
|
|
481
470
|
}
|
|
482
471
|
}
|
|
483
472
|
catch (error) {
|
|
484
|
-
console.
|
|
473
|
+
console.warn('Invalid moment value ', this.dateValue);
|
|
485
474
|
}
|
|
486
475
|
}
|
|
487
476
|
focusInput() {
|
|
@@ -490,16 +479,12 @@ export class Q2Calendar {
|
|
|
490
479
|
}
|
|
491
480
|
checkActiveCellForBlankness() {
|
|
492
481
|
const activeElement = this.hostElement.shadowRoot.activeElement;
|
|
493
|
-
if (!activeElement ||
|
|
494
|
-
activeElement.tagName !== 'TD' ||
|
|
495
|
-
!activeElement.hasAttribute('aria-hidden'))
|
|
482
|
+
if (!activeElement || activeElement.tagName !== 'TD' || !activeElement.hasAttribute('aria-hidden'))
|
|
496
483
|
return;
|
|
497
484
|
const { calendarBody } = this;
|
|
498
485
|
const calendarCells = Array.from(calendarBody.querySelectorAll('td'));
|
|
499
486
|
const indexOfCell = Array.from(calendarCells).indexOf(activeElement);
|
|
500
|
-
const dayToFocus = indexOfCell < 15
|
|
501
|
-
? 1
|
|
502
|
-
: calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;
|
|
487
|
+
const dayToFocus = indexOfCell < 15 ? 1 : calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;
|
|
503
488
|
this.focusDay(this.generateDateFromDay(dayToFocus));
|
|
504
489
|
}
|
|
505
490
|
generateDateFromDay(day) {
|
|
@@ -539,11 +524,11 @@ export class Q2Calendar {
|
|
|
539
524
|
this.setHints({
|
|
540
525
|
isValid: true,
|
|
541
526
|
message: `${loc('tecton.element.calendar.hint.selection')}: ${formatDateLong(inputDate)}`,
|
|
542
|
-
messageType: 'success'
|
|
527
|
+
messageType: 'success',
|
|
543
528
|
});
|
|
544
529
|
}
|
|
545
530
|
calendarField() {
|
|
546
|
-
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
|
|
531
|
+
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) ||
|
|
547
532
|
(this.invalid && ['tecton.element.calendar.invalid']) ||
|
|
548
533
|
[], 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" }));
|
|
549
534
|
}
|
|
@@ -149,7 +149,7 @@ q2-input {
|
|
|
149
149
|
.calendar-label {
|
|
150
150
|
font-size: var(--tct-calendar-label-font-size, var(--t-calendar-label-font-size, 16px));
|
|
151
151
|
flex: 1 1;
|
|
152
|
-
flex-basis: calc(100% - var
|
|
152
|
+
flex-basis: calc(100% - var(--tct-btn-icon-width, 44px));
|
|
153
153
|
margin: 0;
|
|
154
154
|
padding: var(--tct-calendar-label-vertical-padding, var(--t-calendar-label-vertical-padding, var(--tct-scale-2, var(--app-scale-2, 10px)))) 0;
|
|
155
155
|
}
|
|
@@ -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)
|
|
@@ -1,5 +1,23 @@
|
|
|
1
|
-
import { Component, Prop, Event, h, Fragment, Listen, Element, State } from '@stencil/core';
|
|
1
|
+
import { Component, Prop, Event, h, Fragment, Listen, Element, State, Watch, } from '@stencil/core';
|
|
2
2
|
import { isTouchDevice, overrideFocus, isEventFromElement } from 'src/utils';
|
|
3
|
+
const SUPPORTED_THEME_COLORS = [
|
|
4
|
+
'primary',
|
|
5
|
+
'secondary',
|
|
6
|
+
'tertiary',
|
|
7
|
+
'accent-1',
|
|
8
|
+
'accent-2',
|
|
9
|
+
'accent-3',
|
|
10
|
+
'accent-4',
|
|
11
|
+
'accent-5',
|
|
12
|
+
'accent-6',
|
|
13
|
+
'accent-7',
|
|
14
|
+
'accent-8',
|
|
15
|
+
'accent-9',
|
|
16
|
+
'accent-10',
|
|
17
|
+
'accent-11',
|
|
18
|
+
'accent-12',
|
|
19
|
+
];
|
|
20
|
+
const STOPLIGHT_COLORS = ['info', 'success', 'warning', 'alert'];
|
|
3
21
|
export class Q2Card {
|
|
4
22
|
constructor() {
|
|
5
23
|
this.isTouch = isTouchDevice();
|
|
@@ -13,6 +31,9 @@ export class Q2Card {
|
|
|
13
31
|
this.click.emit();
|
|
14
32
|
};
|
|
15
33
|
}
|
|
34
|
+
componentWillLoad() {
|
|
35
|
+
this.checkBar();
|
|
36
|
+
}
|
|
16
37
|
componentDidLoad() {
|
|
17
38
|
const { hostElement, clickableElement } = this;
|
|
18
39
|
hostElement.click = () => clickableElement.click();
|
|
@@ -28,6 +49,20 @@ export class Q2Card {
|
|
|
28
49
|
return;
|
|
29
50
|
this.clickableElement.focus();
|
|
30
51
|
}
|
|
52
|
+
checkBar() {
|
|
53
|
+
const { bar } = this;
|
|
54
|
+
if (!bar)
|
|
55
|
+
return;
|
|
56
|
+
if (SUPPORTED_THEME_COLORS.includes(bar)) {
|
|
57
|
+
this.barColor = `var(--t-${bar})`;
|
|
58
|
+
}
|
|
59
|
+
else if (STOPLIGHT_COLORS.includes(bar)) {
|
|
60
|
+
this.barColor = `var(--const-stoplight-${bar})`;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.barColor = bar;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
31
66
|
determineAutoTouch() {
|
|
32
67
|
if (this.hostElement.hasAttribute('is-touch'))
|
|
33
68
|
return;
|
|
@@ -54,6 +89,7 @@ export class Q2Card {
|
|
|
54
89
|
}
|
|
55
90
|
generateContent() {
|
|
56
91
|
return (h(Fragment, null,
|
|
92
|
+
this.bar && (h("div", { class: "bar", "test-id": "bar", style: { '--comp-bar-color': this.barColor } })),
|
|
57
93
|
this.generateAvatar(),
|
|
58
94
|
h("div", { class: "container", "test-id": "contentContainer", ref: e => (this.containerElement = e) },
|
|
59
95
|
this.title && h("h3", { "test-id": "title" }, this.title),
|
|
@@ -62,7 +98,7 @@ export class Q2Card {
|
|
|
62
98
|
}
|
|
63
99
|
generateContainerClasses() {
|
|
64
100
|
const { isSmall, isAutoSmall, avatarName, avatarInitials, avatarSrc, avatarIcon, isTouch, isAutoTouch } = this;
|
|
65
|
-
|
|
101
|
+
const result = [];
|
|
66
102
|
const showSmall = isSmall || isAutoSmall;
|
|
67
103
|
const showTouch = isTouch || isAutoTouch;
|
|
68
104
|
const hasAvatar = avatarName || avatarInitials || avatarSrc || avatarIcon;
|
|
@@ -206,6 +242,23 @@ export class Q2Card {
|
|
|
206
242
|
"attribute": "is-small",
|
|
207
243
|
"reflect": true
|
|
208
244
|
},
|
|
245
|
+
"bar": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"mutable": false,
|
|
248
|
+
"complexType": {
|
|
249
|
+
"original": "string",
|
|
250
|
+
"resolved": "string",
|
|
251
|
+
"references": {}
|
|
252
|
+
},
|
|
253
|
+
"required": false,
|
|
254
|
+
"optional": false,
|
|
255
|
+
"docs": {
|
|
256
|
+
"tags": [],
|
|
257
|
+
"text": ""
|
|
258
|
+
},
|
|
259
|
+
"attribute": "bar",
|
|
260
|
+
"reflect": true
|
|
261
|
+
},
|
|
209
262
|
"isTouch": {
|
|
210
263
|
"type": "boolean",
|
|
211
264
|
"mutable": false,
|
|
@@ -280,6 +333,10 @@ export class Q2Card {
|
|
|
280
333
|
}
|
|
281
334
|
}]; }
|
|
282
335
|
static get elementRef() { return "hostElement"; }
|
|
336
|
+
static get watchers() { return [{
|
|
337
|
+
"propName": "bar",
|
|
338
|
+
"methodName": "checkBar"
|
|
339
|
+
}]; }
|
|
283
340
|
static get listeners() { return [{
|
|
284
341
|
"name": "focus",
|
|
285
342
|
"method": "onHostElementFocus",
|
|
@@ -70,6 +70,9 @@ button {
|
|
|
70
70
|
|
|
71
71
|
button,
|
|
72
72
|
a {
|
|
73
|
+
--comp-border-radius: var(--tct-card-border-radius, var(--t-card-border-radius, var(--app-border-radius-1, 3px)));
|
|
74
|
+
--comp-border-width: var(--tct-card-border-width, var(--t-card-border-width, 0px));
|
|
75
|
+
position: relative;
|
|
73
76
|
width: 100%;
|
|
74
77
|
text-align: start;
|
|
75
78
|
cursor: pointer;
|
|
@@ -82,7 +85,10 @@ a {
|
|
|
82
85
|
padding: var(--tct-card-padding, var(--t-card-padding, var(--app-scale-4x, 20px)));
|
|
83
86
|
color: var(--tct-card-color, var(--t-card-color, var(--t-text, #4d4d4d)));
|
|
84
87
|
text-decoration: none;
|
|
85
|
-
border-
|
|
88
|
+
border-width: var(--comp-border-width);
|
|
89
|
+
border-color: var(--tct-card-border-color, var(--t-card-border-color, transparent));
|
|
90
|
+
border-style: solid;
|
|
91
|
+
border-radius: var(--comp-border-radius);
|
|
86
92
|
transition: box-shadow var(--tct-tween-1, var(--app-tween-1, 0.2s ease));
|
|
87
93
|
box-shadow: var(--tct-card-box-shadow, var(--t-card-box-shadow, var(--app-shadow-2, 0 3px 6px rgba(0, 0, 0, 0.3))));
|
|
88
94
|
--comp-avatar-size: var(--tct-card-avatar-size, var(--t-card-avatar-size, 44px));
|
|
@@ -155,6 +161,16 @@ p {
|
|
|
155
161
|
-webkit-box-orient: vertical;
|
|
156
162
|
}
|
|
157
163
|
|
|
164
|
+
.bar {
|
|
165
|
+
--comp-bar-border-radius: calc(var(--comp-border-radius) - var(--comp-border-width));
|
|
166
|
+
border-radius: var(--comp-bar-border-radius) 0 0 var(--comp-bar-border-radius);
|
|
167
|
+
position: absolute;
|
|
168
|
+
inset: 0 auto auto 0;
|
|
169
|
+
width: var(--tct-card-bar-width, var(--t-card-bar-width, var(--app-scale-2x, 10px)));
|
|
170
|
+
background: var(--comp-bar-color);
|
|
171
|
+
height: 100%;
|
|
172
|
+
}
|
|
173
|
+
|
|
158
174
|
.touch-indicator {
|
|
159
175
|
align-self: center;
|
|
160
176
|
--tct-icon-size: var(--comp-chevron-size);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Prop, Watch, State, Fragment, Element, Host, h, Event, Listen } from '@stencil/core';
|
|
1
|
+
import { Component, Prop, Watch, State, Fragment, Element, Host, h, Event, Listen, } from '@stencil/core';
|
|
2
2
|
import Swiper, { Autoplay } from 'swiper';
|
|
3
3
|
import { createGuid, loc, handleAriaLabel, overrideFocus, isEventFromElement } from 'src/utils';
|
|
4
4
|
const carouselBreakpoint = 500; /* width in px of this host element where the layout starts to get unruly */
|
|
@@ -31,10 +31,10 @@ export class Q2Carousel {
|
|
|
31
31
|
}
|
|
32
32
|
else if (isCarouselFocused)
|
|
33
33
|
swiper.slides[swiper.activeIndex].focus({
|
|
34
|
-
preventScroll: true
|
|
34
|
+
preventScroll: true,
|
|
35
35
|
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
38
|
};
|
|
39
39
|
this.fullWidthDisplayOptions = Object.assign({ slidesPerView: 1, spaceBetween: 100 }, this.universalCarouselOptions);
|
|
40
40
|
this.activePaneIndex = this.realIndex;
|
|
@@ -75,7 +75,7 @@ export class Q2Carousel {
|
|
|
75
75
|
});
|
|
76
76
|
};
|
|
77
77
|
this.handleAutoPlayPause = () => {
|
|
78
|
-
const { swiper: { autoplay } } = this;
|
|
78
|
+
const { swiper: { autoplay }, } = this;
|
|
79
79
|
if (!autoplay)
|
|
80
80
|
return;
|
|
81
81
|
if (autoplay === null || autoplay === void 0 ? void 0 : autoplay.running)
|
|
@@ -149,25 +149,20 @@ export class Q2Carousel {
|
|
|
149
149
|
if (this.dynamicPaginationDots)
|
|
150
150
|
paginationContainerClasses = [...paginationContainerClasses, 'dynamic'];
|
|
151
151
|
return (h("div", { class: paginationContainerClasses.join(' '), role: "tablist", "aria-label": loc('tecton.element.carousel.tabWrapperLabel') }, this.paneArray.map(pane => {
|
|
152
|
-
let btnClasses = [
|
|
153
|
-
'q2-carousel-page-indicator',
|
|
154
|
-
`q2-carousel-page-indicator-${pane.index}`
|
|
155
|
-
];
|
|
152
|
+
let btnClasses = ['q2-carousel-page-indicator', `q2-carousel-page-indicator-${pane.index}`];
|
|
156
153
|
if (pane.isActivePane)
|
|
157
154
|
btnClasses = [...btnClasses, 'active-page'];
|
|
158
155
|
if (this.dynamicPaginationDots)
|
|
159
156
|
btnClasses = [...btnClasses, 'dynamic'];
|
|
160
|
-
|
|
161
|
-
pane.index === this.activePaneIndex - 1;
|
|
157
|
+
const withinOneOfActive = pane.index === this.activePaneIndex + 1 || pane.index === this.activePaneIndex - 1;
|
|
162
158
|
if (withinOneOfActive)
|
|
163
159
|
btnClasses = [...btnClasses, 'active-adjacent'];
|
|
164
|
-
|
|
165
|
-
pane.index === this.activePaneIndex - 2;
|
|
160
|
+
const withinTwoOfActive = pane.index === this.activePaneIndex + 2 || pane.index === this.activePaneIndex - 2;
|
|
166
161
|
if (withinTwoOfActive)
|
|
167
162
|
btnClasses = [...btnClasses, 'active-adjacent-adjacent'];
|
|
168
163
|
return (h("button", { type: "button", role: "tab", tabIndex: pane.isActivePane ? undefined : -1, "aria-selected": pane.isActivePane ? 'true' : 'false', class: btnClasses.join(' '), onClick: () => this.handleCarouselNavigationSelection(pane.index, true), onKeyDown: event => this.onPaginationKeyDown(event), "aria-label": loc('tecton.element.carousel.itemDescription', [
|
|
169
164
|
(pane.index + 1).toString(),
|
|
170
|
-
this.paneCount.toString()
|
|
165
|
+
this.paneCount.toString(),
|
|
171
166
|
]) }));
|
|
172
167
|
})));
|
|
173
168
|
};
|
|
@@ -192,7 +187,7 @@ export class Q2Carousel {
|
|
|
192
187
|
this.insufficientPanesDisplay = () => {
|
|
193
188
|
let insufficientPanesContainerClasses = [
|
|
194
189
|
'insufficient-pane-feedback',
|
|
195
|
-
this.fullWidthPanes ? 'full-width-display' : 'content-peek-display'
|
|
190
|
+
this.fullWidthPanes ? 'full-width-display' : 'content-peek-display',
|
|
196
191
|
];
|
|
197
192
|
if (this.compactMode)
|
|
198
193
|
insufficientPanesContainerClasses = [...insufficientPanesContainerClasses, 'compact'];
|
|
@@ -285,7 +280,7 @@ export class Q2Carousel {
|
|
|
285
280
|
let carouselContainerClasses = [
|
|
286
281
|
'q2-carousel-swiper-container',
|
|
287
282
|
'swiper-container',
|
|
288
|
-
this.fullWidthPanes ? 'full-width-display' : 'content-peek-display'
|
|
283
|
+
this.fullWidthPanes ? 'full-width-display' : 'content-peek-display',
|
|
289
284
|
];
|
|
290
285
|
if (this.compactMode)
|
|
291
286
|
carouselContainerClasses = [...carouselContainerClasses, 'compact'];
|
|
@@ -93,12 +93,11 @@ q2-carousel {
|
|
|
93
93
|
|
|
94
94
|
.insufficient-pane-feedback {
|
|
95
95
|
text-align: center;
|
|
96
|
-
box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.25);
|
|
96
|
+
box-shadow: var(--app-shadow-2, 0px 2px 8px 0px rgba(0, 0, 0, 0.25));
|
|
97
97
|
background-color: var(--tct-carousel-background-color, var(--t-carousel-background-color, var(--tct-white, var(--app-white, #ffffff))));
|
|
98
98
|
border: var(--tct-carousel-pane-border-width, var(--t-carousel-pane-border-width, 1px)) solid var(--tct-carousel-pane-border-color, var(--t-carousel-pane-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))));
|
|
99
99
|
border-radius: var(--tct-carousel-pane-border-radius, var(--t-carousel-pane-border-radius, 8px));
|
|
100
100
|
padding: var(--tct-carousel-pane-padding, var(--t-carousel-pane-padding, 0.5rem 0.5rem 0.5rem 0.5rem));
|
|
101
|
-
min-height: 10em;
|
|
102
101
|
}
|
|
103
102
|
.insufficient-pane-feedback.content-peek-display {
|
|
104
103
|
max-width: 395px;
|
|
@@ -128,6 +127,8 @@ q2-carousel {
|
|
|
128
127
|
display: flex;
|
|
129
128
|
justify-content: center;
|
|
130
129
|
align-items: center;
|
|
130
|
+
margin-top: var(--app-scale-2x, 10px);
|
|
131
|
+
min-height: 44px;
|
|
131
132
|
}
|
|
132
133
|
.q2-carousel-pagination-navigation-wrapper.evenly-space {
|
|
133
134
|
justify-content: space-between;
|
|
@@ -192,7 +193,6 @@ q2-carousel {
|
|
|
192
193
|
.q2-carousel-swiper-container .swiper-wrapper {
|
|
193
194
|
position: relative;
|
|
194
195
|
width: 100%;
|
|
195
|
-
min-height: 12em;
|
|
196
196
|
z-index: 1;
|
|
197
197
|
display: flex;
|
|
198
198
|
transition-property: transform;
|
|
@@ -11,7 +11,7 @@ export class Q2Carousel {
|
|
|
11
11
|
event.preventDefault();
|
|
12
12
|
this.clickCarouselPane.emit({
|
|
13
13
|
paneIndex: this.index,
|
|
14
|
-
pane: this.hostElement
|
|
14
|
+
pane: this.hostElement,
|
|
15
15
|
});
|
|
16
16
|
};
|
|
17
17
|
}
|
|
@@ -52,7 +52,7 @@ export class Q2Carousel {
|
|
|
52
52
|
? loc(label)
|
|
53
53
|
: loc('tecton.element.carousel.itemDescription', [
|
|
54
54
|
(this.currentPaneIndex + 1).toString(),
|
|
55
|
-
(this.siblingCount || 0).toString()
|
|
55
|
+
(this.siblingCount || 0).toString(),
|
|
56
56
|
]), onClick: this.paneClicked },
|
|
57
57
|
h("article", { class: "q2-carousel-pane-main-content" },
|
|
58
58
|
h("slot", null))));
|
|
@@ -74,6 +74,7 @@ q2-carousel .swiper-slide {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
q2-carousel-pane.q2-carousel-pane {
|
|
77
|
+
--comp-carousel-pane-tween: var(--tct-tween-1, var(--app-tween-1, 0.2s ease));
|
|
77
78
|
cursor: grab;
|
|
78
79
|
}
|
|
79
80
|
q2-carousel-pane.q2-carousel-pane:not([is-active-pane]) * {
|
|
@@ -87,10 +88,14 @@ q2-carousel-pane.q2-carousel-pane:focus .q2-carousel-pane-main-content {
|
|
|
87
88
|
box-shadow: var(--tct-global-focus, var(--const-global-focus, 0 0 0 2px #33b4ff));
|
|
88
89
|
}
|
|
89
90
|
q2-carousel-pane.q2-carousel-pane .q2-carousel-pane-main-content {
|
|
90
|
-
box-shadow: 0px 2px 8px 0px var(--t-top-a1, rgba(0, 0, 0, 0.25));
|
|
91
|
+
box-shadow: var(--app-shadow-2, 0px 2px 8px 0px var(--t-top-a1, rgba(0, 0, 0, 0.25)));
|
|
92
|
+
transition: var(--comp-carousel-pane-tween);
|
|
91
93
|
background-color: var(--tct-carousel-background-color, var(--t-carousel-background-color, var(--tct-white, var(--app-white, #ffffff))));
|
|
92
|
-
border: var(--tct-carousel-pane-border-width, var(--t-carousel-pane-border-width,
|
|
94
|
+
border: var(--tct-carousel-pane-border-width, var(--t-carousel-pane-border-width, 0px)) solid var(--tct-carousel-pane-border-color, var(--t-carousel-pane-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))));
|
|
93
95
|
border-radius: var(--tct-carousel-pane-border-radius, var(--t-carousel-pane-border-radius, 8px));
|
|
94
96
|
padding: var(--tct-carousel-pane-padding, var(--t-carousel-pane-padding, 0.5rem 0.5rem 0.5rem 0.5rem));
|
|
95
|
-
|
|
97
|
+
height: var(--tct-carousel-pane-height, var(--t-carousel-pane-height, 10em));
|
|
98
|
+
}
|
|
99
|
+
q2-carousel-pane.q2-carousel-pane .q2-carousel-pane-main-content:hover {
|
|
100
|
+
box-shadow: var(--app-shadow-3, 0px 2px 8px 0px var(--t-top-a1, rgba(0, 0, 0, 0.25)));
|
|
96
101
|
}
|