rimecms 0.26.7 → 0.26.9

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 (280) 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 -226
  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 +134 -134
  70. package/dist/fields/rich-text/core/features/upload/upload.svelte +230 -230
  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/pages/area/Area.svelte +17 -17
  257. package/dist/panel/pages/area/AreaVersionsDoc.svelte +19 -19
  258. package/dist/panel/pages/area/load.server.js +10 -2
  259. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +46 -46
  260. package/dist/panel/pages/auth/reset-password/ResetPassword.svelte +54 -54
  261. package/dist/panel/pages/auth/sign-in/SignIn.svelte +41 -41
  262. package/dist/panel/pages/collection/Collection.svelte +121 -121
  263. package/dist/panel/pages/collection/load.server.js +8 -2
  264. package/dist/panel/pages/collection-document/CollectionDocVersions.svelte +26 -26
  265. package/dist/panel/pages/collection-document/CollectionDocument.svelte +20 -20
  266. package/dist/panel/pages/collection-document/actions.server.js +3 -1
  267. package/dist/panel/pages/collection-document/load.server.js +4 -1
  268. package/dist/panel/pages/dashboard/Dashboard.svelte +109 -109
  269. package/dist/panel/pages/index.actions.server.js +1 -1
  270. package/dist/panel/pages/index.load.server.js +1 -1
  271. package/dist/panel/pages/live/Live.svelte +199 -192
  272. package/dist/panel/style/font.css +32 -32
  273. package/dist/panel/style/index.css +81 -81
  274. package/dist/panel/style/palette.css +27 -28
  275. package/dist/panel/style/radius.css +8 -8
  276. package/dist/panel/style/shadow.css +8 -8
  277. package/dist/panel/style/size.css +41 -41
  278. package/dist/panel/style/util.css +1 -1
  279. package/dist/util/cases.d.ts +1 -1
  280. package/package.json +233 -233
@@ -1,158 +1,158 @@
1
1
  <script lang="ts">
