@praxisui/dynamic-fields 3.0.0-beta.3 → 3.0.0-beta.5
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.
|
@@ -197,7 +197,18 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
|
|
|
197
197
|
'praxis.dynamicFields.inlineCurrencyRange.ariaSelection': '{{label}}: {{value}}',
|
|
198
198
|
'praxis.dynamicFields.inlineCurrencyRange.value.from': '>= {{value}}',
|
|
199
199
|
'praxis.dynamicFields.inlineCurrencyRange.value.upto': '<= {{value}}',
|
|
200
|
-
'praxis.dynamicFields.inlineSelect.placeholder': '
|
|
200
|
+
'praxis.dynamicFields.inlineSelect.placeholder': 'Select',
|
|
201
|
+
'praxis.dynamicFields.inlinePipelineStatus.placeholder': 'Pipeline',
|
|
202
|
+
'praxis.dynamicFields.inlinePipelineStatus.panelSubtitle': 'Configurable panel for stages, statuses, or priorities',
|
|
203
|
+
'praxis.dynamicFields.inlinePipelineStatus.searchPlaceholder': 'Search stages...',
|
|
204
|
+
'praxis.dynamicFields.inlinePipelineStatus.selectionActionsAriaLabel': 'Selection actions',
|
|
205
|
+
'praxis.dynamicFields.inlinePipelineStatus.clearActionLabel': 'Clear',
|
|
206
|
+
'praxis.dynamicFields.inlinePipelineStatus.selectionPillsAriaLabel': 'Selected items',
|
|
207
|
+
'praxis.dynamicFields.inlinePipelineStatus.barAriaEmpty': '{{label}} with no selected items',
|
|
208
|
+
'praxis.dynamicFields.inlinePipelineStatus.barAriaSelected': '{{label}} with {{count}} selected items',
|
|
209
|
+
'praxis.dynamicFields.inlinePipelineStatus.optionsGroupAriaLabelMultiple': 'Multiple selection options',
|
|
210
|
+
'praxis.dynamicFields.inlinePipelineStatus.optionsGroupAriaLabelSingle': 'Single selection options',
|
|
211
|
+
'praxis.dynamicFields.inlinePipelineStatus.emptyStateText': 'No options found',
|
|
201
212
|
'praxis.dynamicFields.inlineSelect.searchPlaceholder': 'Search...',
|
|
202
213
|
'praxis.dynamicFields.inlineTreeSelect.placeholder': 'Tree',
|
|
203
214
|
'praxis.dynamicFields.inlineTreeSelect.searchPlaceholder': 'Search tree...',
|
|
@@ -354,7 +365,18 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
|
|
|
354
365
|
'praxis.dynamicFields.inlineCurrencyRange.ariaSelection': '{{label}}: {{value}}',
|
|
355
366
|
'praxis.dynamicFields.inlineCurrencyRange.value.from': '>= {{value}}',
|
|
356
367
|
'praxis.dynamicFields.inlineCurrencyRange.value.upto': '<= {{value}}',
|
|
357
|
-
'praxis.dynamicFields.inlineSelect.placeholder': '
|
|
368
|
+
'praxis.dynamicFields.inlineSelect.placeholder': 'Selecionar',
|
|
369
|
+
'praxis.dynamicFields.inlinePipelineStatus.placeholder': 'Pipeline',
|
|
370
|
+
'praxis.dynamicFields.inlinePipelineStatus.panelSubtitle': 'Painel de seleção configurável para estágios, status ou prioridades',
|
|
371
|
+
'praxis.dynamicFields.inlinePipelineStatus.searchPlaceholder': 'Pesquisar estágios...',
|
|
372
|
+
'praxis.dynamicFields.inlinePipelineStatus.selectionActionsAriaLabel': 'Ações da seleção',
|
|
373
|
+
'praxis.dynamicFields.inlinePipelineStatus.clearActionLabel': 'Limpar',
|
|
374
|
+
'praxis.dynamicFields.inlinePipelineStatus.selectionPillsAriaLabel': 'Itens selecionados',
|
|
375
|
+
'praxis.dynamicFields.inlinePipelineStatus.barAriaEmpty': '{{label}} sem itens selecionados',
|
|
376
|
+
'praxis.dynamicFields.inlinePipelineStatus.barAriaSelected': '{{label}} com {{count}} itens selecionados',
|
|
377
|
+
'praxis.dynamicFields.inlinePipelineStatus.optionsGroupAriaLabelMultiple': 'Opções de seleção múltipla',
|
|
378
|
+
'praxis.dynamicFields.inlinePipelineStatus.optionsGroupAriaLabelSingle': 'Opções de seleção única',
|
|
379
|
+
'praxis.dynamicFields.inlinePipelineStatus.emptyStateText': 'Nenhuma opção encontrada',
|
|
358
380
|
'praxis.dynamicFields.inlineSelect.searchPlaceholder': 'Pesquisar...',
|
|
359
381
|
'praxis.dynamicFields.inlineTreeSelect.placeholder': 'Árvore',
|
|
360
382
|
'praxis.dynamicFields.inlineTreeSelect.searchPlaceholder': 'Buscar na árvore...',
|
|
@@ -557,7 +579,7 @@ class SimpleBaseInputComponent {
|
|
|
557
579
|
const enabled = typeof cfg === 'boolean' ? cfg : cfg.enabled !== false;
|
|
558
580
|
if (!enabled)
|
|
559
581
|
return false;
|
|
560
|
-
if (this.
|
|
582
|
+
if (this.isInteractionBlockedByState()) {
|
|
561
583
|
return false;
|
|
562
584
|
}
|
|
563
585
|
if (cfg !== true && cfg?.showOnlyWhenFilled) {
|
|
@@ -737,13 +759,18 @@ class SimpleBaseInputComponent {
|
|
|
737
759
|
/**
|
|
738
760
|
* Tooltip usado pelos campos inline:
|
|
739
761
|
* 1) prioriza erro quando validators.errorPosition = tooltip
|
|
740
|
-
* 2)
|
|
762
|
+
* 2) materializa help text explícito do metadata (tooltip/hint)
|
|
763
|
+
* 3) fallback para contexto "Campo: valor" quando houver valor preenchido
|
|
741
764
|
*/
|
|
742
765
|
inlineTooltipText() {
|
|
743
766
|
const validationTooltip = this.tooltipEnabled() ? String(this.errorMessage() || '').trim() : '';
|
|
744
767
|
if (validationTooltip.length) {
|
|
745
768
|
return validationTooltip;
|
|
746
769
|
}
|
|
770
|
+
const explicitHelpTooltip = this.resolveInlineHelpTooltipText();
|
|
771
|
+
if (explicitHelpTooltip.length) {
|
|
772
|
+
return explicitHelpTooltip;
|
|
773
|
+
}
|
|
747
774
|
if (!this.isInlineContextTooltipEnabled()) {
|
|
748
775
|
return '';
|
|
749
776
|
}
|
|
@@ -774,6 +801,28 @@ class SimpleBaseInputComponent {
|
|
|
774
801
|
resolveInlineContextTooltipValue() {
|
|
775
802
|
return this.stringifyInlineContextValue(this.control().value);
|
|
776
803
|
}
|
|
804
|
+
resolveInlineHelpTooltipText() {
|
|
805
|
+
const meta = this.metadata();
|
|
806
|
+
const candidates = [
|
|
807
|
+
meta?.inlineTooltip,
|
|
808
|
+
meta?.tooltip,
|
|
809
|
+
meta?.hint,
|
|
810
|
+
];
|
|
811
|
+
for (const candidate of candidates) {
|
|
812
|
+
const text = String(candidate ?? '').trim();
|
|
813
|
+
if (text.length) {
|
|
814
|
+
return this.truncateInlineTooltipText(text);
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
return '';
|
|
818
|
+
}
|
|
819
|
+
isInteractionBlockedByState(options) {
|
|
820
|
+
const includeReadonly = options?.includeReadonly !== false;
|
|
821
|
+
const includePresentation = options?.includePresentation !== false;
|
|
822
|
+
const readonlyBlocked = includeReadonly && !!this.isReadonlyEffective?.();
|
|
823
|
+
const presentationBlocked = includePresentation && !!this.presentationMode;
|
|
824
|
+
return !!this.disabledMode || this.control().disabled || readonlyBlocked || presentationBlocked;
|
|
825
|
+
}
|
|
777
826
|
resolveInlineContextTooltipLabel() {
|
|
778
827
|
const meta = this.metadata();
|
|
779
828
|
const candidates = [
|
|
@@ -1376,6 +1425,9 @@ class SimpleBaseInputComponent {
|
|
|
1376
1425
|
this.nativeElement.setAttribute('aria-label', meta.ariaLabel);
|
|
1377
1426
|
if (meta.ariaDescribedby)
|
|
1378
1427
|
this.nativeElement.setAttribute('aria-describedby', meta.ariaDescribedby);
|
|
1428
|
+
else if (meta.hint) {
|
|
1429
|
+
this.nativeElement.setAttribute('aria-description', String(meta.hint));
|
|
1430
|
+
}
|
|
1379
1431
|
if (meta.ariaLabelledby)
|
|
1380
1432
|
this.nativeElement.setAttribute('aria-labelledby', meta.ariaLabelledby);
|
|
1381
1433
|
if (meta.required !== undefined) {
|
|
@@ -3436,6 +3488,7 @@ class ComponentRegistryService {
|
|
|
3436
3488
|
this.registry.forEach((registration) => {
|
|
3437
3489
|
registration.cached = undefined;
|
|
3438
3490
|
registration.cachedAt = undefined;
|
|
3491
|
+
registration.loadingPromise = undefined;
|
|
3439
3492
|
registration.loadAttempts = 0;
|
|
3440
3493
|
registration.lastError = undefined;
|
|
3441
3494
|
});
|
|
@@ -3466,6 +3519,7 @@ class ComponentRegistryService {
|
|
|
3466
3519
|
if (registration) {
|
|
3467
3520
|
registration.cached = undefined;
|
|
3468
3521
|
registration.cachedAt = undefined;
|
|
3522
|
+
registration.loadingPromise = undefined;
|
|
3469
3523
|
registration.loadAttempts = 0;
|
|
3470
3524
|
registration.lastError = undefined;
|
|
3471
3525
|
this.logger.debug(`[ComponentRegistry] Cache limpo para ${type}`, this.buildLogOptions({ controlType: type }, {
|
|
@@ -3721,6 +3775,18 @@ class ComponentRegistryService {
|
|
|
3721
3775
|
* Carrega componente com lógica de retry
|
|
3722
3776
|
*/
|
|
3723
3777
|
async loadComponentWithRetry(registration, type) {
|
|
3778
|
+
if (registration.loadingPromise) {
|
|
3779
|
+
return registration.loadingPromise;
|
|
3780
|
+
}
|
|
3781
|
+
const loadPromise = this.performLoadWithRetry(registration, type).finally(() => {
|
|
3782
|
+
if (registration.loadingPromise === loadPromise) {
|
|
3783
|
+
registration.loadingPromise = undefined;
|
|
3784
|
+
}
|
|
3785
|
+
});
|
|
3786
|
+
registration.loadingPromise = loadPromise;
|
|
3787
|
+
return loadPromise;
|
|
3788
|
+
}
|
|
3789
|
+
async performLoadWithRetry(registration, type) {
|
|
3724
3790
|
const attempts = registration.loadAttempts || 0;
|
|
3725
3791
|
if (attempts >= MAX_LOAD_ATTEMPTS) {
|
|
3726
3792
|
this.logger.error(`[ComponentRegistry] Máximo de tentativas atingido para '${type}'. Último erro:`, this.buildLogOptions({ controlType: type, lastError: registration.lastError }, { context: { actionId: 'component.load-with-retry' } }));
|
|
@@ -3745,6 +3811,7 @@ class ComponentRegistryService {
|
|
|
3745
3811
|
registration.cached = component;
|
|
3746
3812
|
registration.cachedAt = Date.now();
|
|
3747
3813
|
registration.loadAttempts = 0;
|
|
3814
|
+
registration.loadingPromise = undefined;
|
|
3748
3815
|
registration.lastError = undefined;
|
|
3749
3816
|
// Log apenas na primeira vez que carrega (não em cache hits subsequentes)
|
|
3750
3817
|
if (attempts === 0) {
|
|
@@ -3756,11 +3823,12 @@ class ComponentRegistryService {
|
|
|
3756
3823
|
return component;
|
|
3757
3824
|
}
|
|
3758
3825
|
catch (error) {
|
|
3826
|
+
registration.loadingPromise = undefined;
|
|
3759
3827
|
registration.lastError = error;
|
|
3760
3828
|
this.logger.error(`[ComponentRegistry] Erro na tentativa ${attempts + 1} para '${type}':`, this.buildLogOptions({ controlType: type, attempt: attempts + 1, error }, { context: { actionId: 'component.load-with-retry' } }));
|
|
3761
3829
|
// Se não é a última tentativa, tentar novamente
|
|
3762
3830
|
if (attempts + 1 < MAX_LOAD_ATTEMPTS) {
|
|
3763
|
-
return this.
|
|
3831
|
+
return this.performLoadWithRetry(registration, type);
|
|
3764
3832
|
}
|
|
3765
3833
|
return null;
|
|
3766
3834
|
}
|
|
@@ -5197,17 +5265,62 @@ class DynamicFieldLoaderDirective {
|
|
|
5197
5265
|
this.lastFieldsSnapshot = this.buildFieldSnapshot(fieldsSnapshot);
|
|
5198
5266
|
this.dbg('[DFL] executeRendering: complete', { totalCreated: createdFieldNames.length, hadErrors });
|
|
5199
5267
|
}
|
|
5200
|
-
/** Builds a
|
|
5268
|
+
/** Builds a semantic snapshot capturing metadata changes that affect runtime rendering. */
|
|
5201
5269
|
buildFieldSnapshot(fields) {
|
|
5202
5270
|
return (fields || []).map((f) => {
|
|
5203
|
-
|
|
5204
|
-
|
|
5205
|
-
|
|
5206
|
-
|
|
5207
|
-
|
|
5208
|
-
return { name: f.name, controlType: f.controlType, sig };
|
|
5271
|
+
return {
|
|
5272
|
+
name: f.name,
|
|
5273
|
+
controlType: f.controlType,
|
|
5274
|
+
sig: this.buildFieldSemanticSignature(f),
|
|
5275
|
+
};
|
|
5209
5276
|
});
|
|
5210
5277
|
}
|
|
5278
|
+
buildFieldSemanticSignature(field) {
|
|
5279
|
+
const seen = new WeakSet();
|
|
5280
|
+
const normalize = (value) => {
|
|
5281
|
+
if (value === null || value === undefined)
|
|
5282
|
+
return value;
|
|
5283
|
+
if (typeof value === 'string' ||
|
|
5284
|
+
typeof value === 'number' ||
|
|
5285
|
+
typeof value === 'boolean') {
|
|
5286
|
+
return value;
|
|
5287
|
+
}
|
|
5288
|
+
if (value instanceof Date) {
|
|
5289
|
+
return value.toISOString();
|
|
5290
|
+
}
|
|
5291
|
+
if (Array.isArray(value)) {
|
|
5292
|
+
return value.map((item) => normalize(item));
|
|
5293
|
+
}
|
|
5294
|
+
if (typeof value === 'function' || typeof value === 'symbol') {
|
|
5295
|
+
return undefined;
|
|
5296
|
+
}
|
|
5297
|
+
if (typeof value !== 'object') {
|
|
5298
|
+
return String(value);
|
|
5299
|
+
}
|
|
5300
|
+
if (seen.has(value)) {
|
|
5301
|
+
return '[Circular]';
|
|
5302
|
+
}
|
|
5303
|
+
seen.add(value);
|
|
5304
|
+
const source = value;
|
|
5305
|
+
const normalized = {};
|
|
5306
|
+
Object.keys(source)
|
|
5307
|
+
.sort()
|
|
5308
|
+
.forEach((key) => {
|
|
5309
|
+
if (key === 'control' ||
|
|
5310
|
+
key === 'formControl' ||
|
|
5311
|
+
key === 'formGroup' ||
|
|
5312
|
+
key === 'componentRef') {
|
|
5313
|
+
return;
|
|
5314
|
+
}
|
|
5315
|
+
const next = normalize(source[key]);
|
|
5316
|
+
if (next !== undefined) {
|
|
5317
|
+
normalized[key] = next;
|
|
5318
|
+
}
|
|
5319
|
+
});
|
|
5320
|
+
return normalized;
|
|
5321
|
+
};
|
|
5322
|
+
return JSON.stringify(normalize(field));
|
|
5323
|
+
}
|
|
5211
5324
|
/**
|
|
5212
5325
|
* Reatribui apenas os FormControls existentes aos componentes/shells sem refazer a renderização.
|
|
5213
5326
|
*/
|
|
@@ -7337,9 +7450,33 @@ class MaterialButtonComponent extends SimpleBaseButtonComponent {
|
|
|
7337
7450
|
// =============================================================================
|
|
7338
7451
|
// LIFECYCLE
|
|
7339
7452
|
// =============================================================================
|
|
7453
|
+
syncKeyboardShortcutEffect = effect((onCleanup) => {
|
|
7454
|
+
const shortcut = this.keyboardShortcut();
|
|
7455
|
+
if (!shortcut || !this.keyboardService) {
|
|
7456
|
+
return;
|
|
7457
|
+
}
|
|
7458
|
+
const unregister = this.keyboardService.registerShortcut(shortcut, {
|
|
7459
|
+
callback: () => { this.triggerAction(); },
|
|
7460
|
+
description: this.resolveDynamicFieldsMessage(null, 'button.shortcutDescription', 'Executar {{label}}', {
|
|
7461
|
+
label: this.metadata()?.label || this.tDynamicFields('button.defaultLabel', 'Button'),
|
|
7462
|
+
}),
|
|
7463
|
+
componentId: this.componentId(),
|
|
7464
|
+
priority: 10
|
|
7465
|
+
});
|
|
7466
|
+
this.unregisterShortcut = unregister;
|
|
7467
|
+
this.log('debug', 'Keyboard shortcut registered', { shortcut });
|
|
7468
|
+
onCleanup(() => {
|
|
7469
|
+
try {
|
|
7470
|
+
unregister?.();
|
|
7471
|
+
}
|
|
7472
|
+
catch { }
|
|
7473
|
+
if (this.unregisterShortcut === unregister) {
|
|
7474
|
+
this.unregisterShortcut = undefined;
|
|
7475
|
+
}
|
|
7476
|
+
});
|
|
7477
|
+
}, ...(ngDevMode ? [{ debugName: "syncKeyboardShortcutEffect" }] : []));
|
|
7340
7478
|
ngOnInit() {
|
|
7341
7479
|
super.ngOnInit();
|
|
7342
|
-
this.setupKeyboardShortcuts();
|
|
7343
7480
|
}
|
|
7344
7481
|
ngOnDestroy() {
|
|
7345
7482
|
super.ngOnDestroy();
|
|
@@ -7414,23 +7551,6 @@ class MaterialButtonComponent extends SimpleBaseButtonComponent {
|
|
|
7414
7551
|
isIconOnly: this.isIconOnlyButton()
|
|
7415
7552
|
};
|
|
7416
7553
|
}
|
|
7417
|
-
// =============================================================================
|
|
7418
|
-
// MÉTODOS PRIVADOS
|
|
7419
|
-
// =============================================================================
|
|
7420
|
-
setupKeyboardShortcuts() {
|
|
7421
|
-
const shortcut = this.keyboardShortcut();
|
|
7422
|
-
if (shortcut && this.keyboardService) {
|
|
7423
|
-
this.unregisterShortcut = this.keyboardService.registerShortcut(shortcut, {
|
|
7424
|
-
callback: () => { this.triggerAction(); },
|
|
7425
|
-
description: this.resolveDynamicFieldsMessage(null, 'button.shortcutDescription', 'Executar {{label}}', {
|
|
7426
|
-
label: this.metadata()?.label || this.tDynamicFields('button.defaultLabel', 'Button'),
|
|
7427
|
-
}),
|
|
7428
|
-
componentId: this.componentId(),
|
|
7429
|
-
priority: 10
|
|
7430
|
-
});
|
|
7431
|
-
this.log('debug', 'Keyboard shortcut registered', { shortcut });
|
|
7432
|
-
}
|
|
7433
|
-
}
|
|
7434
7554
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MaterialButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7435
7555
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: MaterialButtonComponent, isStandalone: true, selector: "pdx-material-button", host: { properties: { "class": "componentCssClasses()", "attr.data-field-type": "\"button\"", "attr.data-field-name": "metadata()?.name", "attr.data-button-variant": "buttonVariant()", "attr.data-component-id": "componentId()" } }, usesInheritance: true, ngImport: i0, template: "<!-- Container principal do button -->\n<div class=\"pdx-button-container\" [class]=\"componentCssClasses()\">\n\n <!-- Button b\u00E1sico -->\n @if (buttonVariant() === 'basic') {\n <button\n mat-button\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText()\"\n [matTooltipDisabled]=\"!tooltipText()\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"16\" class=\"pdx-button-spinner\"></mat-spinner>\n }\n \n @if (shouldShowIcon()) {\n <mat-icon class=\"pdx-button-icon\" [praxisIcon]=\"buttonIcon()\"></mat-icon>\n }\n \n <span class=\"pdx-button-text\">{{ buttonText() }}</span>\n </button>\n }\n\n <!-- Button raised -->\n @if (buttonVariant() === 'raised') {\n <button\n mat-raised-button\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText()\"\n [matTooltipDisabled]=\"!tooltipText()\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"16\" class=\"pdx-button-spinner\"></mat-spinner>\n }\n \n @if (shouldShowIcon()) {\n <mat-icon class=\"pdx-button-icon\" [praxisIcon]=\"buttonIcon()\"></mat-icon>\n }\n \n <span class=\"pdx-button-text\">{{ buttonText() }}</span>\n </button>\n }\n\n <!-- Button stroked -->\n @if (buttonVariant() === 'stroked') {\n <button\n mat-stroked-button\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText()\"\n [matTooltipDisabled]=\"!tooltipText()\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"16\" class=\"pdx-button-spinner\"></mat-spinner>\n }\n \n @if (shouldShowIcon()) {\n <mat-icon class=\"pdx-button-icon\" [praxisIcon]=\"buttonIcon()\"></mat-icon>\n }\n \n <span class=\"pdx-button-text\">{{ buttonText() }}</span>\n </button>\n }\n\n <!-- Button flat -->\n @if (buttonVariant() === 'flat') {\n <button\n mat-flat-button\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText()\"\n [matTooltipDisabled]=\"!tooltipText()\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"16\" class=\"pdx-button-spinner\"></mat-spinner>\n }\n \n @if (shouldShowIcon()) {\n <mat-icon class=\"pdx-button-icon\" [praxisIcon]=\"buttonIcon()\"></mat-icon>\n }\n \n <span class=\"pdx-button-text\">{{ buttonText() }}</span>\n </button>\n }\n\n <!-- Button icon -->\n @if (buttonVariant() === 'icon') {\n <button\n mat-icon-button\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label || buttonIcon()\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText() || metadata()?.label\"\n [matTooltipDisabled]=\"!tooltipText() && !metadata()?.label\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"16\" class=\"pdx-button-spinner\"></mat-spinner>\n } @else {\n <mat-icon [praxisIcon]=\"buttonIcon() || 'mi:smart_button'\"></mat-icon>\n }\n </button>\n }\n\n <!-- Button FAB -->\n @if (buttonVariant() === 'fab') {\n <button\n mat-fab\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label || buttonIcon()\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText() || metadata()?.label\"\n [matTooltipDisabled]=\"!tooltipText() && !metadata()?.label\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"20\" class=\"pdx-button-spinner\"></mat-spinner>\n } @else {\n <mat-icon [praxisIcon]=\"buttonIcon() || 'add'\"></mat-icon>\n }\n </button>\n }\n\n <!-- Button Mini FAB -->\n @if (buttonVariant() === 'mini-fab') {\n <button\n mat-mini-fab\n [type]=\"buttonType()\"\n [color]=\"materialColor()\"\n [disabled]=\"isDisabled()\"\n [disableRipple]=\"shouldDisableRipple()\"\n [attr.aria-label]=\"metadata()?.label || buttonIcon()\"\n [attr.aria-describedby]=\"metadata()?.description ? componentId() + '-description' : null\"\n [matTooltip]=\"tooltipText() || metadata()?.label\"\n [matTooltipDisabled]=\"!tooltipText() && !metadata()?.label\"\n matTooltipPosition=\"above\"\n (click)=\"handleClick($event)\"\n class=\"pdx-button-element\">\n \n @if (isLoading()) {\n <mat-spinner diameter=\"16\" class=\"pdx-button-spinner\"></mat-spinner>\n } @else {\n <mat-icon [praxisIcon]=\"buttonIcon() || 'add'\"></mat-icon>\n }\n </button>\n }\n\n <!-- Descri\u00E7\u00E3o do bot\u00E3o (se dispon\u00EDvel) -->\n @if (metadata()?.description && !isIconOnlyButton()) {\n <div \n class=\"pdx-button-description\"\n [id]=\"componentId() + '-description'\">\n {{ metadata()?.description }}\n </div>\n }\n\n</div>\n\n<!-- Loading indicator para valida\u00E7\u00E3o ass\u00EDncrona -->\n@if (isLoading()) {\n <div class=\"pdx-validation-loading\" [attr.aria-label]=\"validationLoadingAriaLabel()\">\n <mat-icon class=\"pdx-loading-spinner\" [praxisIcon]=\"'mi:hourglass_empty'\"></mat-icon>\n <span class=\"pdx-sr-only\">{{ validationLoadingSrOnly() }}</span>\n </div>\n}\n\n<!-- Indicador de estado enterprise (debug) -->\n@if (false && metadata()?.security) {\n <div class=\"pdx-debug-info\">\n <small class=\"pdx-debug-security\">\n Security Level: {{ metadata()?.security?.securityLevel }}\n @if (metadata()?.security?.audit?.enabled) {\n | Audit: ON\n }\n | Clicks: {{ 0 }}\n @if (keyboardShortcut()) {\n | Shortcut: {{ keyboardShortcut() }}\n }\n </small>\n </div>\n}\n", styles: [".pdx-button-container{display:inline-block;position:relative}.pdx-button-container .pdx-button-element{position:relative;overflow:hidden;transition:all .2s ease}.pdx-button-container .pdx-button-element.pdx-button-with-icon .pdx-button-icon{margin-right:8px;font-size:18px;height:18px;width:18px}.pdx-button-container .pdx-button-element .pdx-button-spinner{margin-right:8px}.pdx-button-container .pdx-button-element .pdx-button-spinner:only-child{margin-right:0}.pdx-button-container .pdx-button-element .pdx-button-text{display:inline-block;vertical-align:middle}.pdx-button-container .pdx-button-element:disabled{cursor:not-allowed;opacity:.6}.pdx-button-container .pdx-button-element:focus{outline:2px solid var(--mat-focus-indicator-color, var(--md-sys-color-primary));outline-offset:2px}.pdx-button-container .pdx-button-description{margin-top:4px;font-size:12px;color:var(--mat-form-field-subscript-text-color);text-align:center;line-height:1.3}.pdx-button-container.pdx-button-loading .pdx-button-element{cursor:wait}.pdx-button-container.pdx-button-loading .pdx-button-element .pdx-button-text{opacity:.7}.pdx-button-container.pdx-button-pressed .pdx-button-element{transform:scale(.98);transition:transform .1s ease}.pdx-button-container.pdx-button-no-ripple .pdx-button-element .mat-ripple{display:none}.pdx-button-container.pdx-button-variant-raised .pdx-button-element{box-shadow:var(--md-sys-elevation-level1, var(--md-sys-elevation-level1))}.pdx-button-container.pdx-button-variant-raised .pdx-button-element:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level2, var(--md-sys-elevation-level2))}.pdx-button-container.pdx-button-variant-stroked .pdx-button-element{border:1px solid var(--mat-stroked-button-outline-color)}.pdx-button-container.pdx-button-variant-icon .pdx-button-element{min-width:40px;width:40px;height:40px;border-radius:50%}.pdx-button-container.pdx-button-variant-icon .pdx-button-element .mat-icon{font-size:20px;height:20px;width:20px}.pdx-button-container.pdx-button-variant-fab .pdx-button-element{min-width:56px;width:56px;height:56px}.pdx-button-container.pdx-button-variant-fab .pdx-button-element .mat-icon{font-size:24px;height:24px;width:24px}.pdx-button-container.pdx-button-variant-mini-fab .pdx-button-element{min-width:40px;width:40px;height:40px}.pdx-button-container.pdx-button-variant-mini-fab .pdx-button-element .mat-icon{font-size:20px;height:20px;width:20px}.pdx-button-container.pdx-button-icon-only .pdx-button-description{max-width:120px;font-size:11px}.pdx-validation-loading{display:flex;align-items:center;gap:8px;margin-top:8px;color:var(--mat-form-field-subscript-text-color);font-size:12px}.pdx-validation-loading .pdx-loading-spinner{font-size:16px;height:16px;width:16px;animation:spin 1s linear infinite}.pdx-validation-loading .pdx-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pdx-debug-info{margin-top:8px;padding:4px 8px;background-color:var(--mat-toolbar-container-background-color, var(--md-sys-color-surface-variant));border-radius:4px;max-width:200px}.pdx-debug-info .pdx-debug-security{font-family:monospace;font-size:10px;color:var(--mat-toolbar-container-text-color, var(--md-sys-color-on-surface-variant));word-break:break-all}@media(max-width:600px){.pdx-button-container.pdx-button-variant-fab .pdx-button-element{min-width:48px;width:48px;height:48px}.pdx-button-container.pdx-button-variant-fab .pdx-button-element .mat-icon{font-size:20px;height:20px;width:20px}.pdx-button-container .pdx-button-element.pdx-button-with-icon .pdx-button-icon{margin-right:6px;font-size:16px;height:16px;width:16px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes buttonPulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.pdx-button-container .pdx-button-element:hover:not(:disabled){transform:translateY(-1px);transition:transform .2s ease}.pdx-button-container .pdx-button-element:active:not(:disabled){transform:translateY(0) scale(.98);transition:transform .1s ease}.pdx-button-container.pdx-button-loading .pdx-button-element{animation:buttonPulse 1.5s infinite ease-in-out}@media(prefers-reduced-motion:reduce){.pdx-button-container .pdx-button-element{transition:none;animation:none}.pdx-button-container .pdx-button-element:hover:not(:disabled){transform:none}.pdx-button-container .pdx-button-element:active:not(:disabled){transform:none}.pdx-loading-spinner,.pdx-button-loading .pdx-button-element{animation:none}}@media(prefers-contrast:high){.pdx-button-container .pdx-button-element:focus{outline:3px solid;outline-offset:2px}}@media(prefers-color-scheme:dark){.pdx-button-container.pdx-button-variant-raised .pdx-button-element{box-shadow:var(--md-sys-elevation-level2, var(--md-sys-elevation-level2))}.pdx-button-container.pdx-button-variant-raised .pdx-button-element:hover:not(:disabled){box-shadow:var(--md-sys-elevation-level3, var(--md-sys-elevation-level3))}}@media print{.pdx-button-container .pdx-button-element{box-shadow:none!important;border:1px solid var(--md-sys-color-outline);background:transparent!important;color:var(--md-sys-color-on-surface)!important}.pdx-button-container .pdx-button-element .pdx-button-spinner,.pdx-validation-loading,.pdx-debug-info{display:none}}.pdx-button-container .mat-primary.pdx-button-loading{background-color:var(--md-sys-color-primary)}.pdx-button-container .mat-accent.pdx-button-loading{background-color:var(--md-sys-color-secondary)}.pdx-button-container .mat-warn.pdx-button-loading{background-color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$1.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$1.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
|
|
7436
7556
|
}
|
|
@@ -14070,7 +14190,10 @@ class InlineSelectComponent extends SimpleBaseSelectComponent {
|
|
|
14070
14190
|
}
|
|
14071
14191
|
placeholderText() {
|
|
14072
14192
|
const fromMeta = this.resolveFieldLabelFromMetadata(this.currentMetadata());
|
|
14073
|
-
return fromMeta ||
|
|
14193
|
+
return (fromMeta ||
|
|
14194
|
+
this.fieldLabelText ||
|
|
14195
|
+
this.resolveHumanizedFieldName(this.currentMetadata().name) ||
|
|
14196
|
+
this.tDynamicFields('inlineSelect.placeholder', 'Selecionar'));
|
|
14074
14197
|
}
|
|
14075
14198
|
searchPlaceholderText() {
|
|
14076
14199
|
const custom = String(this.currentMetadata().searchPlaceholder || '').trim();
|
|
@@ -14093,7 +14216,20 @@ class InlineSelectComponent extends SimpleBaseSelectComponent {
|
|
|
14093
14216
|
return text;
|
|
14094
14217
|
}
|
|
14095
14218
|
}
|
|
14096
|
-
return
|
|
14219
|
+
return '';
|
|
14220
|
+
}
|
|
14221
|
+
resolveHumanizedFieldName(value) {
|
|
14222
|
+
const raw = String(value ?? '').trim();
|
|
14223
|
+
if (!raw)
|
|
14224
|
+
return '';
|
|
14225
|
+
const spaced = raw
|
|
14226
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
14227
|
+
.replace(/[_\-.]+/g, ' ')
|
|
14228
|
+
.replace(/\s+/g, ' ')
|
|
14229
|
+
.trim();
|
|
14230
|
+
if (!spaced)
|
|
14231
|
+
return '';
|
|
14232
|
+
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
|
|
14097
14233
|
}
|
|
14098
14234
|
ariaLabel() {
|
|
14099
14235
|
const custom = String(this.currentMetadata().ariaLabel || '').trim();
|
|
@@ -16159,7 +16295,10 @@ class InlineAsyncSelectComponent extends MaterialAsyncSelectComponent {
|
|
|
16159
16295
|
}
|
|
16160
16296
|
placeholderText() {
|
|
16161
16297
|
const fromMeta = this.resolveFieldLabelFromMetadata(this.metadata() || {});
|
|
16162
|
-
return fromMeta ||
|
|
16298
|
+
return (fromMeta ||
|
|
16299
|
+
this.fieldLabelText ||
|
|
16300
|
+
this.resolveHumanizedFieldName(this.currentMetadata().name) ||
|
|
16301
|
+
this.tDynamicFields('inlineSelect.placeholder', 'Selecionar'));
|
|
16163
16302
|
}
|
|
16164
16303
|
searchPlaceholderText() {
|
|
16165
16304
|
const custom = String(this.currentMetadata().searchPlaceholder || '').trim();
|
|
@@ -16168,8 +16307,21 @@ class InlineAsyncSelectComponent extends MaterialAsyncSelectComponent {
|
|
|
16168
16307
|
ariaLabel() {
|
|
16169
16308
|
return (this.currentMetadata().ariaLabel ||
|
|
16170
16309
|
this.label ||
|
|
16171
|
-
this.metadata()?.name ||
|
|
16172
|
-
|
|
16310
|
+
this.resolveHumanizedFieldName(this.metadata()?.name) ||
|
|
16311
|
+
this.placeholderText());
|
|
16312
|
+
}
|
|
16313
|
+
resolveHumanizedFieldName(value) {
|
|
16314
|
+
const raw = String(value ?? '').trim();
|
|
16315
|
+
if (!raw)
|
|
16316
|
+
return '';
|
|
16317
|
+
const spaced = raw
|
|
16318
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
16319
|
+
.replace(/[_\-.]+/g, ' ')
|
|
16320
|
+
.replace(/\s+/g, ' ')
|
|
16321
|
+
.trim();
|
|
16322
|
+
if (!spaced)
|
|
16323
|
+
return '';
|
|
16324
|
+
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
|
|
16173
16325
|
}
|
|
16174
16326
|
resolveOptionLabel(value) {
|
|
16175
16327
|
const option = this.options().find((item) => this.equalsOptionValue(item.value, value));
|
|
@@ -17888,6 +18040,9 @@ class InlineInputComponent extends SimpleBaseInputComponent {
|
|
|
17888
18040
|
}
|
|
17889
18041
|
ngAfterViewInit() {
|
|
17890
18042
|
super.ngAfterViewInit();
|
|
18043
|
+
if (this.inputEl?.nativeElement) {
|
|
18044
|
+
this.registerInputElement(this.inputEl.nativeElement);
|
|
18045
|
+
}
|
|
17891
18046
|
this.scheduleInlineResize();
|
|
17892
18047
|
}
|
|
17893
18048
|
onComponentDestroy() {
|
|
@@ -18114,6 +18269,7 @@ class InlineInputComponent extends SimpleBaseInputComponent {
|
|
|
18114
18269
|
[placeholder]="placeholderText()"
|
|
18115
18270
|
[required]="metadata()?.required || false"
|
|
18116
18271
|
[readonly]="isReadonlyEffective()"
|
|
18272
|
+
[disabled]="disabledMode || control().disabled"
|
|
18117
18273
|
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
18118
18274
|
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
18119
18275
|
[maxlength]="metadata()?.maxLength || null"
|
|
@@ -18193,6 +18349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
18193
18349
|
[placeholder]="placeholderText()"
|
|
18194
18350
|
[required]="metadata()?.required || false"
|
|
18195
18351
|
[readonly]="isReadonlyEffective()"
|
|
18352
|
+
[disabled]="disabledMode || control().disabled"
|
|
18196
18353
|
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
18197
18354
|
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
18198
18355
|
[maxlength]="metadata()?.maxLength || null"
|
|
@@ -19383,6 +19540,9 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19383
19540
|
}
|
|
19384
19541
|
ngAfterViewInit() {
|
|
19385
19542
|
super.ngAfterViewInit();
|
|
19543
|
+
if (this.inputEl?.nativeElement) {
|
|
19544
|
+
this.registerInputElement(this.inputEl.nativeElement);
|
|
19545
|
+
}
|
|
19386
19546
|
this.scheduleInlineResize();
|
|
19387
19547
|
}
|
|
19388
19548
|
onComponentDestroy() {
|
|
@@ -19811,6 +19971,7 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19811
19971
|
[placeholder]="placeholderText()"
|
|
19812
19972
|
[required]="metadata()?.required || false"
|
|
19813
19973
|
[readonly]="isReadonlyEffective()"
|
|
19974
|
+
[disabled]="disabledMode || control().disabled"
|
|
19814
19975
|
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
19815
19976
|
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
19816
19977
|
[min]="effectiveMinValue()"
|
|
@@ -19923,6 +20084,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19923
20084
|
[placeholder]="placeholderText()"
|
|
19924
20085
|
[required]="metadata()?.required || false"
|
|
19925
20086
|
[readonly]="isReadonlyEffective()"
|
|
20087
|
+
[disabled]="disabledMode || control().disabled"
|
|
19926
20088
|
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
19927
20089
|
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
19928
20090
|
[min]="effectiveMinValue()"
|
|
@@ -20995,7 +21157,7 @@ class InlineCurrencyRangeComponent extends SimpleBaseInputComponent {
|
|
|
20995
21157
|
return this.distributionVisual().opacity;
|
|
20996
21158
|
}
|
|
20997
21159
|
isInteractionBlocked() {
|
|
20998
|
-
return this.
|
|
21160
|
+
return this.isInteractionBlockedByState();
|
|
20999
21161
|
}
|
|
21000
21162
|
hasSelection() {
|
|
21001
21163
|
return this.currentRangeValue() !== null;
|
|
@@ -22315,7 +22477,7 @@ class InlineRangeSliderComponent extends SimpleBaseInputComponent {
|
|
|
22315
22477
|
return String(this.currentMetadata().mode || 'single').toLowerCase() === 'range';
|
|
22316
22478
|
}
|
|
22317
22479
|
isInteractionBlocked() {
|
|
22318
|
-
return this.
|
|
22480
|
+
return this.isInteractionBlockedByState();
|
|
22319
22481
|
}
|
|
22320
22482
|
hasSelection() {
|
|
22321
22483
|
if (this.isRangeMode()) {
|
|
@@ -25348,10 +25510,7 @@ class InlineDateRangeComponent extends MaterialDateRangeComponent {
|
|
|
25348
25510
|
this.scheduleInlineResize();
|
|
25349
25511
|
}
|
|
25350
25512
|
isInteractionBlocked() {
|
|
25351
|
-
return
|
|
25352
|
-
this.presentationMode ||
|
|
25353
|
-
this.isReadonlyEffective() ||
|
|
25354
|
-
this.control().disabled);
|
|
25513
|
+
return this.isInteractionBlockedByState();
|
|
25355
25514
|
}
|
|
25356
25515
|
showQuickClear() {
|
|
25357
25516
|
const clearCfg = this.currentMetadata().clearButton;
|
|
@@ -26698,7 +26857,7 @@ class InlineTimeComponent extends MaterialTimepickerComponent {
|
|
|
26698
26857
|
return getErrorStateMatcherForField(this.metadata());
|
|
26699
26858
|
}
|
|
26700
26859
|
isInteractionBlocked() {
|
|
26701
|
-
return this.
|
|
26860
|
+
return this.isInteractionBlockedByState();
|
|
26702
26861
|
}
|
|
26703
26862
|
showQuickClear() {
|
|
26704
26863
|
const clearCfg = this.currentMetadata().clearButton;
|
|
@@ -28683,10 +28842,7 @@ class InlineTimeRangeComponent extends PdxMaterialTimeRangeComponent {
|
|
|
28683
28842
|
return ticks === true || ticks === 'auto';
|
|
28684
28843
|
}
|
|
28685
28844
|
isInteractionBlocked() {
|
|
28686
|
-
return
|
|
28687
|
-
this.presentationMode ||
|
|
28688
|
-
this.isReadonlyEffective() ||
|
|
28689
|
-
this.control().disabled);
|
|
28845
|
+
return this.isInteractionBlockedByState();
|
|
28690
28846
|
}
|
|
28691
28847
|
hasValue() {
|
|
28692
28848
|
const value = this.timeRangeForm.value;
|
|
@@ -30336,7 +30492,7 @@ class InlineTreeSelectComponent extends SimpleBaseSelectComponent {
|
|
|
30336
30492
|
<div
|
|
30337
30493
|
class="pdx-chip-trigger"
|
|
30338
30494
|
[class.is-active]="hasSelection()"
|
|
30339
|
-
[class.is-disabled]="disabledMode || isReadonlyEffective() || presentationMode"
|
|
30495
|
+
[class.is-disabled]="disabledMode || control().disabled || isReadonlyEffective() || presentationMode"
|
|
30340
30496
|
>
|
|
30341
30497
|
<button
|
|
30342
30498
|
#triggerEl
|
|
@@ -30344,7 +30500,7 @@ class InlineTreeSelectComponent extends SimpleBaseSelectComponent {
|
|
|
30344
30500
|
class="pdx-chip-main"
|
|
30345
30501
|
[matMenuTriggerFor]="treeMenu"
|
|
30346
30502
|
[matMenuTriggerRestoreFocus]="false"
|
|
30347
|
-
[disabled]="disabledMode || isReadonlyEffective() || presentationMode"
|
|
30503
|
+
[disabled]="disabledMode || control().disabled || isReadonlyEffective() || presentationMode"
|
|
30348
30504
|
[attr.aria-label]="ariaLabel()"
|
|
30349
30505
|
[matTooltip]="inlineTooltipText()"
|
|
30350
30506
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
@@ -30524,7 +30680,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
30524
30680
|
<div
|
|
30525
30681
|
class="pdx-chip-trigger"
|
|
30526
30682
|
[class.is-active]="hasSelection()"
|
|
30527
|
-
[class.is-disabled]="disabledMode || isReadonlyEffective() || presentationMode"
|
|
30683
|
+
[class.is-disabled]="disabledMode || control().disabled || isReadonlyEffective() || presentationMode"
|
|
30528
30684
|
>
|
|
30529
30685
|
<button
|
|
30530
30686
|
#triggerEl
|
|
@@ -30532,7 +30688,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
30532
30688
|
class="pdx-chip-main"
|
|
30533
30689
|
[matMenuTriggerFor]="treeMenu"
|
|
30534
30690
|
[matMenuTriggerRestoreFocus]="false"
|
|
30535
|
-
[disabled]="disabledMode || isReadonlyEffective() || presentationMode"
|
|
30691
|
+
[disabled]="disabledMode || control().disabled || isReadonlyEffective() || presentationMode"
|
|
30536
30692
|
[attr.aria-label]="ariaLabel()"
|
|
30537
30693
|
[matTooltip]="inlineTooltipText()"
|
|
30538
30694
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
@@ -33030,10 +33186,10 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33030
33186
|
return this.placeholderText();
|
|
33031
33187
|
}
|
|
33032
33188
|
panelSubtitleText() {
|
|
33033
|
-
return this.resolvePipelineText('panelSubtitle', this.tDynamicFields('
|
|
33189
|
+
return this.resolvePipelineText('panelSubtitle', this.tDynamicFields('inlinePipelineStatus.panelSubtitle', ''), 'pipelineSubtitle', 'inlinePanelSubtitle', 'hint');
|
|
33034
33190
|
}
|
|
33035
33191
|
searchPlaceholderText() {
|
|
33036
|
-
return this.resolvePipelineText('searchPlaceholder', this.tDynamicFields('
|
|
33192
|
+
return this.resolvePipelineText('searchPlaceholder', this.tDynamicFields('inlinePipelineStatus.searchPlaceholder', ''), 'pipelineSearchPlaceholder', 'searchPlaceholder');
|
|
33037
33193
|
}
|
|
33038
33194
|
panelSearchIconName(fallback = 'search') {
|
|
33039
33195
|
return this.metadataIconName(['pipelineSearchIcon', 'panelSearchIcon', 'searchIcon', 'inlineSearchIcon'], fallback);
|
|
@@ -33065,16 +33221,16 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33065
33221
|
return this.showSelectAllAction() || this.showClearSelectionAction();
|
|
33066
33222
|
}
|
|
33067
33223
|
selectionActionsAriaLabel() {
|
|
33068
|
-
return this.resolvePipelineText('selectionActionsAriaLabel', this.tDynamicFields('
|
|
33224
|
+
return this.resolvePipelineText('selectionActionsAriaLabel', this.tDynamicFields('inlinePipelineStatus.selectionActionsAriaLabel', ''), 'pipelineSelectionActionsAriaLabel');
|
|
33069
33225
|
}
|
|
33070
33226
|
selectAllActionText() {
|
|
33071
33227
|
return this.resolvePipelineText('selectAllActionLabel', this.tDynamicFields('multiSelect.selectAllLabel', 'Select all'), 'pipelineSelectAllText');
|
|
33072
33228
|
}
|
|
33073
33229
|
clearSelectionActionText() {
|
|
33074
|
-
return this.resolvePipelineText('clearActionLabel', this.tDynamicFields('
|
|
33230
|
+
return this.resolvePipelineText('clearActionLabel', this.tDynamicFields('inlinePipelineStatus.clearActionLabel', ''), 'pipelineClearActionText');
|
|
33075
33231
|
}
|
|
33076
33232
|
selectionPillsAriaLabel() {
|
|
33077
|
-
return this.resolvePipelineText('selectionPillsAriaLabel', this.tDynamicFields('
|
|
33233
|
+
return this.resolvePipelineText('selectionPillsAriaLabel', this.tDynamicFields('inlinePipelineStatus.selectionPillsAriaLabel', ''), 'pipelineSelectionPillsAriaLabel');
|
|
33078
33234
|
}
|
|
33079
33235
|
showSelectAllAction() {
|
|
33080
33236
|
const md = this.currentMetadata();
|
|
@@ -33204,9 +33360,9 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33204
33360
|
}
|
|
33205
33361
|
optionsGroupAriaLabel() {
|
|
33206
33362
|
if (this.multipleMode()) {
|
|
33207
|
-
return this.resolvePipelineText('optionsGroupAriaLabelMultiple', this.tDynamicFields('
|
|
33363
|
+
return this.resolvePipelineText('optionsGroupAriaLabelMultiple', this.tDynamicFields('inlinePipelineStatus.optionsGroupAriaLabelMultiple', ''), 'pipelineOptionsGroupAriaLabelMultiple');
|
|
33208
33364
|
}
|
|
33209
|
-
return this.resolvePipelineText('optionsGroupAriaLabelSingle', this.tDynamicFields('
|
|
33365
|
+
return this.resolvePipelineText('optionsGroupAriaLabelSingle', this.tDynamicFields('inlinePipelineStatus.optionsGroupAriaLabelSingle', ''), 'pipelineOptionsGroupAriaLabelSingle');
|
|
33210
33366
|
}
|
|
33211
33367
|
optionAriaLabel(option) {
|
|
33212
33368
|
if (!option.subtitle) {
|
|
@@ -33260,7 +33416,7 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33260
33416
|
}
|
|
33261
33417
|
placeholderText() {
|
|
33262
33418
|
const fromMeta = this.resolveFieldLabelFromMetadata(this.currentMetadata());
|
|
33263
|
-
return fromMeta || this.fieldLabelText || this.tDynamicFields('
|
|
33419
|
+
return fromMeta || this.fieldLabelText || this.tDynamicFields('inlinePipelineStatus.placeholder', '');
|
|
33264
33420
|
}
|
|
33265
33421
|
ariaLabel() {
|
|
33266
33422
|
const metadata = this.currentMetadata();
|
|
@@ -33270,7 +33426,7 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33270
33426
|
return `${this.nonEmptyText(metadata.ariaLabel) || this.placeholderText()}: ${this.displayText()}`;
|
|
33271
33427
|
}
|
|
33272
33428
|
emptyStateText() {
|
|
33273
|
-
return this.resolvePipelineText('emptyStateText', this.tDynamicFields('
|
|
33429
|
+
return this.resolvePipelineText('emptyStateText', this.tDynamicFields('inlinePipelineStatus.emptyStateText', ''), 'pipelineEmptyStateText', 'emptyStateText');
|
|
33274
33430
|
}
|
|
33275
33431
|
resolveMultipleMode(metadata) {
|
|
33276
33432
|
if (typeof metadata.multiple === 'boolean')
|
|
@@ -33293,7 +33449,7 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33293
33449
|
return [value];
|
|
33294
33450
|
}
|
|
33295
33451
|
isInteractionBlocked() {
|
|
33296
|
-
return this.
|
|
33452
|
+
return this.isInteractionBlockedByState();
|
|
33297
33453
|
}
|
|
33298
33454
|
toVisualOption(option, index, totalOptions = 0) {
|
|
33299
33455
|
const raw = option;
|
|
@@ -33521,7 +33677,7 @@ class InlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
33521
33677
|
return text;
|
|
33522
33678
|
}
|
|
33523
33679
|
}
|
|
33524
|
-
return this.tDynamicFields('
|
|
33680
|
+
return this.tDynamicFields('inlinePipelineStatus.placeholder', '');
|
|
33525
33681
|
}
|
|
33526
33682
|
recalculateInlineSizeBounds() {
|
|
33527
33683
|
const viewportWidth = typeof window !== 'undefined' ? window.innerWidth : 1280;
|
|
@@ -35509,7 +35665,7 @@ class InlineRelativePeriodComponent extends SimpleBaseSelectComponent {
|
|
|
35509
35665
|
return this.resolveText('emptyStateText', this.tDynamicFields('inlineRelativePeriod.emptyStateText', ''), 'relativePeriodEmptyStateText', 'emptyStateText');
|
|
35510
35666
|
}
|
|
35511
35667
|
isInteractionBlocked() {
|
|
35512
|
-
return this.
|
|
35668
|
+
return this.isInteractionBlockedByState();
|
|
35513
35669
|
}
|
|
35514
35670
|
parseOptionsSource(source) {
|
|
35515
35671
|
if (Array.isArray(source)) {
|
|
@@ -36421,7 +36577,7 @@ class InlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
36421
36577
|
return this.resolveText('emptyStateText', this.tDynamicFields('inlineSentiment.emptyStateText', ''), 'sentimentEmptyStateText', 'emptyStateText');
|
|
36422
36578
|
}
|
|
36423
36579
|
isInteractionBlocked() {
|
|
36424
|
-
return this.
|
|
36580
|
+
return this.isInteractionBlockedByState();
|
|
36425
36581
|
}
|
|
36426
36582
|
parseOptionsSource(source) {
|
|
36427
36583
|
if (Array.isArray(source)) {
|
|
@@ -37430,7 +37586,7 @@ class InlineColorLabelComponent extends SimpleBaseSelectComponent {
|
|
|
37430
37586
|
return this.resolveText('emptyStateText', this.tDynamicFields('inlineColorLabel.emptyStateText', ''), 'colorLabelEmptyStateText', 'emptyStateText');
|
|
37431
37587
|
}
|
|
37432
37588
|
isInteractionBlocked() {
|
|
37433
|
-
return this.
|
|
37589
|
+
return this.isInteractionBlockedByState();
|
|
37434
37590
|
}
|
|
37435
37591
|
parseOptionsSource(source) {
|
|
37436
37592
|
if (Array.isArray(source)) {
|
|
@@ -39415,6 +39571,7 @@ class MaterialChipsComponent extends SimpleBaseSelectComponent {
|
|
|
39415
39571
|
presentationMode = false;
|
|
39416
39572
|
removable = signal(true, ...(ngDevMode ? [{ debugName: "removable" }] : []));
|
|
39417
39573
|
addOnBlur = signal(false, ...(ngDevMode ? [{ debugName: "addOnBlur" }] : []));
|
|
39574
|
+
chipPlaceholder = signal(null, ...(ngDevMode ? [{ debugName: "chipPlaceholder" }] : []));
|
|
39418
39575
|
separatorKeys = [ENTER, COMMA];
|
|
39419
39576
|
asRecord(value) {
|
|
39420
39577
|
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
@@ -39457,6 +39614,9 @@ class MaterialChipsComponent extends SimpleBaseSelectComponent {
|
|
|
39457
39614
|
const target = event.target;
|
|
39458
39615
|
this.onSearch(target instanceof HTMLInputElement ? target.value : '');
|
|
39459
39616
|
}
|
|
39617
|
+
setInputMetadata(metadata) {
|
|
39618
|
+
this.setSelectMetadata(metadata);
|
|
39619
|
+
}
|
|
39460
39620
|
setSelectMetadata(metadata) {
|
|
39461
39621
|
const matMetadata = metadata;
|
|
39462
39622
|
this.devWarnSelectAliases(matMetadata, 'MaterialChipsComponent');
|
|
@@ -39478,6 +39638,9 @@ class MaterialChipsComponent extends SimpleBaseSelectComponent {
|
|
|
39478
39638
|
});
|
|
39479
39639
|
this.removable.set(matMetadata.removable ?? true);
|
|
39480
39640
|
this.addOnBlur.set(matMetadata.addOnBlur ?? false);
|
|
39641
|
+
this.chipPlaceholder.set(typeof matMetadata.placeholder === 'string' && matMetadata.placeholder.trim().length
|
|
39642
|
+
? matMetadata.placeholder
|
|
39643
|
+
: null);
|
|
39481
39644
|
}
|
|
39482
39645
|
errorStateMatcher() {
|
|
39483
39646
|
return getErrorStateMatcherForField(this.metadata());
|
|
@@ -39518,6 +39681,7 @@ class MaterialChipsComponent extends SimpleBaseSelectComponent {
|
|
|
39518
39681
|
[matChipInputSeparatorKeyCodes]="separatorKeys"
|
|
39519
39682
|
[matAutocomplete]="auto"
|
|
39520
39683
|
[required]="metadata()?.required || false"
|
|
39684
|
+
[attr.placeholder]="chipPlaceholder()"
|
|
39521
39685
|
(input)="onSearchInputEvent($event)"
|
|
39522
39686
|
(matChipInputTokenEnd)="onInputTokenEnd($event)"
|
|
39523
39687
|
[matTooltip]="tooltipEnabled() ? errorMessage() : null"
|
|
@@ -39625,6 +39789,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
39625
39789
|
[matChipInputSeparatorKeyCodes]="separatorKeys"
|
|
39626
39790
|
[matAutocomplete]="auto"
|
|
39627
39791
|
[required]="metadata()?.required || false"
|
|
39792
|
+
[attr.placeholder]="chipPlaceholder()"
|
|
39628
39793
|
(input)="onSearchInputEvent($event)"
|
|
39629
39794
|
(matChipInputTokenEnd)="onInputTokenEnd($event)"
|
|
39630
39795
|
[matTooltip]="tooltipEnabled() ? errorMessage() : null"
|
|
@@ -40127,6 +40292,7 @@ class MaterialAvatarComponent {
|
|
|
40127
40292
|
defaultIcon;
|
|
40128
40293
|
// Visual props
|
|
40129
40294
|
appearanceTick = signal(0, ...(ngDevMode ? [{ debugName: "appearanceTick" }] : []));
|
|
40295
|
+
contentTick = signal(0, ...(ngDevMode ? [{ debugName: "contentTick" }] : []));
|
|
40130
40296
|
_themeColor = 'primary';
|
|
40131
40297
|
_rounded = 'full';
|
|
40132
40298
|
_size = 'medium';
|
|
@@ -40224,6 +40390,7 @@ class MaterialAvatarComponent {
|
|
|
40224
40390
|
}, ...(ngDevMode ? [{ debugName: "_syncControlValue" }] : []));
|
|
40225
40391
|
// Resolved sources
|
|
40226
40392
|
resolvedImageSrc = computed(() => {
|
|
40393
|
+
this.contentTick();
|
|
40227
40394
|
// Priority: explicit input > form control value > metadata.defaultValue
|
|
40228
40395
|
const byInput = this.normalizeImageUrl(this.imageSrc);
|
|
40229
40396
|
if (byInput)
|
|
@@ -40261,6 +40428,7 @@ class MaterialAvatarComponent {
|
|
|
40261
40428
|
// Host classes
|
|
40262
40429
|
componentCssClasses = computed(() => {
|
|
40263
40430
|
this.appearanceTick();
|
|
40431
|
+
this.contentTick();
|
|
40264
40432
|
const classes = ['pfx-avatar'];
|
|
40265
40433
|
classes.push(`theme-${this.themeColor || 'primary'}`);
|
|
40266
40434
|
classes.push(`rounded-${this.rounded || 'full'}`);
|
|
@@ -40298,6 +40466,7 @@ class MaterialAvatarComponent {
|
|
|
40298
40466
|
}, ...(ngDevMode ? [{ debugName: "resolvedStyle" }] : []));
|
|
40299
40467
|
// Accessible label fallback
|
|
40300
40468
|
computedAriaLabel = computed(() => {
|
|
40469
|
+
this.contentTick();
|
|
40301
40470
|
const explicit = (this.ariaLabel || '').trim();
|
|
40302
40471
|
if (explicit)
|
|
40303
40472
|
return explicit;
|
|
@@ -40316,6 +40485,12 @@ class MaterialAvatarComponent {
|
|
|
40316
40485
|
return `Avatar icon ${icon}`;
|
|
40317
40486
|
return 'Avatar';
|
|
40318
40487
|
}, ...(ngDevMode ? [{ debugName: "computedAriaLabel" }] : []));
|
|
40488
|
+
resolvedHint = computed(() => {
|
|
40489
|
+
const meta = this.metadata();
|
|
40490
|
+
const hint = meta?.hint;
|
|
40491
|
+
return typeof hint === 'string' && hint.trim().length ? hint.trim() : '';
|
|
40492
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedHint" }] : []));
|
|
40493
|
+
hintId = computed(() => (this.resolvedHint() ? `${this.componentId()}-hint` : null), ...(ngDevMode ? [{ debugName: "hintId" }] : []));
|
|
40319
40494
|
// Helpers for icon resolution
|
|
40320
40495
|
resolveIconKind(i) {
|
|
40321
40496
|
if (!i)
|
|
@@ -40398,9 +40573,16 @@ class MaterialAvatarComponent {
|
|
|
40398
40573
|
shouldShowDefaultIcon() {
|
|
40399
40574
|
return !this.hasImage() && !this.hasExplicitIcon() && !this.hasInitials() && this.hasDefaultIcon();
|
|
40400
40575
|
}
|
|
40401
|
-
hasExplicitIcon = computed(() =>
|
|
40402
|
-
|
|
40576
|
+
hasExplicitIcon = computed(() => {
|
|
40577
|
+
this.contentTick();
|
|
40578
|
+
return this.resolveIconKind(this.icon) !== null;
|
|
40579
|
+
}, ...(ngDevMode ? [{ debugName: "hasExplicitIcon" }] : []));
|
|
40580
|
+
hasDefaultIcon = computed(() => {
|
|
40581
|
+
this.contentTick();
|
|
40582
|
+
return this.resolveIconKind(this.defaultIcon) !== null;
|
|
40583
|
+
}, ...(ngDevMode ? [{ debugName: "hasDefaultIcon" }] : []));
|
|
40403
40584
|
normalizedInitials() {
|
|
40585
|
+
this.contentTick();
|
|
40404
40586
|
// Prioritize explicit initials
|
|
40405
40587
|
const explicitInitials = (this.initials || '').trim();
|
|
40406
40588
|
if (explicitInitials) {
|
|
@@ -40440,6 +40622,7 @@ class MaterialAvatarComponent {
|
|
|
40440
40622
|
}
|
|
40441
40623
|
// ... (rest of methods)
|
|
40442
40624
|
iconName() {
|
|
40625
|
+
this.contentTick();
|
|
40443
40626
|
// Used in template inside specific blocks.
|
|
40444
40627
|
// If showIcon() is true => icon is explicit.
|
|
40445
40628
|
// If showDefaultIcon() is true => icon is default.
|
|
@@ -40463,6 +40646,7 @@ class MaterialAvatarComponent {
|
|
|
40463
40646
|
return null;
|
|
40464
40647
|
}
|
|
40465
40648
|
iconSvgSafe() {
|
|
40649
|
+
this.contentTick();
|
|
40466
40650
|
// Similar logic for SVG
|
|
40467
40651
|
const source = this.hasExplicitIcon() ? this.icon : this.defaultIcon;
|
|
40468
40652
|
const kind = this.resolveIconKind(source);
|
|
@@ -40486,6 +40670,7 @@ class MaterialAvatarComponent {
|
|
|
40486
40670
|
return null;
|
|
40487
40671
|
}
|
|
40488
40672
|
iconFontClass() {
|
|
40673
|
+
this.contentTick();
|
|
40489
40674
|
const source = this.hasExplicitIcon() ? this.icon : this.defaultIcon;
|
|
40490
40675
|
const kind = this.resolveIconKind(source);
|
|
40491
40676
|
if (kind === 'font') {
|
|
@@ -40493,66 +40678,78 @@ class MaterialAvatarComponent {
|
|
|
40493
40678
|
}
|
|
40494
40679
|
return null;
|
|
40495
40680
|
}
|
|
40681
|
+
ngOnChanges(_changes) {
|
|
40682
|
+
this.contentTick.update((value) => value + 1);
|
|
40683
|
+
}
|
|
40496
40684
|
// Allow DynamicFieldLoader to apply metadata extras
|
|
40497
40685
|
setInputMetadata(meta) {
|
|
40686
|
+
const previousMeta = this.metadata();
|
|
40498
40687
|
const typedMeta = meta;
|
|
40499
40688
|
this.metadata.set(typedMeta);
|
|
40500
40689
|
const extras = typedMeta?.extra || {};
|
|
40690
|
+
const hadPrevExtra = (key) => !!previousMeta?.extra &&
|
|
40691
|
+
Object.prototype.hasOwnProperty.call(previousMeta.extra, key);
|
|
40692
|
+
const hadPrevRoot = (key) => !!previousMeta &&
|
|
40693
|
+
Object.prototype.hasOwnProperty.call(previousMeta, key);
|
|
40694
|
+
const resolveExtra = (key, rootValue) => {
|
|
40695
|
+
if (extras[key] !== undefined) {
|
|
40696
|
+
return extras[key];
|
|
40697
|
+
}
|
|
40698
|
+
if (rootValue !== undefined) {
|
|
40699
|
+
return rootValue;
|
|
40700
|
+
}
|
|
40701
|
+
if (hadPrevExtra(String(key)) || hadPrevRoot(String(key))) {
|
|
40702
|
+
return undefined;
|
|
40703
|
+
}
|
|
40704
|
+
return undefined;
|
|
40705
|
+
};
|
|
40501
40706
|
// Known keys: imageSrc, imageAlt, initials, name, icon, themeColor, rounded, size, fillMode, border, tooltip, ariaLabel
|
|
40502
|
-
|
|
40503
|
-
|
|
40504
|
-
|
|
40505
|
-
|
|
40506
|
-
|
|
40507
|
-
|
|
40508
|
-
|
|
40509
|
-
|
|
40510
|
-
|
|
40511
|
-
|
|
40512
|
-
|
|
40513
|
-
|
|
40514
|
-
|
|
40515
|
-
|
|
40516
|
-
|
|
40517
|
-
|
|
40518
|
-
|
|
40519
|
-
|
|
40520
|
-
|
|
40521
|
-
|
|
40522
|
-
|
|
40523
|
-
|
|
40524
|
-
|
|
40525
|
-
|
|
40526
|
-
|
|
40527
|
-
this.border = !!extras.border;
|
|
40528
|
-
if (extras.sizePx !== undefined)
|
|
40529
|
-
this.sizePx = typeof extras.sizePx === 'number' ? extras.sizePx : Number(extras.sizePx);
|
|
40530
|
-
if (extras.sizeCss !== undefined)
|
|
40531
|
-
this.sizeCss = extras.sizeCss;
|
|
40532
|
-
if (extras.tooltip !== undefined)
|
|
40533
|
-
this.tooltip = extras.tooltip;
|
|
40534
|
-
if (extras.ariaLabel !== undefined)
|
|
40535
|
-
this.ariaLabel = extras.ariaLabel;
|
|
40536
|
-
if (extras.class !== undefined)
|
|
40537
|
-
this.class = extras.class;
|
|
40538
|
-
if (extras.style !== undefined) {
|
|
40539
|
-
if (typeof extras.style === 'string') {
|
|
40707
|
+
this.imageSrc = resolveExtra('imageSrc', typedMeta?.imageSrc !== undefined ? String(typedMeta.imageSrc) : undefined);
|
|
40708
|
+
this.imageAlt = resolveExtra('imageAlt', typedMeta?.imageAlt);
|
|
40709
|
+
this.initials = resolveExtra('initials');
|
|
40710
|
+
this.name = resolveExtra('name');
|
|
40711
|
+
this.icon = resolveExtra('icon');
|
|
40712
|
+
this.defaultIcon = resolveExtra('defaultIcon');
|
|
40713
|
+
this.themeColor = resolveExtra('themeColor');
|
|
40714
|
+
this.rounded = resolveExtra('rounded');
|
|
40715
|
+
this.size = resolveExtra('size');
|
|
40716
|
+
this.fillMode = resolveExtra('fillMode');
|
|
40717
|
+
this.border = !!resolveExtra('border');
|
|
40718
|
+
const sizePxValue = resolveExtra('sizePx');
|
|
40719
|
+
this.sizePx =
|
|
40720
|
+
sizePxValue === undefined
|
|
40721
|
+
? undefined
|
|
40722
|
+
: typeof sizePxValue === 'number'
|
|
40723
|
+
? sizePxValue
|
|
40724
|
+
: Number(sizePxValue);
|
|
40725
|
+
this.sizeCss = resolveExtra('sizeCss');
|
|
40726
|
+
this.tooltip = resolveExtra('tooltip');
|
|
40727
|
+
this.ariaLabel = resolveExtra('ariaLabel');
|
|
40728
|
+
this.class = resolveExtra('class');
|
|
40729
|
+
const styleValue = resolveExtra('style');
|
|
40730
|
+
if (styleValue !== undefined) {
|
|
40731
|
+
if (typeof styleValue === 'string') {
|
|
40540
40732
|
try {
|
|
40541
|
-
const obj = JSON.parse(
|
|
40733
|
+
const obj = JSON.parse(styleValue);
|
|
40542
40734
|
if (obj && typeof obj === 'object')
|
|
40543
40735
|
this.style = obj;
|
|
40544
40736
|
}
|
|
40545
40737
|
catch {
|
|
40546
40738
|
// ignore invalid JSON
|
|
40739
|
+
this.style = undefined;
|
|
40547
40740
|
}
|
|
40548
40741
|
}
|
|
40549
|
-
else if (typeof
|
|
40550
|
-
this.style =
|
|
40742
|
+
else if (typeof styleValue === 'object') {
|
|
40743
|
+
this.style = styleValue;
|
|
40551
40744
|
}
|
|
40552
40745
|
}
|
|
40746
|
+
else if (hadPrevExtra('style')) {
|
|
40747
|
+
this.style = undefined;
|
|
40748
|
+
}
|
|
40749
|
+
this.contentTick.update((value) => value + 1);
|
|
40553
40750
|
}
|
|
40554
40751
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MaterialAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
40555
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: MaterialAvatarComponent, isStandalone: true, selector: "pdx-material-avatar", inputs: { imageSrc: "imageSrc", imageAlt: "imageAlt", initials: "initials", name: "name", icon: "icon", defaultIcon: "defaultIcon", themeColor: "themeColor", rounded: "rounded", size: "size", fillMode: "fillMode", border: "border", sizePx: "sizePx", sizeCss: "sizeCss", tooltip: "tooltip", ariaLabel: "ariaLabel", readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode", class: "class", style: "style" }, outputs: { imageError: "imageError" }, host: { properties: { "class": "componentCssClasses()", "style.display": "visible === false ? \"none\" : null", "attr.aria-hidden": "visible ? null : \"true\"", "attr.role": "\"img\"", "attr.aria-label": "computedAriaLabel() || null", "attr.data-field-type": "\"avatar\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()", "class.praxis-disabled": "disabledMode === true", "class.praxis-readonly": "readonlyMode === true", "class.presentation-mode": "presentationMode === true" } }, ngImport: i0, template: `
|
|
40752
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: MaterialAvatarComponent, isStandalone: true, selector: "pdx-material-avatar", inputs: { imageSrc: "imageSrc", imageAlt: "imageAlt", initials: "initials", name: "name", icon: "icon", defaultIcon: "defaultIcon", themeColor: "themeColor", rounded: "rounded", size: "size", fillMode: "fillMode", border: "border", sizePx: "sizePx", sizeCss: "sizeCss", tooltip: "tooltip", ariaLabel: "ariaLabel", readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode", class: "class", style: "style" }, outputs: { imageError: "imageError" }, host: { properties: { "class": "componentCssClasses()", "style.display": "visible === false ? \"none\" : null", "attr.aria-hidden": "visible ? null : \"true\"", "attr.role": "\"img\"", "attr.aria-label": "computedAriaLabel() || null", "attr.aria-describedby": "hintId()", "attr.data-field-type": "\"avatar\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()", "class.praxis-disabled": "disabledMode === true", "class.praxis-readonly": "readonlyMode === true", "class.presentation-mode": "presentationMode === true" } }, usesOnChanges: true, ngImport: i0, template: `
|
|
40556
40753
|
<span class="pfx-avatar__inner"
|
|
40557
40754
|
[attr.aria-hidden]="presentationMode ? 'true' : null"
|
|
40558
40755
|
[ngStyle]="resolvedStyle()"
|
|
@@ -40589,7 +40786,10 @@ class MaterialAvatarComponent {
|
|
|
40589
40786
|
<span class="pfx-avatar__custom"><ng-content></ng-content></span>
|
|
40590
40787
|
}
|
|
40591
40788
|
</span>
|
|
40592
|
-
|
|
40789
|
+
@if (resolvedHint()) {
|
|
40790
|
+
<span class="pfx-avatar__hint" [attr.id]="hintId()">{{ resolvedHint() }}</span>
|
|
40791
|
+
}
|
|
40792
|
+
`, isInline: true, styles: [":host{--pfx-avatar-size: 40px;--pfx-avatar-radius-full: 9999px;--pfx-avatar-radius-lg: 16px;--pfx-avatar-radius-md: 12px;--pfx-avatar-radius-sm: 8px;--pfx-avatar-border-w: 1px;--pfx-avatar-border-color: var(--md-sys-color-outline-variant);--pfx-avatar-bg: var(--md-sys-color-primary);--pfx-avatar-fg: var(--md-sys-color-on-primary);display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.pfx-avatar__inner{position:relative;box-sizing:border-box;width:var(--pfx-avatar-size);height:var(--pfx-avatar-size);border-radius:var(--_pfx-avatar-radius, var(--pfx-avatar-radius-full));display:inline-flex;align-items:center;justify-content:center;overflow:hidden;-webkit-user-select:none;user-select:none;line-height:1;background:var(--_pfx-avatar-bg, var(--pfx-avatar-bg));color:var(--_pfx-avatar-fg, var(--pfx-avatar-fg));border:var(--_pfx-avatar-border, 0)}:host(.fill-outline) .pfx-avatar__inner{background:transparent;color:var(--_pfx-avatar-fg, var(--pfx-avatar-fg));border:var(--pfx-avatar-border-w) solid var(--pfx-avatar-border-color)}:host(.has-border) .pfx-avatar__inner{border:var(--pfx-avatar-border-w) solid var(--pfx-avatar-border-color)}:host(.size-xsmall){--pfx-avatar-size: 20px}:host(.size-small){--pfx-avatar-size: 24px}:host(.size-medium){--pfx-avatar-size: 40px}:host(.size-large){--pfx-avatar-size: 56px}:host(.size-xlarge){--pfx-avatar-size: 72px}:host(.size-xxlarge){--pfx-avatar-size: 96px}:host(.size-none){--pfx-avatar-size: auto}:host(.rounded-full){--_pfx-avatar-radius: var(--pfx-avatar-radius-full)}:host(.rounded-large){--_pfx-avatar-radius: var(--pfx-avatar-radius-lg)}:host(.rounded-medium){--_pfx-avatar-radius: var(--pfx-avatar-radius-md)}:host(.rounded-small){--_pfx-avatar-radius: var(--pfx-avatar-radius-sm)}:host(.rounded-none){--_pfx-avatar-radius: 0}.pfx-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.pfx-avatar__icon,.pfx-avatar__icon-svg,.pfx-avatar__icon-font{font-size:calc(var(--pfx-avatar-size) * .6);width:calc(var(--pfx-avatar-size) * .6);height:calc(var(--pfx-avatar-size) * .6);display:inline-flex;align-items:center;justify-content:center}.pfx-avatar__initials{font-weight:600;letter-spacing:.02em;font-size:calc(var(--pfx-avatar-size) * .4);line-height:1}.pfx-avatar__custom{display:inline-flex;align-items:center;justify-content:center;font-size:calc(var(--pfx-avatar-size) * .6);line-height:1;width:100%;height:100%}.pfx-avatar__custom img{width:100%;height:100%;object-fit:cover;display:block}.pfx-avatar__hint{display:block;margin-top:6px;color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .6));font-size:12px;line-height:1.4}:host-context(.pfx-field-shell){display:flex;flex-direction:column;width:100%;align-items:flex-start;justify-content:flex-start;padding:6px 0;min-height:var( --pfx-field-shell-min-height, calc(var(--pfx-field-min-height, 56px) + var(--pfx-subscript-min-h, 22px)) )}:host-context(.pfx-field-shell) .pfx-avatar__inner{flex-shrink:0}:host(.theme-primary){--_pfx-avatar-bg: var(--md-sys-color-primary);--_pfx-avatar-fg: var(--md-sys-color-on-primary)}:host(.theme-secondary){--_pfx-avatar-bg: var(--md-sys-color-secondary);--_pfx-avatar-fg: var(--md-sys-color-on-secondary)}:host(.theme-tertiary){--_pfx-avatar-bg: var(--md-sys-color-tertiary);--_pfx-avatar-fg: var(--md-sys-color-on-tertiary)}:host(.theme-base){--_pfx-avatar-bg: var(--md-sys-color-surface-variant);--_pfx-avatar-fg: var(--md-sys-color-on-surface-variant)}:host(.theme-info){--_pfx-avatar-bg: var(--md-sys-color-primary-container);--_pfx-avatar-fg: var(--md-sys-color-on-primary-container)}:host(.theme-success){--_pfx-avatar-bg: var(--md-sys-color-secondary-container);--_pfx-avatar-fg: var(--md-sys-color-on-secondary-container)}:host(.theme-warning){--_pfx-avatar-bg: var(--md-sys-color-tertiary-container);--_pfx-avatar-fg: var(--md-sys-color-on-tertiary-container)}:host(.theme-error){--_pfx-avatar-bg: var(--md-sys-color-error-container);--_pfx-avatar-fg: var(--md-sys-color-on-error-container)}:host(.theme-dark){--_pfx-avatar-bg: var(--md-sys-color-surface);--_pfx-avatar-fg: var(--md-sys-color-on-surface)}:host(.theme-light){--_pfx-avatar-bg: var(--md-sys-color-surface);--_pfx-avatar-fg: var(--md-sys-color-on-surface)}:host(.theme-inverse){--_pfx-avatar-bg: var(--md-sys-color-on-surface);--_pfx-avatar-fg: var(--md-sys-color-surface)}:host(.theme-none){--_pfx-avatar-bg: transparent;--_pfx-avatar-fg: inherit}:host(.fill-none) .pfx-avatar__inner{background:none;color:inherit;border:0}:host(.size-none) .pfx-avatar__inner{width:auto;height:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }] });
|
|
40593
40793
|
}
|
|
40594
40794
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MaterialAvatarComponent, decorators: [{
|
|
40595
40795
|
type: Component,
|
|
@@ -40599,6 +40799,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
40599
40799
|
'[attr.aria-hidden]': 'visible ? null : "true"',
|
|
40600
40800
|
'[attr.role]': '"img"',
|
|
40601
40801
|
'[attr.aria-label]': 'computedAriaLabel() || null',
|
|
40802
|
+
'[attr.aria-describedby]': 'hintId()',
|
|
40602
40803
|
'[attr.data-field-type]': '"avatar"',
|
|
40603
40804
|
'[attr.data-field-name]': 'metadata()?.name',
|
|
40604
40805
|
'[attr.data-component-id]': 'componentId()',
|
|
@@ -40642,7 +40843,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
40642
40843
|
<span class="pfx-avatar__custom"><ng-content></ng-content></span>
|
|
40643
40844
|
}
|
|
40644
40845
|
</span>
|
|
40645
|
-
|
|
40846
|
+
@if (resolvedHint()) {
|
|
40847
|
+
<span class="pfx-avatar__hint" [attr.id]="hintId()">{{ resolvedHint() }}</span>
|
|
40848
|
+
}
|
|
40849
|
+
`, styles: [":host{--pfx-avatar-size: 40px;--pfx-avatar-radius-full: 9999px;--pfx-avatar-radius-lg: 16px;--pfx-avatar-radius-md: 12px;--pfx-avatar-radius-sm: 8px;--pfx-avatar-border-w: 1px;--pfx-avatar-border-color: var(--md-sys-color-outline-variant);--pfx-avatar-bg: var(--md-sys-color-primary);--pfx-avatar-fg: var(--md-sys-color-on-primary);display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.pfx-avatar__inner{position:relative;box-sizing:border-box;width:var(--pfx-avatar-size);height:var(--pfx-avatar-size);border-radius:var(--_pfx-avatar-radius, var(--pfx-avatar-radius-full));display:inline-flex;align-items:center;justify-content:center;overflow:hidden;-webkit-user-select:none;user-select:none;line-height:1;background:var(--_pfx-avatar-bg, var(--pfx-avatar-bg));color:var(--_pfx-avatar-fg, var(--pfx-avatar-fg));border:var(--_pfx-avatar-border, 0)}:host(.fill-outline) .pfx-avatar__inner{background:transparent;color:var(--_pfx-avatar-fg, var(--pfx-avatar-fg));border:var(--pfx-avatar-border-w) solid var(--pfx-avatar-border-color)}:host(.has-border) .pfx-avatar__inner{border:var(--pfx-avatar-border-w) solid var(--pfx-avatar-border-color)}:host(.size-xsmall){--pfx-avatar-size: 20px}:host(.size-small){--pfx-avatar-size: 24px}:host(.size-medium){--pfx-avatar-size: 40px}:host(.size-large){--pfx-avatar-size: 56px}:host(.size-xlarge){--pfx-avatar-size: 72px}:host(.size-xxlarge){--pfx-avatar-size: 96px}:host(.size-none){--pfx-avatar-size: auto}:host(.rounded-full){--_pfx-avatar-radius: var(--pfx-avatar-radius-full)}:host(.rounded-large){--_pfx-avatar-radius: var(--pfx-avatar-radius-lg)}:host(.rounded-medium){--_pfx-avatar-radius: var(--pfx-avatar-radius-md)}:host(.rounded-small){--_pfx-avatar-radius: var(--pfx-avatar-radius-sm)}:host(.rounded-none){--_pfx-avatar-radius: 0}.pfx-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.pfx-avatar__icon,.pfx-avatar__icon-svg,.pfx-avatar__icon-font{font-size:calc(var(--pfx-avatar-size) * .6);width:calc(var(--pfx-avatar-size) * .6);height:calc(var(--pfx-avatar-size) * .6);display:inline-flex;align-items:center;justify-content:center}.pfx-avatar__initials{font-weight:600;letter-spacing:.02em;font-size:calc(var(--pfx-avatar-size) * .4);line-height:1}.pfx-avatar__custom{display:inline-flex;align-items:center;justify-content:center;font-size:calc(var(--pfx-avatar-size) * .6);line-height:1;width:100%;height:100%}.pfx-avatar__custom img{width:100%;height:100%;object-fit:cover;display:block}.pfx-avatar__hint{display:block;margin-top:6px;color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .6));font-size:12px;line-height:1.4}:host-context(.pfx-field-shell){display:flex;flex-direction:column;width:100%;align-items:flex-start;justify-content:flex-start;padding:6px 0;min-height:var( --pfx-field-shell-min-height, calc(var(--pfx-field-min-height, 56px) + var(--pfx-subscript-min-h, 22px)) )}:host-context(.pfx-field-shell) .pfx-avatar__inner{flex-shrink:0}:host(.theme-primary){--_pfx-avatar-bg: var(--md-sys-color-primary);--_pfx-avatar-fg: var(--md-sys-color-on-primary)}:host(.theme-secondary){--_pfx-avatar-bg: var(--md-sys-color-secondary);--_pfx-avatar-fg: var(--md-sys-color-on-secondary)}:host(.theme-tertiary){--_pfx-avatar-bg: var(--md-sys-color-tertiary);--_pfx-avatar-fg: var(--md-sys-color-on-tertiary)}:host(.theme-base){--_pfx-avatar-bg: var(--md-sys-color-surface-variant);--_pfx-avatar-fg: var(--md-sys-color-on-surface-variant)}:host(.theme-info){--_pfx-avatar-bg: var(--md-sys-color-primary-container);--_pfx-avatar-fg: var(--md-sys-color-on-primary-container)}:host(.theme-success){--_pfx-avatar-bg: var(--md-sys-color-secondary-container);--_pfx-avatar-fg: var(--md-sys-color-on-secondary-container)}:host(.theme-warning){--_pfx-avatar-bg: var(--md-sys-color-tertiary-container);--_pfx-avatar-fg: var(--md-sys-color-on-tertiary-container)}:host(.theme-error){--_pfx-avatar-bg: var(--md-sys-color-error-container);--_pfx-avatar-fg: var(--md-sys-color-on-error-container)}:host(.theme-dark){--_pfx-avatar-bg: var(--md-sys-color-surface);--_pfx-avatar-fg: var(--md-sys-color-on-surface)}:host(.theme-light){--_pfx-avatar-bg: var(--md-sys-color-surface);--_pfx-avatar-fg: var(--md-sys-color-on-surface)}:host(.theme-inverse){--_pfx-avatar-bg: var(--md-sys-color-on-surface);--_pfx-avatar-fg: var(--md-sys-color-surface)}:host(.theme-none){--_pfx-avatar-bg: transparent;--_pfx-avatar-fg: inherit}:host(.fill-none) .pfx-avatar__inner{background:none;color:inherit;border:0}:host(.size-none) .pfx-avatar__inner{width:auto;height:auto}\n"] }]
|
|
40646
40850
|
}], propDecorators: { imageSrc: [{
|
|
40647
40851
|
type: Input
|
|
40648
40852
|
}], imageAlt: [{
|
|
@@ -41690,12 +41894,28 @@ class MaterialFileUploadComponent extends SimpleBaseInputComponent {
|
|
|
41690
41894
|
const { placeholder: _placeholder, ...rest } = metadata;
|
|
41691
41895
|
this.setMetadata(rest);
|
|
41692
41896
|
}
|
|
41897
|
+
fileAccept() {
|
|
41898
|
+
const accept = this.metadataRecord()?.['accept'];
|
|
41899
|
+
return typeof accept === 'string' && accept.trim().length ? accept.trim() : null;
|
|
41900
|
+
}
|
|
41901
|
+
allowsMultiple() {
|
|
41902
|
+
return this.metadataRecord()?.['multiple'] === true;
|
|
41903
|
+
}
|
|
41904
|
+
isInteractionDisabled() {
|
|
41905
|
+
return this.disabledMode || this.readonlyMode || this.presentationMode;
|
|
41906
|
+
}
|
|
41693
41907
|
/**
|
|
41694
41908
|
* CSS classes specific to the file upload wrapper.
|
|
41695
41909
|
*/
|
|
41696
41910
|
getSpecificCssClasses() {
|
|
41697
41911
|
return ['pdx-material-file-upload'];
|
|
41698
41912
|
}
|
|
41913
|
+
metadataRecord() {
|
|
41914
|
+
const metadata = this.metadata();
|
|
41915
|
+
return metadata && typeof metadata === 'object'
|
|
41916
|
+
? metadata
|
|
41917
|
+
: null;
|
|
41918
|
+
}
|
|
41699
41919
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MaterialFileUploadComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
41700
41920
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: MaterialFileUploadComponent, isStandalone: true, selector: "pdx-material-file-upload", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode" }, host: { properties: { "class": "componentCssClasses()", "class.praxis-disabled": "disabledMode", "style.display": "visible ? null : \"none\"", "attr.aria-hidden": "visible ? null : \"true\"", "attr.data-field-type": "\"file-upload\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
|
|
41701
41921
|
{
|
|
@@ -41715,6 +41935,9 @@ class MaterialFileUploadComponent extends SimpleBaseInputComponent {
|
|
|
41715
41935
|
[attr.id]="componentId()"
|
|
41716
41936
|
type="file"
|
|
41717
41937
|
(change)="onFileSelected($event)"
|
|
41938
|
+
[attr.accept]="fileAccept()"
|
|
41939
|
+
[attr.multiple]="allowsMultiple() ? '' : null"
|
|
41940
|
+
[disabled]="isInteractionDisabled()"
|
|
41718
41941
|
[attr.aria-disabled]="disabledMode ? 'true' : null"
|
|
41719
41942
|
/>
|
|
41720
41943
|
@if (hasValidationError()) {
|
|
@@ -41744,6 +41967,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
41744
41967
|
[attr.id]="componentId()"
|
|
41745
41968
|
type="file"
|
|
41746
41969
|
(change)="onFileSelected($event)"
|
|
41970
|
+
[attr.accept]="fileAccept()"
|
|
41971
|
+
[attr.multiple]="allowsMultiple() ? '' : null"
|
|
41972
|
+
[disabled]="isInteractionDisabled()"
|
|
41747
41973
|
[attr.aria-disabled]="disabledMode ? 'true' : null"
|
|
41748
41974
|
/>
|
|
41749
41975
|
@if (hasValidationError()) {
|
|
@@ -44335,11 +44561,13 @@ class PdxColorPickerComponent extends SimpleBaseInputComponent {
|
|
|
44335
44561
|
current = signal(null, ...(ngDevMode ? [{ debugName: "current" }] : []));
|
|
44336
44562
|
draft = signal(null, ...(ngDevMode ? [{ debugName: "draft" }] : []));
|
|
44337
44563
|
draftAlpha = signal(1, ...(ngDevMode ? [{ debugName: "draftAlpha" }] : []));
|
|
44564
|
+
configTick = signal(0, ...(ngDevMode ? [{ debugName: "configTick" }] : []));
|
|
44338
44565
|
panelWidthPx = 340;
|
|
44339
44566
|
constructor(bottomSheet) {
|
|
44340
44567
|
super();
|
|
44341
44568
|
this.bottomSheet = bottomSheet;
|
|
44342
44569
|
effect(() => {
|
|
44570
|
+
this.configTick();
|
|
44343
44571
|
this.panelWidthPx = this.coerceWidth(this.popupSettings?.width ?? 340);
|
|
44344
44572
|
});
|
|
44345
44573
|
// React to metadata changes to keep inputs in sync
|
|
@@ -44418,8 +44646,12 @@ class PdxColorPickerComponent extends SimpleBaseInputComponent {
|
|
|
44418
44646
|
this.visible = !!md.visible;
|
|
44419
44647
|
if (typeof md.presentationMode === 'boolean')
|
|
44420
44648
|
this.presentationMode = !!md.presentationMode;
|
|
44649
|
+
this.configTick.update((value) => value + 1);
|
|
44421
44650
|
});
|
|
44422
44651
|
}
|
|
44652
|
+
ngOnChanges(_changes) {
|
|
44653
|
+
this.configTick.update((value) => value + 1);
|
|
44654
|
+
}
|
|
44423
44655
|
resolveClearButtonConfig(md) {
|
|
44424
44656
|
const metadata = md && typeof md === 'object' && !Array.isArray(md) ? md : {};
|
|
44425
44657
|
const cfg = metadata.clearButton;
|
|
@@ -44534,8 +44766,14 @@ class PdxColorPickerComponent extends SimpleBaseInputComponent {
|
|
|
44534
44766
|
onClose() { this.close.emit(); }
|
|
44535
44767
|
// Views logic
|
|
44536
44768
|
selectedTabIndex = signal(0, ...(ngDevMode ? [{ debugName: "selectedTabIndex" }] : []));
|
|
44537
|
-
showGradient = computed(() =>
|
|
44538
|
-
|
|
44769
|
+
showGradient = computed(() => {
|
|
44770
|
+
this.configTick();
|
|
44771
|
+
return this.views.includes('gradient');
|
|
44772
|
+
}, ...(ngDevMode ? [{ debugName: "showGradient" }] : []));
|
|
44773
|
+
showPalette = computed(() => {
|
|
44774
|
+
this.configTick();
|
|
44775
|
+
return this.views.includes('palette');
|
|
44776
|
+
}, ...(ngDevMode ? [{ debugName: "showPalette" }] : []));
|
|
44539
44777
|
onTabIndexChange(i) {
|
|
44540
44778
|
this.selectedTabIndex.set(i);
|
|
44541
44779
|
const v = this.views[i] || 'gradient';
|
|
@@ -44543,7 +44781,10 @@ class PdxColorPickerComponent extends SimpleBaseInputComponent {
|
|
|
44543
44781
|
this.activeViewChange.emit(v);
|
|
44544
44782
|
}
|
|
44545
44783
|
// Draft preview strings
|
|
44546
|
-
draftPreview = computed(() =>
|
|
44784
|
+
draftPreview = computed(() => {
|
|
44785
|
+
this.configTick();
|
|
44786
|
+
return this.toFormat(this.draft(), this.format, this.draftAlpha());
|
|
44787
|
+
}, ...(ngDevMode ? [{ debugName: "draftPreview" }] : []));
|
|
44547
44788
|
draftSolidHex = computed(() => this.toHex(this.draft()) || this.defaultHex(), ...(ngDevMode ? [{ debugName: "draftSolidHex" }] : []));
|
|
44548
44789
|
draftOpacity = computed(() => this.draftAlpha(), ...(ngDevMode ? [{ debugName: "draftOpacity" }] : []));
|
|
44549
44790
|
// Preview swatch background for input prefix
|
|
@@ -44566,6 +44807,7 @@ class PdxColorPickerComponent extends SimpleBaseInputComponent {
|
|
|
44566
44807
|
customColors = signal([], ...(ngDevMode ? [{ debugName: "customColors" }] : []));
|
|
44567
44808
|
recentColors = signal([], ...(ngDevMode ? [{ debugName: "recentColors" }] : []));
|
|
44568
44809
|
paletteColors = computed(() => {
|
|
44810
|
+
this.configTick();
|
|
44569
44811
|
const base = this.buildPaletteColors(this.paletteSettings);
|
|
44570
44812
|
const extra = this.customColors();
|
|
44571
44813
|
// dedupe (case-insensitive)
|
|
@@ -44932,7 +45174,7 @@ class PdxColorPickerComponent extends SimpleBaseInputComponent {
|
|
|
44932
45174
|
useExisting: forwardRef(() => PdxColorPickerComponent),
|
|
44933
45175
|
multi: true,
|
|
44934
45176
|
},
|
|
44935
|
-
], viewQueries: [{ propertyName: "toggleBtn", first: true, predicate: ["toggleBtn"], descendants: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
45177
|
+
], viewQueries: [{ propertyName: "toggleBtn", first: true, predicate: ["toggleBtn"], descendants: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
44936
45178
|
<mat-form-field
|
|
44937
45179
|
[appearance]="materialAppearance()"
|
|
44938
45180
|
[color]="materialColor()"
|
|
@@ -45599,6 +45841,9 @@ class MaterialTransferListComponent extends SimpleBaseSelectComponent {
|
|
|
45599
45841
|
this.updateListsFromValue();
|
|
45600
45842
|
});
|
|
45601
45843
|
}
|
|
45844
|
+
setInputMetadata(metadata) {
|
|
45845
|
+
this.setSelectMetadata(metadata);
|
|
45846
|
+
}
|
|
45602
45847
|
setSelectMetadata(metadata) {
|
|
45603
45848
|
const source = metadata.transferOptions ?? metadata.options;
|
|
45604
45849
|
const mapped = source?.map((o) => ({
|
|
@@ -45861,7 +46106,11 @@ class MaterialTransferListComponent extends SimpleBaseSelectComponent {
|
|
|
45861
46106
|
</mat-selection-list>
|
|
45862
46107
|
</div>
|
|
45863
46108
|
</div>
|
|
45864
|
-
|
|
46109
|
+
|
|
46110
|
+
@if (metadata()?.hint) {
|
|
46111
|
+
<div class="pdx-transfer-hint">{{ metadata()!.hint }}</div>
|
|
46112
|
+
}
|
|
46113
|
+
`, isInline: true, styles: [":host{display:block;width:100%}.pdx-transfer-list{width:100%;min-height:56px;padding:4px 0}.pdx-transfer-column{width:100%}.pdx-transfer-column mat-form-field{width:100%}.pdx-transfer-actions{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;padding:0 8px}.pdx-transfer-hint{margin-top:4px;color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .6));font-size:12px;line-height:1.4}@media(min-width:640px){.pdx-transfer-list{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2$5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3$6.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i3$6.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
45865
46114
|
}
|
|
45866
46115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MaterialTransferListComponent, decorators: [{
|
|
45867
46116
|
type: Component,
|
|
@@ -45993,6 +46242,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
45993
46242
|
</mat-selection-list>
|
|
45994
46243
|
</div>
|
|
45995
46244
|
</div>
|
|
46245
|
+
|
|
46246
|
+
@if (metadata()?.hint) {
|
|
46247
|
+
<div class="pdx-transfer-hint">{{ metadata()!.hint }}</div>
|
|
46248
|
+
}
|
|
45996
46249
|
`, providers: [
|
|
45997
46250
|
{
|
|
45998
46251
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -46007,7 +46260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
46007
46260
|
'[attr.data-field-type]': '"transfer-list"',
|
|
46008
46261
|
'[attr.data-field-name]': 'metadata()?.name',
|
|
46009
46262
|
'[attr.data-component-id]': 'componentId()',
|
|
46010
|
-
}, styles: [":host{display:block;width:100%}.pdx-transfer-list{width:100%;min-height:56px;padding:4px 0}.pdx-transfer-column{width:100%}.pdx-transfer-column mat-form-field{width:100%}.pdx-transfer-actions{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;padding:0 8px}@media(min-width:640px){.pdx-transfer-list{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}}\n"] }]
|
|
46263
|
+
}, styles: [":host{display:block;width:100%}.pdx-transfer-list{width:100%;min-height:56px;padding:4px 0}.pdx-transfer-column{width:100%}.pdx-transfer-column mat-form-field{width:100%}.pdx-transfer-actions{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;padding:0 8px}.pdx-transfer-hint{margin-top:4px;color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .6));font-size:12px;line-height:1.4}@media(min-width:640px){.pdx-transfer-list{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}}\n"] }]
|
|
46011
46264
|
}], ctorParameters: () => [], propDecorators: { readonlyMode: [{
|
|
46012
46265
|
type: Input
|
|
46013
46266
|
}], disabledMode: [{
|
|
@@ -48009,6 +48262,13 @@ const DYNAMIC_FIELD_READONLY_STATE_RECIPE = {
|
|
|
48009
48262
|
supported: true,
|
|
48010
48263
|
metadataPatch: { readonly: true },
|
|
48011
48264
|
};
|
|
48265
|
+
const DYNAMIC_FIELD_PRESENTATION_STATE_RECIPE = {
|
|
48266
|
+
state: 'presentation',
|
|
48267
|
+
label: 'Presentation',
|
|
48268
|
+
supported: true,
|
|
48269
|
+
metadataPatch: { presentationMode: true },
|
|
48270
|
+
note: 'Uses the canonical presentation pipeline instead of a disabled or readonly input shell.',
|
|
48271
|
+
};
|
|
48012
48272
|
const DYNAMIC_FIELD_ERROR_STATE_RECIPE = {
|
|
48013
48273
|
state: 'error',
|
|
48014
48274
|
label: 'Error',
|
|
@@ -48027,9 +48287,21 @@ const DYNAMIC_FIELD_BASE_STATE_RECIPES = [
|
|
|
48027
48287
|
DYNAMIC_FIELD_FILLED_STATE_RECIPE,
|
|
48028
48288
|
DYNAMIC_FIELD_DISABLED_STATE_RECIPE,
|
|
48029
48289
|
DYNAMIC_FIELD_READONLY_STATE_RECIPE,
|
|
48290
|
+
DYNAMIC_FIELD_PRESENTATION_STATE_RECIPE,
|
|
48030
48291
|
DYNAMIC_FIELD_ERROR_STATE_RECIPE,
|
|
48031
48292
|
];
|
|
48293
|
+
function mergeStateRecipes(overrides, supportedStates) {
|
|
48294
|
+
const overrideMap = new Map((overrides ?? []).map((state) => [state.state, state]));
|
|
48295
|
+
return DYNAMIC_FIELD_BASE_STATE_RECIPES
|
|
48296
|
+
.filter((state) => supportedStates.has(state.state))
|
|
48297
|
+
.map((state) => ({
|
|
48298
|
+
...state,
|
|
48299
|
+
...(overrideMap.get(state.state) ?? {}),
|
|
48300
|
+
}));
|
|
48301
|
+
}
|
|
48032
48302
|
function createDynamicFieldPreviewRecipe(input) {
|
|
48303
|
+
const supportedStates = new Set(input.supportedStates ?? DYNAMIC_FIELD_BASE_STATE_RECIPES.map((state) => state.state));
|
|
48304
|
+
const states = mergeStateRecipes(input.states, supportedStates);
|
|
48033
48305
|
return {
|
|
48034
48306
|
recipeId: input.recipeId,
|
|
48035
48307
|
fieldName: input.fieldName,
|
|
@@ -48041,7 +48313,7 @@ function createDynamicFieldPreviewRecipe(input) {
|
|
|
48041
48313
|
controlType: input.controlType,
|
|
48042
48314
|
...(input.metadata ?? {}),
|
|
48043
48315
|
},
|
|
48044
|
-
states
|
|
48316
|
+
states,
|
|
48045
48317
|
};
|
|
48046
48318
|
}
|
|
48047
48319
|
|
|
@@ -48064,7 +48336,7 @@ function jsonApiPath(relativePath) {
|
|
|
48064
48336
|
return `projects/praxis-dynamic-fields/src/lib/components/${relativePath}`;
|
|
48065
48337
|
}
|
|
48066
48338
|
function createEntry(input) {
|
|
48067
|
-
const states = input.states ?? ['default', 'filled', 'disabled', 'readonly', 'error'];
|
|
48339
|
+
const states = input.states ?? ['default', 'filled', 'disabled', 'readonly', 'presentation', 'error'];
|
|
48068
48340
|
return {
|
|
48069
48341
|
id: input.id,
|
|
48070
48342
|
controlType: input.controlType,
|
|
@@ -48095,6 +48367,7 @@ function createEntry(input) {
|
|
|
48095
48367
|
description: input.description,
|
|
48096
48368
|
metadata: input.metadata,
|
|
48097
48369
|
states: input.stateRecipes,
|
|
48370
|
+
supportedStates: states,
|
|
48098
48371
|
}),
|
|
48099
48372
|
snippetRecipe: {
|
|
48100
48373
|
language: input.snippetLanguage ?? 'json',
|
|
@@ -48106,6 +48379,15 @@ function createEntry(input) {
|
|
|
48106
48379
|
themingNotes: input.themingNotes ?? DEFAULT_THEMING_NOTES,
|
|
48107
48380
|
};
|
|
48108
48381
|
}
|
|
48382
|
+
function createDefaultSeedRecipe(initialValue, note) {
|
|
48383
|
+
return {
|
|
48384
|
+
state: 'default',
|
|
48385
|
+
label: 'Default',
|
|
48386
|
+
supported: true,
|
|
48387
|
+
initialValue,
|
|
48388
|
+
note,
|
|
48389
|
+
};
|
|
48390
|
+
}
|
|
48109
48391
|
const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
48110
48392
|
createEntry({
|
|
48111
48393
|
id: 'text-input',
|
|
@@ -48121,6 +48403,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48121
48403
|
dataSourceKind: 'local',
|
|
48122
48404
|
apiPath: jsonApiPath('text-input/pdx-text-input.json-api.md'),
|
|
48123
48405
|
metadata: { placeholder: 'Type here' },
|
|
48406
|
+
stateRecipes: [
|
|
48407
|
+
createDefaultSeedRecipe('Ana Souza', 'Seeded default preview to show immediate field affordance in the catalog.'),
|
|
48408
|
+
],
|
|
48124
48409
|
}),
|
|
48125
48410
|
createEntry({
|
|
48126
48411
|
id: 'email-input',
|
|
@@ -48255,6 +48540,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48255
48540
|
dataSourceKind: 'local',
|
|
48256
48541
|
apiPath: jsonApiPath('material-currency/pdx-material-currency.json-api.md'),
|
|
48257
48542
|
metadata: { currency: 'BRL', locale: 'pt-BR' },
|
|
48543
|
+
stateRecipes: [
|
|
48544
|
+
createDefaultSeedRecipe(18450.75, 'Seeded default preview to expose formatted monetary rendering at first glance.'),
|
|
48545
|
+
],
|
|
48258
48546
|
}),
|
|
48259
48547
|
createEntry({
|
|
48260
48548
|
id: 'slider',
|
|
@@ -48359,6 +48647,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48359
48647
|
avoidWhen: ['data unica'],
|
|
48360
48648
|
dataSourceKind: 'local',
|
|
48361
48649
|
apiPath: jsonApiPath('material-date-range/pdx-material-date-range.json-api.md'),
|
|
48650
|
+
stateRecipes: [
|
|
48651
|
+
createDefaultSeedRecipe({ startDate: '2026-03-01', endDate: '2026-03-23' }, 'Seeded default preview to demonstrate a complete temporal range without switching states.'),
|
|
48652
|
+
],
|
|
48362
48653
|
}),
|
|
48363
48654
|
createEntry({
|
|
48364
48655
|
id: 'datetime-local',
|
|
@@ -48482,6 +48773,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48482
48773
|
{ label: 'Paused', value: 'PAUSED' },
|
|
48483
48774
|
],
|
|
48484
48775
|
},
|
|
48776
|
+
stateRecipes: [
|
|
48777
|
+
createDefaultSeedRecipe('ACTIVE', 'Seeded default preview to reveal selected-label rendering in the base card.'),
|
|
48778
|
+
],
|
|
48485
48779
|
}),
|
|
48486
48780
|
createEntry({
|
|
48487
48781
|
id: 'searchable-select',
|
|
@@ -48674,6 +48968,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48674
48968
|
avoidWhen: ['mais de dois estados'],
|
|
48675
48969
|
dataSourceKind: 'local',
|
|
48676
48970
|
apiPath: jsonApiPath('material-slide-toggle/pdx-material-slide-toggle.json-api.md'),
|
|
48971
|
+
stateRecipes: [
|
|
48972
|
+
createDefaultSeedRecipe(true, 'Seeded default preview to show the canonical boolean-on state at a glance.'),
|
|
48973
|
+
],
|
|
48677
48974
|
}),
|
|
48678
48975
|
createEntry({
|
|
48679
48976
|
id: 'button-toggle',
|
|
@@ -48789,6 +49086,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48789
49086
|
avoidWhen: ['texto longo', 'validacao complexa'],
|
|
48790
49087
|
dataSourceKind: 'local',
|
|
48791
49088
|
apiPath: jsonApiPath('inline-input/pdx-inline-input.json-api.md'),
|
|
49089
|
+
stateRecipes: [
|
|
49090
|
+
createDefaultSeedRecipe('Praxis', 'Seeded default preview to keep inline text examples informative from the first render.'),
|
|
49091
|
+
],
|
|
48792
49092
|
}),
|
|
48793
49093
|
createEntry({
|
|
48794
49094
|
id: 'inline-select',
|
|
@@ -48803,6 +49103,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
48803
49103
|
avoidWhen: ['lookup remoto grande'],
|
|
48804
49104
|
dataSourceKind: 'mixed',
|
|
48805
49105
|
apiPath: jsonApiPath('inline-select/pdx-inline-select.json-api.md'),
|
|
49106
|
+
stateRecipes: [
|
|
49107
|
+
createDefaultSeedRecipe('ALPHA', 'Seeded default preview to expose compact selected-pill rendering.'),
|
|
49108
|
+
],
|
|
48806
49109
|
}),
|
|
48807
49110
|
createEntry({
|
|
48808
49111
|
id: 'inline-searchable-select',
|
|
@@ -49000,6 +49303,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
49000
49303
|
avoidWhen: ['toolbar saturada ou data unica'],
|
|
49001
49304
|
dataSourceKind: 'specialized',
|
|
49002
49305
|
apiPath: jsonApiPath('inline-date-range/pdx-inline-date-range.json-api.md'),
|
|
49306
|
+
stateRecipes: [
|
|
49307
|
+
createDefaultSeedRecipe({ startDate: '2026-03-01', endDate: '2026-03-23' }, 'Seeded default preview to show a resolved inline range immediately.'),
|
|
49308
|
+
],
|
|
49003
49309
|
}),
|
|
49004
49310
|
createEntry({
|
|
49005
49311
|
id: 'inline-time',
|
|
@@ -49116,6 +49422,9 @@ const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
|
49116
49422
|
avoidWhen: ['false e null nao estao bem documentados no fluxo'],
|
|
49117
49423
|
dataSourceKind: 'local',
|
|
49118
49424
|
apiPath: jsonApiPath('inline-toggle/pdx-inline-toggle.json-api.md'),
|
|
49425
|
+
stateRecipes: [
|
|
49426
|
+
createDefaultSeedRecipe(true, 'Seeded default preview to show the compact boolean state in toolbar scenarios.'),
|
|
49427
|
+
],
|
|
49119
49428
|
}),
|
|
49120
49429
|
];
|
|
49121
49430
|
|
|
@@ -50952,5 +51261,5 @@ function supportsClearButtonControlType(controlType) {
|
|
|
50952
51261
|
* Generated bundle index. Do not edit.
|
|
50953
51262
|
*/
|
|
50954
51263
|
|
|
50955
|
-
export { ActionResolverService, BRAZIL_INPUTS_AI_CAPABILITIES, CACHE_TTL, CHIPS_CONTROLS_AI_CAPABILITIES, CLEAR_BUTTON_CONTROL_TYPES, COLOR_CONTROLS_AI_CAPABILITIES, CONTROL_TYPE_AI_CATALOGS, ColorInputComponent, ComponentPreloaderService, ComponentRegistryService, ConfirmDialogComponent, DATE_CONTROLS_AI_CAPABILITIES, DISPLAY_ACTION_AI_CAPABILITIES, DYNAMIC_FIELDS_PLAYGROUND_CATALOG, DYNAMIC_FIELD_BASE_STATE_RECIPES, DYNAMIC_FIELD_DEFAULT_STATE_RECIPE, DYNAMIC_FIELD_DISABLED_STATE_RECIPE, DYNAMIC_FIELD_ERROR_STATE_RECIPE, DYNAMIC_FIELD_FILLED_STATE_RECIPE, DYNAMIC_FIELD_READONLY_STATE_RECIPE, DateInputComponent, DateUtilsService, DatetimeLocalInputComponent, DynamicFieldLoaderDirective, EmailInputComponent, FILE_UPLOAD_AI_CAPABILITIES, InlineAsyncSelectComponent, InlineAutocompleteComponent, InlineColorLabelComponent, InlineCurrencyComponent, InlineCurrencyRangeComponent, InlineDateComponent, InlineDateRangeComponent, InlineDistanceRadiusComponent, InlineEntityLookupComponent, InlineInputComponent, InlineMonthRangeComponent, InlineMultiSelectComponent, InlineNumberComponent, InlinePeriodRangeComponent, InlinePipelineStatusComponent, InlineRangeSliderComponent, InlineRatingComponent, InlineRelativePeriodComponent, InlineScorePriorityComponent, InlineSearchableSelectComponent, InlineSelectComponent, InlineSentimentComponent, InlineTimeComponent, InlineTimeRangeComponent, InlineToggleComponent, InlineTreeSelectComponent, InlineYearRangeComponent, KeyboardShortcutService, LIST_CONTROLS_AI_CAPABILITIES, LoggerPresets, MAX_LOAD_ATTEMPTS, MaterialAsyncSelectComponent, MaterialAutocompleteComponent, MaterialAvatarComponent, MaterialButtonComponent, MaterialButtonToggleComponent, MaterialCheckboxGroupComponent, MaterialChipsComponent, MaterialColorPickerComponent, MaterialCpfCnpjInputComponent, MaterialCurrencyComponent, MaterialDateRangeComponent, MaterialDatepickerComponent, MaterialFileUploadComponent, MaterialMultiSelectComponent, MaterialMultiSelectTreeComponent, MaterialPriceRangeComponent, MaterialRadioGroupComponent, MaterialRatingComponent, MaterialSearchableSelectComponent, MaterialSelectComponent, MaterialSelectionListComponent, MaterialSlideToggleComponent, MaterialSliderComponent, MaterialTextareaComponent, MaterialTimepickerComponent, MaterialTransferListComponent, MaterialTreeSelectComponent, MonthInputComponent, NUMERIC_INPUTS_AI_CAPABILITIES, NumberInputComponent, OptionStore, PDX_COLOR_INPUT_COMPONENT_METADATA, PDX_COLOR_PICKER_COMPONENT_METADATA, PDX_DATETIME_LOCAL_INPUT_COMPONENT_METADATA, PDX_DATE_INPUT_COMPONENT_METADATA, PDX_EMAIL_INPUT_COMPONENT_METADATA, PDX_FIELD_SHELL_COMPONENT_METADATA, PDX_INLINE_ASYNC_SELECT_COMPONENT_METADATA, PDX_INLINE_AUTOCOMPLETE_COMPONENT_METADATA, PDX_INLINE_COLOR_LABEL_COMPONENT_METADATA, PDX_INLINE_CURRENCY_COMPONENT_METADATA, PDX_INLINE_CURRENCY_RANGE_COMPONENT_METADATA, PDX_INLINE_DATE_COMPONENT_METADATA, PDX_INLINE_DATE_RANGE_COMPONENT_METADATA, PDX_INLINE_DISTANCE_RADIUS_COMPONENT_METADATA, PDX_INLINE_ENTITY_LOOKUP_COMPONENT_METADATA, PDX_INLINE_INPUT_COMPONENT_METADATA, PDX_INLINE_MONTH_RANGE_COMPONENT_METADATA, PDX_INLINE_MULTI_SELECT_COMPONENT_METADATA, PDX_INLINE_NUMBER_COMPONENT_METADATA, PDX_INLINE_PERIOD_RANGE_COMPONENT_METADATA, PDX_INLINE_PIPELINE_STATUS_COMPONENT_METADATA, PDX_INLINE_RANGE_SLIDER_COMPONENT_METADATA, PDX_INLINE_RATING_COMPONENT_METADATA, PDX_INLINE_RELATIVE_PERIOD_COMPONENT_METADATA, PDX_INLINE_SCORE_PRIORITY_COMPONENT_METADATA, PDX_INLINE_SEARCHABLE_SELECT_COMPONENT_METADATA, PDX_INLINE_SELECT_COMPONENT_METADATA, PDX_INLINE_SENTIMENT_COMPONENT_METADATA, PDX_INLINE_TIME_COMPONENT_METADATA, PDX_INLINE_TIME_RANGE_COMPONENT_METADATA, PDX_INLINE_TOGGLE_COMPONENT_METADATA, PDX_INLINE_TREE_SELECT_COMPONENT_METADATA, PDX_INLINE_YEAR_RANGE_COMPONENT_METADATA, PDX_MATERIAL_AVATAR_COMPONENT_METADATA, PDX_MATERIAL_BUTTON_COMPONENT_METADATA, PDX_MATERIAL_BUTTON_TOGGLE_COMPONENT_METADATA, PDX_MATERIAL_CHECKBOX_GROUP_COMPONENT_METADATA, PDX_MATERIAL_CHIPS_COMPONENT_METADATA, PDX_MATERIAL_COLORPICKER_COMPONENT_METADATA, PDX_MATERIAL_CPF_CNPJ_INPUT_COMPONENT_METADATA, PDX_MATERIAL_CURRENCY_COMPONENT_METADATA, PDX_MATERIAL_DATEPICKER_COMPONENT_METADATA, PDX_MATERIAL_DATE_RANGE_COMPONENT_METADATA, PDX_MATERIAL_FILE_UPLOAD_COMPONENT_METADATA, PDX_MATERIAL_MULTI_SELECT_COMPONENT_METADATA, PDX_MATERIAL_MULTI_SELECT_TREE_COMPONENT_METADATA, PDX_MATERIAL_PRICE_RANGE_COMPONENT_METADATA, PDX_MATERIAL_RADIO_GROUP_COMPONENT_METADATA, PDX_MATERIAL_RANGE_SLIDER_COMPONENT_METADATA, PDX_MATERIAL_RATING_COMPONENT_METADATA, PDX_MATERIAL_SEARCHABLE_SELECT_COMPONENT_METADATA, PDX_MATERIAL_SELECTION_LIST_COMPONENT_METADATA, PDX_MATERIAL_SELECT_COMPONENT_METADATA, PDX_MATERIAL_SLIDER_COMPONENT_METADATA, PDX_MATERIAL_TEXTAREA_COMPONENT_METADATA, PDX_MATERIAL_TIMEPICKER_COMPONENT_METADATA, PDX_MATERIAL_TIME_RANGE_COMPONENT_METADATA, PDX_MATERIAL_TRANSFER_LIST_COMPONENT_METADATA, PDX_MATERIAL_TREE_SELECT_COMPONENT_METADATA, PDX_MONTH_INPUT_COMPONENT_METADATA, PDX_NUMBER_INPUT_COMPONENT_METADATA, PDX_PASSWORD_INPUT_COMPONENT_METADATA, PDX_PHONE_INPUT_COMPONENT_METADATA, PDX_PRELOAD_STATUS_COMPONENT_METADATA, PDX_SEARCH_INPUT_COMPONENT_METADATA, PDX_TEXT_INPUT_COMPONENT_METADATA, PDX_TIME_INPUT_COMPONENT_METADATA, PDX_URL_INPUT_COMPONENT_METADATA, PDX_WEEK_INPUT_COMPONENT_METADATA, PDX_YEAR_INPUT_COMPONENT_METADATA, PRAXIS_DYNAMIC_FIELDS_EN_US, PRAXIS_DYNAMIC_FIELDS_I18N, PRAXIS_DYNAMIC_FIELDS_LOGGER_BACKEND, PRAXIS_DYNAMIC_FIELDS_PT_BR, PRICE_RANGE_AI_CAPABILITIES, PasswordInputComponent, PdxColorPickerComponent, PdxMaterialRangeSliderComponent, PdxMaterialTimeRangeComponent, PdxYearInputComponent, PhoneInputComponent, PraxisErrorStateMatcher, PreloadStatusComponent, RETRY_DELAY, SELECT_CONTROLS_AI_CAPABILITIES, SearchInputComponent, SimpleBaseButtonComponent, SimpleBaseInputComponent, SimpleBaseSelectComponent, TEXT_INPUTS_AI_CAPABILITIES, TIME_RANGE_AI_CAPABILITIES, TOGGLE_CONTROLS_AI_CAPABILITIES, TREE_CONTROLS_AI_CAPABILITIES, TextInputComponent, TimeInputComponent, UrlInputComponent, WeekInputComponent, YEAR_INPUT_AI_CAPABILITIES, bindDynamicFieldsLoggerBackendFromInjector, clearDynamicFieldsLoggerBackend, configureDynamicFieldsLogger, createDynamicFieldPreviewRecipe, createErrorStateMatcher, createPraxisDynamicFieldsI18nConfig, emitToDynamicFieldsLoggerBackend, enableDebugForComponent, getControlTypeCatalog, getErrorStateMatcherForField, inferErrorStateStrategy, initializeComponentSystem, initializeComponentSystemSync, isBaseDynamicFieldComponent, isLoadingCapableComponent, isValidJsonSchema, isValueBasedComponent, logger, mapJsonSchemaToFields, mapPropertyToFieldMetadata, normalizeFormMetadata, provideMaterialAvatarMetadata, providePraxisDynamicFields, providePraxisDynamicFieldsCore, providePraxisDynamicFieldsCoreNoDefaults, providePraxisDynamicFieldsI18n, providePraxisDynamicFieldsNoDefaults, resolvePraxisDynamicFieldsText, setDynamicFieldsLoggerBackend, silenceComponent, supportsClearButtonControlType };
|
|
51264
|
+
export { ActionResolverService, BRAZIL_INPUTS_AI_CAPABILITIES, CACHE_TTL, CHIPS_CONTROLS_AI_CAPABILITIES, CLEAR_BUTTON_CONTROL_TYPES, COLOR_CONTROLS_AI_CAPABILITIES, CONTROL_TYPE_AI_CATALOGS, ColorInputComponent, ComponentPreloaderService, ComponentRegistryService, ConfirmDialogComponent, DATE_CONTROLS_AI_CAPABILITIES, DISPLAY_ACTION_AI_CAPABILITIES, DYNAMIC_FIELDS_PLAYGROUND_CATALOG, DYNAMIC_FIELD_BASE_STATE_RECIPES, DYNAMIC_FIELD_DEFAULT_STATE_RECIPE, DYNAMIC_FIELD_DISABLED_STATE_RECIPE, DYNAMIC_FIELD_ERROR_STATE_RECIPE, DYNAMIC_FIELD_FILLED_STATE_RECIPE, DYNAMIC_FIELD_PRESENTATION_STATE_RECIPE, DYNAMIC_FIELD_READONLY_STATE_RECIPE, DateInputComponent, DateUtilsService, DatetimeLocalInputComponent, DynamicFieldLoaderDirective, EmailInputComponent, FILE_UPLOAD_AI_CAPABILITIES, InlineAsyncSelectComponent, InlineAutocompleteComponent, InlineColorLabelComponent, InlineCurrencyComponent, InlineCurrencyRangeComponent, InlineDateComponent, InlineDateRangeComponent, InlineDistanceRadiusComponent, InlineEntityLookupComponent, InlineInputComponent, InlineMonthRangeComponent, InlineMultiSelectComponent, InlineNumberComponent, InlinePeriodRangeComponent, InlinePipelineStatusComponent, InlineRangeSliderComponent, InlineRatingComponent, InlineRelativePeriodComponent, InlineScorePriorityComponent, InlineSearchableSelectComponent, InlineSelectComponent, InlineSentimentComponent, InlineTimeComponent, InlineTimeRangeComponent, InlineToggleComponent, InlineTreeSelectComponent, InlineYearRangeComponent, KeyboardShortcutService, LIST_CONTROLS_AI_CAPABILITIES, LoggerPresets, MAX_LOAD_ATTEMPTS, MaterialAsyncSelectComponent, MaterialAutocompleteComponent, MaterialAvatarComponent, MaterialButtonComponent, MaterialButtonToggleComponent, MaterialCheckboxGroupComponent, MaterialChipsComponent, MaterialColorPickerComponent, MaterialCpfCnpjInputComponent, MaterialCurrencyComponent, MaterialDateRangeComponent, MaterialDatepickerComponent, MaterialFileUploadComponent, MaterialMultiSelectComponent, MaterialMultiSelectTreeComponent, MaterialPriceRangeComponent, MaterialRadioGroupComponent, MaterialRatingComponent, MaterialSearchableSelectComponent, MaterialSelectComponent, MaterialSelectionListComponent, MaterialSlideToggleComponent, MaterialSliderComponent, MaterialTextareaComponent, MaterialTimepickerComponent, MaterialTransferListComponent, MaterialTreeSelectComponent, MonthInputComponent, NUMERIC_INPUTS_AI_CAPABILITIES, NumberInputComponent, OptionStore, PDX_COLOR_INPUT_COMPONENT_METADATA, PDX_COLOR_PICKER_COMPONENT_METADATA, PDX_DATETIME_LOCAL_INPUT_COMPONENT_METADATA, PDX_DATE_INPUT_COMPONENT_METADATA, PDX_EMAIL_INPUT_COMPONENT_METADATA, PDX_FIELD_SHELL_COMPONENT_METADATA, PDX_INLINE_ASYNC_SELECT_COMPONENT_METADATA, PDX_INLINE_AUTOCOMPLETE_COMPONENT_METADATA, PDX_INLINE_COLOR_LABEL_COMPONENT_METADATA, PDX_INLINE_CURRENCY_COMPONENT_METADATA, PDX_INLINE_CURRENCY_RANGE_COMPONENT_METADATA, PDX_INLINE_DATE_COMPONENT_METADATA, PDX_INLINE_DATE_RANGE_COMPONENT_METADATA, PDX_INLINE_DISTANCE_RADIUS_COMPONENT_METADATA, PDX_INLINE_ENTITY_LOOKUP_COMPONENT_METADATA, PDX_INLINE_INPUT_COMPONENT_METADATA, PDX_INLINE_MONTH_RANGE_COMPONENT_METADATA, PDX_INLINE_MULTI_SELECT_COMPONENT_METADATA, PDX_INLINE_NUMBER_COMPONENT_METADATA, PDX_INLINE_PERIOD_RANGE_COMPONENT_METADATA, PDX_INLINE_PIPELINE_STATUS_COMPONENT_METADATA, PDX_INLINE_RANGE_SLIDER_COMPONENT_METADATA, PDX_INLINE_RATING_COMPONENT_METADATA, PDX_INLINE_RELATIVE_PERIOD_COMPONENT_METADATA, PDX_INLINE_SCORE_PRIORITY_COMPONENT_METADATA, PDX_INLINE_SEARCHABLE_SELECT_COMPONENT_METADATA, PDX_INLINE_SELECT_COMPONENT_METADATA, PDX_INLINE_SENTIMENT_COMPONENT_METADATA, PDX_INLINE_TIME_COMPONENT_METADATA, PDX_INLINE_TIME_RANGE_COMPONENT_METADATA, PDX_INLINE_TOGGLE_COMPONENT_METADATA, PDX_INLINE_TREE_SELECT_COMPONENT_METADATA, PDX_INLINE_YEAR_RANGE_COMPONENT_METADATA, PDX_MATERIAL_AVATAR_COMPONENT_METADATA, PDX_MATERIAL_BUTTON_COMPONENT_METADATA, PDX_MATERIAL_BUTTON_TOGGLE_COMPONENT_METADATA, PDX_MATERIAL_CHECKBOX_GROUP_COMPONENT_METADATA, PDX_MATERIAL_CHIPS_COMPONENT_METADATA, PDX_MATERIAL_COLORPICKER_COMPONENT_METADATA, PDX_MATERIAL_CPF_CNPJ_INPUT_COMPONENT_METADATA, PDX_MATERIAL_CURRENCY_COMPONENT_METADATA, PDX_MATERIAL_DATEPICKER_COMPONENT_METADATA, PDX_MATERIAL_DATE_RANGE_COMPONENT_METADATA, PDX_MATERIAL_FILE_UPLOAD_COMPONENT_METADATA, PDX_MATERIAL_MULTI_SELECT_COMPONENT_METADATA, PDX_MATERIAL_MULTI_SELECT_TREE_COMPONENT_METADATA, PDX_MATERIAL_PRICE_RANGE_COMPONENT_METADATA, PDX_MATERIAL_RADIO_GROUP_COMPONENT_METADATA, PDX_MATERIAL_RANGE_SLIDER_COMPONENT_METADATA, PDX_MATERIAL_RATING_COMPONENT_METADATA, PDX_MATERIAL_SEARCHABLE_SELECT_COMPONENT_METADATA, PDX_MATERIAL_SELECTION_LIST_COMPONENT_METADATA, PDX_MATERIAL_SELECT_COMPONENT_METADATA, PDX_MATERIAL_SLIDER_COMPONENT_METADATA, PDX_MATERIAL_TEXTAREA_COMPONENT_METADATA, PDX_MATERIAL_TIMEPICKER_COMPONENT_METADATA, PDX_MATERIAL_TIME_RANGE_COMPONENT_METADATA, PDX_MATERIAL_TRANSFER_LIST_COMPONENT_METADATA, PDX_MATERIAL_TREE_SELECT_COMPONENT_METADATA, PDX_MONTH_INPUT_COMPONENT_METADATA, PDX_NUMBER_INPUT_COMPONENT_METADATA, PDX_PASSWORD_INPUT_COMPONENT_METADATA, PDX_PHONE_INPUT_COMPONENT_METADATA, PDX_PRELOAD_STATUS_COMPONENT_METADATA, PDX_SEARCH_INPUT_COMPONENT_METADATA, PDX_TEXT_INPUT_COMPONENT_METADATA, PDX_TIME_INPUT_COMPONENT_METADATA, PDX_URL_INPUT_COMPONENT_METADATA, PDX_WEEK_INPUT_COMPONENT_METADATA, PDX_YEAR_INPUT_COMPONENT_METADATA, PRAXIS_DYNAMIC_FIELDS_EN_US, PRAXIS_DYNAMIC_FIELDS_I18N, PRAXIS_DYNAMIC_FIELDS_LOGGER_BACKEND, PRAXIS_DYNAMIC_FIELDS_PT_BR, PRICE_RANGE_AI_CAPABILITIES, PasswordInputComponent, PdxColorPickerComponent, PdxMaterialRangeSliderComponent, PdxMaterialTimeRangeComponent, PdxYearInputComponent, PhoneInputComponent, PraxisErrorStateMatcher, PreloadStatusComponent, RETRY_DELAY, SELECT_CONTROLS_AI_CAPABILITIES, SearchInputComponent, SimpleBaseButtonComponent, SimpleBaseInputComponent, SimpleBaseSelectComponent, TEXT_INPUTS_AI_CAPABILITIES, TIME_RANGE_AI_CAPABILITIES, TOGGLE_CONTROLS_AI_CAPABILITIES, TREE_CONTROLS_AI_CAPABILITIES, TextInputComponent, TimeInputComponent, UrlInputComponent, WeekInputComponent, YEAR_INPUT_AI_CAPABILITIES, bindDynamicFieldsLoggerBackendFromInjector, clearDynamicFieldsLoggerBackend, configureDynamicFieldsLogger, createDynamicFieldPreviewRecipe, createErrorStateMatcher, createPraxisDynamicFieldsI18nConfig, emitToDynamicFieldsLoggerBackend, enableDebugForComponent, getControlTypeCatalog, getErrorStateMatcherForField, inferErrorStateStrategy, initializeComponentSystem, initializeComponentSystemSync, isBaseDynamicFieldComponent, isLoadingCapableComponent, isValidJsonSchema, isValueBasedComponent, logger, mapJsonSchemaToFields, mapPropertyToFieldMetadata, normalizeFormMetadata, provideMaterialAvatarMetadata, providePraxisDynamicFields, providePraxisDynamicFieldsCore, providePraxisDynamicFieldsCoreNoDefaults, providePraxisDynamicFieldsI18n, providePraxisDynamicFieldsNoDefaults, resolvePraxisDynamicFieldsText, setDynamicFieldsLoggerBackend, silenceComponent, supportsClearButtonControlType };
|
|
50956
51265
|
//# sourceMappingURL=praxisui-dynamic-fields.mjs.map
|