---
title: "pdx-material-date-range JSON API (Canonical)"
slug: "pdx-material-date-range-json-api"
doc_type: "api-reference"
component: "pdx-material-date-range"
document_kind: "json-api-canonical"
reference_mode: "canonical"
contract_format: "json"
contract_source: "runtime-and-code"
description: "Referencia canonica do contrato JSON do componente pdx-material-date-range."
category: "components"
sub_category: "dynamic-fields"
audience:
  - "frontend"
  - "architect"
  - "platform-team"
level: "advanced"
status: "active"
owner: "praxis-ui"
source_of_truth:
  - "projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.metadata.ts"
  - "projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.component.ts"
  - "projects/praxis-core/src/lib/models/material-field-metadata.interface.ts"
  - "projects/praxis-core/src/lib/models/component-metadata.interface.ts"
  - "projects/praxis-core/src/lib/utils/date-range-presets.util.ts"
  - "projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts"
  - "projects/praxis-dynamic-fields/src/lib/utils/praxis-native-date-adapter.ts"
source_of_truth_last_verified: "2026-05-06"
last_updated: "2026-05-06"
toc: true
sidebar: true
tags:
  - "json-api"
  - "canonical-contract"
  - "pdx-material-date-range"
api_stability: "canonical"
schema_verified: true
runtime_verified: true
editor_coverage_verified: false
runtime_scope: "public"
legacy_paths_present: false
has_known_mismatches: false
related_components:
  - "praxis-table"
  - "pdx-base-input-runtime-contract"
  - "pdx-material-datepicker"
---

# pdx-material-date-range

Este documento e a referencia canonica da API JSON de pdx-material-date-range.

## Summary

- Tipo documental: API reference canonica de contrato JSON.
- Source of truth: runtime e codigo declarados no frontmatter.
- Objetivo operacional: consulta rapida, auditavel e deterministica sob pressao.
- Resumo funcional: Contrato JSON metadata-driven com comportamento definido por runtime e schema associado.

## Purpose and scope

- O componente consome payload JSON metadata-driven e expoe comportamento runtime configuravel por contrato.
- Esta referencia cobre contrato publico, classificacao de paths e semantica de cobertura (runtime/schema/editor).
- Fora de escopo: quickstart, tutorial narrativo e notas arquiteturais que nao alteram contrato publico.

## Consulta rapida (obrigatorio)

| Regra/tema | Observado | Canonico desejado | Status | Evidencia |
| --- | --- | --- | --- | --- |
| Component id | `pdx-material-date-range` | Manter ID canonico estavel e versionado por contrato | Active | frontmatter.component |
| Primary contract source | `runtime-and-code` | Runtime, schema e docs devem permanecer rastreaveis | Partial | frontmatter.contract_source + source_of_truth |
| Runtime coverage | `true` | Comportamentos runtime criticos devem ficar explicitamente verificados | Active | `projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.component.ts` |
| Schema/type coverage | `true` | Tipos e schema devem refletir paths publicos do contrato | Active | source_of_truth + Detailed API reference |
| Editor/tooling coverage | `false` | Editor/tooling deve espelhar somente contrato publico suportado | Partial | `projects/praxis-core/src/lib/metadata/field-selector-control-type.constants.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts` |
| Legacy paths | `false` | Segregar legado de caminhos canonicos com janela de migracao | Active | frontmatter.legacy_paths_present |
| Known mismatches | `false` | Registrar observed vs desired de forma auditavel | Active | frontmatter.has_known_mismatches |

## Source of truth

| Source | Kind | Notes |
| --- | --- | --- |
| projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.metadata.ts | schema-metadata | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-core/src/lib/models/material-field-metadata.interface.ts | schema-types | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-core/src/lib/models/component-metadata.interface.ts | schema-types | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-core/src/lib/utils/date-range-presets.util.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-dynamic-fields/src/lib/utils/praxis-native-date-adapter.ts | runtime-code | Adapter canonico de parsing manual de datas usado pelos controles Material de data. |

## Support legend

