@aurodesignsystem-dev/auro-formkit 0.0.0-pr1483.2 → 0.0.0-pr1488.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.
Files changed (59) hide show
  1. package/components/checkbox/demo/customize.min.js +436 -14
  2. package/components/checkbox/demo/getting-started.min.js +436 -14
  3. package/components/checkbox/demo/index.min.js +436 -14
  4. package/components/checkbox/dist/index.js +436 -14
  5. package/components/checkbox/dist/registered.js +436 -14
  6. package/components/combobox/demo/customize.min.js +1482 -6618
  7. package/components/combobox/demo/getting-started.min.js +1482 -6618
  8. package/components/combobox/demo/index.min.js +1482 -6618
  9. package/components/combobox/demo/keyboard-behavior.md +68 -8
  10. package/components/combobox/dist/index.js +1489 -6625
  11. package/components/combobox/dist/registered.js +1489 -6625
  12. package/components/counter/demo/customize.min.js +437 -15
  13. package/components/counter/demo/index.min.js +437 -15
  14. package/components/counter/dist/index.js +436 -14
  15. package/components/counter/dist/registered.js +436 -14
  16. package/components/datepicker/demo/api.md +3 -10
  17. package/components/datepicker/demo/customize.md +6 -6
  18. package/components/datepicker/demo/index.md +4 -4
  19. package/components/datepicker/demo/index.min.js +2319 -7650
  20. package/components/datepicker/dist/index.js +2319 -7650
  21. package/components/datepicker/dist/registered.js +2319 -7650
  22. package/components/datepicker/dist/src/auro-calendar.d.ts +0 -6
  23. package/components/datepicker/dist/src/auro-datepicker.d.ts +11 -24
  24. package/components/datepicker/dist/src/utilities.d.ts +40 -14
  25. package/components/datepicker/dist/src/utilitiesCalendar.d.ts +1 -1
  26. package/components/dropdown/demo/customize.min.js +1 -1
  27. package/components/dropdown/demo/getting-started.min.js +1 -1
  28. package/components/dropdown/demo/index.min.js +1 -1
  29. package/components/dropdown/dist/index.js +1 -1
  30. package/components/dropdown/dist/registered.js +1 -1
  31. package/components/form/demo/customize.min.js +44181 -58516
  32. package/components/form/demo/getting-started.min.js +44181 -58516
  33. package/components/form/demo/index.min.js +44181 -58516
  34. package/components/form/demo/registerDemoDeps.min.js +44181 -58516
  35. package/components/input/demo/api.md +51 -57
  36. package/components/input/demo/customize.md +0 -160
  37. package/components/input/demo/customize.min.js +1011 -6565
  38. package/components/input/demo/getting-started.md +0 -11
  39. package/components/input/demo/getting-started.min.js +1010 -6564
  40. package/components/input/demo/index.md +3 -28
  41. package/components/input/demo/index.min.js +1010 -6564
  42. package/components/input/dist/auro-input.d.ts +6 -25
  43. package/components/input/dist/base-input.d.ts +69 -82
  44. package/components/input/dist/index.d.ts +1 -2
  45. package/components/input/dist/index.js +1003 -6599
  46. package/components/input/dist/registered.js +1010 -6564
  47. package/components/input/dist/utilities.d.ts +9 -68
  48. package/components/radio/demo/index.min.js +436 -14
  49. package/components/radio/dist/index.js +436 -14
  50. package/components/radio/dist/registered.js +436 -14
  51. package/components/select/demo/customize.min.js +455 -31
  52. package/components/select/demo/getting-started.min.js +455 -31
  53. package/components/select/demo/index.min.js +455 -31
  54. package/components/select/demo/keyboard-behavior.md +54 -8
  55. package/components/select/dist/index.js +455 -31
  56. package/components/select/dist/registered.js +455 -31
  57. package/custom-elements.json +2117 -2625
  58. package/package.json +4 -4
  59. package/components/input/dist/auro-input-util.d.ts +0 -17
