@rebasepro/admin 0.0.1-canary.eae7889 → 0.1.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 (197) hide show
  1. package/dist/{CollectionEditorDialog-B2M9lCyL.js → CollectionEditorDialog-MbvXGzEq.js} +42 -31
  2. package/dist/CollectionEditorDialog-MbvXGzEq.js.map +1 -0
  3. package/dist/{CollectionsStudioView-WG6soyfs.js → CollectionsStudioView-D9X6aiAr.js} +12 -12
  4. package/dist/CollectionsStudioView-D9X6aiAr.js.map +1 -0
  5. package/dist/{ContentHomePage-CDF_a6Lp.js → ContentHomePage-CfVB1eUo.js} +26 -26
  6. package/dist/ContentHomePage-CfVB1eUo.js.map +1 -0
  7. package/dist/{ExportCollectionAction-Dc0VOWMN.js → ExportCollectionAction-CUwJg4F9.js} +2 -2
  8. package/dist/{ExportCollectionAction-Dc0VOWMN.js.map → ExportCollectionAction-CUwJg4F9.js.map} +1 -1
  9. package/dist/{ImportCollectionAction-DpCagAOy.js → ImportCollectionAction-DGa_SF_8.js} +2 -2
  10. package/dist/{ImportCollectionAction-DpCagAOy.js.map → ImportCollectionAction-DGa_SF_8.js.map} +1 -1
  11. package/dist/{PropertyEditView-DS67DxoT.js → PropertyEditView-C4nlYmAc.js} +82 -104
  12. package/dist/PropertyEditView-C4nlYmAc.js.map +1 -0
  13. package/dist/{RolesView-CIuYBimF.js → RolesView-CNWxnR8e.js} +7 -5
  14. package/dist/RolesView-CNWxnR8e.js.map +1 -0
  15. package/dist/{UsersView-B5zelXnH.js → UsersView-YiTIcXkA.js} +14 -35
  16. package/dist/UsersView-YiTIcXkA.js.map +1 -0
  17. package/dist/collection_editor/ConfigControllerProvider.d.ts +0 -4
  18. package/dist/collection_editor/types/collection_editor_controller.d.ts +6 -3
  19. package/dist/collection_editor/types/config_controller.d.ts +14 -7
  20. package/dist/collection_editor/ui/AddKanbanColumnAction.d.ts +3 -2
  21. package/dist/collection_editor/ui/CollectionViewHeaderAction.d.ts +3 -2
  22. package/dist/collection_editor/ui/EditorCollectionAction.d.ts +1 -1
  23. package/dist/collection_editor/ui/EditorCollectionActionStart.d.ts +1 -1
  24. package/dist/collection_editor/ui/EditorEntityAction.d.ts +1 -1
  25. package/dist/collection_editor/ui/KanbanSetupAction.d.ts +3 -2
  26. package/dist/collection_editor/ui/PropertyAddColumnComponent.d.ts +3 -2
  27. package/dist/collection_editor/ui/collection_editor/CollectionDetailsForm.d.ts +3 -4
  28. package/dist/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +2 -3
  29. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +1 -2
  30. package/dist/collection_editor/ui/collection_editor/SubcollectionsEditTab.d.ts +3 -2
  31. package/dist/collection_editor_ui.js +3 -3
  32. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  33. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +1 -1
  34. package/dist/components/EntityCollectionTable/column_utils.d.ts +2 -2
  35. package/dist/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +1 -1
  36. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
  37. package/dist/components/EntityCollectionTable/fields/TableRelationField.d.ts +1 -1
  38. package/dist/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +2 -2
  39. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +5 -1
  40. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +3 -2
  41. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +2 -1
  42. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +4 -2
  43. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +4 -2
  44. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +2 -2
  45. package/dist/components/EntityCollectionView/SplitListView.d.ts +3 -2
  46. package/dist/components/EntityEditView.d.ts +9 -2
  47. package/dist/components/RebaseCMS.d.ts +1 -1
  48. package/dist/components/ReferenceTable/EntitySelectionTable.d.ts +2 -2
  49. package/dist/components/ReferenceWidget.d.ts +2 -2
  50. package/dist/components/RelationSelector.d.ts +1 -1
  51. package/dist/components/SelectableTable/SelectableTable.d.ts +2 -2
  52. package/dist/editor.js +2 -2
  53. package/dist/editor.js.map +1 -1
  54. package/dist/hooks/navigation/useNavigationRegistry.d.ts +2 -1
  55. package/dist/hooks/useEntityHistory.d.ts +1 -1
  56. package/dist/{index-CHxgwt6E.js → index-CtzpHzMQ.js} +11 -4
  57. package/dist/index-CtzpHzMQ.js.map +1 -0
  58. package/dist/{index-Dey5WJpO.js → index-DKlrVD1m.js} +3 -3
  59. package/dist/index-DKlrVD1m.js.map +1 -0
  60. package/dist/{index-CBhrgpR7.js → index-kHJXfLNI.js} +3 -3
  61. package/dist/index-kHJXfLNI.js.map +1 -0
  62. package/dist/index.js +79 -63
  63. package/dist/index.js.map +1 -1
  64. package/dist/{useEntityHistory-Dcj4zhGj.js → useEntityHistory-UVsSclfZ.js} +3 -1
  65. package/dist/useEntityHistory-UVsSclfZ.js.map +1 -0
  66. package/dist/util/navigation_utils.d.ts +10 -1
  67. package/dist/{util-BQ82ySL3.js → util-CwLmSpGp.js} +1653 -1257
  68. package/dist/util-CwLmSpGp.js.map +1 -0
  69. package/package.json +9 -17
  70. package/src/collection_editor/ConfigControllerProvider.tsx +19 -28
  71. package/src/collection_editor/types/collection_editor_controller.tsx +3 -3
  72. package/src/collection_editor/types/config_controller.tsx +7 -7
  73. package/src/collection_editor/ui/AddKanbanColumnAction.tsx +4 -4
  74. package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +3 -3
  75. package/src/collection_editor/ui/EditorCollectionAction.tsx +3 -3
  76. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +7 -7
  77. package/src/collection_editor/ui/EditorEntityAction.tsx +3 -3
  78. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +4 -2
  79. package/src/collection_editor/ui/KanbanSetupAction.tsx +4 -3
  80. package/src/collection_editor/ui/MissingReferenceWidget.tsx +3 -2
  81. package/src/collection_editor/ui/NewCollectionButton.tsx +2 -1
  82. package/src/collection_editor/ui/NewCollectionCard.tsx +2 -1
  83. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +3 -3
  84. package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +5 -50
  85. package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +12 -20
  86. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +1 -3
  87. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +17 -2
  88. package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +3 -3
  89. package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +2 -1
  90. package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +18 -12
  91. package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +1 -2
  92. package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +1 -2
  93. package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +6 -6
  94. package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +4 -4
  95. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +2 -2
  96. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +15 -49
  97. package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +4 -5
  98. package/src/collection_editor/ui/collection_editor/templates/pages_template.ts +1 -1
  99. package/src/collection_editor/ui/collection_editor/templates/products_template.ts +2 -2
  100. package/src/components/DefaultAppBar.tsx +2 -2
  101. package/src/components/DefaultDrawer.tsx +25 -17
  102. package/src/components/DrawerNavigationGroup.tsx +4 -4
  103. package/src/components/DrawerNavigationItem.tsx +6 -6
  104. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +4 -4
  105. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +1 -1
  106. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +4 -4
  107. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  108. package/src/components/EntityCollectionTable/fields/TableMultipleRelationField.tsx +3 -3
  109. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +3 -3
  110. package/src/components/EntityCollectionTable/fields/TableRelationField.tsx +4 -4
  111. package/src/components/EntityCollectionTable/fields/TableRelationSelectorField.tsx +3 -3
  112. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +8 -2
  113. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +1 -1
  114. package/src/components/EntityCollectionTable/internal/common.tsx +5 -5
  115. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +1 -1
  116. package/src/components/EntityCollectionTable/table_bindings.tsx +45 -35
  117. package/src/components/EntityCollectionView/EntityBoardCard.tsx +18 -19
  118. package/src/components/EntityCollectionView/EntityCard.tsx +2 -2
  119. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +42 -14
  120. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +4 -3
  121. package/src/components/EntityCollectionView/EntityCollectionListView.tsx +157 -54
  122. package/src/components/EntityCollectionView/EntityCollectionView.tsx +169 -75
  123. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +23 -13
  124. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +21 -12
  125. package/src/components/EntityCollectionView/FiltersDialog.tsx +7 -7
  126. package/src/components/EntityCollectionView/SplitListView.tsx +24 -8
  127. package/src/components/EntityCollectionView/useEntityPreviewSlots.ts +33 -5
  128. package/src/components/EntityEditView.tsx +85 -85
  129. package/src/components/EntitySidePanel.tsx +18 -10
  130. package/src/components/HomePage/ContentHomePage.tsx +24 -15
  131. package/src/components/HomePage/NavigationCard.tsx +4 -4
  132. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  133. package/src/components/RebaseAuthGate.tsx +2 -0
  134. package/src/components/RebaseCMS.tsx +4 -3
  135. package/src/components/RebaseNavigation.tsx +8 -5
  136. package/src/components/ReferenceTable/EntitySelectionTable.tsx +4 -4
  137. package/src/components/ReferenceWidget.tsx +3 -3
  138. package/src/components/RelationSelector.tsx +33 -5
  139. package/src/components/SelectableTable/SelectableTable.tsx +6 -6
  140. package/src/components/UserSelector.tsx +1 -1
  141. package/src/components/admin/RolesView.tsx +10 -3
  142. package/src/components/admin/UsersView.tsx +13 -25
  143. package/src/components/app/Scaffold.tsx +4 -4
  144. package/src/components/field_configs.tsx +29 -32
  145. package/src/components/history/EntityHistoryView.tsx +12 -1
  146. package/src/editor/editor.tsx +2 -2
  147. package/src/form/EntityForm.tsx +5 -4
  148. package/src/form/PropertyFieldBinding.tsx +14 -10
  149. package/src/form/components/FieldHelperText.tsx +1 -1
  150. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +3 -3
  151. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +5 -5
  152. package/src/form/field_bindings/BlockFieldBinding.tsx +4 -4
  153. package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -1
  154. package/src/form/field_bindings/KeyValueFieldBinding.tsx +1 -1
  155. package/src/form/field_bindings/MapFieldBinding.tsx +7 -7
  156. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +1 -1
  157. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +3 -3
  158. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +7 -7
  159. package/src/form/field_bindings/ReferenceFieldBinding.tsx +2 -2
  160. package/src/form/field_bindings/RelationFieldBinding.tsx +4 -4
  161. package/src/form/field_bindings/RepeatFieldBinding.tsx +5 -5
  162. package/src/form/field_bindings/SelectFieldBinding.tsx +1 -1
  163. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +1 -1
  164. package/src/form/field_bindings/SwitchFieldBinding.tsx +1 -1
  165. package/src/form/field_bindings/TextFieldBinding.tsx +7 -7
  166. package/src/form/field_bindings/UserSelectFieldBinding.tsx +1 -1
  167. package/src/form/useClearRestoreValue.tsx +1 -1
  168. package/src/form/validation.ts +1 -1
  169. package/src/hooks/navigation/contexts/CollectionRegistryContext.tsx +2 -1
  170. package/src/hooks/navigation/useBuildCollectionRegistryController.tsx +15 -3
  171. package/src/hooks/navigation/useNavigationRegistry.ts +14 -3
  172. package/src/hooks/navigation/useResolvedViews.tsx +1 -3
  173. package/src/hooks/navigation/useTopLevelNavigation.ts +1 -1
  174. package/src/hooks/navigation/utils.ts +1 -1
  175. package/src/hooks/useEntityHistory.ts +7 -2
  176. package/src/preview/PropertyPreview.tsx +27 -23
  177. package/src/preview/components/StorageThumbnail.tsx +4 -1
  178. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -1
  179. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +1 -1
  180. package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +1 -1
  181. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +3 -3
  182. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  183. package/src/routes/RebaseRoute.tsx +57 -11
  184. package/src/util/navigation_utils.ts +21 -2
  185. package/src/util/previews.ts +15 -6
  186. package/src/util/property_utils.tsx +3 -3
  187. package/dist/CollectionEditorDialog-B2M9lCyL.js.map +0 -1
  188. package/dist/CollectionsStudioView-WG6soyfs.js.map +0 -1
  189. package/dist/ContentHomePage-CDF_a6Lp.js.map +0 -1
  190. package/dist/PropertyEditView-DS67DxoT.js.map +0 -1
  191. package/dist/RolesView-CIuYBimF.js.map +0 -1
  192. package/dist/UsersView-B5zelXnH.js.map +0 -1
  193. package/dist/index-CBhrgpR7.js.map +0 -1
  194. package/dist/index-CHxgwt6E.js.map +0 -1
  195. package/dist/index-Dey5WJpO.js.map +0 -1
  196. package/dist/useEntityHistory-Dcj4zhGj.js.map +0 -1
  197. package/dist/util-BQ82ySL3.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rebasepro/admin",
