@aurodesignsystem-dev/auro-formkit 0.0.0-pr1514.8 → 0.0.0-pr1515.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/bibtemplate/dist/index.js +1 -1
- package/components/bibtemplate/dist/registered.js +1 -1
- package/components/checkbox/demo/customize.min.js +1 -1
- package/components/checkbox/demo/getting-started.min.js +1 -1
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.min.js +97 -120
- package/components/combobox/demo/getting-started.min.js +97 -120
- package/components/combobox/demo/index.min.js +97 -120
- package/components/combobox/dist/index.js +96 -119
- package/components/combobox/dist/registered.js +96 -119
- package/components/counter/demo/customize.min.js +3 -3
- package/components/counter/demo/index.min.js +3 -3
- package/components/counter/dist/index.js +3 -3
- package/components/counter/dist/registered.js +3 -3
- package/components/datepicker/demo/customize.min.js +118 -251
- package/components/datepicker/demo/index.min.js +118 -251
- package/components/datepicker/dist/auro-calendar.d.ts +1 -30
- package/components/datepicker/dist/index.js +118 -251
- package/components/datepicker/dist/registered.js +118 -251
- package/components/dropdown/demo/customize.min.js +1 -1
- package/components/dropdown/demo/getting-started.min.js +1 -1
- package/components/dropdown/demo/index.min.js +1 -1
- package/components/dropdown/dist/index.js +1 -1
- package/components/dropdown/dist/registered.js +1 -1
- package/components/form/demo/customize.min.js +317 -496
- package/components/form/demo/getting-started.min.js +317 -496
- package/components/form/demo/index.min.js +317 -496
- package/components/form/demo/registerDemoDeps.min.js +317 -496
- package/components/input/demo/api.md +5 -5
- package/components/input/demo/customize.md +8 -8
- package/components/input/demo/customize.min.js +93 -116
- package/components/input/demo/getting-started.min.js +93 -116
- package/components/input/demo/index.min.js +93 -116
- package/components/input/dist/base-input.d.ts +44 -33
- package/components/input/dist/index.js +94 -129
- package/components/input/dist/registered.js +93 -116
- package/components/radio/demo/customize.min.js +1 -1
- package/components/radio/demo/getting-started.min.js +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/customize.md +1 -3
- package/components/select/demo/customize.min.js +3 -3
- package/components/select/demo/getting-started.min.js +50 -5
- package/components/select/demo/index.min.js +3 -3
- package/components/select/dist/index.js +3 -3
- package/components/select/dist/registered.js +3 -3
- package/custom-elements.json +1720 -1940
- 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
|
-
|
|
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
|
-
|
|
10488
|
-
|
|
10489
|
-
|
|
10490
|
-
|
|
10491
|
-
|
|
10492
|
-
|
|
10493
|
-
|
|
10494
|
-
|
|
10495
|
-
|
|
10496
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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 = '
|
|
12205
|
+
var formkitVersion = '202606291748';
|
|
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
|
-
|
|
12810
|
-
|
|
12811
|
-
|
|
12812
|
-
|
|
12813
|
-
|
|
12814
|
-
|
|
12815
|
-
|
|
12816
|
-
|
|
12817
|
-
|
|
12818
|
-
|
|
12819
|
-
|
|
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
|
-
//
|
|
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
|
}
|