@robot-admin/naive-ui-components 0.4.2 → 0.4.4

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 (287) hide show
  1. package/dist/C_ActionBar.cjs +1 -5
  2. package/dist/C_ActionBar.js +1 -4
  3. package/dist/C_ActionBar.js.map +1 -0
  4. package/dist/C_ActionBar2.js +1 -195
  5. package/dist/C_ActionBar2.js.map +1 -1
  6. package/dist/C_AntV.cjs +1 -8
  7. package/dist/C_AntV.js +1 -4
  8. package/dist/C_AntV.js.map +1 -0
  9. package/dist/C_AntV2.js +4 -3149
  10. package/dist/C_AntV2.js.map +1 -1
  11. package/dist/C_Barcode.cjs +1 -4
  12. package/dist/C_Barcode.js +1 -3
  13. package/dist/C_Barcode.js.map +1 -0
  14. package/dist/C_Barcode2.js +1 -67
  15. package/dist/C_Barcode2.js.map +1 -1
  16. package/dist/C_Captcha.cjs +1 -4
  17. package/dist/C_Captcha.js +1 -3
  18. package/dist/C_Captcha.js.map +1 -0
  19. package/dist/C_Captcha2.js +1 -154
  20. package/dist/C_Captcha2.js.map +1 -1
  21. package/dist/C_Cascade.cjs +1 -4
  22. package/dist/C_Cascade.js +1 -3
  23. package/dist/C_Cascade.js.map +1 -0
  24. package/dist/C_Cascade2.js +1 -102
  25. package/dist/C_Cascade2.js.map +1 -1
  26. package/dist/C_City.cjs +1 -4
  27. package/dist/C_City.js +1 -3
  28. package/dist/C_City.js.map +1 -0
  29. package/dist/C_City2.js +1 -840
  30. package/dist/C_City2.js.map +1 -1
  31. package/dist/C_Code.cjs +1 -5
  32. package/dist/C_Code.js +1 -4
  33. package/dist/C_Code.js.map +1 -0
  34. package/dist/C_Code2.js +1 -346
  35. package/dist/C_Code2.js.map +1 -1
  36. package/dist/C_CollapsePanel.cjs +1 -6
  37. package/dist/C_CollapsePanel.js +1 -4
  38. package/dist/C_CollapsePanel.js.map +1 -0
  39. package/dist/C_CollapsePanel2.js +1 -318
  40. package/dist/C_CollapsePanel2.js.map +1 -1
  41. package/dist/C_Cron.cjs +1 -15
  42. package/dist/C_Cron.js +1 -4
  43. package/dist/C_Cron.js.map +1 -0
  44. package/dist/C_Cron2.js +1 -1209
  45. package/dist/C_Cron2.js.map +1 -1
  46. package/dist/C_Date.cjs +1 -4
  47. package/dist/C_Date.js +1 -3
  48. package/dist/C_Date.js.map +1 -0
  49. package/dist/C_Date2.js +1 -218
  50. package/dist/C_Date2.js.map +1 -1
  51. package/dist/C_Draggable.cjs +1 -5
  52. package/dist/C_Draggable.js +1 -3
  53. package/dist/C_Draggable.js.map +1 -0
  54. package/dist/C_Draggable2.js +1 -294
  55. package/dist/C_Draggable2.js.map +1 -1
  56. package/dist/C_Editor.cjs +1 -4
  57. package/dist/C_Editor.js +1 -3
  58. package/dist/C_Editor.js.map +1 -0
  59. package/dist/C_Editor2.js +1 -159
  60. package/dist/C_Editor2.js.map +1 -1
  61. package/dist/C_FilePreview.cjs +1 -7
  62. package/dist/C_FilePreview.js +1 -4
  63. package/dist/C_FilePreview.js.map +1 -0
  64. package/dist/C_FilePreview2.js +1 -1031
  65. package/dist/C_FilePreview2.js.map +1 -1
  66. package/dist/C_Form.cjs +1 -16
  67. package/dist/C_Form.js +1 -5
  68. package/dist/C_Form.js.map +1 -0
  69. package/dist/C_Form2.js +1 -2569
  70. package/dist/C_Form2.js.map +1 -1
  71. package/dist/C_FormSearch.cjs +1 -6
  72. package/dist/C_FormSearch.js +1 -3
  73. package/dist/C_FormSearch.js.map +1 -0
  74. package/dist/C_FormSearch2.js +1 -355
  75. package/dist/C_FormSearch2.js.map +1 -1
  76. package/dist/C_FormulaEditor.cjs +1 -13
  77. package/dist/C_FormulaEditor.js +1 -4
  78. package/dist/C_FormulaEditor.js.map +1 -0
  79. package/dist/C_FormulaEditor2.js +1 -1432
  80. package/dist/C_FormulaEditor2.js.map +1 -1
  81. package/dist/C_FullCalendar.cjs +1 -9
  82. package/dist/C_FullCalendar.js +1 -3
  83. package/dist/C_FullCalendar.js.map +1 -0
  84. package/dist/C_FullCalendar2.js +1 -376
  85. package/dist/C_FullCalendar2.js.map +1 -1
  86. package/dist/C_GlobalSearch.cjs +1 -5
  87. package/dist/C_GlobalSearch.js +1 -3
  88. package/dist/C_GlobalSearch.js.map +1 -0
  89. package/dist/C_GlobalSearch2.js +1 -335
  90. package/dist/C_GlobalSearch2.js.map +1 -1
  91. package/dist/C_Guide.cjs +1 -4
  92. package/dist/C_Guide.js +1 -3
  93. package/dist/C_Guide.js.map +1 -0
  94. package/dist/C_Guide2.js +1 -57
  95. package/dist/C_Guide2.js.map +1 -1
  96. package/dist/C_Icon.cjs +1 -4
  97. package/dist/C_Icon.js +1 -3
  98. package/dist/C_Icon.js.map +1 -0
  99. package/dist/C_Icon2.js +1 -285
  100. package/dist/C_Icon2.js.map +1 -1
  101. package/dist/C_ImageCropper.cjs +1 -6
  102. package/dist/C_ImageCropper.js +1 -4
  103. package/dist/C_ImageCropper.js.map +1 -0
  104. package/dist/C_ImageCropper2.js +1 -722
  105. package/dist/C_ImageCropper2.js.map +1 -1
  106. package/dist/C_Language.cjs +1 -4
  107. package/dist/C_Language.js +1 -3
  108. package/dist/C_Language.js.map +1 -0
  109. package/dist/C_Language2.js +1 -71
  110. package/dist/C_Language2.js.map +1 -1
  111. package/dist/C_Map.cjs +1 -7
  112. package/dist/C_Map.js +1 -3
  113. package/dist/C_Map.js.map +1 -0
  114. package/dist/C_Map2.js +1 -198
  115. package/dist/C_Map2.js.map +1 -1
  116. package/dist/C_Markdown.cjs +1 -4
  117. package/dist/C_Markdown.js +1 -3
  118. package/dist/C_Markdown.js.map +1 -0
  119. package/dist/C_Markdown2.js +1 -185
  120. package/dist/C_Markdown2.js.map +1 -1
  121. package/dist/C_NotificationCenter.cjs +1 -20
  122. package/dist/C_NotificationCenter.js +1 -4
  123. package/dist/C_NotificationCenter.js.map +1 -0
  124. package/dist/C_NotificationCenter2.js +1 -1383
  125. package/dist/C_NotificationCenter2.js.map +1 -1
  126. package/dist/C_Progress.cjs +1 -4
  127. package/dist/C_Progress.js +1 -3
  128. package/dist/C_Progress.js.map +1 -0
  129. package/dist/C_Progress2.js +1 -102
  130. package/dist/C_Progress2.js.map +1 -1
  131. package/dist/C_QRCode.cjs +1 -5
  132. package/dist/C_QRCode.js +1 -3
  133. package/dist/C_QRCode.js.map +1 -0
  134. package/dist/C_QRCode2.js +1 -217
  135. package/dist/C_QRCode2.js.map +1 -1
  136. package/dist/C_Signature.cjs +1 -8
  137. package/dist/C_Signature.js +1 -4
  138. package/dist/C_Signature.js.map +1 -0
  139. package/dist/C_Signature2.js +1 -617
  140. package/dist/C_Signature2.js.map +1 -1
  141. package/dist/C_SplitPane.cjs +1 -6
  142. package/dist/C_SplitPane.js +1 -4
  143. package/dist/C_SplitPane.js.map +1 -0
  144. package/dist/C_SplitPane2.js +1 -355
  145. package/dist/C_SplitPane2.js.map +1 -1
  146. package/dist/C_Steps.cjs +1 -4
  147. package/dist/C_Steps.js +1 -3
  148. package/dist/C_Steps.js.map +1 -0
  149. package/dist/C_Steps2.js +1 -81
  150. package/dist/C_Steps2.js.map +1 -1
  151. package/dist/C_Table.cjs +1 -20
  152. package/dist/C_Table.js +1 -6
  153. package/dist/C_Table.js.map +1 -0
  154. package/dist/C_Table2.js +1 -3023
  155. package/dist/C_Table2.js.map +1 -1
  156. package/dist/C_Theme.cjs +1 -4
  157. package/dist/C_Theme.js +1 -3
  158. package/dist/C_Theme.js.map +1 -0
  159. package/dist/C_Theme2.js +1 -59
  160. package/dist/C_Theme2.js.map +1 -1
  161. package/dist/C_Time.cjs +1 -5
  162. package/dist/C_Time.js +1 -3
  163. package/dist/C_Time.js.map +1 -0
  164. package/dist/C_Time2.js +1 -198
  165. package/dist/C_Time2.js.map +1 -1
  166. package/dist/C_Tree.cjs +1 -7
  167. package/dist/C_Tree.js +1 -4
  168. package/dist/C_Tree.js.map +1 -0
  169. package/dist/C_Tree2.js +1 -440
  170. package/dist/C_Tree2.js.map +1 -1
  171. package/dist/C_Upload.cjs +1 -12
  172. package/dist/C_Upload.js +1 -4
  173. package/dist/C_Upload.js.map +1 -0
  174. package/dist/C_Upload2.js +2 -1365
  175. package/dist/C_Upload2.js.map +1 -1
  176. package/dist/C_VideoPlayer.cjs +1 -23
  177. package/dist/C_VideoPlayer.js +1 -3
  178. package/dist/C_VideoPlayer.js.map +1 -0
  179. package/dist/C_VideoPlayer2.js +3 -1932
  180. package/dist/C_VideoPlayer2.js.map +1 -1
  181. package/dist/C_VtableGantt.cjs +1 -6
  182. package/dist/C_VtableGantt.js +1 -4
  183. package/dist/C_VtableGantt.js.map +1 -0
  184. package/dist/C_VtableGantt2.js +1 -872
  185. package/dist/C_VtableGantt2.js.map +1 -1
  186. package/dist/C_WaterFall.cjs +1 -13
  187. package/dist/C_WaterFall.js +1 -3
  188. package/dist/C_WaterFall.js.map +1 -0
  189. package/dist/C_WaterFall2.js +1 -364
  190. package/dist/C_WaterFall2.js.map +1 -1
  191. package/dist/C_WorkFlow.cjs +1 -8
  192. package/dist/C_WorkFlow.js +1 -4
  193. package/dist/C_WorkFlow.js.map +1 -0
  194. package/dist/C_WorkFlow2.js +1 -1983
  195. package/dist/C_WorkFlow2.js.map +1 -1
  196. package/dist/chunk.js +1 -18
  197. package/dist/city.js +1 -4816
  198. package/dist/constants.d.ts +3 -3
  199. package/dist/constants2.d.ts +5 -5
  200. package/dist/constants3.d.ts +2 -2
  201. package/dist/constants4.d.ts +4 -4
  202. package/dist/constants5.d.ts +2 -2
  203. package/dist/data.d.ts +1 -1
  204. package/dist/export-helper.js +1 -9
  205. package/dist/index.cjs +2 -441
  206. package/dist/index.cjs.map +1 -0
  207. package/dist/index.d.cts +2 -19
  208. package/dist/index.d.ts +2 -19
  209. package/dist/index.js +1 -258
  210. package/dist/index.js.map +1 -1
  211. package/dist/index.vue.d.ts +2 -2
  212. package/dist/index10.vue.d.ts +6 -6
  213. package/dist/index11.vue.d.ts +2 -2
  214. package/dist/index12.vue.d.ts +4 -4
  215. package/dist/index13.vue.d.ts +3 -3
  216. package/dist/index14.vue.d.ts +4 -4
  217. package/dist/index16.vue.d.ts +3 -3
  218. package/dist/index2.vue.d.ts +5 -5
  219. package/dist/index3.vue.d.ts +2 -2
  220. package/dist/index4.vue.d.ts +2 -2
  221. package/dist/index5.vue.d.ts +3 -3
  222. package/dist/index6.vue.d.ts +1 -1
  223. package/dist/index7.vue.d.ts +1 -1
  224. package/dist/index8.vue.d.ts +2 -2
  225. package/dist/resolver.cjs +2 -89
  226. package/dist/resolver.cjs.map +1 -0
  227. package/dist/resolver.js +1 -86
  228. package/dist/resolver.js.map +1 -1
  229. package/dist/storage.js +1 -30
  230. package/dist/storage.js.map +1 -1
  231. package/dist/useCollapsePanel.d.ts +2 -2
  232. package/dist/useCropperCore.d.ts +8 -8
  233. package/dist/useDraggableLayout.d.ts +3 -3
  234. package/dist/useDynamicFormState.d.ts +3 -3
  235. package/dist/useEdgeInteraction.d.ts +2 -2
  236. package/dist/useInfiniteScroll.d.ts +3 -3
  237. package/dist/useModalEdit.d.ts +3 -3
  238. package/dist/useQRCode.d.ts +4 -4
  239. package/dist/useSignatureHistory.d.ts +2 -2
  240. package/dist/useSplitResize.d.ts +5 -5
  241. package/dist/useTimeSelection.d.ts +1 -1
  242. package/dist/useTreeOperations.d.ts +4 -4
  243. package/dist/useWorkflowValidation.d.ts +2 -2
  244. package/package.json +5 -196
  245. package/dist/constants.d.ts.map +0 -1
  246. package/dist/constants2.d.ts.map +0 -1
  247. package/dist/constants3.d.ts.map +0 -1
  248. package/dist/constants4.d.ts.map +0 -1
  249. package/dist/constants5.d.ts.map +0 -1
  250. package/dist/data.d.ts.map +0 -1
  251. package/dist/index.d.cts.map +0 -1
  252. package/dist/index.d.ts.map +0 -1
  253. package/dist/index.vue.d.ts.map +0 -1
  254. package/dist/index10.vue.d.ts.map +0 -1
  255. package/dist/index11.vue.d.ts.map +0 -1
  256. package/dist/index12.vue.d.ts.map +0 -1
  257. package/dist/index13.vue.d.ts.map +0 -1
  258. package/dist/index14.vue.d.ts.map +0 -1
  259. package/dist/index15.vue.d.ts.map +0 -1
  260. package/dist/index16.vue.d.ts.map +0 -1
  261. package/dist/index2.vue.d.ts.map +0 -1
  262. package/dist/index3.vue.d.ts.map +0 -1
  263. package/dist/index4.vue.d.ts.map +0 -1
  264. package/dist/index5.vue.d.ts.map +0 -1
  265. package/dist/index6.vue.d.ts.map +0 -1
  266. package/dist/index7.vue.d.ts.map +0 -1
  267. package/dist/index8.vue.d.ts.map +0 -1
  268. package/dist/index9.vue.d.ts.map +0 -1
  269. package/dist/resolver.d.cts.map +0 -1
  270. package/dist/resolver.d.ts.map +0 -1
  271. package/dist/useCalendarEvents.d.ts.map +0 -1
  272. package/dist/useCollapsePanel.d.ts.map +0 -1
  273. package/dist/useCropperCore.d.ts.map +0 -1
  274. package/dist/useDraggableLayout.d.ts.map +0 -1
  275. package/dist/useDynamicFormState.d.ts.map +0 -1
  276. package/dist/useEdgeInteraction.d.ts.map +0 -1
  277. package/dist/useFullscreen.d.ts.map +0 -1
  278. package/dist/useGlobalSearch.d.ts.map +0 -1
  279. package/dist/useInfiniteScroll.d.ts.map +0 -1
  280. package/dist/useModalEdit.d.ts.map +0 -1
  281. package/dist/useQRCode.d.ts.map +0 -1
  282. package/dist/useSearchState.d.ts.map +0 -1
  283. package/dist/useSignatureHistory.d.ts.map +0 -1
  284. package/dist/useSplitResize.d.ts.map +0 -1
  285. package/dist/useTimeSelection.d.ts.map +0 -1
  286. package/dist/useTreeOperations.d.ts.map +0 -1
  287. package/dist/useWorkflowValidation.d.ts.map +0 -1