3
3
  "type": "module",
4
- "version": "0.0.1-canary.eae7889",
4
+ "version": "0.1.0",
5
5
  "description": "Rebase CMS — content management views, forms, and routing",
6
6
  "funding": {
7
7
  "url": "https://github.com/sponsors/rebaseco"
@@ -52,7 +52,7 @@
52
52
  "@radix-ui/react-portal": "^1.1.10",
53
53
  "@radix-ui/react-slot": "^1.2.4",
54
54
  "date-fns": "^3.6.0",
55
- "fast-equals": "5.3.0",
55
+ "fast-equals": "6.0.0",
56
56
  "fractional-indexing": "3.2.0",
57
57
  "json5": "^2.2.3",
58
58
  "markdown-it": "^14.1.0",
@@ -75,16 +75,15 @@
75
75
  "prosemirror-view": "^1.33.8",
76
76
  "react-dropzone": "^14.3.8",
77
77
  "react-use-measure": "^2.1.7",
78
- "react-window": "^1.8.11",
79
78
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz",
80
79
  "zod": "^3.25.0",
81
- "@rebasepro/common": "0.0.1-canary.eae7889",
82
- "@rebasepro/core": "0.0.1-canary.eae7889",
83
- "@rebasepro/formex": "0.0.1-canary.eae7889",
84
- "@rebasepro/schema-inference": "0.0.1-canary.eae7889",
85
- "@rebasepro/ui": "0.0.1-canary.eae7889",
86
- "@rebasepro/utils": "0.0.1-canary.eae7889",
87
- "@rebasepro/types": "0.0.1-canary.eae7889"
80
+ "@rebasepro/core": "0.1.0",
81
+ "@rebasepro/common": "0.1.0",
82
+ "@rebasepro/formex": "0.1.0",
83
+ "@rebasepro/ui": "0.1.0",
84
+ "@rebasepro/types": "0.1.0",
85
+ "@rebasepro/utils": "0.1.0",
86
+ "@rebasepro/schema-inference": "0.1.0"
88
87
  },
