rimecms 0.26.6 → 0.26.8

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 (282) hide show
  1. package/dist/adapter-sqlite/where.js +7 -1
  2. package/dist/core/areas/api/get.server.js +6 -2
  3. package/dist/core/collections/nested/hooks/index.server.js +3 -1
  4. package/dist/core/collections/upload/upload.d.ts +8 -8
  5. package/dist/core/collections/upload/util/path.js +2 -1
  6. package/dist/core/config/types.d.ts +1 -1
  7. package/dist/core/dev/generate/sanitize/index.js +707 -707
  8. package/dist/core/errors/handler.server.js +3 -3
  9. package/dist/core/fields/util.js +2 -1
  10. package/dist/core/i18n/en/common.js +60 -60
  11. package/dist/core/i18n/en/errors.js +13 -12
  12. package/dist/core/i18n/en/fields.js +11 -11
  13. package/dist/core/i18n/en/mail.js +2 -2
  14. package/dist/core/i18n/fr/common.js +64 -64
  15. package/dist/core/i18n/fr/errors.js +11 -11
  16. package/dist/core/i18n/fr/fields.js +11 -11
  17. package/dist/core/i18n/fr/mail.js +2 -2
  18. package/dist/core/logger/index.server.js +136 -136
  19. package/dist/core/operations/hooks/before-upsert/validate-fields.server.js +5 -5
  20. package/dist/core/plugins/cache/HeaderButton.svelte +11 -11
  21. package/dist/fields/blocks/component/AddBlockButton.svelte +161 -161
  22. package/dist/fields/blocks/component/Block.svelte +157 -157
  23. package/dist/fields/blocks/component/BlockActions.svelte +36 -36
  24. package/dist/fields/blocks/component/Blocks.svelte +154 -154
  25. package/dist/fields/blocks/component/Cell.svelte +12 -12
  26. package/dist/fields/blocks/component/ToggleBlockButton.svelte +11 -11
  27. package/dist/fields/checkbox/component/Checkbox.svelte +51 -51
  28. package/dist/fields/combobox/component/ComboBox.svelte +88 -88
  29. package/dist/fields/combobox/component/combobox.css +24 -24
  30. package/dist/fields/date/component/Cell.svelte +5 -5
  31. package/dist/fields/date/component/Date.svelte +92 -92
  32. package/dist/fields/email/component/Email.svelte +58 -58
  33. package/dist/fields/group/component/Group.svelte +131 -131
  34. package/dist/fields/link/component/Cell.svelte +9 -9
  35. package/dist/fields/link/component/Link.svelte +269 -269
  36. package/dist/fields/link/component/RessourceInput.svelte +183 -183
  37. package/dist/fields/number/component/Number.svelte +118 -118
  38. package/dist/fields/number/component/number.css +52 -52
  39. package/dist/fields/radio/component/Radio.svelte +56 -53
  40. package/dist/fields/relation/component/Cell.svelte +51 -51
  41. package/dist/fields/relation/component/Relation.svelte +226 -227
  42. package/dist/fields/relation/component/default/Default.svelte +218 -218
  43. package/dist/fields/relation/component/upload/Browse.svelte +227 -227
  44. package/dist/fields/relation/component/upload/Upload.svelte +112 -112
  45. package/dist/fields/relation/component/upload/upload.css +72 -72
  46. package/dist/fields/rich-text/component/Cell.svelte +5 -5
  47. package/dist/fields/rich-text/component/RichText.svelte +95 -95
  48. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +15 -15
  49. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.svelte +148 -148
  50. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.css +10 -10
  51. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.svelte +23 -17
  52. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +37 -37
  53. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.svelte +93 -89
  54. package/dist/fields/rich-text/component/drag-handle/drag-handle.css +12 -12
  55. package/dist/fields/rich-text/component/drag-handle/drag-handle.svelte +27 -27
  56. package/dist/fields/rich-text/component/styles/rich-text.css +142 -142
  57. package/dist/fields/rich-text/component/suggestion/suggestion.svelte +79 -79
  58. package/dist/fields/rich-text/core/extensions/current-node/current-node.css +3 -3
  59. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.js +10 -7
  60. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/cloneElement.js +4 -1
  61. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/dragHandler.js +4 -4
  62. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/findNextElementFromCursor.js +4 -4
  63. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/getInnerCoords.js +1 -1
  64. package/dist/fields/rich-text/core/features/fields/fields.css +16 -16
  65. package/dist/fields/rich-text/core/features/fields/fields.svelte +50 -50
  66. package/dist/fields/rich-text/core/features/hr/hr.css +15 -15
  67. package/dist/fields/rich-text/core/features/link/component/link-selector.css +2 -2
  68. package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +266 -266
  69. package/dist/fields/rich-text/core/features/resource/resource.svelte +135 -138
  70. package/dist/fields/rich-text/core/features/upload/upload.svelte +231 -235
  71. package/dist/fields/rich-text/core/render-rich-text.svelte +162 -162
  72. package/dist/fields/rich-text/core/svelte/node-view-wrapper.svelte +25 -18
  73. package/dist/fields/rich-text/util.js +2 -1
  74. package/dist/fields/select/component/Select.svelte +194 -194
  75. package/dist/fields/separator/component/Separator.svelte +5 -5
  76. package/dist/fields/slug/component/Cell.svelte +4 -4
  77. package/dist/fields/slug/component/Slug.svelte +99 -99
  78. package/dist/fields/tabs/component/Tabs.svelte +96 -96
  79. package/dist/fields/text/component/Text.svelte +54 -54
  80. package/dist/fields/textarea/component/TextArea.svelte +51 -51
  81. package/dist/fields/time/component/Time.svelte +44 -44
  82. package/dist/fields/toggle/component/Cell.svelte +10 -10
  83. package/dist/fields/toggle/component/Toggle.svelte +36 -36
  84. package/dist/fields/tree/component/AddItemButton.svelte +35 -29
  85. package/dist/fields/tree/component/Cell.svelte +12 -12
  86. package/dist/fields/tree/component/ToggleBlockButton.svelte +11 -11
  87. package/dist/fields/tree/component/Tree.svelte +150 -150
  88. package/dist/fields/tree/component/TreeBlock.svelte +174 -174
  89. package/dist/fields/tree/component/TreeBlockActions.svelte +13 -13
  90. package/dist/fields/tree/index.js +3 -2
  91. package/dist/live.d.ts +2 -2
  92. package/dist/live.js +2 -2
  93. package/dist/panel/components/Root.svelte +70 -70
  94. package/dist/panel/components/fields/Error.svelte +35 -35
  95. package/dist/panel/components/fields/FieldsPreview.svelte +71 -71
  96. package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +11 -11
  97. package/dist/panel/components/fields/Hint.svelte +12 -12
  98. package/dist/panel/components/fields/Label.svelte +31 -26
  99. package/dist/panel/components/fields/LabelFor.svelte +26 -26
  100. package/dist/panel/components/fields/RenderFields.svelte +102 -102
  101. package/dist/panel/components/sections/auth/AuthForm.svelte +102 -102
  102. package/dist/panel/components/sections/collection/Empty.svelte +18 -18
  103. package/dist/panel/components/sections/collection/StatusDot.svelte +13 -13
  104. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte +30 -28
  105. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte +176 -169
  106. package/dist/panel/components/sections/collection/folder/Folder.svelte +38 -38
  107. package/dist/panel/components/sections/collection/folder/FolderEdit.svelte +57 -57
  108. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +223 -223
  109. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte +102 -102
  110. package/dist/panel/components/sections/collection/grid/create-directory-dialog/CreateDirectoryDialog.svelte +50 -50
  111. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +56 -56
  112. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte +29 -29
  113. package/dist/panel/components/sections/collection/header/DisplayMode.svelte +59 -59
  114. package/dist/panel/components/sections/collection/header/Header.svelte +11 -11
  115. package/dist/panel/components/sections/collection/header/SearchInput.svelte +41 -41
  116. package/dist/panel/components/sections/collection/header/SelectUI.svelte +51 -51
  117. package/dist/panel/components/sections/collection/header/Separator.svelte +4 -4
  118. package/dist/panel/components/sections/collection/list/CollectionList.svelte +46 -46
  119. package/dist/panel/components/sections/collection/list/header/Header.svelte +56 -56
  120. package/dist/panel/components/sections/collection/list/row/Row.svelte +115 -115
  121. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +139 -139
  122. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +56 -56
  123. package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +64 -64
  124. package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +66 -66
  125. package/dist/panel/components/sections/document/AuthFooter.svelte +81 -81
  126. package/dist/panel/components/sections/document/ButtonSave.svelte +34 -27
  127. package/dist/panel/components/sections/document/ButtonStatus.svelte +79 -79
  128. package/dist/panel/components/sections/document/CurrentlyEdited.svelte +36 -36
  129. package/dist/panel/components/sections/document/Document.svelte +223 -223
  130. package/dist/panel/components/sections/document/FloatingUI.svelte +69 -69
  131. package/dist/panel/components/sections/document/Header.svelte +105 -105
  132. package/dist/panel/components/sections/document/Settings.svelte +167 -167
  133. package/dist/panel/components/sections/document/Versions.svelte +89 -89
  134. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +205 -205
  135. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +141 -141
  136. package/dist/panel/components/sections/live/Consumer.svelte +14 -14
  137. package/dist/panel/components/sections/live/Provider.svelte +10 -10
  138. package/dist/panel/components/sections/live/SidePanel.svelte +56 -56
  139. package/dist/panel/components/sections/live/side-panel.css +10 -8
  140. package/dist/panel/components/sections/page-layout/Page.svelte +23 -23
  141. package/dist/panel/components/sections/unauthorized/Unauthorized.svelte +22 -22
  142. package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +40 -40
  143. package/dist/panel/components/ui/button/button.svelte +226 -226
  144. package/dist/panel/components/ui/calendar/calendar-cell.svelte +6 -2
  145. package/dist/panel/components/ui/calendar/calendar-day.svelte +6 -2
  146. package/dist/panel/components/ui/calendar/calendar-grid-body.svelte +6 -2
  147. package/dist/panel/components/ui/calendar/calendar-grid-head.svelte +6 -2
  148. package/dist/panel/components/ui/calendar/calendar-grid-row.svelte +6 -2
  149. package/dist/panel/components/ui/calendar/calendar-grid.svelte +6 -2
  150. package/dist/panel/components/ui/calendar/calendar-head-cell.svelte +6 -2
  151. package/dist/panel/components/ui/calendar/calendar-header.svelte +6 -2
  152. package/dist/panel/components/ui/calendar/calendar-heading.svelte +6 -2
  153. package/dist/panel/components/ui/calendar/calendar-months.svelte +21 -16
  154. package/dist/panel/components/ui/calendar/calendar-next-button.svelte +13 -8
  155. package/dist/panel/components/ui/calendar/calendar-prev-button.svelte +13 -8
  156. package/dist/panel/components/ui/calendar/calendar.css +88 -88
  157. package/dist/panel/components/ui/calendar/calendar.svelte +50 -50
  158. package/dist/panel/components/ui/card/card-content.svelte +17 -12
  159. package/dist/panel/components/ui/card/card-description.svelte +14 -9
  160. package/dist/panel/components/ui/card/card-footer.svelte +17 -12
  161. package/dist/panel/components/ui/card/card-header.svelte +15 -10
  162. package/dist/panel/components/ui/card/card-title.svelte +25 -19
  163. package/dist/panel/components/ui/card/card.svelte +19 -14
  164. package/dist/panel/components/ui/card-document/card-document.svelte +73 -73
  165. package/dist/panel/components/ui/card-resource/card-resource.svelte +108 -108
  166. package/dist/panel/components/ui/checkbox/checkbox.css +28 -28
  167. package/dist/panel/components/ui/checkbox/checkbox.svelte +13 -13
  168. package/dist/panel/components/ui/command/command-dialog.css +24 -24
  169. package/dist/panel/components/ui/command/command-dialog.svelte +28 -18
  170. package/dist/panel/components/ui/command/command-empty.css +2 -2
  171. package/dist/panel/components/ui/command/command-empty.svelte +7 -3
  172. package/dist/panel/components/ui/command/command-group.css +20 -20
  173. package/dist/panel/components/ui/command/command-group.svelte +17 -17
  174. package/dist/panel/components/ui/command/command-input-select.svelte +50 -45
  175. package/dist/panel/components/ui/command/command-input.svelte +57 -57
  176. package/dist/panel/components/ui/command/command-item.css +18 -18
  177. package/dist/panel/components/ui/command/command-item.svelte +7 -3
  178. package/dist/panel/components/ui/command/command-list.css +4 -4
  179. package/dist/panel/components/ui/command/command-list.svelte +7 -3
  180. package/dist/panel/components/ui/command/command-separator.css +4 -4
  181. package/dist/panel/components/ui/command/command-separator.svelte +7 -3
  182. package/dist/panel/components/ui/command/command.css +5 -5
  183. package/dist/panel/components/ui/command/command.svelte +8 -8
  184. package/dist/panel/components/ui/context-menu/ContextMenu.svelte +10 -5
  185. package/dist/panel/components/ui/context-menu/ContextMenu.svelte.d.ts +2 -2
  186. package/dist/panel/components/ui/context-menu/ContextMenuItem.svelte +8 -8
  187. package/dist/panel/components/ui/context-menu/context-menu-item.css +20 -20
  188. package/dist/panel/components/ui/context-menu/context-menu.css +12 -12
  189. package/dist/panel/components/ui/dialog/dialog-content.css +45 -45
  190. package/dist/panel/components/ui/dialog/dialog-content.svelte +33 -33
  191. package/dist/panel/components/ui/dialog/dialog-description.css +2 -2
  192. package/dist/panel/components/ui/dialog/dialog-description.svelte +7 -3
  193. package/dist/panel/components/ui/dialog/dialog-footer.svelte +20 -20
  194. package/dist/panel/components/ui/dialog/dialog-header.svelte +22 -22
  195. package/dist/panel/components/ui/dialog/dialog-overlay.css +6 -6
  196. package/dist/panel/components/ui/dialog/dialog-overlay.svelte +7 -3
  197. package/dist/panel/components/ui/dialog/dialog-title.css +3 -3
  198. package/dist/panel/components/ui/dialog/dialog-title.svelte +7 -3
  199. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +55 -55
  200. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +8 -8
  201. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.svelte +14 -9
  202. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-group-heading.css +5 -5
  203. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +10 -10
  204. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.css +19 -19
  205. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.svelte +9 -9
  206. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.css +17 -17
  207. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +17 -17
  208. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.css +3 -3
  209. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.svelte +12 -4
  210. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +6 -2
  211. package/dist/panel/components/ui/input/input.svelte +93 -93
  212. package/dist/panel/components/ui/label/label.css +7 -7
  213. package/dist/panel/components/ui/label/label.svelte +8 -8
  214. package/dist/panel/components/ui/language-switcher/LanguageSwitcher.svelte +48 -48
  215. package/dist/panel/components/ui/nav/Nav.svelte +151 -151
  216. package/dist/panel/components/ui/nav/NavGroup.svelte +85 -85
  217. package/dist/panel/components/ui/nav/NavItem.svelte +42 -42
  218. package/dist/panel/components/ui/nav/NavItemButton.svelte +39 -38
  219. package/dist/panel/components/ui/nav/NavItemButtonCaret.svelte +8 -8
  220. package/dist/panel/components/ui/nav/UserButton.svelte +90 -90
  221. package/dist/panel/components/ui/page-header/PageHeader.svelte +80 -80
  222. package/dist/panel/components/ui/pane/pane-resizer.svelte +12 -12
  223. package/dist/panel/components/ui/popover/popover-content.css +7 -7
  224. package/dist/panel/components/ui/popover/popover-content.svelte +16 -10
  225. package/dist/panel/components/ui/radio-group/radio-group-item.svelte +8 -7
  226. package/dist/panel/components/ui/radio-group/radio-group.css +23 -23
  227. package/dist/panel/components/ui/radio-group/radio-group.svelte +8 -8
  228. package/dist/panel/components/ui/radio-row-group/radio-row-group-item.svelte +9 -9
  229. package/dist/panel/components/ui/radio-row-group/radio-row-group.css +27 -27
  230. package/dist/panel/components/ui/radio-row-group/radio-row-group.svelte +14 -9
  231. package/dist/panel/components/ui/scroll-area/scroll-area-scrollbar.svelte +14 -14
  232. package/dist/panel/components/ui/scroll-area/scroll-area.css +21 -21
  233. package/dist/panel/components/ui/scroll-area/scroll-area.svelte +26 -26
  234. package/dist/panel/components/ui/separator/separator.svelte +25 -25
  235. package/dist/panel/components/ui/sheet/sheet-content.svelte +33 -33
  236. package/dist/panel/components/ui/sheet/sheet-description.svelte +6 -2
  237. package/dist/panel/components/ui/sheet/sheet-footer.svelte +10 -5
  238. package/dist/panel/components/ui/sheet/sheet-header.svelte +10 -5
  239. package/dist/panel/components/ui/sheet/sheet-overlay.svelte +7 -3
  240. package/dist/panel/components/ui/sheet/sheet-title.svelte +6 -2
  241. package/dist/panel/components/ui/sheet/sheet.css +81 -81
  242. package/dist/panel/components/ui/sheet/sheet.svelte +5 -5
  243. package/dist/panel/components/ui/sonner/sonner.css +12 -12
  244. package/dist/panel/components/ui/sonner/sonner.svelte +15 -15
  245. package/dist/panel/components/ui/spin-loader/SpinLoader.svelte +2 -2
  246. package/dist/panel/components/ui/spin-loader/spin-loader.css +10 -10
  247. package/dist/panel/components/ui/switch/switch.css +36 -36
  248. package/dist/panel/components/ui/switch/switch.svelte +9 -9
  249. package/dist/panel/components/ui/tabs/tabs-content.svelte +6 -2
  250. package/dist/panel/components/ui/tabs/tabs-list.svelte +2 -2
  251. package/dist/panel/components/ui/tabs/tabs-trigger.svelte +6 -2
  252. package/dist/panel/components/ui/tabs/tabs.css +47 -49
  253. package/dist/panel/components/ui/tabs/tabs.svelte +5 -5
  254. package/dist/panel/components/ui/tag/tag.svelte +49 -45
  255. package/dist/panel/components/ui/tooltip/tooltip-content.svelte +31 -31
  256. package/dist/panel/context/api-proxy.svelte.d.ts +12 -11
  257. package/dist/panel/context/api-proxy.svelte.js +6 -5
  258. package/dist/panel/pages/area/Area.svelte +17 -17
  259. package/dist/panel/pages/area/AreaVersionsDoc.svelte +19 -19
  260. package/dist/panel/pages/area/load.server.js +10 -2
  261. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +58 -54
  262. package/dist/panel/pages/auth/reset-password/ResetPassword.svelte +54 -54
  263. package/dist/panel/pages/auth/sign-in/SignIn.svelte +41 -41
  264. package/dist/panel/pages/collection/Collection.svelte +121 -121
  265. package/dist/panel/pages/collection/load.server.js +8 -2
  266. package/dist/panel/pages/collection-document/CollectionDocVersions.svelte +26 -26
  267. package/dist/panel/pages/collection-document/CollectionDocument.svelte +20 -20
  268. package/dist/panel/pages/collection-document/actions.server.js +3 -1
  269. package/dist/panel/pages/collection-document/load.server.js +4 -1
  270. package/dist/panel/pages/dashboard/Dashboard.svelte +109 -109
  271. package/dist/panel/pages/index.actions.server.js +1 -1
  272. package/dist/panel/pages/index.load.server.js +1 -1
  273. package/dist/panel/pages/live/Live.svelte +199 -192
  274. package/dist/panel/style/font.css +32 -32
  275. package/dist/panel/style/index.css +81 -81
  276. package/dist/panel/style/palette.css +27 -28
  277. package/dist/panel/style/radius.css +8 -8
  278. package/dist/panel/style/shadow.css +8 -8
  279. package/dist/panel/style/size.css +41 -41
  280. package/dist/panel/style/util.css +1 -1
  281. package/dist/util/cases.d.ts +1 -1
  282. package/package.json +5 -5
