DateRangePicker
DateRangePicker 是用于选择开始和结束日期的独立界面。默认情况下,宽视口显示连续两个月;窄视口或粗指针设备则改为显示一个月。
原生弹出层关闭时会触发 update:open(false)。DateRangePicker 自身的退出动画结束后会触发 closed。退出期间会保留当前日历视图,动画结束后再重置。
密度
DatePicker 和 DateRangePicker 继承 --md-density。日期单元格保持等宽等高,日历宽度、星期行、月份/年份列表和操作间距会随密度调整。视口较窄时,单元格会限制在可用列宽内。显式设置的组件尺寸 token 优先。
示例
默认
模态模式
限制条件
参考
结构
| 元素 | 部件 | 选择器 |
|---|---|---|
<div> | root | [data-scope="date-range-picker"][data-part="root"]鼠标左键单击复制 |
<div> | surface | [data-scope="date-range-picker"][data-part="surface"]鼠标左键单击复制 |
<div> | summary | [data-scope="date-range-picker"][data-part="summary"]鼠标左键单击复制 |
<span> | prompt | [data-scope="date-range-picker"][data-part="prompt"]鼠标左键单击复制 |
<div> | endpoints | [data-scope="date-range-picker"][data-part="endpoints"]鼠标左键单击复制 |
<button> | start-selector | [data-scope="date-range-picker"][data-part="start-selector"]鼠标左键单击复制 |
<span> | value | [data-scope="date-range-picker"][data-part="value"]鼠标左键单击复制 |
<button> | end-selector | [data-scope="date-range-picker"][data-part="end-selector"]鼠标左键单击复制 |
<div> | header | [data-scope="date-range-picker"][data-part="header"]鼠标左键单击复制 |
<IconButton> | previous-month | [data-scope="date-range-picker"][data-part="previous-month"]鼠标左键单击复制 |
<Button> | month-switch | [data-scope="date-range-picker"][data-part="month-switch"]鼠标左键单击复制 |
<IconButton> | next-month | [data-scope="date-range-picker"][data-part="next-month"]鼠标左键单击复制 |
<IconButton> | previous-year | [data-scope="date-range-picker"][data-part="previous-year"]鼠标左键单击复制 |
<Button> | year-switch | [data-scope="date-range-picker"][data-part="year-switch"]鼠标左键单击复制 |
<IconButton> | next-year | [data-scope="date-range-picker"][data-part="next-year"]鼠标左键单击复制 |
<div> | calendars条件显示 | [data-scope="date-range-picker"][data-part="calendars"]鼠标左键单击复制 |
<section> | calendar-pane | [data-scope="date-range-picker"][data-part="calendar-pane"]鼠标左键单击复制 |
<div> | calendar-title | [data-scope="date-range-picker"][data-part="calendar-title"]鼠标左键单击复制 |
<div> | weekdays | [data-scope="date-range-picker"][data-part="weekdays"]鼠标左键单击复制 |
<span> | weekday | [data-scope="date-range-picker"][data-part="weekday"]鼠标左键单击复制 |
<div> | grid | [data-scope="date-range-picker"][data-part="grid"]鼠标左键单击复制 |
<span> | day-cell | [data-scope="date-range-picker"][data-part="day-cell"]鼠标左键单击复制 |
<button> | day | [data-scope="date-range-picker"][data-part="day"]鼠标左键单击复制 |
<div> | months | [data-scope="date-range-picker"][data-part="months"]鼠标左键单击复制 |
<button> | month | [data-scope="date-range-picker"][data-part="month"]鼠标左键单击复制 |
<span> | list-icon | [data-scope="date-range-picker"][data-part="list-icon"]鼠标左键单击复制 |
<span> | list-label | [data-scope="date-range-picker"][data-part="list-label"]鼠标左键单击复制 |
<div> | years | [data-scope="date-range-picker"][data-part="years"]鼠标左键单击复制 |
<button> | year | [data-scope="date-range-picker"][data-part="year"]鼠标左键单击复制 |
<div> | actions | [data-scope="date-range-picker"][data-part="actions"]鼠标左键单击复制 |
属性
| 名称 | 说明 | 默认值 | 控件 |
|---|---|---|---|
shape可选 | Corner style; inherits the shared shape default. M3Shape | undefined | - | - |
id可选 | Optional explicit id for the popover element. string | undefined | undefined | - |
variant可选 | Visual and positioning mode. Auto uses docked layout until a narrow/coarse pointer viewport. DatePickerVariant | undefined | "auto" | - |
calendars可选 | Number of calendar months to show. Auto shows two months on wide viewports and one on narrow/coarse inputs. DateRangePickerCalendars | undefined | "auto" | - |
anchorName可选 | CSS anchor name used to position the docked popover. string | undefined | undefined | - |
anchorElement可选 | Element passed to showPopover as the source for focus and dismissal semantics. HTMLElement | undefined | undefined | - |
ariaLabel可选 | Accessible label for the picker surface. string | undefined | undefined | |
min可选 | Earliest selectable date, formatted as YYYY-MM-DD. string | undefined | undefined | |
max可选 | Latest selectable date, formatted as YYYY-MM-DD. string | undefined | undefined | |
locale可选 | BCP 47 locale used for month, weekday, and date accessibility labels. string | undefined | undefined | - |
firstDayOfWeek可选 | First day of the week, where 0 is Sunday and 6 is Saturday. 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined | undefined | - |
confirmText可选 | Text for the confirmation button. string | undefined | undefined | |
cancelText可选 | Text for the cancel button. string | undefined | undefined | |
startText可选 | Text used for the start side of the range. string | undefined | undefined | |
endText可选 | Text used for the end side of the range. string | undefined | undefined | |
today可选 | Date treated as today, formatted as YYYY-MM-DD. Useful for deterministic tests. string | undefined | undefined | - |
modelValue可选 | - DateRangePickerModelValue | - | - |
open可选 | - boolean | undefined | false |
事件6
| 名称 | 类型 | 说明 |
|---|---|---|
update:open | [value: boolean] | - |
cancel | [] | - |
closed | [] | - |
update:modelValue | [value: DateRangePickerModelValue] | - |
change | [value: DateRangePickerModelValue] | - |
confirm | [value: DateRangePickerModelValue] | - |
样式5
| Token | 说明 |
|---|---|
--md-date-range-picker-docked-container-widthLayout回退值 45rem | Controls docked container width when two calendars are visible. |
--md-date-range-picker-range-container-colorState回退值 var(--md-sys-color-primary-container) | Controls selected range container color. |
--md-date-range-picker-range-label-text-colorState回退值 var(--md-sys-color-on-primary-container) | Controls selected range label text color. |
--md-date-range-picker-summary-label-text-colorColor回退值 var(--md-sys-color-primary) | Controls summary label text color. |
--md-date-range-picker-summary-value-text-colorColor回退值 var(--md-sys-color-on-surface) | Controls summary value text color. |