- **Active**: suportado em runtime e liberado para uso externo.
- **Partial**: suporte parcial, com restricoes, lacunas ou validacao incompleta.
- **Declared-only**: declarado em tipos/schema sem evidencia operacional completa.
- **Schema-only**: presente em schema/tipos sem cobertura runtime confirmada.
- **Deprecated**: legado suportado por janela de migracao definida.

## Contract status snapshot

| Item | Value | Notes |
| --- | --- | --- |
| Reference mode | `canonical` | Deve permanecer canonico |
| Contract format | `json` | Contrato metadata-driven |
| Contract source | `runtime-and-code` | Alinhar com source_of_truth |
| Runtime scope | `public` | Escopo publicado para consumidores |
| Runtime verified | `true` | Revisar sempre com evidencia de runtime |
| Schema verified | `true` | Revisar sempre com evidencia de tipos/schema |
| Editor coverage verified | `false` | Revisar sempre com evidencia de editor/tooling |
| Legacy paths present | `false` | Segregar legado de contrato canonico |
| Has known mismatches | `false` | Divergencias devem aparecer em secao dedicada |

## Contract classification (obrigatorio)

### Canonical paths (public contract)

| Path | Type | Required | Default | Status | Notes |
| --- | --- | --- | --- | --- | --- |
| `metadata` | object | true | n/a | Partial | See Detailed API reference for runtime semantics. |
| `readonlyMode` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
| `disabledMode` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
| `visible` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
| `presentationMode` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
| `label` | string | false | n/a | Partial | See Detailed API reference for runtime semantics. |
| `metadata.controlType` | string | false | n/a | Partial | See Detailed API reference for runtime semantics. |
| `metadata.minDate` | string | false | n/a | Partial | See Detailed API reference for runtime semantics. |

### Supported legacy paths

Nenhum path legado suportado foi identificado nesta revisao.

### Internal-only paths

Nao ha paths internal-only confirmados no contrato publico desta revisao.

### Experimental paths

Nao ha paths experimentais confirmados no contrato publico desta revisao.

## Public contract surface (obrigatorio)

### Top-level configuration blocks

| Block | Purpose | Required | Merge strategy | Notes |
| --- | --- | --- | --- | --- |
| `metadata` | Payload declarativo principal do componente | true | deep-merge | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `readonlyMode` | Override de readonly no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `disabledMode` | Override de disabled no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `visible` | Override de visibilidade no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `presentationMode` | Renderizacao de apresentacao sem interacao | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `label` | Configuracao especifica de runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `Partial<Record<` | Configuracao especifica de runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |

### Nested configuration blocks

| Path | Type | Required | Default | Constraints | Notes |
| --- | --- | --- | --- | --- | --- |
| `metadata.controlType` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.minDate` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.maxDate` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.startAt` | unknown | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.startView` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.touchUi` | boolean | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.dateFilter` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.startPlaceholder` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.endPlaceholder` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
| `metadata.startAriaLabel` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |

### Manual date parsing

- Digitacao manual usa `PraxisNativeDateAdapter` e respeita o `LOCALE_ID` do host.
- Em locales nao ingleses, como `pt-BR`, datas numericas sao interpretadas como `dd/MM/yyyy`.
- Em locales ingleses, datas numericas sao interpretadas como `MM/dd/yyyy`.
- Strings ISO date-only (`YYYY-MM-DD`) sao tratadas como data local, sem deslocamento por timezone.
- Valores enviados ao backend por ranges devem preservar a semantica date-only quando o campo representa uma data civil.

### Input bindings (inbound data)

| Binding/Path | Type | Required | Source | Runtime normalization | Notes |
| --- | --- | --- | --- | --- | --- |
| `metadata` | object | true | host-json | component-defined | Primary inbound contract payload. |
| `readonlyMode` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
| `disabledMode` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
| `visible` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
| `presentationMode` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |

### Output events

| Event | Payload | Trigger | Stability | Notes |
| --- | --- | --- | --- | --- |
| `validationChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `valueChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `focusChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `nativeBlur` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `nativeChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |

### External side channels

| Channel | Direction | Contract | Failure mode | Notes |
| --- | --- | --- | --- | --- |
| `host/services/storage` | bidirectional | component-defined | component-defined | Side channels variam por componente e host; verificar em source_of_truth. |

