@nixxie-cms/core 1.0.0 → 1.0.2

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 (187) hide show
  1. package/README.md +2 -2
  2. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.js +4 -4
  3. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.esm.js +4 -4
  4. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.js +2 -2
  5. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.esm.js +2 -2
  6. package/context/dist/nixxie-cms-core-context.cjs.js +2 -2
  7. package/context/dist/nixxie-cms-core-context.esm.js +2 -2
  8. package/dist/{CreateItemDialog-33335548.esm.js → CreateItemDialog-7008b050.esm.js} +1 -1
  9. package/dist/{CreateItemDialog-56cf59b7.cjs.js → CreateItemDialog-a0cab315.cjs.js} +1 -1
  10. package/dist/{PageContainer-7db73317.esm.js → PageContainer-5ae731cc.esm.js} +25 -18
  11. package/dist/{PageContainer-27c27f10.cjs.js → PageContainer-abd7159f.cjs.js} +25 -18
  12. package/dist/{admin-meta-graphql-6f7f5331.esm.js → admin-meta-graphql-0e6e606e.esm.js} +1 -1
  13. package/dist/{admin-meta-graphql-c8f926e9.cjs.js → admin-meta-graphql-306c224a.cjs.js} +1 -1
  14. package/dist/{context-3132c3ed.esm.js → context-af9957ed.esm.js} +2 -2
  15. package/dist/{context-e7a45152.cjs.js → context-b5204629.cjs.js} +2 -2
  16. package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -1
  17. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts.map +1 -1
  18. package/dist/declarations/src/helpers.d.ts.map +1 -1
  19. package/dist/declarations/src/index.d.ts +1 -0
  20. package/dist/declarations/src/index.d.ts.map +1 -1
  21. package/dist/declarations/src/internal-unstable/admin-ui/id-field-view.d.ts.map +1 -0
  22. package/dist/declarations/src/internal-unstable/admin-ui/pages/App/index.d.ts.map +1 -0
  23. package/dist/declarations/src/internal-unstable/admin-ui/pages/CreateItemPage/index.d.ts.map +1 -0
  24. package/dist/declarations/src/internal-unstable/admin-ui/pages/HomePage/index.d.ts.map +1 -0
  25. package/dist/declarations/src/internal-unstable/admin-ui/pages/ItemPage/index.d.ts.map +1 -0
  26. package/dist/declarations/src/internal-unstable/admin-ui/pages/ListPage/index.d.ts.map +1 -0
  27. package/dist/declarations/src/internal-unstable/admin-ui/pages/NoAccessPage/index.d.ts.map +1 -0
  28. package/dist/declarations/src/internal-unstable/artifacts.d.ts.map +1 -0
  29. package/dist/declarations/src/lib/core/initialise-lists.d.ts +1 -1
  30. package/dist/declarations/src/schema.d.ts.map +1 -1
  31. package/dist/declarations/src/types/config/index.d.ts +60 -1
  32. package/dist/declarations/src/types/config/index.d.ts.map +1 -1
  33. package/dist/declarations/src/types/config/lists.d.ts +4 -4
  34. package/dist/declarations/src/types/context.d.ts +150 -0
  35. package/dist/declarations/src/types/context.d.ts.map +1 -1
  36. package/dist/declarations/src/types/next-fields.d.ts +1 -1
  37. package/dist/{express-e9ed9a7d.cjs.js → express-455ae20c.cjs.js} +1 -1
  38. package/dist/{express-6743b918.esm.js → express-7559ca2d.esm.js} +1 -1
  39. package/dist/{index-ac01583b.cjs.js → index-89635494.cjs.js} +4 -4
  40. package/dist/{index-24b78415.esm.js → index-baa799e0.esm.js} +4 -4
  41. package/dist/nixxie-cms-core.cjs.js +104 -77
  42. package/dist/nixxie-cms-core.esm.js +104 -77
  43. package/dist/{non-null-graphql-5315718c.esm.js → non-null-graphql-a84ed64d.esm.js} +1 -1
  44. package/dist/{non-null-graphql-17b83ddc.cjs.js → non-null-graphql-add6bb3d.cjs.js} +1 -1
  45. package/dist/{resolve-hooks-66fe8a8e.cjs.js → resolve-hooks-165a9ce2.cjs.js} +1 -1
  46. package/dist/{resolve-hooks-17aafd37.esm.js → resolve-hooks-6813a045.esm.js} +2 -2
  47. package/dist/{system-dfec2f0a.esm.js → system-03e49e4f.esm.js} +8 -4
  48. package/dist/{system-48c5f6df.cjs.js → system-a321642d.cjs.js} +8 -4
  49. package/dist/{useFilter-0b5a1ee6.esm.js → useFilter-9b6db1f9.esm.js} +1 -1
  50. package/dist/{useFilter-1a4e6900.cjs.js → useFilter-acc9d413.cjs.js} +1 -1
  51. package/fields/dist/nixxie-cms-core-fields.cjs.js +16 -16
  52. package/fields/dist/nixxie-cms-core-fields.esm.js +17 -17
  53. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +3 -3
  54. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +3 -3
  55. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.js +1 -1
  56. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.esm.js +1 -1
  57. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +3 -3
  58. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +3 -3
  59. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.js +4 -4
  60. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.esm.js +4 -4
  61. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.js +1 -1
  62. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.esm.js +1 -1
  63. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.js +1 -1
  64. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.esm.js +1 -1
  65. package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.cjs.d.ts +2 -0
  66. package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.cjs.js +244 -0
  67. package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.esm.js +235 -0
  68. package/internal-unstable/admin-ui/id-field-view/package.json +4 -0
  69. package/internal-unstable/admin-ui/next-config/package.json +4 -0
  70. package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.cjs.d.ts +2 -0
  71. package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.cjs.js +59 -0
  72. package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.esm.js +55 -0
  73. package/internal-unstable/admin-ui/pages/App/package.json +4 -0
  74. package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.cjs.d.ts +2 -0
  75. package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.cjs.js +116 -0
  76. package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.esm.js +112 -0
  77. package/internal-unstable/admin-ui/pages/CreateItemPage/package.json +4 -0
  78. package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.cjs.d.ts +2 -0
  79. package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.cjs.js +336 -0
  80. package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.esm.js +332 -0
  81. package/internal-unstable/admin-ui/pages/HomePage/package.json +4 -0
  82. package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.d.ts +2 -0
  83. package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.js +463 -0
  84. package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.esm.js +455 -0
  85. package/internal-unstable/admin-ui/pages/ItemPage/package.json +4 -0
  86. package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.cjs.d.ts +2 -0
  87. package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.cjs.js +1195 -0
  88. package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.esm.js +1187 -0
  89. package/internal-unstable/admin-ui/pages/ListPage/package.json +4 -0
  90. package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.cjs.d.ts +2 -0
  91. package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.cjs.js +40 -0
  92. package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.esm.js +35 -0
  93. package/internal-unstable/admin-ui/pages/NoAccessPage/package.json +4 -0
  94. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.d.ts +2 -0
  95. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.js +51 -0
  96. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.esm.js +38 -0
  97. package/internal-unstable/artifacts/package.json +4 -0
  98. package/package.json +44 -44
  99. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +44 -15
  100. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +44 -15
  101. package/scripts/dist/nixxie-cms-core-scripts.cjs.js +3 -3
  102. package/scripts/dist/nixxie-cms-core-scripts.esm.js +3 -3
  103. package/src/admin-ui/admin-meta-graphql.ts +168 -168
  104. package/src/admin-ui/components/CommandPalette.tsx +433 -431
  105. package/src/admin-ui/components/Navigation.tsx +389 -385
  106. package/src/admin-ui/components/PageContainer.tsx +311 -310
  107. package/src/admin-ui/components/WelcomeDialog.tsx +1 -1
  108. package/src/admin-ui/context.tsx +338 -338
  109. package/src/admin-ui/templates/app.ts +60 -60
  110. package/src/admin-ui/templates/create-item.ts +5 -5
  111. package/src/admin-ui/templates/home.ts +2 -2
  112. package/src/admin-ui/templates/item.tsx +5 -5
  113. package/src/admin-ui/templates/list.tsx +5 -5
  114. package/src/admin-ui/templates/next-config.ts +29 -0
  115. package/src/admin-ui/templates/no-access.ts +7 -7
  116. package/src/fields/types/bigInt/index.ts +181 -181
  117. package/src/fields/types/bytes/index.ts +275 -275
  118. package/src/fields/types/calendarDay/index.ts +194 -194
  119. package/src/fields/types/checkbox/index.ts +76 -76
  120. package/src/fields/types/decimal/index.ts +182 -182
  121. package/src/fields/types/file/index.ts +168 -168
  122. package/src/fields/types/float/index.ts +133 -133
  123. package/src/fields/types/image/index.ts +244 -244
  124. package/src/fields/types/integer/index.ts +156 -156
  125. package/src/fields/types/json/index.ts +77 -77
  126. package/src/fields/types/multiselect/index.ts +212 -212
  127. package/src/fields/types/password/index.ts +241 -241
  128. package/src/fields/types/relationship/index.ts +381 -381
  129. package/src/fields/types/relationship/views/RelationshipTable.tsx +190 -190
  130. package/src/fields/types/select/index.ts +226 -226
  131. package/src/fields/types/text/index.ts +207 -207
  132. package/src/fields/types/timestamp/index.ts +116 -116
  133. package/src/fields/types/virtual/index.ts +108 -108
  134. package/src/helpers.ts +342 -316
  135. package/src/index.ts +4 -0
  136. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/id-field-view.tsx +167 -167
  137. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/App/index.tsx +22 -22
  138. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/CreateItemPage/index.tsx +71 -71
  139. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/HomePage/index.tsx +333 -333
  140. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/common.tsx +358 -358
  141. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/index.tsx +483 -483
  142. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/FilterAdd.tsx +221 -221
  143. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/PaginationControls.tsx +170 -170
  144. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/Tag.tsx +72 -72
  145. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/index.tsx +1006 -1006
  146. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/NoAccessPage/index.tsx +24 -24
  147. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/artifacts.ts +5 -5
  148. package/src/lib/context/createContext.ts +165 -161
  149. package/src/lib/core/initialise-lists.ts +1097 -1097
  150. package/src/lib/id-field.ts +214 -214
  151. package/src/lib/telemetry.ts +342 -342
  152. package/src/schema.ts +237 -233
  153. package/src/scripts/telemetry.ts +1 -1
  154. package/src/types/config/index.ts +400 -333
  155. package/src/types/config/lists.ts +4 -4
  156. package/src/types/context.ts +700 -530
  157. package/src/types/next-fields.ts +499 -499
  158. package/src/types/telemetry.ts +51 -51
  159. package/tests/telemetry.test.ts +361 -361
  160. package/CHANGELOG.md +0 -3158
  161. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/package.json +0 -4
  162. package/___internal-do-not-use-will-break-in-patch/admin-ui/next-config/package.json +0 -4
  163. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/package.json +0 -4
  164. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/package.json +0 -4
  165. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/package.json +0 -4
  166. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/package.json +0 -4
  167. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/package.json +0 -4
  168. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/package.json +0 -4
  169. package/___internal-do-not-use-will-break-in-patch/artifacts/package.json +0 -4
  170. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts.map +0 -1
  171. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts.map +0 -1
  172. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts.map +0 -1
  173. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts.map +0 -1
  174. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts.map +0 -1
  175. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts.map +0 -1
  176. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts.map +0 -1
  177. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts.map +0 -1
  178. /package/dist/{common-1a350e11.cjs.js → common-5933f758.cjs.js} +0 -0
  179. /package/dist/{common-29fc82e6.esm.js → common-ea5c441a.esm.js} +0 -0
  180. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/id-field-view.d.ts +0 -0
  181. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/App/index.d.ts +0 -0
  182. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/CreateItemPage/index.d.ts +0 -0
  183. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/HomePage/index.d.ts +0 -0
  184. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/index.d.ts +0 -0
  185. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/index.d.ts +0 -0
  186. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/NoAccessPage/index.d.ts +0 -0
  187. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/artifacts.d.ts +0 -0
