@kineticdata/react 5.1.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/assets/task/icons/drag-handle.svg +3 -0
  2. package/assets/task/icons/plus_small.svg +2 -4
  3. package/lib/apis/agent/adapters.js +16 -12
  4. package/lib/apis/agent/bridges.js +54 -41
  5. package/lib/apis/agent/handlers.js +51 -38
  6. package/lib/apis/core/activity.js +19 -11
  7. package/lib/apis/core/attributeDefinitions.js +54 -46
  8. package/lib/apis/core/attributeDefinitions.test.js +47 -55
  9. package/lib/apis/core/authentication.js +58 -63
  10. package/lib/apis/core/backgroundJobs.js +38 -30
  11. package/lib/apis/core/bridgeModelAttributeMappings.js +42 -34
  12. package/lib/apis/core/bridgeModelAttributes.js +47 -37
  13. package/lib/apis/core/bridgeModelMappings.js +42 -34
  14. package/lib/apis/core/bridgeModelQualificationMappings.js +42 -34
  15. package/lib/apis/core/bridgeModelQualifications.js +42 -34
  16. package/lib/apis/core/bridgeModels.js +56 -46
  17. package/lib/apis/core/bridgeModels.test.js +64 -80
  18. package/lib/apis/core/bridgedresources.js +64 -72
  19. package/lib/apis/core/bridgedresources.test.js +33 -30
  20. package/lib/apis/core/categories.js +59 -52
  21. package/lib/apis/core/categories.test.js +36 -33
  22. package/lib/apis/core/fileResources.js +41 -33
  23. package/lib/apis/core/filestores.js +42 -34
  24. package/lib/apis/core/formTypes.js +50 -44
  25. package/lib/apis/core/forms.js +53 -49
  26. package/lib/apis/core/forms.test.js +60 -74
  27. package/lib/apis/core/kapps.js +45 -39
  28. package/lib/apis/core/kapps.test.js +45 -52
  29. package/lib/apis/core/logs.js +20 -16
  30. package/lib/apis/core/memberships.js +23 -20
  31. package/lib/apis/core/meta.js +31 -19
  32. package/lib/apis/core/notices.js +17 -9
  33. package/lib/apis/core/oauthClients.js +49 -45
  34. package/lib/apis/core/platformComponents.js +73 -57
  35. package/lib/apis/core/platformItems.js +22 -13
  36. package/lib/apis/core/profile.js +28 -21
  37. package/lib/apis/core/profile.test.js +20 -17
  38. package/lib/apis/core/securityPolicyDefinitions.js +48 -41
  39. package/lib/apis/core/securityPolicyDefinitions.test.js +50 -60
  40. package/lib/apis/core/space.js +23 -16
  41. package/lib/apis/core/space.test.js +31 -38
  42. package/lib/apis/core/submissions.js +213 -186
  43. package/lib/apis/core/submissions.test.js +39 -36
  44. package/lib/apis/core/teams.js +51 -44
  45. package/lib/apis/core/teams.test.js +42 -39
  46. package/lib/apis/core/translations.js +123 -130
  47. package/lib/apis/core/translations.test.js +278 -368
  48. package/lib/apis/core/users.js +56 -49
  49. package/lib/apis/core/users.test.js +42 -39
  50. package/lib/apis/core/version.js +20 -11
  51. package/lib/apis/core/webApis.js +42 -34
  52. package/lib/apis/core/webhooks.js +48 -41
  53. package/lib/apis/core/webhooks.test.js +50 -60
  54. package/lib/apis/core/webhooksJobs.js +30 -26
  55. package/lib/apis/core/workflows.js +52 -44
  56. package/lib/apis/http.js +89 -80
  57. package/lib/apis/http.test.js +37 -38
  58. package/lib/apis/index.js +506 -50
  59. package/lib/apis/system/index.js +228 -211
  60. package/lib/apis/task/index.js +280 -227
  61. package/lib/components/agent/bridge/BridgeForm.js +50 -50
  62. package/lib/components/agent/bridge/BridgeTable.js +12 -8
  63. package/lib/components/agent/filestore/FilestoreForm.js +49 -48
  64. package/lib/components/agent/filestore/FilestoreTable.js +12 -8
  65. package/lib/components/agent/handler/AgentHandlerForm.js +24 -27
  66. package/lib/components/agent/handler/AgentHandlerTable.js +12 -8
  67. package/lib/components/common/AttributeSelect.js +15 -9
  68. package/lib/components/common/BridgeSelect.js +48 -43
  69. package/lib/components/common/ComponentConfigContext.js +9 -2
  70. package/lib/components/common/ContentEditable.js +36 -60
  71. package/lib/components/common/FormSelect.js +70 -58
  72. package/lib/components/common/NodeSelect.js +23 -19
  73. package/lib/components/common/Scroller.js +24 -23
  74. package/lib/components/common/StaticSelect.js +57 -50
  75. package/lib/components/common/TableInput.js +54 -57
  76. package/lib/components/common/TeamSelect.js +42 -39
  77. package/lib/components/common/Typeahead.js +121 -138
  78. package/lib/components/common/UserSelect.js +42 -41
  79. package/lib/components/common/authentication/AuthInterceptor.js +15 -19
  80. package/lib/components/common/authentication/AuthInterceptor.test.js +46 -64
  81. package/lib/components/common/authentication/AuthenticationContainer.js +350 -454
  82. package/lib/components/common/authentication/RequestInterceptor.js +16 -19
  83. package/lib/components/common/code_input/CodeInput.js +92 -122
  84. package/lib/components/common/code_input/draftHelpers.js +96 -90
  85. package/lib/components/common/code_input/languageHelpers.js +49 -47
  86. package/lib/components/common/code_input/languageHelpers.test.js +21 -16
  87. package/lib/components/core/CoreFormModal.js +26 -24
  88. package/lib/components/core/CoreModal.js +37 -31
  89. package/lib/components/core/attribute_definition/AttributeDefinitionForm.js +24 -23
  90. package/lib/components/core/attribute_definition/AttributeDefinitionTable.js +18 -15
  91. package/lib/components/core/bridge_model/BridgeModelForm.js +27 -37
  92. package/lib/components/core/bridge_model/BridgeModelTable.js +12 -8
  93. package/lib/components/core/bridge_model_attribute/BridgeModelAttributeForm.js +17 -16
  94. package/lib/components/core/bridge_model_attribute/BridgeModelAttributeTable.js +25 -21
  95. package/lib/components/core/bridge_model_qualification/BridgeModelQualificationForm.js +20 -20
  96. package/lib/components/core/bridge_model_qualification/BridgeModelQualificationTable.js +27 -22
  97. package/lib/components/core/category/CategoryForm.js +22 -22
  98. package/lib/components/core/category/CategoryTable.js +15 -10
  99. package/lib/components/core/core_form/CoreForm.js +209 -285
  100. package/lib/components/core/core_form/CoreForm.test.js +12 -10
  101. package/lib/components/core/core_form/defaults/index.js +52 -44
  102. package/lib/components/core/core_form/globals.js +14 -5
  103. package/lib/components/core/field_definition/FieldDefinitionForm.js +23 -21
  104. package/lib/components/core/field_definition/FieldDefinitionTable.js +15 -10
  105. package/lib/components/core/file_resource/FileResourceForm.js +38 -37
  106. package/lib/components/core/file_resource/FileResourceTable.js +16 -12
  107. package/lib/components/core/form/FormForm.js +56 -61
  108. package/lib/components/core/form/FormTable.js +25 -22
  109. package/lib/components/core/form_type/FormTypeForm.js +14 -13
  110. package/lib/components/core/form_type/FormTypeTable.js +12 -8
  111. package/lib/components/core/i18n/I18n.js +54 -61
  112. package/lib/components/core/i18n/I18nContext.js +9 -2
  113. package/lib/components/core/i18n/I18nProvider.js +40 -43
  114. package/lib/components/core/i18n/Moment.js +40 -50
  115. package/lib/components/core/index_definition/IndexDefinitionForm.js +23 -24
  116. package/lib/components/core/index_definition/IndexDefinitionTable.js +19 -11
  117. package/lib/components/core/index_job/IndexJobTable.js +20 -15
  118. package/lib/components/core/kapp/KappForm.js +57 -58
  119. package/lib/components/core/kapp/KappTable.js +17 -12
  120. package/lib/components/core/log/LogTable.js +35 -33
  121. package/lib/components/core/oauth_client/OAuthClientForm.js +17 -17
  122. package/lib/components/core/oauth_client/OAuthClientTable.js +12 -8
  123. package/lib/components/core/platform_component/AgentComponentForm.js +15 -15
  124. package/lib/components/core/platform_component/AgentComponentTable.js +10 -5
  125. package/lib/components/core/platform_component/TaskComponentForm.js +14 -14
  126. package/lib/components/core/profile/ProfileForm.js +40 -39
  127. package/lib/components/core/security_definition/SecurityDefinitionForm.js +28 -25
  128. package/lib/components/core/security_definition/SecurityDefinitionTable.js +18 -13
  129. package/lib/components/core/space/SpaceForm.js +79 -90
  130. package/lib/components/core/submission/DatastoreSubmissionFilters.js +39 -40
  131. package/lib/components/core/submission/DatastoreSubmissionTable.js +37 -34
  132. package/lib/components/core/submission/FormSubmissionFilters.js +79 -75
  133. package/lib/components/core/submission/FormSubmissionTable.js +27 -20
  134. package/lib/components/core/submission/KappSubmissionTable.js +30 -29
  135. package/lib/components/core/submission/SubmissionForm.js +126 -55
  136. package/lib/components/core/submission/SubmissionTable.js +24 -20
  137. package/lib/components/core/submission/helpers.js +37 -33
  138. package/lib/components/core/submission/helpers.test.js +69 -20
  139. package/lib/components/core/team/TeamForm.js +24 -21
  140. package/lib/components/core/team/TeamTable.js +16 -11
  141. package/lib/components/core/translation/ContextForm.js +13 -10
  142. package/lib/components/core/translation/ContextTable.js +13 -10
  143. package/lib/components/core/translation/EntryForm.js +27 -24
  144. package/lib/components/core/translation/EntryTable.js +19 -16
  145. package/lib/components/core/translation/LocaleForm.js +16 -13
  146. package/lib/components/core/translation/LocaleTable.js +12 -8
  147. package/lib/components/core/user/UserForm.js +38 -37
  148. package/lib/components/core/user/UserTable.js +19 -15
  149. package/lib/components/core/webapi/WebApiForm.js +49 -61
  150. package/lib/components/core/webapi/WebApiTable.js +14 -10
  151. package/lib/components/core/webhook/WebhookForm.js +33 -32
  152. package/lib/components/core/webhook/WebhookTable.js +22 -20
  153. package/lib/components/core/webhook_job/WebhookJobTable.js +19 -16
  154. package/lib/components/form/Form.helpers.js +102 -90
  155. package/lib/components/form/Form.js +467 -524
  156. package/lib/components/form/Form.models.js +38 -24
  157. package/lib/components/form/FormState.js +8 -5
  158. package/lib/components/form/KitchenSinkForm.js +135 -4
  159. package/lib/components/form/defaults/AttributesField.js +48 -59
  160. package/lib/components/form/defaults/CheckboxField.js +14 -6
  161. package/lib/components/form/defaults/CodeField.js +15 -7
  162. package/lib/components/form/defaults/FormButtons.js +12 -4
  163. package/lib/components/form/defaults/FormError.js +12 -4
  164. package/lib/components/form/defaults/FormField.js +15 -7
  165. package/lib/components/form/defaults/FormLayout.js +12 -4
  166. package/lib/components/form/defaults/FormMultiField.js +15 -7
  167. package/lib/components/form/defaults/PasswordField.js +14 -6
  168. package/lib/components/form/defaults/RadioField.js +15 -7
  169. package/lib/components/form/defaults/SampleTeamsRolesFIeld.js +17 -9
  170. package/lib/components/form/defaults/SelectField.js +16 -8
  171. package/lib/components/form/defaults/SelectMultiField.js +15 -7
  172. package/lib/components/form/defaults/TableField.js +14 -6
  173. package/lib/components/form/defaults/TeamField.js +15 -7
  174. package/lib/components/form/defaults/TeamMultiField.js +15 -7
  175. package/lib/components/form/defaults/TextField.js +14 -6
  176. package/lib/components/form/defaults/TextMultiField.js +26 -28
  177. package/lib/components/form/defaults/UserField.js +15 -7
  178. package/lib/components/form/defaults/UserMultiField.js +15 -7
  179. package/lib/components/form/defaults/index.js +48 -41
  180. package/lib/components/form/tests/Form.test.js +568 -864
  181. package/lib/components/form/tests/components.js +15 -25
  182. package/lib/components/form/tests/helpers.test.js +35 -33
  183. package/lib/components/index.js +981 -135
  184. package/lib/components/system/SystemBackgroundTasksTable.js +14 -10
  185. package/lib/components/system/SystemFilestoreForm.js +28 -25
  186. package/lib/components/system/SystemForm.js +19 -16
  187. package/lib/components/system/SystemIngressForm.js +10 -9
  188. package/lib/components/system/SystemSecurityForm.js +17 -14
  189. package/lib/components/system/SystemSmtpForm.js +13 -13
  190. package/lib/components/system/SystemTaskAdapterForm.js +21 -17
  191. package/lib/components/system/SystemUserForm.js +15 -14
  192. package/lib/components/system/helpers.js +62 -60
  193. package/lib/components/system/helpers.test.js +16 -12
  194. package/lib/components/system/spaces/SystemSpaceForm.js +25 -24
  195. package/lib/components/system/spaces/SystemTenantForm.js +43 -40
  196. package/lib/components/system/spaces/SystemTenantTable.js +12 -8
  197. package/lib/components/table/Table.js +211 -224
  198. package/lib/components/table/Table.redux.js +292 -329
  199. package/lib/components/table/Table.redux.test.js +49 -47
  200. package/lib/components/table/Table.test.js +107 -132
  201. package/lib/components/table/defaults/BodyCell.js +12 -6
  202. package/lib/components/table/defaults/BodyRow.js +10 -4
  203. package/lib/components/table/defaults/BooleanFilter.js +17 -11
  204. package/lib/components/table/defaults/EmptyBodyRow.js +12 -6
  205. package/lib/components/table/defaults/FilterLayout.js +17 -11
  206. package/lib/components/table/defaults/Footer.js +11 -5
  207. package/lib/components/table/defaults/FooterCell.js +10 -4
  208. package/lib/components/table/defaults/FooterRow.js +10 -4
  209. package/lib/components/table/defaults/Header.js +10 -4
  210. package/lib/components/table/defaults/HeaderCell.js +16 -10
  211. package/lib/components/table/defaults/HeaderRow.js +10 -4
  212. package/lib/components/table/defaults/PaginationControl.js +18 -9
  213. package/lib/components/table/defaults/TableBody.js +10 -4
  214. package/lib/components/table/defaults/TableLayout.js +12 -6
  215. package/lib/components/table/defaults/TextFilter.js +16 -10
  216. package/lib/components/table/defaults/index.js +41 -33
  217. package/lib/components/task/builder/Connector.js +100 -111
  218. package/lib/components/task/builder/ConnectorForm.js +17 -11
  219. package/lib/components/task/builder/Node.js +101 -83
  220. package/lib/components/task/builder/NodeForm.js +30 -27
  221. package/lib/components/task/builder/NodeParametersForm.js +27 -24
  222. package/lib/components/task/builder/SvgCanvas.js +67 -96
  223. package/lib/components/task/builder/SvgText.js +19 -134
  224. package/lib/components/task/builder/TaskDefinitionConfigForm.js +27 -22
  225. package/lib/components/task/builder/TreeBuilder.js +140 -115
  226. package/lib/components/task/builder/builder.redux.js +311 -326
  227. package/lib/components/task/builder/constants.js +94 -45
  228. package/lib/components/task/builder/helpers.js +184 -173
  229. package/lib/components/task/builder/helpers.test.js +20 -18
  230. package/lib/components/task/builder/models.js +121 -98
  231. package/lib/components/task/category/TaskCategoryForm.js +31 -29
  232. package/lib/components/task/category/TaskCategoryTable.js +12 -8
  233. package/lib/components/task/common/UsageTable.js +16 -12
  234. package/lib/components/task/engine/EngineSettingsForm.js +13 -11
  235. package/lib/components/task/errors/RunErrorTable.js +17 -13
  236. package/lib/components/task/errors/SystemErrorsTable.js +13 -9
  237. package/lib/components/task/handlers/HandlerForm.js +55 -55
  238. package/lib/components/task/handlers/HandlerTable.js +12 -8
  239. package/lib/components/task/handlers/MissingHandlerTable.js +12 -8
  240. package/lib/components/task/policy_rule/PolicyRuleForm.js +33 -32
  241. package/lib/components/task/policy_rule/PolicyRuleTable.js +12 -8
  242. package/lib/components/task/runs/CreateManualTriggerForm.js +17 -15
  243. package/lib/components/task/runs/RunTable.js +23 -20
  244. package/lib/components/task/runs/RunTaskTable.js +10 -6
  245. package/lib/components/task/sources/SourceForm.js +47 -47
  246. package/lib/components/task/sources/SourceTable.js +14 -11
  247. package/lib/components/task/triggers/TriggerTable.js +21 -18
  248. package/lib/components/task/workflows/LinkedWorkflowForm.js +48 -54
  249. package/lib/components/task/workflows/LinkedWorkflowTable.js +14 -10
  250. package/lib/components/task/workflows/MissingRoutineTable.js +12 -8
  251. package/lib/components/task/workflows/WorkflowForm.js +49 -44
  252. package/lib/components/task/workflows/WorkflowTable.js +17 -14
  253. package/lib/helpers/SearchBuilder.js +73 -127
  254. package/lib/helpers/SearchBuilder.test.js +184 -175
  255. package/lib/helpers/index.js +116 -74
  256. package/lib/index.js +86 -38
  257. package/lib/reducer.js +11 -3
  258. package/lib/saga.js +42 -38
  259. package/lib/store.js +59 -35
  260. package/package.json +3 -28
  261. package/proxyhelper.js +105 -46
  262. package/assets/discussions/images/avi_128.png +0 -0
  263. package/assets/discussions/images/excel_128.png +0 -0
  264. package/assets/discussions/images/html_128.png +0 -0
  265. package/assets/discussions/images/illustrator_128.png +0 -0
  266. package/assets/discussions/images/indesign_128.png +0 -0
  267. package/assets/discussions/images/movie_128.png +0 -0
  268. package/assets/discussions/images/mpeg_128.png +0 -0
  269. package/assets/discussions/images/pdf_128.png +0 -0
  270. package/assets/discussions/images/photoshop_128.png +0 -0
  271. package/assets/discussions/images/powerpoint_128.png +0 -0
  272. package/assets/discussions/images/txt_128.png +0 -0
  273. package/assets/discussions/images/unknown_128.png +0 -0
  274. package/assets/discussions/images/word_128.png +0 -0
  275. package/assets/discussions/styles/_discussion.scss +0 -506
  276. package/lib/apis/discussions/index.js +0 -395
  277. package/lib/apis/socket/index.js +0 -77
  278. package/lib/apis/socket/socket.js +0 -350
  279. package/lib/apis/socket/socket.test.js +0 -90
  280. package/lib/apis/socket/timer.js +0 -45
  281. package/lib/apis/socket/timer.test.js +0 -51
  282. package/lib/apis/socket/topic.js +0 -185
  283. package/lib/apis/topics/index.js +0 -19
  284. package/lib/components/discussions/ChatInputForm.js +0 -424
  285. package/lib/components/discussions/DateBanner.js +0 -10
  286. package/lib/components/discussions/Discussion.js +0 -202
  287. package/lib/components/discussions/DiscussionForm.js +0 -227
  288. package/lib/components/discussions/InvitationForm.js +0 -107
  289. package/lib/components/discussions/MessageHistory.js +0 -110
  290. package/lib/components/discussions/MessagesByDate.js +0 -40
  291. package/lib/components/discussions/MessagesList.js +0 -30
  292. package/lib/components/discussions/MoreMessagesBanner.js +0 -26
  293. package/lib/components/discussions/ScrollHelper.js +0 -84
  294. package/lib/components/discussions/SystemMessage.js +0 -88
  295. package/lib/components/discussions/SystemMessageGroup.js +0 -15
  296. package/lib/components/discussions/UserMessage.js +0 -163
  297. package/lib/components/discussions/UserMessageGroup.js +0 -34
  298. package/lib/components/discussions/redux.js +0 -178
  299. package/lib/components/discussions/sagas.js +0 -500
  300. package/lib/helpers/discussions/canManage.js +0 -30
  301. package/lib/helpers/discussions/canManage.test.js +0 -69
  302. package/lib/helpers/discussions/generateSystemMessageContent.js +0 -131
  303. package/lib/helpers/discussions/generateSystemMessageContent.test.js +0 -450
  304. package/lib/models/discussions.js +0 -76
  305. package/lib/models/index.js +0 -1
