@aurodesignsystem-dev/auro-formkit 0.0.0-pr1514.12 → 0.0.0-pr1514.2

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 (54) hide show
  1. package/components/bibtemplate/dist/index.js +1 -1
  2. package/components/bibtemplate/dist/registered.js +1 -1
  3. package/components/checkbox/demo/customize.min.js +1 -1
  4. package/components/checkbox/demo/getting-started.min.js +1 -1
  5. package/components/checkbox/demo/index.min.js +1 -1
  6. package/components/checkbox/dist/index.js +1 -1
  7. package/components/checkbox/dist/registered.js +1 -1
  8. package/components/combobox/demo/customize.min.js +97 -121
  9. package/components/combobox/demo/getting-started.min.js +97 -121
  10. package/components/combobox/demo/index.min.js +97 -121
  11. package/components/combobox/dist/index.js +96 -120
  12. package/components/combobox/dist/registered.js +96 -120
  13. package/components/counter/demo/customize.min.js +3 -11
  14. package/components/counter/demo/index.min.js +3 -11
  15. package/components/counter/dist/index.js +3 -11
  16. package/components/counter/dist/registered.js +3 -11
  17. package/components/datepicker/demo/customize.min.js +137 -271
  18. package/components/datepicker/demo/index.min.js +137 -271
  19. package/components/datepicker/dist/auro-calendar-cell.d.ts +0 -6
  20. package/components/datepicker/dist/auro-calendar.d.ts +7 -26
  21. package/components/datepicker/dist/index.js +137 -271
  22. package/components/datepicker/dist/registered.js +137 -271
  23. package/components/dropdown/demo/customize.min.js +1 -2
  24. package/components/dropdown/demo/getting-started.min.js +1 -2
  25. package/components/dropdown/demo/index.min.js +1 -2
  26. package/components/dropdown/dist/index.js +1 -2
  27. package/components/dropdown/dist/registered.js +1 -2
  28. package/components/form/demo/customize.min.js +396 -709
  29. package/components/form/demo/getting-started.min.js +396 -709
  30. package/components/form/demo/index.min.js +396 -709
  31. package/components/form/demo/registerDemoDeps.min.js +396 -709
  32. package/components/input/demo/api.md +5 -5
  33. package/components/input/demo/customize.md +8 -8
  34. package/components/input/demo/customize.min.js +93 -116
  35. package/components/input/demo/getting-started.min.js +93 -116
  36. package/components/input/demo/index.min.js +93 -116
  37. package/components/input/dist/base-input.d.ts +44 -33
  38. package/components/input/dist/index.js +94 -129
  39. package/components/input/dist/registered.js +93 -116
  40. package/components/radio/demo/customize.min.js +1 -1
  41. package/components/radio/demo/getting-started.min.js +1 -1
  42. package/components/radio/demo/index.min.js +1 -1
  43. package/components/radio/dist/index.js +1 -1
  44. package/components/radio/dist/registered.js +1 -1
  45. package/components/select/demo/customize.md +0 -86
  46. package/components/select/demo/customize.min.js +63 -187
  47. package/components/select/demo/getting-started.min.js +110 -189
  48. package/components/select/demo/index.min.js +63 -187
  49. package/components/select/demo/keyboard-behavior.md +4 -18
  50. package/components/select/dist/auro-select.d.ts +8 -20
  51. package/components/select/dist/index.js +63 -187
  52. package/components/select/dist/registered.js +63 -187
  53. package/custom-elements.json +1791 -1997
  54. package/package.json +1 -1
@@ -382,23 +382,8 @@ export default class BaseInput extends AuroElement {
382
382
  reflect: boolean;
383
383
  };
384
384
  };
385
- activeLabel: boolean;
386
- /** @private */
387
- private allowedInputTypes;
388
385
  appearance: string;
389
- /** @private */
390
- private dateFormatMap;
391
386
  disabled: boolean;
392
- /** @private */
393
- private domHandler;
394
- dvInputOnly: boolean;
395
- hasValue: boolean;
396
- hideLabelVisually: boolean;
397
- icon: boolean;
398
- /** @private */
399
- private inputIconName;
400
- /** @private */
401
- private label;
402
387
  locale: string;
403
388
  max: any;
404
389
  _maxObject: any;