### Host/runtime dependencies

| Dependency | Required | Environment | Purpose | Notes |
| --- | --- | --- | --- | --- |
| `material-date-range.metadata.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.metadata.ts`. |
| `material-date-range.component.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.component.ts`. |
| `material-field-metadata.interface.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-core/src/lib/models/material-field-metadata.interface.ts`. |
| `component-metadata.interface.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-core/src/lib/models/component-metadata.interface.ts`. |
| `date-range-presets.util.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-core/src/lib/utils/date-range-presets.util.ts`. |
| `simple-base-input.component.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts`. |
| `praxis-native-date-adapter.ts` | true | browser/dev/prod/ssr | locale-aware date parsing | Refer to `projects/praxis-dynamic-fields/src/lib/utils/praxis-native-date-adapter.ts`. |

## Coverage by surface (obrigatorio)

### Coverage matrix (runtime, schema/type, editor/tooling)

| Surface | Verified | Coverage status | Evidence | Notes |
| --- | --- | --- | --- | --- |
| Runtime | `true` | Active | `projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.component.ts` | Core runtime flows verified via focused component specs on 2026-03-06; editor/tooling coverage remains independent. |
| Schema/Types | `true` | Active | source_of_truth + Detailed API reference | Reconcile schema/types with canonical paths during follow-up when needed. |
| Editor/Tooling | `false` | Partial | `projects/praxis-core/src/lib/metadata/field-selector-control-type.constants.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts` | Selector/control-type tooling linkage verified via default selector map and registry seeding; visual editor end-to-end coverage remains not-yet-verified. |

### Runtime coverage boundaries

- Ambientes suportados: browser/dev/prod; SSR/hydration appears to be component-dependent unless explicitly verified.
- Pre-condicoes: payload JSON valido, bindings de host consistentes e dependencias descritas no source_of_truth.
- Fora de cobertura confirmada: caminhos internos, experimentais ou aliases nao enumerados formalmente.

### Editor and tooling notes

- Evidencia de tooling: selector `pdx-*` mapeado em `DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP` e semeado no `ComponentRegistryService`; editor visual E2E permanece not-yet-verified.
- O que esta exposto no editor visual depende da cobertura real do workspace e nao deve ser inferido como suporte runtime total.
- Campos disponiveis apenas via JSON/manual devem continuar no contrato, com rotulo explicito de cobertura parcial.
- Quando houver divergencia entre editor e runtime, manter mismatch rastreavel em secao dedicada.

## Resolution and precedence model (obrigatorio)

### Merge order

1. defaults do componente
2. contrato JSON recebido
3. overrides de host/runtime
4. normalizacoes internas

### Fallback order

contrato explicito -> aliases legados (quando suportados) -> defaults internos -> comportamento seguro

### Override points

- inputs publicos do componente
- configuracao JSON de runtime
- integracoes de host (servicos/tokens/adapters)

### Runtime normalization

Alias e defaults devem convergir para paths canonicos; onde nao houver evidencia, manter not-yet-verified de forma explicita.

### Precedence rules

Em conflito entre alias legado e path canonico, priorizar path canonico e registrar janela de migracao do legado.

## Validation and error semantics (obrigatorio)

### Validation model

| Path/Rule | Validation phase | Behavior on fail | Error code / warning | Notes |
| --- | --- | --- | --- | --- |
| canonical-paths | parse/runtime | component-defined (warn/reject/default) | not-yet-standardized | Semantica detalhada preservada na referencia tecnica por componente. |

### Invalid and unknown field handling

- Campos desconhecidos: comportamento component-defined (ignore, warn ou reject).
- Tipos invalidos: pode haver fallback, warning ou falha, conforme runtime especifico.
- Valores fora de dominio: registrar observed vs desired em Known limitations and mismatches.

### Fail-open / fail-closed behavior

| Condition | Mode | Runtime behavior | Consumer impact |
| --- | --- | --- | --- |
| invalid-or-unknown-field | component-defined | not-yet-verified | Pode gerar warning, fallback silencioso ou rejeicao; validar por componente. |

### Runtime warnings vs hard failures

