import type {
IComponentProp,
IComponentPrototype,
} from "@xirang/studio-helpers";
import { InstancePrototypes, StylePrototypes } from "./common";
export const PickerCommonProps: IComponentPrototype["props"] = [
...StylePrototypes,
...InstancePrototypes,
{
name: "placeholder",
title: "输入框提示文字",
tip: "如果是范围选择,请使用数组形式表示",
setter: "textSetter",
group: "basic",
},
{
name: "picker",
title: "设置选择器类型",
setterProps: {
options: [
{ label: "时间", value: "date" },
{ label: "周", value: "week" },
{ label: "月", value: "month" },
{ label: "年", value: "year" },
{ label: "十年", value: "decade" },
],
},
setter: "pickerSetter",
},
{
name: "defaultValue",
title: "默认日期值",
setter: "textSetter",
tip: "接受类型:string、number、Moment,如果是范围选择,请使用数组形式表示",
group: "basic",
},
{
name: "format",
title: "显示的日期格式",
tip: "年-月-日:YYYY-MM-DD,时:分:秒:hh:mm:ss,如果是范围选择,请使用数组形式表示",
setter: "textSetter",
group: "basic",
},
{
name: "valueType",
title: "提交的日期格式",
setter: "choiceSetter",
options: [
{ label: "Moment", value: "moment", tip: "返回Moment对象" },
{ label: "字符串", value: "string", tip: "返回格式化日期字符串" },
{ label: "时间戳", value: "timestamp", tip: "返回时间戳(毫秒)" },
],
defaultValue: "moment",
},
{
name: "showTime",
title: "增加时间选择",
setter: "boolSetter",
group: "basic",
},
{
name: "allowClear",
title: "清除按钮",
setter: "boolSetter",
group: "basic",
},
{
name: "bordered",
title: "边框",
setter: "boolSetter",
group: "style",
},
{
name: "disabled",
title: "禁用",
tip: "如果是范围选择,请使用数组形式表示",
setter: "boolSetter",
},
{
name: "popupStyle",
title: "额外的弹出日历样式",
setter: "expressionSetter",
group: "style",
autoCompleteOptions: ["{}"],
},
{
name: "popupClassName",
title: "额外的弹出日历样式名",
setter: "textSetter",
group: "style",
},
// advance
{
name: "suffixIcon",
title: "选择框后缀图标",
setter: "iconSetter",
group: "advanced",
},
{
name: "prevIcon",
title: "<切换图标",
setter: "iconSetter",
group: "advanced",
},
{
name: "nextIcon",
title: ">切换图标",
setter: "iconSetter",
group: "advanced",
},
{
name: "superNextIcon",
title: ">>切换图标",
setter: "iconSetter",
group: "advanced",
},
{
name: "superPrevIcon",
title: "<<切换图标",
setter: "iconSetter",
group: "advanced",
},
{
name: "disabledDate",
title: "不可选择的日期",
setter: "expressionSetter",
group: "advanced",
autoCompleteOptions: [
`current => {
// // 示例:不可选择今日(包含)之前的日期
return current && current < moment().endOf('day');
}
`,
],
},
{
name: "disabledTime",
title: "不可选择的时间",
tip: "需要showTime=true",
setter: "expressionSetter",
autoCompleteOptions: [
`(date) => ({
disabledHours: () => range(0, 24).splice(4, 20),
disabledMinutes: () => range(30, 60),
disabledSeconds: () => [55, 56],
})`,
],
group: "advanced",
},
{
name: "dateRender",
title: "日期单元格的内容&样式",
setter: "expressionSetter",
group: "advanced",
tip: "自定义日期单元格的内容和样式",
autoCompleteOptions: [
`current => {
// 示例:给每个月的第一天增加样式
const style = {};
if (current.date() === 1) {
style.border = '1px solid #1890ff';
style.borderRadius = '50%';
}
return (
{current.date()}
);
}`,
],
},
{
name: "renderExtraFooter",
title: "额外的页脚",
setter: "expressionSetter",
group: "advanced",
autoCompleteOptions: ['()=>"extraFooter"'],
},
{
name: "panelRender",
title: "自定义渲染面板",
setter: "expressionSetter",
group: "advanced",
autoCompleteOptions: ["(panelNode) => panelNode"],
},
{
name: "inputReadOnly",
title: "输入框为只读",
setter: "boolSetter",
tip: "避免在移动设备上打开虚拟键盘",
group: "advanced",
},
{
name: "open",
title: "展开控制弹层",
setter: "boolSetter",
group: "advanced",
},
// {
// name: 'getPopupContainer',
// title: '定义浮层的容器',
// setter: 'expressionSetter',
// group: 'advanced',
// },
{
name: "locale",
title: "国际化配置",
setter: "expressionSetter",
tip: "该配置项需手动引入依赖,详细见文档:",
group: "advanced",
},
{
name: "size",
title: "输入框大小",
setterProps: {
options: [
{ label: "小", value: "small" },
{ label: "中", value: "middle" },
{ label: "大", value: "large" },
],
},
setter: "choiceSetter",
group: "basic",
},
{
name: "onChange",
title: "时间变化回调",
setter: "actionSetter",
group: "event",
autoCompleteOptions: ["(date,dateString)=>{}"],
},
{
name: "onOpenChange",
title: "日历弹出关闭回调",
setter: "actionSetter",
group: "event",
},
{
name: "onPanelChange",
title: "日历面板切换回调",
setter: "actionSetter",
group: "event",
},
{
name: "autoFocus",
title: "自动获取焦点",
setter: "boolSetter",
group: "advanced",
},
];
export const DatePicker: IComponentPrototype = {
name: "DatePicker",
title: "日期选择框",
icon: "icon-riqishijian",
type: "element",
package: "@xirang/design-antd",
help: "当需要输入或选择具体日期的控件",
hasChildren: false,
props: [
...PickerCommonProps,
{
name: "rangePlacement",
title: "快捷时间展示位置",
setter: "choiceSetter",
options: [
{ label: "左侧", value: "left" },
{ label: "底部", value: "bottom" },
],
group: "advanced",
tip: "搭配 ranges 来使用",
},
{
name: "ranges",
title: "时间范围快捷选择",
setter: "expressionSetter",
group: "advanced",
autoCompleteOptions: [
`{
Today: moment(),
'This Month': moment().endOf('month'),
}`,
],
},
{
name: "onOk",
title: "确定按钮回调",
setter: "actionSetter",
group: "event",
},
{
name: "showNow",
title: "显示“此刻”按钮",
setter: "boolSetter",
group: "advanced",
},
{
name: "showToday",
title: "展示“今天”按钮",
setter: "boolSetter",
group: "advanced",
},
],
};
export const MonthPicker: IComponentPrototype = {
name: "MonthPicker",
title: "月选择器",
icon: "icon-month",
type: "element",
package: "@xirang/design-antd",
help: "当需要输入或选择具体月份的控件",
hasChildren: false,
props: [
...PickerCommonProps,
{
name: "monthCellRender",
title: "自定义渲染月份内容",
setter: "expressionSetter",
autoCompleteOptions: [
`(date) => {
return date.format("MM");
}`,
],
group: "advanced",
},
],
};
export const YearPicker: IComponentPrototype = {
name: "YearPicker",
title: "年选择器",
icon: "icon-year",
type: "element",
package: "@xirang/design-antd",
help: "当需要输入或选择具体年份的控件",
hasChildren: false,
props: [...PickerCommonProps],
};
export const WeekPicker: IComponentPrototype = {
name: "WeekPicker",
title: "周选择框",
icon: "icon-week",
type: "element",
package: "@xirang/design-antd",
help: "当需要输入或选择具体周的控件",
hasChildren: false,
props: [...PickerCommonProps],
};
export const DateRangePickerProps: IComponentProp[] = [
{
name: "rangePlacement",
title: "快捷时间展示位置",
setter: "choiceSetter",
options: [
{ label: "左侧", value: "left" },
{ label: "底部", value: "bottom" },
],
group: "advanced",
tip: "搭配 ranges 来使用",
},
{
name: "ranges",
title: "时间范围快捷选择",
setter: "expressionSetter",
group: "advanced",
autoCompleteOptions: [
`{
Today: [moment(), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
}`,
],
},
{
name: "allowEmpty",
title: "允许起始项部分为空",
setter: "expressionSetter",
group: "advanced",
autoCompleteOptions: ["[true, false]"],
},
{
name: "separator",
title: "分隔符",
setter: "iconSetter",
group: "advanced",
},
...PickerCommonProps,
{
name: "onCalendarChange",
title: "日期发生变化回调",
setter: "actionSetter",
group: "event",
},
];
export const DateRangePicker: IComponentPrototype = {
name: "DateRangePicker",
title: "日期选择框 Range",
icon: "icon-date-range",
type: "element",
package: "@xirang/design-antd",
help: "当需要输入或选择具体日期范围的控件",
hasChildren: false,
props: DateRangePickerProps,
};
export const DatePickerPro = DatePicker;
export const DateRangePickerPro = DateRangePicker;