@@ -406,28 +391,53 @@ export default class BaseInput extends AuroElement {
406
391
  min: any;
407
392
  _minObject: any;
408
393
  minLength: any;
409
- noValidate: boolean;
410
- onDark: boolean;
411
- _rawMaskValue: string | undefined;
412
394
  required: boolean;
395
+ onDark: boolean;
413
396
  setCustomValidityForType: string | undefined;
414
- /** @private */
415
- private setSelectionInputTypes;
416
- shape: string;
417
- /** @private */
418
- private showPassword;
419
397
  size: string;
420
- touched: boolean;
421
- /** @private */
422
- private uniqueId;
423
- /** @private */
424
- private util;
425
- /** @private */
426
- private validation;
427
- /** @private */
428
- private validationCCLength;
398
+ shape: string;
429
399
  value: any;
430
400
  _valueObject: any;
401
+ /**
402
+ * Internal Defaults.
403
+ * @private
404
+ * @returns {void}
405
+ */
406
+ private _initializePrivateDefaults;
407
+ activeLabel: boolean | undefined;
408
+ icon: boolean | undefined;
409
+ dvInputOnly: boolean | undefined;
410
+ hideLabelVisually: boolean | undefined;
411
+ noValidate: boolean | undefined;
412
+ _rawMaskValue: string | undefined;
413
+ touched: boolean | undefined;
414
+ util: any;
415
+ validation: AuroFormValidation | undefined;
416
+ inputIconName: any;
417
+ showPassword: boolean | undefined;
418
+ validationCCLength: number | undefined;
419
+ hasValue: boolean | undefined;
420
+ label: string | undefined;
421
+ allowedInputTypes: string[] | undefined;
422
+ dateFormatMap: {
423
+ 'mm/dd/yyyy': string;
424
+ 'dd/mm/yyyy': string;
425
+ 'yyyy/mm/dd': string;
426
+ 'yyyy/dd/mm': string;
427
+ 'mm/yy': string;
428
+ 'yy/mm': string;
429
+ 'mm/yyyy': string;
430
+ 'yyyy/mm': string;
431
+ yy: string;
432
+ yyyy: string;
433
+ mm: string;
434
+ dd: string;
435
+ 'dd/mm': string;
436
+ 'mm/dd': string;
437
+ } | undefined;
438
+ domHandler: any;
439
+ setSelectionInputTypes: string[] | undefined;
440
+ uniqueId: any;
431
441
  /**
432
442
  * Read-only Date object representation of `value` for full date formats.
433
443
  * @returns {Date|undefined}
@@ -471,7 +481,6 @@ export default class BaseInput extends AuroElement {
471
481
  inputElement: HTMLInputElement | null | undefined;
472
482
  labelElement: HTMLLabelElement | null | undefined;
473
483
  inputId: string | undefined;
474
- format: any;
475
484
  ValidityMessageOverride: any;
476
485
  /**
477
486
  * Patches the input element to dispatch an 'input' event whenever its value is set programmatically.
@@ -494,6 +503,7 @@ export default class BaseInput extends AuroElement {
494
503
  * @returns {void}
495
504
  */
496
505
  updated(changedProperties: Map<string, any>): void;
506
+ format: any;
497
507
  skipNextProgrammaticInputEvent: boolean | undefined;
498
508
  /**
499
509
  * @private
@@ -638,3 +648,4 @@ export default class BaseInput extends AuroElement {
638
648
  private matchInputValueToCreditCard;
639
649
  }
640
650
  import { AuroElement } from '../../layoutElement/src/auroElement.js';
651
+ import AuroFormValidation from '@aurodesignsystem/form-validation';
@@ -10327,13 +10327,6 @@ class AuroInputUtilities {
10327
10327
  * @returns {string | undefined}
10328
10328
  */
10329
10329
  toFormattedValue(valueObject, format) {
10330
- // Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
10331
- // `format` argument has to fail gracefully rather than throw on
10332
- // `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
10333
- // as "no format → no display value".
10334
- if (!format) {
10335
- return undefined;
10336
- }
10337
10330
  const normalizedFormat = format.toLowerCase();
10338
10331
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10339
10332
 
@@ -10484,18 +10477,79 @@ class BaseInput extends AuroElement {
10484
10477
  constructor() {
10485
10478
  super();
10486
10479
 
10487
- // Single-source initialization. Alphabetized so duplicate or stale
10488
- // defaults are immediately obvious on a diff. Every field is assigned
10489
- // exactly once here (previously the constructor + the old
10490
- // `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
10491
- // fields and double-allocated `util` and `validation`, discarding the
10492
- // first instance). `validation` is now allocated exactly once; `util`
10493
- // is seeded here with an en-US default and then rebuilt in
10494
- // `connectedCallback` once the consumer-resolved locale is available,
10495
- // so a parent (datepicker/combobox) calling `validate()` synchronously
10496
- // during its own update cycle sees a populated util instance.
10480
+ this.appearance = "default";
10481
+ this.disabled = false;
10482
+ this.layout = 'classic';
10483
+ this.locale = 'en-US';
10484
+ this.max = undefined;
10485
+ this._maxObject = undefined;
10486
+ this.maxLength = undefined;
10487
+ this.min = undefined;
10488
+ this._minObject = undefined;
10489
+ this.minLength = undefined;
10490
+ this.required = false;
10491
+ this.onDark = false;
10492
+ this.setCustomValidityForType = undefined;
10493
+ this.size = 'lg';
10494
+ this.shape = 'classic';
10495
+ this.value = undefined;
10496
+ this._valueObject = undefined;
10497
+
10498
+ this._initializePrivateDefaults();
10499
+ }
10500
+
10501
+ /**
10502
+ * Internal Defaults.
10503
+ * @private
10504
+ * @returns {void}
10505
+ */
10506
+ _initializePrivateDefaults() {
10497
10507
  this.activeLabel = false;
10498
- /** @private */
10508
+ this.appearance = "default";
10509
+ this.icon = false;
10510
+ this.disabled = false;
10511
+ this.dvInputOnly = false;
10512
+ this.hideLabelVisually = false;
10513
+ this.max = undefined;
10514
+ this.maxLength = undefined;
10515
+ this.min = undefined;
10516
+ this.minLength = undefined;
10517
+ this.noValidate = false;
10518
+ this.onDark = false;
10519
+ this.required = false;
10520
+ this.setCustomValidityForType = undefined;
10521
+
10522
+ // Used for storing raw values returned from input mask.
10523
+ this._rawMaskValue = undefined;
10524
+
10525
+ /**
10526
+ * @private
10527
+ */
10528
+ this.layout = 'classic';
10529
+
10530
+ /**
10531
+ * @private
10532
+ */
10533
+ this.shape = 'classic';
10534
+
10535
+ /**
10536
+ * @private
10537
+ */
10538
+ this.size = 'lg';
10539
+
10540
+ this.touched = false;
10541
+ this.util = new AuroInputUtilities({
10542
+ locale: "en-US",
10543
+ format: this.format
10544
+ });
10545
+ this.validation = new AuroFormValidation();
10546
+ this.inputIconName = undefined;
10547
+ this.showPassword = false;
10548
+ this.validationCCLength = undefined;
10549
+ this.hasValue = false;
10550
+ this.label = 'Input label is undefined';
10551
+
10552
+
10499
10553
  this.allowedInputTypes = [
10500
10554
  "text",
10501
10555
  "number",
@@ -10504,8 +10558,7 @@ class BaseInput extends AuroElement {
10504
10558
  "credit-card",
10505
10559
  "tel"
10506
10560
  ];
10507
- this.appearance = "default";
10508
- /** @private */
10561
+ this.icon = false;
10509
10562
  this.dateFormatMap = {
10510
10563
  'mm/dd/yyyy': 'dateMMDDYYYY',
10511
10564
  'dd/mm/yyyy': 'dateDDMMYYYY',
@@ -10522,57 +10575,27 @@ class BaseInput extends AuroElement {
10522
10575
  'dd/mm': 'dateDDMM',
10523
10576
  'mm/dd': 'dateMMDD'
10524
10577
  };
10525
- this.disabled = false;
10526
- /** @private */
10527
10578
  this.domHandler = new DomHandler();
10528
10579
  this.dvInputOnly = false;
10529
10580
  this.hasValue = false;
10530
- this.hideLabelVisually = false;
10531
- this.icon = false;
10532
- /** @private */
10533
10581
  this.inputIconName = undefined;
10534
- /** @private */
10535
10582
  this.label = 'Input label is undefined';
10536
- this.layout = 'classic';
10537
- this.locale = 'en-US';
10538
- this.max = undefined;
10539
- this._maxObject = undefined;
10540
- this.maxLength = undefined;
10541
- this.min = undefined;
10542
- this._minObject = undefined;
10543
- this.minLength = undefined;
10544
10583
  this.noValidate = false;
10545
- this.onDark = false;
10546
- // Raw values returned from the input mask before model normalization.
10547
- this._rawMaskValue = undefined;
10548
- this.required = false;
10549
- this.setCustomValidityForType = undefined;
10550
- // Credit Card is intentionally excluded — its mask manages the cursor
10551
- // itself, and listing it here caused cursor placement issues in Safari.
10552
- /** @private */
10584
+ this._rawMaskValue = undefined; // Used for storing raw values returned from input mask.
10553
10585
  this.setSelectionInputTypes = [
10554
10586
  "text",
10555
10587
  "password",
10556
10588
  "email"
10557
- ];
10558
- this.shape = 'classic';
10559
- /** @private */
10589
+ ]; // Credit Card is not included as this caused cursor placement issues in Safari.
10560
10590
  this.showPassword = false;
10561
- this.size = 'lg';
10562
10591
  this.touched = false;
10563
- /** @private */
10564
10592
  this.uniqueId = new UniqueId().create();
10565
- /** @private */
10566
10593
  this.util = new AuroInputUtilities({
10567
10594
  locale: this.locale,
10568
10595
  format: this.format
10569
10596
  });
10570
- /** @private */
10571
10597
  this.validation = new AuroFormValidation();
10572
- /** @private */
10573
10598
  this.validationCCLength = undefined;
10574
- this.value = undefined;
10575
- this._valueObject = undefined;
10576
10599
  }
10577
10600
 
10578
10601
  // function to define props used within the scope of this component
@@ -11120,15 +11143,6 @@ class BaseInput extends AuroElement {
11120
11143
 
11121
11144
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
11122
11145
 
11123
- // Normalize the format token to lowercase so case-mixed values supplied
11124
- // via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
11125
- // lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
11126
- // format silently misses the map and leaves `setCustomValidityForType`
11127
- // unset.
11128
- if (this.format) {
11129
- this.format = this.format.toLowerCase();
11130
- }
11131
-
11132
11146
  // use validity message override if declared when initializing the component
11133
11147
  if (this.hasAttribute('setCustomValidity')) {
11134
11148
  this.ValidityMessageOverride = this.setCustomValidity;
@@ -11562,38 +11576,6 @@ class BaseInput extends AuroElement {
11562
11576
  this.touched = true;
11563
11577
  this.validation.validate(this);
11564
11578
  }
11565
-
11566
- // Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
11567
- // update that can re-render the input and reset the native cursor; we
11568
- // capture the caret position before that update commits and restore it
11569
- // via `setSelectionRange` once the update has flushed. Gated on
11570
- // `setSelectionInputTypes` so credit-card (and other masked types whose
11571
- // formatter manages the cursor itself) doesn't get a competing write.
11572
- // Capture the caret position INSIDE the gate — reading `selectionStart`
11573
- // on input types that don't support text selection (number, email in
11574
- // some browsers) throws InvalidStateError, which would crash all input
11575
- // handling. Wrap the read in try/catch belt-and-suspenders even though
11576
- // the gated types currently support it, since the list is a public
11577
- // property a consumer could mutate.
11578
- if (this.setSelectionInputTypes.includes(this.type)) {
11579
- let selectionStart;
11580
- try {
11581
- selectionStart = this.inputElement.selectionStart;
11582
- } catch (error) { // eslint-disable-line no-unused-vars
11583
- return;
11584
- }
11585
- if (typeof selectionStart !== 'number') {
11586
- return;
11587
- }
11588
- this.updateComplete.then(() => {
11589
- try {
11590
- this.inputElement.setSelectionRange(selectionStart, selectionStart);
11591
- } catch (error) { // eslint-disable-line no-unused-vars
11592
- // Some input types (number/email in certain UAs) throw on
11593
- // setSelectionRange; swallow and let the native cursor stand.
11594
- }
11595
- });
11596
- }
11597
11579
  }
11598
11580
 
11599
11581
  /**
@@ -12220,7 +12202,7 @@ class AuroHelpText extends LitElement {
12220
12202
  }
12221
12203
  }
12222
12204
 
12223
- var formkitVersion = '202606292048';
12205
+ var formkitVersion = '202606291652';
12224
12206
 
12225
12207
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12226
12208
  // See LICENSE in the project root for license information.
@@ -12723,7 +12705,6 @@ class AuroInput extends BaseInput {
12723
12705
  <${this.buttonTag}
12724
12706
  @click="${this.handleClickShowPassword}"
12725
12707
  appearance="${this.onDark ? 'inverse' : this.appearance}"
12726
- aria-pressed="${this.showPassword ? 'true' : 'false'}"
12727
12708
  class="notificationBtn passwordBtn"
12728
12709
  shape="circle"
12729
12710
  size="sm"
@@ -12797,29 +12778,25 @@ class AuroInput extends BaseInput {
12797
12778
  * @returns {html} - Returns HTML for the help text and error message.
12798
12779
  */
12799
12780
  renderHtmlHelpText() {
12800
- // Single `<p>` with stable identity across validity transitions —
12801
- // previously two distinct templates (valid vs invalid) caused Lit to
12802
- // replace the node entirely on a flip, and VoiceOver wouldn't
12803
- // re-announce because the live-region element it was watching had been
12804
- // removed and a new one inserted. Keeping one node means the `role`,
12805
- // `aria-live`, and text content all change in-place, which AT does
12806
- // observe and announce.
12807
- const isError = this.validity && this.validity !== 'valid';
12808
12781
  return html$1`
12809
- <${this.helpTextTag}
12810
- appearance="${this.onDark ? 'inverse' : this.appearance}"
12811
- ?error=${isError}>
12812
- <p
12813
- id="${this.uniqueId}"
12814
- part="helpText"
12815
- role="${ifDefined(isError ? 'alert' : undefined)}"
12816
- aria-live="${ifDefined(isError ? 'assertive' : undefined)}">
12817
- ${isError
12818
- ? this.errorMessage
12819
- : html$1`<slot name="helpText">${this.getHelpText()}</slot>`
12782
+ ${!this.validity || this.validity === undefined || this.validity === 'valid'
12783
+ ? html$1`
12784
+ <${this.helpTextTag}
12785
+ appearance="${this.onDark ? 'inverse' : this.appearance}">
12786
+ <p id="${this.uniqueId}" part="helpText">
12787
+ <slot name="helpText">${this.getHelpText()}</slot>
12788
+ </p>
12789
+ </${this.helpTextTag}>
12790
+ `
12791
+ : html$1`
12792
+ <${this.helpTextTag} error
12793
+ appearance="${this.onDark ? 'inverse' : this.appearance}">
12794
+ <p id="${this.uniqueId}" role="alert" aria-live="assertive" part="helpText">
12795
+ ${this.errorMessage}
12796
+ </p>
12797
+ </${this.helpTextTag}>
12798
+ `
12820
12799
  }
12821
- </p>
12822
- </${this.helpTextTag}>
12823
12800
  `;
12824
12801
  }
12825
12802
 
@@ -12966,15 +12943,6 @@ function formatISODate(isoStr, format) {
12966
12943
  try {
12967
12944
  const date = dateFormatter.stringToDateInstance(isoStr);
12968
12945
 
12969
- // `stringToDateInstance` returns an `Invalid Date` for malformed strings
12970
- // and `null` for non-string input — it does NOT throw. Without this
12971
- // guard, `getFullYear()`/`getMonth()`/`getDate()` on an Invalid Date
12972
- // yield `NaN`, and `String(NaN).padStart(4, '0')` produces literals
12973
- // like "0NaN/0NaN/0NaN" instead of `undefined`.
12974
- if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
12975
- return undefined;
12976
- }
12977
-
12978
12946
  const year = String(date.getFullYear()).padStart(4, '0');
12979
12947
  const month = String(date.getMonth() + 1).padStart(2, '0');
12980
12948
  const day = String(date.getDate()).padStart(2, '0');
@@ -12985,10 +12953,7 @@ function formatISODate(isoStr, format) {
12985
12953
  replace(/mm/iu, month).
12986
12954
  replace(/dd/iu, day);
12987
12955
  } catch (err) {
12988
- // Defensive: the Date-returning path is guarded above, but `parseDate`
12989
- // (inside `stringToDateInstance`) could throw on pathological input
12990
- // future-library-versions might introduce. Treat any thrown error as
12991
- // "not a valid date" and return undefined.
12956
+ // If the input string is not a valid date, return undefined
12992
12957
  return undefined;
12993
12958
  }
12994
12959
  }