synapse-react-client 4.0.43 → 4.0.45

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 (159) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +2 -2
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +2 -1
  5. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  6. package/dist/components/AccessRequirementList/AccessRequirementList.js +126 -125
  7. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  8. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts +1 -1
  9. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts.map +1 -1
  10. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +28 -16
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +99 -97
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +1 -1
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -1
  19. package/dist/components/AccessRequirementList/RequestDataStep.d.ts +1 -4
  20. package/dist/components/AccessRequirementList/RequestDataStep.d.ts.map +1 -1
  21. package/dist/components/AccessRequirementList/RequestDataStep.js +15 -18
  22. package/dist/components/AccessRequirementList/RequestDataStep.js.map +1 -1
  23. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.d.ts.map +1 -1
  24. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +52 -49
  25. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  26. package/dist/components/DataGrid/DataGridWebSocket.d.ts +29 -1
  27. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  28. package/dist/components/DataGrid/DataGridWebSocket.js +48 -16
  29. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  30. package/dist/components/DataGrid/components/GridLoadingState.d.ts +2 -2
  31. package/dist/components/DataGrid/components/GridLoadingState.d.ts.map +1 -1
  32. package/dist/components/DataGrid/components/GridLoadingState.js +2 -2
  33. package/dist/components/DataGrid/components/GridLoadingState.js.map +1 -1
  34. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  35. package/dist/components/DataGrid/useDataGridWebsocket.js +2 -1
  36. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  37. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.d.ts.map +1 -1
  38. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js +11 -10
  39. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  40. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -1
  41. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
  42. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.d.ts +9 -0
  43. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.d.ts.map +1 -0
  44. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.js +45 -0
  45. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.js.map +1 -0
  46. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.d.ts +22 -0
  47. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.d.ts.map +1 -0
  48. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.js +139 -0
  49. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.js.map +1 -0
  50. package/dist/components/Forum/ForumTable.d.ts +17 -5
  51. package/dist/components/Forum/ForumTable.d.ts.map +1 -1
  52. package/dist/components/Forum/ForumTable.js +94 -77
  53. package/dist/components/Forum/ForumTable.js.map +1 -1
  54. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.d.ts.map +1 -1
  55. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +142 -108
  56. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  57. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.d.ts.map +1 -1
  58. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js +15 -15
  59. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  60. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.d.ts +10 -0
  61. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.d.ts.map +1 -0
  62. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.js +81 -0
  63. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.js.map +1 -0
  64. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.d.ts +9 -0
  65. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.d.ts.map +1 -0
  66. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.js +32 -0
  67. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.js.map +1 -0
  68. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts +0 -2
  69. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  70. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +79 -154
  71. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  72. package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
  73. package/dist/components/TanStackTable/TanStackTableUtils.js +8 -5
  74. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  75. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.d.ts +5 -0
  76. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.d.ts.map +1 -0
  77. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.js +20 -0
  78. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.js.map +1 -0
  79. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.d.ts.map +1 -1
  80. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +183 -188
  81. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  82. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.d.ts +25 -0
  83. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.d.ts.map +1 -0
  84. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.js +125 -0
  85. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.js.map +1 -0
  86. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  87. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +4 -1
  88. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  89. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +5 -0
  90. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -1
  91. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +37 -26
  92. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -1
  93. package/dist/mocks/dataaccess/MockSubmission.d.ts +76 -0
  94. package/dist/mocks/dataaccess/MockSubmission.d.ts.map +1 -1
  95. package/dist/mocks/dataaccess/MockSubmission.js +108 -63
  96. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  97. package/dist/mocks/msw/handlers/discussionHandlers.d.ts.map +1 -1
  98. package/dist/mocks/msw/handlers/discussionHandlers.js +40 -33
  99. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  100. package/dist/style/components/_submission-page.scss +0 -4
  101. package/dist/style/main.css +1 -1
  102. package/dist/synapse-client/SynapseClient.d.ts +10 -0
  103. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  104. package/dist/synapse-client/SynapseClient.js +486 -482
  105. package/dist/synapse-client/SynapseClient.js.map +1 -1
  106. package/dist/synapse-client/index.js +3 -3
  107. package/dist/synapse-queries/KeyFactory.d.ts +13 -1
  108. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  109. package/dist/synapse-queries/KeyFactory.js +11 -1
  110. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  111. package/dist/synapse-queries/dataaccess/index.js +4 -4
  112. package/dist/synapse-queries/dataaccess/useAccessRequirements.d.ts.map +1 -1
  113. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +4 -1
  114. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  115. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +19 -5
  116. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  117. package/dist/synapse-queries/dataaccess/useEDuc.js +29 -21
  118. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  119. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +12 -0
  120. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -1
  121. package/dist/synapse-queries/dataaccess/useFormTemplate.js +52 -30
  122. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  123. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.d.ts +37 -0
  124. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.d.ts.map +1 -0
  125. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.js +35 -0
  126. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.js.map +1 -0
  127. package/dist/synapse-queries/forum/useForum.d.ts +5 -1
  128. package/dist/synapse-queries/forum/useForum.d.ts.map +1 -1
  129. package/dist/synapse-queries/forum/useForum.js +23 -1
  130. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  131. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
  132. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
  133. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  134. package/dist/synapse-queries/index.js +185 -184
  135. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +5 -3
  136. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -1
  137. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +12 -15
  138. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -1
  139. package/dist/synapse-queries/termsOfService/useTermsOfService.d.ts.map +1 -1
  140. package/dist/synapse-queries/termsOfService/useTermsOfService.js +21 -19
  141. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  142. package/dist/tsconfig.build.tsbuildinfo +1 -1
  143. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  144. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  145. package/dist/utils/functions/EntityTypeUtils.d.ts +2 -2
  146. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  147. package/dist/utils/functions/EntityTypeUtils.js +135 -135
  148. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  149. package/dist/utils/functions/getEndpoint.d.ts +1 -0
  150. package/dist/utils/functions/getEndpoint.d.ts.map +1 -1
  151. package/dist/utils/functions/getEndpoint.js +3 -3
  152. package/dist/utils/functions/getEndpoint.js.map +1 -1
  153. package/dist/utils/types/RequestableAccessRequirement.d.ts +8 -0
  154. package/dist/utils/types/RequestableAccessRequirement.d.ts.map +1 -0
  155. package/dist/utils/types/RequestableAccessRequirement.js +9 -0
  156. package/dist/utils/types/RequestableAccessRequirement.js.map +1 -0
  157. package/package.json +3 -3
  158. package/dist/testutils/ReactQueryMockUtils.js +0 -676
  159. package/dist/testutils/ReactQueryMockUtils.js.map +0 -1