@@ -1,258 +1,258 @@
1
1
  <script lang="ts">
2
- import { goto, invalidateAll } from '$app/navigation';
3
- import { apiUrl } from '../../../../../core/api/index.js';
4
- import type { Directory } from '../../../../../core/collections/upload/upload.js';
5
- import type { BuiltCollectionClient } from '../../../../../core/config/types.js';
6
- import { PARAMS } from '../../../../../core/constant.js';
7
- import { withDirectoriesSuffix } from '../../../../../core/naming.js';
8
- import type { GenericDoc } from '../../../../../core/types/doc.js';
9
- import Button from '../../../ui/button/button.svelte';
10
- import ContextMenu from '../../../ui/context-menu/ContextMenu.svelte';
11
- import ContextMenuItem from '../../../ui/context-menu/ContextMenuItem.svelte';
12
- import * as Dialog from '../../../ui/dialog/index.js';
13
- import { API_PROXY, getAPIProxyContext } from '../../../../context/api-proxy.svelte.js';
14
- import { panelUrl } from '../../../../util/url.js';
15
- import { trycatchFetch } from '../../../../../util/function.js';
16
- import { Pencil, Trash2 } from '@lucide/svelte';
17
- import { toast } from 'svelte-sonner';
18
- import { t__ } from '../../../../../core/i18n/index.js';
19
- import Folder from './Folder.svelte';
20
- import FolderEdit from './FolderEdit.svelte';
2
+ import { goto, invalidateAll } from '$app/navigation';
3
+ import { apiUrl } from '../../../../../core/api/index.js';
4
+ import type { Directory } from '../../../../../core/collections/upload/upload.js';
5
+ import type { BuiltCollectionClient } from '../../../../../core/config/types.js';
6
+ import { PARAMS } from '../../../../../core/constant.js';
7
+ import { withDirectoriesSuffix } from '../../../../../core/naming.js';
8
+ import type { GenericDoc } from '../../../../../core/types/doc.js';
9
+ import Button from '../../../ui/button/button.svelte';
10
+ import ContextMenu from '../../../ui/context-menu/ContextMenu.svelte';
11
+ import ContextMenuItem from '../../../ui/context-menu/ContextMenuItem.svelte';
12
+ import * as Dialog from '../../../ui/dialog/index.js';
13
+ import { API_PROXY, getAPIProxyContext } from '../../../../context/api-proxy.svelte.js';
14
+ import { panelUrl } from '../../../../util/url.js';
15
+ import { trycatchFetch } from '../../../../../util/function.js';
16
+ import { Pencil, Trash2 } from '@lucide/svelte';
17
+ import { toast } from 'svelte-sonner';
18
+ import { t__ } from '../../../../../core/i18n/index.js';
19
+ import Folder from './Folder.svelte';
20
+ import FolderEdit from './FolderEdit.svelte';
21
21
 
