@praxisui/dynamic-fields 3.0.0-beta.1 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/praxisui-dynamic-fields-index-CY-plw8X.mjs +2 -0
- package/fesm2022/praxisui-dynamic-fields-index-CY-plw8X.mjs.map +1 -0
- package/fesm2022/praxisui-dynamic-fields-index-CsBUpYPm.mjs +2 -0
- package/fesm2022/praxisui-dynamic-fields-index-CsBUpYPm.mjs.map +1 -0
- package/fesm2022/praxisui-dynamic-fields-index-DlL36zZl.mjs +2 -0
- package/fesm2022/praxisui-dynamic-fields-index-DlL36zZl.mjs.map +1 -0
- package/fesm2022/praxisui-dynamic-fields.mjs +2200 -158
- package/fesm2022/praxisui-dynamic-fields.mjs.map +1 -1
- package/index.d.ts +199 -3
- package/package.json +5 -5
|
@@ -3,7 +3,7 @@ import { NgControl, FormControl, Validators, ReactiveFormsModule, NG_VALUE_ACCES
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { InjectionToken, inject, DestroyRef, ElementRef, ChangeDetectorRef, Injector, signal, output, computed, Input, Directive, viewChild, effect, Injectable, EventEmitter, ViewContainerRef, ViewChild, HostListener, HostBinding, Output, ViewEncapsulation, ChangeDetectionStrategy, Component, Inject, forwardRef, LOCALE_ID, ViewChildren, TemplateRef, ContentChild, ENVIRONMENT_INITIALIZER, APP_INITIALIZER, Optional } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
-
import { providePraxisI18n, PraxisI18nService, isCssTextTransform, getTextTransformer, GenericCrudService, GlobalConfigService, INLINE_FILTER_CONTROL_TYPES, FieldSelectorRegistry, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, LoggerService,
|
|
6
|
+
import { providePraxisI18n, PraxisI18nService, isCssTextTransform, getTextTransformer, GenericCrudService, GlobalConfigService, INLINE_FILTER_CONTROL_TYPES, FieldControlType, FieldSelectorRegistry, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, LoggerService, resolveInlineFilterControlType, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, PraxisIconDirective, resolveBuiltinPresets, createCpfCnpjValidator, NumericFormat, interpolatePraxisTranslation, ComponentMetadataRegistry, FIELD_METADATA_CAPABILITIES } from '@praxisui/core';
|
|
7
7
|
import { BehaviorSubject, combineLatest, Subscription, firstValueFrom, fromEvent, take as take$1, of, EMPTY } from 'rxjs';
|
|
8
8
|
import { Router } from '@angular/router';
|
|
9
9
|
import * as i1$2 from '@angular/material/dialog';
|
|
@@ -2404,6 +2404,8 @@ class SimpleBaseSelectComponent extends SimpleBaseInputComponent {
|
|
|
2404
2404
|
maxSelections = signal(null, ...(ngDevMode ? [{ debugName: "maxSelections" }] : []));
|
|
2405
2405
|
/** Backend resource path for dynamic option loading */
|
|
2406
2406
|
resourcePath = signal(null, ...(ngDevMode ? [{ debugName: "resourcePath" }] : []));
|
|
2407
|
+
/** Canonical source for derived options */
|
|
2408
|
+
optionSource = signal(null, ...(ngDevMode ? [{ debugName: "optionSource" }] : []));
|
|
2407
2409
|
/** Criteria applied to backend filtering */
|
|
2408
2410
|
filterCriteria = signal({}, ...(ngDevMode ? [{ debugName: "filterCriteria" }] : []));
|
|
2409
2411
|
/** Field used for option labels when loading from backend */
|
|
@@ -2472,18 +2474,26 @@ class SimpleBaseSelectComponent extends SimpleBaseInputComponent {
|
|
|
2472
2474
|
? null
|
|
2473
2475
|
: this.resolveDynamicFieldsMessage(this.dynamicFieldsI18n?.select?.emptyOptionText, 'select.emptyOptionText', '').trim() || null;
|
|
2474
2476
|
this.emptyOptionText.set(isMultiple ? null : (metadata.emptyOptionText ?? fallbackEmptyOption));
|
|
2475
|
-
const
|
|
2477
|
+
const optionSource = metadata.optionSource ?? null;
|
|
2478
|
+
this.optionSource.set(optionSource);
|
|
2479
|
+
const path = optionSource?.resourcePath ?? metadata.resourcePath ?? metadata.endpoint;
|
|
2476
2480
|
if (path) {
|
|
2477
2481
|
this.resourcePath.set(path);
|
|
2478
2482
|
this.filterCriteria.set(metadata.filterCriteria ?? {});
|
|
2479
|
-
const needLabel = !metadata.optionLabelKey;
|
|
2480
|
-
const needValue = !metadata.optionValueKey;
|
|
2483
|
+
const needLabel = !metadata.optionLabelKey && !optionSource;
|
|
2484
|
+
const needValue = !metadata.optionValueKey && !optionSource;
|
|
2481
2485
|
if (metadata.optionLabelKey) {
|
|
2482
2486
|
this.optionLabelKey.set(metadata.optionLabelKey);
|
|
2483
2487
|
}
|
|
2488
|
+
else if (optionSource) {
|
|
2489
|
+
this.optionLabelKey.set('label');
|
|
2490
|
+
}
|
|
2484
2491
|
if (metadata.optionValueKey) {
|
|
2485
2492
|
this.optionValueKey.set(metadata.optionValueKey);
|
|
2486
2493
|
}
|
|
2494
|
+
else if (optionSource) {
|
|
2495
|
+
this.optionValueKey.set('id');
|
|
2496
|
+
}
|
|
2487
2497
|
this.configureCrudService(path);
|
|
2488
2498
|
if (needLabel || needValue) {
|
|
2489
2499
|
this.loadSchema(needLabel, needValue);
|
|
@@ -2919,12 +2929,22 @@ class SimpleBaseSelectComponent extends SimpleBaseInputComponent {
|
|
|
2919
2929
|
return;
|
|
2920
2930
|
}
|
|
2921
2931
|
const filter = { ...criteria };
|
|
2922
|
-
if (searchTerm) {
|
|
2932
|
+
if (searchTerm && !this.optionSource()) {
|
|
2923
2933
|
filter[this.optionLabelKey()] = searchTerm;
|
|
2924
2934
|
}
|
|
2925
2935
|
this.loading.set(true);
|
|
2926
|
-
this.
|
|
2927
|
-
.
|
|
2936
|
+
const request$ = this.optionSource()
|
|
2937
|
+
? this.crudService.filterOptionSourceOptions(this.optionSource().key, filter, { pageNumber: page, pageSize: this.pageSize() }, {
|
|
2938
|
+
search: searchTerm || undefined,
|
|
2939
|
+
includeIds: this.optionSource().includeIds
|
|
2940
|
+
? this.currentIncludeIds()
|
|
2941
|
+
: undefined,
|
|
2942
|
+
})
|
|
2943
|
+
: this.crudService.filter(filter, {
|
|
2944
|
+
pageNumber: page,
|
|
2945
|
+
pageSize: this.pageSize(),
|
|
2946
|
+
});
|
|
2947
|
+
request$
|
|
2928
2948
|
.pipe(takeUntilDestroyed(this.destroyRef), take(1))
|
|
2929
2949
|
.subscribe({
|
|
2930
2950
|
next: (resp) => {
|
|
@@ -2950,6 +2970,16 @@ class SimpleBaseSelectComponent extends SimpleBaseInputComponent {
|
|
|
2950
2970
|
},
|
|
2951
2971
|
});
|
|
2952
2972
|
}
|
|
2973
|
+
currentIncludeIds() {
|
|
2974
|
+
const currentValue = this.control().value;
|
|
2975
|
+
if (Array.isArray(currentValue)) {
|
|
2976
|
+
return currentValue.filter((value) => value !== null && value !== undefined && value !== '');
|
|
2977
|
+
}
|
|
2978
|
+
if (currentValue === null || currentValue === undefined || currentValue === '') {
|
|
2979
|
+
return [];
|
|
2980
|
+
}
|
|
2981
|
+
return [currentValue];
|
|
2982
|
+
}
|
|
2953
2983
|
/** Dev-only warning when legacy alias keys are used instead of canonical ones */
|
|
2954
2984
|
devWarnSelectAliases(meta, component) {
|
|
2955
2985
|
const isDev = () => typeof globalThis.ngDevMode !== 'undefined'
|
|
@@ -3300,6 +3330,9 @@ const RETRY_DELAY = 1000; // 1 segundo
|
|
|
3300
3330
|
* Focado no essencial: registro, carregamento e cache básico
|
|
3301
3331
|
*/
|
|
3302
3332
|
const { SELECT: INLINE_SELECT_CONTROL_TYPE, MULTI_SELECT: INLINE_MULTI_SELECT_CONTROL_TYPE, INPUT: INLINE_INPUT_CONTROL_TYPE, TOGGLE: INLINE_TOGGLE_CONTROL_TYPE, RANGE: INLINE_RANGE_CONTROL_TYPE, SEARCHABLE_SELECT: INLINE_SEARCHABLE_SELECT_CONTROL_TYPE, ASYNC_SELECT: INLINE_ASYNC_SELECT_CONTROL_TYPE, ENTITY_LOOKUP: INLINE_ENTITY_LOOKUP_CONTROL_TYPE, AUTOCOMPLETE: INLINE_AUTOCOMPLETE_CONTROL_TYPE, NUMBER: INLINE_NUMBER_CONTROL_TYPE, CURRENCY: INLINE_CURRENCY_CONTROL_TYPE, CURRENCY_RANGE: INLINE_CURRENCY_RANGE_CONTROL_TYPE, DATE: INLINE_DATE_CONTROL_TYPE, DATE_RANGE: INLINE_DATE_RANGE_CONTROL_TYPE, TIME: INLINE_TIME_CONTROL_TYPE, TIME_RANGE: INLINE_TIME_RANGE_CONTROL_TYPE, TREE_SELECT: INLINE_TREE_SELECT_CONTROL_TYPE, RATING: INLINE_RATING_CONTROL_TYPE, DISTANCE_RADIUS: INLINE_DISTANCE_RADIUS_CONTROL_TYPE, PIPELINE_STATUS: INLINE_PIPELINE_STATUS_CONTROL_TYPE, SCORE_PRIORITY: INLINE_SCORE_PRIORITY_CONTROL_TYPE, RELATIVE_PERIOD: INLINE_RELATIVE_PERIOD_CONTROL_TYPE, SENTIMENT: INLINE_SENTIMENT_CONTROL_TYPE, COLOR_LABEL: INLINE_COLOR_LABEL_CONTROL_TYPE, } = INLINE_FILTER_CONTROL_TYPES;
|
|
3333
|
+
const INLINE_PERIOD_RANGE_CONTROL_TYPE = FieldControlType.INLINE_PERIOD_RANGE;
|
|
3334
|
+
const INLINE_YEAR_RANGE_CONTROL_TYPE = FieldControlType.INLINE_YEAR_RANGE;
|
|
3335
|
+
const INLINE_MONTH_RANGE_CONTROL_TYPE = FieldControlType.INLINE_MONTH_RANGE;
|
|
3303
3336
|
function lazyComponent(loader, exportName) {
|
|
3304
3337
|
return async () => loader().then((module) => module[exportName]);
|
|
3305
3338
|
}
|
|
@@ -3558,6 +3591,9 @@ class ComponentRegistryService {
|
|
|
3558
3591
|
this.register(INLINE_INPUT_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-iIeaA6ko.mjs'), 'InlineInputComponent'));
|
|
3559
3592
|
this.register(INLINE_TOGGLE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-BMHfcV1t.mjs'), 'InlineToggleComponent'));
|
|
3560
3593
|
this.register(INLINE_RANGE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-DYV54GUZ.mjs'), 'InlineRangeSliderComponent'));
|
|
3594
|
+
this.register(INLINE_PERIOD_RANGE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-CsBUpYPm.mjs'), 'InlinePeriodRangeComponent'));
|
|
3595
|
+
this.register(INLINE_YEAR_RANGE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-CY-plw8X.mjs'), 'InlineYearRangeComponent'));
|
|
3596
|
+
this.register(INLINE_MONTH_RANGE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-DlL36zZl.mjs'), 'InlineMonthRangeComponent'));
|
|
3561
3597
|
this.register(INLINE_DATE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-CfZxkljy.mjs'), 'InlineDateComponent'));
|
|
3562
3598
|
this.register(INLINE_DATE_RANGE_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-7NLgtZV4.mjs'), 'InlineDateRangeComponent'));
|
|
3563
3599
|
this.register(INLINE_TIME_CONTROL_TYPE, lazyComponent(() => import('./praxisui-dynamic-fields-index-DD5h8DRG.mjs'), 'InlineTimeComponent'));
|
|
@@ -15432,6 +15468,9 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
15432
15468
|
dataVersion;
|
|
15433
15469
|
useCursor = false;
|
|
15434
15470
|
// Uses protected `global` from base class
|
|
15471
|
+
isCategoricalBucketOptionSource(optionSource) {
|
|
15472
|
+
return String(optionSource?.type || '').trim().toUpperCase() === 'CATEGORICAL_BUCKET';
|
|
15473
|
+
}
|
|
15435
15474
|
setSelectMetadata(metadata) {
|
|
15436
15475
|
// Normalize and store metadata without triggering the base's remote load
|
|
15437
15476
|
this.devWarnSelectAliases(metadata, 'MaterialAsyncSelectComponent');
|
|
@@ -15450,28 +15489,40 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
15450
15489
|
}
|
|
15451
15490
|
// Apply base input metadata (placeholder, validators, a11y, etc.)
|
|
15452
15491
|
super.setMetadata({ ...metadata });
|
|
15492
|
+
const optionSource = metadata.optionSource ?? null;
|
|
15493
|
+
const isCategoricalBucket = this.isCategoricalBucketOptionSource(optionSource);
|
|
15453
15494
|
// Local select configuration
|
|
15454
15495
|
if (mappedOptions)
|
|
15455
15496
|
this.options.set(mappedOptions);
|
|
15456
15497
|
this.multiple.set(!!metadata.multiple);
|
|
15457
|
-
this.searchable.set(
|
|
15498
|
+
this.searchable.set(metadata.searchable ?? !isCategoricalBucket);
|
|
15458
15499
|
this.selectAll.set(!!metadata.selectAll);
|
|
15459
15500
|
this.maxSelections.set(metadata.maxSelections ?? null);
|
|
15460
15501
|
this.emptyOptionText.set(this.multiple() ? null : (metadata.emptyOptionText ?? null));
|
|
15461
15502
|
// Load strategy: default 'open' to avoid unnecessary requests
|
|
15462
15503
|
const loadOn = metadata.loadOn ??
|
|
15504
|
+
(isCategoricalBucket ? 'init' : undefined) ??
|
|
15463
15505
|
this.global.getDynamicFields()?.asyncSelect?.loadOn ??
|
|
15464
15506
|
'open';
|
|
15465
15507
|
this.initialLoadStrategy = loadOn;
|
|
15466
15508
|
// Remote config without auto-loading here (avoid duplicate /filter on init)
|
|
15467
|
-
|
|
15509
|
+
this.optionSource.set(optionSource);
|
|
15510
|
+
const path = optionSource?.resourcePath ?? metadata.resourcePath;
|
|
15468
15511
|
if (path) {
|
|
15469
15512
|
this.resourcePath.set(path);
|
|
15470
15513
|
this.filterCriteria.set(metadata.filterCriteria ?? {});
|
|
15471
|
-
if (metadata.optionLabelKey)
|
|
15514
|
+
if (metadata.optionLabelKey) {
|
|
15472
15515
|
this.optionLabelKey.set(metadata.optionLabelKey);
|
|
15473
|
-
|
|
15516
|
+
}
|
|
15517
|
+
else if (optionSource) {
|
|
15518
|
+
this.optionLabelKey.set('label');
|
|
15519
|
+
}
|
|
15520
|
+
if (metadata.optionValueKey) {
|
|
15474
15521
|
this.optionValueKey.set(metadata.optionValueKey);
|
|
15522
|
+
}
|
|
15523
|
+
else if (optionSource) {
|
|
15524
|
+
this.optionValueKey.set('id');
|
|
15525
|
+
}
|
|
15475
15526
|
if (this.lastConfiguredPath !== path) {
|
|
15476
15527
|
this.configureCrudService(path);
|
|
15477
15528
|
this.lastConfiguredPath = path;
|
|
@@ -15548,8 +15599,11 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
15548
15599
|
const ids = this.getSelectedIds();
|
|
15549
15600
|
if (!ids.length)
|
|
15550
15601
|
return;
|
|
15551
|
-
this.
|
|
15552
|
-
|
|
15602
|
+
const optionSource = this.optionSource();
|
|
15603
|
+
const request$ = optionSource
|
|
15604
|
+
? this.crudService.getOptionSourceOptionsByIds(optionSource.key, ids)
|
|
15605
|
+
: this.crudService.getOptionsByIds(ids);
|
|
15606
|
+
request$
|
|
15553
15607
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
15554
15608
|
.subscribe((opts) => {
|
|
15555
15609
|
const returned = new Set(opts.map((o) => o.id));
|
|
@@ -15571,7 +15625,7 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
15571
15625
|
}
|
|
15572
15626
|
const term = this.termControl.value || '';
|
|
15573
15627
|
const filter = { ...this.filterCriteria() };
|
|
15574
|
-
if (term) {
|
|
15628
|
+
if (term && !this.optionSource()) {
|
|
15575
15629
|
filter[this.optionLabelKey()] = term;
|
|
15576
15630
|
}
|
|
15577
15631
|
const selected = this.getSelectedIds();
|
|
@@ -15597,11 +15651,18 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
15597
15651
|
}));
|
|
15598
15652
|
}
|
|
15599
15653
|
const page = this.pageIndex();
|
|
15600
|
-
|
|
15601
|
-
|
|
15602
|
-
|
|
15603
|
-
|
|
15604
|
-
|
|
15654
|
+
const optionSource = this.optionSource();
|
|
15655
|
+
const request$ = optionSource
|
|
15656
|
+
? this.crudService.filterOptionSourceOptions(optionSource.key, filter, { pageNumber: page, pageSize: this.pageSize() }, {
|
|
15657
|
+
...(include || {}),
|
|
15658
|
+
observeVersionHeader: observeVersion,
|
|
15659
|
+
search: term || undefined,
|
|
15660
|
+
})
|
|
15661
|
+
: this.crudService.filterOptions(filter, { pageNumber: page, pageSize: this.pageSize() }, {
|
|
15662
|
+
...(include || {}),
|
|
15663
|
+
observeVersionHeader: observeVersion,
|
|
15664
|
+
});
|
|
15665
|
+
return request$
|
|
15605
15666
|
.pipe(tap((resp) => {
|
|
15606
15667
|
if (resp.dataVersion)
|
|
15607
15668
|
this.dataVersion = resp.dataVersion;
|
|
@@ -15719,7 +15780,7 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
15719
15780
|
[matTooltipDisabled]="!(tooltipEnabled() && !!errorMessage())"
|
|
15720
15781
|
[matTooltipPosition]="tooltipPosition()"
|
|
15721
15782
|
>
|
|
15722
|
-
<mat-option disabled>
|
|
15783
|
+
<mat-option *ngIf="searchable()" disabled>
|
|
15723
15784
|
<input
|
|
15724
15785
|
#searchInput
|
|
15725
15786
|
matInput
|
|
@@ -15833,7 +15894,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
15833
15894
|
[matTooltipDisabled]="!(tooltipEnabled() && !!errorMessage())"
|
|
15834
15895
|
[matTooltipPosition]="tooltipPosition()"
|
|
15835
15896
|
>
|
|
15836
|
-
<mat-option disabled>
|
|
15897
|
+
<mat-option *ngIf="searchable()" disabled>
|
|
15837
15898
|
<input
|
|
15838
15899
|
#searchInput
|
|
15839
15900
|
matInput
|
|
@@ -19310,9 +19371,35 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19310
19371
|
return custom;
|
|
19311
19372
|
return this.showPercentSuffix() ? 'percent' : 'tag';
|
|
19312
19373
|
}
|
|
19374
|
+
showPercentGraphicMode() {
|
|
19375
|
+
return this.showPercentSuffix() && this.currentMetadata().inlineVisualStyle === 'graphic';
|
|
19376
|
+
}
|
|
19313
19377
|
showPercentSuffix() {
|
|
19314
19378
|
return this.isPercentFormat();
|
|
19315
19379
|
}
|
|
19380
|
+
percentDisplayText() {
|
|
19381
|
+
const value = this.currentNumericValue();
|
|
19382
|
+
if (value === null) {
|
|
19383
|
+
return '--%';
|
|
19384
|
+
}
|
|
19385
|
+
return `${this.formatCompactNumber(value)}%`;
|
|
19386
|
+
}
|
|
19387
|
+
percentRangeText() {
|
|
19388
|
+
const min = this.effectiveMinValue();
|
|
19389
|
+
const max = this.effectiveMaxValue();
|
|
19390
|
+
if (min === null && max === null) {
|
|
19391
|
+
return '';
|
|
19392
|
+
}
|
|
19393
|
+
const start = min === null ? '—' : this.formatCompactNumber(min);
|
|
19394
|
+
const end = max === null ? '—' : this.formatCompactNumber(max);
|
|
19395
|
+
return `${start}-${end}%`;
|
|
19396
|
+
}
|
|
19397
|
+
percentAngle() {
|
|
19398
|
+
return this.percentRatio() * 360;
|
|
19399
|
+
}
|
|
19400
|
+
percentFillWidth() {
|
|
19401
|
+
return this.percentRatio() * 100;
|
|
19402
|
+
}
|
|
19316
19403
|
effectiveMinValue() {
|
|
19317
19404
|
return this.resolveEffectiveMin(this.currentMetadata());
|
|
19318
19405
|
}
|
|
@@ -19362,8 +19449,14 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19362
19449
|
widthProbeText() {
|
|
19363
19450
|
const value = this.control().value;
|
|
19364
19451
|
if (value !== null && value !== undefined && String(value).trim().length) {
|
|
19452
|
+
if (this.showPercentGraphicMode()) {
|
|
19453
|
+
return this.longestMeasureCandidate(String(value), this.placeholderText(), this.percentRangeText());
|
|
19454
|
+
}
|
|
19365
19455
|
return String(value);
|
|
19366
19456
|
}
|
|
19457
|
+
if (this.showPercentGraphicMode()) {
|
|
19458
|
+
return this.longestMeasureCandidate(this.placeholderText(), this.percentRangeText(), this.defaultFieldLabel());
|
|
19459
|
+
}
|
|
19367
19460
|
return this.placeholderText() || this.defaultFieldLabel();
|
|
19368
19461
|
}
|
|
19369
19462
|
placeholderText() {
|
|
@@ -19466,6 +19559,12 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19466
19559
|
baseMinMobile = 84;
|
|
19467
19560
|
baseMaxMobile = 188;
|
|
19468
19561
|
}
|
|
19562
|
+
if (this.showPercentGraphicMode()) {
|
|
19563
|
+
baseMinDesktop = Math.max(baseMinDesktop, 192);
|
|
19564
|
+
baseMaxDesktop = Math.max(baseMaxDesktop, 288);
|
|
19565
|
+
baseMinMobile = Math.max(baseMinMobile, 184);
|
|
19566
|
+
baseMaxMobile = Math.max(baseMaxMobile, 260);
|
|
19567
|
+
}
|
|
19469
19568
|
const min = Math.max(84, Math.round(isMobile
|
|
19470
19569
|
? (cfg.minWidthMobile ?? baseMinMobile)
|
|
19471
19570
|
: (cfg.minWidth ?? baseMinDesktop)));
|
|
@@ -19543,6 +19642,39 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19543
19642
|
? InlineNumberComponent.PERCENT_PLACEHOLDER_DEFAULT
|
|
19544
19643
|
: 'Número';
|
|
19545
19644
|
}
|
|
19645
|
+
currentNumericValue() {
|
|
19646
|
+
return this.resolveFiniteNumber(this.control().value);
|
|
19647
|
+
}
|
|
19648
|
+
percentRatio() {
|
|
19649
|
+
const value = this.currentNumericValue();
|
|
19650
|
+
if (value === null) {
|
|
19651
|
+
return 0;
|
|
19652
|
+
}
|
|
19653
|
+
const min = this.effectiveMinValue() ?? InlineNumberComponent.PERCENT_MIN_DEFAULT;
|
|
19654
|
+
const max = this.effectiveMaxValue() ?? InlineNumberComponent.PERCENT_MAX_DEFAULT;
|
|
19655
|
+
if (max <= min) {
|
|
19656
|
+
return 0;
|
|
19657
|
+
}
|
|
19658
|
+
return Math.max(0, Math.min(1, (value - min) / (max - min)));
|
|
19659
|
+
}
|
|
19660
|
+
formatCompactNumber(value) {
|
|
19661
|
+
if (!Number.isFinite(value)) {
|
|
19662
|
+
return '';
|
|
19663
|
+
}
|
|
19664
|
+
if (Number.isInteger(value)) {
|
|
19665
|
+
return `${value}`;
|
|
19666
|
+
}
|
|
19667
|
+
return value.toFixed(2).replace(/\.?0+$/, '');
|
|
19668
|
+
}
|
|
19669
|
+
longestMeasureCandidate(...values) {
|
|
19670
|
+
const candidates = values
|
|
19671
|
+
.map((value) => String(value ?? '').trim())
|
|
19672
|
+
.filter((value) => value.length);
|
|
19673
|
+
if (!candidates.length) {
|
|
19674
|
+
return '';
|
|
19675
|
+
}
|
|
19676
|
+
return candidates.reduce((longest, current) => current.length > longest.length ? current : longest);
|
|
19677
|
+
}
|
|
19546
19678
|
isPercentFormat(meta) {
|
|
19547
19679
|
const metadataRecord = this.asRecord(meta) ?? this.metadataRecord();
|
|
19548
19680
|
const numberFormat = this.asRecord(metadataRecord.numberFormat);
|
|
@@ -19603,80 +19735,107 @@ class InlineNumberComponent extends SimpleBaseInputComponent {
|
|
|
19603
19735
|
multi: true,
|
|
19604
19736
|
},
|
|
19605
19737
|
], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, read: ElementRef }, { propertyName: "measureEl", first: true, predicate: ["measureEl"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
|
|
19606
|
-
<
|
|
19607
|
-
|
|
19608
|
-
|
|
19609
|
-
|
|
19610
|
-
|
|
19611
|
-
|
|
19612
|
-
|
|
19613
|
-
|
|
19614
|
-
|
|
19615
|
-
|
|
19616
|
-
|
|
19617
|
-
|
|
19618
|
-
|
|
19619
|
-
|
|
19620
|
-
|
|
19621
|
-
|
|
19622
|
-
</mat-icon>
|
|
19623
|
-
<input
|
|
19624
|
-
#inputEl
|
|
19625
|
-
matInput
|
|
19626
|
-
type="number"
|
|
19627
|
-
[formControl]="control()"
|
|
19628
|
-
[errorStateMatcher]="errorStateMatcher()"
|
|
19629
|
-
[placeholder]="placeholderText()"
|
|
19630
|
-
[required]="metadata()?.required || false"
|
|
19631
|
-
[readonly]="isReadonlyEffective()"
|
|
19632
|
-
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
19633
|
-
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
19634
|
-
[min]="effectiveMinValue()"
|
|
19635
|
-
[max]="effectiveMaxValue()"
|
|
19636
|
-
[step]="effectiveStepValue()"
|
|
19637
|
-
[attr.inputmode]="metadata()?.inputMode || 'decimal'"
|
|
19638
|
-
[attr.aria-label]="ariaLabel()"
|
|
19639
|
-
[matTooltip]="inlineTooltipText()"
|
|
19640
|
-
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
19641
|
-
[matTooltipPosition]="tooltipPosition()"
|
|
19642
|
-
(input)="onInlineInput()"
|
|
19643
|
-
/>
|
|
19644
|
-
@if (showInlinePlaceholder()) {
|
|
19645
|
-
<span class="pdx-inline-placeholder" aria-hidden="true">{{ placeholderText() }}</span>
|
|
19738
|
+
<div class="pdx-inline-number-shell" [class.pdx-inline-number-shell-percent]="showPercentGraphicMode()">
|
|
19739
|
+
@if (showPercentGraphicMode()) {
|
|
19740
|
+
<div class="pdx-inline-percent-insight" aria-hidden="true">
|
|
19741
|
+
<div
|
|
19742
|
+
class="pdx-inline-percent-gauge"
|
|
19743
|
+
[style.--pdx-inline-percent-angle]="percentAngle() + 'deg'"
|
|
19744
|
+
>
|
|
19745
|
+
<div class="pdx-inline-percent-gauge__core">
|
|
19746
|
+
<span class="pdx-inline-percent-gauge__value">{{ percentDisplayText() }}</span>
|
|
19747
|
+
</div>
|
|
19748
|
+
</div>
|
|
19749
|
+
<div class="pdx-inline-percent-copy">
|
|
19750
|
+
<span class="pdx-inline-percent-copy__label">{{ placeholderText() }}</span>
|
|
19751
|
+
<span class="pdx-inline-percent-copy__range">{{ percentRangeText() }}</span>
|
|
19752
|
+
</div>
|
|
19753
|
+
</div>
|
|
19646
19754
|
}
|
|
19647
|
-
|
|
19648
|
-
|
|
19755
|
+
|
|
19756
|
+
<mat-form-field
|
|
19757
|
+
[appearance]="'outline'"
|
|
19758
|
+
[color]="materialColor()"
|
|
19759
|
+
[class]="componentCssClasses()"
|
|
19760
|
+
[floatLabel]="'auto'"
|
|
19761
|
+
[subscriptSizing]="'dynamic'"
|
|
19762
|
+
[hideRequiredMarker]="true"
|
|
19763
|
+
[style.width.px]="inlineWidthPx || null"
|
|
19764
|
+
[style.--pdx-inline-number-max-w.px]="inlineMaxWidthPx || null"
|
|
19765
|
+
>
|
|
19649
19766
|
<mat-icon
|
|
19650
|
-
|
|
19651
|
-
|
|
19652
|
-
[color]="
|
|
19653
|
-
[style.color]="iconResolvedColor(suffixIconColor())"
|
|
19654
|
-
[matTooltip]="metadata()?.suffixIconTooltip || null"
|
|
19655
|
-
[attr.aria-label]="metadata()?.suffixIconAriaLabel || null"
|
|
19767
|
+
matPrefix
|
|
19768
|
+
[color]="iconPalette(prefixIconColor())"
|
|
19769
|
+
[style.color]="iconResolvedColor(prefixIconColor())"
|
|
19656
19770
|
>
|
|
19657
|
-
{{
|
|
19771
|
+
{{ leadingIconName() }}
|
|
19658
19772
|
</mat-icon>
|
|
19659
|
-
|
|
19660
|
-
|
|
19661
|
-
|
|
19662
|
-
|
|
19663
|
-
|
|
19664
|
-
|
|
19665
|
-
|
|
19666
|
-
|
|
19667
|
-
|
|
19668
|
-
|
|
19669
|
-
|
|
19670
|
-
[
|
|
19671
|
-
|
|
19773
|
+
<input
|
|
19774
|
+
#inputEl
|
|
19775
|
+
matInput
|
|
19776
|
+
type="number"
|
|
19777
|
+
[formControl]="control()"
|
|
19778
|
+
[errorStateMatcher]="errorStateMatcher()"
|
|
19779
|
+
[placeholder]="placeholderText()"
|
|
19780
|
+
[required]="metadata()?.required || false"
|
|
19781
|
+
[readonly]="isReadonlyEffective()"
|
|
19782
|
+
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
19783
|
+
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
19784
|
+
[min]="effectiveMinValue()"
|
|
19785
|
+
[max]="effectiveMaxValue()"
|
|
19786
|
+
[step]="effectiveStepValue()"
|
|
19787
|
+
[attr.inputmode]="metadata()?.inputMode || 'decimal'"
|
|
19788
|
+
[attr.aria-label]="ariaLabel()"
|
|
19789
|
+
[matTooltip]="inlineTooltipText()"
|
|
19790
|
+
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
19791
|
+
[matTooltipPosition]="tooltipPosition()"
|
|
19792
|
+
(input)="onInlineInput()"
|
|
19793
|
+
/>
|
|
19794
|
+
@if (showInlinePlaceholder()) {
|
|
19795
|
+
<span class="pdx-inline-placeholder" aria-hidden="true">{{ placeholderText() }}</span>
|
|
19796
|
+
}
|
|
19797
|
+
<span #measureEl aria-hidden="true" class="pdx-inline-measure">{{ widthProbeText() }}</span>
|
|
19798
|
+
@if (suffixIconName()) {
|
|
19672
19799
|
<mat-icon
|
|
19673
|
-
|
|
19674
|
-
|
|
19675
|
-
|
|
19676
|
-
|
|
19800
|
+
matSuffix
|
|
19801
|
+
class="pdx-inline-static-suffix"
|
|
19802
|
+
[color]="iconPalette(suffixIconColor())"
|
|
19803
|
+
[style.color]="iconResolvedColor(suffixIconColor())"
|
|
19804
|
+
[matTooltip]="metadata()?.suffixIconTooltip || null"
|
|
19805
|
+
[attr.aria-label]="metadata()?.suffixIconAriaLabel || null"
|
|
19806
|
+
>
|
|
19807
|
+
{{ suffixIconName() }}
|
|
19808
|
+
</mat-icon>
|
|
19809
|
+
}
|
|
19810
|
+
@if (showPercentSuffix()) {
|
|
19811
|
+
<span matSuffix class="pdx-inline-number-suffix">%</span>
|
|
19812
|
+
}
|
|
19813
|
+
@if (showQuickClear()) {
|
|
19814
|
+
<button
|
|
19815
|
+
matSuffix
|
|
19816
|
+
type="button"
|
|
19817
|
+
class="pdx-inline-clear"
|
|
19818
|
+
(mousedown)="onTriggerIconMouseDown($event)"
|
|
19819
|
+
(click)="onQuickClear($event)"
|
|
19820
|
+
[attr.aria-label]="clearActionAriaLabel()"
|
|
19821
|
+
>
|
|
19822
|
+
<mat-icon
|
|
19823
|
+
[color]="iconPalette(clearIconColor())"
|
|
19824
|
+
[style.color]="iconResolvedColor(clearIconColor())"
|
|
19825
|
+
>{{ clearIconName() }}</mat-icon>
|
|
19826
|
+
</button>
|
|
19827
|
+
}
|
|
19828
|
+
</mat-form-field>
|
|
19829
|
+
|
|
19830
|
+
@if (showPercentGraphicMode()) {
|
|
19831
|
+
<div class="pdx-inline-percent-rail" aria-hidden="true">
|
|
19832
|
+
<div class="pdx-inline-percent-rail__track"></div>
|
|
19833
|
+
<div class="pdx-inline-percent-rail__fill" [style.width.%]="percentFillWidth()"></div>
|
|
19834
|
+
<div class="pdx-inline-percent-rail__marker" [style.left.%]="percentFillWidth()"></div>
|
|
19835
|
+
</div>
|
|
19677
19836
|
}
|
|
19678
|
-
</
|
|
19679
|
-
`, isInline: true, styles: [":host{display:inline-flex;width:auto;min-width:0;max-width:100%}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field{width:auto;min-width:0;margin-bottom:0;transition:width .12s ease}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-subscript-wrapper{display:none}:host ::ng-deep .pdx-inline-number .mdc-notched-outline{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-flex,:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper{padding:0;background:transparent}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-focus-overlay{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-infix{min-height:0;width:auto;flex:0 1 auto;min-width:0;padding:0;position:relative}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{display:flex;align-items:center;min-height:44px;min-width:0;max-width:min(var(--pdx-inline-number-max-w, 280px),calc(100vw - 48px));padding-inline:14px;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:after{display:none!important;content:none!important}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--focused{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element{color:var(--md-sys-color-on-surface);font-size:1.05rem;line-height:1.2;width:auto!important;min-width:2ch}:host ::ng-deep .pdx-inline-number .mdc-text-field__input::placeholder,:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element::placeholder{color:var(--md-sys-color-on-surface-variant)!important;opacity:0!important}:host ::ng-deep .pdx-inline-number .pdx-inline-placeholder{position:absolute;left:0;top:50%;transform:translateY(-50%);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;color:var(--md-sys-color-on-surface-variant);font-size:1.05rem;line-height:1.2}:host ::ng-deep .pdx-inline-number .pdx-inline-measure{position:absolute;visibility:hidden;pointer-events:none;white-space:pre;font-size:1.05rem;line-height:1.2;font-weight:400;left:-9999px;top:-9999px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix{padding:0;margin-right:10px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix mat-icon{width:22px;height:22px;font-size:22px;color:var(--md-sys-color-primary)}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-suffix{display:inline-flex;align-items:center;justify-content:center;align-self:center;margin-left:10px;gap:8px;padding:0}:host ::ng-deep .pdx-inline-number .pdx-inline-static-suffix{width:18px;height:18px;font-size:18px}:host ::ng-deep .pdx-inline-number .pdx-inline-number-suffix{color:var(--md-sys-color-on-surface-variant);font-size:.95rem;line-height:1;font-weight:600}:host ::ng-deep .pdx-inline-number .pdx-inline-clear{--clear-ring-color: var(--md-sys-color-primary);width:24px;height:24px;min-width:24px;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent);color:var(--md-sys-color-on-surface-variant);cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:focus-visible{background:color-mix(in srgb,var(--md-sys-color-on-surface) 20%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear mat-icon{display:block;width:16px;height:16px;font-size:16px;line-height:1;margin:0}@media(max-width:768px){:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:40px;padding-inline:12px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: 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"] }] });
|
|
19837
|
+
</div>
|
|
19838
|
+
`, isInline: true, styles: [":host{display:inline-flex;width:auto;min-width:0;max-width:100%}.pdx-inline-number-shell{display:inline-flex;flex-direction:column;gap:8px;width:auto;min-width:0;max-width:100%}.pdx-inline-number-shell-percent{--pdx-inline-percent-accent-start: color-mix(in srgb, var(--md-sys-color-tertiary) 72%, var(--md-sys-color-primary));--pdx-inline-percent-accent-mid: color-mix(in srgb, var(--md-sys-color-secondary) 82%, var(--md-sys-color-primary));--pdx-inline-percent-accent-end: color-mix(in srgb, var(--md-sys-color-primary) 88%, var(--md-sys-color-tertiary));padding:10px 12px 12px;border-radius:20px;border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 16%,var(--md-sys-color-outline-variant));background:linear-gradient(180deg,color-mix(in srgb,var(--md-sys-color-primary) 8%,var(--md-sys-color-surface-container-highest)) 0%,var(--md-sys-color-surface-container) 100%);box-shadow:inset 0 1px color-mix(in srgb,var(--md-sys-color-on-surface) 5%,transparent),0 8px 24px color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent)}.pdx-inline-percent-insight{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center}.pdx-inline-percent-gauge{--pdx-inline-percent-angle: 0deg;position:relative;width:52px;height:52px;border-radius:50%;background:radial-gradient(circle at center,var(--md-sys-color-surface-container) 56%,transparent 57%),conic-gradient(from -90deg,var(--pdx-inline-percent-accent-start) 0deg,var(--pdx-inline-percent-accent-mid) 150deg,var(--pdx-inline-percent-accent-end) var(--pdx-inline-percent-angle),color-mix(in srgb,var(--md-sys-color-outline-variant) 54%,transparent) var(--pdx-inline-percent-angle),color-mix(in srgb,var(--md-sys-color-outline-variant) 54%,transparent) 360deg);box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent),0 10px 22px color-mix(in srgb,var(--md-sys-color-primary) 16%,transparent)}.pdx-inline-percent-gauge__core{position:absolute;inset:7px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 30% 30%,color-mix(in srgb,white 54%,transparent),transparent 42%),var(--md-sys-color-surface);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-outline-variant))}.pdx-inline-percent-gauge__value{font-size:.85rem;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--md-sys-color-primary)}.pdx-inline-percent-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.pdx-inline-percent-copy__label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,var(--md-sys-color-primary) 84%,var(--md-sys-color-on-surface))}.pdx-inline-percent-copy__range{font-size:.82rem;font-weight:500;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field{width:auto;min-width:0;margin-bottom:0;transition:width .12s ease}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-subscript-wrapper{display:none}:host ::ng-deep .pdx-inline-number .mdc-notched-outline{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-flex,:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper{padding:0;background:transparent}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-focus-overlay{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-infix{min-height:0;width:auto;flex:0 1 auto;min-width:0;padding:0;position:relative}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{display:flex;align-items:center;min-height:44px;min-width:0;max-width:min(var(--pdx-inline-number-max-w, 280px),calc(100vw - 48px));padding-inline:14px;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease}:host ::ng-deep .pdx-inline-number-shell-percent .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{background:linear-gradient(180deg,color-mix(in srgb,white 68%,transparent),color-mix(in srgb,var(--md-sys-color-surface-container-high) 88%,white));border-color:color-mix(in srgb,var(--md-sys-color-primary) 20%,var(--md-sys-color-outline-variant))}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:after{display:none!important;content:none!important}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--focused{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element{color:var(--md-sys-color-on-surface);font-size:1.05rem;line-height:1.2;width:auto!important;min-width:2ch}:host ::ng-deep .pdx-inline-number .mdc-text-field__input::placeholder,:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element::placeholder{color:var(--md-sys-color-on-surface-variant)!important;opacity:0!important}:host ::ng-deep .pdx-inline-number .pdx-inline-placeholder{position:absolute;left:0;top:50%;transform:translateY(-50%);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;color:var(--md-sys-color-on-surface-variant);font-size:1.05rem;line-height:1.2}:host ::ng-deep .pdx-inline-number .pdx-inline-measure{position:absolute;visibility:hidden;pointer-events:none;white-space:pre;font-size:1.05rem;line-height:1.2;font-weight:400;left:-9999px;top:-9999px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix{padding:0;margin-right:10px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix mat-icon{width:22px;height:22px;font-size:22px;color:var(--md-sys-color-primary)}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-suffix{display:inline-flex;align-items:center;justify-content:center;align-self:center;margin-left:10px;gap:8px;padding:0}:host ::ng-deep .pdx-inline-number .pdx-inline-static-suffix{width:18px;height:18px;font-size:18px}:host ::ng-deep .pdx-inline-number .pdx-inline-number-suffix{color:var(--md-sys-color-on-surface-variant);font-size:.95rem;line-height:1;font-weight:600}:host ::ng-deep .pdx-inline-number .pdx-inline-clear{--clear-ring-color: var(--md-sys-color-primary);width:24px;height:24px;min-width:24px;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent);color:var(--md-sys-color-on-surface-variant);cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:focus-visible{background:color-mix(in srgb,var(--md-sys-color-on-surface) 20%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear mat-icon{display:block;width:16px;height:16px;font-size:16px;line-height:1;margin:0}.pdx-inline-percent-rail{position:relative;height:10px;margin-top:2px}.pdx-inline-percent-rail__track,.pdx-inline-percent-rail__fill{position:absolute;inset-block:1px;left:0;border-radius:999px}.pdx-inline-percent-rail__track{right:0;background:linear-gradient(90deg,color-mix(in srgb,var(--pdx-inline-percent-accent-start) 70%,var(--md-sys-color-surface-container-high)),color-mix(in srgb,var(--pdx-inline-percent-accent-mid) 78%,var(--md-sys-color-surface-container-high)) 52%,color-mix(in srgb,var(--pdx-inline-percent-accent-end) 82%,var(--md-sys-color-surface-container-high)));opacity:.2}.pdx-inline-percent-rail__fill{width:0;background:linear-gradient(90deg,var(--pdx-inline-percent-accent-start) 0%,var(--pdx-inline-percent-accent-mid) 52%,var(--pdx-inline-percent-accent-end) 100%);box-shadow:0 0 18px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-percent-rail__marker{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%);background:var(--md-sys-color-surface);border:2px solid var(--md-sys-color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent),0 4px 14px color-mix(in srgb,var(--md-sys-color-primary) 18%,transparent)}@media(max-width:768px){.pdx-inline-number-shell-percent{padding:9px 10px 10px;gap:6px}.pdx-inline-percent-insight{gap:10px}.pdx-inline-percent-gauge{width:46px;height:46px}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:40px;padding-inline:12px}}@media(forced-colors:active){.pdx-inline-number-shell-percent{border-color:CanvasText;background:Canvas;box-shadow:none}.pdx-inline-percent-gauge,.pdx-inline-percent-rail__track,.pdx-inline-percent-rail__fill,.pdx-inline-percent-rail__marker{forced-color-adjust:none}.pdx-inline-percent-gauge{background:radial-gradient(circle at center,Canvas 56%,transparent 57%),conic-gradient(from -90deg,Highlight 0deg,Highlight var(--pdx-inline-percent-angle),GrayText var(--pdx-inline-percent-angle),GrayText 360deg);box-shadow:none}.pdx-inline-percent-gauge__core,.pdx-inline-percent-rail__marker{background:Canvas;border-color:CanvasText}.pdx-inline-percent-rail__track{background:GrayText;opacity:1}.pdx-inline-percent-rail__fill{background:Highlight;box-shadow:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: 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"] }] });
|
|
19680
19839
|
}
|
|
19681
19840
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlineNumberComponent, decorators: [{
|
|
19682
19841
|
type: Component,
|
|
@@ -19688,79 +19847,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19688
19847
|
MatIconModule,
|
|
19689
19848
|
MatTooltipModule,
|
|
19690
19849
|
], template: `
|
|
19691
|
-
<
|
|
19692
|
-
|
|
19693
|
-
|
|
19694
|
-
|
|
19695
|
-
|
|
19696
|
-
|
|
19697
|
-
|
|
19698
|
-
|
|
19699
|
-
|
|
19700
|
-
|
|
19701
|
-
|
|
19702
|
-
|
|
19703
|
-
|
|
19704
|
-
|
|
19705
|
-
|
|
19706
|
-
|
|
19707
|
-
</mat-icon>
|
|
19708
|
-
<input
|
|
19709
|
-
#inputEl
|
|
19710
|
-
matInput
|
|
19711
|
-
type="number"
|
|
19712
|
-
[formControl]="control()"
|
|
19713
|
-
[errorStateMatcher]="errorStateMatcher()"
|
|
19714
|
-
[placeholder]="placeholderText()"
|
|
19715
|
-
[required]="metadata()?.required || false"
|
|
19716
|
-
[readonly]="isReadonlyEffective()"
|
|
19717
|
-
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
19718
|
-
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
19719
|
-
[min]="effectiveMinValue()"
|
|
19720
|
-
[max]="effectiveMaxValue()"
|
|
19721
|
-
[step]="effectiveStepValue()"
|
|
19722
|
-
[attr.inputmode]="metadata()?.inputMode || 'decimal'"
|
|
19723
|
-
[attr.aria-label]="ariaLabel()"
|
|
19724
|
-
[matTooltip]="inlineTooltipText()"
|
|
19725
|
-
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
19726
|
-
[matTooltipPosition]="tooltipPosition()"
|
|
19727
|
-
(input)="onInlineInput()"
|
|
19728
|
-
/>
|
|
19729
|
-
@if (showInlinePlaceholder()) {
|
|
19730
|
-
<span class="pdx-inline-placeholder" aria-hidden="true">{{ placeholderText() }}</span>
|
|
19850
|
+
<div class="pdx-inline-number-shell" [class.pdx-inline-number-shell-percent]="showPercentGraphicMode()">
|
|
19851
|
+
@if (showPercentGraphicMode()) {
|
|
19852
|
+
<div class="pdx-inline-percent-insight" aria-hidden="true">
|
|
19853
|
+
<div
|
|
19854
|
+
class="pdx-inline-percent-gauge"
|
|
19855
|
+
[style.--pdx-inline-percent-angle]="percentAngle() + 'deg'"
|
|
19856
|
+
>
|
|
19857
|
+
<div class="pdx-inline-percent-gauge__core">
|
|
19858
|
+
<span class="pdx-inline-percent-gauge__value">{{ percentDisplayText() }}</span>
|
|
19859
|
+
</div>
|
|
19860
|
+
</div>
|
|
19861
|
+
<div class="pdx-inline-percent-copy">
|
|
19862
|
+
<span class="pdx-inline-percent-copy__label">{{ placeholderText() }}</span>
|
|
19863
|
+
<span class="pdx-inline-percent-copy__range">{{ percentRangeText() }}</span>
|
|
19864
|
+
</div>
|
|
19865
|
+
</div>
|
|
19731
19866
|
}
|
|
19732
|
-
|
|
19733
|
-
|
|
19867
|
+
|
|
19868
|
+
<mat-form-field
|
|
19869
|
+
[appearance]="'outline'"
|
|
19870
|
+
[color]="materialColor()"
|
|
19871
|
+
[class]="componentCssClasses()"
|
|
19872
|
+
[floatLabel]="'auto'"
|
|
19873
|
+
[subscriptSizing]="'dynamic'"
|
|
19874
|
+
[hideRequiredMarker]="true"
|
|
19875
|
+
[style.width.px]="inlineWidthPx || null"
|
|
19876
|
+
[style.--pdx-inline-number-max-w.px]="inlineMaxWidthPx || null"
|
|
19877
|
+
>
|
|
19734
19878
|
<mat-icon
|
|
19735
|
-
|
|
19736
|
-
|
|
19737
|
-
[color]="
|
|
19738
|
-
[style.color]="iconResolvedColor(suffixIconColor())"
|
|
19739
|
-
[matTooltip]="metadata()?.suffixIconTooltip || null"
|
|
19740
|
-
[attr.aria-label]="metadata()?.suffixIconAriaLabel || null"
|
|
19879
|
+
matPrefix
|
|
19880
|
+
[color]="iconPalette(prefixIconColor())"
|
|
19881
|
+
[style.color]="iconResolvedColor(prefixIconColor())"
|
|
19741
19882
|
>
|
|
19742
|
-
{{
|
|
19883
|
+
{{ leadingIconName() }}
|
|
19743
19884
|
</mat-icon>
|
|
19744
|
-
|
|
19745
|
-
|
|
19746
|
-
|
|
19747
|
-
|
|
19748
|
-
|
|
19749
|
-
|
|
19750
|
-
|
|
19751
|
-
|
|
19752
|
-
|
|
19753
|
-
|
|
19754
|
-
|
|
19755
|
-
[
|
|
19756
|
-
|
|
19885
|
+
<input
|
|
19886
|
+
#inputEl
|
|
19887
|
+
matInput
|
|
19888
|
+
type="number"
|
|
19889
|
+
[formControl]="control()"
|
|
19890
|
+
[errorStateMatcher]="errorStateMatcher()"
|
|
19891
|
+
[placeholder]="placeholderText()"
|
|
19892
|
+
[required]="metadata()?.required || false"
|
|
19893
|
+
[readonly]="isReadonlyEffective()"
|
|
19894
|
+
[autocomplete]="metadata()?.autocomplete || 'off'"
|
|
19895
|
+
[spellcheck]="metadata()?.spellcheck ?? false"
|
|
19896
|
+
[min]="effectiveMinValue()"
|
|
19897
|
+
[max]="effectiveMaxValue()"
|
|
19898
|
+
[step]="effectiveStepValue()"
|
|
19899
|
+
[attr.inputmode]="metadata()?.inputMode || 'decimal'"
|
|
19900
|
+
[attr.aria-label]="ariaLabel()"
|
|
19901
|
+
[matTooltip]="inlineTooltipText()"
|
|
19902
|
+
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
19903
|
+
[matTooltipPosition]="tooltipPosition()"
|
|
19904
|
+
(input)="onInlineInput()"
|
|
19905
|
+
/>
|
|
19906
|
+
@if (showInlinePlaceholder()) {
|
|
19907
|
+
<span class="pdx-inline-placeholder" aria-hidden="true">{{ placeholderText() }}</span>
|
|
19908
|
+
}
|
|
19909
|
+
<span #measureEl aria-hidden="true" class="pdx-inline-measure">{{ widthProbeText() }}</span>
|
|
19910
|
+
@if (suffixIconName()) {
|
|
19757
19911
|
<mat-icon
|
|
19758
|
-
|
|
19759
|
-
|
|
19760
|
-
|
|
19761
|
-
|
|
19912
|
+
matSuffix
|
|
19913
|
+
class="pdx-inline-static-suffix"
|
|
19914
|
+
[color]="iconPalette(suffixIconColor())"
|
|
19915
|
+
[style.color]="iconResolvedColor(suffixIconColor())"
|
|
19916
|
+
[matTooltip]="metadata()?.suffixIconTooltip || null"
|
|
19917
|
+
[attr.aria-label]="metadata()?.suffixIconAriaLabel || null"
|
|
19918
|
+
>
|
|
19919
|
+
{{ suffixIconName() }}
|
|
19920
|
+
</mat-icon>
|
|
19921
|
+
}
|
|
19922
|
+
@if (showPercentSuffix()) {
|
|
19923
|
+
<span matSuffix class="pdx-inline-number-suffix">%</span>
|
|
19924
|
+
}
|
|
19925
|
+
@if (showQuickClear()) {
|
|
19926
|
+
<button
|
|
19927
|
+
matSuffix
|
|
19928
|
+
type="button"
|
|
19929
|
+
class="pdx-inline-clear"
|
|
19930
|
+
(mousedown)="onTriggerIconMouseDown($event)"
|
|
19931
|
+
(click)="onQuickClear($event)"
|
|
19932
|
+
[attr.aria-label]="clearActionAriaLabel()"
|
|
19933
|
+
>
|
|
19934
|
+
<mat-icon
|
|
19935
|
+
[color]="iconPalette(clearIconColor())"
|
|
19936
|
+
[style.color]="iconResolvedColor(clearIconColor())"
|
|
19937
|
+
>{{ clearIconName() }}</mat-icon>
|
|
19938
|
+
</button>
|
|
19939
|
+
}
|
|
19940
|
+
</mat-form-field>
|
|
19941
|
+
|
|
19942
|
+
@if (showPercentGraphicMode()) {
|
|
19943
|
+
<div class="pdx-inline-percent-rail" aria-hidden="true">
|
|
19944
|
+
<div class="pdx-inline-percent-rail__track"></div>
|
|
19945
|
+
<div class="pdx-inline-percent-rail__fill" [style.width.%]="percentFillWidth()"></div>
|
|
19946
|
+
<div class="pdx-inline-percent-rail__marker" [style.left.%]="percentFillWidth()"></div>
|
|
19947
|
+
</div>
|
|
19762
19948
|
}
|
|
19763
|
-
</
|
|
19949
|
+
</div>
|
|
19764
19950
|
`, providers: [
|
|
19765
19951
|
{
|
|
19766
19952
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -19777,7 +19963,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19777
19963
|
'[attr.data-field-type]': '"inlineNumber"',
|
|
19778
19964
|
'[attr.data-field-name]': 'metadata()?.name',
|
|
19779
19965
|
'[attr.data-component-id]': 'componentId()',
|
|
19780
|
-
}, styles: [":host{display:inline-flex;width:auto;min-width:0;max-width:100%}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field{width:auto;min-width:0;margin-bottom:0;transition:width .12s ease}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-subscript-wrapper{display:none}:host ::ng-deep .pdx-inline-number .mdc-notched-outline{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-flex,:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper{padding:0;background:transparent}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-focus-overlay{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-infix{min-height:0;width:auto;flex:0 1 auto;min-width:0;padding:0;position:relative}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{display:flex;align-items:center;min-height:44px;min-width:0;max-width:min(var(--pdx-inline-number-max-w, 280px),calc(100vw - 48px));padding-inline:14px;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:after{display:none!important;content:none!important}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--focused{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element{color:var(--md-sys-color-on-surface);font-size:1.05rem;line-height:1.2;width:auto!important;min-width:2ch}:host ::ng-deep .pdx-inline-number .mdc-text-field__input::placeholder,:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element::placeholder{color:var(--md-sys-color-on-surface-variant)!important;opacity:0!important}:host ::ng-deep .pdx-inline-number .pdx-inline-placeholder{position:absolute;left:0;top:50%;transform:translateY(-50%);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;color:var(--md-sys-color-on-surface-variant);font-size:1.05rem;line-height:1.2}:host ::ng-deep .pdx-inline-number .pdx-inline-measure{position:absolute;visibility:hidden;pointer-events:none;white-space:pre;font-size:1.05rem;line-height:1.2;font-weight:400;left:-9999px;top:-9999px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix{padding:0;margin-right:10px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix mat-icon{width:22px;height:22px;font-size:22px;color:var(--md-sys-color-primary)}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-suffix{display:inline-flex;align-items:center;justify-content:center;align-self:center;margin-left:10px;gap:8px;padding:0}:host ::ng-deep .pdx-inline-number .pdx-inline-static-suffix{width:18px;height:18px;font-size:18px}:host ::ng-deep .pdx-inline-number .pdx-inline-number-suffix{color:var(--md-sys-color-on-surface-variant);font-size:.95rem;line-height:1;font-weight:600}:host ::ng-deep .pdx-inline-number .pdx-inline-clear{--clear-ring-color: var(--md-sys-color-primary);width:24px;height:24px;min-width:24px;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent);color:var(--md-sys-color-on-surface-variant);cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:focus-visible{background:color-mix(in srgb,var(--md-sys-color-on-surface) 20%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear mat-icon{display:block;width:16px;height:16px;font-size:16px;line-height:1;margin:0}@media(max-width:768px){:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:40px;padding-inline:12px}}\n"] }]
|
|
19966
|
+
}, styles: [":host{display:inline-flex;width:auto;min-width:0;max-width:100%}.pdx-inline-number-shell{display:inline-flex;flex-direction:column;gap:8px;width:auto;min-width:0;max-width:100%}.pdx-inline-number-shell-percent{--pdx-inline-percent-accent-start: color-mix(in srgb, var(--md-sys-color-tertiary) 72%, var(--md-sys-color-primary));--pdx-inline-percent-accent-mid: color-mix(in srgb, var(--md-sys-color-secondary) 82%, var(--md-sys-color-primary));--pdx-inline-percent-accent-end: color-mix(in srgb, var(--md-sys-color-primary) 88%, var(--md-sys-color-tertiary));padding:10px 12px 12px;border-radius:20px;border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 16%,var(--md-sys-color-outline-variant));background:linear-gradient(180deg,color-mix(in srgb,var(--md-sys-color-primary) 8%,var(--md-sys-color-surface-container-highest)) 0%,var(--md-sys-color-surface-container) 100%);box-shadow:inset 0 1px color-mix(in srgb,var(--md-sys-color-on-surface) 5%,transparent),0 8px 24px color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent)}.pdx-inline-percent-insight{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center}.pdx-inline-percent-gauge{--pdx-inline-percent-angle: 0deg;position:relative;width:52px;height:52px;border-radius:50%;background:radial-gradient(circle at center,var(--md-sys-color-surface-container) 56%,transparent 57%),conic-gradient(from -90deg,var(--pdx-inline-percent-accent-start) 0deg,var(--pdx-inline-percent-accent-mid) 150deg,var(--pdx-inline-percent-accent-end) var(--pdx-inline-percent-angle),color-mix(in srgb,var(--md-sys-color-outline-variant) 54%,transparent) var(--pdx-inline-percent-angle),color-mix(in srgb,var(--md-sys-color-outline-variant) 54%,transparent) 360deg);box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent),0 10px 22px color-mix(in srgb,var(--md-sys-color-primary) 16%,transparent)}.pdx-inline-percent-gauge__core{position:absolute;inset:7px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 30% 30%,color-mix(in srgb,white 54%,transparent),transparent 42%),var(--md-sys-color-surface);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-outline-variant))}.pdx-inline-percent-gauge__value{font-size:.85rem;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--md-sys-color-primary)}.pdx-inline-percent-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.pdx-inline-percent-copy__label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,var(--md-sys-color-primary) 84%,var(--md-sys-color-on-surface))}.pdx-inline-percent-copy__range{font-size:.82rem;font-weight:500;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field{width:auto;min-width:0;margin-bottom:0;transition:width .12s ease}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-subscript-wrapper{display:none}:host ::ng-deep .pdx-inline-number .mdc-notched-outline{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-flex,:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper{padding:0;background:transparent}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-focus-overlay{display:none}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-infix{min-height:0;width:auto;flex:0 1 auto;min-width:0;padding:0;position:relative}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{display:flex;align-items:center;min-height:44px;min-width:0;max-width:min(var(--pdx-inline-number-max-w, 280px),calc(100vw - 48px));padding-inline:14px;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease}:host ::ng-deep .pdx-inline-number-shell-percent .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{background:linear-gradient(180deg,color-mix(in srgb,white 68%,transparent),color-mix(in srgb,var(--md-sys-color-surface-container-high) 88%,white));border-color:color-mix(in srgb,var(--md-sys-color-primary) 20%,var(--md-sys-color-outline-variant))}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:after{display:none!important;content:none!important}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--focused{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element{color:var(--md-sys-color-on-surface);font-size:1.05rem;line-height:1.2;width:auto!important;min-width:2ch}:host ::ng-deep .pdx-inline-number .mdc-text-field__input::placeholder,:host ::ng-deep .pdx-inline-number input.mat-mdc-input-element::placeholder{color:var(--md-sys-color-on-surface-variant)!important;opacity:0!important}:host ::ng-deep .pdx-inline-number .pdx-inline-placeholder{position:absolute;left:0;top:50%;transform:translateY(-50%);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;color:var(--md-sys-color-on-surface-variant);font-size:1.05rem;line-height:1.2}:host ::ng-deep .pdx-inline-number .pdx-inline-measure{position:absolute;visibility:hidden;pointer-events:none;white-space:pre;font-size:1.05rem;line-height:1.2;font-weight:400;left:-9999px;top:-9999px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix{padding:0;margin-right:10px}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-prefix mat-icon{width:22px;height:22px;font-size:22px;color:var(--md-sys-color-primary)}:host ::ng-deep .pdx-inline-number .mat-mdc-form-field-icon-suffix{display:inline-flex;align-items:center;justify-content:center;align-self:center;margin-left:10px;gap:8px;padding:0}:host ::ng-deep .pdx-inline-number .pdx-inline-static-suffix{width:18px;height:18px;font-size:18px}:host ::ng-deep .pdx-inline-number .pdx-inline-number-suffix{color:var(--md-sys-color-on-surface-variant);font-size:.95rem;line-height:1;font-weight:600}:host ::ng-deep .pdx-inline-number .pdx-inline-clear{--clear-ring-color: var(--md-sys-color-primary);width:24px;height:24px;min-width:24px;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent);color:var(--md-sys-color-on-surface-variant);cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear:focus-visible{background:color-mix(in srgb,var(--md-sys-color-on-surface) 20%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}:host ::ng-deep .pdx-inline-number .pdx-inline-clear mat-icon{display:block;width:16px;height:16px;font-size:16px;line-height:1;margin:0}.pdx-inline-percent-rail{position:relative;height:10px;margin-top:2px}.pdx-inline-percent-rail__track,.pdx-inline-percent-rail__fill{position:absolute;inset-block:1px;left:0;border-radius:999px}.pdx-inline-percent-rail__track{right:0;background:linear-gradient(90deg,color-mix(in srgb,var(--pdx-inline-percent-accent-start) 70%,var(--md-sys-color-surface-container-high)),color-mix(in srgb,var(--pdx-inline-percent-accent-mid) 78%,var(--md-sys-color-surface-container-high)) 52%,color-mix(in srgb,var(--pdx-inline-percent-accent-end) 82%,var(--md-sys-color-surface-container-high)));opacity:.2}.pdx-inline-percent-rail__fill{width:0;background:linear-gradient(90deg,var(--pdx-inline-percent-accent-start) 0%,var(--pdx-inline-percent-accent-mid) 52%,var(--pdx-inline-percent-accent-end) 100%);box-shadow:0 0 18px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-percent-rail__marker{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%);background:var(--md-sys-color-surface);border:2px solid var(--md-sys-color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent),0 4px 14px color-mix(in srgb,var(--md-sys-color-primary) 18%,transparent)}@media(max-width:768px){.pdx-inline-number-shell-percent{padding:9px 10px 10px;gap:6px}.pdx-inline-percent-insight{gap:10px}.pdx-inline-percent-gauge{width:46px;height:46px}:host ::ng-deep .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:40px;padding-inline:12px}}@media(forced-colors:active){.pdx-inline-number-shell-percent{border-color:CanvasText;background:Canvas;box-shadow:none}.pdx-inline-percent-gauge,.pdx-inline-percent-rail__track,.pdx-inline-percent-rail__fill,.pdx-inline-percent-rail__marker{forced-color-adjust:none}.pdx-inline-percent-gauge{background:radial-gradient(circle at center,Canvas 56%,transparent 57%),conic-gradient(from -90deg,Highlight 0deg,Highlight var(--pdx-inline-percent-angle),GrayText var(--pdx-inline-percent-angle),GrayText 360deg);box-shadow:none}.pdx-inline-percent-gauge__core,.pdx-inline-percent-rail__marker{background:Canvas;border-color:CanvasText}.pdx-inline-percent-rail__track{background:GrayText;opacity:1}.pdx-inline-percent-rail__fill{background:Highlight;box-shadow:none}}\n"] }]
|
|
19781
19967
|
}], propDecorators: { inputEl: [{
|
|
19782
19968
|
type: ViewChild,
|
|
19783
19969
|
args: ['inputEl', { read: ElementRef }]
|
|
@@ -23673,6 +23859,673 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
23673
23859
|
args: ['document:keydown.escape']
|
|
23674
23860
|
}] } });
|
|
23675
23861
|
|
|
23862
|
+
class InlinePeriodRangeComponent extends SimpleBaseInputComponent {
|
|
23863
|
+
innerComponent;
|
|
23864
|
+
readonlyMode = false;
|
|
23865
|
+
disabledMode = false;
|
|
23866
|
+
visible = true;
|
|
23867
|
+
presentationMode = false;
|
|
23868
|
+
sliderControl = new FormControl(null);
|
|
23869
|
+
syncingFromOuter = false;
|
|
23870
|
+
syncingFromInner = false;
|
|
23871
|
+
periodState = computed(() => {
|
|
23872
|
+
const metadata = this.metadata();
|
|
23873
|
+
if (!metadata)
|
|
23874
|
+
return null;
|
|
23875
|
+
const values = this.buildPeriods(metadata);
|
|
23876
|
+
if (!values.length)
|
|
23877
|
+
return null;
|
|
23878
|
+
return {
|
|
23879
|
+
values,
|
|
23880
|
+
indexByValue: new Map(values.map((value, index) => [value, index])),
|
|
23881
|
+
};
|
|
23882
|
+
}, ...(ngDevMode ? [{ debugName: "periodState" }] : []));
|
|
23883
|
+
resolvedMetadata = computed(() => {
|
|
23884
|
+
const metadata = this.metadata();
|
|
23885
|
+
const periodState = this.periodState();
|
|
23886
|
+
if (!metadata || !periodState)
|
|
23887
|
+
return null;
|
|
23888
|
+
const maxIndex = Math.max(periodState.values.length - 1, 0);
|
|
23889
|
+
const defaultInlineTexts = metadata.granularity === 'year'
|
|
23890
|
+
? {
|
|
23891
|
+
minLabel: 'Período inicial',
|
|
23892
|
+
maxLabel: 'Período final',
|
|
23893
|
+
quickPresetsLabel: 'Períodos rápidos',
|
|
23894
|
+
}
|
|
23895
|
+
: {
|
|
23896
|
+
quickPresetsLabel: 'Períodos rápidos',
|
|
23897
|
+
};
|
|
23898
|
+
return {
|
|
23899
|
+
...metadata,
|
|
23900
|
+
controlType: FieldControlType.RANGE_SLIDER,
|
|
23901
|
+
mode: 'range',
|
|
23902
|
+
min: 0,
|
|
23903
|
+
max: maxIndex,
|
|
23904
|
+
step: 1,
|
|
23905
|
+
discrete: metadata.discrete ?? true,
|
|
23906
|
+
showTicks: metadata.showTicks ?? true,
|
|
23907
|
+
showInputs: metadata.showInputs ??
|
|
23908
|
+
(metadata.granularity === 'year' &&
|
|
23909
|
+
periodState.values.every((value) => /^\d{4}$/.test(value))),
|
|
23910
|
+
prefixIcon: metadata.prefixIcon || this.defaultIcon(metadata.granularity),
|
|
23911
|
+
inlineTexts: metadata.inlineTexts ?? defaultInlineTexts,
|
|
23912
|
+
displayWith: metadata.displayWith ??
|
|
23913
|
+
((value) => this.formatPeriodLabel(periodState.values[this.boundIndex(value, maxIndex)] || '', metadata)),
|
|
23914
|
+
quickPresets: this.adaptQuickPresets(metadata.quickPresets, periodState),
|
|
23915
|
+
quickPresetsAuto: false,
|
|
23916
|
+
};
|
|
23917
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedMetadata" }] : []));
|
|
23918
|
+
ngOnInit() {
|
|
23919
|
+
super.ngOnInit();
|
|
23920
|
+
this.control().valueChanges
|
|
23921
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
23922
|
+
.subscribe((value) => {
|
|
23923
|
+
if (this.syncingFromInner)
|
|
23924
|
+
return;
|
|
23925
|
+
this.syncFromOuterValue(value);
|
|
23926
|
+
});
|
|
23927
|
+
this.sliderControl.valueChanges
|
|
23928
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
23929
|
+
.subscribe((value) => {
|
|
23930
|
+
if (this.syncingFromOuter)
|
|
23931
|
+
return;
|
|
23932
|
+
this.syncFromInnerValue(value);
|
|
23933
|
+
});
|
|
23934
|
+
}
|
|
23935
|
+
ngAfterViewInit() {
|
|
23936
|
+
super.ngAfterViewInit();
|
|
23937
|
+
this.syncInnerMetadata();
|
|
23938
|
+
this.syncFromOuterValue(this.control().value);
|
|
23939
|
+
}
|
|
23940
|
+
writeValue(value) {
|
|
23941
|
+
super.writeValue(value);
|
|
23942
|
+
this.syncFromOuterValue(value);
|
|
23943
|
+
}
|
|
23944
|
+
setInputMetadata(metadata) {
|
|
23945
|
+
this.setMetadata(metadata);
|
|
23946
|
+
this.syncInnerMetadata();
|
|
23947
|
+
this.syncFromOuterValue(this.control().value);
|
|
23948
|
+
}
|
|
23949
|
+
setMetadata(metadata) {
|
|
23950
|
+
super.setMetadata(metadata);
|
|
23951
|
+
this.syncInnerMetadata();
|
|
23952
|
+
this.syncFromOuterValue(this.control().value);
|
|
23953
|
+
}
|
|
23954
|
+
getSpecificCssClasses() {
|
|
23955
|
+
return ['pdx-inline-period-range'];
|
|
23956
|
+
}
|
|
23957
|
+
syncFromOuterValue(value) {
|
|
23958
|
+
const periodState = this.periodState();
|
|
23959
|
+
if (!periodState)
|
|
23960
|
+
return;
|
|
23961
|
+
const nextValue = this.toSliderValue(value, periodState);
|
|
23962
|
+
this.syncingFromOuter = true;
|
|
23963
|
+
try {
|
|
23964
|
+
this.sliderControl.setValue(nextValue, { emitEvent: false });
|
|
23965
|
+
}
|
|
23966
|
+
finally {
|
|
23967
|
+
this.syncingFromOuter = false;
|
|
23968
|
+
}
|
|
23969
|
+
}
|
|
23970
|
+
syncFromInnerValue(value) {
|
|
23971
|
+
const periodState = this.periodState();
|
|
23972
|
+
if (!periodState)
|
|
23973
|
+
return;
|
|
23974
|
+
const nextOuter = this.toOuterValue(value, periodState);
|
|
23975
|
+
this.syncingFromInner = true;
|
|
23976
|
+
try {
|
|
23977
|
+
this.setValue(nextOuter, { emitEvent: true });
|
|
23978
|
+
}
|
|
23979
|
+
finally {
|
|
23980
|
+
this.syncingFromInner = false;
|
|
23981
|
+
}
|
|
23982
|
+
}
|
|
23983
|
+
toSliderValue(value, periodState) {
|
|
23984
|
+
if (!Array.isArray(value) || value.length < 2)
|
|
23985
|
+
return null;
|
|
23986
|
+
const start = periodState.indexByValue.get(String(value[0]));
|
|
23987
|
+
const end = periodState.indexByValue.get(String(value[1]));
|
|
23988
|
+
if (start === undefined || end === undefined)
|
|
23989
|
+
return null;
|
|
23990
|
+
return {
|
|
23991
|
+
start: Math.min(start, end),
|
|
23992
|
+
end: Math.max(start, end),
|
|
23993
|
+
};
|
|
23994
|
+
}
|
|
23995
|
+
toOuterValue(value, periodState) {
|
|
23996
|
+
if (!value)
|
|
23997
|
+
return null;
|
|
23998
|
+
const start = this.boundIndex(value.start ?? 0, periodState.values.length - 1);
|
|
23999
|
+
const end = this.boundIndex(value.end ?? 0, periodState.values.length - 1);
|
|
24000
|
+
return [periodState.values[Math.min(start, end)], periodState.values[Math.max(start, end)]];
|
|
24001
|
+
}
|
|
24002
|
+
adaptQuickPresets(presets, periodState) {
|
|
24003
|
+
if (!Array.isArray(presets) || !presets.length)
|
|
24004
|
+
return [];
|
|
24005
|
+
return presets
|
|
24006
|
+
.map((preset) => {
|
|
24007
|
+
const start = periodState.indexByValue.get(String(preset.start));
|
|
24008
|
+
const end = periodState.indexByValue.get(String(preset.end));
|
|
24009
|
+
if (start === undefined || end === undefined)
|
|
24010
|
+
return null;
|
|
24011
|
+
return {
|
|
24012
|
+
id: preset.id,
|
|
24013
|
+
label: preset.label,
|
|
24014
|
+
start: Math.min(start, end),
|
|
24015
|
+
end: Math.max(start, end),
|
|
24016
|
+
};
|
|
24017
|
+
})
|
|
24018
|
+
.filter((preset) => Boolean(preset));
|
|
24019
|
+
}
|
|
24020
|
+
formatPeriodLabel(value, metadata) {
|
|
24021
|
+
if (!value)
|
|
24022
|
+
return '';
|
|
24023
|
+
switch (metadata.granularity) {
|
|
24024
|
+
case 'month':
|
|
24025
|
+
return this.formatMonthValue(value, metadata);
|
|
24026
|
+
case 'quarter':
|
|
24027
|
+
case 'fiscal-quarter':
|
|
24028
|
+
return value.replace('-', '/');
|
|
24029
|
+
case 'fiscal-year':
|
|
24030
|
+
return value;
|
|
24031
|
+
case 'year':
|
|
24032
|
+
return value;
|
|
24033
|
+
default:
|
|
24034
|
+
return value;
|
|
24035
|
+
}
|
|
24036
|
+
}
|
|
24037
|
+
formatMonthValue(value, metadata) {
|
|
24038
|
+
const match = /^(\d{4})-(\d{2})$/.exec(value);
|
|
24039
|
+
if (!match)
|
|
24040
|
+
return value;
|
|
24041
|
+
const [, year, month] = match;
|
|
24042
|
+
const monthIndex = Number(month) - 1;
|
|
24043
|
+
const customLabels = Array.isArray(metadata.monthLabels) ? metadata.monthLabels : [];
|
|
24044
|
+
const labelFromConfig = customLabels[monthIndex];
|
|
24045
|
+
if (labelFromConfig)
|
|
24046
|
+
return `${labelFromConfig}/${year}`;
|
|
24047
|
+
const formatter = new Intl.DateTimeFormat(metadata.locale || 'pt-BR', {
|
|
24048
|
+
month: 'short',
|
|
24049
|
+
});
|
|
24050
|
+
const raw = formatter.format(new Date(Number(year), monthIndex, 1)).replace('.', '');
|
|
24051
|
+
return `${raw.charAt(0).toUpperCase()}${raw.slice(1)}/${year}`;
|
|
24052
|
+
}
|
|
24053
|
+
defaultIcon(granularity) {
|
|
24054
|
+
switch (granularity) {
|
|
24055
|
+
case 'month':
|
|
24056
|
+
return 'calendar_view_month';
|
|
24057
|
+
case 'quarter':
|
|
24058
|
+
case 'fiscal-quarter':
|
|
24059
|
+
return 'date_range';
|
|
24060
|
+
case 'year':
|
|
24061
|
+
case 'fiscal-year':
|
|
24062
|
+
return 'calendar_today';
|
|
24063
|
+
default:
|
|
24064
|
+
return 'date_range';
|
|
24065
|
+
}
|
|
24066
|
+
}
|
|
24067
|
+
buildPeriods(metadata) {
|
|
24068
|
+
switch (metadata.granularity) {
|
|
24069
|
+
case 'month':
|
|
24070
|
+
return this.buildMonthPeriods(metadata.min, metadata.max);
|
|
24071
|
+
case 'quarter':
|
|
24072
|
+
case 'fiscal-quarter':
|
|
24073
|
+
return this.buildQuarterPeriods(metadata.min, metadata.max);
|
|
24074
|
+
case 'year':
|
|
24075
|
+
case 'fiscal-year':
|
|
24076
|
+
return this.buildYearPeriods(metadata.min, metadata.max);
|
|
24077
|
+
default:
|
|
24078
|
+
return [];
|
|
24079
|
+
}
|
|
24080
|
+
}
|
|
24081
|
+
buildMonthPeriods(min, max) {
|
|
24082
|
+
const start = this.parseYearMonth(min);
|
|
24083
|
+
const end = this.parseYearMonth(max);
|
|
24084
|
+
if (!start || !end)
|
|
24085
|
+
return [];
|
|
24086
|
+
const periods = [];
|
|
24087
|
+
let current = start.year * 12 + (start.month - 1);
|
|
24088
|
+
const last = end.year * 12 + (end.month - 1);
|
|
24089
|
+
while (current <= last) {
|
|
24090
|
+
const year = Math.floor(current / 12);
|
|
24091
|
+
const month = (current % 12) + 1;
|
|
24092
|
+
periods.push(`${year}-${String(month).padStart(2, '0')}`);
|
|
24093
|
+
current += 1;
|
|
24094
|
+
}
|
|
24095
|
+
return periods;
|
|
24096
|
+
}
|
|
24097
|
+
buildQuarterPeriods(min, max) {
|
|
24098
|
+
const start = this.parseQuarter(min);
|
|
24099
|
+
const end = this.parseQuarter(max);
|
|
24100
|
+
if (!start || !end)
|
|
24101
|
+
return [];
|
|
24102
|
+
const periods = [];
|
|
24103
|
+
let currentYear = start.year;
|
|
24104
|
+
let currentQuarter = start.quarter;
|
|
24105
|
+
while (currentYear < end.year ||
|
|
24106
|
+
(currentYear === end.year && currentQuarter <= end.quarter)) {
|
|
24107
|
+
periods.push(`${currentYear}-Q${currentQuarter}`);
|
|
24108
|
+
currentQuarter += 1;
|
|
24109
|
+
if (currentQuarter > 4) {
|
|
24110
|
+
currentQuarter = 1;
|
|
24111
|
+
currentYear += 1;
|
|
24112
|
+
}
|
|
24113
|
+
}
|
|
24114
|
+
return periods;
|
|
24115
|
+
}
|
|
24116
|
+
buildYearPeriods(min, max) {
|
|
24117
|
+
const start = this.parseYear(min);
|
|
24118
|
+
const end = this.parseYear(max);
|
|
24119
|
+
if (start === null || end === null)
|
|
24120
|
+
return [];
|
|
24121
|
+
const periods = [];
|
|
24122
|
+
for (let year = Math.min(start, end); year <= Math.max(start, end); year += 1) {
|
|
24123
|
+
periods.push(String(year));
|
|
24124
|
+
}
|
|
24125
|
+
return periods;
|
|
24126
|
+
}
|
|
24127
|
+
parseYearMonth(value) {
|
|
24128
|
+
if (!value)
|
|
24129
|
+
return null;
|
|
24130
|
+
const match = /^(\d{4})-(\d{2})$/.exec(String(value).trim());
|
|
24131
|
+
if (!match)
|
|
24132
|
+
return null;
|
|
24133
|
+
const year = Number(match[1]);
|
|
24134
|
+
const month = Number(match[2]);
|
|
24135
|
+
if (!Number.isFinite(year) || !Number.isFinite(month) || month < 1 || month > 12) {
|
|
24136
|
+
return null;
|
|
24137
|
+
}
|
|
24138
|
+
return { year, month };
|
|
24139
|
+
}
|
|
24140
|
+
parseQuarter(value) {
|
|
24141
|
+
if (!value)
|
|
24142
|
+
return null;
|
|
24143
|
+
const match = /^(\d{4})-Q([1-4])$/i.exec(String(value).trim());
|
|
24144
|
+
if (!match)
|
|
24145
|
+
return null;
|
|
24146
|
+
return { year: Number(match[1]), quarter: Number(match[2]) };
|
|
24147
|
+
}
|
|
24148
|
+
parseYear(value) {
|
|
24149
|
+
if (!value)
|
|
24150
|
+
return null;
|
|
24151
|
+
const normalized = String(value).trim().replace(/^FY/i, '');
|
|
24152
|
+
const year = Number(normalized);
|
|
24153
|
+
return Number.isFinite(year) ? year : null;
|
|
24154
|
+
}
|
|
24155
|
+
boundIndex(value, max) {
|
|
24156
|
+
const numeric = Number.isFinite(Number(value)) ? Number(value) : 0;
|
|
24157
|
+
return Math.min(max, Math.max(0, Math.round(numeric)));
|
|
24158
|
+
}
|
|
24159
|
+
syncInnerMetadata() {
|
|
24160
|
+
const metadata = this.resolvedMetadata();
|
|
24161
|
+
if (!metadata || !this.innerComponent)
|
|
24162
|
+
return;
|
|
24163
|
+
this.innerComponent.setMetadata(metadata);
|
|
24164
|
+
}
|
|
24165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlinePeriodRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
24166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: InlinePeriodRangeComponent, isStandalone: true, selector: "pdx-inline-period-range", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode" }, host: { properties: { "style.display": "visible ? null : \"none\"", "attr.aria-hidden": "visible ? null : \"true\"", "attr.data-field-type": "\"inlinePeriodRange\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
|
|
24167
|
+
{
|
|
24168
|
+
provide: NG_VALUE_ACCESSOR,
|
|
24169
|
+
useExisting: forwardRef(() => InlinePeriodRangeComponent),
|
|
24170
|
+
multi: true,
|
|
24171
|
+
},
|
|
24172
|
+
], viewQueries: [{ propertyName: "innerComponent", first: true, predicate: InlineRangeSliderComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
24173
|
+
<pdx-inline-range-slider
|
|
24174
|
+
[formControl]="sliderControl"
|
|
24175
|
+
[readonlyMode]="readonlyMode"
|
|
24176
|
+
[disabledMode]="disabledMode"
|
|
24177
|
+
[visible]="visible"
|
|
24178
|
+
[presentationMode]="presentationMode"
|
|
24179
|
+
/>
|
|
24180
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: InlineRangeSliderComponent, selector: "pdx-inline-range-slider", inputs: ["readonlyMode", "disabledMode", "visible", "presentationMode"] }] });
|
|
24181
|
+
}
|
|
24182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlinePeriodRangeComponent, decorators: [{
|
|
24183
|
+
type: Component,
|
|
24184
|
+
args: [{
|
|
24185
|
+
selector: 'pdx-inline-period-range',
|
|
24186
|
+
standalone: true,
|
|
24187
|
+
imports: [CommonModule, ReactiveFormsModule, InlineRangeSliderComponent],
|
|
24188
|
+
template: `
|
|
24189
|
+
<pdx-inline-range-slider
|
|
24190
|
+
[formControl]="sliderControl"
|
|
24191
|
+
[readonlyMode]="readonlyMode"
|
|
24192
|
+
[disabledMode]="disabledMode"
|
|
24193
|
+
[visible]="visible"
|
|
24194
|
+
[presentationMode]="presentationMode"
|
|
24195
|
+
/>
|
|
24196
|
+
`,
|
|
24197
|
+
providers: [
|
|
24198
|
+
{
|
|
24199
|
+
provide: NG_VALUE_ACCESSOR,
|
|
24200
|
+
useExisting: forwardRef(() => InlinePeriodRangeComponent),
|
|
24201
|
+
multi: true,
|
|
24202
|
+
},
|
|
24203
|
+
],
|
|
24204
|
+
host: {
|
|
24205
|
+
'[style.display]': 'visible ? null : "none"',
|
|
24206
|
+
'[attr.aria-hidden]': 'visible ? null : "true"',
|
|
24207
|
+
'[attr.data-field-type]': '"inlinePeriodRange"',
|
|
24208
|
+
'[attr.data-field-name]': 'metadata()?.name',
|
|
24209
|
+
'[attr.data-component-id]': 'componentId()',
|
|
24210
|
+
},
|
|
24211
|
+
}]
|
|
24212
|
+
}], propDecorators: { innerComponent: [{
|
|
24213
|
+
type: ViewChild,
|
|
24214
|
+
args: [InlineRangeSliderComponent]
|
|
24215
|
+
}], readonlyMode: [{
|
|
24216
|
+
type: Input
|
|
24217
|
+
}], disabledMode: [{
|
|
24218
|
+
type: Input
|
|
24219
|
+
}], visible: [{
|
|
24220
|
+
type: Input
|
|
24221
|
+
}], presentationMode: [{
|
|
24222
|
+
type: Input
|
|
24223
|
+
}] } });
|
|
24224
|
+
|
|
24225
|
+
class InlineYearRangeComponent extends SimpleBaseInputComponent {
|
|
24226
|
+
innerComponent;
|
|
24227
|
+
readonlyMode = false;
|
|
24228
|
+
disabledMode = false;
|
|
24229
|
+
visible = true;
|
|
24230
|
+
presentationMode = false;
|
|
24231
|
+
resolvedMetadata = computed(() => {
|
|
24232
|
+
const metadata = this.metadata();
|
|
24233
|
+
if (!metadata)
|
|
24234
|
+
return null;
|
|
24235
|
+
const maxYear = Number.isFinite(Number(metadata.max))
|
|
24236
|
+
? Number(metadata.max)
|
|
24237
|
+
: new Date().getFullYear();
|
|
24238
|
+
const minYear = Number.isFinite(Number(metadata.min))
|
|
24239
|
+
? Number(metadata.min)
|
|
24240
|
+
: Math.max(2000, maxYear - 10);
|
|
24241
|
+
const boundedMin = Math.min(minYear, maxYear);
|
|
24242
|
+
const boundedMax = Math.max(maxYear, minYear);
|
|
24243
|
+
const fullLabel = metadata.quickPresetsLabels?.full ||
|
|
24244
|
+
(boundedMin === boundedMax ? String(boundedMax) : 'Todo o período');
|
|
24245
|
+
const currentLabel = metadata.quickPresetsLabels?.current || String(boundedMax);
|
|
24246
|
+
const previousYear = Math.max(boundedMin, boundedMax - 1);
|
|
24247
|
+
const previousLabel = metadata.quickPresetsLabels?.previous || String(previousYear);
|
|
24248
|
+
const recentStart = Math.max(boundedMin, boundedMax - 2);
|
|
24249
|
+
const recentLabel = metadata.quickPresetsLabels?.recent ||
|
|
24250
|
+
(recentStart === boundedMax ? String(boundedMax) : `${recentStart}-${boundedMax}`);
|
|
24251
|
+
const quickPresets = metadata.quickPresets ??
|
|
24252
|
+
[
|
|
24253
|
+
{
|
|
24254
|
+
id: 'full',
|
|
24255
|
+
label: fullLabel,
|
|
24256
|
+
start: boundedMin,
|
|
24257
|
+
end: boundedMax,
|
|
24258
|
+
},
|
|
24259
|
+
{
|
|
24260
|
+
id: 'current',
|
|
24261
|
+
label: currentLabel,
|
|
24262
|
+
start: boundedMax,
|
|
24263
|
+
end: boundedMax,
|
|
24264
|
+
},
|
|
24265
|
+
...(previousYear < boundedMax
|
|
24266
|
+
? [
|
|
24267
|
+
{
|
|
24268
|
+
id: 'previous',
|
|
24269
|
+
label: previousLabel,
|
|
24270
|
+
start: previousYear,
|
|
24271
|
+
end: previousYear,
|
|
24272
|
+
},
|
|
24273
|
+
]
|
|
24274
|
+
: []),
|
|
24275
|
+
...(recentStart < boundedMax
|
|
24276
|
+
? [
|
|
24277
|
+
{
|
|
24278
|
+
id: 'recent',
|
|
24279
|
+
label: recentLabel,
|
|
24280
|
+
start: recentStart,
|
|
24281
|
+
end: boundedMax,
|
|
24282
|
+
},
|
|
24283
|
+
]
|
|
24284
|
+
: []),
|
|
24285
|
+
];
|
|
24286
|
+
return {
|
|
24287
|
+
...metadata,
|
|
24288
|
+
controlType: FieldControlType.RANGE_SLIDER,
|
|
24289
|
+
mode: 'range',
|
|
24290
|
+
min: boundedMin,
|
|
24291
|
+
max: boundedMax,
|
|
24292
|
+
step: Number.isFinite(Number(metadata.step)) ? Number(metadata.step) : 1,
|
|
24293
|
+
discrete: metadata.discrete ?? true,
|
|
24294
|
+
showTicks: metadata.showTicks ?? true,
|
|
24295
|
+
showInputs: metadata.showInputs ?? true,
|
|
24296
|
+
prefixIcon: metadata.prefixIcon || 'calendar_today',
|
|
24297
|
+
inlineTexts: metadata.inlineTexts ?? {
|
|
24298
|
+
minLabel: 'Ano inicial',
|
|
24299
|
+
maxLabel: 'Ano final',
|
|
24300
|
+
quickPresetsLabel: 'Anos rápidos',
|
|
24301
|
+
},
|
|
24302
|
+
displayWith: metadata.displayWith ??
|
|
24303
|
+
((value) => {
|
|
24304
|
+
const year = Math.round(value);
|
|
24305
|
+
return Number.isFinite(year) ? String(year) : '';
|
|
24306
|
+
}),
|
|
24307
|
+
quickPresets,
|
|
24308
|
+
quickPresetsAuto: false,
|
|
24309
|
+
};
|
|
24310
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedMetadata" }] : []));
|
|
24311
|
+
getSpecificCssClasses() {
|
|
24312
|
+
return ['pdx-inline-year-range'];
|
|
24313
|
+
}
|
|
24314
|
+
ngAfterViewInit() {
|
|
24315
|
+
super.ngAfterViewInit();
|
|
24316
|
+
this.syncInnerMetadata();
|
|
24317
|
+
}
|
|
24318
|
+
setInputMetadata(metadata) {
|
|
24319
|
+
this.setMetadata(metadata);
|
|
24320
|
+
this.syncInnerMetadata();
|
|
24321
|
+
}
|
|
24322
|
+
setMetadata(metadata) {
|
|
24323
|
+
super.setMetadata(metadata);
|
|
24324
|
+
this.syncInnerMetadata();
|
|
24325
|
+
}
|
|
24326
|
+
syncInnerMetadata() {
|
|
24327
|
+
const metadata = this.resolvedMetadata();
|
|
24328
|
+
if (!metadata || !this.innerComponent)
|
|
24329
|
+
return;
|
|
24330
|
+
this.innerComponent.setMetadata(metadata);
|
|
24331
|
+
}
|
|
24332
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlineYearRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
24333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: InlineYearRangeComponent, isStandalone: true, selector: "pdx-inline-year-range", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode" }, host: { properties: { "style.display": "visible ? null : \"none\"", "attr.aria-hidden": "visible ? null : \"true\"", "attr.data-field-type": "\"inlineYearRange\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
|
|
24334
|
+
{
|
|
24335
|
+
provide: NG_VALUE_ACCESSOR,
|
|
24336
|
+
useExisting: forwardRef(() => InlineYearRangeComponent),
|
|
24337
|
+
multi: true,
|
|
24338
|
+
},
|
|
24339
|
+
], viewQueries: [{ propertyName: "innerComponent", first: true, predicate: InlineRangeSliderComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
24340
|
+
<pdx-inline-range-slider
|
|
24341
|
+
[formControl]="control()"
|
|
24342
|
+
[readonlyMode]="readonlyMode"
|
|
24343
|
+
[disabledMode]="disabledMode"
|
|
24344
|
+
[visible]="visible"
|
|
24345
|
+
[presentationMode]="presentationMode"
|
|
24346
|
+
/>
|
|
24347
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: InlineRangeSliderComponent, selector: "pdx-inline-range-slider", inputs: ["readonlyMode", "disabledMode", "visible", "presentationMode"] }] });
|
|
24348
|
+
}
|
|
24349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlineYearRangeComponent, decorators: [{
|
|
24350
|
+
type: Component,
|
|
24351
|
+
args: [{
|
|
24352
|
+
selector: 'pdx-inline-year-range',
|
|
24353
|
+
standalone: true,
|
|
24354
|
+
imports: [CommonModule, ReactiveFormsModule, InlineRangeSliderComponent],
|
|
24355
|
+
template: `
|
|
24356
|
+
<pdx-inline-range-slider
|
|
24357
|
+
[formControl]="control()"
|
|
24358
|
+
[readonlyMode]="readonlyMode"
|
|
24359
|
+
[disabledMode]="disabledMode"
|
|
24360
|
+
[visible]="visible"
|
|
24361
|
+
[presentationMode]="presentationMode"
|
|
24362
|
+
/>
|
|
24363
|
+
`,
|
|
24364
|
+
providers: [
|
|
24365
|
+
{
|
|
24366
|
+
provide: NG_VALUE_ACCESSOR,
|
|
24367
|
+
useExisting: forwardRef(() => InlineYearRangeComponent),
|
|
24368
|
+
multi: true,
|
|
24369
|
+
},
|
|
24370
|
+
],
|
|
24371
|
+
host: {
|
|
24372
|
+
'[style.display]': 'visible ? null : "none"',
|
|
24373
|
+
'[attr.aria-hidden]': 'visible ? null : "true"',
|
|
24374
|
+
'[attr.data-field-type]': '"inlineYearRange"',
|
|
24375
|
+
'[attr.data-field-name]': 'metadata()?.name',
|
|
24376
|
+
'[attr.data-component-id]': 'componentId()',
|
|
24377
|
+
},
|
|
24378
|
+
}]
|
|
24379
|
+
}], propDecorators: { innerComponent: [{
|
|
24380
|
+
type: ViewChild,
|
|
24381
|
+
args: [InlineRangeSliderComponent]
|
|
24382
|
+
}], readonlyMode: [{
|
|
24383
|
+
type: Input
|
|
24384
|
+
}], disabledMode: [{
|
|
24385
|
+
type: Input
|
|
24386
|
+
}], visible: [{
|
|
24387
|
+
type: Input
|
|
24388
|
+
}], presentationMode: [{
|
|
24389
|
+
type: Input
|
|
24390
|
+
}] } });
|
|
24391
|
+
|
|
24392
|
+
class InlineMonthRangeComponent extends SimpleBaseInputComponent {
|
|
24393
|
+
innerComponent;
|
|
24394
|
+
readonlyMode = false;
|
|
24395
|
+
disabledMode = false;
|
|
24396
|
+
visible = true;
|
|
24397
|
+
presentationMode = false;
|
|
24398
|
+
resolvedMetadata = computed(() => {
|
|
24399
|
+
const metadata = this.metadata();
|
|
24400
|
+
if (!metadata)
|
|
24401
|
+
return null;
|
|
24402
|
+
const labels = this.resolveMonthLabels(metadata);
|
|
24403
|
+
const fullLabel = metadata.quickPresetsLabels?.full || 'Ano todo';
|
|
24404
|
+
const firstHalfLabel = metadata.quickPresetsLabels?.firstHalf || 'Jan-Jun';
|
|
24405
|
+
const secondHalfLabel = metadata.quickPresetsLabels?.secondHalf || 'Jul-Dez';
|
|
24406
|
+
return {
|
|
24407
|
+
...metadata,
|
|
24408
|
+
controlType: FieldControlType.RANGE_SLIDER,
|
|
24409
|
+
mode: 'range',
|
|
24410
|
+
min: 1,
|
|
24411
|
+
max: 12,
|
|
24412
|
+
step: 1,
|
|
24413
|
+
discrete: metadata.discrete ?? true,
|
|
24414
|
+
showTicks: metadata.showTicks ?? true,
|
|
24415
|
+
showInputs: metadata.showInputs ?? false,
|
|
24416
|
+
prefixIcon: metadata.prefixIcon || 'calendar_view_month',
|
|
24417
|
+
inlineTexts: metadata.inlineTexts ?? {
|
|
24418
|
+
quickPresetsLabel: 'Períodos rápidos',
|
|
24419
|
+
},
|
|
24420
|
+
displayWith: metadata.displayWith ??
|
|
24421
|
+
((value) => {
|
|
24422
|
+
const monthNumber = Math.min(12, Math.max(1, Math.round(value)));
|
|
24423
|
+
return labels[monthNumber - 1] || String(monthNumber);
|
|
24424
|
+
}),
|
|
24425
|
+
quickPresets: metadata.quickPresets ??
|
|
24426
|
+
[
|
|
24427
|
+
{ id: 'full', label: fullLabel, start: 1, end: 12 },
|
|
24428
|
+
{ id: 'q1', label: metadata.quickPresetsLabels?.q1 || 'Q1', start: 1, end: 3 },
|
|
24429
|
+
{ id: 'q2', label: metadata.quickPresetsLabels?.q2 || 'Q2', start: 4, end: 6 },
|
|
24430
|
+
{ id: 'q3', label: metadata.quickPresetsLabels?.q3 || 'Q3', start: 7, end: 9 },
|
|
24431
|
+
{ id: 'q4', label: metadata.quickPresetsLabels?.q4 || 'Q4', start: 10, end: 12 },
|
|
24432
|
+
{ id: 'first-half', label: firstHalfLabel, start: 1, end: 6 },
|
|
24433
|
+
{ id: 'second-half', label: secondHalfLabel, start: 7, end: 12 },
|
|
24434
|
+
],
|
|
24435
|
+
quickPresetsAuto: false,
|
|
24436
|
+
};
|
|
24437
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedMetadata" }] : []));
|
|
24438
|
+
getSpecificCssClasses() {
|
|
24439
|
+
return ['pdx-inline-month-range'];
|
|
24440
|
+
}
|
|
24441
|
+
ngAfterViewInit() {
|
|
24442
|
+
super.ngAfterViewInit();
|
|
24443
|
+
this.syncInnerMetadata();
|
|
24444
|
+
}
|
|
24445
|
+
setInputMetadata(metadata) {
|
|
24446
|
+
this.setMetadata(metadata);
|
|
24447
|
+
this.syncInnerMetadata();
|
|
24448
|
+
}
|
|
24449
|
+
setMetadata(metadata) {
|
|
24450
|
+
super.setMetadata(metadata);
|
|
24451
|
+
this.syncInnerMetadata();
|
|
24452
|
+
}
|
|
24453
|
+
resolveMonthLabels(metadata) {
|
|
24454
|
+
if (Array.isArray(metadata.monthLabels) && metadata.monthLabels.length >= 12) {
|
|
24455
|
+
return metadata.monthLabels.slice(0, 12);
|
|
24456
|
+
}
|
|
24457
|
+
const formatter = new Intl.DateTimeFormat('pt-BR', { month: 'short' });
|
|
24458
|
+
return Array.from({ length: 12 }, (_, index) => {
|
|
24459
|
+
const raw = formatter.format(new Date(2020, index, 1)).replace('.', '');
|
|
24460
|
+
return raw.charAt(0).toUpperCase() + raw.slice(1);
|
|
24461
|
+
});
|
|
24462
|
+
}
|
|
24463
|
+
syncInnerMetadata() {
|
|
24464
|
+
const metadata = this.resolvedMetadata();
|
|
24465
|
+
if (!metadata || !this.innerComponent)
|
|
24466
|
+
return;
|
|
24467
|
+
this.innerComponent.setMetadata(metadata);
|
|
24468
|
+
}
|
|
24469
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlineMonthRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
24470
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: InlineMonthRangeComponent, isStandalone: true, selector: "pdx-inline-month-range", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode" }, host: { properties: { "style.display": "visible ? null : \"none\"", "attr.aria-hidden": "visible ? null : \"true\"", "attr.data-field-type": "\"inlineMonthRange\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
|
|
24471
|
+
{
|
|
24472
|
+
provide: NG_VALUE_ACCESSOR,
|
|
24473
|
+
useExisting: forwardRef(() => InlineMonthRangeComponent),
|
|
24474
|
+
multi: true,
|
|
24475
|
+
},
|
|
24476
|
+
], viewQueries: [{ propertyName: "innerComponent", first: true, predicate: InlineRangeSliderComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
24477
|
+
<pdx-inline-range-slider
|
|
24478
|
+
[formControl]="control()"
|
|
24479
|
+
[readonlyMode]="readonlyMode"
|
|
24480
|
+
[disabledMode]="disabledMode"
|
|
24481
|
+
[visible]="visible"
|
|
24482
|
+
[presentationMode]="presentationMode"
|
|
24483
|
+
/>
|
|
24484
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: InlineRangeSliderComponent, selector: "pdx-inline-range-slider", inputs: ["readonlyMode", "disabledMode", "visible", "presentationMode"] }] });
|
|
24485
|
+
}
|
|
24486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: InlineMonthRangeComponent, decorators: [{
|
|
24487
|
+
type: Component,
|
|
24488
|
+
args: [{
|
|
24489
|
+
selector: 'pdx-inline-month-range',
|
|
24490
|
+
standalone: true,
|
|
24491
|
+
imports: [CommonModule, ReactiveFormsModule, InlineRangeSliderComponent],
|
|
24492
|
+
template: `
|
|
24493
|
+
<pdx-inline-range-slider
|
|
24494
|
+
[formControl]="control()"
|
|
24495
|
+
[readonlyMode]="readonlyMode"
|
|
24496
|
+
[disabledMode]="disabledMode"
|
|
24497
|
+
[visible]="visible"
|
|
24498
|
+
[presentationMode]="presentationMode"
|
|
24499
|
+
/>
|
|
24500
|
+
`,
|
|
24501
|
+
providers: [
|
|
24502
|
+
{
|
|
24503
|
+
provide: NG_VALUE_ACCESSOR,
|
|
24504
|
+
useExisting: forwardRef(() => InlineMonthRangeComponent),
|
|
24505
|
+
multi: true,
|
|
24506
|
+
},
|
|
24507
|
+
],
|
|
24508
|
+
host: {
|
|
24509
|
+
'[style.display]': 'visible ? null : "none"',
|
|
24510
|
+
'[attr.aria-hidden]': 'visible ? null : "true"',
|
|
24511
|
+
'[attr.data-field-type]': '"inlineMonthRange"',
|
|
24512
|
+
'[attr.data-field-name]': 'metadata()?.name',
|
|
24513
|
+
'[attr.data-component-id]': 'componentId()',
|
|
24514
|
+
},
|
|
24515
|
+
}]
|
|
24516
|
+
}], propDecorators: { innerComponent: [{
|
|
24517
|
+
type: ViewChild,
|
|
24518
|
+
args: [InlineRangeSliderComponent]
|
|
24519
|
+
}], readonlyMode: [{
|
|
24520
|
+
type: Input
|
|
24521
|
+
}], disabledMode: [{
|
|
24522
|
+
type: Input
|
|
24523
|
+
}], visible: [{
|
|
24524
|
+
type: Input
|
|
24525
|
+
}], presentationMode: [{
|
|
24526
|
+
type: Input
|
|
24527
|
+
}] } });
|
|
24528
|
+
|
|
23676
24529
|
class InlineDateComponent extends MaterialDatepickerComponent {
|
|
23677
24530
|
inputEl;
|
|
23678
24531
|
measureEl;
|
|
@@ -45619,6 +46472,60 @@ const PDX_INLINE_RANGE_SLIDER_COMPONENT_METADATA = {
|
|
|
45619
46472
|
lib: '@praxisui/dynamic-fields',
|
|
45620
46473
|
};
|
|
45621
46474
|
|
|
46475
|
+
const PDX_INLINE_PERIOD_RANGE_COMPONENT_METADATA = {
|
|
46476
|
+
id: 'pdx-inline-period-range',
|
|
46477
|
+
selector: 'pdx-inline-period-range',
|
|
46478
|
+
component: InlinePeriodRangeComponent,
|
|
46479
|
+
friendlyName: 'Inline Period Range',
|
|
46480
|
+
description: 'Faixa temporal corporativa por granularidade, cobrindo meses, trimestres, anos e períodos fiscais em um contrato inline canônico.',
|
|
46481
|
+
icon: 'date_range',
|
|
46482
|
+
inputs: [
|
|
46483
|
+
{ name: 'metadata', type: 'InlinePeriodRangeMetadata', description: 'Configuração do campo' },
|
|
46484
|
+
{ name: 'readonlyMode', type: 'boolean', default: false, description: 'Define modo somente leitura' },
|
|
46485
|
+
{ name: 'disabledMode', type: 'boolean', default: false, description: 'Desabilita o campo' },
|
|
46486
|
+
{ name: 'visible', type: 'boolean', default: true, description: 'Controla a visibilidade' },
|
|
46487
|
+
{ name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentação' },
|
|
46488
|
+
],
|
|
46489
|
+
tags: ['widget', 'field', 'period', 'range', 'filter', 'inline', 'temporal'],
|
|
46490
|
+
lib: '@praxisui/dynamic-fields',
|
|
46491
|
+
};
|
|
46492
|
+
|
|
46493
|
+
const PDX_INLINE_YEAR_RANGE_COMPONENT_METADATA = {
|
|
46494
|
+
id: 'pdx-inline-year-range',
|
|
46495
|
+
selector: 'pdx-inline-year-range',
|
|
46496
|
+
component: InlineYearRangeComponent,
|
|
46497
|
+
friendlyName: 'Inline Year Range',
|
|
46498
|
+
description: 'Faixa anual compacta para filtros inline corporativos, com slider dedicado, presets por período recente e leitura semântica orientada a analytics.',
|
|
46499
|
+
icon: 'calendar_today',
|
|
46500
|
+
inputs: [
|
|
46501
|
+
{ name: 'metadata', type: 'InlineYearRangeMetadata', description: 'Configuração do campo' },
|
|
46502
|
+
{ name: 'readonlyMode', type: 'boolean', default: false, description: 'Define modo somente leitura' },
|
|
46503
|
+
{ name: 'disabledMode', type: 'boolean', default: false, description: 'Desabilita o campo' },
|
|
46504
|
+
{ name: 'visible', type: 'boolean', default: true, description: 'Controla a visibilidade' },
|
|
46505
|
+
{ name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentação' },
|
|
46506
|
+
],
|
|
46507
|
+
tags: ['widget', 'field', 'year', 'range', 'filter', 'inline'],
|
|
46508
|
+
lib: '@praxisui/dynamic-fields',
|
|
46509
|
+
};
|
|
46510
|
+
|
|
46511
|
+
const PDX_INLINE_MONTH_RANGE_COMPONENT_METADATA = {
|
|
46512
|
+
id: 'pdx-inline-month-range',
|
|
46513
|
+
selector: 'pdx-inline-month-range',
|
|
46514
|
+
component: InlineMonthRangeComponent,
|
|
46515
|
+
friendlyName: 'Inline Month Range',
|
|
46516
|
+
description: 'Faixa mensal compacta para filtros inline, com leitura por nomes de mês e atalhos de trimestre/semestre para dashboards analíticos.',
|
|
46517
|
+
icon: 'calendar_view_month',
|
|
46518
|
+
inputs: [
|
|
46519
|
+
{ name: 'metadata', type: 'InlineMonthRangeMetadata', description: 'Configuração do campo' },
|
|
46520
|
+
{ name: 'readonlyMode', type: 'boolean', default: false, description: 'Define modo somente leitura' },
|
|
46521
|
+
{ name: 'disabledMode', type: 'boolean', default: false, description: 'Desabilita o campo' },
|
|
46522
|
+
{ name: 'visible', type: 'boolean', default: true, description: 'Controla a visibilidade' },
|
|
46523
|
+
{ name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentação' },
|
|
46524
|
+
],
|
|
46525
|
+
tags: ['widget', 'field', 'month', 'range', 'filter', 'inline'],
|
|
46526
|
+
lib: '@praxisui/dynamic-fields',
|
|
46527
|
+
};
|
|
46528
|
+
|
|
45622
46529
|
const PDX_INLINE_DATE_COMPONENT_METADATA = {
|
|
45623
46530
|
id: 'pdx-inline-date',
|
|
45624
46531
|
selector: 'pdx-inline-date',
|
|
@@ -47047,6 +47954,1133 @@ function providePraxisDynamicFieldsCoreNoDefaults() {
|
|
|
47047
47954
|
];
|
|
47048
47955
|
}
|
|
47049
47956
|
|
|
47957
|
+
const DYNAMIC_FIELD_DEFAULT_STATE_RECIPE = {
|
|
47958
|
+
state: 'default',
|
|
47959
|
+
label: 'Default',
|
|
47960
|
+
supported: true,
|
|
47961
|
+
};
|
|
47962
|
+
const DYNAMIC_FIELD_FILLED_STATE_RECIPE = {
|
|
47963
|
+
state: 'filled',
|
|
47964
|
+
label: 'Filled',
|
|
47965
|
+
supported: true,
|
|
47966
|
+
note: 'Consumer or playground should provide a representative value for the field.',
|
|
47967
|
+
};
|
|
47968
|
+
const DYNAMIC_FIELD_DISABLED_STATE_RECIPE = {
|
|
47969
|
+
state: 'disabled',
|
|
47970
|
+
label: 'Disabled',
|
|
47971
|
+
supported: true,
|
|
47972
|
+
metadataPatch: { disabled: true },
|
|
47973
|
+
};
|
|
47974
|
+
const DYNAMIC_FIELD_READONLY_STATE_RECIPE = {
|
|
47975
|
+
state: 'readonly',
|
|
47976
|
+
label: 'Readonly',
|
|
47977
|
+
supported: true,
|
|
47978
|
+
metadataPatch: { readonly: true },
|
|
47979
|
+
};
|
|
47980
|
+
const DYNAMIC_FIELD_ERROR_STATE_RECIPE = {
|
|
47981
|
+
state: 'error',
|
|
47982
|
+
label: 'Error',
|
|
47983
|
+
supported: true,
|
|
47984
|
+
metadataPatch: { required: true },
|
|
47985
|
+
errorMessage: 'Governed sample error state for playground preview.',
|
|
47986
|
+
};
|
|
47987
|
+
const DYNAMIC_FIELD_BASE_STATE_RECIPES = [
|
|
47988
|
+
DYNAMIC_FIELD_DEFAULT_STATE_RECIPE,
|
|
47989
|
+
DYNAMIC_FIELD_FILLED_STATE_RECIPE,
|
|
47990
|
+
DYNAMIC_FIELD_DISABLED_STATE_RECIPE,
|
|
47991
|
+
DYNAMIC_FIELD_READONLY_STATE_RECIPE,
|
|
47992
|
+
DYNAMIC_FIELD_ERROR_STATE_RECIPE,
|
|
47993
|
+
];
|
|
47994
|
+
function createDynamicFieldPreviewRecipe(input) {
|
|
47995
|
+
return {
|
|
47996
|
+
recipeId: input.recipeId,
|
|
47997
|
+
fieldName: input.fieldName,
|
|
47998
|
+
label: input.label,
|
|
47999
|
+
description: input.description,
|
|
48000
|
+
baseMetadata: {
|
|
48001
|
+
name: input.fieldName,
|
|
48002
|
+
label: input.label,
|
|
48003
|
+
controlType: input.controlType,
|
|
48004
|
+
...(input.metadata ?? {}),
|
|
48005
|
+
},
|
|
48006
|
+
states: input.states ? [...input.states] : [...DYNAMIC_FIELD_BASE_STATE_RECIPES],
|
|
48007
|
+
};
|
|
48008
|
+
}
|
|
48009
|
+
|
|
48010
|
+
const PRIMARY_CATALOG_SLUG = 'dynamic-fields-field-catalog';
|
|
48011
|
+
const INLINE_CATALOG_SLUG = 'dynamic-fields-inline-filter-catalog';
|
|
48012
|
+
const OVERVIEW_SLUG = 'dynamic-fields-overview';
|
|
48013
|
+
const SELECTION_GUIDE_SLUG = 'dynamic-fields-field-selection-guide';
|
|
48014
|
+
const INLINE_SELECTION_GUIDE_SLUG = 'dynamic-fields-inline-filter-selection-guide';
|
|
48015
|
+
const DEFAULT_A11Y_NOTES = [
|
|
48016
|
+
'Use labels claros e nao dependa apenas de placeholder.',
|
|
48017
|
+
'Garanta foco visivel, contraste AA e mensagens de erro textuais.',
|
|
48018
|
+
];
|
|
48019
|
+
const DEFAULT_THEMING_NOTES = [
|
|
48020
|
+
'O preview deve respeitar tokens do host e nao introduzir skin isolada da landing.',
|
|
48021
|
+
];
|
|
48022
|
+
function detailFragment(controlType) {
|
|
48023
|
+
return controlType.toLowerCase().replace(/[^a-z0-9-]+/g, '-');
|
|
48024
|
+
}
|
|
48025
|
+
function jsonApiPath(relativePath) {
|
|
48026
|
+
return `projects/praxis-dynamic-fields/src/lib/components/${relativePath}`;
|
|
48027
|
+
}
|
|
48028
|
+
function createEntry(input) {
|
|
48029
|
+
const states = input.states ?? ['default', 'filled', 'disabled', 'readonly', 'error'];
|
|
48030
|
+
return {
|
|
48031
|
+
id: input.id,
|
|
48032
|
+
controlType: input.controlType,
|
|
48033
|
+
track: input.track,
|
|
48034
|
+
family: input.family,
|
|
48035
|
+
status: input.status ?? 'stable',
|
|
48036
|
+
friendlyName: input.friendlyName,
|
|
48037
|
+
description: input.description,
|
|
48038
|
+
tags: input.tags,
|
|
48039
|
+
keywords: input.keywords ?? input.tags,
|
|
48040
|
+
valueShape: input.valueShape,
|
|
48041
|
+
recommendedWhen: input.recommendedWhen,
|
|
48042
|
+
avoidWhen: input.avoidWhen,
|
|
48043
|
+
dataSourceKind: input.dataSourceKind,
|
|
48044
|
+
supportsStates: states,
|
|
48045
|
+
docs: {
|
|
48046
|
+
catalogSlug: input.catalogSlug ?? (input.track === 'inline-filter' ? INLINE_CATALOG_SLUG : PRIMARY_CATALOG_SLUG),
|
|
48047
|
+
detailFragment: input.detailFragment ?? detailFragment(input.controlType),
|
|
48048
|
+
selectionGuideSlug: input.selectionGuideSlug ?? (input.track === 'inline-filter' ? INLINE_SELECTION_GUIDE_SLUG : SELECTION_GUIDE_SLUG),
|
|
48049
|
+
overviewSlug: input.overviewSlug ?? OVERVIEW_SLUG,
|
|
48050
|
+
jsonApiPath: input.apiPath,
|
|
48051
|
+
},
|
|
48052
|
+
previewRecipe: createDynamicFieldPreviewRecipe({
|
|
48053
|
+
recipeId: input.id,
|
|
48054
|
+
fieldName: `${input.id}Field`,
|
|
48055
|
+
label: input.friendlyName,
|
|
48056
|
+
controlType: input.controlType,
|
|
48057
|
+
description: input.description,
|
|
48058
|
+
metadata: input.metadata,
|
|
48059
|
+
states: input.stateRecipes,
|
|
48060
|
+
}),
|
|
48061
|
+
snippetRecipe: {
|
|
48062
|
+
language: input.snippetLanguage ?? 'json',
|
|
48063
|
+
snippet: input.snippet ??
|
|
48064
|
+
`{ "name": "${input.id}", "label": "${input.friendlyName}", "controlType": "${input.controlType}" }`,
|
|
48065
|
+
note: input.snippetNote,
|
|
48066
|
+
},
|
|
48067
|
+
a11yNotes: input.a11yNotes ?? DEFAULT_A11Y_NOTES,
|
|
48068
|
+
themingNotes: input.themingNotes ?? DEFAULT_THEMING_NOTES,
|
|
48069
|
+
};
|
|
48070
|
+
}
|
|
48071
|
+
const DYNAMIC_FIELDS_PLAYGROUND_CATALOG = [
|
|
48072
|
+
createEntry({
|
|
48073
|
+
id: 'text-input',
|
|
48074
|
+
controlType: FieldControlType.INPUT,
|
|
48075
|
+
track: 'primary-form',
|
|
48076
|
+
family: 'text',
|
|
48077
|
+
friendlyName: 'Text input',
|
|
48078
|
+
description: 'Entrada textual curta e canonica para formularios metadata-driven.',
|
|
48079
|
+
tags: ['text', 'input', 'form'],
|
|
48080
|
+
valueShape: 'string',
|
|
48081
|
+
recommendedWhen: ['texto livre curto', 'nome', 'descricao curta'],
|
|
48082
|
+
avoidWhen: ['lista governada de opcoes', 'texto longo multi-linha'],
|
|
48083
|
+
dataSourceKind: 'local',
|
|
48084
|
+
apiPath: jsonApiPath('text-input/pdx-text-input.json-api.md'),
|
|
48085
|
+
metadata: { placeholder: 'Type here' },
|
|
48086
|
+
}),
|
|
48087
|
+
createEntry({
|
|
48088
|
+
id: 'email-input',
|
|
48089
|
+
controlType: FieldControlType.EMAIL_INPUT,
|
|
48090
|
+
track: 'primary-form',
|
|
48091
|
+
family: 'text',
|
|
48092
|
+
friendlyName: 'Email input',
|
|
48093
|
+
description: 'Campo textual especializado para emails.',
|
|
48094
|
+
tags: ['text', 'email', 'validation'],
|
|
48095
|
+
valueShape: 'string',
|
|
48096
|
+
recommendedWhen: ['email validado', 'contato institucional'],
|
|
48097
|
+
avoidWhen: ['texto livre generico'],
|
|
48098
|
+
dataSourceKind: 'local',
|
|
48099
|
+
apiPath: jsonApiPath('email-input/pdx-email-input.json-api.md'),
|
|
48100
|
+
metadata: { placeholder: 'name@company.com' },
|
|
48101
|
+
}),
|
|
48102
|
+
createEntry({
|
|
48103
|
+
id: 'password-input',
|
|
48104
|
+
controlType: FieldControlType.PASSWORD,
|
|
48105
|
+
track: 'primary-form',
|
|
48106
|
+
family: 'text',
|
|
48107
|
+
friendlyName: 'Password input',
|
|
48108
|
+
description: 'Campo de segredo com mascaramento e interacao apropriada.',
|
|
48109
|
+
tags: ['text', 'password', 'security'],
|
|
48110
|
+
valueShape: 'string',
|
|
48111
|
+
recommendedWhen: ['segredos', 'credenciais'],
|
|
48112
|
+
avoidWhen: ['valor que precisa ficar legivel em tela'],
|
|
48113
|
+
dataSourceKind: 'local',
|
|
48114
|
+
apiPath: jsonApiPath('password-input/pdx-password-input.json-api.md'),
|
|
48115
|
+
}),
|
|
48116
|
+
createEntry({
|
|
48117
|
+
id: 'textarea',
|
|
48118
|
+
controlType: FieldControlType.TEXTAREA,
|
|
48119
|
+
track: 'primary-form',
|
|
48120
|
+
family: 'text',
|
|
48121
|
+
friendlyName: 'Textarea',
|
|
48122
|
+
description: 'Campo multi-linha para observacoes e conteudo textual maior.',
|
|
48123
|
+
tags: ['text', 'textarea', 'multiline'],
|
|
48124
|
+
valueShape: 'string',
|
|
48125
|
+
recommendedWhen: ['descricao longa', 'observacoes', 'justificativa'],
|
|
48126
|
+
avoidWhen: ['texto curto de uma linha'],
|
|
48127
|
+
dataSourceKind: 'local',
|
|
48128
|
+
apiPath: jsonApiPath('material-textarea/pdx-material-textarea.json-api.md'),
|
|
48129
|
+
metadata: { rows: 4, placeholder: 'Describe the situation' },
|
|
48130
|
+
}),
|
|
48131
|
+
createEntry({
|
|
48132
|
+
id: 'search-input',
|
|
48133
|
+
controlType: FieldControlType.SEARCH_INPUT,
|
|
48134
|
+
track: 'primary-form',
|
|
48135
|
+
family: 'text',
|
|
48136
|
+
friendlyName: 'Search input',
|
|
48137
|
+
description: 'Entrada textual dedicada a busca.',
|
|
48138
|
+
tags: ['text', 'search', 'query'],
|
|
48139
|
+
valueShape: 'string',
|
|
48140
|
+
recommendedWhen: ['busca textual', 'query curta'],
|
|
48141
|
+
avoidWhen: ['campo de negocio comum sem semantica de busca'],
|
|
48142
|
+
dataSourceKind: 'local',
|
|
48143
|
+
apiPath: jsonApiPath('search-input/pdx-search-input.json-api.md'),
|
|
48144
|
+
metadata: { placeholder: 'Search records' },
|
|
48145
|
+
}),
|
|
48146
|
+
createEntry({
|
|
48147
|
+
id: 'phone-input',
|
|
48148
|
+
controlType: FieldControlType.PHONE,
|
|
48149
|
+
track: 'primary-form',
|
|
48150
|
+
family: 'text',
|
|
48151
|
+
friendlyName: 'Phone input',
|
|
48152
|
+
description: 'Campo especializado para telefone.',
|
|
48153
|
+
tags: ['text', 'phone', 'formatted'],
|
|
48154
|
+
valueShape: 'string',
|
|
48155
|
+
recommendedWhen: ['telefone', 'contato'],
|
|
48156
|
+
avoidWhen: ['dominio sem telefone'],
|
|
48157
|
+
dataSourceKind: 'local',
|
|
48158
|
+
status: 'partial-docs',
|
|
48159
|
+
apiPath: jsonApiPath('phone-input/pdx-phone-input.json-api.md'),
|
|
48160
|
+
}),
|
|
48161
|
+
createEntry({
|
|
48162
|
+
id: 'url-input',
|
|
48163
|
+
controlType: FieldControlType.URL_INPUT,
|
|
48164
|
+
track: 'primary-form',
|
|
48165
|
+
family: 'text',
|
|
48166
|
+
friendlyName: 'URL input',
|
|
48167
|
+
description: 'Campo para links e URLs.',
|
|
48168
|
+
tags: ['text', 'url', 'link'],
|
|
48169
|
+
valueShape: 'string',
|
|
48170
|
+
recommendedWhen: ['website', 'link institucional'],
|
|
48171
|
+
avoidWhen: ['texto generico'],
|
|
48172
|
+
dataSourceKind: 'local',
|
|
48173
|
+
status: 'partial-docs',
|
|
48174
|
+
apiPath: jsonApiPath('url-input/pdx-url-input.json-api.md'),
|
|
48175
|
+
}),
|
|
48176
|
+
createEntry({
|
|
48177
|
+
id: 'cpf-cnpj-input',
|
|
48178
|
+
controlType: FieldControlType.CPF_CNPJ_INPUT,
|
|
48179
|
+
track: 'primary-form',
|
|
48180
|
+
family: 'text',
|
|
48181
|
+
friendlyName: 'CPF/CNPJ input',
|
|
48182
|
+
description: 'Campo regionalizado para documento brasileiro.',
|
|
48183
|
+
tags: ['text', 'brazil', 'document'],
|
|
48184
|
+
valueShape: 'string',
|
|
48185
|
+
recommendedWhen: ['CPF', 'CNPJ', 'documento BR'],
|
|
48186
|
+
avoidWhen: ['dominio internacional ou sem documento nacional'],
|
|
48187
|
+
dataSourceKind: 'local',
|
|
48188
|
+
status: 'partial-docs',
|
|
48189
|
+
apiPath: jsonApiPath('material-cpf-cnpj-input/pdx-material-cpf-cnpj-input.json-api.md'),
|
|
48190
|
+
}),
|
|
48191
|
+
createEntry({
|
|
48192
|
+
id: 'number-input',
|
|
48193
|
+
controlType: FieldControlType.NUMERIC_TEXT_BOX,
|
|
48194
|
+
track: 'primary-form',
|
|
48195
|
+
family: 'numbers-range',
|
|
48196
|
+
friendlyName: 'Number input',
|
|
48197
|
+
description: 'Campo numerico canonico para valores pontuais.',
|
|
48198
|
+
tags: ['number', 'numeric', 'form'],
|
|
48199
|
+
valueShape: 'number',
|
|
48200
|
+
recommendedWhen: ['idade', 'quantidade', 'score unico'],
|
|
48201
|
+
avoidWhen: ['range', 'moeda'],
|
|
48202
|
+
dataSourceKind: 'local',
|
|
48203
|
+
status: 'partial-docs',
|
|
48204
|
+
apiPath: jsonApiPath('number-input/pdx-number-input.json-api.md'),
|
|
48205
|
+
}),
|
|
48206
|
+
createEntry({
|
|
48207
|
+
id: 'currency-input',
|
|
48208
|
+
controlType: FieldControlType.CURRENCY_INPUT,
|
|
48209
|
+
track: 'primary-form',
|
|
48210
|
+
family: 'numbers-range',
|
|
48211
|
+
friendlyName: 'Currency input',
|
|
48212
|
+
description: 'Campo monetario para valor unico.',
|
|
48213
|
+
tags: ['number', 'currency', 'money'],
|
|
48214
|
+
valueShape: 'number',
|
|
48215
|
+
recommendedWhen: ['orcamento', 'ticket medio', 'valor monetario unico'],
|
|
48216
|
+
avoidWhen: ['faixa monetaria'],
|
|
48217
|
+
dataSourceKind: 'local',
|
|
48218
|
+
apiPath: jsonApiPath('material-currency/pdx-material-currency.json-api.md'),
|
|
48219
|
+
metadata: { currency: 'BRL', locale: 'pt-BR' },
|
|
48220
|
+
}),
|
|
48221
|
+
createEntry({
|
|
48222
|
+
id: 'slider',
|
|
48223
|
+
controlType: FieldControlType.SLIDER,
|
|
48224
|
+
track: 'primary-form',
|
|
48225
|
+
family: 'numbers-range',
|
|
48226
|
+
friendlyName: 'Slider',
|
|
48227
|
+
description: 'Campo de faixa continua para valor unico.',
|
|
48228
|
+
tags: ['number', 'slider', 'range'],
|
|
48229
|
+
valueShape: 'number',
|
|
48230
|
+
recommendedWhen: ['nota', 'nivel', 'escala continua'],
|
|
48231
|
+
avoidWhen: ['valor financeiro complexo', 'range duplo'],
|
|
48232
|
+
dataSourceKind: 'local',
|
|
48233
|
+
apiPath: jsonApiPath('material-slider/pdx-material-slider.json-api.md'),
|
|
48234
|
+
metadata: { min: 0, max: 10 },
|
|
48235
|
+
}),
|
|
48236
|
+
createEntry({
|
|
48237
|
+
id: 'range-slider',
|
|
48238
|
+
controlType: FieldControlType.RANGE_SLIDER,
|
|
48239
|
+
track: 'primary-form',
|
|
48240
|
+
family: 'numbers-range',
|
|
48241
|
+
friendlyName: 'Range slider',
|
|
48242
|
+
description: 'Campo para faixa numerica com um ou dois bounds.',
|
|
48243
|
+
tags: ['number', 'range', 'slider'],
|
|
48244
|
+
valueShape: 'number | { start, end }',
|
|
48245
|
+
recommendedWhen: ['faixa numerica', 'limite minimo e maximo'],
|
|
48246
|
+
avoidWhen: ['datas ou horarios'],
|
|
48247
|
+
dataSourceKind: 'local',
|
|
48248
|
+
status: 'partial-docs',
|
|
48249
|
+
apiPath: jsonApiPath('material-range-slider/pdx-material-range-slider.json-api.md'),
|
|
48250
|
+
}),
|
|
48251
|
+
createEntry({
|
|
48252
|
+
id: 'price-range',
|
|
48253
|
+
controlType: FieldControlType.PRICE_RANGE,
|
|
48254
|
+
track: 'primary-form',
|
|
48255
|
+
family: 'numbers-range',
|
|
48256
|
+
friendlyName: 'Price range',
|
|
48257
|
+
description: 'Faixa monetaria com semantica propria.',
|
|
48258
|
+
tags: ['number', 'currency', 'range'],
|
|
48259
|
+
valueShape: '{ min, max }',
|
|
48260
|
+
recommendedWhen: ['faixa de preco', 'banda salarial', 'orcamento minimo/maximo'],
|
|
48261
|
+
avoidWhen: ['valor monetario unico'],
|
|
48262
|
+
dataSourceKind: 'local',
|
|
48263
|
+
status: 'partial-docs',
|
|
48264
|
+
apiPath: jsonApiPath('material-price-range/pdx-material-price-range.json-api.md'),
|
|
48265
|
+
metadata: { currency: 'BRL', locale: 'pt-BR' },
|
|
48266
|
+
}),
|
|
48267
|
+
createEntry({
|
|
48268
|
+
id: 'rating',
|
|
48269
|
+
controlType: FieldControlType.RATING,
|
|
48270
|
+
track: 'primary-form',
|
|
48271
|
+
family: 'numbers-range',
|
|
48272
|
+
friendlyName: 'Rating',
|
|
48273
|
+
description: 'Controle visual de nota.',
|
|
48274
|
+
tags: ['number', 'rating', 'visual'],
|
|
48275
|
+
valueShape: 'number',
|
|
48276
|
+
recommendedWhen: ['avaliacao visual', 'satisfacao', 'score legivel'],
|
|
48277
|
+
avoidWhen: ['quando numero bruto ja basta'],
|
|
48278
|
+
dataSourceKind: 'local',
|
|
48279
|
+
apiPath: jsonApiPath('material-rating/pdx-material-rating.json-api.md'),
|
|
48280
|
+
metadata: { max: 5 },
|
|
48281
|
+
}),
|
|
48282
|
+
createEntry({
|
|
48283
|
+
id: 'date-input',
|
|
48284
|
+
controlType: FieldControlType.DATE_INPUT,
|
|
48285
|
+
track: 'primary-form',
|
|
48286
|
+
family: 'date-time',
|
|
48287
|
+
friendlyName: 'Date input',
|
|
48288
|
+
description: 'Input nativo de data.',
|
|
48289
|
+
tags: ['date', 'native', 'time'],
|
|
48290
|
+
valueShape: 'string | Date',
|
|
48291
|
+
recommendedWhen: ['integracao simples com input nativo'],
|
|
48292
|
+
avoidWhen: ['quando a UX Material padronizada e obrigatoria'],
|
|
48293
|
+
dataSourceKind: 'local',
|
|
48294
|
+
status: 'partial-docs',
|
|
48295
|
+
apiPath: jsonApiPath('date-input/pdx-date-input.json-api.md'),
|
|
48296
|
+
}),
|
|
48297
|
+
createEntry({
|
|
48298
|
+
id: 'date-picker',
|
|
48299
|
+
controlType: FieldControlType.DATE_PICKER,
|
|
48300
|
+
track: 'primary-form',
|
|
48301
|
+
family: 'date-time',
|
|
48302
|
+
friendlyName: 'Date picker',
|
|
48303
|
+
description: 'Datepicker Material canonico.',
|
|
48304
|
+
tags: ['date', 'picker', 'material'],
|
|
48305
|
+
valueShape: 'Date | string',
|
|
48306
|
+
recommendedWhen: ['data unica', 'consistencia de design system'],
|
|
48307
|
+
avoidWhen: ['range temporal'],
|
|
48308
|
+
dataSourceKind: 'local',
|
|
48309
|
+
apiPath: jsonApiPath('material-datepicker/pdx-material-datepicker.json-api.md'),
|
|
48310
|
+
}),
|
|
48311
|
+
createEntry({
|
|
48312
|
+
id: 'date-range',
|
|
48313
|
+
controlType: FieldControlType.DATE_RANGE,
|
|
48314
|
+
track: 'primary-form',
|
|
48315
|
+
family: 'date-time',
|
|
48316
|
+
friendlyName: 'Date range',
|
|
48317
|
+
description: 'Intervalo de datas.',
|
|
48318
|
+
tags: ['date', 'range', 'time'],
|
|
48319
|
+
valueShape: '{ startDate, endDate }',
|
|
48320
|
+
recommendedWhen: ['periodo', 'janela temporal'],
|
|
48321
|
+
avoidWhen: ['data unica'],
|
|
48322
|
+
dataSourceKind: 'local',
|
|
48323
|
+
apiPath: jsonApiPath('material-date-range/pdx-material-date-range.json-api.md'),
|
|
48324
|
+
}),
|
|
48325
|
+
createEntry({
|
|
48326
|
+
id: 'datetime-local',
|
|
48327
|
+
controlType: FieldControlType.DATETIME_LOCAL_INPUT,
|
|
48328
|
+
track: 'primary-form',
|
|
48329
|
+
family: 'date-time',
|
|
48330
|
+
friendlyName: 'Datetime local',
|
|
48331
|
+
description: 'Campo unificado para data e hora local.',
|
|
48332
|
+
tags: ['date', 'time', 'datetime'],
|
|
48333
|
+
valueShape: 'string',
|
|
48334
|
+
recommendedWhen: ['agendamento local', 'data + hora no mesmo campo'],
|
|
48335
|
+
avoidWhen: ['quando data e hora precisam de UX separada'],
|
|
48336
|
+
dataSourceKind: 'local',
|
|
48337
|
+
status: 'partial-docs',
|
|
48338
|
+
apiPath: jsonApiPath('datetime-local-input/pdx-datetime-local-input.json-api.md'),
|
|
48339
|
+
}),
|
|
48340
|
+
createEntry({
|
|
48341
|
+
id: 'month-input',
|
|
48342
|
+
controlType: FieldControlType.MONTH_INPUT,
|
|
48343
|
+
track: 'primary-form',
|
|
48344
|
+
family: 'date-time',
|
|
48345
|
+
friendlyName: 'Month input',
|
|
48346
|
+
description: 'Campo especializado para mes e ano.',
|
|
48347
|
+
tags: ['date', 'month', 'competence'],
|
|
48348
|
+
valueShape: 'string',
|
|
48349
|
+
recommendedWhen: ['competencia', 'mes/ano'],
|
|
48350
|
+
avoidWhen: ['data completa'],
|
|
48351
|
+
dataSourceKind: 'local',
|
|
48352
|
+
status: 'partial-docs',
|
|
48353
|
+
apiPath: jsonApiPath('month-input/pdx-month-input.json-api.md'),
|
|
48354
|
+
}),
|
|
48355
|
+
createEntry({
|
|
48356
|
+
id: 'time-input',
|
|
48357
|
+
controlType: FieldControlType.TIME_INPUT,
|
|
48358
|
+
track: 'primary-form',
|
|
48359
|
+
family: 'date-time',
|
|
48360
|
+
friendlyName: 'Time input',
|
|
48361
|
+
description: 'Campo simples para horario.',
|
|
48362
|
+
tags: ['time', 'input', 'hour'],
|
|
48363
|
+
valueShape: 'string',
|
|
48364
|
+
recommendedWhen: ['hora simples', 'slot horario'],
|
|
48365
|
+
avoidWhen: ['range horario'],
|
|
48366
|
+
dataSourceKind: 'local',
|
|
48367
|
+
apiPath: jsonApiPath('time-input/pdx-time-input.json-api.md'),
|
|
48368
|
+
}),
|
|
48369
|
+
createEntry({
|
|
48370
|
+
id: 'time-picker',
|
|
48371
|
+
controlType: FieldControlType.TIME_PICKER,
|
|
48372
|
+
track: 'primary-form',
|
|
48373
|
+
family: 'date-time',
|
|
48374
|
+
friendlyName: 'Time picker',
|
|
48375
|
+
description: 'Seletor Material de horario.',
|
|
48376
|
+
tags: ['time', 'picker', 'hour'],
|
|
48377
|
+
valueShape: 'string',
|
|
48378
|
+
recommendedWhen: ['escolha guiada de horario'],
|
|
48379
|
+
avoidWhen: ['texto/mascara simples e suficiente'],
|
|
48380
|
+
dataSourceKind: 'local',
|
|
48381
|
+
apiPath: jsonApiPath('material-timepicker/pdx-material-timepicker.json-api.md'),
|
|
48382
|
+
}),
|
|
48383
|
+
createEntry({
|
|
48384
|
+
id: 'time-range',
|
|
48385
|
+
controlType: FieldControlType.TIME_RANGE,
|
|
48386
|
+
track: 'primary-form',
|
|
48387
|
+
family: 'date-time',
|
|
48388
|
+
friendlyName: 'Time range',
|
|
48389
|
+
description: 'Intervalo de horario.',
|
|
48390
|
+
tags: ['time', 'range', 'hour'],
|
|
48391
|
+
valueShape: '{ start, end }',
|
|
48392
|
+
recommendedWhen: ['janela de atendimento', 'turno'],
|
|
48393
|
+
avoidWhen: ['horario unico'],
|
|
48394
|
+
dataSourceKind: 'local',
|
|
48395
|
+
status: 'partial-docs',
|
|
48396
|
+
apiPath: jsonApiPath('pdx-material-time-range/pdx-material-time-range.json-api.md'),
|
|
48397
|
+
}),
|
|
48398
|
+
createEntry({
|
|
48399
|
+
id: 'week-input',
|
|
48400
|
+
controlType: FieldControlType.WEEK_INPUT,
|
|
48401
|
+
track: 'primary-form',
|
|
48402
|
+
family: 'date-time',
|
|
48403
|
+
friendlyName: 'Week input',
|
|
48404
|
+
description: 'Campo de semana ISO.',
|
|
48405
|
+
tags: ['date', 'week', 'iso'],
|
|
48406
|
+
valueShape: 'string',
|
|
48407
|
+
recommendedWhen: ['semana de referencia'],
|
|
48408
|
+
avoidWhen: ['negocio centrado em datas convencionais'],
|
|
48409
|
+
dataSourceKind: 'local',
|
|
48410
|
+
status: 'partial-docs',
|
|
48411
|
+
apiPath: jsonApiPath('week-input/pdx-week-input.json-api.md'),
|
|
48412
|
+
}),
|
|
48413
|
+
createEntry({
|
|
48414
|
+
id: 'year-input',
|
|
48415
|
+
controlType: FieldControlType.YEAR_INPUT,
|
|
48416
|
+
track: 'primary-form',
|
|
48417
|
+
family: 'date-time',
|
|
48418
|
+
friendlyName: 'Year input',
|
|
48419
|
+
description: 'Campo para ano isolado.',
|
|
48420
|
+
tags: ['date', 'year', 'fiscal'],
|
|
48421
|
+
valueShape: 'number | string',
|
|
48422
|
+
recommendedWhen: ['ano fiscal', 'ano civil isolado'],
|
|
48423
|
+
avoidWhen: ['mes/ano ou data completa'],
|
|
48424
|
+
dataSourceKind: 'local',
|
|
48425
|
+
status: 'partial-docs',
|
|
48426
|
+
apiPath: jsonApiPath('pdx-year-input/pdx-year-input.json-api.md'),
|
|
48427
|
+
}),
|
|
48428
|
+
createEntry({
|
|
48429
|
+
id: 'select',
|
|
48430
|
+
controlType: FieldControlType.SELECT,
|
|
48431
|
+
track: 'primary-form',
|
|
48432
|
+
family: 'selection',
|
|
48433
|
+
friendlyName: 'Select',
|
|
48434
|
+
description: 'Lista fechada simples para escolha unica.',
|
|
48435
|
+
tags: ['selection', 'select', 'options'],
|
|
48436
|
+
valueShape: 'string | number | object',
|
|
48437
|
+
recommendedWhen: ['lista pequena estavel', 'escolha unica'],
|
|
48438
|
+
avoidWhen: ['lista grande ou remota'],
|
|
48439
|
+
dataSourceKind: 'mixed',
|
|
48440
|
+
apiPath: jsonApiPath('material-select/pdx-material-select.json-api.md'),
|
|
48441
|
+
metadata: {
|
|
48442
|
+
options: [
|
|
48443
|
+
{ label: 'Active', value: 'ACTIVE' },
|
|
48444
|
+
{ label: 'Paused', value: 'PAUSED' },
|
|
48445
|
+
],
|
|
48446
|
+
},
|
|
48447
|
+
}),
|
|
48448
|
+
createEntry({
|
|
48449
|
+
id: 'searchable-select',
|
|
48450
|
+
controlType: FieldControlType.SEARCHABLE_SELECT,
|
|
48451
|
+
track: 'primary-form',
|
|
48452
|
+
family: 'selection',
|
|
48453
|
+
friendlyName: 'Searchable select',
|
|
48454
|
+
description: 'Select com busca local para listas medias ou grandes.',
|
|
48455
|
+
tags: ['selection', 'select', 'search'],
|
|
48456
|
+
valueShape: 'string | number | object',
|
|
48457
|
+
recommendedWhen: ['lista maior com busca', 'descoberta de opcao'],
|
|
48458
|
+
avoidWhen: ['lista remota sob demanda'],
|
|
48459
|
+
dataSourceKind: 'mixed',
|
|
48460
|
+
status: 'partial-docs',
|
|
48461
|
+
apiPath: jsonApiPath('material-searchable-select/pdx-material-searchable-select.json-api.md'),
|
|
48462
|
+
}),
|
|
48463
|
+
createEntry({
|
|
48464
|
+
id: 'async-select',
|
|
48465
|
+
controlType: FieldControlType.ASYNC_SELECT,
|
|
48466
|
+
track: 'primary-form',
|
|
48467
|
+
family: 'selection',
|
|
48468
|
+
friendlyName: 'Async select',
|
|
48469
|
+
description: 'Select remoto para opcoes sob demanda.',
|
|
48470
|
+
tags: ['selection', 'remote', 'async'],
|
|
48471
|
+
valueShape: 'string | number | object',
|
|
48472
|
+
recommendedWhen: ['lookup remoto', 'lista paginada', 'catalogo grande'],
|
|
48473
|
+
avoidWhen: ['opcoes locais pequenas'],
|
|
48474
|
+
dataSourceKind: 'remote',
|
|
48475
|
+
status: 'partial-docs',
|
|
48476
|
+
apiPath: jsonApiPath('material-async-select/pdx-material-async-select.json-api.md'),
|
|
48477
|
+
metadata: { resourcePath: 'cities', optionLabelKey: 'name', optionValueKey: 'id' },
|
|
48478
|
+
}),
|
|
48479
|
+
createEntry({
|
|
48480
|
+
id: 'autocomplete',
|
|
48481
|
+
controlType: FieldControlType.AUTO_COMPLETE,
|
|
48482
|
+
track: 'primary-form',
|
|
48483
|
+
family: 'selection',
|
|
48484
|
+
friendlyName: 'Autocomplete',
|
|
48485
|
+
description: 'Busca incremental com sugestoes.',
|
|
48486
|
+
tags: ['selection', 'autocomplete', 'search'],
|
|
48487
|
+
valueShape: 'string | number | object',
|
|
48488
|
+
recommendedWhen: ['sugestoes incrementais', 'descoberta textual'],
|
|
48489
|
+
avoidWhen: ['lista pequena e fechada'],
|
|
48490
|
+
dataSourceKind: 'mixed',
|
|
48491
|
+
apiPath: jsonApiPath('material-autocomplete/pdx-material-autocomplete.json-api.md'),
|
|
48492
|
+
}),
|
|
48493
|
+
createEntry({
|
|
48494
|
+
id: 'multi-select',
|
|
48495
|
+
controlType: FieldControlType.MULTI_SELECT,
|
|
48496
|
+
track: 'primary-form',
|
|
48497
|
+
family: 'selection',
|
|
48498
|
+
friendlyName: 'Multi select',
|
|
48499
|
+
description: 'Selecao multipla de opcoes.',
|
|
48500
|
+
tags: ['selection', 'multiple', 'options'],
|
|
48501
|
+
valueShape: 'unknown[]',
|
|
48502
|
+
recommendedWhen: ['multiplas escolhas discretas'],
|
|
48503
|
+
avoidWhen: ['escolha unica'],
|
|
48504
|
+
dataSourceKind: 'mixed',
|
|
48505
|
+
status: 'partial-docs',
|
|
48506
|
+
apiPath: jsonApiPath('material-multi-select/pdx-material-multi-select.json-api.md'),
|
|
48507
|
+
}),
|
|
48508
|
+
createEntry({
|
|
48509
|
+
id: 'multi-select-tree',
|
|
48510
|
+
controlType: FieldControlType.MULTI_SELECT_TREE,
|
|
48511
|
+
track: 'primary-form',
|
|
48512
|
+
family: 'trees-lists',
|
|
48513
|
+
friendlyName: 'Multi select tree',
|
|
48514
|
+
description: 'Arvore hierarquica com selecao multipla.',
|
|
48515
|
+
tags: ['tree', 'selection', 'hierarchy'],
|
|
48516
|
+
valueShape: 'unknown[]',
|
|
48517
|
+
recommendedWhen: ['taxonomia hierarquica com multiplas escolhas'],
|
|
48518
|
+
avoidWhen: ['lista plana pequena'],
|
|
48519
|
+
dataSourceKind: 'mixed',
|
|
48520
|
+
status: 'partial-docs',
|
|
48521
|
+
apiPath: jsonApiPath('material-multi-select-tree/pdx-material-multi-select-tree.json-api.md'),
|
|
48522
|
+
}),
|
|
48523
|
+
createEntry({
|
|
48524
|
+
id: 'tree-select',
|
|
48525
|
+
controlType: FieldControlType.TREE_SELECT,
|
|
48526
|
+
track: 'primary-form',
|
|
48527
|
+
family: 'trees-lists',
|
|
48528
|
+
friendlyName: 'Tree select',
|
|
48529
|
+
description: 'Arvore hierarquica com selecao simples.',
|
|
48530
|
+
tags: ['tree', 'selection', 'hierarchy'],
|
|
48531
|
+
valueShape: 'string | number | object',
|
|
48532
|
+
recommendedWhen: ['estrutura hierarquica com escolha unica'],
|
|
48533
|
+
avoidWhen: ['multiplas escolhas'],
|
|
48534
|
+
dataSourceKind: 'mixed',
|
|
48535
|
+
status: 'partial-docs',
|
|
48536
|
+
apiPath: jsonApiPath('material-tree-select/pdx-material-tree-select.json-api.md'),
|
|
48537
|
+
}),
|
|
48538
|
+
createEntry({
|
|
48539
|
+
id: 'selection-list',
|
|
48540
|
+
controlType: FieldControlType.SELECTION_LIST,
|
|
48541
|
+
track: 'primary-form',
|
|
48542
|
+
family: 'trees-lists',
|
|
48543
|
+
friendlyName: 'Selection list',
|
|
48544
|
+
description: 'Lista explicita de opcoes selecionaveis.',
|
|
48545
|
+
tags: ['list', 'selection', 'explicit'],
|
|
48546
|
+
valueShape: 'unknown[]',
|
|
48547
|
+
recommendedWhen: ['lista visivel de opcoes', 'affordance forte de lista'],
|
|
48548
|
+
avoidWhen: ['dropdown compacto resolve melhor'],
|
|
48549
|
+
dataSourceKind: 'mixed',
|
|
48550
|
+
status: 'partial-docs',
|
|
48551
|
+
apiPath: jsonApiPath('material-selection-list/pdx-material-selection-list.json-api.md'),
|
|
48552
|
+
}),
|
|
48553
|
+
createEntry({
|
|
48554
|
+
id: 'transfer-list',
|
|
48555
|
+
controlType: FieldControlType.TRANSFER_LIST,
|
|
48556
|
+
track: 'primary-form',
|
|
48557
|
+
family: 'trees-lists',
|
|
48558
|
+
friendlyName: 'Transfer list',
|
|
48559
|
+
description: 'Move itens entre listas disponivel e selecionado.',
|
|
48560
|
+
tags: ['list', 'transfer', 'selection'],
|
|
48561
|
+
valueShape: 'unknown[]',
|
|
48562
|
+
recommendedWhen: ['alocacao entre disponiveis e selecionados'],
|
|
48563
|
+
avoidWhen: ['selecao simples ou pequena'],
|
|
48564
|
+
dataSourceKind: 'mixed',
|
|
48565
|
+
status: 'partial-docs',
|
|
48566
|
+
apiPath: jsonApiPath('material-transfer-list/pdx-material-transfer-list.json-api.md'),
|
|
48567
|
+
}),
|
|
48568
|
+
createEntry({
|
|
48569
|
+
id: 'chip-input',
|
|
48570
|
+
controlType: FieldControlType.CHIP_INPUT,
|
|
48571
|
+
track: 'primary-form',
|
|
48572
|
+
family: 'trees-lists',
|
|
48573
|
+
friendlyName: 'Chip input',
|
|
48574
|
+
description: 'Entrada de itens textuais em formato de chips.',
|
|
48575
|
+
tags: ['chips', 'list', 'text'],
|
|
48576
|
+
valueShape: 'string[]',
|
|
48577
|
+
recommendedWhen: ['emails', 'labels editaveis', 'lista textual'],
|
|
48578
|
+
avoidWhen: ['valor unico'],
|
|
48579
|
+
dataSourceKind: 'local',
|
|
48580
|
+
status: 'partial-docs',
|
|
48581
|
+
apiPath: jsonApiPath('material-chips/pdx-material-chips.json-api.md'),
|
|
48582
|
+
}),
|
|
48583
|
+
createEntry({
|
|
48584
|
+
id: 'chip-list',
|
|
48585
|
+
controlType: FieldControlType.CHIP_LIST,
|
|
48586
|
+
track: 'primary-form',
|
|
48587
|
+
family: 'trees-lists',
|
|
48588
|
+
friendlyName: 'Chip list',
|
|
48589
|
+
description: 'Lista textual em chips.',
|
|
48590
|
+
tags: ['chips', 'list', 'display'],
|
|
48591
|
+
valueShape: 'string[]',
|
|
48592
|
+
recommendedWhen: ['lista curta em chips', 'edicao leve'],
|
|
48593
|
+
avoidWhen: ['valor unico'],
|
|
48594
|
+
dataSourceKind: 'local',
|
|
48595
|
+
status: 'partial-docs',
|
|
48596
|
+
apiPath: jsonApiPath('material-chips/pdx-material-chips.json-api.md'),
|
|
48597
|
+
}),
|
|
48598
|
+
createEntry({
|
|
48599
|
+
id: 'checkbox-group',
|
|
48600
|
+
controlType: FieldControlType.CHECKBOX,
|
|
48601
|
+
track: 'primary-form',
|
|
48602
|
+
family: 'toggle-choice',
|
|
48603
|
+
friendlyName: 'Checkbox group',
|
|
48604
|
+
description: 'Escolhas discretas booleanas ou multiplas.',
|
|
48605
|
+
tags: ['choice', 'checkbox', 'boolean'],
|
|
48606
|
+
valueShape: 'boolean | unknown[]',
|
|
48607
|
+
recommendedWhen: ['multiplas escolhas discretas', 'booleano com selectionMode apropriado'],
|
|
48608
|
+
avoidWhen: ['escolha unica'],
|
|
48609
|
+
dataSourceKind: 'mixed',
|
|
48610
|
+
apiPath: jsonApiPath('material-checkbox-group/pdx-material-checkbox-group.json-api.md'),
|
|
48611
|
+
}),
|
|
48612
|
+
createEntry({
|
|
48613
|
+
id: 'radio-group',
|
|
48614
|
+
controlType: FieldControlType.RADIO,
|
|
48615
|
+
track: 'primary-form',
|
|
48616
|
+
family: 'toggle-choice',
|
|
48617
|
+
friendlyName: 'Radio group',
|
|
48618
|
+
description: 'Escolha unica explicita.',
|
|
48619
|
+
tags: ['choice', 'radio', 'single'],
|
|
48620
|
+
valueShape: 'string | number | boolean',
|
|
48621
|
+
recommendedWhen: ['escolha unica com poucas opcoes e alta legibilidade'],
|
|
48622
|
+
avoidWhen: ['muitas opcoes'],
|
|
48623
|
+
dataSourceKind: 'mixed',
|
|
48624
|
+
apiPath: jsonApiPath('material-radio-group/pdx-material-radio-group.json-api.md'),
|
|
48625
|
+
}),
|
|
48626
|
+
createEntry({
|
|
48627
|
+
id: 'toggle',
|
|
48628
|
+
controlType: FieldControlType.TOGGLE,
|
|
48629
|
+
track: 'primary-form',
|
|
48630
|
+
family: 'toggle-choice',
|
|
48631
|
+
friendlyName: 'Toggle',
|
|
48632
|
+
description: 'Booleano binario on/off.',
|
|
48633
|
+
tags: ['choice', 'toggle', 'boolean'],
|
|
48634
|
+
valueShape: 'boolean',
|
|
48635
|
+
recommendedWhen: ['booleano simples'],
|
|
48636
|
+
avoidWhen: ['mais de dois estados'],
|
|
48637
|
+
dataSourceKind: 'local',
|
|
48638
|
+
apiPath: jsonApiPath('material-slide-toggle/pdx-material-slide-toggle.json-api.md'),
|
|
48639
|
+
}),
|
|
48640
|
+
createEntry({
|
|
48641
|
+
id: 'button-toggle',
|
|
48642
|
+
controlType: FieldControlType.BUTTON_TOGGLE,
|
|
48643
|
+
track: 'primary-form',
|
|
48644
|
+
family: 'toggle-choice',
|
|
48645
|
+
friendlyName: 'Button toggle',
|
|
48646
|
+
description: 'Grupo segmentado para poucas opcoes.',
|
|
48647
|
+
tags: ['choice', 'toggle', 'segmented'],
|
|
48648
|
+
valueShape: 'string | number',
|
|
48649
|
+
recommendedWhen: ['poucas opcoes curtas', 'segmentacao visivel'],
|
|
48650
|
+
avoidWhen: ['lista longa'],
|
|
48651
|
+
dataSourceKind: 'local',
|
|
48652
|
+
status: 'partial-docs',
|
|
48653
|
+
apiPath: jsonApiPath('material-button-toggle/pdx-material-button-toggle.json-api.md'),
|
|
48654
|
+
}),
|
|
48655
|
+
createEntry({
|
|
48656
|
+
id: 'file-upload',
|
|
48657
|
+
controlType: FieldControlType.FILE_UPLOAD,
|
|
48658
|
+
track: 'primary-form',
|
|
48659
|
+
family: 'upload-color-visual',
|
|
48660
|
+
friendlyName: 'File upload',
|
|
48661
|
+
description: 'Campo para anexos e documentos.',
|
|
48662
|
+
tags: ['upload', 'files', 'attachments'],
|
|
48663
|
+
valueShape: 'File | File[] | metadata',
|
|
48664
|
+
recommendedWhen: ['documentos', 'anexos', 'comprovantes'],
|
|
48665
|
+
avoidWhen: ['fluxo sem arquivos'],
|
|
48666
|
+
dataSourceKind: 'specialized',
|
|
48667
|
+
apiPath: jsonApiPath('material-file-upload/pdx-material-file-upload.json-api.md'),
|
|
48668
|
+
}),
|
|
48669
|
+
createEntry({
|
|
48670
|
+
id: 'color-input',
|
|
48671
|
+
controlType: FieldControlType.COLOR_INPUT,
|
|
48672
|
+
track: 'primary-form',
|
|
48673
|
+
family: 'upload-color-visual',
|
|
48674
|
+
friendlyName: 'Color input',
|
|
48675
|
+
description: 'Entrada simples de cor.',
|
|
48676
|
+
tags: ['color', 'input', 'visual'],
|
|
48677
|
+
valueShape: 'string',
|
|
48678
|
+
recommendedWhen: ['cor por valor simples'],
|
|
48679
|
+
avoidWhen: ['paleta rica ou presets'],
|
|
48680
|
+
dataSourceKind: 'local',
|
|
48681
|
+
apiPath: jsonApiPath('color-input/pdx-color-input.json-api.md'),
|
|
48682
|
+
}),
|
|
48683
|
+
createEntry({
|
|
48684
|
+
id: 'color-picker',
|
|
48685
|
+
controlType: FieldControlType.COLOR_PICKER,
|
|
48686
|
+
track: 'primary-form',
|
|
48687
|
+
family: 'upload-color-visual',
|
|
48688
|
+
friendlyName: 'Color picker',
|
|
48689
|
+
description: 'Picker avancado de cor com paleta.',
|
|
48690
|
+
tags: ['color', 'picker', 'visual'],
|
|
48691
|
+
valueShape: 'string',
|
|
48692
|
+
recommendedWhen: ['paleta rica', 'preset visual', 'tema'],
|
|
48693
|
+
avoidWhen: ['valor simples textual basta'],
|
|
48694
|
+
dataSourceKind: 'local',
|
|
48695
|
+
apiPath: jsonApiPath('color-picker/pdx-color-picker.json-api.md'),
|
|
48696
|
+
}),
|
|
48697
|
+
createEntry({
|
|
48698
|
+
id: 'avatar',
|
|
48699
|
+
controlType: FieldControlType.AVATAR,
|
|
48700
|
+
track: 'primary-form',
|
|
48701
|
+
family: 'upload-color-visual',
|
|
48702
|
+
friendlyName: 'Avatar',
|
|
48703
|
+
description: 'Representacao visual de entidade/usuario.',
|
|
48704
|
+
tags: ['visual', 'avatar', 'display'],
|
|
48705
|
+
valueShape: 'string | object',
|
|
48706
|
+
recommendedWhen: ['representacao visual de usuario ou entidade'],
|
|
48707
|
+
avoidWhen: ['captura de dado textual'],
|
|
48708
|
+
dataSourceKind: 'specialized',
|
|
48709
|
+
apiPath: jsonApiPath('material-avatar/pdx-material-avatar.json-api.md'),
|
|
48710
|
+
}),
|
|
48711
|
+
createEntry({
|
|
48712
|
+
id: 'button',
|
|
48713
|
+
controlType: FieldControlType.BUTTON,
|
|
48714
|
+
track: 'primary-form',
|
|
48715
|
+
family: 'upload-color-visual',
|
|
48716
|
+
friendlyName: 'Button',
|
|
48717
|
+
description: 'Acao auxiliar embutida no layout do formulario.',
|
|
48718
|
+
tags: ['action', 'button', 'visual'],
|
|
48719
|
+
valueShape: 'n/a',
|
|
48720
|
+
recommendedWhen: ['acao auxiliar no layout'],
|
|
48721
|
+
avoidWhen: ['submit/cancel padrao do form'],
|
|
48722
|
+
dataSourceKind: 'specialized',
|
|
48723
|
+
apiPath: jsonApiPath('material-button/pdx-material-button.json-api.md'),
|
|
48724
|
+
states: ['default', 'disabled', 'readonly'],
|
|
48725
|
+
}),
|
|
48726
|
+
createEntry({
|
|
48727
|
+
id: 'cron-builder',
|
|
48728
|
+
controlType: FieldControlType.CRON_BUILDER,
|
|
48729
|
+
track: 'primary-form',
|
|
48730
|
+
family: 'upload-color-visual',
|
|
48731
|
+
friendlyName: 'Cron builder',
|
|
48732
|
+
description: 'Controle especializado para expressoes CRON.',
|
|
48733
|
+
tags: ['cron', 'schedule', 'specialized'],
|
|
48734
|
+
valueShape: 'string',
|
|
48735
|
+
recommendedWhen: ['agenda cron', 'frequencia recorrente'],
|
|
48736
|
+
avoidWhen: ['datas ou ranges simples'],
|
|
48737
|
+
dataSourceKind: 'specialized',
|
|
48738
|
+
status: 'partial-docs',
|
|
48739
|
+
snippetNote: 'A documentacao detalhada continua vivendo na lib especializada @praxisui/cron-builder.',
|
|
48740
|
+
}),
|
|
48741
|
+
createEntry({
|
|
48742
|
+
id: 'inline-input',
|
|
48743
|
+
controlType: FieldControlType.INLINE_INPUT,
|
|
48744
|
+
track: 'inline-filter',
|
|
48745
|
+
family: 'text',
|
|
48746
|
+
friendlyName: 'Inline input',
|
|
48747
|
+
description: 'Filtro textual compacto para toolbar.',
|
|
48748
|
+
tags: ['inline', 'filter', 'text'],
|
|
48749
|
+
valueShape: 'string',
|
|
48750
|
+
recommendedWhen: ['busca curta em toolbar', 'identificador', 'nome'],
|
|
48751
|
+
avoidWhen: ['texto longo', 'validacao complexa'],
|
|
48752
|
+
dataSourceKind: 'local',
|
|
48753
|
+
apiPath: jsonApiPath('inline-input/pdx-inline-input.json-api.md'),
|
|
48754
|
+
}),
|
|
48755
|
+
createEntry({
|
|
48756
|
+
id: 'inline-select',
|
|
48757
|
+
controlType: FieldControlType.INLINE_SELECT,
|
|
48758
|
+
track: 'inline-filter',
|
|
48759
|
+
family: 'selection',
|
|
48760
|
+
friendlyName: 'Inline select',
|
|
48761
|
+
description: 'Selecao compacta em pill para filtros.',
|
|
48762
|
+
tags: ['inline', 'filter', 'selection'],
|
|
48763
|
+
valueShape: 'simple value',
|
|
48764
|
+
recommendedWhen: ['lista pequena ou media em toolbar'],
|
|
48765
|
+
avoidWhen: ['lookup remoto grande'],
|
|
48766
|
+
dataSourceKind: 'mixed',
|
|
48767
|
+
apiPath: jsonApiPath('inline-select/pdx-inline-select.json-api.md'),
|
|
48768
|
+
}),
|
|
48769
|
+
createEntry({
|
|
48770
|
+
id: 'inline-searchable-select',
|
|
48771
|
+
controlType: FieldControlType.INLINE_SEARCHABLE_SELECT,
|
|
48772
|
+
track: 'inline-filter',
|
|
48773
|
+
family: 'selection',
|
|
48774
|
+
friendlyName: 'Inline searchable select',
|
|
48775
|
+
description: 'Selecao compacta com busca.',
|
|
48776
|
+
tags: ['inline', 'filter', 'selection', 'search'],
|
|
48777
|
+
valueShape: 'simple value | option object',
|
|
48778
|
+
recommendedWhen: ['lista media/grande com busca em toolbar'],
|
|
48779
|
+
avoidWhen: ['select simples ja resolve'],
|
|
48780
|
+
dataSourceKind: 'mixed',
|
|
48781
|
+
apiPath: jsonApiPath('inline-searchable-select/pdx-inline-searchable-select.json-api.md'),
|
|
48782
|
+
}),
|
|
48783
|
+
createEntry({
|
|
48784
|
+
id: 'inline-async-select',
|
|
48785
|
+
controlType: FieldControlType.INLINE_ASYNC_SELECT,
|
|
48786
|
+
track: 'inline-filter',
|
|
48787
|
+
family: 'selection',
|
|
48788
|
+
friendlyName: 'Inline async select',
|
|
48789
|
+
description: 'Selecao remota compacta para toolbar.',
|
|
48790
|
+
tags: ['inline', 'filter', 'selection', 'remote'],
|
|
48791
|
+
valueShape: 'simple value | option object',
|
|
48792
|
+
recommendedWhen: ['lookup remoto em toolbar', 'lista sob demanda'],
|
|
48793
|
+
avoidWhen: ['lista local pequena'],
|
|
48794
|
+
dataSourceKind: 'remote',
|
|
48795
|
+
apiPath: jsonApiPath('inline-async-select/pdx-inline-async-select.json-api.md'),
|
|
48796
|
+
}),
|
|
48797
|
+
createEntry({
|
|
48798
|
+
id: 'inline-entity-lookup',
|
|
48799
|
+
controlType: FieldControlType.INLINE_ENTITY_LOOKUP,
|
|
48800
|
+
track: 'inline-filter',
|
|
48801
|
+
family: 'selection',
|
|
48802
|
+
friendlyName: 'Inline entity lookup',
|
|
48803
|
+
description: 'Lookup compacto de entidade com semantica corporativa.',
|
|
48804
|
+
tags: ['inline', 'filter', 'lookup', 'remote'],
|
|
48805
|
+
valueShape: 'object | id',
|
|
48806
|
+
recommendedWhen: ['id + descricao', 'identidade de entidade'],
|
|
48807
|
+
avoidWhen: ['select local simples'],
|
|
48808
|
+
dataSourceKind: 'remote',
|
|
48809
|
+
apiPath: jsonApiPath('inline-entity-lookup/pdx-inline-entity-lookup.json-api.md'),
|
|
48810
|
+
}),
|
|
48811
|
+
createEntry({
|
|
48812
|
+
id: 'inline-autocomplete',
|
|
48813
|
+
controlType: FieldControlType.INLINE_AUTOCOMPLETE,
|
|
48814
|
+
track: 'inline-filter',
|
|
48815
|
+
family: 'selection',
|
|
48816
|
+
friendlyName: 'Inline autocomplete',
|
|
48817
|
+
description: 'Autocomplete compacto para filtros.',
|
|
48818
|
+
tags: ['inline', 'filter', 'autocomplete'],
|
|
48819
|
+
valueShape: 'simple value | option object',
|
|
48820
|
+
recommendedWhen: ['sugestao incremental em toolbar'],
|
|
48821
|
+
avoidWhen: ['select simples basta'],
|
|
48822
|
+
dataSourceKind: 'mixed',
|
|
48823
|
+
apiPath: jsonApiPath('inline-autocomplete/pdx-inline-autocomplete.json-api.md'),
|
|
48824
|
+
}),
|
|
48825
|
+
createEntry({
|
|
48826
|
+
id: 'inline-multi-select',
|
|
48827
|
+
controlType: FieldControlType.INLINE_MULTISELECT,
|
|
48828
|
+
track: 'inline-filter',
|
|
48829
|
+
family: 'selection',
|
|
48830
|
+
friendlyName: 'Inline multi select',
|
|
48831
|
+
description: 'Selecao multipla compacta com resumo em pill.',
|
|
48832
|
+
tags: ['inline', 'filter', 'multiple'],
|
|
48833
|
+
valueShape: 'unknown[]',
|
|
48834
|
+
recommendedWhen: ['poucas selecoes simultaneas com resumo curto'],
|
|
48835
|
+
avoidWhen: ['necessidade de leitura integral de todos os itens'],
|
|
48836
|
+
dataSourceKind: 'mixed',
|
|
48837
|
+
apiPath: jsonApiPath('inline-multi-select/pdx-inline-multi-select.json-api.md'),
|
|
48838
|
+
}),
|
|
48839
|
+
createEntry({
|
|
48840
|
+
id: 'inline-number',
|
|
48841
|
+
controlType: FieldControlType.INLINE_NUMBER,
|
|
48842
|
+
track: 'inline-filter',
|
|
48843
|
+
family: 'numbers-range',
|
|
48844
|
+
friendlyName: 'Inline number',
|
|
48845
|
+
description: 'Filtro numerico compacto.',
|
|
48846
|
+
tags: ['inline', 'filter', 'number'],
|
|
48847
|
+
valueShape: 'number',
|
|
48848
|
+
recommendedWhen: ['valor numerico pontual em toolbar'],
|
|
48849
|
+
avoidWhen: ['range'],
|
|
48850
|
+
dataSourceKind: 'local',
|
|
48851
|
+
apiPath: jsonApiPath('inline-number/pdx-inline-number.json-api.md'),
|
|
48852
|
+
}),
|
|
48853
|
+
createEntry({
|
|
48854
|
+
id: 'inline-currency',
|
|
48855
|
+
controlType: FieldControlType.INLINE_CURRENCY,
|
|
48856
|
+
track: 'inline-filter',
|
|
48857
|
+
family: 'numbers-range',
|
|
48858
|
+
friendlyName: 'Inline currency',
|
|
48859
|
+
description: 'Filtro monetario compacto.',
|
|
48860
|
+
tags: ['inline', 'filter', 'currency'],
|
|
48861
|
+
valueShape: 'number',
|
|
48862
|
+
recommendedWhen: ['valor monetario unico em toolbar'],
|
|
48863
|
+
avoidWhen: ['faixa monetaria'],
|
|
48864
|
+
dataSourceKind: 'local',
|
|
48865
|
+
apiPath: jsonApiPath('inline-currency/pdx-inline-currency.json-api.md'),
|
|
48866
|
+
}),
|
|
48867
|
+
createEntry({
|
|
48868
|
+
id: 'inline-currency-range',
|
|
48869
|
+
controlType: FieldControlType.INLINE_CURRENCY_RANGE,
|
|
48870
|
+
track: 'inline-filter',
|
|
48871
|
+
family: 'numbers-range',
|
|
48872
|
+
friendlyName: 'Inline currency range',
|
|
48873
|
+
description: 'Faixa monetaria compacta para toolbar.',
|
|
48874
|
+
tags: ['inline', 'filter', 'currency', 'range'],
|
|
48875
|
+
valueShape: '{ minPrice?, maxPrice?, currency? }',
|
|
48876
|
+
recommendedWhen: ['faixa monetaria em toolbar'],
|
|
48877
|
+
avoidWhen: ['valor unico'],
|
|
48878
|
+
dataSourceKind: 'specialized',
|
|
48879
|
+
apiPath: jsonApiPath('inline-currency-range/pdx-inline-currency-range.json-api.md'),
|
|
48880
|
+
}),
|
|
48881
|
+
createEntry({
|
|
48882
|
+
id: 'inline-range',
|
|
48883
|
+
controlType: FieldControlType.INLINE_RANGE,
|
|
48884
|
+
track: 'inline-filter',
|
|
48885
|
+
family: 'numbers-range',
|
|
48886
|
+
friendlyName: 'Inline range',
|
|
48887
|
+
description: 'Range numerico compacto para toolbar.',
|
|
48888
|
+
tags: ['inline', 'filter', 'range', 'slider'],
|
|
48889
|
+
valueShape: 'number | { start?, end? }',
|
|
48890
|
+
recommendedWhen: ['faixa numerica compacta'],
|
|
48891
|
+
avoidWhen: ['datas ou horarios'],
|
|
48892
|
+
dataSourceKind: 'specialized',
|
|
48893
|
+
apiPath: jsonApiPath('inline-currency-range/pdx-inline-currency-range.json-api.md'),
|
|
48894
|
+
detailFragment: 'inline-range',
|
|
48895
|
+
}),
|
|
48896
|
+
createEntry({
|
|
48897
|
+
id: 'inline-rating',
|
|
48898
|
+
controlType: FieldControlType.INLINE_RATING,
|
|
48899
|
+
track: 'inline-filter',
|
|
48900
|
+
family: 'numbers-range',
|
|
48901
|
+
friendlyName: 'Inline rating',
|
|
48902
|
+
description: 'Filtro visual de rating para toolbar.',
|
|
48903
|
+
tags: ['inline', 'filter', 'rating'],
|
|
48904
|
+
valueShape: 'number | { start?, end? }',
|
|
48905
|
+
recommendedWhen: ['score visual', 'avaliacao em estrelas'],
|
|
48906
|
+
avoidWhen: ['quando numero bruto ja basta'],
|
|
48907
|
+
dataSourceKind: 'specialized',
|
|
48908
|
+
apiPath: jsonApiPath('inline-rating/pdx-inline-rating.json-api.md'),
|
|
48909
|
+
}),
|
|
48910
|
+
createEntry({
|
|
48911
|
+
id: 'inline-distance-radius',
|
|
48912
|
+
controlType: FieldControlType.INLINE_DISTANCE_RADIUS,
|
|
48913
|
+
track: 'inline-filter',
|
|
48914
|
+
family: 'numbers-range',
|
|
48915
|
+
friendlyName: 'Inline distance radius',
|
|
48916
|
+
description: 'Filtro semantico de distancia e raio.',
|
|
48917
|
+
tags: ['inline', 'filter', 'distance', 'radius'],
|
|
48918
|
+
valueShape: 'number | { start?, end? }',
|
|
48919
|
+
recommendedWhen: ['raio de busca', 'proximidade'],
|
|
48920
|
+
avoidWhen: ['range numerico generico'],
|
|
48921
|
+
dataSourceKind: 'specialized',
|
|
48922
|
+
apiPath: jsonApiPath('inline-distance-radius/pdx-inline-distance-radius.json-api.md'),
|
|
48923
|
+
}),
|
|
48924
|
+
createEntry({
|
|
48925
|
+
id: 'inline-score-priority',
|
|
48926
|
+
controlType: FieldControlType.INLINE_SCORE_PRIORITY,
|
|
48927
|
+
track: 'inline-filter',
|
|
48928
|
+
family: 'numbers-range',
|
|
48929
|
+
friendlyName: 'Inline score priority',
|
|
48930
|
+
description: 'Filtro semantico de score/prioridade.',
|
|
48931
|
+
tags: ['inline', 'filter', 'score', 'priority'],
|
|
48932
|
+
valueShape: 'number | { start?, end? }',
|
|
48933
|
+
recommendedWhen: ['prioridade', 'criticidade', 'banda de score'],
|
|
48934
|
+
avoidWhen: ['numero simples sem ganho semantico'],
|
|
48935
|
+
dataSourceKind: 'specialized',
|
|
48936
|
+
apiPath: jsonApiPath('inline-score-priority/pdx-inline-score-priority.json-api.md'),
|
|
48937
|
+
}),
|
|
48938
|
+
createEntry({
|
|
48939
|
+
id: 'inline-date',
|
|
48940
|
+
controlType: FieldControlType.INLINE_DATE,
|
|
48941
|
+
track: 'inline-filter',
|
|
48942
|
+
family: 'date-time',
|
|
48943
|
+
friendlyName: 'Inline date',
|
|
48944
|
+
description: 'Filtro de data compacta.',
|
|
48945
|
+
tags: ['inline', 'filter', 'date'],
|
|
48946
|
+
valueShape: 'Date',
|
|
48947
|
+
recommendedWhen: ['data unica em toolbar'],
|
|
48948
|
+
avoidWhen: ['periodo completo'],
|
|
48949
|
+
dataSourceKind: 'specialized',
|
|
48950
|
+
apiPath: jsonApiPath('inline-date/pdx-inline-date.json-api.md'),
|
|
48951
|
+
}),
|
|
48952
|
+
createEntry({
|
|
48953
|
+
id: 'inline-date-range',
|
|
48954
|
+
controlType: FieldControlType.INLINE_DATE_RANGE,
|
|
48955
|
+
track: 'inline-filter',
|
|
48956
|
+
family: 'date-time',
|
|
48957
|
+
friendlyName: 'Inline date range',
|
|
48958
|
+
description: 'Range de data compacta com semantica de toolbar.',
|
|
48959
|
+
tags: ['inline', 'filter', 'date', 'range'],
|
|
48960
|
+
valueShape: '{ startDate?, endDate? }',
|
|
48961
|
+
recommendedWhen: ['janela temporal em toolbar'],
|
|
48962
|
+
avoidWhen: ['toolbar saturada ou data unica'],
|
|
48963
|
+
dataSourceKind: 'specialized',
|
|
48964
|
+
apiPath: jsonApiPath('inline-date-range/pdx-inline-date-range.json-api.md'),
|
|
48965
|
+
}),
|
|
48966
|
+
createEntry({
|
|
48967
|
+
id: 'inline-time',
|
|
48968
|
+
controlType: FieldControlType.INLINE_TIME,
|
|
48969
|
+
track: 'inline-filter',
|
|
48970
|
+
family: 'date-time',
|
|
48971
|
+
friendlyName: 'Inline time',
|
|
48972
|
+
description: 'Filtro compacto de horario.',
|
|
48973
|
+
tags: ['inline', 'filter', 'time'],
|
|
48974
|
+
valueShape: 'string HH:mm',
|
|
48975
|
+
recommendedWhen: ['horario unico em toolbar'],
|
|
48976
|
+
avoidWhen: ['periodo relativo ou range'],
|
|
48977
|
+
dataSourceKind: 'specialized',
|
|
48978
|
+
apiPath: jsonApiPath('inline-time/pdx-inline-time.json-api.md'),
|
|
48979
|
+
}),
|
|
48980
|
+
createEntry({
|
|
48981
|
+
id: 'inline-time-range',
|
|
48982
|
+
controlType: FieldControlType.INLINE_TIME_RANGE,
|
|
48983
|
+
track: 'inline-filter',
|
|
48984
|
+
family: 'date-time',
|
|
48985
|
+
friendlyName: 'Inline time range',
|
|
48986
|
+
description: 'Faixa horaria compacta para toolbar.',
|
|
48987
|
+
tags: ['inline', 'filter', 'time', 'range'],
|
|
48988
|
+
valueShape: '{ start?, end? }',
|
|
48989
|
+
recommendedWhen: ['turno', 'janela operacional'],
|
|
48990
|
+
avoidWhen: ['horario unico'],
|
|
48991
|
+
dataSourceKind: 'specialized',
|
|
48992
|
+
apiPath: jsonApiPath('inline-time-range/pdx-inline-time-range.json-api.md'),
|
|
48993
|
+
}),
|
|
48994
|
+
createEntry({
|
|
48995
|
+
id: 'inline-tree-select',
|
|
48996
|
+
controlType: FieldControlType.INLINE_TREE_SELECT,
|
|
48997
|
+
track: 'inline-filter',
|
|
48998
|
+
family: 'trees-lists',
|
|
48999
|
+
friendlyName: 'Inline tree select',
|
|
49000
|
+
description: 'Arvore compacta para filtro em toolbar.',
|
|
49001
|
+
tags: ['inline', 'filter', 'tree', 'hierarchy'],
|
|
49002
|
+
valueShape: 'simple node value',
|
|
49003
|
+
recommendedWhen: ['taxonomia ou unidade organizacional em toolbar'],
|
|
49004
|
+
avoidWhen: ['arvore profunda demais'],
|
|
49005
|
+
dataSourceKind: 'mixed',
|
|
49006
|
+
apiPath: jsonApiPath('inline-tree-select/pdx-inline-tree-select.json-api.md'),
|
|
49007
|
+
}),
|
|
49008
|
+
createEntry({
|
|
49009
|
+
id: 'inline-pipeline-status',
|
|
49010
|
+
controlType: FieldControlType.INLINE_PIPELINE_STATUS,
|
|
49011
|
+
track: 'inline-filter',
|
|
49012
|
+
family: 'selection',
|
|
49013
|
+
friendlyName: 'Inline pipeline status',
|
|
49014
|
+
description: 'Filtro semantico de status de pipeline.',
|
|
49015
|
+
tags: ['inline', 'filter', 'pipeline', 'status'],
|
|
49016
|
+
valueShape: 'simple value | unknown[]',
|
|
49017
|
+
recommendedWhen: ['esteira operacional', 'pipeline comercial'],
|
|
49018
|
+
avoidWhen: ['status simples sem ganho visual'],
|
|
49019
|
+
dataSourceKind: 'specialized',
|
|
49020
|
+
apiPath: jsonApiPath('inline-pipeline-status/pdx-inline-pipeline-status.json-api.md'),
|
|
49021
|
+
}),
|
|
49022
|
+
createEntry({
|
|
49023
|
+
id: 'inline-relative-period',
|
|
49024
|
+
controlType: FieldControlType.INLINE_RELATIVE_PERIOD,
|
|
49025
|
+
track: 'inline-filter',
|
|
49026
|
+
family: 'date-time',
|
|
49027
|
+
friendlyName: 'Inline relative period',
|
|
49028
|
+
description: 'Preset semantico de periodo relativo.',
|
|
49029
|
+
tags: ['inline', 'filter', 'date', 'relative'],
|
|
49030
|
+
valueShape: 'string',
|
|
49031
|
+
recommendedWhen: ['hoje', 'ontem', 'ultimos 7 dias', 'este mes'],
|
|
49032
|
+
avoidWhen: ['API fora da trilha canonica que nao normaliza presets'],
|
|
49033
|
+
dataSourceKind: 'specialized',
|
|
49034
|
+
apiPath: jsonApiPath('inline-relative-period/pdx-inline-relative-period.json-api.md'),
|
|
49035
|
+
}),
|
|
49036
|
+
createEntry({
|
|
49037
|
+
id: 'inline-sentiment',
|
|
49038
|
+
controlType: FieldControlType.INLINE_SENTIMENT,
|
|
49039
|
+
track: 'inline-filter',
|
|
49040
|
+
family: 'selection',
|
|
49041
|
+
friendlyName: 'Inline sentiment',
|
|
49042
|
+
description: 'Filtro semantico de sentimento/polaridade.',
|
|
49043
|
+
tags: ['inline', 'filter', 'sentiment'],
|
|
49044
|
+
valueShape: 'string',
|
|
49045
|
+
recommendedWhen: ['sentimento', 'polaridade', 'humor'],
|
|
49046
|
+
avoidWhen: ['enum simples sem ganho visual'],
|
|
49047
|
+
dataSourceKind: 'specialized',
|
|
49048
|
+
apiPath: jsonApiPath('inline-sentiment/pdx-inline-sentiment.json-api.md'),
|
|
49049
|
+
}),
|
|
49050
|
+
createEntry({
|
|
49051
|
+
id: 'inline-color-label',
|
|
49052
|
+
controlType: FieldControlType.INLINE_COLOR_LABEL,
|
|
49053
|
+
track: 'inline-filter',
|
|
49054
|
+
family: 'selection',
|
|
49055
|
+
friendlyName: 'Inline color label',
|
|
49056
|
+
description: 'Filtro de labels coloridas semanticas.',
|
|
49057
|
+
tags: ['inline', 'filter', 'color', 'labels'],
|
|
49058
|
+
valueShape: 'simple value | unknown[]',
|
|
49059
|
+
recommendedWhen: ['tags coloridas', 'categorias visuais'],
|
|
49060
|
+
avoidWhen: ['quando cor e o unico canal de significado'],
|
|
49061
|
+
dataSourceKind: 'specialized',
|
|
49062
|
+
apiPath: jsonApiPath('inline-color-label/pdx-inline-color-label.json-api.md'),
|
|
49063
|
+
a11yNotes: [
|
|
49064
|
+
'Nunca dependa apenas de cor para comunicar estado ou significado.',
|
|
49065
|
+
'Garanta contraste AA e rotulagem textual no resumo da pill e no painel.',
|
|
49066
|
+
],
|
|
49067
|
+
}),
|
|
49068
|
+
createEntry({
|
|
49069
|
+
id: 'inline-toggle',
|
|
49070
|
+
controlType: FieldControlType.INLINE_TOGGLE,
|
|
49071
|
+
track: 'inline-filter',
|
|
49072
|
+
family: 'toggle-choice',
|
|
49073
|
+
friendlyName: 'Inline toggle',
|
|
49074
|
+
description: 'Booleano compacto com estado neutro para toolbar.',
|
|
49075
|
+
tags: ['inline', 'filter', 'toggle', 'boolean'],
|
|
49076
|
+
valueShape: 'boolean | null',
|
|
49077
|
+
recommendedWhen: ['booleano simples em toolbar'],
|
|
49078
|
+
avoidWhen: ['false e null nao estao bem documentados no fluxo'],
|
|
49079
|
+
dataSourceKind: 'local',
|
|
49080
|
+
apiPath: jsonApiPath('inline-toggle/pdx-inline-toggle.json-api.md'),
|
|
49081
|
+
}),
|
|
49082
|
+
];
|
|
49083
|
+
|
|
47050
49084
|
const BRAZIL_INPUTS_AI_CAPABILITIES = {
|
|
47051
49085
|
version: 'v2.0',
|
|
47052
49086
|
enums: {
|
|
@@ -48856,6 +50890,14 @@ const CLEAR_BUTTON_CONTROL_TYPES = new Set([
|
|
|
48856
50890
|
'inlinetime',
|
|
48857
50891
|
'inlinetimerange',
|
|
48858
50892
|
'inlinetreeselect',
|
|
50893
|
+
'inlineperiodrange',
|
|
50894
|
+
'inlinerating',
|
|
50895
|
+
'inlinedistanceradius',
|
|
50896
|
+
'inlinepipelinestatus',
|
|
50897
|
+
'inlinescorepriority',
|
|
50898
|
+
'inlinerelativeperiod',
|
|
50899
|
+
'inlinesentiment',
|
|
50900
|
+
'inlinecolorlabel',
|
|
48859
50901
|
]);
|
|
48860
50902
|
function supportsClearButtonControlType(controlType) {
|
|
48861
50903
|
if (!controlType)
|
|
@@ -48872,5 +50914,5 @@ function supportsClearButtonControlType(controlType) {
|
|
|
48872
50914
|
* Generated bundle index. Do not edit.
|
|
48873
50915
|
*/
|
|
48874
50916
|
|
|
48875
|
-
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, DateInputComponent, DateUtilsService, DatetimeLocalInputComponent, DynamicFieldLoaderDirective, EmailInputComponent, FILE_UPLOAD_AI_CAPABILITIES, InlineAsyncSelectComponent, InlineAutocompleteComponent, InlineColorLabelComponent, InlineCurrencyComponent, InlineCurrencyRangeComponent, InlineDateComponent, InlineDateRangeComponent, InlineDistanceRadiusComponent, InlineEntityLookupComponent, InlineInputComponent, InlineMultiSelectComponent, InlineNumberComponent, InlinePipelineStatusComponent, InlineRangeSliderComponent, InlineRatingComponent, InlineRelativePeriodComponent, InlineScorePriorityComponent, InlineSearchableSelectComponent, InlineSelectComponent, InlineSentimentComponent, InlineTimeComponent, InlineTimeRangeComponent, InlineToggleComponent, InlineTreeSelectComponent, 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_MULTI_SELECT_COMPONENT_METADATA, PDX_INLINE_NUMBER_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_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, 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 };
|
|
50917
|
+
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 };
|
|
48876
50918
|
//# sourceMappingURL=praxisui-dynamic-fields.mjs.map
|