| Condition | Severity | Observability | Consumer action |
| --- | --- | --- | --- |
| partial-or-declared-only-coverage | warning | logs/eventos do componente | Confirmar ligacao runtime antes de uso critico. |
| mismatch-confirmed | error-or-warning | componente/host observability | Planejar migracao e corrigir contrato/runtime. |

## Detailed API reference
### Preserved technical reference (normalized from previous revision)

### 1. Visao Geral e Quando Usar
`pdx-material-date-range` e o componente orientado por JSON para intervalo de datas em `@praxisui/dynamic-fields`, baseado em `MatDateRangeInput/MatDateRangePicker`.

Use quando precisar:
- capturar `data inicial` e `data final` no mesmo campo logico;
- validar ordem do intervalo (`start <= end`);
- oferecer atalhos corporativos (today/thisMonth/lastMonth etc.).

### 2. API do Componente (Inputs/Outputs)
| Propriedade | Tipo | Padrao | Obrigatorio | Comportamento |
| --- | --- | --- | --- | --- |
| `metadata` | `MaterialDateRangeMetadata` | - | Sim | Contrato principal do intervalo de datas. |
| `readonlyMode` | `boolean` | `false` | Nao | Sobrescreve leitura no host. |
| `disabledMode` | `boolean` | `false` | Nao | Sobrescreve estado disabled no host. |
| `visible` | `boolean` | `true` | Nao | Controla exibicao no host. |
| `presentationMode` | `boolean` | `false` | Nao | Modo apresentacao (sem edicao). |
| `validationChange` | `ValidationErrors \| null` | - | Output | Emite estado de validacao apos `validateField()`. |

Observacao:
- valor do campo segue `DateRangeValue` com `startDate` e `endDate` (e opcionalmente `preset`, `label`, `timezone`).
- Durante a selecao pelo `mat-date-range-picker`, o componente nao propaga um range parcial enquanto o overlay esta aberto; `valueChange` e write-back externo sao emitidos quando inicio e fim estao preenchidos ou quando o picker fecha.

### 3. Matriz de Cobertura JSON (Completa)
#### 3.1 Campos especificos do componente
| Caminho JSON | Tipo | Status | Comportamento em runtime |
| --- | --- | --- | --- |
| `metadata.controlType` | `'dateRange'` | Ativo | Identifica contrato do componente no host. |
| `metadata.minDate` | `Date \| string` | Ativo | Limite minimo do intervalo no date-range-input. |
| `metadata.maxDate` | `Date \| string` | Ativo | Limite maximo do intervalo no date-range-input. |
| `metadata.startAt` | `Date \| string` | Ativo | Data inicial de abertura do calendario. |
| `metadata.startView` | `'month' \| 'year' \| 'multi-year'` | Ativo | Visao inicial do date-range-picker. |
| `metadata.touchUi` | `boolean` | Ativo | Modo touch do date-range-picker. |
| `metadata.dateFilter` | `(date) => boolean` | Ativo | Filtro de datas permitidas. |
| `metadata.startPlaceholder` | `string` | Ativo | Placeholder do input de inicio. |
| `metadata.endPlaceholder` | `string` | Ativo | Placeholder do input de fim. |
| `metadata.startAriaLabel` | `string` | Ativo | ARIA label do input de inicio. |
| `metadata.endAriaLabel` | `string` | Ativo | ARIA label do input de fim. |
| `metadata.showShortcuts` | `boolean` | Ativo | Exibe overlay de atalhos ao abrir picker. |
| `metadata.shortcuts` | `Array<string \| DateRangePreset>` | Ativo | Define atalhos builtin e customizados. |
| `metadata.shortcutsPosition` | `'auto' \| 'below' \| 'left' \| 'right'` | Ativo | Posicao preferencial do overlay de atalhos. O default `auto` prioriza posicionamento abaixo do campo, com fallback lateral e protecao contra recorte no viewport. |
| `metadata.applyOnShortcutClick` | `boolean` | Ativo | Aplica e fecha automaticamente ao clicar no atalho. |
| `metadata.i18nShortcuts` | `Partial<Record<...>>` | Ativo | Sobrescreve labels de atalhos builtin. |
| `metadata.timezone` | `string` | Ativo | Contexto de timezone para calculo de presets builtin. |
| `metadata.startOfWeek` | `0..6` | Ativo | Inicio da semana para presets (`thisWeek`, `lastWeek`). |
| `metadata.nowProvider` | `() => Date` | Ativo | Fonte de data atual para presets deterministas. |
| `metadata.inlineQuickPresets` | `boolean \| object` | Declared-only | Declarado no contrato; sem uso no template atual deste componente. |
| `metadata.inlineQuickPresetsAriaLabel` | `string` | Declared-only | Declarado no contrato; sem uso no template atual. |
| `metadata.inlineQuickPresetsCancelLabel` | `string` | Declared-only | Declarado no contrato; sem uso no template atual. |
| `metadata.inlineQuickPresetsCancelAriaLabel` | `string` | Declared-only | Declarado no contrato; sem uso no template atual. |
| `metadata.inlineQuickPresetsApplyLabel` | `string` | Declared-only | Declarado no contrato; sem uso no template atual. |
| `metadata.inlineQuickPresetsApplyAriaLabel` | `string` | Declared-only | Declarado no contrato; sem uso no template atual. |
| `metadata.inlineQuickPresetsApplyMode` | `'auto' \| 'confirm'` | Declared-only | Declarado no contrato; sem uso no template atual. |
| `metadata.interval` | `number \| string` | Extensao de runtime | Campo aceito/consumido em outros componentes de range temporal; nao possui binding direto aqui. |