22
- type Props = {
23
- folder: Directory;
24
- collection: BuiltCollectionClient;
25
- onDelete?: (path: string) => void;
26
- onDocumentDrop: (args: { documentId: string; path: string }) => void;
27
- draggable?: 'true';
28
- display?: 'grid' | 'list';
29
- };
30
- const {
31
- folder,
32
- collection,
33
- onDelete,
34
- onDocumentDrop,
35
- draggable,
36
- display = 'grid'
37
- }: Props = $props();
22
+ type Props = {
23
+ folder: Directory;
24
+ collection: BuiltCollectionClient;
25
+ onDelete?: (path: string) => void;
26
+ onDocumentDrop: (args: { documentId: string; path: string }) => void;
27
+ draggable?: 'true';
28
+ display?: 'grid' | 'list';
29
+ };
30
+ const {
31
+ folder,
32
+ collection,
33
+ onDelete,
34
+ onDocumentDrop,
35
+ draggable,
36
+ display = 'grid'
37
+ }: Props = $props();
38
38
 
39
- let deleteConfirmOpen = $state(false);
40
- let editFolderDialogOpen = $state(false);
41
- let message = $state('');
42
- let rootElement = $state<HTMLButtonElement>();
43
- let isDragging = $state(false);
44
- const isFolderUpperPath = $derived(folder.name === '...');
45
- const APIProxy = getAPIProxyContext(API_PROXY.ROOT);
46
- const childFilesURL = $derived(
47
- `${apiUrl(collection.kebab)}?where[_path][equals]=${folder.id}&select=id`
48
- );
49
- const childFiles = $derived(APIProxy.getRessource<{ docs: GenericDoc[] }>(childFilesURL));
50
- const childFilesCount = $derived(childFiles.data?.docs?.length || 0);
51
- const baseFolderApiURL = $derived(`${apiUrl(withDirectoriesSuffix(collection.kebab))}`);
52
- const childFoldersURL = $derived(
53
- `${baseFolderApiURL}?where[parent][equals]=${folder.id}&select=id`
54
- );
55
- const childFolders = $derived(APIProxy.getRessource<{ docs: GenericDoc[] }>(childFoldersURL));
56
- const childFoldersCount = $derived(childFolders.data?.docs?.length || 0);
39
+ let deleteConfirmOpen = $state(false);
40
+ let editFolderDialogOpen = $state(false);
41
+ let message = $state('');
42
+ let rootElement = $state<HTMLButtonElement>();
43
+ let isDragging = $state(false);
44
+ const isFolderUpperPath = $derived(folder.name === '...');
45
+ const APIProxy = getAPIProxyContext(API_PROXY.ROOT);
46
+ const childFilesURL = $derived(
47
+ `${apiUrl(collection.kebab)}?where[_path][equals]=${folder.id}&select=id`
48
+ );
49
+ const childFiles = $derived(APIProxy.getRessource<{ docs: GenericDoc[] }>(childFilesURL));
50
+ const childFilesCount = $derived(childFiles.data?.docs?.length || 0);
51
+ const baseFolderApiURL = $derived(`${apiUrl(withDirectoriesSuffix(collection.kebab))}`);
52
+ const childFoldersURL = $derived(
53
+ `${baseFolderApiURL}?where[parent][equals]=${folder.id}&select=id`
54
+ );
55
+ const childFolders = $derived(APIProxy.getRessource<{ docs: GenericDoc[] }>(childFoldersURL));
56
+ const childFoldersCount = $derived(childFolders.data?.docs?.length || 0);
57
57
 
