@everymatrix/general-registration 1.10.5 → 1.10.10
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/dist/cjs/checkbox-input_11.cjs.entry.js +1124 -526
- package/dist/cjs/general-registration.cjs.js +2 -2
- package/dist/cjs/{index-ad0df8ea.js → index-68f93e1e.js} +9 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/components/general-registration/general-registration.css +40 -14
- package/dist/collection/components/general-registration/general-registration.js +142 -275
- package/dist/components/checkbox-input2.js +2 -2
- package/dist/components/date-input2.js +15 -1441
- package/dist/components/email-input2.js +18 -6
- package/dist/components/general-input2.js +6 -6
- package/dist/components/general-registration.js +100 -248
- package/dist/components/input-field-shared-styles.js +13776 -0
- package/dist/components/number-input2.js +1 -1
- package/dist/components/password-input2.js +738 -6
- package/dist/components/pattern-mixin.js +84 -0
- package/dist/components/radio-input2.js +1 -1
- package/dist/components/select-input2.js +4 -4
- package/dist/components/tel-input2.js +12 -8
- package/dist/components/text-input2.js +17 -13
- package/dist/components/vaadin-button.js +1432 -0
- package/dist/components/vaadin-combo-box.js +3 -82
- package/dist/components/virtual-keyboard-controller.js +2136 -15909
- package/dist/esm/checkbox-input_11.entry.js +1124 -526
- package/dist/esm/general-registration.js +2 -2
- package/dist/esm/{index-bb9c8eb3.js → index-16916adb.js} +9 -1
- package/dist/esm/loader.js +2 -2
- package/dist/general-registration/general-registration.esm.js +1 -1
- package/dist/general-registration/p-8f644809.js +1 -0
- package/dist/general-registration/{p-8a77bab6.entry.js → p-fb5bf415.entry.js} +210 -100
- package/dist/types/Users/adrian.pripon/Documents/Work/stencil/widgets-stencil/packages/general-registration/.stencil/packages/general-input/src/utils/types.d.ts +4 -2
- package/dist/types/components/general-registration/general-registration.d.ts +20 -284
- package/dist/types/components.d.ts +11 -17
- package/package.json +3 -2
- package/dist/general-registration/p-4800d8b4.js +0 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { I as InputConstraintsMixin, D as Debouncer, e as timeOut } from './input-field-shared-styles.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @license
|
|
5
|
+
* Copyright (c) 2021 - 2022 Vaadin Ltd.
|
|
6
|
+
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A mixin to provide `pattern` and `preventInvalidInput` properties.
|
|
11
|
+
*
|
|
12
|
+
* @polymerMixin
|
|
13
|
+
* @mixes InputConstraintsMixin
|
|
14
|
+
*/
|
|
15
|
+
const PatternMixin = (superclass) =>
|
|
16
|
+
class PatternMixinClass extends InputConstraintsMixin(superclass) {
|
|
17
|
+
static get properties() {
|
|
18
|
+
return {
|
|
19
|
+
/**
|
|
20
|
+
* A regular expression that the value is checked against.
|
|
21
|
+
* The pattern must match the entire value, not just some subset.
|
|
22
|
+
*/
|
|
23
|
+
pattern: {
|
|
24
|
+
type: String,
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* When set to true, user is prevented from typing a value that
|
|
29
|
+
* conflicts with the given `pattern`.
|
|
30
|
+
* @attr {boolean} prevent-invalid-input
|
|
31
|
+
* @deprecated Please use `allowedCharPattern` instead.
|
|
32
|
+
*/
|
|
33
|
+
preventInvalidInput: {
|
|
34
|
+
type: Boolean,
|
|
35
|
+
observer: '_preventInvalidInputChanged',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static get delegateAttrs() {
|
|
41
|
+
return [...super.delegateAttrs, 'pattern'];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static get constraints() {
|
|
45
|
+
return [...super.constraints, 'pattern'];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** @private */
|
|
49
|
+
_checkInputValue() {
|
|
50
|
+
if (this.preventInvalidInput) {
|
|
51
|
+
const input = this.inputElement;
|
|
52
|
+
if (input && input.value.length > 0 && !this.checkValidity()) {
|
|
53
|
+
input.value = this.value || '';
|
|
54
|
+
// Add input-prevented attribute for 200ms
|
|
55
|
+
this.setAttribute('input-prevented', '');
|
|
56
|
+
this._inputDebouncer = Debouncer.debounce(this._inputDebouncer, timeOut.after(200), () => {
|
|
57
|
+
this.removeAttribute('input-prevented');
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @param {Event} event
|
|
65
|
+
* @protected
|
|
66
|
+
* @override
|
|
67
|
+
*/
|
|
68
|
+
_onInput(event) {
|
|
69
|
+
this._checkInputValue();
|
|
70
|
+
|
|
71
|
+
super._onInput(event);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** @private */
|
|
75
|
+
_preventInvalidInputChanged(preventInvalidInput) {
|
|
76
|
+
if (preventInvalidInput) {
|
|
77
|
+
console.warn(
|
|
78
|
+
`WARNING: Since Vaadin 23.2, "preventInvalidInput" is deprecated. Please use "allowedCharPattern" instead.`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { PatternMixin as P };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
2
|
import { t as translate } from './locale.utils.js';
|
|
3
3
|
|
|
4
|
-
const radioInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.radio__fieldset{border:none;position:relative}.radio__wrapper{display:flex;gap:5px}.radio__error-message{position:absolute;top:calc(100% + 5px);left:0;color
|
|
4
|
+
const radioInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.radio__fieldset{border:none;position:relative}.radio__wrapper{display:flex;gap:5px}.radio__error-message{position:absolute;top:calc(100% + 5px);left:0;color:#cc0000b3}";
|
|
5
5
|
|
|
6
6
|
const RadioInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
7
7
|
constructor() {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
2
|
import { t as translate } from './locale.utils.js';
|
|
3
|
-
import './
|
|
3
|
+
import './input-field-shared-styles.js';
|
|
4
4
|
import './vaadin-combo-box.js';
|
|
5
5
|
|
|
6
|
-
const selectInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.select__wrapper{position:relative;
|
|
6
|
+
const selectInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.select{font-family:\"Roboto\";font-style:normal}.select__wrapper{position:relative;width:100%;padding-top:26px}.select__label{font-family:inherit;font-style:normal;font-weight:500;font-size:16px;line-height:20px;color:#1F1F1F;position:absolute;top:0;left:0}.select__label--required::after{content:\"*\";font-family:inherit;color:#1F1F1F;margin-left:2px}.select__input{border:none;width:inherit;position:relative}.select__input[focused]::part(input-field){border-color:#3E3E3E}.select__input[invalid]::part(input-field){border-color:#cc0000b3}.select__input vaadin-date-picker-overlay-content>vaadin-button{color:#1F1F1F}.select__input vaadin-month-calendar::part(selected date){background-color:red}.select__input::part(input-field){border-radius:4px;background-color:#FFFFFF;border:2px solid #DEE1EE;color:#2A2E3F;border-radius:4px;background-color:transparent;font-family:inherit;font-style:normal;font-weight:300;font-size:16px;line-height:19px}.select__error-message{position:absolute;top:calc(100% + 5px);left:0;color:#cc0000b3}";
|
|
7
7
|
|
|
8
8
|
const SelectInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
9
9
|
constructor() {
|
|
@@ -79,7 +79,6 @@ const SelectInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
79
79
|
this.isValid = this.setValidity();
|
|
80
80
|
this.validityStateHandler({ valid: this.isValid, name: this.name });
|
|
81
81
|
this.emitValueHandler(true);
|
|
82
|
-
this.inputReference.previousElementSibling.classList.remove('select__label--hidden');
|
|
83
82
|
}
|
|
84
83
|
setValidity() {
|
|
85
84
|
return this.inputReference.validity.valid;
|
|
@@ -90,7 +89,8 @@ const SelectInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
render() {
|
|
93
|
-
|
|
92
|
+
const invalidClass = this.isValid == true || this.isValid == undefined ? '' : 'select__input--invalid';
|
|
93
|
+
return h("div", { class: 'select__wrapper' }, h("label", { class: 'select__label', htmlFor: `${this.name}__input` }, `${this.displayName} ${this.validation.mandatory ? '*' : ''}`), h("vaadin-combo-box", { name: this.name, id: `${this.name}__input`, class: `select__input ${invalidClass}`, "item-label-path": "label", "item-value-path": "value", readOnly: this.autofilled, required: this.validation.mandatory, value: this.defaultValue, placeholder: `${this.displayName} ${this.validation.mandatory ? '*' : ''}`, items: this.displayedOptions, onBlur: (e) => this.handleChange(e) }), h("small", { class: 'select__error-message' }, this.errorMessage));
|
|
94
94
|
}
|
|
95
95
|
get element() { return this; }
|
|
96
96
|
static get watchers() { return {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
2
|
import { t as translate } from './locale.utils.js';
|
|
3
|
-
import './
|
|
3
|
+
import './input-field-shared-styles.js';
|
|
4
4
|
import './vaadin-combo-box.js';
|
|
5
5
|
|
|
6
|
-
const telInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.tel__wrapper{position:relative;display:flex;
|
|
6
|
+
const telInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.tel{font-family:\"Roboto\";font-style:normal}.tel__wrapper{position:relative;width:100%;padding-top:26px}.tel__wrapper--flex{width:inherit;display:flex;align-items:stretch;border-radius:4px;border:2px solid #DEE1EE}.tel__wrapper--flex:focus-within{border:2px solid #3E3E3E}.tel__wrapper--flex--invalid{border:2px solid #cc0000b3}.tel__label{font-family:inherit;font-style:normal;font-weight:500;font-size:16px;line-height:20px;color:#1F1F1F;position:absolute;top:0;left:0}.tel__label--required::after{content:\"*\";font-family:inherit;color:#1F1F1F;margin-left:2px}.tel__prefix{width:120px}.tel__prefix[focus]{outline:none}.tel__prefix::part(input-field){border-radius:0 4px 4px 0;background-color:#DEE1EE;color:#1F1F1F;font-family:inherit;font-style:normal;font-weight:300;font-size:16px;line-height:19px}.tel__input{border-radius:4px;background-color:transparent;font-family:inherit;font-style:normal;font-weight:300;font-size:16px;line-height:19px;color:#2A2E3F;border:none;padding:8px 20px;width:inherit;position:relative;-moz-appearance:textfield;}.tel__input:focus{outline:none}.tel__input::-webkit-outer-spin-button,.tel__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tel__error-message{position:absolute;top:calc(100% + 5px);left:0;color:#cc0000b3}";
|
|
7
7
|
|
|
8
8
|
const TelInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
9
9
|
constructor() {
|
|
@@ -33,6 +33,10 @@ const TelInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
33
33
|
}
|
|
34
34
|
connectedCallback() {
|
|
35
35
|
this.validationPattern = this.setPattern();
|
|
36
|
+
if (this.defaultValue) {
|
|
37
|
+
this.prefixValue = this.defaultValue.split('|')[0];
|
|
38
|
+
this.phoneValue = this.defaultValue.split('|')[1];
|
|
39
|
+
}
|
|
36
40
|
}
|
|
37
41
|
componentWillLoad() {
|
|
38
42
|
if (this.action) {
|
|
@@ -47,8 +51,8 @@ const TelInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
47
51
|
}
|
|
48
52
|
componentDidLoad() {
|
|
49
53
|
if (this.defaultValue) {
|
|
50
|
-
this.
|
|
51
|
-
this.valueHandler({ name: this.name, value:
|
|
54
|
+
this.value = `${this.prefixValue}|${this.phoneValue}`;
|
|
55
|
+
this.valueHandler({ name: this.name, value: this.value });
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
getPhoneCodes() {
|
|
@@ -66,8 +70,8 @@ const TelInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
66
70
|
});
|
|
67
71
|
}
|
|
68
72
|
handleInput(event) {
|
|
69
|
-
|
|
70
|
-
this.value = `${this.prefixValue}|${
|
|
73
|
+
this.phoneValue = event.target.value;
|
|
74
|
+
this.value = `${this.prefixValue}|${this.phoneValue}`;
|
|
71
75
|
this.errorMessage = this.setErrorMessage();
|
|
72
76
|
this.isValid = this.setValidity();
|
|
73
77
|
this.validityStateHandler({ valid: this.isValid, name: this.name });
|
|
@@ -95,8 +99,8 @@ const TelInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
95
99
|
}
|
|
96
100
|
}
|
|
97
101
|
render() {
|
|
98
|
-
const invalidClass = this.isValid == true || this.isValid == undefined ? '' : '
|
|
99
|
-
return h("div", { class: 'tel__wrapper' }, h("div", { class:
|
|
102
|
+
const invalidClass = this.isValid == true || this.isValid == undefined ? '' : 'tel__wrapper--flex--invalid';
|
|
103
|
+
return h("div", { class: 'tel__wrapper' }, h("div", { class: `tel__wrapper--flex ${invalidClass}` }, h("vaadin-combo-box", { class: 'tel__prefix', items: this.phoneCodesOptions, value: this.prefixValue, readOnly: this.autofilled, onBlur: (e) => this.prefixValue = e.target.value }), h("input", { type: "tel", ref: (el) => this.inputReference = el, id: `${this.name}__input`, readOnly: this.autofilled, class: `tel__input`, value: this.phoneValue, placeholder: `${this.displayName} ${this.validation.mandatory ? '*' : ''}`, required: this.validation.mandatory, minlength: this.validation.minLength, maxlength: this.validation.maxLength, pattern: this.validationPattern, onBlur: (e) => this.handleInput(e) })), h("label", { class: `tel__label ${this.validation.mandatory ? 'tel__label--required' : ''}`, htmlFor: `${this.name}__input` }, this.displayName), h("small", { class: 'tel__error-message' }, this.errorMessage));
|
|
100
104
|
}
|
|
101
105
|
static get watchers() { return {
|
|
102
106
|
"isValid": ["validityChanged"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
2
|
import { t as translate } from './locale.utils.js';
|
|
3
3
|
|
|
4
|
-
const textInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.text__wrapper{position:relative;
|
|
4
|
+
const textInputCss = "*,*::before,*::after{padding:0;margin:0;box-sizing:border-box}.text{font-family:\"Roboto\";font-style:normal}.text__wrapper{position:relative;width:100%;padding-top:26px}.text__label{font-family:inherit;font-style:normal;font-weight:500;font-size:16px;line-height:20px;color:#1F1F1F;position:absolute;top:0;left:0}.text__label--required::after{content:\"*\";font-family:inherit;color:#1F1F1F;margin-left:2px}.text__input{border-radius:4px;background-color:transparent;font-family:inherit;font-style:normal;font-weight:300;font-size:16px;line-height:19px;color:#2A2E3F;padding:8px 20px;width:inherit;position:relative;border:2px solid #DEE1EE}.text__input:focus{outline-color:#3E3E3E}.text__input--invalid{border:2px solid #cc0000b3}.text__error-message{position:absolute;top:calc(100% + 5px);left:0;color:#cc0000b3}";
|
|
5
5
|
|
|
6
6
|
const TextInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
7
7
|
constructor() {
|
|
@@ -24,17 +24,24 @@ const TextInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
24
24
|
this.valueHandler({ name: this.name, value: this.value });
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
validityStateHandler(inputStateEvent) {
|
|
28
|
-
this.sendValidityState.emit(inputStateEvent);
|
|
29
|
-
}
|
|
30
27
|
emitValueHandler(newValue) {
|
|
31
28
|
if (newValue == true && this.isValid) {
|
|
32
29
|
this.valueHandler({ name: this.name, value: this.value });
|
|
33
30
|
}
|
|
34
31
|
}
|
|
32
|
+
validityStateHandler(inputStateEvent) {
|
|
33
|
+
this.sendValidityState.emit(inputStateEvent);
|
|
34
|
+
}
|
|
35
35
|
valueHandler(inputValueEvent) {
|
|
36
36
|
this.sendInputValue.emit(inputValueEvent);
|
|
37
37
|
}
|
|
38
|
+
valueChangedHandler(event) {
|
|
39
|
+
if (this.isDuplicateInput) {
|
|
40
|
+
if (this.name === event.detail.name + 'Duplicate') {
|
|
41
|
+
this.duplicateInputValue = event.detail.value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
38
45
|
connectedCallback() {
|
|
39
46
|
this.validationPattern = this.setPattern();
|
|
40
47
|
}
|
|
@@ -54,13 +61,6 @@ const TextInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
54
61
|
setValidity() {
|
|
55
62
|
return this.inputReference.validity.valid;
|
|
56
63
|
}
|
|
57
|
-
// @TODO type here
|
|
58
|
-
setCustomRules() {
|
|
59
|
-
var _a;
|
|
60
|
-
if (((_a = this.validation.custom) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
61
|
-
return this.validation.custom.filter(customValidation => customValidation.rule !== 'regex');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
64
|
setPattern() {
|
|
65
65
|
var _a, _b;
|
|
66
66
|
if (((_a = this.validation.custom) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
@@ -78,10 +78,13 @@ const TextInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
78
78
|
if (this.inputReference.validity.valueMissing) {
|
|
79
79
|
return translate('requiredError', this.language);
|
|
80
80
|
}
|
|
81
|
+
if (this.isDuplicateInput && this.duplicateInputValue !== this.value) {
|
|
82
|
+
return this.validation.custom.find(customRule => customRule.rule === 'duplicate-input').errorMessage;
|
|
83
|
+
}
|
|
81
84
|
}
|
|
82
85
|
render() {
|
|
83
86
|
const invalidClass = this.isValid == true || this.isValid == undefined ? '' : 'text__input--invalid';
|
|
84
|
-
return h("div", { class: 'text__wrapper' }, h("input", { id: `${this.name}__input`, value: this.defaultValue, type: 'text', class: `text__input ${invalidClass}`, placeholder: `${this.displayName} ${this.validation.mandatory ? '*' : ''}`, ref: (el) => this.inputReference = el, readOnly: this.autofilled, pattern: this.validationPattern, required: this.validation.mandatory, minlength: this.validation.minLength, maxlength: this.validation.maxLength, onBlur: (e) => { this.handleInput(e); } }), h("
|
|
87
|
+
return h("div", { class: 'text__wrapper' }, h("label", { class: `text__label ${this.validation.mandatory ? 'text__label--required' : ''}`, htmlFor: `${this.name}__input` }, this.displayName), h("input", { name: this.name, id: `${this.name}__input`, value: this.defaultValue, type: 'text', class: `text__input ${invalidClass}`, placeholder: `${this.displayName} ${this.validation.mandatory ? '*' : ''}`, ref: (el) => this.inputReference = el, readOnly: this.autofilled, pattern: this.validationPattern, required: this.validation.mandatory, minlength: this.validation.minLength, maxlength: this.validation.maxLength, onBlur: (e) => { this.handleInput(e); } }), h("small", { class: 'text__error-message' }, this.errorMessage));
|
|
85
88
|
}
|
|
86
89
|
static get watchers() { return {
|
|
87
90
|
"isValid": ["validityChanged"],
|
|
@@ -98,9 +101,10 @@ const TextInput = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
98
101
|
"language": [1],
|
|
99
102
|
"checkValidity": [4, "check-validity"],
|
|
100
103
|
"emitValue": [4, "emit-value"],
|
|
104
|
+
"isDuplicateInput": [4, "is-duplicate-input"],
|
|
101
105
|
"isValid": [32],
|
|
102
106
|
"errorMessage": [32]
|
|
103
|
-
}]);
|
|
107
|
+
}, [[16, "sendInputValue", "valueChangedHandler"]]]);
|
|
104
108
|
function defineCustomElement() {
|
|
105
109
|
if (typeof customElements === "undefined") {
|
|
106
110
|
return;
|