@will-ui/vue 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/components/btn/Btn.d.ts +4 -7
  2. package/dist/components/btn/Btn.js +1 -0
  3. package/dist/components/btn/Btn.js.map +1 -1
  4. package/dist/components/cascade/Cascade.d.ts +1 -1
  5. package/dist/components/choose/Choose.d.ts +4 -2
  6. package/dist/components/choose2/Choose2.d.ts +1 -1
  7. package/dist/components/confirm/index.d.ts +3 -4
  8. package/dist/components/confirm/index.js.map +1 -1
  9. package/dist/components/copy/Copy.d.ts +8 -8
  10. package/dist/components/copy/Copy.js +3 -2
  11. package/dist/components/copy/Copy.js.map +1 -1
  12. package/dist/components/cornerEars/CornerEars.d.ts +4 -7
  13. package/dist/components/cornerEars/CornerEars.js +1 -0
  14. package/dist/components/cornerEars/CornerEars.js.map +1 -1
  15. package/dist/components/date/DatePanel.d.ts +4 -0
  16. package/dist/components/date/DatePanel.js +2 -2
  17. package/dist/components/date/DatePanel.js.map +1 -1
  18. package/dist/components/date/DatePicker.d.ts +1 -1
  19. package/dist/components/date/DatePicker.js +4 -4
  20. package/dist/components/date/DatePicker.js.map +1 -1
  21. package/dist/components/date/Days.d.ts +2 -4
  22. package/dist/components/date/Days.js +1 -3
  23. package/dist/components/date/Days.js.map +1 -1
  24. package/dist/components/date/Months.d.ts +2 -4
  25. package/dist/components/date/Months.js +1 -3
  26. package/dist/components/date/Months.js.map +1 -1
  27. package/dist/components/date/QuickDate.d.ts +2 -12
  28. package/dist/components/date/QuickDate.js +1 -1
  29. package/dist/components/date/QuickDate.js.map +1 -1
  30. package/dist/components/date/Years.d.ts +3 -6
  31. package/dist/components/date/Years.js +1 -8
  32. package/dist/components/date/Years.js.map +1 -1
  33. package/dist/components/form/_use/formRules.d.ts +1 -1
  34. package/dist/components/form/_use/formRules.js.map +1 -1
  35. package/dist/components/formItem/FormItem.js.map +1 -1
  36. package/dist/components/image/Image.d.ts +5 -7
  37. package/dist/components/image/Image.js +3 -2
  38. package/dist/components/image/Image.js.map +1 -1
  39. package/dist/components/index.js +9 -9
  40. package/dist/components/modal/Modal.d.ts +1 -1
  41. package/dist/components/modal/Modal.js +29 -24
  42. package/dist/components/modal/Modal.js.map +1 -1
  43. package/dist/components/notice/src/_util/index.d.ts +1 -1
  44. package/dist/components/notice/src/_util/index.js.map +1 -1
  45. package/dist/components/number/Number copy.d.ts +1 -1
  46. package/dist/components/number/Number.d.ts +1 -1
  47. package/dist/components/pagination/src/Pagination.d.ts +6 -4
  48. package/dist/components/picture/Picture.d.ts +5 -7
  49. package/dist/components/picture/Picture.js +6 -5
  50. package/dist/components/picture/Picture.js.map +1 -1
  51. package/dist/components/picture/PictureViewport.js +22 -32
  52. package/dist/components/picture/PictureViewport.js.map +1 -1
  53. package/dist/components/progress/Progress.d.ts +1 -1
  54. package/dist/components/scrollbar/Scrollbar.js +61 -78
  55. package/dist/components/scrollbar/Scrollbar.js.map +1 -1
  56. package/dist/components/sheet/Sheet.d.ts +3 -1
  57. package/dist/components/sheet/_cell.js +16 -27
  58. package/dist/components/sheet/_cell.js.map +1 -1
  59. package/dist/components/slider/Slider.d.ts +2 -2
  60. package/dist/components/slider/Slider.js +24 -41
  61. package/dist/components/slider/Slider.js.map +1 -1
  62. package/dist/components/tab/Tab.d.ts +3 -3
  63. package/dist/components/tab/Tab.js +6 -0
  64. package/dist/components/tab/Tab.js.map +1 -1
  65. package/dist/components/textarea/Textarea.d.ts +5 -13
  66. package/dist/components/textarea/Textarea.js +3 -2
  67. package/dist/components/textarea/Textarea.js.map +1 -1
  68. package/dist/components/time/Dial.js.map +1 -1
  69. package/dist/components/time/Dial.vue_vue_type_script_setup_true_lang.js.map +1 -1
  70. package/dist/components/time/TimePicker.d.ts +14 -2
  71. package/dist/components/tree-choose/TreeChoose.d.ts +1 -1
  72. package/dist/components/tree-choose/TreeChoose.js.map +1 -1
  73. package/dist/components/virtual/Virtual.d.ts +5 -5
  74. package/dist/components/virtual/Virtual.js +6 -0
  75. package/dist/components/virtual/Virtual.js.map +1 -1
  76. package/dist/index.d.ts +20 -15
  77. package/dist/index.js +6 -5
  78. package/dist/use/index.d.ts +2 -0
  79. package/dist/use/useChildComponentsCollector.d.ts +5 -0
  80. package/dist/use/useChildComponentsCollector.js.map +1 -1
  81. package/dist/use/usePercentDrag.d.ts +1 -1
  82. package/dist/use/usePercentDrag.js +19 -29
  83. package/dist/use/usePercentDrag.js.map +1 -1
  84. package/dist/use/usePointerDrag.d.ts +50 -0
  85. package/dist/use/usePointerDrag.js +143 -0
  86. package/dist/use/usePointerDrag.js.map +1 -0
  87. package/dist/use/useUII18n.d.ts +10 -0
  88. package/dist/use/useUII18n.js.map +1 -1
  89. package/dist/use/useUpload.js +1 -1
  90. package/dist/use/useUpload.js.map +1 -1
  91. package/package.json +79 -88
  92. package/dist/use/useDrag.d.ts +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","names":["computed","defineComponent","mergeProps","nextTick","reactive","ref","watch","createTextVNode","_createTextVNode","createVNode","_createVNode","Fragment","_Fragment","getRangeDate","useUII18n","useComponentConfig","useFormItem","effectiveSizeVar","effectiveBgVar","effectiveTextVar","mergeStyle","propSizeToCssVars","propColorToCssVars","toCssVarsStyle","Layer","Trigger","DatePanel","QuickDate","useDateText","useDateView","getQuickDateText","isQuickRangeActive","DATE_PICKER_FALLBACK","name","inheritAttrs","props","show","type","Boolean","default","modelValue","Number","Date","String","undefined","start","end","quickKey","max","min","range","hasQuick","clearable","disabled","block","format","adjustPosition","placeholder","startPlaceholder","endPlaceholder","size","color","cssVars","Object","nearby","emits","_v","change","changeQuick","slots","setup","attrs","emit","expose","formItem","useDisabled","cfg","t","value","isRange","visible","datePickerPlaceholder","startDatePlaceholder","endDatePlaceholder","oldDateRange","formatRef","text","textStart","textEnd","quickActive","quickText","rangeDisplayText","slotDisplayText","triggerText","triggerPlaceholder","open","close","toggle","clear","validate","triggerSlotProps","startText","endText","sizeVars","rootStyle","style","layerOptions","immediate","placement","gap","hasArrow","transitionName","layerClass","layerStyle","b","renderTrigger","layerProps","trigger","hide","_style","class","className","restAttrs","triggerOptions","active","onClear","formatIsTime","maybeClose","startOpts","v","onChange","endOpts","opts","isClose","datePanelOpts","res","quickOpts","key","k"],"sources":["../../../components/date/DatePicker.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n mergeProps,\r\n nextTick,\r\n reactive,\r\n ref,\r\n watch,\r\n type PropType,\r\n type SlotsType,\r\n} from 'vue'\r\nimport type { AdjustmentPosition, DateFormatType, DateType } from '../../config/types'\r\nimport type { TQuickKey } from '../../use/useDate'\r\nimport { getRangeDate } from '../../use/useDate'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport useFormItem from '../../use/useFormItem'\r\nimport {\r\n effectiveSizeVar,\r\n effectiveBgVar,\r\n effectiveTextVar,\r\n mergeStyle,\r\n propSizeToCssVars,\r\n propColorToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport Layer from '../layer/index'\r\nimport Trigger from '../trigger/index'\r\nimport DatePanel from './DatePanel'\r\nimport QuickDate from './QuickDate'\r\nimport { useDateText, useDateView } from './_use/useDateModules'\r\nimport { getQuickDateText, isQuickRangeActive } from './_use/quickDate'\r\nimport { DATE_PICKER_FALLBACK } from './config'\r\nimport type {\r\n DatePickerChangeQuickPayload,\r\n DatePickerExpose,\r\n DatePickerTriggerSlotProps,\r\n} from './types'\r\n\r\nexport type { DatePickerGlobalConfig } from './config'\r\nexport { DATE_PICKER_FALLBACK } from './config'\r\nexport type {\r\n DatePickerTriggerSlotProps,\r\n DatePickerChangeQuickPayload,\r\n DatePickerExpose,\r\n TQuickKey,\r\n} from './types'\r\n\r\ntype DatePickerSlots = {\r\n /** 自定义触发器;不传则使用内置 Trigger */\r\n trigger?: (props: DatePickerTriggerSlotProps) => any\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'DatePicker',\r\n inheritAttrs: false,\r\n props: {\r\n show: { type: Boolean, default: false },\r\n modelValue: {\r\n type: [Number, Date, String] as PropType<DateType>,\r\n default: undefined,\r\n },\r\n start: {\r\n type: [Number, Date, String] as PropType<DateType>,\r\n default: undefined,\r\n },\r\n end: {\r\n type: [Number, Date, String] as PropType<DateType>,\r\n default: undefined,\r\n },\r\n quickKey: { type: String as PropType<TQuickKey>, default: undefined },\r\n max: { type: [Number, Date, String] as PropType<DateType>, default: undefined },\r\n min: { type: [Number, Date, String] as PropType<DateType>, default: undefined },\r\n // 以下可全局配置:Boolean / 枚举请 default: undefined\r\n range: { type: Boolean, default: undefined },\r\n hasQuick: { type: Boolean, default: undefined },\r\n clearable: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n block: { type: Boolean, default: undefined },\r\n format: {\r\n type: String as PropType<DateFormatType>,\r\n default: undefined,\r\n },\r\n adjustPosition: {\r\n type: String as PropType<AdjustmentPosition>,\r\n default: undefined,\r\n },\r\n placeholder: { type: String, default: undefined },\r\n startPlaceholder: { type: String, default: undefined },\r\n endPlaceholder: { type: String, default: undefined },\r\n /** 实例尺度(px),写入 `--w-prop-date-picker-size` */\r\n size: { type: Number, default: undefined },\r\n /** 品牌主色 → `--w-prop-date-picker-color` */\r\n color: { type: String, default: undefined },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n nearby: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:show': (_v: boolean) => true,\r\n 'update:modelValue': (_v: DateType) => true,\r\n 'update:start': (_v: DateType) => true,\r\n 'update:end': (_v: DateType) => true,\r\n 'update:quickKey': (_v: TQuickKey | undefined) => true,\r\n change: (_v?: DateType) => true,\r\n changeQuick: (_v: DatePickerChangeQuickPayload) => true,\r\n },\r\n slots: Object as SlotsType<DatePickerSlots>,\r\n setup(props, { attrs, emit, slots, expose }) {\r\n const { formItem, useDisabled } = useFormItem()\r\n const cfg = useComponentConfig('DatePicker', props, DATE_PICKER_FALLBACK)\r\n const { t } = useUII18n()\r\n\r\n const disabled = useDisabled(computed(() => cfg.value.disabled))\r\n const isRange = computed(() => !!cfg.value.range)\r\n const visible = ref(props.show)\r\n\r\n const datePickerPlaceholder = computed(\r\n () => cfg.value.placeholder || t('date.placeholder'),\r\n )\r\n const startDatePlaceholder = computed(\r\n () => cfg.value.startPlaceholder || t('date.startPlaceholder'),\r\n )\r\n const endDatePlaceholder = computed(\r\n () => cfg.value.endPlaceholder || t('date.endPlaceholder'),\r\n )\r\n\r\n /** 面板打开时快照区间,两端都变后自动关闭 */\r\n const oldDateRange = reactive<{\r\n start?: DateType\r\n end?: DateType\r\n }>({\r\n start: undefined,\r\n end: undefined,\r\n })\r\n\r\n const formatRef = computed(() => cfg.value.format as DateFormatType)\r\n const text = useDateText(\r\n formatRef,\r\n computed(() => props.modelValue),\r\n )\r\n const textStart = useDateText(\r\n formatRef,\r\n computed(() => props.start),\r\n )\r\n const textEnd = useDateText(\r\n formatRef,\r\n computed(() => props.end),\r\n )\r\n\r\n const quickActive = computed(() =>\r\n isRange.value\r\n ? isQuickRangeActive(props.quickKey, props.start, props.end)\r\n : false,\r\n )\r\n const quickText = computed(() =>\r\n quickActive.value ? getQuickDateText(props.quickKey, t) : undefined,\r\n )\r\n\r\n /** 插槽/展示用:日期区间文案 */\r\n const rangeDisplayText = computed(() => {\r\n if (isRange.value) {\r\n const start = textStart.value\r\n const end = textEnd.value\r\n if (!start && !end) return undefined\r\n return `${start || startDatePlaceholder.value} ~ ${end || endDatePlaceholder.value}`\r\n }\r\n return text.value as string | undefined\r\n })\r\n\r\n /** 触发器展示:快捷选中有效时用快捷描述,否则用日期文案 */\r\n const slotDisplayText = computed(\r\n () => quickText.value || rangeDisplayText.value,\r\n )\r\n\r\n /** 内置 Trigger 用:快捷选中时显示描述;否则范围模式为 [start, ~, end] */\r\n const triggerText = computed(() => {\r\n if (quickText.value) return quickText.value\r\n if (isRange.value) {\r\n const start = textStart.value\r\n const end = textEnd.value\r\n if (start || end) {\r\n return [\r\n start || startDatePlaceholder.value,\r\n <span>~</span>,\r\n end || endDatePlaceholder.value,\r\n ]\r\n }\r\n return undefined\r\n }\r\n return text.value\r\n })\r\n\r\n const triggerPlaceholder = computed(() =>\r\n isRange.value\r\n ? `${startDatePlaceholder.value}~${endDatePlaceholder.value}`\r\n : datePickerPlaceholder.value,\r\n )\r\n\r\n function open() {\r\n if (!disabled.value) visible.value = true\r\n }\r\n function close() {\r\n visible.value = false\r\n }\r\n function toggle() {\r\n if (disabled.value) return\r\n visible.value = !visible.value\r\n }\r\n\r\n function clear() {\r\n emit('update:start', undefined)\r\n emit('update:end', undefined)\r\n emit('update:modelValue', undefined)\r\n emit('update:quickKey', undefined)\r\n emit('change', undefined)\r\n formItem?.validate('change')\r\n }\r\n\r\n const triggerSlotProps = computed<DatePickerTriggerSlotProps>(() => ({\r\n text: slotDisplayText.value,\r\n startText: textStart.value as string | undefined,\r\n endText: textEnd.value as string | undefined,\r\n quickKey: quickActive.value ? props.quickKey : undefined,\r\n quickText: quickText.value,\r\n placeholder: triggerPlaceholder.value,\r\n startPlaceholder: startDatePlaceholder.value,\r\n endPlaceholder: endDatePlaceholder.value,\r\n visible: visible.value,\r\n disabled: disabled.value,\r\n clearable: cfg.value.clearable,\r\n range: isRange.value,\r\n clear,\r\n open,\r\n close,\r\n toggle,\r\n }))\r\n\r\n const sizeVars = computed(() =>\r\n toCssVarsStyle({\r\n ...propSizeToCssVars('date-picker', props.size),\r\n ...propColorToCssVars('date-picker', props.color),\r\n '--w-prop-trigger-size': effectiveSizeVar('date-picker'),\r\n '--w-prop-trigger-bg-color': effectiveBgVar('date-picker'),\r\n '--w-prop-trigger-text-color': effectiveTextVar('date-picker'),\r\n '--w-prop-layer-bg-color': effectiveBgVar('date-picker'),\r\n '--w-prop-layer-text-color': effectiveTextVar('date-picker'),\r\n ...props.cssVars,\r\n }),\r\n )\r\n const rootStyle = computed(() =>\r\n mergeStyle(sizeVars.value, attrs.style as Record<string, any> | undefined),\r\n )\r\n\r\n const layerOptions = computed(() => ({\r\n adjustPosition: cfg.value.adjustPosition,\r\n immediate: true,\r\n show: visible.value,\r\n nearby: props.nearby,\r\n disabled: disabled.value,\r\n placement: 'bottom-start' as const,\r\n gap: 2,\r\n hasArrow: false,\r\n transitionName: 'w-slide-y',\r\n layerClass: [\r\n 'w-date-picker',\r\n isRange.value ? 'w-date-picker-range' : '',\r\n ],\r\n layerStyle: sizeVars.value,\r\n 'onUpdate:show': (b: boolean) => {\r\n visible.value = b\r\n },\r\n }))\r\n\r\n function renderTrigger(layerProps?: {\r\n toggle: () => void\r\n hide: () => void\r\n show: () => void\r\n visible: boolean\r\n }) {\r\n if (slots.trigger) {\r\n return slots.trigger({\r\n ...triggerSlotProps.value,\r\n visible: layerProps?.visible ?? visible.value,\r\n open: layerProps?.show ?? open,\r\n close: layerProps?.hide ?? close,\r\n toggle: layerProps?.toggle ?? toggle,\r\n })\r\n }\r\n const { style: _style, class: className, ...restAttrs } = attrs as Record<\r\n string,\r\n any\r\n >\r\n const triggerOptions = mergeProps(restAttrs, {\r\n class: className,\r\n placeholder: triggerPlaceholder.value,\r\n disabled: disabled.value,\r\n block: cfg.value.block,\r\n clearable: cfg.value.clearable,\r\n text: triggerText.value,\r\n active: visible.value,\r\n style: rootStyle.value,\r\n onClear: clear,\r\n })\r\n return <Trigger {...triggerOptions} />\r\n }\r\n\r\n const { formatIsTime } = useDateView(formatRef)\r\n\r\n async function maybeClose() {\r\n emit('change')\r\n await nextTick()\r\n if (\r\n !formatIsTime.value &&\r\n props.start !== oldDateRange.start &&\r\n props.end !== oldDateRange.end &&\r\n props.start &&\r\n props.end\r\n ) {\r\n visible.value = false\r\n }\r\n }\r\n\r\n watch(\r\n () => props.show,\r\n (b) => {\r\n visible.value = b\r\n },\r\n )\r\n watch(visible, (b) => {\r\n if (b) {\r\n oldDateRange.start = props.start\r\n oldDateRange.end = props.end\r\n }\r\n emit('update:show', b)\r\n })\r\n\r\n const startOpts = computed(() => ({\r\n placeholder: startDatePlaceholder.value,\r\n modelValue: props.start,\r\n format: formatRef.value,\r\n max: props.max,\r\n 'onUpdate:modelValue': (v: DateType) => {\r\n emit('update:start', v)\r\n },\r\n onChange: maybeClose,\r\n }))\r\n\r\n const endOpts = computed(() => ({\r\n placeholder: endDatePlaceholder.value,\r\n modelValue: props.end,\r\n format: formatRef.value,\r\n min: props.min,\r\n 'onUpdate:modelValue': (v: DateType) => {\r\n emit('update:end', v)\r\n },\r\n onChange: async (opts: { v: string; isClose: boolean }) => {\r\n await nextTick()\r\n if (formatIsTime.value && props.start && props.end && opts.isClose) {\r\n visible.value = false\r\n } else {\r\n maybeClose()\r\n }\r\n },\r\n }))\r\n\r\n const datePanelOpts = computed(() => ({\r\n modelValue: props.modelValue,\r\n format: formatRef.value,\r\n max: props.max,\r\n min: props.min,\r\n 'onUpdate:modelValue': (v: DateType) => {\r\n emit('update:modelValue', v)\r\n },\r\n onChange: (res: { v: string; isClose: boolean }) => {\r\n if (res.isClose) {\r\n visible.value = false\r\n }\r\n },\r\n }))\r\n\r\n const quickOpts = computed(() => ({\r\n quickKey: props.quickKey,\r\n start: props.start as string | undefined,\r\n end: props.end as string | undefined,\r\n onChange: async (v: DatePickerChangeQuickPayload) => {\r\n emit('update:start', v.start)\r\n emit('update:end', v.end)\r\n emit('update:quickKey', v.key)\r\n await nextTick()\r\n emit('changeQuick', v)\r\n visible.value = false\r\n },\r\n }))\r\n\r\n expose({\r\n getRangeDate: (k: TQuickKey) => getRangeDate(k),\r\n } satisfies DatePickerExpose)\r\n\r\n return () => (\r\n <Layer {...layerOptions.value}>\r\n {{\r\n trigger: renderTrigger,\r\n default: () =>\r\n isRange.value ? (\r\n <>\r\n {cfg.value.hasQuick ? <QuickDate {...quickOpts.value} /> : null}\r\n <div class=\"w-date-start-end\">\r\n <div>\r\n <DatePanel {...startOpts.value} />\r\n </div>\r\n <div class=\"w-date-range-gap\" />\r\n <div>\r\n <DatePanel {...endOpts.value} />\r\n </div>\r\n </div>\r\n </>\r\n ) : (\r\n <DatePanel {...datePanelOpts.value} />\r\n ),\r\n }}\r\n </Layer>\r\n )\r\n },\r\n})\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","names":["computed","defineComponent","mergeProps","nextTick","reactive","ref","watch","createTextVNode","_createTextVNode","createVNode","_createVNode","Fragment","_Fragment","getRangeDate","useUII18n","useComponentConfig","useFormItem","effectiveSizeVar","effectiveBgVar","effectiveTextVar","mergeStyle","propSizeToCssVars","propColorToCssVars","toCssVarsStyle","Layer","Trigger","DatePanel","QuickDate","useDateText","useDateView","getQuickDateText","isQuickRangeActive","DATE_PICKER_FALLBACK","name","inheritAttrs","props","show","type","Boolean","default","modelValue","Number","Date","String","undefined","start","end","quickKey","max","min","range","hasQuick","clearable","disabled","block","format","adjustPosition","placeholder","startPlaceholder","endPlaceholder","size","color","cssVars","Object","nearby","emits","_v","change","changeQuick","slots","setup","attrs","emit","expose","formItem","useDisabled","cfg","t","value","isRange","visible","datePickerPlaceholder","startDatePlaceholder","endDatePlaceholder","oldDateRange","formatRef","text","textStart","textEnd","quickActive","quickText","rangeDisplayText","slotDisplayText","triggerText","triggerPlaceholder","open","close","toggle","clear","validate","triggerSlotProps","startText","endText","sizeVars","rootStyle","style","layerOptions","immediate","placement","gap","hasArrow","transitionName","layerClass","layerStyle","b","renderTrigger","layerProps","trigger","hide","_style","class","className","restAttrs","triggerOptions","active","onClear","formatIsTime","maybeClose","startOpts","v","onChange","endOpts","opts","isClose","datePanelOpts","res","quickOpts","key","k"],"sources":["../../../components/date/DatePicker.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n mergeProps,\r\n nextTick,\r\n reactive,\r\n ref,\r\n watch,\r\n type PropType,\r\n type SlotsType,\r\n} from 'vue'\r\nimport type { AdjustmentPosition, DateFormatType, DateType } from '../../config/types'\r\nimport type { TQuickKey } from '../../use/useDate'\r\nimport { getRangeDate } from '../../use/useDate'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport useFormItem from '../../use/useFormItem'\r\nimport {\r\n effectiveSizeVar,\r\n effectiveBgVar,\r\n effectiveTextVar,\r\n mergeStyle,\r\n propSizeToCssVars,\r\n propColorToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport Layer from '../layer/index'\r\nimport Trigger from '../trigger/index'\r\nimport DatePanel from './DatePanel'\r\nimport QuickDate from './QuickDate'\r\nimport { useDateText, useDateView } from './_use/useDateModules'\r\nimport { getQuickDateText, isQuickRangeActive } from './_use/quickDate'\r\nimport { DATE_PICKER_FALLBACK } from './config'\r\nimport type {\r\n DatePickerChangeQuickPayload,\r\n DatePickerExpose,\r\n DatePickerTriggerSlotProps,\r\n} from './types'\r\n\r\nexport type { DatePickerGlobalConfig } from './config'\r\nexport { DATE_PICKER_FALLBACK } from './config'\r\nexport type {\r\n DatePickerTriggerSlotProps,\r\n DatePickerChangeQuickPayload,\r\n DatePickerExpose,\r\n TQuickKey,\r\n} from './types'\r\n\r\ntype DatePickerSlots = {\r\n /** 自定义触发器;不传则使用内置 Trigger */\r\n trigger?: (props: DatePickerTriggerSlotProps) => any\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'DatePicker',\r\n inheritAttrs: false,\r\n props: {\r\n show: { type: Boolean, default: false },\r\n modelValue: {\r\n type: [Number, Date, String] as PropType<DateType>,\r\n default: undefined,\r\n },\r\n start: {\r\n type: [Number, Date, String] as PropType<DateType>,\r\n default: undefined,\r\n },\r\n end: {\r\n type: [Number, Date, String] as PropType<DateType>,\r\n default: undefined,\r\n },\r\n quickKey: { type: String as PropType<TQuickKey>, default: undefined },\r\n max: { type: [Number, Date, String] as PropType<DateType>, default: undefined },\r\n min: { type: [Number, Date, String] as PropType<DateType>, default: undefined },\r\n // 以下可全局配置:Boolean / 枚举请 default: undefined\r\n range: { type: Boolean, default: undefined },\r\n hasQuick: { type: Boolean, default: undefined },\r\n clearable: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n block: { type: Boolean, default: undefined },\r\n format: {\r\n type: String as PropType<DateFormatType>,\r\n default: undefined,\r\n },\r\n adjustPosition: {\r\n type: String as PropType<AdjustmentPosition>,\r\n default: undefined,\r\n },\r\n placeholder: { type: String, default: undefined },\r\n startPlaceholder: { type: String, default: undefined },\r\n endPlaceholder: { type: String, default: undefined },\r\n /** 实例尺度(px),写入 `--w-prop-date-picker-size` */\r\n size: { type: Number, default: undefined },\r\n /** 品牌主色 → `--w-prop-date-picker-color` */\r\n color: { type: String, default: undefined },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n nearby: { type: Boolean, default: false },\r\n },\r\n emits: {\r\n 'update:show': (_v: boolean) => true,\r\n 'update:modelValue': (_v: DateType) => true,\r\n 'update:start': (_v: DateType) => true,\r\n 'update:end': (_v: DateType) => true,\r\n 'update:quickKey': (_v: TQuickKey | undefined) => true,\r\n change: (_v?: DateType) => true,\r\n changeQuick: (_v: DatePickerChangeQuickPayload) => true,\r\n },\r\n slots: Object as SlotsType<DatePickerSlots>,\r\n setup(props, { attrs, emit, slots, expose }) {\r\n const { formItem, useDisabled } = useFormItem()\r\n const cfg = useComponentConfig('DatePicker', props, DATE_PICKER_FALLBACK)\r\n const { t } = useUII18n()\r\n\r\n const disabled = useDisabled(computed(() => cfg.value.disabled))\r\n const isRange = computed(() => !!cfg.value.range)\r\n const visible = ref(props.show)\r\n\r\n const datePickerPlaceholder = computed(\r\n () => cfg.value.placeholder || t('date.placeholder'),\r\n )\r\n const startDatePlaceholder = computed(\r\n () => cfg.value.startPlaceholder || t('date.startPlaceholder'),\r\n )\r\n const endDatePlaceholder = computed(\r\n () => cfg.value.endPlaceholder || t('date.endPlaceholder'),\r\n )\r\n\r\n /** 面板打开时快照区间,两端都变后自动关闭 */\r\n const oldDateRange = reactive<{\r\n start?: DateType\r\n end?: DateType\r\n }>({\r\n start: undefined,\r\n end: undefined,\r\n })\r\n\r\n const formatRef = computed(() => cfg.value.format as DateFormatType)\r\n const text = useDateText(\r\n formatRef,\r\n computed(() => props.modelValue),\r\n )\r\n const textStart = useDateText(\r\n formatRef,\r\n computed(() => props.start),\r\n )\r\n const textEnd = useDateText(\r\n formatRef,\r\n computed(() => props.end),\r\n )\r\n\r\n const quickActive = computed(() =>\r\n isRange.value\r\n ? isQuickRangeActive(props.quickKey, props.start, props.end)\r\n : false,\r\n )\r\n const quickText = computed(() =>\r\n quickActive.value ? getQuickDateText(props.quickKey, t) : undefined,\r\n )\r\n\r\n /** 插槽/展示用:日期区间文案 */\r\n const rangeDisplayText = computed(() => {\r\n if (isRange.value) {\r\n const start = textStart.value\r\n const end = textEnd.value\r\n if (!start && !end) return undefined\r\n return `${start || startDatePlaceholder.value} ~ ${end || endDatePlaceholder.value}`\r\n }\r\n return text.value as string | undefined\r\n })\r\n\r\n /** 触发器展示:快捷选中有效时用快捷描述,否则用日期文案 */\r\n const slotDisplayText = computed(\r\n () => quickText.value || rangeDisplayText.value,\r\n )\r\n\r\n /** 内置 Trigger 用:快捷选中时显示描述;否则范围模式为 [start, ~, end] */\r\n const triggerText = computed(() => {\r\n if (quickText.value) return quickText.value\r\n if (isRange.value) {\r\n const start = textStart.value\r\n const end = textEnd.value\r\n if (start || end) {\r\n return [\r\n start || startDatePlaceholder.value,\r\n <span>~</span>,\r\n end || endDatePlaceholder.value,\r\n ]\r\n }\r\n return undefined\r\n }\r\n return text.value\r\n })\r\n\r\n const triggerPlaceholder = computed(() =>\r\n isRange.value\r\n ? `${startDatePlaceholder.value}~${endDatePlaceholder.value}`\r\n : datePickerPlaceholder.value,\r\n )\r\n\r\n function open() {\r\n if (!disabled.value) visible.value = true\r\n }\r\n function close() {\r\n visible.value = false\r\n }\r\n function toggle() {\r\n if (disabled.value) return\r\n visible.value = !visible.value\r\n }\r\n\r\n function clear() {\r\n emit('update:start', undefined)\r\n emit('update:end', undefined)\r\n emit('update:modelValue', undefined)\r\n emit('update:quickKey', undefined)\r\n emit('change', undefined)\r\n formItem?.validate('change')\r\n }\r\n\r\n const triggerSlotProps = computed<DatePickerTriggerSlotProps>(() => ({\r\n text: slotDisplayText.value,\r\n startText: textStart.value as string | undefined,\r\n endText: textEnd.value as string | undefined,\r\n quickKey: quickActive.value ? props.quickKey : undefined,\r\n quickText: quickText.value,\r\n placeholder: triggerPlaceholder.value,\r\n startPlaceholder: startDatePlaceholder.value,\r\n endPlaceholder: endDatePlaceholder.value,\r\n visible: visible.value,\r\n disabled: disabled.value,\r\n clearable: cfg.value.clearable,\r\n range: isRange.value,\r\n clear,\r\n open,\r\n close,\r\n toggle,\r\n }))\r\n\r\n const sizeVars = computed(() =>\r\n toCssVarsStyle({\r\n ...propSizeToCssVars('date-picker', props.size),\r\n ...propColorToCssVars('date-picker', props.color),\r\n '--w-prop-trigger-size': effectiveSizeVar('date-picker'),\r\n '--w-prop-trigger-bg-color': effectiveBgVar('date-picker'),\r\n '--w-prop-trigger-text-color': effectiveTextVar('date-picker'),\r\n '--w-prop-layer-bg-color': effectiveBgVar('date-picker'),\r\n '--w-prop-layer-text-color': effectiveTextVar('date-picker'),\r\n ...props.cssVars,\r\n }),\r\n )\r\n const rootStyle = computed(() =>\r\n mergeStyle(sizeVars.value, attrs.style as Record<string, any> | undefined),\r\n )\r\n\r\n const layerOptions = computed(() => ({\r\n adjustPosition: cfg.value.adjustPosition,\r\n immediate: true,\r\n show: visible.value,\r\n nearby: props.nearby,\r\n disabled: disabled.value,\r\n placement: 'bottom-start' as const,\r\n gap: 2,\r\n hasArrow: false,\r\n transitionName: 'w-slide-y',\r\n layerClass: [\r\n 'w-date-picker',\r\n isRange.value ? 'w-date-picker-range' : '',\r\n ],\r\n layerStyle: sizeVars.value,\r\n 'onUpdate:show': (b: boolean) => {\r\n visible.value = b\r\n },\r\n }))\r\n\r\n function renderTrigger(layerProps?: {\r\n toggle: () => void\r\n hide: () => void\r\n show: () => void\r\n visible: boolean\r\n }) {\r\n if (slots.trigger) {\r\n return slots.trigger({\r\n ...triggerSlotProps.value,\r\n visible: layerProps?.visible ?? visible.value,\r\n open: layerProps?.show ?? open,\r\n close: layerProps?.hide ?? close,\r\n toggle: layerProps?.toggle ?? toggle,\r\n })\r\n }\r\n const { style: _style, class: className, ...restAttrs } = attrs as Record<\r\n string,\r\n any\r\n >\r\n const triggerOptions = mergeProps(restAttrs, {\r\n class: className,\r\n placeholder: triggerPlaceholder.value,\r\n disabled: disabled.value,\r\n block: cfg.value.block,\r\n clearable: cfg.value.clearable,\r\n text: triggerText.value,\r\n active: visible.value,\r\n style: rootStyle.value,\r\n onClear: clear,\r\n })\r\n return <Trigger {...triggerOptions} />\r\n }\r\n\r\n const { formatIsTime } = useDateView(formatRef)\r\n\r\n async function maybeClose() {\r\n emit('change')\r\n await nextTick()\r\n if (\r\n !formatIsTime.value &&\r\n props.start !== oldDateRange.start &&\r\n props.end !== oldDateRange.end &&\r\n props.start &&\r\n props.end\r\n ) {\r\n visible.value = false\r\n }\r\n }\r\n\r\n watch(\r\n () => props.show,\r\n (b) => {\r\n visible.value = b\r\n },\r\n )\r\n watch(visible, (b) => {\r\n if (b) {\r\n oldDateRange.start = props.start\r\n oldDateRange.end = props.end\r\n }\r\n emit('update:show', b)\r\n })\r\n\r\n const startOpts = computed(() => ({\r\n placeholder: startDatePlaceholder.value,\r\n modelValue: props.start,\r\n format: formatRef.value,\r\n max: props.max,\r\n 'onUpdate:modelValue': (v: DateType) => {\r\n emit('update:start', v)\r\n },\r\n onChange: maybeClose,\r\n }))\r\n\r\n const endOpts = computed(() => ({\r\n placeholder: endDatePlaceholder.value,\r\n modelValue: props.end,\r\n format: formatRef.value,\r\n min: props.min,\r\n 'onUpdate:modelValue': (v: DateType) => {\r\n emit('update:end', v)\r\n },\r\n onChange: async (opts: { v: string; isClose: boolean }) => {\r\n await nextTick()\r\n if (formatIsTime.value && props.start && props.end && opts.isClose) {\r\n visible.value = false\r\n } else {\r\n maybeClose()\r\n }\r\n },\r\n }))\r\n\r\n const datePanelOpts = computed(() => ({\r\n modelValue: props.modelValue,\r\n format: formatRef.value,\r\n max: props.max,\r\n min: props.min,\r\n 'onUpdate:modelValue': (v: DateType) => {\r\n emit('update:modelValue', v)\r\n },\r\n onChange: (res: { v: string; isClose: boolean }) => {\r\n if (res.isClose) {\r\n visible.value = false\r\n }\r\n },\r\n }))\r\n\r\n const quickOpts = computed(() => ({\r\n quickKey: props.quickKey,\r\n start: props.start as string | undefined,\r\n end: props.end as string | undefined,\r\n onChange: async (v: DatePickerChangeQuickPayload) => {\r\n emit('update:start', v.start)\r\n emit('update:end', v.end)\r\n emit('update:quickKey', v.key)\r\n await nextTick()\r\n emit('changeQuick', v)\r\n visible.value = false\r\n },\r\n }))\r\n\r\n expose({\r\n getRangeDate: (k: TQuickKey) => getRangeDate(k),\r\n } satisfies DatePickerExpose)\r\n\r\n return () => (\r\n <Layer {...layerOptions.value}>\r\n {{\r\n trigger: renderTrigger,\r\n default: () =>\r\n isRange.value ? (\r\n <>\r\n {cfg.value.hasQuick ? <QuickDate {...quickOpts.value} /> : null}\r\n <div class=\"w-date-start-end\">\r\n <div>\r\n <DatePanel {...startOpts.value} />\r\n </div>\r\n <div class=\"w-date-range-gap\" />\r\n <div>\r\n <DatePanel {...endOpts.value} />\r\n </div>\r\n </div>\r\n </>\r\n ) : (\r\n <DatePanel {...datePanelOpts.value} />\r\n ),\r\n }}\r\n </Layer>\r\n )\r\n },\r\n})\r\n"],"mappings":"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"}
@@ -17,9 +17,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
17
17
  min: {
18
18
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
19
19
  };
20
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
21
- "toggle-day": (stringDate: string, date: Date) => true;
22
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
20
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "toggle-day"[], "toggle-day", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
23
21
  date: {
24
22
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
25
23
  };
@@ -37,7 +35,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
37
35
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
38
36
  };
39
37
  }>> & Readonly<{
40
- "onToggle-day"?: (stringDate: string, date: Date) => any;
38
+ "onToggle-day"?: (...args: any[]) => any;
41
39
  }>, {
42
40
  format: DateFormatType;
43
41
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -30,9 +30,7 @@ var Days_default = /* @__PURE__ */ defineComponent({
30
30
  String
31
31
  ] }
32
32
  },
33
- emits: { "toggle-day": (stringDate, date) => {
34
- return true;
35
- } },
33
+ emits: ["toggle-day"],
36
34
  setup(props, { slots, emit }) {
37
35
  const { day, dayMap, format, getDaysInPanel, isSameDay, isToday, isMinDayThanDate, isMaxDayThanDate } = useDate(computed(() => props.displayDate), computed(() => props.format));
38
36
  const { t } = useUII18n();
@@ -1 +1 @@
1
- {"version":3,"file":"Days.js","names":["onMounted","createVNode","_createVNode","defineComponent","computed","useDate","useUII18n","name","props","date","type","Number","Date","String","displayDate","format","default","max","min","emits","toggle-day","stringDate","setup","slots","emit","day","dayMap","getDaysInPanel","isSameDay","isToday","isMinDayThanDate","isMaxDayThanDate","t","compareDate","d","isMin","isMax","renderDayItem","days","isCurrentMonth","map","y","m","itemDate","isDisabled","_isToday","_isSelected","undefined","dOptions","title","class","onClick","e","ymd","renderDaysList","prev","cur","next","renderWeekTitleList","k","v","push"],"sources":["../../../components/date/Days.tsx"],"sourcesContent":["import { getCurrentInstance, onMounted, type VNode } from \"vue\"\r\nimport { defineComponent, computed, watch } from \"vue\"\r\nimport type { PropType } from \"vue\"\r\nimport type { DateFormatType } from \"../../config/types\"\r\nimport useDate from \"../../use/useDate\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\n\r\nexport default defineComponent({\r\n name: \"Days\",\r\n props: {\r\n //传入的日期(选择的日期),可以是具体的某一天,也可以是年月,如:new Date('2022','3')\r\n date: { type: [Number, Date, String] },\r\n //displayDate是展示的日期\r\n displayDate: { type: [Number, Date, String] },\r\n format: {\r\n type: String as PropType<DateFormatType>,\r\n default: \"yyyy-MM-dd\",\r\n // required: true\r\n },\r\n max: { type: [Number, Date, String] },\r\n min: { type: [Number, Date, String] },\r\n },\r\n emits: {\r\n \"toggle-day\": (stringDate: string, date: Date) => {\r\n return true\r\n },\r\n },\r\n setup(props, { slots, emit }) {\r\n const {\r\n day,\r\n dayMap,\r\n format,\r\n getDaysInPanel,\r\n isSameDay,\r\n isToday,\r\n isMinDayThanDate,\r\n isMaxDayThanDate,\r\n } = useDate(\r\n computed(() => props.displayDate),\r\n computed(() => props.format)\r\n )\r\n const { t } = useUII18n()\r\n\r\n function compareDate(d: Date) {\r\n const min = props.min,\r\n max = props.max\r\n if (min || max) {\r\n let isMin = false,\r\n isMax = false\r\n if (min) {\r\n isMin = isMinDayThanDate(d, min)\r\n }\r\n if (max) {\r\n isMax = isMaxDayThanDate(d, max)\r\n }\r\n return isMin || isMax\r\n }\r\n return false\r\n }\r\n\r\n function renderDayItem(days: number[][], isCurrentMonth: boolean = false) {\r\n return days.map(([y, m, d]) => {\r\n const itemDate = new Date(y, m - 1, d)\r\n const isDisabled = compareDate(itemDate)\r\n //注意,js里的月份是从0开始的,所以new Date()里的月份要减1\r\n const _isToday = isToday(itemDate)\r\n const _isSelected =\r\n isSameDay(itemDate, props.date) && props.date !== undefined\r\n const dOptions = {\r\n title: `${_isToday ? t(\"date.today\") : \"\"}${y}-${m}-${d}`,\r\n class: [\r\n \"w-date-item\",\r\n \"w-date-item-day\",\r\n \"w-date-item-circle\",\r\n {\r\n \"w-date-item-not-current\": !isCurrentMonth,\r\n \"w-date-item-today\": _isToday,\r\n \"w-date-item-selected\": _isSelected,\r\n \"w-date-item-disabled\": isDisabled,\r\n },\r\n ],\r\n onClick: (e: MouseEvent) => {\r\n if (isDisabled) {\r\n return\r\n }\r\n //注意:ymd只包括年月日\r\n const ymd = format(itemDate, \"yyyy-MM-dd\")\r\n emit(\"toggle-day\", ymd, itemDate)\r\n },\r\n }\r\n return (\r\n <div {...dOptions}>\r\n {_isToday\r\n ? [<span>{d}</span>, <span class=\"w-date-item-today-cur\"></span>]\r\n : d}\r\n </div>\r\n )\r\n })\r\n }\r\n\r\n function renderDaysList() {\r\n const { prev, cur, next } = getDaysInPanel()\r\n return [\r\n renderDayItem(prev),\r\n renderDayItem(cur, true),\r\n renderDayItem(next),\r\n ]\r\n }\r\n\r\n function renderWeekTitleList() {\r\n const days: VNode[] = []\r\n for (const [k, v] of dayMap) {\r\n days.push(<b class={[\"w-date-item\"]}>{v}</b>)\r\n }\r\n return days\r\n }\r\n\r\n onMounted(() => {\r\n // console.log(getCurrentInstance())\r\n })\r\n return () => {\r\n return <div class={\"w-days\"}>{renderDaysList()}</div>\r\n }\r\n },\r\n})\r\n"],"mappings":";;;;AAOA,IAAA,eAAeG,gCAAgB;CAC7BI,MAAM;CACNC,OAAO;EAELC,MAAM,EAAEC,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAErCC,aAAa,EAAEJ,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAC5CE,QAAQ;GACNL,MAAMG;GACNG,SAAS;EAEX;EACAC,KAAK,EAAEP,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EACpCK,KAAK,EAAER,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;CACtC;CACAM,OAAO,EACL,eAAeE,YAAoBZ,SAAe;EAChD,OAAO;CACT,EACF;CACAa,MAAMd,OAAO,EAAEe,OAAOC,QAAQ;EAC5B,MAAM,EACJC,KACAC,QACAX,QACAY,gBACAC,WACAC,SACAC,kBACAC,qBACE1B,QACFD,eAAeI,MAAMM,WAAW,GAChCV,eAAeI,MAAMO,MAAM,CAC7B;EACA,MAAM,EAAEiB,MAAM1B,UAAU;EAExB,SAAS2B,YAAYC,GAAS;GAC5B,MAAMhB,MAAMV,MAAMU,KAChBD,MAAMT,MAAMS;GACd,IAAIC,OAAOD,KAAK;IACd,IAAIkB,QAAQ,OACVC,QAAQ;IACV,IAAIlB,KACFiB,QAAQL,iBAAiBI,GAAGhB,GAAG;IAEjC,IAAID,KACFmB,QAAQL,iBAAiBG,GAAGjB,GAAG;IAEjC,OAAOkB,SAASC;GAClB;GACA,OAAO;EACT;EAEA,SAASC,cAAcC,MAAkBC,iBAA0B,OAAO;GACxE,OAAOD,KAAKE,KAAK,CAACC,GAAGC,GAAGR,OAAO;IAC7B,MAAMS,WAAW,IAAI/B,KAAK6B,GAAGC,IAAI,GAAGR,CAAC;IACrC,MAAMU,aAAaX,YAAYU,QAAQ;IAEvC,MAAME,WAAWhB,QAAQc,QAAQ;IACjC,MAAMG,cACJlB,UAAUe,UAAUnC,MAAMC,IAAI,KAAKD,MAAMC,SAASsC,KAAAA;IACpD,MAAMC,WAAW;KACfC,OAAO,GAAGJ,WAAWb,EAAE,YAAY,IAAI,KAAKS,EAAC,GAAIC,EAAC,GAAIR;KACtDgB,OAAO;MACL;MACA;MACA;MACA;OACE,2BAA2B,CAACX;OAC5B,qBAAqBM;OACrB,wBAAwBC;OACxB,wBAAwBF;MAC1B;KAAC;KAEHO,UAAUC,MAAkB;MAC1B,IAAIR,YACF;MAIFpB,KAAK,cADOT,OAAO4B,UAAU,YACVU,GAAKV,QAAQ;KAClC;IACF;IACA,OAAAzC,YAAA,OACW8C,UAAQ,CACdH,WACG,CAAA3C,YAAA,QAAA,MAAA,CAAQgC,CAAC,CAAA,GAAAhC,YAAA,QAAA,EAAA,SAAA,wBAAA,GAAA,IAAA,CAAA,IACTgC,CAAC,CAAA;GAGX,CAAC;EACH;EAEA,SAASoB,iBAAiB;GACxB,MAAM,EAAEC,MAAMC,KAAKC,SAAS9B,eAAe;GAC3C,OAAO;IACLU,cAAckB,IAAI;IAClBlB,cAAcmB,KAAK,IAAI;IACvBnB,cAAcoB,IAAI;GAAC;EAEvB;EAUAzD,gBAAgB,CACd,CACD;EACD,aAAa;GACX,OAAAE,YAAA,OAAA,EAAA,SAAmB,SAAQ,GAAA,CAAGoD,eAAe,CAAC,CAAA;EAChD;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"Days.js","names":["onMounted","createVNode","_createVNode","defineComponent","computed","useDate","useUII18n","name","props","date","type","Number","Date","String","displayDate","format","default","max","min","emits","setup","slots","emit","day","dayMap","getDaysInPanel","isSameDay","isToday","isMinDayThanDate","isMaxDayThanDate","t","compareDate","d","isMin","isMax","renderDayItem","days","isCurrentMonth","map","y","m","itemDate","isDisabled","_isToday","_isSelected","undefined","dOptions","title","class","onClick","e","ymd","renderDaysList","prev","cur","next","renderWeekTitleList","k","v","value","push"],"sources":["../../../components/date/Days.tsx"],"sourcesContent":["import { getCurrentInstance, onMounted, type VNode } from \"vue\"\r\nimport { defineComponent, computed, watch } from \"vue\"\r\nimport type { PropType } from \"vue\"\r\nimport type { DateFormatType } from \"../../config/types\"\r\nimport useDate from \"../../use/useDate\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\n\r\nexport default defineComponent({\r\n name: \"Days\",\r\n props: {\r\n //传入的日期(选择的日期),可以是具体的某一天,也可以是年月,如:new Date('2022','3')\r\n date: { type: [Number, Date, String] },\r\n //displayDate是展示的日期\r\n displayDate: { type: [Number, Date, String] },\r\n format: {\r\n type: String as PropType<DateFormatType>,\r\n default: \"yyyy-MM-dd\",\r\n // required: true\r\n },\r\n max: { type: [Number, Date, String] },\r\n min: { type: [Number, Date, String] },\r\n },\r\n emits: ['toggle-day'],\r\n setup(props, { slots, emit }) {\r\n const {\r\n day,\r\n dayMap,\r\n format,\r\n getDaysInPanel,\r\n isSameDay,\r\n isToday,\r\n isMinDayThanDate,\r\n isMaxDayThanDate,\r\n } = useDate(\r\n computed(() => props.displayDate),\r\n computed(() => props.format)\r\n )\r\n const { t } = useUII18n()\r\n\r\n function compareDate(d: Date) {\r\n const min = props.min,\r\n max = props.max\r\n if (min || max) {\r\n let isMin = false,\r\n isMax = false\r\n if (min) {\r\n isMin = isMinDayThanDate(d, min)\r\n }\r\n if (max) {\r\n isMax = isMaxDayThanDate(d, max)\r\n }\r\n return isMin || isMax\r\n }\r\n return false\r\n }\r\n\r\n function renderDayItem(days: number[][], isCurrentMonth: boolean = false) {\r\n return days.map(([y, m, d]) => {\r\n const itemDate = new Date(y, m - 1, d)\r\n const isDisabled = compareDate(itemDate)\r\n //注意,js里的月份是从0开始的,所以new Date()里的月份要减1\r\n const _isToday = isToday(itemDate)\r\n const _isSelected =\r\n isSameDay(itemDate, props.date) && props.date !== undefined\r\n const dOptions = {\r\n title: `${_isToday ? t(\"date.today\") : \"\"}${y}-${m}-${d}`,\r\n class: [\r\n \"w-date-item\",\r\n \"w-date-item-day\",\r\n \"w-date-item-circle\",\r\n {\r\n \"w-date-item-not-current\": !isCurrentMonth,\r\n \"w-date-item-today\": _isToday,\r\n \"w-date-item-selected\": _isSelected,\r\n \"w-date-item-disabled\": isDisabled,\r\n },\r\n ],\r\n onClick: (e: MouseEvent) => {\r\n if (isDisabled) {\r\n return\r\n }\r\n //注意:ymd只包括年月日\r\n const ymd = format(itemDate, \"yyyy-MM-dd\")\r\n emit(\"toggle-day\", ymd, itemDate)\r\n },\r\n }\r\n return (\r\n <div {...dOptions}>\r\n {_isToday\r\n ? [<span>{d}</span>, <span class=\"w-date-item-today-cur\"></span>]\r\n : d}\r\n </div>\r\n )\r\n })\r\n }\r\n\r\n function renderDaysList() {\r\n const { prev, cur, next } = getDaysInPanel()\r\n return [\r\n renderDayItem(prev),\r\n renderDayItem(cur, true),\r\n renderDayItem(next),\r\n ]\r\n }\r\n\r\n function renderWeekTitleList() {\r\n const days: VNode[] = []\r\n for (const [k, v] of dayMap.value) {\r\n days.push(<b class={[\"w-date-item\"]}>{v}</b>)\r\n }\r\n return days\r\n }\r\n\r\n onMounted(() => {\r\n // console.log(getCurrentInstance())\r\n })\r\n return () => {\r\n return <div class={\"w-days\"}>{renderDaysList()}</div>\r\n }\r\n },\r\n})\r\n"],"mappings":";;;;AAOA,IAAA,eAAeG,gCAAgB;CAC7BI,MAAM;CACNC,OAAO;EAELC,MAAM,EAAEC,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAErCC,aAAa,EAAEJ,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAC5CE,QAAQ;GACNL,MAAMG;GACNG,SAAS;EAEX;EACAC,KAAK,EAAEP,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EACpCK,KAAK,EAAER,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;CACtC;CACAM,OAAO,CAAC,YAAY;CACpBC,MAAMZ,OAAO,EAAEa,OAAOC,QAAQ;EAC5B,MAAM,EACJC,KACAC,QACAT,QACAU,gBACAC,WACAC,SACAC,kBACAC,qBACExB,QACFD,eAAeI,MAAMM,WAAW,GAChCV,eAAeI,MAAMO,MAAM,CAC7B;EACA,MAAM,EAAEe,MAAMxB,UAAU;EAExB,SAASyB,YAAYC,GAAS;GAC5B,MAAMd,MAAMV,MAAMU,KAChBD,MAAMT,MAAMS;GACd,IAAIC,OAAOD,KAAK;IACd,IAAIgB,QAAQ,OACVC,QAAQ;IACV,IAAIhB,KACFe,QAAQL,iBAAiBI,GAAGd,GAAG;IAEjC,IAAID,KACFiB,QAAQL,iBAAiBG,GAAGf,GAAG;IAEjC,OAAOgB,SAASC;GAClB;GACA,OAAO;EACT;EAEA,SAASC,cAAcC,MAAkBC,iBAA0B,OAAO;GACxE,OAAOD,KAAKE,KAAK,CAACC,GAAGC,GAAGR,OAAO;IAC7B,MAAMS,WAAW,IAAI7B,KAAK2B,GAAGC,IAAI,GAAGR,CAAC;IACrC,MAAMU,aAAaX,YAAYU,QAAQ;IAEvC,MAAME,WAAWhB,QAAQc,QAAQ;IACjC,MAAMG,cACJlB,UAAUe,UAAUjC,MAAMC,IAAI,KAAKD,MAAMC,SAASoC,KAAAA;IACpD,MAAMC,WAAW;KACfC,OAAO,GAAGJ,WAAWb,EAAE,YAAY,IAAI,KAAKS,EAAC,GAAIC,EAAC,GAAIR;KACtDgB,OAAO;MACL;MACA;MACA;MACA;OACE,2BAA2B,CAACX;OAC5B,qBAAqBM;OACrB,wBAAwBC;OACxB,wBAAwBF;MAC1B;KAAC;KAEHO,UAAUC,MAAkB;MAC1B,IAAIR,YACF;MAIFpB,KAAK,cADOP,OAAO0B,UAAU,YACVU,GAAKV,QAAQ;KAClC;IACF;IACA,OAAAvC,YAAA,OACW4C,UAAQ,CACdH,WACG,CAAAzC,YAAA,QAAA,MAAA,CAAQ8B,CAAC,CAAA,GAAA9B,YAAA,QAAA,EAAA,SAAA,wBAAA,GAAA,IAAA,CAAA,IACT8B,CAAC,CAAA;GAGX,CAAC;EACH;EAEA,SAASoB,iBAAiB;GACxB,MAAM,EAAEC,MAAMC,KAAKC,SAAS9B,eAAe;GAC3C,OAAO;IACLU,cAAckB,IAAI;IAClBlB,cAAcmB,KAAK,IAAI;IACvBnB,cAAcoB,IAAI;GAAC;EAEvB;EAUAvD,gBAAgB,CACd,CACD;EACD,aAAa;GACX,OAAAE,YAAA,OAAA,EAAA,SAAmB,SAAQ,GAAA,CAAGkD,eAAe,CAAC,CAAA;EAChD;CACF;AACF,CAAC"}
@@ -11,9 +11,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
11
11
  min: {
12
12
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
13
13
  };
14
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
- "toggle-month": (yearMonth: Date) => boolean;
16
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
14
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "toggle-month"[], "toggle-month", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
17
15
  date: {
18
16
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
19
17
  };
@@ -27,6 +25,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
27
25
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
28
26
  };