58
- async function handleGetDeleteInfos() {
59
- message = t__(
60
- 'common.delete_dialog_text',
61
- `wich contains ${childFilesCount} file(s) and ${childFoldersCount} folder(s)`
62
- );
63
- deleteConfirmOpen = true;
64
- }
58
+ async function handleGetDeleteInfos() {
59
+ message = t__(
60
+ 'common.delete_dialog_text',
61
+ `wich contains ${childFilesCount} file(s) and ${childFoldersCount} folder(s)`
62
+ );
63
+ deleteConfirmOpen = true;
64
+ }
65
65
 
66
- async function handleDelete() {
67
- const url = `${baseFolderApiURL}/${folder.id}`;
68
- const [error] = await trycatchFetch(url, { method: 'DELETE' });
69
- if (error) {
70
- return toast.error('Error deleting folder');
71
- }
72
- toast.success(t__('delete_success'));
73
- deleteConfirmOpen = false;
74
- if (onDelete) {
75
- onDelete(folder.id);
76
- }
77
- }
66
+ async function handleDelete() {
67
+ const url = `${baseFolderApiURL}/${folder.id}`;
68
+ const [error] = await trycatchFetch(url, { method: 'DELETE' });
69
+ if (error) {
70
+ return toast.error('Error deleting folder');
71
+ }
72
+ toast.success(t__('delete_success'));
73
+ deleteConfirmOpen = false;
74
+ if (onDelete) {
75
+ onDelete(folder.id);
76
+ }
77
+ }
78
78
 
