synapse-react-client 3.1.28 → 3.1.29

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 (121) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/GoogleIcon.d.ts +3 -0
  3. package/dist/assets/GoogleIcon.js +22 -0
  4. package/dist/assets/GoogleIcon.js.map +1 -0
  5. package/dist/assets/icons/Alert.d.ts +2 -0
  6. package/dist/assets/icons/Alert.js +9 -0
  7. package/dist/assets/icons/Alert.js.map +1 -0
  8. package/dist/assets/icons/Cavatica.d.ts +3 -0
  9. package/dist/assets/icons/Cavatica.js +17 -0
  10. package/dist/assets/icons/Cavatica.js.map +1 -0
  11. package/dist/assets/icons/columns.d.ts +3 -0
  12. package/dist/assets/icons/columns.js +9 -0
  13. package/dist/assets/icons/columns.js.map +1 -0
  14. package/dist/assets/icons/columnsDarkTheme.d.ts +3 -0
  15. package/dist/assets/icons/columnsDarkTheme.js +9 -0
  16. package/dist/assets/icons/columnsDarkTheme.js.map +1 -0
  17. package/dist/assets/themed_icons/Active.d.ts +2 -0
  18. package/dist/assets/themed_icons/Active.js +10 -0
  19. package/dist/assets/themed_icons/Active.js.map +1 -0
  20. package/dist/containers/GoogleMap/GoogleMap.d.ts +15 -0
  21. package/dist/containers/GoogleMap/GoogleMap.js +58 -0
  22. package/dist/containers/GoogleMap/GoogleMap.js.map +1 -0
  23. package/dist/containers/GoogleMap/SynapseUserMarker.d.ts +19 -0
  24. package/dist/containers/GoogleMap/SynapseUserMarker.js +41 -0
  25. package/dist/containers/GoogleMap/SynapseUserMarker.js.map +1 -0
  26. package/dist/containers/StorybookComponentWrapper.d.ts +16 -0
  27. package/dist/containers/StorybookComponentWrapper.js +131 -0
  28. package/dist/containers/StorybookComponentWrapper.js.map +1 -0
  29. package/dist/containers/TemplateComponent.d.ts +6 -0
  30. package/dist/containers/TemplateComponent.js +20 -0
  31. package/dist/containers/TemplateComponent.js.map +1 -0
  32. package/dist/containers/access_requirement_list/ManagedACTAccessRequirement.d.ts +4 -0
  33. package/dist/containers/access_requirement_list/ManagedACTAccessRequirement.js +38 -0
  34. package/dist/containers/access_requirement_list/ManagedACTAccessRequirement.js.map +1 -0
  35. package/dist/containers/auth/AuthenticationMethodSelection.js +4 -2
  36. package/dist/containers/auth/AuthenticationMethodSelection.js.map +1 -1
  37. package/dist/containers/auth/LoginForm.js +1 -1
  38. package/dist/containers/auth/LoginForm.js.map +1 -1
  39. package/dist/containers/auth/Logout.d.ts +5 -0
  40. package/dist/containers/auth/Logout.js +15 -0
  41. package/dist/containers/auth/Logout.js.map +1 -0
  42. package/dist/containers/auth/TOTPForm.js +1 -1
  43. package/dist/containers/auth/TOTPForm.js.map +1 -1
  44. package/dist/containers/discussion_forum/DiscussionReply.d.ts +7 -0
  45. package/dist/containers/discussion_forum/DiscussionReply.js +63 -0
  46. package/dist/containers/discussion_forum/DiscussionReply.js.map +1 -0
  47. package/dist/containers/discussion_forum/DiscussionThread.d.ts +6 -0
  48. package/dist/containers/discussion_forum/DiscussionThread.js +126 -0
  49. package/dist/containers/discussion_forum/DiscussionThread.js.map +1 -0
  50. package/dist/containers/discussion_forum/ForumPage.d.ts +7 -0
  51. package/dist/containers/discussion_forum/ForumPage.js +70 -0
  52. package/dist/containers/discussion_forum/ForumPage.js.map +1 -0
  53. package/dist/containers/discussion_forum/ForumTable.d.ts +9 -0
  54. package/dist/containers/discussion_forum/ForumTable.js +93 -0
  55. package/dist/containers/discussion_forum/ForumTable.js.map +1 -0
  56. package/dist/containers/discussion_forum/ForumThreadEditor.d.ts +9 -0
  57. package/dist/containers/discussion_forum/ForumThreadEditor.js +82 -0
  58. package/dist/containers/discussion_forum/ForumThreadEditor.js.map +1 -0
  59. package/dist/containers/discussion_forum/SubscribersModal.d.ts +9 -0
  60. package/dist/containers/discussion_forum/SubscribersModal.js +25 -0
  61. package/dist/containers/discussion_forum/SubscribersModal.js.map +1 -0
  62. package/dist/containers/markdown/MarkdownEditor.d.ts +11 -0
  63. package/dist/containers/markdown/MarkdownEditor.js +112 -0
  64. package/dist/containers/markdown/MarkdownEditor.js.map +1 -0
  65. package/dist/containers/markdown/UserMentionModal.d.ts +7 -0
  66. package/dist/containers/markdown/UserMentionModal.js +25 -0
  67. package/dist/containers/markdown/UserMentionModal.js.map +1 -0
  68. package/dist/containers/menu/DropdownMenu.js +1 -1
  69. package/dist/containers/menu/DropdownMenu.js.map +1 -1
  70. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.d.ts +1 -0
  71. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js +2 -2
  72. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js.map +1 -1
  73. package/dist/containers/table/TopLevelControls.d.ts +1 -0
  74. package/dist/containers/table/TopLevelControls.js +12 -3
  75. package/dist/containers/table/TopLevelControls.js.map +1 -1
  76. package/dist/umd/synapse-react-client.development.js +7567 -7836
  77. package/dist/umd/synapse-react-client.development.js.map +4 -4
  78. package/dist/umd/synapse-react-client.production.min.js +91 -91
  79. package/dist/utils/functions/index.d.ts +9 -0
  80. package/dist/utils/functions/index.js +9 -0
  81. package/dist/utils/functions/index.js.map +1 -0
  82. package/dist/utils/functions/sqlFunctions.d.ts +2 -2
  83. package/dist/utils/functions/sqlFunctions.js +56 -33
  84. package/dist/utils/functions/sqlFunctions.js.map +1 -1
  85. package/dist/utils/hooks/SynapseAPI/entity/useExportToCavatica.d.ts +2 -0
  86. package/dist/utils/hooks/SynapseAPI/entity/useExportToCavatica.js +55 -0
  87. package/dist/utils/hooks/SynapseAPI/entity/useExportToCavatica.js.map +1 -0
  88. package/dist/utils/hooks/SynapseAPI/forum/useForum.d.ts +7 -0
  89. package/dist/utils/hooks/SynapseAPI/forum/useForum.js +31 -0
  90. package/dist/utils/hooks/SynapseAPI/forum/useForum.js.map +1 -0
  91. package/dist/utils/hooks/SynapseAPI/forum/useReply.d.ts +10 -0
  92. package/dist/utils/hooks/SynapseAPI/forum/useReply.js +120 -0
  93. package/dist/utils/hooks/SynapseAPI/forum/useReply.js.map +1 -0
  94. package/dist/utils/hooks/SynapseAPI/forum/useThread.d.ts +18 -0
  95. package/dist/utils/hooks/SynapseAPI/forum/useThread.js +236 -0
  96. package/dist/utils/hooks/SynapseAPI/forum/useThread.js.map +1 -0
  97. package/dist/utils/hooks/SynapseAPI/provenance/useGetActivityForEntity.d.ts +4 -0
  98. package/dist/utils/hooks/SynapseAPI/provenance/useGetActivityForEntity.js +14 -0
  99. package/dist/utils/hooks/SynapseAPI/provenance/useGetActivityForEntity.js.map +1 -0
  100. package/dist/utils/hooks/SynapseAPI/subscription/useSubscription.d.ts +13 -0
  101. package/dist/utils/hooks/SynapseAPI/subscription/useSubscription.js +107 -0
  102. package/dist/utils/hooks/SynapseAPI/subscription/useSubscription.js.map +1 -0
  103. package/dist/utils/hooks/useDetectSSOCode.d.ts +2 -1
  104. package/dist/utils/hooks/useDetectSSOCode.js +4 -12
  105. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  106. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.d.ts +4 -0
  107. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js +3 -0
  108. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js.map +1 -0
  109. package/dist/utils/synapseTypes/MarkdownCommands.d.ts +8 -0
  110. package/dist/utils/synapseTypes/MarkdownCommands.js +58 -0
  111. package/dist/utils/synapseTypes/MarkdownCommands.js.map +1 -0
  112. package/dist/utils/synapseTypes/Table/QueryFilter.d.ts +3 -1
  113. package/dist/utils/synapseTypes/Table/QueryFilter.js +7 -0
  114. package/dist/utils/synapseTypes/Table/QueryFilter.js.map +1 -1
  115. package/dist/utils/theme/index.d.ts +3 -0
  116. package/dist/utils/theme/index.js +7 -0
  117. package/dist/utils/theme/index.js.map +1 -0
  118. package/dist/utils/types/DeepPartial.d.ts +9 -0
  119. package/dist/utils/types/DeepPartial.js +3 -0
  120. package/dist/utils/types/DeepPartial.js.map +1 -0
  121. package/package.json +10 -19
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export type LogoutProps = {
3
+ callback: () => void;
4
+ };
5
+ export default function Logout(props: LogoutProps): JSX.Element;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var utils_1 = require("../../utils");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var react_bootstrap_1 = require("react-bootstrap");
7
+ function Logout(props) {
8
+ var callback = props.callback;
9
+ return (react_1.default.createElement("div", { className: "bootstrap-4-backport" },
10
+ react_1.default.createElement(react_bootstrap_1.Button, { variant: "default", onClick: function () {
11
+ utils_1.SynapseClient.signOut().then(callback);
12
+ } }, "Log out")));
13
+ }
14
+ exports.default = Logout;
15
+ //# sourceMappingURL=Logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logout.js","sourceRoot":"","sources":["../../../src/lib/containers/auth/Logout.tsx"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,wDAAyB;AACzB,mDAAwC;AAMxC,SAAwB,MAAM,CAAC,KAAkB;IACvC,IAAA,QAAQ,GAAK,KAAK,SAAV,CAAU;IAC1B,OAAO,CACL,uCAAK,SAAS,EAAC,sBAAsB;QACnC,8BAAC,wBAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE;gBACP,qBAAa,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACxC,CAAC,cAGM,CACL,CACP,CAAA;AACH,CAAC;AAdD,yBAcC"}
@@ -10,7 +10,7 @@ function TOTPForm(props) {
10
10
  var onSubmit = props.onSubmit, isLoading = props.isLoading;
11
11
  var _a = react_1.default.useState(''), verificationCode = _a[0], setVerificationCode = _a[1];
12
12
  return (react_1.default.createElement(material_1.Box, null,
13
- react_1.default.createElement(mui_one_time_password_input_1.MuiOtpInput, { length: TOTP_LENGTH, value: verificationCode, onChange: setVerificationCode, onComplete: onSubmit, validateChar: function (character) {
13
+ react_1.default.createElement(mui_one_time_password_input_1.MuiOtpInput, { autoFocus: true, length: TOTP_LENGTH, value: verificationCode, onChange: setVerificationCode, onComplete: onSubmit, validateChar: function (character) {
14
14
  return DIGIT_CHARACTERS.includes(character) || character === '';
15
15
  }, gap: 0, sx: {
16
16
  '.MuiFormControl-root:first-of-type > .MuiInputBase-root': {
@@ -1 +1 @@
1
- {"version":3,"file":"TOTPForm.js","sourceRoot":"","sources":["../../../src/lib/containers/auth/TOTPForm.tsx"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,0CAA2C;AAC3C,2EAAyD;AAGzD,IAAM,WAAW,GAAG,CAAC,CAAA;AACrB,IAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAO3E,SAAwB,QAAQ,CAAC,KAAoB;IAC3C,IAAA,QAAQ,GAAgB,KAAK,SAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAU;IAC/B,IAAA,KAA0C,eAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3D,gBAAgB,QAAA,EAAE,mBAAmB,QAAsB,CAAA;IAClE,OAAO,CACL,8BAAC,cAAG;QACF,8BAAC,yCAAW,IACV,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,UAAC,SAAiB;gBAC9B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,EAAE,CAAA;YACjE,CAAC,EACD,GAAG,EAAE,CAAC,EACN,EAAE,EAAE;gBACF,yDAAyD,EAAE;oBACzD,oBAAoB,EAAE,CAAC;oBACvB,uBAAuB,EAAE,CAAC;iBAC3B;gBACD,wDAAwD,EAAE;oBACxD,mBAAmB,EAAE,CAAC;oBACtB,sBAAsB,EAAE,CAAC;iBAC1B;gBACD,kFAAkF,EAChF;oBACE,YAAY,EAAE,CAAC;iBAChB;aACJ,GACD;QAEF,8BAAC,iBAAM,IACL,SAAS,QACT,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,EAAE,EAAE;gBACF,MAAM,EAAE,MAAM;gBACd,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;aACN,EACD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,EAC9D,OAAO,EAAE,UAAA,CAAC;gBACR,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,QAAQ,CAAC,gBAAgB,CAAC,CAAA;YAC5B,CAAC,IAEA,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/B,CACL,CACP,CAAA;AACH,CAAC;AAlDD,2BAkDC"}
1
+ {"version":3,"file":"TOTPForm.js","sourceRoot":"","sources":["../../../src/lib/containers/auth/TOTPForm.tsx"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,0CAA2C;AAC3C,2EAAyD;AAGzD,IAAM,WAAW,GAAG,CAAC,CAAA;AACrB,IAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAO3E,SAAwB,QAAQ,CAAC,KAAoB;IAC3C,IAAA,QAAQ,GAAgB,KAAK,SAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAU;IAC/B,IAAA,KAA0C,eAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3D,gBAAgB,QAAA,EAAE,mBAAmB,QAAsB,CAAA;IAClE,OAAO,CACL,8BAAC,cAAG;QACF,8BAAC,yCAAW,IACV,SAAS,QACT,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,UAAC,SAAiB;gBAC9B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,EAAE,CAAA;YACjE,CAAC,EACD,GAAG,EAAE,CAAC,EACN,EAAE,EAAE;gBACF,yDAAyD,EAAE;oBACzD,oBAAoB,EAAE,CAAC;oBACvB,uBAAuB,EAAE,CAAC;iBAC3B;gBACD,wDAAwD,EAAE;oBACxD,mBAAmB,EAAE,CAAC;oBACtB,sBAAsB,EAAE,CAAC;iBAC1B;gBACD,kFAAkF,EAChF;oBACE,YAAY,EAAE,CAAC;iBAChB;aACJ,GACD;QAEF,8BAAC,iBAAM,IACL,SAAS,QACT,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,EAAE,EAAE;gBACF,MAAM,EAAE,MAAM;gBACd,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;aACN,EACD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,EAC9D,OAAO,EAAE,UAAA,CAAC;gBACR,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,QAAQ,CAAC,gBAAgB,CAAC,CAAA;YAC5B,CAAC,IAEA,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/B,CACL,CACP,CAAA;AACH,CAAC;AAnDD,2BAmDC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { DiscussionReplyBundle } from '../../utils/synapseTypes/DiscussionBundle';
3
+ export type DiscussionReplyProps = {
4
+ reply: DiscussionReplyBundle;
5
+ onClickLink?: () => void;
6
+ };
7
+ export declare const DiscussionReply: React.FC<DiscussionReplyProps>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscussionReply = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var DateFormatter_1 = require("../../utils/functions/DateFormatter");
8
+ var SynapseConstants_1 = require("../../utils/SynapseConstants");
9
+ var UserCard_1 = tslib_1.__importDefault(require("../UserCard"));
10
+ var MarkdownSynapse_1 = tslib_1.__importDefault(require("../markdown/MarkdownSynapse"));
11
+ var synapseTypes_1 = require("../../utils/synapseTypes");
12
+ var IconSvg_1 = tslib_1.__importDefault(require("../IconSvg"));
13
+ var react_bootstrap_1 = require("react-bootstrap");
14
+ var ForumThreadEditor_1 = require("./ForumThreadEditor");
15
+ var SynapseAPI_1 = require("../../utils/hooks/SynapseAPI");
16
+ var useReply_1 = require("../../utils/hooks/SynapseAPI/forum/useReply");
17
+ var ToastMessage_1 = require("../ToastMessage");
18
+ var WarningModal_1 = tslib_1.__importDefault(require("../synapse_form_wrapper/WarningModal"));
19
+ var SkeletonTable_1 = require("../../assets/skeletons/SkeletonTable");
20
+ var DiscussionReply = function (_a) {
21
+ var reply = _a.reply, _b = _a.onClickLink, onClickLink = _b === void 0 ? function () { return alert('This functionality has not been implemented yet'); } : _b;
22
+ var _c = (0, react_1.useState)(false), showReplyModal = _c[0], setShowReplyModal = _c[1];
23
+ var _d = (0, react_1.useState)(false), showDeleteModal = _d[0], setShowDeleteModal = _d[1];
24
+ var currentUserProfile = (0, SynapseAPI_1.useGetCurrentUserProfile)().data;
25
+ var entityBundle = (0, SynapseAPI_1.useGetEntityBundle)(reply.projectId).data;
26
+ var _e = (0, useReply_1.useGetReply)(reply), message = _e.data, isLoading = _e.isLoading;
27
+ var deleteReply = (0, useReply_1.useDeleteReply)({
28
+ onSuccess: function () {
29
+ setShowDeleteModal(false);
30
+ (0, ToastMessage_1.displayToast)('A reply has been deleted.', 'info');
31
+ },
32
+ }).mutate;
33
+ var isCurrentUserAuthor = reply.createdBy == (currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.ownerId);
34
+ return (react_1.default.createElement("div", { className: "reply-container" },
35
+ isLoading ? (react_1.default.createElement(SkeletonTable_1.SkeletonTable, { numCols: 1, numRows: 4 })) : (react_1.default.createElement(react_1.default.Fragment, null, message && (react_1.default.createElement("div", null,
36
+ react_1.default.createElement(UserCard_1.default, { withAvatar: true, avatarSize: "MEDIUM", showCardOnHover: true, size: SynapseConstants_1.SMALL_USER_CARD, ownerId: reply.createdBy }),
37
+ react_1.default.createElement("div", { className: "message-body" },
38
+ react_1.default.createElement(MarkdownSynapse_1.default, { markdown: message, objectType: synapseTypes_1.ObjectType.REPLY }),
39
+ react_1.default.createElement("span", null,
40
+ "posted ",
41
+ (0, DateFormatter_1.formatDate)((0, dayjs_1.default)(reply.createdOn), 'M/D/YYYY')),
42
+ react_1.default.createElement("div", { style: { float: 'right' } },
43
+ react_1.default.createElement("button", { onClick: function () { return onClickLink(); } },
44
+ react_1.default.createElement(IconSvg_1.default, { icon: "link" })),
45
+ isCurrentUserAuthor && (react_1.default.createElement("button", { onClick: function () { return setShowReplyModal(true); } },
46
+ react_1.default.createElement(IconSvg_1.default, { icon: "edit" }))),
47
+ (entityBundle === null || entityBundle === void 0 ? void 0 : entityBundle.permissions.canModerate) && (react_1.default.createElement("button", { onClick: function () { return setShowDeleteModal(true); } },
48
+ react_1.default.createElement(IconSvg_1.default, { icon: "delete" }))))))))),
49
+ react_1.default.createElement(react_bootstrap_1.Modal, { size: "lg", show: showReplyModal, onHide: function () { return setShowReplyModal(false); }, animation: false },
50
+ react_1.default.createElement(react_bootstrap_1.Modal.Header, null,
51
+ react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "Edit Reply")),
52
+ react_1.default.createElement(react_bootstrap_1.Modal.Body, null,
53
+ react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { isReply: true, initialText: message, onClose: function () { return setShowReplyModal(false); }, id: reply.id }))),
54
+ react_1.default.createElement(WarningModal_1.default, { show: showDeleteModal, className: "bootstrap-4-backport", title: "Confirm Deletion", modalBody: "Are you sure you want to delete this reply?", onCancel: function () { return setShowDeleteModal(false); }, onConfirm: function () {
55
+ return deleteReply({
56
+ forumId: reply.forumId,
57
+ threadId: reply.threadId,
58
+ replyId: reply.id,
59
+ });
60
+ }, confirmButtonVariant: "danger", confirmButtonText: "Delete" })));
61
+ };
62
+ exports.DiscussionReply = DiscussionReply;
63
+ //# sourceMappingURL=DiscussionReply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscussionReply.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/DiscussionReply.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export type DiscussionThreadProps = {
3
+ threadId: string;
4
+ limit: number;
5
+ };
6
+ export declare function DiscussionThread(props: DiscussionThreadProps): JSX.Element;
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscussionThread = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var DateFormatter_1 = require("../../utils/functions/DateFormatter");
8
+ var useReply_1 = require("../../utils/hooks/SynapseAPI/forum/useReply");
9
+ var useThread_1 = require("../../utils/hooks/SynapseAPI/forum/useThread");
10
+ var SynapseConstants_1 = require("../../utils/SynapseConstants");
11
+ var Subscription_1 = require("../../utils/synapseTypes/Subscription");
12
+ var UserCard_1 = tslib_1.__importDefault(require("../UserCard"));
13
+ var ToastMessage_1 = require("../ToastMessage");
14
+ var DiscussionReply_1 = require("./DiscussionReply");
15
+ var react_bootstrap_1 = require("react-bootstrap");
16
+ var material_1 = require("@mui/material");
17
+ var IconSvg_1 = tslib_1.__importDefault(require("../IconSvg"));
18
+ var MarkdownSynapse_1 = tslib_1.__importDefault(require("../markdown/MarkdownSynapse"));
19
+ var synapseTypes_1 = require("../../utils/synapseTypes");
20
+ var useSubscription_1 = require("../../utils/hooks/SynapseAPI/subscription/useSubscription");
21
+ var SynapseAPI_1 = require("../../utils/hooks/SynapseAPI");
22
+ var ForumThreadEditor_1 = require("./ForumThreadEditor");
23
+ var WarningModal_1 = tslib_1.__importDefault(require("../synapse_form_wrapper/WarningModal"));
24
+ var SubscribersModal_1 = require("./SubscribersModal");
25
+ var FOLLOWING_TEXT = 'You are following this topic. Click to stop following.';
26
+ var UNFOLLOWING_TEXT = 'You are not following this topic. Click to follow.';
27
+ var SIGN_IN_TEXT = 'You will need to sign in for access to that resource';
28
+ var INPUT_PLACEHOLDER = 'Write a reply...';
29
+ function DiscussionThread(props) {
30
+ var _a, _b;
31
+ var threadId = props.threadId, limit = props.limit;
32
+ var _c = (0, react_1.useState)(true), orderByDatePosted = _c[0], setOrderByDatePosted = _c[1];
33
+ var _d = (0, react_1.useState)(false), showThreadModal = _d[0], setShowThreadModal = _d[1];
34
+ var _e = (0, react_1.useState)(false), showReplyEditor1 = _e[0], setShowReplyEditor1 = _e[1];
35
+ var _f = (0, react_1.useState)(false), showReplyEditor2 = _f[0], setShowReplyEditor2 = _f[1];
36
+ var _g = (0, react_1.useState)(false), showDeleteModal = _g[0], setShowDeleteModal = _g[1];
37
+ var _h = (0, react_1.useState)(false), showSignInModal = _h[0], setShowSignInModal = _h[1];
38
+ var _j = (0, react_1.useState)(false), showRestoreModal = _j[0], setShowRestoreModal = _j[1];
39
+ var _k = (0, react_1.useState)(false), showSubscriberModal = _k[0], setShowSubscriberModal = _k[1];
40
+ var _l = (0, useThread_1.useGetThread)(threadId), threadData = _l.threadData, threadBody = _l.threadBody, togglePin = _l.togglePin;
41
+ var currentUserProfile = (0, SynapseAPI_1.useGetCurrentUserProfile)().data;
42
+ var entityBundle = (0, SynapseAPI_1.useGetEntityBundle)((_a = threadData === null || threadData === void 0 ? void 0 : threadData.projectId) !== null && _a !== void 0 ? _a : '', undefined, SynapseConstants_1.ALL_ENTITY_BUNDLE_FIELDS, {
43
+ enabled: !!threadData,
44
+ }).data;
45
+ var _m = (0, useSubscription_1.useSubscription)(threadId, Subscription_1.SubscriptionObjectType.THREAD), subscription = _m.subscription, toggleSubscribed = _m.toggleSubscribed, isLoading = _m.isLoading;
46
+ var deleteThread = (0, useThread_1.useDeleteThread)({
47
+ onSuccess: function () {
48
+ setShowDeleteModal(false);
49
+ (0, ToastMessage_1.displayToast)('A thread has been deleted.', 'info');
50
+ },
51
+ }).mutate;
52
+ var restoreThread = (0, useThread_1.useRestoreThread)({
53
+ onSuccess: function () {
54
+ setShowRestoreModal(false);
55
+ (0, ToastMessage_1.displayToast)('A thread has been restored.', 'info');
56
+ },
57
+ }).mutate;
58
+ var isCurrentUserAuthor = (threadData === null || threadData === void 0 ? void 0 : threadData.createdBy) == (currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.ownerId);
59
+ function handleFollowBtn() {
60
+ if ((currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous') {
61
+ setShowSignInModal(true);
62
+ }
63
+ else {
64
+ try {
65
+ toggleSubscribed();
66
+ }
67
+ catch (err) {
68
+ (0, ToastMessage_1.displayToast)(err.reason, 'danger');
69
+ }
70
+ }
71
+ }
72
+ var _o = (0, useReply_1.useGetRepliesInfinite)(threadId, orderByDatePosted, limit), replyData = _o.data, hasNextPage = _o.hasNextPage, fetchNextPage = _o.fetchNextPage;
73
+ var replies = (_b = replyData === null || replyData === void 0 ? void 0 : replyData.pages.flatMap(function (page) { return page.results; })) !== null && _b !== void 0 ? _b : [];
74
+ return (react_1.default.createElement("div", { className: "bootstrap-4-backport DiscussionThread" },
75
+ threadData && threadBody ? (react_1.default.createElement(react_1.default.Fragment, null,
76
+ react_1.default.createElement("div", { style: { textAlign: 'center' } },
77
+ react_1.default.createElement(material_1.Button, { variant: orderByDatePosted ? 'contained' : 'outlined', onClick: function () { return setOrderByDatePosted(true); } }, "Date Posted"),
78
+ react_1.default.createElement(material_1.Button, { variant: orderByDatePosted ? 'outlined' : 'contained', onClick: function () { return setOrderByDatePosted(false); } }, "Most Recent")),
79
+ react_1.default.createElement(UserCard_1.default, { withAvatar: true, avatarSize: "MEDIUM", showCardOnHover: true, size: SynapseConstants_1.SMALL_USER_CARD, ownerId: threadData.createdBy }),
80
+ react_1.default.createElement("div", null,
81
+ react_1.default.createElement(material_1.Typography, { style: { marginTop: '4px' }, variant: "headline2" }, threadData.title),
82
+ react_1.default.createElement(SubscribersModal_1.SubscribersModal, { id: threadId, objectType: Subscription_1.SubscriptionObjectType.THREAD, showModal: showSubscriberModal, handleModal: setShowSubscriberModal })),
83
+ react_1.default.createElement("div", null,
84
+ react_1.default.createElement(MarkdownSynapse_1.default, { markdown: threadBody, objectType: synapseTypes_1.ObjectType.THREAD })),
85
+ react_1.default.createElement("span", null,
86
+ "posted ",
87
+ (0, DateFormatter_1.formatDate)((0, dayjs_1.default)(threadData.createdOn), 'M/D/YYYY')))) : (react_1.default.createElement(react_1.default.Fragment, null)),
88
+ react_1.default.createElement("div", { className: "control-container" }, (threadData === null || threadData === void 0 ? void 0 : threadData.isDeleted) ? (react_1.default.createElement("button", { onClick: function () { return setShowRestoreModal(true); } },
89
+ react_1.default.createElement(IconSvg_1.default, { icon: "restore", label: "Restore deleted thread" }))) : (react_1.default.createElement(react_1.default.Fragment, null,
90
+ react_1.default.createElement("span", null,
91
+ react_1.default.createElement("button", { className: "follow-button", "aria-label": subscription ? 'Unfollow thread' : 'Follow thread', disabled: isLoading, onClick: function () { return handleFollowBtn(); } }, subscription ? (react_1.default.createElement(IconSvg_1.default, { icon: "visibility", label: FOLLOWING_TEXT })) : (react_1.default.createElement(IconSvg_1.default, { icon: "visibilityOff", label: UNFOLLOWING_TEXT })))),
92
+ isCurrentUserAuthor && (react_1.default.createElement("button", { onClick: function () { return setShowThreadModal(true); } },
93
+ react_1.default.createElement(IconSvg_1.default, { icon: "edit", label: "Edit thread" }))),
94
+ (entityBundle === null || entityBundle === void 0 ? void 0 : entityBundle.permissions.canModerate) ? (react_1.default.createElement(react_1.default.Fragment, null,
95
+ react_1.default.createElement("button", { onClick: function () { return setShowDeleteModal(true); } },
96
+ react_1.default.createElement(IconSvg_1.default, { icon: "delete", label: "Delete thread" })),
97
+ react_1.default.createElement("button", { onClick: function () { return togglePin(); } }, (threadData === null || threadData === void 0 ? void 0 : threadData.isPinned) ? (react_1.default.createElement(IconSvg_1.default, { icon: "pushpin", sx: { color: 'error.main' }, label: "Unpin thread" })) : (react_1.default.createElement(IconSvg_1.default, { icon: "pushpin", label: "Pin thread" }))))) : null))),
98
+ !showReplyEditor1 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { type: "text", placeholder: INPUT_PLACEHOLDER, onClick: function () {
99
+ (currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous'
100
+ ? setShowSignInModal(true)
101
+ : setShowReplyEditor1(true);
102
+ } })) : (react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { id: threadId, isReply: true, onClose: function () { return setShowReplyEditor1(false); } })),
103
+ react_1.default.createElement("div", null, replies.map(function (reply) { return (react_1.default.createElement(DiscussionReply_1.DiscussionReply, { key: reply.id, reply: reply })); })),
104
+ replies.length > 0 && (react_1.default.createElement(react_1.default.Fragment, null, !showReplyEditor2 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { type: "text", placeholder: INPUT_PLACEHOLDER, onClick: function () {
105
+ (currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous'
106
+ ? setShowSignInModal(true)
107
+ : setShowReplyEditor2(true);
108
+ } })) : (react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { id: threadId, isReply: true, onClose: function () { return setShowReplyEditor2(false); } })))),
109
+ hasNextPage ? (react_1.default.createElement(material_1.Button, { variant: "outlined", onClick: function () {
110
+ fetchNextPage();
111
+ } }, "Show more results")) : (react_1.default.createElement(react_1.default.Fragment, null)),
112
+ react_1.default.createElement(react_bootstrap_1.Modal, { size: "lg", show: showThreadModal, onHide: function () { return setShowThreadModal(false); }, animation: false },
113
+ react_1.default.createElement(react_bootstrap_1.Modal.Header, null,
114
+ react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "Edit Thread")),
115
+ react_1.default.createElement(react_bootstrap_1.Modal.Body, null,
116
+ react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { isReply: false, initialText: threadBody, onClose: function () { return setShowThreadModal(false); }, initialTitle: threadData === null || threadData === void 0 ? void 0 : threadData.title, id: threadId }))),
117
+ react_1.default.createElement(WarningModal_1.default, { show: showDeleteModal, className: "bootstrap-4-backport", title: "Confirm Deletion", modalBody: "Are you sure you want to delete this thread?", onCancel: function () { return setShowDeleteModal(false); }, onConfirm: function () { return threadData && deleteThread(threadData); }, confirmButtonVariant: "danger", confirmButtonText: "Delete" }),
118
+ react_1.default.createElement(WarningModal_1.default, { show: showRestoreModal, className: "bootstrap-4-backport", title: "Confirm Restoration", modalBody: "Are you sure you want to restore this thread?", onCancel: function () { return setShowRestoreModal(false); }, onConfirm: function () { return threadData && restoreThread(threadData); }, confirmButtonVariant: "info", confirmButtonText: "Restore" }),
119
+ react_1.default.createElement(react_bootstrap_1.Modal, { className: "bootstrap-4-backport", show: showSignInModal, onHide: function () { return setShowSignInModal(false); }, animation: false },
120
+ react_1.default.createElement(react_bootstrap_1.Modal.Header, { closeButton: true }),
121
+ react_1.default.createElement(react_bootstrap_1.Modal.Body, null, SIGN_IN_TEXT),
122
+ react_1.default.createElement(react_bootstrap_1.Modal.Footer, null,
123
+ react_1.default.createElement(material_1.Button, { onClick: function () { return setShowSignInModal(false); }, variant: "contained", className: SynapseConstants_1.SRC_SIGN_IN_CLASS }, "Sign In")))));
124
+ }
125
+ exports.DiscussionThread = DiscussionThread;
126
+ //# sourceMappingURL=DiscussionThread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscussionThread.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/DiscussionThread.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export type ForumPageProps = {
3
+ forumId: string;
4
+ limit: number;
5
+ onClickLink: () => void;
6
+ };
7
+ export declare const ForumPage: React.FC<ForumPageProps>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForumPage = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var material_1 = require("@mui/material");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var react_bootstrap_1 = require("react-bootstrap");
8
+ var SynapseAPI_1 = require("../../utils/hooks/SynapseAPI");
9
+ var useForum_1 = require("../../utils/hooks/SynapseAPI/forum/useForum");
10
+ var useSubscription_1 = require("../../utils/hooks/SynapseAPI/subscription/useSubscription");
11
+ var SynapseConstants_1 = require("../../utils/SynapseConstants");
12
+ var DiscussionBundle_1 = require("../../utils/synapseTypes/DiscussionBundle");
13
+ var Subscription_1 = require("../../utils/synapseTypes/Subscription");
14
+ var ToastMessage_1 = require("../ToastMessage");
15
+ var ForumTable_1 = require("./ForumTable");
16
+ var ForumThreadEditor_1 = require("./ForumThreadEditor");
17
+ var SubscribersModal_1 = require("./SubscribersModal");
18
+ var SIGN_IN_TEXT = 'You will need to sign in for access to that resource';
19
+ var ForumPage = function (_a) {
20
+ var _b;
21
+ var forumId = _a.forumId, limit = _a.limit, onClickLink = _a.onClickLink;
22
+ var _c = (0, react_1.useState)(false), showThreadModal = _c[0], setShowThreadModal = _c[1];
23
+ var _d = (0, react_1.useState)(false), showSignInModal = _d[0], setShowSignInModal = _d[1];
24
+ var _e = (0, react_1.useState)(false), showDeletedThread = _e[0], setShowDeletedThread = _e[1];
25
+ var _f = (0, react_1.useState)(false), showSubscriberModal = _f[0], setShowSubscriberModal = _f[1];
26
+ var _g = (0, useSubscription_1.useSubscription)(forumId, Subscription_1.SubscriptionObjectType.FORUM), subscription = _g.subscription, isLoading = _g.isLoading, toggleSubscribed = _g.toggleSubscribed;
27
+ function handleFollowBtn() {
28
+ try {
29
+ toggleSubscribed();
30
+ }
31
+ catch (err) {
32
+ (0, ToastMessage_1.displayToast)(err.reason, 'danger');
33
+ }
34
+ }
35
+ var moderatorList = (0, useForum_1.useGetModerators)(forumId).data;
36
+ var currentUserProfile = (0, SynapseAPI_1.useGetCurrentUserProfile)().data;
37
+ var isCurrentUserModerator = moderatorList === null || moderatorList === void 0 ? void 0 : moderatorList.results.includes((_b = currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.ownerId) !== null && _b !== void 0 ? _b : '');
38
+ var handleNewThreadBtn = function () {
39
+ if ((currentUserProfile === null || currentUserProfile === void 0 ? void 0 : currentUserProfile.userName) == 'anonymous') {
40
+ setShowSignInModal(true);
41
+ }
42
+ else {
43
+ setShowThreadModal(true);
44
+ }
45
+ };
46
+ return (react_1.default.createElement("div", { className: "ForumTable bootstrap-4-backport" },
47
+ react_1.default.createElement("div", { className: "ForumTable__top-level-control" },
48
+ react_1.default.createElement(SubscribersModal_1.SubscribersModal, { id: forumId, objectType: Subscription_1.SubscriptionObjectType.FORUM, showModal: showSubscriberModal, handleModal: setShowSubscriberModal }),
49
+ react_1.default.createElement(react_bootstrap_1.Button, { variant: subscription ? 'outline-primary' : 'primary', onClick: function () { return handleFollowBtn(); }, disabled: isLoading }, subscription ? 'Unfollow' : 'Follow'),
50
+ react_1.default.createElement(react_bootstrap_1.Button, { variant: "primary", onClick: function () { return handleNewThreadBtn(); } }, "New Thread"),
51
+ isCurrentUserModerator && (react_1.default.createElement(react_bootstrap_1.Button, { onClick: function () { return setShowDeletedThread(!showDeletedThread); } }, showDeletedThread
52
+ ? 'Hide Deleted Threads'
53
+ : 'Show Deleted Threads'))),
54
+ showDeletedThread && (react_1.default.createElement(react_1.default.Fragment, null,
55
+ react_1.default.createElement(material_1.Typography, { variant: "h4" }, "Deleted Threads"),
56
+ react_1.default.createElement(ForumTable_1.ForumTable, { onClickLink: onClickLink, forumId: forumId, limit: limit, filter: DiscussionBundle_1.DiscussionFilter.DELETED_ONLY }))),
57
+ react_1.default.createElement(ForumTable_1.ForumTable, { onClickLink: onClickLink, forumId: forumId, limit: limit, filter: DiscussionBundle_1.DiscussionFilter.EXCLUDE_DELETED }),
58
+ react_1.default.createElement(react_bootstrap_1.Modal, { size: "lg", show: showThreadModal, onHide: function () { return setShowThreadModal(false); }, animation: false },
59
+ react_1.default.createElement(react_bootstrap_1.Modal.Header, null,
60
+ react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "New Thread")),
61
+ react_1.default.createElement(react_bootstrap_1.Modal.Body, null,
62
+ react_1.default.createElement(ForumThreadEditor_1.ForumThreadEditor, { isReply: false, id: forumId, onClose: function () { return setShowThreadModal(false); } }))),
63
+ react_1.default.createElement(react_bootstrap_1.Modal, { className: "bootstrap-4-backport", show: showSignInModal, onHide: function () { return setShowSignInModal(false); }, animation: false },
64
+ react_1.default.createElement(react_bootstrap_1.Modal.Header, { closeButton: true }),
65
+ react_1.default.createElement(react_bootstrap_1.Modal.Body, null, SIGN_IN_TEXT),
66
+ react_1.default.createElement(react_bootstrap_1.Modal.Footer, null,
67
+ react_1.default.createElement(react_bootstrap_1.Button, { onClick: function () { return setShowSignInModal(false); }, className: SynapseConstants_1.SRC_SIGN_IN_CLASS }, "Sign In")))));
68
+ };
69
+ exports.ForumPage = ForumPage;
70
+ //# sourceMappingURL=ForumPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForumPage.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/ForumPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { DiscussionFilter } from '../../utils/synapseTypes/DiscussionBundle';
3
+ export type ForumTableProps = {
4
+ forumId: string;
5
+ limit: number;
6
+ onClickLink: () => void;
7
+ filter: DiscussionFilter;
8
+ };
9
+ export declare const ForumTable: React.FC<ForumTableProps>;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForumTable = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var react_bootstrap_1 = require("react-bootstrap");
8
+ var Sort_1 = tslib_1.__importDefault(require("../../assets/icons/Sort"));
9
+ var useForum_1 = require("../../utils/hooks/SynapseAPI/forum/useForum");
10
+ var SynapseConstants_1 = require("../../utils/SynapseConstants");
11
+ var synapseTypes_1 = require("../../utils/synapseTypes");
12
+ var DiscussionBundle_1 = require("../../utils/synapseTypes/DiscussionBundle");
13
+ var IconSvg_1 = tslib_1.__importDefault(require("../IconSvg"));
14
+ var UserCard_1 = tslib_1.__importDefault(require("../UserCard"));
15
+ var ForumTable = function (_a) {
16
+ var _b;
17
+ var forumId = _a.forumId, limit = _a.limit, filter = _a.filter, onClickLink = _a.onClickLink;
18
+ var _c = (0, react_1.useState)(DiscussionBundle_1.DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY), sort = _c[0], setSort = _c[1];
19
+ var _d = (0, react_1.useState)(false), isAscending = _d[0], setIsAscending = _d[1];
20
+ var _e = (0, useForum_1.useGetForumInfinite)(forumId, limit, sort, isAscending, filter), data = _e.data, hasNextPage = _e.hasNextPage, fetchNextPage = _e.fetchNextPage;
21
+ var threads = (_b = data === null || data === void 0 ? void 0 : data.pages.flatMap(function (page) { return page.results; })) !== null && _b !== void 0 ? _b : [];
22
+ var onSort = function (field) {
23
+ if (sort == field) {
24
+ setSort(field);
25
+ setIsAscending(!isAscending);
26
+ }
27
+ else {
28
+ setSort(field);
29
+ setIsAscending(false);
30
+ }
31
+ };
32
+ return (react_1.default.createElement("div", { className: "ForumTable bootstrap-4-backport" },
33
+ react_1.default.createElement(react_bootstrap_1.Table, null,
34
+ react_1.default.createElement("thead", null,
35
+ react_1.default.createElement("tr", null,
36
+ react_1.default.createElement("th", null,
37
+ react_1.default.createElement("span", { className: "SRC-split" },
38
+ react_1.default.createElement("span", null, "Topic"),
39
+ react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Topic", active: sort === DiscussionBundle_1.DiscussionThreadOrder.THREAD_TITLE, direction: sort === 'THREAD_TITLE'
40
+ ? isAscending === false
41
+ ? synapseTypes_1.Direction.DESC
42
+ : synapseTypes_1.Direction.ASC
43
+ : synapseTypes_1.Direction.DESC, onClick: function () { return onSort(DiscussionBundle_1.DiscussionThreadOrder.THREAD_TITLE); } }))),
44
+ react_1.default.createElement("th", null, "Author"),
45
+ react_1.default.createElement("th", null, "Active Users"),
46
+ react_1.default.createElement("th", null,
47
+ react_1.default.createElement("span", { className: "SRC-split" },
48
+ react_1.default.createElement("span", null, "Replies"),
49
+ react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Replies", active: sort === DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_REPLIES, direction: sort === 'NUMBER_OF_REPLIES'
50
+ ? isAscending === false
51
+ ? synapseTypes_1.Direction.DESC
52
+ : synapseTypes_1.Direction.ASC
53
+ : synapseTypes_1.Direction.DESC, onClick: function () {
54
+ return onSort(DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_REPLIES);
55
+ } }))),
56
+ react_1.default.createElement("th", null,
57
+ react_1.default.createElement("span", { className: "SRC-split" },
58
+ react_1.default.createElement("span", null, "Views"),
59
+ react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Views", active: sort === DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_VIEWS, direction: sort === 'NUMBER_OF_VIEWS'
60
+ ? isAscending === false
61
+ ? synapseTypes_1.Direction.DESC
62
+ : synapseTypes_1.Direction.ASC
63
+ : synapseTypes_1.Direction.DESC, onClick: function () { return onSort(DiscussionBundle_1.DiscussionThreadOrder.NUMBER_OF_VIEWS); } }))),
64
+ react_1.default.createElement("th", null,
65
+ react_1.default.createElement("span", { className: "SRC-split" },
66
+ react_1.default.createElement("span", null, "Activity"),
67
+ react_1.default.createElement(Sort_1.default, { role: "button", "aria-label": "Sort by Last Activity", active: sort === DiscussionBundle_1.DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY, direction: sort === 'PINNED_AND_LAST_ACTIVITY'
68
+ ? isAscending === false
69
+ ? synapseTypes_1.Direction.DESC
70
+ : synapseTypes_1.Direction.ASC
71
+ : synapseTypes_1.Direction.DESC, onClick: function () {
72
+ return onSort(DiscussionBundle_1.DiscussionThreadOrder.PINNED_AND_LAST_ACTIVITY);
73
+ } }))))),
74
+ react_1.default.createElement("tbody", null, threads.map(function (item) {
75
+ return (react_1.default.createElement("tr", { key: item.id },
76
+ react_1.default.createElement("td", null,
77
+ react_1.default.createElement("a", { onClick: function () { return onClickLink(); } },
78
+ item.isPinned ? react_1.default.createElement(IconSvg_1.default, { icon: "pushpin" }) : react_1.default.createElement(react_1.default.Fragment, null),
79
+ item.title)),
80
+ react_1.default.createElement("td", null,
81
+ react_1.default.createElement(UserCard_1.default, { size: SynapseConstants_1.SMALL_USER_CARD, ownerId: item.createdBy })),
82
+ react_1.default.createElement("td", null, item.activeAuthors.map(function (user) { return (react_1.default.createElement("div", { key: user, className: "avatarContainer" },
83
+ react_1.default.createElement(UserCard_1.default, { showCardOnHover: true, className: "ActiveUsers", size: SynapseConstants_1.AVATAR, avatarSize: 'MEDIUM', ownerId: user }))); })),
84
+ react_1.default.createElement("td", null, item.numberOfReplies),
85
+ react_1.default.createElement("td", null, item.numberOfViews),
86
+ react_1.default.createElement("td", null, (0, dayjs_1.default)(item.lastActivity).format('L'))));
87
+ }))),
88
+ hasNextPage && (react_1.default.createElement(react_bootstrap_1.Button, { variant: "outline-primary", onClick: function () {
89
+ fetchNextPage();
90
+ } }, "Show more results"))));
91
+ };
92
+ exports.ForumTable = ForumTable;
93
+ //# sourceMappingURL=ForumTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForumTable.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/ForumTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export type ForumThreadEditorProps = {
3
+ initialTitle?: string;
4
+ initialText?: string;
5
+ id: string;
6
+ onClose: () => void;
7
+ isReply: boolean;
8
+ };
9
+ export declare const ForumThreadEditor: React.FunctionComponent<ForumThreadEditorProps>;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForumThreadEditor = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var react_bootstrap_1 = require("react-bootstrap");
7
+ var useThread_1 = require("../../utils/hooks/SynapseAPI/forum/useThread");
8
+ var useReply_1 = require("../../utils/hooks/SynapseAPI/forum/useReply");
9
+ var MarkdownEditor_1 = require("../markdown/MarkdownEditor");
10
+ var ForumThreadEditor = function (_a) {
11
+ var initialText = _a.initialText, initialTitle = _a.initialTitle, id = _a.id, onClose = _a.onClose, isReply = _a.isReply;
12
+ var _b = (0, react_1.useState)(initialTitle !== null && initialTitle !== void 0 ? initialTitle : ''), title = _b[0], setTitle = _b[1];
13
+ var _c = (0, react_1.useState)(initialText !== null && initialText !== void 0 ? initialText : ''), text = _c[0], setText = _c[1];
14
+ var _d = (0, useThread_1.useUpdateThreadTitle)({
15
+ onSuccess: function () { return onClose(); },
16
+ }), updateTitle = _d.mutate, isLoadingTitle = _d.isLoading;
17
+ var _e = (0, useThread_1.useUpdateThreadMessage)({
18
+ onSuccess: function () { return onClose(); },
19
+ }), updateMessage = _e.mutate, isLoadingMessage = _e.isLoading;
20
+ var _f = (0, useThread_1.useCreateThread)({
21
+ onSuccess: function () { return onClose(); },
22
+ }), createThread = _f.mutate, isLoadingThread = _f.isLoading;
23
+ var _g = (0, useReply_1.usePostReply)({
24
+ onSuccess: function () { return onClose(); },
25
+ }), createReply = _g.mutate, isLoadingReply = _g.isLoading;
26
+ var _h = (0, useReply_1.usePutReply)({
27
+ onSuccess: function () { return onClose(); },
28
+ }), updateReply = _h.mutate, isLoadingReplyUpdate = _h.isLoading;
29
+ var isLoading = isLoadingMessage ||
30
+ isLoadingReply ||
31
+ isLoadingThread ||
32
+ isLoadingTitle ||
33
+ isLoadingReplyUpdate;
34
+ var onSave = function (text, title) {
35
+ if (isReply) {
36
+ if (initialText) {
37
+ // updating reply
38
+ updateReply({
39
+ replyId: id,
40
+ messageMarkdown: text,
41
+ });
42
+ }
43
+ else {
44
+ // posting reply
45
+ createReply({
46
+ threadId: id,
47
+ messageMarkdown: text,
48
+ });
49
+ }
50
+ }
51
+ else {
52
+ if (initialTitle) {
53
+ // updating thread
54
+ updateTitle({
55
+ title: title,
56
+ threadId: id,
57
+ });
58
+ updateMessage({
59
+ messageMarkdown: text,
60
+ threadId: id,
61
+ });
62
+ }
63
+ else {
64
+ // posting thread
65
+ var request = {
66
+ forumId: id,
67
+ title: title,
68
+ messageMarkdown: text,
69
+ };
70
+ createThread(request);
71
+ }
72
+ }
73
+ };
74
+ return (react_1.default.createElement("div", { className: "bootstrap-4-backport" },
75
+ !isReply && (react_1.default.createElement(react_bootstrap_1.FormControl, { type: "text", placeholder: "Title", value: title, onChange: function (e) { return setTitle(e.target.value); } })),
76
+ react_1.default.createElement(MarkdownEditor_1.MarkdownEditor, { text: text, setText: setText }),
77
+ react_1.default.createElement("div", { style: { display: 'flex', justifyContent: 'flex-end' } },
78
+ react_1.default.createElement(react_bootstrap_1.Button, { onClick: onClose, variant: "light" }, "Cancel"),
79
+ react_1.default.createElement(react_bootstrap_1.Button, { disabled: isLoading, onClick: function () { return onSave(text, title); }, variant: "primary" }, isLoading ? 'Saving' : 'Save'))));
80
+ };
81
+ exports.ForumThreadEditor = ForumThreadEditor;
82
+ //# sourceMappingURL=ForumThreadEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForumThreadEditor.js","sourceRoot":"","sources":["../../../src/lib/containers/discussion_forum/ForumThreadEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { SubscriptionObjectType } from '../../utils/synapseTypes/Subscription';
3
+ export type SubscribersModalProps = {
4
+ id: string;
5
+ objectType: SubscriptionObjectType;
6
+ showModal: boolean;
7
+ handleModal: (a: boolean) => void;
8
+ };
9
+ export declare const SubscribersModal: React.FC<SubscribersModalProps>;