@will-ui/vue 1.0.0 → 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,3 +1,4 @@
1
+ import { DefineComponent } from 'vue';
1
2
  import { BtnMode, BtnType } from '../../config/types';
2
3
  import { CssVars } from '../../util';
3
4
  import { BtnHtmlType, BtnSize } from './context';
@@ -35,11 +36,7 @@ export type BtnJSXProps = BtnProps & Omit<JSX.IntrinsicElements['button'], keyof
35
36
  'v-slots'?: BtnSlots;
36
37
  vSlots?: BtnSlots;
37
38
  };
38
- export type BtnComponent = {
39
- new (): {
40
- $props: BtnJSXProps;
41
- };
42
- };
43
- declare const Btn: BtnComponent;
44
- export type BtnInstance = InstanceType<BtnComponent>;
39
+ /** 断言为 DefineComponent,hover / 补全直接看到 BtnJSXProps(勿再包 XxxComponent 别名) */
40
+ declare const Btn: DefineComponent<BtnJSXProps>;
41
+ export type BtnInstance = InstanceType<typeof Btn>;
45
42
  export default Btn;
@@ -5,6 +5,7 @@ import { BTN_GROUP_KEY } from "./context.js";
5
5
  import { BTN_FALLBACK } from "./config.js";
6
6
  import { Transition, computed, createVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, onUnmounted, ref } from "vue";
7
7
  //#region components/btn/Btn.tsx