79
- async function handleDropFolder(folderId: string) {
80
- const movedFolderPath = folderId;
81
- const newFolderPath = `${folder.id}:${movedFolderPath.split(':').at(-1)}`;
82
- const moveAPICallURL = `${baseFolderApiURL}/${folderId}`;
83
- const [error] = await trycatchFetch(moveAPICallURL, {
84
- method: 'PATCH',
85
- body: JSON.stringify({ id: newFolderPath })
86
- });
79
+ async function handleDropFolder(folderId: string) {
80
+ const movedFolderPath = folderId;
81
+ const newFolderPath = `${folder.id}:${movedFolderPath.split(':').at(-1)}`;
82
+ const moveAPICallURL = `${baseFolderApiURL}/${folderId}`;
83
+ const [error] = await trycatchFetch(moveAPICallURL, {
84
+ method: 'PATCH',
85
+ body: JSON.stringify({ id: newFolderPath })
86
+ });
87
87
 
88
- if (error) {
89
- console.error(error);
90
- return toast.error('Error moving folder');
91
- }
88
+ if (error) {
89
+ console.error(error);
90
+ return toast.error('Error moving folder');
91
+ }
92
92
 
93
- toast.success('Folder moved successfully');
94
- childFolders.refresh();
95
- return invalidateAll();
96
- }
93
+ toast.success('Folder moved successfully');
94
+ childFolders.refresh();
95
+ return invalidateAll();
96
+ }
97
97
 