Notas de runtime:
- `rangeGroup` aplica validator contextual para ordem do intervalo (`rangeOrder`).
- quando atalho e selecionado, o valor final pode incluir `preset` e `label`.

#### 3.2 Campos herdados compartilhados (exaustivo)
Contrato completo dos campos herdados consumidos por `SimpleBaseInput`:
- [pdx-base-input-runtime-contract.json-api.md](projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md)

Resumo de composicao deste componente:
- `Ativo`: intervalo de datas + presets/shortcuts + validacao de ordem.
- `Declared-only`: bloco `inlineQuickPresets*` ainda nao renderizado no componente.

### 4. Mapeamento de Comportamento
- Paginacao: nao se aplica.
- Ordenacao: nao se aplica.
- Selecao: objeto `DateRangeValue` (`startDate`, `endDate`, opcional `preset`).
- Eventos: `validationChange` + outputs herdados (`valueChange`, `focusChange`, `nativeBlur`, `nativeChange`). `valueChange` evita range parcial durante a selecao aberta para preservar o fluxo de escolha de inicio e fim.
- Renderizacao: `mat-date-range-input` + `mat-date-range-picker` + overlay opcional de atalhos.

### 5. Exemplo Minimo (JSON + Uso)
```json
{
  "componentId": "pdx-material-date-range",
  "metadata": {
    "name": "period",
    "label": "Periodo",
    "controlType": "dateRange"
  }
}
```
Uso: renderiza entrada de data inicial/final com calendario de intervalo.

### 6. Exemplo Corporativo (JSON + Uso)
```json
{
  "componentId": "pdx-material-date-range",
  "metadata": {
    "name": "reportWindow",
    "label": "Janela do relatorio",
    "controlType": "dateRange",
    "required": true,
    "minDate": "2020-01-01",
    "maxDate": "2030-12-31",
    "startPlaceholder": "Inicio",
    "endPlaceholder": "Fim",
    "showShortcuts": true,
    "shortcuts": ["today", "thisWeek", "thisMonth", "lastMonth"],
    "shortcutsPosition": "left",
    "applyOnShortcutClick": true,
    "i18nShortcuts": {
      "today": "Hoje",
      "thisWeek": "Semana atual",
      "thisMonth": "Mes atual"
    },
    "timezone": "America/Sao_Paulo",
    "startOfWeek": 1,
    "hint": "Escolha um intervalo valido para o fechamento."
  }
}
```
Uso: ativa atalhos corporativos e normalizacao temporal para relatórios padronizados.

### 7. Troubleshooting e Armadilhas Comuns
1. Enviar `shortcuts` com id builtin invalido.
Correcao: usar ids suportados (ex.: `today`, `thisWeek`, `thisMonth`, `lastMonth`, `thisYear`).

