6个版本 (稳定)
1.1.0 | 2022年4月8日 |
---|---|
1.0.2 | 2021年4月30日 |
1.0.0 | 2021年3月17日 |
0.1.1 | 2021年3月12日 |
#450 in WebAssembly
15KB
339 行
Seed Datepicker
这是一个可定制的日期选择器组件,用于Seed框架,使用Chrono进行日期结构。
此crate提供了Seed框架的实现,但大部分实现不依赖于Seed框架,位于chrono-datepicker-core crate中。
如果您想使用这个库,可以使用提供的示例scss样式在此处,或者您可以为它创建自己的样式,您只需使用正确的类名及其嵌套即可。
部署示例
查看部署示例。
用法
查看示例。
视图和选择
日期选择器对话框有3种不同的DialogViewType
,如下所示
DialogViewType::年份
显示从当前年份开始的20年内的选择,其中modulo 20 == 0
。
点击对话框标题没有效果。
- 如果
selection_type == DialogViewType::Years
,则点击年份- 选择该年的1月1日(因为底层存储类型是chrono中的
NaiveDate
)
- 选择该年的1月1日(因为底层存储类型是chrono中的
- 如果
selection_type != DialogViewType::Years
,则点击年份- 将
DialogViewType
更改为DialogViewType::Months
- 将
DialogViewType::月份
显示特定年份的12个月的选择。
点击对话框标题将DialogViewType
更改为DialogViewType::Years
- 如果
selection_type == DialogViewType::Months
,则点击月份- 选择所选月份的第一天(因为底层存储类型是chrono中的
NaiveDate
)
- 选择所选月份的第一天(因为底层存储类型是chrono中的
- 如果
selection_type == DialogViewType::Days
,则点击月份- 将
DialogViewType
修改为DialogViewType::Days
以显示该月的天数。
- 将
DialogViewType::Days
显示特定月份的所有天数中的选择。
点击对话框的标题,将 DialogViewType
修改为 DialogViewType::Months
- 点击某一天,将该日期作为
NaiveDate
选择。
约束条件
在 init
方法配置日期选择器时,可以应用各种约束,例如
let config = PickerConfigBuilder::default()
.date_constraints(
DateConstraintsBuilder::default()
// earliest selectable date
.min_date(NaiveDate::from_ymd(2020, 12, 1))
// latest selectable date
.max_date(NaiveDate::from_ymd(2022, 12, 14))
// chrono Weekday-s that can be disabled
.disabled_weekdays([Weekday::Sat, Weekday::Sun].iter().cloned().collect())
// entire chrono Month-s that can be disabled
.disabled_months([Month::July, Month::August].iter().cloned().collect())
// entire years that can be disabled
.disabled_years([2021].iter().cloned().collect())
// a particular day of month that is disabled in all months
.disabled_monthly_dates([13].iter().cloned().collect())
// particular dates that are disabled each year (the year number is ignored here)
.disabled_yearly_dates(vec![
NaiveDate::from_ymd(1, 12, 24),
NaiveDate::from_ymd(1, 12, 25),
NaiveDate::from_ymd(1, 12, 26),
])
// particular unique dates that can be disabled
.disabled_unique_dates([NaiveDate::from_ymd(2020, 12, 8)].iter().cloned().collect())
.build()
.unwrap(),
)
.build()
.unwrap();
依赖关系
~13-21MB
~295K SLoC