2
- import { t__ } from '../../../../core/i18n/index.js';
3
- import type { GenericDoc } from '../../../../core/types/doc.js';
4
- import Document from '../../../../panel/components/sections/document/Document.svelte';
5
- import Button from '../../../../panel/components/ui/button/button.svelte';
6
- import * as Command from '../../../../panel/components/ui/command/index.js';
7
- import * as Sheet from '../../../../panel/components/ui/sheet/index.js';
8
- import Tag from '../../../../panel/components/ui/tag/tag.svelte';
9
- import { getUserContext } from '../../../../panel/context/user.svelte.js';
10
- import { dataError } from '../../../../panel/util/dataError.js';
11
- import { dataFocused } from '../../../../panel/util/dataFocused.js';
12
- import { useSortable } from '../../../../panel/util/Sortable.js';
13
- import { createBlankDocument } from '../../../../util/doc.js';
14
- import type { RelationComponentProps, RelationFieldItem } from '../types.js';
15
-
16
- const {
17
- isFull,
18
- hasError,
19
- addValue,
20
- many,
21
- selectedItems,
22
- removeValue,
23
- availableItems,
24
- readOnly,
25
- nothingToSelect,
26
- relationConfig,
27
- onOrderChange,
28
- formNestedLevel,
29
- onRelationCreated,
30
- onRelationCreation,
31
- onRelationCreationCanceled
32
- }: RelationComponentProps = $props();
33
-
34
- const user = getUserContext();
35
-
36
- let search = $state('');
37
- let relationList: HTMLElement;
38
- let inputFocused = $state(false);
39
- let create = $state(false);
40
- let commandInput = $state<HTMLInputElement>();
41
-
42
- const onNestedDocumentCreated = (doc: GenericDoc) => {
43
- create = false;
44
- onRelationCreated(doc);
45
- addValue(doc.id);
46
- };
47
-
48
- const { sortable } = useSortable({
49
- animation: 150,
50
- filter: '.rz-command-input .rz-command-list',
51
- draggable: '.rz-relation__item',
52
- onEnd: function (evt) {
53
- if (evt.oldIndex !== undefined && evt.newIndex !== undefined) {
54
- onOrderChange(evt.oldIndex, evt.newIndex);
55
- }
56
- }
57
- });
58
-
59
- $effect(() => {
60
- if (many) {
61
- sortable(relationList);
62
- }
63
- });
64
-
65
- const onSelect = (item: RelationFieldItem) => {
66
- addValue(item.documentId);
67
- search = '';
68
- };
69
-
70
- const inputWithItemsClass = $derived(
71
- selectedItems.length === 0 ? '' : 'rz-command-input-select--with-items'
72
- );
2
+ import { t__ } from '../../../../core/i18n/index.js';
3
+ import type { GenericDoc } from '../../../../core/types/doc.js';
4
+ import Document from '../../../../panel/components/sections/document/Document.svelte';
5
+ import Button from '../../../../panel/components/ui/button/button.svelte';
6
+ import * as Command from '../../../../panel/components/ui/command/index.js';
7
+ import * as Sheet from '../../../../panel/components/ui/sheet/index.js';
8
+ import Tag from '../../../../panel/components/ui/tag/tag.svelte';
9
+ import { getUserContext } from '../../../../panel/context/user.svelte.js';
10
+ import { dataError } from '../../../../panel/util/dataError.js';
11
+ import { dataFocused } from '../../../../panel/util/dataFocused.js';
12
+ import { useSortable } from '../../../../panel/util/Sortable.js';
13
+ import { createBlankDocument } from '../../../../util/doc.js';
14
+ import type { RelationComponentProps, RelationFieldItem } from '../types.js';
15
+
16
+ const {
17
+ isFull,
18
+ hasError,
19
+ addValue,
20
+ many,
21
+ selectedItems,
22
+ removeValue,
23
+ availableItems,
24
+ readOnly,
25
+ nothingToSelect,
26
+ relationConfig,
27
+ onOrderChange,
28
+ formNestedLevel,
29
+ onRelationCreated,
30
+ onRelationCreation,
31
+ onRelationCreationCanceled
32
+ }: RelationComponentProps = $props();
33
+
34
+ const user = getUserContext();
35
+
36
+ let search = $state('');
37
+ let relationList: HTMLElement;
38
+ let inputFocused = $state(false);
39
+ let create = $state(false);
40
+ let commandInput = $state<HTMLInputElement>();
41
+
42
+ const onNestedDocumentCreated = (doc: GenericDoc) => {
43
+ create = false;
44
+ onRelationCreated(doc);
45
+ addValue(doc.id);
46
+ };
47
+
48
+ const { sortable } = useSortable({
49
+ animation: 150,
50
+ filter: '.rz-command-input .rz-command-list',
51
+ draggable: '.rz-relation__item',
52
+ onEnd: function (evt) {
53
+ if (evt.oldIndex !== undefined && evt.newIndex !== undefined) {
54
+ onOrderChange(evt.oldIndex, evt.newIndex);
55
+ }
56
+ }
57
+ });
58
+
59
+ $effect(() => {
60
+ if (many) {
61
+ sortable(relationList);
62
+ }
63
+ });
64
+
65
+ const onSelect = (item: RelationFieldItem) => {
66
+ addValue(item.documentId);
67
+ search = '';
68
+ };
69
+
70
+ const inputWithItemsClass = $derived(
71
+ selectedItems.length === 0 ? '' : 'rz-command-input-select--with-items'
72
+ );
73
73
  </script>
74
74
 
75
75
  <div class="rz-relation">