2. Esperar que `inlineQuickPresets*` apareca no date-range padrao.
Correcao: esse bloco ainda nao e renderizado por este componente no runtime atual.

3. `startDate` maior que `endDate`.
Correcao: o validator contextual marca `rangeOrder`; ajustar fluxo de entrada.

4. Passar `dateFilter` como string.
Correcao: o componente espera funcao real `(date) => boolean` no metadata runtime.

5. Atalho selecionado sem fechar picker.
Correcao: verificar `applyOnShortcutClick`; com `false`, o fluxo exige acao manual de fechamento/aplicacao.

### 8. Cross-links
- `projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md`
- `projects/praxis-dynamic-fields/src/lib/components/material-datepicker/pdx-material-datepicker.json-api.md`
- `projects/praxis-core/src/lib/utils/date-range-presets.util.ts`

### 9. Relatorio de Validacao Estrutural
- Visao geral: PASS
- API (inputs/outputs): PASS
- Cobertura JSON completa (especifico + herdado): PASS
- Mapeamento de comportamento: PASS
- Exemplo minimo: PASS
- Exemplo corporativo: PASS
- Troubleshooting: PASS

## JSON path index (obrigatorio)

| Path | Type | Required | Default | Status | Notes |
| --- | --- | --- | --- | --- | --- |
| `metadata` | object | true | n/a | Partial | See Detailed API reference. |
| `readonlyMode` | boolean | false | n/a | Partial | See Detailed API reference. |
| `disabledMode` | boolean | false | n/a | Partial | See Detailed API reference. |
| `visible` | boolean | false | n/a | Partial | See Detailed API reference. |
| `presentationMode` | boolean | false | n/a | Partial | See Detailed API reference. |
| `label` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.controlType` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.minDate` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.maxDate` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.startAt` | unknown | false | n/a | Partial | See Detailed API reference. |
| `metadata.startView` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.touchUi` | boolean | false | n/a | Partial | See Detailed API reference. |
| `metadata.dateFilter` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.startPlaceholder` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.endPlaceholder` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.startAriaLabel` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.endAriaLabel` | string | false | n/a | Partial | See Detailed API reference. |
| `metadata.showShortcuts` | boolean | false | n/a | Partial | See Detailed API reference. |
| `metadata.shortcuts` | unknown | false | n/a | Partial | See Detailed API reference. |
| `metadata.shortcutsPosition` | string | false | n/a | Partial | See Detailed API reference. |

## Events reference (obrigatorio)

| Event | Payload | Trigger | Stability | Notes |
| --- | --- | --- | --- | --- |
| `validationChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
| `valueChange` | unknown | runtime-event | Experimental | Durante seleção pelo picker, o valor é publicado apenas após o fechamento do calendário; digitação manual fora do picker continua propagando pelas regras normais do CVA. |
| `focusChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
| `nativeBlur` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
| `nativeChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |

## Styling API (obrigatorio quando aplicavel)

| Token/Class | Scope | Purpose | Notes |
| --- | --- | --- | --- |
| `not-yet-verified` | component | Styling contract not yet verified | Use Detailed API reference for component-specific styling notes. |

## Examples (obrigatorio)

| Example | Scenario | Validates | Notes |
| --- | --- | --- | --- |
| `Minimal valid` | baseline payload | required contract blocks | Extracted from preserved technical reference when available. |
| `Common setup` | common component usage | standard runtime behavior | Validate against host integration path. |
| `Advanced setup` | richer config with overrides | precedence and normalization | Requires runtime confirmation for edge cases. |
| `Enterprise scenario` | governance/legacy/migration context | auditability and compatibility boundaries | Include tenant-specific constraints when applicable. |

### Minimal valid

```json
{
  "componentId": "pdx-material-date-range",
  "metadata": {
    "name": "period",
    "label": "Periodo",
    "controlType": "dateRange"
  },
  "readonlyMode": false
}
```

### Common setup

