@sarasanalytics-com/design-system 0.0.15 → 0.0.16
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/esm2022/lib/form-input/form-input.component.mjs +17 -8
- package/esm2022/utils/validators.mjs +12 -1
- package/fesm2022/sarasanalytics-com-design-system.mjs +27 -7
- package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
- package/lib/form-input/form-input.component.d.ts +1 -0
- package/package.json +1 -1
- package/utils/validators.d.ts +4 -1
|
@@ -39,7 +39,7 @@ export class FormInputComponent extends FieldType {
|
|
|
39
39
|
this.setDependents();
|
|
40
40
|
this.formControl.statusChanges.subscribe((state) => {
|
|
41
41
|
if (this.type === 'email') {
|
|
42
|
-
this.showEmailIcon = (state === 'VALID') || (state === 'INVALID' && this.formControl.hasError('invalid'));
|
|
42
|
+
this.showEmailIcon = ((state === 'VALID') || (state === 'INVALID' && this.formControl.hasError('invalid')) && this.form.touched);
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
this.formControl.valueChanges.subscribe((val) => {
|
|
@@ -59,13 +59,12 @@ export class FormInputComponent extends FieldType {
|
|
|
59
59
|
setDependents() {
|
|
60
60
|
if (this.params?.dependent) {
|
|
61
61
|
this.dependent = this.form.get([this.params?.dependent]);
|
|
62
|
+
this.dependentVal = this.getDependentVal(this.dependent.value);
|
|
63
|
+
if (this.type === 'tel') {
|
|
64
|
+
this.pretext = this.dependentVal?.dial_code;
|
|
65
|
+
}
|
|
62
66
|
this.dependent?.valueChanges.subscribe((val) => {
|
|
63
|
-
|
|
64
|
-
this.dependentVal = val.length ? val[0] : null;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this.dependentVal = val;
|
|
68
|
-
}
|
|
67
|
+
this.dependentVal = this.getDependentVal(val);
|
|
69
68
|
this.formControl.reset();
|
|
70
69
|
this.formControl.setValue(this.inputVal);
|
|
71
70
|
if (this.type === 'tel') {
|
|
@@ -74,6 +73,16 @@ export class FormInputComponent extends FieldType {
|
|
|
74
73
|
});
|
|
75
74
|
}
|
|
76
75
|
}
|
|
76
|
+
getDependentVal(value) {
|
|
77
|
+
let dependentValue;
|
|
78
|
+
if (Array.isArray(value)) {
|
|
79
|
+
dependentValue = value.length ? value[0] : null;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
dependentValue = value;
|
|
83
|
+
}
|
|
84
|
+
return dependentValue;
|
|
85
|
+
}
|
|
77
86
|
checkValidity(defaultInputState = 'focus') {
|
|
78
87
|
if (this.formControl && !this.formControl.valid && this.formControl.touched && !this.formControl.pending) {
|
|
79
88
|
this.inputState = 'invalid';
|
|
@@ -170,4 +179,4 @@ export var IInputEventType;
|
|
|
170
179
|
IInputEventType["STATE_CHANGE"] = "STATE_CHANGE";
|
|
171
180
|
IInputEventType["ICON_CLICK"] = "ICON_CLICK";
|
|
172
181
|
})(IInputEventType || (IInputEventType = {}));
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFnQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBd0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFldkQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQTBCO0lBMkJoRTtRQUNFLEtBQUssRUFBRSxDQUFDO1FBcEJWLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLGlCQUFZLEdBQVEsSUFBSSxDQUFDO1FBQ3pCLG1DQUFtQztRQUNuQywyQkFBMkI7UUFFM0IsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUlsQixtQkFBYyxHQUFXLGVBQWUsQ0FBQztRQUV6QyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1C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K0JBQ1osYUFBYTs7MkZBS0osa0JBQWtCO2tCQWI5QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixhQUFhO3FCQUNkO3dEQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRVAsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNOztBQTJMZixNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLGdEQUE2QixDQUFBO0lBQzdCLGdEQUE2QixDQUFBO0lBQzdCLDRDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBnZXRWYWxpZGF0aW9uTWVzc2FnZSwgcGhvbmVOdW1iZXJWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2EtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIEljb25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZm9ybS1pbnB1dC5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPiB7XG5cbiAgQFZpZXdDaGlsZCgnZm9ybUlucHV0JykgZm9ybUlucHV0ITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoJ2ljb24nKSBpY29uOiBJSW5wdXRJY29uO1xuXG4gIHByZXRleHQ6IHN0cmluZztcblxuICBpbnB1dFN0YXRlID0gJ2lkbGUnO1xuICBpbnB1dFZhbCA9ICcnO1xuICBwYXJhbXM6IElJbnB1dFBhcmFtIHwgbnVsbDtcbiAgZGVwZW5kZW50OiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgbnVsbDtcbiAgZGVwZW5kZW50VmFsOiBhbnkgPSBudWxsO1xuICAvLyBkeW5hbWljSWNvbjogRHluYW1pY0ljb24gfCBudWxsO1xuICAvLyBpY29uOiBJSW5wdXRJY29uIHwgbnVsbDtcblxuICB0eXBlOiBzdHJpbmcgPSAnJztcbiAgdmFsaWRhdG9yczogYW55W107XG4gIGFzeW5jVmFsaWRhdG9yczogYW55W107XG5cbiAgaW5wdXRFcnJvclRleHQ6IHN0cmluZyA9ICdpbnZhbGlkIGlucHV0JztcblxuICBzaG93RW1haWxJY29uOiBib29sZWFuID0gZmFsc2U7XG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdXBwcmVzc09uQmx1ciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5wdXRWYWwgPSB0aGlzLmZpZWxkLnByb3BzWyd2YWx1ZSddO1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLmZpZWxkLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xuXG4gICAgdGhpcy5wYXJhbXMgPSB0aGlzLmZpZWxkLnByb3BzWydwYXJhbXMnXTtcbiAgICB0aGlzLmljb24gPSB0aGlzLmZpZWxkLnByb3BzWydpY29uJ10gfHwge307XG4gICAgdGhpcy50eXBlID0gdGhpcy5wYXJhbXM/LnR5cGUgfHwgJyc7XG5cbiAgICAvLyB0aGlzLmR5bmFtaWNJY29uID0gdGhpcy5maWVsZC5wcm9wc1snZHluYW1pY0ljb24nXTtcbiAgICB0aGlzLnNldFZhbGlkYXRvcnMoKTtcbiAgICB0aGlzLnNldERlcGVuZGVudHMoKTtcblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnKSB7XG4gICAgICAgIHRoaXMuc2hvd0VtYWlsSWNvbiA9IChzdGF0ZSA9PT0gJ1ZBTElEJykgfHwgKHN0YXRlID09PSAnSU5WQUxJRCcgJiYgdGhpcy5mb3JtQ29udHJvbC5oYXNFcnJvcignaW52YWxpZCcpKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsO1xuICAgIH0pXG4gIH1cblxuICBzZXRWYWxpZGF0b3JzKCkge1xuICAgIHRoaXMudmFsaWRhdG9ycyA9IHRoaXMucGFyYW1zPy52YWxpZGF0b3JzIHx8IFtdO1xuICAgIHRoaXMuYXN5bmNWYWxpZGF0b3JzID0gdGhpcy5wYXJhbXM/LmFzeW5jVmFsaWRhdG9ycyB8fCBbXTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWxpZGF0b3JzKFsuLi4odGhpcy50eXBlID8gdGhpcy5wcmVkZWZpbmVkVmFsaWRhdG9yc1t0aGlzLnR5cGVdIHx8IFtdIDogW10pLCAuLi50aGlzLnZhbGlkYXRvcnNdKTtcbiAgICBpZiAodGhpcy5hc3luY1ZhbGlkYXRvcnMpXG4gICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5hc3luY1ZhbGlkYXRvcnMpO1xuICB9XG5cbiAgLypcbiAgICBBc3N1bWluZyBkZXBlbmRlbnQgZmllbGQgaXMgYSBzaW5nbGUgc2VsZWN0IGRyb3Bkb3duXG4gICovXG4gIHNldERlcGVuZGVudHMoKSB7XG4gICAgaWYgKHRoaXMucGFyYW1zPy5kZXBlbmRlbnQpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW50ID0gdGhpcy5mb3JtLmdldChbdGhpcy5wYXJhbXM/LmRlcGVuZGVudF0pO1xuXG4gICAgICB0aGlzLmRlcGVuZGVudD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICB0aGlzLmRlcGVuZGVudFZhbCA9IHZhbC5sZW5ndGggPyB2YWxbMF0gOiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGVwZW5kZW50VmFsID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmlucHV0VmFsKTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcbiAgICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrVmFsaWRpdHkoZGVmYXVsdElucHV0U3RhdGUgPSAnZm9jdXMnKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wgJiYgIXRoaXMuZm9ybUNvbnRyb2wudmFsaWQgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmICF0aGlzLmZvcm1Db250cm9sLnBlbmRpbmcpIHtcbiAgICAgIHRoaXMuaW5wdXRTdGF0ZSA9ICdpbnZhbGlkJztcbiAgICAgIHRoaXMuaW5wdXRFcnJvclRleHQgPSBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycykgfHwgJ2ludmFsaWQgaW5wdXQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlucHV0U3RhdGUgPSBkZWZhdWx0SW5wdXRTdGF0ZTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbGlkKVxuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gJ2ZvY3VzJ1xuICB9XG4gIG9uQmx1cigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zdXBwcmVzc09uQmx1cikge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5jaGVja1ZhbGlkaXR5KCdpZGxlJyk7XG4gICAgICB9XG4gICAgICB0aGlzLnN1cHByZXNzT25CbHVyID0gZmFsc2U7XG4gICAgfSwgMjAwKVxuICB9XG5cbiAgb25JbnB1dChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMucGFyYW1zPy50eXBlID09PSAndGVsJykge1xuICAgICAgdGhpcy5pbnB1dFZhbCA9IHRoaXMuaW5wdXRWYWwucmVwbGFjZSgvW14wLTkoKStcXC0gXS9nLCAnJyk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUodGhpcy5pbnB1dFZhbCk7XG4gICAgdGhpcy5jaGVja1ZhbGlkaXR5KCk7XG4gICAgLyppZiAodGhpcy5wYXJhbXM/LmV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucGFyYW1zPy5ldmVudExpc3RlbmVyKHtcbiAgICAgICAgdHlwZTogSUlucHV0RXZlbnRUeXBlLklOUFVUX0NIQU5HRSxcbiAgICAgICAgdmFsdWU6IHRoaXMuaW5wdXRWYWwsXG4gICAgICAgIGZvcm1Db250cm9sOiB0aGlzLmZvcm1Db250cm9sXG4gICAgICB9IGFzIElJbnB1dEV2ZW50KS50aGVuKHRoaXMub25GaWVsZENhbGxiYWNrLmJpbmQodGhpcykpO1xuICAgIH0qL1xuICB9XG5cbiAgb25JbnB1dEZpZWxkQ2xpY2soZXZlbnQ6IGFueSA9ICdpbnB1dCcpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdpbnB1dCcgfHwgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnc2EtaW5wdXQtZmllbGQnKSkge1xuICAgICAgdGhpcy5mb3JtSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgaWYgKHRoaXMucGFyYW1zPy50eXBlICE9PSAnZW1haWwnKSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtSW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmlucHV0VmFsLmxlbmd0aCwgdGhpcy5pbnB1dFZhbC5sZW5ndGgpXG4gICAgICB9LCAxMClcbiAgICB9XG4gIH1cblxuICBpbnB1dEljb25DbGljaygpIHtcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgIHRoaXMuc3VwcHJlc3NPbkJsdXIgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICB0aGlzLnR5cGUgPSAndGV4dCc7XG4gICAgICAgIHRoaXMuaWNvbi5uYW1lID0gJ2V5ZV9maWxsZWQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICAgICAgdGhpcy5pY29uLm5hbWUgPSAnZXllJztcbiAgICAgIH1cbiAgICAgIHRoaXMub25JbnB1dEZpZWxkQ2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAvKm9uRmllbGRDYWxsYmFjayhwYXJhbTogSUlucHV0UGFyYW0pIHtcbiAgICB0aGlzLmljb24gPSBwYXJhbS5pY29uIHx8IHRoaXMuaWNvbjtcbiAgICB0aGlzLmNoZWNrVmFsaWRpdHkoKTtcbiAgfSovXG5cbiAgZ2V0Rm9ybVN1cHBvcnRUZXh0KCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLmludmFsaWQgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICByZXR1cm4gZ2V0VmFsaWRhdGlvbk1lc3NhZ2UodGhpcy5mb3JtQ29udHJvbC5lcnJvcnMpIHx8ICdpbnZhbGlkIGlucHV0JztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnN1cHBvcnRUZXh0IHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByZWRlZmluZWRWYWxpZGF0b3JzOiBhbnkgPSB7XG4gICAgZW1haWw6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICBwYXNzd29yZDogW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB0ZWw6IFtWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05ICtcXFxcLSgpXSokJyldXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRJY29uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzaG93PzogYm9vbGVhbjtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIHNpemU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0UGFyYW0ge1xuICB2YWxpZGF0b3JzPzogYW55W107XG4gIGFzeW5jVmFsaWRhdG9ycz86IGFueVtdO1xuICBzdXBwb3J0VGV4dD86IHN0cmluZyxcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gIHR5cGU/OiBzdHJpbmcsXG4gIGRlcGVuZGVudD86IHN0cmluZyxcbiAgZXZlbnRMaXN0ZW5lcj86IEZ1bmN0aW9uLFxuICBpY29uPzogSUlucHV0SWNvblxuICBlcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG59XG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dEV2ZW50IHtcbiAgdHlwZTogSUlucHV0RXZlbnRUeXBlO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjYWxsQmFjazogYW55O1xuICBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2xcbn1cbmV4cG9ydCBlbnVtIElJbnB1dEV2ZW50VHlwZSB7XG4gIElOUFVUX0NIQU5HRSA9ICdJTlBVVF9DSEFOR0UnLFxuICBTVEFURV9DSEFOR0UgPSAnU1RBVEVfQ0hBTkdFJyxcbiAgSUNPTl9DTElDSyA9ICdJQ09OX0NMSUNLJ1xufSIsIjxkaXYgY2xhc3M9XCJzYS1pbnB1dFwiIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnIFwiPlxuICAgIEBpZihwcmV0ZXh0IHx8ICghIWlucHV0VmFsLmxlbmd0aCAmJiAhIXBhcmFtcz8ucGxhY2Vob2xkZXIpKXtcbiAgICA8c3BhbiBjbGFzcz1cInNhLWlucHV0LXRhZ1wiPnt7cGFyYW1zPy5wbGFjZWhvbGRlcn19PC9zcGFuPlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtZmllbGRcIiBbbmdDbGFzc109XCJmb3JtQ29udHJvbC5pbnZhbGlkICYmIGZvcm1Db250cm9sLnRvdWNoZWQgPyAnaW52YWxpZCcgOiAnaWRsZScgXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRGaWVsZENsaWNrKCRldmVudClcIj5cbiAgICAgICAgQGlmKHByZXRleHQpe1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtcHJldGV4dFwiPlxuICAgICAgICAgICAge3twcmV0ZXh0fX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFt0eXBlXT1cInR5cGVcIiB2YWx1ZT1cIlwiIFtwYXR0ZXJuXT1cInR5cGU9PT0ndGVsJyA/ICdbMC05XScgOiAnJyBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlXCIgW3BsYWNlaG9sZGVyXT1cIiFwcmV0ZXh0ICYmIHBhcmFtcz8ucGxhY2Vob2xkZXIgfHwgJycgXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiBbKG5nTW9kZWwpXT1cImlucHV0VmFsXCIgI2Zvcm1JbnB1dCAvPlxuXG4gICAgICAgIEBpZihwYXJhbXM/LnR5cGUgPT09ICdwYXNzd29yZCcpe1xuICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBpY29uPVwiZXllXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCIhaWNvbi5uYW1lIHx8IGljb24ubmFtZSA9PT0gJ2V5ZScgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cbiAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgaWNvbj1cImV5ZV9maWxsZWRcIiBbc2l6ZV09XCJpY29uLnNpemUgfHwgJzI0J1wiIChjbGljayk9XCJpbnB1dEljb25DbGljaygpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImljb24ubmFtZSA9PT0gJ2V5ZV9maWxsZWQnID8gJycgOiAnaGlkZSdcIj48L3NhLWljb24+XG4gICAgICAgIH1AZWxzZSBpZihwYXJhbXM/LnR5cGUgPT09ICdlbWFpbCcgJiYgaWNvbi5zaG93KXtcbiAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgW2ljb25dPVwiaWNvbi5uYW1lIHx8ICdjaGVja21hcmsnXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzaG93RW1haWxJY29uID8gJycgOiAnaGlkZSdcIj48L3NhLWljb24+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYoaWNvbi5uYW1lKXtcbiAgICAgICAgPHNhLWljb24gY2xhc3M9XCJmbGV4XCIgW2ljb25dPVwiaWNvbi5uYW1lXCIgW3NpemVdPVwiaWNvbi5zaXplIHx8ICcyNCdcIiBbY29sb3JdPVwiaWNvbi5jb2xvciB8fCAnJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpY29uLnNob3cgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cbiAgICAgICAgfVxuXG5cbiAgICAgICAgPCEtLSA8c2EtaWNvbiBbaWNvbl09XCJpY29uXCIgc2l6ZT1cIjI0XCIgKGNsaWNrKT1cImlucHV0SWNvbkNsaWNrKClcIj48L3NhLWljb24+IC0tPlxuICAgIDwvZGl2PlxuICAgIEBpZigoIWZvcm1Db250cm9sLnZhbGlkKSB8fCAocGFyYW1zICYmIHBhcmFtcy5zdXBwb3J0VGV4dCkpe1xuICAgIDxkaXYgY2xhc3M9XCJzdXBwb3J0LWxhYmVsXCIgW25nQ2xhc3NdPVwiZm9ybUNvbnRyb2wuaW52YWxpZCAmJiBmb3JtQ29udHJvbC50b3VjaGVkID8gJ2ludmFsaWQnIDogJ2lkbGUnXCI+XG4gICAgICAgIDwhLS0ge3shZm9ybUNvbnRyb2wudmFsaWQgPyBpbnB1dEVycm9yVGV4dCA6IHBhcmFtcy5zdXBwb3J0VGV4dH19IC0tPlxuICAgICAgICB7e2dldEZvcm1TdXBwb3J0VGV4dCgpfX1cbiAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj4iXX0=
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFnQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBd0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFldkQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFNBQTBCO0lBMkJoRTtRQUNFLEtBQUssRUFBRSxDQUFDO1FBcEJWLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLGlCQUFZLEdBQVEsSUFBSSxDQUFDO1FBQ3pCLG1DQUFtQztRQUNuQywyQkFBMkI7UUFFM0IsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUlsQixtQkFBYyxHQUFXLGVBQWUsQ0FBQztRQUV6QyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBaUovQix5QkFBb0IsR0FBUTtZQUMxQixLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDOUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3hELEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM3QyxDQUFBO0lBaEpELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7UUFFcEMsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuSSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN4SCxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7TUFFRTtJQUNGLGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUV6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLElBQUksY0FBbUIsQ0FBQztRQUN4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYSxDQUFDLGlCQUFpQixHQUFHLE9BQU87UUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pHLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUM7UUFDekYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFBO0lBQzdCLENBQUM7SUFDRCxNQUFNO1FBQ0osVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNULENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCOzs7Ozs7V0FNRztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFhLE9BQU87UUFDcEMsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPO2dCQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQzVGLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNSLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUVILGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekQsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQztRQUMxRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDOzhHQXhLVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw2TkN2Qi9CLHVtRUFzQ00sb3ZERHhCRixZQUFZLDRIQUNaLFdBQVcsdXdCQUNYLG1CQUFtQiw4QkFDbkIsWUFBWSwrQkFDWixhQUFhOzsyRkFLSixrQkFBa0I7a0JBYjlCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGFBQWE7cUJBQ2Q7d0RBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFUCxJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07O0FBcU1mLE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0IsZ0RBQTZCLENBQUE7SUFDN0IsNENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGaWVsZFR5cGVDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGdldFZhbGlkYXRpb25NZXNzYWdlLCBwaG9uZU51bWJlclZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgSWNvbkNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9mb3JtLWlucHV0LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcblxuICBAVmlld0NoaWxkKCdmb3JtSW5wdXQnKSBmb3JtSW5wdXQhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgnaWNvbicpIGljb246IElJbnB1dEljb247XG5cbiAgcHJldGV4dDogc3RyaW5nO1xuXG4gIGlucHV0U3RhdGUgPSAnaWRsZSc7XG4gIGlucHV0VmFsID0gJyc7XG4gIHBhcmFtczogSUlucHV0UGFyYW0gfCBudWxsO1xuICBkZXBlbmRlbnQ6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsO1xuICBkZXBlbmRlbnRWYWw6IGFueSA9IG51bGw7XG4gIC8vIGR5bmFtaWNJY29uOiBEeW5hbWljSWNvbiB8IG51bGw7XG4gIC8vIGljb246IElJbnB1dEljb24gfCBudWxsO1xuXG4gIHR5cGU6IHN0cmluZyA9ICcnO1xuICB2YWxpZGF0b3JzOiBhbnlbXTtcbiAgYXN5bmNWYWxpZGF0b3JzOiBhbnlbXTtcblxuICBpbnB1dEVycm9yVGV4dDogc3RyaW5nID0gJ2ludmFsaWQgaW5wdXQnO1xuXG4gIHNob3dFbWFpbEljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHN1cHByZXNzT25CbHVyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbnB1dFZhbCA9IHRoaXMuZmllbGQucHJvcHNbJ3ZhbHVlJ107XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2U7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUodGhpcy5pbnB1dFZhbCk7XG5cbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuZmllbGQucHJvcHNbJ3BhcmFtcyddO1xuICAgIHRoaXMuaWNvbiA9IHRoaXMuZmllbGQucHJvcHNbJ2ljb24nXSB8fCB7fTtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnBhcmFtcz8udHlwZSB8fCAnJztcblxuICAgIC8vIHRoaXMuZHluYW1pY0ljb24gPSB0aGlzLmZpZWxkLnByb3BzWydkeW5hbWljSWNvbiddO1xuICAgIHRoaXMuc2V0VmFsaWRhdG9ycygpO1xuICAgIHRoaXMuc2V0RGVwZW5kZW50cygpO1xuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdlbWFpbCcpIHtcbiAgICAgICAgdGhpcy5zaG93RW1haWxJY29uID0gKChzdGF0ZSA9PT0gJ1ZBTElEJykgfHwgKHN0YXRlID09PSAnSU5WQUxJRCcgJiYgdGhpcy5mb3JtQ29udHJvbC5oYXNFcnJvcignaW52YWxpZCcpKSAmJiB0aGlzLmZvcm0udG91Y2hlZCk7XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgdGhpcy5mb3JtSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbDtcbiAgICB9KVxuICB9XG5cbiAgc2V0VmFsaWRhdG9ycygpIHtcbiAgICB0aGlzLnZhbGlkYXRvcnMgPSB0aGlzLnBhcmFtcz8udmFsaWRhdG9ycyB8fCBbXTtcbiAgICB0aGlzLmFzeW5jVmFsaWRhdG9ycyA9IHRoaXMucGFyYW1zPy5hc3luY1ZhbGlkYXRvcnMgfHwgW107XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbLi4uKHRoaXMudHlwZSA/IHRoaXMucHJlZGVmaW5lZFZhbGlkYXRvcnNbdGhpcy50eXBlXSB8fCBbXSA6IFtdKSwgLi4udGhpcy52YWxpZGF0b3JzXSk7XG4gICAgaWYgKHRoaXMuYXN5bmNWYWxpZGF0b3JzKVxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXN5bmNWYWxpZGF0b3JzKTtcbiAgfVxuXG4gIC8qXG4gICAgQXNzdW1pbmcgZGVwZW5kZW50IGZpZWxkIGlzIGEgc2luZ2xlIHNlbGVjdCBkcm9wZG93blxuICAqL1xuICBzZXREZXBlbmRlbnRzKCkge1xuICAgIGlmICh0aGlzLnBhcmFtcz8uZGVwZW5kZW50KSB7XG4gICAgICB0aGlzLmRlcGVuZGVudCA9IHRoaXMuZm9ybS5nZXQoW3RoaXMucGFyYW1zPy5kZXBlbmRlbnRdKTtcblxuICAgICAgdGhpcy5kZXBlbmRlbnRWYWwgPSB0aGlzLmdldERlcGVuZGVudFZhbCh0aGlzLmRlcGVuZGVudC52YWx1ZSk7XG4gICAgICBpZiAodGhpcy50eXBlID09PSAndGVsJykge1xuICAgICAgICB0aGlzLnByZXRleHQgPSB0aGlzLmRlcGVuZGVudFZhbD8uZGlhbF9jb2RlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRlcGVuZGVudD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIHRoaXMuZGVwZW5kZW50VmFsID0gdGhpcy5nZXREZXBlbmRlbnRWYWwodmFsKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5yZXNldCgpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuaW5wdXRWYWwpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAndGVsJykge1xuICAgICAgICAgIHRoaXMucHJldGV4dCA9IHRoaXMuZGVwZW5kZW50VmFsPy5kaWFsX2NvZGU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIGdldERlcGVuZGVudFZhbCh2YWx1ZTogYW55KSB7XG4gICAgbGV0IGRlcGVuZGVudFZhbHVlOiBhbnk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBkZXBlbmRlbnRWYWx1ZSA9IHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVwZW5kZW50VmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRlcGVuZGVudFZhbHVlO1xuICB9XG5cbiAgY2hlY2tWYWxpZGl0eShkZWZhdWx0SW5wdXRTdGF0ZSA9ICdmb2N1cycpIHtcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCAmJiAhdGhpcy5mb3JtQ29udHJvbC52YWxpZCAmJiB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQgJiYgIXRoaXMuZm9ybUNvbnRyb2wucGVuZGluZykge1xuICAgICAgdGhpcy5pbnB1dFN0YXRlID0gJ2ludmFsaWQnO1xuICAgICAgdGhpcy5pbnB1dEVycm9yVGV4dCA9IGdldFZhbGlkYXRpb25NZXNzYWdlKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzKSB8fCAnaW52YWxpZCBpbnB1dCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRTdGF0ZSA9IGRlZmF1bHRJbnB1dFN0YXRlO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsaWQpXG4gICAgICB0aGlzLmlucHV0U3RhdGUgPSAnZm9jdXMnXG4gIH1cbiAgb25CbHVyKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnN1cHByZXNzT25CbHVyKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoJ2lkbGUnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3VwcHJlc3NPbkJsdXIgPSBmYWxzZTtcbiAgICB9LCAyMDApXG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgPT09ICd0ZWwnKSB7XG4gICAgICB0aGlzLmlucHV0VmFsID0gdGhpcy5pbnB1dFZhbC5yZXBsYWNlKC9bXjAtOSgpK1xcLSBdL2csICcnKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLmlucHV0VmFsKTtcbiAgICB0aGlzLmNoZWNrVmFsaWRpdHkoKTtcbiAgICAvKmlmICh0aGlzLnBhcmFtcz8uZXZlbnRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5wYXJhbXM/LmV2ZW50TGlzdGVuZXIoe1xuICAgICAgICB0eXBlOiBJSW5wdXRFdmVudFR5cGUuSU5QVVRfQ0hBTkdFLFxuICAgICAgICB2YWx1ZTogdGhpcy5pbnB1dFZhbCxcbiAgICAgICAgZm9ybUNvbnRyb2w6IHRoaXMuZm9ybUNvbnRyb2xcbiAgICAgIH0gYXMgSUlucHV0RXZlbnQpLnRoZW4odGhpcy5vbkZpZWxkQ2FsbGJhY2suYmluZCh0aGlzKSk7XG4gICAgfSovXG4gIH1cblxuICBvbklucHV0RmllbGRDbGljayhldmVudDogYW55ID0gJ2lucHV0Jykge1xuICAgIGlmIChldmVudCA9PT0gJ2lucHV0JyB8fCBldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYS1pbnB1dC1maWVsZCcpKSB7XG4gICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICBpZiAodGhpcy5wYXJhbXM/LnR5cGUgIT09ICdlbWFpbCcpIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1JbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHRoaXMuaW5wdXRWYWwubGVuZ3RoLCB0aGlzLmlucHV0VmFsLmxlbmd0aClcbiAgICAgIH0sIDEwKVxuICAgIH1cbiAgfVxuXG4gIGlucHV0SWNvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLnBhcmFtcz8udHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgdGhpcy5zdXBwcmVzc09uQmx1ciA9IHRydWU7XG4gICAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgdGhpcy5pY29uLm5hbWUgPSAnZXllX2ZpbGxlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnR5cGUgPSAncGFzc3dvcmQnO1xuICAgICAgICB0aGlzLmljb24ubmFtZSA9ICdleWUnO1xuICAgICAgfVxuICAgICAgdGhpcy5vbklucHV0RmllbGRDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qb25GaWVsZENhbGxiYWNrKHBhcmFtOiBJSW5wdXRQYXJhbSkge1xuICAgIHRoaXMuaWNvbiA9IHBhcmFtLmljb24gfHwgdGhpcy5pY29uO1xuICAgIHRoaXMuY2hlY2tWYWxpZGl0eSgpO1xuICB9Ki9cblxuICBnZXRGb3JtU3VwcG9ydFRleHQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHJldHVybiBnZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycykgfHwgJ2ludmFsaWQgaW5wdXQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbXMuc3VwcG9ydFRleHQgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgcHJlZGVmaW5lZFZhbGlkYXRvcnM6IGFueSA9IHtcbiAgICBlbWFpbDogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIHBhc3N3b3JkOiBbVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIHRlbDogW1ZhbGlkYXRvcnMucGF0dGVybignXlswLTkgK1xcXFwtKCldKiQnKV1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbnB1dEljb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNob3c/OiBib29sZWFuO1xuICBjb2xvcj86IHN0cmluZztcbiAgc2l6ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5wdXRQYXJhbSB7XG4gIHZhbGlkYXRvcnM/OiBhbnlbXTtcbiAgYXN5bmNWYWxpZGF0b3JzPzogYW55W107XG4gIHN1cHBvcnRUZXh0Pzogc3RyaW5nLFxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgdHlwZT86IHN0cmluZyxcbiAgZGVwZW5kZW50Pzogc3RyaW5nLFxuICBldmVudExpc3RlbmVyPzogRnVuY3Rpb24sXG4gIGljb24/OiBJSW5wdXRJY29uXG4gIGVycm9ycz86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUlucHV0RXZlbnQge1xuICB0eXBlOiBJSW5wdXRFdmVudFR5cGU7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNhbGxCYWNrOiBhbnk7XG4gIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbFxufVxuZXhwb3J0IGVudW0gSUlucHV0RXZlbnRUeXBlIHtcbiAgSU5QVVRfQ0hBTkdFID0gJ0lOUFVUX0NIQU5HRScsXG4gIFNUQVRFX0NIQU5HRSA9ICdTVEFURV9DSEFOR0UnLFxuICBJQ09OX0NMSUNLID0gJ0lDT05fQ0xJQ0snXG59IiwiPGRpdiBjbGFzcz1cInNhLWlucHV0XCIgW25nQ2xhc3NdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogJycgXCI+XG4gICAgQGlmKHByZXRleHQgfHwgKCEhaW5wdXRWYWwubGVuZ3RoICYmICEhcGFyYW1zPy5wbGFjZWhvbGRlcikpe1xuICAgIDxzcGFuIGNsYXNzPVwic2EtaW5wdXQtdGFnXCI+e3twYXJhbXM/LnBsYWNlaG9sZGVyfX08L3NwYW4+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1maWVsZFwiIFtuZ0NsYXNzXT1cImZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZCA/ICdpbnZhbGlkJyA6ICdpZGxlJyBcIlxuICAgICAgICAoY2xpY2spPVwib25JbnB1dEZpZWxkQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICBAaWYocHJldGV4dCl7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1pbnB1dC1wcmV0ZXh0XCI+XG4gICAgICAgICAgICB7e3ByZXRleHR9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3R5cGVdPVwidHlwZVwiIHZhbHVlPVwiXCIgW3BhdHRlcm5dPVwidHlwZT09PSd0ZWwnID8gJ1swLTldJyA6ICcnIFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2VcIiBbcGxhY2Vob2xkZXJdPVwiIXByZXRleHQgJiYgcGFyYW1zPy5wbGFjZWhvbGRlciB8fCAnJyBcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwiaW5wdXRWYWxcIiAjZm9ybUlucHV0IC8+XG5cbiAgICAgICAgQGlmKHBhcmFtcz8udHlwZSA9PT0gJ3Bhc3N3b3JkJyl7XG4gICAgICAgIDxzYS1pY29uIGNsYXNzPVwiZmxleFwiIGljb249XCJleWVcIiBbc2l6ZV09XCJpY29uLnNpemUgfHwgJzI0J1wiIChjbGljayk9XCJpbnB1dEljb25DbGljaygpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpY29uLm5hbWUgfHwgaWNvbi5uYW1lID09PSAnZXllJyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxuICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBpY29uPVwiZXllX2ZpbGxlZFwiIFtzaXplXT1cImljb24uc2l6ZSB8fCAnMjQnXCIgKGNsaWNrKT1cImlucHV0SWNvbkNsaWNrKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaWNvbi5uYW1lID09PSAnZXllX2ZpbGxlZCcgPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cbiAgICAgICAgfUBlbHNlIGlmKHBhcmFtcz8udHlwZSA9PT0gJ2VtYWlsJyAmJiBpY29uLnNob3cpe1xuICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBbaWNvbl09XCJpY29uLm5hbWUgfHwgJ2NoZWNrbWFyaydcIiBbc2l6ZV09XCJpY29uLnNpemUgfHwgJzI0J1wiIChjbGljayk9XCJpbnB1dEljb25DbGljaygpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNob3dFbWFpbEljb24gPyAnJyA6ICdoaWRlJ1wiPjwvc2EtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZihpY29uLm5hbWUpe1xuICAgICAgICA8c2EtaWNvbiBjbGFzcz1cImZsZXhcIiBbaWNvbl09XCJpY29uLm5hbWVcIiBbc2l6ZV09XCJpY29uLnNpemUgfHwgJzI0J1wiIFtjb2xvcl09XCJpY29uLmNvbG9yIHx8ICcnXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImljb24uc2hvdyA/ICcnIDogJ2hpZGUnXCI+PC9zYS1pY29uPlxuICAgICAgICB9XG5cblxuICAgICAgICA8IS0tIDxzYS1pY29uIFtpY29uXT1cImljb25cIiBzaXplPVwiMjRcIiAoY2xpY2spPVwiaW5wdXRJY29uQ2xpY2soKVwiPjwvc2EtaWNvbj4gLS0+XG4gICAgPC9kaXY+XG4gICAgQGlmKCghZm9ybUNvbnRyb2wudmFsaWQpIHx8IChwYXJhbXMgJiYgcGFyYW1zLnN1cHBvcnRUZXh0KSl7XG4gICAgPGRpdiBjbGFzcz1cInN1cHBvcnQtbGFiZWxcIiBbbmdDbGFzc109XCJmb3JtQ29udHJvbC5pbnZhbGlkICYmIGZvcm1Db250cm9sLnRvdWNoZWQgPyAnaW52YWxpZCcgOiAnaWRsZSdcIj5cbiAgICAgICAgPCEtLSB7eyFmb3JtQ29udHJvbC52YWxpZCA/IGlucHV0RXJyb3JUZXh0IDogcGFyYW1zLnN1cHBvcnRUZXh0fX0gLS0+XG4gICAgICAgIHt7Z2V0Rm9ybVN1cHBvcnRUZXh0KCl9fVxuICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PiJdfQ==
|
|
@@ -12,6 +12,17 @@ export function phoneNumberValidator(dependent) {
|
|
|
12
12
|
return null;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
+
export const customEmailValidator = (control) => {
|
|
16
|
+
const email = control.value;
|
|
17
|
+
// Replace the regular expression with the pattern you want to use.
|
|
18
|
+
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
|
|
19
|
+
if (emailPattern.test(email)) {
|
|
20
|
+
return null; // Valid email
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return { invalid: "Please use a work email; personal emails (e.g., @gmail, @outlook) are not accepted." }; // Invalid email
|
|
24
|
+
}
|
|
25
|
+
};
|
|
15
26
|
/*
|
|
16
27
|
export function workEmailValidation(): AsyncValidatorFn {
|
|
17
28
|
return (control: AbstractControl): Observable<ValidationErrors | null> => {
|
|
@@ -67,4 +78,4 @@ export function getValidationMessage(errors) {
|
|
|
67
78
|
}
|
|
68
79
|
return 'Invalid input';
|
|
69
80
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxTQUFrQjtJQUNuRCxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUN6RCxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvRSxJQUFJLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckQsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUM7Z0JBQy9DLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQXdCLEVBQW9DLEVBQUU7SUFDL0YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixtRUFBbUU7SUFDbkUsTUFBTSxZQUFZLEdBQUcsbURBQW1ELENBQUM7SUFFekUsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsQ0FBQyxjQUFjO0lBQy9CLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxFQUFFLE9BQU8sRUFBRSxxRkFBcUYsRUFBRSxDQUFDLENBQUMsZ0JBQWdCO0lBQy9ILENBQUM7QUFDTCxDQUFDLENBQUE7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFXO0lBQzVDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDVCxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sV0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQ3ZFLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sV0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQ3pFLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sdUJBQXVCLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxxQkFBcUIsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLDRCQUE0QixDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxlQUFlLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGhvbmVOdW1iZXJWYWxpZGF0b3IoZGVwZW5kZW50Pzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCBkZXBlbmRlbnRGb3JtQ29udHJvbCA9IGRlcGVuZGVudCA/IGNvbnRyb2wucGFyZW50Py5nZXQoZGVwZW5kZW50KSA6IG51bGw7XG4gICAgICAgIGlmIChkZXBlbmRlbnRGb3JtQ29udHJvbCAmJiAhIWRlcGVuZGVudEZvcm1Db250cm9sLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0b3InLCBkZXBlbmRlbnRGb3JtQ29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICAgIGlmIChkZXBlbmRlbnRGb3JtQ29udHJvbC52YWx1ZVswXS5pZCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICghL15cXCsxWzItOV1cXGR7Mn1bMi05XVxcZHs2fSQvLnRlc3QoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZDogJ2ludmFsaWQgcGhvbmUgbnVtYmVyJyB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBjdXN0b21FbWFpbFZhbGlkYXRvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgbnVsbCA9PiB7XG4gICAgY29uc3QgZW1haWwgPSBjb250cm9sLnZhbHVlO1xuICAgIC8vIFJlcGxhY2UgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIHRoZSBwYXR0ZXJuIHlvdSB3YW50IHRvIHVzZS5cbiAgICBjb25zdCBlbWFpbFBhdHRlcm4gPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw0fSQvO1xuXG4gICAgaWYgKGVtYWlsUGF0dGVybi50ZXN0KGVtYWlsKSkge1xuICAgICAgICByZXR1cm4gbnVsbDsgLy8gVmFsaWQgZW1haWxcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyBpbnZhbGlkOiBcIlBsZWFzZSB1c2UgYSB3b3JrIGVtYWlsOyBwZXJzb25hbCBlbWFpbHMgKGUuZy4sIEBnbWFpbCwgQG91dGxvb2spIGFyZSBub3QgYWNjZXB0ZWQuXCIgfTsgLy8gSW52YWxpZCBlbWFpbFxuICAgIH1cbn1cbi8qXG5leHBvcnQgZnVuY3Rpb24gd29ya0VtYWlsVmFsaWRhdGlvbigpOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7IC8vIE5vIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAgICAgIH1cblxuICAgICAgICAhY29udHJvbC5wZW5kaW5nICYmIGNvbnRyb2wubWFya0FzUGVuZGluZygpO1xuICAgICAgICAvLyAhY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAvLyByZXR1cm4gb2YoeyBpbnZhbGlkOiAnRW50ZXIgeW91ciB3b3JrIGVtYWlsJyB9KTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9iKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gJ3NhaXJhakBnbWFpbC5jb20nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2IubmV4dChudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiBvYi5uZXh0KHsgaW52YWxpZDogJ1RoaXMgaXMgbm90IGEgd29ya2VtYWlsJyB9KTtcbiAgICAgICAgICAgIH0sIDUwMClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9mKGNvbnRyb2wudmFsdWUpLnBpcGUoXG4gICAgICAgICAgICBkZWxheSg1MDApLCAvLyBTaW11bGF0ZSBuZXR3b3JrIGRlbGF5XG5cbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgaW52YWxpZDogJ1RoaXMgaXMgbm90IGEgd29ya2VtYWlsJyB9KS8vZXhpc3RpbmdVc2VybmFtZXMuaW5jbHVkZXModXNlcm5hbWUpID8geyB1c2VybmFtZVRha2VuOiB0cnVlIH0gOiBudWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC8vIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpIC8vIEhhbmRsZSBhbnkgZXJyb3JzXG4gICAgICAgICk7XG4gICAgfTtcbn0qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRpb25NZXNzYWdlKGVycm9yczogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgIGlmIChlcnJvcnNbJ21pbmxlbmd0aCddKSB7XG4gICAgICAgICAgICByZXR1cm4gYG1pbmltdW0gJHtlcnJvcnNbJ21pbmxlbmd0aCddWydyZXF1aXJlZExlbmd0aCddfSByZXF1aXJlZGA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydtYXhsZW5ndGgnXSkge1xuICAgICAgICAgICAgcmV0dXJuIGBtYXhpbXVtICR7ZXJyb3JzWydtYXhsZW5ndGgnXVsncmVxdWlyZWRMZW5ndGgnXX0gY2hhcmFjdGVyc2A7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0lucHV0IGNhbm5vdCBiZSBlbXB0eSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydpbnZhbGlkJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvcnNbJ2ludmFsaWQnXTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvcnNbJ2VtYWlsJ10pIHtcbiAgICAgICAgICAgIHJldHVybiAnRW50ZXIgYSB2YWxpZCBlbWFpbCc7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JzWydwYXR0ZXJuJ10pIHtcbiAgICAgICAgICAgIHJldHVybiAnRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdJbnZhbGlkIGlucHV0JztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ0ludmFsaWQgaW5wdXQnO1xufSJdfQ==
|
|
@@ -1009,6 +1009,17 @@ function phoneNumberValidator(dependent) {
|
|
|
1009
1009
|
return null;
|
|
1010
1010
|
};
|
|
1011
1011
|
}
|
|
1012
|
+
const customEmailValidator = (control) => {
|
|
1013
|
+
const email = control.value;
|
|
1014
|
+
// Replace the regular expression with the pattern you want to use.
|
|
1015
|
+
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
|
|
1016
|
+
if (emailPattern.test(email)) {
|
|
1017
|
+
return null; // Valid email
|
|
1018
|
+
}
|
|
1019
|
+
else {
|
|
1020
|
+
return { invalid: "Please use a work email; personal emails (e.g., @gmail, @outlook) are not accepted." }; // Invalid email
|
|
1021
|
+
}
|
|
1022
|
+
};
|
|
1012
1023
|
/*
|
|
1013
1024
|
export function workEmailValidation(): AsyncValidatorFn {
|
|
1014
1025
|
return (control: AbstractControl): Observable<ValidationErrors | null> => {
|
|
@@ -1096,7 +1107,7 @@ class FormInputComponent extends FieldType {
|
|
|
1096
1107
|
this.setDependents();
|
|
1097
1108
|
this.formControl.statusChanges.subscribe((state) => {
|
|
1098
1109
|
if (this.type === 'email') {
|
|
1099
|
-
this.showEmailIcon = (state === 'VALID') || (state === 'INVALID' && this.formControl.hasError('invalid'));
|
|
1110
|
+
this.showEmailIcon = ((state === 'VALID') || (state === 'INVALID' && this.formControl.hasError('invalid')) && this.form.touched);
|
|
1100
1111
|
}
|
|
1101
1112
|
});
|
|
1102
1113
|
this.formControl.valueChanges.subscribe((val) => {
|
|
@@ -1116,13 +1127,12 @@ class FormInputComponent extends FieldType {
|
|
|
1116
1127
|
setDependents() {
|
|
1117
1128
|
if (this.params?.dependent) {
|
|
1118
1129
|
this.dependent = this.form.get([this.params?.dependent]);
|
|
1130
|
+
this.dependentVal = this.getDependentVal(this.dependent.value);
|
|
1131
|
+
if (this.type === 'tel') {
|
|
1132
|
+
this.pretext = this.dependentVal?.dial_code;
|
|
1133
|
+
}
|
|
1119
1134
|
this.dependent?.valueChanges.subscribe((val) => {
|
|
1120
|
-
|
|
1121
|
-
this.dependentVal = val.length ? val[0] : null;
|
|
1122
|
-
}
|
|
1123
|
-
else {
|
|
1124
|
-
this.dependentVal = val;
|
|
1125
|
-
}
|
|
1135
|
+
this.dependentVal = this.getDependentVal(val);
|
|
1126
1136
|
this.formControl.reset();
|
|
1127
1137
|
this.formControl.setValue(this.inputVal);
|
|
1128
1138
|
if (this.type === 'tel') {
|
|
@@ -1131,6 +1141,16 @@ class FormInputComponent extends FieldType {
|
|
|
1131
1141
|
});
|
|
1132
1142
|
}
|
|
1133
1143
|
}
|
|
1144
|
+
getDependentVal(value) {
|
|
1145
|
+
let dependentValue;
|
|
1146
|
+
if (Array.isArray(value)) {
|
|
1147
|
+
dependentValue = value.length ? value[0] : null;
|
|
1148
|
+
}
|
|
1149
|
+
else {
|
|
1150
|
+
dependentValue = value;
|
|
1151
|
+
}
|
|
1152
|
+
return dependentValue;
|
|
1153
|
+
}
|
|
1134
1154
|
checkValidity(defaultInputState = 'focus') {
|
|
1135
1155
|
if (this.formControl && !this.formControl.valid && this.formControl.touched && !this.formControl.pending) {
|
|
1136
1156
|
this.inputState = 'invalid';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sarasanalytics-com-design-system.mjs","sources":["../../../projects/component-library/src/lib/component-library.service.ts","../../../projects/component-library/src/lib/component-library.component.ts","../../../projects/component-library/src/lib/button/button.component.ts","../../../projects/component-library/src/lib/button/button.component.html","../../../projects/component-library/src/lib/chips/chips.component.ts","../../../projects/component-library/src/lib/chips/chips.component.html","../../../projects/component-library/src/lib/avatar/avatar.component.ts","../../../projects/component-library/src/lib/avatar/avatar.component.html","../../../projects/component-library/src/lib/grid-cell/grid-cell.component.ts","../../../projects/component-library/src/lib/grid-cell/grid-cell.component.html","../../../projects/component-library/src/lib/header/header.component.ts","../../../projects/component-library/src/lib/header/header.component.html","../../../projects/component-library/src/lib/icon/icon.service.ts","../../../projects/component-library/src/lib/icon/icon.component.ts","../../../projects/component-library/src/lib/icon/icon.component.html","../../../projects/component-library/src/lib/toast/toast.component.ts","../../../projects/component-library/src/lib/toast/toast.component.html","../../../projects/component-library/src/lib/form-select/form-select.component.ts","../../../projects/component-library/src/lib/form-select/form-select.component.html","../../../projects/component-library/src/lib/stepper/stepper.component.ts","../../../projects/component-library/src/lib/stepper/stepper.component.html","../../../projects/component-library/src/lib/tool-tip/tool-tip.component.ts","../../../projects/component-library/src/lib/tool-tip/tool-tip.component.html","../../../projects/component-library/src/lib/calendar-header/calendar-header.component.ts","../../../projects/component-library/src/lib/calendar-header/calendar-header.component.html","../../../projects/component-library/src/lib/datepicker/datepicker.component.ts","../../../projects/component-library/src/lib/datepicker/datepicker.component.html","../../../projects/component-library/src/lib/tabs/tabs.component.ts","../../../projects/component-library/src/lib/tabs/tabs.component.html","../../../projects/component-library/src/lib/left-nav/left-nav.component.ts","../../../projects/component-library/src/lib/left-nav/left-nav.component.html","../../../projects/component-library/src/utils/validators.ts","../../../projects/component-library/src/lib/form-input/form-input.component.ts","../../../projects/component-library/src/lib/form-input/form-input.component.html","../../../projects/component-library/src/lib/card/card.component.ts","../../../projects/component-library/src/lib/card/card.component.html","../../../projects/component-library/src/lib/card/card-icon/card-icon.component.ts","../../../projects/component-library/src/lib/card/card-icon/card-icon.component.html","../../../projects/component-library/src/lib/card/card-footer-actions/card-footer-actions.component.ts","../../../projects/component-library/src/lib/card/card-footer-actions/card-footer-actions.component.html","../../../projects/component-library/src/lib/card/card-title-actions/card-title-actions.component.ts","../../../projects/component-library/src/lib/card/card-title-actions/card-title-actions.component.html","../../../projects/component-library/src/public-api.ts","../../../projects/component-library/src/sarasanalytics-com-design-system.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestLibraryService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-component-library',\n standalone: true,\n imports: [],\n template: `\n <p>\n component-library works!\n </p>\n `,\n styles: ``\n})\nexport class TestLibraryComponent {\n\n}\n","import { Component, Output, SimpleChanges } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { NgStyle } from '@angular/common';\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n selector: 'sa-button',\n standalone: true,\n imports: [NgIf, NgStyle],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css'\n})\n\nexport class ButtonComponent {\n @Input() id: string | number;\n @Input() type: string;\n @Input() state: string;\n @Input() size: string;\n @Input() text: string | number;\n @Input() ImagePath: string;\n @Input() iconPosition: string;\n @Input() href: string;\n @Input() hrefTarget: string;\n @Input() width: string;\n @Input() isSubmit: boolean = false;\n\n @Output() onClickEvent = new EventEmitter();\n @Output() onMouseInEvent = new EventEmitter();\n @Output() onMouseOutEvent = new EventEmitter();\n\n svgStyle = {}\n eventEmitObject = {}\n uuid: number = nextId++;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.svgStyle = {\n '-webkit-mask-image': `url(${this.ImagePath})`,\n 'mask-image': `url(${this.ImagePath})`,\n }\n this.eventEmitObject = {\n id: this.id\n }\n if (changes && changes['width'] && changes['width'].currentValue) {\n console.log(this.width)\n }\n }\n\n buttonClicked(evt: Event) {\n if (this.state == \"disabled\") return;\n this.onClickEvent.emit({\n ...this.eventEmitObject,\n evt\n });\n if (this.href != \"\") {\n if (this.hrefTarget == \"blank\") window.open(this.href);\n else if (this.hrefTarget == \"self\") location.href = this.href;\n }\n }\n\n mouseIn() {\n if (this.state == \"disabled\") return;\n this.onMouseInEvent.emit();\n }\n\n mouseOut() {\n if (this.state == \"disabled\") return;\n this.onMouseOutEvent.emit();\n }\n}\n","<button (click)=\"buttonClicked($event)\" id=\"sa-button-{{uuid}}\" class=\"btn-hide\"\n [type]=\"isSubmit ? 'submit' : 'button'\"></button>\n<!-- (click)=\"buttonClicked()\" on button instead of label breaks whole thing -->\n<label for=\"sa-button-{{uuid}}\" [ngStyle]=\"{'width':width}\" role=\"button\" tabindex=\"0\" (mouseenter)=\"mouseIn()\"\n (mouseleave)=\"mouseOut()\" (keydown.enter)=\"buttonClicked($event)\" for=\"sa-button\"\n class=\"sa-button {{state}} {{type}} {{size}}\">\n <div class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"(iconPosition == 'left' || iconPosition == 'both') ? 'block' : 'none'\"></div>\n {{text}}\n <div class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"(iconPosition == 'right' || iconPosition == 'both') ? 'block' : 'none'\"></div>\n</label>","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n selector: 'sa-chip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chips.component.html',\n styleUrl: './chips.component.css'\n})\nexport class ChipsComponent {\n @Input() id: string | number;\n @Input() iconPath: string;\n @Input() text: string | number;\n @Input() type: string;\n @Input() state: string;\n @Input() filling: string;\n @Input() iconPosition: string;\n @Input() largeStateIcon: string;\n @Input() largeStateText: string;\n\n @Output() onClickEvent = new EventEmitter();\n\n svgStyle = {}\n secondSvgStyle = {}\n eventEmitObject = {}\n uuid: number = nextId++;\n\n ngOnChanges(): void {\n this.svgStyle = {\n '-webkit-mask-image': `url(${this.iconPath})`,\n 'mask-image': `url(${this.iconPath})`,\n }\n this.secondSvgStyle = {\n '-webkit-mask-image': `url(${this.largeStateIcon})`,\n 'mask-image': `url(${this.largeStateIcon})`,\n }\n this.eventEmitObject = {\n id: this.id\n }\n }\n\n buttonClicked(evt: Event) {\n this.onClickEvent.emit({\n ...this.eventEmitObject,\n evt\n });\n }\n}\n","<div class=\"chip {{type}} {{state}} {{filling}}\">\n <button type=\"button\" (click)=\"buttonClicked($event)\" id=\"icon-button_{{uuid}}\" class=\"btn_hide\"></button>\n <!-- (click)=\"buttonClicked()\" on button instead of label breaks whole thing -->\n <label for=\"icon-button_{{uuid}}\" class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"((iconPosition == 'left' || iconPosition == 'both') && type != 'large') ? 'block' : 'none'\">\n </label>\n\n {{text}}\n\n <div class=\"second-svg-icon\" [style]=\"secondSvgStyle\" [style.display]=\"(type == 'large') ? 'block' : 'none'\"></div>\n\n {{type == 'large' ? largeStateText : \"\"}}\n\n <label for=\"icon-button_{{uuid}}\" class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"((iconPosition == 'right' || iconPosition == 'both') && type != 'large') ? 'block' : 'none'\">\n </label>\n</div>\n","import { Component, EventEmitter } from '@angular/core';\nimport { Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sa-avatar',\n standalone: true,\n imports: [NgIf],\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.css'\n})\nexport class AvatarComponent {\n @Input() id: string | number;\n @Input() imagePath: string;\n @Input() altText: string;\n @Input() size: string;\n\n @Output() onClickEvent = new EventEmitter\n @Output() onMouseInEvent = new EventEmitter\n @Output() onMouseOutEvent = new EventEmitter\n\n eventEmitObject = {}\n\n ngOnChanges(): void {\n this.eventEmitObject = {\n id: this.id\n }\n }\n\n avatarClicked(evt: Event) {\n this.onClickEvent.emit({\n ...this.eventEmitObject,\n evt\n })\n }\n\n mouseEnter(evt: Event) {\n this.onMouseInEvent.emit({\n ...this.eventEmitObject,\n evt\n })\n }\n\n mouseLeave(evt: Event) {\n this.onMouseOutEvent.emit({\n ...this.eventEmitObject,\n evt\n })\n }\n}\n","<div class=\"avatar {{size}}\" (click)=\"avatarClicked($event)\" (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\">\n <img *ngIf=\"imagePath\" class=\"avatar-img\" alt=\"{{altText}}\" src=\"{{imagePath}}\">\n <p *ngIf=\"!imagePath\" class=\"avatar-img\">{{altText}}</p>\n</div>\n","import { Component, EventEmitter } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { NgFor } from '@angular/common';\nimport { ICellRendererAngularComp, IHeaderAngularComp } from 'ag-grid-angular';\nimport { GridInterface } from '../../interfaces/grid-interface';\n\n@Component({\n selector: 'lib-grid-cell',\n standalone: true,\n imports: [\n AvatarComponent,\n ChipsComponent,\n ButtonComponent,\n NgFor\n ],\n templateUrl: './grid-cell.component.html',\n styleUrl: './grid-cell.component.css'\n})\nexport class GridCellComponent implements ICellRendererAngularComp, IHeaderAngularComp {\n params: GridInterface;\n rowNum: number;\n\n @Output() onClickButtonEvent = new EventEmitter();\n @Output() onClickChipEvent = new EventEmitter();\n @Output() onClickLinkEvent = new EventEmitter();\n @Output() onClickAvatarEvent = new EventEmitter();\n\n buttonClicked(evt: Event) {\n this.params.buttonClicked && this.params.buttonClicked({ // calls the function passed via params in gridInterface.\n ...evt,\n rowId: this.rowNum\n });\n this.onClickButtonEvent.emit({ ...evt, rowId: this.rowNum }); // this event isn't caught by anything. \n }\n\n // above function behavior is same for all functions in this class\n\n chipClicked(evt: Event) {\n this.params.chipClicked && this.params.chipClicked({\n ...evt,\n rowId: this.rowNum\n });\n this.onClickChipEvent.emit({ ...evt, rowId: this.rowNum });\n }\n\n linkClicked() {\n if (this.params.cellType != \"interactive\") return;\n\n this.params.linkClicked && this.params.linkClicked({ //calling function passed in params with rowId object in arguments\n rowId: this.rowNum\n });\n\n if (this.params.interactiveLink != \"\") {\n if (this.params.interactiveLinkTarget == \"blank\") {\n window.open(this.params.interactiveLink)!;\n }\n else if (this.params.interactiveLinkTarget == \"self\") {\n location.href = this.params.interactiveLink!;\n }\n }\n this.onClickLinkEvent.emit({ rowId: this.rowNum });\n }\n\n avatarClicked(evt: Event) {\n this.params.avatarClicked && this.params.avatarClicked({\n ...evt,\n rowId: this.rowNum\n });\n this.onClickChipEvent.emit({ ...evt, rowId: this.rowNum });\n }\n\n agInit(inParams: any): void { // must exist when class implements ICellRendererAngularComp / IHeaderAngularComp\n\n this.rowNum = inParams.rowIndex;\n this.params = inParams.value; // inParams.value exists when gridCell is rendered as cell, `cellRenderer: GridCellComponent`\n if (inParams.value == undefined) { // inParams.value is undefined when gridCell is rendered as header, `headerComponent: GridCellComponent`, \n this.params = inParams\n }\n // console.log(this.params);\n }\n\n refresh(params: any) { // must exist when class implements ICellRendererAngularComp / IHeaderAngularComp\n return false; // not sure what this return value does.\n }\n\n}\n","<div class=\"grid-cell {{params.cellType}}\">\n\n <img class=\"icons\" src={{params.iconPath}} [style.display]=\"(params.viewLeadingIcon) ? 'block' : 'none'\" alt=\"\">\n\n <sa-avatar [id]=\"params.avatarConfig?.id\" [altText]=\"params.avatarConfig?.altText\"\n [imagePath]=\"params.avatarConfig?.imagePath\" [size]=\"params.avatarConfig?.size\"\n [style.display]=\"(params.viewAvatar) ? 'block' : 'none'\" (onClickEvent)=\"avatarClicked($event)\">\n </sa-avatar>\n\n <div class=\"grid-text\" [style.display]=\"(params.viewText) ? 'block' : 'none'\">\n <div [style.display]=\"(params.text) ? 'block' : 'none'\" (click)=\"linkClicked()\" class=\"main-text\">{{params.text}}\n </div>\n\n <div [style.display]=\"(params.subText) ? 'block' : 'none'\" class=\"sub-text\">{{params.subText}}</div>\n </div>\n\n <img class=\"icons\" src={{params.iconPath}} [style.display]=\"(params.viewTrailingIcon) ? 'block' : 'none'\" alt=\"\">\n\n\n <sa-chip *ngFor=\"let config of params.chipConfig, let i = index\" [id]=\"config.id\" [filling]=\"config.filling\"\n id=\"chip_{{rowNum}}_{{config.id}}\" [iconPath]=\"config.iconPath\" [iconPosition]=\"config.iconPosition\"\n [largeStateIcon]=\"config.largeStateIcon\" [state]=\"config.state\" [type]=\"config.type\" [text]=\"config.text\"\n [style.display]=\"(params.viewChip) ? 'block' : 'none'\" (onClickEvent)=\"chipClicked($event)\"></sa-chip>\n\n <sa-button [iconPosition]=\"params.buttonConfig?.iconPosition\" [ImagePath]=\"params.buttonConfig?.imagePath\"\n [id]=\"params.buttonConfig?.id\" [size]=\"params.buttonConfig?.size\" [state]=\"params.buttonConfig?.state\"\n [type]=\"params.buttonConfig?.type\" [text]=\"params.buttonConfig?.text\" [href]=\"params.buttonConfig?.href\"\n [hrefTarget]=\"params.buttonConfig?.hrefTarget\" [style.display]=\"(params.viewButton) ? 'block' : 'none'\"\n (onClickEvent)=\"buttonClicked($event)\"></sa-button>\n\n</div>\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { Input } from '@angular/core';\nimport { NgFor } from '@angular/common';\nimport { ButtonComponent } from '../button/button.component';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sa-header',\n standalone: true,\n imports: [ChipsComponent, NgFor, ButtonComponent, NgIf],\n templateUrl: './header.component.html',\n styleUrl: './header.component.css'\n})\nexport class HeaderComponent {\n @Input() info: string[][];\n @Input() headerName: string;\n @Input() chipConfig: string[][];\n @Input() buttonHelper: string;\n @Input() buttonMain: string;\n\n @Output() mainButtonClicked = new EventEmitter();\n @Output() helperButtonClicked = new EventEmitter();\n\n clicked(num: number) {\n num ? this.mainButtonClicked.emit() : this.helperButtonClicked.emit();\n }\n}\n","<div class=\"header\">\n <div class=\"header-content\">\n <div class=\"heading\">\n <div class=\"header-name\">{{headerName}}</div>\n <div *ngFor=\"let chip of chipConfig\">\n <sa-chip type=\"regular\" [state]=\"chip[1]\" filling=\"filled\" [text]=\"chip[0]\"></sa-chip>\n </div>\n </div>\n <div class=\"header-info\">\n <div class=\"info-item\" *ngFor=\"let item of info\">\n <img [src]=\"item[1]\" alt=\"\">\n {{item[0]}}\n </div>\n </div>\n </div>\n <div class=\"actions\">\n <sa-button *ngIf=\"buttonHelper\" (onClickEvent)=\"clicked(0)\" [text]=\"buttonHelper\" type=\"transparent\" size=\"medium\"\n state=\"default\">\n </sa-button>\n <sa-button *ngIf=\"buttonMain\" (onClickEvent)=\"clicked(1)\" [text]=\"buttonMain\" type=\"primary\" size=\"medium\"\n state=\"default\"></sa-button>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IconService {\n\n http = inject(HttpClient);\n private path: string = 'assets/';\n\n constructor() { }\n\n getSvg(iconName: string): Observable<string> {\n return this.http.get(`${this.path}${iconName}.svg`, { responseType: 'text' });\n }\n\n setIconPath(path: string) {\n if (path) this.path = path;\n }\n}","import { Component, inject, Inject, Input, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { IconService } from './icon.service';\nimport { Observable } from 'rxjs';\nimport { HttpClientModule } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sa-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.css',\n encapsulation: ViewEncapsulation.None\n})\nexport class IconComponent {\n iconService = inject(IconService);\n sanitizer = inject(DomSanitizer);\n\n @Input('icon') icon: string;\n @Input('size') size: string;\n @Input('color') color: string;\n\n svgIcon: any;\n iconStyles: any = {\n // fontSize: '44px',\n // color: 'red'\n };\n\n constructor() {\n }\n ngOnInit() {\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['icon']) {\n if (this.icon) {\n this.iconService.getSvg(this.icon).subscribe((svg) => {\n this.svgIcon = this.sanitizer.bypassSecurityTrustHtml(svg);\n })\n } else {\n this.svgIcon = '';\n }\n }\n if (changes['size'] || changes['color']) {\n this.iconStyles.fontSize = this.size + 'px';\n this.iconStyles.color = this.color;\n }\n }\n}","<span class=\"sa-icon\" [innerHTML]=\"svgIcon\" [ngStyle]=\"iconStyles\">\n\n</span>\n\n<!-- <img *ngIf=\"svgIcon\" [src]=\"svgIcon\" [ngStyle]=\"iconStyles\" alt=\"icon\"> -->","import { Component, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'sa-toast',\n standalone: true,\n imports: [CommonModule, ButtonComponent, IconComponent, ButtonComponent, MatIcon, NgIf],\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.css'\n})\nexport class ToastComponent implements OnChanges {\n @Input() finishPercentage: number = -1;\n @Input() heading: string;\n @Input() subHeading: string;\n @Input() statusIcon: string = '';\n @Input() status: 'success' | 'failure' | 'caution' | 'positive' | 'negative' | 'tentative';\n @Input() firstButtonName: string;\n @Input() secondButtonName: string;\n @Input() closable: boolean;\n @Input() filled: boolean = true;\n @Input() width: number | string = '';\n\n @Output() toastEvent: EventEmitter<IToastEvent> = new EventEmitter();\n @Output() firstButton = new EventEmitter();\n @Output() secondButton = new EventEmitter();\n @Output() closed = new EventEmitter();\n\n\n toastStyles = { backgroundColor: 'transparent', color: '', width: this.width + '%' };\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes && (changes['status'] || changes['filled'])) {\n this.statusIcon = toastInfo[this.status].icon;\n this.toastStyles.backgroundColor = toastInfo[this.status].bgColor;\n this.toastStyles.color = toastInfo[this.status].color;\n }\n if (changes && changes['width']) {\n this.toastStyles.width = typeof this.width === 'number' ? this.width + '%' : this.width;\n }\n\n if (this.finishPercentage > 100) this.finishPercentage = 100;\n\n }\n\n clicked(num: number) {\n if (num == 0) this.firstButton.emit();\n else if (num == 1) this.secondButton.emit();\n else if (num == 2) this.closed.emit();\n }\n\n closeToast() {\n this.toastEvent.emit({\n type: 'TOAST_CLOSED',\n params: {}\n })\n }\n\n}\n\nconst toastInfo: any = {\n 'success': {\n icon: 'checkmark',\n bgColor: '#EBF5E9',\n color: '#246B16'\n },\n 'failure': {\n icon: 'error-circle',\n bgColor: '#F8E9E9',\n color: '#861C15'\n },\n 'caution': {\n icon: 'warning',\n bgColor: '',\n color: ''\n }\n}\n\nexport interface IToastEvent {\n type: 'TOAST_CLOSED' | 'ACTION_CLICKED';\n event?: any;\n params?: any;\n}","<div class=\"toast\" [ngStyle]=\"toastStyles\">\n <div class=\"content\">\n <div class=\"toast-icon {{status}}\">\n <sa-icon [icon]=\"statusIcon\" size=\"24\"></sa-icon>\n <!-- <img [src]=\"statusIcon\" alt=\"\"> -->\n </div>\n <div class=\"head-subhead\">\n <p class=\"heading\">{{heading}}</p>\n <p class=\"subheading\">{{subHeading}}</p>\n </div>\n @if(closable){\n <!-- <img class=\"cross\" (click)=\"closeToast()\" [src]=\"crossmark\" alt=\"\"> -->\n <sa-icon class=\"cross\" icon=\"crossmark\" size=\"24\" (click)=\"closeToast()\"></sa-icon>\n }\n </div>\n <!-- <div class=\"controls\">\n <sa-button *ngIf=\"firstButtonName\" (onClickEvent)=\"clicked(0)\" [text]=\"firstButtonName\" type=\"transparent\"\n size=\"medium\" state=\"default\">\n </sa-button>\n <sa-button *ngIf=\"secondButtonName\" (onClickEvent)=\"clicked(1)\" [text]=\"secondButtonName\" type=\"outline\"\n size=\"medium\" state=\"default\">\n </sa-button>\n </div> -->\n\n <!-- <div *ngIf=\"finishPercentage >= 0\" class=\"progress-bar\">\n <div class=\"progress-done\" [style.width]=\"finishPercentage+'%'\"></div>\n <div class=\"progress-left\" [style.width]=\"100-finishPercentage+'%'\"></div>\n </div> -->\n</div>","import { Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'lib-form-select',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n FormlyModule,\n ReactiveFormsModule,\n NgSelectModule,\n ChipsComponent,\n NgIf,\n NgFor\n ],\n templateUrl: './form-select.component.html',\n styleUrl: './form-select.component.css'\n})\nexport class FormSelectComponent extends FieldType<FieldTypeConfig> {\n selectables: any;\n params: any;\n\n svgStyle = {};\n openState: boolean = false;\n topLabel: boolean;\n startInd: number = 0;\n labelLimit: number = 2;\n\n placeholderLabel: string;\n\n ngOnInit() {\n this.selectables = this.field.props.options;\n this.params = this.field.props['params'];\n this.placeholderLabel = this.params.label;\n console.log('search', this.field.props['searchable'])\n this.svgStyle = {\n '-webkit-mask-image': `url(${this.params.dropIcon})})`,\n 'mask-image': `url(${this.params.dropIcon})`,\n }\n }\n openClose(state: boolean) {\n if (this.field.props.disabled) return;\n this.openState = state;\n if (state || this.formControl.value?.length > 0) {\n this.placeholderLabel = '';\n } else {\n this.placeholderLabel = this.params.label;\n }\n }\n shiftLabel(action: string) {\n if (action == 'clicked') this.startInd++;\n if (action == 'cleared') this.startInd = 0;\n if (action == 'removed' && this.startInd > 0) this.startInd--;\n }\n checkForZero(selected: any, state?: boolean) {\n this.topLabel = selected.length == 0 ? false : true;\n // console.log(\"test\", this.formControl.value?.length)\n // console.log(\"test\", this.openState)\n // console.log(\"placeholder--- \", this.placeholderLabel)\n // console.log(\"params.label--- \", this.params.label)\n if (this.openState || this.formControl.value?.length > 0) {\n this.placeholderLabel = '';\n } else {\n this.placeholderLabel = this.params.label;\n }\n }\n}\n","<div [style.visibility]=\"(openState || topLabel) ? 'visible' : 'hidden'\" class=\"clicked-label\">{{params.label}}</div>\n<div class=\"ng-select-field {{openState ? 'activated' : 'idle'}} {{field.props.disabled ? 'disabled' : ''}}\">\n\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"left-icon svg-icon\" [style]=\"svgStyle\"\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\n *ngIf=\"(params.dropIconPosition == 'left' || params.dropIconPosition == 'both')\">\n </div>\n\n <ng-select (change)=\"checkForZero($event)\" (remove)=\"shiftLabel('removed')\" (clear)=\"shiftLabel('cleared')\"\n (search)=\"openClose(true)\" (focus)=\"openClose(true)\" (blur)=\" openClose(false)\" [isOpen]=\"openState\"\n [placeholder]=\"placeholderLabel\" bindLabel=\"name\" [items]=\"selectables\" [multiple]=\"params.multiple\"\n [formControl]=\"formControl\" [style] [formlyAttributes]=\"field\" [searchable]=\"field.props['searchable']\">\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div *ngFor=\"let item of (items ? items.slice(startInd,startInd+labelLimit): [])\">\n <sa-chip (onClickEvent)=\" (!field.props.disabled) ? clear(item) : null\" [id]=\"item.id\"\n [iconPath]=\"params.iconPath\" [text]=\"item.name\" [type]=\"params.type\"\n [state]=\"field.props.disabled ? 'neutral' : params.state\" [filling]=\"params.filling\"\n [iconPosition]=\"params.iconPosition\">\n </sa-chip>\n </div>\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\" *ngIf=\"items.length > (startInd+labelLimit)\">\n <sa-chip text=\"+{{items.length-(startInd+labelLimit)}}\" type=\"regular\" state=\"default\" filling=\"filled\">\n </sa-chip>\n </div>\n <div (click)=\"shiftLabel('cleared')\" *ngIf=\"startInd == items.length-labelLimit\" class=\"ng-value overflow-label\">\n <sa-chip text=\"...\" type=\"regular\" state=\"default\" filling=\"filled\">\n </sa-chip>\n </div>\n </ng-template>\n </ng-select>\n\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"right-icon svg-icon\" [style]=\"svgStyle\"\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\n *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\">\n </div>\n\n</div>\n<div class=\"support-label\">{{params.supportText}}</div>","import { Component, EventEmitter, Input } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { NgFor, NgIf } from '@angular/common';\nimport { Output } from '@angular/core';\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n selector: 'sa-stepper',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.css'\n})\nexport class StepperComponent extends FieldType<FieldTypeConfig> {\n @Input() latestStep: number = -1;\n @Input() editable: boolean = true;\n @Input() stepLabels: any;\n @Input() doneIcon: string;\n\n @Output() stepped = new EventEmitter;\n\n uuid: number = nextId++;\n\n isDisabled: boolean = false;\n\n tickIcon = {};\n\n // {\n // '-webkit-mask-image': `url(${this.ImagePath})`,\n // 'mask-image': `url(${this.ImagePath})`,\n // }\n\n ngOnInit() {\n if (this.field.props) {\n this.stepLabels = this.field.props.options;\n this.editable = this.field.props['params'].editable;\n this.latestStep = this.model[`${this.key}`] ? this.model[`${this.key}`].id : -1;\n this.doneIcon = this.field.props['params'].doneIcon;\n\n this.isDisabled = this.field.props.disabled!;\n }\n console.log(this.doneIcon);\n this.tickIcon = {\n '-webkit-mask-image': `url(${this.doneIcon})`,\n 'mask-image': `url(${this.doneIcon})`\n };\n }\n\n update(chosen: number) {\n if (!this.editable || this.field.props?.disabled) return;\n this.latestStep = chosen;\n if (!this.formControl) {\n this.stepped.emit(this.latestStep);\n return;\n }\n this.formControl.setValue({\n id: this.latestStep\n });\n }\n}\n","<div class=\"stepper {{isDisabled ? 'disabled' : 'active'}}\">\n <div class=\"steps\" *ngFor=\"let label of stepLabels; let i = index\">\n <input id=\"stepper-{{uuid}}-{{i}}\" (change)=\"update(i)\" name=\"stepper-radio-{{uuid}}\"\n [checked]=\"i == latestStep ? true: false\" class=\"step-hide\" type=\"radio\">\n <div\n class=\"label-wrapper {{i < latestStep ? 'done' : ''}} {{i > latestStep ? 'default' : ''}} {{i == latestStep ? 'latest' : ''}}\">\n <label [style]=\"i < latestStep ? tickIcon : ''\" for=\"stepper-{{uuid}}-{{i}}\"\n class=\"step-label-icon {{i > latestStep ? 'undone' : ''}}\">\n </label>\n <label for=\"stepper-{{uuid}}-{{i}}\" class=\"step-label-text\">{{label.name}}</label>\n </div>\n <div *ngIf=\" i !=stepLabels.length-1\" class=\"line {{i < latestStep ? 'done' : 'default'}}\"></div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { NgFor } from '@angular/common';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sa-tool-tip',\n standalone: true,\n imports: [ButtonComponent, NgFor, NgIf],\n templateUrl: './tool-tip.component.html',\n styleUrl: './tool-tip.component.css'\n})\nexport class ToolTipComponent {\n @Input() messages: string[];\n @Input() pointerPosition: string;\n\n @Output() toolTipSkipped = new EventEmitter();\n @Output() toolTipSeen = new EventEmitter();\n arrowIcon = \"../assets/arrow.svg\";\n pointer = \"../assets/pointer-polygon.svg\";\n\n msgInd: number = 0; // is the index of current message being displayed\n\n updateMsgInd(k: number) {\n this.msgInd += k;\n if (this.msgInd < 0) this.msgInd = 0;\n if (this.msgInd > this.messages.length - 1) {\n this.msgInd = this.messages.length - 1;\n this.toolTipSeen.emit();\n }\n }\n\n skipToolTip() {\n this.toolTipSkipped.emit();\n }\n\n}\n","<div class=\"tool-tip-vertical\">\n <div class=\"tool-tip-pointer-icon pointer-top\" *ngIf=\"pointerPosition == 'top'\"></div>\n <div class=\"tool-tip-horizontal\">\n <div class=\"tool-tip-pointer-icon pointer-left\" *ngIf=\"pointerPosition == 'left'\"></div>\n <div class=\"tool-tip\">\n <div class=\"tool-tip-content\">\n <div class=\"tool-tip-heading\">Heading</div>\n <div *ngFor=\"let msg of messages, let i = index\" class=\"tool-tip-message {{msgInd != i ? 'hidden-msg': ''}}\">\n {{msg}}\n </div>\n </div>\n <div class=\"tool-tip-break\">\n </div>\n <div class=\"tool-tip-controls\">\n <div class=\"tool-tip-navigate\">\n <img class=\"left-icon tool-tip-navigate-icon\" (click)=\"updateMsgInd(-1)\" [src]=\"arrowIcon\" alt=\"\">\n {{msgInd+1}} of {{messages.length}}\n <img class=\"right-icon tool-tip-navigate-icon\" (click)=\"updateMsgInd(1)\" [src]=\"arrowIcon\" alt=\"\">\n </div>\n <div class=\"tool-tip-control-buttons\">\n <sa-button (onClickEvent)=\"skipToolTip()\" class=\"skip-button\" text=\"Skip\" type=\"transparent\" size=\"medium\"\n state=\"default\"></sa-button>\n <sa-button (onClickEvent)=\"updateMsgInd(1)\" text=\"Next\" type=\"primary\" size=\"medium\" state=\"default\">\n </sa-button>\n </div>\n </div>\n </div>\n <div class=\"tool-tip-pointer-icon pointer-right\" *ngIf=\"pointerPosition == 'right'\"></div>\n </div>\n <div class=\"tool-tip-pointer-icon pointer-bottom\" *ngIf=\"pointerPosition == 'bottom'\"></div>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {\n DateAdapter,\n MatDateFormats,\n MAT_DATE_FORMATS,\n} from '@angular/material/core';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButton } from '@angular/material/button';\nimport { NgFor } from '@angular/common';\nimport { MatDateRangePicker } from '@angular/material/datepicker';\n\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n templateUrl: './calendar-header.component.html',\n styleUrls: ['./calendar-header.component.css'],\n standalone: true,\n imports: [\n NgFor,\n MatIconModule,\n MatButton\n ],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarHeaderComponent<D> implements OnDestroy {\n uuid: number = nextId++;\n\n private readonly destroy$ = new Subject<void>();\n\n constructor(\n private calendar: MatCalendar<D>, // calendar instance of picker\n private dateAdapter: DateAdapter<D>, // native or moment date adapter\n private picker: MatDateRangePicker<D>,\n @Inject(MAT_DATE_FORMATS) private dateFormats: MatDateFormats, // for formatting\n cdr: ChangeDetectorRef\n ) {\n // make sure your header stays in sync with the calendar:\n calendar.stateChanges\n .pipe(takeUntil(this.destroy$)) // unsubscribe when destroyed\n .subscribe(() => cdr.markForCheck());\n\n }\n\n selectedPreset = \"Custom\"\n presets = [\n \"This Quarter\",\n \"Last Quarter\",\n \"Last 6 Months\",\n \"This Year\",\n \"Last Year\",\n \"Custom\"\n ]\n // active date label rendered between the arrow buttons\n\n ngOnInit() {\n const currentRange: any = this.calendar.selected;\n\n currentRange?.start.setHours(0, 0, 0, 0);\n currentRange?.end.setHours(0, 0, 0, 0);\n\n // To pre-select a preset when the calendar opens.\n // Match the already selected date range with the date-ranges of all presets.\n // If already selected date range matches with a preset, pre-select it.\n\n for (let i = 0; i < this.presets.length; i++) {\n const tempRange = this.findDate(this.presets[i]);\n if (tempRange.newStart.getTime() == currentRange.start.getTime() && tempRange.newEnd.getTime() == currentRange.end.getTime()) {\n this.selectedPreset = this.presets[i];\n break;\n }\n }\n }\n\n get periodLabel(): string {\n // use date adapter to format the label, e.g. \"SEP 2020\"\n return this.dateAdapter\n .format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n\n previousClicked(mode: 'month' | 'year'): void {\n this.changeDate(mode, -1);\n }\n\n nextClicked(mode: 'month' | 'year'): void {\n this.changeDate(mode, 1);\n }\n\n changeView() {\n this.calendar.currentView =\n this.calendar.currentView == \"month\"\n ? \"year\"\n : this.calendar.currentView == \"year\"\n ? \"multi-year\"\n : \"month\";\n }\n\n today = new Date();\n\n presetChanged(evt: any) {\n const newRange: any = this.findDate(evt.target.value);\n this.calendar.activeDate = newRange.newStart;\n this.picker.select(newRange.newStart);\n this.picker.select(newRange.newEnd);\n }\n\n findDate(selected: string) {\n const date = this.today.getDate();\n const month = this.today.getMonth();\n const year = this.today.getFullYear();\n let newRange: any;\n this.selectedPreset = selected;\n switch (selected) {\n case \"This Quarter\": {\n const thisQuarterMonth = Math.floor(month / 3) * 3;\n const start = this.dateAdapter.createDate(year, thisQuarterMonth, 1);\n const end = this.dateAdapter.createDate(year, thisQuarterMonth + 3, 1);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"Last Quarter\": {\n const lastQuarterMonth = (Math.floor(month / 3) * 3) - 3;\n const start = this.dateAdapter.createDate(year, lastQuarterMonth, 1);\n const end = this.dateAdapter.createDate(year, lastQuarterMonth + 3, 1);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"Last 6 Months\": {\n const end = this.dateAdapter.createDate(year, month, date);\n const start = this.dateAdapter.addCalendarMonths(end, -6);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"This Year\": {\n const start = this.dateAdapter.createDate(year, 0, 1);\n const end = this.dateAdapter.createDate(year, 11, 31);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"Last Year\": {\n const start = this.dateAdapter.createDate(year - 1, 0, 1);\n const end = this.dateAdapter.createDate(year - 1, 11, 31);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n default: {\n newRange = {\n newStart: new Date(),\n newEnd: new Date(),\n }\n }\n }\n return newRange;\n }\n\n private changeDate(mode: 'month' | 'year', amount: -1 | 1): void {\n // increment or decrement month or year\n this.calendar.activeDate =\n mode === 'month'\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, amount)\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, amount);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(); // will trigger unsubscription in takeUntil\n }\n}\n","<div class=\"range-preset\">\n <div class=\"preset\" *ngFor=\"let preset of presets, let i = index\">\n <label class=\"preset-label {{preset == selectedPreset ? 'preset-selected' : ''}}\"\n for=\"preset-radio-{{i}}\">{{preset}}</label>\n <input class=\"preset-radio\" (change)=\"presetChanged($event)\" [checked]=\"preset == selectedPreset\"\n id=\"preset-radio-{{i}}\" type=\"radio\" name=\"preset-radios-{{uuid}}\" value=\"{{preset}}\">\n </div>\n</div>\n\n<div class=\"header\">\n <button mat-icon-button (click)=\"previousClicked('month')\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <button mat-button class=\"header-label\" (click)=\"changeView()\">{{ periodLabel }}</button>\n\n <button mat-icon-button (click)=\"nextClicked('month')\">\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { NgFor } from '@angular/common';\nimport { NgIf } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { CalendarHeaderComponent } from '../calendar-header/calendar-header.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sa-datepicker',\n standalone: true,\n providers: [],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n NgFor,\n NgIf,\n ReactiveFormsModule,\n CalendarHeaderComponent,\n CommonModule,\n MatNativeDateModule\n ],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.css'\n})\nexport class DatepickerComponent extends FieldType<FieldTypeConfig> {\n @Input() range: any;\n\n readonly CalendarHeaderComponent = CalendarHeaderComponent;\n\n}\n","<mat-form-field class=\"date-picker\">\n <mat-label>Choose a date</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\" [formGroup]=\"range\">\n <input formControlName=\"start\" matStartDate placeholder=\"Start date\">\n <input formControlName=\"end\" matEndDate placeholder=\"End date\">\n </mat-date-range-input>\n <mat-hint>MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker [calendarHeaderComponent]=\"CalendarHeaderComponent\" #picker>\n </mat-date-range-picker>\n</mat-form-field>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TabInterface } from '../../interfaces/tab-interface';\nimport { NgFor } from '@angular/common';\nimport { NgIf } from '@angular/common';\n\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n@Component({\n selector: 'sa-tabs',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.css'\n})\nexport class TabsComponent {\n @Input() tabs: TabInterface[];\n @Input() type: string;\n @Input() defaultTab: number;\n\n @Output() tabChanged = new EventEmitter();\n\n\n uuid: number = nextId++;\n svgStyle: any = [];\n\n ngOnChanges(): void {\n this.svgStyle = this.tabs.map((item) => {\n return {\n '-webkit-mask-image': `url(${item.tabIcon})`,\n 'mask-image': `url(${item.tabIcon})`,\n }\n })\n }\n tabChange(evt: any) {\n this.tabChanged.emit(evt.target.value)\n }\n}\n","<div class=\"tab-wrapper {{type}}\">\n <div class=\"tabs\">\n <div *ngFor=\"let item of tabs, let i = index\" class=\"tab-item\">\n <input [checked]=\"(defaultTab == i) ? true : false\" [value]=\"i\" (change)=\"tabChange($event)\"\n id=\"tab-check-{{i}}-{{uuid}}\" class=\"tab-checks\" type=\"radio\" name=\"tab-checkbox-{{uuid}}\">\n <label for=\"tab-check-{{i}}-{{uuid}}\" class=\"tab-label\">\n <div *ngIf=\"item.iconPosition == 'left' || item.iconPosition == 'both'\" class=\"svg-icon\" [style]=\"svgStyle[i]\">\n </div>\n {{item.tabName}}\n <div *ngIf=\"item.iconPosition == 'right' || item.iconPosition == 'both'\" class=\"svg-icon\" [style]=\"svgStyle[i]\">\n </div>\n <div class=\"badge\" *ngIf=\"item.badgeContent\">{{item.badgeContent}}</div>\n </label>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { IconComponent } from '../icon/icon.component';\n// import { AvatarComponent } from '../avatar/avatar.component';\n\n@Component({\n selector: 'sa-left-nav',\n standalone: true,\n imports: [\n CommonModule,\n AvatarComponent,\n IconComponent\n ],\n templateUrl: './left-nav.component.html',\n styleUrl: './left-nav.component.css'\n})\nexport class LeftNavComponent {\n\n @Input('data') data: ILeftNav;\n @Output('clickEvent') clickEvent: EventEmitter<ILeftNavClickEvent>;\n\n // @Inject(ActivatedRoute) activeRouteService: ActivatedRoute;\n // @Inject(Router) routerService: Router;\n\n private activeItem: ILeftNavItem | null;\n\n constructor(private route: ActivatedRoute, private router: Router) {\n this.clickEvent = new EventEmitter();\n }\n\n ngOnInit() {\n console.log(this.data.items);\n if (!this.data.footerItems) {\n this.data.footerItems = data.footerItems;\n }\n if (this.data?.items?.length) {\n this.onNavItemClick(this.data.items[0], 0);\n }\n }\n\n setItemActive(index: number) {\n try {\n if (this.activeItem) {\n this.activeItem.active = false;\n }\n if (this.data?.items?.length) {\n this.activeItem = this.data.items[index];\n this.activeItem.active = true;\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n onNavItemClick(item: ILeftNavItem, index: number, event: any = null) {\n console.log(item, index);\n\n this.clickEvent.emit({\n event,\n type: 'NAV_ITEM_CLICK',\n item\n });\n\n if (!item.disable && item.path) {\n this.setItemActive(index);\n this.router.navigate([item.path])\n }\n }\n\n onFooterItemClick(item: ILeftNavItem, index: number, event: any = null) {\n this.clickEvent.emit({\n event,\n type: 'FOOTER_ITEM_CLICK',\n item\n });\n }\n\n\n}\n\nexport interface ILeftNav {\n items?: ILeftNavItem[];\n footerItems?: ILeftNavItem[];\n}\nexport interface ILeftNavItem {\n title: string,\n // icon_url?: string,\n icon?: string,\n disable?: boolean,\n tooltip?: string,\n relativePath?: boolean,\n path?: string,\n active?: boolean,\n type?: 'ICON' | 'AVATAR';\n}\nexport interface ILeftNavClickEvent {\n type: 'NAV_ITEM_CLICK' | 'FOOTER_ITEM_CLICK' | 'LOGO_CLICK';\n event: any,\n item: ILeftNavItem\n}\nexport enum ILeftNavTypes {\n\n}\n\nconst data: ILeftNav = {\n items: [{\n title: 'Home',\n icon: '',\n disable: false,\n tooltip: '',\n relativePath: true,\n path: 'home'\n }, {\n title: 'Pricing',\n icon: '',\n disable: true,\n tooltip: '',\n relativePath: true,\n path: ''\n }, {\n title: '',\n icon: '',\n disable: true,\n tooltip: '',\n relativePath: true,\n path: ''\n }],\n footerItems: [{\n title: 'Help',\n icon: 'chathelp',\n disable: true,\n tooltip: ''\n }, {\n title: 'Name',\n disable: false,\n tooltip: '',\n type: 'AVATAR'\n }, {\n title: 'Chevron',\n icon: 'doublechevron',\n disable: true,\n tooltip: ''\n }]\n}","<div class=\"sa-left-nav\">\n\n <div class=\"sa-left-nav-container\">\n <div class=\"sa-left-nav-logo\">\n <!-- <span class=\"sa-logo\"></span> -->\n <sa-icon icon=\"saras_white\" size=\"40\"></sa-icon>\n </div>\n <div class=\"sa-left-nav-items\">\n @if(data && data.items && !!data.items.length){\n <div class=\"sa-left-nav-items-container\">\n <ng-container *ngFor=\"let item of data.items; let i = index\">\n <div class=\"sa-left-nav-item\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onNavItemClick(item, i, $event)\">\n\n <sa-icon class=\"sa-left-nav-item-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span class=\"sa-left-nav-item-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url + ')' }\"></span> -->\n </div>\n </ng-container>\n </div>\n }\n </div>\n <div class=\"sa-left-nav-footer\">\n @if(data && data.footerItems && !!data.footerItems.length){\n <div class=\"sa-left-nav-footer-container\">\n <ng-container *ngFor=\"let item of data.footerItems; let i = index\">\n <div class=\"sa-left-nav-footer-item\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onFooterItemClick(item, i, $event)\">\n @if(item.type === 'AVATAR'){\n <!-- <span class=\"sa-left-nav-footer-name\">ET</span> -->\n <sa-avatar altText=\"ET\" [imagePath]=\"''\" size=\"extra-small\"></sa-avatar>\n }@else{\n <sa-icon class=\"sa-left-nav-footer-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span class=\"sa-left-nav-footer-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url || '' + ')' }\"></span> -->\n }\n </div>\n </ng-container>\n </div>\n }\n </div>\n </div>\n\n <div class=\"sa-left-nav-content\">\n <ng-content></ng-content>\n </div>\n\n</div>","\nimport { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { catchError, debounceTime, delay, distinctUntilChanged, map, Observable, of, Subject, switchMap } from 'rxjs';\n\nexport function phoneNumberValidator(dependent?: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const dependentFormControl = dependent ? control.parent?.get(dependent) : null;\n if (dependentFormControl && !!dependentFormControl.value?.length) {\n console.log('validator', dependentFormControl.value);\n\n if (dependentFormControl.value[0].id === 0) {\n if (!/^\\+1[2-9]\\d{2}[2-9]\\d{6}$/.test(control.value)) {\n return { invalid: 'invalid phone number' };\n }\n }\n }\n return null;\n }\n}\n/*\nexport function workEmailValidation(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> => {\n if (!control.value) {\n return of(null); // No value to validate\n }\n\n !control.pending && control.markAsPending();\n // !control.touched && control.markAsTouched();\n // return of({ invalid: 'Enter your work email' });\n return of(null);\n return new Observable((ob) => {\n setTimeout(() => {\n if (control.value === 'sairaj@gmail.com')\n return ob.next(null)\n return ob.next({ invalid: 'This is not a workemail' });\n }, 500)\n });\n\n return of(control.value).pipe(\n delay(500), // Simulate network delay\n\n map(value => {\n return of({ invalid: 'This is not a workemail' })//existingUsernames.includes(username) ? { usernameTaken: true } : null;\n })\n // catchError(() => of(null)) // Handle any errors\n );\n };\n}*/\nexport function getValidationMessage(errors: any): string {\n if (errors) {\n if (errors['minlength']) {\n return `minimum ${errors['minlength']['requiredLength']} required`;\n } else if (errors['maxlength']) {\n return `maximum ${errors['maxlength']['requiredLength']} characters`;\n } else if (errors['required']) {\n return 'Input cannot be empty';\n } else if (errors['invalid']) {\n return errors['invalid'];\n } else if (errors['email']) {\n return 'Enter a valid email';\n } else if (errors['pattern']) {\n return 'Enter a valid phone number';\n } else {\n return 'Invalid input';\n }\n }\n return 'Invalid input';\n}","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { AbstractControl, FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { getValidationMessage, phoneNumberValidator } from '../../utils/validators';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'sa-input',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FormlyModule,\n IconComponent\n ],\n templateUrl: './form-input.component.html',\n styleUrl: './form-input.component.css'\n})\nexport class FormInputComponent extends FieldType<FieldTypeConfig> {\n\n @ViewChild('formInput') formInput!: ElementRef;\n\n @Input('icon') icon: IInputIcon;\n\n pretext: string;\n\n inputState = 'idle';\n inputVal = '';\n params: IInputParam | null;\n dependent: AbstractControl<any, any> | null;\n dependentVal: any = null;\n // dynamicIcon: DynamicIcon | null;\n // icon: IInputIcon | null;\n\n type: string = '';\n validators: any[];\n asyncValidators: any[];\n\n inputErrorText: string = 'invalid input';\n\n showEmailIcon: boolean = false;\n disabled: boolean = false;\n\n private suppressOnBlur = false;\n\n constructor() {\n super();\n\n }\n\n ngOnInit() {\n this.inputVal = this.field.props['value'];\n this.disabled = this.field.props.disabled || false;\n this.formControl?.setValue(this.inputVal);\n\n this.params = this.field.props['params'];\n this.icon = this.field.props['icon'] || {};\n this.type = this.params?.type || '';\n\n // this.dynamicIcon = this.field.props['dynamicIcon'];\n this.setValidators();\n this.setDependents();\n\n this.formControl.statusChanges.subscribe((state) => {\n if (this.type === 'email') {\n this.showEmailIcon = (state === 'VALID') || (state === 'INVALID' && this.formControl.hasError('invalid'));\n }\n })\n this.formControl.valueChanges.subscribe((val) => {\n this.formInput.nativeElement.value = val;\n })\n }\n\n setValidators() {\n this.validators = this.params?.validators || [];\n this.asyncValidators = this.params?.asyncValidators || [];\n this.formControl?.setValidators([...(this.type ? this.predefinedValidators[this.type] || [] : []), ...this.validators]);\n if (this.asyncValidators)\n this.formControl?.setAsyncValidators(this.asyncValidators);\n }\n\n /*\n Assuming dependent field is a single select dropdown\n */\n setDependents() {\n if (this.params?.dependent) {\n this.dependent = this.form.get([this.params?.dependent]);\n\n this.dependent?.valueChanges.subscribe((val) => {\n if (Array.isArray(val)) {\n this.dependentVal = val.length ? val[0] : null;\n } else {\n this.dependentVal = val;\n }\n this.formControl.reset();\n this.formControl.setValue(this.inputVal);\n if (this.type === 'tel') {\n this.pretext = this.dependentVal?.dial_code;\n }\n })\n }\n }\n\n checkValidity(defaultInputState = 'focus') {\n if (this.formControl && !this.formControl.valid && this.formControl.touched && !this.formControl.pending) {\n this.inputState = 'invalid';\n this.inputErrorText = getValidationMessage(this.formControl.errors) || 'invalid input';\n } else {\n this.inputState = defaultInputState;\n }\n }\n\n onFocus() {\n if (this.formControl.valid)\n this.inputState = 'focus'\n }\n onBlur() {\n setTimeout(() => {\n if (!this.suppressOnBlur) {\n this.formControl.markAsTouched();\n this.checkValidity('idle');\n }\n this.suppressOnBlur = false;\n }, 200)\n }\n\n onInput(event: any) {\n if (this.params?.type === 'tel') {\n this.inputVal = this.inputVal.replace(/[^0-9()+\\- ]/g, '');\n }\n\n this.formControl?.setValue(this.inputVal);\n this.checkValidity();\n /*if (this.params?.eventListener) {\n this.params?.eventListener({\n type: IInputEventType.INPUT_CHANGE,\n value: this.inputVal,\n formControl: this.formControl\n } as IInputEvent).then(this.onFieldCallback.bind(this));\n }*/\n }\n\n onInputFieldClick(event: any = 'input') {\n if (event === 'input' || event.target.classList.contains('sa-input-field')) {\n this.formInput.nativeElement.focus();\n if (this.params?.type !== 'email') setTimeout(() => {\n this.formInput.nativeElement.setSelectionRange(this.inputVal.length, this.inputVal.length)\n }, 10)\n }\n }\n\n inputIconClick() {\n if (this.params?.type === 'password') {\n this.suppressOnBlur = true;\n if (this.type === 'password') {\n this.type = 'text';\n this.icon.name = 'eye_filled';\n } else {\n this.type = 'password';\n this.icon.name = 'eye';\n }\n this.onInputFieldClick();\n }\n }\n\n /*onFieldCallback(param: IInputParam) {\n this.icon = param.icon || this.icon;\n this.checkValidity();\n }*/\n\n getFormSupportText() {\n if (this.formControl.invalid && this.formControl.touched) {\n return getValidationMessage(this.formControl.errors) || 'invalid input';\n } else {\n return this.params.supportText || '';\n }\n }\n\n predefinedValidators: any = {\n email: [Validators.email, Validators.required],\n password: [Validators.minLength(8), Validators.required],\n tel: [Validators.pattern('^[0-9 +\\\\-()]*$')]\n }\n}\n\nexport interface IInputIcon {\n name: string;\n show?: boolean;\n color?: string;\n size?: string;\n}\n\nexport interface IInputParam {\n validators?: any[];\n asyncValidators?: any[];\n supportText?: string,\n placeholder?: string,\n type?: string,\n dependent?: string,\n eventListener?: Function,\n icon?: IInputIcon\n errors?: { [key: string]: any }\n}\nexport interface IInputEvent {\n type: IInputEventType;\n value: string;\n callBack: any;\n formControl: FormControl\n}\nexport enum IInputEventType {\n INPUT_CHANGE = 'INPUT_CHANGE',\n STATE_CHANGE = 'STATE_CHANGE',\n ICON_CLICK = 'ICON_CLICK'\n}","<div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\n @if(pretext || (!!inputVal.length && !!params?.placeholder)){\n <span class=\"sa-input-tag\">{{params?.placeholder}}</span>\n }\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\n (click)=\"onInputFieldClick($event)\">\n @if(pretext){\n <div class=\"sa-input-pretext\">\n {{pretext}}\n </div>\n }\n <input matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\n [disabled]=\"field.props.disabled || false\" [placeholder]=\"!pretext && params?.placeholder || '' \"\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\n\n @if(params?.type === 'password'){\n <sa-icon class=\"flex\" icon=\"eye\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\n [ngClass]=\"!icon.name || icon.name === 'eye' ? '' : 'hide'\"></sa-icon>\n <sa-icon class=\"flex\" icon=\"eye_filled\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\n [ngClass]=\"icon.name === 'eye_filled' ? '' : 'hide'\"></sa-icon>\n }@else if(params?.type === 'email' && icon.show){\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkmark'\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\n [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\n }\n @else if(icon.name){\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon.size || '24'\" [color]=\"icon.color || ''\"\n [ngClass]=\"icon.show ? '' : 'hide'\"></sa-icon>\n }\n\n\n <!-- <sa-icon [icon]=\"icon\" size=\"24\" (click)=\"inputIconClick()\"></sa-icon> -->\n </div>\n @if((!formControl.valid) || (params && params.supportText)){\n <div class=\"support-label\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle'\">\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\n {{getFormSupportText()}}\n </div>\n }\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, SimpleChanges } from '@angular/core';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { ChipInterface } from '../../interfaces/chip-interface';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'sa-card',\n standalone: true,\n imports: [CommonModule, ChipsComponent, IconComponent],\n templateUrl: './card.component.html',\n styleUrl: './card.component.css'\n})\nexport class CardComponent {\n @Input('title') title: string = '';\n @Input('chip') chip: ChipInterface | null = null;\n @Input('body') body: string = '';\n @Input('avatar') avatar: string = '';\n\n @Input('icon') icon: string = '';\n @Input('iconSize') iconSize: string;\n\n @Input('width') width: string | number;\n @Input('column') column: boolean = false;\n\n cardStyles: any = {};\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['width']?.currentValue) {\n this.cardStyles['width'] = typeof changes['width']?.currentValue === 'string' ? changes['width']?.currentValue : changes['width']?.currentValue + '%';\n }\n }\n}\n","<div class=\"sa-card\" [ngStyle]=\"cardStyles\">\n <div class=\"sa-card-wrapper\" [ngClass]=\"column ? 'column' : ''\">\n <div class=\"\" [ngClass]=\"avatar ? 'sa-card-img' : 'sa-card-icon'\">\n @if(avatar){\n <img [src]=\"avatar\" />\n }@else if(icon){\n <sa-icon [icon]=\"icon\" [size]=\"iconSize\"></sa-icon>\n }@else{\n <ng-content select=\"sa-card-icon\"></ng-content>\n }\n @if(column){\n <ng-content select=\"sa-card-title-actions\"></ng-content>\n }\n </div>\n <div class=\"sa-card-container\">\n @if(title){\n <div class=\"sa-card-title-container\">\n <div class=\"sa-card-title\">{{title}}</div>\n @if(chip){\n <sa-chip [text]=\"chip.text\" [type]=\"chip.type\" [state]=\"chip.state\"></sa-chip>\n }\n <ng-content select=\"sa-card-title-actions\"></ng-content>\n\n </div>\n }\n @if(body){\n <div class=\"sa-card-body\">\n {{body}}\n </div>\n }\n <ng-content select=\"sa-card-footer-actions\"></ng-content>\n </div>\n </div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sa-card-icon',\n standalone: true,\n imports: [],\n templateUrl: './card-icon.component.html',\n styleUrl: './card-icon.component.css'\n})\nexport class CardIconComponent {\n\n}\n","<ng-content></ng-content>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sa-card-footer-actions',\n standalone: true,\n imports: [],\n templateUrl: './card-footer-actions.component.html',\n styleUrl: './card-footer-actions.component.css'\n})\nexport class CardFooterActionsComponent {\n\n}\n","<div class=\"sa-card-footer-actions\">\n <ng-content></ng-content>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sa-card-title-actions',\n standalone: true,\n imports: [],\n templateUrl: './card-title-actions.component.html',\n styleUrl: './card-title-actions.component.css'\n})\nexport class CardTitleActionsComponent {\n\n}\n","<div class=\"sa-card-title-actions\"><ng-content></ng-content></div>","/*\n * Public API Surface of component-library\n */\n\n\nexport * from './lib/component-library.service';\nexport * from './lib/component-library.component';\nexport * from './lib/button/button.component';\nexport * from './lib/chips/chips.component';\nexport * from './lib/avatar/avatar.component';\nexport * from './lib/grid-cell/grid-cell.component';\nexport * from './lib/header/header.component';\nexport * from './lib/toast/toast.component';\nexport * from './lib/form-select/form-select.component';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/tool-tip/tool-tip.component';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/tabs/tabs.component';\n\nexport * from './interfaces/grid-interface';\nexport * from './interfaces/avatar-interface';\nexport * from './interfaces/button-interface';\nexport * from './interfaces/chip-interface';\nexport * from './interfaces/select-interface';\nexport * from './interfaces/tab-interface';\n\nexport * from './lib/icon/icon.component';\nexport * from './lib/left-nav/left-nav.component';\nexport * from './lib/form-input/form-input.component';\nexport * from './lib/card/card.component';\nexport * from './lib/card/card-icon/card-icon.component';\nexport * from './lib/card/card-footer-actions/card-footer-actions.component';\nexport * from './lib/card/card-title-actions/card-title-actions.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","i1","i3","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sarasanalytics-com-design-system.mjs","sources":["../../../projects/component-library/src/lib/component-library.service.ts","../../../projects/component-library/src/lib/component-library.component.ts","../../../projects/component-library/src/lib/button/button.component.ts","../../../projects/component-library/src/lib/button/button.component.html","../../../projects/component-library/src/lib/chips/chips.component.ts","../../../projects/component-library/src/lib/chips/chips.component.html","../../../projects/component-library/src/lib/avatar/avatar.component.ts","../../../projects/component-library/src/lib/avatar/avatar.component.html","../../../projects/component-library/src/lib/grid-cell/grid-cell.component.ts","../../../projects/component-library/src/lib/grid-cell/grid-cell.component.html","../../../projects/component-library/src/lib/header/header.component.ts","../../../projects/component-library/src/lib/header/header.component.html","../../../projects/component-library/src/lib/icon/icon.service.ts","../../../projects/component-library/src/lib/icon/icon.component.ts","../../../projects/component-library/src/lib/icon/icon.component.html","../../../projects/component-library/src/lib/toast/toast.component.ts","../../../projects/component-library/src/lib/toast/toast.component.html","../../../projects/component-library/src/lib/form-select/form-select.component.ts","../../../projects/component-library/src/lib/form-select/form-select.component.html","../../../projects/component-library/src/lib/stepper/stepper.component.ts","../../../projects/component-library/src/lib/stepper/stepper.component.html","../../../projects/component-library/src/lib/tool-tip/tool-tip.component.ts","../../../projects/component-library/src/lib/tool-tip/tool-tip.component.html","../../../projects/component-library/src/lib/calendar-header/calendar-header.component.ts","../../../projects/component-library/src/lib/calendar-header/calendar-header.component.html","../../../projects/component-library/src/lib/datepicker/datepicker.component.ts","../../../projects/component-library/src/lib/datepicker/datepicker.component.html","../../../projects/component-library/src/lib/tabs/tabs.component.ts","../../../projects/component-library/src/lib/tabs/tabs.component.html","../../../projects/component-library/src/lib/left-nav/left-nav.component.ts","../../../projects/component-library/src/lib/left-nav/left-nav.component.html","../../../projects/component-library/src/utils/validators.ts","../../../projects/component-library/src/lib/form-input/form-input.component.ts","../../../projects/component-library/src/lib/form-input/form-input.component.html","../../../projects/component-library/src/lib/card/card.component.ts","../../../projects/component-library/src/lib/card/card.component.html","../../../projects/component-library/src/lib/card/card-icon/card-icon.component.ts","../../../projects/component-library/src/lib/card/card-icon/card-icon.component.html","../../../projects/component-library/src/lib/card/card-footer-actions/card-footer-actions.component.ts","../../../projects/component-library/src/lib/card/card-footer-actions/card-footer-actions.component.html","../../../projects/component-library/src/lib/card/card-title-actions/card-title-actions.component.ts","../../../projects/component-library/src/lib/card/card-title-actions/card-title-actions.component.html","../../../projects/component-library/src/public-api.ts","../../../projects/component-library/src/sarasanalytics-com-design-system.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestLibraryService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-component-library',\n standalone: true,\n imports: [],\n template: `\n <p>\n component-library works!\n </p>\n `,\n styles: ``\n})\nexport class TestLibraryComponent {\n\n}\n","import { Component, Output, SimpleChanges } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { NgStyle } from '@angular/common';\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n selector: 'sa-button',\n standalone: true,\n imports: [NgIf, NgStyle],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css'\n})\n\nexport class ButtonComponent {\n @Input() id: string | number;\n @Input() type: string;\n @Input() state: string;\n @Input() size: string;\n @Input() text: string | number;\n @Input() ImagePath: string;\n @Input() iconPosition: string;\n @Input() href: string;\n @Input() hrefTarget: string;\n @Input() width: string;\n @Input() isSubmit: boolean = false;\n\n @Output() onClickEvent = new EventEmitter();\n @Output() onMouseInEvent = new EventEmitter();\n @Output() onMouseOutEvent = new EventEmitter();\n\n svgStyle = {}\n eventEmitObject = {}\n uuid: number = nextId++;\n\n ngOnChanges(changes: SimpleChanges): void {\n this.svgStyle = {\n '-webkit-mask-image': `url(${this.ImagePath})`,\n 'mask-image': `url(${this.ImagePath})`,\n }\n this.eventEmitObject = {\n id: this.id\n }\n if (changes && changes['width'] && changes['width'].currentValue) {\n console.log(this.width)\n }\n }\n\n buttonClicked(evt: Event) {\n if (this.state == \"disabled\") return;\n this.onClickEvent.emit({\n ...this.eventEmitObject,\n evt\n });\n if (this.href != \"\") {\n if (this.hrefTarget == \"blank\") window.open(this.href);\n else if (this.hrefTarget == \"self\") location.href = this.href;\n }\n }\n\n mouseIn() {\n if (this.state == \"disabled\") return;\n this.onMouseInEvent.emit();\n }\n\n mouseOut() {\n if (this.state == \"disabled\") return;\n this.onMouseOutEvent.emit();\n }\n}\n","<button (click)=\"buttonClicked($event)\" id=\"sa-button-{{uuid}}\" class=\"btn-hide\"\n [type]=\"isSubmit ? 'submit' : 'button'\"></button>\n<!-- (click)=\"buttonClicked()\" on button instead of label breaks whole thing -->\n<label for=\"sa-button-{{uuid}}\" [ngStyle]=\"{'width':width}\" role=\"button\" tabindex=\"0\" (mouseenter)=\"mouseIn()\"\n (mouseleave)=\"mouseOut()\" (keydown.enter)=\"buttonClicked($event)\" for=\"sa-button\"\n class=\"sa-button {{state}} {{type}} {{size}}\">\n <div class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"(iconPosition == 'left' || iconPosition == 'both') ? 'block' : 'none'\"></div>\n {{text}}\n <div class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"(iconPosition == 'right' || iconPosition == 'both') ? 'block' : 'none'\"></div>\n</label>","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n selector: 'sa-chip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chips.component.html',\n styleUrl: './chips.component.css'\n})\nexport class ChipsComponent {\n @Input() id: string | number;\n @Input() iconPath: string;\n @Input() text: string | number;\n @Input() type: string;\n @Input() state: string;\n @Input() filling: string;\n @Input() iconPosition: string;\n @Input() largeStateIcon: string;\n @Input() largeStateText: string;\n\n @Output() onClickEvent = new EventEmitter();\n\n svgStyle = {}\n secondSvgStyle = {}\n eventEmitObject = {}\n uuid: number = nextId++;\n\n ngOnChanges(): void {\n this.svgStyle = {\n '-webkit-mask-image': `url(${this.iconPath})`,\n 'mask-image': `url(${this.iconPath})`,\n }\n this.secondSvgStyle = {\n '-webkit-mask-image': `url(${this.largeStateIcon})`,\n 'mask-image': `url(${this.largeStateIcon})`,\n }\n this.eventEmitObject = {\n id: this.id\n }\n }\n\n buttonClicked(evt: Event) {\n this.onClickEvent.emit({\n ...this.eventEmitObject,\n evt\n });\n }\n}\n","<div class=\"chip {{type}} {{state}} {{filling}}\">\n <button type=\"button\" (click)=\"buttonClicked($event)\" id=\"icon-button_{{uuid}}\" class=\"btn_hide\"></button>\n <!-- (click)=\"buttonClicked()\" on button instead of label breaks whole thing -->\n <label for=\"icon-button_{{uuid}}\" class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"((iconPosition == 'left' || iconPosition == 'both') && type != 'large') ? 'block' : 'none'\">\n </label>\n\n {{text}}\n\n <div class=\"second-svg-icon\" [style]=\"secondSvgStyle\" [style.display]=\"(type == 'large') ? 'block' : 'none'\"></div>\n\n {{type == 'large' ? largeStateText : \"\"}}\n\n <label for=\"icon-button_{{uuid}}\" class=\"svg-icon\" [style]=\"svgStyle\"\n [style.display]=\"((iconPosition == 'right' || iconPosition == 'both') && type != 'large') ? 'block' : 'none'\">\n </label>\n</div>\n","import { Component, EventEmitter } from '@angular/core';\nimport { Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sa-avatar',\n standalone: true,\n imports: [NgIf],\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.css'\n})\nexport class AvatarComponent {\n @Input() id: string | number;\n @Input() imagePath: string;\n @Input() altText: string;\n @Input() size: string;\n\n @Output() onClickEvent = new EventEmitter\n @Output() onMouseInEvent = new EventEmitter\n @Output() onMouseOutEvent = new EventEmitter\n\n eventEmitObject = {}\n\n ngOnChanges(): void {\n this.eventEmitObject = {\n id: this.id\n }\n }\n\n avatarClicked(evt: Event) {\n this.onClickEvent.emit({\n ...this.eventEmitObject,\n evt\n })\n }\n\n mouseEnter(evt: Event) {\n this.onMouseInEvent.emit({\n ...this.eventEmitObject,\n evt\n })\n }\n\n mouseLeave(evt: Event) {\n this.onMouseOutEvent.emit({\n ...this.eventEmitObject,\n evt\n })\n }\n}\n","<div class=\"avatar {{size}}\" (click)=\"avatarClicked($event)\" (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\">\n <img *ngIf=\"imagePath\" class=\"avatar-img\" alt=\"{{altText}}\" src=\"{{imagePath}}\">\n <p *ngIf=\"!imagePath\" class=\"avatar-img\">{{altText}}</p>\n</div>\n","import { Component, EventEmitter } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { NgFor } from '@angular/common';\nimport { ICellRendererAngularComp, IHeaderAngularComp } from 'ag-grid-angular';\nimport { GridInterface } from '../../interfaces/grid-interface';\n\n@Component({\n selector: 'lib-grid-cell',\n standalone: true,\n imports: [\n AvatarComponent,\n ChipsComponent,\n ButtonComponent,\n NgFor\n ],\n templateUrl: './grid-cell.component.html',\n styleUrl: './grid-cell.component.css'\n})\nexport class GridCellComponent implements ICellRendererAngularComp, IHeaderAngularComp {\n params: GridInterface;\n rowNum: number;\n\n @Output() onClickButtonEvent = new EventEmitter();\n @Output() onClickChipEvent = new EventEmitter();\n @Output() onClickLinkEvent = new EventEmitter();\n @Output() onClickAvatarEvent = new EventEmitter();\n\n buttonClicked(evt: Event) {\n this.params.buttonClicked && this.params.buttonClicked({ // calls the function passed via params in gridInterface.\n ...evt,\n rowId: this.rowNum\n });\n this.onClickButtonEvent.emit({ ...evt, rowId: this.rowNum }); // this event isn't caught by anything. \n }\n\n // above function behavior is same for all functions in this class\n\n chipClicked(evt: Event) {\n this.params.chipClicked && this.params.chipClicked({\n ...evt,\n rowId: this.rowNum\n });\n this.onClickChipEvent.emit({ ...evt, rowId: this.rowNum });\n }\n\n linkClicked() {\n if (this.params.cellType != \"interactive\") return;\n\n this.params.linkClicked && this.params.linkClicked({ //calling function passed in params with rowId object in arguments\n rowId: this.rowNum\n });\n\n if (this.params.interactiveLink != \"\") {\n if (this.params.interactiveLinkTarget == \"blank\") {\n window.open(this.params.interactiveLink)!;\n }\n else if (this.params.interactiveLinkTarget == \"self\") {\n location.href = this.params.interactiveLink!;\n }\n }\n this.onClickLinkEvent.emit({ rowId: this.rowNum });\n }\n\n avatarClicked(evt: Event) {\n this.params.avatarClicked && this.params.avatarClicked({\n ...evt,\n rowId: this.rowNum\n });\n this.onClickChipEvent.emit({ ...evt, rowId: this.rowNum });\n }\n\n agInit(inParams: any): void { // must exist when class implements ICellRendererAngularComp / IHeaderAngularComp\n\n this.rowNum = inParams.rowIndex;\n this.params = inParams.value; // inParams.value exists when gridCell is rendered as cell, `cellRenderer: GridCellComponent`\n if (inParams.value == undefined) { // inParams.value is undefined when gridCell is rendered as header, `headerComponent: GridCellComponent`, \n this.params = inParams\n }\n // console.log(this.params);\n }\n\n refresh(params: any) { // must exist when class implements ICellRendererAngularComp / IHeaderAngularComp\n return false; // not sure what this return value does.\n }\n\n}\n","<div class=\"grid-cell {{params.cellType}}\">\n\n <img class=\"icons\" src={{params.iconPath}} [style.display]=\"(params.viewLeadingIcon) ? 'block' : 'none'\" alt=\"\">\n\n <sa-avatar [id]=\"params.avatarConfig?.id\" [altText]=\"params.avatarConfig?.altText\"\n [imagePath]=\"params.avatarConfig?.imagePath\" [size]=\"params.avatarConfig?.size\"\n [style.display]=\"(params.viewAvatar) ? 'block' : 'none'\" (onClickEvent)=\"avatarClicked($event)\">\n </sa-avatar>\n\n <div class=\"grid-text\" [style.display]=\"(params.viewText) ? 'block' : 'none'\">\n <div [style.display]=\"(params.text) ? 'block' : 'none'\" (click)=\"linkClicked()\" class=\"main-text\">{{params.text}}\n </div>\n\n <div [style.display]=\"(params.subText) ? 'block' : 'none'\" class=\"sub-text\">{{params.subText}}</div>\n </div>\n\n <img class=\"icons\" src={{params.iconPath}} [style.display]=\"(params.viewTrailingIcon) ? 'block' : 'none'\" alt=\"\">\n\n\n <sa-chip *ngFor=\"let config of params.chipConfig, let i = index\" [id]=\"config.id\" [filling]=\"config.filling\"\n id=\"chip_{{rowNum}}_{{config.id}}\" [iconPath]=\"config.iconPath\" [iconPosition]=\"config.iconPosition\"\n [largeStateIcon]=\"config.largeStateIcon\" [state]=\"config.state\" [type]=\"config.type\" [text]=\"config.text\"\n [style.display]=\"(params.viewChip) ? 'block' : 'none'\" (onClickEvent)=\"chipClicked($event)\"></sa-chip>\n\n <sa-button [iconPosition]=\"params.buttonConfig?.iconPosition\" [ImagePath]=\"params.buttonConfig?.imagePath\"\n [id]=\"params.buttonConfig?.id\" [size]=\"params.buttonConfig?.size\" [state]=\"params.buttonConfig?.state\"\n [type]=\"params.buttonConfig?.type\" [text]=\"params.buttonConfig?.text\" [href]=\"params.buttonConfig?.href\"\n [hrefTarget]=\"params.buttonConfig?.hrefTarget\" [style.display]=\"(params.viewButton) ? 'block' : 'none'\"\n (onClickEvent)=\"buttonClicked($event)\"></sa-button>\n\n</div>\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { Input } from '@angular/core';\nimport { NgFor } from '@angular/common';\nimport { ButtonComponent } from '../button/button.component';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sa-header',\n standalone: true,\n imports: [ChipsComponent, NgFor, ButtonComponent, NgIf],\n templateUrl: './header.component.html',\n styleUrl: './header.component.css'\n})\nexport class HeaderComponent {\n @Input() info: string[][];\n @Input() headerName: string;\n @Input() chipConfig: string[][];\n @Input() buttonHelper: string;\n @Input() buttonMain: string;\n\n @Output() mainButtonClicked = new EventEmitter();\n @Output() helperButtonClicked = new EventEmitter();\n\n clicked(num: number) {\n num ? this.mainButtonClicked.emit() : this.helperButtonClicked.emit();\n }\n}\n","<div class=\"header\">\n <div class=\"header-content\">\n <div class=\"heading\">\n <div class=\"header-name\">{{headerName}}</div>\n <div *ngFor=\"let chip of chipConfig\">\n <sa-chip type=\"regular\" [state]=\"chip[1]\" filling=\"filled\" [text]=\"chip[0]\"></sa-chip>\n </div>\n </div>\n <div class=\"header-info\">\n <div class=\"info-item\" *ngFor=\"let item of info\">\n <img [src]=\"item[1]\" alt=\"\">\n {{item[0]}}\n </div>\n </div>\n </div>\n <div class=\"actions\">\n <sa-button *ngIf=\"buttonHelper\" (onClickEvent)=\"clicked(0)\" [text]=\"buttonHelper\" type=\"transparent\" size=\"medium\"\n state=\"default\">\n </sa-button>\n <sa-button *ngIf=\"buttonMain\" (onClickEvent)=\"clicked(1)\" [text]=\"buttonMain\" type=\"primary\" size=\"medium\"\n state=\"default\"></sa-button>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IconService {\n\n http = inject(HttpClient);\n private path: string = 'assets/';\n\n constructor() { }\n\n getSvg(iconName: string): Observable<string> {\n return this.http.get(`${this.path}${iconName}.svg`, { responseType: 'text' });\n }\n\n setIconPath(path: string) {\n if (path) this.path = path;\n }\n}","import { Component, inject, Inject, Input, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { IconService } from './icon.service';\nimport { Observable } from 'rxjs';\nimport { HttpClientModule } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sa-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.css',\n encapsulation: ViewEncapsulation.None\n})\nexport class IconComponent {\n iconService = inject(IconService);\n sanitizer = inject(DomSanitizer);\n\n @Input('icon') icon: string;\n @Input('size') size: string;\n @Input('color') color: string;\n\n svgIcon: any;\n iconStyles: any = {\n // fontSize: '44px',\n // color: 'red'\n };\n\n constructor() {\n }\n ngOnInit() {\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['icon']) {\n if (this.icon) {\n this.iconService.getSvg(this.icon).subscribe((svg) => {\n this.svgIcon = this.sanitizer.bypassSecurityTrustHtml(svg);\n })\n } else {\n this.svgIcon = '';\n }\n }\n if (changes['size'] || changes['color']) {\n this.iconStyles.fontSize = this.size + 'px';\n this.iconStyles.color = this.color;\n }\n }\n}","<span class=\"sa-icon\" [innerHTML]=\"svgIcon\" [ngStyle]=\"iconStyles\">\n\n</span>\n\n<!-- <img *ngIf=\"svgIcon\" [src]=\"svgIcon\" [ngStyle]=\"iconStyles\" alt=\"icon\"> -->","import { Component, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { Input, Output } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'sa-toast',\n standalone: true,\n imports: [CommonModule, ButtonComponent, IconComponent, ButtonComponent, MatIcon, NgIf],\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.css'\n})\nexport class ToastComponent implements OnChanges {\n @Input() finishPercentage: number = -1;\n @Input() heading: string;\n @Input() subHeading: string;\n @Input() statusIcon: string = '';\n @Input() status: 'success' | 'failure' | 'caution' | 'positive' | 'negative' | 'tentative';\n @Input() firstButtonName: string;\n @Input() secondButtonName: string;\n @Input() closable: boolean;\n @Input() filled: boolean = true;\n @Input() width: number | string = '';\n\n @Output() toastEvent: EventEmitter<IToastEvent> = new EventEmitter();\n @Output() firstButton = new EventEmitter();\n @Output() secondButton = new EventEmitter();\n @Output() closed = new EventEmitter();\n\n\n toastStyles = { backgroundColor: 'transparent', color: '', width: this.width + '%' };\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes && (changes['status'] || changes['filled'])) {\n this.statusIcon = toastInfo[this.status].icon;\n this.toastStyles.backgroundColor = toastInfo[this.status].bgColor;\n this.toastStyles.color = toastInfo[this.status].color;\n }\n if (changes && changes['width']) {\n this.toastStyles.width = typeof this.width === 'number' ? this.width + '%' : this.width;\n }\n\n if (this.finishPercentage > 100) this.finishPercentage = 100;\n\n }\n\n clicked(num: number) {\n if (num == 0) this.firstButton.emit();\n else if (num == 1) this.secondButton.emit();\n else if (num == 2) this.closed.emit();\n }\n\n closeToast() {\n this.toastEvent.emit({\n type: 'TOAST_CLOSED',\n params: {}\n })\n }\n\n}\n\nconst toastInfo: any = {\n 'success': {\n icon: 'checkmark',\n bgColor: '#EBF5E9',\n color: '#246B16'\n },\n 'failure': {\n icon: 'error-circle',\n bgColor: '#F8E9E9',\n color: '#861C15'\n },\n 'caution': {\n icon: 'warning',\n bgColor: '',\n color: ''\n }\n}\n\nexport interface IToastEvent {\n type: 'TOAST_CLOSED' | 'ACTION_CLICKED';\n event?: any;\n params?: any;\n}","<div class=\"toast\" [ngStyle]=\"toastStyles\">\n <div class=\"content\">\n <div class=\"toast-icon {{status}}\">\n <sa-icon [icon]=\"statusIcon\" size=\"24\"></sa-icon>\n <!-- <img [src]=\"statusIcon\" alt=\"\"> -->\n </div>\n <div class=\"head-subhead\">\n <p class=\"heading\">{{heading}}</p>\n <p class=\"subheading\">{{subHeading}}</p>\n </div>\n @if(closable){\n <!-- <img class=\"cross\" (click)=\"closeToast()\" [src]=\"crossmark\" alt=\"\"> -->\n <sa-icon class=\"cross\" icon=\"crossmark\" size=\"24\" (click)=\"closeToast()\"></sa-icon>\n }\n </div>\n <!-- <div class=\"controls\">\n <sa-button *ngIf=\"firstButtonName\" (onClickEvent)=\"clicked(0)\" [text]=\"firstButtonName\" type=\"transparent\"\n size=\"medium\" state=\"default\">\n </sa-button>\n <sa-button *ngIf=\"secondButtonName\" (onClickEvent)=\"clicked(1)\" [text]=\"secondButtonName\" type=\"outline\"\n size=\"medium\" state=\"default\">\n </sa-button>\n </div> -->\n\n <!-- <div *ngIf=\"finishPercentage >= 0\" class=\"progress-bar\">\n <div class=\"progress-done\" [style.width]=\"finishPercentage+'%'\"></div>\n <div class=\"progress-left\" [style.width]=\"100-finishPercentage+'%'\"></div>\n </div> -->\n</div>","import { Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'lib-form-select',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n FormlyModule,\n ReactiveFormsModule,\n NgSelectModule,\n ChipsComponent,\n NgIf,\n NgFor\n ],\n templateUrl: './form-select.component.html',\n styleUrl: './form-select.component.css'\n})\nexport class FormSelectComponent extends FieldType<FieldTypeConfig> {\n selectables: any;\n params: any;\n\n svgStyle = {};\n openState: boolean = false;\n topLabel: boolean;\n startInd: number = 0;\n labelLimit: number = 2;\n\n placeholderLabel: string;\n\n ngOnInit() {\n this.selectables = this.field.props.options;\n this.params = this.field.props['params'];\n this.placeholderLabel = this.params.label;\n console.log('search', this.field.props['searchable'])\n this.svgStyle = {\n '-webkit-mask-image': `url(${this.params.dropIcon})})`,\n 'mask-image': `url(${this.params.dropIcon})`,\n }\n }\n openClose(state: boolean) {\n if (this.field.props.disabled) return;\n this.openState = state;\n if (state || this.formControl.value?.length > 0) {\n this.placeholderLabel = '';\n } else {\n this.placeholderLabel = this.params.label;\n }\n }\n shiftLabel(action: string) {\n if (action == 'clicked') this.startInd++;\n if (action == 'cleared') this.startInd = 0;\n if (action == 'removed' && this.startInd > 0) this.startInd--;\n }\n checkForZero(selected: any, state?: boolean) {\n this.topLabel = selected.length == 0 ? false : true;\n // console.log(\"test\", this.formControl.value?.length)\n // console.log(\"test\", this.openState)\n // console.log(\"placeholder--- \", this.placeholderLabel)\n // console.log(\"params.label--- \", this.params.label)\n if (this.openState || this.formControl.value?.length > 0) {\n this.placeholderLabel = '';\n } else {\n this.placeholderLabel = this.params.label;\n }\n }\n}\n","<div [style.visibility]=\"(openState || topLabel) ? 'visible' : 'hidden'\" class=\"clicked-label\">{{params.label}}</div>\n<div class=\"ng-select-field {{openState ? 'activated' : 'idle'}} {{field.props.disabled ? 'disabled' : ''}}\">\n\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"left-icon svg-icon\" [style]=\"svgStyle\"\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\n *ngIf=\"(params.dropIconPosition == 'left' || params.dropIconPosition == 'both')\">\n </div>\n\n <ng-select (change)=\"checkForZero($event)\" (remove)=\"shiftLabel('removed')\" (clear)=\"shiftLabel('cleared')\"\n (search)=\"openClose(true)\" (focus)=\"openClose(true)\" (blur)=\" openClose(false)\" [isOpen]=\"openState\"\n [placeholder]=\"placeholderLabel\" bindLabel=\"name\" [items]=\"selectables\" [multiple]=\"params.multiple\"\n [formControl]=\"formControl\" [style] [formlyAttributes]=\"field\" [searchable]=\"field.props['searchable']\">\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div *ngFor=\"let item of (items ? items.slice(startInd,startInd+labelLimit): [])\">\n <sa-chip (onClickEvent)=\" (!field.props.disabled) ? clear(item) : null\" [id]=\"item.id\"\n [iconPath]=\"params.iconPath\" [text]=\"item.name\" [type]=\"params.type\"\n [state]=\"field.props.disabled ? 'neutral' : params.state\" [filling]=\"params.filling\"\n [iconPosition]=\"params.iconPosition\">\n </sa-chip>\n </div>\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\" *ngIf=\"items.length > (startInd+labelLimit)\">\n <sa-chip text=\"+{{items.length-(startInd+labelLimit)}}\" type=\"regular\" state=\"default\" filling=\"filled\">\n </sa-chip>\n </div>\n <div (click)=\"shiftLabel('cleared')\" *ngIf=\"startInd == items.length-labelLimit\" class=\"ng-value overflow-label\">\n <sa-chip text=\"...\" type=\"regular\" state=\"default\" filling=\"filled\">\n </sa-chip>\n </div>\n </ng-template>\n </ng-select>\n\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"right-icon svg-icon\" [style]=\"svgStyle\"\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\n *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\">\n </div>\n\n</div>\n<div class=\"support-label\">{{params.supportText}}</div>","import { Component, EventEmitter, Input } from '@angular/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { NgFor, NgIf } from '@angular/common';\nimport { Output } from '@angular/core';\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n selector: 'sa-stepper',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.css'\n})\nexport class StepperComponent extends FieldType<FieldTypeConfig> {\n @Input() latestStep: number = -1;\n @Input() editable: boolean = true;\n @Input() stepLabels: any;\n @Input() doneIcon: string;\n\n @Output() stepped = new EventEmitter;\n\n uuid: number = nextId++;\n\n isDisabled: boolean = false;\n\n tickIcon = {};\n\n // {\n // '-webkit-mask-image': `url(${this.ImagePath})`,\n // 'mask-image': `url(${this.ImagePath})`,\n // }\n\n ngOnInit() {\n if (this.field.props) {\n this.stepLabels = this.field.props.options;\n this.editable = this.field.props['params'].editable;\n this.latestStep = this.model[`${this.key}`] ? this.model[`${this.key}`].id : -1;\n this.doneIcon = this.field.props['params'].doneIcon;\n\n this.isDisabled = this.field.props.disabled!;\n }\n console.log(this.doneIcon);\n this.tickIcon = {\n '-webkit-mask-image': `url(${this.doneIcon})`,\n 'mask-image': `url(${this.doneIcon})`\n };\n }\n\n update(chosen: number) {\n if (!this.editable || this.field.props?.disabled) return;\n this.latestStep = chosen;\n if (!this.formControl) {\n this.stepped.emit(this.latestStep);\n return;\n }\n this.formControl.setValue({\n id: this.latestStep\n });\n }\n}\n","<div class=\"stepper {{isDisabled ? 'disabled' : 'active'}}\">\n <div class=\"steps\" *ngFor=\"let label of stepLabels; let i = index\">\n <input id=\"stepper-{{uuid}}-{{i}}\" (change)=\"update(i)\" name=\"stepper-radio-{{uuid}}\"\n [checked]=\"i == latestStep ? true: false\" class=\"step-hide\" type=\"radio\">\n <div\n class=\"label-wrapper {{i < latestStep ? 'done' : ''}} {{i > latestStep ? 'default' : ''}} {{i == latestStep ? 'latest' : ''}}\">\n <label [style]=\"i < latestStep ? tickIcon : ''\" for=\"stepper-{{uuid}}-{{i}}\"\n class=\"step-label-icon {{i > latestStep ? 'undone' : ''}}\">\n </label>\n <label for=\"stepper-{{uuid}}-{{i}}\" class=\"step-label-text\">{{label.name}}</label>\n </div>\n <div *ngIf=\" i !=stepLabels.length-1\" class=\"line {{i < latestStep ? 'done' : 'default'}}\"></div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { NgFor } from '@angular/common';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'sa-tool-tip',\n standalone: true,\n imports: [ButtonComponent, NgFor, NgIf],\n templateUrl: './tool-tip.component.html',\n styleUrl: './tool-tip.component.css'\n})\nexport class ToolTipComponent {\n @Input() messages: string[];\n @Input() pointerPosition: string;\n\n @Output() toolTipSkipped = new EventEmitter();\n @Output() toolTipSeen = new EventEmitter();\n arrowIcon = \"../assets/arrow.svg\";\n pointer = \"../assets/pointer-polygon.svg\";\n\n msgInd: number = 0; // is the index of current message being displayed\n\n updateMsgInd(k: number) {\n this.msgInd += k;\n if (this.msgInd < 0) this.msgInd = 0;\n if (this.msgInd > this.messages.length - 1) {\n this.msgInd = this.messages.length - 1;\n this.toolTipSeen.emit();\n }\n }\n\n skipToolTip() {\n this.toolTipSkipped.emit();\n }\n\n}\n","<div class=\"tool-tip-vertical\">\n <div class=\"tool-tip-pointer-icon pointer-top\" *ngIf=\"pointerPosition == 'top'\"></div>\n <div class=\"tool-tip-horizontal\">\n <div class=\"tool-tip-pointer-icon pointer-left\" *ngIf=\"pointerPosition == 'left'\"></div>\n <div class=\"tool-tip\">\n <div class=\"tool-tip-content\">\n <div class=\"tool-tip-heading\">Heading</div>\n <div *ngFor=\"let msg of messages, let i = index\" class=\"tool-tip-message {{msgInd != i ? 'hidden-msg': ''}}\">\n {{msg}}\n </div>\n </div>\n <div class=\"tool-tip-break\">\n </div>\n <div class=\"tool-tip-controls\">\n <div class=\"tool-tip-navigate\">\n <img class=\"left-icon tool-tip-navigate-icon\" (click)=\"updateMsgInd(-1)\" [src]=\"arrowIcon\" alt=\"\">\n {{msgInd+1}} of {{messages.length}}\n <img class=\"right-icon tool-tip-navigate-icon\" (click)=\"updateMsgInd(1)\" [src]=\"arrowIcon\" alt=\"\">\n </div>\n <div class=\"tool-tip-control-buttons\">\n <sa-button (onClickEvent)=\"skipToolTip()\" class=\"skip-button\" text=\"Skip\" type=\"transparent\" size=\"medium\"\n state=\"default\"></sa-button>\n <sa-button (onClickEvent)=\"updateMsgInd(1)\" text=\"Next\" type=\"primary\" size=\"medium\" state=\"default\">\n </sa-button>\n </div>\n </div>\n </div>\n <div class=\"tool-tip-pointer-icon pointer-right\" *ngIf=\"pointerPosition == 'right'\"></div>\n </div>\n <div class=\"tool-tip-pointer-icon pointer-bottom\" *ngIf=\"pointerPosition == 'bottom'\"></div>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {\n DateAdapter,\n MatDateFormats,\n MAT_DATE_FORMATS,\n} from '@angular/material/core';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButton } from '@angular/material/button';\nimport { NgFor } from '@angular/common';\nimport { MatDateRangePicker } from '@angular/material/datepicker';\n\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n\n@Component({\n templateUrl: './calendar-header.component.html',\n styleUrls: ['./calendar-header.component.css'],\n standalone: true,\n imports: [\n NgFor,\n MatIconModule,\n MatButton\n ],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarHeaderComponent<D> implements OnDestroy {\n uuid: number = nextId++;\n\n private readonly destroy$ = new Subject<void>();\n\n constructor(\n private calendar: MatCalendar<D>, // calendar instance of picker\n private dateAdapter: DateAdapter<D>, // native or moment date adapter\n private picker: MatDateRangePicker<D>,\n @Inject(MAT_DATE_FORMATS) private dateFormats: MatDateFormats, // for formatting\n cdr: ChangeDetectorRef\n ) {\n // make sure your header stays in sync with the calendar:\n calendar.stateChanges\n .pipe(takeUntil(this.destroy$)) // unsubscribe when destroyed\n .subscribe(() => cdr.markForCheck());\n\n }\n\n selectedPreset = \"Custom\"\n presets = [\n \"This Quarter\",\n \"Last Quarter\",\n \"Last 6 Months\",\n \"This Year\",\n \"Last Year\",\n \"Custom\"\n ]\n // active date label rendered between the arrow buttons\n\n ngOnInit() {\n const currentRange: any = this.calendar.selected;\n\n currentRange?.start.setHours(0, 0, 0, 0);\n currentRange?.end.setHours(0, 0, 0, 0);\n\n // To pre-select a preset when the calendar opens.\n // Match the already selected date range with the date-ranges of all presets.\n // If already selected date range matches with a preset, pre-select it.\n\n for (let i = 0; i < this.presets.length; i++) {\n const tempRange = this.findDate(this.presets[i]);\n if (tempRange.newStart.getTime() == currentRange.start.getTime() && tempRange.newEnd.getTime() == currentRange.end.getTime()) {\n this.selectedPreset = this.presets[i];\n break;\n }\n }\n }\n\n get periodLabel(): string {\n // use date adapter to format the label, e.g. \"SEP 2020\"\n return this.dateAdapter\n .format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n\n previousClicked(mode: 'month' | 'year'): void {\n this.changeDate(mode, -1);\n }\n\n nextClicked(mode: 'month' | 'year'): void {\n this.changeDate(mode, 1);\n }\n\n changeView() {\n this.calendar.currentView =\n this.calendar.currentView == \"month\"\n ? \"year\"\n : this.calendar.currentView == \"year\"\n ? \"multi-year\"\n : \"month\";\n }\n\n today = new Date();\n\n presetChanged(evt: any) {\n const newRange: any = this.findDate(evt.target.value);\n this.calendar.activeDate = newRange.newStart;\n this.picker.select(newRange.newStart);\n this.picker.select(newRange.newEnd);\n }\n\n findDate(selected: string) {\n const date = this.today.getDate();\n const month = this.today.getMonth();\n const year = this.today.getFullYear();\n let newRange: any;\n this.selectedPreset = selected;\n switch (selected) {\n case \"This Quarter\": {\n const thisQuarterMonth = Math.floor(month / 3) * 3;\n const start = this.dateAdapter.createDate(year, thisQuarterMonth, 1);\n const end = this.dateAdapter.createDate(year, thisQuarterMonth + 3, 1);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"Last Quarter\": {\n const lastQuarterMonth = (Math.floor(month / 3) * 3) - 3;\n const start = this.dateAdapter.createDate(year, lastQuarterMonth, 1);\n const end = this.dateAdapter.createDate(year, lastQuarterMonth + 3, 1);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"Last 6 Months\": {\n const end = this.dateAdapter.createDate(year, month, date);\n const start = this.dateAdapter.addCalendarMonths(end, -6);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"This Year\": {\n const start = this.dateAdapter.createDate(year, 0, 1);\n const end = this.dateAdapter.createDate(year, 11, 31);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n case \"Last Year\": {\n const start = this.dateAdapter.createDate(year - 1, 0, 1);\n const end = this.dateAdapter.createDate(year - 1, 11, 31);\n newRange = {\n newStart: start,\n newEnd: end,\n }\n break;\n }\n default: {\n newRange = {\n newStart: new Date(),\n newEnd: new Date(),\n }\n }\n }\n return newRange;\n }\n\n private changeDate(mode: 'month' | 'year', amount: -1 | 1): void {\n // increment or decrement month or year\n this.calendar.activeDate =\n mode === 'month'\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, amount)\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, amount);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(); // will trigger unsubscription in takeUntil\n }\n}\n","<div class=\"range-preset\">\n <div class=\"preset\" *ngFor=\"let preset of presets, let i = index\">\n <label class=\"preset-label {{preset == selectedPreset ? 'preset-selected' : ''}}\"\n for=\"preset-radio-{{i}}\">{{preset}}</label>\n <input class=\"preset-radio\" (change)=\"presetChanged($event)\" [checked]=\"preset == selectedPreset\"\n id=\"preset-radio-{{i}}\" type=\"radio\" name=\"preset-radios-{{uuid}}\" value=\"{{preset}}\">\n </div>\n</div>\n\n<div class=\"header\">\n <button mat-icon-button (click)=\"previousClicked('month')\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <button mat-button class=\"header-label\" (click)=\"changeView()\">{{ periodLabel }}</button>\n\n <button mat-icon-button (click)=\"nextClicked('month')\">\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { NgFor } from '@angular/common';\nimport { NgIf } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { CalendarHeaderComponent } from '../calendar-header/calendar-header.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sa-datepicker',\n standalone: true,\n providers: [],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n NgFor,\n NgIf,\n ReactiveFormsModule,\n CalendarHeaderComponent,\n CommonModule,\n MatNativeDateModule\n ],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.css'\n})\nexport class DatepickerComponent extends FieldType<FieldTypeConfig> {\n @Input() range: any;\n\n readonly CalendarHeaderComponent = CalendarHeaderComponent;\n\n}\n","<mat-form-field class=\"date-picker\">\n <mat-label>Choose a date</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\" [formGroup]=\"range\">\n <input formControlName=\"start\" matStartDate placeholder=\"Start date\">\n <input formControlName=\"end\" matEndDate placeholder=\"End date\">\n </mat-date-range-input>\n <mat-hint>MM/DD/YYYY</mat-hint>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker [calendarHeaderComponent]=\"CalendarHeaderComponent\" #picker>\n </mat-date-range-picker>\n</mat-form-field>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TabInterface } from '../../interfaces/tab-interface';\nimport { NgFor } from '@angular/common';\nimport { NgIf } from '@angular/common';\n\n\nlet nextId = 0; // used to give unique ids to inputs used in html\n@Component({\n selector: 'sa-tabs',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.css'\n})\nexport class TabsComponent {\n @Input() tabs: TabInterface[];\n @Input() type: string;\n @Input() defaultTab: number;\n\n @Output() tabChanged = new EventEmitter();\n\n\n uuid: number = nextId++;\n svgStyle: any = [];\n\n ngOnChanges(): void {\n this.svgStyle = this.tabs.map((item) => {\n return {\n '-webkit-mask-image': `url(${item.tabIcon})`,\n 'mask-image': `url(${item.tabIcon})`,\n }\n })\n }\n tabChange(evt: any) {\n this.tabChanged.emit(evt.target.value)\n }\n}\n","<div class=\"tab-wrapper {{type}}\">\n <div class=\"tabs\">\n <div *ngFor=\"let item of tabs, let i = index\" class=\"tab-item\">\n <input [checked]=\"(defaultTab == i) ? true : false\" [value]=\"i\" (change)=\"tabChange($event)\"\n id=\"tab-check-{{i}}-{{uuid}}\" class=\"tab-checks\" type=\"radio\" name=\"tab-checkbox-{{uuid}}\">\n <label for=\"tab-check-{{i}}-{{uuid}}\" class=\"tab-label\">\n <div *ngIf=\"item.iconPosition == 'left' || item.iconPosition == 'both'\" class=\"svg-icon\" [style]=\"svgStyle[i]\">\n </div>\n {{item.tabName}}\n <div *ngIf=\"item.iconPosition == 'right' || item.iconPosition == 'both'\" class=\"svg-icon\" [style]=\"svgStyle[i]\">\n </div>\n <div class=\"badge\" *ngIf=\"item.badgeContent\">{{item.badgeContent}}</div>\n </label>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { IconComponent } from '../icon/icon.component';\n// import { AvatarComponent } from '../avatar/avatar.component';\n\n@Component({\n selector: 'sa-left-nav',\n standalone: true,\n imports: [\n CommonModule,\n AvatarComponent,\n IconComponent\n ],\n templateUrl: './left-nav.component.html',\n styleUrl: './left-nav.component.css'\n})\nexport class LeftNavComponent {\n\n @Input('data') data: ILeftNav;\n @Output('clickEvent') clickEvent: EventEmitter<ILeftNavClickEvent>;\n\n // @Inject(ActivatedRoute) activeRouteService: ActivatedRoute;\n // @Inject(Router) routerService: Router;\n\n private activeItem: ILeftNavItem | null;\n\n constructor(private route: ActivatedRoute, private router: Router) {\n this.clickEvent = new EventEmitter();\n }\n\n ngOnInit() {\n console.log(this.data.items);\n if (!this.data.footerItems) {\n this.data.footerItems = data.footerItems;\n }\n if (this.data?.items?.length) {\n this.onNavItemClick(this.data.items[0], 0);\n }\n }\n\n setItemActive(index: number) {\n try {\n if (this.activeItem) {\n this.activeItem.active = false;\n }\n if (this.data?.items?.length) {\n this.activeItem = this.data.items[index];\n this.activeItem.active = true;\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n onNavItemClick(item: ILeftNavItem, index: number, event: any = null) {\n console.log(item, index);\n\n this.clickEvent.emit({\n event,\n type: 'NAV_ITEM_CLICK',\n item\n });\n\n if (!item.disable && item.path) {\n this.setItemActive(index);\n this.router.navigate([item.path])\n }\n }\n\n onFooterItemClick(item: ILeftNavItem, index: number, event: any = null) {\n this.clickEvent.emit({\n event,\n type: 'FOOTER_ITEM_CLICK',\n item\n });\n }\n\n\n}\n\nexport interface ILeftNav {\n items?: ILeftNavItem[];\n footerItems?: ILeftNavItem[];\n}\nexport interface ILeftNavItem {\n title: string,\n // icon_url?: string,\n icon?: string,\n disable?: boolean,\n tooltip?: string,\n relativePath?: boolean,\n path?: string,\n active?: boolean,\n type?: 'ICON' | 'AVATAR';\n}\nexport interface ILeftNavClickEvent {\n type: 'NAV_ITEM_CLICK' | 'FOOTER_ITEM_CLICK' | 'LOGO_CLICK';\n event: any,\n item: ILeftNavItem\n}\nexport enum ILeftNavTypes {\n\n}\n\nconst data: ILeftNav = {\n items: [{\n title: 'Home',\n icon: '',\n disable: false,\n tooltip: '',\n relativePath: true,\n path: 'home'\n }, {\n title: 'Pricing',\n icon: '',\n disable: true,\n tooltip: '',\n relativePath: true,\n path: ''\n }, {\n title: '',\n icon: '',\n disable: true,\n tooltip: '',\n relativePath: true,\n path: ''\n }],\n footerItems: [{\n title: 'Help',\n icon: 'chathelp',\n disable: true,\n tooltip: ''\n }, {\n title: 'Name',\n disable: false,\n tooltip: '',\n type: 'AVATAR'\n }, {\n title: 'Chevron',\n icon: 'doublechevron',\n disable: true,\n tooltip: ''\n }]\n}","<div class=\"sa-left-nav\">\n\n <div class=\"sa-left-nav-container\">\n <div class=\"sa-left-nav-logo\">\n <!-- <span class=\"sa-logo\"></span> -->\n <sa-icon icon=\"saras_white\" size=\"40\"></sa-icon>\n </div>\n <div class=\"sa-left-nav-items\">\n @if(data && data.items && !!data.items.length){\n <div class=\"sa-left-nav-items-container\">\n <ng-container *ngFor=\"let item of data.items; let i = index\">\n <div class=\"sa-left-nav-item\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onNavItemClick(item, i, $event)\">\n\n <sa-icon class=\"sa-left-nav-item-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span class=\"sa-left-nav-item-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url + ')' }\"></span> -->\n </div>\n </ng-container>\n </div>\n }\n </div>\n <div class=\"sa-left-nav-footer\">\n @if(data && data.footerItems && !!data.footerItems.length){\n <div class=\"sa-left-nav-footer-container\">\n <ng-container *ngFor=\"let item of data.footerItems; let i = index\">\n <div class=\"sa-left-nav-footer-item\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onFooterItemClick(item, i, $event)\">\n @if(item.type === 'AVATAR'){\n <!-- <span class=\"sa-left-nav-footer-name\">ET</span> -->\n <sa-avatar altText=\"ET\" [imagePath]=\"''\" size=\"extra-small\"></sa-avatar>\n }@else{\n <sa-icon class=\"sa-left-nav-footer-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span class=\"sa-left-nav-footer-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url || '' + ')' }\"></span> -->\n }\n </div>\n </ng-container>\n </div>\n }\n </div>\n </div>\n\n <div class=\"sa-left-nav-content\">\n <ng-content></ng-content>\n </div>\n\n</div>","\nimport { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { catchError, debounceTime, delay, distinctUntilChanged, map, Observable, of, Subject, switchMap } from 'rxjs';\n\nexport function phoneNumberValidator(dependent?: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const dependentFormControl = dependent ? control.parent?.get(dependent) : null;\n if (dependentFormControl && !!dependentFormControl.value?.length) {\n console.log('validator', dependentFormControl.value);\n\n if (dependentFormControl.value[0].id === 0) {\n if (!/^\\+1[2-9]\\d{2}[2-9]\\d{6}$/.test(control.value)) {\n return { invalid: 'invalid phone number' };\n }\n }\n }\n return null;\n }\n}\n\nexport const customEmailValidator = (control: AbstractControl): { [key: string]: string } | null => {\n const email = control.value;\n // Replace the regular expression with the pattern you want to use.\n const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n\n if (emailPattern.test(email)) {\n return null; // Valid email\n } else {\n return { invalid: \"Please use a work email; personal emails (e.g., @gmail, @outlook) are not accepted.\" }; // Invalid email\n }\n}\n/*\nexport function workEmailValidation(): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> => {\n if (!control.value) {\n return of(null); // No value to validate\n }\n\n !control.pending && control.markAsPending();\n // !control.touched && control.markAsTouched();\n // return of({ invalid: 'Enter your work email' });\n return of(null);\n return new Observable((ob) => {\n setTimeout(() => {\n if (control.value === 'sairaj@gmail.com')\n return ob.next(null)\n return ob.next({ invalid: 'This is not a workemail' });\n }, 500)\n });\n\n return of(control.value).pipe(\n delay(500), // Simulate network delay\n\n map(value => {\n return of({ invalid: 'This is not a workemail' })//existingUsernames.includes(username) ? { usernameTaken: true } : null;\n })\n // catchError(() => of(null)) // Handle any errors\n );\n };\n}*/\nexport function getValidationMessage(errors: any): string {\n if (errors) {\n if (errors['minlength']) {\n return `minimum ${errors['minlength']['requiredLength']} required`;\n } else if (errors['maxlength']) {\n return `maximum ${errors['maxlength']['requiredLength']} characters`;\n } else if (errors['required']) {\n return 'Input cannot be empty';\n } else if (errors['invalid']) {\n return errors['invalid'];\n } else if (errors['email']) {\n return 'Enter a valid email';\n } else if (errors['pattern']) {\n return 'Enter a valid phone number';\n } else {\n return 'Invalid input';\n }\n }\n return 'Invalid input';\n}","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { AbstractControl, FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FieldType, FieldTypeConfig } from '@ngx-formly/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { getValidationMessage, phoneNumberValidator } from '../../utils/validators';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'sa-input',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FormlyModule,\n IconComponent\n ],\n templateUrl: './form-input.component.html',\n styleUrl: './form-input.component.css'\n})\nexport class FormInputComponent extends FieldType<FieldTypeConfig> {\n\n @ViewChild('formInput') formInput!: ElementRef;\n\n @Input('icon') icon: IInputIcon;\n\n pretext: string;\n\n inputState = 'idle';\n inputVal = '';\n params: IInputParam | null;\n dependent: AbstractControl<any, any> | null;\n dependentVal: any = null;\n // dynamicIcon: DynamicIcon | null;\n // icon: IInputIcon | null;\n\n type: string = '';\n validators: any[];\n asyncValidators: any[];\n\n inputErrorText: string = 'invalid input';\n\n showEmailIcon: boolean = false;\n disabled: boolean = false;\n\n private suppressOnBlur = false;\n\n constructor() {\n super();\n\n }\n\n ngOnInit() {\n this.inputVal = this.field.props['value'];\n this.disabled = this.field.props.disabled || false;\n this.formControl?.setValue(this.inputVal);\n\n this.params = this.field.props['params'];\n this.icon = this.field.props['icon'] || {};\n this.type = this.params?.type || '';\n\n // this.dynamicIcon = this.field.props['dynamicIcon'];\n this.setValidators();\n this.setDependents();\n\n this.formControl.statusChanges.subscribe((state) => {\n if (this.type === 'email') {\n this.showEmailIcon = ((state === 'VALID') || (state === 'INVALID' && this.formControl.hasError('invalid')) && this.form.touched);\n }\n })\n this.formControl.valueChanges.subscribe((val) => {\n this.formInput.nativeElement.value = val;\n })\n }\n\n setValidators() {\n this.validators = this.params?.validators || [];\n this.asyncValidators = this.params?.asyncValidators || [];\n this.formControl?.setValidators([...(this.type ? this.predefinedValidators[this.type] || [] : []), ...this.validators]);\n if (this.asyncValidators)\n this.formControl?.setAsyncValidators(this.asyncValidators);\n }\n\n /*\n Assuming dependent field is a single select dropdown\n */\n setDependents() {\n if (this.params?.dependent) {\n this.dependent = this.form.get([this.params?.dependent]);\n\n this.dependentVal = this.getDependentVal(this.dependent.value);\n if (this.type === 'tel') {\n this.pretext = this.dependentVal?.dial_code;\n }\n\n this.dependent?.valueChanges.subscribe((val) => {\n this.dependentVal = this.getDependentVal(val);\n this.formControl.reset();\n this.formControl.setValue(this.inputVal);\n if (this.type === 'tel') {\n this.pretext = this.dependentVal?.dial_code;\n }\n })\n }\n }\n getDependentVal(value: any) {\n let dependentValue: any;\n if (Array.isArray(value)) {\n dependentValue = value.length ? value[0] : null;\n } else {\n dependentValue = value;\n }\n return dependentValue;\n }\n\n checkValidity(defaultInputState = 'focus') {\n if (this.formControl && !this.formControl.valid && this.formControl.touched && !this.formControl.pending) {\n this.inputState = 'invalid';\n this.inputErrorText = getValidationMessage(this.formControl.errors) || 'invalid input';\n } else {\n this.inputState = defaultInputState;\n }\n }\n\n onFocus() {\n if (this.formControl.valid)\n this.inputState = 'focus'\n }\n onBlur() {\n setTimeout(() => {\n if (!this.suppressOnBlur) {\n this.formControl.markAsTouched();\n this.checkValidity('idle');\n }\n this.suppressOnBlur = false;\n }, 200)\n }\n\n onInput(event: any) {\n if (this.params?.type === 'tel') {\n this.inputVal = this.inputVal.replace(/[^0-9()+\\- ]/g, '');\n }\n\n this.formControl?.setValue(this.inputVal);\n this.checkValidity();\n /*if (this.params?.eventListener) {\n this.params?.eventListener({\n type: IInputEventType.INPUT_CHANGE,\n value: this.inputVal,\n formControl: this.formControl\n } as IInputEvent).then(this.onFieldCallback.bind(this));\n }*/\n }\n\n onInputFieldClick(event: any = 'input') {\n if (event === 'input' || event.target.classList.contains('sa-input-field')) {\n this.formInput.nativeElement.focus();\n if (this.params?.type !== 'email') setTimeout(() => {\n this.formInput.nativeElement.setSelectionRange(this.inputVal.length, this.inputVal.length)\n }, 10)\n }\n }\n\n inputIconClick() {\n if (this.params?.type === 'password') {\n this.suppressOnBlur = true;\n if (this.type === 'password') {\n this.type = 'text';\n this.icon.name = 'eye_filled';\n } else {\n this.type = 'password';\n this.icon.name = 'eye';\n }\n this.onInputFieldClick();\n }\n }\n\n /*onFieldCallback(param: IInputParam) {\n this.icon = param.icon || this.icon;\n this.checkValidity();\n }*/\n\n getFormSupportText() {\n if (this.formControl.invalid && this.formControl.touched) {\n return getValidationMessage(this.formControl.errors) || 'invalid input';\n } else {\n return this.params.supportText || '';\n }\n }\n\n predefinedValidators: any = {\n email: [Validators.email, Validators.required],\n password: [Validators.minLength(8), Validators.required],\n tel: [Validators.pattern('^[0-9 +\\\\-()]*$')]\n }\n}\n\nexport interface IInputIcon {\n name: string;\n show?: boolean;\n color?: string;\n size?: string;\n}\n\nexport interface IInputParam {\n validators?: any[];\n asyncValidators?: any[];\n supportText?: string,\n placeholder?: string,\n type?: string,\n dependent?: string,\n eventListener?: Function,\n icon?: IInputIcon\n errors?: { [key: string]: any }\n}\nexport interface IInputEvent {\n type: IInputEventType;\n value: string;\n callBack: any;\n formControl: FormControl\n}\nexport enum IInputEventType {\n INPUT_CHANGE = 'INPUT_CHANGE',\n STATE_CHANGE = 'STATE_CHANGE',\n ICON_CLICK = 'ICON_CLICK'\n}","<div class=\"sa-input\" [ngClass]=\"disabled ? 'disabled' : '' \">\n @if(pretext || (!!inputVal.length && !!params?.placeholder)){\n <span class=\"sa-input-tag\">{{params?.placeholder}}</span>\n }\n <div class=\"sa-input-field\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle' \"\n (click)=\"onInputFieldClick($event)\">\n @if(pretext){\n <div class=\"sa-input-pretext\">\n {{pretext}}\n </div>\n }\n <input matInput [type]=\"type\" value=\"\" [pattern]=\"type==='tel' ? '[0-9]' : '' \"\n [disabled]=\"field.props.disabled || false\" [placeholder]=\"!pretext && params?.placeholder || '' \"\n (focus)=\"onFocus()\" (blur)=\"onBlur()\" (input)=\"onInput($event)\" [(ngModel)]=\"inputVal\" #formInput />\n\n @if(params?.type === 'password'){\n <sa-icon class=\"flex\" icon=\"eye\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\n [ngClass]=\"!icon.name || icon.name === 'eye' ? '' : 'hide'\"></sa-icon>\n <sa-icon class=\"flex\" icon=\"eye_filled\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\n [ngClass]=\"icon.name === 'eye_filled' ? '' : 'hide'\"></sa-icon>\n }@else if(params?.type === 'email' && icon.show){\n <sa-icon class=\"flex\" [icon]=\"icon.name || 'checkmark'\" [size]=\"icon.size || '24'\" (click)=\"inputIconClick()\"\n [ngClass]=\"showEmailIcon ? '' : 'hide'\"></sa-icon>\n }\n @else if(icon.name){\n <sa-icon class=\"flex\" [icon]=\"icon.name\" [size]=\"icon.size || '24'\" [color]=\"icon.color || ''\"\n [ngClass]=\"icon.show ? '' : 'hide'\"></sa-icon>\n }\n\n\n <!-- <sa-icon [icon]=\"icon\" size=\"24\" (click)=\"inputIconClick()\"></sa-icon> -->\n </div>\n @if((!formControl.valid) || (params && params.supportText)){\n <div class=\"support-label\" [ngClass]=\"formControl.invalid && formControl.touched ? 'invalid' : 'idle'\">\n <!-- {{!formControl.valid ? inputErrorText : params.supportText}} -->\n {{getFormSupportText()}}\n </div>\n }\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, SimpleChanges } from '@angular/core';\nimport { ChipsComponent } from '../chips/chips.component';\nimport { ChipInterface } from '../../interfaces/chip-interface';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'sa-card',\n standalone: true,\n imports: [CommonModule, ChipsComponent, IconComponent],\n templateUrl: './card.component.html',\n styleUrl: './card.component.css'\n})\nexport class CardComponent {\n @Input('title') title: string = '';\n @Input('chip') chip: ChipInterface | null = null;\n @Input('body') body: string = '';\n @Input('avatar') avatar: string = '';\n\n @Input('icon') icon: string = '';\n @Input('iconSize') iconSize: string;\n\n @Input('width') width: string | number;\n @Input('column') column: boolean = false;\n\n cardStyles: any = {};\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['width']?.currentValue) {\n this.cardStyles['width'] = typeof changes['width']?.currentValue === 'string' ? changes['width']?.currentValue : changes['width']?.currentValue + '%';\n }\n }\n}\n","<div class=\"sa-card\" [ngStyle]=\"cardStyles\">\n <div class=\"sa-card-wrapper\" [ngClass]=\"column ? 'column' : ''\">\n <div class=\"\" [ngClass]=\"avatar ? 'sa-card-img' : 'sa-card-icon'\">\n @if(avatar){\n <img [src]=\"avatar\" />\n }@else if(icon){\n <sa-icon [icon]=\"icon\" [size]=\"iconSize\"></sa-icon>\n }@else{\n <ng-content select=\"sa-card-icon\"></ng-content>\n }\n @if(column){\n <ng-content select=\"sa-card-title-actions\"></ng-content>\n }\n </div>\n <div class=\"sa-card-container\">\n @if(title){\n <div class=\"sa-card-title-container\">\n <div class=\"sa-card-title\">{{title}}</div>\n @if(chip){\n <sa-chip [text]=\"chip.text\" [type]=\"chip.type\" [state]=\"chip.state\"></sa-chip>\n }\n <ng-content select=\"sa-card-title-actions\"></ng-content>\n\n </div>\n }\n @if(body){\n <div class=\"sa-card-body\">\n {{body}}\n </div>\n }\n <ng-content select=\"sa-card-footer-actions\"></ng-content>\n </div>\n </div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sa-card-icon',\n standalone: true,\n imports: [],\n templateUrl: './card-icon.component.html',\n styleUrl: './card-icon.component.css'\n})\nexport class CardIconComponent {\n\n}\n","<ng-content></ng-content>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sa-card-footer-actions',\n standalone: true,\n imports: [],\n templateUrl: './card-footer-actions.component.html',\n styleUrl: './card-footer-actions.component.css'\n})\nexport class CardFooterActionsComponent {\n\n}\n","<div class=\"sa-card-footer-actions\">\n <ng-content></ng-content>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sa-card-title-actions',\n standalone: true,\n imports: [],\n templateUrl: './card-title-actions.component.html',\n styleUrl: './card-title-actions.component.css'\n})\nexport class CardTitleActionsComponent {\n\n}\n","<div class=\"sa-card-title-actions\"><ng-content></ng-content></div>","/*\n * Public API Surface of component-library\n */\n\n\nexport * from './lib/component-library.service';\nexport * from './lib/component-library.component';\nexport * from './lib/button/button.component';\nexport * from './lib/chips/chips.component';\nexport * from './lib/avatar/avatar.component';\nexport * from './lib/grid-cell/grid-cell.component';\nexport * from './lib/header/header.component';\nexport * from './lib/toast/toast.component';\nexport * from './lib/form-select/form-select.component';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/tool-tip/tool-tip.component';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/tabs/tabs.component';\n\nexport * from './interfaces/grid-interface';\nexport * from './interfaces/avatar-interface';\nexport * from './interfaces/button-interface';\nexport * from './interfaces/chip-interface';\nexport * from './interfaces/select-interface';\nexport * from './interfaces/tab-interface';\n\nexport * from './lib/icon/icon.component';\nexport * from './lib/left-nav/left-nav.component';\nexport * from './lib/form-input/form-input.component';\nexport * from './lib/card/card.component';\nexport * from './lib/card/card-icon/card-icon.component';\nexport * from './lib/card/card-footer-actions/card-footer-actions.component';\nexport * from './lib/card/card-title-actions/card-title-actions.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","i1","i3","i2"],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export declare class FormInputComponent extends FieldType<FieldTypeConfig> {
|
|
|
22
22
|
ngOnInit(): void;
|
|
23
23
|
setValidators(): void;
|
|
24
24
|
setDependents(): void;
|
|
25
|
+
getDependentVal(value: any): any;
|
|
25
26
|
checkValidity(defaultInputState?: string): void;
|
|
26
27
|
onFocus(): void;
|
|
27
28
|
onBlur(): void;
|
package/package.json
CHANGED
package/utils/validators.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import { ValidatorFn } from '@angular/forms';
|
|
1
|
+
import { AbstractControl, ValidatorFn } from '@angular/forms';
|
|
2
2
|
export declare function phoneNumberValidator(dependent?: string): ValidatorFn;
|
|
3
|
+
export declare const customEmailValidator: (control: AbstractControl) => {
|
|
4
|
+
[key: string]: string;
|
|
5
|
+
};
|
|
3
6
|
export declare function getValidationMessage(errors: any): string;
|