98
- async function handleDropDocument(docId: string) {
99
- const moveDocumentAPICallURL = apiUrl(collection.kebab, docId);
100
- const [error] = await trycatchFetch(moveDocumentAPICallURL, {
101
- method: 'PATCH',
102
- body: JSON.stringify({ _path: folder.id })
103
- });
104
- if (error) {
105
- console.error(error);
106
- return toast.error('Error moving document');
107
- }
108
- toast.success('Document moved successfully');
109
- if (onDocumentDrop) {
110
- onDocumentDrop({ documentId: docId, path: folder.id });
111
- }
112
- childFiles.refresh();
113
- }
98
+ async function handleDropDocument(docId: string) {
99
+ const moveDocumentAPICallURL = apiUrl(collection.kebab, docId);
100
+ const [error] = await trycatchFetch(moveDocumentAPICallURL, {
101
+ method: 'PATCH',
102
+ body: JSON.stringify({ _path: folder.id })
103
+ });
104
+ if (error) {
105
+ console.error(error);
106
+ return toast.error('Error moving document');
107
+ }
108
+ toast.success('Document moved successfully');
109
+ if (onDocumentDrop) {
110
+ onDocumentDrop({ documentId: docId, path: folder.id });
111
+ }
112
+ childFiles.refresh();
113
+ }
114
114
 