@@ -1,51 +1,55 @@
1
1
  import { AVATAR as e } from "../../utils/SynapseConstants.js";
2
- import t from "../IconSvg/IconSvg.js";
3
- import { UserCard as n } from "../UserCard/UserCard.js";
4
- import { UserBadge as r } from "../UserCard/UserBadge.js";
5
- import i from "../TanStackTable/StyledTanStackTable.js";
6
- import a from "../TanStackTable/ColumnHeader.js";
7
- import { useGetForumThreadsInfinite as o } from "../../synapse-queries/forum/useForum.js";
8
- import s from "../layout/InfiniteTableLayout.js";
9
- import { useMemo as c, useState as l } from "react";
10
- import { Link as u } from "@mui/material";
11
- import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
12
- import { DiscussionThreadOrder as m } from "@sage-bionetworks/synapse-types";
13
- import h from "lodash-es/isEmpty";
14
- import g from "dayjs";
15
- import { createColumnHelper as _, getCoreRowModel as v, useReactTable as y } from "@tanstack/react-table";
2
+ import { ErrorBanner as t } from "../error/ErrorBanner.js";
3
+ import n from "../IconSvg/IconSvg.js";
4
+ import { UserCard as r } from "../UserCard/UserCard.js";
5
+ import { UserBadge as i } from "../UserCard/UserBadge.js";
6
+ import a from "../TanStackTable/StyledTanStackTable.js";
7
+ import o from "../TanStackTable/ColumnHeader.js";
8
+ import { useGetEntityThreadsInfinite as s, useGetForumThreadsInfinite as c } from "../../synapse-queries/forum/useForum.js";
9
+ import l from "../layout/InfiniteTableLayout.js";
10
+ import u from "./DiscussionEmpty.js";
11
+ import { useEffect as d, useMemo as f, useState as p } from "react";
12
+ import { Link as m } from "@mui/material";
13
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
14
+ import { DiscussionThreadOrder as v } from "@sage-bionetworks/synapse-types";
15
+ import y from "lodash-es/isEmpty";
16
+ import b from "dayjs";
17
+ import x from "dayjs/plugin/relativeTime";
18
+ import { createColumnHelper as S, getCoreRowModel as C, useReactTable as w } from "@tanstack/react-table";
16
19
  //#region src/components/Forum/ForumTable.tsx