8
+ /** 断言为 DefineComponent,hover / 补全直接看到 BtnJSXProps(勿再包 XxxComponent 别名) */
8
9
  var Btn = /* @__PURE__ */ defineComponent({
9
10
  name: "Btn",
10
11
  inheritAttrs: false,
@@ -1 +1 @@
1
- {"version":3,"file":"Btn.js","names":["computed","defineComponent","inject","mergeProps","normalizeClass","normalizeStyle","onUnmounted","ref","Transition","createVNode","_createVNode","isBoolean","isNumber","propColorToCssVars","propSizeToCssVars","toCssVarsStyle","useComponentConfig","BTN_GROUP_KEY","BTN_FALLBACK","BtnImpl","name","inheritAttrs","props","tag","type","String","default","undefined","htmlType","mode","size","Number","color","cssVars","Object","block","Boolean","capsule","disabled","loading","text","sleep","slots","setup","attrs","group","cfg","cooling","sleepTimer","btnType","value","btnMode","btnSize","btnColor","tagName","sleepMs","s","Math","max","inactive","klass","tokenStyle","clearSleep","clearTimeout","invokeAttrClick","handler","e","Array","isArray","fn","onClick","preventDefault","stopPropagation","ms","setTimeout","Tag","_attrsClick","restAttrs","rootProps","class","style","Btn"],"sources":["../../../components/btn/Btn.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n mergeProps,\r\n normalizeClass,\r\n normalizeStyle,\r\n onUnmounted,\r\n ref,\r\n Transition,\r\n} from 'vue'\r\nimport type { PropType, SlotsType } from 'vue'\r\nimport type { BtnMode, BtnType } from '../../config/types'\r\nimport {\r\n isBoolean,\r\n isNumber,\r\n propColorToCssVars,\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport {\r\n BTN_GROUP_KEY,\r\n type BtnHtmlType,\r\n type BtnSize,\r\n} from './context'\r\nimport { BTN_FALLBACK, type BtnGlobalConfig } from './config'\r\n\r\nexport type { BtnSize, BtnHtmlType, BtnGroupContext } from './context'\r\nexport type { BtnGlobalConfig } from './config'\r\nexport { BTN_GROUP_KEY } from './context'\r\nexport { BTN_FALLBACK } from './config'\r\n\r\nexport type BtnSlots = {\r\n default?: () => any\r\n /** loading 时左侧指示器,默认内置转圈 */\r\n loading?: () => any\r\n}\r\n\r\nexport type BtnProps = {\r\n tag?: keyof HTMLElementTagNameMap\r\n htmlType?: BtnHtmlType\r\n type?: BtnType\r\n mode?: BtnMode\r\n size?: BtnSize\r\n color?: string\r\n block?: boolean\r\n capsule?: boolean\r\n disabled?: boolean\r\n loading?: boolean\r\n text?: string | number\r\n sleep?: boolean | number\r\n /** 实例 CSS 变量(如 `--w-prop-btn-bg-color`) */\r\n cssVars?: CssVars\r\n}\r\n\r\n/**\r\n * 运行时靠 attrs 透传到根节点;不声明 click emit,onClick 等走原生 fallthrough。\r\n * TSX 需在 $props 上并上原生属性,否则 onClick / class 等会在类型上被判为不存在。\r\n * tag 可为 a 等,故并上常用锚点属性(href / target / rel)。\r\n */\r\nexport type BtnJSXProps = BtnProps &\r\n Omit<JSX.IntrinsicElements['button'], keyof BtnProps | 'ref'> &\r\n Partial<\r\n Pick<JSX.IntrinsicElements['a'], 'href' | 'target' | 'rel' | 'download'>\r\n > & {\r\n 'v-slots'?: BtnSlots\r\n vSlots?: BtnSlots\r\n }\r\n\r\nexport type BtnComponent = {\r\n new (): {\r\n $props: BtnJSXProps\r\n }\r\n}\r\n\r\ntype AttrClickHandler = (e: MouseEvent) => void\r\ntype AttrClick = AttrClickHandler | AttrClickHandler[] | undefined\r\n\r\nconst BtnImpl = defineComponent({\r\n name: 'Btn',\r\n inheritAttrs: false,\r\n props: {\r\n tag: {\r\n type: String as PropType<keyof HTMLElementTagNameMap>,\r\n default: undefined,\r\n },\r\n htmlType: {\r\n type: String as PropType<BtnHtmlType>,\r\n default: undefined,\r\n },\r\n type: { type: String as PropType<BtnType>, default: undefined },\r\n mode: { type: String as PropType<BtnMode>, default: undefined },\r\n size: { type: Number as PropType<BtnSize>, default: undefined },\r\n /** 品牌主色 → `--w-prop-btn-color`(prop > `--w-btn-color` > `--w-color`) */\r\n color: { type: String, default: undefined },\r\n /** 实例 CSS 变量(如 `--w-prop-btn-bg-color`) */\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n // Boolean 必须 default: undefined,否则未传会变成 false,全局配置无效\r\n block: { type: Boolean, default: undefined },\r\n capsule: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n loading: { type: Boolean, default: undefined },\r\n text: { type: [String, Number] as PropType<string | number>, default: undefined },\r\n sleep: {\r\n type: [Boolean, Number] as PropType<boolean | number>,\r\n default: undefined,\r\n },\r\n },\r\n slots: Object as SlotsType<BtnSlots>,\r\n setup(props, { slots, attrs }) {\r\n const group = inject(BTN_GROUP_KEY, undefined)\r\n const cfg = useComponentConfig('Btn', props, BTN_FALLBACK)\r\n\r\n const cooling = ref(false)\r\n let sleepTimer: ReturnType<typeof setTimeout> | undefined\r\n\r\n // 优先级:显式 props > BtnGroup > 全局配置 > FALLBACK(后两档已由 cfg 合并)\r\n const btnType = computed(\r\n () => props.type ?? group?.type ?? cfg.value.type,\r\n )\r\n const btnMode = computed(\r\n () => props.mode ?? group?.mode ?? cfg.value.mode,\r\n )\r\n const btnSize = computed(\r\n () => props.size ?? group?.size ?? cfg.value.size,\r\n )\r\n const btnColor = computed(\r\n () => props.color ?? group?.color ?? cfg.value.color,\r\n )\r\n const block = computed(() => props.block ?? cfg.value.block)\r\n const capsule = computed(() => props.capsule ?? cfg.value.capsule)\r\n const disabled = computed(() => props.disabled ?? cfg.value.disabled)\r\n const loading = computed(() => props.loading ?? cfg.value.loading)\r\n const htmlType = computed(() => props.htmlType ?? cfg.value.htmlType)\r\n const tagName = computed(() => props.tag ?? cfg.value.tag)\r\n const sleep = computed(() => props.sleep ?? cfg.value.sleep)\r\n const text = computed(() => props.text ?? cfg.value.text)\r\n\r\n const sleepMs = computed(() => {\r\n const s = sleep.value\r\n if (!s) return 0\r\n if (isBoolean(s)) return 500\r\n if (isNumber(s)) return Math.max(0, s)\r\n return 0\r\n })\r\n\r\n const inactive = computed(\r\n () => disabled.value || loading.value || cooling.value,\r\n )\r\n\r\n const klass = computed(() => [\r\n 'w-btn',\r\n {\r\n 'w-btn-gap': !group,\r\n 'w-btn-capsule': capsule.value,\r\n 'w-btn-block': block.value,\r\n 'w-btn-disabled': disabled.value,\r\n 'w-btn-loading': loading.value,\r\n 'w-btn-cooling': cooling.value,\r\n [`w-btn-${btnType.value}`]: !!btnType.value,\r\n [`w-btn-mode-${btnMode.value}`]: !!btnMode.value,\r\n },\r\n ])\r\n\r\n const tokenStyle = computed(() =>\r\n toCssVarsStyle({\r\n ...propSizeToCssVars('btn', btnSize.value),\r\n ...propColorToCssVars('btn', btnColor.value),\r\n ...props.cssVars,\r\n }),\r\n )\r\n\r\n function clearSleep() {\r\n if (sleepTimer !== undefined) {\r\n clearTimeout(sleepTimer)\r\n sleepTimer = undefined\r\n }\r\n cooling.value = false\r\n }\r\n\r\n function invokeAttrClick(handler: AttrClick, e: MouseEvent) {\r\n if (!handler) return\r\n if (Array.isArray(handler)) {\r\n for (const fn of handler) fn(e)\r\n } else {\r\n handler(e)\r\n }\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n if (inactive.value) {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n return\r\n }\r\n // 不声明 emits.click:用户 onClick / @click 在 attrs 里,需在守卫通过后手动调用\r\n invokeAttrClick(attrs.onClick as AttrClick, e)\r\n const ms = sleepMs.value\r\n if (ms > 0) {\r\n cooling.value = true\r\n sleepTimer = setTimeout(() => {\r\n cooling.value = false\r\n sleepTimer = undefined\r\n }, ms)\r\n }\r\n }\r\n\r\n onUnmounted(clearSleep)\r\n\r\n return () => {\r\n const Tag = tagName.value\r\n // 抽出 onClick,避免 mergeProps 把 attrs.onClick 与守卫串联(inactive 时仍会触发)\r\n const { onClick: _attrsClick, ...restAttrs } = attrs as Record<\r\n string,\r\n unknown\r\n > & { onClick?: AttrClick }\r\n\r\n const rootProps = mergeProps(\r\n {\r\n class: normalizeClass([klass.value, attrs.class]),\r\n style: normalizeStyle([tokenStyle.value, attrs.style]),\r\n disabled:\r\n Tag === 'button' ? disabled.value || loading.value : undefined,\r\n type: Tag === 'button' ? htmlType.value : undefined,\r\n 'aria-disabled': inactive.value || undefined,\r\n 'aria-busy': loading.value || undefined,\r\n onClick,\r\n },\r\n restAttrs,\r\n )\r\n\r\n return (\r\n <Tag {...rootProps}>\r\n <Transition name=\"w-btn-loading\" appear>\r\n {loading.value ? (\r\n <span class=\"w-btn-loading-wrap\" key=\"loading\">\r\n {slots.loading?.() || (\r\n <span class=\"w-btn-spinner\" aria-hidden=\"true\" />\r\n )}\r\n </span>\r\n ) : null}\r\n </Transition>\r\n <span class=\"w-btn-content\">\r\n {slots.default?.() || text.value}\r\n </span>\r\n </Tag>\r\n )\r\n }\r\n },\r\n})\r\n\r\nconst Btn = BtnImpl as unknown as BtnComponent\r\n\r\nexport type BtnInstance = InstanceType<BtnComponent>\r\n\r\nexport default Btn\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Btn.js","names":["computed","defineComponent","inject","mergeProps","normalizeClass","normalizeStyle","onUnmounted","ref","Transition","createVNode","_createVNode","isBoolean","isNumber","propColorToCssVars","propSizeToCssVars","toCssVarsStyle","useComponentConfig","BTN_GROUP_KEY","BTN_FALLBACK","BtnImpl","name","inheritAttrs","props","tag","type","String","default","undefined","htmlType","mode","size","Number","color","cssVars","Object","block","Boolean","capsule","disabled","loading","text","sleep","slots","setup","attrs","group","cfg","cooling","sleepTimer","btnType","value","btnMode","btnSize","btnColor","tagName","sleepMs","s","Math","max","inactive","klass","tokenStyle","clearSleep","clearTimeout","invokeAttrClick","handler","e","Array","isArray","fn","onClick","preventDefault","stopPropagation","ms","setTimeout","Tag","_attrsClick","restAttrs","rootProps","class","style","Btn"],"sources":["../../../components/btn/Btn.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n mergeProps,\r\n normalizeClass,\r\n normalizeStyle,\r\n onUnmounted,\r\n ref,\r\n Transition,\r\n} from 'vue'\r\nimport type { DefineComponent, PropType, SlotsType } from 'vue'\r\nimport type { BtnMode, BtnType } from '../../config/types'\r\nimport {\r\n isBoolean,\r\n isNumber,\r\n propColorToCssVars,\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport {\r\n BTN_GROUP_KEY,\r\n type BtnHtmlType,\r\n type BtnSize,\r\n} from './context'\r\nimport { BTN_FALLBACK, type BtnGlobalConfig } from './config'\r\n\r\nexport type { BtnSize, BtnHtmlType, BtnGroupContext } from './context'\r\nexport type { BtnGlobalConfig } from './config'\r\nexport { BTN_GROUP_KEY } from './context'\r\nexport { BTN_FALLBACK } from './config'\r\n\r\nexport type BtnSlots = {\r\n default?: () => any\r\n /** loading 时左侧指示器,默认内置转圈 */\r\n loading?: () => any\r\n}\r\n\r\nexport type BtnProps = {\r\n tag?: keyof HTMLElementTagNameMap\r\n htmlType?: BtnHtmlType\r\n type?: BtnType\r\n mode?: BtnMode\r\n size?: BtnSize\r\n color?: string\r\n block?: boolean\r\n capsule?: boolean\r\n disabled?: boolean\r\n loading?: boolean\r\n text?: string | number\r\n sleep?: boolean | number\r\n /** 实例 CSS 变量(如 `--w-prop-btn-bg-color`) */\r\n cssVars?: CssVars\r\n}\r\n\r\n/**\r\n * 运行时靠 attrs 透传到根节点;不声明 click emit,onClick 等走原生 fallthrough。\r\n * TSX 需在 $props 上并上原生属性,否则 onClick / class 等会在类型上被判为不存在。\r\n * tag 可为 a 等,故并上常用锚点属性(href / target / rel)。\r\n */\r\nexport type BtnJSXProps = BtnProps &\r\n Omit<JSX.IntrinsicElements['button'], keyof BtnProps | 'ref'> &\r\n Partial<\r\n Pick<JSX.IntrinsicElements['a'], 'href' | 'target' | 'rel' | 'download'>\r\n > & {\r\n 'v-slots'?: BtnSlots\r\n vSlots?: BtnSlots\r\n }\r\n\r\ntype AttrClickHandler = (e: MouseEvent) => void\r\ntype AttrClick = AttrClickHandler | AttrClickHandler[] | undefined\r\n\r\nconst BtnImpl = defineComponent({\r\n name: 'Btn',\r\n inheritAttrs: false,\r\n props: {\r\n tag: {\r\n type: String as PropType<keyof HTMLElementTagNameMap>,\r\n default: undefined,\r\n },\r\n htmlType: {\r\n type: String as PropType<BtnHtmlType>,\r\n default: undefined,\r\n },\r\n type: { type: String as PropType<BtnType>, default: undefined },\r\n mode: { type: String as PropType<BtnMode>, default: undefined },\r\n size: { type: Number as PropType<BtnSize>, default: undefined },\r\n /** 品牌主色 → `--w-prop-btn-color`(prop > `--w-btn-color` > `--w-color`) */\r\n color: { type: String, default: undefined },\r\n /** 实例 CSS 变量(如 `--w-prop-btn-bg-color`) */\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n // Boolean 必须 default: undefined,否则未传会变成 false,全局配置无效\r\n block: { type: Boolean, default: undefined },\r\n capsule: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n loading: { type: Boolean, default: undefined },\r\n text: { type: [String, Number] as PropType<string | number>, default: undefined },\r\n sleep: {\r\n type: [Boolean, Number] as PropType<boolean | number>,\r\n default: undefined,\r\n },\r\n },\r\n slots: Object as SlotsType<BtnSlots>,\r\n setup(props, { slots, attrs }) {\r\n const group = inject(BTN_GROUP_KEY, undefined)\r\n const cfg = useComponentConfig('Btn', props, BTN_FALLBACK)\r\n\r\n const cooling = ref(false)\r\n let sleepTimer: ReturnType<typeof setTimeout> | undefined\r\n\r\n // 优先级:显式 props > BtnGroup > 全局配置 > FALLBACK(后两档已由 cfg 合并)\r\n const btnType = computed(\r\n () => props.type ?? group?.type ?? cfg.value.type,\r\n )\r\n const btnMode = computed(\r\n () => props.mode ?? group?.mode ?? cfg.value.mode,\r\n )\r\n const btnSize = computed(\r\n () => props.size ?? group?.size ?? cfg.value.size,\r\n )\r\n const btnColor = computed(\r\n () => props.color ?? group?.color ?? cfg.value.color,\r\n )\r\n const block = computed(() => props.block ?? cfg.value.block)\r\n const capsule = computed(() => props.capsule ?? cfg.value.capsule)\r\n const disabled = computed(() => props.disabled ?? cfg.value.disabled)\r\n const loading = computed(() => props.loading ?? cfg.value.loading)\r\n const htmlType = computed(() => props.htmlType ?? cfg.value.htmlType)\r\n const tagName = computed(() => props.tag ?? cfg.value.tag)\r\n const sleep = computed(() => props.sleep ?? cfg.value.sleep)\r\n const text = computed(() => props.text ?? cfg.value.text)\r\n\r\n const sleepMs = computed(() => {\r\n const s = sleep.value\r\n if (!s) return 0\r\n if (isBoolean(s)) return 500\r\n if (isNumber(s)) return Math.max(0, s)\r\n return 0\r\n })\r\n\r\n const inactive = computed(\r\n () => disabled.value || loading.value || cooling.value,\r\n )\r\n\r\n const klass = computed(() => [\r\n 'w-btn',\r\n {\r\n 'w-btn-gap': !group,\r\n 'w-btn-capsule': capsule.value,\r\n 'w-btn-block': block.value,\r\n 'w-btn-disabled': disabled.value,\r\n 'w-btn-loading': loading.value,\r\n 'w-btn-cooling': cooling.value,\r\n [`w-btn-${btnType.value}`]: !!btnType.value,\r\n [`w-btn-mode-${btnMode.value}`]: !!btnMode.value,\r\n },\r\n ])\r\n\r\n const tokenStyle = computed(() =>\r\n toCssVarsStyle({\r\n ...propSizeToCssVars('btn', btnSize.value),\r\n ...propColorToCssVars('btn', btnColor.value),\r\n ...props.cssVars,\r\n }),\r\n )\r\n\r\n function clearSleep() {\r\n if (sleepTimer !== undefined) {\r\n clearTimeout(sleepTimer)\r\n sleepTimer = undefined\r\n }\r\n cooling.value = false\r\n }\r\n\r\n function invokeAttrClick(handler: AttrClick, e: MouseEvent) {\r\n if (!handler) return\r\n if (Array.isArray(handler)) {\r\n for (const fn of handler) fn(e)\r\n } else {\r\n handler(e)\r\n }\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n if (inactive.value) {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n return\r\n }\r\n // 不声明 emits.click:用户 onClick / @click 在 attrs 里,需在守卫通过后手动调用\r\n invokeAttrClick(attrs.onClick as AttrClick, e)\r\n const ms = sleepMs.value\r\n if (ms > 0) {\r\n cooling.value = true\r\n sleepTimer = setTimeout(() => {\r\n cooling.value = false\r\n sleepTimer = undefined\r\n }, ms)\r\n }\r\n }\r\n\r\n onUnmounted(clearSleep)\r\n\r\n return () => {\r\n const Tag = tagName.value\r\n // 抽出 onClick,避免 mergeProps 把 attrs.onClick 与守卫串联(inactive 时仍会触发)\r\n const { onClick: _attrsClick, ...restAttrs } = attrs as Record<\r\n string,\r\n unknown\r\n > & { onClick?: AttrClick }\r\n\r\n const rootProps = mergeProps(\r\n {\r\n class: normalizeClass([klass.value, attrs.class]),\r\n style: normalizeStyle([tokenStyle.value, attrs.style]),\r\n disabled:\r\n Tag === 'button' ? disabled.value || loading.value : undefined,\r\n type: Tag === 'button' ? htmlType.value : undefined,\r\n 'aria-disabled': inactive.value || undefined,\r\n 'aria-busy': loading.value || undefined,\r\n onClick,\r\n },\r\n restAttrs,\r\n )\r\n\r\n return (\r\n <Tag {...rootProps}>\r\n <Transition name=\"w-btn-loading\" appear>\r\n {loading.value ? (\r\n <span class=\"w-btn-loading-wrap\" key=\"loading\">\r\n {slots.loading?.() || (\r\n <span class=\"w-btn-spinner\" aria-hidden=\"true\" />\r\n )}\r\n </span>\r\n ) : null}\r\n </Transition>\r\n <span class=\"w-btn-content\">\r\n {slots.default?.() || text.value}\r\n </span>\r\n </Tag>\r\n )\r\n }\r\n },\r\n})\r\n\r\n/** 断言为 DefineComponent,hover / 补全直接看到 BtnJSXProps(勿再包 XxxComponent 别名) */\r\nconst Btn = BtnImpl as unknown as DefineComponent<BtnJSXProps>\r\n\r\nexport type BtnInstance = InstanceType<typeof Btn>\r\n\r\nexport default Btn\r\n"],"mappings":"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"}
@@ -198,8 +198,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
198
198
  modelValue: string | number;
199
199
  disabled: boolean;
200
200
  checkable: (item: CascadeItem, index: number) => boolean;
201
- clearable: boolean;
202
201
  placeholder: string;
202
+ clearable: boolean;
203
203
  sign: string;
204
204
  leafOnly: boolean;
205
205
  nearby: boolean;
@@ -414,8 +414,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
414
414
  manual: boolean;
415
415
  exclude: HTMLElement[];
416
416
  hasMask: boolean;
417
- clearable: boolean;
418
417
  placeholder: string;
418
+ clearable: boolean;
419
419
  virtual: boolean;
420
420
  virtualThreshold: number;
421
421
  itemHeight: number;
@@ -715,7 +715,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
715
715
  }, {}, {}, {
716
716
  clickOutside: import('vue').ObjectDirective<any, any, string, any>;
717
717
  }, string, import('vue').ComponentProvideOptions, true, {}, any>;
718
- Virtual: import('..').VirtualComponent;
718
+ Virtual: new <T = any>() => import('..').VirtualListMethods & {
719
+ $props: import('..').VirtualJSXProps<T>;
720
+ };
719
721
  Close: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
720
722
  name: {
721
723
  type: StringConstructor;
@@ -1706,6 +1706,6 @@ declare const _default: import('vue').DefineComponent<{}, () => import("vue/jsx-
1706
1706
  ariaLabel: string;
1707
1707
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1708
1708
  }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1709
- Btn: import('..').BtnComponent;
1709
+ Btn: import('vue').DefineComponent<import('..').BtnJSXProps>;
1710
1710
  }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1711
1711
  export default _default;
@@ -1,14 +1,14 @@
1
1
  import { App, VNodeChild } from 'vue';
2
2
  import { CssVars } from '../../util';
3
- type ConfirmClose = () => void;
4
- type ConfirmContent = VNodeChild | ((close: ConfirmClose) => VNodeChild);
3
+ export type ConfirmClose = () => void;
4
+ export type ConfirmContent = VNodeChild | ((close: ConfirmClose) => VNodeChild);
5
5
  export type ConfirmActions = {
6
6
  close: ConfirmClose;
7
7
  confirm: ConfirmClose;
8
8
  };
9
9
  type ConfirmRegion = VNodeChild | ((actions: ConfirmActions) => VNodeChild);
10
10
  /** false / null 表示不渲染该区域 */
11
- type ConfirmSlot = ConfirmRegion | false | null;
11
+ export type ConfirmSlot = ConfirmRegion | false | null;
12
12
  export interface ConfirmOptions {
13
13
  /** 内容区(与 body 同义;函数可拿到 close) */
14
14
  content?: ConfirmContent;
@@ -70,4 +70,3 @@ declare const _default: {
70
70
  };
71
71
  export default _default;
72
72
  export { open, destroy, config };
73
- export type { ConfirmClose, ConfirmContent, ConfirmSlot, ConfirmActions };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../components/confirm/index.ts"],"sourcesContent":["import type { App, VNodeChild } from 'vue'\r\nimport { createApp, createVNode, h } from 'vue'\r\nimport Drawer from '../drawer'\r\nimport Close from '../close'\r\nimport Btn from '../btn'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport {\r\n captureScaleFromPoint,\r\n ensureScaleFromPointTracking,\r\n} from '../../use/useScaleFromPoint'\r\nimport { propColorToCssVars, toCssVarsStyle, type CssVars } from '../../util'\r\nimport { UI_CONFIG_KEY, type UIPluginConfig } from '../../config/plugin'\r\n\r\n// 入口加载即跟踪,避免第一次 Confirm.open 才挂监听、坐标落成屏幕中心\r\nensureScaleFromPointTracking()\r\n\r\nlet ConfirmInstance: App | null = null\r\nlet ConfirmWrapper: HTMLElement | null = null\r\nlet hostApp: App | null = null\r\n\r\n/** 当前未结束的 Promise 结算函数(只触发一次) */\r\nlet settlePending: ((confirmed: boolean) => void) | null = null\r\n\r\ntype ConfirmClose = () => void\r\ntype ConfirmContent = VNodeChild | ((close: ConfirmClose) => VNodeChild)\r\nexport type ConfirmActions = {\r\n close: ConfirmClose\r\n confirm: ConfirmClose\r\n}\r\ntype ConfirmRegion =\r\n | VNodeChild\r\n | ((actions: ConfirmActions) => VNodeChild)\r\n/** false / null 表示不渲染该区域 */\r\ntype ConfirmSlot = ConfirmRegion | false | null\r\n\r\nexport interface ConfirmOptions {\r\n /** 内容区(与 body 同义;函数可拿到 close) */\r\n content?: ConfirmContent\r\n /** 内容区,优先于 content */\r\n body?: ConfirmContent\r\n /** 自定义头部;false 则不渲染 header */\r\n header?: ConfirmSlot\r\n /** 自定义底部;false 则不渲染默认按钮 */\r\n footer?: ConfirmSlot\r\n ok?: () => void\r\n title?: string | VNodeChild\r\n okText?: string\r\n cancelText?: string\r\n cancel?: () => void\r\n danger?: boolean\r\n /** 是否显示面板角上的关闭按钮(不在 header 内) */\r\n closable?: boolean\r\n /** 点击遮罩是否关闭 */\r\n canCloseByClickMask?: boolean\r\n /** 实例主色 → `--w-prop-confirm-color` */\r\n color?: string\r\n /** 实例 CSS 变量 */\r\n cssVars?: CssVars\r\n}\r\n\r\n/**\r\n * 全局默认配置\r\n * 可通过 config() 或 app.use(UI, { components: { Confirm: {...} } }) 设置\r\n */\r\nexport type ConfirmGlobalConfig = Partial<\r\n Omit<\r\n ConfirmOptions,\r\n 'content' | 'body' | 'header' | 'footer' | 'ok' | 'cancel'\r\n >\r\n>\r\n\r\nlet globalConfig: ConfirmGlobalConfig = {}\r\n\r\n/**\r\n * 运行时设置 Confirm 全局默认值\r\n */\r\nfunction config(options: ConfirmGlobalConfig = {}): void {\r\n globalConfig = { ...globalConfig, ...options }\r\n}\r\n\r\nfunction inheritAppContext(app: App) {\r\n if (!hostApp) return\r\n app._context.provides = Object.create(hostApp._context.provides)\r\n}\r\n\r\nfunction settle(confirmed: boolean) {\r\n if (!settlePending) return\r\n const run = settlePending\r\n settlePending = null\r\n run(confirmed)\r\n}\r\n\r\n/**\r\n * 打开确认对话框\r\n * @returns Promise,resolve 表示确认,reject 表示取消(含点遮罩 / 关闭按钮)\r\n */\r\nfunction open(options: ConfirmOptions = { content: '' }): Promise<boolean> {\r\n return new Promise((resolve, reject) => {\r\n // 强制冻结点击坐标;Drawer 挂载后再 capture 时不得覆盖\r\n captureScaleFromPoint(null, { force: true })\r\n\r\n const { t } = useUII18n()\r\n\r\n // 已有实例时先按「取消」结束旧 Promise,再销毁\r\n if (ConfirmInstance && ConfirmWrapper) {\r\n destroy()\r\n }\r\n\r\n const merged: ConfirmOptions = {\r\n ...globalConfig,\r\n ...options,\r\n }\r\n\r\n const resolvedOptions = {\r\n ...merged,\r\n title: merged.title ?? t('confirm.title'),\r\n okText: merged.okText ?? t('confirm.ok'),\r\n cancelText: merged.cancelText ?? t('confirm.cancel'),\r\n danger: merged.danger ?? false,\r\n closable: merged.closable ?? true,\r\n canCloseByClickMask: merged.canCloseByClickMask ?? true,\r\n }\r\n\r\n settlePending = (confirmed: boolean) => {\r\n if (confirmed) {\r\n merged.ok?.()\r\n resolve(true)\r\n } else {\r\n merged.cancel?.()\r\n reject(false)\r\n }\r\n }\r\n\r\n const confirmVars = toCssVarsStyle({\r\n ...propColorToCssVars('confirm', resolvedOptions.color),\r\n ...resolvedOptions.cssVars,\r\n })\r\n\r\n const bodyContent = merged.body ?? merged.content ?? ''\r\n\r\n function renderBody(close: ConfirmClose) {\r\n if (typeof bodyContent === 'function') return bodyContent(close)\r\n return bodyContent\r\n }\r\n\r\n function renderRegion(\r\n slot: ConfirmSlot | undefined,\r\n actions: ConfirmActions,\r\n fallback: VNodeChild,\r\n ) {\r\n if (slot === false || slot === null) return null\r\n if (slot === undefined) return fallback\r\n return typeof slot === 'function' ? slot(actions) : slot\r\n }\r\n\r\n const wrapper = document.createElement('div')\r\n const vm = createVNode(\r\n Drawer,\r\n {\r\n placement: 'center',\r\n isConfirm: true,\r\n canCloseByClickMask: resolvedOptions.canCloseByClickMask,\r\n class: 'w-confirm',\r\n style: confirmVars,\r\n maskClass: 'w-confirm-mask',\r\n maskStyle: confirmVars,\r\n headerClass: 'w-confirm-header',\r\n bodyClass: [\r\n 'w-confirm-body',\r\n { 'w-confirm-body--danger': resolvedOptions.danger },\r\n ],\r\n footerClass: 'w-confirm-footer',\r\n afterClose: () => {\r\n settle(false)\r\n destroy(false)\r\n },\r\n },\r\n {\r\n default: ({ close }: { close: ConfirmClose }) => renderBody(close),\r\n ...(merged.header !== false && merged.header !== null\r\n ? {\r\n header: ({ close }: { close: ConfirmClose }) => {\r\n const actions: ConfirmActions = {\r\n close: () => {\r\n settle(false)\r\n close()\r\n },\r\n confirm: () => {\r\n settle(true)\r\n close()\r\n },\r\n }\r\n return renderRegion(\r\n merged.header,\r\n actions,\r\n h(\r\n 'span',\r\n { class: 'w-confirm-title' },\r\n resolvedOptions.title as any,\r\n ),\r\n )\r\n },\r\n }\r\n : null),\r\n ...(merged.footer !== false && merged.footer !== null\r\n ? {\r\n footer: ({ close }: { close: ConfirmClose }) => {\r\n const actions: ConfirmActions = {\r\n close: () => {\r\n settle(false)\r\n close()\r\n },\r\n confirm: () => {\r\n settle(true)\r\n close()\r\n },\r\n }\r\n return renderRegion(merged.footer, actions, [\r\n h(\r\n Btn,\r\n { onClick: actions.close },\r\n { default: () => resolvedOptions.cancelText },\r\n ),\r\n h(\r\n Btn,\r\n {\r\n type: resolvedOptions.danger ? 'danger' : 'primary',\r\n onClick: actions.confirm,\r\n },\r\n { default: () => resolvedOptions.okText },\r\n ),\r\n ])\r\n },\r\n }\r\n : null),\r\n ...(resolvedOptions.closable\r\n ? {\r\n close: ({ close }: { close: ConfirmClose }) =>\r\n h(Close, {\r\n class: 'w-confirm-close',\r\n onClick: () => {\r\n settle(false)\r\n close()\r\n },\r\n }),\r\n }\r\n : null),\r\n },\r\n )\r\n\r\n const ins = createApp(vm)\r\n inheritAppContext(ins)\r\n ins.mount(wrapper)\r\n document.body.appendChild(wrapper)\r\n ConfirmInstance = ins\r\n ConfirmWrapper = wrapper\r\n })\r\n}\r\n\r\n/**\r\n * 销毁确认对话框\r\n * @param rejectPending 是否将未结束的 Promise 按取消处理,默认 true\r\n */\r\nfunction destroy(rejectPending = true) {\r\n if (rejectPending) {\r\n settle(false)\r\n }\r\n if (ConfirmWrapper && ConfirmWrapper.parentNode) {\r\n document.body.removeChild(ConfirmWrapper)\r\n }\r\n if (ConfirmInstance) {\r\n ConfirmInstance.unmount()\r\n }\r\n ConfirmInstance = null\r\n ConfirmWrapper = null\r\n}\r\n\r\nexport type ConfirmApi = {\r\n (options?: ConfirmOptions): Promise<boolean>\r\n open: typeof open\r\n destroy: typeof destroy\r\n config: typeof config\r\n}\r\n\r\n/**\r\n * Vue 插件安装:挂载 $confirm,并读取 UI 全局 components.Confirm 配置\r\n */\r\nfunction install(app: App) {\r\n hostApp = app\r\n\r\n const uiConfig = app._context.provides[UI_CONFIG_KEY as any] as\r\n | UIPluginConfig\r\n | undefined\r\n const confirmCfg = uiConfig?.components?.Confirm as\r\n | ConfirmGlobalConfig\r\n | undefined\r\n if (confirmCfg) {\r\n config(confirmCfg)\r\n }\r\n\r\n const api = open as ConfirmApi\r\n api.open = open\r\n api.destroy = destroy\r\n api.config = config\r\n app.config.globalProperties.$confirm = api\r\n}\r\n\r\nexport default { install, open, destroy, config }\r\nexport { open, destroy, config }\r\nexport type { ConfirmClose, ConfirmContent, ConfirmSlot, ConfirmActions }\r\nimport './src/style/index.css'\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../components/confirm/index.ts"],"sourcesContent":["import type { App, VNodeChild } from 'vue'\r\nimport { createApp, createVNode, h } from 'vue'\r\nimport Drawer from '../drawer'\r\nimport Close from '../close'\r\nimport Btn from '../btn'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport {\r\n captureScaleFromPoint,\r\n ensureScaleFromPointTracking,\r\n} from '../../use/useScaleFromPoint'\r\nimport { propColorToCssVars, toCssVarsStyle, type CssVars } from '../../util'\r\nimport { UI_CONFIG_KEY, type UIPluginConfig } from '../../config/plugin'\r\n\r\n// 入口加载即跟踪,避免第一次 Confirm.open 才挂监听、坐标落成屏幕中心\r\nensureScaleFromPointTracking()\r\n\r\nlet ConfirmInstance: App | null = null\r\nlet ConfirmWrapper: HTMLElement | null = null\r\nlet hostApp: App | null = null\r\n\r\n/** 当前未结束的 Promise 结算函数(只触发一次) */\r\nlet settlePending: ((confirmed: boolean) => void) | null = null\r\n\r\nexport type ConfirmClose = () => void\r\nexport type ConfirmContent = VNodeChild | ((close: ConfirmClose) => VNodeChild)\r\nexport type ConfirmActions = {\r\n close: ConfirmClose\r\n confirm: ConfirmClose\r\n}\r\ntype ConfirmRegion =\r\n | VNodeChild\r\n | ((actions: ConfirmActions) => VNodeChild)\r\n/** false / null 表示不渲染该区域 */\r\nexport type ConfirmSlot = ConfirmRegion | false | null\r\n\r\nexport interface ConfirmOptions {\r\n /** 内容区(与 body 同义;函数可拿到 close) */\r\n content?: ConfirmContent\r\n /** 内容区,优先于 content */\r\n body?: ConfirmContent\r\n /** 自定义头部;false 则不渲染 header */\r\n header?: ConfirmSlot\r\n /** 自定义底部;false 则不渲染默认按钮 */\r\n footer?: ConfirmSlot\r\n ok?: () => void\r\n title?: string | VNodeChild\r\n okText?: string\r\n cancelText?: string\r\n cancel?: () => void\r\n danger?: boolean\r\n /** 是否显示面板角上的关闭按钮(不在 header 内) */\r\n closable?: boolean\r\n /** 点击遮罩是否关闭 */\r\n canCloseByClickMask?: boolean\r\n /** 实例主色 → `--w-prop-confirm-color` */\r\n color?: string\r\n /** 实例 CSS 变量 */\r\n cssVars?: CssVars\r\n}\r\n\r\n/**\r\n * 全局默认配置\r\n * 可通过 config() 或 app.use(UI, { components: { Confirm: {...} } }) 设置\r\n */\r\nexport type ConfirmGlobalConfig = Partial<\r\n Omit<\r\n ConfirmOptions,\r\n 'content' | 'body' | 'header' | 'footer' | 'ok' | 'cancel'\r\n >\r\n>\r\n\r\nlet globalConfig: ConfirmGlobalConfig = {}\r\n\r\n/**\r\n * 运行时设置 Confirm 全局默认值\r\n */\r\nfunction config(options: ConfirmGlobalConfig = {}): void {\r\n globalConfig = { ...globalConfig, ...options }\r\n}\r\n\r\nfunction inheritAppContext(app: App) {\r\n if (!hostApp) return\r\n app._context.provides = Object.create(hostApp._context.provides)\r\n}\r\n\r\nfunction settle(confirmed: boolean) {\r\n if (!settlePending) return\r\n const run = settlePending\r\n settlePending = null\r\n run(confirmed)\r\n}\r\n\r\n/**\r\n * 打开确认对话框\r\n * @returns Promise,resolve 表示确认,reject 表示取消(含点遮罩 / 关闭按钮)\r\n */\r\nfunction open(options: ConfirmOptions = { content: '' }): Promise<boolean> {\r\n return new Promise((resolve, reject) => {\r\n // 强制冻结点击坐标;Drawer 挂载后再 capture 时不得覆盖\r\n captureScaleFromPoint(null, { force: true })\r\n\r\n const { t } = useUII18n()\r\n\r\n // 已有实例时先按「取消」结束旧 Promise,再销毁\r\n if (ConfirmInstance && ConfirmWrapper) {\r\n destroy()\r\n }\r\n\r\n const merged: ConfirmOptions = {\r\n ...globalConfig,\r\n ...options,\r\n }\r\n\r\n const resolvedOptions = {\r\n ...merged,\r\n title: merged.title ?? t('confirm.title'),\r\n okText: merged.okText ?? t('confirm.ok'),\r\n cancelText: merged.cancelText ?? t('confirm.cancel'),\r\n danger: merged.danger ?? false,\r\n closable: merged.closable ?? true,\r\n canCloseByClickMask: merged.canCloseByClickMask ?? true,\r\n }\r\n\r\n settlePending = (confirmed: boolean) => {\r\n if (confirmed) {\r\n merged.ok?.()\r\n resolve(true)\r\n } else {\r\n merged.cancel?.()\r\n reject(false)\r\n }\r\n }\r\n\r\n const confirmVars = toCssVarsStyle({\r\n ...propColorToCssVars('confirm', resolvedOptions.color),\r\n ...resolvedOptions.cssVars,\r\n })\r\n\r\n const bodyContent = merged.body ?? merged.content ?? ''\r\n\r\n function renderBody(close: ConfirmClose) {\r\n if (typeof bodyContent === 'function') return bodyContent(close)\r\n return bodyContent\r\n }\r\n\r\n function renderRegion(\r\n slot: ConfirmSlot | undefined,\r\n actions: ConfirmActions,\r\n fallback: VNodeChild,\r\n ) {\r\n if (slot === false || slot === null) return null\r\n if (slot === undefined) return fallback\r\n return typeof slot === 'function' ? slot(actions) : slot\r\n }\r\n\r\n const wrapper = document.createElement('div')\r\n const vm = createVNode(\r\n Drawer,\r\n {\r\n placement: 'center',\r\n isConfirm: true,\r\n canCloseByClickMask: resolvedOptions.canCloseByClickMask,\r\n class: 'w-confirm',\r\n style: confirmVars,\r\n maskClass: 'w-confirm-mask',\r\n maskStyle: confirmVars,\r\n headerClass: 'w-confirm-header',\r\n bodyClass: [\r\n 'w-confirm-body',\r\n { 'w-confirm-body--danger': resolvedOptions.danger },\r\n ],\r\n footerClass: 'w-confirm-footer',\r\n afterClose: () => {\r\n settle(false)\r\n destroy(false)\r\n },\r\n },\r\n {\r\n default: ({ close }: { close: ConfirmClose }) => renderBody(close),\r\n ...(merged.header !== false && merged.header !== null\r\n ? {\r\n header: ({ close }: { close: ConfirmClose }) => {\r\n const actions: ConfirmActions = {\r\n close: () => {\r\n settle(false)\r\n close()\r\n },\r\n confirm: () => {\r\n settle(true)\r\n close()\r\n },\r\n }\r\n return renderRegion(\r\n merged.header,\r\n actions,\r\n h(\r\n 'span',\r\n { class: 'w-confirm-title' },\r\n resolvedOptions.title as any,\r\n ),\r\n )\r\n },\r\n }\r\n : null),\r\n ...(merged.footer !== false && merged.footer !== null\r\n ? {\r\n footer: ({ close }: { close: ConfirmClose }) => {\r\n const actions: ConfirmActions = {\r\n close: () => {\r\n settle(false)\r\n close()\r\n },\r\n confirm: () => {\r\n settle(true)\r\n close()\r\n },\r\n }\r\n return renderRegion(merged.footer, actions, [\r\n h(\r\n Btn,\r\n { onClick: actions.close },\r\n { default: () => resolvedOptions.cancelText },\r\n ),\r\n h(\r\n Btn,\r\n {\r\n type: resolvedOptions.danger ? 'danger' : 'primary',\r\n onClick: actions.confirm,\r\n },\r\n { default: () => resolvedOptions.okText },\r\n ),\r\n ])\r\n },\r\n }\r\n : null),\r\n ...(resolvedOptions.closable\r\n ? {\r\n close: ({ close }: { close: ConfirmClose }) =>\r\n h(Close, {\r\n class: 'w-confirm-close',\r\n onClick: () => {\r\n settle(false)\r\n close()\r\n },\r\n }),\r\n }\r\n : null),\r\n },\r\n )\r\n\r\n const ins = createApp(vm)\r\n inheritAppContext(ins)\r\n ins.mount(wrapper)\r\n document.body.appendChild(wrapper)\r\n ConfirmInstance = ins\r\n ConfirmWrapper = wrapper\r\n })\r\n}\r\n\r\n/**\r\n * 销毁确认对话框\r\n * @param rejectPending 是否将未结束的 Promise 按取消处理,默认 true\r\n */\r\nfunction destroy(rejectPending = true) {\r\n if (rejectPending) {\r\n settle(false)\r\n }\r\n if (ConfirmWrapper && ConfirmWrapper.parentNode) {\r\n document.body.removeChild(ConfirmWrapper)\r\n }\r\n if (ConfirmInstance) {\r\n ConfirmInstance.unmount()\r\n }\r\n ConfirmInstance = null\r\n ConfirmWrapper = null\r\n}\r\n\r\nexport type ConfirmApi = {\r\n (options?: ConfirmOptions): Promise<boolean>\r\n open: typeof open\r\n destroy: typeof destroy\r\n config: typeof config\r\n}\r\n\r\n/**\r\n * Vue 插件安装:挂载 $confirm,并读取 UI 全局 components.Confirm 配置\r\n */\r\nfunction install(app: App) {\r\n hostApp = app\r\n\r\n const uiConfig = app._context.provides[UI_CONFIG_KEY as any] as\r\n | UIPluginConfig\r\n | undefined\r\n const confirmCfg = uiConfig?.components?.Confirm as\r\n | ConfirmGlobalConfig\r\n | undefined\r\n if (confirmCfg) {\r\n config(confirmCfg)\r\n }\r\n\r\n const api = open as ConfirmApi\r\n api.open = open\r\n api.destroy = destroy\r\n api.config = config\r\n app.config.globalProperties.$confirm = api\r\n}\r\n\r\nexport default { install, open, destroy, config }\r\nexport { open, destroy, config }\r\nimport './src/style/index.css'\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 { CopyGlobalConfig } from './config';
3
4
  export { COPY_FALLBACK } from './config';
@@ -15,14 +16,13 @@ export type CopyProps = {
15
16
  disabled?: boolean;
16
17
  cssVars?: CssVars;
17
18
  };
18
- export type CopyJSXProps = CopyProps & Omit<JSX.IntrinsicElements['button'], keyof CopyProps | 'ref'> & {
19
+ export type CopyJSXProps = CopyProps & Omit<JSX.IntrinsicElements['button'], keyof CopyProps | 'ref' | 'onError'> & {
19
20
  'v-slots'?: CopySlots;
20
21
  vSlots?: CopySlots;
22
+ onSuccess?: () => void;
23
+ onError?: (err: unknown) => void;
21
24
  };
22
- export type CopyComponent = {
23
- new (): {
24
- $props: CopyJSXProps;
25
- };
26
- };
27
- declare const _default: CopyComponent;
28
- export default _default;
25
+ /** 断言为 DefineComponent,hover / 补全直接看到 CopyJSXProps(勿再包 XxxComponent 别名) */
26
+ declare const Copy: DefineComponent<CopyJSXProps>;
27
+ export type CopyInstance = InstanceType<typeof Copy>;
28
+ export default Copy;
@@ -6,7 +6,8 @@ import { COPY_FALLBACK } from "./config.js";
6
6
  import { spawnCopyToast, writeClipboardText } from "./spawnCopyToast.js";
7
7
  import { createVNode, defineComponent, mergeProps, onBeforeUnmount, ref } from "vue";
8
8
  //#region components/copy/Copy.tsx
9
- var CopyImpl = /* @__PURE__ */ defineComponent({
9
+ /** 断言为 DefineComponent,hover / 补全直接看到 CopyJSXProps(勿再包 XxxComponent 别名) */
10
+ var Copy = /* @__PURE__ */ defineComponent({
10
11
  name: "Copy",
11
12
  inheritAttrs: false,
12
13
  props: {
@@ -105,6 +106,6 @@ var CopyImpl = /* @__PURE__ */ defineComponent({
105
106
  }
106
107
  });
107
108
  //#endregion
108
- export { CopyImpl as default };
109
+ export { Copy as default };
109
110
 
110
111
  //# sourceMappingURL=Copy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Copy.js","names":["defineComponent","mergeProps","onBeforeUnmount","ref","createVNode","_createVNode","propColorToCssVars","propSizeToCssVars","toCssVarsStyle","useComponentConfig","useGlobalZIndex","useUII18n","COPY_FALLBACK","spawnCopyToast","writeClipboardText","CopyImpl","name","inheritAttrs","props","text","type","String","required","size","Number","default","undefined","color","label","copiedTip","toast","Boolean","disabled","cssVars","Object","emits","success","error","err","slots","setup","attrs","emit","cfg","t","add","addZIndex","root","clickCount","activeToasts","disposed","handleClick","e","stopPropagation","value","tip","index","anchor","clickIndex","zIndex","onDone","Math","max","rootProps","class","style","onClick"],"sources":["../../../components/copy/Copy.tsx"],"sourcesContent":["import {\r\n defineComponent,\r\n mergeProps,\r\n onBeforeUnmount,\r\n ref,\r\n type PropType,\r\n type SlotsType,\r\n} from 'vue'\r\nimport {\r\n propColorToCssVars,\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport useGlobalZIndex from '../../use/useGlobalZIndex'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport { COPY_FALLBACK } from './config'\r\nimport { spawnCopyToast, writeClipboardText } from './spawnCopyToast'\r\n\r\nexport type { CopyGlobalConfig } from './config'\r\nexport { COPY_FALLBACK } from './config'\r\n\r\nexport type CopySlots = {\r\n default?: () => any\r\n}\r\n\r\nexport type CopyProps = {\r\n /** 待复制文本 */\r\n text: string\r\n size?: number\r\n color?: string\r\n label?: string\r\n copiedTip?: string\r\n toast?: boolean\r\n disabled?: boolean\r\n cssVars?: CssVars\r\n}\r\n\r\nexport type CopyJSXProps = CopyProps &\r\n Omit<JSX.IntrinsicElements['button'], keyof CopyProps | 'ref'> & {\r\n 'v-slots'?: CopySlots\r\n vSlots?: CopySlots\r\n }\r\n\r\nexport type CopyComponent = {\r\n new (): {\r\n $props: CopyJSXProps\r\n }\r\n}\r\n\r\nconst CopyImpl = defineComponent({\r\n name: 'Copy',\r\n inheritAttrs: false,\r\n props: {\r\n text: { type: String, required: true },\r\n size: { type: Number, default: undefined },\r\n color: { type: String, default: undefined },\r\n label: { type: String, default: undefined },\r\n copiedTip: { type: String, default: undefined },\r\n toast: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n emits: {\r\n success: () => true,\r\n error: (err: unknown) => true,\r\n },\r\n slots: Object as SlotsType<CopySlots>,\r\n setup(props, { slots, attrs, emit }) {\r\n const cfg = useComponentConfig('Copy', props, COPY_FALLBACK)\r\n const { t } = useUII18n()\r\n const { add: addZIndex } = useGlobalZIndex()\r\n const root = ref<HTMLButtonElement>()\r\n const clickCount = ref(0)\r\n const activeToasts = ref(0)\r\n let disposed = false\r\n\r\n onBeforeUnmount(() => {\r\n disposed = true\r\n })\r\n\r\n async function handleClick(e: MouseEvent) {\r\n e.stopPropagation()\r\n if (cfg.value.disabled) return\r\n\r\n try {\r\n await writeClipboardText(props.text)\r\n emit('success')\r\n\r\n if (cfg.value.toast !== false && root.value) {\r\n const tip = cfg.value.copiedTip ?? t('copy.copied')\r\n const index = clickCount.value % 8\r\n clickCount.value++\r\n activeToasts.value++\r\n spawnCopyToast({\r\n anchor: root.value,\r\n tip,\r\n clickIndex: index,\r\n zIndex: addZIndex(),\r\n onDone: () => {\r\n if (disposed) return\r\n activeToasts.value = Math.max(0, activeToasts.value - 1)\r\n if (activeToasts.value === 0) clickCount.value = 0\r\n },\r\n })\r\n }\r\n } catch (err) {\r\n emit('error', err)\r\n }\r\n }\r\n\r\n return () => {\r\n const label = cfg.value.label ?? t('copy.label')\r\n const rootProps = mergeProps(\r\n {\r\n ref: root,\r\n type: 'button',\r\n class: 'w-copy',\r\n disabled: cfg.value.disabled || undefined,\r\n style: toCssVarsStyle({\r\n ...propSizeToCssVars('copy', cfg.value.size),\r\n ...propColorToCssVars('copy', cfg.value.color),\r\n ...props.cssVars,\r\n }),\r\n onClick: handleClick,\r\n },\r\n attrs,\r\n )\r\n\r\n return <button {...rootProps}>{slots.default?.() ?? label}</button>\r\n }\r\n },\r\n})\r\n\r\nexport default CopyImpl as unknown as CopyComponent\r\n"],"mappings":";;;;;;;;AAmDA,IAAMe,WAAWf,gCAAgB;CAC/BgB,MAAM;CACNC,cAAc;CACdC,OAAO;EACLC,MAAM;GAAEC,MAAMC;GAAQC,UAAU;EAAK;EACrCC,MAAM;GAAEH,MAAMI;GAAQC,SAASC,KAAAA;EAAU;EACzCC,OAAO;GAAEP,MAAMC;GAAQI,SAASC,KAAAA;EAAU;EAC1CE,OAAO;GAAER,MAAMC;GAAQI,SAASC,KAAAA;EAAU;EAC1CG,WAAW;GAAET,MAAMC;GAAQI,SAASC,KAAAA;EAAU;EAC9CI,OAAO;GAAEV,MAAMW;GAASN,SAASC,KAAAA;EAAU;EAC3CM,UAAU;GAAEZ,MAAMW;GAASN,SAASC,KAAAA;EAAU;EAC9CO,SAAS;GAAEb,MAAMc;GAA6BT,SAASC,KAAAA;EAAU;CACnE;CACAS,OAAO;EACLC,eAAe;EACfC,QAAQC,QAAiB;CAC3B;CACAC,OAAOL;CACPM,MAAMtB,OAAO,EAAEqB,OAAOE,OAAOC,QAAQ;EACnC,MAAMC,MAAMlC,mBAAmB,QAAQS,OAAON,aAAa;EAC3D,MAAM,EAAEgC,MAAMjC,UAAU;EACxB,MAAM,EAAEkC,KAAKC,cAAcpC,gBAAgB;EAC3C,MAAMqC,OAAO5C,IAAuB;EACpC,MAAM6C,aAAa7C,IAAI,CAAC;EACxB,MAAM8C,eAAe9C,IAAI,CAAC;EAC1B,IAAI+C,WAAW;EAEfhD,sBAAsB;GACpBgD,WAAW;EACb,CAAC;EAED,eAAeC,YAAYC,GAAe;GACxCA,EAAEC,gBAAgB;GAClB,IAAIV,IAAIW,MAAMtB,UAAU;GAExB,IAAI;IACF,MAAMlB,mBAAmBI,MAAMC,IAAI;IACnCuB,KAAK,SAAS;IAEd,IAAIC,IAAIW,MAAMxB,UAAU,SAASiB,KAAKO,OAAO;KAC3C,MAAMC,MAAMZ,IAAIW,MAAMzB,aAAae,EAAE,aAAa;KAClD,MAAMY,QAAQR,WAAWM,QAAQ;KACjCN,WAAWM;KACXL,aAAaK;KACbzC,eAAe;MACb4C,QAAQV,KAAKO;MACbC;MACAG,YAAYF;MACZG,QAAQb,UAAU;MAClBc,cAAc;OACZ,IAAIV,UAAU;OACdD,aAAaK,QAAQO,KAAKC,IAAI,GAAGb,aAAaK,QAAQ,CAAC;OACvD,IAAIL,aAAaK,UAAU,GAAGN,WAAWM,QAAQ;MACnD;KACF,CAAC;IACH;GACF,SAAShB,KAAK;IACZI,KAAK,SAASJ,GAAG;GACnB;EACF;EAEA,aAAa;GACX,MAAMV,QAAQe,IAAIW,MAAM1B,SAASgB,EAAE,YAAY;GAC/C,MAAMmB,YAAY9D,WAChB;IACEE,KAAK4C;IACL3B,MAAM;IACN4C,OAAO;IACPhC,UAAUW,IAAIW,MAAMtB,YAAYN,KAAAA;IAChCuC,OAAOzD,eAAe;KACpB,GAAGD,kBAAkB,QAAQoC,IAAIW,MAAM/B,IAAI;KAC3C,GAAGjB,mBAAmB,QAAQqC,IAAIW,MAAM3B,KAAK;KAC7C,GAAGT,MAAMe;IACX,CAAC;IACDiC,SAASf;GACX,GACAV,KACF;GAEA,OAAApC,YAAA,UAAmB0D,WAAS,CAAGxB,MAAMd,UAAU,KAAKG,KAAK,CAAA;EAC3D;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"Copy.js","names":["defineComponent","mergeProps","onBeforeUnmount","ref","createVNode","_createVNode","propColorToCssVars","propSizeToCssVars","toCssVarsStyle","useComponentConfig","useGlobalZIndex","useUII18n","COPY_FALLBACK","spawnCopyToast","writeClipboardText","CopyImpl","name","inheritAttrs","props","text","type","String","required","size","Number","default","undefined","color","label","copiedTip","toast","Boolean","disabled","cssVars","Object","emits","success","error","err","slots","setup","attrs","emit","cfg","t","add","addZIndex","root","clickCount","activeToasts","disposed","handleClick","e","stopPropagation","value","tip","index","anchor","clickIndex","zIndex","onDone","Math","max","rootProps","class","style","onClick","Copy"],"sources":["../../../components/copy/Copy.tsx"],"sourcesContent":["import {\r\n defineComponent,\r\n mergeProps,\r\n onBeforeUnmount,\r\n ref,\r\n type DefineComponent,\r\n type PropType,\r\n type SlotsType,\r\n} from 'vue'\r\nimport {\r\n propColorToCssVars,\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport useGlobalZIndex from '../../use/useGlobalZIndex'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport { COPY_FALLBACK } from './config'\r\nimport { spawnCopyToast, writeClipboardText } from './spawnCopyToast'\r\n\r\nexport type { CopyGlobalConfig } from './config'\r\nexport { COPY_FALLBACK } from './config'\r\n\r\nexport type CopySlots = {\r\n default?: () => any\r\n}\r\n\r\nexport type CopyProps = {\r\n /** 待复制文本 */\r\n text: string\r\n size?: number\r\n color?: string\r\n label?: string\r\n copiedTip?: string\r\n toast?: boolean\r\n disabled?: boolean\r\n cssVars?: CssVars\r\n}\r\n\r\nexport type CopyJSXProps = CopyProps &\r\n Omit<\r\n JSX.IntrinsicElements['button'],\r\n keyof CopyProps | 'ref' | 'onError'\r\n > & {\r\n 'v-slots'?: CopySlots\r\n vSlots?: CopySlots\r\n onSuccess?: () => void\r\n onError?: (err: unknown) => void\r\n }\r\n\r\nconst CopyImpl = defineComponent({\r\n name: 'Copy',\r\n inheritAttrs: false,\r\n props: {\r\n text: { type: String, required: true },\r\n size: { type: Number, default: undefined },\r\n color: { type: String, default: undefined },\r\n label: { type: String, default: undefined },\r\n copiedTip: { type: String, default: undefined },\r\n toast: { type: Boolean, default: undefined },\r\n disabled: { type: Boolean, default: undefined },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n emits: {\r\n success: () => true,\r\n error: (err: unknown) => true,\r\n },\r\n slots: Object as SlotsType<CopySlots>,\r\n setup(props, { slots, attrs, emit }) {\r\n const cfg = useComponentConfig('Copy', props, COPY_FALLBACK)\r\n const { t } = useUII18n()\r\n const { add: addZIndex } = useGlobalZIndex()\r\n const root = ref<HTMLButtonElement>()\r\n const clickCount = ref(0)\r\n const activeToasts = ref(0)\r\n let disposed = false\r\n\r\n onBeforeUnmount(() => {\r\n disposed = true\r\n })\r\n\r\n async function handleClick(e: MouseEvent) {\r\n e.stopPropagation()\r\n if (cfg.value.disabled) return\r\n\r\n try {\r\n await writeClipboardText(props.text)\r\n emit('success')\r\n\r\n if (cfg.value.toast !== false && root.value) {\r\n const tip = cfg.value.copiedTip ?? t('copy.copied')\r\n const index = clickCount.value % 8\r\n clickCount.value++\r\n activeToasts.value++\r\n spawnCopyToast({\r\n anchor: root.value,\r\n tip,\r\n clickIndex: index,\r\n zIndex: addZIndex(),\r\n onDone: () => {\r\n if (disposed) return\r\n activeToasts.value = Math.max(0, activeToasts.value - 1)\r\n if (activeToasts.value === 0) clickCount.value = 0\r\n },\r\n })\r\n }\r\n } catch (err) {\r\n emit('error', err)\r\n }\r\n }\r\n\r\n return () => {\r\n const label = cfg.value.label ?? t('copy.label')\r\n const rootProps = mergeProps(\r\n {\r\n ref: root,\r\n type: 'button',\r\n class: 'w-copy',\r\n disabled: cfg.value.disabled || undefined,\r\n style: toCssVarsStyle({\r\n ...propSizeToCssVars('copy', cfg.value.size),\r\n ...propColorToCssVars('copy', cfg.value.color),\r\n ...props.cssVars,\r\n }),\r\n onClick: handleClick,\r\n },\r\n attrs,\r\n )\r\n\r\n return <button {...rootProps}>{slots.default?.() ?? label}</button>\r\n }\r\n },\r\n})\r\n\r\n/** 断言为 DefineComponent,hover / 补全直接看到 CopyJSXProps(勿再包 XxxComponent 别名) */\r\nconst Copy = CopyImpl as unknown as DefineComponent<CopyJSXProps>\r\n\r\nexport type CopyInstance = InstanceType<typeof Copy>\r\n\r\nexport default Copy\r\n"],"mappings":";;;;;;;;;AAwIA,IAAMmE,OArFWnE,gCAAgB;CAC/BgB,MAAM;CACNC,cAAc;CACdC,OAAO;EACLC,MAAM;GAAEC,MAAMC;GAAQC,UAAU;EAAK;EACrCC,MAAM;GAAEH,MAAMI;GAAQC,SAASC,KAAAA;EAAU;EACzCC,OAAO;GAAEP,MAAMC;GAAQI,SAASC,KAAAA;EAAU;EAC1CE,OAAO;GAAER,MAAMC;GAAQI,SAASC,KAAAA;EAAU;EAC1CG,WAAW;GAAET,MAAMC;GAAQI,SAASC,KAAAA;EAAU;EAC9CI,OAAO;GAAEV,MAAMW;GAASN,SAASC,KAAAA;EAAU;EAC3CM,UAAU;GAAEZ,MAAMW;GAASN,SAASC,KAAAA;EAAU;EAC9CO,SAAS;GAAEb,MAAMc;GAA6BT,SAASC,KAAAA;EAAU;CACnE;CACAS,OAAO;EACLC,eAAe;EACfC,QAAQC,QAAiB;CAC3B;CACAC,OAAOL;CACPM,MAAMtB,OAAO,EAAEqB,OAAOE,OAAOC,QAAQ;EACnC,MAAMC,MAAMlC,mBAAmB,QAAQS,OAAON,aAAa;EAC3D,MAAM,EAAEgC,MAAMjC,UAAU;EACxB,MAAM,EAAEkC,KAAKC,cAAcpC,gBAAgB;EAC3C,MAAMqC,OAAO5C,IAAuB;EACpC,MAAM6C,aAAa7C,IAAI,CAAC;EACxB,MAAM8C,eAAe9C,IAAI,CAAC;EAC1B,IAAI+C,WAAW;EAEfhD,sBAAsB;GACpBgD,WAAW;EACb,CAAC;EAED,eAAeC,YAAYC,GAAe;GACxCA,EAAEC,gBAAgB;GAClB,IAAIV,IAAIW,MAAMtB,UAAU;GAExB,IAAI;IACF,MAAMlB,mBAAmBI,MAAMC,IAAI;IACnCuB,KAAK,SAAS;IAEd,IAAIC,IAAIW,MAAMxB,UAAU,SAASiB,KAAKO,OAAO;KAC3C,MAAMC,MAAMZ,IAAIW,MAAMzB,aAAae,EAAE,aAAa;KAClD,MAAMY,QAAQR,WAAWM,QAAQ;KACjCN,WAAWM;KACXL,aAAaK;KACbzC,eAAe;MACb4C,QAAQV,KAAKO;MACbC;MACAG,YAAYF;MACZG,QAAQb,UAAU;MAClBc,cAAc;OACZ,IAAIV,UAAU;OACdD,aAAaK,QAAQO,KAAKC,IAAI,GAAGb,aAAaK,QAAQ,CAAC;OACvD,IAAIL,aAAaK,UAAU,GAAGN,WAAWM,QAAQ;MACnD;KACF,CAAC;IACH;GACF,SAAShB,KAAK;IACZI,KAAK,SAASJ,GAAG;GACnB;EACF;EAEA,aAAa;GACX,MAAMV,QAAQe,IAAIW,MAAM1B,SAASgB,EAAE,YAAY;GAC/C,MAAMmB,YAAY9D,WAChB;IACEE,KAAK4C;IACL3B,MAAM;IACN4C,OAAO;IACPhC,UAAUW,IAAIW,MAAMtB,YAAYN,KAAAA;IAChCuC,OAAOzD,eAAe;KACpB,GAAGD,kBAAkB,QAAQoC,IAAIW,MAAM/B,IAAI;KAC3C,GAAGjB,mBAAmB,QAAQqC,IAAIW,MAAM3B,KAAK;KAC7C,GAAGT,MAAMe;IACX,CAAC;IACDiC,SAASf;GACX,GACAV,KACF;GAEA,OAAApC,YAAA,UAAmB0D,WAAS,CAAGxB,MAAMd,UAAU,KAAKG,KAAK,CAAA;EAC3D;CACF;AACF,CAGab"}
@@ -1,3 +1,4 @@
1
+ import { DefineComponent } from 'vue';
1
2
  import { CornerPlacement } from './cornerGeometry';
2
3
  import { CssVars } from '../../util';
3
4
  export type { CornerPlacement };
@@ -14,11 +15,7 @@ export type CornerEarsProps = {
14
15
  * 否则 onClick / class 等 fallthrough 会在类型上被判为不存在。
15
16
  */
16
17
  export type CornerEarsJSXProps = CornerEarsProps & Omit<JSX.IntrinsicElements['div'], keyof CornerEarsProps | 'ref'>;
17
- export type CornerEarsComponent = {
18
- new (): {
19
- $props: CornerEarsJSXProps;
20
- };
21
- };
22
- declare const CornerEars: CornerEarsComponent;
23
- export type CornerEarsInstance = InstanceType<CornerEarsComponent>;
18
+ /** 断言为 DefineComponent,hover / 补全直接看到 CornerEarsJSXProps(勿再包 XxxComponent 别名) */
19
+ declare const CornerEars: DefineComponent<CornerEarsJSXProps>;
20
+ export type CornerEarsInstance = InstanceType<typeof CornerEars>;
24
21
  export default CornerEars;
@@ -2,6 +2,7 @@ import { propSizeToCssVars, toCssVarsStyle } from "../../util/cssVars.js";
2
2
  import { buildStrokePath, cornerFillPath, resolveOpenMode } from "./cornerGeometry.js";
3
3
  import { computed, createVNode, defineComponent, onBeforeUnmount, onMounted, ref, watch } from "vue";
4
4
  //#region components/cornerEars/CornerEars.tsx
5
+ /** 断言为 DefineComponent,hover / 补全直接看到 CornerEarsJSXProps(勿再包 XxxComponent 别名) */
5
6
  var CornerEars = /* @__PURE__ */ defineComponent({
6
7
  name: "CornerEars",
7
8
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"CornerEars.js","names":["computed","defineComponent","onBeforeUnmount","onMounted","ref","watch","createVNode","_createVNode","buildStrokePath","cornerFillPath","resolveOpenMode","propSizeToCssVars","toCssVarsStyle","CornerEarsImpl","name","props","placement","type","Array","required","size","Number","fill","String","default","stroke","undefined","cssVars","Object","setup","slots","sizeValue","hasStroke","Boolean","mode","notchMode","includes","value","showEars","rootRef","box","w","h","ro","measure","el","r","getBoundingClientRect","width","height","bindRo","disconnect","ResizeObserver","observe","strokeD","containerStyle","backgroundColor","map","p","CornerEars"],"sources":["../../../components/cornerEars/CornerEars.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n watch,\r\n type PropType,\r\n} from 'vue'\r\nimport {\r\n buildStrokePath,\r\n cornerFillPath,\r\n resolveOpenMode,\r\n type CornerPlacement,\r\n} from './cornerGeometry'\r\nimport { propSizeToCssVars, toCssVarsStyle, type CssVars } from '../../util'\r\n\r\nexport type { CornerPlacement }\r\n\r\nexport type CornerEarsProps = {\r\n placement: CornerPlacement[]\r\n size: number\r\n fill?: string\r\n stroke?: string\r\n /** 实例 CSS 变量 */\r\n cssVars?: CssVars\r\n}\r\n\r\n/**\r\n * 运行时靠 inheritAttrs 透传到根 div;TSX 需在 $props 上并上原生属性,\r\n * 否则 onClick / class 等 fallthrough 会在类型上被判为不存在。\r\n */\r\nexport type CornerEarsJSXProps = CornerEarsProps &\r\n Omit<JSX.IntrinsicElements['div'], keyof CornerEarsProps | 'ref'>\r\n\r\nexport type CornerEarsComponent = {\r\n new (): {\r\n $props: CornerEarsJSXProps\r\n }\r\n}\r\n\r\nconst CornerEarsImpl = defineComponent({\r\n name: 'CornerEars',\r\n props: {\r\n placement: {\r\n type: Array as PropType<CornerPlacement[]>,\r\n required: true,\r\n },\r\n size: {\r\n type: Number,\r\n required: true,\r\n },\r\n fill: {\r\n type: String,\r\n default: '#ddd',\r\n },\r\n stroke: {\r\n type: String,\r\n default: undefined,\r\n },\r\n cssVars: {\r\n type: Object as PropType<CssVars>,\r\n default: undefined,\r\n },\r\n },\r\n setup(props, { slots }) {\r\n const sizeValue = computed(() => props.size || 20)\r\n const hasStroke = computed(() =>\r\n Boolean(props.stroke && props.stroke !== 'transparent'),\r\n )\r\n const mode = computed(() => resolveOpenMode(props.placement))\r\n const notchMode = computed(() =>\r\n ['leftOut', 'rightOut', 'top', 'bottom'].includes(mode.value),\r\n )\r\n const showEars = computed(() => !hasStroke.value || !notchMode.value)\r\n\r\n const rootRef = ref<HTMLElement | null>(null)\r\n const box = ref({ w: 0, h: 0 })\r\n let ro: ResizeObserver | null = null\r\n\r\n function measure() {\r\n const el = rootRef.value\r\n if (!el) return\r\n const r = el.getBoundingClientRect()\r\n box.value = { w: r.width, h: r.height }\r\n }\r\n\r\n function bindRo() {\r\n ro?.disconnect()\r\n ro = null\r\n if (!hasStroke.value || !rootRef.value) return\r\n measure()\r\n ro = new ResizeObserver(measure)\r\n ro.observe(rootRef.value)\r\n }\r\n\r\n onMounted(bindRo)\r\n watch(hasStroke, bindRo)\r\n onBeforeUnmount(() => {\r\n ro?.disconnect()\r\n ro = null\r\n })\r\n\r\n const strokeD = computed(() =>\r\n hasStroke.value\r\n ? buildStrokePath(box.value.w, box.value.h, sizeValue.value, mode.value)\r\n : '',\r\n )\r\n\r\n const containerStyle = computed(() =>\r\n toCssVarsStyle({\r\n ...propSizeToCssVars('corner', sizeValue.value),\r\n '--w-corner-fill': props.fill || '#ddd',\r\n '--w-corner-stroke': props.stroke || 'transparent',\r\n ...(hasStroke.value ? {} : { '--w-prop-corner-stroke-width': '0px' }),\r\n ...(hasStroke.value && notchMode.value\r\n ? { backgroundColor: 'transparent' }\r\n : {}),\r\n ...props.cssVars,\r\n }),\r\n )\r\n\r\n return () => (\r\n <div\r\n ref={rootRef}\r\n class=\"w-corner-ears\"\r\n style={containerStyle.value}>\r\n {showEars.value\r\n ? props.placement.map((p) => (\r\n <svg\r\n key={p}\r\n class={['w-corner', `w-corner-${p}`]}\r\n width={sizeValue.value}\r\n height={sizeValue.value}\r\n viewBox={`0 0 ${sizeValue.value} ${sizeValue.value}`}\r\n aria-hidden=\"true\">\r\n <path\r\n class=\"w-corner-fill\"\r\n d={cornerFillPath(p, sizeValue.value)}\r\n />\r\n </svg>\r\n ))\r\n : null}\r\n {hasStroke.value && strokeD.value ? (\r\n <svg class=\"w-corner-stroke-layer\" aria-hidden=\"true\">\r\n <path\r\n class={[\r\n 'w-corner-stroke-path',\r\n notchMode.value ? 'is-notch' : '',\r\n ]}\r\n d={strokeD.value}\r\n />\r\n </svg>\r\n ) : null}\r\n {slots.default?.()}\r\n </div>\r\n )\r\n },\r\n})\r\n\r\nconst CornerEars =\r\n CornerEarsImpl as unknown as CornerEarsComponent\r\n\r\nexport type CornerEarsInstance = InstanceType<CornerEarsComponent>\r\n\r\nexport default CornerEars\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"CornerEars.js","names":["computed","defineComponent","onBeforeUnmount","onMounted","ref","watch","createVNode","_createVNode","buildStrokePath","cornerFillPath","resolveOpenMode","propSizeToCssVars","toCssVarsStyle","CornerEarsImpl","name","props","placement","type","Array","required","size","Number","fill","String","default","stroke","undefined","cssVars","Object","setup","slots","sizeValue","hasStroke","Boolean","mode","notchMode","includes","value","showEars","rootRef","box","w","h","ro","measure","el","r","getBoundingClientRect","width","height","bindRo","disconnect","ResizeObserver","observe","strokeD","containerStyle","backgroundColor","map","p","CornerEars"],"sources":["../../../components/cornerEars/CornerEars.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n watch,\r\n type DefineComponent,\r\n type PropType,\r\n} from 'vue'\r\nimport {\r\n buildStrokePath,\r\n cornerFillPath,\r\n resolveOpenMode,\r\n type CornerPlacement,\r\n} from './cornerGeometry'\r\nimport { propSizeToCssVars, toCssVarsStyle, type CssVars } from '../../util'\r\n\r\nexport type { CornerPlacement }\r\n\r\nexport type CornerEarsProps = {\r\n placement: CornerPlacement[]\r\n size: number\r\n fill?: string\r\n stroke?: string\r\n /** 实例 CSS 变量 */\r\n cssVars?: CssVars\r\n}\r\n\r\n/**\r\n * 运行时靠 inheritAttrs 透传到根 div;TSX 需在 $props 上并上原生属性,\r\n * 否则 onClick / class 等 fallthrough 会在类型上被判为不存在。\r\n */\r\nexport type CornerEarsJSXProps = CornerEarsProps &\r\n Omit<JSX.IntrinsicElements['div'], keyof CornerEarsProps | 'ref'>\r\n\r\nconst CornerEarsImpl = defineComponent({\r\n name: 'CornerEars',\r\n props: {\r\n placement: {\r\n type: Array as PropType<CornerPlacement[]>,\r\n required: true,\r\n },\r\n size: {\r\n type: Number,\r\n required: true,\r\n },\r\n fill: {\r\n type: String,\r\n default: '#ddd',\r\n },\r\n stroke: {\r\n type: String,\r\n default: undefined,\r\n },\r\n cssVars: {\r\n type: Object as PropType<CssVars>,\r\n default: undefined,\r\n },\r\n },\r\n setup(props, { slots }) {\r\n const sizeValue = computed(() => props.size || 20)\r\n const hasStroke = computed(() =>\r\n Boolean(props.stroke && props.stroke !== 'transparent'),\r\n )\r\n const mode = computed(() => resolveOpenMode(props.placement))\r\n const notchMode = computed(() =>\r\n ['leftOut', 'rightOut', 'top', 'bottom'].includes(mode.value),\r\n )\r\n const showEars = computed(() => !hasStroke.value || !notchMode.value)\r\n\r\n const rootRef = ref<HTMLElement | null>(null)\r\n const box = ref({ w: 0, h: 0 })\r\n let ro: ResizeObserver | null = null\r\n\r\n function measure() {\r\n const el = rootRef.value\r\n if (!el) return\r\n const r = el.getBoundingClientRect()\r\n box.value = { w: r.width, h: r.height }\r\n }\r\n\r\n function bindRo() {\r\n ro?.disconnect()\r\n ro = null\r\n if (!hasStroke.value || !rootRef.value) return\r\n measure()\r\n ro = new ResizeObserver(measure)\r\n ro.observe(rootRef.value)\r\n }\r\n\r\n onMounted(bindRo)\r\n watch(hasStroke, bindRo)\r\n onBeforeUnmount(() => {\r\n ro?.disconnect()\r\n ro = null\r\n })\r\n\r\n const strokeD = computed(() =>\r\n hasStroke.value\r\n ? buildStrokePath(box.value.w, box.value.h, sizeValue.value, mode.value)\r\n : '',\r\n )\r\n\r\n const containerStyle = computed(() =>\r\n toCssVarsStyle({\r\n ...propSizeToCssVars('corner', sizeValue.value),\r\n '--w-corner-fill': props.fill || '#ddd',\r\n '--w-corner-stroke': props.stroke || 'transparent',\r\n ...(hasStroke.value ? {} : { '--w-prop-corner-stroke-width': '0px' }),\r\n ...(hasStroke.value && notchMode.value\r\n ? { backgroundColor: 'transparent' }\r\n : {}),\r\n ...props.cssVars,\r\n }),\r\n )\r\n\r\n return () => (\r\n <div\r\n ref={rootRef}\r\n class=\"w-corner-ears\"\r\n style={containerStyle.value}>\r\n {showEars.value\r\n ? props.placement.map((p) => (\r\n <svg\r\n key={p}\r\n class={['w-corner', `w-corner-${p}`]}\r\n width={sizeValue.value}\r\n height={sizeValue.value}\r\n viewBox={`0 0 ${sizeValue.value} ${sizeValue.value}`}\r\n aria-hidden=\"true\">\r\n <path\r\n class=\"w-corner-fill\"\r\n d={cornerFillPath(p, sizeValue.value)}\r\n />\r\n </svg>\r\n ))\r\n : null}\r\n {hasStroke.value && strokeD.value ? (\r\n <svg class=\"w-corner-stroke-layer\" aria-hidden=\"true\">\r\n <path\r\n class={[\r\n 'w-corner-stroke-path',\r\n notchMode.value ? 'is-notch' : '',\r\n ]}\r\n d={strokeD.value}\r\n />\r\n </svg>\r\n ) : null}\r\n {slots.default?.()}\r\n </div>\r\n )\r\n },\r\n})\r\n\r\n/** 断言为 DefineComponent,hover / 补全直接看到 CornerEarsJSXProps(勿再包 XxxComponent 别名) */\r\nconst CornerEars =\r\n CornerEarsImpl as unknown as DefineComponent<CornerEarsJSXProps>\r\n\r\nexport type CornerEarsInstance = InstanceType<typeof CornerEars>\r\n\r\nexport default CornerEars\r\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { DefineComponent } from 'vue';
2
+ /** 收窄为 DefineComponent,避免 dts 暴露子组件 emits 的私有 EmitOptions */
3
+ declare const _default: DefineComponent;
4
+ export default _default;
@@ -15,7 +15,7 @@ var renderWeekTitleList = (dayMap) => {
15
15
  for (const [k, v] of dayMap) days.push(createVNode("b", { "class": ["w-week-title-item"] }, [v]));
16
16
  return createVNode("div", { "class": "w-week-title" }, [days]);
17
17
  };
18
- var DatePanel_default = /* @__PURE__ */ defineComponent({
18
+ var DatePanel = /* @__PURE__ */ defineComponent({
19
19
  name: "DatePanel",
20
20
  components: {
21
21
  Btn,
@@ -393,6 +393,6 @@ var DatePanel_default = /* @__PURE__ */ defineComponent({
393
393
  }
394
394
  });
395
395
  //#endregion
396
- export { DatePanel_default as default };
396
+ export { DatePanel as default };
397
397
 
398
398
  //# sourceMappingURL=DatePanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePanel.js","names":["defineComponent","ref","computed","watch","reactive","inject","createVNode","_createVNode","Fragment","_Fragment","useDate","Icon","Days","useUII18n","Months","Years","Toggle","Dial","Btn","useDateView","useBarText","useFormatDate","renderWeekTitleList","dayMap","days","k","v","push","name","components","props","modelValue","type","Number","Date","String","default","undefined","format","max","min","placeholder","emits","setup","emit","t","renderPrevIcon","handleClick","renderNextIcon","formItem","ctrlIcon","toggleComponent","currentView","isYear","isDay","isMonth","isTime","formatIsDay","formatIsMonth","formatIsYear","formatIsTime","getFormatView","setCurrentView","isUpDown","yearPanel","from","to","selectedDate","getStringDate","formatDate","displayDate","addMonths","addYears","year","displayYear","yearPanelLength","month","displayMonth","timeFormat","f","_f","value","split","timeValue","d","h","getHours","m","getMinutes","s","getSeconds","hh","toString","padStart","mm","ss","dataList","datetype","val","barText","renderContent","bar","renderControlBar","transform","toggleOptions","class","dynamic","data","direction","scale","onWheel","event","delay","deltaY","toNext","toPrev","item","index","stringDate","isClose","validate","next","shift","hms","createTimeByFormat","sd","join","toggleDate","sDate","onGet-from-to","y","use","onClick","prev","unshift","pop","yms","slice","view","am","ay","a","clear","init","fv","_fv"],"sources":["../../../components/date/DatePanel.tsx"],"sourcesContent":["import { defineComponent, ref, computed, watch, reactive, inject } from \"vue\"\r\nimport type { PropType } from \"vue\"\r\nimport type {\r\n ToggleTransformType,\r\n DateFormatType,\r\n TimeFormatType,\r\n} from \"../../config/types\"\r\nimport useDate from \"../../use/useDate\"\r\nimport Icon from \"../icon/index\"\r\nimport Days from \"./Days\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\nimport Months from \"./Months\"\r\nimport Years from \"./Years\"\r\nimport Toggle from \"../toggle/index\"\r\nimport Dial from \"../time/Dial.vue\"\r\nimport Btn from \"../btn/index\"\r\n\r\nimport {\r\n useDateView,\r\n useBarText,\r\n useDateText,\r\n useFormatDate,\r\n} from \"./_use/useDateModules\"\r\n\r\ntype DirectionType = \"x\" | \"y\"\r\ntype ViewsType = \"year\" | \"month\" | \"day\" | \"time\"\r\ntype DataItemType = { datetype: ViewsType; val: number | string }\r\n\r\nconst renderWeekTitleList = (dayMap: ReadonlyMap<number, string>) => {\r\n const days: any[] = []\r\n for (const [k, v] of dayMap) {\r\n days.push(<b class={[\"w-week-title-item\"]}>{v}</b>)\r\n }\r\n return <div class=\"w-week-title\">{days}</div>\r\n}\r\n\r\nexport default defineComponent({\r\n name: \"DatePanel\",\r\n components: { Btn, Icon, Days, Months, Years, Toggle, Dial },\r\n props: {\r\n modelValue: {\r\n type: [Number, Date, String],\r\n default: undefined,\r\n },\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 placeholder: String,\r\n },\r\n emits: [\"update:modelValue\", \"change\"],\r\n setup(props, { emit }) {\r\n const { t } = useUII18n()\r\n const renderPrevIcon = (handleClick: () => void) => (\r\n <Icon\r\n name=\"w-icon-sort-down\"\r\n class=\"w-date-control-bar-icon\"\r\n rotate={true}\r\n //@ts-ignore\r\n onClick={handleClick}\r\n />\r\n )\r\n\r\n const renderNextIcon = (handleClick: () => void) => (\r\n //@ts-ignore\r\n <Icon\r\n name=\"w-icon-sort-down\"\r\n class=\"w-date-control-bar-icon\"\r\n //@ts-ignore\r\n onClick={handleClick}\r\n />\r\n )\r\n\r\n const formItem: any = inject(\"formItem\", undefined)\r\n\r\n const ctrlIcon = ref<HTMLElement>()\r\n const toggleComponent = ref<typeof Toggle>()\r\n const {\r\n currentView,\r\n isYear,\r\n isDay,\r\n isMonth,\r\n isTime,\r\n formatIsDay,\r\n formatIsMonth,\r\n formatIsYear,\r\n formatIsTime,\r\n getFormatView,\r\n setCurrentView,\r\n } = useDateView(computed(() => props.format))\r\n\r\n const isUpDown = ref(false)\r\n const yearPanel = reactive({ from: 0, to: 0 })\r\n const { selectedDate, getStringDate, formatDate } = useFormatDate(\r\n computed(() => props.format),\r\n computed(() => props.modelValue)\r\n )\r\n //当前下拉框展示的日期\r\n const displayDate = ref(formatDate(props.modelValue) || new Date())\r\n const {\r\n addMonths,\r\n addYears,\r\n dayMap,\r\n format,\r\n year: displayYear,\r\n yearPanelLength,\r\n month: displayMonth,\r\n } = useDate(\r\n displayDate,\r\n computed(() => props.format)\r\n )\r\n const timeFormat = computed(() => {\r\n let f: TimeFormatType = \"HH:mm:ss\"\r\n const _f = props.format\r\n if (formatIsTime.value) {\r\n f = _f.split(/\\s+/)[1] as TimeFormatType\r\n }\r\n return f\r\n })\r\n const timeValue = computed(() => {\r\n if (isTime.value) {\r\n const d = selectedDate.value\r\n if (d) {\r\n const h = d.getHours(),\r\n m = d.getMinutes(),\r\n s = d.getSeconds()\r\n const hh = h.toString().padStart(2, \"0\")\r\n const mm = m.toString().padStart(2, \"0\")\r\n const ss = s.toString().padStart(2, \"0\")\r\n return [hh, mm, ss]\r\n } else {\r\n return [\"00\", \"00\", \"00\"]\r\n }\r\n }\r\n })\r\n\r\n const dataList = ref<DataItemType[]>([\r\n { datetype: \"day\", val: Number(displayDate.value) },\r\n ])\r\n\r\n const barText = useBarText(\r\n isYear,\r\n isMonth,\r\n isDay,\r\n isTime,\r\n displayDate,\r\n yearPanel\r\n )\r\n\r\n function renderContent() {\r\n const bar = renderControlBar()\r\n const transform: ToggleTransformType = isUpDown.value\r\n ? \"translate\"\r\n : \"scale\"\r\n let toggleOptions = {\r\n ref: toggleComponent,\r\n class:\r\n isDay.value || isTime.value\r\n ? \"w-date-days\"\r\n : isMonth.value || isYear.value\r\n ? \"w-date-months\"\r\n : \"\",\r\n dynamic: true,\r\n data: dataList.value,\r\n direction: \"y\" as DirectionType,\r\n transform,\r\n scale: {\r\n from: 0.75,\r\n to: 1.8,\r\n },\r\n onWheel({\r\n event,\r\n delay,\r\n }: {\r\n event: WheelEvent\r\n delay: (fn: Function, n: number) => void\r\n }) {\r\n if (event.deltaY > 0) {\r\n delay(toNext, 100)\r\n } else {\r\n delay(toPrev, 100)\r\n }\r\n },\r\n }\r\n return (\r\n <>\r\n {bar}\r\n <Toggle\r\n {...toggleOptions}\r\n v-slots={{\r\n default: ({\r\n item,\r\n index,\r\n }: {\r\n item: DataItemType\r\n index: number\r\n }) => {\r\n if (item.datetype === \"day\") {\r\n return (\r\n <Days\r\n date={selectedDate.value}\r\n displayDate={item.val}\r\n format={props.format}\r\n min={props.min}\r\n max={props.max}\r\n onToggle-day={(stringDate) => {\r\n if (formatIsDay.value) {\r\n emit(\"update:modelValue\", stringDate)\r\n emit(\"change\", { v: stringDate, isClose: true })\r\n // visible.value = false\r\n formItem?.validate(\"change\")\r\n } else if (formatIsTime.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.next()\r\n dataList.value.push({\r\n datetype: \"time\",\r\n val: \"\",\r\n })\r\n dataList.value.shift()\r\n setCurrentView(\"time\")\r\n const hms = createTimeByFormat()\r\n let sd = stringDate\r\n if (hms) {\r\n sd = sd + \" \" + hms\r\n }\r\n // console.log(sd)\r\n emit(\"update:modelValue\", sd)\r\n // console.log(\"????\", sd)\r\n emit(\"change\", { v: sd, isClose: false })\r\n formItem?.validate(\"change\")\r\n }\r\n }}\r\n />\r\n )\r\n } else if (item.datetype === \"time\") {\r\n return (\r\n <Dial\r\n format={timeFormat.value}\r\n value={timeValue.value?.join(\":\")}\r\n onChange={(hms?: string) => {\r\n const sd = selectedDate.value\r\n if (sd) {\r\n const d = format(sd, \"yyyy-MM-dd\")\r\n if (hms) {\r\n emit(\"update:modelValue\", d + \" \" + hms)\r\n emit(\"change\", { v: d + \" \" + hms, isClose: false })\r\n formItem?.validate(\"change\")\r\n }\r\n }\r\n }}\r\n />\r\n )\r\n } else if (item.datetype === \"month\") {\r\n return (\r\n <Months\r\n date={selectedDate.value}\r\n displayDate={displayDate.value}\r\n min={props.min}\r\n max={props.max}\r\n onToggle-month={(toggleDate) => {\r\n if (formatIsDay.value || formatIsTime.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.next()\r\n dataList.value.push({\r\n datetype: \"day\",\r\n val: Number(toggleDate),\r\n })\r\n setCurrentView(\"day\")\r\n displayDate.value = toggleDate\r\n dataList.value.shift()\r\n } else if (formatIsMonth.value) {\r\n // console.log(getStringDate(toggleDate))\r\n const sDate = getStringDate(toggleDate)\r\n emit(\"update:modelValue\", sDate)\r\n emit(\"change\", { v: sDate, isClose: true })\r\n // visible.value = false\r\n formItem?.validate(\"change\")\r\n }\r\n }}\r\n />\r\n )\r\n } else {\r\n return (\r\n <Years\r\n from={yearPanel.from}\r\n to={yearPanel.to}\r\n date={selectedDate.value}\r\n displayDate={displayDate.value}\r\n min={props.min}\r\n max={props.max}\r\n onGet-from-to={(from, to) => {\r\n yearPanel.from = from\r\n yearPanel.to = to\r\n }}\r\n onToggle-year={(y) => {\r\n if (formatIsYear.value) {\r\n emit(\"update:modelValue\", y + \"\")\r\n emit(\"change\", { v: y + \"\", isClose: true })\r\n // visible.value = false\r\n formItem?.validate(\"change\")\r\n } else {\r\n isUpDown.value = false\r\n toggleComponent.value?.next()\r\n dataList.value.push({\r\n datetype: \"month\",\r\n val: \"\",\r\n })\r\n displayDate.value = new Date(y, 0)\r\n setCurrentView(\"month\")\r\n dataList.value.shift()\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n },\r\n use: () => isDay.value && renderWeekTitleList(dayMap.value),\r\n }}\r\n />\r\n </>\r\n )\r\n }\r\n function renderControlBar() {\r\n return (\r\n <div class=\"w-date-control-bar\" ref={ctrlIcon as any}>\r\n <div\r\n class={[\r\n isYear.value\r\n ? \"w-date-control-bar-disabled\"\r\n : \"w-date-control-bar-y-m\",\r\n ]}\r\n onClick={() => {\r\n if (isDay.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"month\",\r\n val: displayMonth.value,\r\n })\r\n setCurrentView(\"month\")\r\n dataList.value.pop()\r\n } else if (isMonth.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"year\",\r\n val: displayYear.value,\r\n })\r\n setCurrentView(\"year\")\r\n dataList.value.pop()\r\n yearPanel.from = 0\r\n yearPanel.to = 0\r\n } else if (isTime.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"day\",\r\n val: Number(displayDate.value),\r\n })\r\n setCurrentView(\"day\")\r\n dataList.value.pop()\r\n }\r\n }}>\r\n {barText.value}\r\n </div>\r\n {isTime.value ? (\r\n <Btn\r\n mode=\"text\"\r\n text={t(\"date.confirm\")}\r\n //@ts-ignore\r\n onClick={() => {\r\n // console.log(props.modelValue)\r\n emit(\"change\", { v: props.modelValue, isClose: true })\r\n }}\r\n />\r\n ) : (\r\n [\r\n <span class=\"w-date-placeholder\">{props.placeholder}</span>,\r\n renderPrevIcon(toPrev),\r\n renderNextIcon(toNext),\r\n ]\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n function createTimeByFormat() {\r\n const f = timeFormat.value\r\n const yms = timeValue.value\r\n if (yms) {\r\n if (f === \"HH\") {\r\n return yms[0]\r\n } else if (f === \"HH:mm\") {\r\n return yms.slice(0, 2).join(\":\")\r\n } else if (f === \"HH:mm:ss\") {\r\n return yms.join(\":\")\r\n }\r\n }\r\n }\r\n\r\n function toPrev() {\r\n // isPrev.value = true\r\n isUpDown.value = true\r\n const view = currentView.value\r\n toggleComponent.value?.prev()\r\n if (view === \"day\") {\r\n const am = addMonths(displayDate.value, -1)\r\n dataList.value.unshift({ datetype: view, val: Number(am) })\r\n dataList.value.pop()\r\n displayDate.value = am\r\n } else if (view === \"month\") {\r\n const ay = addYears(displayDate.value, -1)\r\n const a = Number(ay)\r\n dataList.value.unshift({ datetype: view, val: a })\r\n dataList.value.pop()\r\n displayDate.value = ay\r\n } else {\r\n yearPanel.from = yearPanel.from - yearPanelLength\r\n yearPanel.to = yearPanel.to - yearPanelLength\r\n\r\n dataList.value.unshift({ datetype: view, val: Number(new Date()) })\r\n dataList.value.pop()\r\n }\r\n }\r\n\r\n function toNext() {\r\n // isPrev.value = false\r\n isUpDown.value = true\r\n const view = currentView.value\r\n toggleComponent.value?.next()\r\n if (view === \"day\") {\r\n const am = addMonths(displayDate.value)\r\n const a = Number(am)\r\n dataList.value.push({ datetype: view, val: a })\r\n dataList.value.shift()\r\n displayDate.value = am\r\n } else if (view === \"month\") {\r\n const ay = addYears(displayDate.value, 1)\r\n const a = Number(ay)\r\n dataList.value.push({ datetype: view, val: a })\r\n dataList.value.shift()\r\n displayDate.value = ay\r\n } else {\r\n yearPanel.from = yearPanel.from + yearPanelLength\r\n yearPanel.to = yearPanel.to + yearPanelLength\r\n //val是时间戳,以保证每次都会变化,这样动画才会生效!\r\n dataList.value.push({ datetype: view, val: Number(new Date()) })\r\n dataList.value.shift()\r\n }\r\n }\r\n\r\n function clear() {\r\n // 清空时,仍然保持在当前的显示状态\r\n // displayDate.value = new Date()\r\n // dataList.value = [{ datetype: 'day', val: Number(displayDate.value) }]\r\n //setCurrentView('day')\r\n if (isTime.value) {\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"day\",\r\n val: Number(displayDate.value),\r\n })\r\n dataList.value.pop()\r\n setCurrentView(\"day\")\r\n }\r\n emit(\"update:modelValue\", undefined)\r\n emit(\"change\", undefined)\r\n formItem?.validate(\"change\")\r\n }\r\n\r\n function init() {\r\n let fv = getFormatView()\r\n const _fv = fv === \"time\" ? \"day\" : fv\r\n //每次展示下拉框时,根据当前选中的日期进行初始化\r\n if (selectedDate.value) {\r\n displayDate.value = selectedDate.value\r\n dataList.value = [\r\n { datetype: _fv, val: format(selectedDate.value, props.format) },\r\n ]\r\n } else {\r\n displayDate.value = new Date()\r\n dataList.value = [{ datetype: _fv, val: Number(new Date()) }]\r\n }\r\n //每次显示出下拉框时就会按照format给定的值进行初始化界面\r\n\r\n setCurrentView(_fv)\r\n }\r\n\r\n init()\r\n\r\n watch(\r\n () => props.modelValue,\r\n (d) => {\r\n if (d !== undefined) {\r\n // displayDate.value = d\r\n displayDate.value = selectedDate.value!\r\n }\r\n }\r\n )\r\n\r\n return renderContent\r\n },\r\n})\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatePanel.js","names":["defineComponent","ref","computed","watch","reactive","inject","createVNode","_createVNode","Fragment","_Fragment","useDate","Icon","Days","useUII18n","Months","Years","Toggle","Dial","Btn","useDateView","useBarText","useFormatDate","renderWeekTitleList","dayMap","days","k","v","push","DatePanel","name","components","props","modelValue","type","Number","Date","String","default","undefined","format","max","min","placeholder","emits","setup","emit","t","renderPrevIcon","handleClick","renderNextIcon","formItem","ctrlIcon","toggleComponent","currentView","isYear","isDay","isMonth","isTime","formatIsDay","formatIsMonth","formatIsYear","formatIsTime","getFormatView","setCurrentView","isUpDown","yearPanel","from","to","selectedDate","getStringDate","formatDate","displayDate","addMonths","addYears","year","displayYear","yearPanelLength","month","displayMonth","timeFormat","f","_f","value","split","timeValue","d","h","getHours","m","getMinutes","s","getSeconds","hh","toString","padStart","mm","ss","dataList","datetype","val","barText","renderContent","bar","renderControlBar","transform","toggleOptions","class","dynamic","data","direction","scale","onWheel","event","delay","deltaY","toNext","toPrev","item","index","stringDate","isClose","validate","next","shift","hms","createTimeByFormat","sd","join","toggleDate","sDate","onGet-from-to","y","use","onClick","prev","unshift","pop","yms","slice","view","am","ay","a","clear","init","fv","_fv"],"sources":["../../../components/date/DatePanel.tsx"],"sourcesContent":["import { defineComponent, ref, computed, watch, reactive, inject } from \"vue\"\r\nimport type { DefineComponent, PropType } from \"vue\"\r\nimport type {\r\n ToggleTransformType,\r\n DateFormatType,\r\n TimeFormatType,\r\n} from \"../../config/types\"\r\nimport useDate from \"../../use/useDate\"\r\nimport Icon from \"../icon/index\"\r\nimport Days from \"./Days\"\r\nimport { useUII18n } from \"../../use/useUII18n\"\r\nimport Months from \"./Months\"\r\nimport Years from \"./Years\"\r\nimport Toggle from \"../toggle/index\"\r\nimport Dial from \"../time/Dial.vue\"\r\nimport Btn from \"../btn/index\"\r\n\r\nimport {\r\n useDateView,\r\n useBarText,\r\n useDateText,\r\n useFormatDate,\r\n} from \"./_use/useDateModules\"\r\n\r\ntype DirectionType = \"x\" | \"y\"\r\ntype ViewsType = \"year\" | \"month\" | \"day\" | \"time\"\r\ntype DataItemType = { datetype: ViewsType; val: number | string }\r\n\r\nconst renderWeekTitleList = (dayMap: ReadonlyMap<number, string>) => {\r\n const days: any[] = []\r\n for (const [k, v] of dayMap) {\r\n days.push(<b class={[\"w-week-title-item\"]}>{v}</b>)\r\n }\r\n return <div class=\"w-week-title\">{days}</div>\r\n}\r\n\r\nconst DatePanel = defineComponent({\r\n name: \"DatePanel\",\r\n components: { Btn, Icon, Days, Months, Years, Toggle, Dial },\r\n props: {\r\n modelValue: {\r\n type: [Number, Date, String],\r\n default: undefined,\r\n },\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 placeholder: String,\r\n },\r\n emits: [\"update:modelValue\", \"change\"],\r\n setup(props, { emit }) {\r\n const { t } = useUII18n()\r\n const renderPrevIcon = (handleClick: () => void) => (\r\n <Icon\r\n name=\"w-icon-sort-down\"\r\n class=\"w-date-control-bar-icon\"\r\n rotate={true}\r\n //@ts-ignore\r\n onClick={handleClick}\r\n />\r\n )\r\n\r\n const renderNextIcon = (handleClick: () => void) => (\r\n //@ts-ignore\r\n <Icon\r\n name=\"w-icon-sort-down\"\r\n class=\"w-date-control-bar-icon\"\r\n //@ts-ignore\r\n onClick={handleClick}\r\n />\r\n )\r\n\r\n const formItem: any = inject(\"formItem\", undefined)\r\n\r\n const ctrlIcon = ref<HTMLElement>()\r\n const toggleComponent = ref<typeof Toggle>()\r\n const {\r\n currentView,\r\n isYear,\r\n isDay,\r\n isMonth,\r\n isTime,\r\n formatIsDay,\r\n formatIsMonth,\r\n formatIsYear,\r\n formatIsTime,\r\n getFormatView,\r\n setCurrentView,\r\n } = useDateView(computed(() => props.format))\r\n\r\n const isUpDown = ref(false)\r\n const yearPanel = reactive({ from: 0, to: 0 })\r\n const { selectedDate, getStringDate, formatDate } = useFormatDate(\r\n computed(() => props.format),\r\n computed(() => props.modelValue)\r\n )\r\n //当前下拉框展示的日期\r\n const displayDate = ref(formatDate(props.modelValue) || new Date())\r\n const {\r\n addMonths,\r\n addYears,\r\n dayMap,\r\n format,\r\n year: displayYear,\r\n yearPanelLength,\r\n month: displayMonth,\r\n } = useDate(\r\n displayDate,\r\n computed(() => props.format)\r\n )\r\n const timeFormat = computed(() => {\r\n let f: TimeFormatType = \"HH:mm:ss\"\r\n const _f = props.format\r\n if (formatIsTime.value) {\r\n f = _f.split(/\\s+/)[1] as TimeFormatType\r\n }\r\n return f\r\n })\r\n const timeValue = computed(() => {\r\n if (isTime.value) {\r\n const d = selectedDate.value\r\n if (d) {\r\n const h = d.getHours(),\r\n m = d.getMinutes(),\r\n s = d.getSeconds()\r\n const hh = h.toString().padStart(2, \"0\")\r\n const mm = m.toString().padStart(2, \"0\")\r\n const ss = s.toString().padStart(2, \"0\")\r\n return [hh, mm, ss]\r\n } else {\r\n return [\"00\", \"00\", \"00\"]\r\n }\r\n }\r\n })\r\n\r\n const dataList = ref<DataItemType[]>([\r\n { datetype: \"day\", val: Number(displayDate.value) },\r\n ])\r\n\r\n const barText = useBarText(\r\n isYear,\r\n isMonth,\r\n isDay,\r\n isTime,\r\n displayDate,\r\n yearPanel\r\n )\r\n\r\n function renderContent() {\r\n const bar = renderControlBar()\r\n const transform: ToggleTransformType = isUpDown.value\r\n ? \"translate\"\r\n : \"scale\"\r\n let toggleOptions = {\r\n ref: toggleComponent,\r\n class:\r\n isDay.value || isTime.value\r\n ? \"w-date-days\"\r\n : isMonth.value || isYear.value\r\n ? \"w-date-months\"\r\n : \"\",\r\n dynamic: true,\r\n data: dataList.value,\r\n direction: \"y\" as DirectionType,\r\n transform,\r\n scale: {\r\n from: 0.75,\r\n to: 1.8,\r\n },\r\n onWheel({\r\n event,\r\n delay,\r\n }: {\r\n event: WheelEvent\r\n delay: (fn: Function, n: number) => void\r\n }) {\r\n if (event.deltaY > 0) {\r\n delay(toNext, 100)\r\n } else {\r\n delay(toPrev, 100)\r\n }\r\n },\r\n }\r\n return (\r\n <>\r\n {bar}\r\n <Toggle\r\n {...toggleOptions}\r\n v-slots={{\r\n default: ({\r\n item,\r\n index,\r\n }: {\r\n item: DataItemType\r\n index: number\r\n }) => {\r\n if (item.datetype === \"day\") {\r\n return (\r\n <Days\r\n date={selectedDate.value}\r\n displayDate={item.val}\r\n format={props.format}\r\n min={props.min}\r\n max={props.max}\r\n onToggle-day={(stringDate) => {\r\n if (formatIsDay.value) {\r\n emit(\"update:modelValue\", stringDate)\r\n emit(\"change\", { v: stringDate, isClose: true })\r\n // visible.value = false\r\n formItem?.validate(\"change\")\r\n } else if (formatIsTime.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.next()\r\n dataList.value.push({\r\n datetype: \"time\",\r\n val: \"\",\r\n })\r\n dataList.value.shift()\r\n setCurrentView(\"time\")\r\n const hms = createTimeByFormat()\r\n let sd = stringDate\r\n if (hms) {\r\n sd = sd + \" \" + hms\r\n }\r\n // console.log(sd)\r\n emit(\"update:modelValue\", sd)\r\n // console.log(\"????\", sd)\r\n emit(\"change\", { v: sd, isClose: false })\r\n formItem?.validate(\"change\")\r\n }\r\n }}\r\n />\r\n )\r\n } else if (item.datetype === \"time\") {\r\n return (\r\n <Dial\r\n format={timeFormat.value}\r\n value={timeValue.value?.join(\":\")}\r\n onChange={(hms?: string) => {\r\n const sd = selectedDate.value\r\n if (sd) {\r\n const d = format(sd, \"yyyy-MM-dd\")\r\n if (hms) {\r\n emit(\"update:modelValue\", d + \" \" + hms)\r\n emit(\"change\", { v: d + \" \" + hms, isClose: false })\r\n formItem?.validate(\"change\")\r\n }\r\n }\r\n }}\r\n />\r\n )\r\n } else if (item.datetype === \"month\") {\r\n return (\r\n <Months\r\n date={selectedDate.value}\r\n displayDate={displayDate.value}\r\n min={props.min}\r\n max={props.max}\r\n onToggle-month={(toggleDate) => {\r\n if (formatIsDay.value || formatIsTime.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.next()\r\n dataList.value.push({\r\n datetype: \"day\",\r\n val: Number(toggleDate),\r\n })\r\n setCurrentView(\"day\")\r\n displayDate.value = toggleDate\r\n dataList.value.shift()\r\n } else if (formatIsMonth.value) {\r\n // console.log(getStringDate(toggleDate))\r\n const sDate = getStringDate(toggleDate)\r\n emit(\"update:modelValue\", sDate)\r\n emit(\"change\", { v: sDate, isClose: true })\r\n // visible.value = false\r\n formItem?.validate(\"change\")\r\n }\r\n }}\r\n />\r\n )\r\n } else {\r\n return (\r\n <Years\r\n from={yearPanel.from}\r\n to={yearPanel.to}\r\n date={selectedDate.value}\r\n displayDate={displayDate.value}\r\n min={props.min}\r\n max={props.max}\r\n onGet-from-to={(from, to) => {\r\n yearPanel.from = from\r\n yearPanel.to = to\r\n }}\r\n onToggle-year={(y) => {\r\n if (formatIsYear.value) {\r\n emit(\"update:modelValue\", y + \"\")\r\n emit(\"change\", { v: y + \"\", isClose: true })\r\n // visible.value = false\r\n formItem?.validate(\"change\")\r\n } else {\r\n isUpDown.value = false\r\n toggleComponent.value?.next()\r\n dataList.value.push({\r\n datetype: \"month\",\r\n val: \"\",\r\n })\r\n displayDate.value = new Date(y, 0)\r\n setCurrentView(\"month\")\r\n dataList.value.shift()\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n },\r\n use: () => isDay.value && renderWeekTitleList(dayMap.value),\r\n }}\r\n />\r\n </>\r\n )\r\n }\r\n function renderControlBar() {\r\n return (\r\n <div class=\"w-date-control-bar\" ref={ctrlIcon as any}>\r\n <div\r\n class={[\r\n isYear.value\r\n ? \"w-date-control-bar-disabled\"\r\n : \"w-date-control-bar-y-m\",\r\n ]}\r\n onClick={() => {\r\n if (isDay.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"month\",\r\n val: displayMonth.value,\r\n })\r\n setCurrentView(\"month\")\r\n dataList.value.pop()\r\n } else if (isMonth.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"year\",\r\n val: displayYear.value,\r\n })\r\n setCurrentView(\"year\")\r\n dataList.value.pop()\r\n yearPanel.from = 0\r\n yearPanel.to = 0\r\n } else if (isTime.value) {\r\n isUpDown.value = false\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"day\",\r\n val: Number(displayDate.value),\r\n })\r\n setCurrentView(\"day\")\r\n dataList.value.pop()\r\n }\r\n }}>\r\n {barText.value}\r\n </div>\r\n {isTime.value ? (\r\n <Btn\r\n mode=\"text\"\r\n text={t(\"date.confirm\")}\r\n //@ts-ignore\r\n onClick={() => {\r\n // console.log(props.modelValue)\r\n emit(\"change\", { v: props.modelValue, isClose: true })\r\n }}\r\n />\r\n ) : (\r\n [\r\n <span class=\"w-date-placeholder\">{props.placeholder}</span>,\r\n renderPrevIcon(toPrev),\r\n renderNextIcon(toNext),\r\n ]\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n function createTimeByFormat() {\r\n const f = timeFormat.value\r\n const yms = timeValue.value\r\n if (yms) {\r\n if (f === \"HH\") {\r\n return yms[0]\r\n } else if (f === \"HH:mm\") {\r\n return yms.slice(0, 2).join(\":\")\r\n } else if (f === \"HH:mm:ss\") {\r\n return yms.join(\":\")\r\n }\r\n }\r\n }\r\n\r\n function toPrev() {\r\n // isPrev.value = true\r\n isUpDown.value = true\r\n const view = currentView.value\r\n toggleComponent.value?.prev()\r\n if (view === \"day\") {\r\n const am = addMonths(displayDate.value, -1)\r\n dataList.value.unshift({ datetype: view, val: Number(am) })\r\n dataList.value.pop()\r\n displayDate.value = am\r\n } else if (view === \"month\") {\r\n const ay = addYears(displayDate.value, -1)\r\n const a = Number(ay)\r\n dataList.value.unshift({ datetype: view, val: a })\r\n dataList.value.pop()\r\n displayDate.value = ay\r\n } else {\r\n yearPanel.from = yearPanel.from - yearPanelLength\r\n yearPanel.to = yearPanel.to - yearPanelLength\r\n\r\n dataList.value.unshift({ datetype: view, val: Number(new Date()) })\r\n dataList.value.pop()\r\n }\r\n }\r\n\r\n function toNext() {\r\n // isPrev.value = false\r\n isUpDown.value = true\r\n const view = currentView.value\r\n toggleComponent.value?.next()\r\n if (view === \"day\") {\r\n const am = addMonths(displayDate.value)\r\n const a = Number(am)\r\n dataList.value.push({ datetype: view, val: a })\r\n dataList.value.shift()\r\n displayDate.value = am\r\n } else if (view === \"month\") {\r\n const ay = addYears(displayDate.value, 1)\r\n const a = Number(ay)\r\n dataList.value.push({ datetype: view, val: a })\r\n dataList.value.shift()\r\n displayDate.value = ay\r\n } else {\r\n yearPanel.from = yearPanel.from + yearPanelLength\r\n yearPanel.to = yearPanel.to + yearPanelLength\r\n //val是时间戳,以保证每次都会变化,这样动画才会生效!\r\n dataList.value.push({ datetype: view, val: Number(new Date()) })\r\n dataList.value.shift()\r\n }\r\n }\r\n\r\n function clear() {\r\n // 清空时,仍然保持在当前的显示状态\r\n // displayDate.value = new Date()\r\n // dataList.value = [{ datetype: 'day', val: Number(displayDate.value) }]\r\n //setCurrentView('day')\r\n if (isTime.value) {\r\n toggleComponent.value?.prev()\r\n dataList.value.unshift({\r\n datetype: \"day\",\r\n val: Number(displayDate.value),\r\n })\r\n dataList.value.pop()\r\n setCurrentView(\"day\")\r\n }\r\n emit(\"update:modelValue\", undefined)\r\n emit(\"change\", undefined)\r\n formItem?.validate(\"change\")\r\n }\r\n\r\n function init() {\r\n let fv = getFormatView()\r\n const _fv = fv === \"time\" ? \"day\" : fv\r\n //每次展示下拉框时,根据当前选中的日期进行初始化\r\n if (selectedDate.value) {\r\n displayDate.value = selectedDate.value\r\n dataList.value = [\r\n { datetype: _fv, val: format(selectedDate.value, props.format) },\r\n ]\r\n } else {\r\n displayDate.value = new Date()\r\n dataList.value = [{ datetype: _fv, val: Number(new Date()) }]\r\n }\r\n //每次显示出下拉框时就会按照format给定的值进行初始化界面\r\n\r\n setCurrentView(_fv)\r\n }\r\n\r\n init()\r\n\r\n watch(\r\n () => props.modelValue,\r\n (d) => {\r\n if (d !== undefined) {\r\n // displayDate.value = d\r\n displayDate.value = selectedDate.value!\r\n }\r\n }\r\n )\r\n\r\n return renderContent\r\n },\r\n})\r\n\r\n/** 收窄为 DefineComponent,避免 dts 暴露子组件 emits 的私有 EmitOptions */\r\nexport default DatePanel as unknown as DefineComponent\r\n"],"mappings":"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"}
@@ -214,8 +214,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
214
214
  modelValue: DateType;
215
215
  disabled: boolean;
216
216
  range: boolean;
217
- clearable: boolean;
218
217
  placeholder: string;
218
+ clearable: boolean;
219
219
  format: DateFormatType;
220
220
  hasQuick: boolean;
221
221
  startPlaceholder: string;
@@ -6,7 +6,7 @@ import Trigger_default from "../trigger/Trigger.js";
6
6
  import { useUII18n } from "../../use/useUII18n.js";
7
7
  import { getRangeDate } from "../../use/useDate.js";
8
8
  import { useDateText, useDateView } from "./_use/useDateModules.js";
9
- import DatePanel_default from "./DatePanel.js";
9
+ import DatePanel from "./DatePanel.js";
10
10
  import { getQuickDateText, isQuickRangeActive } from "./_use/quickDate.js";
11
11
  import QuickDate_default from "./QuickDate.js";
12
12
  import { DATE_PICKER_FALLBACK } from "./config.js";
@@ -336,10 +336,10 @@ var DatePicker_default = /* @__PURE__ */ defineComponent({
336
336
  return () => createVNode(Layer_default, layerOptions.value, {
337
337
  trigger: renderTrigger,
338
338
  default: () => isRange.value ? createVNode(Fragment, null, [cfg.value.hasQuick ? createVNode(QuickDate_default, quickOpts.value, null) : null, createVNode("div", { "class": "w-date-start-end" }, [
339
- createVNode("div", null, [createVNode(DatePanel_default, startOpts.value, null)]),
339
+ createVNode("div", null, [createVNode(DatePanel, startOpts.value, null)]),
340
340
  createVNode("div", { "class": "w-date-range-gap" }, null),
341
- createVNode("div", null, [createVNode(DatePanel_default, endOpts.value, null)])
342
- ])]) : createVNode(DatePanel_default, datePanelOpts.value, null)
341
+ createVNode("div", null, [createVNode(DatePanel, endOpts.value, null)])
342
+ ])]) : createVNode(DatePanel, datePanelOpts.value, null)
343
343
  });
344
344
  }
345
345
  });