Skip to content
API 风格:

Selector de fecha ​

LhDatePicker es un componente selector de fecha y hora que admite varios modos de selección: fecha, mes, año, etc.

Uso básico ​

Uso básico
vue
<script setup lang="ts">
import { ref } from 'vue'

const baseDate = ref(new Date(2024, 0, 1))
</script>

<template>
  <LhDatePicker v-model="baseDate" />
</template>
vue
<script>
export default {
  data() {
    return {
      baseDate: new Date(2024, 0, 1),
    }
  },
}
</script>

<template>
  <LhDatePicker v-model="baseDate" />
</template>

Estado deshabilitado ​

Estado deshabilitado
vue
<script setup lang="ts">
import { ref } from 'vue'

const disabledDate = ref(new Date())
</script>

<template>
  <LhDatePicker v-model="disabledDate" disabled />
</template>
vue
<script>
export default {
  data() {
    return {
      disabledDate: new Date(),
    }
  },
}
</script>

<template>
  <LhDatePicker v-model="disabledDate" disabled />
</template>

Formato de fecha ​

Formato de fecha
vue
<script setup lang="ts">
import { ref } from 'vue'

const formatDate = ref(new Date())
</script>

<template>
  <LhDatePicker v-model="formatDate" format="MM/dd/yyyy" />
</template>
vue
<script>
export default {
  data() {
    return {
      formatDate: new Date(),
    }
  },
}
</script>

<template>
  <LhDatePicker v-model="formatDate" format="MM/dd/yyyy" />
</template>

Botón de borrado ​

Botón de borrado
vue
<script setup lang="ts">
import { ref } from 'vue'

const clearDate = ref(new Date())
</script>

<template>
  <LhDatePicker v-model="clearDate" clearable />
</template>
vue
<script>
export default {
  data() {
    return {
      clearDate: new Date(),
    }
  },
}
</script>

<template>
  <LhDatePicker v-model="clearDate" clearable />
</template>

Tamaño ​

Tamaño
vue
<script setup lang="ts">
import { ref } from 'vue'

const smallDate = ref(new Date())
const mediumDate = ref(new Date())
const largeDate = ref(new Date())
</script>

<template>
  <LhDatePicker v-model="smallDate" size="small" />
  <LhDatePicker v-model="mediumDate" size="medium" />
  <LhDatePicker v-model="largeDate" size="large" />
</template>
vue
<script>
export default {
  data() {
    return {
      smallDate: new Date(),
      mediumDate: new Date(),
      largeDate: new Date(),
    }
  },
}
</script>

<template>
  <LhDatePicker v-model="smallDate" size="small" />
  <LhDatePicker v-model="mediumDate" size="medium" />
  <LhDatePicker v-model="largeDate" size="large" />
</template>

Modos de selección ​

mode admite 'date' (predeterminado) / 'month' / 'year'. Dentro del panel, al hacer clic en el título se desciende nivel a nivel: fecha → mes → año; en los modos mes/año, el panel se abre directamente en la cuadrícula correspondiente y al hacer clic se selecciona y se cierra (sin botones inferiores).

Modos mes y año
vue
<script setup lang="ts">
import { ref } from 'vue'

const monthDate = ref(new Date())
const yearDate = ref(new Date(2024, 0, 1))
</script>

<template>
  <LhDatePicker v-model="monthDate" mode="month" />
  <LhDatePicker v-model="yearDate" mode="year" />
</template>
vue
<script>
export default {
  data() {
    return {
      monthDate: new Date(),
      yearDate: new Date(2024, 0, 1),
    }
  },
}
</script>

<template>
  <LhDatePicker v-model="monthDate" mode="month" />
  <LhDatePicker v-model="yearDate" mode="year" />
</template>

Marcador de posición, solo lectura y personalización ​

placeholder personaliza el texto del marcador de posición; readonly lo muestra en modo solo lectura (el panel se puede ver, pero no seleccionar); range-separator personaliza el separador del intervalo; cell-class-name añade clases personalizadas a las celdas de fecha; popper-class personaliza el estilo del panel.

placeholder / readonly / range-separator
vue
<script setup lang="ts">
import { ref } from 'vue'
const dp1 = ref(null)
const dp2 = ref(new Date())
</script>

<template>
  <!-- Texto del marcador de posición -->
  <LhDatePicker v-model="dp1" placeholder="Selecciona la fecha de entrada" />
  <!-- Solo lectura -->
  <LhDatePicker :model-value="dp2" readonly />
</template>
vue
<script>
export default {
  data() {
    return {
      dp1: null,
      dp2: new Date(),
    }
  },
}
</script>

<template>
  <!-- Texto del marcador de posición -->
  <LhDatePicker v-model="dp1" placeholder="Selecciona la fecha de entrada" />
  <!-- Solo lectura -->
  <LhDatePicker :model-value="dp2" readonly />
</template>

DatePicker API ​

Nota: datetime y la selección por intervalos actualmente solo tienen el tipo reservado, sin la interfaz de selección correspondiente (las columnas de hora y el panel de intervalo no están implementados; véase el registro familiar P-08). Si se pasa externalmente un valor de intervalo [Date, Date], el panel puede mostrarlo, pero la confirmación dentro del panel no sobrescribirá el valor de intervalo.

PropDescripciónTipoPredeterminado
modelValueFecha vinculadaDate | [Date, Date]null
modeModo de selección"date" | "month" | "year" | "datetime"'date'
sizeTamaño"small" | "medium" | "large" | "mini" | "x-large"'medium'
disabledSi se deshabilitabooleanfalse
clearableSi se muestra el botón de borradobooleantrue
placeholderTexto del marcador de posición (si no se pasa, se genera a partir de format; toma el paquete de idioma datepicker.year/month)string''
formatFormato de fechastring'yyyy-MM-dd'
readonlyCampo de entrada de solo lecturabooleantrue
rangeSeparatorSeparador de intervalostring'~'
cellClassName—(date: Date) => string—
popperClass—string—
sxProps de disposición rápida (p. ej., { mt: 2, w: '50%' }); se convierten en estilos en línea aplicados al elemento raíz del disparador (el panel flotante no se ve afectado)LhSxProps—

DatePicker Events ​

EventoDescripciónTipo
update:model-valueSe dispara cuando cambia el valor(value: Date | [Date, Date]) => void
changeSe dispara cuando se confirma el cambio de valor(value: Date | [Date, Date]) => void

Definiciones de tipos ​

Las estructuras de tipos TypeScript exportadas por este componente (extraídas automáticamente de packages/components/date-picker/src/types.ts y de las fuentes @lh-ui/share/core/*; abre cada entrada para ver la definición completa; la descripción de los atributos está en la tabla de Props de arriba):

LhDatePickerProps
ts
export interface LhDatePickerProps {
  modelValue?: Date | [Date, Date] | null
  mode?: LhDatePickerMode
  size?: LhComponentSize
  disabled?: boolean
  clearable?: boolean
  placeholder?: string
  format?: string
  readonly?: boolean
  rangeSeparator?: string
  cellClassName?: (date: Date) => string
  popperClass?: string
  /** Props de disposición rápida */
  sx?: LhSxProps
}
LhDatePickerMode (de @lh-ui/share/core/date-picker)
ts
/**
 * Modos de DatePicker
 */
export type LhDatePickerMode = 'date' | 'month' | 'year' | 'datetime'
LhComponentSize (de @lh-ui/share/core/shared)
ts
export type LhComponentSize = (typeof LH_SIZE_CONST)[keyof typeof LH_SIZE_CONST]

La belleza de la tradición, el cimiento del código