Visão geral da entrada de data e hora Web Components

    O Ignite UI for Web Components Date Time Input permite que o usuário defina e edite a data e a hora em um elemento de entrada escolhido. O usuário pode editar as partes de data e hora usando uma entrada mascarada editável. Além disso, é possível especificar um formato de exibição e entrada desejado, bem como valores mínimo e máximo para utilizar a validação.

    Usage

    Primeiro, você precisa instalar o Ignite UI for Web Components executando o seguinte comando:

    npm install igniteui-webcomponents
    

    Você precisará então importar o IgcDateTimeInputComponent, seu CSS necessário e registrar seu módulo, assim:

    import { defineComponents, IgcDateTimeInput } from 'igniteui-webcomponents';
    import 'igniteui-webcomponents/themes/light/bootstrap.css';
    
    defineComponents(IgcDateTimeInput);
    

    Para uma introdução completa ao Ignite UI for Web Components, leia o tópico Introdução.

    Value binding

    A maneira mais fácil de definir o valor do componente IgcDateTimeInputComponent é passando um objeto Date para a propriedade value:

    const input = document.querySelector('igc-date-time-input') as IgcDateTimeInputComponent;
    const date = new Date();
    
    input.value = date;
    

    O IgcDateTimeInputComponent também aceita strings ISO 8601.

    A sequência pode ser uma sequência ISO completa, no formato YYYY-MM-DDTHH:mm:ss.sssZ, ou pode ser separada em partes somente de data e somente de hora.

    Somente data

    Se uma string somente de data for vinculada à propriedade value do componente, ela precisa estar no formato YYYY-MM-DD. O inputFormat ainda é usado ao digitar valores na entrada e não precisa estar no mesmo formato. Além disso, ao vincular uma string somente de data, a diretiva impedirá mudanças de tempo forçando o tempo a ser T00:00:00.

    Somente tempo

    Strings somente de tempo normalmente não são definidas na especificação ECMA, no entanto, para permitir que a diretiva seja integrada em cenários que exigem soluções somente de tempo, ela suporta o formato de 24 horas -HH:mm:ss. O formato de 12 horas não é suportado.

    Sequência ISO completa

    Se uma string ISO completa for vinculada, a diretiva a analisará somente se todos os elementos exigidos por Date.parse forem fornecidos.

    Todos os valores falsos, incluindo InvalidDate serão analisados como null. Strings incompletas somente de data, somente de hora ou ISO completas serão analisadas como InvalidDate.

    Keyboard Navigation

    O IgcDateTimeInputComponent tem navegação intuitiva pelo teclado que facilita incrementar, decrementar ou pular entre diferentes DateParts, entre outros, sem precisar tocar no mouse.

    Chaves Descrição
    Mover um caractere para o início
    Mover um caractere para o final
    Casa Mover para o início
    Fim Mover para o final
    Ctrl / Comando + Mover para o início da seção de data/hora - atual ou esquerda
    Ctrl / Comando + Mover para o final da seção de data/hora - atual ou à direita
    Foco em uma parte de data/hora + Decrementa uma parte de data/hora
    Foco em uma parte de data/hora + Incrementa uma parte de data/hora
    Ctrl / Comando +; Define a data/hora atual como o valor do editor

    Setting formats

    O IgcDateTimeInputComponent suporta diferentes formatos de exibição e entrada.

    Ele usa Intl.DateTimeFormat que permite que ele suporte opções de formato predefinidas, como long e short, medium e full. Além disso, ele também pode aceitar uma string personalizada construída a partir de caracteres suportados, como dd-MM-yy. Além disso, se nenhum displayFormat for fornecido, o componente usará o inputFormat como tal.

    Input Format

    A tabela abaixo mostra os formatos suportados pelo inputFormat do componente:

    Formatar Descrição
    d A data será convertida em zero à esquerda durante a edição.
    dd Data com um zero à esquerda explicitamente definido.
    M Mês, será forçado com um zero à esquerda durante a edição.
    MM Mês com um zero à esquerda explicitamente definido.
    yy Formato de ano curto.
    yyyy Formato de ano inteiro.
    h Horas no formato de 12 horas serão marcadas com um zero à esquerda durante a edição.
    hh Horas no formato de 12 horas com um zero à esquerda explicitamente definido.
    H Horas no formato de 24 horas serão forçadas com um zero à esquerda durante a edição.
    HH Horas no formato de 24 horas, com um zero à esquerda explicitamente definido.
    m Os minutos serão marcados com um zero à esquerda durante a edição.
    mm Minutos com um zero à esquerda explicitamente definido.
    tt Seção AM/PM para formato de 12 horas.

    Para definir um formato de entrada específico, passe-o como uma string para o IgcDateTimeInputComponent. Isso definirá o formato de entrada esperado do usuário e o mask. Além disso, o inputFormat é baseado em localidade, então se nenhum for fornecido, o editor usará como padrão dd/MM/yyyy.

    <igc-date-time-input input-format="dd-MM-yy" display-format="medium"/>
    

    Se tudo correr bem, você deverá ver o seguinte no seu navegador:

    Display format

    A entrada de data e hora expõe formatos predefinidos para exibir data/hora de várias maneiras. Todos os exemplos abaixo são fornecidos em locale en-US.

    Opção Exemplo
    short 17/07/22, 12:00 AM
    medium 17 de julho de 2022, 12:00:00 AM
    long 17 de julho de 2022 às 12:00:00 AM GMT+3
    full Domingo, 17 de julho de 2022 às 12:00:00 AM Horário de verão da Europa Oriental
    shortDate 7/17/22
    mediumDate 17 de julho de 2022
    longDate 17 de julho de 2022
    fullDate Domingo, 17 de julho de 2022
    shortTime 12:00 AM
    mediumTime 12:00:00 AM
    longTime 12:00:00 AM GMT+3
    fullTime 12:00:00 AM Horário de verão da Europa Oriental

    Além disso, os usuários podem construir uma string displayFormat usando os símbolos suportados descritos na tabela a seguir.

    Tipo Formatar Descrição Exemplo
    Dia d Dígitos mínimos. 7, 17
    dd Zero preenchido. 07, 17
    Mês M Dígitos mínimos. 3, 10
    MM Zero preenchido. 03, 10
    MMM Abreviado Outubro
    MMMM Largo outubro
    MMMMM Estreito O
    Ano y Numérico 2022
    yy Dois dígitos 22
    yyy Numérico 2022
    yyyy Numérico 2022
    Hora 1-12 h Dígitos mínimos 1, 12
    hh Zero preenchido 01, 12
    Hora 1-24 H Dígitos mínimos 1, 23
    HH Zero preenchido 01, 23
    Minuto m Dígitos mínimos 1, 59
    mm Zero preenchido 01, 59
    Segundo s Dígitos mínimos 1, 59
    ss Zero preenchido 01, 59
    Período de tempo t Abreviado AM, PM
    tt Abreviado AM, PM
    ttt Curto meio-dia
    tttt Longo meio-dia
    ttttt Estreito não

    [!Note] Many locales use the same time period string, irrespective of the format specified. Also, it has an effect only if a 12-hour clock is used.

    Min/max value

    Você pode especificar propriedades min e max para restringir a entrada e controlar a validade do componente. Assim como a propriedade value, elas podem ser do tipo string.

    const input = document.querySelector('igc-date-time-input') as IgcDateTimeInputComponent;
    
    input.min = new Date(2021, 0, 1);
    
    <igc-date-time-input max="2022-01-01T21:00:00.000Z"></igc-date-time-input>
    

    Se tudo correr bem, o componente será invalid se o valor for maior ou menor que as datas fornecidas. Veja o exemplo abaixo:

    Step up/down

    O IgcDateTimeInputComponent expõe métodos públicos stepUp e stepDown. Eles incrementam ou decrementam uma DatePart específica da data e hora atualmente definidas e podem ser usados de algumas maneiras.

    No primeiro cenário, se nenhuma DatePart específica for passada para o método, uma DatePart padrão será incrementada ou decrementada, com base no inputFormat especificado e na implementação do componente interno. No segundo cenário, você pode especificar explicitamente qual DatePart manipular, pois pode atender a diferentes requisitos. Além disso, ambos os métodos aceitam um parâmetro delta opcional do tipo number que pode ser usado para definir o passo stepUp/stepDown.

    Além disso, spinDelta é uma propriedade que pode ser usada para aplicar um delta diferente a cada segmento de data e hora. Ele será aplicado ao girar com o teclado, a roda do mouse ou com os métodos stepUp e stepDown, desde que eles não tenham o parâmetro delta fornecido, pois ele terá precedência sobre spinDelta.

    const input = document.getElementById('dateTimeInput') as IgcDateTimeInputComponent;
    
    const spinDelta: DatePartDeltas = {
      date: 2,
      month: 3,
      year: 10,
    };
    
    input.spinDelta = spinDelta;
    

    Experimente no exemplo abaixo:

    Styling

    The IgcDateTimeInputComponent component exposes CSS parts for almost all of its inner elements. The following table lists all of the exposed CSS parts:

    Nome Descrição
    container O wrapper principal que contém todos os principais elementos de entrada.
    input O elemento de entrada nativo.
    label O elemento de rótulo nativo.
    prefix O wrapper de prefixo.
    suffix O wrapper de sufixo.
    helper-text O wrapper de texto auxiliar.
    igc-date-time-input::part(input) {
      background-color: var(--ig-primary-100);
      border-color: var(--ig-secondary-500);
      box-shadow: none;
    }
    
    igc-date-time-input::part(prefix),
    igc-date-time-input::part(suffix) {
      color: var(--ig-primary-600-contrast);
      background-color: var(--ig-primary-500);
      border-color: var(--ig-secondary-500);
    }
    

    API References

    Additional Resources