76
- <Command.Root>
77
- <div
78
- class="rz-relation__list"
79
- use:dataError={hasError}
80
- use:dataFocused={inputFocused}
81
- bind:this={relationList}
82
- class:rz-relation__list--readonly={readOnly}
83
- >
84
- {#each selectedItems as item (item.documentId)}
85
- <Tag onRemove={() => removeValue(item.documentId)} {readOnly}>
86
- <a href={item.editUrl}>{item.title}</a>
87
- </Tag>
88
- {/each}
89
-
90
- {#if nothingToSelect}
91
- <span class="rz-relation__no-items">
92
- No {relationConfig.label.singular.toLowerCase()} to select
93
- </span>
94
- {/if}
95
-
96
- {#if !readOnly && !isFull && availableItems.length > 0}
97
- <Command.InputSelect
98
- onfocus={() => (inputFocused = true)}
99
- onblur={() => setTimeout(() => (inputFocused = false), 150)}
100
- ref={commandInput}
101
- class={inputWithItemsClass}
102
- bind:value={search}
103
- placeholder={relationConfig.label.search ||
104
- t__(`common.search_a`, relationConfig.label.singular)}
105
- />
106
-
107
- {#if inputFocused}
108
- <Command.List>
109
- {#each availableItems as item, index (item.documentId)}
110
- <Command.Item value="{item.title}-{index}" onSelect={() => onSelect(item)}>
111
- <span>{item.title}</span>
112
- </Command.Item>
113
- {/each}
114
- <Command.Empty>Nothing to select</Command.Empty>
115
- </Command.List>
116
- {/if}
117
- {/if}
118
- </div>
119
- </Command.Root>
120
-
121
- {#if relationConfig.access.create && relationConfig.access.create(user.attributes, {}) && !isFull}
122
- <Button
123
- class="rz-relation__create-button"
124
- onclick={() => {
125
- onRelationCreation();
126
- create = true;
127
- }}
128
- variant="secondary"
129
- size="sm"
130
- >
131
- {t__(`common.create_new`, relationConfig.label.singular || relationConfig.slug)}
132
- </Button>
133
-
134
- <Sheet.Root
135
- bind:open={create}
136
- onOpenChange={(bool) => {
137
- create = bool;
138
- if (bool === false) {
139
- onRelationCreationCanceled();
140
- }
141
- }}
142
- >
143
- <Sheet.Trigger />
144
- <Sheet.Content style="--rz-page-gutter:var(--rz-size-6)" side="right" showCloseButton={false}>
145
- <Document
146
- doc={createBlankDocument(relationConfig)}
147
- readOnly={false}
148
- onClose={() => (create = false)}
149
- operation="create"
150
- {onNestedDocumentCreated}
151
- nestedLevel={formNestedLevel + 1}
152
- />
153
- </Sheet.Content>
154
- </Sheet.Root>
155
- {/if}
76
+ <Command.Root>
77
+ <div
78
+ class="rz-relation__list"
79
+ use:dataError={hasError}
80
+ use:dataFocused={inputFocused}
81
+ bind:this={relationList}
82
+ class:rz-relation__list--readonly={readOnly}
83
+ >
84
+ {#each selectedItems as item (item.documentId)}
85
+ <Tag onRemove={() => removeValue(item.documentId)} {readOnly}>
86
+ <a href={item.editUrl}>{item.title}</a>
87
+ </Tag>
88
+ {/each}
89
+
90
+ {#if nothingToSelect}
91
+ <span class="rz-relation__no-items">
92
+ No {relationConfig.label.singular.toLowerCase()} to select
93
+ </span>
94
+ {/if}
95
+
96
+ {#if !readOnly && !isFull && availableItems.length > 0}
97
+ <Command.InputSelect
98
+ onfocus={() => (inputFocused = true)}
99
+ onblur={() => setTimeout(() => (inputFocused = false), 150)}
100
+ ref={commandInput}
101
+ class={inputWithItemsClass}
102
+ bind:value={search}
103
+ placeholder={relationConfig.label.search ||
104
+ t__(`common.search_a`, relationConfig.label.singular)}
105
+ />
106
+
107
+ {#if inputFocused}
108
+ <Command.List>
109
+ {#each availableItems as item, index (item.documentId)}
110
+ <Command.Item value="{item.title}-{index}" onSelect={() => onSelect(item)}>
111
+ <span>{item.title}</span>
112
+ </Command.Item>
113
+ {/each}
114
+ <Command.Empty>Nothing to select</Command.Empty>
115
+ </Command.List>
116
+ {/if}
117
+ {/if}
118
+ </div>
119
+ </Command.Root>
120
+
121
+ {#if relationConfig.access.create && relationConfig.access.create(user.attributes, {}) && !isFull}
122
+ <Button
123
+ class="rz-relation__create-button"
124
+ onclick={() => {
125
+ onRelationCreation();
126
+ create = true;
127
+ }}
128
+ variant="secondary"
129
+ size="sm"
130
+ >
131
+ {t__(`common.create_new`, relationConfig.label.singular || relationConfig.slug)}
132
+ </Button>
133
+
134
+ <Sheet.Root
135
+ bind:open={create}
136
+ onOpenChange={(bool) => {
137
+ create = bool;
138
+ if (bool === false) {
139
+ onRelationCreationCanceled();
140
+ }
141
+ }}
142
+ >
143
+ <Sheet.Trigger />
144
+ <Sheet.Content style="--rz-page-gutter:var(--rz-size-6)" side="right" showCloseButton={false}>
145
+ <Document
146
+ doc={createBlankDocument(relationConfig)}
147
+ readOnly={false}
148
+ onClose={() => (create = false)}
149
+ operation="create"
150
+ {onNestedDocumentCreated}
151
+ nestedLevel={formNestedLevel + 1}
152
+ />
153
+ </Sheet.Content>
154
+ </Sheet.Root>
155
+ {/if}
156
156
  </div>
157
157
 
158
158
  <style>/**************************************/
@@ -162,71 +162,71 @@
162
162
  /**************************************/
163
163
 
164
164
  .rz-relation {
165
- position: relative;
166
-
167
- :global {
168
- > * + * {
169
- margin-top: var(--rz-size-2);
170
- }
171
- .rz-command {
172
- width: 100%;
173
- border-radius: var(--rz-radius-md);
174
-
175
- .rz-command-input-select--with-items {
176
- margin-left: var(--rz-size-2);
177
- }
178
-
179
- .rz-command-list {
180
- border: var(--rz-border);
181
- position: absolute;
182
- left: 0;
183
- right: 0;
184
- top: var(--rz-size-12);
185
- z-index: 20;
186
- border-radius: var(--rz-radius-md);
187
- box-shadow: var(--rz-shadow-md);
188
- }
189
-
190
- .rz-command-item {
191
- height: var(--rz-size-11);
192
- }
193
- }
194
- }
195
-
196
- .rz-relation__no-items {
197
- font-size: var(--rz-text-sm);
198
- opacity: 0.4;
199
- }
200
-
201
- .rz-relation__list {
202
- background-color: hsl(var(--rz-input-bg));
203
- border: 1px solid var(--rz-input-border-color);
204
- border-radius: var(--rz-radius-md);
205
- display: flex;
206
- flex-wrap: wrap;
207
- align-items: center;
208
- gap: var(--rz-size-1);
209
- min-height: var(--rz-size-11);
210
- padding: var(--rz-size-2) var(--rz-size-3);
211
- transition: all 0.2s ease;
212
- }
213
-
214
- .rz-relation__list:global([data-focused]) {
215
- outline: none;
216
- /* --rz-ring-offset: 2px; */
217
- box-shadow:
218
- 0 0 0 var(--rz-ring-offset, 0px) hsl(var(--rz-ring-offset-bg, var(--rz-gray-6)) / 1),
219
- 0 0 0 calc(var(--rz-ring-offset, 0px) + 1px) hsl(var(--rz-color-ring) / var(--rz-ring-opacity, 1));
220
- }
221
-
222
- .rz-relation__list:global([data-error]) {
223
- box-shadow:
224
- 0 0 0 var(--rz-ring-offset, 0px) hsl(var(--rz-ring-offset-bg, var(--rz-gray-6)) / 1),
225
- 0 0 0 calc(var(--rz-ring-offset, 0px) + 1px) hsl(var(--rz-color-alert) / var(--rz-ring-opacity, 1));
226
- }
227
-
228
- .rz-relation__list--readonly {
229
- cursor: no-drop;
230
- }
231
- }
165
+ position: relative;
166
+
167
+ :global {
168
+ > * + * {
169
+ margin-top: var(--rz-size-2);
170
+ }
171
+ .rz-command {
172
+ width: 100%;
173
+ border-radius: var(--rz-radius-md);
174
+
175
+ .rz-command-input-select--with-items {
176
+ margin-left: var(--rz-size-2);
177
+ }
178
+
179
+ .rz-command-list {
180
+ border: var(--rz-border);
181
+ position: absolute;
182
+ left: 0;
183
+ right: 0;
184
+ top: var(--rz-size-12);
185
+ z-index: 20;
186
+ border-radius: var(--rz-radius-md);
187
+ box-shadow: var(--rz-shadow-md);
188
+ }
189
+
190
+ .rz-command-item {
191
+ height: var(--rz-size-11);
192
+ }
193
+ }
194
+ }
195
+
196
+ .rz-relation__no-items {
197
+ font-size: var(--rz-text-sm);
198
+ opacity: 0.4;
199
+ }
200
+
201
+ .rz-relation__list {
202
+ background-color: hsl(var(--rz-input-bg));
203
+ border: 1px solid var(--rz-input-border-color);
204
+ border-radius: var(--rz-radius-md);
205
+ display: flex;
206
+ flex-wrap: wrap;
207
+ align-items: center;
208
+ gap: var(--rz-size-1);
209
+ min-height: var(--rz-size-11);
210
+ padding: var(--rz-size-2) var(--rz-size-3);
211
+ transition: all 0.2s ease;
212
+ }
213
+
214
+ .rz-relation__list:global([data-focused]) {
215
+ outline: none;
216
+ /* --rz-ring-offset: 2px; */
217
+ box-shadow:
218
+ 0 0 0 var(--rz-ring-offset, 0px) hsl(var(--rz-ring-offset-bg, var(--rz-gray-6)) / 1),
219
+ 0 0 0 calc(var(--rz-ring-offset, 0px) + 1px) hsl(var(--rz-color-ring) / var(--rz-ring-opacity, 1));
220
+ }
221
+
222
+ .rz-relation__list:global([data-error]) {
223
+ box-shadow:
224
+ 0 0 0 var(--rz-ring-offset, 0px) hsl(var(--rz-ring-offset-bg, var(--rz-gray-6)) / 1),
225
+ 0 0 0 calc(var(--rz-ring-offset, 0px) + 1px) hsl(var(--rz-color-alert) / var(--rz-ring-opacity, 1));
226
+ }
227
+
228
+ .rz-relation__list--readonly {
229
+ cursor: no-drop;
230
+ }
231
+ }
232
232
  </style>