@@ -152,6 +152,415 @@ var shapeSizeCss$1 = i$6`.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.
152
152
 
153
153
  var tokensCss$3 = i$6`:host(:not([ondark])),:host(:not([appearance=inverse])){--ds-auro-select-border-color: var(--ds-basic-color-border-bold, #585e67);--ds-auro-select-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-select-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-select-placeholder-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-select-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-select-error-icon-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: transparent}:host([ondark]),:host([appearance=inverse]){--ds-auro-select-border-color: var(--ds-basic-color-border-inverse, #ffffff);--ds-auro-select-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-select-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-select-placeholder-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-error-icon-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: transparent}`;
154
154
 
155
+ class DateFormatter {
156
+
157
+ constructor() {
158
+
159
+ /**
160
+ * @description Parses a date string into its components.
161
+ * @param {string} dateStr - Date string to parse.
162
+ * @param {string} format - Date format to parse.
163
+ * @returns {Object<key["month" | "day" | "year"]: number>|undefined}
164
+ */
165
+ this.parseDate = (dateStr, format = 'mm/dd/yyyy') => {
166
+
167
+ // Guard Clause: Date string is defined
168
+ if (!dateStr) {
169
+ return undefined;
170
+ }
171
+
172
+ // Assume the separator is a "/" a defined in our code base
173
+ const separator = '/';
174
+
175
+ // Get the parts of the date and format
176
+ const valueParts = dateStr.split(separator);
177
+ const formatParts = format.split(separator);
178
+
179
+ // Check if the value and format have the correct number of parts
180
+ if (valueParts.length !== formatParts.length) {
181
+ throw new Error('AuroDatepickerUtilities | parseDate: Date string and format length do not match');
182
+ }
183
+
184
+ // Holds the result to be returned
185
+ const result = formatParts.reduce((acc, part, index) => {
186
+ const value = valueParts[index];
187
+
188
+ if ((/m/iu).test(part)) {
189
+ acc.month = value;
190
+ } else if ((/d/iu).test(part)) {
191
+ acc.day = value;
192
+ } else if ((/y/iu).test(part)) {
193
+ acc.year = value;
194
+ }
195
+
196
+ return acc;
197
+ }, {});
198
+
199
+ // If we found all the parts, return the result
200
+ if (result.month && result.year) {
201
+ return result;
202
+ }
203
+
204
+ // Throw an error to let the dev know we were unable to parse the date string
205
+ throw new Error('AuroDatepickerUtilities | parseDate: Unable to parse date string');
206
+ };
207
+
208
+ /**
209
+ * Convert a date object to string format.
210
+ * @param {Object} date - Date to convert to string.
211
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
212
+ * @returns {String} Returns the date as a string.
213
+ */
214
+ this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
215
+ year: "numeric",
216
+ month: "2-digit",
217
+ day: "2-digit",
218
+ });
219
+
220
+ /**
221
+ * Converts a date string to a North American date format.
222
+ * @param {String} dateStr - Date to validate.
223
+ * @param {String} format - Date format to validate against.
224
+ * @returns {Boolean}
225
+ */
226
+ this.toNorthAmericanFormat = (dateStr, format) => {
227
+
228
+ if (format === 'mm/dd/yyyy') {
229
+ return dateStr;
230
+ }
231
+
232
+ const parsedDate = this.parseDate(dateStr, format);
233
+
234
+ if (!parsedDate) {
235
+ throw new Error('AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string');
236
+ }
237
+
238
+ const { month, day, year } = parsedDate;
239
+
240
+ const dateParts = [];
241
+ if (month) {
242
+ dateParts.push(month);
243
+ }
244
+
245
+ if (day) {
246
+ dateParts.push(day);
247
+ }
248
+
249
+ if (year) {
250
+ dateParts.push(year);
251
+ }
252
+
253
+ return dateParts.join('/');
254
+ };
255
+ }
256
+ }
257
+ const dateFormatter = new DateFormatter();
258
+
259
+ // filepath: dateConstraints.mjs
260
+ const DATE_UTIL_CONSTRAINTS = {
261
+ maxDay: 31,
262
+ maxMonth: 12,
263
+ maxYear: 2400,
264
+ minDay: 1,
265
+ minMonth: 1,
266
+ minYear: 1900,
267
+ };
268
+
269
+ class AuroDateUtilitiesBase {
270
+
271
+ /**
272
+ * @description The maximum day value allowed by the various utilities in this class.
273
+ * @readonly
274
+ * @type {Number}
275
+ */
276
+ get maxDay() {
277
+ return DATE_UTIL_CONSTRAINTS.maxDay;
278
+ }
279
+
280
+ /**
281
+ * @description The maximum month value allowed by the various utilities in this class.
282
+ * @readonly
283
+ * @type {Number}
284
+ */
285
+ get maxMonth() {
286
+ return DATE_UTIL_CONSTRAINTS.maxMonth;
287
+ }
288
+
289
+ /**
290
+ * @description The maximum year value allowed by the various utilities in this class.
291
+ * @readonly
292
+ * @type {Number}
293
+ */
294
+ get maxYear() {
295
+ return DATE_UTIL_CONSTRAINTS.maxYear;
296
+ }
297
+
298
+ /**
299
+ * @description The minimum day value allowed by the various utilities in this class.
300
+ * @readonly
301
+ * @type {Number}
302
+ */
303
+ get minDay() {
304
+ return DATE_UTIL_CONSTRAINTS.minDay;
305
+ }
306
+
307
+ /**
308
+ * @description The minimum month value allowed by the various utilities in this class.
309
+ * @readonly
310
+ * @type {Number}
311
+ */
312
+ get minMonth() {
313
+ return DATE_UTIL_CONSTRAINTS.minMonth;
314
+ }
315
+
316
+ /**
317
+ * @description The minimum year value allowed by the various utilities in this class.
318
+ * @readonly
319
+ * @type {Number}
320
+ */
321
+ get minYear() {
322
+ return DATE_UTIL_CONSTRAINTS.minYear;
323
+ }
324
+ }
325
+
326
+ /* eslint-disable no-magic-numbers */
327
+
328
+ class AuroDateUtilities extends AuroDateUtilitiesBase {
329
+
330
+ /**
331
+ * Returns the current century.
332
+ * @returns {String} The current century.
333
+ */
334
+ getCentury () {
335
+ return String(new Date().getFullYear()).slice(0, 2);
336
+ }
337
+
338
+ /**
339
+ * Returns a four digit year.
340
+ * @param {String} year - The year to convert to four digits.
341
+ * @returns {String} The four digit year.
342
+ */
343
+ getFourDigitYear (year) {
344
+
345
+ const strYear = String(year).trim();
346
+ return strYear.length <= 2 ? this.getCentury() + strYear : strYear;
347
+ }
348
+
349
+ constructor() {
350
+
351
+ super();
352
+
353
+ /**
354
+ * Compares two dates to see if they match.
355
+ * @param {Object} date1 - First date to compare.
356
+ * @param {Object} date2 - Second date to compare.
357
+ * @returns {Boolean} Returns true if the dates match.
358
+ */
359
+ this.datesMatch = (date1, date2) => new Date(date1).getTime() === new Date(date2).getTime();
360
+
361
+ /**
362
+ * Returns true if value passed in is a valid date.
363
+ * @param {String} date - Date to validate.
364
+ * @param {String} format - Date format to validate against.
365
+ * @returns {Boolean}
366
+ */
367
+ this.validDateStr = (date, format) => {
368
+
369
+ // The length we expect the date string to be
370
+ const dateStrLength = format.length;
371
+
372
+ // Guard Clause: Date and format are defined
373
+ if (typeof date === "undefined" || typeof format === "undefined") {
374
+ throw new Error('AuroDatepickerUtilities | validateDateStr: Date and format are required');
375
+ }
376
+
377
+ // Guard Clause: Date should be of type string
378
+ if (typeof date !== "string") {
379
+ throw new Error('AuroDatepickerUtilities | validateDateStr: Date must be a string');
380
+ }
381
+
382
+ // Guard Clause: Format should be of type string
383
+ if (typeof format !== "string") {
384
+ throw new Error('AuroDatepickerUtilities | validateDateStr: Format must be a string');
385
+ }
386
+
387
+ // Guard Clause: Length is what we expect it to be
388
+ if (date.length !== dateStrLength) {
389
+ return false;
390
+ }
391
+ // Get a formatted date string and parse it
392
+ const dateParts = dateFormatter.parseDate(date, format);
393
+
394
+ // Guard Clause: Date parse succeeded
395
+ if (!dateParts) {
396
+ return false;
397
+ }
398
+
399
+ // Create the expected date string based on the date parts
400
+ const expectedDateStr = `${dateParts.month}/${dateParts.day || "01"}/${this.getFourDigitYear(dateParts.year)}`;
401
+
402
+ // Generate a date object that we will extract a string date from to compare to the passed in date string
403
+ const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
404
+
405
+ // Get the date string of the date object we created from the string date
406
+ const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
407
+
408
+ // Guard Clause: Generated date matches date string input
409
+ if (expectedDateStr !== actualDateStr) {
410
+ return false;
411
+ }
412
+
413
+ // If we passed all other checks, we can assume the date is valid
414
+ return true;
415
+ };
416
+
417
+ /**
418
+ * Determines if a string date value matches the format provided.
419
+ * @param {string} value = The date string value.
420
+ * @param { string} format = The date format to match against.
421
+ * @returns {boolean}
422
+ */
423
+ this.dateAndFormatMatch = (value, format) => {
424
+
425
+ // Ensure we have both values we need to do the comparison
426
+ if (!value || !format) {
427
+ throw new Error('AuroFormValidation | dateFormatMatch: value and format are required');
428
+ }
429
+
430
+ // If the lengths are different, they cannot match
431
+ if (value.length !== format.length) {
432
+ return false;
433
+ }
434
+
435
+ // Get the parts of the date
436
+ const dateParts = dateFormatter.parseDate(value, format);
437
+
438
+ // Validator for day
439
+ const dayValueIsValid = (day) => {
440
+
441
+ // Guard clause: if there is no day in the dateParts, we can ignore this check.
442
+ if (!dateParts.day) {
443
+ return true;
444
+ }
445
+
446
+ // Guard clause: ensure day exists.
447
+ if (!day) {
448
+ return false;
449
+ }
450
+
451
+ // Convert day to number
452
+ const numDay = Number.parseInt(day, 10);
453
+
454
+ // Guard clause: ensure day is a valid integer
455
+ if (Number.isNaN(numDay)) {
456
+ throw new Error('AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer');
457
+ }
458
+
459
+ // Guard clause: ensure day is within the valid range
460
+ if (numDay < this.minDay || numDay > this.maxDay) {
461
+ return false;
462
+ }
463
+
464
+ // Default return
465
+ return true;
466
+ };
467
+
468
+ // Validator for month
469
+ const monthValueIsValid = (month) => {
470
+
471
+ // Guard clause: ensure month exists.
472
+ if (!month) {
473
+ return false;
474
+ }
475
+
476
+ // Convert month to number
477
+ const numMonth = Number.parseInt(month, 10);
478
+
479
+ // Guard clause: ensure month is a valid integer
480
+ if (Number.isNaN(numMonth)) {
481
+ throw new Error('AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer');
482
+ }
483
+
484
+ // Guard clause: ensure month is within the valid range
485
+ if (numMonth < this.minMonth || numMonth > this.maxMonth) {
486
+ return false;
487
+ }
488
+
489
+ // Default return
490
+ return true;
491
+ };
492
+
493
+ // Validator for year
494
+ const yearIsValid = (_year) => {
495
+
496
+ // Guard clause: ensure year exists.
497
+ if (!_year) {
498
+ return false;
499
+ }
500
+
501
+ // Get the full year
502
+ const year = this.getFourDigitYear(_year);
503
+
504
+ // Convert year to number
505
+ const numYear = Number.parseInt(year, 10);
506
+
507
+ // Guard clause: ensure year is a valid integer
508
+ if (Number.isNaN(numYear)) {
509
+ throw new Error('AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer');
510
+ }
511
+
512
+ // Guard clause: ensure year is within the valid range
513
+ if (numYear < this.minYear || numYear > this.maxYear) {
514
+ return false;
515
+ }
516
+
517
+ // Default return
518
+ return true;
519
+ };
520
+
521
+ // Self-contained checks for month, day, and year
522
+ const checks = [
523
+ monthValueIsValid(dateParts.month),
524
+ dayValueIsValid(dateParts.day),
525
+ yearIsValid(dateParts.year)
526
+ ];
527
+
528
+ // If any of the checks failed, the date format does not match and the result is invalid
529
+ const isValid = checks.every((check) => check === true);
530
+
531
+ // If the check is invalid, return false
532
+ if (!isValid) {
533
+ return false;
534
+ }
535
+
536
+ // Default case
537
+ return true;
538
+ };
539
+ }
540
+ }
541
+
542
+ // Export a class instance
543
+ const dateUtilities = new AuroDateUtilities();
544
+
545
+ // Export the class instance methods individually
546
+ const {
547
+ datesMatch,
548
+ validDateStr,
549
+ dateAndFormatMatch,
550
+ minDay,
551
+ minMonth,
552
+ minYear,
553
+ maxDay,
554
+ maxMonth,
555
+ maxYear
556
+ } = dateUtilities;
557
+
558
+ const {
559
+ toNorthAmericanFormat,
560
+ parseDate,
561
+ getDateAsString
562
+ } = dateFormatter;
563
+
155
564
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
156
565
  // See LICENSE in the project root for license information.
