@nanoporetech-digital/components 2.12.0 → 2.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/CHANGELOG.md +26 -0
- package/dist/cjs/index.cjs.js +4 -2
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +266 -124
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +16 -3
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +1 -0
- package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/alert/alert.helpers.js +2 -2
- package/dist/collection/components/alert/alert.helpers.js.map +1 -1
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +2 -2
- package/dist/collection/components/algolia/algolia-input.js +5 -5
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +6 -6
- package/dist/collection/components/checkbox/checkbox-group.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- package/dist/collection/components/datalist/datalist.js +1 -1
- package/dist/collection/components/date-input/date-input.js +8 -8
- package/dist/collection/components/date-picker/date-picker.js +5 -5
- package/dist/collection/components/details/details.js +1 -1
- package/dist/collection/components/dialog/dialog.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/field-validator/field-validator-interface.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +345 -130
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +0 -1
- package/dist/collection/components/file-upload/file-upload.js +4 -4
- package/dist/collection/components/global-nav/global-nav.js +4 -4
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.js +37 -8
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/range/range.js +4 -4
- package/dist/collection/components/resize-observe/resize-observe.js +1 -1
- package/dist/collection/components/select/select.js +8 -7
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/slides/slides.js +7 -7
- package/dist/collection/components/tabs/tab-group.js +2 -2
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/components/index.js +3 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +17 -3
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-field-validator.js +271 -126
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-file-upload.js +1 -1
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/select.js +1 -0
- package/dist/components/select.js.map +1 -1
- package/dist/custom-elements/index.js +288 -132
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-field-validator.entry.js +266 -124
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-file-upload.entry.js +1 -1
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +16 -3
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +1 -0
- package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm-es5/index.js +2 -2
- package/dist/esm-es5/index.js.map +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/nano-components.js +1 -1
- package/dist/esm-es5/nano-components.js.map +1 -1
- package/dist/esm-es5/nano-field-validator.entry.js +2 -2
- package/dist/esm-es5/nano-field-validator.entry.js.map +1 -1
- package/dist/esm-es5/nano-file-upload.entry.js +1 -1
- package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
- package/dist/esm-es5/nano-input.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/index.esm.js.map +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/p-085e03db.system.entry.js +5 -0
- package/dist/nano-components/p-085e03db.system.entry.js.map +1 -0
- package/dist/nano-components/p-53957ec6.system.js +1 -1
- package/dist/nano-components/p-53957ec6.system.js.map +1 -1
- package/dist/nano-components/{p-01667573.entry.js → p-634a58f7.entry.js} +2 -2
- package/dist/nano-components/p-634a58f7.entry.js.map +1 -0
- package/dist/nano-components/p-a07cf44c.system.entry.js +5 -0
- package/dist/nano-components/{p-4558a9c6.system.entry.js.map → p-a07cf44c.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-96d9b8b9.system.entry.js → p-c2bbf0fb.system.entry.js} +2 -2
- package/dist/nano-components/p-c2bbf0fb.system.entry.js.map +1 -0
- package/dist/nano-components/{p-72893d12.system.entry.js → p-cb512cff.system.entry.js} +2 -2
- package/dist/nano-components/p-cb512cff.system.entry.js.map +1 -0
- package/dist/nano-components/p-e35226a9.entry.js +5 -0
- package/dist/nano-components/p-e35226a9.entry.js.map +1 -0
- package/dist/nano-components/p-e9fddc1a.entry.js +5 -0
- package/dist/nano-components/{p-91614b43.entry.js.map → p-e9fddc1a.entry.js.map} +1 -1
- package/dist/nano-components/{p-055f7d35.entry.js → p-ed0bdea9.entry.js} +2 -2
- package/dist/nano-components/p-ed0bdea9.entry.js.map +1 -0
- package/dist/nano-components/p-f62a40ea.system.js +5 -0
- package/dist/nano-components/{p-3258c568.system.js.map → p-f62a40ea.system.js.map} +1 -1
- package/dist/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/alert/alert.helpers.d.ts +2 -2
- package/dist/types/components/field-validator/field-validator-interface.d.ts +5 -1
- package/dist/types/components/field-validator/field-validator.d.ts +68 -12
- package/dist/types/components/input/input.d.ts +6 -1
- package/dist/types/components.d.ts +25 -3
- package/dist/types/index.d.ts +1 -0
- package/docs-json.json +65 -3
- package/docs-vscode.json +6 -2
- package/package.json +2 -2
- package/dist/nano-components/p-01667573.entry.js.map +0 -1
- package/dist/nano-components/p-055f7d35.entry.js.map +0 -1
- package/dist/nano-components/p-2b478ca1.system.entry.js +0 -5
- package/dist/nano-components/p-2b478ca1.system.entry.js.map +0 -1
- package/dist/nano-components/p-3258c568.system.js +0 -5
- package/dist/nano-components/p-4558a9c6.system.entry.js +0 -5
- package/dist/nano-components/p-5f4fc2b4.entry.js +0 -5
- package/dist/nano-components/p-5f4fc2b4.entry.js.map +0 -1
- package/dist/nano-components/p-72893d12.system.entry.js.map +0 -1
- package/dist/nano-components/p-91614b43.entry.js +0 -5
- package/dist/nano-components/p-96d9b8b9.system.entry.js.map +0 -1
@@ -2642,10 +2642,10 @@ async function nanoShowToast(message, position = 'tr', icon, alertOptions, butto
|
|
2642
2642
|
/**
|
2643
2643
|
* `nano-alert` helper to create alert notifications imperatively.
|
2644
2644
|
* @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`
|
2645
|
-
* @param buttons
|
2645
|
+
* @param buttons
|
2646
2646
|
* @param icon - name for the `nano-icon`
|
2647
2647
|
* @param label - descriptive label for assitive technology
|
2648
|
-
* @param alertOptions
|
2648
|
+
* @param alertOptions
|
2649
2649
|
* @returns `Promise<void>`
|
2650
2650
|
*/
|
2651
2651
|
function nanoShowAlert(message, buttons = [], label, icon = 'light/info-circle', alertOptions = {}) {
|
@@ -13225,8 +13225,15 @@ let FieldValidator = class extends H {
|
|
13225
13225
|
this.nanoSubmit = createEvent(this, "nanoSubmit", 7);
|
13226
13226
|
this.nanoInvalid = createEvent(this, "nanoInvalid", 7);
|
13227
13227
|
this.submitted = false;
|
13228
|
-
this.
|
13229
|
-
|
13228
|
+
this.allFields = [];
|
13229
|
+
this.nanoFieldSelector = `
|
13230
|
+
nano-input,
|
13231
|
+
nano-select,
|
13232
|
+
nano-file-upload,
|
13233
|
+
nano-date-input,
|
13234
|
+
nano-checkbox
|
13235
|
+
`;
|
13236
|
+
// annoyingly, whenever we attempt to `checkValidty()` it fires `invalid` events.
|
13230
13237
|
// this is used to prevent infinite loops / multiple calls
|
13231
13238
|
this.internalValidate = false;
|
13232
13239
|
// Public API
|
@@ -13235,12 +13242,27 @@ let FieldValidator = class extends H {
|
|
13235
13242
|
/** Tries to scroll to the first invalid field on submit */
|
13236
13243
|
this.scrollToInvalid = true;
|
13237
13244
|
this._dirty = false;
|
13245
|
+
/** By default, `nano-field-validator` will also track all native form field elements.
|
13246
|
+
* You can add extra web-component form fields to listen to
|
13247
|
+
* (as long as they match the standard form field spec) by using the `fieldSelector` prop.
|
13248
|
+
*/
|
13249
|
+
this.extraFieldSelector = 'input, select, textarea';
|
13238
13250
|
// Event handlers
|
13239
|
-
/**
|
13251
|
+
/**
|
13252
|
+
* Fired whenever store values change and potentially checks validity
|
13253
|
+
* @param key - the key of the store that's just changed
|
13254
|
+
* @param newVal - the incoming, new value
|
13255
|
+
*/
|
13240
13256
|
this.handleStoreChange = async (key, newVal) => {
|
13241
|
-
const found = this.
|
13242
|
-
|
13257
|
+
const found = this.allFields.find((field) => this.getName(field) === key);
|
13258
|
+
// field update has come programmatically (not from ui),
|
13259
|
+
// so let's update the underlying ui field
|
13260
|
+
if ((found &&
|
13261
|
+
found.tagName === 'NANO-FILE-UPLOAD' &&
|
13262
|
+
!this.fileStateEqual(key, found)) ||
|
13263
|
+
(found.tagName !== 'NANO-FILE-UPLOAD' && found.value !== newVal)) {
|
13243
13264
|
this.storeToFields([found]);
|
13265
|
+
}
|
13244
13266
|
if (this.validateOn === 'dirty' && this.dirty) {
|
13245
13267
|
this.internalValidate = true;
|
13246
13268
|
await this.validateAllFields();
|
@@ -13249,17 +13271,40 @@ let FieldValidator = class extends H {
|
|
13249
13271
|
}
|
13250
13272
|
this.nanoPayloadChange.emit(this._store.state);
|
13251
13273
|
};
|
13252
|
-
/**
|
13274
|
+
/**
|
13275
|
+
* Handles nano field value changes and passes to store
|
13276
|
+
* @param ev - the incoming change event
|
13277
|
+
*/
|
13253
13278
|
this.handleFieldChange = (ev) => {
|
13279
|
+
if (!this.nanoFields.includes(ev.target))
|
13280
|
+
return;
|
13254
13281
|
this._dirty = true;
|
13255
13282
|
this.fieldsToStore([ev.target]);
|
13256
13283
|
};
|
13257
|
-
/**
|
13284
|
+
/**
|
13285
|
+
* Handles non-nano field value changes and passes to store
|
13286
|
+
* @param ev - the incoming change event
|
13287
|
+
*/
|
13288
|
+
this.handlePlainFieldChange = (ev) => {
|
13289
|
+
if (!this.plainFields.includes(ev.target))
|
13290
|
+
return;
|
13291
|
+
this.fieldsToStore([ev.target]);
|
13292
|
+
};
|
13293
|
+
/**
|
13294
|
+
* Handles default field validation events
|
13295
|
+
* @param ev - the invalid event
|
13296
|
+
*/
|
13258
13297
|
this.handleFormInvalid = async (ev) => {
|
13259
|
-
|
13298
|
+
// if it's a non-nano field, we'll let default html5 validation do it's thing
|
13299
|
+
if (!this.plainFields.includes(ev.target)) {
|
13300
|
+
ev.preventDefault();
|
13301
|
+
}
|
13260
13302
|
this._valid = false;
|
13303
|
+
// whenever `checkValidity` is called, this handler is in-turn called.
|
13304
|
+
// this flag is used to stop infinite loops
|
13261
13305
|
if (this.internalValidate)
|
13262
13306
|
return;
|
13307
|
+
// a submit must have happened to if 'submitThenDirty' turn on 'dirty' checking now
|
13263
13308
|
if (this.validateOn === 'submitThenDirty')
|
13264
13309
|
this.validateOn = 'dirty';
|
13265
13310
|
this.submitted = true;
|
@@ -13279,7 +13324,10 @@ let FieldValidator = class extends H {
|
|
13279
13324
|
this.scrollToFirstInvalid();
|
13280
13325
|
this.nanoInvalid.emit();
|
13281
13326
|
};
|
13282
|
-
/**
|
13327
|
+
/**
|
13328
|
+
* stops default form submission, checks if valid, then submits manually
|
13329
|
+
* @param e - a submit event from the nested form element
|
13330
|
+
*/
|
13283
13331
|
this.handleSubmit = async (e) => {
|
13284
13332
|
e.preventDefault();
|
13285
13333
|
if (this.validateOn === 'submitThenDirty')
|
@@ -13304,6 +13352,7 @@ let FieldValidator = class extends H {
|
|
13304
13352
|
return this._activeForm;
|
13305
13353
|
}
|
13306
13354
|
set activeForm(form) {
|
13355
|
+
// manages event listners on whatever form is used (slotted on created here)
|
13307
13356
|
if (!form)
|
13308
13357
|
return;
|
13309
13358
|
if (this._activeForm) {
|
@@ -13314,7 +13363,7 @@ let FieldValidator = class extends H {
|
|
13314
13363
|
}
|
13315
13364
|
/** Sync up validateOn with all fields */
|
13316
13365
|
validateOnChange() {
|
13317
|
-
this.
|
13366
|
+
this.nanoFields.forEach((field) => {
|
13318
13367
|
if (field.tagName === 'NANO-CHECKBOX') {
|
13319
13368
|
const cbg = field.closest('nano-checkbox-group');
|
13320
13369
|
if (cbg)
|
@@ -13342,7 +13391,7 @@ let FieldValidator = class extends H {
|
|
13342
13391
|
get payload() {
|
13343
13392
|
return this._store.state;
|
13344
13393
|
}
|
13345
|
-
/** Returns true if validation errors will be displayed to the user */
|
13394
|
+
/** Returns true if validation errors will be displayed to the user. @readonly */
|
13346
13395
|
get showValidation() {
|
13347
13396
|
return (this.validateOn === 'dirty' && this.dirty) || this.submitted;
|
13348
13397
|
}
|
@@ -13359,26 +13408,58 @@ let FieldValidator = class extends H {
|
|
13359
13408
|
```
|
13360
13409
|
*/
|
13361
13410
|
get validationState() {
|
13411
|
+
// TODO - migrate nano-fields away from using proprietary methods in a bid to be closer to the spec
|
13412
|
+
// this is big and ugly.
|
13413
|
+
// why? Cos' it must unify checking validity state for both
|
13414
|
+
// `nano-...` and plain form fields.
|
13362
13415
|
const validationState = [];
|
13363
|
-
this.
|
13364
|
-
const found = validationState.find((v) => v.name === field
|
13416
|
+
this.allFields.forEach(async (field) => {
|
13417
|
+
const found = validationState.find((v) => v.name === this.getName(field));
|
13418
|
+
let pf;
|
13419
|
+
let nf;
|
13365
13420
|
if (found) {
|
13366
|
-
|
13367
|
-
|
13368
|
-
|
13421
|
+
if (field.validationMessage) {
|
13422
|
+
pf = field;
|
13423
|
+
found.validityMessage = pf.validationMessage.length
|
13424
|
+
? pf.validationMessage
|
13425
|
+
: found.validityMessage;
|
13426
|
+
this.internalValidate = true;
|
13427
|
+
if (found.valid && !pf.checkValidity())
|
13428
|
+
found.valid = false;
|
13429
|
+
this.internalValidate = false;
|
13430
|
+
}
|
13431
|
+
else if (field.validityMessage) {
|
13432
|
+
nf = field;
|
13433
|
+
found.validityMessage = nf.validityMessage.length
|
13434
|
+
? nf.validityMessage
|
13435
|
+
: nf.validityMessage;
|
13436
|
+
if (found.valid && nf.invalid)
|
13437
|
+
found.valid = false;
|
13438
|
+
}
|
13369
13439
|
if (!found.fields.find((f) => f === field))
|
13370
13440
|
found.fields.push(field);
|
13371
|
-
|
13372
|
-
|
13373
|
-
|
13441
|
+
}
|
13442
|
+
let valid;
|
13443
|
+
let validityMessage;
|
13444
|
+
if (field.checkValidity) {
|
13445
|
+
pf = field;
|
13446
|
+
this.internalValidate = true;
|
13447
|
+
valid = pf.checkValidity();
|
13448
|
+
this.internalValidate = false;
|
13449
|
+
validityMessage = pf.validationMessage;
|
13450
|
+
}
|
13451
|
+
else {
|
13452
|
+
nf = field;
|
13453
|
+
valid = !nf.invalid;
|
13454
|
+
validityMessage = nf.validityMessage;
|
13374
13455
|
}
|
13375
13456
|
validationState.push({
|
13376
13457
|
fields: [field],
|
13377
|
-
name: field
|
13378
|
-
|
13379
|
-
value: this._store.state[field.name],
|
13458
|
+
name: this.getName(field),
|
13459
|
+
value: this._store.state[this.getName(field)],
|
13380
13460
|
dirty: false,
|
13381
|
-
|
13461
|
+
valid,
|
13462
|
+
validityMessage,
|
13382
13463
|
});
|
13383
13464
|
});
|
13384
13465
|
return validationState;
|
@@ -13390,6 +13471,24 @@ let FieldValidator = class extends H {
|
|
13390
13471
|
async setStore(state) {
|
13391
13472
|
Object.entries(state).forEach(([key, val]) => (this.store.state[key] = val));
|
13392
13473
|
}
|
13474
|
+
/**
|
13475
|
+
* Sets custom validity for all / some form fields.
|
13476
|
+
* @param validity - a validity object of `{fieldName: errorString}` pairs. Set as an empty string to clear the error.
|
13477
|
+
*/
|
13478
|
+
async setCustomValidity(validity) {
|
13479
|
+
return await Promise.all(Object.entries(validity).map(async ([key, err]) => {
|
13480
|
+
const field = this.allFields.find((f) => this.getName(f) === key);
|
13481
|
+
if (!!field)
|
13482
|
+
await this.setFieldError(field, err);
|
13483
|
+
}));
|
13484
|
+
}
|
13485
|
+
/**
|
13486
|
+
* Clear all custom validation.
|
13487
|
+
* @param validity
|
13488
|
+
*/
|
13489
|
+
async resetValidity() {
|
13490
|
+
return await Promise.all(this.allFields.map(async (field) => await this.setFieldError(field, '')));
|
13491
|
+
}
|
13393
13492
|
// private methods
|
13394
13493
|
attachSlotObserver() {
|
13395
13494
|
if (!!this.mo)
|
@@ -13407,118 +13506,149 @@ let FieldValidator = class extends H {
|
|
13407
13506
|
subtree: true,
|
13408
13507
|
});
|
13409
13508
|
}
|
13509
|
+
/**
|
13510
|
+
* During spec tests, mockelement props aren't set - only attributes.
|
13511
|
+
* This irons out that kink
|
13512
|
+
* @param field
|
13513
|
+
* @returns
|
13514
|
+
*/
|
13515
|
+
getName(field) {
|
13516
|
+
return field.name || field.getAttribute('name');
|
13517
|
+
}
|
13410
13518
|
/** Checks for new `nano-...` fields and adds them to our watch array and value store */
|
13411
13519
|
setupFields() {
|
13412
|
-
let
|
13413
|
-
|
13414
|
-
|
13415
|
-
|
13416
|
-
nano-date-input,
|
13417
|
-
nano-checkbox
|
13418
|
-
`));
|
13419
|
-
fields = fields.filter((f) => !!f.name && !!f.name.length);
|
13520
|
+
let nanoFields = Array.from(this.host.querySelectorAll(this.nanoFieldSelector));
|
13521
|
+
let plainFields = Array.from(this.host.querySelectorAll(this.extraFieldSelector)).filter((e) => !e.closest(this.nanoFieldSelector));
|
13522
|
+
nanoFields = nanoFields.filter((f) => !!this.getName(f) && !!this.getName(f).length);
|
13523
|
+
plainFields = plainFields.filter((f) => !!this.getName(f) && !!this.getName(f).length);
|
13420
13524
|
// do we have any currently un-watched fields?
|
13421
|
-
if (!
|
13525
|
+
if (![...nanoFields, ...plainFields].filter((f) => !this.allFields.includes(f)).length)
|
13422
13526
|
return;
|
13423
13527
|
// setup the initial store state / refresh on new fields
|
13424
|
-
this.
|
13425
|
-
this.
|
13528
|
+
this.nanoFields = nanoFields;
|
13529
|
+
this.plainFields = plainFields;
|
13530
|
+
this.allFields = [...nanoFields, ...plainFields];
|
13531
|
+
this.storeToFields(this.allFields);
|
13426
13532
|
this.validateOnChange();
|
13427
|
-
this.fieldsToStore(this.
|
13533
|
+
this.fieldsToStore(this.allFields);
|
13428
13534
|
this.nanoPayloadChange.emit(this._store.state);
|
13429
13535
|
}
|
13430
13536
|
storeToFields(fields) {
|
13431
13537
|
fields.forEach((field) => {
|
13432
|
-
|
13538
|
+
var _a;
|
13539
|
+
const fieldName = this.getName(field);
|
13433
13540
|
if (!fieldName.length ||
|
13434
13541
|
typeof this._store.state[fieldName] === 'undefined')
|
13435
13542
|
return;
|
13436
|
-
|
13437
|
-
|
13438
|
-
|
13439
|
-
|
13440
|
-
|
13441
|
-
|
13442
|
-
|
13443
|
-
|
13444
|
-
|
13445
|
-
|
13446
|
-
|
13447
|
-
|
13448
|
-
|
13449
|
-
|
13450
|
-
|
13451
|
-
|
13452
|
-
|
13453
|
-
|
13454
|
-
|
13455
|
-
|
13456
|
-
|
13457
|
-
|
13458
|
-
|
13459
|
-
|
13460
|
-
|
13461
|
-
|
13462
|
-
|
13463
|
-
break;
|
13464
|
-
default:
|
13465
|
-
field.value = this._store.state[fieldName];
|
13466
|
-
break;
|
13543
|
+
if (field.tagName === 'NANO-CHECKBOX' ||
|
13544
|
+
['radio', 'checkbox'].includes(field.type)) {
|
13545
|
+
let cb = field;
|
13546
|
+
if (cb.type === 'radio' ||
|
13547
|
+
cb.type === 'segment' ||
|
13548
|
+
cb.type === 'segment-pill') {
|
13549
|
+
// single radio type control
|
13550
|
+
if (this._store.state[fieldName] === cb.value)
|
13551
|
+
cb.checked = true;
|
13552
|
+
else
|
13553
|
+
cb.checked = false;
|
13554
|
+
}
|
13555
|
+
else if (Array.isArray(this._store.state[fieldName])) {
|
13556
|
+
// multiple checkbox like controls
|
13557
|
+
if (this._store.state[fieldName].includes(cb.value))
|
13558
|
+
cb.checked = true;
|
13559
|
+
else
|
13560
|
+
cb.checked = false;
|
13561
|
+
}
|
13562
|
+
else {
|
13563
|
+
// single checkbox like control
|
13564
|
+
if (this._store.state[fieldName] === cb.value)
|
13565
|
+
cb.checked = true;
|
13566
|
+
else
|
13567
|
+
cb.checked = false;
|
13568
|
+
}
|
13569
|
+
return;
|
13467
13570
|
}
|
13571
|
+
if (field.tagName === 'NANO-FILE-UPLOAD') {
|
13572
|
+
const ff = field;
|
13573
|
+
// this can only work if the field is empty rn... a one-time deal
|
13574
|
+
if (!((_a = ff.files) === null || _a === void 0 ? void 0 : _a.length))
|
13575
|
+
ff.files = this._store.state[fieldName];
|
13576
|
+
return;
|
13577
|
+
}
|
13578
|
+
// default
|
13579
|
+
field.value = this._store.state[fieldName];
|
13468
13580
|
});
|
13469
13581
|
}
|
13470
13582
|
/** Loops through all `nano-...` fields and extracts their values into our store */
|
13471
13583
|
fieldsToStore(fields) {
|
13472
13584
|
fields.forEach((field) => {
|
13473
|
-
const fieldName = field
|
13585
|
+
const fieldName = this.getName(field);
|
13474
13586
|
if (!fieldName.length)
|
13475
13587
|
return;
|
13476
|
-
|
13477
|
-
|
13478
|
-
|
13479
|
-
|
13480
|
-
|
13481
|
-
|
13482
|
-
|
13483
|
-
|
13484
|
-
|
13485
|
-
|
13486
|
-
|
13487
|
-
|
13488
|
-
|
13489
|
-
|
13490
|
-
|
13491
|
-
|
13492
|
-
|
13493
|
-
|
13494
|
-
|
13495
|
-
if (cb.
|
13496
|
-
|
13497
|
-
this._store.state[fieldName] = [...currentArr, cb.value];
|
13498
|
-
}
|
13499
|
-
}
|
13500
|
-
else {
|
13501
|
-
this._store.state[fieldName] = currentArr.filter((v) => v !== cb.value);
|
13588
|
+
if (field.tagName === 'NANO-CHECKBOX' ||
|
13589
|
+
['radio', 'checkbox'].includes(field.type)) {
|
13590
|
+
let cb = field;
|
13591
|
+
if (cb.type === 'radio' ||
|
13592
|
+
cb.type === 'segment' ||
|
13593
|
+
cb.type === 'segment-pill') {
|
13594
|
+
// radio type control - only one can be checked
|
13595
|
+
if (cb.checked)
|
13596
|
+
this._store.state[fieldName] = cb.value;
|
13597
|
+
}
|
13598
|
+
else if (this.allFields.filter((f) => !!this.getName(field) &&
|
13599
|
+
(f.tagName === 'NANO-CHECKBOX' ||
|
13600
|
+
f.type === 'checkbox')).length > 1) {
|
13601
|
+
// multiple checkbox type control
|
13602
|
+
const currentArr = Array.isArray(this._store.state[fieldName])
|
13603
|
+
? this._store.state[fieldName]
|
13604
|
+
: [];
|
13605
|
+
if (cb.checked) {
|
13606
|
+
// checked
|
13607
|
+
if (!this._store.state[fieldName].includes(cb.value)) {
|
13608
|
+
this._store.state[fieldName] = [...currentArr, cb.value];
|
13502
13609
|
}
|
13503
13610
|
}
|
13504
13611
|
else {
|
13505
|
-
//
|
13506
|
-
|
13507
|
-
this._store.state[fieldName] = cb.value;
|
13508
|
-
else
|
13509
|
-
this._store.state[fieldName] = '';
|
13612
|
+
// unchecked
|
13613
|
+
this._store.state[fieldName] = currentArr.filter((v) => v !== cb.value);
|
13510
13614
|
}
|
13511
|
-
|
13512
|
-
|
13513
|
-
|
13514
|
-
|
13515
|
-
|
13516
|
-
|
13517
|
-
|
13615
|
+
}
|
13616
|
+
else {
|
13617
|
+
// single checkbox - on or off
|
13618
|
+
if (cb.checked)
|
13619
|
+
this._store.state[fieldName] = cb.value;
|
13620
|
+
else
|
13621
|
+
this._store.state[fieldName] = '';
|
13622
|
+
}
|
13623
|
+
return;
|
13624
|
+
}
|
13625
|
+
if (field.tagName === 'NANO-FILE-UPLOAD') {
|
13626
|
+
const ff = field;
|
13627
|
+
if (!this.fileStateEqual(fieldName, ff))
|
13628
|
+
this._store.state[fieldName] = ff.files;
|
13629
|
+
return;
|
13518
13630
|
}
|
13631
|
+
// default
|
13632
|
+
this._store.state[fieldName] = field.value;
|
13519
13633
|
});
|
13520
13634
|
}
|
13521
|
-
/**
|
13635
|
+
/**
|
13636
|
+
* Tries to ascertain whether the current model
|
13637
|
+
* value is the same as the `nano-file-upload` value
|
13638
|
+
* @param fieldName - the key to access from the data store
|
13639
|
+
* @param field - the nano-file-upload field to assess against
|
13640
|
+
* @returns true for equal, false for not equal
|
13641
|
+
*/
|
13642
|
+
fileStateEqual(fieldName, field) {
|
13643
|
+
return (JSON.stringify(this._store.state[fieldName]) ===
|
13644
|
+
JSON.stringify(field.files) ||
|
13645
|
+
this._store.state[fieldName] == field.files);
|
13646
|
+
}
|
13647
|
+
/**
|
13648
|
+
* Checks for user defined validations
|
13649
|
+
* @param key - current key of the data model to validate
|
13650
|
+
* @param newVal - the newly set, incoming value to validate
|
13651
|
+
*/
|
13522
13652
|
async validate(key, newVal) {
|
13523
13653
|
if (!this.validation)
|
13524
13654
|
return;
|
@@ -13531,21 +13661,33 @@ let FieldValidator = class extends H {
|
|
13531
13661
|
// collection loop into a promise
|
13532
13662
|
await Promise.all(Object.entries(res).map(async ([key, o]) => {
|
13533
13663
|
// switch on/off validation messages
|
13534
|
-
const field = this.
|
13664
|
+
const field = this.allFields.find((f) => this.getName(f) === key);
|
13535
13665
|
let validityTarget = field;
|
13536
13666
|
if (field.tagName === 'NANO-CHECKBOX') {
|
13667
|
+
// if we have a checkbox-group, set the validation message there
|
13537
13668
|
const cbg = field.closest('nano-checkbox-group');
|
13538
13669
|
validityTarget = cbg || field;
|
13539
13670
|
}
|
13540
|
-
|
13541
|
-
|
13671
|
+
if ((validityTarget.validityMessage ||
|
13672
|
+
validityTarget.validationMessage) === o.msg &&
|
13673
|
+
o.valid) {
|
13674
|
+
// status is now valid - clear the error
|
13542
13675
|
await this.setFieldError(validityTarget, '');
|
13543
|
-
|
13676
|
+
}
|
13544
13677
|
else if (!o.valid) {
|
13678
|
+
// status is invalid. Set the error
|
13545
13679
|
await this.setFieldError(validityTarget, o.msg);
|
13546
13680
|
}
|
13547
13681
|
}));
|
13548
13682
|
}
|
13683
|
+
/** Loops through all store entries and checks custom validation */
|
13684
|
+
async validateAllFields() {
|
13685
|
+
// This forces our loop to `await` and finish sequentially ... silly async stencil methods
|
13686
|
+
await Object.entries(this._store.state).reduce(async (memo, [key, value]) => {
|
13687
|
+
await memo;
|
13688
|
+
await this.validate(key, value);
|
13689
|
+
}, undefined);
|
13690
|
+
}
|
13549
13691
|
/**
|
13550
13692
|
* Utility to smooth out setting error messages
|
13551
13693
|
* (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)
|
@@ -13553,18 +13695,13 @@ let FieldValidator = class extends H {
|
|
13553
13695
|
* @param msg
|
13554
13696
|
*/
|
13555
13697
|
async setFieldError(field, msg) {
|
13556
|
-
if (field['showError'])
|
13698
|
+
if (field['showError']) {
|
13557
13699
|
await field.showError(msg);
|
13558
|
-
|
13700
|
+
}
|
13701
|
+
else if (field['setError'])
|
13559
13702
|
await field.setError(msg);
|
13560
|
-
|
13561
|
-
|
13562
|
-
async validateAllFields() {
|
13563
|
-
// This forces our loop to `await` and finish sequentially ... silly async stencil methods
|
13564
|
-
await Object.entries(this._store.state).reduce(async (memo, [key, value]) => {
|
13565
|
-
await memo;
|
13566
|
-
await this.validate(key, value);
|
13567
|
-
}, undefined);
|
13703
|
+
else
|
13704
|
+
field.setCustomValidity(msg);
|
13568
13705
|
}
|
13569
13706
|
scrollToFirstInvalid() {
|
13570
13707
|
if (!this.scrollToInvalid)
|
@@ -13593,17 +13730,21 @@ let FieldValidator = class extends H {
|
|
13593
13730
|
requestAnimationFrame(() => {
|
13594
13731
|
this.setupFields();
|
13595
13732
|
this.attachSlotObserver();
|
13596
|
-
this._store.on('set', (key, value) => this.handleStoreChange(key, value));
|
13597
13733
|
this.host.addEventListener('nanoChange', this.handleFieldChange);
|
13734
|
+
this.host.addEventListener('input', this.handlePlainFieldChange);
|
13735
|
+
this.host.addEventListener('change', this.handlePlainFieldChange);
|
13598
13736
|
this.host.addEventListener('submit', this.handleSubmit);
|
13737
|
+
this._store.on('set', this.handleStoreChange);
|
13599
13738
|
});
|
13600
13739
|
}
|
13601
13740
|
disconnectedCallback() {
|
13602
13741
|
if (this.mo)
|
13603
13742
|
this.mo.disconnect();
|
13604
|
-
this._store.reset();
|
13605
13743
|
this.host.removeEventListener('nanoChange', this.handleFieldChange);
|
13744
|
+
this.host.removeEventListener('input', this.handlePlainFieldChange);
|
13745
|
+
this.host.removeEventListener('change', this.handlePlainFieldChange);
|
13606
13746
|
this.host.removeEventListener('submit', this.handleSubmit);
|
13747
|
+
this._store.reset();
|
13607
13748
|
if (this.activeForm)
|
13608
13749
|
this.activeForm.removeEventListener('invalid', this.handleFormInvalid, true);
|
13609
13750
|
}
|
@@ -13613,11 +13754,12 @@ let FieldValidator = class extends H {
|
|
13613
13754
|
get host() { return this; }
|
13614
13755
|
static get watchers() { return {
|
13615
13756
|
"userForm": ["userFormChange"],
|
13616
|
-
"validateOn": ["validateOnChange"]
|
13757
|
+
"validateOn": ["validateOnChange"],
|
13758
|
+
"extraFieldSelector": ["attachSlotObserver"]
|
13617
13759
|
}; }
|
13618
13760
|
};
|
13619
13761
|
|
13620
|
-
const fileUploadCss = ".sc-nano-file-upload-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, \"currentColor\");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, \"currentColor\");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0, 116, 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239, 65, 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1em);--btn-padding-end:var(--nano-btn-padding-end, 1em)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) / 2);margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__more.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:0.9em;position:relative;-webkit-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:\"\";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgba(var(--drop-border-tint), 0.5);border-style:dashed;top:0;bottom:0;left:0;right:0;-webkit-transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgba(var(--drop-border--invalid), 1)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{top:5px;bottom:5px;left:5px;right:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgba(var(--drop-border-tint), 1);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;top:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:hideListItem 0.3s ease-in-out forwards;animation:hideListItem 0.3s ease-in-out forwards}@-webkit-keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{-webkit-animation:showListItem 0.3s ease-in-out forwards;animation:showListItem 0.3s ease-in-out forwards}@-webkit-keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px 5px;margin-right:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgba(var(--drop-border--invalid), 1)}.file-upload__button.sc-nano-file-upload{margin:0;padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;-webkit-transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;padding-left:var(--nano-btn-padding-start, 1rem);padding-right:var(--nano-btn-padding-end, 1rem);padding-top:var(--nano-btn-padding-top, 0.5rem);padding-bottom:var(--nano-btn-padding-bottom, 0.5rem);-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--nano-btn-padding-start, 1rem);padding-inline-start:var(--nano-btn-padding-start, 1rem);-webkit-padding-end:var(--nano-btn-padding-end, 1rem);padding-inline-end:var(--nano-btn-padding-end, 1rem)}}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.5rem;margin-right:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-top:-0.188rem;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0;margin-right:0.5rem}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}}.file-upload__button.sc-nano-file-upload:hover:not(.file-upload__button--disabled){-webkit-box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){-webkit-box-shadow:none;box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{-webkit-box-shadow:none;box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.4rem;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.4rem;margin-inline-start:0.4rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}";
|
13762
|
+
const fileUploadCss = ".sc-nano-file-upload-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, \"currentColor\");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, \"currentColor\");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0, 116, 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239, 65, 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1em);--btn-padding-end:var(--nano-btn-padding-end, 1em)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) / 2);margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__more.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:0.9em;position:relative;-webkit-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:\"\";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgba(var(--drop-border-tint), 0.5);border-style:dashed;top:0;bottom:0;left:0;right:0;-webkit-transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgba(var(--drop-border--invalid), 1)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{top:5px;bottom:5px;left:5px;right:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgba(var(--drop-border-tint), 1);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;top:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:hideListItem 0.3s ease-in-out forwards;animation:hideListItem 0.3s ease-in-out forwards}@-webkit-keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{-webkit-animation:showListItem 0.3s ease-in-out forwards;animation:showListItem 0.3s ease-in-out forwards}@-webkit-keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px 5px;margin-right:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgba(var(--drop-border--invalid), 1)}.file-upload__button.sc-nano-file-upload{padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;-webkit-transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;padding-left:var(--nano-btn-padding-start, 1rem);padding-right:var(--nano-btn-padding-end, 1rem);padding-top:var(--nano-btn-padding-top, 0.5rem);padding-bottom:var(--nano-btn-padding-bottom, 0.5rem);-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--nano-btn-padding-start, 1rem);padding-inline-start:var(--nano-btn-padding-start, 1rem);-webkit-padding-end:var(--nano-btn-padding-end, 1rem);padding-inline-end:var(--nano-btn-padding-end, 1rem)}}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.5rem;margin-right:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-top:-0.188rem;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0;margin-right:0.5rem}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}}.file-upload__button.sc-nano-file-upload:hover:not(.file-upload__button--disabled){-webkit-box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){-webkit-box-shadow:none;box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{-webkit-box-shadow:none;box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.4rem;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.4rem;margin-inline-start:0.4rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}";
|
13621
13763
|
|
13622
13764
|
let fileInputIds = 0;
|
13623
13765
|
let getDataTransfer = () => new DataTransfer();
|
@@ -16783,6 +16925,7 @@ let Input = class extends H {
|
|
16783
16925
|
this.nativeInput.dispatchEvent(event);
|
16784
16926
|
};
|
16785
16927
|
this.validate = debounce$2(this.validate, 50);
|
16928
|
+
this.handleBlur = this.handleBlur.bind(this);
|
16786
16929
|
}
|
16787
16930
|
get nativeInputWrap() {
|
16788
16931
|
return this._nativeInputWrap;
|
@@ -16868,6 +17011,15 @@ let Input = class extends H {
|
|
16868
17011
|
this.nativeInput.click();
|
16869
17012
|
}
|
16870
17013
|
}
|
17014
|
+
/**
|
17015
|
+
* Sets focus and select the text on the specified `nano-input`. Use this method instead of the global
|
17016
|
+
* `input.select()`.
|
17017
|
+
*/
|
17018
|
+
async select() {
|
17019
|
+
if (this.nativeInput) {
|
17020
|
+
this.nativeInput.select();
|
17021
|
+
}
|
17022
|
+
}
|
16871
17023
|
/**
|
16872
17024
|
* Returns the native `<input>` element used under the hood.
|
16873
17025
|
*/
|
@@ -16897,11 +17049,14 @@ let Input = class extends H {
|
|
16897
17049
|
const kev = e;
|
16898
17050
|
let target;
|
16899
17051
|
raf(() => {
|
16900
|
-
if (kev.key) {
|
17052
|
+
if (e instanceof KeyboardEvent && kev.key) {
|
16901
17053
|
if (kev.key !== 'Tab')
|
16902
17054
|
return;
|
16903
17055
|
target = document.activeElement;
|
16904
17056
|
}
|
17057
|
+
else if (e instanceof FocusEvent) {
|
17058
|
+
target = document.activeElement;
|
17059
|
+
}
|
16905
17060
|
else
|
16906
17061
|
target = e.target;
|
16907
17062
|
if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {
|
@@ -17004,10 +17159,10 @@ let Input = class extends H {
|
|
17004
17159
|
disabled,
|
17005
17160
|
clearControl: this.clearInput,
|
17006
17161
|
}))(this);
|
17007
|
-
return (h$1(Host$1, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, h$1(FormControlWrap, Object.assign({}, wrapOptions), h$1(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }), this.type !== 'textarea' && (h$1("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (h$1("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
|
17162
|
+
return (h$1(Host$1, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, h$1(FormControlWrap, Object.assign({}, wrapOptions), h$1(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }), this.type !== 'textarea' && (h$1("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onBlur: this.handleBlur, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (h$1("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
|
17008
17163
|
'input__native-ctrl': true,
|
17009
17164
|
input__resizable: this.resize === 'true',
|
17010
|
-
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate }))), h$1("slot", null))));
|
17165
|
+
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate, onBlur: this.handleBlur }))), h$1("slot", null))));
|
17011
17166
|
}
|
17012
17167
|
get el() { return this; }
|
17013
17168
|
static get watchers() { return {
|
@@ -18892,6 +19047,7 @@ let Select = class extends H {
|
|
18892
19047
|
*/
|
18893
19048
|
// eslint-disable-next-line @stencil/no-unused-watch
|
18894
19049
|
valueChanged() {
|
19050
|
+
this.customValidate();
|
18895
19051
|
if (this.onInit) {
|
18896
19052
|
if (this.multiple)
|
18897
19053
|
this.currInsertIndex = this.value.length - 1;
|
@@ -25058,7 +25214,7 @@ const NanoDetails = /*@__PURE__*/proxyCustomElement(Details, [1,"nano-details",{
|
|
25058
25214
|
const NanoDialog = /*@__PURE__*/proxyCustomElement(Dialog, [1,"nano-dialog",{"showRibbon":[4,"show-ribbon"],"open":[1540],"label":[1],"noHeader":[4,"no-header"],"noFooter":[4,"no-footer"],"noUserDismiss":[4,"no-user-dismiss"],"storeId":[1,"store-id"],"storeMethod":[1,"store-method"],"hoist":[4],"isVisible":[32],"noDismiss":[32],"hasFooter":[32]}]);
|
25059
25215
|
const NanoDrawer = /*@__PURE__*/proxyCustomElement(Drawer, [1,"nano-drawer",{"open":[1540],"label":[1],"placement":[1],"contained":[4],"noHeader":[4,"no-header"],"type":[1],"contentSelector":[1,"content-selector"],"hasFooter":[32],"isVisible":[32]}]);
|
25060
25216
|
const NanoDropdown = /*@__PURE__*/proxyCustomElement(Dropdown, [1,"nano-dropdown",{"autoOpen":[4,"auto-open"],"open":[1540],"closeOnSelect":[4,"close-on-select"],"containingElement":[1040],"tetherTo":[16],"placement":[1],"distance":[2],"skidding":[2],"hoist":[4],"dialogTitle":[1,"dialog-title"]},[[0,"nanoOpen","secondaryOpen"],[0,"nanoClose","secondaryClose"],[0,"nanoSelect","handlePanelSelect"]]]);
|
25061
|
-
const NanoFieldValidator = /*@__PURE__*/proxyCustomElement(FieldValidator, [4,"nano-field-validator",{"validateOn":[1025,"validate-on"],"scrollToInvalid":[4,"scroll-to-invalid"],"dirty":[2564],"valid":[2564],"store":[2064],"payload":[2064],"showValidation":[2052,"show-validation"],"validationState":[2064],"validation":[16],"
|
25217
|
+
const NanoFieldValidator = /*@__PURE__*/proxyCustomElement(FieldValidator, [4,"nano-field-validator",{"validateOn":[1025,"validate-on"],"scrollToInvalid":[4,"scroll-to-invalid"],"dirty":[2564],"valid":[2564],"store":[2064],"payload":[2064],"showValidation":[2052,"show-validation"],"validationState":[2064],"extraFieldSelector":[1,"extra-field-selector"],"validation":[16],"submitted":[32],"userForm":[32],"_dirty":[32],"_valid":[32],"_store":[32]}]);
|
25062
25218
|
const NanoFileUpload = /*@__PURE__*/proxyCustomElement(FileUpload, [6,"nano-file-upload",{"name":[1],"accept":[1],"capture":[1],"maxFileSize":[2,"max-file-size"],"maxFiles":[2,"max-files"],"label":[1],"placeholder":[1],"hideLabel":[4,"hide-label"],"required":[4],"disabled":[516],"clearInput":[4,"clear-input"],"showInlineError":[516,"show-inline-error"],"validateOn":[1025,"validate-on"],"form":[1],"invalid":[2564],"validityMessage":[2049,"validity-message"],"files":[6160],"value":[6145],"hasHelperSlot":[32],"hasLabelSlot":[32],"errorMessage":[32],"isDragging":[32],"fileList":[32],"hasFocus":[32],"_invalid":[32]},[[8,"click","globalClickHandler"],[8,"keydown","globalKeydownHandler"],[16,"reset","onReset"]]]);
|
25063
25219
|
const NanoGlobalNav = /*@__PURE__*/proxyCustomElement(GlobalNav, [1,"nano-global-nav",{"env":[1],"ssoDataUrl":[1,"sso-data-url"],"ssoRedirect":[1,"sso-redirect"],"getMyAccountData":[4,"get-my-account-data"],"activeMyAccountSections":[16],"showSearch":[4,"show-search"],"showLogo":[4,"show-logo"],"logoUrl":[1,"logo-url"],"searchIndeces":[16],"myAccountUser":[1040],"searchAppId":[1025,"search-app-id"],"searchApiKey":[1025,"search-api-key"],"searchValue":[1025,"search-value"],"searchIndex":[1025,"search-index"],"cartCount":[1026,"cart-count"],"msgCount":[1026,"msg-count"],"cartUrl":[1025,"cart-url"],"msgUrl":[1025,"msg-url"],"hasLoggedinSlot":[32],"hasSiteSlot":[32],"hasPromotionSlot":[32],"aboutSlotLen":[32],"iconSlotLen":[32],"mainSlotLen":[32],"overflowSlotLen":[32],"searchSlotLen":[32],"internalSearchIndeces":[32],"thresholdReady":[32],"remoteDataReady":[32],"ready":[32],"isResizing":[32],"intersectRatio":[32],"threshold":[32],"modalOpen":[32],"modalIsOpen":[32],"searchBarShown":[32],"scrollingUp":[32],"searchLoading":[32],"showAutocomplete":[32],"secondaryMenuOpen":[32],"userMenuOpen":[32],"menuFullScreen":[32],"searchValInternal":[32]},[[0,"nanoOpen","secondaryOpen"],[0,"nanoClose","secondaryClose"]]]);
|
25064
25220
|
const NanoGlobalSearchResults = /*@__PURE__*/proxyCustomElement(GlobalSearchResults, [1,"nano-global-search-results",{"algoliaEle":[32],"currentWidth":[32],"apiKey":[32],"appId":[32],"index":[32]},[[16,"nanoSearchReset","handleGlobalNavReset"],[16,"nanoSearchResult","handleGlobalNavSearch"],[0,"nanoChange","handleReorder"],[0,"nanoResultsShown","attachListeners"],[16,"nanoNewResults","attachResultListeners"]]]);
|
@@ -27606,6 +27762,6 @@ const index = /*#__PURE__*/Object.freeze({
|
|
27606
27762
|
GESTURE_CONTROLLER: GESTURE_CONTROLLER
|
27607
27763
|
});
|
27608
27764
|
|
27609
|
-
export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle as nanoThrottle, setAssetPath, setPlatformOptions };
|
27765
|
+
export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, getTabbableElements as nanoGetTabElements, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle as nanoThrottle, setAssetPath, setPlatformOptions };
|
27610
27766
|
|
27611
27767
|
//# sourceMappingURL=index.js.map
|