@@ -1,202 +0,0 @@
1
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/esm/createClass";
3
- import _inherits from "@babel/runtime/helpers/esm/inherits";
4
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
- import React from 'react';
6
- import { is } from 'immutable';
7
- import { MessagesList } from './MessagesList';
8
- import { ScrollHelper } from './ScrollHelper';
9
- import { ChatInputForm } from './ChatInputForm';
10
- import { MoreMessagesBanner } from './MoreMessagesBanner';
11
- import canManage from '../../helpers/discussions/canManage';
12
- import { JOIN_DISCUSSION, LEAVE_DISCUSSION, FETCH_MORE_MESSAGES } from './redux';
13
- import './sagas';
14
- import { connect, dispatch } from '../../store';
15
- import { SOCKET_STATUS } from '../../apis/socket/socket';
16
- export var DiscussionComponent = /*#__PURE__*/function (_React$Component) {
17
- _inherits(DiscussionComponent, _React$Component);
18
-
19
- var _super = _createSuper(DiscussionComponent);
20
-
21
- function DiscussionComponent(props) {
22
- var _this;
23
-
24
- _classCallCheck(this, DiscussionComponent);
25
-
26
- _this = _super.call(this, props);
27
-
28
- _this.handleScrollTo = function (event) {
29
- _this.setState({
30
- scrolledToBottom: event === 'bottom'
31
- });
32
-
33
- if (event === 'bottom') {
34
- _this.setState({
35
- hasUnreadMessages: false
36
- });
37
- }
38
-
39
- if (event === 'top' && _this.props.hasMoreMessages) {
40
- dispatch(FETCH_MORE_MESSAGES, _this.props.id);
41
- }
42
- };
43
-
44
- _this.editMessage = function (message) {
45
- _this.setState({
46
- editingMessage: message,
47
- replyingToMessage: null
48
- });
49
-
50
- if (message) _this.chatInput.editMessage(message);
51
- };
52
-
53
- _this.replyToMessage = function (message) {
54
- _this.setState({
55
- editingMessage: null,
56
- replyingToMessage: message
57
- });
58
-
59
- if (message) _this.chatInput.focus();
60
- };
61
-
62
- _this.buildMessageActions = function () {
63
- return {
64
- editing: _this.state.editingMessage,
65
- replying: _this.state.replyingToMessage,
66
- edit: _this.editMessage,
67
- reply: _this.replyToMessage,
68
- history: _this.props.toggleMessageHistory
69
- };
70
- };
71
-
72
- _this.state = {
73
- scrolledToBottom: true,
74
- hasUnreadMessages: false,
75
- editingMessage: null,
76
- replyingToMessage: null
77
- };
78
- return _this;
79
- }
80
-
81
- _createClass(DiscussionComponent, [{
82
- key: "componentDidMount",
83
- value: function componentDidMount() {
84
- dispatch(JOIN_DISCUSSION, {
85
- id: this.props.id,
86
- invitationToken: this.props.invitationToken
87
- });
88
- }
89
- }, {
90
- key: "componentDidUpdate",
91
- value: function componentDidUpdate(prevProps) {
92
- var _this2 = this;
93
-
94
- if (this.props.id !== prevProps.id) {
95
- dispatch(LEAVE_DISCUSSION, this.props.id);
96
- dispatch(JOIN_DISCUSSION, {
97
- id: this.props.id,
98
- invitationToken: this.props.invitationToken
99
- });
100
- }
101
-
102
- var messages = this.props.discussion && this.props.discussion.messages;
103
- var prevMessages = prevProps.discussion && prevProps.discussion.messages;
104
-
105
- if (!is(messages, prevMessages)) {
106
- if (!this.state.scrolledToBottom && messages // get the messages that are newer than the messages we previously
107
- // had, we do not care about older messages being loaded above only
108
- // new messages below
109
- .slice(0, messages.indexOf(prevMessages.first())) // if any of the new messages were not sent by the current user we
110
- // consider them to be unread
111
- .some(function (message) {
112
- return message.createdBy.email !== _this2.props.profile.email;
113
- })) {
114
- this.setState({
115
- hasUnreadMessages: true
116
- });
117
- }
118
- }
119
- }
120
- }, {
121
- key: "componentWillUnmount",
122
- value: function componentWillUnmount() {
123
- dispatch(LEAVE_DISCUSSION, this.props.id);
124
- }
125
- }, {
126
- key: "render",
127
- value: function render() {
128
- var _this3 = this;
129
-
130
- var DiscussionError = this.props.components.DiscussionError;
131
-
132
- if (this.props.socketStatus !== SOCKET_STATUS.RECONNECTING && this.props.socketStatus !== SOCKET_STATUS.IDENTIFIED) {
133
- return /*#__PURE__*/React.createElement(DiscussionError, {
134
- error: "Real-time connection to this server has been interrupted. Please refresh and try again"
135
- });
136
- } else if (this.props.error) {
137
- return /*#__PURE__*/React.createElement(DiscussionError, {
138
- error: this.props.error
139
- });
140
- } else if (this.props.discussion && !this.props.loading) {
141
- var messageActions = this.buildMessageActions();
142
- return this.props.render({
143
- error: this.props.error,
144
- discussion: this.props.discussion,
145
- canManage: canManage(this.props.discussion, this.props.profile),
146
- elements: {
147
- messages: /*#__PURE__*/React.createElement(ScrollHelper, {
148
- onScrollTo: this.handleScrollTo,
149
- ref: function ref(el) {
150
- return _this3.scrollHelper = el;
151
- }
152
- }, /*#__PURE__*/React.createElement(MoreMessagesBanner, {
153
- hasMore: this.props.hasMoreMessages,
154
- loading: this.props.loadingMoreMessages
155
- }), /*#__PURE__*/React.createElement(MessagesList, {
156
- discussion: this.props.discussion,
157
- profile: this.props.profile,
158
- messages: this.props.discussion.messages.reverse(),
159
- actions: messageActions
160
- })),
161
- chatInput: /*#__PURE__*/React.createElement(ChatInputForm, {
162
- discussion: this.props.discussion,
163
- messageActions: messageActions,
164
- registerChatInput: function registerChatInput(el) {
165
- return _this3.chatInput = el;
166
- },
167
- toggleInvitationForm: this.props.toggleInvitationForm
168
- }),
169
- viewUnreadButton: this.state.hasUnreadMessages ? /*#__PURE__*/React.createElement("button", {
170
- type: "button",
171
- className: "btn btn-primary btn--banner",
172
- onClick: this.scrollHelper && this.scrollHelper.scrollToBottom
173
- }, "New messages", /*#__PURE__*/React.createElement("i", {
174
- className: "fa fa-fw fa-arrow-down",
175
- "aria-hidden": "true"
176
- })) : null
177
- }
178
- });
179
- }
180
-
181
- return this.props.loader ? this.props.loader() : null;
182
- }
183
- }]);
184
-
185
- return DiscussionComponent;
186
- }(React.Component);
187
- DiscussionComponent.displayName = 'Discussion';
188
- var ConnectedDiscussionComponent = connect(function (state, props) {
189
- var path = ['discussions', props.id];
190
- return {
191
- socketStatus: state.get('socketStatus'),
192
- discussion: state.getIn(path),
193
- loading: state.getIn([].concat(path, ['loading'])),
194
- error: state.getIn([].concat(path, ['error'])),
195
- hasMoreMessages: state.getIn([].concat(path, ['nextPageToken'])) !== null,
196
- loadingMoreMessaes: state.getIn([].concat(path, ['loadingMoreMessages']))
197
- };
198
- })(DiscussionComponent);
199
- export var Discussion = function Discussion(props) {
200
- return /*#__PURE__*/React.createElement(ConnectedDiscussionComponent, props);
201
- };
202
- export default Discussion;
@@ -1,227 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/esm/createClass";
5
- import _inherits from "@babel/runtime/helpers/esm/inherits";
6
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
7
- import React, { Fragment } from 'react';
8
- import { fetchSecurityPolicyDefinitions } from '../../apis/core/securityPolicyDefinitions';
9
- export var DiscussionForm = /*#__PURE__*/function (_React$Component) {
10
- _inherits(DiscussionForm, _React$Component);
11
-
12
- var _super = _createSuper(DiscussionForm);
13
-
14
- function DiscussionForm(props) {
15
- var _this;
16
-
17
- _classCallCheck(this, DiscussionForm);
18
-
19
- _this = _super.call(this, props);
20
-
21
- _this.validate = function (values) {
22
- var result = {};
23
-
24
- if (values.title === null || values.title === '') {
25
- result.title = 'Title must not be empty';
26
- }
27
-
28
- return result;
29
- };
30
-
31
- _this.submit = function (event) {
32
- event && event.preventDefault && event.preventDefault();
33
-
34
- _this.setState({
35
- dirty: false,
36
- saving: true
37
- });
38
-
39
- if (typeof _this.props.onSubmit === 'function') {
40
- _this.props.onSubmit(_this.state.values, function () {
41
- return _this.setState({
42
- saving: false
43
- });
44
- });
45
- }
46
- };
47
-
48
- _this.handleChange = function (event) {
49
- var field = event.target.id;
50
- var value = event.target.type === 'checkbox' ? event.target.checked : event.target.value;
51
-
52
- _this.setState(function (state) {
53
- return _objectSpread(_objectSpread({}, state), {}, {
54
- values: _objectSpread(_objectSpread({}, state.values), {}, _defineProperty({}, field, value)),
55
- dirty: true
56
- });
57
- });
58
- };
59
-
60
- _this.handleBlur = function (event) {
61
- var field = event.target.id;
62
-
63
- _this.setState(function (state) {
64
- return _objectSpread(_objectSpread({}, state), {}, {
65
- touched: _objectSpread(_objectSpread({}, state.touched), {}, _defineProperty({}, field, true))
66
- });
67
- });
68
- };
69
-
70
- _this.handleJoinPolicyChange = function (event) {
71
- var name = event.target.value;
72
-
73
- _this.setState(function (state) {
74
- return _objectSpread(_objectSpread({}, state), {}, {
75
- values: _objectSpread(_objectSpread({}, state.values), {}, {
76
- joinPolicy: name ? {
77
- name: name
78
- } : null
79
- }),
80
- dirty: true
81
- });
82
- });
83
- };
84
-
85
- _this.state = {
86
- values: props.discussion ? {
87
- title: props.discussion.title,
88
- description: props.discussion.description,
89
- isPrivate: props.discussion.isPrivate,
90
- joinPolicy: props.discussion.joinPolicy,
91
- owningUsers: props.discussion.owningUsers.toJS(),
92
- owningTeams: props.discussion.owningTeams.toJS(),
93
- isArchived: props.discussion.isArchived
94
- } : {
95
- title: props.defaults && props.defaults.title || '',
96
- description: props.defaults && props.defaults.description || '',
97
- isPrivate: false,
98
- joinPolicy: null,
99
- owningUsers: props.defaults && props.defaults.owningUsers || [],
100
- owningTeams: [],
101
- isArchived: false
102
- },
103
- touched: {},
104
- dirty: false,
105
- saving: false,
106
- editing: !!props.discussion,
107
- securityPolicyDefinitions: []
108
- };
109
- return _this;
110
- }
111
-
112
- _createClass(DiscussionForm, [{
113
- key: "componentDidMount",
114
- value: function componentDidMount() {
115
- var _this2 = this;
116
-
117
- fetchSecurityPolicyDefinitions().then(function (_ref) {
118
- var securityPolicyDefinitions = _ref.securityPolicyDefinitions;
119
- return _this2.setState({
120
- securityPolicyDefinitions: securityPolicyDefinitions
121
- });
122
- });
123
- }
124
- }, {
125
- key: "render",
126
- value: function render() {
127
- var OwningUsersInput = this.props.renderOwningUsersInput;
128
- var OwningTeamsInput = this.props.renderOwningTeamsInput;
129
- var validations = this.validate(this.state.values);
130
- return this.props.render({
131
- formElement: /*#__PURE__*/React.createElement("form", {
132
- onSubmit: this.submit
133
- }, /*#__PURE__*/React.createElement("div", {
134
- className: "form-group required ".concat(validations.title && this.state.touched.title ? 'has-error' : '')
135
- }, /*#__PURE__*/React.createElement("label", {
136
- htmlFor: "title"
137
- }, "Title"), /*#__PURE__*/React.createElement("input", {
138
- id: "title",
139
- type: "text",
140
- value: this.state.values.title,
141
- onChange: this.handleChange,
142
- onBlur: this.handleBlur
143
- }), validations.title && this.state.touched.title && /*#__PURE__*/React.createElement("p", {
144
- className: "text-danger"
145
- }, validations.title)), /*#__PURE__*/React.createElement("div", {
146
- className: "form-group"
147
- }, /*#__PURE__*/React.createElement("label", {
148
- htmlFor: "description"
149
- }, "Description"), /*#__PURE__*/React.createElement("textarea", {
150
- id: "description",
151
- value: this.state.values.description,
152
- onChange: this.handleChange
153
- })), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement("div", {
154
- className: "form-group"
155
- }, /*#__PURE__*/React.createElement("div", {
156
- className: "form-check-inline"
157
- }, /*#__PURE__*/React.createElement("input", {
158
- className: "form-check-input",
159
- id: "isPrivate",
160
- type: "checkbox",
161
- checked: this.state.values.isPrivate,
162
- onChange: this.handleChange
163
- }), /*#__PURE__*/React.createElement("label", {
164
- className: "form-check-label",
165
- htmlFor: "isPrivate"
166
- }, "Private?")), /*#__PURE__*/React.createElement("small", {
167
- className: "form-text text-muted"
168
- }, "Private discussions require explicit invitations to join")), !this.state.values.isPrivate && /*#__PURE__*/React.createElement("div", {
169
- className: "form-group"
170
- }, /*#__PURE__*/React.createElement("label", {
171
- htmlFor: "joinPolicy"
172
- }, "Join Policy"), /*#__PURE__*/React.createElement("select", {
173
- id: "joinPolicy",
174
- value: this.state.values.joinPolicy ? this.state.values.joinPolicy.name : '',
175
- onChange: this.handleJoinPolicyChange
176
- }, /*#__PURE__*/React.createElement("option", null), this.state.securityPolicyDefinitions.map(function (definition) {
177
- return /*#__PURE__*/React.createElement("option", {
178
- value: definition.name,
179
- key: definition.name
180
- }, definition.name);
181
- }))), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement("div", {
182
- className: "form-group"
183
- }, /*#__PURE__*/React.createElement("label", {
184
- htmlFor: "owningUsers"
185
- }, "Owning Users"), /*#__PURE__*/React.createElement(OwningUsersInput, {
186
- id: "owningUsers",
187
- value: this.state.values.owningUsers,
188
- onChange: this.handleChange
189
- })), /*#__PURE__*/React.createElement("div", {
190
- className: "form-group"
191
- }, /*#__PURE__*/React.createElement("label", {
192
- htmlFor: "owningTeams"
193
- }, "Owning Teams"), /*#__PURE__*/React.createElement(OwningTeamsInput, {
194
- id: "owningTeams",
195
- value: this.state.values.owningTeams,
196
- onChange: this.handleChange
197
- }), /*#__PURE__*/React.createElement("small", {
198
- className: "form-text text-muted"
199
- }, "Owning users and teams are able to make changes to the discussion")), /*#__PURE__*/React.createElement("hr", null), this.state.editing && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
200
- className: "form-group"
201
- }, /*#__PURE__*/React.createElement("div", {
202
- className: "form-check-inline"
203
- }, /*#__PURE__*/React.createElement("input", {
204
- className: "form-check-input",
205
- id: "isArchived",
206
- type: "checkbox",
207
- checked: this.state.values.isArchived,
208
- onChange: this.handleChange
209
- }), /*#__PURE__*/React.createElement("label", {
210
- className: "form-check-label",
211
- htmlFor: "isArchived"
212
- }, "Archived?")), /*#__PURE__*/React.createElement("small", {
213
- className: "form-text text-danger"
214
- }, "While archived, users are not able to send any messages")))),
215
- submit: this.submit,
216
- dirty: this.state.dirty,
217
- invalid: Object.keys(validations).length > 0,
218
- buttonProps: {
219
- onClick: this.submit,
220
- disabled: !this.state.dirty || this.state.saving || Object.keys(validations).length > 0
221
- }
222
- });
223
- }
224
- }]);
225
-
226
- return DiscussionForm;
227
- }(React.Component);
@@ -1,107 +0,0 @@
1
- import React from 'react';
2
- import { compose, withHandlers, withProps, withState } from 'recompose';
3
- import { List, Map } from 'immutable';
4
- export var InvitationFormComponent = function InvitationFormComponent(props) {
5
- var InviteesInput = props.renderInviteesInput;
6
- return props.render({
7
- formElement: /*#__PURE__*/React.createElement("form", {
8
- className: "invitation-form",
9
- onSubmit: props.handleSubmit
10
- }, /*#__PURE__*/React.createElement("div", {
11
- className: "form-group required"
12
- }, /*#__PURE__*/React.createElement("label", null, "Invitees"), /*#__PURE__*/React.createElement(InviteesInput, {
13
- id: "invitees",
14
- onChange: props.handleUserChange,
15
- value: props.values.get('invitees'),
16
- disabledFn: props.disabledFn
17
- }), /*#__PURE__*/React.createElement("small", {
18
- className: "form-text text-muted"
19
- }, "Enter a valid email address to invite a new user")), /*#__PURE__*/React.createElement("div", {
20
- className: "form-group"
21
- }, /*#__PURE__*/React.createElement("label", {
22
- htmlFor: "message"
23
- }, "Message for Invitees"), /*#__PURE__*/React.createElement("textarea", {
24
- name: "message",
25
- id: "message",
26
- onChange: props.handleChange,
27
- value: props.values.get('message')
28
- }), /*#__PURE__*/React.createElement("small", {
29
- className: "form-text text-muted"
30
- }, "This note will be sent as part of the invitation and visible to all members inside the discussion"))),
31
- invalid: props.required && props.values.get('invitees').size === 0,
32
- submit: props.handleSubmit,
33
- buttonProps: {
34
- onClick: props.handleSubmit,
35
- disabled: props.saving || props.required && props.values.get('invitees').size === 0
36
- }
37
- });
38
- };
39
-
40
- var mapProps = function mapProps(props) {
41
- return {
42
- associatedUsers: props.discussion ? props.discussion.participants.concat(props.discussion.invitations.filter(function (invitation) {
43
- return invitation.user;
44
- })).map(function (involvement) {
45
- return involvement.user.username;
46
- }) : List([props.profile.username]),
47
- associatedEmails: props.discussion ? props.discussion.invitations.filter(function (invitation) {
48
- return invitation.email;
49
- }).map(function (invitation) {
50
- return invitation.email;
51
- }) : List()
52
- };
53
- };
54
-
55
- var handleChange = function handleChange(props) {
56
- return function (event) {
57
- var field = event.target.id;
58
- var value = event.target.value;
59
- props.setValues(function (values) {
60
- return values.set(field, value);
61
- });
62
- };
63
- };
64
-
65
- var handleUserChange = function handleUserChange(props) {
66
- return function (user) {
67
- props.setValues(function (values) {
68
- return values.set('invitees', user ? user : List());
69
- });
70
- };
71
- };
72
-
73
- var handleSubmit = function handleSubmit(props) {
74
- return function (event) {
75
- event && event.preventDefault && event.preventDefault();
76
- props.setSaving(true);
77
-
78
- if (typeof props.onSubmit === 'function') {
79
- props.onSubmit(props.values, function () {
80
- return props.setSaving(false);
81
- });
82
- }
83
- };
84
- };
85
-
86
- var disabledFn = function disabledFn(props) {
87
- return function (option) {
88
- if (option.user) {
89
- return props.associatedUsers.contains(option.user.username) && 'Already involved';
90
- } else if (option.customOption) {
91
- return props.associatedEmails.contains(option.label) && 'Already invited';
92
- }
93
-
94
- return false;
95
- };
96
- };
97
-
98
- export var InvitationForm = compose(withProps(mapProps), withState('saving', 'setSaving', false), withState('values', 'setValues', Map({
99
- invitees: List(),
100
- message: ''
101
- })), withHandlers({
102
- handleChange: handleChange,
103
- handleUserChange: handleUserChange,
104
- handleSubmit: handleSubmit,
105
- disabledFn: disabledFn
106
- }))(InvitationFormComponent);
107
- export default InvitationForm;
@@ -1,110 +0,0 @@
1
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/esm/createClass";
3
- import _inherits from "@babel/runtime/helpers/esm/inherits";
4
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
- import React, { Component, Fragment } from 'react';
6
- import { List } from 'immutable';
7
- import moment from 'moment';
8
- import { fetchMessageHistory } from '../../apis/discussions';
9
- import { UserMessageGroup } from './UserMessageGroup';
10
- export var MessageHistory = /*#__PURE__*/function (_Component) {
11
- _inherits(MessageHistory, _Component);
12
-
13
- var _super = _createSuper(MessageHistory);
14
-
15
- function MessageHistory() {
16
- var _this;
17
-
18
- _classCallCheck(this, MessageHistory);
19
-
20
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
21
- args[_key] = arguments[_key];
22
- }
23
-
24
- _this = _super.call.apply(_super, [this].concat(args));
25
- _this.state = {
26
- versions: null,
27
- index: null
28
- };
29
- return _this;
30
- }
31
-
32
- _createClass(MessageHistory, [{
33
- key: "componentDidMount",
34
- value: function componentDidMount() {
35
- var _this2 = this;
36
-
37
- fetchMessageHistory({
38
- discussionId: this.props.discussion.id,
39
- id: this.props.message.id
40
- }).then(function (response) {
41
- var versions = response.messages.reverse();
42
- var index = versions.findIndex(function (m) {
43
- return m.versionId === _this2.props.message.versionId;
44
- });
45
-
46
- _this2.setState({
47
- versions: versions,
48
- index: index !== -1 ? index : versions.length - 1
49
- });
50
- });
51
- }
52
- }, {
53
- key: "render",
54
- value: function render() {
55
- var _this3 = this;
56
-
57
- if (this.state.versions) {
58
- var currentVersion = this.state.versions[this.state.index];
59
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
60
- className: "message-versions-controls"
61
- }, /*#__PURE__*/React.createElement("div", {
62
- className: "timestamp"
63
- }, "Changed on", ' ', moment(currentVersion.updatedAt).format(this.props.timeFormat)), /*#__PURE__*/React.createElement("div", {
64
- className: "page-info"
65
- }, this.state.index + 1, " of ", this.state.versions.length), /*#__PURE__*/React.createElement("div", {
66
- className: "btn-group"
67
- }, /*#__PURE__*/React.createElement("button", {
68
- type: "button",
69
- className: "btn btn-sm btn-inverse",
70
- disabled: this.state.index <= 0,
71
- onClick: function onClick() {
72
- return _this3.setState(function (state) {
73
- return {
74
- index: state.index - 1
75
- };
76
- });
77
- }
78
- }, /*#__PURE__*/React.createElement("i", {
79
- className: "fa fa-fw fa-caret-left"
80
- })), /*#__PURE__*/React.createElement("button", {
81
- type: "button",
82
- className: "btn btn-sm btn-inverse",
83
- disabled: this.state.index >= this.state.versions.length - 1,
84
- onClick: function onClick() {
85
- return _this3.setState(function (state) {
86
- return {
87
- index: state.index + 1
88
- };
89
- });
90
- }
91
- }, /*#__PURE__*/React.createElement("i", {
92
- className: "fa fa-fw fa-caret-right"
93
- })))), /*#__PURE__*/React.createElement("div", {
94
- className: "message-versions"
95
- }, /*#__PURE__*/React.createElement(UserMessageGroup, {
96
- discussion: this.props.discussion,
97
- profile: this.props.profile,
98
- messages: List([currentVersion])
99
- })));
100
- }
101
-
102
- return null;
103
- }
104
- }]);
105
-
106
- return MessageHistory;
107
- }(Component);
108
- MessageHistory.defaultProps = {
109
- timeFormat: 'MMMM D, YYYY h:mm A'
110
- };
@@ -1,40 +0,0 @@
1
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
- import React, { Fragment } from 'react';
3
- import { DateBanner } from './DateBanner';
4
- import { partitionListBy } from '../../helpers';
5
- import { SystemMessageGroup } from './SystemMessageGroup';
6
- import { UserMessageGroup } from './UserMessageGroup';
7
-
8
- var differentAuthor = function differentAuthor(m1, m2) {
9
- return m1.type !== m2.type || m1.type === 'User' && m1.createdBy.username !== m2.createdBy.username;
10
- };
11
-
12
- var Default = function Default(_ref) {
13
- var dateBanner = _ref.dateBanner,
14
- messageGroups = _ref.messageGroups;
15
- return /*#__PURE__*/React.createElement(Fragment, null, dateBanner, messageGroups);
16
- };
17
-
18
- export var MessagesByDate = function MessagesByDate(props) {
19
- var Component = props.renderMessagesByDate || Default;
20
- return /*#__PURE__*/React.createElement(Component, {
21
- dateBanner: /*#__PURE__*/React.createElement(DateBanner, {
22
- date: props.messages.first().createdAt
23
- }),
24
- messageGroups: partitionListBy(differentAuthor, props.messages).map(function (messages) {
25
- return {
26
- discussion: props.discussion,
27
- profile: props.profile,
28
- messages: messages,
29
- actions: props.actions,
30
- key: messages.first().id,
31
- Component: messages.first().type === 'User' ? UserMessageGroup : SystemMessageGroup
32
- };
33
- }).map(function (_ref2) {
34
- var Component = _ref2.Component,
35
- props = _objectWithoutProperties(_ref2, ["Component"]);
36
-
37
- return /*#__PURE__*/React.createElement(Component, props);
38
- })
39
- });
40
- };