@robot-admin/naive-ui-components 0.3.0

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 (352) hide show
  1. package/README.md +257 -0
  2. package/dist/C_ActionBar-DWN-woTc.css.map +1 -0
  3. package/dist/C_ActionBar.cjs +5 -0
  4. package/dist/C_ActionBar.d.cts +2 -0
  5. package/dist/C_ActionBar.d.ts +2 -0
  6. package/dist/C_ActionBar.js +4 -0
  7. package/dist/C_ActionBar2.js +196 -0
  8. package/dist/C_ActionBar2.js.map +1 -0
  9. package/dist/C_AntV-AFKyK6hH.css.map +1 -0
  10. package/dist/C_AntV.cjs +8 -0
  11. package/dist/C_AntV.d.cts +2 -0
  12. package/dist/C_AntV.d.ts +2 -0
  13. package/dist/C_AntV.js +4 -0
  14. package/dist/C_AntV2.js +3150 -0
  15. package/dist/C_AntV2.js.map +1 -0
  16. package/dist/C_Barcode-P_EFj8dC.css.map +1 -0
  17. package/dist/C_Barcode.cjs +4 -0
  18. package/dist/C_Barcode.d.cts +2 -0
  19. package/dist/C_Barcode.d.ts +2 -0
  20. package/dist/C_Barcode.js +3 -0
  21. package/dist/C_Barcode2.js +68 -0
  22. package/dist/C_Barcode2.js.map +1 -0
  23. package/dist/C_Captcha-C-ef41xw.css.map +1 -0
  24. package/dist/C_Captcha.cjs +4 -0
  25. package/dist/C_Captcha.d.cts +2 -0
  26. package/dist/C_Captcha.d.ts +2 -0
  27. package/dist/C_Captcha.js +3 -0
  28. package/dist/C_Captcha2.js +155 -0
  29. package/dist/C_Captcha2.js.map +1 -0
  30. package/dist/C_Cascade-D9kNsjsV.css.map +1 -0
  31. package/dist/C_Cascade.cjs +4 -0
  32. package/dist/C_Cascade.d.cts +2 -0
  33. package/dist/C_Cascade.d.ts +2 -0
  34. package/dist/C_Cascade.js +3 -0
  35. package/dist/C_Cascade2.js +103 -0
  36. package/dist/C_Cascade2.js.map +1 -0
  37. package/dist/C_City-BCQ4ipiK.css.map +1 -0
  38. package/dist/C_City.cjs +4 -0
  39. package/dist/C_City.d.cts +2 -0
  40. package/dist/C_City.d.ts +2 -0
  41. package/dist/C_City.js +3 -0
  42. package/dist/C_City2.js +841 -0
  43. package/dist/C_City2.js.map +1 -0
  44. package/dist/C_Code-C9kvvEmO.css.map +1 -0
  45. package/dist/C_Code.cjs +5 -0
  46. package/dist/C_Code.d.cts +2 -0
  47. package/dist/C_Code.d.ts +2 -0
  48. package/dist/C_Code.js +4 -0
  49. package/dist/C_Code2.js +346 -0
  50. package/dist/C_Code2.js.map +1 -0
  51. package/dist/C_CollapsePanel-BUJHuYcU.css.map +1 -0
  52. package/dist/C_CollapsePanel.cjs +6 -0
  53. package/dist/C_CollapsePanel.d.cts +2 -0
  54. package/dist/C_CollapsePanel.d.ts +2 -0
  55. package/dist/C_CollapsePanel.js +4 -0
  56. package/dist/C_CollapsePanel2.js +319 -0
  57. package/dist/C_CollapsePanel2.js.map +1 -0
  58. package/dist/C_Cron-yx2Ob4Jl.css.map +1 -0
  59. package/dist/C_Cron.cjs +15 -0
  60. package/dist/C_Cron.d.cts +2 -0
  61. package/dist/C_Cron.d.ts +2 -0
  62. package/dist/C_Cron.js +4 -0
  63. package/dist/C_Cron2.js +1209 -0
  64. package/dist/C_Cron2.js.map +1 -0
  65. package/dist/C_Date.cjs +4 -0
  66. package/dist/C_Date.d.cts +2 -0
  67. package/dist/C_Date.d.ts +2 -0
  68. package/dist/C_Date.js +3 -0
  69. package/dist/C_Date2.js +219 -0
  70. package/dist/C_Date2.js.map +1 -0
  71. package/dist/C_Draggable-C483syRC.css.map +1 -0
  72. package/dist/C_Draggable.cjs +5 -0
  73. package/dist/C_Draggable.d.cts +2 -0
  74. package/dist/C_Draggable.d.ts +2 -0
  75. package/dist/C_Draggable.js +3 -0
  76. package/dist/C_Draggable2.js +295 -0
  77. package/dist/C_Draggable2.js.map +1 -0
  78. package/dist/C_Editor-Bp0SyIEw.css.map +1 -0
  79. package/dist/C_Editor.cjs +4 -0
  80. package/dist/C_Editor.d.cts +2 -0
  81. package/dist/C_Editor.d.ts +2 -0
  82. package/dist/C_Editor.js +3 -0
  83. package/dist/C_Editor2.js +160 -0
  84. package/dist/C_Editor2.js.map +1 -0
  85. package/dist/C_FilePreview-CPqvhoCy.css.map +1 -0
  86. package/dist/C_FilePreview.cjs +6 -0
  87. package/dist/C_FilePreview.d.cts +2 -0
  88. package/dist/C_FilePreview.d.ts +2 -0
  89. package/dist/C_FilePreview.js +3 -0
  90. package/dist/C_FilePreview2.js +1031 -0
  91. package/dist/C_FilePreview2.js.map +1 -0
  92. package/dist/C_Form-Jx7PY3sT.css.map +1 -0
  93. package/dist/C_Form.cjs +15 -0
  94. package/dist/C_Form.d.cts +2 -0
  95. package/dist/C_Form.d.ts +2 -0
  96. package/dist/C_Form.js +4 -0
  97. package/dist/C_Form2.js +2510 -0
  98. package/dist/C_Form2.js.map +1 -0
  99. package/dist/C_FormSearch-DvRgxlRn.css.map +1 -0
  100. package/dist/C_FormSearch.cjs +6 -0
  101. package/dist/C_FormSearch.d.cts +2 -0
  102. package/dist/C_FormSearch.d.ts +2 -0
  103. package/dist/C_FormSearch.js +3 -0
  104. package/dist/C_FormSearch2.js +356 -0
  105. package/dist/C_FormSearch2.js.map +1 -0
  106. package/dist/C_FormulaEditor-DtGkt4T_.css.map +1 -0
  107. package/dist/C_FormulaEditor.cjs +13 -0
  108. package/dist/C_FormulaEditor.d.cts +2 -0
  109. package/dist/C_FormulaEditor.d.ts +2 -0
  110. package/dist/C_FormulaEditor.js +4 -0
  111. package/dist/C_FormulaEditor2.js +1433 -0
  112. package/dist/C_FormulaEditor2.js.map +1 -0
  113. package/dist/C_FullCalendar-BF7H0YIx.css.map +1 -0
  114. package/dist/C_FullCalendar.cjs +9 -0
  115. package/dist/C_FullCalendar.d.cts +2 -0
  116. package/dist/C_FullCalendar.d.ts +2 -0
  117. package/dist/C_FullCalendar.js +3 -0
  118. package/dist/C_FullCalendar2.js +377 -0
  119. package/dist/C_FullCalendar2.js.map +1 -0
  120. package/dist/C_Guide.cjs +4 -0
  121. package/dist/C_Guide.d.cts +2 -0
  122. package/dist/C_Guide.d.ts +2 -0
  123. package/dist/C_Guide.js +3 -0
  124. package/dist/C_Guide2.js +58 -0
  125. package/dist/C_Guide2.js.map +1 -0
  126. package/dist/C_Icon.cjs +4 -0
  127. package/dist/C_Icon.d.cts +2 -0
  128. package/dist/C_Icon.d.ts +2 -0
  129. package/dist/C_Icon.js +3 -0
  130. package/dist/C_Icon2.js +286 -0
  131. package/dist/C_Icon2.js.map +1 -0
  132. package/dist/C_ImageCropper-BVJfUufl.css.map +1 -0
  133. package/dist/C_ImageCropper.cjs +6 -0
  134. package/dist/C_ImageCropper.d.cts +2 -0
  135. package/dist/C_ImageCropper.d.ts +2 -0
  136. package/dist/C_ImageCropper.js +4 -0
  137. package/dist/C_ImageCropper2.js +723 -0
  138. package/dist/C_ImageCropper2.js.map +1 -0
  139. package/dist/C_Language.cjs +4 -0
  140. package/dist/C_Language.d.cts +2 -0
  141. package/dist/C_Language.d.ts +2 -0
  142. package/dist/C_Language.js +3 -0
  143. package/dist/C_Language2.js +72 -0
  144. package/dist/C_Language2.js.map +1 -0
  145. package/dist/C_Map-DpzeuWdX.css.map +1 -0
  146. package/dist/C_Map.cjs +7 -0
  147. package/dist/C_Map.d.cts +2 -0
  148. package/dist/C_Map.d.ts +2 -0
  149. package/dist/C_Map.js +3 -0
  150. package/dist/C_Map2.js +199 -0
  151. package/dist/C_Map2.js.map +1 -0
  152. package/dist/C_Markdown-BEjxknqd.css.map +1 -0
  153. package/dist/C_Markdown.cjs +4 -0
  154. package/dist/C_Markdown.d.cts +2 -0
  155. package/dist/C_Markdown.d.ts +2 -0
  156. package/dist/C_Markdown.js +3 -0
  157. package/dist/C_Markdown2.js +186 -0
  158. package/dist/C_Markdown2.js.map +1 -0
  159. package/dist/C_NotificationCenter-0l3TY2Gn.css.map +1 -0
  160. package/dist/C_NotificationCenter.cjs +20 -0
  161. package/dist/C_NotificationCenter.d.cts +2 -0
  162. package/dist/C_NotificationCenter.d.ts +2 -0
  163. package/dist/C_NotificationCenter.js +4 -0
  164. package/dist/C_NotificationCenter2.js +1383 -0
  165. package/dist/C_NotificationCenter2.js.map +1 -0
  166. package/dist/C_Progress.cjs +4 -0
  167. package/dist/C_Progress.d.cts +2 -0
  168. package/dist/C_Progress.d.ts +2 -0
  169. package/dist/C_Progress.js +3 -0
  170. package/dist/C_Progress2.js +103 -0
  171. package/dist/C_Progress2.js.map +1 -0
  172. package/dist/C_QRCode-DbdiAIPg.css.map +1 -0
  173. package/dist/C_QRCode.cjs +5 -0
  174. package/dist/C_QRCode.d.cts +2 -0
  175. package/dist/C_QRCode.d.ts +2 -0
  176. package/dist/C_QRCode.js +3 -0
  177. package/dist/C_QRCode2.js +218 -0
  178. package/dist/C_QRCode2.js.map +1 -0
  179. package/dist/C_Signature-zhHCbra9.css.map +1 -0
  180. package/dist/C_Signature.cjs +8 -0
  181. package/dist/C_Signature.d.cts +2 -0
  182. package/dist/C_Signature.d.ts +2 -0
  183. package/dist/C_Signature.js +4 -0
  184. package/dist/C_Signature2.js +618 -0
  185. package/dist/C_Signature2.js.map +1 -0
  186. package/dist/C_SplitPane-C6sBsfKY.css.map +1 -0
  187. package/dist/C_SplitPane.cjs +6 -0
  188. package/dist/C_SplitPane.d.cts +2 -0
  189. package/dist/C_SplitPane.d.ts +2 -0
  190. package/dist/C_SplitPane.js +4 -0
  191. package/dist/C_SplitPane2.js +356 -0
  192. package/dist/C_SplitPane2.js.map +1 -0
  193. package/dist/C_Steps-CODHN5Hs.css.map +1 -0
  194. package/dist/C_Steps.cjs +4 -0
  195. package/dist/C_Steps.d.cts +2 -0
  196. package/dist/C_Steps.d.ts +2 -0
  197. package/dist/C_Steps.js +3 -0
  198. package/dist/C_Steps2.js +82 -0
  199. package/dist/C_Steps2.js.map +1 -0
  200. package/dist/C_Table-DSNsntmT.css.map +1 -0
  201. package/dist/C_Table.cjs +19 -0
  202. package/dist/C_Table.d.cts +2 -0
  203. package/dist/C_Table.d.ts +2 -0
  204. package/dist/C_Table.js +5 -0
  205. package/dist/C_Table2.js +3009 -0
  206. package/dist/C_Table2.js.map +1 -0
  207. package/dist/C_Theme.cjs +4 -0
  208. package/dist/C_Theme.d.cts +2 -0
  209. package/dist/C_Theme.d.ts +2 -0
  210. package/dist/C_Theme.js +3 -0
  211. package/dist/C_Theme2.js +60 -0
  212. package/dist/C_Theme2.js.map +1 -0
  213. package/dist/C_Time-BvZLYraL.css.map +1 -0
  214. package/dist/C_Time.cjs +5 -0
  215. package/dist/C_Time.d.cts +2 -0
  216. package/dist/C_Time.d.ts +2 -0
  217. package/dist/C_Time.js +3 -0
  218. package/dist/C_Time2.js +199 -0
  219. package/dist/C_Time2.js.map +1 -0
  220. package/dist/C_Tree-0GDv--jX.css.map +1 -0
  221. package/dist/C_Tree.cjs +7 -0
  222. package/dist/C_Tree.d.cts +2 -0
  223. package/dist/C_Tree.d.ts +2 -0
  224. package/dist/C_Tree.js +4 -0
  225. package/dist/C_Tree2.js +441 -0
  226. package/dist/C_Tree2.js.map +1 -0
  227. package/dist/C_Upload-BXd3YYLx.css.map +1 -0
  228. package/dist/C_Upload.cjs +12 -0
  229. package/dist/C_Upload.d.cts +2 -0
  230. package/dist/C_Upload.d.ts +2 -0
  231. package/dist/C_Upload.js +4 -0
  232. package/dist/C_Upload2.js +1388 -0
  233. package/dist/C_Upload2.js.map +1 -0
  234. package/dist/C_VideoPlayer-DYG3RL0Q.css.map +1 -0
  235. package/dist/C_VideoPlayer.cjs +23 -0
  236. package/dist/C_VideoPlayer.d.cts +2 -0
  237. package/dist/C_VideoPlayer.d.ts +2 -0
  238. package/dist/C_VideoPlayer.js +3 -0
  239. package/dist/C_VideoPlayer2.js +1932 -0
  240. package/dist/C_VideoPlayer2.js.map +1 -0
  241. package/dist/C_VtableGantt-fhItIiHE.css.map +1 -0
  242. package/dist/C_VtableGantt.cjs +6 -0
  243. package/dist/C_VtableGantt.d.cts +2 -0
  244. package/dist/C_VtableGantt.d.ts +2 -0
  245. package/dist/C_VtableGantt.js +4 -0
  246. package/dist/C_VtableGantt2.js +873 -0
  247. package/dist/C_VtableGantt2.js.map +1 -0
  248. package/dist/C_WaterFall-8sQDFXKg.css.map +1 -0
  249. package/dist/C_WaterFall.cjs +13 -0
  250. package/dist/C_WaterFall.d.cts +2 -0
  251. package/dist/C_WaterFall.d.ts +2 -0
  252. package/dist/C_WaterFall.js +3 -0
  253. package/dist/C_WaterFall2.js +365 -0
  254. package/dist/C_WaterFall2.js.map +1 -0
  255. package/dist/C_WorkFlow-J-dyIuh9.css.map +1 -0
  256. package/dist/C_WorkFlow.cjs +8 -0
  257. package/dist/C_WorkFlow.d.cts +2 -0
  258. package/dist/C_WorkFlow.d.ts +2 -0
  259. package/dist/C_WorkFlow.js +4 -0
  260. package/dist/C_WorkFlow2.js +1984 -0
  261. package/dist/C_WorkFlow2.js.map +1 -0
  262. package/dist/chunk.js +22 -0
  263. package/dist/city.js +4817 -0
  264. package/dist/city.js.map +1 -0
  265. package/dist/constants.d.ts +273 -0
  266. package/dist/constants.d.ts.map +1 -0
  267. package/dist/constants2.d.ts +178 -0
  268. package/dist/constants2.d.ts.map +1 -0
  269. package/dist/constants3.d.ts +475 -0
  270. package/dist/constants3.d.ts.map +1 -0
  271. package/dist/constants4.d.ts +430 -0
  272. package/dist/constants4.d.ts.map +1 -0
  273. package/dist/constants5.d.ts +4283 -0
  274. package/dist/constants5.d.ts.map +1 -0
  275. package/dist/data.d.ts +67 -0
  276. package/dist/data.d.ts.map +1 -0
  277. package/dist/export-helper.js +9 -0
  278. package/dist/index.cjs +409 -0
  279. package/dist/index.d.cts +96 -0
  280. package/dist/index.d.cts.map +1 -0
  281. package/dist/index.d.ts +103 -0
  282. package/dist/index.d.ts.map +1 -0
  283. package/dist/index.js +230 -0
  284. package/dist/index.js.map +1 -0
  285. package/dist/index.vue.d.ts +80 -0
  286. package/dist/index.vue.d.ts.map +1 -0
  287. package/dist/index10.vue.d.ts +72 -0
  288. package/dist/index10.vue.d.ts.map +1 -0
  289. package/dist/index11.vue.d.ts +26 -0
  290. package/dist/index11.vue.d.ts.map +1 -0
  291. package/dist/index12.vue.d.ts +81 -0
  292. package/dist/index12.vue.d.ts.map +1 -0
  293. package/dist/index13.vue.d.ts +55 -0
  294. package/dist/index13.vue.d.ts.map +1 -0
  295. package/dist/index14.vue.d.ts +33 -0
  296. package/dist/index14.vue.d.ts.map +1 -0
  297. package/dist/index15.vue.d.ts +18 -0
  298. package/dist/index15.vue.d.ts.map +1 -0
  299. package/dist/index16.vue.d.ts +662 -0
  300. package/dist/index16.vue.d.ts.map +1 -0
  301. package/dist/index2.vue.d.ts +38 -0
  302. package/dist/index2.vue.d.ts.map +1 -0
  303. package/dist/index3.vue.d.ts +45 -0
  304. package/dist/index3.vue.d.ts.map +1 -0
  305. package/dist/index4.vue.d.ts +31 -0
  306. package/dist/index4.vue.d.ts.map +1 -0
  307. package/dist/index5.vue.d.ts +35 -0
  308. package/dist/index5.vue.d.ts.map +1 -0
  309. package/dist/index6.vue.d.ts +48 -0
  310. package/dist/index6.vue.d.ts.map +1 -0
  311. package/dist/index7.vue.d.ts +56 -0
  312. package/dist/index7.vue.d.ts.map +1 -0
  313. package/dist/index8.vue.d.ts +41 -0
  314. package/dist/index8.vue.d.ts.map +1 -0
  315. package/dist/index9.vue.d.ts +30 -0
  316. package/dist/index9.vue.d.ts.map +1 -0
  317. package/dist/storage.js +31 -0
  318. package/dist/storage.js.map +1 -0
  319. package/dist/style.css +7725 -0
  320. package/dist/useCalendarEvents.d.ts +148 -0
  321. package/dist/useCalendarEvents.d.ts.map +1 -0
  322. package/dist/useCollapsePanel.d.ts +132 -0
  323. package/dist/useCollapsePanel.d.ts.map +1 -0
  324. package/dist/useCropperCore.d.ts +102 -0
  325. package/dist/useCropperCore.d.ts.map +1 -0
  326. package/dist/useDraggableLayout.d.ts +194 -0
  327. package/dist/useDraggableLayout.d.ts.map +1 -0
  328. package/dist/useDynamicFormState.d.ts +4248 -0
  329. package/dist/useDynamicFormState.d.ts.map +1 -0
  330. package/dist/useEdgeInteraction.d.ts +7614 -0
  331. package/dist/useEdgeInteraction.d.ts.map +1 -0
  332. package/dist/useFullscreen.d.ts +166 -0
  333. package/dist/useFullscreen.d.ts.map +1 -0
  334. package/dist/useInfiniteScroll.d.ts +169 -0
  335. package/dist/useInfiniteScroll.d.ts.map +1 -0
  336. package/dist/useModalEdit.d.ts +960 -0
  337. package/dist/useModalEdit.d.ts.map +1 -0
  338. package/dist/useQRCode.d.ts +87 -0
  339. package/dist/useQRCode.d.ts.map +1 -0
  340. package/dist/useSearchState.d.ts +180 -0
  341. package/dist/useSearchState.d.ts.map +1 -0
  342. package/dist/useSignatureHistory.d.ts +189 -0
  343. package/dist/useSignatureHistory.d.ts.map +1 -0
  344. package/dist/useSplitResize.d.ts +158 -0
  345. package/dist/useSplitResize.d.ts.map +1 -0
  346. package/dist/useTimeSelection.d.ts +105 -0
  347. package/dist/useTimeSelection.d.ts.map +1 -0
  348. package/dist/useTreeOperations.d.ts +183 -0
  349. package/dist/useTreeOperations.d.ts.map +1 -0
  350. package/dist/useWorkflowValidation.d.ts +1052 -0
  351. package/dist/useWorkflowValidation.d.ts.map +1 -0
  352. package/package.json +342 -0
