Skip to content

fix(datepicker): permite selecionar qualquer ano entre 0000 e 9999 - #2974

Open
pedrodominguesp wants to merge 1 commit into
masterfrom
fix/datepicker-allow-any-year
Open

pedrodominguesp wants to merge 1 commit into
masterfrom
fix/datepicker-allow-any-year

Conversation

@pedrodominguesp

Copy link
Copy Markdown
Member

O calendário limitava o combo de ano a 150 anos antes e depois do ano atual e convertia os anos de 0 a 99 para 19XX, impedindo datas válidas.

Permite digitar no combo de ano qualquer ano de 4 dígitos, bloqueia a navegação e desabilita os dias fora de 0000 a 9999 e aceita o ano 0000 nos modos month-year e year, que passam a exibir o ano com 4 dígitos. Valida os limites de ano também para valores atribuídos via código.

Corrige o clique duplo e o foco via Tab nas opções do combo de ano e a lista "Nenhum item encontrado" que permanecia aberta após perder o foco.

Ao pressionar o mouse dentro do calendário, por exemplo para selecionar o texto do mês, e soltá-lo fora dele, o calendário era fechado. Passa a considerar onde o mouse foi pressionado no po-datepicker, no po-datepicker-range e no po-datetimepicker.

Ao filtrar o combo de mês ou de ano e descer para a lista com a seta, o calendário restaurava o valor anterior e descartava o filtro. Passa a validar o combo apenas quando o foco sai dele.

Ao esvaziar o combo de ano e digitar um ano fora da lista, o calendário trocava o texto digitado pelo ano exibido. Passa a manter o valor do combo ao atualizar as opções.

@github-actions

Copy link
Copy Markdown

🔎 Análise de impacto

Risco estimado: 🔴 Alto · Arquivos: 27 (+2054/-121)

Pontos de atenção

  • 🌐 utils/util é usada por 87 unidades — considere um teste de regressão amplo
  • 🆕 po-calendar: nova(s) propriedade(s) → p-disable-previous, p-disable-next

Unidades alteradas

Unidade Tipo de mudança Consumidores diretos Impacto total Risco
utils/util testes, lógica decorators/input-boolean, directives/po-drag-drop, directives/po-tooltip, pipes/po-time, po-accordion, po-badge, po-breadcrumb, po-button … (+72) 87 🔴 Alto — dependência compartilhada por 87 unidades
po-calendar testes, lógica, template, API pública po-datepicker, po-datepicker-range, po-datetimepicker 5 🟡 Médio
po-listbox testes, lógica po-combo, po-multiselect, po-popup, po-search, po-tabs 24 🟡 Médio — 24 unidades dependem dela
po-datepicker-range testes, lógica po-dynamic, po-field 2 🟢 Baixo
po-datepicker testes, lógica po-dynamic, po-field 2 🟢 Baixo
po-datetimepicker testes, lógica po-dynamic, po-field 2 🟢 Baixo

Componentes impactados

Diretos (75): decorators/input-boolean, directives/po-drag-drop, directives/po-tooltip, pipes/po-time, po-accordion, po-badge, po-breadcrumb, po-button, po-button-group, po-checkbox, po-checkbox-group, po-combo, po-container, po-decimal, po-disclaimer, po-disclaimer-group, po-dropdown, po-dynamic, po-email, po-field, po-field-container, po-filter-chip, po-gauge, po-header, po-helper, po-image, po-info, po-input, po-input-generic, po-label, po-link, po-list-view, po-loading, po-login, po-logo, po-lookup, po-menu, po-menu-panel, po-modal, po-multiselect, po-navbar, po-number, po-overlay, po-page, po-password, po-popover, po-popup, po-progress, po-radio, po-radio-group, po-rich-text, po-search, po-search-ai, po-select, po-slide, po-stepper, po-switch, po-table, po-tabs, po-tag, po-textarea, po-timepicker, po-timer, po-toaster, po-toolbar, po-tree-view, po-upload, po-url, po-widget, services/po-date, services/po-dialog, services/po-i18n, services/po-language, services/po-notification, services/po-theme

Indiretos (7)

interceptors/po-http-interceptor, interceptors/po-http-request, pipes/po-decimal, po-chart, po-context-menu, po-context-tabs, services/po-user-guide

Onde testar

Arquivos por unidade
  • utils/util: utils/util.spec.ts, utils/util.ts
  • po-calendar: components/po-calendar/po-calendar-base.component.spec.ts, components/po-calendar/po-calendar-base.component.ts, components/po-calendar/po-calendar-header/po-calendar-header.component.html, components/po-calendar/po-calendar-header/po-calendar-header.component.spec.ts, components/po-calendar/po-calendar-header/po-calendar-header.component.ts, components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.html, components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.spec.ts, components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.ts, components/po-calendar/po-calendar.component.html, components/po-calendar/po-calendar.component.spec.ts, components/po-calendar/po-calendar.component.ts, components/po-calendar/services/po-calendar.service.spec.ts, components/po-calendar/services/po-calendar.service.ts
  • po-listbox: components/po-listbox/po-item-list/po-item-list.component.spec.ts, components/po-listbox/po-item-list/po-item-list.component.ts, components/po-listbox/po-listbox.component.spec.ts, components/po-listbox/po-listbox.component.ts
  • po-datepicker-range: components/po-field/po-datepicker-range/po-datepicker-range.component.spec.ts, components/po-field/po-datepicker-range/po-datepicker-range.component.ts
  • po-datepicker: components/po-field/po-datepicker/po-datepicker-base.component.spec.ts, components/po-field/po-datepicker/po-datepicker-base.component.ts, components/po-field/po-datepicker/po-datepicker.component.spec.ts, components/po-field/po-datepicker/po-datepicker.component.ts
  • po-datetimepicker: components/po-field/po-datetimepicker/po-datetimepicker.component.spec.ts, components/po-field/po-datetimepicker/po-datetimepicker.component.ts

Gerado automaticamente a partir do grafo de imports e seletores da branch base · PR #2974.

@pedrodominguesp
pedrodominguesp force-pushed the fix/datepicker-allow-any-year branch 2 times, most recently from 990bb85 to 44aae09 Compare October 21, 2026 22:50
O calendário limitava o combo de ano a 150 anos antes e depois do ano
atual e convertia os anos de 0 a 99 para 19XX, impedindo datas válidas.

Permite digitar no combo de ano qualquer ano de 4 dígitos, bloqueia a
navegação e desabilita os dias fora de 0000 a 9999 e aceita o ano 0000
nos modos month-year e year, que passam a exibir o ano com 4 dígitos.
Valida os limites de ano também para valores atribuídos via código.

Corrige o clique duplo e o foco via Tab nas opções do combo de ano e a
lista "Nenhum item encontrado" que permanecia aberta após perder o foco.

Ao pressionar o mouse dentro do calendário, por exemplo para selecionar
o texto do mês, e soltá-lo fora dele, o calendário era fechado. Passa a
considerar onde o mouse foi pressionado no po-datepicker, no
po-datepicker-range e no po-datetimepicker.

Ao filtrar o combo de mês ou de ano e descer para a lista com a seta,
o calendário restaurava o valor anterior e descartava o filtro. Passa a
validar o combo apenas quando o foco sai dele.

Ao esvaziar o combo de ano e digitar um ano fora da lista, o calendário
trocava o texto digitado pelo ano exibido. Passa a manter o valor do
combo ao atualizar as opções.
@pedrodominguesp
pedrodominguesp force-pushed the fix/datepicker-allow-any-year branch from 9f184b5 to 72dcd90 Compare October 21, 2026 23:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant