monkey-style-guide-v2 0.0.27 → 0.0.28
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/assets/scss/theme.scss +7 -6
- package/fesm2022/monkey-style-guide-v2.mjs +278 -271
- package/fesm2022/monkey-style-guide-v2.mjs.map +1 -1
- package/lib/components/form-field/form-field-control.d.ts +1 -1
- package/lib/components/input-phone/input-phone.component.d.ts +0 -2
- package/monkey-style-guide-v2-0.0.28.tgz +0 -0
- package/package.json +8 -10
- package/esm2022/lib/components/accordion/accordion.component.mjs +0 -93
- package/esm2022/lib/components/accordion/index.mjs +0 -7
- package/esm2022/lib/components/action-bar/action-bar.component.mjs +0 -46
- package/esm2022/lib/components/action-bar/index.mjs +0 -7
- package/esm2022/lib/components/alert/alert.component.mjs +0 -50
- package/esm2022/lib/components/alert/index.mjs +0 -7
- package/esm2022/lib/components/avatar/avatar.component.mjs +0 -55
- package/esm2022/lib/components/avatar/index.mjs +0 -7
- package/esm2022/lib/components/badge/badge.component.mjs +0 -74
- package/esm2022/lib/components/badge/index.mjs +0 -7
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -56
- package/esm2022/lib/components/breadcrumb/index.mjs +0 -7
- package/esm2022/lib/components/button/button.component.mjs +0 -59
- package/esm2022/lib/components/button/index.mjs +0 -7
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -215
- package/esm2022/lib/components/checkbox/index.mjs +0 -7
- package/esm2022/lib/components/date-range/date-range.component.mjs +0 -239
- package/esm2022/lib/components/date-range/index.mjs +0 -7
- package/esm2022/lib/components/date-range/month/index.mjs +0 -7
- package/esm2022/lib/components/date-range/month/month.component.mjs +0 -148
- package/esm2022/lib/components/date-range/quick-actions/index.mjs +0 -7
- package/esm2022/lib/components/date-range/quick-actions/quick-actions.component.mjs +0 -48
- package/esm2022/lib/components/date-range/utils.mjs +0 -102
- package/esm2022/lib/components/divider/divider.component.mjs +0 -44
- package/esm2022/lib/components/divider/index.mjs +0 -7
- package/esm2022/lib/components/form-field/form-field-control.mjs +0 -15
- package/esm2022/lib/components/form-field/form-field.component.mjs +0 -265
- package/esm2022/lib/components/form-field/form-field.module.mjs +0 -23
- package/esm2022/lib/components/form-field/index.mjs +0 -10
- package/esm2022/lib/components/form-field/utils.mjs +0 -16
- package/esm2022/lib/components/icon/icon.component.mjs +0 -51
- package/esm2022/lib/components/icon/index.mjs +0 -7
- package/esm2022/lib/components/icon-button/icon-button.component.mjs +0 -59
- package/esm2022/lib/components/icon-button/index.mjs +0 -7
- package/esm2022/lib/components/index.mjs +0 -34
- package/esm2022/lib/components/input/index.mjs +0 -9
- package/esm2022/lib/components/input/input-currency.directive.mjs +0 -185
- package/esm2022/lib/components/input/input.directive.mjs +0 -185
- package/esm2022/lib/components/input/input.module.mjs +0 -24
- package/esm2022/lib/components/input/validators.mjs +0 -22
- package/esm2022/lib/components/input-code/index.mjs +0 -7
- package/esm2022/lib/components/input-code/input-code.component.mjs +0 -232
- package/esm2022/lib/components/input-phone/index.mjs +0 -7
- package/esm2022/lib/components/input-phone/input-phone.component.mjs +0 -324
- package/esm2022/lib/components/input-upload/index.mjs +0 -7
- package/esm2022/lib/components/input-upload/input-upload.component.mjs +0 -238
- package/esm2022/lib/components/modal/components/confirmation.component.mjs +0 -73
- package/esm2022/lib/components/modal/components/default.mjs +0 -65
- package/esm2022/lib/components/modal/directives/actions.mjs +0 -29
- package/esm2022/lib/components/modal/directives/content.mjs +0 -26
- package/esm2022/lib/components/modal/directives/subtitle.mjs +0 -26
- package/esm2022/lib/components/modal/directives/title.mjs +0 -26
- package/esm2022/lib/components/modal/index.mjs +0 -16
- package/esm2022/lib/components/modal/modal-config.mjs +0 -19
- package/esm2022/lib/components/modal/modal-ref.mjs +0 -56
- package/esm2022/lib/components/modal/modal.component.mjs +0 -119
- package/esm2022/lib/components/modal/modal.module.mjs +0 -56
- package/esm2022/lib/components/modal/modal.service.mjs +0 -150
- package/esm2022/lib/components/modal/utils.mjs +0 -24
- package/esm2022/lib/components/option/index.mjs +0 -7
- package/esm2022/lib/components/option/option.component.mjs +0 -70
- package/esm2022/lib/components/radio-button/index.mjs +0 -7
- package/esm2022/lib/components/radio-button/radio-button.component.mjs +0 -190
- package/esm2022/lib/components/security-level/index.mjs +0 -7
- package/esm2022/lib/components/security-level/security-level.component.mjs +0 -57
- package/esm2022/lib/components/select/index.mjs +0 -7
- package/esm2022/lib/components/select/select.component.mjs +0 -444
- package/esm2022/lib/components/status/index.mjs +0 -7
- package/esm2022/lib/components/status/status.component.mjs +0 -45
- package/esm2022/lib/components/table/components/pagination-action/pagination-action.mjs +0 -53
- package/esm2022/lib/components/table/components/pagination-label/pagination-label.mjs +0 -34
- package/esm2022/lib/components/table/components/pagination-size/pagination-size.mjs +0 -57
- package/esm2022/lib/components/table/directives/column-checked.mjs +0 -109
- package/esm2022/lib/components/table/directives/column-expansible.mjs +0 -134
- package/esm2022/lib/components/table/directives/column-sortable.mjs +0 -97
- package/esm2022/lib/components/table/directives/column-stick.mjs +0 -28
- package/esm2022/lib/components/table/index.mjs +0 -15
- package/esm2022/lib/components/table/table.component.mjs +0 -133
- package/esm2022/lib/components/table/table.module.mjs +0 -63
- package/esm2022/lib/components/toast/index.mjs +0 -7
- package/esm2022/lib/components/toast/toast.component.mjs +0 -79
- package/esm2022/lib/components/toggle/index.mjs +0 -7
- package/esm2022/lib/components/toggle/toggle.component.mjs +0 -74
- package/esm2022/lib/components/toggle-line/index.mjs +0 -8
- package/esm2022/lib/components/toggle-line/toggle-line-button/index.mjs +0 -7
- package/esm2022/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.mjs +0 -24
- package/esm2022/lib/components/toggle-line/toggle-line.component.mjs +0 -85
- package/esm2022/lib/components/tooltip/index.mjs +0 -8
- package/esm2022/lib/components/tooltip/tooltip/index.mjs +0 -7
- package/esm2022/lib/components/tooltip/tooltip/tooltip.component.mjs +0 -58
- package/esm2022/lib/components/tooltip/tooltip.directive.mjs +0 -189
- package/esm2022/lib/directives/badge.mjs +0 -74
- package/esm2022/lib/directives/error.mjs +0 -18
- package/esm2022/lib/directives/helper.mjs +0 -18
- package/esm2022/lib/directives/index.mjs +0 -15
- package/esm2022/lib/directives/info.mjs +0 -18
- package/esm2022/lib/directives/label.mjs +0 -18
- package/esm2022/lib/directives/module.mjs +0 -61
- package/esm2022/lib/directives/popover.mjs +0 -385
- package/esm2022/lib/directives/prefix.mjs +0 -18
- package/esm2022/lib/directives/suffix.mjs +0 -43
- package/esm2022/lib/interfaces/alert.mjs +0 -2
- package/esm2022/lib/interfaces/breadcrumb.mjs +0 -2
- package/esm2022/lib/interfaces/button.mjs +0 -2
- package/esm2022/lib/interfaces/index.mjs +0 -13
- package/esm2022/lib/interfaces/popover.mjs +0 -2
- package/esm2022/lib/interfaces/sizes.mjs +0 -2
- package/esm2022/lib/interfaces/table.mjs +0 -2
- package/esm2022/lib/interfaces/toast.mjs +0 -10
- package/esm2022/lib/services/dictionary.service.mjs +0 -224
- package/esm2022/lib/services/index.mjs +0 -7
- package/esm2022/lib/services/toast.service.mjs +0 -79
- package/esm2022/lib/tokens/index.mjs +0 -10
- package/esm2022/monkey-style-guide-v2.mjs +0 -5
- package/esm2022/public-api.mjs +0 -11
- package/esm2022/utils/icon.mjs +0 -277
- package/esm2022/utils/id-generator.mjs +0 -20
- package/esm2022/utils/index.mjs +0 -5
- package/esm2022/utils/tests-utils.mjs +0 -4
- package/esm2022/utils/utils.mjs +0 -41
- package/monkey-style-guide-v2-0.0.27.tgz +0 -0
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
/** ************************
|
|
2
|
-
* Copyright Monkey Exchange. All Rights Reserved
|
|
3
|
-
* This style guide was developed by Monkey Exchange Team
|
|
4
|
-
* MIT Licence
|
|
5
|
-
************************* */
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import { booleanAttribute, Component, inject, Input, LOCALE_ID, ViewChildren } from '@angular/core';
|
|
8
|
-
import { FormsModule, NgControl, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
9
|
-
import parsePhoneNumberFromString, { AsYouType, getCountries, getCountryCallingCode, getExampleNumber, isValidPhoneNumber } from 'libphonenumber-js';
|
|
10
|
-
import examples from 'libphonenumber-js/examples.mobile.json';
|
|
11
|
-
import { Subject } from 'rxjs';
|
|
12
|
-
import { IdGenerator } from '../../../utils';
|
|
13
|
-
import { MECX_COUNTRY_CODE } from '../../tokens';
|
|
14
|
-
import { MonkeyFormFieldControl, MonkeyFormFieldModule } from '../form-field';
|
|
15
|
-
import { MonkeyOptionComponent } from '../option';
|
|
16
|
-
import { MonkeySelectComponent } from '../select';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@angular/forms";
|
|
19
|
-
export class MonkeyInputPhoneComponent {
|
|
20
|
-
get disabled() {
|
|
21
|
-
if (this.ngControl && this.ngControl.disabled !== null) {
|
|
22
|
-
return this.ngControl.disabled;
|
|
23
|
-
}
|
|
24
|
-
return this._disabled;
|
|
25
|
-
}
|
|
26
|
-
set disabled(value) {
|
|
27
|
-
this._disabled = value;
|
|
28
|
-
if (this.focused) {
|
|
29
|
-
this.focused = false;
|
|
30
|
-
this.stateChanges.next();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
get required() {
|
|
34
|
-
return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
|
|
35
|
-
}
|
|
36
|
-
set required(value) {
|
|
37
|
-
this._required = value;
|
|
38
|
-
this.stateChanges.next();
|
|
39
|
-
}
|
|
40
|
-
set value(value) {
|
|
41
|
-
if (this._value !== value && value !== undefined) {
|
|
42
|
-
this._value = value;
|
|
43
|
-
this.formatValue(value);
|
|
44
|
-
this._onChange(value);
|
|
45
|
-
this._onTouched(value);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
get value() {
|
|
49
|
-
return this._value;
|
|
50
|
-
}
|
|
51
|
-
constructor() {
|
|
52
|
-
this.placeholder = '';
|
|
53
|
-
this.tabIndex = 0;
|
|
54
|
-
this._disabled = false;
|
|
55
|
-
this._value = null;
|
|
56
|
-
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
57
|
-
this.idGenerator = inject(IdGenerator);
|
|
58
|
-
this.countryCode = inject(MECX_COUNTRY_CODE);
|
|
59
|
-
this.locale = inject(LOCALE_ID);
|
|
60
|
-
this.id = this.idGenerator.getId('monkey-input-upload-');
|
|
61
|
-
this.inputId = this.idGenerator.getId('monkey-input-upload-input-');
|
|
62
|
-
this.focused = false;
|
|
63
|
-
this.type = 'input-phone';
|
|
64
|
-
this.stateChanges = new Subject();
|
|
65
|
-
this.countries = getCountries()
|
|
66
|
-
.map((code) => {
|
|
67
|
-
return {
|
|
68
|
-
code: `+${getCountryCallingCode(code)}`,
|
|
69
|
-
name: this.getCountryNameFromCode(code),
|
|
70
|
-
flag: `${this.isoToFlagEmoji(code)} `
|
|
71
|
-
};
|
|
72
|
-
})
|
|
73
|
-
.sort((a, b) => {
|
|
74
|
-
return a.name.localeCompare(b.name);
|
|
75
|
-
});
|
|
76
|
-
this.countriesFiltered = this.countries;
|
|
77
|
-
this.selectedCallingCode = this.countryCode.toString();
|
|
78
|
-
this.phoneFormatted = '';
|
|
79
|
-
this.phoneValid = false;
|
|
80
|
-
this._onChange = () => { };
|
|
81
|
-
this._onTouched = () => { };
|
|
82
|
-
if (this.ngControl) {
|
|
83
|
-
this.ngControl.valueAccessor = this;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
getCountryNameFromCode(code) {
|
|
87
|
-
try {
|
|
88
|
-
const locale = this.locale.toString();
|
|
89
|
-
const display = new Intl.DisplayNames([locale], { type: 'region' });
|
|
90
|
-
return display.of(code.toUpperCase()) || code;
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
return code;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
getCountryByCallingCode(code) {
|
|
97
|
-
const cleanCode = code.replace('+', '');
|
|
98
|
-
return (getCountries().find((country) => {
|
|
99
|
-
return getCountryCallingCode(country) === cleanCode;
|
|
100
|
-
}) || null);
|
|
101
|
-
}
|
|
102
|
-
isoToFlagEmoji(isoCode) {
|
|
103
|
-
return isoCode.toUpperCase().replace(/./g, (char) => {
|
|
104
|
-
return String.fromCodePoint(127397 + char.charCodeAt(0));
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
getCountryFromPhoneNumber(input, changedCountry) {
|
|
108
|
-
try {
|
|
109
|
-
if (changedCountry) {
|
|
110
|
-
return this.selectedCallingCode;
|
|
111
|
-
}
|
|
112
|
-
const parsed = parsePhoneNumberFromString(input);
|
|
113
|
-
const country = getCountryCallingCode(parsed?.country);
|
|
114
|
-
return `+${country}`;
|
|
115
|
-
}
|
|
116
|
-
catch (e) {
|
|
117
|
-
// not to do
|
|
118
|
-
}
|
|
119
|
-
return this.selectedCallingCode;
|
|
120
|
-
}
|
|
121
|
-
performValue(value) {
|
|
122
|
-
this._value = `${this.selectedCallingCode}${value}`;
|
|
123
|
-
this._onChange(this._value);
|
|
124
|
-
this._onTouched(this._value);
|
|
125
|
-
}
|
|
126
|
-
validateValue() {
|
|
127
|
-
const { phoneValid } = this;
|
|
128
|
-
if (!phoneValid) {
|
|
129
|
-
const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);
|
|
130
|
-
const example = getExampleNumber(countryCode, examples);
|
|
131
|
-
this.ngControl?.control?.setErrors({
|
|
132
|
-
phone: true,
|
|
133
|
-
phoneAllowed: example?.nationalNumber
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
formatValue(value, changedCountry = false) {
|
|
138
|
-
if (!value) {
|
|
139
|
-
this.phoneFormatted = '';
|
|
140
|
-
this.phoneValid = false;
|
|
141
|
-
this.validateValue();
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
const detectedCallingCode = this.getCountryFromPhoneNumber(value, changedCountry);
|
|
145
|
-
const isCountryChanged = changedCountry || detectedCallingCode !== this.selectedCallingCode;
|
|
146
|
-
if (isCountryChanged && detectedCallingCode) {
|
|
147
|
-
this.selectedCallingCode = detectedCallingCode;
|
|
148
|
-
}
|
|
149
|
-
const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);
|
|
150
|
-
if (!countryCode) {
|
|
151
|
-
this.phoneFormatted = value;
|
|
152
|
-
this.phoneValid = false;
|
|
153
|
-
this.validateValue();
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
const nationalPart = value.replace(this.selectedCallingCode, '').replace(/[^\d+]/g, '');
|
|
157
|
-
const formatter = new AsYouType(countryCode);
|
|
158
|
-
this.phoneFormatted = formatter.input(nationalPart);
|
|
159
|
-
this.performValue(nationalPart);
|
|
160
|
-
this.phoneValid = isValidPhoneNumber(nationalPart, countryCode);
|
|
161
|
-
this.validateValue();
|
|
162
|
-
}
|
|
163
|
-
ngAfterContentInit() { }
|
|
164
|
-
ngOnChanges(changes) { }
|
|
165
|
-
ngOnDestroy() { }
|
|
166
|
-
onContainerClick(event) {
|
|
167
|
-
this.inputs.first.nativeElement.focus();
|
|
168
|
-
}
|
|
169
|
-
_onFocus() {
|
|
170
|
-
if (!this.disabled) {
|
|
171
|
-
this.focused = true;
|
|
172
|
-
this._onTouched();
|
|
173
|
-
this.stateChanges.next();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
_onBlur() {
|
|
177
|
-
this.focused = false;
|
|
178
|
-
this.stateChanges.next();
|
|
179
|
-
this.validateValue();
|
|
180
|
-
}
|
|
181
|
-
registerOnChange(fn) {
|
|
182
|
-
this._onChange = fn;
|
|
183
|
-
}
|
|
184
|
-
registerOnTouched(fn) {
|
|
185
|
-
this._onTouched = fn;
|
|
186
|
-
}
|
|
187
|
-
setDisabledState(isDisabled) {
|
|
188
|
-
this.disabled = isDisabled;
|
|
189
|
-
}
|
|
190
|
-
writeValue(value) {
|
|
191
|
-
this.value = value;
|
|
192
|
-
}
|
|
193
|
-
onInputChange(event) {
|
|
194
|
-
const { value } = event.target;
|
|
195
|
-
this.formatValue(value);
|
|
196
|
-
}
|
|
197
|
-
onCountryChange() {
|
|
198
|
-
this.formatValue(this._value, true);
|
|
199
|
-
this.validateValue();
|
|
200
|
-
}
|
|
201
|
-
getMaxLength() {
|
|
202
|
-
try {
|
|
203
|
-
const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);
|
|
204
|
-
if (!countryCode)
|
|
205
|
-
return 20;
|
|
206
|
-
const example = getExampleNumber(countryCode, examples);
|
|
207
|
-
const formatted = new AsYouType(countryCode).input(example.nationalNumber);
|
|
208
|
-
return formatted.length;
|
|
209
|
-
}
|
|
210
|
-
catch {
|
|
211
|
-
return 20;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
onHandleSearchSelect(query) {
|
|
215
|
-
const normalizedQuery = query.trim().toLowerCase();
|
|
216
|
-
this.countriesFiltered = this.countries.filter(({ name }) => {
|
|
217
|
-
return name.toLowerCase().includes(normalizedQuery);
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyInputPhoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
221
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyInputPhoneComponent, isStandalone: true, selector: "monkey-input-phone", inputs: { placeholder: "placeholder", tabIndex: "tabIndex", disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute], value: "value" }, host: { listeners: { "focus": "_onFocus()", "blur": "_onBlur()" }, properties: { "attr.data-testid": "'monkey-input-phone'", "class.mecx-input-phone-disabled": "_disabled", "class.mecx-input-phone-focused": "focused", "attr.id": "id", "attr.tabindex": "disabled ? -1 : tabIndex" }, classAttribute: "mecx-input-phone" }, providers: [
|
|
222
|
-
// eslint-disable-next-line no-use-before-define
|
|
223
|
-
{ provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }
|
|
224
|
-
], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
225
|
-
<monkey-select
|
|
226
|
-
placeholder=""
|
|
227
|
-
[disabled]="disabled"
|
|
228
|
-
showSearch
|
|
229
|
-
[(ngModel)]="selectedCallingCode"
|
|
230
|
-
class="mecx-phone-select-country"
|
|
231
|
-
(onChange)="onCountryChange()"
|
|
232
|
-
callbackSearch
|
|
233
|
-
(onSearch)="onHandleSearchSelect($event)"
|
|
234
|
-
>
|
|
235
|
-
@for (item of countriesFiltered; track $index) {
|
|
236
|
-
<monkey-option [value]="item.code">
|
|
237
|
-
<span class="option-flag">{{ item.flag }}</span>
|
|
238
|
-
<div class="option-name">{{ item.name }} {{ item.code }}</div>
|
|
239
|
-
</monkey-option>
|
|
240
|
-
}
|
|
241
|
-
</monkey-select>
|
|
242
|
-
<input
|
|
243
|
-
#input
|
|
244
|
-
class="mecx-input"
|
|
245
|
-
[attr.disabled]="disabled"
|
|
246
|
-
placeholder="Enter phone number"
|
|
247
|
-
(input)="onInputChange($event)"
|
|
248
|
-
[ngModel]="phoneFormatted"
|
|
249
|
-
[maxlength]="getMaxLength()"
|
|
250
|
-
(focus)="_onFocus()"
|
|
251
|
-
(blur)="_onBlur()"
|
|
252
|
-
[attr.id]="inputId"
|
|
253
|
-
/>
|
|
254
|
-
`, isInline: true, styles: [":host{display:inline-flex;width:100%;min-width:0}:host monkey-select{width:164px;border-right:2px solid var(--mecx-color-gray-400)}:host.mecx-input-phone-disabled monkey-select{border-right:2px solid var(--mecx-color-gray-200)}:host input{width:100%;border:none;margin-left:8px}monkey-option .option-flag{font-size:30px}monkey-option .option-name{letter-spacing:.48px;margin-left:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MonkeySelectComponent, selector: "monkey-select", inputs: ["tabIndex", "placeholder", "loading", "showSearch", "searchPlaceholder", "callbackSearch", "disabled", "required", "value"], outputs: ["onChange", "onSearch"] }, { kind: "component", type: MonkeyOptionComponent, selector: "monkey-option", inputs: ["value", "disabled", "type"] }, { kind: "ngmodule", type: MonkeyFormFieldModule }] }); }
|
|
255
|
-
}
|
|
256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyInputPhoneComponent, decorators: [{
|
|
257
|
-
type: Component,
|
|
258
|
-
args: [{ selector: 'monkey-input-phone', standalone: true, imports: [
|
|
259
|
-
CommonModule,
|
|
260
|
-
FormsModule,
|
|
261
|
-
ReactiveFormsModule,
|
|
262
|
-
MonkeySelectComponent,
|
|
263
|
-
MonkeyOptionComponent,
|
|
264
|
-
MonkeyFormFieldModule
|
|
265
|
-
], template: `
|
|
266
|
-
<monkey-select
|
|
267
|
-
placeholder=""
|
|
268
|
-
[disabled]="disabled"
|
|
269
|
-
showSearch
|
|
270
|
-
[(ngModel)]="selectedCallingCode"
|
|
271
|
-
class="mecx-phone-select-country"
|
|
272
|
-
(onChange)="onCountryChange()"
|
|
273
|
-
callbackSearch
|
|
274
|
-
(onSearch)="onHandleSearchSelect($event)"
|
|
275
|
-
>
|
|
276
|
-
@for (item of countriesFiltered; track $index) {
|
|
277
|
-
<monkey-option [value]="item.code">
|
|
278
|
-
<span class="option-flag">{{ item.flag }}</span>
|
|
279
|
-
<div class="option-name">{{ item.name }} {{ item.code }}</div>
|
|
280
|
-
</monkey-option>
|
|
281
|
-
}
|
|
282
|
-
</monkey-select>
|
|
283
|
-
<input
|
|
284
|
-
#input
|
|
285
|
-
class="mecx-input"
|
|
286
|
-
[attr.disabled]="disabled"
|
|
287
|
-
placeholder="Enter phone number"
|
|
288
|
-
(input)="onInputChange($event)"
|
|
289
|
-
[ngModel]="phoneFormatted"
|
|
290
|
-
[maxlength]="getMaxLength()"
|
|
291
|
-
(focus)="_onFocus()"
|
|
292
|
-
(blur)="_onBlur()"
|
|
293
|
-
[attr.id]="inputId"
|
|
294
|
-
/>
|
|
295
|
-
`, providers: [
|
|
296
|
-
// eslint-disable-next-line no-use-before-define
|
|
297
|
-
{ provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }
|
|
298
|
-
], host: {
|
|
299
|
-
'[attr.data-testid]': "'monkey-input-phone'",
|
|
300
|
-
class: 'mecx-input-phone',
|
|
301
|
-
'[class.mecx-input-phone-disabled]': '_disabled',
|
|
302
|
-
'[class.mecx-input-phone-focused]': 'focused',
|
|
303
|
-
'[attr.id]': 'id',
|
|
304
|
-
'[attr.tabindex]': 'disabled ? -1 : tabIndex',
|
|
305
|
-
'(focus)': '_onFocus()',
|
|
306
|
-
'(blur)': '_onBlur()'
|
|
307
|
-
}, styles: [":host{display:inline-flex;width:100%;min-width:0}:host monkey-select{width:164px;border-right:2px solid var(--mecx-color-gray-400)}:host.mecx-input-phone-disabled monkey-select{border-right:2px solid var(--mecx-color-gray-200)}:host input{width:100%;border:none;margin-left:8px}monkey-option .option-flag{font-size:30px}monkey-option .option-name{letter-spacing:.48px;margin-left:4px}\n"] }]
|
|
308
|
-
}], ctorParameters: () => [], propDecorators: { placeholder: [{
|
|
309
|
-
type: Input
|
|
310
|
-
}], tabIndex: [{
|
|
311
|
-
type: Input
|
|
312
|
-
}], disabled: [{
|
|
313
|
-
type: Input,
|
|
314
|
-
args: [{ transform: booleanAttribute }]
|
|
315
|
-
}], required: [{
|
|
316
|
-
type: Input,
|
|
317
|
-
args: [{ transform: booleanAttribute }]
|
|
318
|
-
}], value: [{
|
|
319
|
-
type: Input
|
|
320
|
-
}], inputs: [{
|
|
321
|
-
type: ViewChildren,
|
|
322
|
-
args: ['input']
|
|
323
|
-
}] } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1waG9uZS9pbnB1dC1waG9uZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFLVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sMEJBQTBCLEVBQUUsRUFDakMsU0FBUyxFQUVULFlBQVksRUFDWixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNuQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sUUFBUSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBa0VsRCxNQUFNLE9BQU8seUJBQXlCO0lBT3BDLElBQ0ksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFD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USxFQUFFLFdBQVc7cUJBQ3RCO3dEQUtRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBb0JsQyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYWxDLEtBQUs7c0JBRFIsS0FBSztnQkE0RGlCLE1BQU07c0JBQTVCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1zTW9kdWxlLFxuICBOZ0NvbnRyb2wsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHBhcnNlUGhvbmVOdW1iZXJGcm9tU3RyaW5nLCB7XG4gIEFzWW91VHlwZSxcbiAgQ291bnRyeUNvZGUsXG4gIGdldENvdW50cmllcyxcbiAgZ2V0Q291bnRyeUNhbGxpbmdDb2RlLFxuICBnZXRFeGFtcGxlTnVtYmVyLFxuICBpc1ZhbGlkUGhvbmVOdW1iZXJcbn0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IGV4YW1wbGVzIGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL2V4YW1wbGVzLm1vYmlsZS5qc29uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgTUVDWF9DT1VOVFJZX0NPREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgTW9ua2V5Rm9ybUZpZWxkQ29udHJvbCwgTW9ua2V5Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNb25rZXlPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24nO1xuaW1wb3J0IHsgTW9ua2V5U2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0JztcblxuaW50ZXJmYWNlIENvdW50cnkge1xuICBjb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZmxhZzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb25rZXktaW5wdXQtcGhvbmUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTW9ua2V5U2VsZWN0Q29tcG9uZW50LFxuICAgIE1vbmtleU9wdGlvbkNvbXBvbmVudCxcbiAgICBNb25rZXlGb3JtRmllbGRNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bW9ua2V5LXNlbGVjdFxuICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIHNob3dTZWFyY2hcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDYWxsaW5nQ29kZVwiXG4gICAgICBjbGFzcz1cIm1lY3gtcGhvbmUtc2VsZWN0LWNvdW50cnlcIlxuICAgICAgKG9uQ2hhbmdlKT1cIm9uQ291bnRyeUNoYW5nZSgpXCJcbiAgICAgIGNhbGxiYWNrU2VhcmNoXG4gICAgICAob25TZWFyY2gpPVwib25IYW5kbGVTZWFyY2hTZWxlY3QoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQGZvciAoaXRlbSBvZiBjb3VudHJpZXNGaWx0ZXJlZDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxtb25rZXktb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmNvZGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1mbGFnXCI+e3sgaXRlbS5mbGFnIH19PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tbmFtZVwiPnt7IGl0ZW0ubmFtZSB9fSB7eyBpdGVtLmNvZGUgfX08L2Rpdj5cbiAgICAgICAgPC9tb25rZXktb3B0aW9uPlxuICAgICAgfVxuICAgIDwvbW9ua2V5LXNlbGVjdD5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dFxuICAgICAgY2xhc3M9XCJtZWN4LWlucHV0XCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcGhvbmUgbnVtYmVyXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgW25nTW9kZWxdPVwicGhvbmVGb3JtYXR0ZWRcIlxuICAgICAgW21heGxlbmd0aF09XCJnZXRNYXhMZW5ndGgoKVwiXG4gICAgICAoZm9jdXMpPVwiX29uRm9jdXMoKVwiXG4gICAgICAoYmx1cik9XCJfb25CbHVyKClcIlxuICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgLz5cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2lucHV0LXBob25lLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgeyBwcm92aWRlOiBNb25rZXlGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTW9ua2V5SW5wdXRQaG9uZUNvbXBvbmVudCB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS10ZXN0aWRdJzogXCInbW9ua2V5LWlucHV0LXBob25lJ1wiLFxuICAgIGNsYXNzOiAnbWVjeC1pbnB1dC1waG9uZScsXG4gICAgJ1tjbGFzcy5tZWN4LWlucHV0LXBob25lLWRpc2FibGVkXSc6ICdfZGlzYWJsZWQnLFxuICAgICdbY2xhc3MubWVjeC1pbnB1dC1waG9uZS1mb2N1c2VkXSc6ICdmb2N1c2VkJyxcbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gLTEgOiB0YWJJbmRleCcsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKScsXG4gICAgJyhibHVyKSc6ICdfb25CbHVyKCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5SW5wdXRQaG9uZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE1vbmtleUZvcm1GaWVsZENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCA/PyB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdmFsdWUgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5fb25DaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBfdmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gaW5qZWN0KE5nQ29udHJvbCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KSE7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZEdlbmVyYXRvciA9IGluamVjdChJZEdlbmVyYXRvcik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb3VudHJ5Q29kZSA9IGluamVjdChNRUNYX0NPVU5UUllfQ09ERSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGUgPSBpbmplY3QoTE9DQUxFX0lEKTtcblxuICByZWFkb25seSBpZDogc3RyaW5nID0gdGhpcy5pZEdlbmVyYXRvci5nZXRJZCgnbW9ua2V5LWlucHV0LXVwbG9hZC0nKTtcblxuICByZWFkb25seSBpbnB1dElkOiBzdHJpbmcgPSB0aGlzLmlkR2VuZXJhdG9yLmdldElkKCdtb25rZXktaW5wdXQtdXBsb2FkLWlucHV0LScpO1xuXG4gIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICByZWFkb25seSB0eXBlOiBzdHJpbmcgPSAnaW5wdXQtcGhvbmUnO1xuXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY291bnRyaWVzOiBDb3VudHJ5W10gPSBnZXRDb3VudHJpZXMoKVxuICAgIC5tYXAoKGNvZGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGArJHtnZXRDb3VudHJ5Q2FsbGluZ0NvZGUoY29kZSl9YCxcbiAgICAgICAgbmFtZTogdGhpcy5nZXRDb3VudHJ5TmFtZUZyb21Db2RlKGNvZGUpLFxuICAgICAgICBmbGFnOiBgJHt0aGlzLmlzb1RvRmxhZ0Vtb2ppKGNvZGUpfSBgXG4gICAgICB9O1xuICAgIH0pXG4gICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICAgIH0pO1xuXG4gIGNvdW50cmllc0ZpbHRlcmVkID0gdGhpcy5jb3VudHJpZXM7XG5cbiAgc2VsZWN0ZWRDYWxsaW5nQ29kZSA9IHRoaXMuY291bnRyeUNvZGUudG9TdHJpbmcoKTtcblxuICBwaG9uZUZvcm1hdHRlZCA9ICcnO1xuXG4gIHBob25lVmFsaWQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkcmVuKCdpbnB1dCcpIGlucHV0cyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PjtcblxuICBwcml2YXRlIGdldENvdW50cnlOYW1lRnJvbUNvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBkaXNwbGF5ID0gbmV3IEludGwuRGlzcGxheU5hbWVzKFtsb2NhbGVdLCB7IHR5cGU6ICdyZWdpb24nIH0pO1xuICAgICAgcmV0dXJuIGRpc3BsYXkub2YoY29kZS50b1VwcGVyQ2FzZSgpKSB8fCBjb2RlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3VudHJ5QnlDYWxsaW5nQ29kZShjb2RlOiBzdHJpbmcpOiBDb3VudHJ5Q29kZSB8IG51bGwge1xuICAgIGNvbnN0IGNsZWFuQ29kZSA9IGNvZGUucmVwbGFjZSgnKycsICcnKTtcblxuICAgIHJldHVybiAoXG4gICAgICBnZXRDb3VudHJpZXMoKS5maW5kKChjb3VudHJ5KSA9PiB7XG4gICAgICAgIHJldHVybiBnZXRDb3VudHJ5Q2FsbGluZ0NvZGUoY291bnRyeSkgPT09IGNsZWFuQ29kZTtcbiAgICAgIH0pIHx8IG51bGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc29Ub0ZsYWdFbW9qaShpc29Db2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc29Db2RlLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvLi9nLCAoY2hhcikgPT4ge1xuICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KDEyNzM5NyArIGNoYXIuY2hhckNvZGVBdCgwKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvdW50cnlGcm9tUGhvbmVOdW1iZXIoaW5wdXQ6IHN0cmluZywgY2hhbmdlZENvdW50cnk6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBpZiAoY2hhbmdlZENvdW50cnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VQaG9uZU51bWJlckZyb21TdHJpbmcoaW5wdXQpO1xuICAgICAgY29uc3QgY291bnRyeSA9IGdldENvdW50cnlDYWxsaW5nQ29kZShwYXJzZWQ/LmNvdW50cnkhKTtcblxuICAgICAgcmV0dXJuIGArJHtjb3VudHJ5fWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gbm90IHRvIGRvXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyZm9ybVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92YWx1ZSA9IGAke3RoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZX0ke3ZhbHVlfWA7XG4gICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMuX29uVG91Y2hlZCh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVmFsdWUoKSB7XG4gICAgY29uc3QgeyBwaG9uZVZhbGlkIH0gPSB0aGlzO1xuICAgIGlmICghcGhvbmVWYWxpZCkge1xuICAgICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmdldENvdW50cnlCeUNhbGxpbmdDb2RlKHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZSk7XG4gICAgICBjb25zdCBleGFtcGxlID0gZ2V0RXhhbXBsZU51bWJlcihjb3VudHJ5Q29kZSEsIGV4YW1wbGVzKTtcblxuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldEVycm9ycyh7XG4gICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICBwaG9uZUFsbG93ZWQ6IGV4YW1wbGU/Lm5hdGlvbmFsTnVtYmVyXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBzdHJpbmcsIGNoYW5nZWRDb3VudHJ5ID0gZmFsc2UpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLnBob25lRm9ybWF0dGVkID0gJyc7XG4gICAgICB0aGlzLnBob25lVmFsaWQgPSBmYWxzZTtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGVjdGVkQ2FsbGluZ0NvZGUgPSB0aGlzLmdldENvdW50cnlGcm9tUGhvbmVOdW1iZXIodmFsdWUsIGNoYW5nZWRDb3VudHJ5KTtcbiAgICBjb25zdCBpc0NvdW50cnlDaGFuZ2VkID0gY2hhbmdlZENvdW50cnkgfHwgZGV0ZWN0ZWRDYWxsaW5nQ29kZSAhPT0gdGhpcy5zZWxlY3RlZENhbGxpbmdDb2RlO1xuXG4gICAgaWYgKGlzQ291bnRyeUNoYW5nZWQgJiYgZGV0ZWN0ZWRDYWxsaW5nQ29kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENhbGxpbmdDb2RlID0gZGV0ZWN0ZWRDYWxsaW5nQ29kZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHRoaXMuZ2V0Q291bnRyeUJ5Q2FsbGluZ0NvZGUodGhpcy5zZWxlY3RlZENhbGxpbmdDb2RlKTtcblxuICAgIGlmICghY291bnRyeUNvZGUpIHtcbiAgICAgIHRoaXMucGhvbmVGb3JtYXR0ZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMucGhvbmVWYWxpZCA9IGZhbHNlO1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmF0aW9uYWxQYXJ0ID0gdmFsdWUucmVwbGFjZSh0aGlzLnNlbGVjdGVkQ2FsbGluZ0NvZGUsICcnKS5yZXBsYWNlKC9bXlxcZCtdL2csICcnKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBBc1lvdVR5cGUoY291bnRyeUNvZGUpO1xuICAgIHRoaXMucGhvbmVGb3JtYXR0ZWQgPSBmb3JtYXR0ZXIuaW5wdXQobmF0aW9uYWxQYXJ0KTtcblxuICAgIHRoaXMucGVyZm9ybVZhbHVlKG5hdGlvbmFsUGFydCk7XG5cbiAgICB0aGlzLnBob25lVmFsaWQgPSBpc1ZhbGlkUGhvbmVOdW1iZXIobmF0aW9uYWxQYXJ0LCBjb3VudHJ5Q29kZSk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKCk7XG4gIH1cblxuICBkaXNhYmxlVG9CZURpcnR5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBfb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gIF9vblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIF9vbkZvY3VzKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIF9vbkJsdXIoKSB7XG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIG9uQ291bnRyeUNoYW5nZSgpIHtcbiAgICB0aGlzLmZvcm1hdFZhbHVlKHRoaXMuX3ZhbHVlISwgdHJ1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKCk7XG4gIH1cblxuICBnZXRNYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmdldENvdW50cnlCeUNhbGxpbmdDb2RlKHRoaXMuc2VsZWN0ZWRDYWxsaW5nQ29kZSk7XG5cbiAgICAgIGlmICghY291bnRyeUNvZGUpIHJldHVybiAyMDtcblxuICAgICAgY29uc3QgZXhhbXBsZSA9IGdldEV4YW1wbGVOdW1iZXIoY291bnRyeUNvZGUsIGV4YW1wbGVzKTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IG5ldyBBc1lvdVR5cGUoY291bnRyeUNvZGUpLmlucHV0KGV4YW1wbGUhLm5hdGlvbmFsTnVtYmVyKTtcblxuICAgICAgcmV0dXJuIGZvcm1hdHRlZC5sZW5ndGg7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gMjA7XG4gICAgfVxuICB9XG5cbiAgb25IYW5kbGVTZWFyY2hTZWxlY3QocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5jb3VudHJpZXNGaWx0ZXJlZCA9IHRoaXMuY291bnRyaWVzLmZpbHRlcigoeyBuYW1lIH0pID0+IHtcbiAgICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** ************************
|
|
2
|
-
* Copyright Monkey Exchange. All Rights Reserved
|
|
3
|
-
* This style guide was developed by Monkey Exchange Team
|
|
4
|
-
* MIT Licence
|
|
5
|
-
************************* */
|
|
6
|
-
export * from './input-upload.component';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LXVwbG9hZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs2QkFJNkI7QUFDN0IsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXVwbG9hZC5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
/** ************************
|
|
2
|
-
* Copyright Monkey Exchange. All Rights Reserved
|
|
3
|
-
* This style guide was developed by Monkey Exchange Team
|
|
4
|
-
* MIT Licence
|
|
5
|
-
************************* */
|
|
6
|
-
import { booleanAttribute, Component, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';
|
|
7
|
-
import { NgControl, Validators } from '@angular/forms';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
9
|
-
import { formatFileSize, getFileExtension, IdGenerator } from '../../../utils';
|
|
10
|
-
import { MonkeyFormFieldControl } from '../form-field';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class MonkeyInputUploadComponent {
|
|
13
|
-
get disabled() {
|
|
14
|
-
if (this.ngControl && this.ngControl.disabled !== null) {
|
|
15
|
-
return this.ngControl.disabled;
|
|
16
|
-
}
|
|
17
|
-
return this._disabled;
|
|
18
|
-
}
|
|
19
|
-
set disabled(value) {
|
|
20
|
-
this._disabled = value;
|
|
21
|
-
if (this.focused) {
|
|
22
|
-
this.focused = false;
|
|
23
|
-
this.stateChanges.next();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
get required() {
|
|
27
|
-
return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
|
|
28
|
-
}
|
|
29
|
-
set required(value) {
|
|
30
|
-
this._required = value;
|
|
31
|
-
this.stateChanges.next();
|
|
32
|
-
}
|
|
33
|
-
set value(value) {
|
|
34
|
-
if (this._value !== value && value !== undefined) {
|
|
35
|
-
this._value = value;
|
|
36
|
-
this._onChange(value);
|
|
37
|
-
this._onTouched(value);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
get value() {
|
|
41
|
-
return this._value;
|
|
42
|
-
}
|
|
43
|
-
constructor() {
|
|
44
|
-
this.progress = 0;
|
|
45
|
-
this.placeholder = '';
|
|
46
|
-
this.maxSizeBytes = 5 * 1024 * 1024;
|
|
47
|
-
this.allowedExtensions = ['.jpg', '.jpeg', '.png', '.pdf', '.txt', '.xls', '.xlsx'];
|
|
48
|
-
this.loading = false;
|
|
49
|
-
this.tabIndex = 0;
|
|
50
|
-
this._disabled = false;
|
|
51
|
-
this._value = null;
|
|
52
|
-
this.onChange = new EventEmitter();
|
|
53
|
-
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
54
|
-
this.idGenerator = inject(IdGenerator);
|
|
55
|
-
this.id = this.idGenerator.getId('monkey-input-upload-');
|
|
56
|
-
this.focused = false;
|
|
57
|
-
this.type = '';
|
|
58
|
-
this.currency = false;
|
|
59
|
-
this.percent = false;
|
|
60
|
-
this.stateChanges = new Subject();
|
|
61
|
-
this._onChange = () => { };
|
|
62
|
-
this._onTouched = () => { };
|
|
63
|
-
if (this.ngControl) {
|
|
64
|
-
this.ngControl.valueAccessor = this;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
validateFileSize(file) {
|
|
68
|
-
return file.size <= this.maxSizeBytes;
|
|
69
|
-
}
|
|
70
|
-
validateFileExtension(file) {
|
|
71
|
-
if (!this.allowedExtensions || !this.allowedExtensions.length) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
const fileExtension = getFileExtension(file.name);
|
|
75
|
-
const allowedExts = this.allowedExtensions.map((ext) => {
|
|
76
|
-
return ext.trim().replace('.', '').toLowerCase();
|
|
77
|
-
});
|
|
78
|
-
return allowedExts.includes(fileExtension);
|
|
79
|
-
}
|
|
80
|
-
onContainerClick(event) {
|
|
81
|
-
if (!this.loading) {
|
|
82
|
-
this.fileInput.nativeElement.click();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
_onFocus() {
|
|
86
|
-
if (!this.disabled) {
|
|
87
|
-
this.focused = true;
|
|
88
|
-
this._onTouched();
|
|
89
|
-
this.stateChanges.next();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
_onBlur() {
|
|
93
|
-
this.focused = false;
|
|
94
|
-
this.stateChanges.next();
|
|
95
|
-
}
|
|
96
|
-
ngAfterContentInit() { }
|
|
97
|
-
ngOnChanges(changes) { }
|
|
98
|
-
ngOnDestroy() { }
|
|
99
|
-
registerOnChange(fn) {
|
|
100
|
-
this._onChange = fn;
|
|
101
|
-
}
|
|
102
|
-
registerOnTouched(fn) {
|
|
103
|
-
this._onTouched = fn;
|
|
104
|
-
}
|
|
105
|
-
setDisabledState(isDisabled) {
|
|
106
|
-
this.disabled = isDisabled;
|
|
107
|
-
if (this.fileInput) {
|
|
108
|
-
this.fileInput.nativeElement.disabled = isDisabled;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
writeValue(value) {
|
|
112
|
-
this.value = value;
|
|
113
|
-
}
|
|
114
|
-
reset() {
|
|
115
|
-
if (this.fileInput) {
|
|
116
|
-
this.fileInput.nativeElement.value = '';
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
onFileSelected(event) {
|
|
120
|
-
const input = event.target;
|
|
121
|
-
this._onTouched();
|
|
122
|
-
if (!input.files?.length) {
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
const file = input.files.item(0);
|
|
126
|
-
if (this.fileInput) {
|
|
127
|
-
this.fileInput.nativeElement.value = '';
|
|
128
|
-
}
|
|
129
|
-
if (!this.validateFileSize(file)) {
|
|
130
|
-
this.ngControl?.control?.setErrors({
|
|
131
|
-
maxFileSize: true,
|
|
132
|
-
sizeAllowed: formatFileSize(this.maxSizeBytes)
|
|
133
|
-
});
|
|
134
|
-
this._onBlur();
|
|
135
|
-
this.reset();
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (!this.validateFileExtension(file)) {
|
|
139
|
-
this.ngControl?.control?.setErrors({
|
|
140
|
-
fileExtension: true,
|
|
141
|
-
extensionAllowed: this.allowedExtensions.join(', ')
|
|
142
|
-
});
|
|
143
|
-
this._onBlur();
|
|
144
|
-
this.reset();
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
this._onBlur();
|
|
148
|
-
if (this.onChange.observed) {
|
|
149
|
-
this.onChange.emit({ component: this, file: file });
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.value = {
|
|
153
|
-
fileName: file.name,
|
|
154
|
-
file
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyInputUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyInputUploadComponent, isStandalone: true, selector: "monkey-input-upload", inputs: { progress: "progress", placeholder: "placeholder", maxSizeBytes: "maxSizeBytes", allowedExtensions: "allowedExtensions", loading: ["loading", "loading", booleanAttribute], tabIndex: "tabIndex", disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute], value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "focus": "_onFocus()", "blur": "_onBlur()" }, properties: { "attr.data-testid": "'monkey-input-upload'", "class.mecx-input-upload-disabled": "_disabled", "class.mecx-input-upload-focused": "focused", "attr.id": "id", "attr.tabindex": "disabled ? -1 : tabIndex" }, classAttribute: "mecx-input-upload" }, providers: [
|
|
160
|
-
// eslint-disable-next-line no-use-before-define
|
|
161
|
-
{ provide: MonkeyFormFieldControl, useExisting: MonkeyInputUploadComponent }
|
|
162
|
-
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
163
|
-
<div class="mecx-input-upload-value" [class.has-value]="value">
|
|
164
|
-
{{ value?.fileName || placeholder }}
|
|
165
|
-
</div>
|
|
166
|
-
<input
|
|
167
|
-
(change)="onFileSelected($event)"
|
|
168
|
-
type="file"
|
|
169
|
-
class="file-input"
|
|
170
|
-
#fileInput
|
|
171
|
-
[accept]="allowedExtensions.join(',')"
|
|
172
|
-
/>
|
|
173
|
-
@if (loading) {
|
|
174
|
-
<div class="progress">
|
|
175
|
-
<div class="progress-bar" [style.width.%]="progress"></div>
|
|
176
|
-
</div>
|
|
177
|
-
}
|
|
178
|
-
`, isInline: true, styles: [":host{display:inline-flex;width:100%;min-width:0;cursor:pointer}:host .progress{position:absolute;left:0;bottom:0;right:0;height:2px;background-color:var(--mecx-color-gray-300);width:100%}:host .progress .progress-bar{background-color:var(--mecx-color-success-main);height:100%;transition:width .2s}:host:focus-visible,:host:focus{outline:none}:host .mecx-input-upload-value{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}:host .mecx-input-upload-value.has-value{color:var(--mecx-color-gray-900)}:host.mecx-input-upload-disabled .mecx-input-upload-value{color:var(--mecx-color-gray-400)!important}:host .file-input{display:none}\n"] }); }
|
|
179
|
-
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyInputUploadComponent, decorators: [{
|
|
181
|
-
type: Component,
|
|
182
|
-
args: [{ selector: 'monkey-input-upload', standalone: true, imports: [], template: `
|
|
183
|
-
<div class="mecx-input-upload-value" [class.has-value]="value">
|
|
184
|
-
{{ value?.fileName || placeholder }}
|
|
185
|
-
</div>
|
|
186
|
-
<input
|
|
187
|
-
(change)="onFileSelected($event)"
|
|
188
|
-
type="file"
|
|
189
|
-
class="file-input"
|
|
190
|
-
#fileInput
|
|
191
|
-
[accept]="allowedExtensions.join(',')"
|
|
192
|
-
/>
|
|
193
|
-
@if (loading) {
|
|
194
|
-
<div class="progress">
|
|
195
|
-
<div class="progress-bar" [style.width.%]="progress"></div>
|
|
196
|
-
</div>
|
|
197
|
-
}
|
|
198
|
-
`, providers: [
|
|
199
|
-
// eslint-disable-next-line no-use-before-define
|
|
200
|
-
{ provide: MonkeyFormFieldControl, useExisting: MonkeyInputUploadComponent }
|
|
201
|
-
], host: {
|
|
202
|
-
'[attr.data-testid]': "'monkey-input-upload'",
|
|
203
|
-
class: 'mecx-input-upload',
|
|
204
|
-
'[class.mecx-input-upload-disabled]': '_disabled',
|
|
205
|
-
'[class.mecx-input-upload-focused]': 'focused',
|
|
206
|
-
'[attr.id]': 'id',
|
|
207
|
-
'[attr.tabindex]': 'disabled ? -1 : tabIndex',
|
|
208
|
-
'(focus)': '_onFocus()',
|
|
209
|
-
'(blur)': '_onBlur()'
|
|
210
|
-
}, styles: [":host{display:inline-flex;width:100%;min-width:0;cursor:pointer}:host .progress{position:absolute;left:0;bottom:0;right:0;height:2px;background-color:var(--mecx-color-gray-300);width:100%}:host .progress .progress-bar{background-color:var(--mecx-color-success-main);height:100%;transition:width .2s}:host:focus-visible,:host:focus{outline:none}:host .mecx-input-upload-value{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}:host .mecx-input-upload-value.has-value{color:var(--mecx-color-gray-900)}:host.mecx-input-upload-disabled .mecx-input-upload-value{color:var(--mecx-color-gray-400)!important}:host .file-input{display:none}\n"] }]
|
|
211
|
-
}], ctorParameters: () => [], propDecorators: { fileInput: [{
|
|
212
|
-
type: ViewChild,
|
|
213
|
-
args: ['fileInput']
|
|
214
|
-
}], progress: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], placeholder: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}], maxSizeBytes: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], allowedExtensions: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], loading: [{
|
|
223
|
-
type: Input,
|
|
224
|
-
args: [{ transform: booleanAttribute }]
|
|
225
|
-
}], tabIndex: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], disabled: [{
|
|
228
|
-
type: Input,
|
|
229
|
-
args: [{ transform: booleanAttribute }]
|
|
230
|
-
}], required: [{
|
|
231
|
-
type: Input,
|
|
232
|
-
args: [{ transform: booleanAttribute }]
|
|
233
|
-
}], value: [{
|
|
234
|
-
type: Input
|
|
235
|
-
}], onChange: [{
|
|
236
|
-
type: Output
|
|
237
|
-
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS12Mi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtdXBsb2FkL2lucHV0LXVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUEwQ3ZELE1BQU0sT0FBTywwQkFBMEI7SUFrQnJDLElBQ0ksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJ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QUMxQixvQ0FBb0MsRUFBRSxXQUFXO3dCQUNqRCxtQ0FBbUMsRUFBRSxTQUFTO3dCQUM5QyxXQUFXLEVBQUUsSUFBSTt3QkFDakIsaUJBQWlCLEVBQUUsMEJBQTBCO3dCQUM3QyxTQUFTLEVBQUUsWUFBWTt3QkFDdkIsUUFBUSxFQUFFLFdBQVc7cUJBQ3RCO3dEQUt1QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFHN0IsUUFBUTtzQkFBaEIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBb0JsQyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYWxDLEtBQUs7c0JBRFIsS0FBSztnQkFxQkksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZm9ybWF0RmlsZVNpemUsIGdldEZpbGVFeHRlbnNpb24sIElkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgTW9ua2V5Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJy4uL2Zvcm0tZmllbGQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbmV4cG9ydCB0eXBlIE1vbmtleUlucHV0VXBsb2FkQ2hhbmdlRXZlbnQgPSB7IGNvbXBvbmVudDogTW9ua2V5SW5wdXRVcGxvYWRDb21wb25lbnQ7IGZpbGU6IEZpbGUgfTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9ua2V5LWlucHV0LXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtZWN4LWlucHV0LXVwbG9hZC12YWx1ZVwiIFtjbGFzcy5oYXMtdmFsdWVdPVwidmFsdWVcIj5cbiAgICAgIHt7IHZhbHVlPy5maWxlTmFtZSB8fCBwbGFjZWhvbGRlciB9fVxuICAgIDwvZGl2PlxuICAgIDxpbnB1dFxuICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAjZmlsZUlucHV0XG4gICAgICBbYWNjZXB0XT1cImFsbG93ZWRFeHRlbnNpb25zLmpvaW4oJywnKVwiXG4gICAgLz5cbiAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCIgW3N0eWxlLndpZHRoLiVdPVwicHJvZ3Jlc3NcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2lucHV0LXVwbG9hZC5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHsgcHJvdmlkZTogTW9ua2V5Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE1vbmtleUlucHV0VXBsb2FkQ29tcG9uZW50IH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5kYXRhLXRlc3RpZF0nOiBcIidtb25rZXktaW5wdXQtdXBsb2FkJ1wiLFxuICAgIGNsYXNzOiAnbWVjeC1pbnB1dC11cGxvYWQnLFxuICAgICdbY2xhc3MubWVjeC1pbnB1dC11cGxvYWQtZGlzYWJsZWRdJzogJ19kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5tZWN4LWlucHV0LXVwbG9hZC1mb2N1c2VkXSc6ICdmb2N1c2VkJyxcbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gLTEgOiB0YWJJbmRleCcsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKScsXG4gICAgJyhibHVyKSc6ICdfb25CbHVyKCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5SW5wdXRVcGxvYWRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBNb25rZXlGb3JtRmllbGRDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBASW5wdXQoKSBwcm9ncmVzczogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgbWF4U2l6ZUJ5dGVzID0gNSAqIDEwMjQgKiAxMDI0O1xuXG4gIEBJbnB1dCgpIGFsbG93ZWRFeHRlbnNpb25zID0gWycuanBnJywgJy5qcGVnJywgJy5wbmcnLCAnLnBkZicsICcudHh0JywgJy54bHMnLCAnLnhsc3gnXTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQgPz8gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IHZhbHVlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICB0aGlzLl9vblRvdWNoZWQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIF92YWx1ZSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vbmtleUlucHV0VXBsb2FkQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gaW5qZWN0KE5nQ29udHJvbCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KSE7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZEdlbmVyYXRvciA9IGluamVjdChJZEdlbmVyYXRvcik7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZyA9IHRoaXMuaWRHZW5lcmF0b3IuZ2V0SWQoJ21vbmtleS1pbnB1dC11cGxvYWQtJyk7XG5cbiAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9ICcnO1xuXG4gIGN1cnJlbmN5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgcGVyY2VudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpbGVTaXplKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmlsZS5zaXplIDw9IHRoaXMubWF4U2l6ZUJ5dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpbGVFeHRlbnNpb24oZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyB8fCAhdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xuXG4gICAgY29uc3QgYWxsb3dlZEV4dHMgPSB0aGlzLmFsbG93ZWRFeHRlbnNpb25zLm1hcCgoZXh0KSA9PiB7XG4gICAgICByZXR1cm4gZXh0LnRyaW0oKS5yZXBsYWNlKCcuJywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYWxsb3dlZEV4dHMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBfb25Gb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBfb25CbHVyKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIGRpc2FibGVUb0JlRGlydHk/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG5cbiAgX29uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge31cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0KSB7XG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIGlmICghaW5wdXQuZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlcy5pdGVtKDApO1xuXG4gICAgaWYgKHRoaXMuZmlsZUlucHV0KSB7XG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmlsZVNpemUoZmlsZSEpKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0RXJyb3JzKHtcbiAgICAgICAgbWF4RmlsZVNpemU6IHRydWUsXG4gICAgICAgIHNpemVBbGxvd2VkOiBmb3JtYXRGaWxlU2l6ZSh0aGlzLm1heFNpemVCeXRlcylcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmlsZUV4dGVuc2lvbihmaWxlISkpIHtcbiAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5zZXRFcnJvcnMoe1xuICAgICAgICBmaWxlRXh0ZW5zaW9uOiB0cnVlLFxuICAgICAgICBleHRlbnNpb25BbGxvd2VkOiB0aGlzLmFsbG93ZWRFeHRlbnNpb25zLmpvaW4oJywgJylcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb25CbHVyKCk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2Uub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZmlsZTogZmlsZSEgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICAgIGZpbGVOYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICBmaWxlXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
|