29
27
  }>> & Readonly<{
30
- "onToggle-month"?: (yearMonth: Date) => any;
28
+ "onToggle-month"?: (...args: any[]) => any;
31
29
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
32
30
  export default _default;
@@ -40,9 +40,7 @@ var Months_default = /* @__PURE__ */ defineComponent({
40
40
  String
41
41
  ] }
42
42
  },
43
- emits: { "toggle-month": (yearMonth) => {
44
- return yearMonth instanceof Date;
45
- } },
43
+ emits: ["toggle-month"],
46
44
  setup(props, { emit, slots }) {
47
45
  const { isSameMonth, year, isMinMonthThanDate, isMaxMonthThanDate } = useDate(computed(() => props.displayDate));
48
46
  const { t } = useUII18n();
@@ -1 +1 @@
1
- {"version":3,"file":"Months.js","names":["defineComponent","computed","readonly","createVNode","_createVNode","useDate","useUII18n","getMonthMap","t","Map","name","props","date","type","Date","String","Number","displayDate","max","min","emits","yearMonth","setup","emit","slots","isSameMonth","year","isMinMonthThanDate","isMaxMonthThanDate","monthMap","compareDate","d","isMin","isMax","renderMonthList","ms","k","v","isSelected","value","isCur","isDisabled","p","class","onClick","push"],"sources":["../../../components/date/Months.tsx"],"sourcesContent":["import type { VNode, PropType } from \"vue\"\r\nimport type { DateType } from \"../../config/types\"\r\nimport { defineComponent, computed, readonly } from \"vue\"\r\nimport useDate from \"../../use/useDate\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\n\r\nconst getMonthMap = (t: Function) =>\r\n readonly(\r\n new Map([\r\n [1, t(\"date.months.jan\")],\r\n [2, t(\"date.months.feb\")],\r\n [3, t(\"date.months.mar\")],\r\n [4, t(\"date.months.apr\")],\r\n [5, t(\"date.months.may\")],\r\n [6, t(\"date.months.jun\")],\r\n [7, t(\"date.months.jul\")],\r\n [8, t(\"date.months.aug\")],\r\n [9, t(\"date.months.sep\")],\r\n [10, t(\"date.months.oct\")],\r\n [11, t(\"date.months.nov\")],\r\n [12, t(\"date.months.dec\")],\r\n ])\r\n )\r\n\r\n// interface Props {\r\n// date: DateType\r\n// displayDate: DateType\r\n// }\r\n\r\n// type Emit = {\r\n// 'toggle-month': (yearMonth: Date) => void\r\n// }\r\n\r\n// const Months: FunctionalComponent<Props, Emit> = (props, ctx) => {\r\n// const { emit } = ctx\r\n// const { isSameMonth, year } = useDate(computed(() => props.displayDate))\r\n// return (() => {\r\n// let ms: VNode[] = []\r\n// for (const [k, v] of monthMap) {\r\n// const isSelected =\r\n// props.date && isSameMonth(props.date, new Date(year.value, k - 1))\r\n// const isCur = isSameMonth(new Date(), new Date(year.value, k - 1))\r\n// const p = {\r\n// class: [\r\n// 'w-months-item',\r\n// {\r\n// 'w-months-item-selected': isSelected,\r\n// 'w-months-item-current': isCur\r\n// }\r\n// ],\r\n// onClick: () => {\r\n// emit('toggle-month', new Date(year.value, k - 1))\r\n// }\r\n// }\r\n// ms.push(\r\n// <div {...p}>{isCur ? [<span>{v}</span>, <span>本月</span>] : v}</div>\r\n// )\r\n// }\r\n// return <div class=\"w-months\">{ms}</div>\r\n// })()\r\n// }\r\n// Months.emits = ['toggle-month']\r\n// export default Months\r\nexport default defineComponent({\r\n name: \"Months\",\r\n props: {\r\n //传入的当前日期\r\n date: { type: [Date, String, Number] },\r\n //displayDate是展示的日期\r\n displayDate: { type: [Date, String, Number] },\r\n max: { type: [Number, Date, String] },\r\n min: { type: [Number, Date, String] },\r\n },\r\n emits: {\r\n \"toggle-month\": (yearMonth: Date) => {\r\n return yearMonth instanceof Date\r\n },\r\n },\r\n setup(props, { emit, slots }) {\r\n const { isSameMonth, year, isMinMonthThanDate, isMaxMonthThanDate } =\r\n useDate(computed(() => props.displayDate))\r\n const { t } = useUII18n()\r\n const monthMap = getMonthMap(t)\r\n function compareDate(d: Date) {\r\n const min = props.min,\r\n max = props.max\r\n if (min || max) {\r\n let isMin = false,\r\n isMax = false\r\n if (min) {\r\n isMin = isMinMonthThanDate(d, min)\r\n }\r\n if (max) {\r\n isMax = isMaxMonthThanDate(d, max)\r\n }\r\n return isMin || isMax\r\n }\r\n return false\r\n }\r\n function renderMonthList() {\r\n let ms: any[] = []\r\n for (const [k, v] of monthMap) {\r\n const isSelected =\r\n props.date && isSameMonth(props.date, new Date(year.value, k - 1))\r\n const isCur = isSameMonth(new Date(), new Date(year.value, k - 1))\r\n const isDisabled = compareDate(new Date(year.value, k - 1))\r\n const p = {\r\n class: [\r\n \"w-months-item\",\r\n {\r\n \"w-months-item-selected\": isSelected,\r\n \"w-months-item-current\": isCur,\r\n \"w-months-item-disabled\": isDisabled,\r\n },\r\n ],\r\n onClick: () => {\r\n if (isDisabled) {\r\n return\r\n }\r\n const d = new Date(year.value, k - 1)\r\n emit(\"toggle-month\", d)\r\n },\r\n }\r\n ms.push(\r\n <div {...p}>\r\n {isCur\r\n ? [<span>{v}</span>, <span class=\"w-months-item-cur\"></span>]\r\n : v}\r\n </div>\r\n )\r\n }\r\n return <div class=\"w-months\">{ms}</div>\r\n }\r\n return renderMonthList\r\n },\r\n})\r\n"],"mappings":";;;;AAMA,IAAMO,eAAeC,MACnBN,yBACE,IAAIO,IAAI;CACN,CAAC,GAAGD,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,IAAIA,EAAE,iBAAiB,CAAC;CACzB,CAAC,IAAIA,EAAE,iBAAiB,CAAC;CACzB,CAAC,IAAIA,EAAE,iBAAiB,CAAC;AAAC,CAC3B,CACH;AAyCF,IAAA,iBAAeR,gCAAgB;CAC7BU,MAAM;CACNC,OAAO;EAELC,MAAM,EAAEC,MAAM;GAACC;GAAMC;GAAQC;EAAM,EAAE;EAErCC,aAAa,EAAEJ,MAAM;GAACC;GAAMC;GAAQC;EAAM,EAAE;EAC5CE,KAAK,EAAEL,MAAM;GAACG;GAAQF;GAAMC;EAAM,EAAE;EACpCI,KAAK,EAAEN,MAAM;GAACG;GAAQF;GAAMC;EAAM,EAAE;CACtC;CACAK,OAAO,EACL,iBAAiBC,cAAoB;EACnC,OAAOA,qBAAqBP;CAC9B,EACF;CACAQ,MAAMX,OAAO,EAAEY,MAAMC,SAAS;EAC5B,MAAM,EAAEC,aAAaC,MAAMC,oBAAoBC,uBAC7CvB,QAAQJ,eAAeU,MAAMM,WAAW,CAAC;EAC3C,MAAM,EAAET,MAAMF,UAAU;EACxB,MAAMuB,WAAWtB,YAAYC,CAAC;EAC9B,SAASsB,YAAYC,GAAS;GAC5B,MAAMZ,MAAMR,MAAMQ,KAChBD,MAAMP,MAAMO;GACd,IAAIC,OAAOD,KAAK;IACd,IAAIc,QAAQ,OACVC,QAAQ;IACV,IAAId,KACFa,QAAQL,mBAAmBI,GAAGZ,GAAG;IAEnC,IAAID,KACFe,QAAQL,mBAAmBG,GAAGb,GAAG;IAEnC,OAAOc,SAASC;GAClB;GACA,OAAO;EACT;EACA,SAASC,kBAAkB;GACzB,IAAIC,KAAY,CAAA;GAChB,KAAK,MAAM,CAACC,GAAGC,MAAMR,UAAU;IAC7B,MAAMS,aACJ3B,MAAMC,QAAQa,YAAYd,MAAMC,MAAM,IAAIE,KAAKY,KAAKa,OAAOH,IAAI,CAAC,CAAC;IACnE,MAAMI,QAAQf,4BAAY,IAAIX,KAAK,GAAG,IAAIA,KAAKY,KAAKa,OAAOH,IAAI,CAAC,CAAC;IACjE,MAAMK,aAAaX,YAAY,IAAIhB,KAAKY,KAAKa,OAAOH,IAAI,CAAC,CAAC;IAC1D,MAAMM,IAAI;KACRC,OAAO,CACL,iBACA;MACE,0BAA0BL;MAC1B,yBAAyBE;MACzB,0BAA0BC;KAC5B,CAAC;KAEHG,eAAe;MACb,IAAIH,YACF;MAGFlB,KAAK,gBAAgBQ,IADPjB,KAAKY,KAAKa,OAAOH,IAAI,CACdL,CAAC;KACxB;IACF;IACAI,GAAGU,KAAIzC,YAAA,OACIsC,GAAC,CACPF,QACG,CAAApC,YAAA,QAAA,MAAA,CAAQiC,CAAC,CAAA,GAAAjC,YAAA,QAAA,EAAA,SAAA,oBAAA,GAAA,IAAA,CAAA,IACTiC,CAAC,CAAA,CAET;GACF;GACA,OAAAjC,YAAA,OAAA,EAAA,SAAA,WAAA,GAAA,CAA8B+B,EAAE,CAAA;EAClC;EACA,OAAOD;CACT;AACF,CAAC"}
1
+ {"version":3,"file":"Months.js","names":["defineComponent","computed","readonly","createVNode","_createVNode","useDate","useUII18n","getMonthMap","t","Map","name","props","date","type","Date","String","Number","displayDate","max","min","emits","setup","emit","slots","isSameMonth","year","isMinMonthThanDate","isMaxMonthThanDate","monthMap","compareDate","d","isMin","isMax","renderMonthList","ms","k","v","isSelected","value","isCur","isDisabled","p","class","onClick","push"],"sources":["../../../components/date/Months.tsx"],"sourcesContent":["import type { VNode, PropType } from \"vue\"\r\nimport type { DateType } from \"../../config/types\"\r\nimport { defineComponent, computed, readonly } from \"vue\"\r\nimport useDate from \"../../use/useDate\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\n\r\nconst getMonthMap = (t: Function) =>\r\n readonly(\r\n new Map([\r\n [1, t(\"date.months.jan\")],\r\n [2, t(\"date.months.feb\")],\r\n [3, t(\"date.months.mar\")],\r\n [4, t(\"date.months.apr\")],\r\n [5, t(\"date.months.may\")],\r\n [6, t(\"date.months.jun\")],\r\n [7, t(\"date.months.jul\")],\r\n [8, t(\"date.months.aug\")],\r\n [9, t(\"date.months.sep\")],\r\n [10, t(\"date.months.oct\")],\r\n [11, t(\"date.months.nov\")],\r\n [12, t(\"date.months.dec\")],\r\n ])\r\n )\r\n\r\n// interface Props {\r\n// date: DateType\r\n// displayDate: DateType\r\n// }\r\n\r\n// type Emit = {\r\n// 'toggle-month': (yearMonth: Date) => void\r\n// }\r\n\r\n// const Months: FunctionalComponent<Props, Emit> = (props, ctx) => {\r\n// const { emit } = ctx\r\n// const { isSameMonth, year } = useDate(computed(() => props.displayDate))\r\n// return (() => {\r\n// let ms: VNode[] = []\r\n// for (const [k, v] of monthMap) {\r\n// const isSelected =\r\n// props.date && isSameMonth(props.date, new Date(year.value, k - 1))\r\n// const isCur = isSameMonth(new Date(), new Date(year.value, k - 1))\r\n// const p = {\r\n// class: [\r\n// 'w-months-item',\r\n// {\r\n// 'w-months-item-selected': isSelected,\r\n// 'w-months-item-current': isCur\r\n// }\r\n// ],\r\n// onClick: () => {\r\n// emit('toggle-month', new Date(year.value, k - 1))\r\n// }\r\n// }\r\n// ms.push(\r\n// <div {...p}>{isCur ? [<span>{v}</span>, <span>本月</span>] : v}</div>\r\n// )\r\n// }\r\n// return <div class=\"w-months\">{ms}</div>\r\n// })()\r\n// }\r\n// Months.emits = ['toggle-month']\r\n// export default Months\r\nexport default defineComponent({\r\n name: \"Months\",\r\n props: {\r\n //传入的当前日期\r\n date: { type: [Date, String, Number] },\r\n //displayDate是展示的日期\r\n displayDate: { type: [Date, String, Number] },\r\n max: { type: [Number, Date, String] },\r\n min: { type: [Number, Date, String] },\r\n },\r\n emits: ['toggle-month'],\r\n setup(props, { emit, slots }) {\r\n const { isSameMonth, year, isMinMonthThanDate, isMaxMonthThanDate } =\r\n useDate(computed(() => props.displayDate))\r\n const { t } = useUII18n()\r\n const monthMap = getMonthMap(t)\r\n function compareDate(d: Date) {\r\n const min = props.min,\r\n max = props.max\r\n if (min || max) {\r\n let isMin = false,\r\n isMax = false\r\n if (min) {\r\n isMin = isMinMonthThanDate(d, min)\r\n }\r\n if (max) {\r\n isMax = isMaxMonthThanDate(d, max)\r\n }\r\n return isMin || isMax\r\n }\r\n return false\r\n }\r\n function renderMonthList() {\r\n let ms: any[] = []\r\n for (const [k, v] of monthMap) {\r\n const isSelected =\r\n props.date && isSameMonth(props.date, new Date(year.value, k - 1))\r\n const isCur = isSameMonth(new Date(), new Date(year.value, k - 1))\r\n const isDisabled = compareDate(new Date(year.value, k - 1))\r\n const p = {\r\n class: [\r\n \"w-months-item\",\r\n {\r\n \"w-months-item-selected\": isSelected,\r\n \"w-months-item-current\": isCur,\r\n \"w-months-item-disabled\": isDisabled,\r\n },\r\n ],\r\n onClick: () => {\r\n if (isDisabled) {\r\n return\r\n }\r\n const d = new Date(year.value, k - 1)\r\n emit(\"toggle-month\", d)\r\n },\r\n }\r\n ms.push(\r\n <div {...p}>\r\n {isCur\r\n ? [<span>{v}</span>, <span class=\"w-months-item-cur\"></span>]\r\n : v}\r\n </div>\r\n )\r\n }\r\n return <div class=\"w-months\">{ms}</div>\r\n }\r\n return renderMonthList\r\n },\r\n})\r\n"],"mappings":";;;;AAMA,IAAMO,eAAeC,MACnBN,yBACE,IAAIO,IAAI;CACN,CAAC,GAAGD,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,GAAGA,EAAE,iBAAiB,CAAC;CACxB,CAAC,IAAIA,EAAE,iBAAiB,CAAC;CACzB,CAAC,IAAIA,EAAE,iBAAiB,CAAC;CACzB,CAAC,IAAIA,EAAE,iBAAiB,CAAC;AAAC,CAC3B,CACH;AAyCF,IAAA,iBAAeR,gCAAgB;CAC7BU,MAAM;CACNC,OAAO;EAELC,MAAM,EAAEC,MAAM;GAACC;GAAMC;GAAQC;EAAM,EAAE;EAErCC,aAAa,EAAEJ,MAAM;GAACC;GAAMC;GAAQC;EAAM,EAAE;EAC5CE,KAAK,EAAEL,MAAM;GAACG;GAAQF;GAAMC;EAAM,EAAE;EACpCI,KAAK,EAAEN,MAAM;GAACG;GAAQF;GAAMC;EAAM,EAAE;CACtC;CACAK,OAAO,CAAC,cAAc;CACtBC,MAAMV,OAAO,EAAEW,MAAMC,SAAS;EAC5B,MAAM,EAAEC,aAAaC,MAAMC,oBAAoBC,uBAC7CtB,QAAQJ,eAAeU,MAAMM,WAAW,CAAC;EAC3C,MAAM,EAAET,MAAMF,UAAU;EACxB,MAAMsB,WAAWrB,YAAYC,CAAC;EAC9B,SAASqB,YAAYC,GAAS;GAC5B,MAAMX,MAAMR,MAAMQ,KAChBD,MAAMP,MAAMO;GACd,IAAIC,OAAOD,KAAK;IACd,IAAIa,QAAQ,OACVC,QAAQ;IACV,IAAIb,KACFY,QAAQL,mBAAmBI,GAAGX,GAAG;IAEnC,IAAID,KACFc,QAAQL,mBAAmBG,GAAGZ,GAAG;IAEnC,OAAOa,SAASC;GAClB;GACA,OAAO;EACT;EACA,SAASC,kBAAkB;GACzB,IAAIC,KAAY,CAAA;GAChB,KAAK,MAAM,CAACC,GAAGC,MAAMR,UAAU;IAC7B,MAAMS,aACJ1B,MAAMC,QAAQY,YAAYb,MAAMC,MAAM,IAAIE,KAAKW,KAAKa,OAAOH,IAAI,CAAC,CAAC;IACnE,MAAMI,QAAQf,4BAAY,IAAIV,KAAK,GAAG,IAAIA,KAAKW,KAAKa,OAAOH,IAAI,CAAC,CAAC;IACjE,MAAMK,aAAaX,YAAY,IAAIf,KAAKW,KAAKa,OAAOH,IAAI,CAAC,CAAC;IAC1D,MAAMM,IAAI;KACRC,OAAO,CACL,iBACA;MACE,0BAA0BL;MAC1B,yBAAyBE;MACzB,0BAA0BC;KAC5B,CAAC;KAEHG,eAAe;MACb,IAAIH,YACF;MAGFlB,KAAK,gBAAgBQ,IADPhB,KAAKW,KAAKa,OAAOH,IAAI,CACdL,CAAC;KACxB;IACF;IACAI,GAAGU,KAAIxC,YAAA,OACIqC,GAAC,CACPF,QACG,CAAAnC,YAAA,QAAA,MAAA,CAAQgC,CAAC,CAAA,GAAAhC,YAAA,QAAA,EAAA,SAAA,oBAAA,GAAA,IAAA,CAAA,IACTgC,CAAC,CAAA,CAET;GACF;GACA,OAAAhC,YAAA,OAAA,EAAA,SAAA,WAAA,GAAA,CAA8B8B,EAAE,CAAA;EAClC;EACA,OAAOD;CACT;AACF,CAAC"}
@@ -4,21 +4,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
4
4
  quickKey: PropType<TQuickKey>;
5
5
  start: StringConstructor;
6
6
  end: StringConstructor;
7
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
8
- change: (obj: {
9
- key: TQuickKey;
10
- start: string;
11
- end: string;
12
- }) => true;
13
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
7
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
14
8
  quickKey: PropType<TQuickKey>;
15
9
  start: StringConstructor;
16
10
  end: StringConstructor;
17
11
  }>> & Readonly<{
18
- onChange?: (obj: {
19
- key: TQuickKey;
20
- start: string;
21
- end: string;
22
- }) => any;
12
+ onChange?: (...args: any[]) => any;
23
13
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
24
14
  export default _default;
@@ -11,7 +11,7 @@ var QuickDate_default = /* @__PURE__ */ defineComponent({
11
11
  start: String,
12
12
  end: String
13
13
  },
14
- emits: { change: (obj) => true },
14
+ emits: ["change"],
15
15
  setup(props, { emit }) {
16
16
  const rangeList = [];
17
17
  quickKeys.forEach((k) => {
@@ -1 +1 @@
1
- {"version":3,"file":"QuickDate.js","names":["defineComponent","createVNode","_createVNode","getRangeDate","quickList","useUII18n","getQuickDateText","isQuickRangeActive","quickKeys","Object","keys","name","props","quickKey","String","start","end","emits","change","obj","setup","emit","rangeList","forEach","k","push","range","t","isActive","onChange","key","map","onClick"],"sources":["../../../components/date/QuickDate.tsx"],"sourcesContent":["import { defineComponent } from 'vue'\r\nimport type { PropType } from 'vue'\r\nimport { getRangeDate, quickList } from '../../use/useDate'\r\nimport type { TQuickKey } from '../../use/useDate'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport { getQuickDateText, isQuickRangeActive } from './_use/quickDate'\r\n\r\nconst quickKeys = Object.keys(quickList) as TQuickKey[]\r\nexport default defineComponent({\r\n name: 'QuickDate',\r\n props: {\r\n quickKey: String as PropType<TQuickKey>,\r\n start: String,\r\n end: String,\r\n },\r\n emits: {\r\n change: (obj: { key: TQuickKey; start: string; end: string }) => true,\r\n },\r\n setup(props, { emit }) {\r\n const rangeList: { k: TQuickKey; range: [string, string] }[] = []\r\n quickKeys.forEach((k) => {\r\n rangeList.push({ k, range: getRangeDate(k) })\r\n })\r\n const { t } = useUII18n()\r\n\r\n function isActive(k: TQuickKey) {\r\n return (\r\n props.quickKey === k &&\r\n isQuickRangeActive(props.quickKey, props.start, props.end)\r\n )\r\n }\r\n\r\n function onChange(k: TQuickKey, range: [string, string]) {\r\n emit('change', { key: k, start: range[0], end: range[1] })\r\n }\r\n\r\n return () => {\r\n return (\r\n <div class=\"w-date-quick\">\r\n {rangeList.map(({ k, range }) => {\r\n return (\r\n <span\r\n class={[\r\n 'w-date-quick-item',\r\n isActive(k) ? 'w-date-quick-item-active' : '',\r\n ]}\r\n key={k}\r\n onClick={() => onChange(k, range)}>\r\n {getQuickDateText(k, t)}\r\n </span>\r\n )\r\n })}\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n"],"mappings":";;;;;AAOA,IAAMQ,YAAYC,OAAOC,KAAKN,SAAS;AACvC,IAAA,oBAAeJ,gCAAgB;CAC7BW,MAAM;CACNC,OAAO;EACLC,UAAUC;EACVC,OAAOD;EACPE,KAAKF;CACP;CACAG,OAAO,EACLC,SAASC,QAAwD,KACnE;CACAC,MAAMR,OAAO,EAAES,QAAQ;EACrB,MAAMC,YAAyD,CAAA;EAC/Dd,UAAUe,SAASC,MAAM;GACvBF,UAAUG,KAAK;IAAED;IAAGE,OAAOvB,aAAaqB,CAAC;GAAE,CAAC;EAC9C,CAAC;EACD,MAAM,EAAEG,MAAMtB,UAAU;EAExB,SAASuB,SAASJ,GAAc;GAC9B,OACEZ,MAAMC,aAAaW,KACnBjB,mBAAmBK,MAAMC,UAAUD,MAAMG,OAAOH,MAAMI,GAAG;EAE7D;EAEA,SAASa,SAASL,GAAcE,OAAyB;GACvDL,KAAK,UAAU;IAAES,KAAKN;IAAGT,OAAOW,MAAM;IAAIV,KAAKU,MAAM;GAAG,CAAC;EAC3D;EAEA,aAAa;GACX,OAAAxB,YAAA,OAAA,EAAA,SAAA,eAAA,GAAA,CAEKoB,UAAUS,KAAK,EAAEP,GAAGE,YAAY;IAC/B,OAAAxB,YAAA,QAAA;KAAA,SAEW,CACL,qBACA0B,SAASJ,CAAC,IAAI,6BAA6B,EAAE;KAC9C,OACIA;KAAC,iBACSK,SAASL,GAAGE,KAAK;IAAC,GAAA,CAChCpB,iBAAiBkB,GAAGG,CAAC,CAAC,CAAA;GAG7B,CAAC,CAAC,CAAA;EAGR;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"QuickDate.js","names":["defineComponent","createVNode","_createVNode","getRangeDate","quickList","useUII18n","getQuickDateText","isQuickRangeActive","quickKeys","Object","keys","name","props","quickKey","String","start","end","emits","setup","emit","rangeList","forEach","k","push","range","t","isActive","onChange","key","map","onClick"],"sources":["../../../components/date/QuickDate.tsx"],"sourcesContent":["import { defineComponent } from 'vue'\r\nimport type { PropType } from 'vue'\r\nimport { getRangeDate, quickList } from '../../use/useDate'\r\nimport type { TQuickKey } from '../../use/useDate'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport { getQuickDateText, isQuickRangeActive } from './_use/quickDate'\r\n\r\nconst quickKeys = Object.keys(quickList) as TQuickKey[]\r\nexport default defineComponent({\r\n name: 'QuickDate',\r\n props: {\r\n quickKey: String as PropType<TQuickKey>,\r\n start: String,\r\n end: String,\r\n },\r\n emits: ['change'],\r\n setup(props, { emit }) {\r\n const rangeList: { k: TQuickKey; range: [string, string] }[] = []\r\n quickKeys.forEach((k) => {\r\n rangeList.push({ k, range: getRangeDate(k) })\r\n })\r\n const { t } = useUII18n()\r\n\r\n function isActive(k: TQuickKey) {\r\n return (\r\n props.quickKey === k &&\r\n isQuickRangeActive(props.quickKey, props.start, props.end)\r\n )\r\n }\r\n\r\n function onChange(k: TQuickKey, range: [string, string]) {\r\n emit('change', { key: k, start: range[0], end: range[1] })\r\n }\r\n\r\n return () => {\r\n return (\r\n <div class=\"w-date-quick\">\r\n {rangeList.map(({ k, range }) => {\r\n return (\r\n <span\r\n class={[\r\n 'w-date-quick-item',\r\n isActive(k) ? 'w-date-quick-item-active' : '',\r\n ]}\r\n key={k}\r\n onClick={() => onChange(k, range)}>\r\n {getQuickDateText(k, t)}\r\n </span>\r\n )\r\n })}\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n"],"mappings":";;;;;AAOA,IAAMQ,YAAYC,OAAOC,KAAKN,SAAS;AACvC,IAAA,oBAAeJ,gCAAgB;CAC7BW,MAAM;CACNC,OAAO;EACLC,UAAUC;EACVC,OAAOD;EACPE,KAAKF;CACP;CACAG,OAAO,CAAC,QAAQ;CAChBC,MAAMN,OAAO,EAAEO,QAAQ;EACrB,MAAMC,YAAyD,CAAA;EAC/DZ,UAAUa,SAASC,MAAM;GACvBF,UAAUG,KAAK;IAAED;IAAGE,OAAOrB,aAAamB,CAAC;GAAE,CAAC;EAC9C,CAAC;EACD,MAAM,EAAEG,MAAMpB,UAAU;EAExB,SAASqB,SAASJ,GAAc;GAC9B,OACEV,MAAMC,aAAaS,KACnBf,mBAAmBK,MAAMC,UAAUD,MAAMG,OAAOH,MAAMI,GAAG;EAE7D;EAEA,SAASW,SAASL,GAAcE,OAAyB;GACvDL,KAAK,UAAU;IAAES,KAAKN;IAAGP,OAAOS,MAAM;IAAIR,KAAKQ,MAAM;GAAG,CAAC;EAC3D;EAEA,aAAa;GACX,OAAAtB,YAAA,OAAA,EAAA,SAAA,eAAA,GAAA,CAEKkB,UAAUS,KAAK,EAAEP,GAAGE,YAAY;IAC/B,OAAAtB,YAAA,QAAA;KAAA,SAEW,CACL,qBACAwB,SAASJ,CAAC,IAAI,6BAA6B,EAAE;KAC9C,OACIA;KAAC,iBACSK,SAASL,GAAGE,KAAK;IAAC,GAAA,CAChClB,iBAAiBgB,GAAGG,CAAC,CAAC,CAAA;GAG7B,CAAC,CAAC,CAAA;EAGR;CACF;AACF,CAAC"}
@@ -13,10 +13,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
13
13
  min: {
14
14
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
15
15
  };
16
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
17
- "toggle-year": (year: number) => boolean;
18
- "get-from-to": (from: number, to: number) => true;
19
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
16
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("toggle-year" | "get-from-to")[], "toggle-year" | "get-from-to", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
20
17
  date: {
21
18
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
22
19
  };
@@ -32,7 +29,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
32
29
  type: (NumberConstructor | StringConstructor | DateConstructor)[];
33
30
  };
34
31
  }>> & Readonly<{
35
- "onToggle-year"?: (year: number) => any;
36
- "onGet-from-to"?: (from: number, to: number) => any;
32
+ "onToggle-year"?: (...args: any[]) => any;
33
+ "onGet-from-to"?: (...args: any[]) => any;
37
34
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
38
35
  export default _default;
@@ -27,14 +27,7 @@ var Years_default = /* @__PURE__ */ defineComponent({
27
27
  String
28
28
  ] }
29
29
  },
30
- emits: {
31
- "toggle-year": (year) => {
32
- return year >= 1700;
33
- },
34
- "get-from-to": (from, to) => {
35
- if (from || to) return true;
36
- }
37
- },
30
+ emits: ["toggle-year", "get-from-to"],
38
31
  setup(props, { emit, slots }) {
39
32
  const { isMinYearThanDate, isMaxYearThanDate, getYearsInPanel, yearPanelLength } = useDate(computed(() => props.displayDate));
40
33
  const { year: selectedYear } = useDate(computed(() => props.date));
@@ -1 +1 @@
1
- {"version":3,"file":"Years.js","names":["defineComponent","computed","createVNode","_createVNode","useDate","useUII18n","props","date","type","Number","Date","String","displayDate","from","to","max","min","emits","year","get-from-to","setup","emit","slots","isMinYearThanDate","isMaxYearThanDate","getYearsInPanel","yearPanelLength","selectedYear","t","list","a","Array","length","item","index","compareDate","d","isMin","isMax","renderYearList","years","yearList","ms","v","value","isCur","getFullYear","isSelected","undefined","isDisabled","p","class","onClick","push"],"sources":["../../../components/date/Years.tsx"],"sourcesContent":["import type { VNode } from \"vue\"\r\nimport { defineComponent, computed } from \"vue\"\r\nimport useDate from \"../../use/useDate\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\n\r\nexport default defineComponent({\r\n props: {\r\n //传入的当前日期\r\n date: { type: [Number, Date, String] },\r\n //displayDate是展示的日期\r\n displayDate: { type: [Number, Date, String] },\r\n //from和to有值的时候,date和displayDate不要有值。\r\n from: Number,\r\n to: Number,\r\n //最大日期最小日期\r\n max: { type: [Number, Date, String] },\r\n min: { type: [Number, Date, String] },\r\n },\r\n emits: {\r\n \"toggle-year\": (year: number) => {\r\n return year >= 1700\r\n },\r\n \"get-from-to\": (from: number, to: number) => {\r\n if (from || to) {\r\n return true\r\n }\r\n },\r\n },\r\n setup(props, { emit, slots }) {\r\n const {\r\n isMinYearThanDate,\r\n isMaxYearThanDate,\r\n getYearsInPanel,\r\n yearPanelLength,\r\n } = useDate(computed(() => props.displayDate))\r\n const { year: selectedYear } = useDate(computed(() => props.date))\r\n const { t } = useUII18n()\r\n\r\n const list = computed(() => {\r\n if (props.from && props.to) {\r\n const a = Array.from(\r\n { length: yearPanelLength },\r\n (item, index) => index + props.from!\r\n )\r\n return a\r\n }\r\n return []\r\n })\r\n\r\n function compareDate(d: Date) {\r\n const min = props.min,\r\n max = props.max\r\n if (min || max) {\r\n let isMin = false,\r\n isMax = false\r\n if (min) {\r\n isMin = isMinYearThanDate(d, min)\r\n }\r\n if (max) {\r\n isMax = isMaxYearThanDate(d, max)\r\n }\r\n return isMin || isMax\r\n }\r\n return false\r\n }\r\n\r\n function renderYearList() {\r\n const { years: yearList, from, to } = getYearsInPanel()\r\n emit(\"get-from-to\", props.from || from, props.to || to)\r\n let ms: any[] = []\r\n // console.log(list.value, yearList, from, to)\r\n for (const v of list.value.length ? list.value : yearList) {\r\n const isCur = new Date().getFullYear() === v\r\n const isSelected =\r\n props.date === undefined ? false : selectedYear.value === v\r\n const isDisabled = compareDate(new Date(v, 0))\r\n const p = {\r\n class: [\r\n \"w-months-item\",\r\n {\r\n \"w-months-item-current\": isCur,\r\n \"w-months-item-selected\": isSelected,\r\n \"w-months-item-disabled\": isDisabled,\r\n },\r\n ],\r\n onClick: () => {\r\n if (isDisabled) {\r\n return\r\n }\r\n emit(\"toggle-year\", v)\r\n },\r\n }\r\n ms.push(\r\n <div {...p}>\r\n {isCur\r\n ? [<span>{v}</span>, <span class=\"w-months-item-cur\"></span>]\r\n : v}\r\n </div>\r\n )\r\n }\r\n return <div class=\"w-months\">{ms}</div>\r\n }\r\n return renderYearList\r\n },\r\n})\r\n"],"mappings":";;;;AAKA,IAAA,gBAAeA,gCAAgB;CAC7BM,OAAO;EAELC,MAAM,EAAEC,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAErCC,aAAa,EAAEJ,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAE5CE,MAAMJ;EACNK,IAAIL;EAEJM,KAAK,EAAEP,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EACpCK,KAAK,EAAER,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;CACtC;CACAM,OAAO;EACL,gBAAgBC,SAAiB;GAC/B,OAAOA,QAAQ;EACjB;EACA,gBAAgBL,MAAcC,OAAe;GAC3C,IAAID,QAAQC,IACV,OAAO;EAEX;CACF;CACAM,MAAMd,OAAO,EAAEe,MAAMC,SAAS;EAC5B,MAAM,EACJC,mBACAC,mBACAC,iBACAC,oBACEtB,QAAQH,eAAeK,MAAMM,WAAW,CAAC;EAC7C,MAAM,EAAEM,MAAMS,iBAAiBvB,QAAQH,eAAeK,MAAMC,IAAI,CAAC;EACjE,MAAM,EAAEqB,MAAMvB,UAAU;EAExB,MAAMwB,OAAO5B,eAAe;GAC1B,IAAIK,MAAMO,QAAQP,MAAMQ,IAKtB,OAJUiB,MAAMlB,KACd,EAAEmB,QAAQN,gBAAgB,IACzBO,MAAMC,UAAUA,QAAQ5B,MAAMO,IAE1BiB;GAET,OAAO,CAAA;EACT,CAAC;EAED,SAASK,YAAYC,GAAS;GAC5B,MAAMpB,MAAMV,MAAMU,KAChBD,MAAMT,MAAMS;GACd,IAAIC,OAAOD,KAAK;IACd,IAAIsB,QAAQ,OACVC,QAAQ;IACV,IAAItB,KACFqB,QAAQd,kBAAkBa,GAAGpB,GAAG;IAElC,IAAID,KACFuB,QAAQd,kBAAkBY,GAAGrB,GAAG;IAElC,OAAOsB,SAASC;GAClB;GACA,OAAO;EACT;EAEA,SAASC,iBAAiB;GACxB,MAAM,EAAEC,OAAOC,UAAU5B,MAAMC,OAAOW,gBAAgB;GACtDJ,KAAK,eAAef,MAAMO,QAAQA,MAAMP,MAAMQ,MAAMA,EAAE;GACtD,IAAI4B,KAAY,CAAA;GAEhB,KAAK,MAAMC,KAAKd,KAAKe,MAAMZ,SAASH,KAAKe,QAAQH,UAAU;IACzD,MAAMI,yBAAQ,IAAInC,KAAK,EAAA,CAAEoC,YAAY,MAAMH;IAC3C,MAAMI,aACJzC,MAAMC,SAASyC,KAAAA,IAAY,QAAQrB,aAAaiB,UAAUD;IAC5D,MAAMM,aAAad,YAAY,IAAIzB,KAAKiC,GAAG,CAAC,CAAC;IAC7C,MAAMO,IAAI;KACRC,OAAO,CACL,iBACA;MACE,yBAAyBN;MACzB,0BAA0BE;MAC1B,0BAA0BE;KAC5B,CAAC;KAEHG,eAAe;MACb,IAAIH,YACF;MAEF5B,KAAK,eAAesB,CAAC;KACvB;IACF;IACAD,GAAGW,KAAIlD,YAAA,OACI+C,GAAC,CACPL,QACG,CAAA1C,YAAA,QAAA,MAAA,CAAQwC,CAAC,CAAA,GAAAxC,YAAA,QAAA,EAAA,SAAA,oBAAA,GAAA,IAAA,CAAA,IACTwC,CAAC,CAAA,CAET;GACF;GACA,OAAAxC,YAAA,OAAA,EAAA,SAAA,WAAA,GAAA,CAA8BuC,EAAE,CAAA;EAClC;EACA,OAAOH;CACT;AACF,CAAC"}
1
+ {"version":3,"file":"Years.js","names":["defineComponent","computed","createVNode","_createVNode","useDate","useUII18n","props","date","type","Number","Date","String","displayDate","from","to","max","min","emits","setup","emit","slots","isMinYearThanDate","isMaxYearThanDate","getYearsInPanel","yearPanelLength","year","selectedYear","t","list","a","Array","length","item","index","compareDate","d","isMin","isMax","renderYearList","years","yearList","ms","v","value","isCur","getFullYear","isSelected","undefined","isDisabled","p","class","onClick","push"],"sources":["../../../components/date/Years.tsx"],"sourcesContent":["import type { VNode } from \"vue\"\r\nimport { defineComponent, computed } from \"vue\"\r\nimport useDate from \"../../use/useDate\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\n\r\nexport default defineComponent({\r\n props: {\r\n //传入的当前日期\r\n date: { type: [Number, Date, String] },\r\n //displayDate是展示的日期\r\n displayDate: { type: [Number, Date, String] },\r\n //from和to有值的时候,date和displayDate不要有值。\r\n from: Number,\r\n to: Number,\r\n //最大日期最小日期\r\n max: { type: [Number, Date, String] },\r\n min: { type: [Number, Date, String] },\r\n },\r\n emits: ['toggle-year', 'get-from-to'],\r\n setup(props, { emit, slots }) {\r\n const {\r\n isMinYearThanDate,\r\n isMaxYearThanDate,\r\n getYearsInPanel,\r\n yearPanelLength,\r\n } = useDate(computed(() => props.displayDate))\r\n const { year: selectedYear } = useDate(computed(() => props.date))\r\n const { t } = useUII18n()\r\n\r\n const list = computed(() => {\r\n if (props.from && props.to) {\r\n const a = Array.from(\r\n { length: yearPanelLength },\r\n (item, index) => index + props.from!\r\n )\r\n return a\r\n }\r\n return []\r\n })\r\n\r\n function compareDate(d: Date) {\r\n const min = props.min,\r\n max = props.max\r\n if (min || max) {\r\n let isMin = false,\r\n isMax = false\r\n if (min) {\r\n isMin = isMinYearThanDate(d, min)\r\n }\r\n if (max) {\r\n isMax = isMaxYearThanDate(d, max)\r\n }\r\n return isMin || isMax\r\n }\r\n return false\r\n }\r\n\r\n function renderYearList() {\r\n const { years: yearList, from, to } = getYearsInPanel()\r\n emit(\"get-from-to\", props.from || from, props.to || to)\r\n let ms: any[] = []\r\n // console.log(list.value, yearList, from, to)\r\n for (const v of list.value.length ? list.value : yearList) {\r\n const isCur = new Date().getFullYear() === v\r\n const isSelected =\r\n props.date === undefined ? false : selectedYear.value === v\r\n const isDisabled = compareDate(new Date(v, 0))\r\n const p = {\r\n class: [\r\n \"w-months-item\",\r\n {\r\n \"w-months-item-current\": isCur,\r\n \"w-months-item-selected\": isSelected,\r\n \"w-months-item-disabled\": isDisabled,\r\n },\r\n ],\r\n onClick: () => {\r\n if (isDisabled) {\r\n return\r\n }\r\n emit(\"toggle-year\", v)\r\n },\r\n }\r\n ms.push(\r\n <div {...p}>\r\n {isCur\r\n ? [<span>{v}</span>, <span class=\"w-months-item-cur\"></span>]\r\n : v}\r\n </div>\r\n )\r\n }\r\n return <div class=\"w-months\">{ms}</div>\r\n }\r\n return renderYearList\r\n },\r\n})\r\n"],"mappings":";;;;AAKA,IAAA,gBAAeA,gCAAgB;CAC7BM,OAAO;EAELC,MAAM,EAAEC,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAErCC,aAAa,EAAEJ,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EAE5CE,MAAMJ;EACNK,IAAIL;EAEJM,KAAK,EAAEP,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;EACpCK,KAAK,EAAER,MAAM;GAACC;GAAQC;GAAMC;EAAM,EAAE;CACtC;CACAM,OAAO,CAAC,eAAe,aAAa;CACpCC,MAAMZ,OAAO,EAAEa,MAAMC,SAAS;EAC5B,MAAM,EACJC,mBACAC,mBACAC,iBACAC,oBACEpB,QAAQH,eAAeK,MAAMM,WAAW,CAAC;EAC7C,MAAM,EAAEa,MAAMC,iBAAiBtB,QAAQH,eAAeK,MAAMC,IAAI,CAAC;EACjE,MAAM,EAAEoB,MAAMtB,UAAU;EAExB,MAAMuB,OAAO3B,eAAe;GAC1B,IAAIK,MAAMO,QAAQP,MAAMQ,IAKtB,OAJUgB,MAAMjB,KACd,EAAEkB,QAAQP,gBAAgB,IACzBQ,MAAMC,UAAUA,QAAQ3B,MAAMO,IAE1BgB;GAET,OAAO,CAAA;EACT,CAAC;EAED,SAASK,YAAYC,GAAS;GAC5B,MAAMnB,MAAMV,MAAMU,KAChBD,MAAMT,MAAMS;GACd,IAAIC,OAAOD,KAAK;IACd,IAAIqB,QAAQ,OACVC,QAAQ;IACV,IAAIrB,KACFoB,QAAQf,kBAAkBc,GAAGnB,GAAG;IAElC,IAAID,KACFsB,QAAQf,kBAAkBa,GAAGpB,GAAG;IAElC,OAAOqB,SAASC;GAClB;GACA,OAAO;EACT;EAEA,SAASC,iBAAiB;GACxB,MAAM,EAAEC,OAAOC,UAAU3B,MAAMC,OAAOS,gBAAgB;GACtDJ,KAAK,eAAeb,MAAMO,QAAQA,MAAMP,MAAMQ,MAAMA,EAAE;GACtD,IAAI2B,KAAY,CAAA;GAEhB,KAAK,MAAMC,KAAKd,KAAKe,MAAMZ,SAASH,KAAKe,QAAQH,UAAU;IACzD,MAAMI,yBAAQ,IAAIlC,KAAK,EAAA,CAAEmC,YAAY,MAAMH;IAC3C,MAAMI,aACJxC,MAAMC,SAASwC,KAAAA,IAAY,QAAQrB,aAAaiB,UAAUD;IAC5D,MAAMM,aAAad,YAAY,IAAIxB,KAAKgC,GAAG,CAAC,CAAC;IAC7C,MAAMO,IAAI;KACRC,OAAO,CACL,iBACA;MACE,yBAAyBN;MACzB,0BAA0BE;MAC1B,0BAA0BE;KAC5B,CAAC;KAEHG,eAAe;MACb,IAAIH,YACF;MAEF7B,KAAK,eAAeuB,CAAC;KACvB;IACF;IACAD,GAAGW,KAAIjD,YAAA,OACI8C,GAAC,CACPL,QACG,CAAAzC,YAAA,QAAA,MAAA,CAAQuC,CAAC,CAAA,GAAAvC,YAAA,QAAA,EAAA,SAAA,oBAAA,GAAA,IAAA,CAAA,IACTuC,CAAC,CAAA,CAET;GACF;GACA,OAAAvC,YAAA,OAAA,EAAA,SAAA,WAAA,GAAA,CAA8BsC,EAAE,CAAA;EAClC;EACA,OAAOH;CACT;AACF,CAAC"}
@@ -1,4 +1,4 @@
1
- import { FormRuleItem, FormRules } from '../../config/types';
1
+ import { FormRuleItem, FormRules } from '../../../config/types';
2
2
  /** 将 rules 统一为数组,并拷贝避免污染源对象 */
3
3
  export declare function normalizeRules(input?: FormRuleItem | FormRuleItem[] | null): FormRuleItem[];
4
4
  /** 合并 Form 级、FormItem 级与 required 标记 */
@@ -1 +1 @@
1
- {"version":3,"file":"formRules.js","names":[],"sources":["../../../../components/form/_use/formRules.ts"],"sourcesContent":["import type { FormRuleItem, FormRules } from '../../config/types'\r\n\r\n/** 将 rules 统一为数组,并拷贝避免污染源对象 */\r\nexport function normalizeRules(\r\n input?: FormRuleItem | FormRuleItem[] | null,\r\n): FormRuleItem[] {\r\n if (input == null) return []\r\n const list = Array.isArray(input) ? input : [input]\r\n return list.map((rule) => ({ ...rule }))\r\n}\r\n\r\n/** 合并 Form 级、FormItem 级与 required 标记 */\r\nexport function mergeFieldRules(options: {\r\n formRules?: FormRules\r\n prop?: string\r\n itemRules?: FormRuleItem | FormRuleItem[]\r\n required?: boolean\r\n}): FormRuleItem[] {\r\n const fromForm =\r\n options.prop && options.formRules\r\n ? normalizeRules(options.formRules[options.prop])\r\n : []\r\n const fromItem = normalizeRules(options.itemRules)\r\n const requiredRule: FormRuleItem[] =\r\n options.required !== undefined\r\n ? [{ required: !!options.required, message: undefined }]\r\n : []\r\n return [...fromForm, ...fromItem, ...requiredRule]\r\n}\r\n\r\nexport function filterRulesByTrigger(\r\n rules: FormRuleItem[],\r\n trigger: string,\r\n): FormRuleItem[] {\r\n return rules\r\n .filter((rule) => {\r\n if (!trigger || trigger === '') return true\r\n if (!rule.trigger) return true\r\n if (Array.isArray(rule.trigger)) {\r\n return rule.trigger.includes(trigger)\r\n }\r\n return rule.trigger === trigger\r\n })\r\n .map((rule) => {\r\n const next = { ...rule }\r\n delete next.trigger\r\n return next\r\n })\r\n}\r\n\r\nexport function isRequiredFromRules(\r\n rules: FormRuleItem[],\r\n requiredProp?: boolean,\r\n): boolean {\r\n if (requiredProp) return true\r\n return rules.some((r) => !!r.required)\r\n}\r\n\r\n/** 读取嵌套路径 a.b.0.c */\r\nexport function getPropByPath(obj: any, path: string): any {\r\n if (!obj || !path) return undefined\r\n if (!path.includes('.')) return obj[path]\r\n const keys = path.replace(/\\[(\\w+)\\]/g, '.$1').replace(/^\\./, '').split('.')\r\n let cur = obj\r\n for (const key of keys) {\r\n if (cur == null) return undefined\r\n cur = cur[key]\r\n }\r\n return cur\r\n}\r\n\r\n/** 写入嵌套路径 */\r\nexport function setPropByPath(obj: any, path: string, value: any): void {\r\n if (!obj || !path) return\r\n if (!path.includes('.')) {\r\n obj[path] = value\r\n return\r\n }\r\n const keys = path.replace(/\\[(\\w+)\\]/g, '.$1').replace(/^\\./, '').split('.')\r\n let cur = obj\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i]\r\n if (cur[key] == null || typeof cur[key] !== 'object') {\r\n cur[key] = /^\\d+$/.test(keys[i + 1]) ? [] : {}\r\n }\r\n cur = cur[key]\r\n }\r\n cur[keys[keys.length - 1]] = value\r\n}\r\n\r\nexport function cloneValue<T>(value: T): T {\r\n if (value == null || typeof value !== 'object') return value\r\n try {\r\n return structuredClone(value)\r\n } catch {\r\n return JSON.parse(JSON.stringify(value)) as T\r\n }\r\n}\r\n\r\nexport function toCssWidth(value: string | number | undefined): string {\r\n if (value === undefined || value === '') return ''\r\n return typeof value === 'number' ? `${value}px` : value\r\n}\r\n"],"mappings":";;AAGA,SAAgB,eACd,OACgB;CAChB,IAAI,SAAS,MAAM,OAAO,CAAC;CAE3B,QADa,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAA,CACtC,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;AACzC;;AAGA,SAAgB,gBAAgB,SAKb;CACjB,MAAM,WACJ,QAAQ,QAAQ,QAAQ,YACpB,eAAe,QAAQ,UAAU,QAAQ,KAAK,IAC9C,CAAC;CACP,MAAM,WAAW,eAAe,QAAQ,SAAS;CACjD,MAAM,eACJ,QAAQ,aAAa,KAAA,IACjB,CAAC;EAAE,UAAU,CAAC,CAAC,QAAQ;EAAU,SAAS,KAAA;CAAU,CAAC,IACrD,CAAC;CACP,OAAO;EAAC,GAAG;EAAU,GAAG;EAAU,GAAG;CAAY;AACnD;AAEA,SAAgB,qBACd,OACA,SACgB;CAChB,OAAO,MACJ,QAAQ,SAAS;EAChB,IAAI,CAAC,WAAW,YAAY,IAAI,OAAO;EACvC,IAAI,CAAC,KAAK,SAAS,OAAO;EAC1B,IAAI,MAAM,QAAQ,KAAK,OAAO,GAC5B,OAAO,KAAK,QAAQ,SAAS,OAAO;EAEtC,OAAO,KAAK,YAAY;CAC1B,CAAC,CAAC,CACD,KAAK,SAAS;EACb,MAAM,OAAO,EAAE,GAAG,KAAK;EACvB,OAAO,KAAK;EACZ,OAAO;CACT,CAAC;AACL;AAEA,SAAgB,oBACd,OACA,cACS;CACT,IAAI,cAAc,OAAO;CACzB,OAAO,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,QAAQ;AACvC;;AAGA,SAAgB,cAAc,KAAU,MAAmB;CACzD,IAAI,CAAC,OAAO,CAAC,MAAM,OAAO,KAAA;CAC1B,IAAI,CAAC,KAAK,SAAS,GAAG,GAAG,OAAO,IAAI;CACpC,MAAM,OAAO,KAAK,QAAQ,cAAc,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,GAAG;CAC3E,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAAM;EACtB,IAAI,OAAO,MAAM,OAAO,KAAA;EACxB,MAAM,IAAI;CACZ;CACA,OAAO;AACT;;AAGA,SAAgB,cAAc,KAAU,MAAc,OAAkB;CACtE,IAAI,CAAC,OAAO,CAAC,MAAM;CACnB,IAAI,CAAC,KAAK,SAAS,GAAG,GAAG;EACvB,IAAI,QAAQ;EACZ;CACF;CACA,MAAM,OAAO,KAAK,QAAQ,cAAc,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,GAAG;CAC3E,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;EACxC,MAAM,MAAM,KAAK;EACjB,IAAI,IAAI,QAAQ,QAAQ,OAAO,IAAI,SAAS,UAC1C,IAAI,OAAO,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;EAE/C,MAAM,IAAI;CACZ;CACA,IAAI,KAAK,KAAK,SAAS,MAAM;AAC/B;AAEA,SAAgB,WAAc,OAAa;CACzC,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU,OAAO;CACvD,IAAI;EACF,OAAO,gBAAgB,KAAK;CAC9B,QAAQ;EACN,OAAO,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;CACzC;AACF;AAEA,SAAgB,WAAW,OAA4C;CACrE,IAAI,UAAU,KAAA,KAAa,UAAU,IAAI,OAAO;CAChD,OAAO,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM;AACpD"}
1
+ {"version":3,"file":"formRules.js","names":[],"sources":["../../../../components/form/_use/formRules.ts"],"sourcesContent":["import type { FormRuleItem, FormRules } from '../../../config/types'\r\n\r\n/** 将 rules 统一为数组,并拷贝避免污染源对象 */\r\nexport function normalizeRules(\r\n input?: FormRuleItem | FormRuleItem[] | null,\r\n): FormRuleItem[] {\r\n if (input == null) return []\r\n const list = Array.isArray(input) ? input : [input]\r\n return list.map((rule) => ({ ...rule }))\r\n}\r\n\r\n/** 合并 Form 级、FormItem 级与 required 标记 */\r\nexport function mergeFieldRules(options: {\r\n formRules?: FormRules\r\n prop?: string\r\n itemRules?: FormRuleItem | FormRuleItem[]\r\n required?: boolean\r\n}): FormRuleItem[] {\r\n const fromForm =\r\n options.prop && options.formRules\r\n ? normalizeRules(options.formRules[options.prop])\r\n : []\r\n const fromItem = normalizeRules(options.itemRules)\r\n const requiredRule: FormRuleItem[] =\r\n options.required !== undefined\r\n ? [{ required: !!options.required, message: undefined }]\r\n : []\r\n return [...fromForm, ...fromItem, ...requiredRule]\r\n}\r\n\r\nexport function filterRulesByTrigger(\r\n rules: FormRuleItem[],\r\n trigger: string,\r\n): FormRuleItem[] {\r\n return rules\r\n .filter((rule) => {\r\n if (!trigger || trigger === '') return true\r\n if (!rule.trigger) return true\r\n if (Array.isArray(rule.trigger)) {\r\n return rule.trigger.includes(trigger)\r\n }\r\n return rule.trigger === trigger\r\n })\r\n .map((rule) => {\r\n const next = { ...rule }\r\n delete next.trigger\r\n return next\r\n })\r\n}\r\n\r\nexport function isRequiredFromRules(\r\n rules: FormRuleItem[],\r\n requiredProp?: boolean,\r\n): boolean {\r\n if (requiredProp) return true\r\n return rules.some((r) => !!r.required)\r\n}\r\n\r\n/** 读取嵌套路径 a.b.0.c */\r\nexport function getPropByPath(obj: any, path: string): any {\r\n if (!obj || !path) return undefined\r\n if (!path.includes('.')) return obj[path]\r\n const keys = path.replace(/\\[(\\w+)\\]/g, '.$1').replace(/^\\./, '').split('.')\r\n let cur = obj\r\n for (const key of keys) {\r\n if (cur == null) return undefined\r\n cur = cur[key]\r\n }\r\n return cur\r\n}\r\n\r\n/** 写入嵌套路径 */\r\nexport function setPropByPath(obj: any, path: string, value: any): void {\r\n if (!obj || !path) return\r\n if (!path.includes('.')) {\r\n obj[path] = value\r\n return\r\n }\r\n const keys = path.replace(/\\[(\\w+)\\]/g, '.$1').replace(/^\\./, '').split('.')\r\n let cur = obj\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i]\r\n if (cur[key] == null || typeof cur[key] !== 'object') {\r\n cur[key] = /^\\d+$/.test(keys[i + 1]) ? [] : {}\r\n }\r\n cur = cur[key]\r\n }\r\n cur[keys[keys.length - 1]] = value\r\n}\r\n\r\nexport function cloneValue<T>(value: T): T {\r\n if (value == null || typeof value !== 'object') return value\r\n try {\r\n return structuredClone(value)\r\n } catch {\r\n return JSON.parse(JSON.stringify(value)) as T\r\n }\r\n}\r\n\r\nexport function toCssWidth(value: string | number | undefined): string {\r\n if (value === undefined || value === '') return ''\r\n return typeof value === 'number' ? `${value}px` : value\r\n}\r\n"],"mappings":";;AAGA,SAAgB,eACd,OACgB;CAChB,IAAI,SAAS,MAAM,OAAO,CAAC;CAE3B,QADa,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAA,CACtC,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE;AACzC;;AAGA,SAAgB,gBAAgB,SAKb;CACjB,MAAM,WACJ,QAAQ,QAAQ,QAAQ,YACpB,eAAe,QAAQ,UAAU,QAAQ,KAAK,IAC9C,CAAC;CACP,MAAM,WAAW,eAAe,QAAQ,SAAS;CACjD,MAAM,eACJ,QAAQ,aAAa,KAAA,IACjB,CAAC;EAAE,UAAU,CAAC,CAAC,QAAQ;EAAU,SAAS,KAAA;CAAU,CAAC,IACrD,CAAC;CACP,OAAO;EAAC,GAAG;EAAU,GAAG;EAAU,GAAG;CAAY;AACnD;AAEA,SAAgB,qBACd,OACA,SACgB;CAChB,OAAO,MACJ,QAAQ,SAAS;EAChB,IAAI,CAAC,WAAW,YAAY,IAAI,OAAO;EACvC,IAAI,CAAC,KAAK,SAAS,OAAO;EAC1B,IAAI,MAAM,QAAQ,KAAK,OAAO,GAC5B,OAAO,KAAK,QAAQ,SAAS,OAAO;EAEtC,OAAO,KAAK,YAAY;CAC1B,CAAC,CAAC,CACD,KAAK,SAAS;EACb,MAAM,OAAO,EAAE,GAAG,KAAK;EACvB,OAAO,KAAK;EACZ,OAAO;CACT,CAAC;AACL;AAEA,SAAgB,oBACd,OACA,cACS;CACT,IAAI,cAAc,OAAO;CACzB,OAAO,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,QAAQ;AACvC;;AAGA,SAAgB,cAAc,KAAU,MAAmB;CACzD,IAAI,CAAC,OAAO,CAAC,MAAM,OAAO,KAAA;CAC1B,IAAI,CAAC,KAAK,SAAS,GAAG,GAAG,OAAO,IAAI;CACpC,MAAM,OAAO,KAAK,QAAQ,cAAc,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,GAAG;CAC3E,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAAM;EACtB,IAAI,OAAO,MAAM,OAAO,KAAA;EACxB,MAAM,IAAI;CACZ;CACA,OAAO;AACT;;AAGA,SAAgB,cAAc,KAAU,MAAc,OAAkB;CACtE,IAAI,CAAC,OAAO,CAAC,MAAM;CACnB,IAAI,CAAC,KAAK,SAAS,GAAG,GAAG;EACvB,IAAI,QAAQ;EACZ;CACF;CACA,MAAM,OAAO,KAAK,QAAQ,cAAc,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,GAAG;CAC3E,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;EACxC,MAAM,MAAM,KAAK;EACjB,IAAI,IAAI,QAAQ,QAAQ,OAAO,IAAI,SAAS,UAC1C,IAAI,OAAO,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;EAE/C,MAAM,IAAI;CACZ;CACA,IAAI,KAAK,KAAK,SAAS,MAAM;AAC/B;AAEA,SAAgB,WAAc,OAAa;CACzC,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU,OAAO;CACvD,IAAI;EACF,OAAO,gBAAgB,KAAK;CAC9B,QAAQ;EACN,OAAO,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;CACzC;AACF;AAEA,SAAgB,WAAW,OAA4C;CACrE,IAAI,UAAU,KAAA,KAAa,UAAU,IAAI,OAAO;CAChD,OAAO,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM;AACpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormItem.js","names":["computed","defineComponent","inject","nextTick","onMounted","onUnmounted","provide","reactive","ref","toRefs","Transition","createVNode","_createVNode","AsyncValidator","useComponentConfig","FORM_DATA_LEGACY_KEY","FORM_KEY","filterRulesByTrigger","getPropByPath","isRequiredFromRules","mergeFieldRules","setPropByPath","cloneValue","toCssWidth","FORM_ITEM_FALLBACK","FORM_ITEM_KEY","FORM_ITEM_LEGACY_KEY","propSizeToCssVars","toCssVarsStyle","name","props","label","type","String","default","undefined","prop","labelWidth","Number","required","Boolean","rules","Object","Array","error","validateStatus","showMessage","disabled","position","size","cssVars","emits","validate","_payload","slots","setup","emit","expose","cfg","form","message","validateState","initialValue","rootEl","displayState","value","errorMsg","labelWidthCss","labelStyle","ret","labelPosition","width","labelAlignClass","pos","labelPositionClass","p","isTopLabel","getRules","formRules","itemRules","fieldValue","model","trigger","callback","Promise","resolve","finish","isValid","msg","invalidFields","emitValidate","length","descriptor","validator","firstFields","errors","fields","clearValidate","resetField","formItemContext","$el","addField","removeField","showError","errorBorder","errorPosition"],"sources":["../../../components/formItem/FormItem.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onMounted,\r\n onUnmounted,\r\n provide,\r\n reactive,\r\n ref,\r\n toRefs,\r\n Transition,\r\n type CSSProperties,\r\n type PropType,\r\n type SlotsType,\r\n} from 'vue'\r\nimport AsyncValidator from 'async-validator'\r\nimport type { FormRuleItem } from '../../config/types'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport {\r\n FORM_DATA_LEGACY_KEY,\r\n FORM_KEY,\r\n type FormContext,\r\n} from '../form/context'\r\nimport {\r\n filterRulesByTrigger,\r\n getPropByPath,\r\n isRequiredFromRules,\r\n mergeFieldRules,\r\n setPropByPath,\r\n cloneValue,\r\n toCssWidth,\r\n} from '../form/_use/formRules'\r\nimport { FORM_ITEM_FALLBACK } from './config'\r\nimport {\r\n FORM_ITEM_KEY,\r\n FORM_ITEM_LEGACY_KEY,\r\n type FormItemExpose,\r\n type FormItemValidateCallback,\r\n type FormItemValidateState,\r\n} from './context'\r\nimport { propSizeToCssVars, toCssVarsStyle, type CssVars } from '../../util'\r\n\r\nexport type { FormItemGlobalConfig } from './config'\r\nexport { FORM_ITEM_FALLBACK } from './config'\r\nexport type {\r\n FormItemContext,\r\n FormItemExpose,\r\n FormItemValidateState,\r\n} from './context'\r\nexport { FORM_ITEM_KEY } from './context'\r\n\r\ntype FormItemSlots = {\r\n label?: () => any\r\n default?: () => any\r\n error?: (message: string) => any\r\n /** @deprecated 使用 error */\r\n message?: (message: string) => any\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'FormItem',\r\n props: {\r\n label: { type: String, default: undefined },\r\n prop: { type: String, default: undefined },\r\n labelWidth: {\r\n type: [String, Number] as PropType<string | number>,\r\n default: undefined,\r\n },\r\n required: { type: Boolean, default: undefined },\r\n rules: {\r\n type: [Object, Array] as PropType<FormRuleItem | FormRuleItem[]>,\r\n default: undefined,\r\n },\r\n error: { type: String, default: undefined },\r\n validateStatus: {\r\n type: String as PropType<FormItemValidateState>,\r\n default: undefined,\r\n },\r\n showMessage: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n position: {\r\n type: String as PropType<'top' | 'bottom' | 'center'>,\r\n default: undefined,\r\n },\r\n /** 行高基准 → `--w-prop-form-item-size` */\r\n size: { type: Number, default: undefined },\r\n /** 实例 CSS 变量 */\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n emits: {\r\n validate: (_payload: {\r\n prop?: string\r\n isValid: boolean\r\n message: string | null\r\n }) => true,\r\n },\r\n slots: Object as SlotsType<FormItemSlots>,\r\n setup(props, { slots, emit, expose }) {\r\n const cfg = useComponentConfig('FormItem', props, FORM_ITEM_FALLBACK)\r\n const form =\r\n inject(FORM_KEY, undefined) ??\r\n (inject(FORM_DATA_LEGACY_KEY, undefined) as FormContext | undefined)\r\n\r\n const message = ref('')\r\n const validateState = ref<FormItemValidateState>('')\r\n const initialValue = ref<any>()\r\n const rootEl = ref<HTMLElement | null>(null)\r\n\r\n const displayState = computed(() => {\r\n if (props.validateStatus) return props.validateStatus\r\n if (props.error) return 'error'\r\n return validateState.value\r\n })\r\n\r\n const errorMsg = computed(() => props.error || message.value)\r\n\r\n const labelWidthCss = computed(() =>\r\n toCssWidth(cfg.value.labelWidth ?? form?.labelWidth),\r\n )\r\n\r\n const labelStyle = computed(() => {\r\n const ret: CSSProperties = {}\r\n if (form?.labelPosition === 'top') return ret\r\n if (slots.label || props.label) {\r\n if (labelWidthCss.value) ret.width = labelWidthCss.value\r\n } else {\r\n ret.width = '0px'\r\n }\r\n return ret\r\n })\r\n\r\n const labelAlignClass = computed(() => {\r\n const pos = cfg.value.position || 'center'\r\n if (pos === 'top') return 'w-form-item-label-pos-top'\r\n if (pos === 'bottom') return 'w-form-item-label-pos-bottom'\r\n return 'w-form-item-label-pos-center'\r\n })\r\n\r\n const labelPositionClass = computed(() => {\r\n const p = form?.labelPosition || 'right'\r\n if (p === 'left') return 'w-form-item-label-left'\r\n if (p === 'top') return 'w-form-item-label-top'\r\n return 'w-form-item-label-default'\r\n })\r\n\r\n const isTopLabel = computed(() => form?.labelPosition === 'top')\r\n\r\n function getRules(): FormRuleItem[] {\r\n return mergeFieldRules({\r\n formRules: form?.rules,\r\n prop: props.prop,\r\n itemRules: props.rules,\r\n required: cfg.value.required,\r\n })\r\n }\r\n\r\n const required = computed(() =>\r\n isRequiredFromRules(getRules(), cfg.value.required),\r\n )\r\n\r\n const fieldValue = computed(() => {\r\n if (!form?.model || !props.prop) return undefined\r\n return getPropByPath(form.model, props.prop)\r\n })\r\n\r\n const validate = (\r\n trigger = '',\r\n callback?: FormItemValidateCallback,\r\n ): Promise<boolean> => {\r\n return new Promise((resolve) => {\r\n const finish = (\r\n isValid: boolean,\r\n msg = '',\r\n invalidFields?: Record<string, any>,\r\n ) => {\r\n if (!isValid) {\r\n validateState.value = 'error'\r\n message.value = props.error || msg\r\n } else {\r\n validateState.value = 'success'\r\n message.value = ''\r\n }\r\n callback?.(isValid ? undefined : message.value, invalidFields)\r\n emit('validate', {\r\n prop: props.prop,\r\n isValid,\r\n message: isValid ? null : message.value,\r\n })\r\n form?.emitValidate?.(\r\n props.prop || '',\r\n isValid,\r\n isValid ? null : message.value,\r\n )\r\n resolve(isValid)\r\n }\r\n\r\n if (!props.prop) {\r\n finish(true)\r\n return\r\n }\r\n\r\n const rules = filterRulesByTrigger(getRules(), trigger)\r\n if (!rules.length) {\r\n finish(true)\r\n return\r\n }\r\n\r\n validateState.value = 'validating'\r\n const descriptor: Record<string, FormRuleItem[]> = {\r\n [props.prop]: rules,\r\n }\r\n const validator = new AsyncValidator(descriptor)\r\n const model = { [props.prop]: fieldValue.value }\r\n\r\n validator.validate(model, { firstFields: true }, (errors, fields) => {\r\n if (errors?.length) {\r\n finish(\r\n false,\r\n errors[0].message || `${props.prop} is required`,\r\n fields as any,\r\n )\r\n } else {\r\n finish(true, '', fields as any)\r\n }\r\n })\r\n })\r\n }\r\n\r\n const clearValidate = () => {\r\n validateState.value = ''\r\n message.value = ''\r\n }\r\n\r\n const resetField = () => {\r\n if (form?.model && props.prop) {\r\n setPropByPath(form.model, props.prop, cloneValue(initialValue.value))\r\n }\r\n nextTick(() => clearValidate())\r\n }\r\n\r\n const formItemContext = reactive({\r\n ...toRefs(props),\r\n disabled: computed(() => !!(props.disabled || form?.disabled)),\r\n validateState,\r\n validate,\r\n clearValidate,\r\n resetField,\r\n get $el() {\r\n return rootEl.value\r\n },\r\n })\r\n\r\n provide(FORM_ITEM_KEY, formItemContext)\r\n provide(FORM_ITEM_LEGACY_KEY, formItemContext)\r\n\r\n onMounted(() => {\r\n if (props.prop) {\r\n initialValue.value = cloneValue(fieldValue.value)\r\n form?.addField(formItemContext as any)\r\n }\r\n })\r\n onUnmounted(() => {\r\n form?.removeField(formItemContext as any)\r\n })\r\n\r\n expose({\r\n validate,\r\n clearValidate,\r\n resetField,\r\n } satisfies FormItemExpose)\r\n\r\n return () => {\r\n const msg = errorMsg.value\r\n const showError =\r\n displayState.value === 'error' && cfg.value.showMessage && !!msg\r\n\r\n return (\r\n <div\r\n ref={rootEl}\r\n class={[\r\n 'w-form-item',\r\n isTopLabel.value ? 'w-form-item-top' : '',\r\n displayState.value === 'error' ? 'is-error' : '',\r\n displayState.value === 'success' ? 'is-success' : '',\r\n displayState.value === 'validating' ? 'is-validating' : '',\r\n ]}\r\n style={toCssVarsStyle({\r\n ...propSizeToCssVars('form-item', cfg.value.size),\r\n ...props.cssVars,\r\n })}>\r\n {(slots.label || props.label) && (\r\n <div\r\n style={labelStyle.value}\r\n class={[\r\n 'w-form-item-label',\r\n labelPositionClass.value,\r\n isTopLabel.value ? '' : labelAlignClass.value,\r\n required.value ? 'w-form-item-label-required' : '',\r\n ]}>\r\n <label>{slots.label?.() || props.label}</label>\r\n </div>\r\n )}\r\n <div class=\"w-form-item-content\">\r\n <div\r\n class={[\r\n 'w-form-item-wrapper',\r\n displayState.value === 'error' && form?.errorBorder\r\n ? 'w-form-item-wrapper-error'\r\n : '',\r\n ]}>\r\n {slots.default?.()}\r\n </div>\r\n <Transition name=\"w-form-error\">\r\n {showError ? (\r\n <div\r\n class={[\r\n 'w-form-item-error',\r\n form?.errorPosition === 'right'\r\n ? 'w-form-item-error-right'\r\n : 'w-form-item-error-bottom',\r\n ]}>\r\n {slots.error?.(msg) || slots.message?.(msg) || msg}\r\n </div>\r\n ) : null}\r\n </Transition>\r\n </div>\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"FormItem.js","names":["computed","defineComponent","inject","nextTick","onMounted","onUnmounted","provide","reactive","ref","toRefs","Transition","createVNode","_createVNode","AsyncValidator","useComponentConfig","FORM_DATA_LEGACY_KEY","FORM_KEY","filterRulesByTrigger","getPropByPath","isRequiredFromRules","mergeFieldRules","setPropByPath","cloneValue","toCssWidth","FORM_ITEM_FALLBACK","FORM_ITEM_KEY","FORM_ITEM_LEGACY_KEY","propSizeToCssVars","toCssVarsStyle","name","props","label","type","String","default","undefined","prop","labelWidth","Number","required","Boolean","rules","Object","Array","error","validateStatus","showMessage","disabled","position","size","cssVars","emits","validate","_payload","slots","setup","emit","expose","cfg","form","message","validateState","initialValue","rootEl","displayState","value","errorMsg","labelWidthCss","labelStyle","ret","labelPosition","width","labelAlignClass","pos","labelPositionClass","p","isTopLabel","getRules","formRules","itemRules","fieldValue","model","trigger","callback","Promise","resolve","finish","isValid","msg","invalidFields","emitValidate","length","descriptor","validator","firstFields","errors","fields","clearValidate","resetField","formItemContext","$el","addField","removeField","showError","errorBorder","errorPosition"],"sources":["../../../components/formItem/FormItem.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onMounted,\r\n onUnmounted,\r\n provide,\r\n reactive,\r\n ref,\r\n toRefs,\r\n Transition,\r\n type CSSProperties,\r\n type PropType,\r\n type SlotsType,\r\n} from 'vue'\r\nimport AsyncValidator from 'async-validator'\r\nimport type { FormRuleItem } from '../../config/types'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport {\r\n FORM_DATA_LEGACY_KEY,\r\n FORM_KEY,\r\n type FormContext,\r\n} from '../form/context'\r\nimport {\r\n filterRulesByTrigger,\r\n getPropByPath,\r\n isRequiredFromRules,\r\n mergeFieldRules,\r\n setPropByPath,\r\n cloneValue,\r\n toCssWidth,\r\n} from '../form/_use/formRules'\r\nimport { FORM_ITEM_FALLBACK } from './config'\r\nimport {\r\n FORM_ITEM_KEY,\r\n FORM_ITEM_LEGACY_KEY,\r\n type FormItemExpose,\r\n type FormItemValidateCallback,\r\n type FormItemValidateState,\r\n} from './context'\r\nimport { propSizeToCssVars, toCssVarsStyle, type CssVars } from '../../util'\r\n\r\nexport type { FormItemGlobalConfig } from './config'\r\nexport { FORM_ITEM_FALLBACK } from './config'\r\nexport type {\r\n FormItemContext,\r\n FormItemExpose,\r\n FormItemValidateState,\r\n} from './context'\r\nexport { FORM_ITEM_KEY } from './context'\r\n\r\ntype FormItemSlots = {\r\n label?: () => any\r\n default?: () => any\r\n error?: (message: string) => any\r\n /** @deprecated 使用 error */\r\n message?: (message: string) => any\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'FormItem',\r\n props: {\r\n label: { type: String, default: undefined },\r\n prop: { type: String, default: undefined },\r\n labelWidth: {\r\n type: [String, Number] as PropType<string | number>,\r\n default: undefined,\r\n },\r\n required: { type: Boolean, default: undefined },\r\n rules: {\r\n type: [Object, Array] as PropType<FormRuleItem | FormRuleItem[]>,\r\n default: undefined,\r\n },\r\n error: { type: String, default: undefined },\r\n validateStatus: {\r\n type: String as PropType<FormItemValidateState>,\r\n default: undefined,\r\n },\r\n showMessage: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n position: {\r\n type: String as PropType<'top' | 'bottom' | 'center'>,\r\n default: undefined,\r\n },\r\n /** 行高基准 → `--w-prop-form-item-size` */\r\n size: { type: Number, default: undefined },\r\n /** 实例 CSS 变量 */\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n emits: {\r\n validate: (_payload: {\r\n prop?: string\r\n isValid: boolean\r\n message: string | null\r\n }) => true,\r\n },\r\n slots: Object as SlotsType<FormItemSlots>,\r\n setup(props, { slots, emit, expose }) {\r\n const cfg = useComponentConfig('FormItem', props, FORM_ITEM_FALLBACK)\r\n const form =\r\n inject(FORM_KEY, undefined) ??\r\n (inject(FORM_DATA_LEGACY_KEY, undefined) as FormContext | undefined)\r\n\r\n const message = ref('')\r\n const validateState = ref<FormItemValidateState>('')\r\n const initialValue = ref<any>()\r\n const rootEl = ref<HTMLElement | null>(null)\r\n\r\n const displayState = computed(() => {\r\n if (props.validateStatus) return props.validateStatus\r\n if (props.error) return 'error'\r\n return validateState.value\r\n })\r\n\r\n const errorMsg = computed(() => props.error || message.value)\r\n\r\n const labelWidthCss = computed(() =>\r\n toCssWidth(cfg.value.labelWidth ?? form?.labelWidth),\r\n )\r\n\r\n const labelStyle = computed(() => {\r\n const ret: CSSProperties = {}\r\n if (form?.labelPosition === 'top') return ret\r\n if (slots.label || props.label) {\r\n if (labelWidthCss.value) ret.width = labelWidthCss.value\r\n } else {\r\n ret.width = '0px'\r\n }\r\n return ret\r\n })\r\n\r\n const labelAlignClass = computed(() => {\r\n const pos = cfg.value.position || 'center'\r\n if (pos === 'top') return 'w-form-item-label-pos-top'\r\n if (pos === 'bottom') return 'w-form-item-label-pos-bottom'\r\n return 'w-form-item-label-pos-center'\r\n })\r\n\r\n const labelPositionClass = computed(() => {\r\n const p = form?.labelPosition || 'right'\r\n if (p === 'left') return 'w-form-item-label-left'\r\n if (p === 'top') return 'w-form-item-label-top'\r\n return 'w-form-item-label-default'\r\n })\r\n\r\n const isTopLabel = computed(() => form?.labelPosition === 'top')\r\n\r\n function getRules(): FormRuleItem[] {\r\n return mergeFieldRules({\r\n formRules: form?.rules,\r\n prop: props.prop,\r\n itemRules: props.rules,\r\n required: cfg.value.required,\r\n })\r\n }\r\n\r\n const required = computed(() =>\r\n isRequiredFromRules(getRules(), cfg.value.required),\r\n )\r\n\r\n const fieldValue = computed(() => {\r\n if (!form?.model || !props.prop) return undefined\r\n return getPropByPath(form.model, props.prop)\r\n })\r\n\r\n const validate = (\r\n trigger = '',\r\n callback?: FormItemValidateCallback,\r\n ): Promise<boolean> => {\r\n return new Promise((resolve) => {\r\n const finish = (\r\n isValid: boolean,\r\n msg = '',\r\n invalidFields?: Record<string, any>,\r\n ) => {\r\n if (!isValid) {\r\n validateState.value = 'error'\r\n message.value = props.error || msg\r\n } else {\r\n validateState.value = 'success'\r\n message.value = ''\r\n }\r\n callback?.(isValid ? undefined : message.value, invalidFields)\r\n emit('validate', {\r\n prop: props.prop,\r\n isValid,\r\n message: isValid ? null : message.value,\r\n })\r\n form?.emitValidate?.(\r\n props.prop || '',\r\n isValid,\r\n isValid ? null : message.value,\r\n )\r\n resolve(isValid)\r\n }\r\n\r\n if (!props.prop) {\r\n finish(true)\r\n return\r\n }\r\n\r\n const rules = filterRulesByTrigger(getRules(), trigger)\r\n if (!rules.length) {\r\n finish(true)\r\n return\r\n }\r\n\r\n validateState.value = 'validating'\r\n const descriptor: Record<string, FormRuleItem[]> = {\r\n [props.prop]: rules,\r\n }\r\n const validator = new AsyncValidator(descriptor as any)\r\n const model = { [props.prop]: fieldValue.value }\r\n\r\n validator.validate(model, { firstFields: true }, (errors, fields) => {\r\n if (errors?.length) {\r\n finish(\r\n false,\r\n errors[0].message || `${props.prop} is required`,\r\n fields as any,\r\n )\r\n } else {\r\n finish(true, '', fields as any)\r\n }\r\n })\r\n })\r\n }\r\n\r\n const clearValidate = () => {\r\n validateState.value = ''\r\n message.value = ''\r\n }\r\n\r\n const resetField = () => {\r\n if (form?.model && props.prop) {\r\n setPropByPath(form.model, props.prop, cloneValue(initialValue.value))\r\n }\r\n nextTick(() => clearValidate())\r\n }\r\n\r\n const formItemContext = reactive({\r\n ...toRefs(props),\r\n disabled: computed(() => !!(props.disabled || form?.disabled)),\r\n validateState,\r\n validate,\r\n clearValidate,\r\n resetField,\r\n get $el() {\r\n return rootEl.value\r\n },\r\n })\r\n\r\n provide(FORM_ITEM_KEY, formItemContext)\r\n provide(FORM_ITEM_LEGACY_KEY, formItemContext)\r\n\r\n onMounted(() => {\r\n if (props.prop) {\r\n initialValue.value = cloneValue(fieldValue.value)\r\n form?.addField(formItemContext as any)\r\n }\r\n })\r\n onUnmounted(() => {\r\n form?.removeField(formItemContext as any)\r\n })\r\n\r\n expose({\r\n validate,\r\n clearValidate,\r\n resetField,\r\n } satisfies FormItemExpose)\r\n\r\n return () => {\r\n const msg = errorMsg.value\r\n const showError =\r\n displayState.value === 'error' && cfg.value.showMessage && !!msg\r\n\r\n return (\r\n <div\r\n ref={rootEl}\r\n class={[\r\n 'w-form-item',\r\n isTopLabel.value ? 'w-form-item-top' : '',\r\n displayState.value === 'error' ? 'is-error' : '',\r\n displayState.value === 'success' ? 'is-success' : '',\r\n displayState.value === 'validating' ? 'is-validating' : '',\r\n ]}\r\n style={toCssVarsStyle({\r\n ...propSizeToCssVars('form-item', cfg.value.size),\r\n ...props.cssVars,\r\n })}>\r\n {(slots.label || props.label) && (\r\n <div\r\n style={labelStyle.value}\r\n class={[\r\n 'w-form-item-label',\r\n labelPositionClass.value,\r\n isTopLabel.value ? '' : labelAlignClass.value,\r\n required.value ? 'w-form-item-label-required' : '',\r\n ]}>\r\n <label>{slots.label?.() || props.label}</label>\r\n </div>\r\n )}\r\n <div class=\"w-form-item-content\">\r\n <div\r\n class={[\r\n 'w-form-item-wrapper',\r\n displayState.value === 'error' && form?.errorBorder\r\n ? 'w-form-item-wrapper-error'\r\n : '',\r\n ]}>\r\n {slots.default?.()}\r\n </div>\r\n <Transition name=\"w-form-error\">\r\n {showError ? (\r\n <div\r\n class={[\r\n 'w-form-item-error',\r\n form?.errorPosition === 'right'\r\n ? 'w-form-item-error-right'\r\n : 'w-form-item-error-bottom',\r\n ]}>\r\n {slots.error?.(msg) || slots.message?.(msg) || msg}\r\n </div>\r\n ) : null}\r\n </Transition>\r\n </div>\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { DefineComponent } from 'vue';
1
2
  import { CssVars } from '../../util';
2
3
  export type { ImageGlobalConfig } from './config';
3
4
  export { IMAGE_FALLBACK } from './config';
@@ -12,10 +13,7 @@ export type ImageProps = {
12
13
  cssVars?: CssVars;
13
14
  };
14
15
  export type ImageJSXProps = ImageProps & Omit<JSX.IntrinsicElements['div'], keyof ImageProps | 'ref'>;
15
- export type ImageComponent = {
16
- new (): {
17
- $props: ImageJSXProps;
18
- };
19
- };
20
- declare const _default: ImageComponent;
21
- export default _default;
16
+ /** 断言为 DefineComponent,hover / 补全直接看到 ImageJSXProps(勿再包 XxxComponent 别名) */
17
+ declare const Image: DefineComponent<ImageJSXProps>;
18
+ export type ImageInstance = InstanceType<typeof Image>;
19
+ export default Image;
@@ -3,7 +3,8 @@ import { propSizeToCssVars, toCssVarsStyle } from "../../util/cssVars.js";
3
3
  import { IMAGE_FALLBACK } from "./config.js";
4
4
  import { computed, createVNode, defineComponent, mergeProps } from "vue";
5
5
  //#region components/image/Image.tsx
6
- var ImageImpl = /* @__PURE__ */ defineComponent({
6
+ /** 断言为 DefineComponent,hover / 补全直接看到 ImageJSXProps(勿再包 XxxComponent 别名) */
7
+ var Image = /* @__PURE__ */ defineComponent({
7
8
  name: "Image",
8
9
  inheritAttrs: false,
9
10
  props: {
@@ -63,6 +64,6 @@ var ImageImpl = /* @__PURE__ */ defineComponent({
63
64
  }
64
65
  });
65
66
  //#endregion
66
- export { ImageImpl as default };
67
+ export { Image as default };
67
68
 
68
69
  //# sourceMappingURL=Image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","names":["computed","defineComponent","mergeProps","createVNode","_createVNode","propSizeToCssVars","toCssVarsStyle","useComponentConfig","IMAGE_FALLBACK","ImageImpl","name","inheritAttrs","props","src","type","String","default","undefined","size","Number","round","Boolean","shadow","alt","cssVars","Object","setup","attrs","cfg","isRound","value","radiusCss","r","hasSrc","rootProps","class","style"],"sources":["../../../components/image/Image.tsx"],"sourcesContent":["import { computed, defineComponent, mergeProps, type PropType } from 'vue'\r\nimport {\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport { IMAGE_FALLBACK } from './config'\r\n\r\nexport type { ImageGlobalConfig } from './config'\r\nexport { IMAGE_FALLBACK } from './config'\r\n\r\nexport type ImageProps = {\r\n src?: string\r\n /** 尺度核(px)→ `--w-prop-image-size` */\r\n size?: number\r\n /** true → 圆形;string → 自定义圆角 */\r\n round?: boolean | string\r\n shadow?: boolean\r\n alt?: string\r\n cssVars?: CssVars\r\n}\r\n\r\nexport type ImageJSXProps = ImageProps &\r\n Omit<JSX.IntrinsicElements['div'], keyof ImageProps | 'ref'>\r\n\r\nexport type ImageComponent = {\r\n new (): {\r\n $props: ImageJSXProps\r\n }\r\n}\r\n\r\nconst ImageImpl = defineComponent({\r\n name: 'Image',\r\n inheritAttrs: false,\r\n props: {\r\n src: { type: String, default: undefined },\r\n size: { type: Number, default: undefined },\r\n round: {\r\n type: [Boolean, String] as PropType<boolean | string>,\r\n default: undefined,\r\n },\r\n shadow: { type: Boolean, default: undefined },\r\n alt: { type: String, default: undefined },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n setup(props, { attrs }) {\r\n const cfg = useComponentConfig('Image', props, IMAGE_FALLBACK)\r\n\r\n const isRound = computed(() => cfg.value.round === true)\r\n const radiusCss = computed(() => {\r\n const r = cfg.value.round\r\n if (typeof r === 'string' && r) {\r\n return { '--w-prop-image-radius': r } as CssVars\r\n }\r\n return undefined\r\n })\r\n\r\n return () => {\r\n const hasSrc = Boolean(props.src)\r\n const rootProps = mergeProps(\r\n {\r\n class: [\r\n 'w-image',\r\n {\r\n 'w-image--round': isRound.value,\r\n 'w-image--shadow': cfg.value.shadow,\r\n 'w-image--placeholder': !hasSrc,\r\n },\r\n ],\r\n style: toCssVarsStyle({\r\n ...propSizeToCssVars('image', cfg.value.size),\r\n ...radiusCss.value,\r\n ...props.cssVars,\r\n }),\r\n },\r\n attrs,\r\n )\r\n\r\n return (\r\n <div {...rootProps}>\r\n {hasSrc ? (\r\n <img\r\n class=\"w-image__img\"\r\n src={props.src}\r\n alt={cfg.value.alt ?? ''}\r\n draggable={false}\r\n />\r\n ) : null}\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n\r\nexport default ImageImpl as unknown as ImageComponent\r\n"],"mappings":";;;;;AAgCA,IAAMS,YAAYR,gCAAgB;CAChCS,MAAM;CACNC,cAAc;CACdC,OAAO;EACLC,KAAK;GAAEC,MAAMC;GAAQC,SAASC,KAAAA;EAAU;EACxCC,MAAM;GAAEJ,MAAMK;GAAQH,SAASC,KAAAA;EAAU;EACzCG,OAAO;GACLN,MAAM,CAACO,SAASN,MAAM;GACtBC,SAASC,KAAAA;EACX;EACAK,QAAQ;GAAER,MAAMO;GAASL,SAASC,KAAAA;EAAU;EAC5CM,KAAK;GAAET,MAAMC;GAAQC,SAASC,KAAAA;EAAU;EACxCO,SAAS;GAAEV,MAAMW;GAA6BT,SAASC,KAAAA;EAAU;CACnE;CACAS,MAAMd,OAAO,EAAEe,SAAS;EACtB,MAAMC,MAAMrB,mBAAmB,SAASK,OAAOJ,cAAc;EAE7D,MAAMqB,UAAU7B,eAAe4B,IAAIE,MAAMV,UAAU,IAAI;EACvD,MAAMW,YAAY/B,eAAe;GAC/B,MAAMgC,IAAIJ,IAAIE,MAAMV;GACpB,IAAI,OAAOY,MAAM,YAAYA,GAC3B,OAAO,EAAE,yBAAyBA,EAAE;EAGxC,CAAC;EAED,aAAa;GACX,MAAMC,SAASZ,QAAQT,MAAMC,GAAG;GAChC,MAAMqB,YAAYhC,WAChB;IACEiC,OAAO,CACL,WACA;KACE,kBAAkBN,QAAQC;KAC1B,mBAAmBF,IAAIE,MAAMR;KAC7B,wBAAwB,CAACW;IAC3B,CAAC;IAEHG,OAAO9B,eAAe;KACpB,GAAGD,kBAAkB,SAASuB,IAAIE,MAAMZ,IAAI;KAC5C,GAAGa,UAAUD;KACb,GAAGlB,MAAMY;IACX,CAAC;GACH,GACAG,KACF;GAEA,OAAAvB,YAAA,OACW8B,WAAS,CACfD,SAAM7B,YAAA,OAAA;IAAA,SAAA;IAAA,OAGEQ,MAAMC;IAAG,OACTe,IAAIE,MAAMP,OAAO;IAAE,aACb;GAAK,GAAA,IAAA,IAEhB,IAAI,CAAA;EAGd;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"Image.js","names":["computed","defineComponent","mergeProps","createVNode","_createVNode","propSizeToCssVars","toCssVarsStyle","useComponentConfig","IMAGE_FALLBACK","ImageImpl","name","inheritAttrs","props","src","type","String","default","undefined","size","Number","round","Boolean","shadow","alt","cssVars","Object","setup","attrs","cfg","isRound","value","radiusCss","r","hasSrc","rootProps","class","style","Image"],"sources":["../../../components/image/Image.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n mergeProps,\r\n type DefineComponent,\r\n type PropType,\r\n} from 'vue'\r\nimport {\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport { IMAGE_FALLBACK } from './config'\r\n\r\nexport type { ImageGlobalConfig } from './config'\r\nexport { IMAGE_FALLBACK } from './config'\r\n\r\nexport type ImageProps = {\r\n src?: string\r\n /** 尺度核(px)→ `--w-prop-image-size` */\r\n size?: number\r\n /** true → 圆形;string → 自定义圆角 */\r\n round?: boolean | string\r\n shadow?: boolean\r\n alt?: string\r\n cssVars?: CssVars\r\n}\r\n\r\nexport type ImageJSXProps = ImageProps &\r\n Omit<JSX.IntrinsicElements['div'], keyof ImageProps | 'ref'>\r\n\r\nconst ImageImpl = defineComponent({\r\n name: 'Image',\r\n inheritAttrs: false,\r\n props: {\r\n src: { type: String, default: undefined },\r\n size: { type: Number, default: undefined },\r\n round: {\r\n type: [Boolean, String] as PropType<boolean | string>,\r\n default: undefined,\r\n },\r\n shadow: { type: Boolean, default: undefined },\r\n alt: { type: String, default: undefined },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n setup(props, { attrs }) {\r\n const cfg = useComponentConfig('Image', props, IMAGE_FALLBACK)\r\n\r\n const isRound = computed(() => cfg.value.round === true)\r\n const radiusCss = computed(() => {\r\n const r = cfg.value.round\r\n if (typeof r === 'string' && r) {\r\n return { '--w-prop-image-radius': r } as CssVars\r\n }\r\n return undefined\r\n })\r\n\r\n return () => {\r\n const hasSrc = Boolean(props.src)\r\n const rootProps = mergeProps(\r\n {\r\n class: [\r\n 'w-image',\r\n {\r\n 'w-image--round': isRound.value,\r\n 'w-image--shadow': cfg.value.shadow,\r\n 'w-image--placeholder': !hasSrc,\r\n },\r\n ],\r\n style: toCssVarsStyle({\r\n ...propSizeToCssVars('image', cfg.value.size),\r\n ...radiusCss.value,\r\n ...props.cssVars,\r\n }),\r\n },\r\n attrs,\r\n )\r\n\r\n return (\r\n <div {...rootProps}>\r\n {hasSrc ? (\r\n <img\r\n class=\"w-image__img\"\r\n src={props.src}\r\n alt={cfg.value.alt ?? ''}\r\n draggable={false}\r\n />\r\n ) : null}\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n\r\n/** 断言为 DefineComponent,hover / 补全直接看到 ImageJSXProps(勿再包 XxxComponent 别名) */\r\nconst Image = ImageImpl as unknown as DefineComponent<ImageJSXProps>\r\n\r\nexport type ImageInstance = InstanceType<typeof Image>\r\n\r\nexport default Image\r\n"],"mappings":";;;;;;AAgGA,IAAMqC,QAhEYpC,gCAAgB;CAChCS,MAAM;CACNC,cAAc;CACdC,OAAO;EACLC,KAAK;GAAEC,MAAMC;GAAQC,SAASC,KAAAA;EAAU;EACxCC,MAAM;GAAEJ,MAAMK;GAAQH,SAASC,KAAAA;EAAU;EACzCG,OAAO;GACLN,MAAM,CAACO,SAASN,MAAM;GACtBC,SAASC,KAAAA;EACX;EACAK,QAAQ;GAAER,MAAMO;GAASL,SAASC,KAAAA;EAAU;EAC5CM,KAAK;GAAET,MAAMC;GAAQC,SAASC,KAAAA;EAAU;EACxCO,SAAS;GAAEV,MAAMW;GAA6BT,SAASC,KAAAA;EAAU;CACnE;CACAS,MAAMd,OAAO,EAAEe,SAAS;EACtB,MAAMC,MAAMrB,mBAAmB,SAASK,OAAOJ,cAAc;EAE7D,MAAMqB,UAAU7B,eAAe4B,IAAIE,MAAMV,UAAU,IAAI;EACvD,MAAMW,YAAY/B,eAAe;GAC/B,MAAMgC,IAAIJ,IAAIE,MAAMV;GACpB,IAAI,OAAOY,MAAM,YAAYA,GAC3B,OAAO,EAAE,yBAAyBA,EAAE;EAGxC,CAAC;EAED,aAAa;GACX,MAAMC,SAASZ,QAAQT,MAAMC,GAAG;GAChC,MAAMqB,YAAYhC,WAChB;IACEiC,OAAO,CACL,WACA;KACE,kBAAkBN,QAAQC;KAC1B,mBAAmBF,IAAIE,MAAMR;KAC7B,wBAAwB,CAACW;IAC3B,CAAC;IAEHG,OAAO9B,eAAe;KACpB,GAAGD,kBAAkB,SAASuB,IAAIE,MAAMZ,IAAI;KAC5C,GAAGa,UAAUD;KACb,GAAGlB,MAAMY;IACX,CAAC;GACH,GACAG,KACF;GAEA,OAAAvB,YAAA,OACW8B,WAAS,CACfD,SAAM7B,YAAA,OAAA;IAAA,SAAA;IAAA,OAGEQ,MAAMC;IAAG,OACTe,IAAIE,MAAMP,OAAO;IAAE,aACb;GAAK,GAAA,IAAA,IAEhB,IAAI,CAAA;EAGd;CACF;AACF,CAGcd"}