@eduboxpro/studio 0.1.19 → 0.1.21
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/fesm2022/eduboxpro-studio.mjs +341 -4
- package/fesm2022/eduboxpro-studio.mjs.map +1 -1
- package/index.d.ts +105 -20
- package/package.json +1 -1
|
@@ -76,29 +76,63 @@ function loadGoogleFonts(fonts) {
|
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
const THEME_STORAGE_KEY = 'studio-theme-mode';
|
|
79
80
|
class StudioConfigService {
|
|
80
81
|
document = inject(DOCUMENT);
|
|
81
82
|
config = signal({}, ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
82
83
|
themeMode = signal('light', ...(ngDevMode ? [{ debugName: "themeMode" }] : []));
|
|
83
84
|
constructor() {
|
|
85
|
+
// Load saved theme from localStorage
|
|
86
|
+
this.loadSavedTheme();
|
|
84
87
|
effect(() => {
|
|
85
88
|
this.applyTheme(this.config().theme);
|
|
86
89
|
});
|
|
87
90
|
}
|
|
88
91
|
configure(config) {
|
|
89
92
|
this.config.set(config);
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
// Only set theme mode from config if no saved preference exists
|
|
94
|
+
if (config.theme?.mode && !this.hasSavedTheme()) {
|
|
95
|
+
this.setThemeMode(config.theme.mode, false);
|
|
92
96
|
}
|
|
93
97
|
}
|
|
94
|
-
setThemeMode(mode) {
|
|
98
|
+
setThemeMode(mode, persist = true) {
|
|
95
99
|
this.themeMode.set(mode);
|
|
96
100
|
this.document.documentElement.setAttribute('data-theme', mode);
|
|
101
|
+
if (persist) {
|
|
102
|
+
this.saveTheme(mode);
|
|
103
|
+
}
|
|
97
104
|
}
|
|
98
105
|
toggleTheme() {
|
|
99
106
|
const newMode = this.themeMode() === 'light' ? 'dark' : 'light';
|
|
100
107
|
this.setThemeMode(newMode);
|
|
101
108
|
}
|
|
109
|
+
loadSavedTheme() {
|
|
110
|
+
try {
|
|
111
|
+
const savedTheme = localStorage.getItem(THEME_STORAGE_KEY);
|
|
112
|
+
if (savedTheme && (savedTheme === 'light' || savedTheme === 'dark')) {
|
|
113
|
+
this.setThemeMode(savedTheme, false);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// localStorage not available (SSR or private browsing)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
saveTheme(mode) {
|
|
121
|
+
try {
|
|
122
|
+
localStorage.setItem(THEME_STORAGE_KEY, mode);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// localStorage not available
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
hasSavedTheme() {
|
|
129
|
+
try {
|
|
130
|
+
return localStorage.getItem(THEME_STORAGE_KEY) !== null;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
102
136
|
updateTheme(theme) {
|
|
103
137
|
this.config.update(cfg => ({
|
|
104
138
|
...cfg,
|
|
@@ -4101,6 +4135,309 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
4101
4135
|
args: ['keydown', ['$event']]
|
|
4102
4136
|
}] } });
|
|
4103
4137
|
|
|
4138
|
+
const COUNTRY_OPTIONS = [
|
|
4139
|
+
{ code: 'kz', name: 'Казахстан', dialCode: '+7', flag: '🇰🇿', minLength: 11, maxLength: 11, placeholder: '+7 XXX XXX XX XX' },
|
|
4140
|
+
{ code: 'ru', name: 'Россия', dialCode: '+7', flag: '🇷🇺', minLength: 11, maxLength: 11, placeholder: '+7 XXX XXX XX XX' },
|
|
4141
|
+
{ code: 'kg', name: 'Кыргызстан', dialCode: '+996', flag: '🇰🇬', minLength: 12, maxLength: 12, placeholder: '+996 XXX XXX XXX' },
|
|
4142
|
+
{ code: 'uz', name: 'Узбекистан', dialCode: '+998', flag: '🇺🇿', minLength: 12, maxLength: 12, placeholder: '+998 XX XXX XX XX' },
|
|
4143
|
+
{ code: 'tr', name: 'Турция', dialCode: '+90', flag: '🇹🇷', minLength: 12, maxLength: 12, placeholder: '+90 XXX XXX XX XX' },
|
|
4144
|
+
{ code: 'az', name: 'Азербайджан', dialCode: '+994', flag: '🇦🇿', minLength: 12, maxLength: 12, placeholder: '+994 XX XXX XX XX' }
|
|
4145
|
+
];
|
|
4146
|
+
class PhoneInputComponent {
|
|
4147
|
+
configService = inject(StudioConfigService);
|
|
4148
|
+
inputDefaults = computed(() => this.configService.config().components?.input, ...(ngDevMode ? [{ debugName: "inputDefaults" }] : []));
|
|
4149
|
+
inputEl = viewChild('inputElement', ...(ngDevMode ? [{ debugName: "inputEl" }] : []));
|
|
4150
|
+
// Styling
|
|
4151
|
+
variantInput = input(undefined, ...(ngDevMode ? [{ debugName: "variantInput", alias: 'variant' }] : [{ alias: 'variant' }]));
|
|
4152
|
+
sizeInput = input(undefined, ...(ngDevMode ? [{ debugName: "sizeInput", alias: 'size' }] : [{ alias: 'size' }]));
|
|
4153
|
+
radiusInput = input(undefined, ...(ngDevMode ? [{ debugName: "radiusInput", alias: 'radius' }] : [{ alias: 'radius' }]));
|
|
4154
|
+
variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');
|
|
4155
|
+
size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');
|
|
4156
|
+
radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');
|
|
4157
|
+
// Phone specific
|
|
4158
|
+
country = model('kz', ...(ngDevMode ? [{ debugName: "country" }] : []));
|
|
4159
|
+
showCountrySelector = input(false, ...(ngDevMode ? [{ debugName: "showCountrySelector" }] : []));
|
|
4160
|
+
showFlag = input(true, ...(ngDevMode ? [{ debugName: "showFlag" }] : []));
|
|
4161
|
+
showCountryCode = input(true, ...(ngDevMode ? [{ debugName: "showCountryCode" }] : []));
|
|
4162
|
+
// States
|
|
4163
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
4164
|
+
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
|
|
4165
|
+
loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
4166
|
+
// Label & hints
|
|
4167
|
+
label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
4168
|
+
hint = input(undefined, ...(ngDevMode ? [{ debugName: "hint" }] : []));
|
|
4169
|
+
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
|
|
4170
|
+
error = input(false, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
4171
|
+
errorMessage = input(undefined, ...(ngDevMode ? [{ debugName: "errorMessage" }] : []));
|
|
4172
|
+
// Layout
|
|
4173
|
+
fullWidth = input(false, ...(ngDevMode ? [{ debugName: "fullWidth" }] : []));
|
|
4174
|
+
autoFocus = input(false, ...(ngDevMode ? [{ debugName: "autoFocus" }] : []));
|
|
4175
|
+
name = input(undefined, ...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
4176
|
+
id = input(undefined, ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
4177
|
+
ariaLabel = input(undefined, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
|
|
4178
|
+
// Events
|
|
4179
|
+
valueChange = output();
|
|
4180
|
+
countryChange = output();
|
|
4181
|
+
focused = output();
|
|
4182
|
+
blurred = output();
|
|
4183
|
+
// Internal state
|
|
4184
|
+
value = signal('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
4185
|
+
displayValue = signal('', ...(ngDevMode ? [{ debugName: "displayValue" }] : []));
|
|
4186
|
+
isFocused = signal(false, ...(ngDevMode ? [{ debugName: "isFocused" }] : []));
|
|
4187
|
+
isTouched = signal(false, ...(ngDevMode ? [{ debugName: "isTouched" }] : []));
|
|
4188
|
+
isDropdownOpen = signal(false, ...(ngDevMode ? [{ debugName: "isDropdownOpen" }] : []));
|
|
4189
|
+
generatedId = `studio-phone-input-${Math.random().toString(36).substr(2, 9)}`;
|
|
4190
|
+
onChange = () => { };
|
|
4191
|
+
onTouched = () => { };
|
|
4192
|
+
// Country options
|
|
4193
|
+
countryOptions = COUNTRY_OPTIONS;
|
|
4194
|
+
// Computed
|
|
4195
|
+
currentCountry = computed(() => {
|
|
4196
|
+
return COUNTRY_OPTIONS.find(c => c.code === this.country()) || COUNTRY_OPTIONS[0];
|
|
4197
|
+
}, ...(ngDevMode ? [{ debugName: "currentCountry" }] : []));
|
|
4198
|
+
currentFlag = computed(() => this.currentCountry().flag, ...(ngDevMode ? [{ debugName: "currentFlag" }] : []));
|
|
4199
|
+
currentCode = computed(() => this.currentCountry().dialCode, ...(ngDevMode ? [{ debugName: "currentCode" }] : []));
|
|
4200
|
+
currentPlaceholder = computed(() => this.currentCountry().placeholder, ...(ngDevMode ? [{ debugName: "currentPlaceholder" }] : []));
|
|
4201
|
+
isComplete = computed(() => {
|
|
4202
|
+
const digits = this.value().replace(/\D/g, '');
|
|
4203
|
+
const config = this.currentCountry();
|
|
4204
|
+
return digits.length >= config.minLength;
|
|
4205
|
+
}, ...(ngDevMode ? [{ debugName: "isComplete" }] : []));
|
|
4206
|
+
hasValue = computed(() => {
|
|
4207
|
+
const val = this.value();
|
|
4208
|
+
return val !== '' && val !== null && val !== undefined;
|
|
4209
|
+
}, ...(ngDevMode ? [{ debugName: "hasValue" }] : []));
|
|
4210
|
+
hostClasses = computed(() => classNames('studio-phone-input', `studio-phone-input--${this.variant()}`, `studio-phone-input--${this.size()}`, `studio-phone-input--radius-${this.radius()}`, this.error() && 'studio-phone-input--error', this.disabled() && 'studio-phone-input--disabled', this.readonly() && 'studio-phone-input--readonly', this.loading() && 'studio-phone-input--loading', this.fullWidth() && 'studio-phone-input--full-width', this.isFocused() && 'studio-phone-input--focused', this.isTouched() && 'studio-phone-input--touched', this.hasValue() && 'studio-phone-input--has-value', this.showCountrySelector() && 'studio-phone-input--with-selector'), ...(ngDevMode ? [{ debugName: "hostClasses" }] : []));
|
|
4211
|
+
ariaDescribedByValue = computed(() => {
|
|
4212
|
+
const ids = [];
|
|
4213
|
+
if (this.hint())
|
|
4214
|
+
ids.push(this.hintId);
|
|
4215
|
+
if (this.error() && this.errorMessage())
|
|
4216
|
+
ids.push(this.errorId);
|
|
4217
|
+
return ids.length > 0 ? ids.join(' ') : null;
|
|
4218
|
+
}, ...(ngDevMode ? [{ debugName: "ariaDescribedByValue" }] : []));
|
|
4219
|
+
hintId = `${this.generatedId}-hint`;
|
|
4220
|
+
errorId = `${this.generatedId}-error`;
|
|
4221
|
+
constructor() {
|
|
4222
|
+
effect(() => {
|
|
4223
|
+
if (this.autoFocus() && this.inputEl()) {
|
|
4224
|
+
setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);
|
|
4225
|
+
}
|
|
4226
|
+
});
|
|
4227
|
+
// Re-format when country changes
|
|
4228
|
+
effect(() => {
|
|
4229
|
+
const country = this.country();
|
|
4230
|
+
const currentValue = this.value();
|
|
4231
|
+
if (currentValue) {
|
|
4232
|
+
const formatted = this.formatPhoneNumber(currentValue);
|
|
4233
|
+
this.displayValue.set(formatted);
|
|
4234
|
+
}
|
|
4235
|
+
});
|
|
4236
|
+
}
|
|
4237
|
+
// ControlValueAccessor
|
|
4238
|
+
writeValue(value) {
|
|
4239
|
+
const formatted = this.formatPhoneNumber(value ?? '');
|
|
4240
|
+
this.value.set(value ?? '');
|
|
4241
|
+
this.displayValue.set(formatted);
|
|
4242
|
+
}
|
|
4243
|
+
registerOnChange(fn) {
|
|
4244
|
+
this.onChange = fn;
|
|
4245
|
+
}
|
|
4246
|
+
registerOnTouched(fn) {
|
|
4247
|
+
this.onTouched = fn;
|
|
4248
|
+
}
|
|
4249
|
+
setDisabledState(isDisabled) { }
|
|
4250
|
+
// Validator
|
|
4251
|
+
validate(control) {
|
|
4252
|
+
if (!control.value)
|
|
4253
|
+
return null;
|
|
4254
|
+
const digits = control.value.replace(/\D/g, '');
|
|
4255
|
+
const config = this.currentCountry();
|
|
4256
|
+
if (digits.length < config.minLength) {
|
|
4257
|
+
return { phoneIncomplete: { value: control.value, required: config.minLength, actual: digits.length } };
|
|
4258
|
+
}
|
|
4259
|
+
return null;
|
|
4260
|
+
}
|
|
4261
|
+
// Country selector
|
|
4262
|
+
toggleDropdown() {
|
|
4263
|
+
if (this.disabled() || this.readonly())
|
|
4264
|
+
return;
|
|
4265
|
+
this.isDropdownOpen.update(v => !v);
|
|
4266
|
+
}
|
|
4267
|
+
selectCountry(country) {
|
|
4268
|
+
this.country.set(country.code);
|
|
4269
|
+
this.isDropdownOpen.set(false);
|
|
4270
|
+
this.countryChange.emit(country.code);
|
|
4271
|
+
// Clear current value and set new country code
|
|
4272
|
+
const newCode = country.dialCode;
|
|
4273
|
+
this.value.set('');
|
|
4274
|
+
this.displayValue.set('');
|
|
4275
|
+
// Focus input after selecting
|
|
4276
|
+
setTimeout(() => {
|
|
4277
|
+
this.inputEl()?.nativeElement.focus();
|
|
4278
|
+
}, 0);
|
|
4279
|
+
}
|
|
4280
|
+
closeDropdown() {
|
|
4281
|
+
this.isDropdownOpen.set(false);
|
|
4282
|
+
}
|
|
4283
|
+
// Format phone number for display
|
|
4284
|
+
formatPhoneNumber(value) {
|
|
4285
|
+
let digits = value.replace(/\D/g, '');
|
|
4286
|
+
if (!digits)
|
|
4287
|
+
return '';
|
|
4288
|
+
const config = this.currentCountry();
|
|
4289
|
+
digits = digits.slice(0, config.maxLength);
|
|
4290
|
+
return this.formatByCountry(digits, this.country());
|
|
4291
|
+
}
|
|
4292
|
+
formatByCountry(digits, country) {
|
|
4293
|
+
switch (country) {
|
|
4294
|
+
case 'kz':
|
|
4295
|
+
case 'ru':
|
|
4296
|
+
// +7 XXX XXX XX XX
|
|
4297
|
+
return this.formatPattern(digits, [1, 3, 3, 2, 2], '+');
|
|
4298
|
+
case 'kg':
|
|
4299
|
+
// +996 XXX XXX XXX
|
|
4300
|
+
return this.formatPattern(digits, [3, 3, 3, 3], '+');
|
|
4301
|
+
case 'uz':
|
|
4302
|
+
// +998 XX XXX XX XX
|
|
4303
|
+
return this.formatPattern(digits, [3, 2, 3, 2, 2], '+');
|
|
4304
|
+
case 'tr':
|
|
4305
|
+
// +90 XXX XXX XX XX
|
|
4306
|
+
return this.formatPattern(digits, [2, 3, 3, 2, 2], '+');
|
|
4307
|
+
case 'az':
|
|
4308
|
+
// +994 XX XXX XX XX
|
|
4309
|
+
return this.formatPattern(digits, [3, 2, 3, 2, 2], '+');
|
|
4310
|
+
default:
|
|
4311
|
+
return '+' + digits;
|
|
4312
|
+
}
|
|
4313
|
+
}
|
|
4314
|
+
formatPattern(digits, groups, prefix) {
|
|
4315
|
+
let result = prefix;
|
|
4316
|
+
let index = 0;
|
|
4317
|
+
for (let i = 0; i < groups.length && index < digits.length; i++) {
|
|
4318
|
+
const groupSize = groups[i];
|
|
4319
|
+
const chunk = digits.slice(index, index + groupSize);
|
|
4320
|
+
if (i > 0 && chunk) {
|
|
4321
|
+
result += ' ';
|
|
4322
|
+
}
|
|
4323
|
+
result += chunk;
|
|
4324
|
+
index += groupSize;
|
|
4325
|
+
}
|
|
4326
|
+
return result;
|
|
4327
|
+
}
|
|
4328
|
+
// Event handlers
|
|
4329
|
+
handleInput(event) {
|
|
4330
|
+
const target = event.target;
|
|
4331
|
+
const cursorPos = target.selectionStart || 0;
|
|
4332
|
+
const oldValue = this.displayValue();
|
|
4333
|
+
let rawValue = target.value;
|
|
4334
|
+
const formatted = this.formatPhoneNumber(rawValue);
|
|
4335
|
+
const rawDigits = rawValue.replace(/\D/g, '');
|
|
4336
|
+
this.value.set(rawDigits ? '+' + rawDigits : '');
|
|
4337
|
+
this.displayValue.set(formatted);
|
|
4338
|
+
target.value = formatted;
|
|
4339
|
+
const lengthDiff = formatted.length - oldValue.length;
|
|
4340
|
+
let newCursorPos = cursorPos + lengthDiff;
|
|
4341
|
+
newCursorPos = Math.max(0, Math.min(newCursorPos, formatted.length));
|
|
4342
|
+
setTimeout(() => {
|
|
4343
|
+
target.setSelectionRange(newCursorPos, newCursorPos);
|
|
4344
|
+
}, 0);
|
|
4345
|
+
const outputValue = rawDigits ? '+' + rawDigits : '';
|
|
4346
|
+
this.onChange(outputValue);
|
|
4347
|
+
this.valueChange.emit(outputValue);
|
|
4348
|
+
}
|
|
4349
|
+
handleFocus(event) {
|
|
4350
|
+
this.isFocused.set(true);
|
|
4351
|
+
if (!this.displayValue() && this.showCountryCode()) {
|
|
4352
|
+
const code = this.currentCountry().dialCode;
|
|
4353
|
+
this.displayValue.set(code + ' ');
|
|
4354
|
+
const target = event.target;
|
|
4355
|
+
target.value = code + ' ';
|
|
4356
|
+
setTimeout(() => {
|
|
4357
|
+
target.setSelectionRange(target.value.length, target.value.length);
|
|
4358
|
+
}, 0);
|
|
4359
|
+
}
|
|
4360
|
+
this.focused.emit(event);
|
|
4361
|
+
}
|
|
4362
|
+
handleBlur(event) {
|
|
4363
|
+
this.isFocused.set(false);
|
|
4364
|
+
this.isTouched.set(true);
|
|
4365
|
+
const digits = this.value().replace(/\D/g, '');
|
|
4366
|
+
const codeDigits = this.currentCountry().dialCode.replace(/\D/g, '');
|
|
4367
|
+
if (digits === codeDigits || digits.length <= codeDigits.length) {
|
|
4368
|
+
this.value.set('');
|
|
4369
|
+
this.displayValue.set('');
|
|
4370
|
+
const target = event.target;
|
|
4371
|
+
target.value = '';
|
|
4372
|
+
this.onChange('');
|
|
4373
|
+
}
|
|
4374
|
+
this.onTouched();
|
|
4375
|
+
this.blurred.emit(event);
|
|
4376
|
+
}
|
|
4377
|
+
handleKeyDown(event) {
|
|
4378
|
+
const target = event.target;
|
|
4379
|
+
const cursorPos = target.selectionStart || 0;
|
|
4380
|
+
// Allow: backspace, delete, tab, escape, enter, arrows
|
|
4381
|
+
if ([8, 46, 9, 27, 13, 37, 38, 39, 40].includes(event.keyCode)) {
|
|
4382
|
+
return;
|
|
4383
|
+
}
|
|
4384
|
+
// Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X
|
|
4385
|
+
if ((event.ctrlKey || event.metaKey) && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase())) {
|
|
4386
|
+
return;
|
|
4387
|
+
}
|
|
4388
|
+
// Allow: + at the beginning
|
|
4389
|
+
if (event.key === '+' && cursorPos === 0) {
|
|
4390
|
+
return;
|
|
4391
|
+
}
|
|
4392
|
+
// Block non-numeric
|
|
4393
|
+
if (!/^\d$/.test(event.key)) {
|
|
4394
|
+
event.preventDefault();
|
|
4395
|
+
}
|
|
4396
|
+
// Block if max length reached
|
|
4397
|
+
const digits = target.value.replace(/\D/g, '');
|
|
4398
|
+
if (digits.length >= this.currentCountry().maxLength && target.selectionStart === target.selectionEnd) {
|
|
4399
|
+
event.preventDefault();
|
|
4400
|
+
}
|
|
4401
|
+
}
|
|
4402
|
+
handleContainerClick(event) {
|
|
4403
|
+
// Close dropdown when clicking outside selector
|
|
4404
|
+
const target = event.target;
|
|
4405
|
+
if (!target.closest('.studio-phone-input__selector')) {
|
|
4406
|
+
this.isDropdownOpen.set(false);
|
|
4407
|
+
}
|
|
4408
|
+
}
|
|
4409
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: PhoneInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4410
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: PhoneInputComponent, isStandalone: true, selector: "studio-phone-input", inputs: { variantInput: { classPropertyName: "variantInput", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, sizeInput: { classPropertyName: "sizeInput", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, radiusInput: { classPropertyName: "radiusInput", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, country: { classPropertyName: "country", publicName: "country", isSignal: true, isRequired: false, transformFunction: null }, showCountrySelector: { classPropertyName: "showCountrySelector", publicName: "showCountrySelector", isSignal: true, isRequired: false, transformFunction: null }, showFlag: { classPropertyName: "showFlag", publicName: "showFlag", isSignal: true, isRequired: false, transformFunction: null }, showCountryCode: { classPropertyName: "showCountryCode", publicName: "showCountryCode", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { country: "countryChange", valueChange: "valueChange", countryChange: "countryChange", focused: "focused", blurred: "blurred" }, host: { properties: { "class": "hostClasses()" } }, providers: [
|
|
4411
|
+
{
|
|
4412
|
+
provide: NG_VALUE_ACCESSOR,
|
|
4413
|
+
useExisting: forwardRef(() => PhoneInputComponent),
|
|
4414
|
+
multi: true
|
|
4415
|
+
},
|
|
4416
|
+
{
|
|
4417
|
+
provide: NG_VALIDATORS,
|
|
4418
|
+
useExisting: forwardRef(() => PhoneInputComponent),
|
|
4419
|
+
multi: true
|
|
4420
|
+
}
|
|
4421
|
+
], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (label()) {\n <label [for]=\"id() || generatedId\" class=\"studio-phone-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-phone-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-phone-input__container\" (click)=\"handleContainerClick($event)\">\n @if (showCountrySelector()) {\n <div class=\"studio-phone-input__selector\">\n <button\n type=\"button\"\n class=\"studio-phone-input__selector-btn\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isDropdownOpen()\"\n aria-haspopup=\"listbox\">\n <span class=\"studio-phone-input__selector-flag\">{{ currentFlag() }}</span>\n <studio-icon name=\"chevron-down\" [size]=\"14\" class=\"studio-phone-input__selector-arrow\" />\n </button>\n\n @if (isDropdownOpen()) {\n <div class=\"studio-phone-input__dropdown\" role=\"listbox\">\n @for (option of countryOptions; track option.code) {\n <button\n type=\"button\"\n class=\"studio-phone-input__dropdown-item\"\n [class.studio-phone-input__dropdown-item--selected]=\"option.code === country()\"\n role=\"option\"\n [attr.aria-selected]=\"option.code === country()\"\n (click)=\"selectCountry(option)\">\n <span class=\"studio-phone-input__dropdown-flag\">{{ option.flag }}</span>\n <span class=\"studio-phone-input__dropdown-name\">{{ option.name }}</span>\n <span class=\"studio-phone-input__dropdown-code\">{{ option.dialCode }}</span>\n </button>\n }\n </div>\n }\n </div>\n } @else if (showFlag()) {\n <span class=\"studio-phone-input__flag\">\n {{ currentFlag() }}\n </span>\n }\n\n <input\n #inputElement\n type=\"tel\"\n inputmode=\"tel\"\n class=\"studio-phone-input__field\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"currentPlaceholder()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || label() || 'Phone number'\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"handleKeyDown($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-phone-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-phone-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-phone-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.375rem;font-family:var(--studio-font-family)}:host(.studio-phone-input--full-width){width:100%}.studio-phone-input__label{display:block;font-size:.875rem;font-weight:var(--studio-font-weight-medium);color:var(--studio-text-primary);margin-bottom:.25rem}.studio-phone-input__label .studio-phone-input__required{color:var(--studio-error);margin-left:.125rem}.studio-phone-input__container{position:relative;display:flex;align-items:center;transition:all var(--studio-transition-fast)}.studio-phone-input__flag{display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.studio-phone-input__selector{position:relative;display:flex;align-items:center;flex-shrink:0}.studio-phone-input__selector-btn{display:flex;align-items:center;gap:.25rem;padding:0;background:transparent;border:none;cursor:pointer;color:var(--studio-text-primary);transition:all var(--studio-transition-fast)}.studio-phone-input__selector-btn:hover:not(:disabled){opacity:.8}.studio-phone-input__selector-btn:disabled{cursor:not-allowed;opacity:.6}.studio-phone-input__selector-flag{font-size:1.25rem;line-height:1}.studio-phone-input__selector-arrow{color:var(--studio-text-secondary);transition:transform var(--studio-transition-fast)}:host(.studio-phone-input--focused) .studio-phone-input__selector-arrow{color:var(--studio-primary)}.studio-phone-input__dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:100;min-width:200px;max-height:280px;overflow-y:auto;background:var(--studio-bg-primary);border:1px solid var(--studio-border-primary);border-radius:var(--studio-radius-md);box-shadow:var(--studio-shadow-lg);padding:.25rem}.studio-phone-input__dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;background:transparent;border:none;border-radius:var(--studio-radius-sm);cursor:pointer;text-align:left;color:var(--studio-text-primary);transition:all var(--studio-transition-fast)}.studio-phone-input__dropdown-item:hover{background:var(--studio-bg-secondary)}.studio-phone-input__dropdown-item--selected{background:var(--studio-primary-bg);color:var(--studio-primary)}.studio-phone-input__dropdown-flag{font-size:1.25rem;line-height:1;flex-shrink:0}.studio-phone-input__dropdown-name{flex:1;font-size:.875rem;white-space:nowrap}.studio-phone-input__dropdown-code{font-size:.75rem;color:var(--studio-text-secondary);flex-shrink:0}.studio-phone-input__field{flex:1;width:100%;font-family:inherit;font-size:1rem;color:var(--studio-text-primary);background:transparent;border:none;outline:none;transition:all var(--studio-transition-fast)}.studio-phone-input__field::placeholder{color:var(--studio-text-tertiary)}.studio-phone-input__field:disabled{cursor:not-allowed;opacity:.6}.studio-phone-input__field:read-only{cursor:default}.studio-phone-input__loading{display:flex;align-items:center;color:var(--studio-primary);flex-shrink:0}.studio-phone-input__loading .studio-icon--spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.studio-phone-input__hint{font-size:.75rem;color:var(--studio-text-secondary);line-height:1.4}.studio-phone-input__error{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--studio-error);line-height:1.4}:host(.studio-phone-input--outline) .studio-phone-input__container{border:1px solid var(--studio-border-primary);background:var(--studio-bg-primary);border-radius:var(--studio-radius-md)}:host(.studio-phone-input--outline) .studio-phone-input__container:hover:not(:has(.studio-phone-input__field:disabled)){border-color:var(--studio-primary)}:host(.studio-phone-input--outline.studio-phone-input--focused) .studio-phone-input__container{border-color:var(--studio-primary);box-shadow:0 0 0 3px var(--studio-primary-bg)}:host(.studio-phone-input--outline.studio-phone-input--error) .studio-phone-input__container{border-color:var(--studio-error)}:host(.studio-phone-input--outline.studio-phone-input--error) .studio-phone-input__container:hover{border-color:var(--studio-error)}:host(.studio-phone-input--outline.studio-phone-input--error.studio-phone-input--focused) .studio-phone-input__container{box-shadow:0 0 0 3px #ef44441a}:host(.studio-phone-input--outline.studio-phone-input--disabled) .studio-phone-input__container{background:var(--studio-bg-secondary);border-color:var(--studio-border-secondary)}:host(.studio-phone-input--filled) .studio-phone-input__container{background:var(--studio-bg-secondary);border:none;border-bottom:2px solid var(--studio-border-primary);border-radius:var(--studio-radius-md) var(--studio-radius-md) 0 0}:host(.studio-phone-input--filled) .studio-phone-input__container:hover:not(:has(.studio-phone-input__field:disabled)){background:var(--studio-bg-tertiary)}:host(.studio-phone-input--filled.studio-phone-input--focused) .studio-phone-input__container{border-bottom-color:var(--studio-primary);background:var(--studio-bg-tertiary)}:host(.studio-phone-input--filled.studio-phone-input--error) .studio-phone-input__container{border-bottom-color:var(--studio-error)}:host(.studio-phone-input--filled.studio-phone-input--disabled) .studio-phone-input__container{background:var(--studio-bg-secondary);opacity:.6}:host(.studio-phone-input--underline) .studio-phone-input__container{background:transparent;border:none;border-bottom:1px solid var(--studio-border-primary);border-radius:0}:host(.studio-phone-input--underline) .studio-phone-input__container:hover:not(:has(.studio-phone-input__field:disabled)){border-bottom-color:var(--studio-primary)}:host(.studio-phone-input--underline.studio-phone-input--focused) .studio-phone-input__container{border-bottom:2px solid var(--studio-primary)}:host(.studio-phone-input--underline.studio-phone-input--error) .studio-phone-input__container{border-bottom-color:var(--studio-error)}:host(.studio-phone-input--underline.studio-phone-input--disabled) .studio-phone-input__container{border-bottom-style:dashed;opacity:.6}:host(.studio-phone-input--sm) .studio-phone-input__field{height:2rem;font-size:.875rem;padding:0 .75rem}:host(.studio-phone-input--sm) .studio-phone-input__flag{padding-left:.75rem;font-size:1rem}:host(.studio-phone-input--sm) .studio-phone-input__selector{padding-left:.75rem}:host(.studio-phone-input--sm) .studio-phone-input__selector-flag{font-size:1rem}:host(.studio-phone-input--sm) .studio-phone-input__loading{padding-right:.5rem}:host(.studio-phone-input--md) .studio-phone-input__field{height:2.5rem;font-size:1rem;padding:0 1rem}:host(.studio-phone-input--md) .studio-phone-input__flag{padding-left:1rem;font-size:1.25rem}:host(.studio-phone-input--md) .studio-phone-input__selector{padding-left:1rem}:host(.studio-phone-input--md) .studio-phone-input__selector-flag{font-size:1.25rem}:host(.studio-phone-input--md) .studio-phone-input__loading{padding-right:.75rem}:host(.studio-phone-input--lg) .studio-phone-input__field{height:3rem;font-size:1.125rem;padding:0 1.25rem}:host(.studio-phone-input--lg) .studio-phone-input__flag{padding-left:1.25rem;font-size:1.5rem}:host(.studio-phone-input--lg) .studio-phone-input__selector{padding-left:1.25rem}:host(.studio-phone-input--lg) .studio-phone-input__selector-flag{font-size:1.5rem}:host(.studio-phone-input--lg) .studio-phone-input__loading{padding-right:1rem}:host(.studio-phone-input--radius-none) .studio-phone-input__container{border-radius:0}:host(.studio-phone-input--radius-sm) .studio-phone-input__container{border-radius:var(--studio-radius-sm)}:host(.studio-phone-input--radius-md) .studio-phone-input__container{border-radius:var(--studio-radius-md)}:host(.studio-phone-input--radius-lg) .studio-phone-input__container{border-radius:var(--studio-radius-lg)}:host(.studio-phone-input--radius-full) .studio-phone-input__container{border-radius:9999px}:host(.studio-phone-input--filled.studio-phone-input--radius-none) .studio-phone-input__container{border-radius:0}:host(.studio-phone-input--filled.studio-phone-input--radius-sm) .studio-phone-input__container{border-radius:var(--studio-radius-sm) var(--studio-radius-sm) 0 0}:host(.studio-phone-input--filled.studio-phone-input--radius-md) .studio-phone-input__container{border-radius:var(--studio-radius-md) var(--studio-radius-md) 0 0}:host(.studio-phone-input--filled.studio-phone-input--radius-lg) .studio-phone-input__container{border-radius:var(--studio-radius-lg) var(--studio-radius-lg) 0 0}:host(.studio-phone-input--filled.studio-phone-input--radius-full) .studio-phone-input__container{border-radius:9999px 9999px 0 0}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "studio-icon", inputs: ["name", "size", "color", "strokeWidth", "absoluteStrokeWidth", "showFallback", "fallbackIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4422
|
+
}
|
|
4423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: PhoneInputComponent, decorators: [{
|
|
4424
|
+
type: Component,
|
|
4425
|
+
args: [{ selector: 'studio-phone-input', imports: [IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
4426
|
+
{
|
|
4427
|
+
provide: NG_VALUE_ACCESSOR,
|
|
4428
|
+
useExisting: forwardRef(() => PhoneInputComponent),
|
|
4429
|
+
multi: true
|
|
4430
|
+
},
|
|
4431
|
+
{
|
|
4432
|
+
provide: NG_VALIDATORS,
|
|
4433
|
+
useExisting: forwardRef(() => PhoneInputComponent),
|
|
4434
|
+
multi: true
|
|
4435
|
+
}
|
|
4436
|
+
], host: {
|
|
4437
|
+
'[class]': 'hostClasses()',
|
|
4438
|
+
}, template: "@if (label()) {\n <label [for]=\"id() || generatedId\" class=\"studio-phone-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-phone-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-phone-input__container\" (click)=\"handleContainerClick($event)\">\n @if (showCountrySelector()) {\n <div class=\"studio-phone-input__selector\">\n <button\n type=\"button\"\n class=\"studio-phone-input__selector-btn\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isDropdownOpen()\"\n aria-haspopup=\"listbox\">\n <span class=\"studio-phone-input__selector-flag\">{{ currentFlag() }}</span>\n <studio-icon name=\"chevron-down\" [size]=\"14\" class=\"studio-phone-input__selector-arrow\" />\n </button>\n\n @if (isDropdownOpen()) {\n <div class=\"studio-phone-input__dropdown\" role=\"listbox\">\n @for (option of countryOptions; track option.code) {\n <button\n type=\"button\"\n class=\"studio-phone-input__dropdown-item\"\n [class.studio-phone-input__dropdown-item--selected]=\"option.code === country()\"\n role=\"option\"\n [attr.aria-selected]=\"option.code === country()\"\n (click)=\"selectCountry(option)\">\n <span class=\"studio-phone-input__dropdown-flag\">{{ option.flag }}</span>\n <span class=\"studio-phone-input__dropdown-name\">{{ option.name }}</span>\n <span class=\"studio-phone-input__dropdown-code\">{{ option.dialCode }}</span>\n </button>\n }\n </div>\n }\n </div>\n } @else if (showFlag()) {\n <span class=\"studio-phone-input__flag\">\n {{ currentFlag() }}\n </span>\n }\n\n <input\n #inputElement\n type=\"tel\"\n inputmode=\"tel\"\n class=\"studio-phone-input__field\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"currentPlaceholder()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || label() || 'Phone number'\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"handleKeyDown($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-phone-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-phone-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-phone-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n", styles: [":host{display:flex;flex-direction:column;gap:.375rem;font-family:var(--studio-font-family)}:host(.studio-phone-input--full-width){width:100%}.studio-phone-input__label{display:block;font-size:.875rem;font-weight:var(--studio-font-weight-medium);color:var(--studio-text-primary);margin-bottom:.25rem}.studio-phone-input__label .studio-phone-input__required{color:var(--studio-error);margin-left:.125rem}.studio-phone-input__container{position:relative;display:flex;align-items:center;transition:all var(--studio-transition-fast)}.studio-phone-input__flag{display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.studio-phone-input__selector{position:relative;display:flex;align-items:center;flex-shrink:0}.studio-phone-input__selector-btn{display:flex;align-items:center;gap:.25rem;padding:0;background:transparent;border:none;cursor:pointer;color:var(--studio-text-primary);transition:all var(--studio-transition-fast)}.studio-phone-input__selector-btn:hover:not(:disabled){opacity:.8}.studio-phone-input__selector-btn:disabled{cursor:not-allowed;opacity:.6}.studio-phone-input__selector-flag{font-size:1.25rem;line-height:1}.studio-phone-input__selector-arrow{color:var(--studio-text-secondary);transition:transform var(--studio-transition-fast)}:host(.studio-phone-input--focused) .studio-phone-input__selector-arrow{color:var(--studio-primary)}.studio-phone-input__dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:100;min-width:200px;max-height:280px;overflow-y:auto;background:var(--studio-bg-primary);border:1px solid var(--studio-border-primary);border-radius:var(--studio-radius-md);box-shadow:var(--studio-shadow-lg);padding:.25rem}.studio-phone-input__dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;background:transparent;border:none;border-radius:var(--studio-radius-sm);cursor:pointer;text-align:left;color:var(--studio-text-primary);transition:all var(--studio-transition-fast)}.studio-phone-input__dropdown-item:hover{background:var(--studio-bg-secondary)}.studio-phone-input__dropdown-item--selected{background:var(--studio-primary-bg);color:var(--studio-primary)}.studio-phone-input__dropdown-flag{font-size:1.25rem;line-height:1;flex-shrink:0}.studio-phone-input__dropdown-name{flex:1;font-size:.875rem;white-space:nowrap}.studio-phone-input__dropdown-code{font-size:.75rem;color:var(--studio-text-secondary);flex-shrink:0}.studio-phone-input__field{flex:1;width:100%;font-family:inherit;font-size:1rem;color:var(--studio-text-primary);background:transparent;border:none;outline:none;transition:all var(--studio-transition-fast)}.studio-phone-input__field::placeholder{color:var(--studio-text-tertiary)}.studio-phone-input__field:disabled{cursor:not-allowed;opacity:.6}.studio-phone-input__field:read-only{cursor:default}.studio-phone-input__loading{display:flex;align-items:center;color:var(--studio-primary);flex-shrink:0}.studio-phone-input__loading .studio-icon--spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.studio-phone-input__hint{font-size:.75rem;color:var(--studio-text-secondary);line-height:1.4}.studio-phone-input__error{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--studio-error);line-height:1.4}:host(.studio-phone-input--outline) .studio-phone-input__container{border:1px solid var(--studio-border-primary);background:var(--studio-bg-primary);border-radius:var(--studio-radius-md)}:host(.studio-phone-input--outline) .studio-phone-input__container:hover:not(:has(.studio-phone-input__field:disabled)){border-color:var(--studio-primary)}:host(.studio-phone-input--outline.studio-phone-input--focused) .studio-phone-input__container{border-color:var(--studio-primary);box-shadow:0 0 0 3px var(--studio-primary-bg)}:host(.studio-phone-input--outline.studio-phone-input--error) .studio-phone-input__container{border-color:var(--studio-error)}:host(.studio-phone-input--outline.studio-phone-input--error) .studio-phone-input__container:hover{border-color:var(--studio-error)}:host(.studio-phone-input--outline.studio-phone-input--error.studio-phone-input--focused) .studio-phone-input__container{box-shadow:0 0 0 3px #ef44441a}:host(.studio-phone-input--outline.studio-phone-input--disabled) .studio-phone-input__container{background:var(--studio-bg-secondary);border-color:var(--studio-border-secondary)}:host(.studio-phone-input--filled) .studio-phone-input__container{background:var(--studio-bg-secondary);border:none;border-bottom:2px solid var(--studio-border-primary);border-radius:var(--studio-radius-md) var(--studio-radius-md) 0 0}:host(.studio-phone-input--filled) .studio-phone-input__container:hover:not(:has(.studio-phone-input__field:disabled)){background:var(--studio-bg-tertiary)}:host(.studio-phone-input--filled.studio-phone-input--focused) .studio-phone-input__container{border-bottom-color:var(--studio-primary);background:var(--studio-bg-tertiary)}:host(.studio-phone-input--filled.studio-phone-input--error) .studio-phone-input__container{border-bottom-color:var(--studio-error)}:host(.studio-phone-input--filled.studio-phone-input--disabled) .studio-phone-input__container{background:var(--studio-bg-secondary);opacity:.6}:host(.studio-phone-input--underline) .studio-phone-input__container{background:transparent;border:none;border-bottom:1px solid var(--studio-border-primary);border-radius:0}:host(.studio-phone-input--underline) .studio-phone-input__container:hover:not(:has(.studio-phone-input__field:disabled)){border-bottom-color:var(--studio-primary)}:host(.studio-phone-input--underline.studio-phone-input--focused) .studio-phone-input__container{border-bottom:2px solid var(--studio-primary)}:host(.studio-phone-input--underline.studio-phone-input--error) .studio-phone-input__container{border-bottom-color:var(--studio-error)}:host(.studio-phone-input--underline.studio-phone-input--disabled) .studio-phone-input__container{border-bottom-style:dashed;opacity:.6}:host(.studio-phone-input--sm) .studio-phone-input__field{height:2rem;font-size:.875rem;padding:0 .75rem}:host(.studio-phone-input--sm) .studio-phone-input__flag{padding-left:.75rem;font-size:1rem}:host(.studio-phone-input--sm) .studio-phone-input__selector{padding-left:.75rem}:host(.studio-phone-input--sm) .studio-phone-input__selector-flag{font-size:1rem}:host(.studio-phone-input--sm) .studio-phone-input__loading{padding-right:.5rem}:host(.studio-phone-input--md) .studio-phone-input__field{height:2.5rem;font-size:1rem;padding:0 1rem}:host(.studio-phone-input--md) .studio-phone-input__flag{padding-left:1rem;font-size:1.25rem}:host(.studio-phone-input--md) .studio-phone-input__selector{padding-left:1rem}:host(.studio-phone-input--md) .studio-phone-input__selector-flag{font-size:1.25rem}:host(.studio-phone-input--md) .studio-phone-input__loading{padding-right:.75rem}:host(.studio-phone-input--lg) .studio-phone-input__field{height:3rem;font-size:1.125rem;padding:0 1.25rem}:host(.studio-phone-input--lg) .studio-phone-input__flag{padding-left:1.25rem;font-size:1.5rem}:host(.studio-phone-input--lg) .studio-phone-input__selector{padding-left:1.25rem}:host(.studio-phone-input--lg) .studio-phone-input__selector-flag{font-size:1.5rem}:host(.studio-phone-input--lg) .studio-phone-input__loading{padding-right:1rem}:host(.studio-phone-input--radius-none) .studio-phone-input__container{border-radius:0}:host(.studio-phone-input--radius-sm) .studio-phone-input__container{border-radius:var(--studio-radius-sm)}:host(.studio-phone-input--radius-md) .studio-phone-input__container{border-radius:var(--studio-radius-md)}:host(.studio-phone-input--radius-lg) .studio-phone-input__container{border-radius:var(--studio-radius-lg)}:host(.studio-phone-input--radius-full) .studio-phone-input__container{border-radius:9999px}:host(.studio-phone-input--filled.studio-phone-input--radius-none) .studio-phone-input__container{border-radius:0}:host(.studio-phone-input--filled.studio-phone-input--radius-sm) .studio-phone-input__container{border-radius:var(--studio-radius-sm) var(--studio-radius-sm) 0 0}:host(.studio-phone-input--filled.studio-phone-input--radius-md) .studio-phone-input__container{border-radius:var(--studio-radius-md) var(--studio-radius-md) 0 0}:host(.studio-phone-input--filled.studio-phone-input--radius-lg) .studio-phone-input__container{border-radius:var(--studio-radius-lg) var(--studio-radius-lg) 0 0}:host(.studio-phone-input--filled.studio-phone-input--radius-full) .studio-phone-input__container{border-radius:9999px 9999px 0 0}\n"] }]
|
|
4439
|
+
}], ctorParameters: () => [], propDecorators: { inputEl: [{ type: i0.ViewChild, args: ['inputElement', { isSignal: true }] }], variantInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], sizeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], radiusInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], country: [{ type: i0.Input, args: [{ isSignal: true, alias: "country", required: false }] }, { type: i0.Output, args: ["countryChange"] }], showCountrySelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCountrySelector", required: false }] }], showFlag: [{ type: i0.Input, args: [{ isSignal: true, alias: "showFlag", required: false }] }], showCountryCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCountryCode", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], errorMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessage", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], countryChange: [{ type: i0.Output, args: ["countryChange"] }], focused: [{ type: i0.Output, args: ["focused"] }], blurred: [{ type: i0.Output, args: ["blurred"] }] } });
|
|
4440
|
+
|
|
4104
4441
|
class ModalComponent {
|
|
4105
4442
|
destroyRef = inject(DestroyRef);
|
|
4106
4443
|
// Inputs
|
|
@@ -6871,5 +7208,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
6871
7208
|
* Generated bundle index. Do not edit.
|
|
6872
7209
|
*/
|
|
6873
7210
|
|
|
6874
|
-
export { BadgeComponent, BadgeWrapperComponent, BottomNavigationComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, CardComponent, ChatComponent, ChatInputComponent, ChatMessageComponent, CheckboxComponent, ColorPickerCompactComponent, ColorPickerComponent, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, DropdownComponent, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, ModalComponent, NavbarComponent, PopoverComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TableColumnDirective, TableComponent, TabsComponent, TextareaComponent, ThemeSwitchComponent, TooltipComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
|
|
7211
|
+
export { BadgeComponent, BadgeWrapperComponent, BottomNavigationComponent, ButtonComponent, ButtonGroupComponent, ButtonToggleGroupComponent, COUNTRY_OPTIONS, CardComponent, ChatComponent, ChatInputComponent, ChatMessageComponent, CheckboxComponent, ColorPickerCompactComponent, ColorPickerComponent, DEFAULT_COLOR_PRESETS, DrawerComponent, DrawerService, DropdownComponent, IconComponent, InputComponent, InspectorComponent, MASK_PRESETS, MaskDirective, MaskEngine, MenuComponent, ModalComponent, NavbarComponent, PhoneInputComponent, PopoverComponent, RadioButtonComponent, STUDIO_CONFIG, SelectComponent, SidebarComponent, StudioConfigService, SwitchComponent, TableColumnDirective, TableComponent, TabsComponent, TextareaComponent, ThemeSwitchComponent, TooltipComponent, classNames, isSafeUrl, loadGoogleFont, loadGoogleFonts, provideStudioConfig, provideStudioIcons, sanitizeUrl, withConfigDefault };
|
|
6875
7212
|
//# sourceMappingURL=eduboxpro-studio.mjs.map
|