@@ -0,0 +1,377 @@
1
+ import { t as export_helper_default } from "./export-helper.js";
2
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isRef, normalizeStyle, openBlock, ref, renderList, unref, watch, withCtx } from "vue";
3
+ import { NButton, NDatePicker, NInput, NModal, useMessage } from "naive-ui";
4
+ import FullCalendar from "@fullcalendar/vue3";
5
+ import dayGridPlugin from "@fullcalendar/daygrid";
6
+ import interactionPlugin from "@fullcalendar/interaction";
7
+ import listPlugin from "@fullcalendar/list";
8
+ import zhCn from "@fullcalendar/core/locales/zh-cn";
9
+
10
+ //#region src/components/C_FullCalendar/data.ts
11
+ const EVENT_COLORS = [
12
+ "#3f86ff",
13
+ "#ff6b6b",
14
+ "#67c23a",
15
+ "#e6a23c",
16
+ "#9c27b0",
17
+ "#00bcd4",
18
+ "#ff5722"
19
+ ];
20
+ const DEFAULT_EDIT_FORM = {
21
+ id: "",
22
+ title: "",
23
+ date: Date.now(),
24
+ startTime: "09:00",
25
+ endTime: "10:00",
26
+ color: "#3f86ff"
27
+ };
28
+ const HEADER_TOOLBAR = {
29
+ left: "prev,next today",
30
+ center: "title",
31
+ right: "dayGridMonth,dayGridWeek,dayGridDay,listWeek"
32
+ };
33
+ const BUTTON_TEXT = {
34
+ today: "今天",
35
+ month: "月",
36
+ week: "周",
37
+ day: "日",
38
+ list: "列表"
39
+ };
40
+
41
+ //#endregion
42
+ //#region src/components/C_FullCalendar/composables/useCalendarEvents.ts
43
+ function useCalendarEvents(props, emit) {
44
+ const message = useMessage();
45
+ const calendarRef = ref();
46
+ const internalEvents = ref([...props.events ?? []]);
47
+ const showActionDialog = ref(false);
48
+ const showEditModal = ref(false);
49
+ const isEditing = ref(false);
50
+ const selectedEvent = ref(null);
51
+ const editForm = ref({ ...DEFAULT_EDIT_FORM });
52
+ const addEventToArray = (event) => {
53
+ internalEvents.value = [...internalEvents.value, event];
54
+ emit("update:events", internalEvents.value);
55
+ };
56
+ const updateEventInArray = (eventData) => {
57
+ const index = internalEvents.value.findIndex((e) => e.id === eventData.id);
58
+ if (index !== -1) {
59
+ internalEvents.value = internalEvents.value.map((event, i) => i === index ? {
60
+ ...event,
61
+ ...eventData
62
+ } : event);
63
+ emit("update:events", internalEvents.value);
64
+ }
65
+ };
66
+ const removeEventFromArray = (eventId) => {
67
+ internalEvents.value = internalEvents.value.filter((e) => e.id !== eventId);
68
+ emit("update:events", internalEvents.value);
69
+ };
70
+ function handleEventClick(info) {
71
+ if (!props.editable) return;
72
+ info.jsEvent.preventDefault();
73
+ selectedEvent.value = info.event;
74
+ if (props.showEditDialog) showActionDialog.value = true;
75
+ }
76
+ function handleDateClick(info) {
77
+ if (!props.editable || !props.showAddDialog) return;
78
+ openAddModal(new Date(info.dateStr));
79
+ }
80
+ function handleEventDrop(info) {
81
+ const payload = {
82
+ id: info.event.id,
83
+ start: info.event.start,
84
+ end: info.event.end
85
+ };
86
+ updateEventInArray(payload);
87
+ emit("event-dropped", payload);
88
+ message.success(`事件 "${info.event.title}" 时间已更新`);
89
+ }
90
+ function handleEventResize(info) {
91
+ const payload = {
92
+ id: info.event.id,
93
+ start: info.event.start,
94
+ end: info.event.end
95
+ };
96
+ updateEventInArray(payload);
97
+ emit("event-updated", payload);
98
+ }
99
+ function openAddModal(date) {
100
+ isEditing.value = false;
101
+ editForm.value = {
102
+ ...DEFAULT_EDIT_FORM,
103
+ date: date.getTime(),
104
+ color: EVENT_COLORS[Math.floor(Math.random() * EVENT_COLORS.length)]
105
+ };
106
+ showEditModal.value = true;
107
+ }
108
+ function openEditModal() {
109
+ if (!selectedEvent.value) return;
110
+ isEditing.value = true;
111
+ const event = selectedEvent.value;
112
+ const startDate = new Date(event.start);
113
+ const endDate = event.end ? new Date(event.end) : new Date(event.start.getTime() + 36e5);
114
+ editForm.value = {
115
+ id: event.id,
116
+ title: event.title,
117
+ date: startDate.getTime(),
118
+ startTime: `${String(startDate.getHours()).padStart(2, "0")}:${String(startDate.getMinutes()).padStart(2, "0")}`,
119
+ endTime: `${String(endDate.getHours()).padStart(2, "0")}:${String(endDate.getMinutes()).padStart(2, "0")}`,
120
+ color: event.backgroundColor || "#3f86ff"
121
+ };
122
+ showActionDialog.value = false;
123
+ showEditModal.value = true;
124
+ }
125
+ function saveEvent() {
126
+ if (!editForm.value.title.trim()) {
127
+ message.error("请输入事件标题");
128
+ return false;
129
+ }
130
+ if (editForm.value.startTime >= editForm.value.endTime) {
131
+ message.error("结束时间必须晚于开始时间");
132
+ return false;
133
+ }
134
+ const dateStr = new Date(editForm.value.date).toISOString().split("T")[0];
135
+ const eventData = {
136
+ id: isEditing.value ? editForm.value.id : Date.now().toString(),
137
+ title: editForm.value.title,
138
+ start: /* @__PURE__ */ new Date(`${dateStr}T${editForm.value.startTime}:00`),
139
+ end: /* @__PURE__ */ new Date(`${dateStr}T${editForm.value.endTime}:00`),
140
+ color: editForm.value.color
141
+ };
142
+ if (isEditing.value) {
143
+ updateEventInArray(eventData);
144
+ emit("event-updated", eventData);
145
+ message.success("事件已更新");
146
+ } else {
147
+ addEventToArray(eventData);
148
+ emit("event-added", eventData);
149
+ message.success("事件已添加");
150
+ }
151
+ showEditModal.value = false;
152
+ return true;
153
+ }
154
+ function deleteEvent() {
155
+ if (!selectedEvent.value) return;
156
+ const { id, title } = selectedEvent.value;
157
+ removeEventFromArray(id);
158
+ emit("event-deleted", {
159
+ id,
160
+ title
161
+ });
162
+ showActionDialog.value = false;
163
+ message.success(`已删除事件: ${title}`);
164
+ }
165
+ const calendarOptions = ref({
166
+ plugins: [
167
+ dayGridPlugin,
168
+ interactionPlugin,
169
+ listPlugin
170
+ ],
171
+ locale: zhCn,
172
+ initialView: props.initialView ?? "dayGridMonth",
173
+ events: internalEvents.value,
174
+ headerToolbar: HEADER_TOOLBAR,
175
+ buttonText: BUTTON_TEXT,
176
+ editable: props.editable ?? true,
177
+ eventClick: handleEventClick,
178
+ dateClick: handleDateClick,
179
+ eventDrop: handleEventDrop,
180
+ eventResize: handleEventResize
181
+ });
182
+ watch(() => props.events, (newEvents) => {
183
+ internalEvents.value = [...newEvents ?? []];
184
+ }, { deep: true });
185
+ watch(internalEvents, (newEvents) => {
186
+ calendarOptions.value.events = newEvents;
187
+ }, { deep: true });
188
+ return {
189
+ calendarRef,
190
+ calendarOptions,
191
+ showActionDialog,
192
+ showEditModal,
193
+ isEditing,
194
+ selectedEvent,
195
+ editForm,
196
+ eventColors: EVENT_COLORS,
197
+ openEditModal,
198
+ saveEvent,
199
+ deleteEvent,
200
+ expose: {
201
+ getApi: () => calendarRef.value?.getApi(),
202
+ addEvent: addEventToArray,
203
+ updateEvent: updateEventInArray,
204
+ deleteEvent: removeEventFromArray,
205
+ getEvents: () => internalEvents.value
206
+ }
207
+ };
208
+ }
209
+
210
+ //#endregion
211
+ //#region src/components/C_FullCalendar/index.vue?vue&type=script&setup=true&lang.ts
212
+ const _hoisted_1 = { class: "c-full-calendar" };
213
+ const _hoisted_2 = { class: "ml-10% mt-20px" };
214
+ const _hoisted_3 = { style: { "padding": "20px" } };
215
+ const _hoisted_4 = { style: { "margin-bottom": "16px" } };
216
+ const _hoisted_5 = { style: { "margin-bottom": "16px" } };
217
+ const _hoisted_6 = { style: {
218
+ "display": "grid",
219
+ "grid-template-columns": "1fr 1fr",
220
+ "gap": "16px"
221
+ } };
222
+ const _hoisted_7 = { style: { "margin-top": "16px" } };
223
+ const _hoisted_8 = { style: {
224
+ "display": "flex",
225
+ "gap": "8px"
226
+ } };
227
+ const _hoisted_9 = ["onClick"];
228
+ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
229
+ name: "C_FullCalendar",
230
+ __name: "index",
231
+ props: {
232
+ events: { default: () => [] },
233
+ initialView: { default: "dayGridMonth" },
234
+ editable: {
235
+ type: Boolean,
236
+ default: true
237
+ },
238
+ showAddDialog: {
239
+ type: Boolean,
240
+ default: true
241
+ },
242
+ showEditDialog: {
243
+ type: Boolean,
244
+ default: true
245
+ }
246
+ },
247
+ emits: [
248
+ "update:events",
249
+ "event-added",
250
+ "event-updated",
251
+ "event-deleted",
252
+ "event-dropped"
253
+ ],
254
+ setup(__props, { expose: __expose, emit: __emit }) {
255
+ const { calendarRef, calendarOptions, showActionDialog, showEditModal, isEditing, selectedEvent, editForm, eventColors, openEditModal, saveEvent, deleteEvent, expose } = useCalendarEvents(__props, __emit);
256
+ __expose(expose);
257
+ return (_ctx, _cache) => {
258
+ return openBlock(), createElementBlock("div", _hoisted_1, [
259
+ createVNode(unref(FullCalendar), {
260
+ ref_key: "calendarRef",
261
+ ref: calendarRef,
262
+ options: unref(calendarOptions)
263
+ }, null, 8, ["options"]),
264
+ unref(showActionDialog) ? (openBlock(), createBlock(unref(NModal), {
265
+ key: 0,
266
+ show: unref(showActionDialog),
267
+ "onUpdate:show": _cache[0] || (_cache[0] = ($event) => isRef(showActionDialog) ? showActionDialog.value = $event : null),
268
+ preset: "dialog",
269
+ title: `事件操作 - ${unref(selectedEvent)?.title}`,
270
+ style: { "width": "400px" }
271
+ }, {
272
+ default: withCtx(() => [createElementVNode("div", _hoisted_2, [createVNode(unref(NButton), {
273
+ type: "primary",
274
+ onClick: unref(openEditModal),
275
+ style: { "margin-right": "12px" },
276
+ size: "small"
277
+ }, {
278
+ default: withCtx(() => _cache[6] || (_cache[6] = [createTextVNode(" 编辑 ", -1)])),
279
+ _: 1,
280
+ __: [6]
281
+ }, 8, ["onClick"]), createVNode(unref(NButton), {
282
+ type: "error",
283
+ onClick: unref(deleteEvent),
284
+ size: "small"
285
+ }, {
286
+ default: withCtx(() => _cache[7] || (_cache[7] = [createTextVNode(" 删除 ", -1)])),
287
+ _: 1,
288
+ __: [7]
289
+ }, 8, ["onClick"])])]),
290
+ _: 1
291
+ }, 8, ["show", "title"])) : createCommentVNode("v-if", true),
292
+ createVNode(unref(NModal), {
293
+ show: unref(showEditModal),
294
+ "onUpdate:show": _cache[5] || (_cache[5] = ($event) => isRef(showEditModal) ? showEditModal.value = $event : null),
295
+ preset: "dialog",
296
+ title: unref(isEditing) ? "编辑事件" : "添加事件",
297
+ "positive-text": "保存",
298
+ "negative-text": "取消",
299
+ onPositiveClick: unref(saveEvent)
300
+ }, {
301
+ default: withCtx(() => [createElementVNode("div", _hoisted_3, [
302
+ createElementVNode("div", _hoisted_4, [_cache[8] || (_cache[8] = createElementVNode("label", { style: {
303
+ "display": "block",
304
+ "margin-bottom": "8px",
305
+ "font-weight": "500"
306
+ } }, "事件标题", -1)), createVNode(unref(NInput), {
307
+ value: unref(editForm).title,
308
+ "onUpdate:value": _cache[1] || (_cache[1] = ($event) => unref(editForm).title = $event),
309
+ placeholder: "请输入事件标题"
310
+ }, null, 8, ["value"])]),
311
+ createElementVNode("div", _hoisted_5, [_cache[9] || (_cache[9] = createElementVNode("label", { style: {
312
+ "display": "block",
313
+ "margin-bottom": "8px",
314
+ "font-weight": "500"
315
+ } }, "事件日期", -1)), createVNode(unref(NDatePicker), {
316
+ value: unref(editForm).date,
317
+ "onUpdate:value": _cache[2] || (_cache[2] = ($event) => unref(editForm).date = $event),
318
+ type: "date",
319
+ format: "yyyy-MM-dd",
320
+ style: { "width": "100%" }
321
+ }, null, 8, ["value"])]),
322
+ createElementVNode("div", _hoisted_6, [createElementVNode("div", null, [_cache[10] || (_cache[10] = createElementVNode("label", { style: {
323
+ "display": "block",
324
+ "margin-bottom": "8px",
325
+ "font-weight": "500"
326
+ } }, "开始时间", -1)), createVNode(unref(NInput), {
327
+ value: unref(editForm).startTime,
328
+ "onUpdate:value": _cache[3] || (_cache[3] = ($event) => unref(editForm).startTime = $event),
329
+ type: "time",
330
+ placeholder: "09:00"
331
+ }, null, 8, ["value"])]), createElementVNode("div", null, [_cache[11] || (_cache[11] = createElementVNode("label", { style: {
332
+ "display": "block",
333
+ "margin-bottom": "8px",
334
+ "font-weight": "500"
335
+ } }, "结束时间", -1)), createVNode(unref(NInput), {
336
+ value: unref(editForm).endTime,
337
+ "onUpdate:value": _cache[4] || (_cache[4] = ($event) => unref(editForm).endTime = $event),
338
+ type: "time",
339
+ placeholder: "10:00"
340
+ }, null, 8, ["value"])])]),
341
+ createElementVNode("div", _hoisted_7, [_cache[12] || (_cache[12] = createElementVNode("label", { style: {
342
+ "display": "block",
343
+ "margin-bottom": "8px",
344
+ "font-weight": "500"
345
+ } }, "事件颜色", -1)), createElementVNode("div", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(eventColors), (color) => {
346
+ return openBlock(), createElementBlock("div", {
347
+ key: color,
348
+ style: normalizeStyle({
349
+ width: "30px",
350
+ height: "30px",
351
+ backgroundColor: color,
352
+ borderRadius: "50%",
353
+ cursor: "pointer",
354
+ border: unref(editForm).color === color ? "3px solid #000" : "2px solid #ddd"
355
+ }),
356
+ onClick: ($event) => unref(editForm).color = color
357
+ }, null, 12, _hoisted_9);
358
+ }), 128))])])
359
+ ])]),
360
+ _: 1
361
+ }, 8, [
362
+ "show",
363
+ "title",
364
+ "onPositiveClick"
365
+ ])
366
+ ]);
367
+ };
368
+ }
369
+ });
370
+
371
+ //#endregion
372
+ //#region src/components/C_FullCalendar/index.vue
373
+ var C_FullCalendar_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-c70fa420"]]);
374
+
375
+ //#endregion
376
+ export { EVENT_COLORS as a, DEFAULT_EDIT_FORM as i, useCalendarEvents as n, HEADER_TOOLBAR as o, BUTTON_TEXT as r, C_FullCalendar_default as t };
377
+ //# sourceMappingURL=C_FullCalendar2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_FullCalendar2.js","names":[],"sources":["../src/components/C_FullCalendar/data.ts","../src/components/C_FullCalendar/composables/useCalendarEvents.ts","../src/components/C_FullCalendar/index.vue","../src/components/C_FullCalendar/index.vue","../src/components/C_FullCalendar/index.vue"],"sourcesContent":["import type { CalendarEditForm } from \"./types\";\r\n\r\nexport const EVENT_COLORS = [\r\n \"#3f86ff\",\r\n \"#ff6b6b\",\r\n \"#67c23a\",\r\n \"#e6a23c\",\r\n \"#9c27b0\",\r\n \"#00bcd4\",\r\n \"#ff5722\",\r\n];\r\n\r\nexport const DEFAULT_EDIT_FORM: CalendarEditForm = {\r\n id: \"\",\r\n title: \"\",\r\n date: Date.now(),\r\n startTime: \"09:00\",\r\n endTime: \"10:00\",\r\n color: \"#3f86ff\",\r\n};\r\n\r\nexport const HEADER_TOOLBAR = {\r\n left: \"prev,next today\",\r\n center: \"title\",\r\n right: \"dayGridMonth,dayGridWeek,dayGridDay,listWeek\",\r\n};\r\n\r\nexport const BUTTON_TEXT = {\r\n today: \"今天\",\r\n month: \"月\",\r\n week: \"周\",\r\n day: \"日\",\r\n list: \"列表\",\r\n};\r\n","import { ref, watch } from \"vue\";\r\nimport { useMessage } from \"naive-ui\";\r\nimport type { Ref } from \"vue\";\r\nimport type { CalendarEvent, CalendarProps, CalendarEditForm } from \"../types\";\r\nimport {\r\n EVENT_COLORS,\r\n DEFAULT_EDIT_FORM,\r\n HEADER_TOOLBAR,\r\n BUTTON_TEXT,\r\n} from \"../data\";\r\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\r\nimport interactionPlugin from \"@fullcalendar/interaction\";\r\nimport listPlugin from \"@fullcalendar/list\";\r\nimport type { CalendarOptions } from \"@fullcalendar/core\";\r\nimport zhCn from \"@fullcalendar/core/locales/zh-cn\";\r\n\r\ntype EmitFn = {\r\n (event: \"update:events\", events: CalendarEvent[]): void;\r\n (event: \"event-added\", eventData: CalendarEvent): void;\r\n (event: \"event-updated\", eventData: Partial<CalendarEvent>): void;\r\n (event: \"event-deleted\", eventData: { id: string; title: string }): void;\r\n (event: \"event-dropped\", eventData: Partial<CalendarEvent>): void;\r\n};\r\n\r\nexport function useCalendarEvents(props: CalendarProps, emit: EmitFn) {\r\n const message = useMessage();\r\n const calendarRef = ref();\r\n\r\n const internalEvents = ref<CalendarEvent[]>([...(props.events ?? [])]);\r\n\r\n const showActionDialog = ref(false);\r\n const showEditModal = ref(false);\r\n const isEditing = ref(false);\r\n const selectedEvent = ref<any>(null);\r\n const editForm = ref<CalendarEditForm>({ ...DEFAULT_EDIT_FORM });\r\n\r\n const addEventToArray = (event: CalendarEvent) => {\r\n internalEvents.value = [...internalEvents.value, event];\r\n emit(\"update:events\", internalEvents.value);\r\n };\r\n\r\n const updateEventInArray = (eventData: Partial<CalendarEvent>) => {\r\n const index = internalEvents.value.findIndex((e) => e.id === eventData.id);\r\n if (index !== -1) {\r\n internalEvents.value = internalEvents.value.map((event, i) =>\r\n i === index ? { ...event, ...eventData } : event,\r\n );\r\n emit(\"update:events\", internalEvents.value);\r\n }\r\n };\r\n\r\n const removeEventFromArray = (eventId: string) => {\r\n internalEvents.value = internalEvents.value.filter((e) => e.id !== eventId);\r\n emit(\"update:events\", internalEvents.value);\r\n };\r\n\r\n function handleEventClick(info: any) {\r\n if (!props.editable) return;\r\n info.jsEvent.preventDefault();\r\n selectedEvent.value = info.event;\r\n if (props.showEditDialog) showActionDialog.value = true;\r\n }\r\n\r\n function handleDateClick(info: any) {\r\n if (!props.editable || !props.showAddDialog) return;\r\n openAddModal(new Date(info.dateStr));\r\n }\r\n\r\n function handleEventDrop(info: any) {\r\n const payload = {\r\n id: info.event.id,\r\n start: info.event.start,\r\n end: info.event.end,\r\n };\r\n updateEventInArray(payload);\r\n emit(\"event-dropped\", payload);\r\n message.success(`事件 \"${info.event.title}\" 时间已更新`);\r\n }\r\n\r\n function handleEventResize(info: any) {\r\n const payload = {\r\n id: info.event.id,\r\n start: info.event.start,\r\n end: info.event.end,\r\n };\r\n updateEventInArray(payload);\r\n emit(\"event-updated\", payload);\r\n }\r\n\r\n function openAddModal(date: Date) {\r\n isEditing.value = false;\r\n editForm.value = {\r\n ...DEFAULT_EDIT_FORM,\r\n date: date.getTime(),\r\n color: EVENT_COLORS[Math.floor(Math.random() * EVENT_COLORS.length)],\r\n };\r\n showEditModal.value = true;\r\n }\r\n\r\n function openEditModal() {\r\n if (!selectedEvent.value) return;\r\n isEditing.value = true;\r\n const event = selectedEvent.value;\r\n const startDate = new Date(event.start);\r\n const endDate = event.end\r\n ? new Date(event.end)\r\n : new Date(event.start.getTime() + 3600000);\r\n\r\n editForm.value = {\r\n id: event.id,\r\n title: event.title,\r\n date: startDate.getTime(),\r\n startTime: `${String(startDate.getHours()).padStart(2, \"0\")}:${String(startDate.getMinutes()).padStart(2, \"0\")}`,\r\n endTime: `${String(endDate.getHours()).padStart(2, \"0\")}:${String(endDate.getMinutes()).padStart(2, \"0\")}`,\r\n color: event.backgroundColor || \"#3f86ff\",\r\n };\r\n showActionDialog.value = false;\r\n showEditModal.value = true;\r\n }\r\n\r\n function saveEvent() {\r\n if (!editForm.value.title.trim()) {\r\n message.error(\"请输入事件标题\");\r\n return false;\r\n }\r\n if (editForm.value.startTime >= editForm.value.endTime) {\r\n message.error(\"结束时间必须晚于开始时间\");\r\n return false;\r\n }\r\n\r\n const dateStr = new Date(editForm.value.date).toISOString().split(\"T\")[0];\r\n const eventData: CalendarEvent = {\r\n id: isEditing.value ? editForm.value.id : Date.now().toString(),\r\n title: editForm.value.title,\r\n start: new Date(`${dateStr}T${editForm.value.startTime}:00`),\r\n end: new Date(`${dateStr}T${editForm.value.endTime}:00`),\r\n color: editForm.value.color,\r\n };\r\n\r\n if (isEditing.value) {\r\n updateEventInArray(eventData);\r\n emit(\"event-updated\", eventData);\r\n message.success(\"事件已更新\");\r\n } else {\r\n addEventToArray(eventData);\r\n emit(\"event-added\", eventData);\r\n message.success(\"事件已添加\");\r\n }\r\n\r\n showEditModal.value = false;\r\n return true;\r\n }\r\n\r\n function deleteEvent() {\r\n if (!selectedEvent.value) return;\r\n const { id, title } = selectedEvent.value;\r\n removeEventFromArray(id);\r\n emit(\"event-deleted\", { id, title });\r\n showActionDialog.value = false;\r\n message.success(`已删除事件: ${title}`);\r\n }\r\n\r\n const calendarOptions: Ref<CalendarOptions> = ref({\r\n plugins: [dayGridPlugin, interactionPlugin, listPlugin],\r\n locale: zhCn,\r\n initialView: props.initialView ?? \"dayGridMonth\",\r\n events: internalEvents.value as any,\r\n headerToolbar: HEADER_TOOLBAR,\r\n buttonText: BUTTON_TEXT,\r\n editable: props.editable ?? true,\r\n eventClick: handleEventClick,\r\n dateClick: handleDateClick,\r\n eventDrop: handleEventDrop,\r\n eventResize: handleEventResize,\r\n });\r\n\r\n watch(\r\n () => props.events,\r\n (newEvents) => {\r\n internalEvents.value = [...(newEvents ?? [])];\r\n },\r\n { deep: true },\r\n );\r\n\r\n watch(\r\n internalEvents,\r\n (newEvents) => {\r\n calendarOptions.value.events = newEvents as any;\r\n },\r\n { deep: true },\r\n );\r\n\r\n return {\r\n calendarRef,\r\n calendarOptions,\r\n showActionDialog,\r\n showEditModal,\r\n isEditing,\r\n selectedEvent,\r\n editForm,\r\n eventColors: EVENT_COLORS,\r\n openEditModal,\r\n saveEvent,\r\n deleteEvent,\r\n expose: {\r\n getApi: () => calendarRef.value?.getApi(),\r\n addEvent: addEventToArray,\r\n updateEvent: updateEventInArray,\r\n deleteEvent: removeEventFromArray,\r\n getEvents: () => internalEvents.value,\r\n },\r\n };\r\n}\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-19\r\n * @Description: 全局日历组件 — 薄 UI 壳,逻辑由 useCalendarEvents 驱动\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-full-calendar\">\r\n <FullCalendar ref=\"calendarRef\" :options=\"calendarOptions\" />\r\n\r\n <NModal\r\n v-if=\"showActionDialog\"\r\n v-model:show=\"showActionDialog\"\r\n preset=\"dialog\"\r\n :title=\"`事件操作 - ${selectedEvent?.title}`\"\r\n style=\"width: 400px\"\r\n >\r\n <div class=\"ml-10% mt-20px\">\r\n <NButton\r\n type=\"primary\"\r\n @click=\"openEditModal\"\r\n style=\"margin-right: 12px\"\r\n size=\"small\"\r\n >\r\n 编辑\r\n </NButton>\r\n <NButton type=\"error\" @click=\"deleteEvent\" size=\"small\"> 删除 </NButton>\r\n </div>\r\n </NModal>\r\n\r\n <NModal\r\n v-model:show=\"showEditModal\"\r\n preset=\"dialog\"\r\n :title=\"isEditing ? '编辑事件' : '添加事件'\"\r\n positive-text=\"保存\"\r\n negative-text=\"取消\"\r\n @positive-click=\"saveEvent\"\r\n >\r\n <div style=\"padding: 20px\">\r\n <div style=\"margin-bottom: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件标题</label\r\n >\r\n <NInput v-model:value=\"editForm.title\" placeholder=\"请输入事件标题\" />\r\n </div>\r\n\r\n <div style=\"margin-bottom: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件日期</label\r\n >\r\n <NDatePicker\r\n v-model:value=\"editForm.date\"\r\n type=\"date\"\r\n format=\"yyyy-MM-dd\"\r\n style=\"width: 100%\"\r\n />\r\n </div>\r\n\r\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px\">\r\n <div>\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >开始时间</label\r\n >\r\n <NInput\r\n v-model:value=\"editForm.startTime\"\r\n type=\"time\"\r\n placeholder=\"09:00\"\r\n />\r\n </div>\r\n <div>\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >结束时间</label\r\n >\r\n <NInput\r\n v-model:value=\"editForm.endTime\"\r\n type=\"time\"\r\n placeholder=\"10:00\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div style=\"margin-top: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件颜色</label\r\n >\r\n <div style=\"display: flex; gap: 8px\">\r\n <div\r\n v-for=\"color in eventColors\"\r\n :key=\"color\"\r\n :style=\"{\r\n width: '30px',\r\n height: '30px',\r\n backgroundColor: color,\r\n borderRadius: '50%',\r\n cursor: 'pointer',\r\n border:\r\n editForm.color === color\r\n ? '3px solid #000'\r\n : '2px solid #ddd',\r\n }\"\r\n @click=\"editForm.color = color\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </NModal>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { NModal, NButton, NInput, NDatePicker } from \"naive-ui\";\r\nimport FullCalendar from \"@fullcalendar/vue3\";\r\nimport { useCalendarEvents } from \"./composables/useCalendarEvents\";\r\nimport type { CalendarProps, CalendarEmits, CalendarExpose } from \"./types\";\r\n\r\ndefineOptions({ name: \"C_FullCalendar\" });\r\n\r\nconst props = withDefaults(defineProps<CalendarProps>(), {\r\n events: () => [],\r\n initialView: \"dayGridMonth\",\r\n editable: true,\r\n showAddDialog: true,\r\n showEditDialog: true,\r\n});\r\n\r\nconst emit = defineEmits<CalendarEmits>();\r\n\r\nconst {\r\n calendarRef,\r\n calendarOptions,\r\n showActionDialog,\r\n showEditModal,\r\n isEditing,\r\n selectedEvent,\r\n editForm,\r\n eventColors,\r\n openEditModal,\r\n saveEvent,\r\n deleteEvent,\r\n expose,\r\n} = useCalendarEvents(props, emit);\r\n\r\ndefineExpose<CalendarExpose>(expose);\r\n</script>\r\n\r\n<style scoped>\r\n.c-full-calendar {\r\n width: 100%;\r\n}\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-19\r\n * @Description: 全局日历组件 — 薄 UI 壳,逻辑由 useCalendarEvents 驱动\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-full-calendar\">\r\n <FullCalendar ref=\"calendarRef\" :options=\"calendarOptions\" />\r\n\r\n <NModal\r\n v-if=\"showActionDialog\"\r\n v-model:show=\"showActionDialog\"\r\n preset=\"dialog\"\r\n :title=\"`事件操作 - ${selectedEvent?.title}`\"\r\n style=\"width: 400px\"\r\n >\r\n <div class=\"ml-10% mt-20px\">\r\n <NButton\r\n type=\"primary\"\r\n @click=\"openEditModal\"\r\n style=\"margin-right: 12px\"\r\n size=\"small\"\r\n >\r\n 编辑\r\n </NButton>\r\n <NButton type=\"error\" @click=\"deleteEvent\" size=\"small\"> 删除 </NButton>\r\n </div>\r\n </NModal>\r\n\r\n <NModal\r\n v-model:show=\"showEditModal\"\r\n preset=\"dialog\"\r\n :title=\"isEditing ? '编辑事件' : '添加事件'\"\r\n positive-text=\"保存\"\r\n negative-text=\"取消\"\r\n @positive-click=\"saveEvent\"\r\n >\r\n <div style=\"padding: 20px\">\r\n <div style=\"margin-bottom: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件标题</label\r\n >\r\n <NInput v-model:value=\"editForm.title\" placeholder=\"请输入事件标题\" />\r\n </div>\r\n\r\n <div style=\"margin-bottom: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件日期</label\r\n >\r\n <NDatePicker\r\n v-model:value=\"editForm.date\"\r\n type=\"date\"\r\n format=\"yyyy-MM-dd\"\r\n style=\"width: 100%\"\r\n />\r\n </div>\r\n\r\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px\">\r\n <div>\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >开始时间</label\r\n >\r\n <NInput\r\n v-model:value=\"editForm.startTime\"\r\n type=\"time\"\r\n placeholder=\"09:00\"\r\n />\r\n </div>\r\n <div>\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >结束时间</label\r\n >\r\n <NInput\r\n v-model:value=\"editForm.endTime\"\r\n type=\"time\"\r\n placeholder=\"10:00\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div style=\"margin-top: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件颜色</label\r\n >\r\n <div style=\"display: flex; gap: 8px\">\r\n <div\r\n v-for=\"color in eventColors\"\r\n :key=\"color\"\r\n :style=\"{\r\n width: '30px',\r\n height: '30px',\r\n backgroundColor: color,\r\n borderRadius: '50%',\r\n cursor: 'pointer',\r\n border:\r\n editForm.color === color\r\n ? '3px solid #000'\r\n : '2px solid #ddd',\r\n }\"\r\n @click=\"editForm.color = color\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </NModal>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { NModal, NButton, NInput, NDatePicker } from \"naive-ui\";\r\nimport FullCalendar from \"@fullcalendar/vue3\";\r\nimport { useCalendarEvents } from \"./composables/useCalendarEvents\";\r\nimport type { CalendarProps, CalendarEmits, CalendarExpose } from \"./types\";\r\n\r\ndefineOptions({ name: \"C_FullCalendar\" });\r\n\r\nconst props = withDefaults(defineProps<CalendarProps>(), {\r\n events: () => [],\r\n initialView: \"dayGridMonth\",\r\n editable: true,\r\n showAddDialog: true,\r\n showEditDialog: true,\r\n});\r\n\r\nconst emit = defineEmits<CalendarEmits>();\r\n\r\nconst {\r\n calendarRef,\r\n calendarOptions,\r\n showActionDialog,\r\n showEditModal,\r\n isEditing,\r\n selectedEvent,\r\n editForm,\r\n eventColors,\r\n openEditModal,\r\n saveEvent,\r\n deleteEvent,\r\n expose,\r\n} = useCalendarEvents(props, emit);\r\n\r\ndefineExpose<CalendarExpose>(expose);\r\n</script>\r\n\r\n<style scoped>\r\n.c-full-calendar {\r\n width: 100%;\r\n}\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-19\r\n * @Description: 全局日历组件 — 薄 UI 壳,逻辑由 useCalendarEvents 驱动\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-full-calendar\">\r\n <FullCalendar ref=\"calendarRef\" :options=\"calendarOptions\" />\r\n\r\n <NModal\r\n v-if=\"showActionDialog\"\r\n v-model:show=\"showActionDialog\"\r\n preset=\"dialog\"\r\n :title=\"`事件操作 - ${selectedEvent?.title}`\"\r\n style=\"width: 400px\"\r\n >\r\n <div class=\"ml-10% mt-20px\">\r\n <NButton\r\n type=\"primary\"\r\n @click=\"openEditModal\"\r\n style=\"margin-right: 12px\"\r\n size=\"small\"\r\n >\r\n 编辑\r\n </NButton>\r\n <NButton type=\"error\" @click=\"deleteEvent\" size=\"small\"> 删除 </NButton>\r\n </div>\r\n </NModal>\r\n\r\n <NModal\r\n v-model:show=\"showEditModal\"\r\n preset=\"dialog\"\r\n :title=\"isEditing ? '编辑事件' : '添加事件'\"\r\n positive-text=\"保存\"\r\n negative-text=\"取消\"\r\n @positive-click=\"saveEvent\"\r\n >\r\n <div style=\"padding: 20px\">\r\n <div style=\"margin-bottom: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件标题</label\r\n >\r\n <NInput v-model:value=\"editForm.title\" placeholder=\"请输入事件标题\" />\r\n </div>\r\n\r\n <div style=\"margin-bottom: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件日期</label\r\n >\r\n <NDatePicker\r\n v-model:value=\"editForm.date\"\r\n type=\"date\"\r\n format=\"yyyy-MM-dd\"\r\n style=\"width: 100%\"\r\n />\r\n </div>\r\n\r\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 16px\">\r\n <div>\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >开始时间</label\r\n >\r\n <NInput\r\n v-model:value=\"editForm.startTime\"\r\n type=\"time\"\r\n placeholder=\"09:00\"\r\n />\r\n </div>\r\n <div>\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >结束时间</label\r\n >\r\n <NInput\r\n v-model:value=\"editForm.endTime\"\r\n type=\"time\"\r\n placeholder=\"10:00\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div style=\"margin-top: 16px\">\r\n <label style=\"display: block; margin-bottom: 8px; font-weight: 500\"\r\n >事件颜色</label\r\n >\r\n <div style=\"display: flex; gap: 8px\">\r\n <div\r\n v-for=\"color in eventColors\"\r\n :key=\"color\"\r\n :style=\"{\r\n width: '30px',\r\n height: '30px',\r\n backgroundColor: color,\r\n borderRadius: '50%',\r\n cursor: 'pointer',\r\n border:\r\n editForm.color === color\r\n ? '3px solid #000'\r\n : '2px solid #ddd',\r\n }\"\r\n @click=\"editForm.color = color\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </NModal>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { NModal, NButton, NInput, NDatePicker } from \"naive-ui\";\r\nimport FullCalendar from \"@fullcalendar/vue3\";\r\nimport { useCalendarEvents } from \"./composables/useCalendarEvents\";\r\nimport type { CalendarProps, CalendarEmits, CalendarExpose } from \"./types\";\r\n\r\ndefineOptions({ name: \"C_FullCalendar\" });\r\n\r\nconst props = withDefaults(defineProps<CalendarProps>(), {\r\n events: () => [],\r\n initialView: \"dayGridMonth\",\r\n editable: true,\r\n showAddDialog: true,\r\n showEditDialog: true,\r\n});\r\n\r\nconst emit = defineEmits<CalendarEmits>();\r\n\r\nconst {\r\n calendarRef,\r\n calendarOptions,\r\n showActionDialog,\r\n showEditModal,\r\n isEditing,\r\n selectedEvent,\r\n editForm,\r\n eventColors,\r\n openEditModal,\r\n saveEvent,\r\n deleteEvent,\r\n expose,\r\n} = useCalendarEvents(props, emit);\r\n\r\ndefineExpose<CalendarExpose>(expose);\r\n</script>\r\n\r\n<style scoped>\r\n.c-full-calendar {\r\n width: 100%;\r\n}\r\n</style>\r\n"],"mappings":";;;;;;;;;;AAEA,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,oBAAsC;CACjD,IAAI;CACJ,OAAO;CACP,MAAM,KAAK,KAAK;CAChB,WAAW;CACX,SAAS;CACT,OAAO;CACR;AAED,MAAa,iBAAiB;CAC5B,MAAM;CACN,QAAQ;CACR,OAAO;CACR;AAED,MAAa,cAAc;CACzB,OAAO;CACP,OAAO;CACP,MAAM;CACN,KAAK;CACL,MAAM;CACP;;;;ACTD,SAAgB,kBAAkB,OAAsB,MAAc;CACpE,MAAM,UAAU,YAAY;CAC5B,MAAM,cAAc,KAAK;CAEzB,MAAM,iBAAiB,IAAqB,CAAC,GAAI,MAAM,UAAU,EAAE,CAAE,CAAC;CAEtE,MAAM,mBAAmB,IAAI,MAAM;CACnC,MAAM,gBAAgB,IAAI,MAAM;CAChC,MAAM,YAAY,IAAI,MAAM;CAC5B,MAAM,gBAAgB,IAAS,KAAK;CACpC,MAAM,WAAW,IAAsB,EAAE,GAAG,mBAAmB,CAAC;CAEhE,MAAM,mBAAmB,UAAyB;AAChD,iBAAe,QAAQ,CAAC,GAAG,eAAe,OAAO,MAAM;AACvD,OAAK,iBAAiB,eAAe,MAAM;;CAG7C,MAAM,sBAAsB,cAAsC;EAChE,MAAM,QAAQ,eAAe,MAAM,WAAW,MAAM,EAAE,OAAO,UAAU,GAAG;AAC1E,MAAI,UAAU,IAAI;AAChB,kBAAe,QAAQ,eAAe,MAAM,KAAK,OAAO,MACtD,MAAM,QAAQ;IAAE,GAAG;IAAO,GAAG;IAAW,GAAG,MAC5C;AACD,QAAK,iBAAiB,eAAe,MAAM;;;CAI/C,MAAM,wBAAwB,YAAoB;AAChD,iBAAe,QAAQ,eAAe,MAAM,QAAQ,MAAM,EAAE,OAAO,QAAQ;AAC3E,OAAK,iBAAiB,eAAe,MAAM;;CAG7C,SAAS,iBAAiB,MAAW;AACnC,MAAI,CAAC,MAAM,SAAU;AACrB,OAAK,QAAQ,gBAAgB;AAC7B,gBAAc,QAAQ,KAAK;AAC3B,MAAI,MAAM,eAAgB,kBAAiB,QAAQ;;CAGrD,SAAS,gBAAgB,MAAW;AAClC,MAAI,CAAC,MAAM,YAAY,CAAC,MAAM,cAAe;AAC7C,eAAa,IAAI,KAAK,KAAK,QAAQ,CAAC;;CAGtC,SAAS,gBAAgB,MAAW;EAClC,MAAM,UAAU;GACd,IAAI,KAAK,MAAM;GACf,OAAO,KAAK,MAAM;GAClB,KAAK,KAAK,MAAM;GACjB;AACD,qBAAmB,QAAQ;AAC3B,OAAK,iBAAiB,QAAQ;AAC9B,UAAQ,QAAQ,OAAO,KAAK,MAAM,MAAM,SAAS;;CAGnD,SAAS,kBAAkB,MAAW;EACpC,MAAM,UAAU;GACd,IAAI,KAAK,MAAM;GACf,OAAO,KAAK,MAAM;GAClB,KAAK,KAAK,MAAM;GACjB;AACD,qBAAmB,QAAQ;AAC3B,OAAK,iBAAiB,QAAQ;;CAGhC,SAAS,aAAa,MAAY;AAChC,YAAU,QAAQ;AAClB,WAAS,QAAQ;GACf,GAAG;GACH,MAAM,KAAK,SAAS;GACpB,OAAO,aAAa,KAAK,MAAM,KAAK,QAAQ,GAAG,aAAa,OAAO;GACpE;AACD,gBAAc,QAAQ;;CAGxB,SAAS,gBAAgB;AACvB,MAAI,CAAC,cAAc,MAAO;AAC1B,YAAU,QAAQ;EAClB,MAAM,QAAQ,cAAc;EAC5B,MAAM,YAAY,IAAI,KAAK,MAAM,MAAM;EACvC,MAAM,UAAU,MAAM,MAClB,IAAI,KAAK,MAAM,IAAI,GACnB,IAAI,KAAK,MAAM,MAAM,SAAS,GAAG,KAAQ;AAE7C,WAAS,QAAQ;GACf,IAAI,MAAM;GACV,OAAO,MAAM;GACb,MAAM,UAAU,SAAS;GACzB,WAAW,GAAG,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,UAAU,YAAY,CAAC,CAAC,SAAS,GAAG,IAAI;GAC9G,SAAS,GAAG,OAAO,QAAQ,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,QAAQ,YAAY,CAAC,CAAC,SAAS,GAAG,IAAI;GACxG,OAAO,MAAM,mBAAmB;GACjC;AACD,mBAAiB,QAAQ;AACzB,gBAAc,QAAQ;;CAGxB,SAAS,YAAY;AACnB,MAAI,CAAC,SAAS,MAAM,MAAM,MAAM,EAAE;AAChC,WAAQ,MAAM,UAAU;AACxB,UAAO;;AAET,MAAI,SAAS,MAAM,aAAa,SAAS,MAAM,SAAS;AACtD,WAAQ,MAAM,eAAe;AAC7B,UAAO;;EAGT,MAAM,UAAU,IAAI,KAAK,SAAS,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC;EACvE,MAAM,YAA2B;GAC/B,IAAI,UAAU,QAAQ,SAAS,MAAM,KAAK,KAAK,KAAK,CAAC,UAAU;GAC/D,OAAO,SAAS,MAAM;GACtB,uBAAO,IAAI,KAAK,GAAG,QAAQ,GAAG,SAAS,MAAM,UAAU,KAAK;GAC5D,qBAAK,IAAI,KAAK,GAAG,QAAQ,GAAG,SAAS,MAAM,QAAQ,KAAK;GACxD,OAAO,SAAS,MAAM;GACvB;AAED,MAAI,UAAU,OAAO;AACnB,sBAAmB,UAAU;AAC7B,QAAK,iBAAiB,UAAU;AAChC,WAAQ,QAAQ,QAAQ;SACnB;AACL,mBAAgB,UAAU;AAC1B,QAAK,eAAe,UAAU;AAC9B,WAAQ,QAAQ,QAAQ;;AAG1B,gBAAc,QAAQ;AACtB,SAAO;;CAGT,SAAS,cAAc;AACrB,MAAI,CAAC,cAAc,MAAO;EAC1B,MAAM,EAAE,IAAI,UAAU,cAAc;AACpC,uBAAqB,GAAG;AACxB,OAAK,iBAAiB;GAAE;GAAI;GAAO,CAAC;AACpC,mBAAiB,QAAQ;AACzB,UAAQ,QAAQ,UAAU,QAAQ;;CAGpC,MAAM,kBAAwC,IAAI;EAChD,SAAS;GAAC;GAAe;GAAmB;GAAW;EACvD,QAAQ;EACR,aAAa,MAAM,eAAe;EAClC,QAAQ,eAAe;EACvB,eAAe;EACf,YAAY;EACZ,UAAU,MAAM,YAAY;EAC5B,YAAY;EACZ,WAAW;EACX,WAAW;EACX,aAAa;EACd,CAAC;AAEF,aACQ,MAAM,SACX,cAAc;AACb,iBAAe,QAAQ,CAAC,GAAI,aAAa,EAAE,CAAE;IAE/C,EAAE,MAAM,MAAM,CACf;AAED,OACE,iBACC,cAAc;AACb,kBAAgB,MAAM,SAAS;IAEjC,EAAE,MAAM,MAAM,CACf;AAED,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACA;EACA,QAAQ;GACN,cAAc,YAAY,OAAO,QAAQ;GACzC,UAAU;GACV,aAAa;GACb,aAAa;GACb,iBAAiB,eAAe;GACjC;EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEnFH,MAAM,EACJ,aACA,iBACA,kBACA,eACA,WACA,eACA,UACA,aACA,eACA,WACA,aACA,WACE,kBAvBU,SAQD,OAeqB;AAElC,WAA6B,OAAO;;uBAvIlC,mBAmGM,OAnGN,YAmGM;IAlGJ,YAA6D,MAAA,aAAA,EAAA;cAA3C;KAAJ,KAAI;KAAe,SAAS,MAAA,gBAAe;;IAGjD,MAAA,iBAAgB,iBADxB,YAkBS,MAAA,OAAA,EAAA;;KAhBC,MAAM,MAAA,iBAAgB;sFAAhB,iBAAgB,QAAA,SAAA;KAC9B,QAAO;KACN,OAAK,UAAY,MAAA,cAAa,EAAE;KACjC,OAAA,EAAA,SAAA,SAAoB;;4BAYd,CAVN,mBAUM,OAVN,YAUM,CATJ,YAOU,MAAA,QAAA,EAAA;MANR,MAAK;MACJ,SAAO,MAAA,cAAa;MACrB,OAAA,EAAA,gBAAA,QAA0B;MAC1B,MAAK;;6BAGP,OAAA,OAAA,OAAA,KAAA,iBAFC,QAED,GAAA;;;yBACA,YAAsE,MAAA,QAAA,EAAA;MAA7D,MAAK;MAAS,SAAO,MAAA,YAAW;MAAE,MAAK;;6BAAY,OAAA,OAAA,OAAA,KAAA,iBAAJ,QAAI,GAAA;;;;;;IAIhE,YA2ES,MAAA,OAAA,EAAA;KA1EC,MAAM,MAAA,cAAa;mFAAb,cAAa,QAAA,SAAA;KAC3B,QAAO;KACN,OAAO,MAAA,UAAS,GAAA,SAAA;KACjB,iBAAc;KACd,iBAAc;KACb,iBAAgB,MAAA,UAAS;;4BAoEpB,CAlEN,mBAkEM,OAlEN,YAkEM;MAjEJ,mBAKM,OALN,YAKM,2BAJJ,mBAC2B,SAAA,EADpB,OAAA;OAAA,WAAA;OAAA,iBAAA;OAAA,eAAA;OAA4D,EAAA,EAChE,QAAI,GAAA,GAEP,YAA+D,MAAA,OAAA,EAAA;OAA/C,OAAO,MAAA,SAAQ,CAAC;+DAAT,MAAA,SAAQ,CAAC,QAAK;OAAE,aAAY;;MAGrD,mBAUM,OAVN,YAUM,2BATJ,mBAC2B,SAAA,EADpB,OAAA;OAAA,WAAA;OAAA,iBAAA;OAAA,eAAA;OAA4D,EAAA,EAChE,QAAI,GAAA,GAEP,YAKE,MAAA,YAAA,EAAA;OAJQ,OAAO,MAAA,SAAQ,CAAC;+DAAT,MAAA,SAAQ,CAAC,OAAI;OAC5B,MAAK;OACL,QAAO;OACP,OAAA,EAAA,SAAA,QAAmB;;MAIvB,mBAqBM,OArBN,YAqBM,CApBJ,mBASM,OAAA,MAAA,6BARJ,mBAC6B,SAAA,EADtB,OAAA;OAAA,WAAA;OAAA,iBAAA;OAAA,eAAA;OAA4D,EAAA,EAChE,QAAI,GAAA,GAEP,YAIE,MAAA,OAAA,EAAA;OAHQ,OAAO,MAAA,SAAQ,CAAC;+DAAT,MAAA,SAAQ,CAAC,YAAS;OACjC,MAAK;OACL,aAAY;gCAGhB,mBASM,OAAA,MAAA,6BARJ,mBAC6B,SAAA,EADtB,OAAA;OAAA,WAAA;OAAA,iBAAA;OAAA,eAAA;OAA4D,EAAA,EAChE,QAAI,GAAA,GAEP,YAIE,MAAA,OAAA,EAAA;OAHQ,OAAO,MAAA,SAAQ,CAAC;+DAAT,MAAA,SAAQ,CAAC,UAAO;OAC/B,MAAK;OACL,aAAY;;MAKlB,mBAsBM,OAtBN,YAsBM,6BArBJ,mBAC2B,SAAA,EADpB,OAAA;OAAA,WAAA;OAAA,iBAAA;OAAA,eAAA;OAA4D,EAAA,EAChE,QAAI,GAAA,GAEP,mBAiBM,OAjBN,YAiBM,mBAhBJ,mBAeE,UAAA,MAAA,WAdgB,MAAA,YAAW,GAApB,UAAK;2BADd,mBAeE,OAAA;QAbC,KAAK;QACL,OAAK,eAAA;;;0BAAuG;;;iBAA6H,MAAA,SAAQ,CAAC,UAAU;;QAW5P,UAAK,WAAE,MAAA,SAAQ,CAAC,QAAQ"}
@@ -0,0 +1,4 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_C_Guide = require('./C_Guide.js');
3
+
4
+ exports.C_Guide = require_C_Guide.C_Guide_default;
@@ -0,0 +1,2 @@
1
+ import { n as _default, t as GuideStep } from "./index9.vue.js";
2
+ export { _default as C_Guide, type GuideStep };
@@ -0,0 +1,2 @@
1
+ import { n as _default, t as GuideStep } from "./index9.vue.js";
2
+ export { _default as C_Guide, type GuideStep };
@@ -0,0 +1,3 @@
1
+ import { t as C_Guide_default } from "./C_Guide2.js";
2
+
3
+ export { C_Guide_default as C_Guide };
@@ -0,0 +1,58 @@
1
+ import { createBlock, createElementVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
2
+ import { NButton, NTooltip } from "naive-ui";
3
+ import { driver } from "driver.js";
4
+ import "driver.js/dist/driver.css";
5
+
6
+ //#region src/components/C_Guide/index.vue?vue&type=script&setup=true&lang.ts
7
+ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ name: "C_Guide",
9
+ __name: "index",
10
+ props: {
11
+ steps: { default: () => [] },
12
+ doneBtnText: { default: "完成" },
13
+ nextBtnText: { default: "下一步" },
14
+ prevBtnText: { default: "上一步" }
15
+ },
16
+ setup(__props, { expose: __expose }) {
17
+ const props = __props;
18
+ const startGuide = () => {
19
+ const driverObj = driver({
20
+ popoverClass: "driverjs-theme",
21
+ animate: true,
22
+ showProgress: true,
23
+ doneBtnText: props.doneBtnText,
24
+ nextBtnText: props.nextBtnText,
25
+ prevBtnText: props.prevBtnText
26
+ });
27
+ if (props.steps.length > 0) driverObj.setSteps(props.steps);
28
+ driverObj.drive();
29
+ };
30
+ __expose({ startGuide });
31
+ return (_ctx, _cache) => {
32
+ return openBlock(), createBlock(unref(NTooltip), {
33
+ placement: "bottom",
34
+ trigger: "hover"
35
+ }, {
36
+ trigger: withCtx(() => [createVNode(unref(NButton), {
37
+ text: "",
38
+ onClick: startGuide
39
+ }, {
40
+ default: withCtx(() => _cache[0] || (_cache[0] = [createElementVNode("div", { class: "i-mdi:sign-routes" }, null, -1)])),
41
+ _: 1,
42
+ __: [0]
43
+ })]),
44
+ default: withCtx(() => [_cache[1] || (_cache[1] = createElementVNode("span", null, "功能引导", -1))]),
45
+ _: 1,
46
+ __: [1]
47
+ });
48
+ };
49
+ }
50
+ });
51
+
52
+ //#endregion
53
+ //#region src/components/C_Guide/index.vue
54
+ var C_Guide_default = index_vue_vue_type_script_setup_true_lang_default;
55
+
56
+ //#endregion
57
+ export { C_Guide_default as t };
58
+ //# sourceMappingURL=C_Guide2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Guide2.js","names":[],"sources":["../src/components/C_Guide/index.vue","../src/components/C_Guide/index.vue","../src/components/C_Guide/index.vue"],"sourcesContent":["<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-01\r\n * @Description: 用户引导组件(基于 driver.js)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NTooltip placement=\"bottom\" trigger=\"hover\">\r\n <template #trigger>\r\n <NButton text @click=\"startGuide\">\r\n <div class=\"i-mdi:sign-routes\" />\r\n </NButton>\r\n </template>\r\n <span>功能引导</span>\r\n </NTooltip>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { NTooltip, NButton } from \"naive-ui\";\r\nimport { driver } from \"driver.js\";\r\nimport \"driver.js/dist/driver.css\";\r\n\r\ndefineOptions({ name: \"C_Guide\" });\r\n\r\nexport interface GuideStep {\r\n element: string;\r\n popover: {\r\n title: string;\r\n description: string;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\r\n };\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n steps?: GuideStep[];\r\n doneBtnText?: string;\r\n nextBtnText?: string;\r\n prevBtnText?: string;\r\n }>(),\r\n {\r\n steps: () => [],\r\n doneBtnText: \"完成\",\r\n nextBtnText: \"下一步\",\r\n prevBtnText: \"上一步\",\r\n },\r\n);\r\n\r\nconst startGuide = () => {\r\n const driverObj = driver({\r\n popoverClass: \"driverjs-theme\",\r\n animate: true,\r\n showProgress: true,\r\n doneBtnText: props.doneBtnText,\r\n nextBtnText: props.nextBtnText,\r\n prevBtnText: props.prevBtnText,\r\n });\r\n\r\n if (props.steps.length > 0) {\r\n driverObj.setSteps(props.steps);\r\n }\r\n driverObj.drive();\r\n};\r\n\r\ndefineExpose({ startGuide });\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-01\r\n * @Description: 用户引导组件(基于 driver.js)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NTooltip placement=\"bottom\" trigger=\"hover\">\r\n <template #trigger>\r\n <NButton text @click=\"startGuide\">\r\n <div class=\"i-mdi:sign-routes\" />\r\n </NButton>\r\n </template>\r\n <span>功能引导</span>\r\n </NTooltip>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { NTooltip, NButton } from \"naive-ui\";\r\nimport { driver } from \"driver.js\";\r\nimport \"driver.js/dist/driver.css\";\r\n\r\ndefineOptions({ name: \"C_Guide\" });\r\n\r\nexport interface GuideStep {\r\n element: string;\r\n popover: {\r\n title: string;\r\n description: string;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\r\n };\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n steps?: GuideStep[];\r\n doneBtnText?: string;\r\n nextBtnText?: string;\r\n prevBtnText?: string;\r\n }>(),\r\n {\r\n steps: () => [],\r\n doneBtnText: \"完成\",\r\n nextBtnText: \"下一步\",\r\n prevBtnText: \"上一步\",\r\n },\r\n);\r\n\r\nconst startGuide = () => {\r\n const driverObj = driver({\r\n popoverClass: \"driverjs-theme\",\r\n animate: true,\r\n showProgress: true,\r\n doneBtnText: props.doneBtnText,\r\n nextBtnText: props.nextBtnText,\r\n prevBtnText: props.prevBtnText,\r\n });\r\n\r\n if (props.steps.length > 0) {\r\n driverObj.setSteps(props.steps);\r\n }\r\n driverObj.drive();\r\n};\r\n\r\ndefineExpose({ startGuide });\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-06-01\r\n * @Description: 用户引导组件(基于 driver.js)\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <NTooltip placement=\"bottom\" trigger=\"hover\">\r\n <template #trigger>\r\n <NButton text @click=\"startGuide\">\r\n <div class=\"i-mdi:sign-routes\" />\r\n </NButton>\r\n </template>\r\n <span>功能引导</span>\r\n </NTooltip>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { NTooltip, NButton } from \"naive-ui\";\r\nimport { driver } from \"driver.js\";\r\nimport \"driver.js/dist/driver.css\";\r\n\r\ndefineOptions({ name: \"C_Guide\" });\r\n\r\nexport interface GuideStep {\r\n element: string;\r\n popover: {\r\n title: string;\r\n description: string;\r\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\r\n };\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n steps?: GuideStep[];\r\n doneBtnText?: string;\r\n nextBtnText?: string;\r\n prevBtnText?: string;\r\n }>(),\r\n {\r\n steps: () => [],\r\n doneBtnText: \"完成\",\r\n nextBtnText: \"下一步\",\r\n prevBtnText: \"上一步\",\r\n },\r\n);\r\n\r\nconst startGuide = () => {\r\n const driverObj = driver({\r\n popoverClass: \"driverjs-theme\",\r\n animate: true,\r\n showProgress: true,\r\n doneBtnText: props.doneBtnText,\r\n nextBtnText: props.nextBtnText,\r\n prevBtnText: props.prevBtnText,\r\n });\r\n\r\n if (props.steps.length > 0) {\r\n driverObj.setSteps(props.steps);\r\n }\r\n driverObj.drive();\r\n};\r\n\r\ndefineExpose({ startGuide });\r\n</script>\r\n"],"mappings":";;;;;;;;;;;;;;;;ECkCA,MAAM,QAAQ;EAed,MAAM,mBAAmB;GACvB,MAAM,YAAY,OAAO;IACvB,cAAc;IACd,SAAS;IACT,cAAc;IACd,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,aAAa,MAAM;IACpB,CAAC;AAEF,OAAI,MAAM,MAAM,SAAS,EACvB,WAAU,SAAS,MAAM,MAAM;AAEjC,aAAU,OAAO;;AAGnB,WAAa,EAAE,YAAY,CAAC;;uBAzD1B,YAOW,MAAA,SAAA,EAAA;IAPD,WAAU;IAAS,SAAQ;;IACxB,SAAO,cAGN,CAFV,YAEU,MAAA,QAAA,EAAA;KAFD,MAAA;KAAM,SAAO;;4BACa,OAAA,OAAA,OAAA,KAAA,CAAjC,mBAAiC,OAAA,EAA5B,OAAM,qBAAmB,EAAA,MAAA,GAAA;;;;2BAGjB,2BAAjB,mBAAiB,QAAA,MAAX,QAAI,GAAA"}
@@ -0,0 +1,4 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_C_Icon = require('./C_Icon.js');
3
+
4
+ exports.C_Icon = require_C_Icon.C_Icon_default;
@@ -0,0 +1,2 @@
1
+ import { n as _default, t as IconProps } from "./index10.vue.js";
2
+ export { _default as C_Icon, type IconProps };
@@ -0,0 +1,2 @@
1
+ import { n as _default, t as IconProps } from "./index10.vue.js";
2
+ export { _default as C_Icon, type IconProps };
package/dist/C_Icon.js ADDED
@@ -0,0 +1,3 @@
1
+ import { t as C_Icon_default } from "./C_Icon2.js";
2
+
3
+ export { C_Icon_default as C_Icon };