@praxisui/dynamic-fields 9.0.0-beta.4 → 9.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -182,6 +182,7 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
182
182
  'praxis.dynamicFields.inlineDistance.display.from': '>= {{value}}',
183
183
  'praxis.dynamicFields.inlineDistance.display.upto': '<= {{value}}',
184
184
  'praxis.dynamicFields.inlineDistance.preset.from': '{{value}}+ {{unit}}',
185
+ 'praxis.dynamicFields.dateRange.shortcutsAriaLabel': 'Date range shortcuts',
185
186
  'praxis.dynamicFields.inlineDateRange.placeholder': 'Period',
186
187
  'praxis.dynamicFields.inlineDateRange.startPlaceholder': 'Start',
187
188
  'praxis.dynamicFields.inlineDateRange.endPlaceholder': 'End',
@@ -218,6 +219,13 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
218
219
  'praxis.dynamicFields.inlineTimeRange.validation.maxDistance': 'The maximum distance between times was exceeded',
219
220
  'praxis.dynamicFields.inlineTimeRange.validation.invalid': 'Invalid time range',
220
221
  'praxis.dynamicFields.inlineRange.placeholder': 'Filter',
222
+ 'praxis.dynamicFields.inlineRange.minLabel': 'Min',
223
+ 'praxis.dynamicFields.inlineRange.maxLabel': 'Max',
224
+ 'praxis.dynamicFields.inlineRange.valueLabel': 'Value',
225
+ 'praxis.dynamicFields.inlineRange.quickPresetsLabel': 'Quick ranges',
226
+ 'praxis.dynamicFields.inlineRange.clearActionLabel': 'Clear',
227
+ 'praxis.dynamicFields.inlineRange.applyActionLabel': 'Apply',
228
+ 'praxis.dynamicFields.inlineRange.doneActionLabel': 'Done',
221
229
  'praxis.dynamicFields.inlineRange.cancelActionLabel': 'Cancel',
222
230
  'praxis.dynamicFields.inlineCurrencyRange.placeholder': 'Currency range',
223
231
  'praxis.dynamicFields.inlineCurrencyRange.ariaSelection': '{{label}}: {{value}}',
@@ -227,6 +235,11 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
227
235
  'praxis.dynamicFields.inlineCurrencyRange.actions.apply': 'Apply',
228
236
  'praxis.dynamicFields.inlineCurrencyRange.value.from': '>= {{value}}',
229
237
  'praxis.dynamicFields.inlineCurrencyRange.value.upto': '<= {{value}}',
238
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.required': 'Enter at least one value for the range.',
239
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.rangeOrder': 'The minimum value must be less than or equal to the maximum.',
240
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.rangeMin': 'The minimum allowed value is {{min}}.',
241
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.rangeMax': 'The maximum allowed value is {{max}}.',
242
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.invalid': 'Invalid value.',
230
243
  'praxis.dynamicFields.inlineSelect.placeholder': 'Select',
231
244
  'praxis.dynamicFields.inlinePipelineStatus.placeholder': 'Pipeline',
232
245
  'praxis.dynamicFields.inlinePipelineStatus.panelSubtitle': 'Configurable panel for stages, statuses, or priorities',
@@ -253,6 +266,7 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
253
266
  'praxis.dynamicFields.inlineColorLabel.selectionTitle': 'Selected:',
254
267
  'praxis.dynamicFields.inlineColorLabel.selectionBadgesAriaLabel': 'Selected items',
255
268
  'praxis.dynamicFields.inlineColorLabel.removeSelectionAriaLabel': 'Remove {{label}}',
269
+ 'praxis.dynamicFields.inlineColorLabel.fallbackOptionLabel': 'Option {{index}}',
256
270
  'praxis.dynamicFields.inlineColorLabel.emptyStateText': 'No options found',
257
271
  'praxis.dynamicFields.inlineColorLabel.overlayActionsAriaLabel': '{{label}}: panel actions',
258
272
  'praxis.dynamicFields.inlineColorLabel.clearActionLabel': 'Clear',
@@ -271,14 +285,34 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
271
285
  'praxis.dynamicFields.inlinePipeline.emptyStateText': 'No options found',
272
286
  'praxis.dynamicFields.inlineRelativePeriod.placeholder': 'Relative period',
273
287
  'praxis.dynamicFields.inlineRelativePeriod.panelSubtitle': 'Configurable relative period presets for quick selection',
288
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.today': 'Today',
289
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.yesterday': 'Yesterday',
290
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.last7': 'Last 7 days',
291
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.last30': 'Last 30 days',
292
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.thisMonth': 'This month',
293
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.lastMonth': 'Last month',
294
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.thisQuarter': 'This quarter',
295
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.thisYear': 'This year',
274
296
  'praxis.dynamicFields.inlineRelativePeriod.progressEmptyLabel': 'No selection',
275
297
  'praxis.dynamicFields.inlineRelativePeriod.progressAriaLabel': '{{label}}: {{percent}}%',
276
298
  'praxis.dynamicFields.inlineRelativePeriod.optionsGroupAriaLabel': 'Relative period presets',
299
+ 'praxis.dynamicFields.inlineRelativePeriod.fallbackOptionLabel': 'Option {{index}}',
277
300
  'praxis.dynamicFields.inlineRelativePeriod.emptyStateText': 'No presets available',
278
301
  'praxis.dynamicFields.inlineRelativePeriod.overlayActionsAriaLabel': '{{label}}: panel actions',
279
302
  'praxis.dynamicFields.inlineRelativePeriod.clearActionLabel': 'Clear',
280
303
  'praxis.dynamicFields.inlineRelativePeriod.cancelActionLabel': 'Cancel',
281
304
  'praxis.dynamicFields.inlineRelativePeriod.applyActionLabel': 'Apply',
305
+ 'praxis.dynamicFields.inlinePeriodRange.minLabel': 'Start period',
306
+ 'praxis.dynamicFields.inlinePeriodRange.maxLabel': 'End period',
307
+ 'praxis.dynamicFields.inlinePeriodRange.quickPresetsLabel': 'Quick periods',
308
+ 'praxis.dynamicFields.inlineMonthRange.quickPresetsLabel': 'Quick periods',
309
+ 'praxis.dynamicFields.inlineMonthRange.presetFull': 'Full year',
310
+ 'praxis.dynamicFields.inlineMonthRange.presetFirstHalf': 'Jan-Jun',
311
+ 'praxis.dynamicFields.inlineMonthRange.presetSecondHalf': 'Jul-Dec',
312
+ 'praxis.dynamicFields.inlineYearRange.minLabel': 'Start year',
313
+ 'praxis.dynamicFields.inlineYearRange.maxLabel': 'End year',
314
+ 'praxis.dynamicFields.inlineYearRange.quickPresetsLabel': 'Quick years',
315
+ 'praxis.dynamicFields.inlineYearRange.presetFull': 'Full period',
282
316
  'praxis.dynamicFields.inlineTime.placeholder': 'Time',
283
317
  'praxis.dynamicFields.inlineTime.openPanelAriaLabel': 'Open time picker',
284
318
  'praxis.dynamicFields.inlineTime.closePanelAriaLabel': 'Close time picker',
