synapse-react-client 4.0.40 → 4.0.41

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 (195) hide show
  1. package/dist/SWC.index.d.ts +1 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +2 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
  6. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
  7. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
  8. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  9. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  10. package/dist/components/Aridhia/AridhiaAccessStatus.js +51 -48
  11. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  12. package/dist/components/Authentication/Constants.d.ts +4 -0
  13. package/dist/components/Authentication/Constants.d.ts.map +1 -1
  14. package/dist/components/Authentication/Constants.js +5 -2
  15. package/dist/components/Authentication/Constants.js.map +1 -1
  16. package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
  17. package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
  18. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  19. package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
  20. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  21. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  22. package/dist/components/Authentication/TOTPForm.js +20 -18
  23. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  24. package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
  25. package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
  26. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  27. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  28. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
  29. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  30. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  31. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
  32. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  33. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
  34. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
  35. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
  36. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
  37. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
  38. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
  39. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
  40. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
  41. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
  42. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
  43. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
  44. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
  45. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
  46. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
  47. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
  48. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
  49. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
  50. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
  51. package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
  52. package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
  53. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
  54. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
  55. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
  56. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
  57. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
  58. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
  59. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
  60. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
  61. package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
  62. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
  63. package/dist/components/FormTemplateEditor/utils.js +27 -0
  64. package/dist/components/FormTemplateEditor/utils.js.map +1 -0
  65. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
  66. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
  67. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
  68. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
  69. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
  70. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
  71. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  72. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
  73. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  74. package/dist/components/QueryBuilder/FilterConditionRow.css +1 -1
  75. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +2 -0
  76. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  77. package/dist/components/QueryBuilder/FilterConditionRow.js +112 -109
  78. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  79. package/dist/components/QueryBuilder/FilterConditionRow.module.js +10 -11
  80. package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -1
  81. package/dist/components/QueryBuilder/FilterConditionRow.module.scss +0 -5
  82. package/dist/components/QueryBuilder/FilterGroupNode.css +1 -1
  83. package/dist/components/QueryBuilder/FilterGroupNode.d.ts +4 -0
  84. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  85. package/dist/components/QueryBuilder/FilterGroupNode.js +85 -51
  86. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  87. package/dist/components/QueryBuilder/FilterGroupNode.module.js +10 -9
  88. package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -1
  89. package/dist/components/QueryBuilder/FilterGroupNode.module.scss +9 -0
  90. package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
  91. package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
  92. package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
  93. package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
  94. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  95. package/dist/components/QueryBuilder/QueryBuilderControls.js +112 -107
  96. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  97. package/dist/components/QueryBuilder/qbTreeToReadable.js +11 -11
  98. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
  99. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
  100. package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
  101. package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
  102. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
  103. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
  104. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
  105. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
  106. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +13 -0
  107. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -1
  108. package/dist/components/QueryBuilder/queryBuilderOperations.js +39 -36
  109. package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -1
  110. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  111. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +46 -47
  112. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  113. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  114. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  115. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +35 -36
  116. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  117. package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
  118. package/dist/components/styled/LeftRightPanel.js +19 -2
  119. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  120. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -2
  121. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
  122. package/dist/mocks/accessRequirement/mockFormTemplates.js +7 -14
  123. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
  124. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +4 -1
  125. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
  126. package/dist/mocks/accessRequirement/mockJsonSchemas.js +36 -15
  127. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
  128. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
  129. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  130. package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
  131. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  132. package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
  133. package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
  134. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  135. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
  136. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  137. package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
  138. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  139. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  140. package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
  141. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  142. package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
  143. package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
  144. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  145. package/dist/synapse-queries/KeyFactory.d.ts +1 -2
  146. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  147. package/dist/synapse-queries/KeyFactory.js +2 -5
  148. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  149. package/dist/synapse-queries/dataaccess/index.d.ts +0 -1
  150. package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
  151. package/dist/synapse-queries/dataaccess/index.js +3 -4
  152. package/dist/synapse-queries/index.js +180 -184
  153. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
  154. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
  155. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
  156. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
  157. package/dist/testutils/vitest.setup.js +18 -9
  158. package/dist/testutils/vitest.setup.js.map +1 -1
  159. package/dist/tsconfig.build.tsbuildinfo +1 -1
  160. package/dist/utils/APIConstants.d.ts +1 -0
  161. package/dist/utils/APIConstants.d.ts.map +1 -1
  162. package/dist/utils/APIConstants.js +2 -2
  163. package/dist/utils/APIConstants.js.map +1 -1
  164. package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
  165. package/dist/utils/appendFinalQueryParamKey.js +4 -1
  166. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  167. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  168. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  169. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  170. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  171. package/dist/utils/functions/ArrayUtils.d.ts +3 -0
  172. package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
  173. package/dist/utils/functions/ArrayUtils.js +7 -1
  174. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  175. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
  176. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
  177. package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
  178. package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
  179. package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
  180. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
  181. package/dist/utils/jsonschema/submissionContext.js +186 -0
  182. package/dist/utils/jsonschema/submissionContext.js.map +1 -0
  183. package/package.json +5 -3
  184. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
  185. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
  186. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
  187. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
  188. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
  189. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
  190. package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
  191. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
  192. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts +0 -21
  193. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts.map +0 -1
  194. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js +0 -34
  195. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js.map +0 -1
@@ -1,31 +1,28 @@
1
- import { ConfirmationDialog as e } from "../../ConfirmationDialog/ConfirmationDialog.js";
1
+ import { moveItem as e } from "../../../utils/functions/ArrayUtils.js";
2
+ import { ConfirmationDialog as t } from "../../ConfirmationDialog/ConfirmationDialog.js";
2
3
  import "../../ConfirmationDialog/index.js";
3
- import { collectTopLevelProperties as t } from "../../../utils/jsonschema/collectTopLevelProperties.js";
4
- import { computeDefaultColumnOrder as n } from "../utils/computeDefaultColumnOrder.js";
5
- import { useState as r } from "react";
6
- import { Box as i, Button as a, IconButton as o, List as s, ListItem as ee, ListItemText as c, Stack as l, Typography as te } from "@mui/material";
4
+ import { collectTopLevelProperties as n } from "../../../utils/jsonschema/collectTopLevelProperties.js";
5
+ import { computeDefaultColumnOrder as r } from "../utils/computeDefaultColumnOrder.js";
6
+ import { useState as i } from "react";
7
+ import { Box as a, Button as ee, IconButton as o, List as te, ListItem as s, ListItemText as c, Stack as l, Typography as ne } from "@mui/material";
7
8
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
8
- import f from "lodash-es/isEqual";
9
- import { DeleteOutline as p, North as m, RestartAlt as ne, RestoreFromTrash as re, South as ie } from "@mui/icons-material";
9
+ import re from "lodash-es/isEqual";
10
+ import { DeleteOutline as f, North as p, RestartAlt as m, RestoreFromTrash as h, South as ie } from "@mui/icons-material";
10
11
  import { c as ae } from "react/compiler-runtime";