package/dist/C_Date.cjs CHANGED
@@ -1,4 +1 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_C_Date = require('./C_Date.js');
3
-
4
- exports.C_Date = require_C_Date.C_Date_default;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_Date.js`);exports.C_Date=e.t;
package/dist/C_Date.js CHANGED
@@ -1,3 +1 @@
1
- import { t as C_Date_default } from "./C_Date2.js";
2
-
3
- export { C_Date_default as C_Date };
1
+ import{t as e}from"./C_Date2.js";export{e as C_Date};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Date.js","names":["mode","placeholder","disabled","valueFormat","$attrs","startPlaceholder","endPlaceholder","startDateProps","endDateProps"],"sources":["../src/components/C_Date/index.vue","../src/components/C_Date/index.vue","../src/components/C_Date/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n"],"mappings":"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"}
package/dist/C_Date2.js CHANGED
@@ -1,219 +1,2 @@
1
- import { NDatePicker } from "naive-ui";
2
- import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, openBlock, ref, unref, watch } from "vue";
3
-
4
- //#region src/components/C_Date/index.vue?vue&type=script&setup=true&lang.ts
5
- const _hoisted_1 = { class: "inline-block" };
6
- const _hoisted_2 = {
7
- key: 4,
8
- class: "inline-block"
9
- };
10
- const _hoisted_3 = { class: "flex gap-2.5 items-center" };
11
- var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
- name: "C_Date",
13
- __name: "index",
14
- props: {
15
- mode: { default: "date" },
16
- placeholder: { default: "" },
17
- startPlaceholder: { default: "" },
18
- endPlaceholder: { default: "" },
19
- disabled: {
20
- type: Boolean,
21
- default: false
22
- },
23
- disabledBeforeToday: {
24
- type: Boolean,
25
- default: false
26
- },
27
- disabledAfterToday: {
28
- type: Boolean,
29
- default: false
30
- },
31
- valueFormat: { default: "yyyy-MM-dd" },
32
- startDateProps: { default: () => ({}) },
33
- endDateProps: { default: () => ({}) }
34
- },
35
- emits: [
36
- "update:singleDate",
37
- "update:singleDateTime",
38
- "update:dateRange",
39
- "update:dateTimeRange",
40
- "update:smartRange",
41
- "change"
42
- ],
43
- setup(__props, { expose: __expose, emit: __emit }) {
44
- const props = __props;
45
- const emits = __emit;
46
- const singleDate = ref(null);
47
- const singleDateTime = ref(null);
48
- const dateRange = ref(null);
49
- const dateTimeRange = ref(null);
50
- const startDate = ref(null);
51
- const endDate = ref(null);
52
- const endDateDisabled = ref(true);
53
- const getTodayTimestamp = () => {
54
- const today = /* @__PURE__ */ new Date();
55
- today.setHours(0, 0, 0, 0);
56
- return today.getTime();
57
- };
58
- const singleDisabledDate = (timestamp) => {
59
- const todayTimestamp = getTodayTimestamp();
60
- if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;
61
- if (props.disabledAfterToday && timestamp > todayTimestamp) return true;
62
- return false;
63
- };
64
- const endDisabledDate = (timestamp) => {
65
- if (!startDate.value) return true;
66
- if (timestamp < startDate.value) return true;
67
- return singleDisabledDate(timestamp);
68
- };
69
- const handleSingleDateChange = (value) => {
70
- emits("update:singleDate", value);
71
- emits("change", value);
72
- };
73
- const handleSingleDateTimeChange = (value) => {
74
- emits("update:singleDateTime", value);
75
- emits("change", value);
76
- };
77
- const handleDateRangeChange = (value) => {
78
- emits("update:dateRange", value);
79
- emits("change", value);
80
- };
81
- const handleDateTimeRangeChange = (value) => {
82
- emits("update:dateTimeRange", value);
83
- emits("change", value);
84
- };
85
- watch(() => [startDate.value, endDate.value], ([startVal, endVal]) => {
86
- if (!startVal) {
87
- endDate.value = null;
88
- endDateDisabled.value = true;
89
- return;
90
- }
91
- if (startVal) endDateDisabled.value = false;
92
- if (startVal && endVal) {
93
- const rangeValue = [startVal, endVal];
94
- emits("update:smartRange", rangeValue);
95
- emits("change", rangeValue);
96
- }
97
- }, { deep: true });
98
- __expose({
99
- singleDate,
100
- singleDateTime,
101
- dateRange,
102
- dateTimeRange,
103
- startDate,
104
- endDate,
105
- clearAll: () => {
106
- singleDate.value = null;
107
- singleDateTime.value = null;
108
- dateRange.value = null;
109
- dateTimeRange.value = null;
110
- startDate.value = null;
111
- endDate.value = null;
112
- endDateDisabled.value = true;
113
- }
114
- });
115
- return (_ctx, _cache) => {
116
- return openBlock(), createElementBlock("div", _hoisted_1, [_ctx.mode === "date" ? (openBlock(), createBlock(unref(NDatePicker), mergeProps({
117
- key: 0,
118
- value: singleDate.value,
119
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => singleDate.value = $event),
120
- type: "date",
121
- placeholder: _ctx.placeholder || "请选择日期",
122
- disabled: _ctx.disabled,
123
- "is-date-disabled": singleDisabledDate,
124
- "value-format": _ctx.valueFormat,
125
- clearable: ""
126
- }, _ctx.$attrs, { "onUpdate:value": handleSingleDateChange }), null, 16, [
127
- "value",
128
- "placeholder",
129
- "disabled",
130
- "value-format"
131
- ])) : _ctx.mode === "datetime" ? (openBlock(), createBlock(unref(NDatePicker), mergeProps({
132
- key: 1,
133
- value: singleDateTime.value,
134
- "onUpdate:value": _cache[1] || (_cache[1] = ($event) => singleDateTime.value = $event),
135
- type: "datetime",
136
- placeholder: _ctx.placeholder || "请选择日期时间",
137
- disabled: _ctx.disabled,
138
- "is-date-disabled": singleDisabledDate,
139
- "value-format": _ctx.valueFormat,
140
- clearable: ""
141
- }, _ctx.$attrs, { "onUpdate:value": handleSingleDateTimeChange }), null, 16, [
142
- "value",
143
- "placeholder",
144
- "disabled",
145
- "value-format"
146
- ])) : _ctx.mode === "daterange" ? (openBlock(), createBlock(unref(NDatePicker), mergeProps({
147
- key: 2,
148
- value: dateRange.value,
149
- "onUpdate:value": _cache[2] || (_cache[2] = ($event) => dateRange.value = $event),
150
- type: "daterange",
151
- "start-placeholder": _ctx.startPlaceholder || "开始日期",
152
- "end-placeholder": _ctx.endPlaceholder || "结束日期",
153
- disabled: _ctx.disabled,
154
- "is-date-disabled": singleDisabledDate,
155
- "value-format": _ctx.valueFormat,
156
- clearable: ""
157
- }, _ctx.$attrs, { "onUpdate:value": handleDateRangeChange }), null, 16, [
158
- "value",
159
- "start-placeholder",
160
- "end-placeholder",
161
- "disabled",
162
- "value-format"
163
- ])) : _ctx.mode === "datetimerange" ? (openBlock(), createBlock(unref(NDatePicker), mergeProps({
164
- key: 3,
165
- value: dateTimeRange.value,
166
- "onUpdate:value": _cache[3] || (_cache[3] = ($event) => dateTimeRange.value = $event),
167
- type: "datetimerange",
168
- "start-placeholder": _ctx.startPlaceholder || "开始日期时间",
169
- "end-placeholder": _ctx.endPlaceholder || "结束日期时间",
170
- disabled: _ctx.disabled,
171
- "is-date-disabled": singleDisabledDate,
172
- "value-format": _ctx.valueFormat,
173
- clearable: ""
174
- }, _ctx.$attrs, { "onUpdate:value": handleDateTimeRangeChange }), null, 16, [
175
- "value",
176
- "start-placeholder",
177
- "end-placeholder",
178
- "disabled",
179
- "value-format"
180
- ])) : _ctx.mode === "smart-range" ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [createVNode(unref(NDatePicker), mergeProps({
181
- class: "flex-1",
182
- value: startDate.value,
183
- "onUpdate:value": _cache[4] || (_cache[4] = ($event) => startDate.value = $event),
184
- type: "date",
185
- placeholder: _ctx.startPlaceholder || "请选择开始日期",
186
- "is-date-disabled": singleDisabledDate,
187
- "value-format": _ctx.valueFormat,
188
- clearable: ""
189
- }, _ctx.startDateProps), null, 16, [
190
- "value",
191
- "placeholder",
192
- "value-format"
193
- ]), createVNode(unref(NDatePicker), mergeProps({
194
- class: "flex-1",
195
- value: endDate.value,
196
- "onUpdate:value": _cache[5] || (_cache[5] = ($event) => endDate.value = $event),
197
- type: "date",
198
- placeholder: _ctx.endPlaceholder || "请选择结束日期",
199
- disabled: endDateDisabled.value,
200
- "is-date-disabled": endDisabledDate,
201
- "value-format": _ctx.valueFormat,
202
- clearable: ""
203
- }, _ctx.endDateProps), null, 16, [
204
- "value",
205
- "placeholder",
206
- "disabled",
207
- "value-format"
208
- ])])])) : createCommentVNode("v-if", true)]);
209
- };
210
- }
211
- });
212
-
213
- //#endregion
214
- //#region src/components/C_Date/index.vue
215
- var C_Date_default = index_vue_vue_type_script_setup_true_lang_default;
216
-
217
- //#endregion
218
- export { C_Date_default as t };
1
+ import{NDatePicker as e}from"naive-ui";import{createBlock as t,createCommentVNode as n,createElementBlock as r,createElementVNode as i,createVNode as a,defineComponent as o,mergeProps as s,openBlock as c,ref as l,unref as u,watch as d}from"vue";const f={class:`inline-block`},p={key:4,class:`inline-block`},m={class:`flex gap-2.5 items-center`};var h=o({name:`C_Date`,__name:`index`,props:{mode:{default:`date`},placeholder:{default:``},startPlaceholder:{default:``},endPlaceholder:{default:``},disabled:{type:Boolean,default:!1},disabledBeforeToday:{type:Boolean,default:!1},disabledAfterToday:{type:Boolean,default:!1},valueFormat:{default:`yyyy-MM-dd`},startDateProps:{default:()=>({})},endDateProps:{default:()=>({})}},emits:[`update:singleDate`,`update:singleDateTime`,`update:dateRange`,`update:dateTimeRange`,`update:smartRange`,`change`],setup(o,{expose:h,emit:g}){let _=o,v=g,y=l(null),b=l(null),x=l(null),S=l(null),C=l(null),w=l(null),T=l(!0),E=()=>{let e=new Date;return e.setHours(0,0,0,0),e.getTime()},D=e=>{let t=E();return!!(_.disabledBeforeToday&&e<t||_.disabledAfterToday&&e>t)},O=e=>!C.value||e<C.value?!0:D(e),k=e=>{v(`update:singleDate`,e),v(`change`,e)},A=e=>{v(`update:singleDateTime`,e),v(`change`,e)},j=e=>{v(`update:dateRange`,e),v(`change`,e)},M=e=>{v(`update:dateTimeRange`,e),v(`change`,e)};return d(()=>[C.value,w.value],([e,t])=>{if(!e){w.value=null,T.value=!0;return}if(e&&(T.value=!1),e&&t){let n=[e,t];v(`update:smartRange`,n),v(`change`,n)}},{deep:!0}),h({singleDate:y,singleDateTime:b,dateRange:x,dateTimeRange:S,startDate:C,endDate:w,clearAll:()=>{y.value=null,b.value=null,x.value=null,S.value=null,C.value=null,w.value=null,T.value=!0}}),(o,l)=>(c(),r(`div`,f,[o.mode===`date`?(c(),t(u(e),s({key:0,value:y.value,"onUpdate:value":l[0]||=e=>y.value=e,type:`date`,placeholder:o.placeholder||`请选择日期`,disabled:o.disabled,"is-date-disabled":D,"value-format":o.valueFormat,clearable:``},o.$attrs,{"onUpdate:value":k}),null,16,[`value`,`placeholder`,`disabled`,`value-format`])):o.mode===`datetime`?(c(),t(u(e),s({key:1,value:b.value,"onUpdate:value":l[1]||=e=>b.value=e,type:`datetime`,placeholder:o.placeholder||`请选择日期时间`,disabled:o.disabled,"is-date-disabled":D,"value-format":o.valueFormat,clearable:``},o.$attrs,{"onUpdate:value":A}),null,16,[`value`,`placeholder`,`disabled`,`value-format`])):o.mode===`daterange`?(c(),t(u(e),s({key:2,value:x.value,"onUpdate:value":l[2]||=e=>x.value=e,type:`daterange`,"start-placeholder":o.startPlaceholder||`开始日期`,"end-placeholder":o.endPlaceholder||`结束日期`,disabled:o.disabled,"is-date-disabled":D,"value-format":o.valueFormat,clearable:``},o.$attrs,{"onUpdate:value":j}),null,16,[`value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):o.mode===`datetimerange`?(c(),t(u(e),s({key:3,value:S.value,"onUpdate:value":l[3]||=e=>S.value=e,type:`datetimerange`,"start-placeholder":o.startPlaceholder||`开始日期时间`,"end-placeholder":o.endPlaceholder||`结束日期时间`,disabled:o.disabled,"is-date-disabled":D,"value-format":o.valueFormat,clearable:``},o.$attrs,{"onUpdate:value":M}),null,16,[`value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):o.mode===`smart-range`?(c(),r(`div`,p,[i(`div`,m,[a(u(e),s({class:`flex-1`,value:C.value,"onUpdate:value":l[4]||=e=>C.value=e,type:`date`,placeholder:o.startPlaceholder||`请选择开始日期`,"is-date-disabled":D,"value-format":o.valueFormat,clearable:``},o.startDateProps),null,16,[`value`,`placeholder`,`value-format`]),a(u(e),s({class:`flex-1`,value:w.value,"onUpdate:value":l[5]||=e=>w.value=e,type:`date`,placeholder:o.endPlaceholder||`请选择结束日期`,disabled:T.value,"is-date-disabled":O,"value-format":o.valueFormat,clearable:``},o.endDateProps),null,16,[`value`,`placeholder`,`disabled`,`value-format`])])])):n(`v-if`,!0)]))}});export{h as t};
219
2
  //# sourceMappingURL=C_Date2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C_Date2.js","names":["mode","placeholder","disabled","valueFormat","$attrs","startPlaceholder","endPlaceholder","startDateProps","endDateProps"],"sources":["../src/components/C_Date/index.vue","../src/components/C_Date/index.vue","../src/components/C_Date/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"C_Date2.js","names":["mode","placeholder","disabled","valueFormat","$attrs","startPlaceholder","endPlaceholder","startDateProps","endDateProps"],"sources":["../src/components/C_Date/index.vue","../src/components/C_Date/index.vue","../src/components/C_Date/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 日期选择器组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"inline-block\">\r\n <NDatePicker\r\n v-if=\"mode === 'date'\"\r\n v-model:value=\"singleDate\"\r\n type=\"date\"\r\n :placeholder=\"placeholder || '请选择日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetime'\"\r\n v-model:value=\"singleDateTime\"\r\n type=\"datetime\"\r\n :placeholder=\"placeholder || '请选择日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleSingleDateTimeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'daterange'\"\r\n v-model:value=\"dateRange\"\r\n type=\"daterange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateRangeChange\"\r\n />\r\n\r\n <NDatePicker\r\n v-else-if=\"mode === 'datetimerange'\"\r\n v-model:value=\"dateTimeRange\"\r\n type=\"datetimerange\"\r\n :start-placeholder=\"startPlaceholder || '开始日期时间'\"\r\n :end-placeholder=\"endPlaceholder || '结束日期时间'\"\r\n :disabled=\"disabled\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"$attrs\"\r\n @update:value=\"handleDateTimeRangeChange\"\r\n />\r\n\r\n <div v-else-if=\"mode === 'smart-range'\" class=\"inline-block\">\r\n <div class=\"flex gap-2.5 items-center\">\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"startDate\"\r\n type=\"date\"\r\n :placeholder=\"startPlaceholder || '请选择开始日期'\"\r\n :is-date-disabled=\"singleDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"startDateProps\"\r\n />\r\n <NDatePicker\r\n class=\"flex-1\"\r\n v-model:value=\"endDate\"\r\n type=\"date\"\r\n :placeholder=\"endPlaceholder || '请选择结束日期'\"\r\n :disabled=\"endDateDisabled\"\r\n :is-date-disabled=\"endDisabledDate\"\r\n :value-format=\"valueFormat\"\r\n clearable\r\n v-bind=\"endDateProps\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch } from \"vue\";\r\nimport { NDatePicker } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Date\" });\r\n\r\ntype DatePickerMode =\r\n | \"date\"\r\n | \"datetime\"\r\n | \"daterange\"\r\n | \"datetimerange\"\r\n | \"smart-range\";\r\n\r\ntype DateValue = number | null;\r\ntype DateRangeValue = [number, number] | null;\r\n\r\ninterface Props {\r\n mode?: DatePickerMode;\r\n placeholder?: string;\r\n startPlaceholder?: string;\r\n endPlaceholder?: string;\r\n disabled?: boolean;\r\n disabledBeforeToday?: boolean;\r\n disabledAfterToday?: boolean;\r\n valueFormat?: string;\r\n startDateProps?: Record<string, any>;\r\n endDateProps?: Record<string, any>;\r\n}\r\n\r\ninterface Emits {\r\n (e: \"update:singleDate\", value: DateValue): void;\r\n (e: \"update:singleDateTime\", value: DateValue): void;\r\n (e: \"update:dateRange\", value: DateRangeValue): void;\r\n (e: \"update:dateTimeRange\", value: DateRangeValue): void;\r\n (e: \"update:smartRange\", value: DateRangeValue): void;\r\n (e: \"change\", value: DateValue | DateRangeValue): void;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mode: \"date\",\r\n placeholder: \"\",\r\n startPlaceholder: \"\",\r\n endPlaceholder: \"\",\r\n disabled: false,\r\n disabledBeforeToday: false,\r\n disabledAfterToday: false,\r\n valueFormat: \"yyyy-MM-dd\",\r\n startDateProps: () => ({}),\r\n endDateProps: () => ({}),\r\n});\r\n\r\nconst emits = defineEmits<Emits>();\r\n\r\nconst singleDate = ref<DateValue>(null);\r\nconst singleDateTime = ref<DateValue>(null);\r\nconst dateRange = ref<DateRangeValue>(null);\r\nconst dateTimeRange = ref<DateRangeValue>(null);\r\nconst startDate = ref<DateValue>(null);\r\nconst endDate = ref<DateValue>(null);\r\nconst endDateDisabled = ref(true);\r\n\r\nconst getTodayTimestamp = (): number => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today.getTime();\r\n};\r\n\r\nconst singleDisabledDate = (timestamp: number): boolean => {\r\n const todayTimestamp = getTodayTimestamp();\r\n if (props.disabledBeforeToday && timestamp < todayTimestamp) return true;\r\n if (props.disabledAfterToday && timestamp > todayTimestamp) return true;\r\n return false;\r\n};\r\n\r\nconst endDisabledDate = (timestamp: number): boolean => {\r\n if (!startDate.value) return true;\r\n if (timestamp < startDate.value) return true;\r\n return singleDisabledDate(timestamp);\r\n};\r\n\r\nconst handleSingleDateChange = (value: DateValue): void => {\r\n emits(\"update:singleDate\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleSingleDateTimeChange = (value: DateValue): void => {\r\n emits(\"update:singleDateTime\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nconst handleDateTimeRangeChange = (value: DateRangeValue): void => {\r\n emits(\"update:dateTimeRange\", value);\r\n emits(\"change\", value);\r\n};\r\n\r\nwatch(\r\n () => [startDate.value, endDate.value],\r\n ([startVal, endVal]) => {\r\n if (!startVal) {\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n return;\r\n }\r\n if (startVal) {\r\n endDateDisabled.value = false;\r\n }\r\n if (startVal && endVal) {\r\n const rangeValue: DateRangeValue = [startVal, endVal];\r\n emits(\"update:smartRange\", rangeValue);\r\n emits(\"change\", rangeValue);\r\n }\r\n },\r\n { deep: true },\r\n);\r\n\r\ndefineExpose({\r\n singleDate,\r\n singleDateTime,\r\n dateRange,\r\n dateTimeRange,\r\n startDate,\r\n endDate,\r\n clearAll: () => {\r\n singleDate.value = null;\r\n singleDateTime.value = null;\r\n dateRange.value = null;\r\n dateTimeRange.value = null;\r\n startDate.value = null;\r\n endDate.value = null;\r\n endDateDisabled.value = true;\r\n },\r\n});\r\n</script>\r\n"],"mappings":"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"}
@@ -1,5 +1 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_C_Draggable = require('./C_Draggable.js');
3
-
4
- exports.C_Draggable = require_C_Draggable.C_Draggable_default;
5
- exports.useDraggableLayout = require_C_Draggable.useDraggableLayout;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_Draggable.js`);exports.C_Draggable=e.t,exports.useDraggableLayout=e.n;
@@ -1,3 +1 @@
1
- import { n as useDraggableLayout, t as C_Draggable_default } from "./C_Draggable2.js";
2
-
3
- export { C_Draggable_default as C_Draggable, useDraggableLayout };
1
+ import{n as e,t}from"./C_Draggable2.js";export{t as C_Draggable,e as useDraggableLayout};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Draggable.js","names":["wrapperClass","disabled","showHandle","showEmptyState","emptyText"],"sources":["../src/components/C_Draggable/composables/useDraggableLayout.ts","../src/components/C_Draggable/index.vue","../src/components/C_Draggable/index.vue","../src/components/C_Draggable/index.vue"],"sourcesContent":["import { ref, computed, nextTick } from \"vue\";\r\nimport type { DraggableItem, DragEvent, DraggableProps } from \"../types\";\r\n\r\ntype EmitFn = {\r\n (event: \"update:modelValue\", value: DraggableItem[]): void;\r\n (event: \"drag-start\", dragEvent: DragEvent): void;\r\n (event: \"drag-end\", dragEvent: DragEvent): void;\r\n (event: \"item-add\", item: DraggableItem, index: number): void;\r\n (event: \"item-remove\", item: DraggableItem, index: number): void;\r\n (event: \"list-change\", list: DraggableItem[]): void;\r\n};\r\n\r\nexport function useDraggableLayout(props: DraggableProps, emit: EmitFn) {\r\n const isDragging = ref(false);\r\n\r\n const internalList = computed({\r\n get: () => props.modelValue ?? [],\r\n set: (value: DraggableItem[]) => {\r\n emit(\"update:modelValue\", value);\r\n emit(\"list-change\", value);\r\n },\r\n });\r\n\r\n const isEmpty = computed(() => (props.modelValue ?? []).length === 0);\r\n\r\n const listClasses = computed(() => [\r\n \"c-draggable-list\",\r\n props.listClass,\r\n `layout-${props.layout}`,\r\n {\r\n \"flex-wrap\":\r\n props.flexWrap &&\r\n (props.layout === \"horizontal\" || props.layout === \"flex-wrap\"),\r\n },\r\n ]);\r\n\r\n const listStyles = computed(() => {\r\n const styles: Record<string, string | number> = {\r\n \"--gap\":\r\n typeof props.gap === \"number\" ? `${props.gap}px` : (props.gap ?? \"8px\"),\r\n \"--grid-columns\": props.gridColumns ?? 4,\r\n \"--justify-content\": props.justifyContent ?? \"flex-start\",\r\n \"--align-items\": props.alignItems ?? \"stretch\",\r\n ...props.customStyles,\r\n };\r\n if (props.gridRows) {\r\n styles[\"--grid-rows\"] = props.gridRows;\r\n }\r\n return styles;\r\n });\r\n\r\n const draggableOptions = computed(() => {\r\n const options: Record<string, any> = {\r\n disabled: props.disabled,\r\n group: props.group,\r\n sort: props.sort,\r\n animation: props.animation,\r\n delay: props.delay,\r\n ghostClass: props.ghostClass,\r\n chosenClass: props.chosenClass,\r\n dragClass: props.dragClass,\r\n swapThreshold: props.swapThreshold,\r\n invertSwap: props.invertSwap,\r\n direction: props.direction,\r\n forceFallback: false,\r\n };\r\n if (props.handle) {\r\n options.handle = props.handle;\r\n } else if (props.showHandle) {\r\n options.handle = \".drag-handle\";\r\n }\r\n return options;\r\n });\r\n\r\n const getItemKey = (item: DraggableItem, index: number): string | number =>\r\n props.itemKey ? props.itemKey(item, index) : (item.id ?? index);\r\n\r\n const getItemTitle = (item: DraggableItem): string => {\r\n if (props.itemTitle) return props.itemTitle(item);\r\n return (\r\n item.title || item.name || item.label || String(item.id) || \"未命名项目\"\r\n );\r\n };\r\n\r\n const getItemDescription = (item: DraggableItem): string => {\r\n if (props.itemDescription) return props.itemDescription(item);\r\n return item.description || \"\";\r\n };\r\n\r\n const getItemClass = (_index: number) => [\r\n \"c-draggable-item\",\r\n props.itemClass,\r\n { \"is-disabled\": props.disabled },\r\n ];\r\n\r\n const handleStart = (event: any) => {\r\n isDragging.value = true;\r\n const item = internalList.value[event.oldIndex];\r\n if (item) {\r\n emit(\"drag-start\", {\r\n oldIndex: event.oldIndex,\r\n newIndex: event.oldIndex,\r\n item,\r\n } as DragEvent);\r\n }\r\n };\r\n\r\n const handleEnd = (event: any) => {\r\n const item = internalList.value[event.newIndex];\r\n if (item) {\r\n emit(\"drag-end\", {\r\n oldIndex: event.oldIndex,\r\n newIndex: event.newIndex,\r\n item,\r\n } as DragEvent);\r\n }\r\n nextTick(() => {\r\n isDragging.value = false;\r\n });\r\n };\r\n\r\n const handleAdd = (event: any) => {\r\n const item = internalList.value[event.newIndex];\r\n if (item) emit(\"item-add\", item, event.newIndex);\r\n };\r\n\r\n const handleRemove = (event: any) => {\r\n if (event.item) emit(\"item-remove\", event.item, event.oldIndex);\r\n };\r\n\r\n const handleUpdate = (_event: any) => {};\r\n\r\n const addItem = (item: DraggableItem, index?: number): void => {\r\n const list = [...internalList.value];\r\n if (typeof index === \"number\" && index >= 0 && index <= list.length) {\r\n list.splice(index, 0, item);\r\n } else {\r\n list.push(item);\r\n }\r\n internalList.value = list;\r\n };\r\n\r\n const removeItem = (index: number): DraggableItem | null => {\r\n if (index >= 0 && index < internalList.value.length) {\r\n const list = [...internalList.value];\r\n const [removed] = list.splice(index, 1);\r\n internalList.value = list;\r\n return removed;\r\n }\r\n return null;\r\n };\r\n\r\n const moveItem = (fromIndex: number, toIndex: number): boolean => {\r\n const list = internalList.value;\r\n if (\r\n fromIndex >= 0 &&\r\n fromIndex < list.length &&\r\n toIndex >= 0 &&\r\n toIndex < list.length &&\r\n fromIndex !== toIndex\r\n ) {\r\n const newList = [...list];\r\n const [item] = newList.splice(fromIndex, 1);\r\n newList.splice(toIndex, 0, item);\r\n internalList.value = newList;\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const updateList = (newList: DraggableItem[]): void => {\r\n internalList.value = [...newList];\r\n };\r\n\r\n const clear = (): void => {\r\n internalList.value = [];\r\n };\r\n\r\n const getItem = (index: number): DraggableItem | undefined =>\r\n internalList.value[index];\r\n\r\n const findIndex = (predicate: (item: DraggableItem) => boolean): number =>\r\n internalList.value.findIndex(predicate);\r\n\r\n return {\r\n isDragging,\r\n internalList,\r\n isEmpty,\r\n listClasses,\r\n listStyles,\r\n draggableOptions,\r\n getItemKey,\r\n getItemTitle,\r\n getItemDescription,\r\n getItemClass,\r\n handleStart,\r\n handleEnd,\r\n handleAdd,\r\n handleRemove,\r\n handleUpdate,\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n };\r\n}\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-25\r\n * @Description: 拖拽组件 - 基于 vue-draggable-plus 封装(薄 UI 壳 + useDraggableLayout 引擎)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"c-draggable-wrapper\" :class=\"wrapperClass\">\r\n <VueDraggable\r\n v-model=\"internalList\"\r\n v-bind=\"draggableOptions\"\r\n :class=\"listClasses\"\r\n :style=\"listStyles\"\r\n @start=\"handleStart\"\r\n @end=\"handleEnd\"\r\n @add=\"handleAdd\"\r\n @remove=\"handleRemove\"\r\n @update=\"handleUpdate\"\r\n >\r\n <div\r\n v-for=\"(item, index) in internalList\"\r\n :key=\"getItemKey(item, index)\"\r\n :class=\"getItemClass(index)\"\r\n :data-index=\"index\"\r\n >\r\n <slot\r\n :item=\"item\"\r\n :index=\"index\"\r\n :is-dragging=\"isDragging\"\r\n :is-disabled=\"disabled\"\r\n >\r\n <div class=\"default-item\">\r\n <div v-if=\"showHandle\" class=\"drag-handle\">\r\n <div class=\"i-mdi:drag-vertical\"></div>\r\n </div>\r\n <div class=\"item-content\">\r\n <div class=\"item-title\">{{ getItemTitle(item) }}</div>\r\n <div v-if=\"getItemDescription(item)\" class=\"item-description\">\r\n {{ getItemDescription(item) }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </VueDraggable>\r\n\r\n <div v-if=\"isEmpty && showEmptyState\" class=\"empty-state\">\r\n <slot name=\"empty\">\r\n <div class=\"default-empty\">\r\n <div class=\"empty-icon i-mdi:inbox-outline\"></div>\r\n <p class=\"empty-text\">{{ emptyText }}</p>\r\n </div>\r\n </slot>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { readonly } from \"vue\";\r\nimport { VueDraggable } from \"vue-draggable-plus\";\r\nimport { useDraggableLayout } from \"./composables/useDraggableLayout\";\r\nimport type { DraggableProps, DraggableEmits } from \"./types\";\r\n\r\ndefineOptions({ name: \"C_Draggable\" });\r\n\r\nconst props = withDefaults(defineProps<DraggableProps>(), {\r\n modelValue: () => [],\r\n disabled: false,\r\n group: \"default\",\r\n sort: true,\r\n animation: 200,\r\n delay: 0,\r\n handle: \"\",\r\n showHandle: false,\r\n ghostClass: \"sortable-ghost\",\r\n chosenClass: \"sortable-chosen\",\r\n dragClass: \"sortable-drag\",\r\n wrapperClass: \"\",\r\n listClass: \"\",\r\n itemClass: \"\",\r\n showEmptyState: true,\r\n emptyText: \"暂无数据\",\r\n swapThreshold: 1,\r\n invertSwap: false,\r\n direction: \"vertical\",\r\n layout: \"vertical\",\r\n gridColumns: 4,\r\n gridRows: undefined,\r\n gap: \"8px\",\r\n flexWrap: false,\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n customStyles: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<DraggableEmits>();\r\n\r\nconst {\r\n isDragging,\r\n internalList,\r\n isEmpty,\r\n listClasses,\r\n listStyles,\r\n draggableOptions,\r\n getItemKey,\r\n getItemTitle,\r\n getItemDescription,\r\n getItemClass,\r\n handleStart,\r\n handleEnd,\r\n handleAdd,\r\n handleRemove,\r\n handleUpdate,\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n} = useDraggableLayout(props, emit);\r\n\r\ndefineExpose({\r\n isDragging: readonly(isDragging),\r\n list: readonly(internalList),\r\n isEmpty: readonly(isEmpty),\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@use \"./index.scss\";\r\n</style>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-25\r\n * @Description: 拖拽组件 - 基于 vue-draggable-plus 封装(薄 UI 壳 + useDraggableLayout 引擎)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"c-draggable-wrapper\" :class=\"wrapperClass\">\r\n <VueDraggable\r\n v-model=\"internalList\"\r\n v-bind=\"draggableOptions\"\r\n :class=\"listClasses\"\r\n :style=\"listStyles\"\r\n @start=\"handleStart\"\r\n @end=\"handleEnd\"\r\n @add=\"handleAdd\"\r\n @remove=\"handleRemove\"\r\n @update=\"handleUpdate\"\r\n >\r\n <div\r\n v-for=\"(item, index) in internalList\"\r\n :key=\"getItemKey(item, index)\"\r\n :class=\"getItemClass(index)\"\r\n :data-index=\"index\"\r\n >\r\n <slot\r\n :item=\"item\"\r\n :index=\"index\"\r\n :is-dragging=\"isDragging\"\r\n :is-disabled=\"disabled\"\r\n >\r\n <div class=\"default-item\">\r\n <div v-if=\"showHandle\" class=\"drag-handle\">\r\n <div class=\"i-mdi:drag-vertical\"></div>\r\n </div>\r\n <div class=\"item-content\">\r\n <div class=\"item-title\">{{ getItemTitle(item) }}</div>\r\n <div v-if=\"getItemDescription(item)\" class=\"item-description\">\r\n {{ getItemDescription(item) }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </VueDraggable>\r\n\r\n <div v-if=\"isEmpty && showEmptyState\" class=\"empty-state\">\r\n <slot name=\"empty\">\r\n <div class=\"default-empty\">\r\n <div class=\"empty-icon i-mdi:inbox-outline\"></div>\r\n <p class=\"empty-text\">{{ emptyText }}</p>\r\n </div>\r\n </slot>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { readonly } from \"vue\";\r\nimport { VueDraggable } from \"vue-draggable-plus\";\r\nimport { useDraggableLayout } from \"./composables/useDraggableLayout\";\r\nimport type { DraggableProps, DraggableEmits } from \"./types\";\r\n\r\ndefineOptions({ name: \"C_Draggable\" });\r\n\r\nconst props = withDefaults(defineProps<DraggableProps>(), {\r\n modelValue: () => [],\r\n disabled: false,\r\n group: \"default\",\r\n sort: true,\r\n animation: 200,\r\n delay: 0,\r\n handle: \"\",\r\n showHandle: false,\r\n ghostClass: \"sortable-ghost\",\r\n chosenClass: \"sortable-chosen\",\r\n dragClass: \"sortable-drag\",\r\n wrapperClass: \"\",\r\n listClass: \"\",\r\n itemClass: \"\",\r\n showEmptyState: true,\r\n emptyText: \"暂无数据\",\r\n swapThreshold: 1,\r\n invertSwap: false,\r\n direction: \"vertical\",\r\n layout: \"vertical\",\r\n gridColumns: 4,\r\n gridRows: undefined,\r\n gap: \"8px\",\r\n flexWrap: false,\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n customStyles: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<DraggableEmits>();\r\n\r\nconst {\r\n isDragging,\r\n internalList,\r\n isEmpty,\r\n listClasses,\r\n listStyles,\r\n draggableOptions,\r\n getItemKey,\r\n getItemTitle,\r\n getItemDescription,\r\n getItemClass,\r\n handleStart,\r\n handleEnd,\r\n handleAdd,\r\n handleRemove,\r\n handleUpdate,\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n} = useDraggableLayout(props, emit);\r\n\r\ndefineExpose({\r\n isDragging: readonly(isDragging),\r\n list: readonly(internalList),\r\n isEmpty: readonly(isEmpty),\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@use \"./index.scss\";\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-25\r\n * @Description: 拖拽组件 - 基于 vue-draggable-plus 封装(薄 UI 壳 + useDraggableLayout 引擎)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"c-draggable-wrapper\" :class=\"wrapperClass\">\r\n <VueDraggable\r\n v-model=\"internalList\"\r\n v-bind=\"draggableOptions\"\r\n :class=\"listClasses\"\r\n :style=\"listStyles\"\r\n @start=\"handleStart\"\r\n @end=\"handleEnd\"\r\n @add=\"handleAdd\"\r\n @remove=\"handleRemove\"\r\n @update=\"handleUpdate\"\r\n >\r\n <div\r\n v-for=\"(item, index) in internalList\"\r\n :key=\"getItemKey(item, index)\"\r\n :class=\"getItemClass(index)\"\r\n :data-index=\"index\"\r\n >\r\n <slot\r\n :item=\"item\"\r\n :index=\"index\"\r\n :is-dragging=\"isDragging\"\r\n :is-disabled=\"disabled\"\r\n >\r\n <div class=\"default-item\">\r\n <div v-if=\"showHandle\" class=\"drag-handle\">\r\n <div class=\"i-mdi:drag-vertical\"></div>\r\n </div>\r\n <div class=\"item-content\">\r\n <div class=\"item-title\">{{ getItemTitle(item) }}</div>\r\n <div v-if=\"getItemDescription(item)\" class=\"item-description\">\r\n {{ getItemDescription(item) }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </VueDraggable>\r\n\r\n <div v-if=\"isEmpty && showEmptyState\" class=\"empty-state\">\r\n <slot name=\"empty\">\r\n <div class=\"default-empty\">\r\n <div class=\"empty-icon i-mdi:inbox-outline\"></div>\r\n <p class=\"empty-text\">{{ emptyText }}</p>\r\n </div>\r\n </slot>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { readonly } from \"vue\";\r\nimport { VueDraggable } from \"vue-draggable-plus\";\r\nimport { useDraggableLayout } from \"./composables/useDraggableLayout\";\r\nimport type { DraggableProps, DraggableEmits } from \"./types\";\r\n\r\ndefineOptions({ name: \"C_Draggable\" });\r\n\r\nconst props = withDefaults(defineProps<DraggableProps>(), {\r\n modelValue: () => [],\r\n disabled: false,\r\n group: \"default\",\r\n sort: true,\r\n animation: 200,\r\n delay: 0,\r\n handle: \"\",\r\n showHandle: false,\r\n ghostClass: \"sortable-ghost\",\r\n chosenClass: \"sortable-chosen\",\r\n dragClass: \"sortable-drag\",\r\n wrapperClass: \"\",\r\n listClass: \"\",\r\n itemClass: \"\",\r\n showEmptyState: true,\r\n emptyText: \"暂无数据\",\r\n swapThreshold: 1,\r\n invertSwap: false,\r\n direction: \"vertical\",\r\n layout: \"vertical\",\r\n gridColumns: 4,\r\n gridRows: undefined,\r\n gap: \"8px\",\r\n flexWrap: false,\r\n justifyContent: \"flex-start\",\r\n alignItems: \"stretch\",\r\n customStyles: () => ({}),\r\n});\r\n\r\nconst emit = defineEmits<DraggableEmits>();\r\n\r\nconst {\r\n isDragging,\r\n internalList,\r\n isEmpty,\r\n listClasses,\r\n listStyles,\r\n draggableOptions,\r\n getItemKey,\r\n getItemTitle,\r\n getItemDescription,\r\n getItemClass,\r\n handleStart,\r\n handleEnd,\r\n handleAdd,\r\n handleRemove,\r\n handleUpdate,\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n} = useDraggableLayout(props, emit);\r\n\r\ndefineExpose({\r\n isDragging: readonly(isDragging),\r\n list: readonly(internalList),\r\n isEmpty: readonly(isEmpty),\r\n addItem,\r\n removeItem,\r\n moveItem,\r\n updateList,\r\n clear,\r\n getItem,\r\n findIndex,\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@use \"./index.scss\";\r\n</style>\r\n"],"mappings":"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"}