17
- var b = _();
18
- function x(i) {
20
+ b.extend(x);
21
+ var T = S();
22
+ function E(t) {
19
23
  return [
20
- b.accessor("title", {
21
- header: (e) => /* @__PURE__ */ f(a, {
24
+ T.accessor("title", {
25
+ header: (e) => /* @__PURE__ */ g(o, {
22
26
  ...e,
23
27
  title: "Topic"
24
28
  }),
25
- cell: ({ row: e }) => /* @__PURE__ */ p(u, {
26
- onClick: () => i(e.original.id),
27
- children: [e.original.isPinned ? /* @__PURE__ */ f(t, { icon: "pushpin" }) : /* @__PURE__ */ f(d, {}), e.original.title]
29
+ cell: ({ row: e }) => /* @__PURE__ */ _(m, {
30
+ onClick: () => e.original.id && t(e.original.id, e.original.projectId),
31
+ children: [e.original.isPinned ? /* @__PURE__ */ g(n, { icon: "pushpin" }) : /* @__PURE__ */ g(h, {}), e.original.title]
28
32
  }),
29
33
  enableSorting: !0,
30
- size: 250
34
+ size: 300
31
35
  }),
32
- b.accessor("createdBy", {
33
- header: (e) => /* @__PURE__ */ f(a, {
36
+ T.accessor("createdBy", {
37
+ header: (e) => /* @__PURE__ */ g(o, {
34
38
  ...e,
35
39
  title: "Author"
36
40
  }),
37
- cell: ({ getValue: e }) => /* @__PURE__ */ f(r, { userId: e() }),
41
+ cell: ({ getValue: e }) => /* @__PURE__ */ g(i, { userId: e() }),
38
42
  enableSorting: !1,
39
- size: 60
43
+ size: 150
40
44
  }),
41
- b.accessor("activeAuthors", {
42
- header: (e) => /* @__PURE__ */ f(a, {
45
+ T.accessor("activeAuthors", {
46
+ header: (e) => /* @__PURE__ */ g(o, {
43
47
  ...e,
44
48
  title: "Active Users"
45
49
  }),
46
- cell: ({ getValue: t }) => t().map((t) => /* @__PURE__ */ f("div", {
50
+ cell: ({ getValue: t }) => (t() ?? []).map((t) => /* @__PURE__ */ g("div", {
47
51
  className: "avatarContainer",
48
- children: /* @__PURE__ */ f(n, {
52
+ children: /* @__PURE__ */ g(r, {
49
53
  showCardOnHover: !0,
50
54
  className: "ActiveUsers",
51
55
  size: e,
@@ -53,84 +57,97 @@ function x(i) {
53
57
  ownerId: t
54
58
  })
55
59
  }, t)),
56
- enableSorting: !1
60
+ enableSorting: !1,
61
+ size: 200
57
62
  }),
58
- b.accessor("numberOfReplies", {
59
- header: (e) => /* @__PURE__ */ f(a, {
63
+ T.accessor("numberOfReplies", {
64
+ header: (e) => /* @__PURE__ */ g(o, {
60
65
  ...e,
61
66
  title: "Replies"
62
67
  }),
63
- cell: ({ getValue: e }) => e().toLocaleString(),
68
+ cell: ({ getValue: e }) => e()?.toLocaleString(),
64
69
  enableSorting: !0,
65
- minSize: 10,
66
- size: 20
70
+ minSize: 90,
71
+ size: 100
67
72
  }),
68
- b.accessor("numberOfViews", {
69
- header: (e) => /* @__PURE__ */ f(a, {
73
+ T.accessor("numberOfViews", {
74
+ header: (e) => /* @__PURE__ */ g(o, {
70
75
  ...e,
71
76
  title: "Views"
72
77
  }),
73
- cell: ({ getValue: e }) => e().toLocaleString(),
78
+ cell: ({ getValue: e }) => e()?.toLocaleString(),
74
79
  enableSorting: !0,
75
- minSize: 10,
76
- size: 20
80
+ minSize: 90,
81
+ size: 100
77
82
  }),
78
- b.accessor("lastActivity", {
79
- header: (e) => /* @__PURE__ */ f(a, {
83
+ T.accessor("lastActivity", {
84
+ header: (e) => /* @__PURE__ */ g(o, {
80
85
  ...e,
81
86
  title: "Activity"
82
87
  }),
83
- cell: ({ getValue: e }) => g(e()).format("L"),
88
+ cell: ({ getValue: e }) => e() && b(e()).fromNow(),
84
89
  enableSorting: !0,
85
- size: 30
90
+ minSize: 120,
91
+ size: 140
86
92
  })
87
93
  ];
88
94
  }
89
- function S({ forumId: e, limit: t, filter: n, onClickLink: r }) {
90
- let [a, u] = l([{
95
+ function D(e) {
96
+ let { limit: n, onClickLink: r, noBackgroundColor: i, onIsEmptyChange: o, maxHeight: m = "250px" } = e, h = "entityId" in e, [b, x] = p([{
91
97
  desc: !0,
92
98
  id: "lastActivity"
93
- }]), { data: d, isLoading: p, hasNextPage: g, fetchNextPage: _, isFetchingNextPage: b } = o(e, t, c(() => {
94
- if (!h(a)) {
95
- if (a[0].id == "lastActivity") return m.PINNED_AND_LAST_ACTIVITY;
96
- if (a[0].id == "numberOfReplies") return m.NUMBER_OF_REPLIES;
97
- if (a[0].id == "title") return m.THREAD_TITLE;
98
- if (a[0].id == "numberOfViews") return m.NUMBER_OF_VIEWS;
99
+ }]), S = f(() => {
100
+ if (!y(b)) {
101
+ if (b[0].id == "lastActivity") return v.PINNED_AND_LAST_ACTIVITY;
102
+ if (b[0].id == "numberOfReplies") return v.NUMBER_OF_REPLIES;
103
+ if (b[0].id == "title") return v.THREAD_TITLE;
104
+ if (b[0].id == "numberOfViews") return v.NUMBER_OF_VIEWS;
99
105
  }
100
- return m.PINNED_AND_LAST_ACTIVITY;
101
- }, [a]), !a[0]?.desc, n), S = y({
102
- data: c(() => d?.pages.flatMap((e) => e.results) ?? [], [d]),
103
- columns: c(() => x(r), [r]),
104
- state: { sorting: a },
105
- onSortingChange: u,
106
- getRowId: (e) => e.id,
107
- getCoreRowModel: v(),
106
+ return v.PINNED_AND_LAST_ACTIVITY;
107
+ }, [b]), T = !b[0]?.desc, D = c(h ? "" : e.forumId, n, S, T, h ? void 0 : e.filter, { enabled: !h }), O = s(h ? e.entityId : "", n, S, T, { enabled: h }), { data: k, isLoading: A, error: j, hasNextPage: M, fetchNextPage: N, isFetchingNextPage: P } = h ? O : D, F = w({
108
+ data: f(() => (k?.pages ?? []).flatMap((e) => e.results), [k]),
109
+ columns: f(() => E(r), [r]),
110
+ state: { sorting: b },
111
+ onSortingChange: x,
112
+ getRowId: (e, t) => e.id ?? String(t),
113
+ getCoreRowModel: C(),
108
114
  columnResizeMode: "onChange",
109
115
  manualSorting: !0,
110
116
  enableMultiSort: !1,
111
117
  enableFilters: !1
112
- }), C = !p && S.getRowModel().rows.length === 0;
113
- return /* @__PURE__ */ f("div", {
118
+ }), I = !A && !j && F.getRowModel().rows.length === 0;
119
+ d(() => {
120
+ A || o?.(I);
121
+ }, [
122
+ A,
123
+ I,
124
+ o
125
+ ]);
126
+ let L = h ? e.onViewForumClicked : void 0;
127
+ return I && L ? /* @__PURE__ */ g(u, { onViewForumClicked: L }) : /* @__PURE__ */ _("div", {
114
128
  className: "ForumTable",
115
- children: /* @__PURE__ */ f(s, {
116
- table: /* @__PURE__ */ f(i, {
117
- table: S,
118
- styledTableContainerProps: { sx: {
119
- my: 2,
120
- maxHeight: "250px"
121
- } }
129
+ children: [/* @__PURE__ */ g(t, { error: j }), /* @__PURE__ */ g(l, {
130
+ table: /* @__PURE__ */ g(a, {
131
+ table: F,
132
+ styledTableContainerProps: {
133
+ sx: {
134
+ my: 2,
135
+ maxHeight: m
136
+ },
137
+ noBackgroundColor: i
138
+ }
122
139
  }),
123
- isLoading: p,
124
- isEmpty: C,
125
- hasNextPage: g,
140
+ isLoading: A,
141
+ isEmpty: I,
142
+ hasNextPage: M,
126
143
  onFetchNextPageClicked: () => {
127
- _();
144
+ N();
128
145
  },
129
- isFetchingNextPage: b
130
- })
146
+ isFetchingNextPage: P
147
+ })]
131
148
  });
132
149
  }
133
150
  //#endregion
134
- export { S as ForumTable };
151
+ export { D as ForumTable, D as default };
135
152
 
136
153
  //# sourceMappingURL=ForumTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ForumTable.js","names":[],"sources":["../../../src/components/Forum/ForumTable.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport { useGetForumThreadsInfinite } from '@/synapse-queries/forum/useForum'\nimport { AVATAR } from '@/utils/SynapseConstants'\nimport { Link } from '@mui/material'\nimport {\n DiscussionFilter,\n DiscussionThreadBundle,\n DiscussionThreadOrder,\n} from '@sage-bionetworks/synapse-types'\nimport {\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n SortingState,\n Table,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { useMemo, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { UserBadge } from '../UserCard/UserBadge'\nimport UserCard from '../UserCard/UserCard'\n\nexport type ForumTableProps = {\n forumId: string\n limit: number\n onClickLink: (threadId: string) => void\n filter: DiscussionFilter\n}\n\nconst columnHelper = createColumnHelper<DiscussionThreadBundle>()\n\nfunction getColumns(\n onClickLink: (threadId: string) => void,\n): ColumnDef<DiscussionThreadBundle, any>[] {\n return [\n columnHelper.accessor('title', {\n header: props => <ColumnHeader {...props} title={'Topic'} />,\n cell: ({ row }) => (\n <Link onClick={() => onClickLink(row.original.id)}>\n {row.original.isPinned ? <IconSvg icon=\"pushpin\" /> : <></>}\n {row.original.title}\n </Link>\n ),\n enableSorting: true,\n size: 250,\n }),\n columnHelper.accessor('createdBy', {\n header: props => <ColumnHeader {...props} title={'Author'} />,\n cell: ({ getValue }) => <UserBadge userId={getValue()} />,\n enableSorting: false,\n size: 60,\n }),\n columnHelper.accessor('activeAuthors', {\n header: props => <ColumnHeader {...props} title={'Active Users'} />,\n cell: ({ getValue }) =>\n getValue().map((userId: string) => (\n <div key={userId} className=\"avatarContainer\">\n <UserCard\n showCardOnHover={true}\n className=\"ActiveUsers\"\n size={AVATAR}\n avatarSize={'MEDIUM'}\n ownerId={userId}\n />\n </div>\n )),\n enableSorting: false,\n }),\n columnHelper.accessor('numberOfReplies', {\n header: props => <ColumnHeader {...props} title={'Replies'} />,\n cell: ({ getValue }) => getValue().toLocaleString(),\n enableSorting: true,\n minSize: 10,\n size: 20,\n }),\n columnHelper.accessor('numberOfViews', {\n header: props => <ColumnHeader {...props} title={'Views'} />,\n cell: ({ getValue }) => getValue().toLocaleString(),\n enableSorting: true,\n minSize: 10,\n size: 20,\n }),\n columnHelper.accessor('lastActivity', {\n header: props => <ColumnHeader {...props} title={'Activity'} />,\n cell: ({ getValue }) => dayjs(getValue()).format('L'),\n enableSorting: true,\n size: 30,\n }),\n ]\n}\n\nexport function ForumTable({\n forumId,\n limit,\n filter,\n onClickLink,\n}: ForumTableProps) {\n const [tableSortState, setTableSortState] = useState<SortingState>([\n {\n desc: true,\n id: 'lastActivity',\n },\n ])\n\n const discussionThreadOrder = useMemo(() => {\n if (!isEmpty(tableSortState)) {\n if (tableSortState[0].id == 'lastActivity') {\n return DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY\n } else if (tableSortState[0].id == 'numberOfReplies') {\n return DiscussionThreadOrder.NUMBER_OF_REPLIES\n } else if (tableSortState[0].id == 'title') {\n return DiscussionThreadOrder.THREAD_TITLE\n } else if (tableSortState[0].id == 'numberOfViews') {\n return DiscussionThreadOrder.NUMBER_OF_VIEWS\n }\n }\n return DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY\n }, [tableSortState])\n\n const { data, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useGetForumThreadsInfinite(\n forumId,\n limit,\n discussionThreadOrder,\n !tableSortState[0]?.desc,\n filter,\n )\n\n const threads = useMemo(\n () => data?.pages.flatMap(page => page.results) ?? [],\n [data],\n )\n\n const columns = useMemo(() => getColumns(onClickLink), [onClickLink])\n\n const table: Table<DiscussionThreadBundle> =\n useReactTable<DiscussionThreadBundle>({\n data: threads,\n columns: columns,\n state: {\n sorting: tableSortState,\n },\n onSortingChange: setTableSortState,\n getRowId: row => row.id,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n manualSorting: true,\n enableMultiSort: false,\n enableFilters: false,\n })\n\n const hasNoResults = !isLoading && table.getRowModel().rows.length === 0\n\n return (\n <div className=\"ForumTable\">\n <InfiniteTableLayout\n table={\n <StyledTanStackTable\n table={table}\n styledTableContainerProps={{ sx: { my: 2, maxHeight: '250px' } }}\n />\n }\n isLoading={isLoading}\n isEmpty={hasNoResults}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n void fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ForumTable.js","names":[],"sources":["../../../src/components/Forum/ForumTable.tsx"],"sourcesContent":["import { ErrorBanner } from '@/components/error/ErrorBanner'\nimport InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport {\n useGetEntityThreadsInfinite,\n useGetForumThreadsInfinite,\n} from '@/synapse-queries/forum/useForum'\nimport { AVATAR } from '@/utils/SynapseConstants'\nimport { Link } from '@mui/material'\nimport { DiscussionThreadBundle as DiscussionThreadBundleGenerated } from '@sage-bionetworks/synapse-client'\nimport {\n DiscussionFilter,\n DiscussionThreadOrder,\n PaginatedResults,\n} from '@sage-bionetworks/synapse-types'\nimport {\n ColumnDef,\n createColumnHelper,\n getCoreRowModel,\n SortingState,\n Table,\n useReactTable,\n} from '@tanstack/react-table'\nimport dayjs from 'dayjs'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { useEffect, useMemo, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\nimport ColumnHeader from '../TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '../TanStackTable/StyledTanStackTable'\nimport { UserBadge } from '../UserCard/UserBadge'\nimport UserCard from '../UserCard/UserCard'\nimport DiscussionEmpty from './DiscussionEmpty'\n\ndayjs.extend(relativeTime)\n\ntype ForumTableBaseProps = {\n limit: number\n /** Called with the clicked thread's ID and the ID of the project it belongs to */\n onClickLink: (threadId: string, projectId?: string) => void\n noBackgroundColor?: boolean\n /** Called when the first page loads, with whether there are no threads */\n onIsEmptyChange?: (isEmpty: boolean) => void\n /** Max height of the table before it scrolls. Use 'none' for full height. @default '250px' */\n maxHeight?: string\n}\n\nexport type ForumTableProps = ForumTableBaseProps &\n (\n | { forumId: string; filter: DiscussionFilter }\n | { entityId: string; onViewForumClicked?: () => void }\n )\n\nconst columnHelper = createColumnHelper<DiscussionThreadBundleGenerated>()\n\nfunction getColumns(\n onClickLink: (threadId: string, projectId?: string) => void,\n): ColumnDef<DiscussionThreadBundleGenerated, any>[] {\n return [\n columnHelper.accessor('title', {\n header: props => <ColumnHeader {...props} title={'Topic'} />,\n cell: ({ row }) => (\n <Link\n onClick={() =>\n row.original.id &&\n onClickLink(row.original.id, row.original.projectId)\n }\n >\n {row.original.isPinned ? <IconSvg icon=\"pushpin\" /> : <></>}\n {row.original.title}\n </Link>\n ),\n enableSorting: true,\n size: 300,\n }),\n columnHelper.accessor('createdBy', {\n header: props => <ColumnHeader {...props} title={'Author'} />,\n cell: ({ getValue }) => <UserBadge userId={getValue()} />,\n enableSorting: false,\n size: 150,\n }),\n columnHelper.accessor('activeAuthors', {\n header: props => <ColumnHeader {...props} title={'Active Users'} />,\n cell: ({ getValue }) =>\n (getValue() ?? []).map((userId: string) => (\n <div key={userId} className=\"avatarContainer\">\n <UserCard\n showCardOnHover={true}\n className=\"ActiveUsers\"\n size={AVATAR}\n avatarSize={'MEDIUM'}\n ownerId={userId}\n />\n </div>\n )),\n enableSorting: false,\n size: 200,\n }),\n columnHelper.accessor('numberOfReplies', {\n header: props => <ColumnHeader {...props} title={'Replies'} />,\n cell: ({ getValue }) => getValue()?.toLocaleString(),\n enableSorting: true,\n minSize: 90,\n size: 100,\n }),\n columnHelper.accessor('numberOfViews', {\n header: props => <ColumnHeader {...props} title={'Views'} />,\n cell: ({ getValue }) => getValue()?.toLocaleString(),\n enableSorting: true,\n minSize: 90,\n size: 100,\n }),\n columnHelper.accessor('lastActivity', {\n header: props => <ColumnHeader {...props} title={'Activity'} />,\n cell: ({ getValue }) => getValue() && dayjs(getValue()).fromNow(),\n enableSorting: true,\n minSize: 120,\n size: 140,\n }),\n ]\n}\n\nexport function ForumTable(props: ForumTableProps) {\n const {\n limit,\n onClickLink,\n noBackgroundColor,\n onIsEmptyChange,\n maxHeight = '250px',\n } = props\n const isEntityMode = 'entityId' in props\n\n const [tableSortState, setTableSortState] = useState<SortingState>([\n {\n desc: true,\n id: 'lastActivity',\n },\n ])\n\n const discussionThreadOrder = useMemo(() => {\n if (!isEmpty(tableSortState)) {\n if (tableSortState[0].id == 'lastActivity') {\n return DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY\n } else if (tableSortState[0].id == 'numberOfReplies') {\n return DiscussionThreadOrder.NUMBER_OF_REPLIES\n } else if (tableSortState[0].id == 'title') {\n return DiscussionThreadOrder.THREAD_TITLE\n } else if (tableSortState[0].id == 'numberOfViews') {\n return DiscussionThreadOrder.NUMBER_OF_VIEWS\n }\n }\n return DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY\n }, [tableSortState])\n\n const ascending = !tableSortState[0]?.desc\n\n const forumThreadsQuery = useGetForumThreadsInfinite(\n isEntityMode ? '' : props.forumId,\n limit,\n discussionThreadOrder,\n ascending,\n isEntityMode ? undefined : props.filter,\n { enabled: !isEntityMode },\n )\n\n const entityThreadsQuery = useGetEntityThreadsInfinite(\n isEntityMode ? props.entityId : '',\n limit,\n discussionThreadOrder,\n ascending,\n { enabled: isEntityMode },\n )\n\n const {\n data,\n isLoading,\n error,\n hasNextPage,\n fetchNextPage,\n isFetchingNextPage,\n } = isEntityMode ? entityThreadsQuery : forumThreadsQuery\n\n const threads = useMemo(() => {\n const pages: PaginatedResults<DiscussionThreadBundleGenerated>[] =\n data?.pages ?? []\n return pages.flatMap(page => page.results)\n }, [data])\n\n const columns = useMemo(() => getColumns(onClickLink), [onClickLink])\n\n const table: Table<DiscussionThreadBundleGenerated> =\n useReactTable<DiscussionThreadBundleGenerated>({\n data: threads,\n columns: columns,\n state: {\n sorting: tableSortState,\n },\n onSortingChange: setTableSortState,\n getRowId: (row, index) => row.id ?? String(index),\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n manualSorting: true,\n enableMultiSort: false,\n enableFilters: false,\n })\n\n const hasNoResults =\n !isLoading && !error && table.getRowModel().rows.length === 0\n\n useEffect(() => {\n if (!isLoading) {\n onIsEmptyChange?.(hasNoResults)\n }\n }, [isLoading, hasNoResults, onIsEmptyChange])\n\n const onViewForumClicked = isEntityMode ? props.onViewForumClicked : undefined\n\n if (hasNoResults && onViewForumClicked) {\n return <DiscussionEmpty onViewForumClicked={onViewForumClicked} />\n }\n\n return (\n <div className=\"ForumTable\">\n <ErrorBanner error={error} />\n <InfiniteTableLayout\n table={\n <StyledTanStackTable\n table={table}\n styledTableContainerProps={{\n sx: { my: 2, maxHeight },\n noBackgroundColor,\n }}\n />\n }\n isLoading={isLoading}\n isEmpty={hasNoResults}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n void fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n </div>\n )\n}\n\nexport default ForumTable\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetAccessRequirementCommonFields.d.ts","sourceRoot":"","sources":["../../../src/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.tsx"],"names":[],"mappings":"AAqBA,OAAO,EACL,gCAAgC,EAIhC,4BAA4B,EAC5B,sBAAsB,EAEvB,MAAM,iCAAiC,CAAA;AAcxC,eAAO,MAAM,gCAAgC,2FAC6C,CAAA;AAC1F,eAAO,MAAM,8BAA8B,GACzC,cAAc,sBAAsB,WASrC,CAAA;AAsBD,MAAM,MAAM,sCAAsC,GAAG;IAEnD,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,qCAAqC,GAAG;IAElD,OAAO,CAAC,EAAE,4BAA4B,CAAA;IAEtC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,MAAM,EAAE,CACN,mBAAmB,EAAE,MAAM,EAC3B,4BAA4B,EAAE,gCAAgC,KAC3D,IAAI,CAAA;IAET,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,gCAAgC,0JAiS5C,CAAA"}
1
+ {"version":3,"file":"SetAccessRequirementCommonFields.d.ts","sourceRoot":"","sources":["../../../src/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.tsx"],"names":[],"mappings":"AAsBA,OAAO,EACL,gCAAgC,EAKhC,4BAA4B,EAC5B,sBAAsB,EAEvB,MAAM,iCAAiC,CAAA;AAqBxC,eAAO,MAAM,gCAAgC,2FAC6C,CAAA;AAC1F,eAAO,MAAM,8BAA8B,GACzC,cAAc,sBAAsB,WASrC,CAAA;AAsBD,MAAM,MAAM,sCAAsC,GAAG;IAEnD,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,qCAAqC,GAAG;IAElD,OAAO,CAAC,EAAE,4BAA4B,CAAA;IAEtC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,MAAM,EAAE,CACN,mBAAmB,EAAE,MAAM,EAC3B,4BAA4B,EAAE,gCAAgC,KAC3D,IAAI,CAAA;IAET,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,gCAAgC,0JAyV5C,CAAA"}
@@ -1,161 +1,173 @@
1
1
  import { spreadSx as e } from "../../theme/spreadSx.js";
2
2
  import { SynapseErrorBoundary as t } from "../error/ErrorBanner.js";
3
- import { useCreateAccessRequirement as n, useGetAccessRequirements as r, useUpdateAccessRequirement as i } from "../../synapse-queries/dataaccess/useAccessRequirements.js";
3
+ import { useCreateAccessRequirement as n, useGetAccessRequirements as ee, useUpdateAccessRequirement as te } from "../../synapse-queries/dataaccess/useAccessRequirements.js";
4
+ import { useGetFeatureFlag as ne } from "../../synapse-queries/featureflags/useGetFeatureFlag.js";
4
5
  import "../../synapse-queries/index.js";
5
6
  import "../error/index.js";
6
- import a from "../TeamSubjectsSelector/index.js";
7
- import o from "../EntitySubjectsSelector/index.js";
8
- import { forwardRef as s, useEffect as ee, useImperativeHandle as c, useMemo as l, useState as u } from "react";
9
- import { Alert as d, Checkbox as te, FormControlLabel as f, Radio as p, RadioGroup as ne, Skeleton as m, Stack as h, TextField as g, Tooltip as _, Typography as v } from "@mui/material";
10
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
11
- import { ACCESS_TYPE as S, MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as C, RestrictableObjectType as w, SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as T } from "@sage-bionetworks/synapse-types";
12
- import { HelpOutlineTwoTone as re } from "@mui/icons-material";
13
- import E from "pluralize";
7
+ import { FeatureFlagEnum as re } from "../../utils/featureflag/FeatureFlags.js";
8
+ import ie from "../TeamSubjectsSelector/index.js";
9
+ import { FormTemplateReferenceField as ae, useFormTemplateReferenceError as oe } from "../FormTemplateReferenceField/FormTemplateReferenceField.js";
10
+ import se from "../EntitySubjectsSelector/index.js";
11
+ import { forwardRef as r, useEffect as ce, useImperativeHandle as le, useMemo as i, useState as a } from "react";
12
+ import { Alert as o, Box as ue, Checkbox as de, FormControlLabel as s, Radio as c, RadioGroup as fe, Skeleton as l, Stack as pe, TextField as u, Tooltip as me, Typography as d } from "@mui/material";
13
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
14
+ import { ACCESS_TYPE as h, JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as g, MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as _, RestrictableObjectType as v, SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as y } from "@sage-bionetworks/synapse-types";
15
+ import { HelpOutlineTwoTone as b } from "@mui/icons-material";
16
+ import x from "pluralize";
14
17
  //#region src/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.tsx
15
- var D = "Please select at least one resource for this Access Requirement to be associated with.", O = (e) => {
16
- let t = e === w.ENTITY ? "Synapse" : "Team";
17
- return `${t} IDs were specified but not added to the subjects list. Please either clear out the Add ${t} IDs textbox or click the Add ${E(e[0].toUpperCase() + e.slice(1).toLowerCase())} button.`;
18
- }, k = "Enter access requirement name. This will also be used when sending notifications for expiring or revoked approval. For example, 'The approval for the name access requirement was revoked...'", A = {
18
+ var S = "Please select at least one resource for this Access Requirement to be associated with.", C = (e) => {
19
+ let t = e === v.ENTITY ? "Synapse" : "Team";
20
+ return `${t} IDs were specified but not added to the subjects list. Please either clear out the Add ${t} IDs textbox or click the Add ${x(e[0].toUpperCase() + e.slice(1).toLowerCase())} button.`;
21
+ }, he = "Enter access requirement name. This will also be used when sending notifications for expiring or revoked approval. For example, 'The approval for the name access requirement was revoked...'", w = {
19
22
  variant: "body1",
20
23
  fontWeight: 700
21
24
  };
22
- function ie(e) {
25
+ function ge(e) {
23
26
  switch (e) {
24
- case w.ENTITY: return S.DOWNLOAD;
25
- case w.TEAM: return S.PARTICIPATE;
27
+ case v.ENTITY: return h.DOWNLOAD;
28
+ case v.TEAM: return h.PARTICIPATE;
26
29
  default: throw Error(`RestrictableObjectType ${e} does not have an access type specified.`);
27
30
  }
28
31
  }
29
- var j = s(function(s, S) {
30
- let { subject: E, accessRequirementId: j, onSave: ae, onError: M } = s, N = !E, [P, F] = u(E ? [E] : []), [I, oe] = u(!1), [L, R] = u(null), [z, B] = u(""), [V, H] = u(!1), [U, W] = u(E?.type === w.TEAM ? T : C), [G, K] = u(null), q = (e) => {
31
- K(null), ae(e.id.toString(), e.concreteType);
32
+ var T = r(function(r, h) {
33
+ let { subject: x, accessRequirementId: T, onSave: _e, onError: E } = r, D = !x, [O, k] = a(x ? [x] : []), [A, ve] = a(!1), [j, M] = a(null), [N, P] = a(""), [F, I] = a(!1), [L, R] = a(x?.type === v.TEAM ? y : _), [z, B] = a(null), V = ne(re.ACT_DASHBOARD_FORM_TEMPLATES), [H, U] = a(void 0), [ye, W] = a(!1), G = V && L === g, K = oe(G ? H : void 0), q = (e) => {
34
+ B(null), _e(e.id.toString(), e.concreteType);
32
35
  }, J = (e) => {
33
- K(e.reason), M();
36
+ B(e.reason), E();
34
37
  }, { mutate: Y } = n({
35
38
  onSuccess: (e) => q(e),
36
39
  onError: (e) => J(e)
37
- }), { mutate: X } = i({
40
+ }), { mutate: X } = te({
38
41
  onSuccess: (e) => q(e),
39
42
  onError: (e) => J(e)
40
- }), { data: Z, isLoading: se, error: Q } = r(j, { enabled: !!j });
41
- ee(() => {
42
- Z && (W(Z.concreteType), B(Z.name), F(Z.subjectIds), H(Z.subjectsDefinedByAnnotations));
43
+ }), { data: Z, isLoading: be, error: Q } = ee(T, { enabled: !!T });
44
+ ce(() => {
45
+ Z && (R(Z.concreteType), Z.concreteType === g && U(Z.formTemplateRef), P(Z.name), k(Z.subjectIds), I(Z.subjectsDefinedByAnnotations));
43
46
  }, [Z]);
44
- let $ = l(() => {
45
- if (E) return E.type;
47
+ let $ = i(() => {
48
+ if (x) return x.type;
46
49
  if (Z) {
47
50
  let e = Z.subjectIds;
48
51
  if (e.length > 0) return e[0].type;
49
52
  }
50
- return V ? w.ENTITY : null;
53
+ return F ? v.ENTITY : null;
51
54
  }, [
52
- E,
55
+ x,
53
56
  Z,
54
- V
55
- ]), ce = l(() => {
56
- if (!$) return /* @__PURE__ */ b(y, {});
57
+ F
58
+ ]), xe = i(() => {
59
+ if (!$) return /* @__PURE__ */ p(f, {});
57
60
  function e(e) {
58
- R(null), F(e);
61
+ M(null), k(e);
59
62
  }
60
63
  function t(e) {
61
- R(null), oe(e.trim() !== "");
64
+ M(null), ve(e.trim() !== "");
62
65
  }
63
- if (V) return /* @__PURE__ */ b(y, {});
66
+ if (F) return /* @__PURE__ */ p(f, {});
64
67
  switch ($) {
65
- case w.TEAM: return /* @__PURE__ */ b(a, {
66
- subjects: P,
68
+ case v.TEAM: return /* @__PURE__ */ p(ie, {
69
+ subjects: O,
67
70
  onUpdate: (t) => e(t),
68
71
  onUpdateTeamIDsTextbox: (e) => t(e)
69
72
  });
70
- case w.ENTITY: return /* @__PURE__ */ b(o, {
71
- subjects: P,
73
+ case v.ENTITY: return /* @__PURE__ */ p(se, {
74
+ subjects: O,
72
75
  onUpdate: (t) => e(t),
73
76
  onUpdateEntityIDsTextbox: (e) => t(e)
74
77
  });
75
- default: return console.error(`RestrictableObjectType ${$} does not have a selector implemented.`), /* @__PURE__ */ b(y, {});
78
+ default: return console.error(`RestrictableObjectType ${$} does not have a selector implemented.`), /* @__PURE__ */ p(f, {});
76
79
  }
77
80
  }, [
78
81
  $,
79
- P,
80
- V
82
+ O,
83
+ F
81
84
  ]);
82
- return c(S, () => ({ save() {
83
- let e = N && !Z || !$, t = !V && (I || P.length === 0);
85
+ return le(h, () => ({ save() {
86
+ let e = D && !Z || !$, t = !F && (A || O.length === 0);
84
87
  if (e || t) {
85
- t && !e && (I ? R(O($)) : P.length === 0 && R(D)), M();
88
+ t && !e && (A ? M(C($)) : O.length === 0 && M(S)), E();
89
+ return;
90
+ }
91
+ if (G && K) {
92
+ W(!0), E();
86
93
  return;
87
94
  }
88
- let n = ie($);
89
- N || Y({
90
- concreteType: U,
91
- subjectIds: P,
92
- name: z,
95
+ let n = ge($);
96
+ D || Y({
97
+ concreteType: L,
98
+ subjectIds: O,
99
+ name: N,
93
100
  accessType: n,
94
- subjectsDefinedByAnnotations: V
95
- }), N && Z && X({
101
+ subjectsDefinedByAnnotations: F,
102
+ ...G ? { formTemplateRef: H } : {}
103
+ }), D && Z && X({
96
104
  ...Z,
97
- subjectIds: P,
98
- name: z,
105
+ subjectIds: O,
106
+ name: N,
99
107
  accessType: n,
100
- subjectsDefinedByAnnotations: V
108
+ subjectsDefinedByAnnotations: F,
109
+ ...G ? { formTemplateRef: H } : {}
101
110
  });
102
111
  } }), [
103
- I,
112
+ A,
104
113
  $,
105
- P,
106
- z,
107
- U,
108
- Z,
114
+ O,
109
115
  N,
110
- M,
116
+ L,
117
+ Z,
118
+ D,
119
+ E,
111
120
  Y,
112
121
  X,
113
- V
114
- ]), se || !$ ? /* @__PURE__ */ x(y, { children: [
115
- /* @__PURE__ */ b(m, {
122
+ F,
123
+ G,
124
+ H,
125
+ K
126
+ ]), be || !$ ? /* @__PURE__ */ m(f, { children: [
127
+ /* @__PURE__ */ p(l, {
116
128
  width: 100,
117
129
  height: 30
118
130
  }),
119
- /* @__PURE__ */ b(m, {
131
+ /* @__PURE__ */ p(l, {
120
132
  width: 125,
121
133
  height: 30
122
134
  }),
123
- /* @__PURE__ */ b(m, {
135
+ /* @__PURE__ */ p(l, {
124
136
  width: "100%",
125
- children: /* @__PURE__ */ b(g, {})
137
+ children: /* @__PURE__ */ p(u, {})
126
138
  }),
127
- /* @__PURE__ */ b(m, {
139
+ /* @__PURE__ */ p(l, {
128
140
  width: 100,
129
141
  height: 30
130
142
  }),
131
- /* @__PURE__ */ b(m, {
143
+ /* @__PURE__ */ p(l, {
132
144
  width: "100%",
133
- children: /* @__PURE__ */ b(g, {})
145
+ children: /* @__PURE__ */ p(u, {})
134
146
  })
135
- ] }) : Q ? /* @__PURE__ */ b(d, {
147
+ ] }) : Q ? /* @__PURE__ */ p(o, {
136
148
  severity: "error",
137
149
  children: Q.reason
138
- }) : /* @__PURE__ */ x(y, { children: [
139
- /* @__PURE__ */ b(v, {
140
- ...A,
150
+ }) : /* @__PURE__ */ m(f, { children: [
151
+ /* @__PURE__ */ p(d, {
152
+ ...w,
141
153
  children: "Resources"
142
154
  }),
143
- $ !== w.TEAM && /* @__PURE__ */ b(f, {
144
- control: /* @__PURE__ */ b(te, {}),
155
+ $ !== v.TEAM && /* @__PURE__ */ p(s, {
156
+ control: /* @__PURE__ */ p(de, {}),
145
157
  label: "Associated entities should be defined by annotations (DUO)",
146
- checked: V,
158
+ checked: F,
147
159
  onChange: () => {
148
- R(null);
160
+ M(null);
149
161
  let e = [];
150
- V && (Z ? e = Z.subjectIds : E && (e = [E])), F(e), H(!V);
162
+ F && (Z ? e = Z.subjectIds : x && (e = [x])), k(e), I(!F);
151
163
  }
152
164
  }),
153
- /* @__PURE__ */ b(t, { children: ce }),
154
- L && /* @__PURE__ */ b(d, {
165
+ /* @__PURE__ */ p(t, { children: xe }),
166
+ j && /* @__PURE__ */ p(o, {
155
167
  severity: "error",
156
- children: L
168
+ children: j
157
169
  }),
158
- /* @__PURE__ */ x(h, {
170
+ /* @__PURE__ */ m(pe, {
159
171
  direction: "row",
160
172
  sx: {
161
173
  gap: 1,
@@ -163,50 +175,72 @@ var j = s(function(s, S) {
163
175
  mb: 1,
164
176
  mt: 2
165
177
  },
166
- children: [/* @__PURE__ */ b(v, {
178
+ children: [/* @__PURE__ */ p(d, {
167
179
  component: "label",
168
180
  htmlFor: "arName",
169
- ...A,
181
+ ...w,
170
182
  children: "Name"
171
- }), /* @__PURE__ */ b(_, {
172
- title: k,
183
+ }), /* @__PURE__ */ p(me, {
184
+ title: he,
173
185
  placement: "right",
174
- children: /* @__PURE__ */ b(re, { sx: { color: "grey.600" } })
186
+ children: /* @__PURE__ */ p(b, { sx: { color: "grey.600" } })
175
187
  })]
176
188
  }),
177
- /* @__PURE__ */ b(g, {
189
+ /* @__PURE__ */ p(u, {
178
190
  id: "arName",
179
191
  name: "arName",
180
- value: z,
192
+ value: N,
181
193
  placeholder: "Access requirement name",
182
194
  fullWidth: !0,
183
- onChange: (e) => B(e.target.value)
195
+ onChange: (e) => P(e.target.value)
184
196
  }),
185
- !N && $ !== w.TEAM && /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(v, {
186
- ...A,
187
- sx: e({ mt: 2 }, A.sx),
197
+ !D && $ !== v.TEAM && /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(d, {
198
+ ...w,
199
+ sx: e({ mt: 2 }, w.sx),
188
200
  children: "Access requirement type"
189
- }), /* @__PURE__ */ x(ne, {
190
- value: U,
191
- onChange: (e, t) => W(t),
192
- children: [/* @__PURE__ */ b(f, {
193
- value: C,
194
- control: /* @__PURE__ */ b(p, {}),
195
- label: "Controlled - requests are in Synapse"
196
- }), /* @__PURE__ */ b(f, {
197
- value: T,
198
- control: /* @__PURE__ */ b(p, {}),
199
- label: "Click wrap"
200
- })]
201
+ }), /* @__PURE__ */ m(fe, {
202
+ value: L,
203
+ onChange: (e, t) => R(t),
204
+ children: [
205
+ /* @__PURE__ */ p(s, {
206
+ value: _,
207
+ control: /* @__PURE__ */ p(c, {}),
208
+ label: "Controlled - requests are in Synapse"
209
+ }),
210
+ /* @__PURE__ */ p(s, {
211
+ value: y,
212
+ control: /* @__PURE__ */ p(c, {}),
213
+ label: "Click wrap"
214
+ }),
215
+ V && /* @__PURE__ */ p(s, {
216
+ value: g,
217
+ control: /* @__PURE__ */ p(c, {}),
218
+ label: "Schema-driven - requests are in Synapse, using a form template"
219
+ })
220
+ ]
201
221
  })] }),
202
- G && /* @__PURE__ */ b(d, {
222
+ G && /* @__PURE__ */ m(ue, {
223
+ sx: { mt: 2 },
224
+ children: [/* @__PURE__ */ p(d, {
225
+ ...w,
226
+ sx: e({ mb: 1 }, w.sx),
227
+ children: "Form presented to requesters"
228
+ }), /* @__PURE__ */ p(ae, {
229
+ value: H,
230
+ onChange: (e) => {
231
+ W(!1), U(e);
232
+ },
233
+ error: ye ? K : null
234
+ })]
235
+ }),
236
+ z && /* @__PURE__ */ p(o, {
203
237
  severity: "error",
204
238
  sx: { marginTop: 2 },
205
- children: G
239
+ children: z
206
240
  })
207
241
  ] });
208
242
  });
209
243
  //#endregion
210
- export { D as EMPTY_SUBJECT_LIST_ERROR_MESSAGE, j as SetAccessRequirementCommonFields, O as UNSAVED_SUBJECTS_ERROR_MESSAGE };
244
+ export { S as EMPTY_SUBJECT_LIST_ERROR_MESSAGE, T as SetAccessRequirementCommonFields, C as UNSAVED_SUBJECTS_ERROR_MESSAGE };
211
245
 
212
246
  //# sourceMappingURL=SetAccessRequirementCommonFields.js.map