157
566
 
@@ -376,7 +785,7 @@ class AuroFormValidation {
376
785
  validity: 'valueMissing',
377
786
  message: e => e.getAttribute('setCustomValidityValueMissingFilter') || e.setCustomValidity || ''
378
787
  }
379
- ]
788
+ ]
380
789
  }
381
790
  };
382
791
 
@@ -441,12 +850,12 @@ class AuroFormValidation {
441
850
 
442
851
  // Guard Clause: if the value is too short
443
852
  if (elem.value?.length < elem.lengthForType) {
444
-
853
+
445
854
  elem.validity = 'tooShort';
446
855
  elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
447
856
  return;
448
- }
449
-
857
+ }
858
+
450
859
  // Guard Clause: If the value is too long for the type
451
860
  if (elem.value?.length > elem.lengthForType) {
452
861
 
@@ -454,20 +863,31 @@ class AuroFormValidation {
454
863
  elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
455
864
  return;
456
865
  }
457
-
458
- // Validate that the date passed was the correct format and is a valid date
459
- if (elem.value && !elem.valueObject) {
866
+
867
+ // Validate that the date passed was the correct format
868
+ if (!dateAndFormatMatch(elem.value, elem.format)) {
460
869
  elem.validity = 'patternMismatch';
461
- elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
870
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || 'Invalid Date Format Entered';
871
+ return;
872
+ }
873
+
874
+ // Validate that the date passed was a valid date
875
+ if (!validDateStr(elem.value, elem.format)) {
876
+ elem.validity = 'invalidDate';
877
+ elem.errorMessage = elem.setCustomValidityInvalidDate || elem.setCustomValidity || 'Invalid Date Entered';
462
878
  return;
463
879
  }
464
880
 
465
881
  // Perform the rest of the validation
882
+ const formattedValue = toNorthAmericanFormat(elem.value, elem.format);
883
+ const valueDate = new Date(formattedValue);
466
884
 
467
885
  // // Validate max date
468
886
  if (elem.max?.length === elem.lengthForType) {
469
887
 
470
- if (elem.valueObject > elem.maxObject) {
888
+ const maxDate = new Date(toNorthAmericanFormat(elem.max, elem.format));
889
+
890
+ if (valueDate > maxDate) {
471
891
  elem.validity = 'rangeOverflow';
472
892
  elem.errorMessage = elem.setCustomValidityRangeOverflow || elem.setCustomValidity || '';
473
893
  return;
@@ -476,7 +896,9 @@ class AuroFormValidation {
476
896
 
477
897
  // Validate min date
478
898
  if (elem.min?.length === elem.lengthForType) {
479
- if (elem.valueObject < elem.minObject) {
899
+ const minDate = new Date(toNorthAmericanFormat(elem.min, elem.format));
900
+
901
+ if (valueDate < minDate) {
480
902
  elem.validity = 'rangeUnderflow';
481
903
  elem.errorMessage = elem.setCustomValidityRangeUnderflow || elem.setCustomValidity || '';
482
904
  return;
@@ -536,7 +958,7 @@ class AuroFormValidation {
536
958
  if (typeof elem.value === "string") {
537
959
  hasValue = elem.value && elem.value.length > 0;
538
960
  }
539
-
961
+
540
962
  if (typeof elem.value === "boolean") {
541
963
  hasValue = elem.value || elem.value === false;
542
964
  }
@@ -561,7 +983,7 @@ class AuroFormValidation {
561
983
  }
562
984
 
563
985
  const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
564
-
986
+
565
987
  if (isCombobox) {
566
988
 
567
989
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -601,7 +1023,7 @@ class AuroFormValidation {
601
1023
  }
602
1024
 
603
1025
  // multiple input in one components (datepicker)
604
- // combobox has 2 inputs but no need to check validity on the 2nd one which is in fullscreen bib.
1026
+ // combobox has 2 inputs but no need to check validity on the 2nd one which is in fullscreen bib.
605
1027
  if (elem.validity === 'valid' && this.auroInputElements.length > 1 && !isCombobox) {
606
1028
  elem.validity = this.auroInputElements[1].validity;
607
1029
  elem.errorMessage = this.auroInputElements[1].errorMessage;
@@ -883,28 +1305,30 @@ function navigateArrow(component, direction, options = {}) {
883
1305
  const selectKeyboardStrategy = {
884
1306
  ArrowDown(component, evt, ctx) {
885
1307
  evt.preventDefault();
886
- if (evt.altKey || evt.metaKey) {
887
- // navigate to last enabled option
888
- selectKeyboardStrategy.End(component, evt, ctx);
889
- return;
1308
+ if (ctx.isExpanded) {
1309
+ if (evt.altKey || evt.ctrlKey || evt.metaKey) {
1310
+ // navigate to last enabled option
1311
+ selectKeyboardStrategy.End(component, evt, ctx);
1312
+ } else {
1313
+ navigateArrow(component, 'down', { ctx });
1314
+ }
1315
+ } else {
1316
+ component.dropdown.show();
890
1317
  }
891
- navigateArrow(component, 'down', {
892
- ctx,
893
- showFn: () => component.dropdown.show(),
894
- });
895
1318
  },
896
1319
 
897
1320
  ArrowUp(component, evt, ctx) {
898
1321
  evt.preventDefault();
899
- if (evt.altKey || evt.metaKey) {
900
- // navigate to first enabled option
901
- selectKeyboardStrategy.Home(component, evt, ctx);
902
- return;
1322
+ if (ctx.isExpanded) {
1323
+ if (evt.altKey || evt.ctrlKey || evt.metaKey) {
1324
+ // navigate to first enabled option
1325
+ selectKeyboardStrategy.Home(component, evt, ctx);
1326
+ } else {
1327
+ navigateArrow(component, 'up', { ctx });
1328
+ }
1329
+ } else {
1330
+ component.dropdown.show();
903
1331
  }
904
- navigateArrow(component, 'up', {
905
- ctx,
906
- showFn: () => component.dropdown.show(),
907
- });
908
1332
  },
909
1333
 
910
1334
  Escape(component, evt, ctx) {
@@ -4911,7 +5335,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
4911
5335
  }
4912
5336
  };
4913
5337
 
4914
- var formkitVersion$1 = '202605271836';
5338
+ var formkitVersion$1 = '202605292307';
4915
5339
 
4916
5340
  class AuroElement extends i$3 {
4917
5341
  static get properties() {
@@ -6664,7 +7088,7 @@ class AuroHelpText extends i$3 {
6664
7088
  }
6665
7089
  }
6666
7090
 
6667
- var formkitVersion = '202605271836';
7091
+ var formkitVersion = '202605292307';
6668
7092
 
6669
7093
  var styleCss$2 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
6670
7094