115
- async function handleDrop(e: DragEvent) {
116
- e.preventDefault(); // prevent default browser behavior
117
- rootElement?.classList.remove('rz-folder--dragover');
118
- // Get the document ID from dataTransfer
119
- const docId = e.dataTransfer?.getData('text/plain');
115
+ async function handleDrop(e: DragEvent) {
116
+ e.preventDefault(); // prevent default browser behavior
117
+ rootElement?.classList.remove('rz-folder--dragover');
118
+ // Get the document ID from dataTransfer
119
+ const docId = e.dataTransfer?.getData('text/plain');
120
120
 
121
- if (!docId) return;
122
- // Handle drop folder
123
- if (docId.includes(':')) {
124
- if (docId === folder.id) return;
125
- return handleDropFolder(docId);
126
- }
127
- // Handle a drop document
128
- return handleDropDocument(docId);
129
- }
121
+ if (!docId) return;
122
+ // Handle drop folder
123
+ if (docId.includes(':')) {
124
+ if (docId === folder.id) return;
125
+ return handleDropFolder(docId);
126
+ }
127
+ // Handle a drop document
128
+ return handleDropDocument(docId);
129
+ }
130
130
 
131
- function handleDragEnter(e: DragEvent) {
132
- e.preventDefault();
133
- rootElement?.classList.add('rz-folder--dragover');
134
- }
131
+ function handleDragEnter(e: DragEvent) {
132
+ e.preventDefault();
133
+ rootElement?.classList.add('rz-folder--dragover');
134
+ }
135
135
 
136
- function handleDragLeave() {
137
- rootElement?.classList.remove('rz-folder--dragover');
138
- }
136
+ function handleDragLeave() {
137
+ rootElement?.classList.remove('rz-folder--dragover');
138
+ }
139
139
 
140
- function handleGoToFolder() {
141
- goto(`${panelUrl(collection.kebab)}?${PARAMS.UPLOAD_PATH}=${folder.id}`);
142
- }
140
+ function handleGoToFolder() {
141
+ goto(`${panelUrl(collection.kebab)}?${PARAMS.UPLOAD_PATH}=${folder.id}`);
142
+ }
143
143
 
144
- function handleDragStart(e: DragEvent) {
145
- isDragging = true;
146
- e.dataTransfer?.setData('text/plain', folder.id);
147
- }
148
- function handleDragEnd() {
149
- isDragging = false;
150
- }
144
+ function handleDragStart(e: DragEvent) {
145
+ isDragging = true;
146
+ e.dataTransfer?.setData('text/plain', folder.id);
147
+ }
148
+ function handleDragEnd() {
149
+ isDragging = false;
150
+ }
151
151
  </script>
152
152
 
153
153
  <button
154
- bind:this={rootElement}
155
- onclick={handleGoToFolder}
156
- class="rz-folder rz-folder--{display}"
157
- class:rz-folder--dragging={isDragging}
158
- ondragleave={handleDragLeave}
159
- ondragover={!isDragging ? handleDragEnter : null}
160
- ondragend={handleDragEnd}
161
- ondrop={!isDragging ? handleDrop : null}
162
- draggable={draggable === 'true' ? 'true' : null}
163
- ondragstart={draggable === 'true' ? handleDragStart : null}
154
+ bind:this={rootElement}
155
+ onclick={handleGoToFolder}
156
+ class="rz-folder rz-folder--{display}"
157
+ class:rz-folder--dragging={isDragging}
158
+ ondragleave={handleDragLeave}
159
+ ondragover={!isDragging ? handleDragEnter : null}
160
+ ondragend={handleDragEnd}
161
+ ondrop={!isDragging ? handleDrop : null}
162
+ draggable={draggable === 'true' ? 'true' : null}
163
+ ondragstart={draggable === 'true' ? handleDragStart : null}
164
164
  >