89
88
  "peerDependencies": {
90
89
  "react": ">=19.0.0",
@@ -95,24 +94,17 @@
95
94
  "devDependencies": {
96
95
  "@jest/globals": "^30.2.0",
97
96
  "@testing-library/react": "^16.3.0",
98
- "@testing-library/user-event": "^14.6.1",
99
97
  "@types/jest": "^29.5.14",
100
98
  "@types/node": "^20.19.17",
101
99
  "@types/react": "^19.0.8",
102
100
  "@types/react-dom": "^19.0.3",
103
101
  "@types/react-measure": "^2.0.12",
104
102
  "@vitejs/plugin-react": "^4.3.4",
105
- "babel-plugin-react-compiler": "beta",
106
- "cross-env": "^7.0.3",
107
103
  "eslint-plugin-react-compiler": "^19.1.0-rc.2",
108
104
  "jest": "^29.7.0",
109
- "jest-environment-jsdom": "^30.2.0",
110
- "npm-run-all": "^4.1.5",
111
105
  "react-router": "^7.0.0",
112
106
  "react-router-dom": "^7.0.0",
113
107
  "ts-jest": "^29.4.5",
114
- "ts-node": "^10.9.2",
115
- "tsd": "^0.31.2",
116
108
  "typescript": "^5.9.3",
117
109
  "vite": "^7.2.4"
118
110
  },
@@ -32,11 +32,6 @@ export interface ConfigControllerProviderProps {
32
32
  */
33
33
  configPermissions?: CollectionEditorPermissionsBuilder;
34
34
 
35
- /**
36
- * Groups that cannot be used to create new collections.
37
- */
38
- reservedGroups?: string[];
39
-
40
35
  extraView?: {
41
36
  View: React.ComponentType<{
42
37
  path: string
@@ -65,7 +60,6 @@ export const ConfigControllerProvider = React.memo(
65
60
  children,
66
61
  collectionConfigController,
67
62
  configPermissions,
68
- reservedGroups,
69
63
  collectionInference,
70
64
  extraView,
71
65
  getUser,
@@ -102,10 +96,9 @@ export const ConfigControllerProvider = React.memo(
102
96
  parentCollection?: EntityCollection,
103
97
  editedCollectionId?: string,
104
98
  path?: string,
105
- parentCollectionIds: string[],
99
+ parentCollectionSlugs: string[], parentEntityIds: string[],
106
100
  initialValues?: {
107
101
  path?: string,
108
- group?: string,
109
102
  name?: string
110
103
  },
111
104
  copyFrom?: EntityCollection,
@@ -124,7 +117,7 @@ export const ConfigControllerProvider = React.memo(
124
117
  currentPropertiesOrder?: string[],
125
118
  editedCollectionId: string,
126
119
  path?: string,
127
- parentCollectionIds: string[],
120
+ parentCollectionSlugs: string[], parentEntityIds: string[],
128
121
 
129
122
  existingEntities?: Entity[];
130
123
  collection?: EntityCollection;
@@ -139,7 +132,7 @@ export const ConfigControllerProvider = React.memo(
139
132
  const editCollection = useCallback(({
140
133
  id,
141
134
  path,
142
- parentCollectionIds,
135
+ parentCollectionSlugs, parentEntityIds,
143
136
  parentCollection,
144
137
  existingEntities,
145
138
  initialView,
@@ -147,13 +140,13 @@ export const ConfigControllerProvider = React.memo(
147
140
  }: {
148
141
  id?: string,
149
142
  path?: string,
150
- parentCollectionIds: string[],
143
+ parentCollectionSlugs: string[], parentEntityIds: string[],
151
144
  parentCollection?: EntityCollection,
152
145
  existingEntities?: Entity[],
153
146
  initialView?: "general" | "display" | "properties",
154
147
  expandKanban?: boolean
155
148
  }) => {
156
- console.debug("Edit collection", id, path, parentCollectionIds, parentCollection);
149
+ console.debug("Edit collection", id, path, parentCollectionSlugs, parentEntityIds, parentCollection);
157
150
  onAnalyticsEvent?.("edit_collection", {
158
151
  id,
159
152
  path
@@ -161,7 +154,7 @@ export const ConfigControllerProvider = React.memo(
161
154
  setCurrentDialog({
162
155
  editedCollectionId: id,
163
156
  path,
164
- parentCollectionIds,
157
+ parentCollectionSlugs, parentEntityIds,
165
158
  isNewCollection: false,
166
159
  parentCollection,
167
160
  redirect: false,
@@ -177,7 +170,7 @@ export const ConfigControllerProvider = React.memo(
177
170
  property,
178
171
  editedCollectionId,
179
172
  currentPropertiesOrder,
180
- parentCollectionIds,
173
+ parentCollectionSlugs, parentEntityIds,
181
174
  collection,
182
175
  existingEntities
183
176
  }: {
@@ -185,11 +178,11 @@ export const ConfigControllerProvider = React.memo(
185
178
  property?: Property,
186
179
  currentPropertiesOrder?: string[],
187
180
  editedCollectionId: string,
188
- parentCollectionIds: string[],
181
+ parentCollectionSlugs: string[], parentEntityIds: string[],
189
182
  collection: EntityCollection,
190
183
  existingEntities?: Entity[]
191
184
  }) => {
192
- console.debug("Edit property", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);
185
+ console.debug("Edit property", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionSlugs, parentEntityIds, collection);
193
186
  onAnalyticsEvent?.("edit_property", {
194
187
  propertyKey,
195
188
  editedCollectionId
@@ -207,7 +200,7 @@ export const ConfigControllerProvider = React.memo(
207
200
  namespace,
208
201
  currentPropertiesOrder,
209
202
  editedCollectionId,
210
- parentCollectionIds,
203
+ parentCollectionSlugs, parentEntityIds,
211
204
 
212
205
  existingEntities,
213
206
  collection
@@ -215,17 +208,16 @@ export const ConfigControllerProvider = React.memo(
215
208
  }, [onAnalyticsEvent]);
216
209
 
217
210
  const createCollection = useCallback(({
218
- parentCollectionIds,
211
+ parentCollectionSlugs, parentEntityIds,
219
212
  parentCollection,
220
213
  initialValues,
221
214
  copyFrom,
222
215
  redirect,
223
216
  sourceClick
224
217
  }: {
225
- parentCollectionIds: string[],
218
+ parentCollectionSlugs: string[], parentEntityIds: string[],
226
219
  parentCollection?: EntityCollection
227
220
  initialValues?: {
228
- group?: string,
229
221
  path?: string,
230
222
  name?: string
231
223
  },
@@ -234,7 +226,7 @@ export const ConfigControllerProvider = React.memo(
234
226
  sourceClick?: string
235
227
  }) => {
236
228
  console.debug("Create collection", {
237
- parentCollectionIds,
229
+ parentCollectionSlugs, parentEntityIds,
238
230
  parentCollection,
239
231
  initialValues,
240
232
  copyFrom,
@@ -242,7 +234,7 @@ export const ConfigControllerProvider = React.memo(
242
234
  sourceClick
243
235
  });
244
236
  onAnalyticsEvent?.(copyFrom ? "duplicate_collection" : "create_collection", {
245
- parentCollectionIds,
237
+ parentCollectionSlugs, parentEntityIds,
246
238
  parentCollection,
247
239
  initialValues,
248
240
  redirect,
@@ -250,7 +242,7 @@ export const ConfigControllerProvider = React.memo(
250
242
  });
251
243
  setCurrentDialog({
252
244
  isNewCollection: true,
253
- parentCollectionIds,
245
+ parentCollectionSlugs, parentEntityIds,
254
246
  parentCollection,
255
247
  initialValues,
256
248
  copyFrom,
@@ -270,7 +262,6 @@ export const ConfigControllerProvider = React.memo(
270
262
  collectionInference,
271
263
  ...currentDialog,
272
264
  getData,
273
- reservedGroups,
274
265
  extraView,
275
266
  getUser,
276
267
  generateCollection,
@@ -279,7 +270,7 @@ export const ConfigControllerProvider = React.memo(
279
270
  onFetchTableMetadata,
280
271
  handleClose: (collection?: EntityCollection) => {
281
272
  if (currentDialog?.redirect) {
282
- if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {
273
+ if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionSlugs.length) {
283
274
  const url = urlController.buildUrlCollectionPath(collection.slug);
284
275
  navigate(url);
285
276
  }
@@ -289,7 +280,7 @@ export const ConfigControllerProvider = React.memo(
289
280
  };
290
281
  }, [
291
282
  currentDialog, collectionConfigController, collectionInference,
292
- getData, reservedGroups, extraView, getUser, generateCollection,
283
+ getData, extraView, getUser, generateCollection,
293
284
  onAnalyticsEvent, unmappedTables, onFetchTableMetadata,
294
285
  urlController, navigate
295
286
  ]);
@@ -331,7 +322,7 @@ export const ConfigControllerProvider = React.memo(
331
322
  propertyKey: id,
332
323
  newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,
333
324
  namespace: currentPropertyDialog.namespace,
334
- parentCollectionIds: currentPropertyDialog.parentCollectionIds
325
+ parentCollectionSlugs: currentPropertyDialog.parentCollectionSlugs
335
326
  })
336
327
  .catch((e: any) => {
337
328
  console.error(e);
@@ -351,7 +342,7 @@ export const ConfigControllerProvider = React.memo(
351
342
  propertyKey: currentPropertyDialog.propertyKey,
352
343
  namespace: currentPropertyDialog.namespace,
353
344
  newPropertiesOrder,
354
- parentCollectionIds: currentPropertyDialog.parentCollectionIds
345
+ parentCollectionSlugs: currentPropertyDialog.parentCollectionSlugs
355
346
  })
356
347
  .then(() => {
357
348
  setCurrentPropertyDialog(undefined);
@@ -11,7 +11,7 @@ export interface CollectionEditorController {
11
11
  editCollection: (props: {
12
12
  id?: string,
13
13
  path?: string,
14
- parentCollectionIds: string[],
14
+ parentCollectionSlugs: string[], parentEntityIds: string[],
15
15
  parentCollection?: EntityCollection,
16
16
  existingEntities?: Entity<any>[],
17
17
  /**
@@ -36,7 +36,7 @@ export interface CollectionEditorController {
36
36
  * pre-populated with the same properties (but with empty name, path, and id).
37
37
  */
38
38
  copyFrom?: EntityCollection,
39
- parentCollectionIds: string[],
39
+ parentCollectionSlugs: string[], parentEntityIds: string[],
40
40
  parentCollection?: EntityCollection,
41
41
  redirect: boolean,
42
42
  sourceClick?: string
@@ -47,7 +47,7 @@ export interface CollectionEditorController {
47
47
  property?: Property,
48
48
  currentPropertiesOrder?: string[],
49
49
  editedCollectionId: string,
50
- parentCollectionIds: string[],
50
+ parentCollectionSlugs: string[], parentEntityIds: string[],
51
51
  collection: EntityCollection,
52
52
  existingEntities: Entity<any>[]
53
53
  }) => void;
@@ -61,14 +61,14 @@ export type UpdateCollectionParams<M extends Record<string, unknown> = Record<st
61
61
  id: string,
62
62
  collectionData: Partial<EntityCollection<M>>,
63
63
  previousId?: string,
64
- parentCollectionIds?: string[]
64
+ parentCollectionSlugs?: string[], parentEntityIds?: string[]
65
65
  }
66
66
 
67
67
  export type SaveCollectionParams<M extends Record<string, unknown> = Record<string, unknown>> = {
68
68
  id: string,
69
69
  collectionData: EntityCollection<M>,
70
70
  previousId?: string,
71
- parentCollectionIds?: string[]
71
+ parentCollectionSlugs?: string[], parentEntityIds?: string[]
72
72
  }
73
73
 
74
74
  export type SavePropertyParams = {
@@ -77,7 +77,7 @@ export type SavePropertyParams = {
77
77
  namespace?: string,
78
78
  newPropertiesOrder?: string[],
79
79
  property: Property,
80
- parentCollectionIds?: string[]
80
+ parentCollectionSlugs?: string[], parentEntityIds?: string[]
81
81
  }
82
82
 
83
83
  export type DeletePropertyParams = {
@@ -85,24 +85,24 @@ export type DeletePropertyParams = {
85
85
  propertyKey: string,
86
86
  namespace?: string,
87
87
  newPropertiesOrder?: string[],
88
- parentCollectionIds?: string[]
88
+ parentCollectionSlugs?: string[], parentEntityIds?: string[]
89
89
  }
90
90
 
91
91
  export type DeleteCollectionParams = {
92
92
  id: string,
93
- parentCollectionIds?: string[]
93
+ parentCollectionSlugs?: string[], parentEntityIds?: string[]
94
94
  }
95
95
 
96
96
  export type UpdatePropertiesOrderParams = {
97
97
  fullPath: string;
98
- parentCollectionIds: string[];
98
+ parentCollectionSlugs: string[], parentEntityIds: string[];
99
99
  collection: EntityCollection;
100
100
  newPropertiesOrder: string[];
101
101
  }
102
102
 
103
103
  export type UpdateKanbanColumnsOrderParams = {
104
104
  fullPath: string;
105
- parentCollectionIds: string[];
105
+ parentCollectionSlugs: string[], parentEntityIds: string[];
106
106
  collection: EntityCollection;
107
107
  kanbanColumnProperty: string;
108
108
  newColumnsOrder: string[];
@@ -20,12 +20,12 @@ import { toSnakeCase } from "@rebasepro/utils";
20
20
  export function AddKanbanColumnAction({
21
21
  collection,
22
22
  fullPath,
23
- parentCollectionIds,
23
+ parentCollectionSlugs, parentEntityIds,
24
24
  columnProperty
25
25
  }: {
26
26
  collection: EntityCollection;
27
27
  fullPath: string;
28
- parentCollectionIds: string[];
28
+ parentCollectionSlugs: string[], parentEntityIds: string[];
29
29
  columnProperty: string;
30
30
  }) {
31
31
  const [dialogOpen, setDialogOpen] = useState(false);
@@ -111,7 +111,7 @@ export function AddKanbanColumnAction({
111
111
  path: fullPath,
112
112
  propertyKey: columnProperty,
113
113
  property: updatedProperty as StringProperty,
114
- parentCollectionIds
114
+ parentCollectionSlugs
115
115
  });
116
116
 
117
117
  setNewValueLabel("");
@@ -121,7 +121,7 @@ export function AddKanbanColumnAction({
121
121
  } finally {
122
122
  setSaving(false);
123
123
  }
124
- }, [newValueLabel, configController, collection, columnProperty, fullPath, parentCollectionIds]);
124
+ }, [newValueLabel, configController, collection, columnProperty, fullPath, parentCollectionSlugs]);
125
125
 
126
126
  const handleKeyDown = (e: React.KeyboardEvent) => {
127
127
  if (e.key === "Enter" && newValueLabel.trim()) {
@@ -10,7 +10,7 @@ export function CollectionViewHeaderAction({
10
10
  onHover,
11
11
  property,
12
12
  path,
13
- parentCollectionIds,
13
+ parentCollectionSlugs, parentEntityIds,
14
14
  collection,
15
15
  tableController
16
16
  }: {
@@ -18,7 +18,7 @@ export function CollectionViewHeaderAction({
18
18
  propertyKey: string,
19
19
  onHover: boolean,
20
20
  path: string,
21
- parentCollectionIds: string[],
21
+ parentCollectionSlugs: string[], parentEntityIds: string[],
22
22
  collection: EntityCollection;
23
23
  tableController: EntityTableController;
24
24
  }) {
@@ -37,7 +37,7 @@ export function CollectionViewHeaderAction({
37
37
  propertyKey,
38
38
  property,
39
39
  editedCollectionId: collection.slug,
40
- parentCollectionIds,
40
+ parentCollectionSlugs, parentEntityIds,
41
41
  collection,
42
42
  existingEntities: tableController.data ?? []
43
43
  });
@@ -8,7 +8,7 @@ import { useCollectionEditorController } from "../useCollectionEditorController"
8
8
 
9
9
  export function EditorCollectionAction({
10
10
  path,
11
- parentCollectionIds,
11
+ parentCollectionSlugs, parentEntityIds,
12
12
  collection,
13
13
  tableController
14
14
  }: CollectionActionsProps) {
@@ -18,7 +18,7 @@ export function EditorCollectionAction({
18
18
  const collectionEditorController = useCollectionEditorController();
19
19
  const { t } = useTranslation();
20
20
 
21
- const parentCollection = parentCollectionIds.length > 0 ? collectionRegistry.getCollection(parentCollectionIds[parentCollectionIds.length - 1]) : undefined;
21
+ const parentCollection = parentCollectionSlugs.length > 0 ? collectionRegistry.getCollection(parentCollectionSlugs[parentCollectionSlugs.length - 1]) : undefined;
22
22
 
23
23
  const canEditCollection = !collectionEditorController.configController?.readOnly && (collectionEditorController.configPermissions
24
24
  ? collectionEditorController.configPermissions({
@@ -42,7 +42,7 @@ export function EditorCollectionAction({
42
42
  ? () => collectionEditorController?.editCollection({
43
43
  id: collection.slug,
44
44
  path,
45
- parentCollectionIds,
45
+ parentCollectionSlugs, parentEntityIds,
46
46
  parentCollection: parentCollection as EntityCollection,
47
47
  existingEntities: tableController?.data ?? []
48
48
  })
@@ -15,7 +15,7 @@ import { mergeDeep } from "@rebasepro/utils";
15
15
 
16
16
  export function EditorCollectionActionStart({
17
17
  path,
18
- parentCollectionIds,
18
+ parentCollectionSlugs, parentEntityIds,
19
19
  collection,
20
20
  tableController
21
21
  }: CollectionActionsProps) {
@@ -34,7 +34,7 @@ export function EditorCollectionActionStart({
34
34
  : true;
35
35
 
36
36
  let saveDefaultFilterButton = null;
37
- if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.filter)) ||
37
+ if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.defaultFilter)) ||
38
38
  !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.sort))) {
39
39
  saveDefaultFilterButton = <>
40
40
  <Tooltip
@@ -46,10 +46,10 @@ export function EditorCollectionActionStart({
46
46
  onClick={() => configController
47
47
  ?.saveCollection({
48
48
  id: collection.slug,
49
- parentCollectionIds,
49
+ parentCollectionSlugs, parentEntityIds,
50
50
  collectionData: mergeDeep(collection as EntityCollection,
51
51
  {
52
- filter: tableController.filterValues ?? null,
52
+ defaultFilter: tableController.filterValues ?? null,
53
53
  sort: tableController.sortBy ?? null
54
54
  })
55
55
  }).then(() => {
@@ -62,15 +62,15 @@ export function EditorCollectionActionStart({
62
62
  </Button>
63
63
  </Tooltip>
64
64
 
65
- {(collection.filter || collection.sort) && <Tooltip
65
+ {(collection.defaultFilter || collection.sort) && <Tooltip
66
66
  title={t("studio_editor_collection_start_reset_filter")}>
67
67
  <Button
68
68
  size={"small"}
69
69
  variant={"text"}
70
70
  onClick={() => {
71
71
  tableController.clearFilter?.();
72
- if (collection?.filter)
73
- tableController.setFilterValues?.(collection?.filter);
72
+ if (collection?.defaultFilter)
73
+ tableController.setFilterValues?.(collection?.defaultFilter);
74
74
  if (collection?.sort)
75
75
  tableController.setSortBy?.(collection?.sort);
76
76
  }}>
@@ -8,7 +8,7 @@ import { useCollectionEditorController } from "../useCollectionEditorController"
8
8
 
9
9
  export function EditorEntityAction({
10
10
  path,
11
- parentCollectionIds,
11
+ parentCollectionSlugs, parentEntityIds,
12
12
  collection,
13
13
  formContext
14
14
  }: PluginFormActionProps) {
@@ -18,7 +18,7 @@ export function EditorEntityAction({
18
18
  const collectionEditorController = useCollectionEditorController();
19
19
  const { t } = useTranslation();
20
20
 
21
- const parentCollection = parentCollectionIds.length > 0 ? collectionRegistry.getCollection(parentCollectionIds[parentCollectionIds.length - 1]) : undefined;
21
+ const parentCollection = parentCollectionSlugs.length > 0 ? collectionRegistry.getCollection(parentCollectionSlugs[parentCollectionSlugs.length - 1]) : undefined;
22
22
 
23
23
  const canEditCollection = collectionEditorController.configPermissions
24
24
  ? collectionEditorController.configPermissions({
@@ -39,7 +39,7 @@ export function EditorEntityAction({
39
39
  ? () => collectionEditorController?.editCollection({
40
40
  id: collection.slug,
41
41
  path,
42
- parentCollectionIds,
42
+ parentCollectionSlugs, parentEntityIds,
43
43
  parentCollection: parentCollection as EntityCollection
44
44
  })
45
45
  : undefined}>
@@ -36,7 +36,8 @@ export function HomePageEditorCollectionAction({
36
36
  const onEditCollectionClicked = () => {
37
37
  collectionEditorController?.editCollection({
38
38
  id: collection.slug,
39
- parentCollectionIds: []
39
+ parentCollectionSlugs: [],
40
+ parentEntityIds: []
40
41
  });
41
42
  };
42
43
 
@@ -45,7 +46,8 @@ export function HomePageEditorCollectionAction({
45
46
  // The editor will handle clearing name, path, and id
46
47
  collectionEditorController?.createCollection({
47
48
  copyFrom: collection,
48
- parentCollectionIds: [],
49
+ parentCollectionSlugs: [],
50
+ parentEntityIds: [],
49
51
  redirect: true,
50
52
  sourceClick: "home_page_duplicate"
51
53
  });
@@ -11,11 +11,12 @@ import { useCollectionEditorController } from "../useCollectionEditorController"
11
11
  export function KanbanSetupAction({
12
12
  collection,
13
13
  fullPath,
14
- parentCollectionIds
14
+ parentCollectionSlugs,
15
+ parentEntityIds
15
16
  }: {
16
17
  collection: EntityCollection;
17
18
  fullPath: string;
18
- parentCollectionIds: string[];
19
+ parentCollectionSlugs: string[], parentEntityIds: string[];
19
20
  }) {
20
21
  const collectionEditorController = useCollectionEditorController();
21
22
  const { t } = useTranslation();
@@ -23,7 +24,7 @@ export function KanbanSetupAction({
23
24
  const handleConfigureClick = () => {
24
25
  collectionEditorController.editCollection({
25
26
  id: collection.slug,
26
- parentCollectionIds,
27
+ parentCollectionSlugs, parentEntityIds,
27
28
  initialView: "display",
28
29
  expandKanban: true
29
30
  });
@@ -10,7 +10,8 @@ export function MissingReferenceWidget({ path: pathProp }: {
10
10
  }) {
11
11
  const registry = useCollectionRegistryController();
12
12
  const path = getLastSegment(pathProp);
13
- const parentCollectionIds = registry.getParentCollectionIds(pathProp);
13
+ const parentCollectionSlugs = registry.getParentCollectionSlugs(pathProp);
14
+ const parentEntityIds = registry.getParentEntityIds(pathProp);
14
15
  const collectionEditor = useCollectionEditorController();
15
16
  const { t } = useTranslation();
16
17
  return <div className={"p-1 flex flex-col items-center"}>
@@ -21,7 +22,7 @@ export function MissingReferenceWidget({ path: pathProp }: {
21
22
  collectionEditor.createCollection({
22
23
  initialValues: { path,
23
24
  name: prettifyIdentifier(path) },
24
- parentCollectionIds,
25
+ parentCollectionSlugs, parentEntityIds,
25
26
  redirect: false,
26
27
  sourceClick: "missing_reference"
27
28
  });
@@ -16,7 +16,8 @@ export function NewCollectionButton() {
16
16
  <Button className={"min-w-fit"}
17
17
 
18
18
  onClick={() => collectionEditorController.createCollection({
19
- parentCollectionIds: [],
19
+ parentCollectionSlugs: [],
20
+ parentEntityIds: [],
20
21
  redirect: true,
21
22
  sourceClick: "new_collection_button"
22
23
  })}>
@@ -30,7 +30,8 @@ export function NewCollectionCard({
30
30
  onClick={collectionEditorController && canCreateCollections
31
31
  ? () => collectionEditorController.createCollection({
32
32
  initialValues: group ? { group } : undefined,
33
- parentCollectionIds: [],
33
+ parentCollectionSlugs: [],
34
+ parentEntityIds: [],
34
35
  redirect: true,
35
36
  sourceClick: "new_collection_card"
36
37
  })
@@ -10,12 +10,12 @@ import { useCollectionEditorController } from "../useCollectionEditorController"
10
10
 
11
11
  export function PropertyAddColumnComponent({
12
12
  path,
13
- parentCollectionIds,
13
+ parentCollectionSlugs, parentEntityIds,
14
14
  collection,
15
15
  tableController
16
16
  }: {
17
17
  path: string,
18
- parentCollectionIds: string[],
18
+ parentCollectionSlugs: string[], parentEntityIds: string[],
19
19
  collection: EntityCollection;
20
20
  tableController: EntityTableController;
21
21
  }) {
@@ -40,7 +40,7 @@ export function PropertyAddColumnComponent({
40
40
  onClick={() => {
41
41
  collectionEditorController.editProperty({
42
42
  editedCollectionId: collection.slug,
43
- parentCollectionIds,
43
+ parentCollectionSlugs, parentEntityIds,
44
44
  currentPropertiesOrder: getDefaultPropertiesOrder(collection),
45
45
  collection,
46
46
  existingEntities: tableController.data