11
12
  //#region src/components/DataGrid/components/ReorderColumnsDialog.tsx
12
- function h(e, t, n) {
13
- let r = [...e], [i] = r.splice(t, 1);
14
- return r.splice(n, 0, i), r;
15
- }
16
13
  function g(g) {
17
14
  let _ = ae(57), { open: v, columnNames: y, columnOrder: b, jsonSchema: x, upsertKey: S, canRemoveColumns: C, onSave: w, onCancel: T } = g, E = C === void 0 ? !1 : C, D, O, k;
18
- _[0] !== E || _[1] !== y || _[2] !== b ? (D = E ? y.map(oe).filter((e) => !b.includes(e)) : [], O = r, k = [...b, ...D], _[0] = E, _[1] = y, _[2] = b, _[3] = D, _[4] = O, _[5] = k) : (D = _[3], O = _[4], k = _[5]);
19
- let [A, j] = O(k), [M, N] = r(D), P;
20
- _[6] !== y || _[7] !== x || _[8] !== S ? (P = n(y, x, S), _[6] = y, _[7] = x, _[8] = S, _[9] = P) : P = _[9];
15
+ _[0] !== E || _[1] !== y || _[2] !== b ? (D = E ? y.map(oe).filter((e) => !b.includes(e)) : [], O = i, k = [...b, ...D], _[0] = E, _[1] = y, _[2] = b, _[3] = D, _[4] = O, _[5] = k) : (D = _[3], O = _[4], k = _[5]);
16
+ let [A, j] = O(k), [M, N] = i(D), P;
17
+ _[6] !== y || _[7] !== x || _[8] !== S ? (P = r(y, x, S), _[6] = y, _[7] = x, _[8] = S, _[9] = P) : P = _[9];
21
18
  let F = P, I = A.length - M.length, L;
22
- _[10] !== F || _[11] !== M.length || _[12] !== A ? (L = f(A, F) && M.length === 0, _[10] = F, _[11] = M.length, _[12] = A, _[13] = L) : L = _[13];
19
+ _[10] !== F || _[11] !== M.length || _[12] !== A ? (L = re(A, F) && M.length === 0, _[10] = F, _[11] = M.length, _[12] = A, _[13] = L) : L = _[13];
23
20
  let R = L, z;
24
- _[14] === x ? z = _[15] : (z = t(x), _[14] = x, _[15] = z);
21
+ _[14] === x ? z = _[15] : (z = n(x), _[14] = x, _[15] = z);
25
22
  let B = z, V;
26
23
  _[16] === B ? V = _[17] : (V = (e) => Object.hasOwn(B, e), _[16] = B, _[17] = V);
27
24
  let H = V, U;
28
- _[18] === E ? U = _[19] : (U = E && /* @__PURE__ */ u(te, {
25
+ _[18] === E ? U = _[19] : (U = E && /* @__PURE__ */ u(ne, {
29
26
  variant: "body2",
30
27
  color: "text.secondary",
31
28
  sx: { mb: 1 },
@@ -38,15 +35,15 @@ function g(g) {
38
35
  mb: 1
39
36
  }, _[20] = W) : W = _[20];
40
37
  let G;
41
- _[21] === Symbol.for("react.memo_cache_sentinel") ? (G = /* @__PURE__ */ u(ne, {}), _[21] = G) : G = _[21];
38
+ _[21] === Symbol.for("react.memo_cache_sentinel") ? (G = /* @__PURE__ */ u(m, {}), _[21] = G) : G = _[21];
42
39
  let K;
43
40
  _[22] === F ? K = _[23] : (K = () => {
44
41
  j(F), N([]);
45
42
  }, _[22] = F, _[23] = K);
46
43
  let q;
47
- _[24] !== R || _[25] !== K ? (q = /* @__PURE__ */ u(i, {
44
+ _[24] !== R || _[25] !== K ? (q = /* @__PURE__ */ u(a, {
48
45
  sx: W,
49
- children: /* @__PURE__ */ u(a, {
46
+ children: /* @__PURE__ */ u(ee, {
50
47
  variant: "text",
51
48
  startIcon: G,
52
49
  onClick: K,
@@ -56,55 +53,55 @@ function g(g) {
56
53
  }), _[24] = R, _[25] = K, _[26] = q) : q = _[26];
57
54
  let J;
58
55
  if (_[27] !== I || _[28] !== E || _[29] !== y || _[30] !== H || _[31] !== M || _[32] !== A) {
59
- let e;
60
- _[34] !== I || _[35] !== E || _[36] !== y || _[37] !== H || _[38] !== M || _[39] !== A.length ? (e = (e, t) => {
61
- let n = y[e], r = M.includes(e);
62
- return /* @__PURE__ */ u(ee, {
56
+ let t;
57
+ _[34] !== I || _[35] !== E || _[36] !== y || _[37] !== H || _[38] !== M || _[39] !== A.length ? (t = (t, n) => {
58
+ let r = y[t], i = M.includes(t);
59
+ return /* @__PURE__ */ u(s, {
63
60
  divider: !0,
64
- sx: r ? { opacity: .5 } : void 0,
61
+ sx: i ? { opacity: .5 } : void 0,
65
62
  secondaryAction: /* @__PURE__ */ d(l, {
66
63
  direction: "row",
67
64
  spacing: .5,
68
65
  children: [
69
- E && (r ? /* @__PURE__ */ u(o, {
70
- "aria-label": `Restore ${n}`,
66
+ E && (i ? /* @__PURE__ */ u(o, {
67
+ "aria-label": `Restore ${r}`,
71
68
  size: "small",
72
- onClick: () => N((t) => t.filter((t) => t !== e)),
73
- children: /* @__PURE__ */ u(re, { fontSize: "small" })
74
- }) : !H(n) && /* @__PURE__ */ u(o, {
75
- "aria-label": `Remove ${n}`,
69
+ onClick: () => N((e) => e.filter((e) => e !== t)),
70
+ children: /* @__PURE__ */ u(h, { fontSize: "small" })
71
+ }) : !H(r) && /* @__PURE__ */ u(o, {
72
+ "aria-label": `Remove ${r}`,
76
73
  size: "small",
77
74
  disabled: I <= 1,
78
- onClick: () => N((t) => [...t, e]),
79
- children: /* @__PURE__ */ u(p, { fontSize: "small" })
75
+ onClick: () => N((e) => [...e, t]),
76
+ children: /* @__PURE__ */ u(f, { fontSize: "small" })
80
77
  })),
81
78
  /* @__PURE__ */ u(o, {
82
- "aria-label": `Move ${n} up`,
79
+ "aria-label": `Move ${r} up`,
83
80
  size: "small",
84
- disabled: r || t === 0,
85
- onClick: () => j((e) => h(e, t, t - 1)),
86
- children: /* @__PURE__ */ u(m, { fontSize: "small" })
81
+ disabled: i || n === 0,
82
+ onClick: () => j((t) => e(t, n, -1)),
83
+ children: /* @__PURE__ */ u(p, { fontSize: "small" })
87
84
  }),
88
85
  /* @__PURE__ */ u(o, {
89
- "aria-label": `Move ${n} down`,
86
+ "aria-label": `Move ${r} down`,
90
87
  size: "small",
91
- disabled: r || t === A.length - 1,
92
- onClick: () => j((e) => h(e, t, t + 1)),
88
+ disabled: i || n === A.length - 1,
89
+ onClick: () => j((t) => e(t, n, 1)),
93
90
  children: /* @__PURE__ */ u(ie, { fontSize: "small" })
94
91
  })
95
92
  ]
96
93
  }),
97
- children: /* @__PURE__ */ u(c, { primary: n })
98
- }, e);
99
- }, _[34] = I, _[35] = E, _[36] = y, _[37] = H, _[38] = M, _[39] = A.length, _[40] = e) : e = _[40], J = A.map(e), _[27] = I, _[28] = E, _[29] = y, _[30] = H, _[31] = M, _[32] = A, _[33] = J;
94
+ children: /* @__PURE__ */ u(c, { primary: r })
95
+ }, t);
96
+ }, _[34] = I, _[35] = E, _[36] = y, _[37] = H, _[38] = M, _[39] = A.length, _[40] = t) : t = _[40], J = A.map(t), _[27] = I, _[28] = E, _[29] = y, _[30] = H, _[31] = M, _[32] = A, _[33] = J;
100
97
  } else J = _[33];
101
98
  let Y;
102
- _[41] === J ? Y = _[42] : (Y = /* @__PURE__ */ u(s, {
99
+ _[41] === J ? Y = _[42] : (Y = /* @__PURE__ */ u(te, {
103
100
  disablePadding: !0,
104
101
  children: J
105
102
  }), _[41] = J, _[42] = Y);
106
103
  let X;
107
- _[43] !== q || _[44] !== Y || _[45] !== U ? (X = /* @__PURE__ */ d(i, { children: [
104
+ _[43] !== q || _[44] !== Y || _[45] !== U ? (X = /* @__PURE__ */ d(a, { children: [
108
105
  U,
109
106
  q,
110
107
  Y
@@ -114,7 +111,7 @@ function g(g) {
114
111
  let Q;
115
112
  _[48] !== w || _[49] !== M || _[50] !== A ? (Q = () => w(A.filter((e) => !M.includes(e))), _[48] = w, _[49] = M, _[50] = A, _[51] = Q) : Q = _[51];
116
113
  let $;
117
- return _[52] !== T || _[53] !== v || _[54] !== X || _[55] !== Q ? ($ = /* @__PURE__ */ u(e, {
114
+ return _[52] !== T || _[53] !== v || _[54] !== X || _[55] !== Q ? ($ = /* @__PURE__ */ u(t, {
118
115
  open: v,
119
116
  title: "Reorder Columns",
120
117
  content: X,
@@ -1 +1 @@
1
- {"version":3,"file":"ReorderColumnsDialog.js","names":["ConfirmationDialog","computeDefaultColumnOrder","collectTopLevelProperties","DeleteOutline","North","RestartAlt","RestoreFromTrash","South","Box","Button","IconButton","List","ListItem","ListItemText","Stack","Typography","JSONSchema7","isEqual","useMemo","useState","ReorderColumnsDialogProps","open","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onSave","newColumnOrder","onCancel","moveItem","order","from","to","next","moved","splice","ReorderColumnsDialog","props","$","_c","t0","undefined","previouslyRemovedColumnIndices","t1","t2","map","_temp","filter","index_0","includes","index","workingOrder","setWorkingOrder","removedColumnIndices","setRemovedColumnIndices","t3","defaultOrder","activeColumnCount","length","t4","isAtDefault","t5","schemaProperties","t6","columnName","Object","hasOwn","isSchemaColumn","t7","mb","t8","Symbol","for","display","justifyContent","t9","t10","t11","t12","t13","colIndex","displayIndex","columnName_0","isRemoved","opacity","indices","index_1","indices_0","order_0","t14","t15","children","t16","index_2","t17","_"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { computeDefaultColumnOrder } from '@/components/DataGrid/utils/computeDefaultColumnOrder'\nimport { collectTopLevelProperties } from '@/utils/jsonschema/collectTopLevelProperties'\nimport {\n DeleteOutline,\n North,\n RestartAlt,\n RestoreFromTrash,\n South,\n} from '@mui/icons-material'\nimport {\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemText,\n Stack,\n Typography,\n} from '@mui/material'\nimport { JSONSchema7 } from 'json-schema'\nimport isEqual from 'lodash-es/isEqual'\nimport { useMemo, useState } from 'react'\n\nexport type ReorderColumnsDialogProps = {\n open: boolean\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n /** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */\n canRemoveColumns?: boolean\n onSave: (newColumnOrder: number[]) => void\n onCancel: () => void\n}\n\nfunction moveItem(order: number[], from: number, to: number): number[] {\n const next = [...order]\n const [moved] = next.splice(from, 1)\n next.splice(to, 0, moved)\n return next\n}\n\nexport default function ReorderColumnsDialog(props: ReorderColumnsDialogProps) {\n const {\n open,\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns = false,\n onSave,\n onCancel,\n } = props\n\n // Columns previously removed (and saved) are absent from columnOrder entirely, but their\n // identity index still exists in columnNames -- surface them so they can be restored.\n const previouslyRemovedColumnIndices = canRemoveColumns\n ? columnNames\n .map((_, index) => index)\n .filter(index => !columnOrder.includes(index))\n : []\n\n const [workingOrder, setWorkingOrder] = useState<number[]>([\n ...columnOrder,\n ...previouslyRemovedColumnIndices,\n ])\n const [removedColumnIndices, setRemovedColumnIndices] = useState<number[]>(\n previouslyRemovedColumnIndices,\n )\n\n const defaultOrder = useMemo(\n () => computeDefaultColumnOrder(columnNames, jsonSchema, upsertKey),\n [columnNames, jsonSchema, upsertKey],\n )\n\n const activeColumnCount = workingOrder.length - removedColumnIndices.length\n const isAtDefault =\n isEqual(workingOrder, defaultOrder) && removedColumnIndices.length === 0\n\n // Only columns that aren't part of the JSON schema can be removed -- schema-defined\n // columns are required for validation/upsert and shouldn't be hidden from the grid.\n // Properties inherited through $ref/allOf/etc. count, matching how the backend resolves\n // a RecordSet's schema columns.\n const schemaProperties = useMemo(\n () => collectTopLevelProperties(jsonSchema),\n [jsonSchema],\n )\n const isSchemaColumn = (columnName: string) =>\n Object.hasOwn(schemaProperties, columnName)\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Reorder Columns\"\n content={\n <Box>\n {canRemoveColumns && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Only columns that are not part of the schema can be removed.\n </Typography>\n )}\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1 }}>\n <Button\n variant=\"text\"\n startIcon={<RestartAlt />}\n onClick={() => {\n setWorkingOrder(defaultOrder)\n setRemovedColumnIndices([])\n }}\n disabled={isAtDefault}\n >\n Reset to Default Order\n </Button>\n </Box>\n <List disablePadding>\n {workingOrder.map((colIndex, displayIndex) => {\n const columnName = columnNames[colIndex]\n const isRemoved = removedColumnIndices.includes(colIndex)\n return (\n <ListItem\n key={colIndex}\n divider\n sx={isRemoved ? { opacity: 0.5 } : undefined}\n secondaryAction={\n <Stack direction=\"row\" spacing={0.5}>\n {canRemoveColumns &&\n (isRemoved ? (\n <IconButton\n aria-label={`Restore ${columnName}`}\n size=\"small\"\n onClick={() =>\n setRemovedColumnIndices(indices =>\n indices.filter(index => index !== colIndex),\n )\n }\n >\n <RestoreFromTrash fontSize=\"small\" />\n </IconButton>\n ) : (\n !isSchemaColumn(columnName) && (\n <IconButton\n aria-label={`Remove ${columnName}`}\n size=\"small\"\n disabled={activeColumnCount <= 1}\n onClick={() =>\n setRemovedColumnIndices(indices => [\n ...indices,\n colIndex,\n ])\n }\n >\n <DeleteOutline fontSize=\"small\" />\n </IconButton>\n )\n ))}\n <IconButton\n aria-label={`Move ${columnName} up`}\n size=\"small\"\n disabled={isRemoved || displayIndex === 0}\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, displayIndex - 1),\n )\n }\n >\n <North fontSize=\"small\" />\n </IconButton>\n <IconButton\n aria-label={`Move ${columnName} down`}\n size=\"small\"\n disabled={\n isRemoved || displayIndex === workingOrder.length - 1\n }\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, displayIndex + 1),\n )\n }\n >\n <South fontSize=\"small\" />\n </IconButton>\n </Stack>\n }\n >\n <ListItemText primary={columnName} />\n </ListItem>\n )\n })}\n </List>\n </Box>\n }\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() =>\n onSave(\n workingOrder.filter(index => !removedColumnIndices.includes(index)),\n )\n }\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReorderColumnsDialog.js","names":["ConfirmationDialog","computeDefaultColumnOrder","moveItem","collectTopLevelProperties","DeleteOutline","North","RestartAlt","RestoreFromTrash","South","Box","Button","IconButton","List","ListItem","ListItemText","Stack","Typography","JSONSchema7","isEqual","useMemo","useState","ReorderColumnsDialogProps","open","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onSave","newColumnOrder","onCancel","ReorderColumnsDialog","props","$","_c","t0","undefined","previouslyRemovedColumnIndices","t1","t2","map","_temp","filter","index_0","includes","index","workingOrder","setWorkingOrder","removedColumnIndices","setRemovedColumnIndices","t3","defaultOrder","activeColumnCount","length","t4","isAtDefault","t5","schemaProperties","t6","columnName","Object","hasOwn","isSchemaColumn","t7","mb","t8","Symbol","for","display","justifyContent","t9","t10","t11","t12","t13","colIndex","displayIndex","columnName_0","isRemoved","opacity","indices","index_1","indices_0","order","order_0","t14","t15","children","t16","index_2","t17","_"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { computeDefaultColumnOrder } from '@/components/DataGrid/utils/computeDefaultColumnOrder'\nimport { moveItem } from '@/utils/functions/ArrayUtils'\nimport { collectTopLevelProperties } from '@/utils/jsonschema/collectTopLevelProperties'\nimport {\n DeleteOutline,\n North,\n RestartAlt,\n RestoreFromTrash,\n South,\n} from '@mui/icons-material'\nimport {\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemText,\n Stack,\n Typography,\n} from '@mui/material'\nimport { JSONSchema7 } from 'json-schema'\nimport isEqual from 'lodash-es/isEqual'\nimport { useMemo, useState } from 'react'\n\nexport type ReorderColumnsDialogProps = {\n open: boolean\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n /** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */\n canRemoveColumns?: boolean\n onSave: (newColumnOrder: number[]) => void\n onCancel: () => void\n}\n\nexport default function ReorderColumnsDialog(props: ReorderColumnsDialogProps) {\n const {\n open,\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns = false,\n onSave,\n onCancel,\n } = props\n\n // Columns previously removed (and saved) are absent from columnOrder entirely, but their\n // identity index still exists in columnNames -- surface them so they can be restored.\n const previouslyRemovedColumnIndices = canRemoveColumns\n ? columnNames\n .map((_, index) => index)\n .filter(index => !columnOrder.includes(index))\n : []\n\n const [workingOrder, setWorkingOrder] = useState<number[]>([\n ...columnOrder,\n ...previouslyRemovedColumnIndices,\n ])\n const [removedColumnIndices, setRemovedColumnIndices] = useState<number[]>(\n previouslyRemovedColumnIndices,\n )\n\n const defaultOrder = useMemo(\n () => computeDefaultColumnOrder(columnNames, jsonSchema, upsertKey),\n [columnNames, jsonSchema, upsertKey],\n )\n\n const activeColumnCount = workingOrder.length - removedColumnIndices.length\n const isAtDefault =\n isEqual(workingOrder, defaultOrder) && removedColumnIndices.length === 0\n\n // Only columns that aren't part of the JSON schema can be removed -- schema-defined\n // columns are required for validation/upsert and shouldn't be hidden from the grid.\n // Properties inherited through $ref/allOf/etc. count, matching how the backend resolves\n // a RecordSet's schema columns.\n const schemaProperties = useMemo(\n () => collectTopLevelProperties(jsonSchema),\n [jsonSchema],\n )\n const isSchemaColumn = (columnName: string) =>\n Object.hasOwn(schemaProperties, columnName)\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Reorder Columns\"\n content={\n <Box>\n {canRemoveColumns && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Only columns that are not part of the schema can be removed.\n </Typography>\n )}\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1 }}>\n <Button\n variant=\"text\"\n startIcon={<RestartAlt />}\n onClick={() => {\n setWorkingOrder(defaultOrder)\n setRemovedColumnIndices([])\n }}\n disabled={isAtDefault}\n >\n Reset to Default Order\n </Button>\n </Box>\n <List disablePadding>\n {workingOrder.map((colIndex, displayIndex) => {\n const columnName = columnNames[colIndex]\n const isRemoved = removedColumnIndices.includes(colIndex)\n return (\n <ListItem\n key={colIndex}\n divider\n sx={isRemoved ? { opacity: 0.5 } : undefined}\n secondaryAction={\n <Stack direction=\"row\" spacing={0.5}>\n {canRemoveColumns &&\n (isRemoved ? (\n <IconButton\n aria-label={`Restore ${columnName}`}\n size=\"small\"\n onClick={() =>\n setRemovedColumnIndices(indices =>\n indices.filter(index => index !== colIndex),\n )\n }\n >\n <RestoreFromTrash fontSize=\"small\" />\n </IconButton>\n ) : (\n !isSchemaColumn(columnName) && (\n <IconButton\n aria-label={`Remove ${columnName}`}\n size=\"small\"\n disabled={activeColumnCount <= 1}\n onClick={() =>\n setRemovedColumnIndices(indices => [\n ...indices,\n colIndex,\n ])\n }\n >\n <DeleteOutline fontSize=\"small\" />\n </IconButton>\n )\n ))}\n <IconButton\n aria-label={`Move ${columnName} up`}\n size=\"small\"\n disabled={isRemoved || displayIndex === 0}\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, -1),\n )\n }\n >\n <North fontSize=\"small\" />\n </IconButton>\n <IconButton\n aria-label={`Move ${columnName} down`}\n size=\"small\"\n disabled={\n isRemoved || displayIndex === workingOrder.length - 1\n }\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, 1),\n )\n }\n >\n <South fontSize=\"small\" />\n </IconButton>\n </Stack>\n }\n >\n <ListItemText primary={columnName} />\n </ListItem>\n )\n })}\n </List>\n </Box>\n }\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() =>\n onSave(\n workingOrder.filter(index => !removedColumnIndices.includes(index)),\n )\n }\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ type ChoiceOptionsEditorProps = {
2
+ options: string[];
3
+ onChange: (next: string[]) => void;
4
+ };
5
+ /**
6
+ * Edits a choice field's options. At least one option is always kept, and added options get a
7
+ * unique `Option N` label.
8
+ */
9
+ export declare function ChoiceOptionsEditor({ options, onChange, }: ChoiceOptionsEditorProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=ChoiceOptionsEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChoiceOptionsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/FormTemplateEditor/ChoiceOptionsEditor.tsx"],"names":[],"mappings":"AAUA,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CACnC,CAAA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,QAAQ,GACT,EAAE,wBAAwB,2CAkD1B"}
@@ -0,0 +1,61 @@
1
+ import { Box as e, Button as t, IconButton as n, Stack as r, TextField as i, Typography as a } from "@mui/material";
2
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
3
+ import { Add as c, Delete as l } from "@mui/icons-material";
4
+ //#region src/components/FormTemplateEditor/ChoiceOptionsEditor.tsx
5
+ function u({ options: u, onChange: d }) {
6
+ let f = (e, t) => {
7
+ d(u.map((n, r) => r === e ? t : n));
8
+ }, p = (e) => {
9
+ d(u.filter((t, n) => n !== e));
10
+ };
11
+ return /* @__PURE__ */ s(e, {
12
+ sx: {
13
+ pl: 1,
14
+ borderLeft: 2,
15
+ borderColor: "divider"
16
+ },
17
+ children: [/* @__PURE__ */ o(a, {
18
+ variant: "caption",
19
+ color: "text.secondary",
20
+ sx: {
21
+ display: "block",
22
+ mb: .5
23
+ },
24
+ children: "Choices"
25
+ }), /* @__PURE__ */ s(r, {
26
+ spacing: 1,
27
+ children: [u.map((t, r) => /* @__PURE__ */ s(e, {
28
+ sx: {
29
+ display: "flex",
30
+ alignItems: "center",
31
+ gap: 1
32
+ },
33
+ children: [/* @__PURE__ */ o(i, {
34
+ value: t,
35
+ onChange: (e) => f(r, e.target.value),
36
+ size: "small",
37
+ fullWidth: !0
38
+ }), /* @__PURE__ */ o(n, {
39
+ size: "small",
40
+ "aria-label": "Delete choice",
41
+ onClick: () => p(r),
42
+ disabled: u.length <= 1,
43
+ children: /* @__PURE__ */ o(l, { fontSize: "small" })
44
+ })]
45
+ }, r)), /* @__PURE__ */ o(e, { children: /* @__PURE__ */ o(t, {
46
+ size: "small",
47
+ startIcon: /* @__PURE__ */ o(c, {}),
48
+ onClick: () => {
49
+ let e = u.length + 1;
50
+ for (; u.includes(`Option ${e}`);) e++;
51
+ d([...u, `Option ${e}`]);
52
+ },
53
+ children: "Add choice"
54
+ }) })]
55
+ })]
56
+ });
57
+ }
58
+ //#endregion
59
+ export { u as ChoiceOptionsEditor };
60
+
61
+ //# sourceMappingURL=ChoiceOptionsEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChoiceOptionsEditor.js","names":[],"sources":["../../../src/components/FormTemplateEditor/ChoiceOptionsEditor.tsx"],"sourcesContent":["import {\n Box,\n Button,\n IconButton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Add as AddIcon, Delete as DeleteIcon } from '@mui/icons-material'\n\ntype ChoiceOptionsEditorProps = {\n options: string[]\n onChange: (next: string[]) => void\n}\n\n/**\n * Edits a choice field's options. At least one option is always kept, and added options get a\n * unique `Option N` label.\n */\nexport function ChoiceOptionsEditor({\n options,\n onChange,\n}: ChoiceOptionsEditorProps) {\n const update = (idx: number, next: string) => {\n onChange(options.map((o, i) => (i === idx ? next : o)))\n }\n const remove = (idx: number) => {\n onChange(options.filter((_, i) => i !== idx))\n }\n const add = () => {\n let n = options.length + 1\n while (options.includes(`Option ${n}`)) n++\n onChange([...options, `Option ${n}`])\n }\n\n return (\n <Box sx={{ pl: 1, borderLeft: 2, borderColor: 'divider' }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: 'block', mb: 0.5 }}\n >\n Choices\n </Typography>\n <Stack spacing={1}>\n {/* Index keys are safe: rows are fully controlled and hold no local state. */}\n {options.map((opt, idx) => (\n <Box key={idx} sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <TextField\n value={opt}\n onChange={e => update(idx, e.target.value)}\n size=\"small\"\n fullWidth\n />\n <IconButton\n size=\"small\"\n aria-label=\"Delete choice\"\n onClick={() => remove(idx)}\n disabled={options.length <= 1}\n >\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n <Box>\n <Button size=\"small\" startIcon={<AddIcon />} onClick={add}>\n Add choice\n </Button>\n </Box>\n </Stack>\n </Box>\n )\n}\n"],"mappings":";;;;AAmBA,SAAgB,EAAoB,EAClC,YACA,eAC2B;CAC3B,IAAM,KAAU,GAAa,MAAiB;EAC5C,EAAS,EAAQ,KAAK,GAAG,MAAO,MAAM,IAAM,IAAO,CAAE,CAAC;CACxD,GACM,KAAU,MAAgB;EAC9B,EAAS,EAAQ,QAAQ,GAAG,MAAM,MAAM,CAAG,CAAC;CAC9C;CAOA,OACE,kBAAC,GAAD;EAAK,IAAI;GAAE,IAAI;GAAG,YAAY;GAAG,aAAa;EAAU;YAAxD,CACE,kBAAC,GAAD;GACE,SAAQ;GACR,OAAM;GACN,IAAI;IAAE,SAAS;IAAS,IAAI;GAAI;aACjC;EAEW,CAAA,GACZ,kBAAC,GAAD;GAAO,SAAS;aAAhB,CAEG,EAAQ,KAAK,GAAK,MACjB,kBAAC,GAAD;IAAe,IAAI;KAAE,SAAS;KAAQ,YAAY;KAAU,KAAK;IAAE;cAAnE,CACE,kBAAC,GAAD;KACE,OAAO;KACP,WAAU,MAAK,EAAO,GAAK,EAAE,OAAO,KAAK;KACzC,MAAK;KACL,WAAA;IACD,CAAA,GACD,kBAAC,GAAD;KACE,MAAK;KACL,cAAW;KACX,eAAe,EAAO,CAAG;KACzB,UAAU,EAAQ,UAAU;eAE5B,kBAAC,GAAD,EAAY,UAAS,QAAS,CAAA;IACpB,CAAA,CACT;MAfK,CAeL,CACN,GACD,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAQ,MAAK;IAAQ,WAAW,kBAAC,GAAD,CAAU,CAAA;IAAG,eApCnC;KAChB,IAAI,IAAI,EAAQ,SAAS;KACzB,OAAO,EAAQ,SAAS,UAAU,GAAG,IAAG;KACxC,EAAS,CAAC,GAAG,GAAS,UAAU,GAAG,CAAC;IACtC;cAgCmE;GAEnD,CAAA,EACL,CAAA,CACA;IACJ;;AAET"}
@@ -0,0 +1,33 @@
1
+ import { RJSFSchema } from '@rjsf/utils';
2
+ import { SchemaPropertyContext } from '@/utils/jsonschema/submissionContext';
3
+ export type FieldDefinitionDrawerProps = {
4
+ open: boolean;
5
+ propertyKey: string | null;
6
+ /** All property keys currently defined in the schema, including this one. */
7
+ existingKeys: Set<string>;
8
+ property: RJSFSchema | null;
9
+ isRequired: boolean;
10
+ /**
11
+ * Which submission context this property applies to (per the schema's
12
+ * `x-synapse-submissionContext` `allOf` convention). Editable here via a guided select box.
13
+ * This component only calls `onChangeContext`; a container elsewhere in the authoring flow is
14
+ * responsible for moving the property's definition between the schema's top-level `properties`
15
+ * and the matching `allOf` branch so ACT never has to hand-edit `allOf` for the common case.
16
+ */
17
+ context: SchemaPropertyContext;
18
+ /** True when this field is bound to one or more steps. Affects delete affordance. */
19
+ isUsedInSteps: boolean;
20
+ onClose: () => void;
21
+ onUpdate: (patch: Partial<RJSFSchema>) => void;
22
+ onRenameKey: (newKey: string) => void;
23
+ onReplace: (next: RJSFSchema) => void;
24
+ onChangeRequired: (isRequired: boolean) => void;
25
+ onChangeContext: (context: SchemaPropertyContext) => void;
26
+ onRemove: () => void;
27
+ };
28
+ /**
29
+ * Slide-in drawer for editing a single field's JSON Schema definition (label, help text, type,
30
+ * required, submission context, choice options, file format).
31
+ */
32
+ export declare function FieldDefinitionDrawer({ open, propertyKey, existingKeys, property, isRequired, context, isUsedInSteps, onClose, onUpdate, onRenameKey, onReplace, onChangeRequired, onChangeContext, onRemove, }: FieldDefinitionDrawerProps): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=FieldDefinitionDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldDefinitionDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/FormTemplateEditor/FieldDefinitionDrawer.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAmB5E,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,6EAA6E;IAC7E,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,OAAO,EAAE,qBAAqB,CAAA;IAC9B,qFAAqF;IACrF,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,gBAAgB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,eAAe,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACT,EAAE,0BAA0B,2CAqM5B"}
@@ -0,0 +1,187 @@
1
+ import { FIELD_TYPE_OPTIONS as e, applyFieldType as t, detectFieldType as n, sanitizePropertyKey as r } from "./schemaFieldUtils.js";
2
+ import { ChoiceOptionsEditor as i } from "./ChoiceOptionsEditor.js";
3
+ import { useState as a } from "react";
4
+ import { Alert as o, Box as s, Button as c, Drawer as l, FormControlLabel as u, IconButton as d, MenuItem as f, Stack as p, Switch as m, TextField as h, Typography as g } from "@mui/material";
5
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
6
+ import { Close as y, Delete as b } from "@mui/icons-material";
7
+ //#region src/components/FormTemplateEditor/FieldDefinitionDrawer.tsx
8
+ var x = [
9
+ {
10
+ value: "ALWAYS",
11
+ label: "Always"
12
+ },
13
+ {
14
+ value: "REQUEST_ONLY",
15
+ label: "Initial request only"
16
+ },
17
+ {
18
+ value: "RENEWAL_ONLY",
19
+ label: "Renewal only"
20
+ }
21
+ ];
22
+ function S({ open: S, propertyKey: C, existingKeys: w, property: T, isRequired: E, context: D, isUsedInSteps: O, onClose: k, onUpdate: A, onRenameKey: j, onReplace: M, onChangeRequired: N, onChangeContext: P, onRemove: F }) {
23
+ let I = T ? n(T) : null, L = T !== null && I === null, [R, z] = a(null), B = R?.forKey === C ? R.value : C ?? "", V = null;
24
+ B.length === 0 ? V = "Required" : B !== C && w.has(B) && (V = "Already used by another field");
25
+ let H = () => {
26
+ C && !V && B !== C && j(B), z(null);
27
+ }, U = (e) => {
28
+ T && M(t(T, e));
29
+ };
30
+ return /* @__PURE__ */ _(l, {
31
+ open: S,
32
+ onClose: k,
33
+ anchor: "right",
34
+ slotProps: { paper: { sx: { width: {
35
+ xs: "100%",
36
+ sm: 480
37
+ } } } },
38
+ children: /* @__PURE__ */ v(s, {
39
+ sx: {
40
+ p: 3,
41
+ display: "flex",
42
+ flexDirection: "column",
43
+ height: "100%"
44
+ },
45
+ children: [
46
+ /* @__PURE__ */ v(s, {
47
+ sx: {
48
+ display: "flex",
49
+ alignItems: "center",
50
+ mb: 2
51
+ },
52
+ children: [/* @__PURE__ */ _(g, {
53
+ variant: "h6",
54
+ sx: { flexGrow: 1 },
55
+ children: "Edit field"
56
+ }), /* @__PURE__ */ _(d, {
57
+ onClick: k,
58
+ "aria-label": "Close field editor",
59
+ children: /* @__PURE__ */ _(y, {})
60
+ })]
61
+ }),
62
+ C && /* @__PURE__ */ _(h, {
63
+ label: "Property key",
64
+ value: B,
65
+ onChange: (e) => z({
66
+ forKey: C,
67
+ value: r(e.target.value)
68
+ }),
69
+ onBlur: H,
70
+ onKeyDown: (e) => {
71
+ e.key === "Enter" && (e.preventDefault(), H());
72
+ },
73
+ error: V !== null,
74
+ helperText: V ?? "Identifies this field in the JSON Schema and submitted requests.",
75
+ size: "small",
76
+ fullWidth: !0,
77
+ sx: { mb: 2 },
78
+ slotProps: { input: { sx: { fontFamily: "monospace" } } }
79
+ }),
80
+ T && /* @__PURE__ */ _(h, {
81
+ select: !0,
82
+ label: "Submission context",
83
+ value: D,
84
+ onChange: (e) => P(e.target.value),
85
+ size: "small",
86
+ fullWidth: !0,
87
+ sx: { mb: 2 },
88
+ helperText: "Controls whether requesters are asked this question on an initial request, a renewal, or both.",
89
+ children: x.map((e) => /* @__PURE__ */ _(f, {
90
+ value: e.value,
91
+ children: e.label
92
+ }, e.value))
93
+ }),
94
+ /* @__PURE__ */ _(s, {
95
+ sx: {
96
+ flexGrow: 1,
97
+ overflow: "auto"
98
+ },
99
+ children: T ? L ? /* @__PURE__ */ _(o, {
100
+ severity: "warning",
101
+ variant: "outlined",
102
+ children: "This field uses settings not supported by the simple editor. Edit it via the advanced raw JSON Schema view."
103
+ }) : /* @__PURE__ */ v(p, {
104
+ spacing: 2,
105
+ children: [
106
+ /* @__PURE__ */ _(h, {
107
+ label: "Question label",
108
+ value: T.title ?? "",
109
+ onChange: (e) => A({ title: e.target.value }),
110
+ size: "small",
111
+ fullWidth: !0
112
+ }),
113
+ /* @__PURE__ */ _(h, {
114
+ label: "Help text",
115
+ value: T.description ?? "",
116
+ onChange: (e) => A({ description: e.target.value }),
117
+ size: "small",
118
+ multiline: !0,
119
+ rows: 3,
120
+ fullWidth: !0,
121
+ helperText: "Shown to the requester below the question."
122
+ }),
123
+ /* @__PURE__ */ v(p, {
124
+ direction: "row",
125
+ spacing: 1,
126
+ alignItems: "center",
127
+ children: [/* @__PURE__ */ _(h, {
128
+ select: !0,
129
+ label: "Field type",
130
+ value: I,
131
+ onChange: (e) => U(e.target.value),
132
+ size: "small",
133
+ sx: { flexGrow: 1 },
134
+ children: e.map((e) => /* @__PURE__ */ _(f, {
135
+ value: e.value,
136
+ children: e.label
137
+ }, e.value))
138
+ }), /* @__PURE__ */ _(u, {
139
+ control: /* @__PURE__ */ _(m, {
140
+ checked: E,
141
+ onChange: (e) => N(e.target.checked)
142
+ }),
143
+ label: "Required"
144
+ })]
145
+ }),
146
+ I === "choice" && /* @__PURE__ */ _(i, {
147
+ options: T.enum ?? [],
148
+ onChange: (e) => A({ enum: e })
149
+ }),
150
+ I === "file" && /* @__PURE__ */ _(o, {
151
+ severity: "info",
152
+ variant: "outlined",
153
+ children: "Requesters will be prompted to upload a file. You can attach a downloadable template to this field on each step that uses it."
154
+ })
155
+ ]
156
+ }) : /* @__PURE__ */ _(o, {
157
+ severity: "info",
158
+ children: "No field selected."
159
+ })
160
+ }),
161
+ /* @__PURE__ */ v(s, {
162
+ sx: {
163
+ pt: 2,
164
+ display: "flex",
165
+ justifyContent: "space-between",
166
+ gap: 1
167
+ },
168
+ children: [/* @__PURE__ */ _(c, {
169
+ color: "error",
170
+ startIcon: /* @__PURE__ */ _(b, {}),
171
+ onClick: F,
172
+ disabled: !T,
173
+ children: O ? "Delete (will unbind from steps)" : "Delete field"
174
+ }), /* @__PURE__ */ _(c, {
175
+ variant: "contained",
176
+ onClick: k,
177
+ children: "Done"
178
+ })]
179
+ })
180
+ ]
181
+ })
182
+ });
183
+ }
184
+ //#endregion
185
+ export { S as FieldDefinitionDrawer };
186
+
187
+ //# sourceMappingURL=FieldDefinitionDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldDefinitionDrawer.js","names":[],"sources":["../../../src/components/FormTemplateEditor/FieldDefinitionDrawer.tsx"],"sourcesContent":["import {\n Alert,\n Box,\n Button,\n Drawer,\n FormControlLabel,\n IconButton,\n MenuItem,\n Stack,\n Switch,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Close as CloseIcon, Delete as DeleteIcon } from '@mui/icons-material'\nimport { RJSFSchema } from '@rjsf/utils'\nimport { useState } from 'react'\nimport { SchemaPropertyContext } from '@/utils/jsonschema/submissionContext'\nimport { ChoiceOptionsEditor } from './ChoiceOptionsEditor'\nimport {\n applyFieldType,\n detectFieldType,\n FIELD_TYPE_OPTIONS,\n sanitizePropertyKey,\n SimpleFieldType,\n} from './schemaFieldUtils'\n\nconst SUBMISSION_CONTEXT_OPTIONS: {\n value: SchemaPropertyContext\n label: string\n}[] = [\n { value: 'ALWAYS', label: 'Always' },\n { value: 'REQUEST_ONLY', label: 'Initial request only' },\n { value: 'RENEWAL_ONLY', label: 'Renewal only' },\n]\n\nexport type FieldDefinitionDrawerProps = {\n open: boolean\n propertyKey: string | null\n /** All property keys currently defined in the schema, including this one. */\n existingKeys: Set<string>\n property: RJSFSchema | null\n isRequired: boolean\n /**\n * Which submission context this property applies to (per the schema's\n * `x-synapse-submissionContext` `allOf` convention). Editable here via a guided select box.\n * This component only calls `onChangeContext`; a container elsewhere in the authoring flow is\n * responsible for moving the property's definition between the schema's top-level `properties`\n * and the matching `allOf` branch so ACT never has to hand-edit `allOf` for the common case.\n */\n context: SchemaPropertyContext\n /** True when this field is bound to one or more steps. Affects delete affordance. */\n isUsedInSteps: boolean\n onClose: () => void\n onUpdate: (patch: Partial<RJSFSchema>) => void\n onRenameKey: (newKey: string) => void\n onReplace: (next: RJSFSchema) => void\n onChangeRequired: (isRequired: boolean) => void\n onChangeContext: (context: SchemaPropertyContext) => void\n onRemove: () => void\n}\n\n/**\n * Slide-in drawer for editing a single field's JSON Schema definition (label, help text, type,\n * required, submission context, choice options, file format).\n */\nexport function FieldDefinitionDrawer({\n open,\n propertyKey,\n existingKeys,\n property,\n isRequired,\n context,\n isUsedInSteps,\n onClose,\n onUpdate,\n onRenameKey,\n onReplace,\n onChangeRequired,\n onChangeContext,\n onRemove,\n}: FieldDefinitionDrawerProps) {\n const type = property ? detectFieldType(property) : null\n const isAdvanced = property !== null && type === null\n\n // The draft exists only while the key is being edited, and is tagged with the key it was started\n // from. When `propertyKey` changes underneath it (switching fields, or the container re-slugging\n // the key from the label) the draft no longer applies and the prop is shown again.\n const [keyDraft, setKeyDraft] = useState<{\n forKey: string | null\n value: string\n } | null>(null)\n const displayedKey =\n keyDraft?.forKey === propertyKey ? keyDraft.value : (propertyKey ?? '')\n\n let keyError: string | null = null\n if (displayedKey.length === 0) {\n keyError = 'Required'\n } else if (displayedKey !== propertyKey && existingKeys.has(displayedKey)) {\n keyError = 'Already used by another field'\n }\n\n const commitKeyDraft = () => {\n if (propertyKey && !keyError && displayedKey !== propertyKey) {\n onRenameKey(displayedKey)\n }\n setKeyDraft(null)\n }\n\n const handleChangeType = (next: SimpleFieldType) => {\n if (!property) return\n onReplace(applyFieldType(property, next))\n }\n\n return (\n <Drawer\n open={open}\n onClose={onClose}\n anchor=\"right\"\n slotProps={{ paper: { sx: { width: { xs: '100%', sm: 480 } } } }}\n >\n <Box\n sx={{ p: 3, display: 'flex', flexDirection: 'column', height: '100%' }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>\n <Typography variant=\"h6\" sx={{ flexGrow: 1 }}>\n Edit field\n </Typography>\n <IconButton onClick={onClose} aria-label=\"Close field editor\">\n <CloseIcon />\n </IconButton>\n </Box>\n\n {propertyKey && (\n <TextField\n label=\"Property key\"\n value={displayedKey}\n onChange={e =>\n setKeyDraft({\n forKey: propertyKey,\n value: sanitizePropertyKey(e.target.value),\n })\n }\n onBlur={commitKeyDraft}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault()\n commitKeyDraft()\n }\n }}\n error={keyError !== null}\n helperText={\n keyError ??\n 'Identifies this field in the JSON Schema and submitted requests.'\n }\n size=\"small\"\n fullWidth\n sx={{ mb: 2 }}\n slotProps={{ input: { sx: { fontFamily: 'monospace' } } }}\n />\n )}\n\n {property && (\n <TextField\n select\n label=\"Submission context\"\n value={context}\n onChange={e =>\n onChangeContext(e.target.value as SchemaPropertyContext)\n }\n size=\"small\"\n fullWidth\n sx={{ mb: 2 }}\n helperText=\"Controls whether requesters are asked this question on an initial request, a renewal, or both.\"\n >\n {SUBMISSION_CONTEXT_OPTIONS.map(opt => (\n <MenuItem key={opt.value} value={opt.value}>\n {opt.label}\n </MenuItem>\n ))}\n </TextField>\n )}\n\n <Box sx={{ flexGrow: 1, overflow: 'auto' }}>\n {!property ? (\n <Alert severity=\"info\">No field selected.</Alert>\n ) : isAdvanced ? (\n <Alert severity=\"warning\" variant=\"outlined\">\n This field uses settings not supported by the simple editor. Edit\n it via the advanced raw JSON Schema view.\n </Alert>\n ) : (\n <Stack spacing={2}>\n <TextField\n label=\"Question label\"\n value={property.title ?? ''}\n onChange={e => onUpdate({ title: e.target.value })}\n size=\"small\"\n fullWidth\n />\n <TextField\n label=\"Help text\"\n value={property.description ?? ''}\n onChange={e => onUpdate({ description: e.target.value })}\n size=\"small\"\n multiline\n rows={3}\n fullWidth\n helperText=\"Shown to the requester below the question.\"\n />\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <TextField\n select\n label=\"Field type\"\n value={type}\n onChange={e =>\n handleChangeType(e.target.value as SimpleFieldType)\n }\n size=\"small\"\n sx={{ flexGrow: 1 }}\n >\n {FIELD_TYPE_OPTIONS.map(opt => (\n <MenuItem key={opt.value} value={opt.value}>\n {opt.label}\n </MenuItem>\n ))}\n </TextField>\n <FormControlLabel\n control={\n <Switch\n checked={isRequired}\n onChange={e => onChangeRequired(e.target.checked)}\n />\n }\n label=\"Required\"\n />\n </Stack>\n\n {type === 'choice' && (\n <ChoiceOptionsEditor\n options={(property.enum as string[] | undefined) ?? []}\n onChange={next => onUpdate({ enum: next })}\n />\n )}\n\n {type === 'file' && (\n <Alert severity=\"info\" variant=\"outlined\">\n Requesters will be prompted to upload a file. You can attach a\n downloadable template to this field on each step that uses it.\n </Alert>\n )}\n </Stack>\n )}\n </Box>\n\n <Box\n sx={{\n pt: 2,\n display: 'flex',\n justifyContent: 'space-between',\n gap: 1,\n }}\n >\n <Button\n color=\"error\"\n startIcon={<DeleteIcon />}\n onClick={onRemove}\n disabled={!property}\n >\n {isUsedInSteps ? 'Delete (will unbind from steps)' : 'Delete field'}\n </Button>\n <Button variant=\"contained\" onClick={onClose}>\n Done\n </Button>\n </Box>\n </Box>\n </Drawer>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { FormTemplate } from '@sage-bionetworks/synapse-client';
2
+ import { RJSFSchema } from '@rjsf/utils';
3
+ type FormTemplatePreviewProps = {
4
+ template: FormTemplate;
5
+ jsonSchema: RJSFSchema;
6
+ };
7
+ /**
8
+ * Renders a live preview of how a FormTemplate + its referenced JSON Schema will appear to a
9
+ * requester. Computed client-side against the unsaved draft, purely to give ACT instant feedback
10
+ * while editing.
11
+ */
12
+ export declare function FormTemplatePreview({ template, jsonSchema, }: FormTemplatePreviewProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=FormTemplatePreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormTemplatePreview.d.ts","sourceRoot":"","sources":["../../../src/components/FormTemplateEditor/FormTemplatePreview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,EACb,MAAM,kCAAkC,CAAA;AAWzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,YAAY,CAAA;IACtB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,UAAU,GACX,EAAE,wBAAwB,2CA8E1B"}