165
- {#if !isFolderUpperPath}
166
- <ContextMenu>
167
- <!-- -->
168
- {#snippet trigger()}
169
- <Folder>{folder.name}</Folder>
170
- {/snippet}
171
- <!-- -->
172
- {#snippet content()}
173
- <ContextMenuItem onclick={handleGetDeleteInfos}>
174
- <Trash2 size="12" /> Delete
175
- </ContextMenuItem>
176
- <ContextMenuItem onclick={() => (editFolderDialogOpen = true)}>
177
- <Pencil size="12" /> Edit
178
- </ContextMenuItem>
179
- {/snippet}
180
- <!-- -->
181
- </ContextMenu>
182
- {:else}
183
- <div>
184
- <Folder>{folder.name}</Folder>
185
- </div>
186
- {/if}
165
+ {#if !isFolderUpperPath}
166
+ <ContextMenu>
167
+ <!-- -->
168
+ {#snippet trigger()}
169
+ <Folder>{folder.name}</Folder>
170
+ {/snippet}
171
+ <!-- -->
172
+ {#snippet content()}
173
+ <ContextMenuItem onclick={handleGetDeleteInfos}>
174
+ <Trash2 size="12" /> Delete
175
+ </ContextMenuItem>
176
+ <ContextMenuItem onclick={() => (editFolderDialogOpen = true)}>
177
+ <Pencil size="12" /> Edit
178
+ </ContextMenuItem>
179
+ {/snippet}
180
+ <!-- -->
181
+ </ContextMenu>
182
+ {:else}
183
+ <div>
184
+ <Folder>{folder.name}</Folder>
185
+ </div>
186
+ {/if}
187
187
 
188
- <span></span>
188
+ <span></span>
189
189
  </button>
190
190
 
191
191
  <Dialog.Root bind:open={deleteConfirmOpen}>
192
- <Dialog.Content>
193
- <Dialog.Header>
194
- {t__('common.delete_dialog_title', folder.name)}
195
- </Dialog.Header>
196
- <p>{message}</p>
197
- <Dialog.Footer --rz-justify-content="space-between">
198
- <Button onclick={handleDelete}>Delete</Button>
199
- <Button onclick={() => (deleteConfirmOpen = false)} variant="secondary">Cancel</Button>
200
- </Dialog.Footer>
201
- </Dialog.Content>
192
+ <Dialog.Content>
193
+ <Dialog.Header>
194
+ {t__('common.delete_dialog_title', folder.name)}
195
+ </Dialog.Header>
196
+ <p>{message}</p>
197
+ <Dialog.Footer --rz-justify-content="space-between">
198
+ <Button onclick={handleDelete}>Delete</Button>
199
+ <Button onclick={() => (deleteConfirmOpen = false)} variant="secondary">Cancel</Button>
200
+ </Dialog.Footer>
201
+ </Dialog.Content>
202
202
  </Dialog.Root>
203
203
 
204
204
  <FolderEdit bind:open={editFolderDialogOpen} {folder} {collection} />
205
205
 
206
206
  <style>
207
- :root {
208
- --rz-folder-hover-bg: light-dark(hsl(var(--rz-gray-14)), hsl(var(--rz-gray-1)));
209
- }
207
+ :root {
208
+ --rz-folder-hover-bg: light-dark(hsl(var(--rz-gray-14)), hsl(var(--rz-gray-1)));
209
+ }
210
210
 
211
- .rz-folder--dragging {
212
- pointer-events: none;
213
- opacity: 0.5;
214
- }
211
+ .rz-folder--dragging {
212
+ pointer-events: none;
213
+ opacity: 0.5;
214
+ }
215
215
 
216
- .rz-folder {
217
- width: 100%;
218
- padding: var(--rz-size-5);
219
- border-radius: var(--rz-radius-lg);
216
+ .rz-folder {
217
+ width: 100%;
218
+ padding: var(--rz-size-5);
219
+ border-radius: var(--rz-radius-lg);
220
220
 
221
- :global {
222
- &.rz-folder--dragover {
223
- background-color: var(--rz-folder-hover-bg);
224
- }
225
- }
226
- }
221
+ :global {
222
+ &.rz-folder--dragover {
223
+ background-color: var(--rz-folder-hover-bg);
224
+ }
225
+ }
226
+ }
227
227
 
228
- .rz-folder.rz-folder--grid {
229
- aspect-ratio: 4 / 5;
230
- }
231
- .rz-folder.rz-folder--list {
232
- height: var(--rz-row-height);
233
- padding: var(--rz-size-1-5);
228
+ .rz-folder.rz-folder--grid {
229
+ aspect-ratio: 4 / 5;
230
+ }
231
+ .rz-folder.rz-folder--list {
232
+ height: var(--rz-row-height);
233
+ padding: var(--rz-size-1-5);
234
234
 
235
- :global {
236
- > div {
237
- padding: 0;
238
- display: flex;
239
- gap: var(--rz-size-4);
240
- align-items: center;
241
- justify-content: flex-start;
242
- h3 {
243
- font-size: var(--rz-text-md);
244
- }
245
- svg {
246
- display: block;
247
- height: auto;
248
- width: 2rem;
249
- transform: translateY(-0.12em);
250
- }
251
- }
252
- }
253
- }
235
+ :global {
236
+ > div {
237
+ padding: 0;
238
+ display: flex;
239
+ gap: var(--rz-size-4);
240
+ align-items: center;
241
+ justify-content: flex-start;
242
+ h3 {
243
+ font-size: var(--rz-text-md);
244
+ }
245
+ svg {
246
+ display: block;
247
+ height: auto;
248
+ width: 2rem;
249
+ transform: translateY(-0.12em);
250
+ }
251
+ }
252
+ }
253
+ }
254
254
 
255
- .rz-folder.rz-folder--grid:hover {
256
- background-color: var(--rz-folder-hover-bg);
257
- }
255
+ .rz-folder.rz-folder--grid:hover {
256
+ background-color: var(--rz-folder-hover-bg);
257
+ }
258
258
  </style>