```json
{
  "componentId": "pdx-material-date-range",
  "metadata": {
    "name": "reportWindow",
    "label": "Janela do relatorio",
    "controlType": "dateRange",
    "required": true,
    "minDate": "2020-01-01",
    "maxDate": "2030-12-31",
    "startPlaceholder": "Inicio",
    "endPlaceholder": "Fim",
    "showShortcuts": true,
    "shortcuts": [
      "today",
      "thisWeek",
      "thisMonth",
      "lastMonth"
    ],
    "shortcutsPosition": "left",
    "applyOnShortcutClick": true,
    "i18nShortcuts": {
      "today": "Hoje",
      "thisWeek": "Semana atual",
      "thisMonth": "Mes atual"
    },
    "timezone": "America/Sao_Paulo",
    "startOfWeek": 1,
    "hint": "Escolha um intervalo valido para o fechamento."
  },
  "label": "pdx-material-date-range-common"
}
```

### Advanced setup

```json
{
  "componentId": "pdx-material-date-range",
  "metadata": {
    "name": "reportWindow",
    "label": "Janela do relatorio",
    "controlType": "dateRange",
    "required": true,
    "minDate": "2020-01-01",
    "maxDate": "2030-12-31",
    "startPlaceholder": "Inicio",
    "endPlaceholder": "Fim",
    "showShortcuts": true,
    "shortcuts": [
      "today",
      "thisWeek",
      "thisMonth",
      "lastMonth"
    ],
    "shortcutsPosition": "left",
    "applyOnShortcutClick": true,
    "i18nShortcuts": {
      "today": "Hoje",
      "thisWeek": "Semana atual",
      "thisMonth": "Mes atual"
    },
    "timezone": "America/Sao_Paulo",
    "startOfWeek": 1,
    "hint": "Escolha um intervalo valido para o fechamento."
  },
  "readonlyMode": false,
  "disabledMode": false
}
```

### Enterprise scenario

```json
{
  "componentId": "pdx-material-date-range",
  "metadata": {
    "name": "reportWindow",
    "label": "Janela do relatorio",
    "controlType": "dateRange",
    "required": true,
    "minDate": "2020-01-01",
    "maxDate": "2030-12-31",
    "startPlaceholder": "Inicio",
    "endPlaceholder": "Fim",
    "showShortcuts": true,
    "shortcuts": [
      "today",
      "thisWeek",
      "thisMonth",
      "lastMonth"
    ],
    "shortcutsPosition": "left",
    "applyOnShortcutClick": true,
    "i18nShortcuts": {
      "today": "Hoje",
      "thisWeek": "Semana atual",
      "thisMonth": "Mes atual"
    },
    "timezone": "America/Sao_Paulo",
    "startOfWeek": 1,
    "hint": "Escolha um intervalo valido para o fechamento."
  },
  "presentationMode": true,
  "visible": true
}
```

## Compatibility and migration notes (recomendado)

| Concern | Affected versions | Migration action | Deadline | Notes |
| --- | --- | --- | --- | --- |
| No legacy path detected in current revision | n/a | No migration action required for canonical paths | n/a | Re-evaluate if backward-compat aliases are introduced |

## Known limitations and mismatches (recomendado)

| Path/Behavior | Observed behavior (runtime) | Desired behavior | Impact | Tracking issue | Target fix |
| --- | --- | --- | --- | --- | --- |
| Canonical contract parity | No confirmed mismatch in this revision; runtime linkage verified for core flows (2026-03-06), with editor/tooling coverage pending | Keep runtime/schema/editor alignment evidence updated | Low | n/a | Monitor in periodic audit |

## Source references (obrigatorio)

| Source type | Path/URL | Why it is source of truth | Last verified (YYYY-MM-DD) | Notes |
| --- | --- | --- | --- | --- |
| schema-metadata | projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.metadata.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
| runtime-code | projects/praxis-dynamic-fields/src/lib/components/material-date-range/material-date-range.component.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
| schema-types | projects/praxis-core/src/lib/models/material-field-metadata.interface.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
| schema-types | projects/praxis-core/src/lib/models/component-metadata.interface.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
| runtime-code | projects/praxis-core/src/lib/utils/date-range-presets.util.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
| runtime-code | projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
| runtime-code | projects/praxis-dynamic-fields/src/lib/utils/praxis-native-date-adapter.ts | Source of truth for locale-aware manual date parsing. | 2026-05-06 | verified-path |