@@ -288,10 +322,16 @@ const PRAXIS_DYNAMIC_FIELDS_EN_US = {
288
322
  'praxis.dynamicFields.inlineTime.emptyStateLabel': 'No time available',
289
323
  'praxis.dynamicFields.inlineSentiment.placeholder': 'Sentiment',
290
324
  'praxis.dynamicFields.inlineSentiment.panelSubtitle': 'Color-coded sentiment scale for quick classification',
325
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.terrible': 'Terrible',
326
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.bad': 'Bad',
327
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.neutral': 'Neutral',
328
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.good': 'Good',
329
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.great': 'Great',
291
330
  'praxis.dynamicFields.inlineSentiment.barAriaEmpty': '{{label}} with no selection',
292
331
  'praxis.dynamicFields.inlineSentiment.barAriaSelected': '{{label}} with selection: {{value}}',
293
332
  'praxis.dynamicFields.inlineSentiment.optionsGroupAriaLabel': 'Sentiment options',
294
333
  'praxis.dynamicFields.inlineSentiment.selectionPillsAriaLabel': 'Selected sentiments',
334
+ 'praxis.dynamicFields.inlineSentiment.fallbackOptionLabel': 'Option {{index}}',
295
335
  'praxis.dynamicFields.inlineSentiment.emptyStateText': 'No options found',
296
336
  'praxis.dynamicFields.inlineSentiment.overlayActionsAriaLabel': '{{label}}: panel actions',
297
337
  'praxis.dynamicFields.inlineSentiment.clearActionLabel': 'Clear',
@@ -521,6 +561,7 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
521
561
  'praxis.dynamicFields.inlineDistance.display.from': '>= {{value}}',
522
562
  'praxis.dynamicFields.inlineDistance.display.upto': '<= {{value}}',
523
563
  'praxis.dynamicFields.inlineDistance.preset.from': '{{value}}+ {{unit}}',
564
+ 'praxis.dynamicFields.dateRange.shortcutsAriaLabel': 'Atalhos de período de datas',
524
565
  'praxis.dynamicFields.inlineDateRange.placeholder': 'Período',
525
566
  'praxis.dynamicFields.inlineDateRange.startPlaceholder': 'Início',
526
567
  'praxis.dynamicFields.inlineDateRange.endPlaceholder': 'Fim',
@@ -557,6 +598,13 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
557
598
  'praxis.dynamicFields.inlineTimeRange.validation.maxDistance': 'A distância máxima entre horários foi excedida',
558
599
  'praxis.dynamicFields.inlineTimeRange.validation.invalid': 'Faixa de horário inválida',
559
600
  'praxis.dynamicFields.inlineRange.placeholder': 'Filtro',
601
+ 'praxis.dynamicFields.inlineRange.minLabel': 'Min',
602
+ 'praxis.dynamicFields.inlineRange.maxLabel': 'Max',
603
+ 'praxis.dynamicFields.inlineRange.valueLabel': 'Valor',
604
+ 'praxis.dynamicFields.inlineRange.quickPresetsLabel': 'Faixas rápidas',
605
+ 'praxis.dynamicFields.inlineRange.clearActionLabel': 'Limpar',
606
+ 'praxis.dynamicFields.inlineRange.applyActionLabel': 'Aplicar',
607
+ 'praxis.dynamicFields.inlineRange.doneActionLabel': 'Concluir',
560
608
  'praxis.dynamicFields.inlineRange.cancelActionLabel': 'Cancelar',
561
609
  'praxis.dynamicFields.inlineCurrencyRange.placeholder': 'Faixa monetária',
562
610
  'praxis.dynamicFields.inlineCurrencyRange.ariaSelection': '{{label}}: {{value}}',
@@ -566,6 +614,11 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
566
614
  'praxis.dynamicFields.inlineCurrencyRange.actions.apply': 'Aplicar',
567
615
  'praxis.dynamicFields.inlineCurrencyRange.value.from': '>= {{value}}',
568
616
  'praxis.dynamicFields.inlineCurrencyRange.value.upto': '<= {{value}}',
617
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.required': 'Informe ao menos um valor para o intervalo.',
618
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.rangeOrder': 'O valor mínimo deve ser menor ou igual ao máximo.',
619
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.rangeMin': 'O valor mínimo permitido é {{min}}.',
620
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.rangeMax': 'O valor máximo permitido é {{max}}.',
621
+ 'praxis.dynamicFields.inlineCurrencyRange.validation.invalid': 'Valor inválido.',
569
622
  'praxis.dynamicFields.inlineSelect.placeholder': 'Selecionar',
570
623
  'praxis.dynamicFields.inlinePipelineStatus.placeholder': 'Pipeline',
571
624
  'praxis.dynamicFields.inlinePipelineStatus.panelSubtitle': 'Painel de seleção configurável para estágios, status ou prioridades',
@@ -592,6 +645,7 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
592
645
  'praxis.dynamicFields.inlineColorLabel.selectionTitle': 'Selecionados:',
593
646
  'praxis.dynamicFields.inlineColorLabel.selectionBadgesAriaLabel': 'Itens selecionados',
594
647
  'praxis.dynamicFields.inlineColorLabel.removeSelectionAriaLabel': 'Remover {{label}}',
648
+ 'praxis.dynamicFields.inlineColorLabel.fallbackOptionLabel': 'Opção {{index}}',
595
649
  'praxis.dynamicFields.inlineColorLabel.emptyStateText': 'Nenhuma opção encontrada',
596
650
  'praxis.dynamicFields.inlineColorLabel.overlayActionsAriaLabel': '{{label}}: ações do painel',
597
651
  'praxis.dynamicFields.inlineColorLabel.clearActionLabel': 'Limpar',
@@ -610,14 +664,34 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
610
664
  'praxis.dynamicFields.inlinePipeline.emptyStateText': 'Nenhuma opção encontrada',
611
665
  'praxis.dynamicFields.inlineRelativePeriod.placeholder': 'Período relativo',
612
666
  'praxis.dynamicFields.inlineRelativePeriod.panelSubtitle': 'Presets de período configuráveis para seleção rápida',
667
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.today': 'Hoje',
668
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.yesterday': 'Ontem',
669
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.last7': 'Últimos 7 dias',
670
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.last30': 'Últimos 30 dias',
671
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.thisMonth': 'Este mês',
672
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.lastMonth': 'Mês passado',
673
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.thisQuarter': 'Este trimestre',
674
+ 'praxis.dynamicFields.inlineRelativePeriod.defaultOptions.thisYear': 'Este ano',
613
675
  'praxis.dynamicFields.inlineRelativePeriod.progressEmptyLabel': 'Sem seleção',
614
676
  'praxis.dynamicFields.inlineRelativePeriod.progressAriaLabel': '{{label}}: {{percent}}%',
615
677
  'praxis.dynamicFields.inlineRelativePeriod.optionsGroupAriaLabel': 'Presets de período relativo',
678
+ 'praxis.dynamicFields.inlineRelativePeriod.fallbackOptionLabel': 'Opção {{index}}',
616
679
  'praxis.dynamicFields.inlineRelativePeriod.emptyStateText': 'Nenhum preset disponível',
617
680
  'praxis.dynamicFields.inlineRelativePeriod.overlayActionsAriaLabel': '{{label}}: ações do painel',
618
681
  'praxis.dynamicFields.inlineRelativePeriod.clearActionLabel': 'Limpar',
619
682
  'praxis.dynamicFields.inlineRelativePeriod.cancelActionLabel': 'Cancelar',
620
683
  'praxis.dynamicFields.inlineRelativePeriod.applyActionLabel': 'Aplicar',
684
+ 'praxis.dynamicFields.inlinePeriodRange.minLabel': 'Período inicial',
685
+ 'praxis.dynamicFields.inlinePeriodRange.maxLabel': 'Período final',
686
+ 'praxis.dynamicFields.inlinePeriodRange.quickPresetsLabel': 'Períodos rápidos',
687
+ 'praxis.dynamicFields.inlineMonthRange.quickPresetsLabel': 'Períodos rápidos',
688
+ 'praxis.dynamicFields.inlineMonthRange.presetFull': 'Ano todo',
689
+ 'praxis.dynamicFields.inlineMonthRange.presetFirstHalf': 'Jan-Jun',
690
+ 'praxis.dynamicFields.inlineMonthRange.presetSecondHalf': 'Jul-Dez',
691
+ 'praxis.dynamicFields.inlineYearRange.minLabel': 'Ano inicial',
692
+ 'praxis.dynamicFields.inlineYearRange.maxLabel': 'Ano final',
693
+ 'praxis.dynamicFields.inlineYearRange.quickPresetsLabel': 'Anos rápidos',
694
+ 'praxis.dynamicFields.inlineYearRange.presetFull': 'Todo o período',
621
695
  'praxis.dynamicFields.inlineTime.placeholder': 'Horário',
622
696
  'praxis.dynamicFields.inlineTime.openPanelAriaLabel': 'Abrir seletor de horário',
623
697
  'praxis.dynamicFields.inlineTime.closePanelAriaLabel': 'Fechar seletor de horário',
@@ -627,10 +701,16 @@ const PRAXIS_DYNAMIC_FIELDS_PT_BR = {
627
701
  'praxis.dynamicFields.inlineTime.emptyStateLabel': 'Nenhum horário disponível',
628
702
  'praxis.dynamicFields.inlineSentiment.placeholder': 'Sentimento',
629
703
  'praxis.dynamicFields.inlineSentiment.panelSubtitle': 'Escala de sentimento colorida para classificação rápida',
704
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.terrible': 'Péssimo',
705
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.bad': 'Ruim',
706
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.neutral': 'Neutro',
707
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.good': 'Bom',
708
+ 'praxis.dynamicFields.inlineSentiment.defaultOptions.great': 'Ótimo',
630
709
  'praxis.dynamicFields.inlineSentiment.barAriaEmpty': '{{label}} sem seleção',
631
710
  'praxis.dynamicFields.inlineSentiment.barAriaSelected': '{{label}} com seleção: {{value}}',
632
711
  'praxis.dynamicFields.inlineSentiment.optionsGroupAriaLabel': 'Opções de sentimento',
633
712
  'praxis.dynamicFields.inlineSentiment.selectionPillsAriaLabel': 'Sentimentos selecionados',
713
+ 'praxis.dynamicFields.inlineSentiment.fallbackOptionLabel': 'Opção {{index}}',
634
714
  'praxis.dynamicFields.inlineSentiment.emptyStateText': 'Nenhuma opção encontrada',
635
715
  'praxis.dynamicFields.inlineSentiment.overlayActionsAriaLabel': '{{label}}: ações do painel',
636
716
  'praxis.dynamicFields.inlineSentiment.clearActionLabel': 'Limpar',
@@ -6669,14 +6749,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6669
6749
  class PraxisDateRangeShortcutsOverlayComponent {
6670
6750
  items = [];
6671
6751
  activeId = null;
6752
+ ariaLabel = 'Date range shortcuts';
6672
6753
  selectPreset = new EventEmitter();
6673
6754
  onClick(s) {
6674
6755
  if (!s.disabled)
6675
6756
  this.selectPreset.emit(s.id);
6676
6757
  }
6677
6758
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisDateRangeShortcutsOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6678
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisDateRangeShortcutsOverlayComponent, isStandalone: true, selector: "pdx-date-range-shortcuts-overlay", inputs: { items: "items", activeId: "activeId" }, outputs: { selectPreset: "selectPreset" }, ngImport: i0, template: `
6679
- <div class="pdx-date-range-panel" role="listbox" aria-label="Date range shortcuts" [attr.aria-activedescendant]="activeId || null">
6759
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisDateRangeShortcutsOverlayComponent, isStandalone: true, selector: "pdx-date-range-shortcuts-overlay", inputs: { items: "items", activeId: "activeId", ariaLabel: "ariaLabel" }, outputs: { selectPreset: "selectPreset" }, ngImport: i0, template: `
6760
+ <div class="pdx-date-range-panel" role="listbox" [attr.aria-label]="ariaLabel" [attr.aria-activedescendant]="activeId || null">
6680
6761
  <div class="pdx-shortcuts-list">
6681
6762
  @for (s of items; track s.id) {
6682
6763
  <button
@@ -6708,7 +6789,7 @@ class PraxisDateRangeShortcutsOverlayComponent {
6708
6789
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisDateRangeShortcutsOverlayComponent, decorators: [{
6709
6790
  type: Component,
6710
6791
  args: [{ selector: 'pdx-date-range-shortcuts-overlay', standalone: true, imports: [MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
6711
- <div class="pdx-date-range-panel" role="listbox" aria-label="Date range shortcuts" [attr.aria-activedescendant]="activeId || null">
6792
+ <div class="pdx-date-range-panel" role="listbox" [attr.aria-label]="ariaLabel" [attr.aria-activedescendant]="activeId || null">
6712
6793
  <div class="pdx-shortcuts-list">
6713
6794
  @for (s of items; track s.id) {
6714
6795
  <button
@@ -6740,6 +6821,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6740
6821
  type: Input
6741
6822
  }], activeId: [{
6742
6823
  type: Input
6824
+ }], ariaLabel: [{
6825
+ type: Input
6743
6826
  }], selectPreset: [{
6744
6827
  type: Output
6745
6828
  }] } });
@@ -6786,6 +6869,7 @@ class MaterialDateRangeComponent extends SimpleBaseInputComponent {
6786
6869
  picker;
6787
6870
  endDateInput;
6788
6871
  shouldShowShortcuts = () => !!(this.metadata()?.showShortcuts);
6872
+ shortcutOverlayAriaLabel = computed(() => this.tDynamicFields('dateRange.shortcutsAriaLabel', 'Atalhos de período de datas'), ...(ngDevMode ? [{ debugName: "shortcutOverlayAriaLabel" }] : /* istanbul ignore next */ []));
6789
6873
  overlayPositions = () => {
6790
6874
  const preferredPosition = this.metadata()?.shortcutsPosition ?? 'auto';
6791
6875
  const below = this.shortcutOverlayBelowPositions();
@@ -7318,12 +7402,13 @@ class MaterialDateRangeComponent extends SimpleBaseInputComponent {
7318
7402
  <pdx-date-range-shortcuts-overlay
7319
7403
  [items]="shortcutItems()"
7320
7404
  [activeId]="activePresetId()"
7405
+ [ariaLabel]="shortcutOverlayAriaLabel()"
7321
7406
  (selectPreset)="onSelectPreset($event)"
7322
7407
  />
7323
7408
  </ng-template>
7324
7409
  }
7325
7410
  </div>
7326
- `, isInline: true, styles: ["::ng-deep .cdk-overlay-connected-position-bounding-box:has(.pdx-datepicker-panel){z-index:var(--praxis-layer-popup, 1400)!important}::ng-deep .cdk-overlay-pane:has(.pdx-datepicker-panel){z-index:var(--praxis-layer-popup, 1400)!important}@media(min-width:600px){::ng-deep .cdk-overlay-pane.mat-datepicker-dialog{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;max-width:calc(100vw - 32px)!important;max-height:calc(100vh - 96px)!important}::ng-deep .cdk-overlay-pane.mat-datepicker-dialog .mat-datepicker-content-touch,::ng-deep .pdx-datepicker-panel.mat-datepicker-content-touch{width:min(360px,calc(100vw - 32px))!important;height:auto!important;max-height:calc(100vh - 96px)!important}::ng-deep .cdk-overlay-pane.mat-datepicker-dialog .mat-datepicker-content-container,::ng-deep .cdk-overlay-pane.mat-datepicker-dialog .mat-calendar,::ng-deep .pdx-datepicker-panel.mat-datepicker-content-touch .mat-datepicker-content-container,::ng-deep .pdx-datepicker-panel.mat-datepicker-content-touch .mat-calendar{width:100%!important;height:auto!important;max-height:calc(100vh - 120px)!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i6.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i6.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i6.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i6.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PraxisDateRangeShortcutsOverlayComponent, selector: "pdx-date-range-shortcuts-overlay", inputs: ["items", "activeId"], outputs: ["selectPreset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7411
+ `, isInline: true, styles: ["::ng-deep .cdk-overlay-connected-position-bounding-box:has(.pdx-datepicker-panel){z-index:var(--praxis-layer-popup, 1400)!important}::ng-deep .cdk-overlay-pane:has(.pdx-datepicker-panel){z-index:var(--praxis-layer-popup, 1400)!important}@media(min-width:600px){::ng-deep .cdk-overlay-pane.mat-datepicker-dialog{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;max-width:calc(100vw - 32px)!important;max-height:calc(100vh - 96px)!important}::ng-deep .cdk-overlay-pane.mat-datepicker-dialog .mat-datepicker-content-touch,::ng-deep .pdx-datepicker-panel.mat-datepicker-content-touch{width:min(360px,calc(100vw - 32px))!important;height:auto!important;max-height:calc(100vh - 96px)!important}::ng-deep .cdk-overlay-pane.mat-datepicker-dialog .mat-datepicker-content-container,::ng-deep .cdk-overlay-pane.mat-datepicker-dialog .mat-calendar,::ng-deep .pdx-datepicker-panel.mat-datepicker-content-touch .mat-datepicker-content-container,::ng-deep .pdx-datepicker-panel.mat-datepicker-content-touch .mat-calendar{width:100%!important;height:auto!important;max-height:calc(100vh - 120px)!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i6.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i6.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i6.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i6.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PraxisDateRangeShortcutsOverlayComponent, selector: "pdx-date-range-shortcuts-overlay", inputs: ["items", "activeId", "ariaLabel"], outputs: ["selectPreset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7327
7412
  }
7328
7413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MaterialDateRangeComponent, decorators: [{
7329
7414
  type: Component,
@@ -7463,6 +7548,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7463
7548
  <pdx-date-range-shortcuts-overlay
7464
7549
  [items]="shortcutItems()"
7465
7550
  [activeId]="activePresetId()"
7551
+ [ariaLabel]="shortcutOverlayAriaLabel()"
7466
7552
  (selectPreset)="onSelectPreset($event)"
7467
7553
  />
7468
7554
  </ng-template>
@@ -12354,10 +12440,10 @@ class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
12354
12440
  this.preloadSelected(selected);
12355
12441
  }
12356
12442
  missingOptionLabel(id) {
12357
- return this.tDynamicFields('select.missingOptionLabel', '', { id });
12443
+ return this.tDynamicFields('select.missingOptionLabel', 'Opção indisponível (#{{id}})', { id });
12358
12444
  }
12359
12445
  loadOptionsErrorLabel() {
12360
- return this.tDynamicFields('select.loadOptionsError', '');
12446
+ return this.tDynamicFields('select.loadOptionsError', 'Erro ao carregar opções.');
12361
12447
  }
12362
12448
  mapRemoteOption(option) {
12363
12449
  return {
@@ -21782,7 +21868,7 @@ class DatetimeLocalInputComponent extends SimpleBaseInputComponent {
21782
21868
  if (!errors)
21783
21869
  return '';
21784
21870
  if (errors['required'])
21785
- return 'Campo obrigatório';
21871
+ return this.tDynamicFields('validation.required', 'Campo obrigatório');
21786
21872
  if (errors['min']) {
21787
21873
  return validators.minMessage || `Data mínima: ${min}`;
21788
21874
  }
@@ -21790,7 +21876,7 @@ class DatetimeLocalInputComponent extends SimpleBaseInputComponent {
21790
21876
  return validators.maxMessage || `Data máxima: ${max}`;
21791
21877
  }
21792
21878
  if (errors['pattern']) {
21793
- return 'Formato inválido';
21879
+ return this.tDynamicFields('validation.pattern', 'Formato inválido');
21794
21880
  }
21795
21881
  return '';
21796
21882
  }, ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
@@ -28113,10 +28199,10 @@ class MaterialAutocompleteComponent extends SimpleBaseSelectComponent {
28113
28199
  if (typeof meta?.name === 'string' && meta.name.trim().length) {
28114
28200
  return meta.name.trim();
28115
28201
  }
28116
- return this.tDynamicFields('autocomplete.inputAriaLabel', '');
28202
+ return this.tDynamicFields('autocomplete.inputAriaLabel', 'Autocomplete');
28117
28203
  }
28118
28204
  noResultsLabel() {
28119
- return this.tDynamicFields('autocomplete.noResults', '');
28205
+ return this.tDynamicFields('autocomplete.noResults', 'Nenhum resultado');
28120
28206
  }
28121
28207
  onSearchInputEvent(event) {
28122
28208
  const term = event.target instanceof HTMLInputElement ? event.target.value : '';
@@ -28277,10 +28363,10 @@ class MaterialAutocompleteComponent extends SimpleBaseSelectComponent {
28277
28363
  return undefined;
28278
28364
  }
28279
28365
  missingOptionLabel(id) {
28280
- return this.tDynamicFields('select.missingOptionLabel', '', { id });
28366
+ return this.tDynamicFields('select.missingOptionLabel', 'Opção indisponível (#{{id}})', { id });
28281
28367
  }
28282
28368
  loadOptionsErrorLabel() {
28283
- return this.tDynamicFields('select.loadOptionsError', '');
28369
+ return this.tDynamicFields('select.loadOptionsError', 'Erro ao carregar opções.');
28284
28370
  }
28285
28371
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MaterialAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28286
28372
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: MaterialAutocompleteComponent, isStandalone: true, selector: "pdx-material-autocomplete", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode" }, host: { properties: { "class": "componentCssClasses()", "class.praxis-disabled": "disabledMode", "style.display": "visible ? null : \"none\"", "attr.aria-hidden": "visible ? null : \"true\"", "attr.data-field-type": "\"autocomplete\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
@@ -30746,15 +30832,19 @@ class InlineCurrencyRangeComponent extends SimpleBaseInputComponent {
30746
30832
  const errors = this.control().errors;
30747
30833
  if (!errors)
30748
30834
  return '';
30749
- if (errors['required'])
30750
- return 'Informe ao menos um valor para o intervalo.';
30751
- if (errors['rangeOrder'])
30752
- return 'O valor mínimo deve ser menor ou igual ao máximo.';
30753
- if (errors['rangeMin'])
30754
- return `O valor mínimo permitido é ${this.formatCurrency(this.minValue())}.`;
30755
- if (errors['rangeMax'])
30756
- return `O valor máximo permitido é ${this.formatCurrency(this.maxValue())}.`;
30757
- return 'Valor inválido.';
30835
+ if (errors['required']) {
30836
+ return this.tDynamicFields('inlineCurrencyRange.validation.required', 'Informe ao menos um valor para o intervalo.');
30837
+ }
30838
+ if (errors['rangeOrder']) {
30839
+ return this.tDynamicFields('inlineCurrencyRange.validation.rangeOrder', 'O valor mínimo deve ser menor ou igual ao máximo.');
30840
+ }
30841
+ if (errors['rangeMin']) {
30842
+ return this.tDynamicFields('inlineCurrencyRange.validation.rangeMin', 'O valor mínimo permitido é {{min}}.', { min: this.formatCurrency(this.minValue()) });
30843
+ }
30844
+ if (errors['rangeMax']) {
30845
+ return this.tDynamicFields('inlineCurrencyRange.validation.rangeMax', 'O valor máximo permitido é {{max}}.', { max: this.formatCurrency(this.maxValue()) });
30846
+ }
30847
+ return this.tDynamicFields('inlineCurrencyRange.validation.invalid', 'Valor inválido.');
30758
30848
  }, ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
30759
30849
  fieldLabelText = '';
30760
30850
  validatorCache = [];
@@ -32407,7 +32497,9 @@ class InlineToggleComponent extends SimpleBaseInputComponent {
32407
32497
  const label = this.placeholderText();
32408
32498
  if (!this.hasSelection())
32409
32499
  return label;
32410
- return `${label}: ${this.isTrue() ? 'Sim' : 'Não'}`;
32500
+ return `${label}: ${this.isTrue()
32501
+ ? this.tDynamicFields('boolean.true', 'Sim')
32502
+ : this.tDynamicFields('boolean.false', 'Não')}`;
32411
32503
  }
32412
32504
  isReadonlyEffective() {
32413
32505
  const st = computeEffectiveState(this.metadata(), {
@@ -32825,27 +32917,31 @@ class InlineRangeSliderComponent extends SimpleBaseInputComponent {
32825
32917
  }
32826
32918
  inputMinLabel() {
32827
32919
  const texts = this.inlineTexts();
32828
- return texts.minLabel || 'Min';
32920
+ return texts.minLabel || this.tDynamicFields('inlineRange.minLabel', 'Min');
32829
32921
  }
32830
32922
  inputMaxLabel() {
32831
32923
  const texts = this.inlineTexts();
32832
- return texts.maxLabel || 'Max';
32924
+ return texts.maxLabel || this.tDynamicFields('inlineRange.maxLabel', 'Max');
32833
32925
  }
32834
32926
  inputValueLabel() {
32835
32927
  const texts = this.inlineTexts();
32836
- return texts.valueLabel || 'Valor';
32928
+ return texts.valueLabel || this.tDynamicFields('inlineRange.valueLabel', 'Valor');
32837
32929
  }
32838
32930
  quickPresetsGroupLabel() {
32839
32931
  const texts = this.inlineTexts();
32840
- return texts.quickPresetsLabel || 'Faixas rápidas';
32932
+ return texts.quickPresetsLabel || this.tDynamicFields('inlineRange.quickPresetsLabel', 'Faixas rápidas');
32841
32933
  }
32842
32934
  clearPanelActionLabel() {
32843
- return this.inlineOverlayAction('clear')?.label || this.inlineTexts().clearActionLabel || 'Limpar';
32935
+ return (this.inlineOverlayAction('clear')?.label ||
32936
+ this.inlineTexts().clearActionLabel ||
32937
+ this.tDynamicFields('inlineRange.clearActionLabel', 'Limpar'));
32844
32938
  }
32845
32939
  donePanelActionLabel() {
32846
32940
  return (this.inlineOverlayAction('apply')?.label ||
32847
32941
  this.inlineTexts().doneActionLabel ||
32848
- (this.usesExplicitApplyMode() ? 'Aplicar' : 'Concluir'));
32942
+ (this.usesExplicitApplyMode()
32943
+ ? this.tDynamicFields('inlineRange.applyActionLabel', 'Aplicar')
32944
+ : this.tDynamicFields('inlineRange.doneActionLabel', 'Concluir')));
32849
32945
  }
32850
32946
  cancelPanelActionLabel() {
32851
32947
  return this.inlineOverlayAction('cancel')?.label || this.tDynamicFields('inlineRange.cancelActionLabel', 'Cancelar');
@@ -34892,12 +34988,12 @@ class InlinePeriodRangeComponent extends SimpleBaseInputComponent {
34892
34988
  const maxIndex = Math.max(periodState.values.length - 1, 0);
34893
34989
  const defaultInlineTexts = metadata.granularity === 'year'
34894
34990
  ? {
34895
- minLabel: 'Período inicial',
34896
- maxLabel: 'Período final',
34897
- quickPresetsLabel: 'Períodos rápidos',
34991
+ minLabel: this.tDynamicFields('inlinePeriodRange.minLabel', 'Período inicial'),
34992
+ maxLabel: this.tDynamicFields('inlinePeriodRange.maxLabel', 'Período final'),
34993
+ quickPresetsLabel: this.tDynamicFields('inlinePeriodRange.quickPresetsLabel', 'Períodos rápidos'),
34898
34994
  }
34899
34995
  : {
34900
- quickPresetsLabel: 'Períodos rápidos',
34996
+ quickPresetsLabel: this.tDynamicFields('inlinePeriodRange.quickPresetsLabel', 'Períodos rápidos'),
34901
34997
  };
34902
34998
  return {
34903
34999
  ...metadata,
@@ -35245,7 +35341,9 @@ class InlineYearRangeComponent extends SimpleBaseInputComponent {
35245
35341
  const boundedMin = Math.min(minYear, maxYear);
35246
35342
  const boundedMax = Math.max(maxYear, minYear);
35247
35343
  const fullLabel = metadata.quickPresetsLabels?.full ||
35248
- (boundedMin === boundedMax ? String(boundedMax) : 'Todo o período');
35344
+ (boundedMin === boundedMax
35345
+ ? String(boundedMax)
35346
+ : this.tDynamicFields('inlineYearRange.presetFull', 'Todo o período'));
35249
35347
  const currentLabel = metadata.quickPresetsLabels?.current || String(boundedMax);
35250
35348
  const previousYear = Math.max(boundedMin, boundedMax - 1);
35251
35349
  const previousLabel = metadata.quickPresetsLabels?.previous || String(previousYear);
@@ -35299,9 +35397,9 @@ class InlineYearRangeComponent extends SimpleBaseInputComponent {
35299
35397
  showInputs: metadata.showInputs ?? true,
35300
35398
  prefixIcon: metadata.prefixIcon || 'calendar_today',
35301
35399
  inlineTexts: metadata.inlineTexts ?? {
35302
- minLabel: 'Ano inicial',
35303
- maxLabel: 'Ano final',
35304
- quickPresetsLabel: 'Anos rápidos',
35400
+ minLabel: this.tDynamicFields('inlineYearRange.minLabel', 'Ano inicial'),
35401
+ maxLabel: this.tDynamicFields('inlineYearRange.maxLabel', 'Ano final'),
35402
+ quickPresetsLabel: this.tDynamicFields('inlineYearRange.quickPresetsLabel', 'Anos rápidos'),
35305
35403
  },
35306
35404
  displayWith: metadata.displayWith ??
35307
35405
  ((value) => {
@@ -35404,9 +35502,12 @@ class InlineMonthRangeComponent extends SimpleBaseInputComponent {
35404
35502
  if (!metadata)
35405
35503
  return null;
35406
35504
  const labels = this.resolveMonthLabels(metadata);
35407
- const fullLabel = metadata.quickPresetsLabels?.full || 'Ano todo';
35408
- const firstHalfLabel = metadata.quickPresetsLabels?.firstHalf || 'Jan-Jun';
35409
- const secondHalfLabel = metadata.quickPresetsLabels?.secondHalf || 'Jul-Dez';
35505
+ const fullLabel = metadata.quickPresetsLabels?.full ||
35506
+ this.tDynamicFields('inlineMonthRange.presetFull', 'Ano todo');
35507
+ const firstHalfLabel = metadata.quickPresetsLabels?.firstHalf ||
35508
+ this.tDynamicFields('inlineMonthRange.presetFirstHalf', 'Jan-Jun');
35509
+ const secondHalfLabel = metadata.quickPresetsLabels?.secondHalf ||
35510
+ this.tDynamicFields('inlineMonthRange.presetSecondHalf', 'Jul-Dez');
35410
35511
  return {
35411
35512
  ...metadata,
35412
35513
  controlType: FieldControlType.RANGE_SLIDER,
@@ -35419,7 +35520,7 @@ class InlineMonthRangeComponent extends SimpleBaseInputComponent {
35419
35520
  showInputs: metadata.showInputs ?? false,
35420
35521
  prefixIcon: metadata.prefixIcon || 'calendar_view_month',
35421
35522
  inlineTexts: metadata.inlineTexts ?? {
35422
- quickPresetsLabel: 'Períodos rápidos',
35523
+ quickPresetsLabel: this.tDynamicFields('inlineMonthRange.quickPresetsLabel', 'Períodos rápidos'),
35423
35524
  },
35424
35525
  displayWith: metadata.displayWith ??
35425
35526
  ((value) => {
@@ -47333,15 +47434,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
47333
47434
  }, styles: [":host{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-score-root{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-score-chip{display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;min-height:var(--pdx-inline-control-height, 42px);min-inline-size:var(--pdx-inline-score-min-w, 182px);max-width:min(var(--pdx-inline-score-max-w, 340px),calc(100vw - 48px));padding:0 8px 0 0;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease}.pdx-inline-score-chip.is-active{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-inline-score-chip.is-open{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-score-trigger{flex:1 1 auto;display:inline-flex;align-items:center;gap:10px;min-width:0;width:100%;min-height:var(--pdx-inline-control-height-mobile, 40px);border:0;background:transparent;color:inherit;cursor:pointer;padding:0 12px;text-align:left}.pdx-inline-score-trigger:focus-visible{outline:2px solid color-mix(in srgb,currentColor 42%,transparent);outline-offset:-2px;border-radius:999px}.pdx-inline-score-icon{width:18px;height:18px;font-size:18px}.pdx-inline-score-text{display:inline-block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.15;font-weight:500}.pdx-inline-score-clear{--clear-ring-color: var(--md-sys-color-primary);width:var(--pdx-inline-clear-size, 22px);height:var(--pdx-inline-clear-size, 22px);min-width:var(--pdx-inline-clear-size, 22px);margin-right:10px;display:grid;place-items:center;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;background:color-mix(in srgb,var(--md-sys-color-on-surface) 10%,transparent);color:inherit;cursor:pointer}.pdx-inline-score-chip.is-active .pdx-inline-score-clear{--clear-ring-color: var(--md-sys-color-on-primary);background:color-mix(in srgb,var(--md-sys-color-on-primary) 22%,transparent)}.pdx-inline-score-clear:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}.pdx-inline-score-clear mat-icon{width:15px;height:15px;font-size:15px}.pdx-inline-score-panel{width:min(var(--pdx-inline-score-panel-max-w, 560px),calc(100vw - 24px));min-width:min(var(--pdx-inline-score-panel-min-w, 300px),calc(100vw - 24px));max-width:min(var(--pdx-inline-score-panel-max-w, 560px),calc(100vw - 24px));padding:14px 16px;border-radius:16px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);box-shadow:0 14px 30px color-mix(in srgb,var(--md-sys-color-shadow) 20%,transparent);box-sizing:border-box;display:grid;gap:12px}.pdx-inline-score-header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}.pdx-inline-score-header-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-surface-container-high));color:var(--md-sys-color-primary)}.pdx-inline-score-title{font-size:1rem;font-weight:600}.pdx-inline-score-subtitle{color:var(--md-sys-color-on-surface-variant);font-size:.82rem}.pdx-inline-score-track-shell{display:grid;gap:8px}.pdx-inline-score-track{position:relative;min-height:34px;border-radius:999px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent);overflow:hidden}.pdx-inline-score-marker{position:absolute;top:0;bottom:0;width:3px;background:var(--md-sys-color-on-surface);transform:translate(-50%);box-shadow:0 0 0 1px color-mix(in srgb,white 40%,transparent)}.pdx-inline-score-labels{position:relative;min-height:18px}.pdx-inline-score-label{position:absolute;transform:translate(-50%);font-size:.75rem;font-weight:600;white-space:nowrap}.pdx-inline-score-values{display:inline-flex;align-items:center;justify-content:center;gap:10px}.pdx-inline-score-value-block{display:inline-grid;gap:2px;justify-items:center}.pdx-inline-score-value-block strong{font-size:1.7rem;line-height:1}.pdx-inline-score-value-block small{font-size:.76rem;color:var(--md-sys-color-on-surface-variant)}.pdx-inline-score-separator{color:var(--md-sys-color-outline);font-weight:600}.pdx-inline-score-unit{font-size:.86rem;color:var(--md-sys-color-on-surface-variant)}.pdx-inline-score-slider-wrap{padding-top:2px}.pdx-inline-score-slider{width:100%}.pdx-inline-score-edges{display:flex;justify-content:space-between;color:var(--md-sys-color-on-surface-variant);font-size:.82rem}.pdx-inline-score-chips{display:flex;flex-wrap:wrap;gap:8px}.pdx-inline-score-chip-btn{border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);border-radius:999px;min-height:30px;padding:0 10px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.pdx-inline-score-chip-btn.is-active{border-color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary-container) 80%,transparent);color:var(--md-sys-color-on-primary-container)}.pdx-inline-score-chip-btn:disabled{opacity:.56;cursor:default}.pdx-inline-score-chip-dot{width:8px;height:8px;border-radius:50%}.pdx-inline-score-actions{--pdx-inline-score-action-primary-container: var(--md-sys-color-primary);--pdx-inline-score-action-primary-label: var(--md-sys-color-on-primary);--pdx-inline-score-action-primary-tonal-container: var(--md-sys-color-primary-container);--pdx-inline-score-action-primary-tonal-label: var(--md-sys-color-on-primary-container);--pdx-inline-score-action-neutral-container: var(--md-sys-color-surface-container-high);--pdx-inline-score-action-neutral-label: var(--md-sys-color-on-surface);--pdx-inline-score-action-neutral-tonal-container: var(--md-sys-color-secondary-container);--pdx-inline-score-action-neutral-tonal-label: var(--md-sys-color-on-secondary-container);--pdx-inline-score-action-danger-container: var(--md-sys-color-error);--pdx-inline-score-action-danger-label: var(--md-sys-color-on-error);--pdx-inline-score-action-danger-tonal-container: var(--md-sys-color-error-container);--pdx-inline-score-action-danger-tonal-label: var(--md-sys-color-on-error-container);display:flex;align-items:center;gap:8px;padding-top:2px}.pdx-inline-score-action-spacer{flex:1 1 auto}.pdx-inline-score-action{min-height:32px;border-radius:999px;border:1px solid transparent;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-size:.86rem;font-weight:600;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.pdx-inline-score-action[data-appearance=text]{background:transparent;color:var(--pdx-inline-score-action-neutral-label)}.pdx-inline-score-action[data-appearance=outlined]{background:transparent;border-color:var(--md-sys-color-outline-variant);color:var(--pdx-inline-score-action-neutral-label)}.pdx-inline-score-action[data-appearance=filled]{background:var(--pdx-inline-score-action-neutral-container);color:var(--pdx-inline-score-action-neutral-label)}.pdx-inline-score-action[data-appearance=tonal]{background:var(--pdx-inline-score-action-neutral-tonal-container);color:var(--pdx-inline-score-action-neutral-tonal-label)}.pdx-inline-score-action[data-color-role=primary][data-appearance=filled]{background:var(--pdx-inline-score-action-primary-container);color:var(--pdx-inline-score-action-primary-label)}.pdx-inline-score-action[data-color-role=primary][data-appearance=tonal]{background:var(--pdx-inline-score-action-primary-tonal-container);color:var(--pdx-inline-score-action-primary-tonal-label)}.pdx-inline-score-action[data-color-role=primary][data-appearance=text],.pdx-inline-score-action[data-color-role=primary][data-appearance=outlined]{color:var(--md-sys-color-primary)}.pdx-inline-score-action[data-color-role=danger][data-appearance=filled]{background:var(--pdx-inline-score-action-danger-container);color:var(--pdx-inline-score-action-danger-label)}.pdx-inline-score-action[data-color-role=danger][data-appearance=tonal]{background:var(--pdx-inline-score-action-danger-tonal-container);color:var(--pdx-inline-score-action-danger-tonal-label)}.pdx-inline-score-action[data-color-role=danger][data-appearance=text],.pdx-inline-score-action[data-color-role=danger][data-appearance=outlined]{color:var(--md-sys-color-error)}.pdx-inline-score-action:hover:not(:disabled){box-shadow:inset 0 0 0 999px color-mix(in srgb,currentColor 8%,transparent)}.pdx-inline-score-action:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:2px}.pdx-inline-score-action:disabled{opacity:.48;cursor:default}@media(max-width:768px){.pdx-inline-score-panel{min-width:min(288px,calc(100vw - 24px));padding:12px}.pdx-inline-score-value-block strong{font-size:1.45rem}}\n"] }]
47334
47435
  }] });
47335
47436
 
47336
- const DEFAULT_RELATIVE_PERIOD_OPTIONS = [
47337
- { id: 'today', label: 'Hoje', value: 'today', icon: 'calendar_today' },
47338
- { id: 'yesterday', label: 'Ontem', value: 'yesterday', icon: 'keyboard_double_arrow_left' },
47339
- { id: 'last7', label: 'Ultimos 7 dias', value: 'last7', icon: 'date_range' },
47340
- { id: 'last30', label: 'Ultimos 30 dias', value: 'last30', icon: 'date_range' },
47341
- { id: 'thisMonth', label: 'Este mes', value: 'thisMonth', icon: 'event' },
47342
- { id: 'lastMonth', label: 'Mes passado', value: 'lastMonth', icon: 'event' },
47343
- { id: 'thisQuarter', label: 'Este trimestre', value: 'thisQuarter', icon: 'bar_chart' },
47344
- { id: 'thisYear', label: 'Este ano', value: 'thisYear', icon: 'ads_click' },
47437
+ const DEFAULT_RELATIVE_PERIOD_OPTION_DEFS = [
47438
+ { id: 'today', labelKey: 'today', fallbackLabel: 'Hoje', value: 'today', icon: 'calendar_today' },
47439
+ { id: 'yesterday', labelKey: 'yesterday', fallbackLabel: 'Ontem', value: 'yesterday', icon: 'keyboard_double_arrow_left' },
47440
+ { id: 'last7', labelKey: 'last7', fallbackLabel: 'Últimos 7 dias', value: 'last7', icon: 'date_range' },
47441
+ { id: 'last30', labelKey: 'last30', fallbackLabel: 'Últimos 30 dias', value: 'last30', icon: 'date_range' },
47442
+ { id: 'thisMonth', labelKey: 'thisMonth', fallbackLabel: 'Este mês', value: 'thisMonth', icon: 'event' },
47443
+ { id: 'lastMonth', labelKey: 'lastMonth', fallbackLabel: 'Mês passado', value: 'lastMonth', icon: 'event' },
47444
+ { id: 'thisQuarter', labelKey: 'thisQuarter', fallbackLabel: 'Este trimestre', value: 'thisQuarter', icon: 'bar_chart' },
47445
+ { id: 'thisYear', labelKey: 'thisYear', fallbackLabel: 'Este ano', value: 'thisYear', icon: 'ads_click' },
47345
47446
  ];
47346
47447
  class InlineRelativePeriodComponent extends SimpleBaseSelectComponent {
47347
47448
  readonlyMode = false;
@@ -47384,7 +47485,7 @@ class InlineRelativePeriodComponent extends SimpleBaseSelectComponent {
47384
47485
  this.parseOptionsSource(matMetadata.relativePeriodPresets) ??
47385
47486
  this.parseOptionsSource(matMetadata.selectOptions) ??
47386
47487
  this.parseOptionsSource(matMetadata.options) ??
47387
- DEFAULT_RELATIVE_PERIOD_OPTIONS;
47488
+ this.defaultRelativePeriodOptions();
47388
47489
  const options = source.map((entry, index) => this.mapRawOption(entry, index));
47389
47490
  super.setSelectMetadata({
47390
47491
  ...matMetadata,
@@ -47819,6 +47920,14 @@ class InlineRelativePeriodComponent extends SimpleBaseSelectComponent {
47819
47920
  return null;
47820
47921
  }
47821
47922
  }
47923
+ defaultRelativePeriodOptions() {
47924
+ return DEFAULT_RELATIVE_PERIOD_OPTION_DEFS.map((option) => ({
47925
+ id: option.id,
47926
+ label: this.tDynamicFields(`inlineRelativePeriod.defaultOptions.${option.labelKey}`, option.fallbackLabel),
47927
+ value: option.value,
47928
+ icon: option.icon,
47929
+ }));
47930
+ }
47822
47931
  selectedOptions() {
47823
47932
  return this.relativeOptions().filter((option) => option.selected);
47824
47933
  }
@@ -47828,7 +47937,7 @@ class InlineRelativePeriodComponent extends SimpleBaseSelectComponent {
47828
47937
  return {
47829
47938
  id: String(raw.id ?? raw.key ?? `relative-period-option-${index}`),
47830
47939
  label: String(option.label ?? raw.text ?? raw.name ?? raw.title ?? option.value ?? '').trim() ||
47831
- `Opcao ${index + 1}`,
47940
+ this.fallbackOptionLabel(index),
47832
47941
  subtitle,
47833
47942
  icon: this.resolveOptionIcon(raw),
47834
47943
  value: option.value,
@@ -47848,6 +47957,11 @@ class InlineRelativePeriodComponent extends SimpleBaseSelectComponent {
47848
47957
  const fallback = String(raw.subtitle ?? raw.description ?? '').trim();
47849
47958
  return fallback;
47850
47959
  }
47960
+ fallbackOptionLabel(index) {
47961
+ return this.tDynamicFields('inlineRelativePeriod.fallbackOptionLabel', 'Opção {{index}}', {
47962
+ index: String(index + 1),
47963
+ });
47964
+ }
47851
47965
  resolveOptionIcon(raw) {
47852
47966
  const md = this.currentMetadata();
47853
47967
  const customKey = this.resolveMetadataKey(md.relativePeriodIconKey, md.optionIconKey);
@@ -48582,12 +48696,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
48582
48696
  args: ['searchInput', { read: ElementRef }]
48583
48697
  }] } });
48584
48698
 
48585
- const DEFAULT_SENTIMENT_OPTIONS = [
48586
- { id: 'terrible', label: 'Pessimo', value: 'terrible', emoji: '😡', color: '#d32f2f' },
48587
- { id: 'bad', label: 'Ruim', value: 'bad', emoji: '😞', color: '#f59e0b' },
48588
- { id: 'neutral', label: 'Neutro', value: 'neutral', emoji: '😐', color: '#9ca3af' },
48589
- { id: 'good', label: 'Bom', value: 'good', emoji: '🙂', color: '#34d399' },
48590
- { id: 'great', label: 'Otimo', value: 'great', emoji: '🤩', color: '#14b8a6' },
48699
+ const DEFAULT_SENTIMENT_OPTION_DEFS = [
48700
+ { id: 'terrible', labelKey: 'terrible', fallbackLabel: 'Péssimo', value: 'terrible', emoji: '😡', color: '#d32f2f' },
48701
+ { id: 'bad', labelKey: 'bad', fallbackLabel: 'Ruim', value: 'bad', emoji: '😞', color: '#f59e0b' },
48702
+ { id: 'neutral', labelKey: 'neutral', fallbackLabel: 'Neutro', value: 'neutral', emoji: '😐', color: '#9ca3af' },
48703
+ { id: 'good', labelKey: 'good', fallbackLabel: 'Bom', value: 'good', emoji: '🙂', color: '#34d399' },
48704
+ { id: 'great', labelKey: 'great', fallbackLabel: 'Ótimo', value: 'great', emoji: '🤩', color: '#14b8a6' },
48591
48705
  ];
48592
48706
  class InlineSentimentComponent extends SimpleBaseSelectComponent {
48593
48707
  readonlyMode = false;
@@ -48627,7 +48741,7 @@ class InlineSentimentComponent extends SimpleBaseSelectComponent {
48627
48741
  this.fieldLabelText = this.resolveFieldLabelFromMetadata(matMetadata);
48628
48742
  const source = this.parseOptionsSource(matMetadata.sentimentOptions) ??
48629
48743
  this.parseOptionsSource(matMetadata.options) ??
48630
- DEFAULT_SENTIMENT_OPTIONS;
48744
+ this.defaultSentimentOptions();
48631
48745
  const options = source.map((entry, index) => this.mapRawOption(entry, index));
48632
48746
  super.setSelectMetadata({
48633
48747
  ...matMetadata,
@@ -48986,12 +49100,21 @@ class InlineSentimentComponent extends SimpleBaseSelectComponent {
48986
49100
  return null;
48987
49101
  }
48988
49102
  }
49103
+ defaultSentimentOptions() {
49104
+ return DEFAULT_SENTIMENT_OPTION_DEFS.map((option) => ({
49105
+ id: option.id,
49106
+ label: this.tDynamicFields(`inlineSentiment.defaultOptions.${option.labelKey}`, option.fallbackLabel),
49107
+ value: option.value,
49108
+ emoji: option.emoji,
49109
+ color: option.color,
49110
+ }));
49111
+ }
48989
49112
  toVisualOption(option, index, totalOptions = 0) {
48990
49113
  const raw = this.asRecord(option) ?? {};
48991
49114
  return {
48992
49115
  id: String(raw.id ?? raw.key ?? `sentiment-option-${index}`),
48993
49116
  label: String(option.label ?? raw.text ?? raw.name ?? raw.title ?? option.value ?? '').trim() ||
48994
- `Opcao ${index + 1}`,
49117
+ this.fallbackOptionLabel(index),
48995
49118
  subtitle: String(raw.subtitle ?? raw.description ?? '').trim(),
48996
49119
  emoji: this.resolveOptionEmoji(raw),
48997
49120
  color: this.resolveOptionColor(raw, index, totalOptions),
@@ -49012,6 +49135,11 @@ class InlineSentimentComponent extends SimpleBaseSelectComponent {
49012
49135
  const fallback = String(raw.emoji ?? raw.iconText ?? '').trim();
49013
49136
  return fallback || '🙂';
49014
49137
  }
49138
+ fallbackOptionLabel(index) {
49139
+ return this.tDynamicFields('inlineSentiment.fallbackOptionLabel', 'Opção {{index}}', {
49140
+ index: String(index + 1),
49141
+ });
49142
+ }
49015
49143
  resolveOptionColor(raw, index, totalOptions = 0) {
49016
49144
  const md = this.currentMetadata();
49017
49145
  const customKey = this.resolveMetadataKey(md.sentimentColorKey, md.optionColorKey);
@@ -49146,7 +49274,7 @@ class InlineSentimentComponent extends SimpleBaseSelectComponent {
49146
49274
  fallbackVisualFromValue(value, index) {
49147
49275
  const rawOptions = this.parseOptionsSource(this.currentMetadata().sentimentOptions) ??
49148
49276
  this.parseOptionsSource(this.currentMetadata().options) ??
49149
- DEFAULT_SENTIMENT_OPTIONS;
49277
+ this.defaultSentimentOptions();
49150
49278
  const optionRecord = rawOptions
49151
49279
  .map((entry) => this.asRecord(entry))
49152
49280
  .find((entry) => entry && this.equalsOptionValue(entry.value ?? entry.id ?? entry.key ?? entry.code, value));
@@ -50301,7 +50429,7 @@ class InlineColorLabelComponent extends SimpleBaseSelectComponent {
50301
50429
  return {
50302
50430
  id: String(raw.id ?? raw.key ?? `color-label-option-${index}`),
50303
50431
  label: String(option.label ?? raw.text ?? raw.name ?? raw.title ?? option.value ?? '').trim() ||
50304
- `Opcao ${index + 1}`,
50432
+ this.fallbackOptionLabel(index),
50305
50433
  subtitle: String(raw.subtitle ?? raw.description ?? '').trim(),
50306
50434
  color: this.resolveOptionColor(raw, index),
50307
50435
  value: option.value,
@@ -50329,6 +50457,11 @@ class InlineColorLabelComponent extends SimpleBaseSelectComponent {
50329
50457
  const defaults = ['#ef4444', '#f97316', '#eab308', '#22a45d', '#0ea5e9', '#3f5be6', '#7c3aed', '#db2777'];
50330
50458
  return defaults[index % defaults.length];
50331
50459
  }
50460
+ fallbackOptionLabel(index) {
50461
+ return this.tDynamicFields('inlineColorLabel.fallbackOptionLabel', 'Opção {{index}}', {
50462
+ index: String(index + 1),
50463
+ });
50464
+ }
50332
50465
  parseColorList(source) {
50333
50466
  if (Array.isArray(source)) {
50334
50467
  return source.map((entry) => String(entry ?? '').trim()).filter((entry) => entry.length > 0);
@@ -59276,14 +59409,14 @@ const PDX_INLINE_RELATIVE_PERIOD_COMPONENT_METADATA = {
59276
59409
  selector: 'pdx-inline-relative-period',
59277
59410
  component: InlineRelativePeriodComponent,
59278
59411
  friendlyName: 'Inline Relative Period',
59279
- description: 'Filtro inline de periodo relativo com presets configuraveis, cards e barra de progresso visual.',
59412
+ description: 'Filtro inline de período relativo com presets configuráveis, cards e barra de progresso visual.',
59280
59413
  icon: 'calendar_today',
59281
59414
  inputs: [
59282
- { name: 'metadata', type: 'MaterialSelectMetadata', description: 'Configuracao do campo' },
59415
+ { name: 'metadata', type: 'MaterialSelectMetadata', description: 'Configuração do campo' },
59283
59416
  { name: 'readonlyMode', type: 'boolean', default: false, description: 'Define modo somente leitura' },
59284
59417
  { name: 'disabledMode', type: 'boolean', default: false, description: 'Desabilita o campo' },
59285
59418
  { name: 'visible', type: 'boolean', default: true, description: 'Controla a visibilidade' },
59286
- { name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentacao' },
59419
+ { name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentação' },
59287
59420
  ],
59288
59421
  tags: ['widget', 'field', 'relative-period', 'date', 'filter', 'inline'],
59289
59422
  lib: '@praxisui/dynamic-fields',
@@ -59294,14 +59427,14 @@ const PDX_INLINE_SENTIMENT_COMPONENT_METADATA = {
59294
59427
  selector: 'pdx-inline-sentiment',
59295
59428
  component: InlineSentimentComponent,
59296
59429
  friendlyName: 'Inline Sentiment',
59297
- description: 'Filtro inline de sentimento com barra colorida e cards emoji configuraveis por metadados.',
59430
+ description: 'Filtro inline de sentimento com barra colorida e cards emoji configuráveis por metadados.',
59298
59431
  icon: 'mood',
59299
59432
  inputs: [
59300
- { name: 'metadata', type: 'MaterialSelectMetadata', description: 'Configuracao do campo' },
59433
+ { name: 'metadata', type: 'MaterialSelectMetadata', description: 'Configuração do campo' },
59301
59434
  { name: 'readonlyMode', type: 'boolean', default: false, description: 'Define modo somente leitura' },
59302
59435
  { name: 'disabledMode', type: 'boolean', default: false, description: 'Desabilita o campo' },
59303
59436
  { name: 'visible', type: 'boolean', default: true, description: 'Controla a visibilidade' },
59304
- { name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentacao' },
59437
+ { name: 'presentationMode', type: 'boolean', default: false, description: 'Modo de apresentação' },
59305
59438
  ],
59306
59439
  tags: ['widget', 'field', 'sentiment', 'emoji', 'filter', 'inline'],
59307
59440
  lib: '@praxisui/dynamic-fields',