@nanoporetech-digital/components 2.12.0 → 2.13.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/CHANGELOG.md +18 -0
- package/dist/cjs/index.cjs.js +2 -0
- 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 +250 -118
- 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.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 +329 -124
- 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 +1 -0
- 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 +255 -120
- 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 +270 -124
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/index.js +1 -0
- 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 +250 -118
- 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-0d699368.system.js +5 -0
- package/dist/nano-components/{p-3258c568.system.js.map → p-0d699368.system.js.map} +1 -1
- package/dist/nano-components/p-18863670.system.entry.js +5 -0
- package/dist/nano-components/p-18863670.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-7f051c20.entry.js +5 -0
- package/dist/nano-components/p-7f051c20.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-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/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/field-validator/field-validator-interface.d.ts +5 -1
- package/dist/types/components/field-validator/field-validator.d.ts +61 -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
@@ -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) => field.name === 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.
|
13416
|
+
this.allFields.forEach(async (field) => {
|
13364
13417
|
const found = validationState.find((v) => v.name === field.name);
|
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
13458
|
name: field.name,
|
13378
|
-
valid: !field.invalid,
|
13379
13459
|
value: this._store.state[field.name],
|
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) => f.name === 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)
|
@@ -13409,62 +13508,66 @@ let FieldValidator = class extends H {
|
|
13409
13508
|
}
|
13410
13509
|
/** Checks for new `nano-...` fields and adds them to our watch array and value store */
|
13411
13510
|
setupFields() {
|
13412
|
-
let
|
13413
|
-
|
13414
|
-
|
13415
|
-
|
13416
|
-
nano-date-input,
|
13417
|
-
nano-checkbox
|
13418
|
-
`));
|
13419
|
-
fields = fields.filter((f) => !!f.name && !!f.name.length);
|
13511
|
+
let nanoFields = Array.from(this.host.querySelectorAll(this.nanoFieldSelector));
|
13512
|
+
let plainFields = Array.from(this.host.querySelectorAll(this.extraFieldSelector)).filter((e) => !e.closest(this.nanoFieldSelector));
|
13513
|
+
nanoFields = nanoFields.filter((f) => !!f.name && !!f.name.length);
|
13514
|
+
plainFields = plainFields.filter((f) => !!f.name && !!f.name.length);
|
13420
13515
|
// do we have any currently un-watched fields?
|
13421
|
-
if (!
|
13516
|
+
if (![...nanoFields, ...plainFields].filter((f) => !this.allFields.includes(f)).length)
|
13422
13517
|
return;
|
13423
13518
|
// setup the initial store state / refresh on new fields
|
13424
|
-
this.
|
13425
|
-
this.
|
13519
|
+
this.nanoFields = nanoFields;
|
13520
|
+
this.plainFields = plainFields;
|
13521
|
+
this.allFields = [...nanoFields, ...plainFields];
|
13522
|
+
this.storeToFields(this.allFields);
|
13426
13523
|
this.validateOnChange();
|
13427
|
-
this.fieldsToStore(this.
|
13524
|
+
this.fieldsToStore(this.allFields);
|
13428
13525
|
this.nanoPayloadChange.emit(this._store.state);
|
13429
13526
|
}
|
13430
13527
|
storeToFields(fields) {
|
13431
13528
|
fields.forEach((field) => {
|
13529
|
+
var _a;
|
13432
13530
|
const fieldName = field.name;
|
13433
13531
|
if (!fieldName.length ||
|
13434
13532
|
typeof this._store.state[fieldName] === 'undefined')
|
13435
13533
|
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
|
-
|
13464
|
-
|
13465
|
-
|
13466
|
-
|
13534
|
+
if (field.tagName === 'NANO-CHECKBOX' ||
|
13535
|
+
['radio', 'checkbox'].includes(field.type)) {
|
13536
|
+
let cb = field;
|
13537
|
+
if (cb.type === 'radio' ||
|
13538
|
+
cb.type === 'segment' ||
|
13539
|
+
cb.type === 'segment-pill') {
|
13540
|
+
// single radio type control
|
13541
|
+
if (this._store.state[fieldName] === cb.value)
|
13542
|
+
cb.checked = true;
|
13543
|
+
else
|
13544
|
+
cb.checked = false;
|
13545
|
+
}
|
13546
|
+
else if (Array.isArray(this._store.state[fieldName])) {
|
13547
|
+
// multiple checkbox like controls
|
13548
|
+
if (this._store.state[fieldName].includes(cb.value))
|
13549
|
+
cb.checked = true;
|
13550
|
+
else
|
13551
|
+
cb.checked = false;
|
13552
|
+
}
|
13553
|
+
else {
|
13554
|
+
// single checkbox like control
|
13555
|
+
if (this._store.state[fieldName] === cb.value)
|
13556
|
+
cb.checked = true;
|
13557
|
+
else
|
13558
|
+
cb.checked = false;
|
13559
|
+
}
|
13560
|
+
return;
|
13561
|
+
}
|
13562
|
+
if (field.tagName === 'NANO-FILE-UPLOAD') {
|
13563
|
+
const ff = field;
|
13564
|
+
// this can only work if the field is empty rn... a one-time deal
|
13565
|
+
if (!((_a = ff.files) === null || _a === void 0 ? void 0 : _a.length))
|
13566
|
+
ff.files = this._store.state[fieldName];
|
13567
|
+
return;
|
13467
13568
|
}
|
13569
|
+
// default
|
13570
|
+
field.value = this._store.state[fieldName];
|
13468
13571
|
});
|
13469
13572
|
}
|
13470
13573
|
/** Loops through all `nano-...` fields and extracts their values into our store */
|
@@ -13473,52 +13576,70 @@ let FieldValidator = class extends H {
|
|
13473
13576
|
const fieldName = field.name;
|
13474
13577
|
if (!fieldName.length)
|
13475
13578
|
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);
|
13579
|
+
if (field.tagName === 'NANO-CHECKBOX' ||
|
13580
|
+
['radio', 'checkbox'].includes(field.type)) {
|
13581
|
+
let cb = field;
|
13582
|
+
if (cb.type === 'radio' ||
|
13583
|
+
cb.type === 'segment' ||
|
13584
|
+
cb.type === 'segment-pill') {
|
13585
|
+
// radio type control - only one can be checked
|
13586
|
+
if (cb.checked)
|
13587
|
+
this._store.state[fieldName] = cb.value;
|
13588
|
+
}
|
13589
|
+
else if (this.allFields.filter((f) => f.name === fieldName &&
|
13590
|
+
(f.tagName === 'NANO-CHECKBOX' ||
|
13591
|
+
f.type === 'checkbox')).length > 1) {
|
13592
|
+
// multiple checkbox type control
|
13593
|
+
const currentArr = Array.isArray(this._store.state[fieldName])
|
13594
|
+
? this._store.state[fieldName]
|
13595
|
+
: [];
|
13596
|
+
if (cb.checked) {
|
13597
|
+
// checked
|
13598
|
+
if (!this._store.state[fieldName].includes(cb.value)) {
|
13599
|
+
this._store.state[fieldName] = [...currentArr, cb.value];
|
13502
13600
|
}
|
13503
13601
|
}
|
13504
13602
|
else {
|
13505
|
-
//
|
13506
|
-
|
13507
|
-
this._store.state[fieldName] = cb.value;
|
13508
|
-
else
|
13509
|
-
this._store.state[fieldName] = '';
|
13603
|
+
// unchecked
|
13604
|
+
this._store.state[fieldName] = currentArr.filter((v) => v !== cb.value);
|
13510
13605
|
}
|
13511
|
-
|
13512
|
-
|
13513
|
-
|
13514
|
-
|
13515
|
-
|
13516
|
-
|
13517
|
-
|
13606
|
+
}
|
13607
|
+
else {
|
13608
|
+
// single checkbox - on or off
|
13609
|
+
if (cb.checked)
|
13610
|
+
this._store.state[fieldName] = cb.value;
|
13611
|
+
else
|
13612
|
+
this._store.state[fieldName] = '';
|
13613
|
+
}
|
13614
|
+
return;
|
13518
13615
|
}
|
13616
|
+
if (field.tagName === 'NANO-FILE-UPLOAD') {
|
13617
|
+
const ff = field;
|
13618
|
+
if (!this.fileStateEqual(fieldName, ff))
|
13619
|
+
this._store.state[fieldName] = ff.files;
|
13620
|
+
return;
|
13621
|
+
}
|
13622
|
+
// default
|
13623
|
+
this._store.state[fieldName] = field.value;
|
13519
13624
|
});
|
13520
13625
|
}
|
13521
|
-
/**
|
13626
|
+
/**
|
13627
|
+
* Tries to ascertain whether the current model
|
13628
|
+
* value is the same as the `nano-file-upload` value
|
13629
|
+
* @param fieldName - the key to access from the data store
|
13630
|
+
* @param field - the nano-file-upload field to assess against
|
13631
|
+
* @returns true for equal, false for not equal
|
13632
|
+
*/
|
13633
|
+
fileStateEqual(fieldName, field) {
|
13634
|
+
return (JSON.stringify(this._store.state[fieldName]) ===
|
13635
|
+
JSON.stringify(field.files) ||
|
13636
|
+
this._store.state[fieldName] == field.files);
|
13637
|
+
}
|
13638
|
+
/**
|
13639
|
+
* Checks for user defined validations
|
13640
|
+
* @param key - current key of the data model to validate
|
13641
|
+
* @param newVal - the newly set, incoming value to validate
|
13642
|
+
*/
|
13522
13643
|
async validate(key, newVal) {
|
13523
13644
|
if (!this.validation)
|
13524
13645
|
return;
|
@@ -13531,21 +13652,33 @@ let FieldValidator = class extends H {
|
|
13531
13652
|
// collection loop into a promise
|
13532
13653
|
await Promise.all(Object.entries(res).map(async ([key, o]) => {
|
13533
13654
|
// switch on/off validation messages
|
13534
|
-
const field = this.
|
13655
|
+
const field = this.allFields.find((f) => f.name === key);
|
13535
13656
|
let validityTarget = field;
|
13536
13657
|
if (field.tagName === 'NANO-CHECKBOX') {
|
13658
|
+
// if we have a checkbox-group, set the validation message there
|
13537
13659
|
const cbg = field.closest('nano-checkbox-group');
|
13538
13660
|
validityTarget = cbg || field;
|
13539
13661
|
}
|
13540
|
-
|
13541
|
-
|
13662
|
+
if ((validityTarget.validityMessage ||
|
13663
|
+
validityTarget.validationMessage) === o.msg &&
|
13664
|
+
o.valid) {
|
13665
|
+
// status is now valid - clear the error
|
13542
13666
|
await this.setFieldError(validityTarget, '');
|
13543
|
-
|
13667
|
+
}
|
13544
13668
|
else if (!o.valid) {
|
13669
|
+
// status is invalid. Set the error
|
13545
13670
|
await this.setFieldError(validityTarget, o.msg);
|
13546
13671
|
}
|
13547
13672
|
}));
|
13548
13673
|
}
|
13674
|
+
/** Loops through all store entries and checks custom validation */
|
13675
|
+
async validateAllFields() {
|
13676
|
+
// This forces our loop to `await` and finish sequentially ... silly async stencil methods
|
13677
|
+
await Object.entries(this._store.state).reduce(async (memo, [key, value]) => {
|
13678
|
+
await memo;
|
13679
|
+
await this.validate(key, value);
|
13680
|
+
}, undefined);
|
13681
|
+
}
|
13549
13682
|
/**
|
13550
13683
|
* Utility to smooth out setting error messages
|
13551
13684
|
* (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)
|
@@ -13555,16 +13688,10 @@ let FieldValidator = class extends H {
|
|
13555
13688
|
async setFieldError(field, msg) {
|
13556
13689
|
if (field['showError'])
|
13557
13690
|
await field.showError(msg);
|
13558
|
-
else
|
13691
|
+
else if (field['setError'])
|
13559
13692
|
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);
|
13693
|
+
else
|
13694
|
+
field.setCustomValidity(msg);
|
13568
13695
|
}
|
13569
13696
|
scrollToFirstInvalid() {
|
13570
13697
|
if (!this.scrollToInvalid)
|
@@ -13593,17 +13720,21 @@ let FieldValidator = class extends H {
|
|
13593
13720
|
requestAnimationFrame(() => {
|
13594
13721
|
this.setupFields();
|
13595
13722
|
this.attachSlotObserver();
|
13596
|
-
this._store.on('set', (key, value) => this.handleStoreChange(key, value));
|
13597
13723
|
this.host.addEventListener('nanoChange', this.handleFieldChange);
|
13724
|
+
this.host.addEventListener('input', this.handlePlainFieldChange);
|
13725
|
+
this.host.addEventListener('change', this.handlePlainFieldChange);
|
13598
13726
|
this.host.addEventListener('submit', this.handleSubmit);
|
13727
|
+
this._store.on('set', this.handleStoreChange);
|
13599
13728
|
});
|
13600
13729
|
}
|
13601
13730
|
disconnectedCallback() {
|
13602
13731
|
if (this.mo)
|
13603
13732
|
this.mo.disconnect();
|
13604
|
-
this._store.reset();
|
13605
13733
|
this.host.removeEventListener('nanoChange', this.handleFieldChange);
|
13734
|
+
this.host.removeEventListener('input', this.handlePlainFieldChange);
|
13735
|
+
this.host.removeEventListener('change', this.handlePlainFieldChange);
|
13606
13736
|
this.host.removeEventListener('submit', this.handleSubmit);
|
13737
|
+
this._store.reset();
|
13607
13738
|
if (this.activeForm)
|
13608
13739
|
this.activeForm.removeEventListener('invalid', this.handleFormInvalid, true);
|
13609
13740
|
}
|
@@ -13613,11 +13744,12 @@ let FieldValidator = class extends H {
|
|
13613
13744
|
get host() { return this; }
|
13614
13745
|
static get watchers() { return {
|
13615
13746
|
"userForm": ["userFormChange"],
|
13616
|
-
"validateOn": ["validateOnChange"]
|
13747
|
+
"validateOn": ["validateOnChange"],
|
13748
|
+
"extraFieldSelector": ["attachSlotObserver"]
|
13617
13749
|
}; }
|
13618
13750
|
};
|
13619
13751
|
|
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}";
|
13752
|
+
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
13753
|
|
13622
13754
|
let fileInputIds = 0;
|
13623
13755
|
let getDataTransfer = () => new DataTransfer();
|
@@ -16783,6 +16915,7 @@ let Input = class extends H {
|
|
16783
16915
|
this.nativeInput.dispatchEvent(event);
|
16784
16916
|
};
|
16785
16917
|
this.validate = debounce$2(this.validate, 50);
|
16918
|
+
this.handleBlur = this.handleBlur.bind(this);
|
16786
16919
|
}
|
16787
16920
|
get nativeInputWrap() {
|
16788
16921
|
return this._nativeInputWrap;
|
@@ -16868,6 +17001,15 @@ let Input = class extends H {
|
|
16868
17001
|
this.nativeInput.click();
|
16869
17002
|
}
|
16870
17003
|
}
|
17004
|
+
/**
|
17005
|
+
* Sets focus and select the text on the specified `nano-input`. Use this method instead of the global
|
17006
|
+
* `input.select()`.
|
17007
|
+
*/
|
17008
|
+
async select() {
|
17009
|
+
if (this.nativeInput) {
|
17010
|
+
this.nativeInput.select();
|
17011
|
+
}
|
17012
|
+
}
|
16871
17013
|
/**
|
16872
17014
|
* Returns the native `<input>` element used under the hood.
|
16873
17015
|
*/
|
@@ -16897,11 +17039,14 @@ let Input = class extends H {
|
|
16897
17039
|
const kev = e;
|
16898
17040
|
let target;
|
16899
17041
|
raf(() => {
|
16900
|
-
if (kev.key) {
|
17042
|
+
if (e instanceof KeyboardEvent && kev.key) {
|
16901
17043
|
if (kev.key !== 'Tab')
|
16902
17044
|
return;
|
16903
17045
|
target = document.activeElement;
|
16904
17046
|
}
|
17047
|
+
else if (e instanceof FocusEvent) {
|
17048
|
+
target = document.activeElement;
|
17049
|
+
}
|
16905
17050
|
else
|
16906
17051
|
target = e.target;
|
16907
17052
|
if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {
|
@@ -17004,10 +17149,10 @@ let Input = class extends H {
|
|
17004
17149
|
disabled,
|
17005
17150
|
clearControl: this.clearInput,
|
17006
17151
|
}))(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: {
|
17152
|
+
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
17153
|
'input__native-ctrl': true,
|
17009
17154
|
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))));
|
17155
|
+
}, 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
17156
|
}
|
17012
17157
|
get el() { return this; }
|
17013
17158
|
static get watchers() { return {
|
@@ -18892,6 +19037,7 @@ let Select = class extends H {
|
|
18892
19037
|
*/
|
18893
19038
|
// eslint-disable-next-line @stencil/no-unused-watch
|
18894
19039
|
valueChanged() {
|
19040
|
+
this.customValidate();
|
18895
19041
|
if (this.onInit) {
|
18896
19042
|
if (this.multiple)
|
18897
19043
|
this.currInsertIndex = this.value.length - 1;
|
@@ -25058,7 +25204,7 @@ const NanoDetails = /*@__PURE__*/proxyCustomElement(Details, [1,"nano-details",{
|
|
25058
25204
|
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
25205
|
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
25206
|
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],"
|
25207
|
+
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
25208
|
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
25209
|
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
25210
|
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 +27752,6 @@ const index = /*#__PURE__*/Object.freeze({
|
|
27606
27752
|
GESTURE_CONTROLLER: GESTURE_CONTROLLER
|
27607
27753
|
});
|
27608
27754
|
|
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 };
|
27755
|
+
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
27756
|
|
27611
27757
|
//# sourceMappingURL=index.js.map
|