@xleddyl/nuxt-cms 0.4.4 → 0.5.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 (471) hide show
  1. package/README.md +1 -1
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +22 -7
  4. package/dist/runtime/app/components/cms/BlockOutline.vue +56 -67
  5. package/dist/runtime/app/components/cms/BlockPalette.vue +3 -1
  6. package/dist/runtime/app/components/cms/BlocksField.vue +155 -149
  7. package/dist/runtime/app/components/cms/BrandMark.d.vue.ts +3 -1
  8. package/dist/runtime/app/components/cms/BrandMark.vue +24 -25
  9. package/dist/runtime/app/components/cms/BrandMark.vue.d.ts +3 -1
  10. package/dist/runtime/app/components/cms/{Checkbox.d.vue.ts → ConfirmGroups.d.vue.ts} +4 -4
  11. package/dist/runtime/app/components/cms/ConfirmGroups.vue +22 -0
  12. package/dist/runtime/app/components/cms/{Checkbox.vue.d.ts → ConfirmGroups.vue.d.ts} +4 -4
  13. package/dist/runtime/app/components/cms/EntryDrawer.d.vue.ts +2 -2
  14. package/dist/runtime/app/components/cms/EntryDrawer.vue +62 -47
  15. package/dist/runtime/app/components/cms/EntryDrawer.vue.d.ts +2 -2
  16. package/dist/runtime/app/components/cms/EntryForm.vue +100 -95
  17. package/dist/runtime/app/components/cms/FieldInput.vue +56 -32
  18. package/dist/runtime/app/components/cms/ImportModal.d.vue.ts +2 -2
  19. package/dist/runtime/app/components/cms/ImportModal.vue +80 -79
  20. package/dist/runtime/app/components/cms/ImportModal.vue.d.ts +2 -2
  21. package/dist/runtime/app/components/cms/JsonField.vue +17 -8
  22. package/dist/runtime/app/components/cms/ListFilters.vue +54 -63
  23. package/dist/runtime/app/components/cms/LocaleSwitch.vue +21 -18
  24. package/dist/runtime/app/components/cms/MediaDetail.vue +110 -72
  25. package/dist/runtime/app/components/cms/MediaField.vue +37 -29
  26. package/dist/runtime/app/components/cms/MediaFolderPicker.d.vue.ts +1 -0
  27. package/dist/runtime/app/components/cms/MediaFolderPicker.vue +77 -49
  28. package/dist/runtime/app/components/cms/MediaFolderPicker.vue.d.ts +1 -0
  29. package/dist/runtime/app/components/cms/MediaGallery.vue +300 -323
  30. package/dist/runtime/app/components/cms/MediaThumb.vue +7 -2
  31. package/dist/runtime/app/components/cms/MediaUpload.vue +37 -70
  32. package/dist/runtime/app/components/cms/RelationField.vue +23 -71
  33. package/dist/runtime/app/components/cms/RichTextField.vue +23 -177
  34. package/dist/runtime/app/components/cms/SettingsAccount.vue +96 -104
  35. package/dist/runtime/app/components/cms/SettingsColumns.vue +7 -6
  36. package/dist/runtime/app/components/cms/SettingsEntry.d.vue.ts +10 -1
  37. package/dist/runtime/app/components/cms/SettingsEntry.vue +35 -52
  38. package/dist/runtime/app/components/cms/SettingsEntry.vue.d.ts +10 -1
  39. package/dist/runtime/app/components/cms/SettingsLayout.vue +7 -4
  40. package/dist/runtime/app/components/cms/SettingsModal.d.vue.ts +0 -4
  41. package/dist/runtime/app/components/cms/SettingsModal.vue +102 -151
  42. package/dist/runtime/app/components/cms/SettingsModal.vue.d.ts +0 -4
  43. package/dist/runtime/app/components/cms/SettingsUsers.d.vue.ts +8 -1
  44. package/dist/runtime/app/components/cms/SettingsUsers.vue +182 -189
  45. package/dist/runtime/app/components/cms/SettingsUsers.vue.d.ts +8 -1
  46. package/dist/runtime/app/components/cms/SlugField.vue +9 -6
  47. package/dist/runtime/app/components/cms/StatusBadge.vue +7 -6
  48. package/dist/runtime/app/components/cms/TranslatableField.vue +11 -6
  49. package/dist/runtime/app/components/cms/VisualEditor.vue +243 -282
  50. package/dist/runtime/app/components/cms/WelcomeModal.vue +49 -41
  51. package/dist/runtime/app/composables/cms-confirm.d.ts +0 -6
  52. package/dist/runtime/app/composables/cms-confirm.js +13 -13
  53. package/dist/runtime/app/composables/cms-media-uploader.d.ts +4 -0
  54. package/dist/runtime/app/composables/cms-media-uploader.js +12 -40
  55. package/dist/runtime/app/composables/cms-theme.d.ts +3 -9
  56. package/dist/runtime/app/composables/cms-theme.js +1 -19
  57. package/dist/runtime/app/composables/cms-toast.d.ts +3 -4
  58. package/dist/runtime/app/composables/cms-toast.js +6 -13
  59. package/dist/runtime/app/layouts/cms-admin.d.vue.ts +2 -2
  60. package/dist/runtime/app/layouts/cms-admin.vue +184 -113
  61. package/dist/runtime/app/layouts/cms-admin.vue.d.ts +2 -2
  62. package/dist/runtime/app/layouts/cms-editor.d.vue.ts +2 -2
  63. package/dist/runtime/app/layouts/cms-editor.vue +9 -4
  64. package/dist/runtime/app/layouts/cms-editor.vue.d.ts +2 -2
  65. package/dist/runtime/app/pages/admin-collection.vue +178 -143
  66. package/dist/runtime/app/pages/admin-content.vue +35 -30
  67. package/dist/runtime/app/pages/admin-entry.vue +14 -9
  68. package/dist/runtime/app/pages/admin-login.vue +57 -54
  69. package/dist/runtime/app/pages/admin-media.vue +6 -4
  70. package/dist/runtime/app/pages/admin-preview.vue +3 -2
  71. package/dist/runtime/app/preview/PreviewOverlay.vue +9 -7
  72. package/dist/runtime/app/utils/ui.d.ts +1 -3
  73. package/dist/runtime/app/utils/ui.js +4 -2
  74. package/dist/runtime/assets/editor.css +1 -0
  75. package/dist/runtime/assets/main.css +1 -1
  76. package/dist/runtime/assets/media.css +1 -0
  77. package/dist/runtime/assets/shell.css +1 -0
  78. package/package.json +9 -8
  79. package/dist/runtime/app/components/cms/Alert.d.vue.ts +0 -17
  80. package/dist/runtime/app/components/cms/Alert.vue +0 -13
  81. package/dist/runtime/app/components/cms/Alert.vue.d.ts +0 -17
  82. package/dist/runtime/app/components/cms/Button.d.vue.ts +0 -26
  83. package/dist/runtime/app/components/cms/Button.vue +0 -48
  84. package/dist/runtime/app/components/cms/Button.vue.d.ts +0 -26
  85. package/dist/runtime/app/components/cms/Checkbox.vue +0 -21
  86. package/dist/runtime/app/components/cms/ConfirmModal.d.vue.ts +0 -3
  87. package/dist/runtime/app/components/cms/ConfirmModal.vue +0 -46
  88. package/dist/runtime/app/components/cms/ConfirmModal.vue.d.ts +0 -3
  89. package/dist/runtime/app/components/cms/Drawer.d.vue.ts +0 -30
  90. package/dist/runtime/app/components/cms/Drawer.vue +0 -61
  91. package/dist/runtime/app/components/cms/Drawer.vue.d.ts +0 -30
  92. package/dist/runtime/app/components/cms/DropdownMenu.d.vue.ts +0 -26
  93. package/dist/runtime/app/components/cms/DropdownMenu.vue +0 -48
  94. package/dist/runtime/app/components/cms/DropdownMenu.vue.d.ts +0 -26
  95. package/dist/runtime/app/components/cms/EmptyState.d.vue.ts +0 -19
  96. package/dist/runtime/app/components/cms/EmptyState.vue +0 -21
  97. package/dist/runtime/app/components/cms/EmptyState.vue.d.ts +0 -19
  98. package/dist/runtime/app/components/cms/Form.d.vue.ts +0 -37
  99. package/dist/runtime/app/components/cms/Form.vue +0 -63
  100. package/dist/runtime/app/components/cms/Form.vue.d.ts +0 -37
  101. package/dist/runtime/app/components/cms/FormField.d.vue.ts +0 -22
  102. package/dist/runtime/app/components/cms/FormField.vue +0 -35
  103. package/dist/runtime/app/components/cms/FormField.vue.d.ts +0 -22
  104. package/dist/runtime/app/components/cms/Icon.d.vue.ts +0 -6
  105. package/dist/runtime/app/components/cms/Icon.vue +0 -23
  106. package/dist/runtime/app/components/cms/Icon.vue.d.ts +0 -6
  107. package/dist/runtime/app/components/cms/Input.d.vue.ts +0 -27
  108. package/dist/runtime/app/components/cms/Input.vue +0 -46
  109. package/dist/runtime/app/components/cms/Input.vue.d.ts +0 -27
  110. package/dist/runtime/app/components/cms/Modal.d.vue.ts +0 -31
  111. package/dist/runtime/app/components/cms/Modal.vue +0 -49
  112. package/dist/runtime/app/components/cms/Modal.vue.d.ts +0 -31
  113. package/dist/runtime/app/components/cms/PageHeader.d.vue.ts +0 -25
  114. package/dist/runtime/app/components/cms/PageHeader.vue +0 -36
  115. package/dist/runtime/app/components/cms/PageHeader.vue.d.ts +0 -25
  116. package/dist/runtime/app/components/cms/Pagination.d.vue.ts +0 -15
  117. package/dist/runtime/app/components/cms/Pagination.vue +0 -51
  118. package/dist/runtime/app/components/cms/Pagination.vue.d.ts +0 -15
  119. package/dist/runtime/app/components/cms/PasswordInput.d.vue.ts +0 -17
  120. package/dist/runtime/app/components/cms/PasswordInput.vue +0 -81
  121. package/dist/runtime/app/components/cms/PasswordInput.vue.d.ts +0 -17
  122. package/dist/runtime/app/components/cms/Popover.d.vue.ts +0 -22
  123. package/dist/runtime/app/components/cms/Popover.vue +0 -27
  124. package/dist/runtime/app/components/cms/Popover.vue.d.ts +0 -22
  125. package/dist/runtime/app/components/cms/Search.d.vue.ts +0 -7
  126. package/dist/runtime/app/components/cms/Search.vue +0 -347
  127. package/dist/runtime/app/components/cms/Search.vue.d.ts +0 -7
  128. package/dist/runtime/app/components/cms/SelectMenu.d.vue.ts +0 -25
  129. package/dist/runtime/app/components/cms/SelectMenu.vue +0 -152
  130. package/dist/runtime/app/components/cms/SelectMenu.vue.d.ts +0 -25
  131. package/dist/runtime/app/components/cms/Spinner.d.vue.ts +0 -3
  132. package/dist/runtime/app/components/cms/Spinner.vue +0 -5
  133. package/dist/runtime/app/components/cms/Spinner.vue.d.ts +0 -3
  134. package/dist/runtime/app/components/cms/Switch.d.vue.ts +0 -10
  135. package/dist/runtime/app/components/cms/Switch.vue +0 -14
  136. package/dist/runtime/app/components/cms/Switch.vue.d.ts +0 -10
  137. package/dist/runtime/app/components/cms/Table.d.vue.ts +0 -51
  138. package/dist/runtime/app/components/cms/Table.vue +0 -115
  139. package/dist/runtime/app/components/cms/Table.vue.d.ts +0 -51
  140. package/dist/runtime/app/components/cms/Textarea.d.vue.ts +0 -15
  141. package/dist/runtime/app/components/cms/Textarea.vue +0 -16
  142. package/dist/runtime/app/components/cms/Textarea.vue.d.ts +0 -15
  143. package/dist/runtime/app/components/cms/Toaster.d.vue.ts +0 -3
  144. package/dist/runtime/app/components/cms/Toaster.vue +0 -48
  145. package/dist/runtime/app/components/cms/Toaster.vue.d.ts +0 -3
  146. package/dist/runtime/app/composables/cms-overlay.d.ts +0 -4
  147. package/dist/runtime/app/composables/cms-overlay.js +0 -23
  148. package/dist/runtime/assets/svg/academic-cap.svg +0 -3
  149. package/dist/runtime/assets/svg/adjustments-horizontal.svg +0 -3
  150. package/dist/runtime/assets/svg/adjustments-vertical.svg +0 -3
  151. package/dist/runtime/assets/svg/archive-box-arrow-down.svg +0 -3
  152. package/dist/runtime/assets/svg/archive-box-x-mark.svg +0 -3
  153. package/dist/runtime/assets/svg/archive-box.svg +0 -3
  154. package/dist/runtime/assets/svg/arrow-down-circle.svg +0 -3
  155. package/dist/runtime/assets/svg/arrow-down-left.svg +0 -3
  156. package/dist/runtime/assets/svg/arrow-down-on-square-stack.svg +0 -3
  157. package/dist/runtime/assets/svg/arrow-down-on-square.svg +0 -3
  158. package/dist/runtime/assets/svg/arrow-down-right.svg +0 -3
  159. package/dist/runtime/assets/svg/arrow-down-tray.svg +0 -3
  160. package/dist/runtime/assets/svg/arrow-down.svg +0 -3
  161. package/dist/runtime/assets/svg/arrow-left-circle.svg +0 -3
  162. package/dist/runtime/assets/svg/arrow-left-end-on-rectangle.svg +0 -3
  163. package/dist/runtime/assets/svg/arrow-left-on-rectangle.svg +0 -3
  164. package/dist/runtime/assets/svg/arrow-left-start-on-rectangle.svg +0 -3
  165. package/dist/runtime/assets/svg/arrow-left.svg +0 -3
  166. package/dist/runtime/assets/svg/arrow-long-down.svg +0 -3
  167. package/dist/runtime/assets/svg/arrow-long-left.svg +0 -3
  168. package/dist/runtime/assets/svg/arrow-long-right.svg +0 -3
  169. package/dist/runtime/assets/svg/arrow-long-up.svg +0 -3
  170. package/dist/runtime/assets/svg/arrow-path-rounded-square.svg +0 -3
  171. package/dist/runtime/assets/svg/arrow-path.svg +0 -3
  172. package/dist/runtime/assets/svg/arrow-right-circle.svg +0 -3
  173. package/dist/runtime/assets/svg/arrow-right-end-on-rectangle.svg +0 -3
  174. package/dist/runtime/assets/svg/arrow-right-on-rectangle.svg +0 -3
  175. package/dist/runtime/assets/svg/arrow-right-start-on-rectangle.svg +0 -3
  176. package/dist/runtime/assets/svg/arrow-right.svg +0 -3
  177. package/dist/runtime/assets/svg/arrow-small-down.svg +0 -3
  178. package/dist/runtime/assets/svg/arrow-small-left.svg +0 -3
  179. package/dist/runtime/assets/svg/arrow-small-right.svg +0 -3
  180. package/dist/runtime/assets/svg/arrow-small-up.svg +0 -3
  181. package/dist/runtime/assets/svg/arrow-top-right-on-square.svg +0 -3
  182. package/dist/runtime/assets/svg/arrow-trending-down.svg +0 -3
  183. package/dist/runtime/assets/svg/arrow-trending-up.svg +0 -3
  184. package/dist/runtime/assets/svg/arrow-turn-down-left.svg +0 -3
  185. package/dist/runtime/assets/svg/arrow-turn-down-right.svg +0 -3
  186. package/dist/runtime/assets/svg/arrow-turn-left-down.svg +0 -3
  187. package/dist/runtime/assets/svg/arrow-turn-left-up.svg +0 -3
  188. package/dist/runtime/assets/svg/arrow-turn-right-down.svg +0 -3
  189. package/dist/runtime/assets/svg/arrow-turn-right-up.svg +0 -3
  190. package/dist/runtime/assets/svg/arrow-turn-up-left.svg +0 -3
  191. package/dist/runtime/assets/svg/arrow-turn-up-right.svg +0 -3
  192. package/dist/runtime/assets/svg/arrow-up-circle.svg +0 -3
  193. package/dist/runtime/assets/svg/arrow-up-left.svg +0 -3
  194. package/dist/runtime/assets/svg/arrow-up-on-square-stack.svg +0 -3
  195. package/dist/runtime/assets/svg/arrow-up-on-square.svg +0 -3
  196. package/dist/runtime/assets/svg/arrow-up-right.svg +0 -3
  197. package/dist/runtime/assets/svg/arrow-up-tray.svg +0 -3
  198. package/dist/runtime/assets/svg/arrow-up.svg +0 -3
  199. package/dist/runtime/assets/svg/arrow-uturn-down.svg +0 -3
  200. package/dist/runtime/assets/svg/arrow-uturn-left.svg +0 -3
  201. package/dist/runtime/assets/svg/arrow-uturn-right.svg +0 -3
  202. package/dist/runtime/assets/svg/arrow-uturn-up.svg +0 -3
  203. package/dist/runtime/assets/svg/arrows-pointing-in.svg +0 -3
  204. package/dist/runtime/assets/svg/arrows-pointing-out.svg +0 -3
  205. package/dist/runtime/assets/svg/arrows-right-left.svg +0 -3
  206. package/dist/runtime/assets/svg/arrows-up-down.svg +0 -3
  207. package/dist/runtime/assets/svg/at-symbol.svg +0 -3
  208. package/dist/runtime/assets/svg/backspace.svg +0 -3
  209. package/dist/runtime/assets/svg/backward.svg +0 -3
  210. package/dist/runtime/assets/svg/banknotes.svg +0 -3
  211. package/dist/runtime/assets/svg/bars-2.svg +0 -3
  212. package/dist/runtime/assets/svg/bars-3-bottom-left.svg +0 -3
  213. package/dist/runtime/assets/svg/bars-3-bottom-right.svg +0 -3
  214. package/dist/runtime/assets/svg/bars-3-center-left.svg +0 -3
  215. package/dist/runtime/assets/svg/bars-3.svg +0 -3
  216. package/dist/runtime/assets/svg/bars-4.svg +0 -3
  217. package/dist/runtime/assets/svg/bars-arrow-down.svg +0 -3
  218. package/dist/runtime/assets/svg/bars-arrow-up.svg +0 -3
  219. package/dist/runtime/assets/svg/battery-0.svg +0 -3
  220. package/dist/runtime/assets/svg/battery-100.svg +0 -3
  221. package/dist/runtime/assets/svg/battery-50.svg +0 -3
  222. package/dist/runtime/assets/svg/beaker.svg +0 -3
  223. package/dist/runtime/assets/svg/bell-alert.svg +0 -3
  224. package/dist/runtime/assets/svg/bell-slash.svg +0 -3
  225. package/dist/runtime/assets/svg/bell-snooze.svg +0 -3
  226. package/dist/runtime/assets/svg/bell.svg +0 -3
  227. package/dist/runtime/assets/svg/bold.svg +0 -3
  228. package/dist/runtime/assets/svg/bolt-slash.svg +0 -3
  229. package/dist/runtime/assets/svg/bolt.svg +0 -3
  230. package/dist/runtime/assets/svg/book-open.svg +0 -3
  231. package/dist/runtime/assets/svg/bookmark-slash.svg +0 -3
  232. package/dist/runtime/assets/svg/bookmark-square.svg +0 -3
  233. package/dist/runtime/assets/svg/bookmark.svg +0 -3
  234. package/dist/runtime/assets/svg/briefcase.svg +0 -3
  235. package/dist/runtime/assets/svg/bug-ant.svg +0 -3
  236. package/dist/runtime/assets/svg/building-library.svg +0 -3
  237. package/dist/runtime/assets/svg/building-office-2.svg +0 -3
  238. package/dist/runtime/assets/svg/building-office.svg +0 -3
  239. package/dist/runtime/assets/svg/building-storefront.svg +0 -3
  240. package/dist/runtime/assets/svg/cake.svg +0 -3
  241. package/dist/runtime/assets/svg/calculator.svg +0 -3
  242. package/dist/runtime/assets/svg/calendar-date-range.svg +0 -3
  243. package/dist/runtime/assets/svg/calendar-days.svg +0 -3
  244. package/dist/runtime/assets/svg/calendar.svg +0 -3
  245. package/dist/runtime/assets/svg/camera.svg +0 -4
  246. package/dist/runtime/assets/svg/chart-bar-square.svg +0 -3
  247. package/dist/runtime/assets/svg/chart-bar.svg +0 -3
  248. package/dist/runtime/assets/svg/chart-pie.svg +0 -4
  249. package/dist/runtime/assets/svg/chat-bubble-bottom-center-text.svg +0 -3
  250. package/dist/runtime/assets/svg/chat-bubble-bottom-center.svg +0 -3
  251. package/dist/runtime/assets/svg/chat-bubble-left-ellipsis.svg +0 -3
  252. package/dist/runtime/assets/svg/chat-bubble-left-right.svg +0 -3
  253. package/dist/runtime/assets/svg/chat-bubble-left.svg +0 -3
  254. package/dist/runtime/assets/svg/chat-bubble-oval-left-ellipsis.svg +0 -3
  255. package/dist/runtime/assets/svg/chat-bubble-oval-left.svg +0 -3
  256. package/dist/runtime/assets/svg/check-badge.svg +0 -3
  257. package/dist/runtime/assets/svg/check-circle.svg +0 -3
  258. package/dist/runtime/assets/svg/check.svg +0 -3
  259. package/dist/runtime/assets/svg/chevron-double-down.svg +0 -3
  260. package/dist/runtime/assets/svg/chevron-double-left.svg +0 -3
  261. package/dist/runtime/assets/svg/chevron-double-right.svg +0 -3
  262. package/dist/runtime/assets/svg/chevron-double-up.svg +0 -4
  263. package/dist/runtime/assets/svg/chevron-down.svg +0 -3
  264. package/dist/runtime/assets/svg/chevron-left.svg +0 -3
  265. package/dist/runtime/assets/svg/chevron-right.svg +0 -3
  266. package/dist/runtime/assets/svg/chevron-up-down.svg +0 -3
  267. package/dist/runtime/assets/svg/chevron-up.svg +0 -3
  268. package/dist/runtime/assets/svg/circle-stack.svg +0 -3
  269. package/dist/runtime/assets/svg/clipboard-document-check.svg +0 -3
  270. package/dist/runtime/assets/svg/clipboard-document-list.svg +0 -3
  271. package/dist/runtime/assets/svg/clipboard-document.svg +0 -3
  272. package/dist/runtime/assets/svg/clipboard.svg +0 -3
  273. package/dist/runtime/assets/svg/clock.svg +0 -3
  274. package/dist/runtime/assets/svg/cloud-arrow-down.svg +0 -3
  275. package/dist/runtime/assets/svg/cloud-arrow-up.svg +0 -3
  276. package/dist/runtime/assets/svg/cloud.svg +0 -3
  277. package/dist/runtime/assets/svg/code-bracket-square.svg +0 -3
  278. package/dist/runtime/assets/svg/code-bracket.svg +0 -3
  279. package/dist/runtime/assets/svg/cog-6-tooth.svg +0 -4
  280. package/dist/runtime/assets/svg/cog-8-tooth.svg +0 -4
  281. package/dist/runtime/assets/svg/cog.svg +0 -3
  282. package/dist/runtime/assets/svg/command-line.svg +0 -3
  283. package/dist/runtime/assets/svg/computer-desktop.svg +0 -3
  284. package/dist/runtime/assets/svg/cpu-chip.svg +0 -3
  285. package/dist/runtime/assets/svg/credit-card.svg +0 -3
  286. package/dist/runtime/assets/svg/cube-transparent.svg +0 -3
  287. package/dist/runtime/assets/svg/cube.svg +0 -3
  288. package/dist/runtime/assets/svg/currency-bangladeshi.svg +0 -3
  289. package/dist/runtime/assets/svg/currency-dollar.svg +0 -3
  290. package/dist/runtime/assets/svg/currency-euro.svg +0 -3
  291. package/dist/runtime/assets/svg/currency-pound.svg +0 -3
  292. package/dist/runtime/assets/svg/currency-rupee.svg +0 -3
  293. package/dist/runtime/assets/svg/currency-yen.svg +0 -3
  294. package/dist/runtime/assets/svg/cursor-arrow-rays.svg +0 -3
  295. package/dist/runtime/assets/svg/cursor-arrow-ripple.svg +0 -3
  296. package/dist/runtime/assets/svg/device-phone-mobile.svg +0 -3
  297. package/dist/runtime/assets/svg/device-tablet.svg +0 -3
  298. package/dist/runtime/assets/svg/divide.svg +0 -3
  299. package/dist/runtime/assets/svg/document-arrow-down.svg +0 -3
  300. package/dist/runtime/assets/svg/document-arrow-up.svg +0 -3
  301. package/dist/runtime/assets/svg/document-chart-bar.svg +0 -3
  302. package/dist/runtime/assets/svg/document-check.svg +0 -3
  303. package/dist/runtime/assets/svg/document-currency-bangladeshi.svg +0 -3
  304. package/dist/runtime/assets/svg/document-currency-dollar.svg +0 -3
  305. package/dist/runtime/assets/svg/document-currency-euro.svg +0 -3
  306. package/dist/runtime/assets/svg/document-currency-pound.svg +0 -3
  307. package/dist/runtime/assets/svg/document-currency-rupee.svg +0 -3
  308. package/dist/runtime/assets/svg/document-currency-yen.svg +0 -3
  309. package/dist/runtime/assets/svg/document-duplicate.svg +0 -3
  310. package/dist/runtime/assets/svg/document-magnifying-glass.svg +0 -3
  311. package/dist/runtime/assets/svg/document-minus.svg +0 -3
  312. package/dist/runtime/assets/svg/document-plus.svg +0 -3
  313. package/dist/runtime/assets/svg/document-text.svg +0 -3
  314. package/dist/runtime/assets/svg/document.svg +0 -3
  315. package/dist/runtime/assets/svg/ellipsis-horizontal-circle.svg +0 -3
  316. package/dist/runtime/assets/svg/ellipsis-horizontal.svg +0 -3
  317. package/dist/runtime/assets/svg/ellipsis-vertical.svg +0 -3
  318. package/dist/runtime/assets/svg/envelope-open.svg +0 -3
  319. package/dist/runtime/assets/svg/envelope.svg +0 -3
  320. package/dist/runtime/assets/svg/equals.svg +0 -3
  321. package/dist/runtime/assets/svg/exclamation-circle.svg +0 -3
  322. package/dist/runtime/assets/svg/exclamation-triangle.svg +0 -3
  323. package/dist/runtime/assets/svg/eye-dropper.svg +0 -3
  324. package/dist/runtime/assets/svg/eye-slash.svg +0 -3
  325. package/dist/runtime/assets/svg/eye.svg +0 -4
  326. package/dist/runtime/assets/svg/face-frown.svg +0 -3
  327. package/dist/runtime/assets/svg/face-smile.svg +0 -3
  328. package/dist/runtime/assets/svg/film.svg +0 -3
  329. package/dist/runtime/assets/svg/finger-print.svg +0 -3
  330. package/dist/runtime/assets/svg/fire.svg +0 -4
  331. package/dist/runtime/assets/svg/flag.svg +0 -3
  332. package/dist/runtime/assets/svg/folder-arrow-down.svg +0 -3
  333. package/dist/runtime/assets/svg/folder-minus.svg +0 -3
  334. package/dist/runtime/assets/svg/folder-open.svg +0 -3
  335. package/dist/runtime/assets/svg/folder-plus.svg +0 -3
  336. package/dist/runtime/assets/svg/folder.svg +0 -3
  337. package/dist/runtime/assets/svg/forward.svg +0 -3
  338. package/dist/runtime/assets/svg/funnel.svg +0 -3
  339. package/dist/runtime/assets/svg/gif.svg +0 -3
  340. package/dist/runtime/assets/svg/gift-top.svg +0 -3
  341. package/dist/runtime/assets/svg/gift.svg +0 -3
  342. package/dist/runtime/assets/svg/globe-alt.svg +0 -3
  343. package/dist/runtime/assets/svg/globe-americas.svg +0 -3
  344. package/dist/runtime/assets/svg/globe-asia-australia.svg +0 -3
  345. package/dist/runtime/assets/svg/globe-europe-africa.svg +0 -3
  346. package/dist/runtime/assets/svg/h1.svg +0 -3
  347. package/dist/runtime/assets/svg/h2.svg +0 -3
  348. package/dist/runtime/assets/svg/h3.svg +0 -3
  349. package/dist/runtime/assets/svg/hand-raised.svg +0 -3
  350. package/dist/runtime/assets/svg/hand-thumb-down.svg +0 -3
  351. package/dist/runtime/assets/svg/hand-thumb-up.svg +0 -3
  352. package/dist/runtime/assets/svg/hashtag.svg +0 -3
  353. package/dist/runtime/assets/svg/heart.svg +0 -3
  354. package/dist/runtime/assets/svg/home-modern.svg +0 -3
  355. package/dist/runtime/assets/svg/home.svg +0 -3
  356. package/dist/runtime/assets/svg/identification.svg +0 -3
  357. package/dist/runtime/assets/svg/inbox-arrow-down.svg +0 -3
  358. package/dist/runtime/assets/svg/inbox-stack.svg +0 -3
  359. package/dist/runtime/assets/svg/inbox.svg +0 -3
  360. package/dist/runtime/assets/svg/information-circle.svg +0 -3
  361. package/dist/runtime/assets/svg/italic.svg +0 -3
  362. package/dist/runtime/assets/svg/key.svg +0 -3
  363. package/dist/runtime/assets/svg/language.svg +0 -3
  364. package/dist/runtime/assets/svg/lifebuoy.svg +0 -3
  365. package/dist/runtime/assets/svg/light-bulb.svg +0 -3
  366. package/dist/runtime/assets/svg/link-slash.svg +0 -3
  367. package/dist/runtime/assets/svg/link.svg +0 -3
  368. package/dist/runtime/assets/svg/list-bullet.svg +0 -3
  369. package/dist/runtime/assets/svg/lock-closed.svg +0 -3
  370. package/dist/runtime/assets/svg/lock-open.svg +0 -3
  371. package/dist/runtime/assets/svg/magnifying-glass-circle.svg +0 -3
  372. package/dist/runtime/assets/svg/magnifying-glass-minus.svg +0 -3
  373. package/dist/runtime/assets/svg/magnifying-glass-plus.svg +0 -3
  374. package/dist/runtime/assets/svg/magnifying-glass.svg +0 -3
  375. package/dist/runtime/assets/svg/map-pin.svg +0 -4
  376. package/dist/runtime/assets/svg/map.svg +0 -3
  377. package/dist/runtime/assets/svg/megaphone.svg +0 -3
  378. package/dist/runtime/assets/svg/microphone.svg +0 -3
  379. package/dist/runtime/assets/svg/minus-circle.svg +0 -3
  380. package/dist/runtime/assets/svg/minus-small.svg +0 -3
  381. package/dist/runtime/assets/svg/minus.svg +0 -3
  382. package/dist/runtime/assets/svg/moon.svg +0 -3
  383. package/dist/runtime/assets/svg/musical-note.svg +0 -3
  384. package/dist/runtime/assets/svg/newspaper.svg +0 -3
  385. package/dist/runtime/assets/svg/no-symbol.svg +0 -3
  386. package/dist/runtime/assets/svg/numbered-list.svg +0 -3
  387. package/dist/runtime/assets/svg/paint-brush.svg +0 -3
  388. package/dist/runtime/assets/svg/paper-airplane.svg +0 -3
  389. package/dist/runtime/assets/svg/paper-clip.svg +0 -3
  390. package/dist/runtime/assets/svg/pause-circle.svg +0 -3
  391. package/dist/runtime/assets/svg/pause.svg +0 -3
  392. package/dist/runtime/assets/svg/pencil-square.svg +0 -3
  393. package/dist/runtime/assets/svg/pencil.svg +0 -3
  394. package/dist/runtime/assets/svg/percent-badge.svg +0 -3
  395. package/dist/runtime/assets/svg/phone-arrow-down-left.svg +0 -3
  396. package/dist/runtime/assets/svg/phone-arrow-up-right.svg +0 -3
  397. package/dist/runtime/assets/svg/phone-x-mark.svg +0 -3
  398. package/dist/runtime/assets/svg/phone.svg +0 -3
  399. package/dist/runtime/assets/svg/photo.svg +0 -3
  400. package/dist/runtime/assets/svg/play-circle.svg +0 -4
  401. package/dist/runtime/assets/svg/play-pause.svg +0 -3
  402. package/dist/runtime/assets/svg/play.svg +0 -3
  403. package/dist/runtime/assets/svg/plus-circle.svg +0 -3
  404. package/dist/runtime/assets/svg/plus-small.svg +0 -3
  405. package/dist/runtime/assets/svg/plus.svg +0 -3
  406. package/dist/runtime/assets/svg/power.svg +0 -3
  407. package/dist/runtime/assets/svg/presentation-chart-bar.svg +0 -3
  408. package/dist/runtime/assets/svg/presentation-chart-line.svg +0 -3
  409. package/dist/runtime/assets/svg/printer.svg +0 -3
  410. package/dist/runtime/assets/svg/puzzle-piece.svg +0 -3
  411. package/dist/runtime/assets/svg/qr-code.svg +0 -4
  412. package/dist/runtime/assets/svg/question-mark-circle.svg +0 -3
  413. package/dist/runtime/assets/svg/queue-list.svg +0 -3
  414. package/dist/runtime/assets/svg/radio.svg +0 -3
  415. package/dist/runtime/assets/svg/receipt-percent.svg +0 -3
  416. package/dist/runtime/assets/svg/receipt-refund.svg +0 -3
  417. package/dist/runtime/assets/svg/rectangle-group.svg +0 -3
  418. package/dist/runtime/assets/svg/rectangle-stack.svg +0 -3
  419. package/dist/runtime/assets/svg/rocket-launch.svg +0 -3
  420. package/dist/runtime/assets/svg/rss.svg +0 -3
  421. package/dist/runtime/assets/svg/scale.svg +0 -3
  422. package/dist/runtime/assets/svg/scissors.svg +0 -3
  423. package/dist/runtime/assets/svg/server-stack.svg +0 -3
  424. package/dist/runtime/assets/svg/server.svg +0 -3
  425. package/dist/runtime/assets/svg/share.svg +0 -3
  426. package/dist/runtime/assets/svg/shield-check.svg +0 -3
  427. package/dist/runtime/assets/svg/shield-exclamation.svg +0 -3
  428. package/dist/runtime/assets/svg/shopping-bag.svg +0 -3
  429. package/dist/runtime/assets/svg/shopping-cart.svg +0 -3
  430. package/dist/runtime/assets/svg/signal-slash.svg +0 -3
  431. package/dist/runtime/assets/svg/signal.svg +0 -3
  432. package/dist/runtime/assets/svg/slash.svg +0 -3
  433. package/dist/runtime/assets/svg/sparkles.svg +0 -3
  434. package/dist/runtime/assets/svg/speaker-wave.svg +0 -3
  435. package/dist/runtime/assets/svg/speaker-x-mark.svg +0 -3
  436. package/dist/runtime/assets/svg/square-2-stack.svg +0 -3
  437. package/dist/runtime/assets/svg/square-3-stack-3d.svg +0 -3
  438. package/dist/runtime/assets/svg/squares-2x2.svg +0 -3
  439. package/dist/runtime/assets/svg/squares-plus.svg +0 -3
  440. package/dist/runtime/assets/svg/star.svg +0 -3
  441. package/dist/runtime/assets/svg/stop-circle.svg +0 -4
  442. package/dist/runtime/assets/svg/stop.svg +0 -3
  443. package/dist/runtime/assets/svg/strikethrough.svg +0 -3
  444. package/dist/runtime/assets/svg/sun.svg +0 -3
  445. package/dist/runtime/assets/svg/swatch.svg +0 -3
  446. package/dist/runtime/assets/svg/table-cells.svg +0 -3
  447. package/dist/runtime/assets/svg/tag.svg +0 -4
  448. package/dist/runtime/assets/svg/ticket.svg +0 -3
  449. package/dist/runtime/assets/svg/trash.svg +0 -3
  450. package/dist/runtime/assets/svg/trophy.svg +0 -3
  451. package/dist/runtime/assets/svg/truck.svg +0 -3
  452. package/dist/runtime/assets/svg/tv.svg +0 -3
  453. package/dist/runtime/assets/svg/underline.svg +0 -3
  454. package/dist/runtime/assets/svg/user-circle.svg +0 -3
  455. package/dist/runtime/assets/svg/user-group.svg +0 -3
  456. package/dist/runtime/assets/svg/user-minus.svg +0 -3
  457. package/dist/runtime/assets/svg/user-plus.svg +0 -3
  458. package/dist/runtime/assets/svg/user.svg +0 -3
  459. package/dist/runtime/assets/svg/users.svg +0 -3
  460. package/dist/runtime/assets/svg/variable.svg +0 -3
  461. package/dist/runtime/assets/svg/video-camera-slash.svg +0 -3
  462. package/dist/runtime/assets/svg/video-camera.svg +0 -3
  463. package/dist/runtime/assets/svg/view-columns.svg +0 -3
  464. package/dist/runtime/assets/svg/viewfinder-circle.svg +0 -3
  465. package/dist/runtime/assets/svg/wallet.svg +0 -3
  466. package/dist/runtime/assets/svg/wifi.svg +0 -3
  467. package/dist/runtime/assets/svg/window.svg +0 -3
  468. package/dist/runtime/assets/svg/wrench-screwdriver.svg +0 -3
  469. package/dist/runtime/assets/svg/wrench.svg +0 -4
  470. package/dist/runtime/assets/svg/x-circle.svg +0 -3
  471. package/dist/runtime/assets/svg/x-mark.svg +0 -3
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <span v-if="!value" class="cms-media-thumb-empty">—</span>
2
+ <span v-if="!value" class="cms-media-thumb-empty">
3
+ <KIcon :name="cmsIcon('minus')" />
4
+ <span class="k-visually-hidden">No media</span>
5
+ </span>
3
6
 
