import snippets from './snippets';

const PisellDateTimeDisplayMeta = {
  componentName: 'PisellDateTimeDisplay',
  title: '时间展示',
  category: '数据展示',
  docUrl: '',
  screenshot: '',
  devMode: 'proCode',
  npm: {
    package: '@pisell/materials',
    version: '1.0.1',
    exportName: 'PisellDateTimeDisplay',
    main: 'src/index.tsx',
    destructuring: true,
    subName: '',
  },
  configure: {
    props: [
      {
        title: {
          label: '布局配置',
          tip: '配置组件的布局方式和对齐',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'layout',
            title: {
              label: '布局方向',
              tip: '组件的布局方式：horizontal-水平布局 | vertical-垂直布局 | inline-单行布局',
            },
            propType: {
              type: 'oneOf',
              value: ['horizontal', 'vertical', 'inline'],
            },
            setter: [
              {
                componentName: 'RadioGroupSetter',
                props: {
                  options: [
                    {
                      title: '水平布局',
                      value: 'horizontal',
                    },
                    {
                      title: '垂直布局',
                      value: 'vertical',
                    },
                    {
                      title: '单行布局',
                      value: 'inline',
                    },
                  ],
                },
              },
              'VariableSetter',
            ],
            defaultValue: 'horizontal',
          },
          {
            name: 'textAlign',
            title: {
              label: '文本对齐',
              tip: '文本对齐方式',
            },
            propType: {
              type: 'oneOf',
              value: ['left', 'center', 'right'],
            },
            setter: [
              {
                componentName: 'RadioGroupSetter',
                props: {
                  options: [
                    {
                      title: '左对齐',
                      value: 'left',
                    },
                    {
                      title: '居中',
                      value: 'center',
                    },
                    {
                      title: '右对齐',
                      value: 'right',
                    },
                  ],
                },
              },
              'VariableSetter',
            ],
            defaultValue: 'left',
          },
          {
            name: 'inlineSeparator',
            title: {
              label: '单行分隔符',
              tip: '单行模式下字段之间的分隔符',
            },
            propType: 'string',
            setter: ['StringSetter', 'VariableSetter'],
            defaultValue: ' · ',
            condition: {
              type: 'JSFunction',
              value:
                'target => target.getProps().getPropValue("layout") === "inline"',
            },
          },
        ],
      },
      {
        title: {
          label: '字段配置',
          tip: '配置显示的字段及其顺序',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'fields.showTime',
            title: {
              label: '显示时间',
              tip: '是否显示时间字段',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: true,
          },
          {
            name: 'fields.showDate',
            title: {
              label: '显示日期',
              tip: '是否显示日期字段',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: true,
          },
          {
            name: 'fields.showWeekday',
            title: {
              label: '显示星期',
              tip: '是否显示星期字段',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: true,
          },
          {
            name: 'fields.fieldOrder',
            title: {
              label: '字段顺序',
              tip: '字段显示的顺序',
            },
            propType: {
              type: 'arrayOf',
              value: {
                type: 'oneOf',
                value: ['time', 'date', 'weekday'],
              },
            },
            setter: 'JsonSetter',
          },
        ],
      },
      {
        title: {
          label: '时间格式',
          tip: '配置时间的显示格式',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'timeFormat.use12Hour',
            title: {
              label: '12小时制',
              tip: '是否使用12小时制（显示AM/PM）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'timeFormat.showSeconds',
            title: {
              label: '显示秒',
              tip: '是否显示秒（开启后刷新间隔为1秒）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'timeFormat.padHour',
            title: {
              label: '小时补零',
              tip: '小时是否补零（如：01:45）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'timeFormat.onlyShowHour',
            title: {
              label: '只显示小时',
              tip: '是否只显示小时（如：13）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
        ],
      },
      {
        title: {
          label: '日期格式',
          tip: '配置日期的显示格式',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'dateFormat.order',
            title: {
              label: '日期顺序',
              tip: '年月日的显示顺序',
            },
            propType: {
              type: 'oneOf',
              value: ['YMD', 'MDY', 'DMY'],
            },
            setter: [
              {
                componentName: 'SelectSetter',
                props: {
                  options: [
                    {
                      title: '年-月-日',
                      value: 'YMD',
                    },
                    {
                      title: '月-日-年',
                      value: 'MDY',
                    },
                    {
                      title: '日-月-年',
                      value: 'DMY',
                    },
                  ],
                },
              },
              'VariableSetter',
            ],
            defaultValue: 'YMD',
          },
          {
            name: 'dateFormat.showYear',
            title: {
              label: '显示年份',
              tip: '是否显示年份',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'dateFormat.showMonth',
            title: {
              label: '显示月份',
              tip: '是否显示月份',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: true,
          },
          {
            name: 'dateFormat.showDay',
            title: {
              label: '显示日期',
              tip: '是否显示日期',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: true,
          },
          {
            name: 'dateFormat.shortMonth',
            title: {
              label: '月份简写',
              tip: '英文月份是否简写（Mar / March）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: true,
          },
          {
            name: 'dateFormat.numericMonth',
            title: {
              label: '数字月份',
              tip: '英文月份是否用数字展示（03）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'dateFormat.showChineseUnit',
            title: {
              label: '中文单位',
              tip: '中文是否显示"年月日"汉字',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'dateFormat.separator',
            title: {
              label: '分隔符',
              tip: '日期分隔符（如：- 或 /）',
            },
            propType: 'string',
            setter: ['StringSetter', 'VariableSetter'],
            defaultValue: '-',
          },
        ],
      },
      {
        title: {
          label: '星期格式',
          tip: '配置星期的显示格式',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'weekdayFormat.full',
            title: {
              label: '完整展示',
              tip: '是否完整展示星期（Saturday / 星期六）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'weekdayFormat.singleLetter',
            title: {
              label: '单字母展示',
              tip: '是否单字母展示星期（S / 六）',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
        ],
      },
      {
        title: {
          label: '高级配置',
          tip: '自定义格式化和刷新配置',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'customFormat',
            title: {
              label: '自定义格式',
              tip: '自定义格式化字符串（如：YYYY-MM-DD HH:mm:ss）',
            },
            propType: 'string',
            setter: ['StringSetter', 'VariableSetter'],
          },
          {
            name: 'refreshInterval',
            title: {
              label: '刷新间隔',
              tip: '自动刷新间隔（毫秒）',
            },
            propType: 'number',
            setter: ['NumberSetter', 'VariableSetter'],
          },
          {
            name: 'disableAutoRefresh',
            title: {
              label: '禁用刷新',
              tip: '是否禁用自动刷新',
            },
            propType: 'bool',
            setter: ['BoolSetter', 'VariableSetter'],
            defaultValue: false,
          },
          {
            name: 'locale',
            title: {
              label: '语言',
              tip: 'dayjs locale（如：zh-cn, en, ja）',
            },
            propType: 'string',
            setter: [
              {
                componentName: 'SelectSetter',
                props: {
                  options: [
                    {
                      title: '中文',
                      value: 'zh-cn',
                    },
                    {
                      title: 'English',
                      value: 'en',
                    },
                    {
                      title: '日本語',
                      value: 'ja',
                    },
                  ],
                },
              },
              'StringSetter',
              'VariableSetter',
            ],
          },
        ],
      },
      {
        title: {
          label: '样式配置',
          tip: '自定义组件样式',
        },
        display: 'block',
        type: 'group',
        items: [
          {
            name: 'containerStyle',
            title: {
              label: '容器样式',
              tip: '容器的样式配置（背景、圆角、边框等）',
            },
            propType: 'object',
            setter: 'JsonSetter',
          },
          {
            name: 'timeStyle',
            title: {
              label: '时间样式',
              tip: '时间文本的样式配置（字号、颜色等）',
            },
            propType: 'object',
            setter: 'JsonSetter',
          },
          {
            name: 'dateStyle',
            title: {
              label: '日期样式',
              tip: '日期文本的样式配置（字号、颜色等）',
            },
            propType: 'object',
            setter: 'JsonSetter',
          },
          {
            name: 'weekdayStyle',
            title: {
              label: '星期样式',
              tip: '星期文本的样式配置（字号、颜色等）',
            },
            propType: 'object',
            setter: 'JsonSetter',
          },
          {
            name: 'className',
            title: {
              label: '样式类名',
              tip: 'className | 自定义样式类名',
            },
            propType: 'string',
            setter: 'StringSetter',
          },
        ],
      },
    ],
    supports: {
      style: true,
      events: [
        {
          name: 'onClick',
          template:
            "onClick(${extParams}){\n// 点击组件时的回调\nconsole.log('onClick');}",
        },
        {
          name: 'onTimeUpdate',
          template:
            "onTimeUpdate(currentTime,${extParams}){\n// 时间更新时的回调\nconsole.log('onTimeUpdate', currentTime);}",
        },
      ],
    },
    component: {},
  },
};

export default {
  ...PisellDateTimeDisplayMeta,
  snippets,
};