@@ -0,0 +1,455 @@
1
+ import router, { useRouter } from 'next/router';
2
+ import { useMemo, useState, useEffect, Fragment, useRef, useCallback } from 'react';
3
+ import { Button } from '@keystar/ui/button';
4
+ import { DialogContainer, DialogTrigger, AlertDialog } from '@keystar/ui/dialog';
5
+ import { Icon } from '@keystar/ui/icon';
6
+ import { fileWarningIcon } from '@keystar/ui/icon/icons/fileWarningIcon';
7
+ import { VStack, Box } from '@keystar/ui/layout';
8
+ import { ProgressCircle } from '@keystar/ui/progress';
9
+ import { SlotProvider } from '@keystar/ui/slots';
10
+ import { toastQueue } from '@keystar/ui/toast';
11
+ import { Text, Heading } from '@keystar/ui/typography';
12
+ import { gql, CombinedGraphQLErrors } from '@apollo/client';
13
+ import { useMutation } from '@apollo/client/react';
14
+ import { p as pick, C as CreateButtonLink } from '../../../../../dist/pick-b7ef3115.esm.js';
15
+ import { b as ErrorDetailsDialog } from '../../../../../dist/Errors-bf24759e.esm.js';
16
+ import { G as GraphQLErrorNotice } from '../../../../../dist/GraphQLErrorNotice-d9f0931b.esm.js';
17
+ import { P as PageContainer } from '../../../../../dist/PageContainer-5ae731cc.esm.js';
18
+ import { a as useList, b as useListItem } from '../../../../../dist/context-af9957ed.esm.js';
19
+ import { F as Fields } from '../../../../../dist/Fields-956d9a14.esm.js';
20
+ import { g as getConditionalFilterFieldKeys, s as serializeItemForConditionalFilters, r as resolveActionMode, i as isActionAvailable } from '../../../../../dist/filters-8c8616f9.esm.js';
21
+ import { d as deserializeItemToValue, u as useInvalidFields, a as useHasChanges, s as serializeValueToOperationItem } from '../../../../../dist/utils-5e1d4d28.esm.js';
22
+ import { I as ItemPageHeader, C as ColumnLayout, S as StickySidebar, B as BaseToolbar } from '../../../../../dist/common-ea5c441a.esm.js';
23
+ import { jsx, jsxs } from 'react/jsx-runtime';
24
+ import '@keystar/ui/style';
25
+ import '@babel/runtime/helpers/defineProperty';
26
+ import '@keystar/ui/icon/icons/alertTriangleIcon';
27
+ import '@keystar/ui/notice';
28
+ import 'next/head';
29
+ import 'next/link';
30
+ import 'apollo-upload-client/UploadHttpLink.mjs';
31
+ import '@keystar/ui/core';
32
+ import '@nixxie-cms/core/admin-ui/router';
33
+ import '@keystar/ui/icon/icons/chevronLeftIcon';
34
+ import '@keystar/ui/icon/icons/chevronRightIcon';
35
+ import '@keystar/ui/icon/icons/undo2Icon';
36
+ import '@keystar/ui/picker';
37
+ import '@keystar/ui/tag';
38
+ import '@keystar/ui/tooltip';
39
+ import '../../../../../dist/admin-meta-graphql-0e6e606e.esm.js';
40
+ import '@react-aria/utils';
41
+ import '@keystar/ui/icon/icons/textCursorInputIcon';
42
+ import '@keystar/ui/utils';
43
+ import 'fast-deep-equal';
44
+ import 'graphql';
45
+ import '@keystar/ui/action-group';
46
+ import '@keystar/ui/breadcrumbs';
47
+ import '@keystar/ui/icon/all';
48
+ import '../../../../../dist/actionData-64d4c37a.esm.js';
49
+
50
+ function useEventCallback(callback) {
51
+ const callbackRef = useRef(callback);
52
+ const cb = useCallback((...args) => {
53
+ return callbackRef.current(...args);
54
+ }, []);
55
+ useEffect(() => {
56
+ callbackRef.current = callback;
57
+ });
58
+ return cb;
59
+ }
60
+ function DeleteButton({
61
+ list,
62
+ itemId,
63
+ itemLabel
64
+ }) {
65
+ const [errorDialogValue, setErrorDialogValue] = useState(null);
66
+ const router = useRouter();
67
+ const [deleteItem] = useMutation(gql`mutation ($id: ID!) {
68
+ ${list.graphql.names.deleteMutationName}(where: { id: $id }) {
69
+ id
70
+ }
71
+ }`, {
72
+ variables: {
73
+ id: itemId
74
+ }
75
+ });
76
+ return /*#__PURE__*/jsxs(Fragment, {
77
+ children: [/*#__PURE__*/jsxs(DialogTrigger, {
78
+ children: [/*#__PURE__*/jsx(Button, {
79
+ tone: "critical",
80
+ children: "Delete"
81
+ }), /*#__PURE__*/jsx(AlertDialog, {
82
+ tone: "critical",
83
+ title: "Delete item",
84
+ cancelLabel: "Cancel",
85
+ primaryActionLabel: "Yes, delete",
86
+ onPrimaryAction: async () => {
87
+ try {
88
+ await deleteItem();
89
+ } catch (err) {
90
+ toastQueue.critical('Unable to delete item', {
91
+ actionLabel: 'Details',
92
+ onAction: () => setErrorDialogValue(err),
93
+ shouldCloseOnAction: true
94
+ });
95
+ return;
96
+ }
97
+ toastQueue.neutral(`${list.singular} deleted.`, {
98
+ timeout: 5000
99
+ });
100
+ router.push(list.isSingleton ? '/' : `/${list.path}`);
101
+ },
102
+ children: /*#__PURE__*/jsxs(Text, {
103
+ children: ["Are you sure you want to delete ", /*#__PURE__*/jsx("strong", {
104
+ style: {
105
+ fontWeight: 600
106
+ },
107
+ children: itemLabel
108
+ }), "? This action cannot be undone."]
109
+ })
110
+ })]
111
+ }), /*#__PURE__*/jsx(DialogContainer, {
112
+ onDismiss: () => setErrorDialogValue(null),
113
+ isDismissable: true,
114
+ children: errorDialogValue && /*#__PURE__*/jsx(ErrorDetailsDialog, {
115
+ title: "Unable to delete item",
116
+ error: errorDialogValue
117
+ })
118
+ })]
119
+ });
120
+ }
121
+ function ItemNotFound(props) {
122
+ return /*#__PURE__*/jsxs(VStack, {
123
+ alignItems: "center",
124
+ backgroundColor: "surface",
125
+ borderRadius: "medium",
126
+ gap: "large",
127
+ justifyContent: "center",
128
+ minHeight: "scale.3000",
129
+ padding: "xlarge",
130
+ children: [/*#__PURE__*/jsx(Icon, {
131
+ src: fileWarningIcon,
132
+ color: "neutralEmphasis",
133
+ size: "large"
134
+ }), /*#__PURE__*/jsx(Heading, {
135
+ align: "center",
136
+ children: "Not found"
137
+ }), /*#__PURE__*/jsx(SlotProvider, {
138
+ slots: {
139
+ text: {
140
+ align: 'center',
141
+ maxWidth: 'scale.5000'
142
+ }
143
+ },
144
+ children: props.children
145
+ })]
146
+ });
147
+ }
148
+ function ResetButton(props) {
149
+ return /*#__PURE__*/jsxs(DialogTrigger, {
150
+ children: [/*#__PURE__*/jsx(Button, {
151
+ tone: "accent",
152
+ isDisabled: !props.hasChanges,
153
+ children: "Reset"
154
+ }), /*#__PURE__*/jsx(AlertDialog, {
155
+ title: "Reset changes",
156
+ cancelLabel: "Cancel",
157
+ primaryActionLabel: "Yes, reset",
158
+ autoFocusButton: "primary",
159
+ onPrimaryAction: props.onReset,
160
+ children: "Are you sure? Any unsaved changes will be lost and cannot be recovered."
161
+ })]
162
+ });
163
+ }
164
+ function ItemForm({
165
+ listKey,
166
+ initialValue,
167
+ value,
168
+ onChange,
169
+ itemLabel,
170
+ onSaveSuccess,
171
+ fieldModes,
172
+ fieldPositions,
173
+ isRequireds
174
+ }) {
175
+ const list = useList(listKey);
176
+ const itemId = initialValue.id;
177
+ const [updateError, setUpdateError] = useState(null);
178
+ const [update, {
179
+ loading,
180
+ error
181
+ }] = useMutation(gql`mutation ($id: ID!, $data: ${list.graphql.names.updateInputName}!) {
182
+ item: ${list.graphql.names.updateMutationName}(where: { id: $id }, data: $data) {
183
+ id
184
+ }
185
+ }`, {
186
+ errorPolicy: 'all'
187
+ });
188
+ function resetValueState() {
189
+ onChange(initialValue);
190
+ }
191
+ const invalidFields = useInvalidFields(list.fields, value, isRequireds);
192
+ const [forceValidation, setForceValidation] = useState(false);
193
+ const onSave = useEventCallback(async e => {
194
+ if (e.target !== e.currentTarget) return;
195
+ e.preventDefault();
196
+ const newForceValidation = invalidFields.size !== 0;
197
+ setForceValidation(newForceValidation);
198
+ if (newForceValidation) return;
199
+ const {
200
+ error: _error
201
+ } = await update({
202
+ variables: {
203
+ id: itemId,
204
+ data: serializeValueToOperationItem('update', list.fields, value, initialValue)
205
+ }
206
+ });
207
+ const error = CombinedGraphQLErrors.is(_error) ? _error.errors.find(x => {
208
+ var _x$path;
209
+ return x.path === undefined || ((_x$path = x.path) === null || _x$path === void 0 ? void 0 : _x$path.length) === 1;
210
+ }) : _error;
211
+ if (error) {
212
+ toastQueue.critical('Unable to save item', {
213
+ actionLabel: 'Details',
214
+ onAction: () => setUpdateError(new Error(error.message)),
215
+ shouldCloseOnAction: true
216
+ });
217
+ return;
218
+ }
219
+ toastQueue.positive(`Saved changes to ${list.singular.toLocaleLowerCase()}.`, {
220
+ timeout: 5000
221
+ });
222
+ onSaveSuccess();
223
+ });
224
+ const hasChangedFields = useHasChanges('update', list.fields, value, initialValue);
225
+ return /*#__PURE__*/jsxs(Fragment, {
226
+ children: [/*#__PURE__*/jsxs("form", {
227
+ onSubmit: onSave,
228
+ style: {
229
+ display: 'contents'
230
+ },
231
+ children: [/*#__PURE__*/jsx("button", {
232
+ type: "submit",
233
+ style: {
234
+ display: 'none'
235
+ }
236
+ }), /*#__PURE__*/jsxs(VStack, {
237
+ gap: "large",
238
+ gridArea: "main",
239
+ marginTop: "xlarge",
240
+ minWidth: 0,
241
+ children: [/*#__PURE__*/jsx(GraphQLErrorNotice, {
242
+ errors: CombinedGraphQLErrors.is(error) ? error.errors.filter(x => {
243
+ var _x$path2;
244
+ return x.path === undefined || ((_x$path2 = x.path) === null || _x$path2 === void 0 ? void 0 : _x$path2.length) === 1;
245
+ }) : [error]
246
+ }), /*#__PURE__*/jsx(Fields, {
247
+ view: "itemView",
248
+ position: "form",
249
+ fields: list.fields,
250
+ groups: list.groups,
251
+ forceValidation: forceValidation,
252
+ invalidFields: invalidFields,
253
+ fieldModes: fieldModes,
254
+ fieldPositions: fieldPositions,
255
+ onChange: onChange,
256
+ value: value,
257
+ isRequireds: isRequireds
258
+ })]
259
+ }), /*#__PURE__*/jsx(StickySidebar, {
260
+ children: /*#__PURE__*/jsx(Fields, {
261
+ view: "itemView",
262
+ position: "sidebar",
263
+ fields: list.fields,
264
+ groups: list.groups,
265
+ forceValidation: forceValidation,
266
+ invalidFields: invalidFields,
267
+ onChange: onChange,
268
+ value: value,
269
+ fieldModes: fieldModes,
270
+ fieldPositions: fieldPositions,
271
+ isRequireds: isRequireds
272
+ })
273
+ }), /*#__PURE__*/jsxs(BaseToolbar, {
274
+ children: [/*#__PURE__*/jsx(Button, {
275
+ isDisabled: !hasChangedFields,
276
+ isPending: loading,
277
+ prominence: "high",
278
+ type: "submit",
279
+ children: "Save"
280
+ }), /*#__PURE__*/jsx(ResetButton, {
281
+ hasChanges: hasChangedFields,
282
+ onReset: resetValueState
283
+ }), /*#__PURE__*/jsx(Box, {
284
+ flex: true
285
+ }), !list.hideDelete ? /*#__PURE__*/jsx(DeleteButton, {
286
+ list: list,
287
+ itemId: itemId,
288
+ itemLabel: itemLabel
289
+ }) : null]
290
+ })]
291
+ }), /*#__PURE__*/jsx(DialogContainer, {
292
+ onDismiss: () => setUpdateError(null),
293
+ isDismissable: true,
294
+ children: updateError && /*#__PURE__*/jsx(ErrorDetailsDialog, {
295
+ title: "Unable to save item",
296
+ error: updateError
297
+ })
298
+ })]
299
+ });
300
+ }
301
+ const getItemPage = props => () => /*#__PURE__*/jsx(ItemPage, {
302
+ ...props
303
+ });
304
+ function ItemPage({
305
+ listKey
306
+ }) {
307
+ var _item$list$labelField, _data$nixxie3, _data$nixxie4;
308
+ const list = useList(listKey);
309
+ const id_ = useRouter().query.id;
310
+ const [itemId] = Array.isArray(id_) ? id_ : [id_];
311
+ const {
312
+ data,
313
+ error,
314
+ loading,
315
+ refetch
316
+ } = useListItem(listKey, itemId !== null && itemId !== void 0 ? itemId : null);
317
+ const item = data === null || data === void 0 ? void 0 : data.item;
318
+ const itemLabel_ = (_item$list$labelField = item === null || item === void 0 ? void 0 : item[list.labelField]) !== null && _item$list$labelField !== void 0 ? _item$list$labelField : item === null || item === void 0 ? void 0 : item.id;
319
+ const itemLabel = typeof itemLabel_ === 'string' ? itemLabel_ : itemId !== null && itemId !== void 0 ? itemId : '';
320
+ const pageLoading = loading || itemId === undefined;
321
+ const pageLabel = itemLabel || itemId;
322
+ const pageTitle = list.isSingleton || typeof pageLabel !== 'string' ? list.label : pageLabel;
323
+ const initialValue = useMemo(() => {
324
+ if (!item) return null;
325
+ return deserializeItemToValue(list.fields, item);
326
+ }, [list.fields, data === null || data === void 0 ? void 0 : data.item]);
327
+ const [value, setValue] = useState(null);
328
+ useEffect(() => {
329
+ setValue(initialValue);
330
+ }, [initialValue]);
331
+ const {
332
+ actionModes,
333
+ fieldModes,
334
+ fieldPositions,
335
+ isRequireds
336
+ } = useMemo(() => {
337
+ const actionModes = {};
338
+ for (const action of list.actions) {
339
+ actionModes[action.key] = action.itemView.actionMode;
340
+ }
341
+ const fieldModes = {};
342
+ const fieldPositions = {};
343
+ const isRequireds = {};
344
+ for (const [fieldKey, field] of Object.entries(list.fields)) {
345
+ fieldModes[fieldKey] = field.itemView.fieldMode;
346
+ fieldPositions[fieldKey] = field.itemView.fieldPosition;
347
+ isRequireds[fieldKey] = field.itemView.isRequired;
348
+ }
349
+ for (const field of (_data$nixxie$adminMet = data === null || data === void 0 || (_data$nixxie = data.nixxie) === null || _data$nixxie === void 0 || (_data$nixxie = _data$nixxie.adminMeta) === null || _data$nixxie === void 0 || (_data$nixxie = _data$nixxie.list) === null || _data$nixxie === void 0 ? void 0 : _data$nixxie.fields) !== null && _data$nixxie$adminMet !== void 0 ? _data$nixxie$adminMet : []) {
350
+ var _data$nixxie$adminMet, _data$nixxie;
351
+ if (!(field !== null && field !== void 0 && field.itemView) || !field.key || !field.itemView.fieldMode || !field.itemView.fieldPosition || field.itemView.isRequired == null) continue;
352
+ fieldModes[field.key] = field.itemView.fieldMode;
353
+ fieldPositions[field.key] = field.itemView.fieldPosition;
354
+ isRequireds[field.key] = field.itemView.isRequired;
355
+ }
356
+ for (const action of (_data$nixxie$adminMet2 = data === null || data === void 0 || (_data$nixxie2 = data.nixxie) === null || _data$nixxie2 === void 0 || (_data$nixxie2 = _data$nixxie2.adminMeta) === null || _data$nixxie2 === void 0 || (_data$nixxie2 = _data$nixxie2.list) === null || _data$nixxie2 === void 0 ? void 0 : _data$nixxie2.actions) !== null && _data$nixxie$adminMet2 !== void 0 ? _data$nixxie$adminMet2 : []) {
357
+ var _data$nixxie$adminMet2, _data$nixxie2, _action$itemView;
358
+ if (!(action !== null && action !== void 0 && (_action$itemView = action.itemView) !== null && _action$itemView !== void 0 && _action$itemView.actionMode) || !action.key) continue;
359
+ actionModes[action.key] = action.itemView.actionMode;
360
+ }
361
+ return {
362
+ actionModes,
363
+ fieldModes,
364
+ fieldPositions,
365
+ isRequireds
366
+ };
367
+ }, [data === null || data === void 0 || (_data$nixxie3 = data.nixxie) === null || _data$nixxie3 === void 0 || (_data$nixxie3 = _data$nixxie3.adminMeta) === null || _data$nixxie3 === void 0 || (_data$nixxie3 = _data$nixxie3.list) === null || _data$nixxie3 === void 0 ? void 0 : _data$nixxie3.actions, data === null || data === void 0 || (_data$nixxie4 = data.nixxie) === null || _data$nixxie4 === void 0 || (_data$nixxie4 = _data$nixxie4.adminMeta) === null || _data$nixxie4 === void 0 || (_data$nixxie4 = _data$nixxie4.list) === null || _data$nixxie4 === void 0 ? void 0 : _data$nixxie4.fields, list.actions, list.fields]);
368
+ const actionsInContext = useMemo(() => {
369
+ if (!value) return [];
370
+ return list.actions.map(action => {
371
+ const fieldKeys = getConditionalFilterFieldKeys(actionModes[action.key]);
372
+ const fields = pick(list.fields, fieldKeys);
373
+ const serializedValue = serializeItemForConditionalFilters(fields, value);
374
+ return {
375
+ ...action,
376
+ itemView: {
377
+ ...action.itemView,
378
+ actionMode: resolveActionMode(actionModes[action.key], serializedValue)
379
+ }
380
+ };
381
+ }).filter(action => isActionAvailable(action, action.itemView));
382
+ }, [actionModes, list.actions, list.fields, value]);
383
+ function onAction(action, resultId) {
384
+ const {
385
+ navigation
386
+ } = action.itemView;
387
+ if (navigation === 'follow' && resultId === itemId || navigation === 'refetch') {
388
+ refetch();
389
+ } else if (navigation === 'follow' && resultId) {
390
+ router.push(`/${list.path}/${resultId}`);
391
+ } else {
392
+ router.push(list.isSingleton ? '/' : `/${list.path}`);
393
+ }
394
+ }
395
+ return /*#__PURE__*/jsx(PageContainer, {
396
+ title: pageTitle,
397
+ header: /*#__PURE__*/jsx(ItemPageHeader, {
398
+ list: list,
399
+ actions: actionsInContext,
400
+ label: typeof pageLabel !== 'string' ? 'Loading...' : pageLabel,
401
+ title: pageTitle,
402
+ item: item !== null && item !== void 0 ? item : null,
403
+ value: value !== null && value !== void 0 ? value : initialValue,
404
+ initialValue: initialValue,
405
+ onAction: onAction
406
+ }),
407
+ children: pageLoading ? /*#__PURE__*/jsx(VStack, {
408
+ height: "100%",
409
+ alignItems: "center",
410
+ justifyContent: "center",
411
+ children: /*#__PURE__*/jsx(ProgressCircle, {
412
+ "aria-label": "loading item data",
413
+ size: "large",
414
+ isIndeterminate: true
415
+ })
416
+ }) : /*#__PURE__*/jsxs(ColumnLayout, {
417
+ children: [/*#__PURE__*/jsxs(Box, {
418
+ marginY: "xlarge",
419
+ children: [/*#__PURE__*/jsx(GraphQLErrorNotice, {
420
+ errors: [error]
421
+ }), item == null && (list.isSingleton ? itemId === '1' ? /*#__PURE__*/jsxs(ItemNotFound, {
422
+ children: [/*#__PURE__*/jsxs(Text, {
423
+ children: ["\u201C", list.label, "\u201D doesn\u2019t exist, or you don\u2019t have access to it."]
424
+ }), !list.hideCreate && /*#__PURE__*/jsx(CreateButtonLink, {
425
+ list: list
426
+ })]
427
+ }) : /*#__PURE__*/jsx(ItemNotFound, {
428
+ children: /*#__PURE__*/jsxs(Text, {
429
+ children: ["An item with ID ", /*#__PURE__*/jsxs("strong", {
430
+ children: ["\u201C", itemId, "\u201D"]
431
+ }), " does not exist."]
432
+ })
433
+ }) : /*#__PURE__*/jsx(ItemNotFound, {
434
+ children: /*#__PURE__*/jsxs(Text, {
435
+ children: ["The item with ID ", /*#__PURE__*/jsxs("strong", {
436
+ children: ["\u201C", itemId, "\u201D"]
437
+ }), " doesn\u2019t exist, or you don\u2019t have access to it."]
438
+ })
439
+ }))]
440
+ }), initialValue && value && /*#__PURE__*/jsx(ItemForm, {
441
+ fieldModes: fieldModes,
442
+ fieldPositions: fieldPositions,
443
+ isRequireds: isRequireds,
444
+ listKey: listKey,
445
+ itemLabel: itemLabel,
446
+ initialValue: initialValue,
447
+ value: value,
448
+ onChange: setValue,
449
+ onSaveSuccess: refetch
450
+ })]
451
+ })
452
+ });
453
+ }
454
+
455
+ export { getItemPage };
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.js",
3
+ "module": "dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.esm.js"
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../../../../../dist/declarations/src/internal-unstable/admin-ui/pages/ListPage/index.js";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibml4eGllLWNtcy1jb3JlLWludGVybmFsLXVuc3RhYmxlLWFkbWluLXVpLXBhZ2VzLUxpc3RQYWdlLmNqcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZGlzdC9kZWNsYXJhdGlvbnMvc3JjL2ludGVybmFsLXVuc3RhYmxlL2FkbWluLXVpL3BhZ2VzL0xpc3RQYWdlL2luZGV4LmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==