4
7
  <img
5
8
  v-else-if="kind === 'image' && url"
@@ -21,14 +24,16 @@
21
24
  />
22
25
 
23
26
  <span v-else :title="filename" class="cms-media-thumb is-fallback">
24
- <CmsIcon :name="icon" class="size-4" />
27
+ <KIcon :name="cmsIcon(icon)" />
25
28
  </span>
26
29
  </template>
27
30
 
28
31
  <script setup>
29
32
  import { computed } from "#imports";
33
+ import { Icon as KIcon } from "@xleddyl/443-components-vue";
30
34
  import { mediaFilename, mediaIconFor, mediaPublicUrl, mediaTypeForKey } from "#nuxt-cms";
31
35
  import { useCmsRuntime } from "../../composables/cms-runtime";
36
+ import { cmsIcon } from "../../utils/ui";
32
37
  const props = defineProps({
33
38
  value: { type: [String, null], required: false }
34
39
  });
@@ -1,68 +1,50 @@
1
1
  <template>
2
- <div class="flex flex-col items-center gap-2">
3
- <button
4
- type="button"
5
- class="cms-dropzone"
6
- :class="{ 'is-over': dragOver, 'is-busy': uploading }"
7
- :disabled="uploading"
8
- @click="input?.click()"
9
- @dragover.prevent="dragOver = true"
10
- @dragleave.prevent="dragOver = false"
11
- @drop.prevent.stop="onDrop"
12
- >
13
- <input
14
- ref="input"
15
- type="file"
16
- class="hidden"
17
- :accept="acceptAttr"
18
- :multiple="multiple"
19
- @change="onChange"
20
- @click.stop
21
- />
22
- <CmsIcon
23
- :name="uploading ? 'arrow-path' : 'cloud-arrow-up'"
24
- class="size-5 shrink-0"
25
- :class="{ 'animate-spin': uploading }"
26
- />
27
- <span class="text-sm font-medium">
28
- {{
29
- uploading ? `Uploading ${Math.min(done + 1, total)} of ${total}\u2026` : multiple ? "Drop files here or click to browse" : "Drop a file here or click to browse"
30
- }}
31
- </span>
32
- <span v-if="!uploading" class="cms-dropzone-hint">
33
- <CmsIcon :name="folder ? 'folder' : 'circle-stack'" class="size-3.5" />
2
+ <KFileInput
3
+ :accept="acceptAttr"
4
+ accept-mode="hint"
5
+ :multiple="multiple"
6
+ :directory="directories ? 'drop' : false"
7
+ :list="false"
8
+ :loading="uploading"
9
+ :icon="cmsIcon('cloud-arrow-up')"
10
+ size="lg"
11
+ skip-hidden
12
+ @add="onAdd"
13
+ >
14
+ <template #title>
15
+ {{
16
+ uploading ? `Uploading ${Math.min(done + 1, total)} of ${total}\u2026` : multiple ? "Drop files here or click to browse" : "Drop a file here or click to browse"
17
+ }}
18
+ </template>
19
+ <template v-if="!uploading" #hint>
20
+ <span class="cms-media-dropzone-hint">
21
+ <KIcon :name="cmsIcon(folder ? 'folder' : 'circle-stack')" />
34
22
  {{ folder ?? "Library root" }}
35
23
  </span>
36
- </button>
37
- <template v-if="directories && multiple && !uploading">
38
- <input
39
- ref="directoryInput"
40
- type="file"
41
- class="hidden"
42
- webkitdirectory
43
- multiple
44
- @change="onChange"
45
- />
46
- <CmsButton
24
+ </template>
25
+ <template v-if="directories && multiple && !uploading" #actions="{ browseDirectory }">
26
+ <KButton
47
27
  label="Upload a folder"
48
- icon="folder-arrow-down"
28
+ :icon="cmsIcon('folder-arrow-down')"
49
29
  variant="ghost"
50
- color="neutral"
30
+ tone="neutral"
51
31
  size="sm"
52
- @click="directoryInput?.click()"
32
+ @click="browseDirectory"
53
33
  />
54
34
  </template>
55
- </div>
35
+ </KFileInput>
56
36
  </template>
57
37
 
58
38
  <script setup>
59
39
  import { mediaTypeAccept } from "#nuxt-cms";
60
- import { computed, ref } from "#imports";
40
+ import { computed } from "#imports";
61
41
  import {
62
- uploadTreeFromDrop,
63
- uploadTreeFromFiles,
64
- useCmsMediaUploader
65
- } from "../../composables/cms-media-uploader";
42
+ Button as KButton,
43
+ FileInput as KFileInput,
44
+ Icon as KIcon
45
+ } from "@xleddyl/443-components-vue";
46
+ import { cmsIcon } from "../../utils/ui";
47
+ import { uploadTreeFromEntries, useCmsMediaUploader } from "../../composables/cms-media-uploader";
66
48
  const props = defineProps({
67
49
  multiple: { type: Boolean, required: false },
68
50
  mediaType: { type: null, required: false, default: "file" },
@@ -72,31 +54,16 @@ const props = defineProps({
72
54
  });
73
55
  const emit = defineEmits(["uploaded"]);
74
56
  const { upload, uploading, done, total } = useCmsMediaUploader();
75
- const input = ref(null);
76
- const directoryInput = ref(null);
77
- const dragOver = ref(false);
78
57
  const acceptAttr = computed(
79
58
  () => (props.accept?.length ? props.accept : mediaTypeAccept(props.mediaType))?.join(",")
80
59
  );
81
- async function handleTree(pending) {
82
- const tree = await pending;
60
+ async function onAdd(_files, detail) {
61
+ const tree = uploadTreeFromEntries(detail.entries, props.directories ? detail.directories : []);
83
62
  const items = await upload(tree, {
84
63
  folder: props.folder,
85
64
  accept: acceptAttr.value,
86
65
  multiple: props.multiple
87
66
  });
88
- if (items.length || props.directories && tree.directories.length) emit("uploaded", items);
89
- }
90
- function onChange(event) {
91
- const el = event.target;
92
- if (el.files?.length) void handleTree(uploadTreeFromFiles(el.files));
93
- el.value = "";
94
- }
95
- function onDrop(event) {
96
- dragOver.value = false;
97
- if (!event.dataTransfer?.files.length) return;
98
- void handleTree(
99
- props.directories ? uploadTreeFromDrop(event.dataTransfer) : uploadTreeFromFiles(event.dataTransfer.files)
100
- );
67
+ if (items.length || tree.directories.length) emit("uploaded", items);
101
68
  }
102
69
  </script>
@@ -1,28 +1,19 @@
1
1
  <template>
2
- <CmsSelectMenu
3
- v-if="multiple"
4
- v-model="many"
5
- v-model:search-term="searchTerm"
6
- multiple
7
- ignore-filter
8
- :items="options"
9
- value-key="value"
10
- :loading="loading"
11
- />
12
- <CmsSelectMenu
13
- v-else
14
- v-model="single"
15
- v-model:search-term="searchTerm"
16
- ignore-filter
17
- :items="singleItems"
18
- value-key="value"
19
- :loading="loading"
2
+ <KCombobox
3
+ v-model="model"
4
+ :multiple="multiple"
5
+ :clearable="!multiple && !required"
6
+ open-on-focus
7
+ :options="selectedOptions"
8
+ :search="search"
9
+ :debounce="300"
20
10
  />
21
11
  </template>
22
12
 
23
13
  <script setup>
24
14
  import { isTranslatableField, selectDisplayValue } from "#nuxt-cms";
25
- import { computed, onBeforeUnmount, onMounted, ref, watch } from "#imports";
15
+ import { Combobox as KCombobox } from "@xleddyl/443-components-vue";
16
+ import { computed, onMounted, ref } from "#imports";
26
17
  import cmsConfig from "#cms-config";
27
18
  import { useCmsRuntime } from "../../composables/cms-runtime";
28
19
  import { useCmsToast } from "../../composables/cms-toast";
@@ -36,40 +27,27 @@ const model = defineModel({ type: [String, Array, null], ...{ required: true } }
36
27
  const toast = useCmsToast();
37
28
  const target = cmsConfig[props.to];
38
29
  const endpoint = `/api/cms/admin/${props.to}`;
39
- const fetched = ref([]);
40
30
  const selectedRows = ref(/* @__PURE__ */ new Map());
41
- const loading = ref(true);
42
- const searchTerm = ref("");
43
- let fetchRequest = 0;
44
- async function fetchOptions() {
45
- const request = ++fetchRequest;
46
- loading.value = true;
31
+ async function search(query, signal) {
32
+ const term = query.trim();
47
33
  try {
48
- const term = searchTerm.value.trim();
49
34
  const page = await $fetch(endpoint, {
50
- query: { light: "true", limit: 25, ...term ? { search: term } : {} }
35
+ query: { light: "true", limit: 25, ...term ? { search: term } : {} },
36
+ signal
51
37
  });
52
- if (request !== fetchRequest) return;
53
- fetched.value = page.items;
38
+ return page.items.map((row) => ({ label: optionLabel(row), value: row.id }));
54
39
  } catch (err) {
55
- if (request !== fetchRequest) return;
40
+ if (signal.aborted) throw err;
56
41
  toast.add({
57
42
  title: "Loading failed",
58
43
  description: errorMessage(err),
59
44
  color: "error"
60
45
  });
61
- } finally {
62
- if (request === fetchRequest) loading.value = false;
46
+ return [];
63
47
  }
64
48
  }
65
- let searchTimer;
66
- watch(searchTerm, () => {
67
- clearTimeout(searchTimer);
68
- searchTimer = setTimeout(() => void fetchOptions(), 300);
69
- });
70
- onBeforeUnmount(() => clearTimeout(searchTimer));
71
49
  const selectedIds = computed(() => {
72
- if (props.multiple) return model.value ?? [];
50
+ if (Array.isArray(model.value)) return model.value;
73
51
  return model.value ? [model.value] : [];
74
52
  });
75
53
  async function resolveSelected() {
@@ -85,7 +63,6 @@ async function resolveSelected() {
85
63
  );
86
64
  }
87
65
  onMounted(() => {
88
- void fetchOptions();
89
66
  void resolveSelected();
90
67
  });
91
68
  const { i18n: contentI18n } = useCmsRuntime();
@@ -102,35 +79,10 @@ function optionLabel(row) {
102
79
  return selectDisplayValue(titleFieldConfig, value) || `#${row.id}`;
103
80
  return String(value ?? `#${row.id}`);
104
81
  }
105
- const options = computed(() => {
106
- const seen = /* @__PURE__ */ new Set();
107
- const list = [];
108
- for (const row of fetched.value) {
109
- const id = row.id;
110
- list.push({ label: optionLabel(row), value: id });
111
- seen.add(id);
112
- }
113
- for (const id of selectedIds.value) {
114
- if (seen.has(id)) continue;
82
+ const selectedOptions = computed(
83
+ () => selectedIds.value.map((id) => {
115
84
  const row = selectedRows.value.get(id);
116
- list.push({ label: row ? optionLabel(row) : `#${id}`, value: id });
117
- }
118
- return list;
119
- });
120
- const singleItems = computed(() => [
121
- ...props.required ? [] : [{ label: "\u2014", value: null }],
122
- ...options.value
123
- ]);
124
- const single = computed({
125
- get: () => model.value ?? null,
126
- set: (value) => {
127
- model.value = value;
128
- }
129
- });
130
- const many = computed({
131
- get: () => model.value ?? [],
132
- set: (value) => {
133
- model.value = value;
134
- }
135
- });
85
+ return { label: row ? optionLabel(row) : `#${id}`, value: id };
86
+ })
87
+ );
136
88
  </script>
@@ -1,183 +1,29 @@
1
1
  <template>
2
- <div class="cms-richtext">
3
- <div class="cms-richtext-toolbar">
4
- <CmsButton
5
- v-for="action in actions"
6
- :key="action.icon"
7
- :icon="action.icon"
8
- size="xs"
9
- :variant="editor?.isActive(action.mark, action.attrs) ? 'soft' : 'ghost'"
10
- color="neutral"
11
- :aria-label="action.label"
12
- :title="action.label"
13
- @click="action.run"
14
- />
15
- <CmsPopover v-model:open="linkOpen">
16
- <CmsButton
17
- icon="link"
18
- size="xs"
19
- :variant="editor?.isActive('link') ? 'soft' : 'ghost'"
20
- color="neutral"
21
- aria-label="Link"
22
- title="Link"
23
- />
24
- <template #content>
25
- <div class="flex items-center gap-2 p-2">
26
- <CmsInput
27
- v-model="linkUrl"
28
- size="sm"
29
- placeholder="https://"
30
- class="w-64"
31
- @keydown.enter.prevent="applyLink"
32
- />
33
- <CmsButton size="xs" label="Apply" @click="applyLink" />
34
- <CmsButton
35
- v-if="editor?.isActive('link')"
36
- size="xs"
37
- variant="soft"
38
- color="error"
39
- label="Remove link"
40
- @click="removeLink"
41
- />
42
- </div>
43
- </template>
44
- </CmsPopover>
45
- <span class="grow" />
46
- <CmsButton
47
- icon="arrow-uturn-left"
48
- size="xs"
49
- variant="ghost"
50
- color="neutral"
51
- aria-label="Undo"
52
- title="Undo"
53
- :disabled="!editor?.can().undo()"
54
- @click="undo"
55
- />
56
- <CmsButton
57
- icon="arrow-uturn-right"
58
- size="xs"
59
- variant="ghost"
60
- color="neutral"
61
- aria-label="Redo"
62
- title="Redo"
63
- :disabled="!editor?.can().redo()"
64
- @click="redo"
65
- />
66
- </div>
67
- <EditorContent :editor="editor" />
68
- </div>
2
+ <KRichTextEditor
3
+ :model-value="model"
4
+ :headings="[2, 3]"
5
+ :toolbar="TOOLBAR"
6
+ min-height="9rem"
7
+ @update:model-value="(value) => model = typeof value === 'string' ? value : null"
8
+ />
69
9
  </template>
70
10
 
71
11
  <script setup>
72
- import StarterKit from "@tiptap/starter-kit";
73
- import { EditorContent, useEditor } from "@tiptap/vue-3";
74
- import { ref, watch } from "#imports";
75
- const model = defineModel({ type: [String, null], ...{ required: true } });
76
- const editor = useEditor({
77
- content: model.value ?? "",
78
- extensions: [StarterKit.configure({ link: { openOnClick: false } })],
79
- editorProps: {
80
- attributes: { class: "cms-richtext-body" }
81
- },
82
- onUpdate: ({ editor: instance }) => {
83
- model.value = instance.isEmpty ? null : instance.getHTML();
84
- }
85
- });
86
- watch(model, (value) => {
87
- if (!editor.value) return;
88
- const current = editor.value.isEmpty ? null : editor.value.getHTML();
89
- if ((value ?? null) !== current) {
90
- editor.value.commands.setContent(value ?? "");
91
- }
92
- });
93
- const actions = [
94
- {
95
- icon: "bold",
96
- mark: "bold",
97
- label: "Bold",
98
- run: () => {
99
- editor.value?.chain().focus().toggleBold().run();
100
- }
101
- },
102
- {
103
- icon: "italic",
104
- mark: "italic",
105
- label: "Italic",
106
- run: () => {
107
- editor.value?.chain().focus().toggleItalic().run();
108
- }
109
- },
110
- {
111
- icon: "strikethrough",
112
- mark: "strike",
113
- label: "Strikethrough",
114
- run: () => {
115
- editor.value?.chain().focus().toggleStrike().run();
116
- }
117
- },
118
- {
119
- icon: "h2",
120
- mark: "heading",
121
- attrs: { level: 2 },
122
- label: "Heading 2",
123
- run: () => {
124
- editor.value?.chain().focus().toggleHeading({ level: 2 }).run();
125
- }
126
- },
127
- {
128
- icon: "h3",
129
- mark: "heading",
130
- attrs: { level: 3 },
131
- label: "Heading 3",
132
- run: () => {
133
- editor.value?.chain().focus().toggleHeading({ level: 3 }).run();
134
- }
135
- },
136
- {
137
- icon: "list-bullet",
138
- mark: "bulletList",
139
- label: "Bullet list",
140
- run: () => {
141
- editor.value?.chain().focus().toggleBulletList().run();
142
- }
143
- },
144
- {
145
- icon: "numbered-list",
146
- mark: "orderedList",
147
- label: "Numbered list",
148
- run: () => {
149
- editor.value?.chain().focus().toggleOrderedList().run();
150
- }
151
- },
152
- {
153
- icon: "chat-bubble-bottom-center-text",
154
- mark: "blockquote",
155
- label: "Quote",
156
- run: () => {
157
- editor.value?.chain().focus().toggleBlockquote().run();
158
- }
159
- }
12
+ import { RichTextEditor as KRichTextEditor } from "@xleddyl/443-components-vue/editor";
13
+ const TOOLBAR = [
14
+ "bold",
15
+ "italic",
16
+ "strike",
17
+ "|",
18
+ "headings",
19
+ "|",
20
+ "bulletList",
21
+ "orderedList",
22
+ "blockquote",
23
+ "link",
24
+ "|",
25
+ "undo",
26
+ "redo"
160
27
  ];
161
- const linkOpen = ref(false);
162
- const linkUrl = ref("");
163
- watch(linkOpen, (open) => {
164
- if (open) linkUrl.value = editor.value?.getAttributes("link").href ?? "";
165
- });
166
- function applyLink() {
167
- const url = linkUrl.value.trim();
168
- const chain = editor.value?.chain().focus().extendMarkRange("link");
169
- if (url) chain?.setLink({ href: url }).run();
170
- else chain?.unsetLink().run();
171
- linkOpen.value = false;
172
- }
173
- function removeLink() {
174
- editor.value?.chain().focus().extendMarkRange("link").unsetLink().run();
175
- linkOpen.value = false;
176
- }
177
- function undo() {
178
- editor.value?.chain().focus().undo().run();
179
- }
180
- function redo() {
181
- editor.value?.chain().focus().redo().run();
182
- }
28
+ const model = defineModel({ type: [String, null], ...{ required: true } });
183
29
  </script>