@rh-support/manage 2.6.1 → 2.6.11

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 (157) hide show
  1. package/lib/esm/ManageTabs.d.ts.map +1 -1
  2. package/lib/esm/ManageTabs.js +48 -20
  3. package/lib/esm/Routes.d.ts +1 -0
  4. package/lib/esm/Routes.d.ts.map +1 -1
  5. package/lib/esm/Routes.js +6 -0
  6. package/lib/esm/components/Configs/ConfigsTable.d.ts.map +1 -1
  7. package/lib/esm/components/Configs/ConfigsTable.js +33 -9
  8. package/lib/esm/components/Groups/AddMembersModal/AddMembersModal.d.ts +12 -0
  9. package/lib/esm/components/Groups/AddMembersModal/AddMembersModal.d.ts.map +1 -0
  10. package/lib/esm/components/Groups/AddMembersModal/AddMembersModal.js +80 -0
  11. package/lib/esm/components/Groups/AddMembersModal/index.d.ts +2 -0
  12. package/lib/esm/components/Groups/AddMembersModal/index.d.ts.map +1 -0
  13. package/lib/esm/components/Groups/AddMembersModal/index.js +1 -0
  14. package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.d.ts +5 -3
  15. package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.d.ts.map +1 -1
  16. package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.js +21 -14
  17. package/lib/esm/components/Groups/GroupSelect/GroupSelect.d.ts +1 -0
  18. package/lib/esm/components/Groups/GroupSelect/GroupSelect.d.ts.map +1 -1
  19. package/lib/esm/components/Groups/GroupSelect/GroupSelect.js +240 -105
  20. package/lib/esm/components/Groups/GroupUserPermissionsSelect/GroupUserPermissionsSelect.d.ts.map +1 -1
  21. package/lib/esm/components/Groups/GroupUserPermissionsSelect/GroupUserPermissionsSelect.js +19 -14
  22. package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.d.ts.map +1 -1
  23. package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.js +187 -77
  24. package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.d.ts.map +1 -1
  25. package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.js +15 -12
  26. package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.d.ts.map +1 -1
  27. package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.js +106 -67
  28. package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.d.ts.map +1 -1
  29. package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.d.ts.map +1 -1
  30. package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.js +15 -22
  31. package/lib/esm/components/ManageCaseLabels/AddEditCaseLabelModal.d.ts +19 -0
  32. package/lib/esm/components/ManageCaseLabels/AddEditCaseLabelModal.d.ts.map +1 -0
  33. package/lib/esm/components/ManageCaseLabels/AddEditCaseLabelModal.js +97 -0
  34. package/lib/esm/components/ManageCaseLabels/ManageCaseLabelsTab.d.ts +3 -0
  35. package/lib/esm/components/ManageCaseLabels/ManageCaseLabelsTab.d.ts.map +1 -0
  36. package/lib/esm/components/ManageCaseLabels/ManageCaseLabelsTab.js +220 -0
  37. package/lib/esm/components/ManageCaseLabels/index.d.ts +2 -0
  38. package/lib/esm/components/ManageCaseLabels/index.d.ts.map +1 -0
  39. package/lib/esm/components/ManageCaseLabels/index.js +1 -0
  40. package/lib/esm/components/ManageCaseLabels/types.d.ts +6 -0
  41. package/lib/esm/components/ManageCaseLabels/types.d.ts.map +1 -0
  42. package/lib/esm/components/ManageCaseLabels/types.js +1 -0
  43. package/lib/esm/components/ManageExpiredContents/ExpiredContentCategory.js +4 -4
  44. package/lib/esm/components/ManageExpiredContents/ExpiredContentHeader.js +1 -1
  45. package/lib/esm/components/ManageExpiredContents/ExpiredContentManager.d.ts.map +1 -1
  46. package/lib/esm/components/ManageExpiredContents/ExpiredContentManager.js +12 -12
  47. package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItem.js +3 -3
  48. package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItemView.d.ts.map +1 -1
  49. package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItemView.js +43 -35
  50. package/lib/esm/components/ManagePartnerships/NonOrgCustomerInfoModal.d.ts.map +1 -1
  51. package/lib/esm/components/ManagePartnerships/NonOrgCustomerInfoModal.js +8 -5
  52. package/lib/esm/components/ManagePartnerships/PartnershipsList.d.ts.map +1 -1
  53. package/lib/esm/components/ManagePartnerships/PartnershipsList.js +19 -12
  54. package/lib/esm/components/ManagePartnerships/PartnershipsTermsModal.d.ts.map +1 -1
  55. package/lib/esm/components/ManagePartnerships/PartnershipsTermsModal.js +17 -20
  56. package/lib/esm/components/ManagePartnerships/RequestCollaborationModal.d.ts.map +1 -1
  57. package/lib/esm/components/ManagePartnerships/RequestCollaborationModal.js +39 -27
  58. package/lib/esm/components/ManagePartnerships/Requests.d.ts +1 -0
  59. package/lib/esm/components/ManagePartnerships/Requests.d.ts.map +1 -1
  60. package/lib/esm/components/ManagePartnerships/Requests.js +22 -9
  61. package/lib/esm/components/ManagePartnerships/index.js +1 -1
  62. package/lib/esm/components/ManagePreferences/PreferencesBody.d.ts.map +1 -1
  63. package/lib/esm/components/ManagePreferences/PreferencesBody.js +1 -5
  64. package/lib/esm/components/ManagePreferences/PreferencesHeader.js +1 -1
  65. package/lib/esm/components/ManagePreferences/components/PreferenceSelect.d.ts +1 -1
  66. package/lib/esm/components/ManagePreferences/components/PreferenceSelect.d.ts.map +1 -1
  67. package/lib/esm/components/ManagePreferences/components/PreferenceSelect.js +26 -27
  68. package/lib/esm/components/ManagePreferences/components/PreferenceSwitch.d.ts.map +1 -1
  69. package/lib/esm/components/ManagePreferences/components/PreferenceSwitch.js +6 -6
  70. package/lib/esm/components/ManagePreferences/sections/PreferencesACL.d.ts.map +1 -1
  71. package/lib/esm/components/ManagePreferences/sections/PreferencesACL.js +8 -9
  72. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.d.ts.map +1 -1
  73. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.js +77 -63
  74. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseSearch.d.ts.map +1 -1
  75. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseSearch.js +3 -4
  76. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.d.ts.map +1 -1
  77. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.js +47 -103
  78. package/lib/esm/components/ManageTable/ManageTable.d.ts +3 -4
  79. package/lib/esm/components/ManageTable/ManageTable.d.ts.map +1 -1
  80. package/lib/esm/components/ManageTable/ManageTable.js +12 -18
  81. package/lib/esm/components/ManageTags/TagsManager.d.ts.map +1 -1
  82. package/lib/esm/components/ManageTags/TagsManager.js +58 -50
  83. package/lib/esm/components/NotificationEmails/NotificationEmailsModal.d.ts.map +1 -1
  84. package/lib/esm/components/NotificationEmails/NotificationEmailsModal.js +35 -26
  85. package/lib/esm/components/NotificationEmails/index.d.ts.map +1 -1
  86. package/lib/esm/components/NotificationEmails/index.js +10 -7
  87. package/lib/esm/components/TopContentManagement/CategoryLimit/CategoryLimit.d.ts.map +1 -1
  88. package/lib/esm/components/TopContentManagement/CategoryLimit/CategoryLimit.js +2 -3
  89. package/lib/esm/components/TopContentManagement/CategoryLimit/CategoryLimitGuidelines.js +6 -6
  90. package/lib/esm/components/TopContentManagement/CategoryLimit/QuestionAnswer.js +1 -1
  91. package/lib/esm/components/TopContentManagement/ContentUsage/ContentAccordion.d.ts.map +1 -1
  92. package/lib/esm/components/TopContentManagement/ContentUsage/ContentAccordion.js +7 -9
  93. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricClickCount.d.ts +1 -0
  94. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricClickCount.d.ts.map +1 -1
  95. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricClickCount.js +2 -2
  96. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetrics.d.ts.map +1 -1
  97. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetrics.js +12 -10
  98. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.d.ts +2 -3
  99. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.d.ts.map +1 -1
  100. package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.js +16 -9
  101. package/lib/esm/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.d.ts.map +1 -1
  102. package/lib/esm/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.js +15 -16
  103. package/lib/esm/components/TopContentManagement/NoTopContentFound.d.ts.map +1 -1
  104. package/lib/esm/components/TopContentManagement/NoTopContentFound.js +14 -15
  105. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/AddNewCategoryDropDown.d.ts.map +1 -1
  106. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/AddNewCategoryDropDown.js +47 -39
  107. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategory.d.ts.map +1 -1
  108. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategory.js +12 -6
  109. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategoryNew.js +3 -3
  110. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentComponent.d.ts.map +1 -1
  111. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentComponent.js +11 -7
  112. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItem.d.ts.map +1 -1
  113. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItem.js +62 -53
  114. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItemLink.d.ts.map +1 -1
  115. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItemLink.js +2 -3
  116. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentEditor.d.ts.map +1 -1
  117. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentEditor.js +8 -9
  118. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestion.js +2 -2
  119. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestionHint.js +4 -5
  120. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestionHintAccept.d.ts.map +1 -1
  121. package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestionHintAccept.js +51 -25
  122. package/lib/esm/components/TopContentManagement/TopContentHeader.js +1 -1
  123. package/lib/esm/components/TopContentManagement/TopContentProductVersionSelector.d.ts.map +1 -1
  124. package/lib/esm/components/TopContentManagement/TopContentProductVersionSelector.js +64 -32
  125. package/lib/esm/constants/GroupSelectActions.d.ts +2 -1
  126. package/lib/esm/constants/GroupSelectActions.d.ts.map +1 -1
  127. package/lib/esm/constants/GroupSelectActions.js +1 -0
  128. package/lib/esm/constants/PartnershipLink.d.ts +3 -0
  129. package/lib/esm/constants/PartnershipLink.d.ts.map +1 -0
  130. package/lib/esm/constants/PartnershipLink.js +2 -0
  131. package/lib/esm/context/ExpiredContentContextProvider.d.ts.map +1 -1
  132. package/lib/esm/hooks/useCaseGroupGraphQL.d.ts +42 -0
  133. package/lib/esm/hooks/useCaseGroupGraphQL.d.ts.map +1 -0
  134. package/lib/esm/hooks/useCaseGroupGraphQL.js +117 -0
  135. package/lib/esm/hooks/useCaseLabelGraphQL.d.ts +26 -0
  136. package/lib/esm/hooks/useCaseLabelGraphQL.d.ts.map +1 -0
  137. package/lib/esm/hooks/useCaseLabelGraphQL.js +104 -0
  138. package/lib/esm/hooks/useCurrentUserContact.d.ts +8 -0
  139. package/lib/esm/hooks/useCurrentUserContact.d.ts.map +1 -0
  140. package/lib/esm/hooks/useCurrentUserContact.js +74 -0
  141. package/lib/esm/hooks/useVersionsDiffer.d.ts.map +1 -1
  142. package/lib/esm/index.d.ts.map +1 -1
  143. package/lib/esm/index.js +2 -0
  144. package/lib/esm/reducers/ExpiredContentReducer.d.ts.map +1 -1
  145. package/lib/esm/reducers/ManagePartnershipsReducer.d.ts.map +1 -1
  146. package/lib/esm/reducers/TagManagmentReducer.d.ts +1 -1
  147. package/lib/esm/reducers/TagManagmentReducer.d.ts.map +1 -1
  148. package/lib/esm/reducers/TopContentHelpers.d.ts.map +1 -1
  149. package/lib/esm/reducers/TopContentReducer.d.ts.map +1 -1
  150. package/lib/esm/reducers/TopContentReducer.js +5 -2
  151. package/lib/esm/scss/_main.scss +266 -24
  152. package/lib/esm/scss/_pf-overrides.scss +66 -53
  153. package/lib/esm/scss/index.scss +5 -4
  154. package/lib/esm/utils/caseGroupMapper.d.ts +18 -0
  155. package/lib/esm/utils/caseGroupMapper.d.ts.map +1 -0
  156. package/lib/esm/utils/caseGroupMapper.js +50 -0
  157. package/package.json +21 -22
@@ -7,43 +7,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { Spinner } from '@patternfly/react-core';
11
- import { Select, SelectVariant } from '@patternfly/react-core/deprecated';
12
- import { ToastNotification } from '@rh-support/components';
10
+ import { SingleSelectDropdown, ToastNotification } from '@rh-support/components';
13
11
  import isEqual from 'lodash/isEqual';
14
12
  import React, { useState } from 'react';
15
13
  import { Trans, useTranslation } from 'react-i18next';
16
14
  export function PreferenceSelect({ id, label, selections, children, onSelect }) {
17
15
  const { t } = useTranslation();
18
- const [isOpen, setIsOpen] = useState(false);
19
16
  const [isLoading, setIsLoading] = useState(false);
20
- const onSelectToggle = (isOpen) => {
21
- setIsOpen(isOpen);
22
- };
23
- // To handle select
24
- const onSelectLocal = (event, selection, isPlaceholder) => __awaiter(this, void 0, void 0, function* () {
25
- if (isPlaceholder || isEqual(selection, selections))
26
- defaultClearSelection();
27
- else {
28
- setIsLoading(true);
29
- try {
30
- yield onSelect(event, selection, isPlaceholder);
31
- ToastNotification.addSuccessMessage(t('Successfully updated preference'));
32
- }
33
- catch (e) {
34
- ToastNotification.addDangerMessage(t('Failed to update preference'));
35
- }
36
- finally {
37
- defaultClearSelection();
38
- setIsLoading(false);
39
- }
17
+ const onSelectLocal = (option) => __awaiter(this, void 0, void 0, function* () {
18
+ if (isEqual(option.value, selections)) {
19
+ return;
20
+ }
21
+ setIsLoading(true);
22
+ try {
23
+ yield onSelect(option, option.value);
24
+ ToastNotification.addSuccessMessage(t('Successfully updated preference'));
25
+ }
26
+ catch (e) {
27
+ ToastNotification.addDangerMessage(t('Failed to update preference'));
40
28
  }
29
+ finally {
30
+ setIsLoading(false);
31
+ }
32
+ });
33
+ const getDropdownOptions = (children) => children.map((child) => {
34
+ return {
35
+ label: child.props.value,
36
+ value: child.props.value,
37
+ description: child.props.description,
38
+ };
41
39
  });
42
- const defaultClearSelection = () => {
43
- setIsOpen(false);
40
+ const getSelectedDropdownOption = {
41
+ label: selections,
42
+ value: selections,
44
43
  };
45
44
  return (React.createElement(React.Fragment, null,
46
45
  React.createElement("label", { id: id },
47
46
  React.createElement(Trans, null, label)),
48
- React.createElement(Select, { variant: SelectVariant.single, onToggle: (_event, isOpen) => onSelectToggle(isOpen), onSelect: onSelectLocal, selections: selections, isOpen: isOpen, "aria-labelledby": id, toggleIcon: isLoading && React.createElement(Spinner, { size: "sm" }) }, children)));
47
+ React.createElement(SingleSelectDropdown, { selected: getSelectedDropdownOption, options: getDropdownOptions(children), onSelect: onSelectLocal, isLoading: isLoading, ariaLabel: id })));
49
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PreferenceSwitch.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/components/PreferenceSwitch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,qBAgC3F"}
1
+ {"version":3,"file":"PreferenceSwitch.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/components/PreferenceSwitch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,qBAgC3F"}
@@ -9,27 +9,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { Switch } from '@patternfly/react-core';
11
11
  import { ToastNotification } from '@rh-support/components';
12
- import React, { useState } from 'react';
12
+ import React from 'react';
13
13
  import { useTranslation } from 'react-i18next';
14
14
  export function PreferenceSwitch({ onSwitchChange, className, id, label, isChecked }) {
15
- const [isSwitchLoading, setIsSwitchLoading] = useState(false);
15
+ // const [isSwitchLoading, setIsSwitchLoading] = useState(false);
16
16
  let isCheckedLocal = isChecked;
17
17
  const { t } = useTranslation();
18
18
  // To handle change
19
19
  const onChangeLocal = (checked) => __awaiter(this, void 0, void 0, function* () {
20
20
  try {
21
- setIsSwitchLoading(true);
21
+ // setIsSwitchLoading(true);
22
22
  yield onSwitchChange(checked);
23
23
  isCheckedLocal = isChecked;
24
24
  ToastNotification.addSuccessMessage(t('Successfully updated preference'));
25
- setIsSwitchLoading(false);
25
+ // setIsSwitchLoading(false);
26
26
  }
27
27
  catch (_a) {
28
28
  isCheckedLocal = !checked;
29
29
  ToastNotification.addDangerMessage(t('Failed to update preference'));
30
- setIsSwitchLoading(false);
30
+ // setIsSwitchLoading(false);
31
31
  }
32
32
  });
33
33
  return (React.createElement("div", null,
34
- React.createElement(Switch, Object.assign({}, (className ? { className } : {}), { id: id, label: label, isChecked: isCheckedLocal, onChange: (_event, checked) => onChangeLocal(checked), isDisabled: isSwitchLoading }))));
34
+ React.createElement(Switch, Object.assign({}, (className ? { className } : {}), { id: id, label: label, isChecked: isCheckedLocal, onChange: (_event, checked) => onChangeLocal(checked), isDisabled: true }))));
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesACL.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesACL.tsx"],"names":[],"mappings":"AASA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,wBAAgB,cAAc,sBAwF7B"}
1
+ {"version":3,"file":"PreferencesACL.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesACL.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,wBAAgB,cAAc,sBAuF7B"}
@@ -11,15 +11,14 @@ import { accounts } from '@cee-eng/hydrajs';
11
11
  import { Card, CardBody, CardHeader, Spinner, Tooltip } from '@patternfly/react-core';
12
12
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
13
13
  import { useFetch } from '@rh-support/components';
14
- import { fetchLoggedInUsersAccount, GlobalMetadataDispatchContext, GlobalMetadataStateContext, } from '@rh-support/react-context';
14
+ import { GlobalMetadataStateContext } from '@rh-support/react-context';
15
15
  import React, { useContext, useState } from 'react';
16
16
  import { Trans, useTranslation } from 'react-i18next';
17
17
  import { PreferenceSwitch } from '../components/PreferenceSwitch';
18
18
  export function PreferencesACL() {
19
19
  var _a;
20
20
  const { t } = useTranslation();
21
- const { globalMetadataState: { loggedInUsersAccount, loggedInUserJwtToken }, } = useContext(GlobalMetadataStateContext);
22
- const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
21
+ const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
23
22
  const [isAclActivated, setIsAclActivated] = useState((_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.hasGroupACLs);
24
23
  const [isAclLoading, setIsAclLoading] = useState(false);
25
24
  const { request: updateAcl } = useFetch(accounts.updateAcl);
@@ -27,7 +26,7 @@ export function PreferencesACL() {
27
26
  try {
28
27
  setIsAclLoading(true);
29
28
  yield updateAcl(!isAclActivated, loggedInUsersAccount.data.accountNumber);
30
- fetchLoggedInUsersAccount(dispatchToGlobalMetadataReducer, loggedInUserJwtToken, true);
29
+ // TODO: migrate to GraphQL - fetchLoggedInUsersAccount(dispatchToGlobalMetadataReducer, loggedInUserJwtToken, true, apolloClient);
31
30
  setIsAclActivated(!isAclActivated);
32
31
  }
33
32
  catch (error) {
@@ -35,7 +34,7 @@ export function PreferencesACL() {
35
34
  }
36
35
  setIsAclLoading(false);
37
36
  });
38
- return (React.createElement(Card, { className: "preference-card" },
37
+ return (React.createElement(Card, { variant: "secondary", className: "preference-card" },
39
38
  React.createElement(CardHeader, null,
40
39
  React.createElement("h3", null,
41
40
  React.createElement(Trans, null, "Case Group Access Control List"))),
@@ -44,13 +43,13 @@ export function PreferencesACL() {
44
43
  React.createElement("div", { className: "form-group" },
45
44
  React.createElement("label", null,
46
45
  React.createElement(Trans, null, "Enable Case Group ACL for my account")),
47
- React.createElement("div", { className: "preference-page-switch-container" },
46
+ React.createElement("div", { className: "preference-page-switch-container pf-v6-u-mt-sm" },
48
47
  React.createElement(PreferenceSwitch, { id: "ACL-switch", label: isAclActivated ? t('ACL Enabled') : t('ACL Disabled'), isChecked: isAclActivated, onSwitchChange: onAclSwitch }),
49
48
  React.createElement("div", { className: "prefhostnameTooltip" },
50
49
  React.createElement(Tooltip, { content: t('This determines if the account is utilizing case group access controls'), position: "right" },
51
- React.createElement(InfoCircleIcon, { className: "pf-v5-u-ml-sm" })),
52
- isAclLoading && (React.createElement(Spinner, { size: "lg", className: "pf-v5-u-ml-sm hostnameSpinner", "aria-label": "Hostname loading" })))),
53
- React.createElement("div", { className: "pf-v5-u-mt-lg" },
50
+ React.createElement(InfoCircleIcon, { color: "#5e40be", className: "pf-v6-u-ml-sm cursor-pointer" })),
51
+ isAclLoading && (React.createElement(Spinner, { size: "lg", className: "pf-v6-u-ml-sm hostnameSpinner", "aria-label": "Hostname loading" })))),
52
+ React.createElement("div", { className: "pf-v6-u-mt-lg" },
54
53
  React.createElement("label", null,
55
54
  React.createElement(Trans, null, "Related links")),
56
55
  React.createElement("p", null,
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesCaseCreate.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseCreate.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;CAAG;AACnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA0MlD"}
1
+ {"version":3,"file":"PreferencesCaseCreate.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseCreate.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAkBhF,UAAU,MAAM;CAAG;AACnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBAwNlD"}
@@ -7,63 +7,74 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { publicApi } from '@cee-eng/hydrajs';
11
- import { Card, CardBody, CardHeader } from '@patternfly/react-core';
12
- import { SelectOption } from '@patternfly/react-core/deprecated';
13
- import { ToastNotification, useFetch } from '@rh-support/components';
14
- import { fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataReducerConstants, GlobalMetadataStateContext, } from '@rh-support/react-context';
10
+ import { useApolloClient } from '@apollo/client/react';
11
+ import { Card, CardBody, CardHeader, SelectOption } from '@patternfly/react-core';
12
+ import { ToastNotification } from '@rh-support/components';
13
+ import { fetchCaseGroupsForAccount, fetchCaseGroupsForSSO, fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataReducerConstants, GlobalMetadataStateContext, } from '@rh-support/react-context';
15
14
  import { haventLoadedMetadata, PreferredLanguages } from '@rh-support/utils';
16
15
  import isEmpty from 'lodash/isEmpty';
17
16
  import map from 'lodash/map';
18
- import React, { useContext, useEffect, useState } from 'react';
17
+ import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
19
18
  import { Trans, useTranslation } from 'react-i18next';
20
- import { useLocation } from 'react-router-dom';
19
+ import { useToggleDefaultGroup } from '../../../hooks/useCaseGroupGraphQL';
21
20
  import { useUserPreferences } from '../../../hooks/useUserPreferences';
22
21
  import { PreferenceSelect } from '../components/PreferenceSelect';
22
+ const UNGROUPED_CASE_LABEL = 'Ungrouped Case';
23
+ function resolveDefaultGroupLabel(defaultCaseGroupId, groupList) {
24
+ var _a;
25
+ if (!defaultCaseGroupId || defaultCaseGroupId === '-1') {
26
+ return UNGROUPED_CASE_LABEL;
27
+ }
28
+ const defaultGroup = groupList.find((group) => group.groupNum === defaultCaseGroupId);
29
+ return (_a = defaultGroup === null || defaultGroup === void 0 ? void 0 : defaultGroup.name) !== null && _a !== void 0 ? _a : UNGROUPED_CASE_LABEL;
30
+ }
23
31
  export function PreferencesCaseCreate(props) {
32
+ var _a, _b, _c, _d, _e, _f;
24
33
  const { t } = useTranslation();
25
- const location = useLocation();
26
- const { globalMetadataState: { caseGroups, caseLanguages, loggedInUserJwtToken, loggedInUserRights, loggedInUsersAccount, }, } = useContext(GlobalMetadataStateContext);
34
+ const apolloClient = useApolloClient();
35
+ const { globalMetadataState: { caseGroups, caseLanguages, loggedInUser, loggedInUserJwtToken, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
27
36
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
28
37
  const languageConst = caseLanguages.data;
29
- const getDefaultGroupFetch = useFetch(publicApi.caseGroups.getCaseGroupsForSSO, {
30
- propgateErrors: true,
31
- });
32
- const toggleDefaultGroupFetch = useFetch(publicApi.caseGroups.toggleDefaultGroup, {
33
- propgateErrors: true,
34
- });
35
- const grabDefaultGroupList = (ssoUser) => __awaiter(this, void 0, void 0, function* () {
36
- try {
37
- let list = yield getDefaultGroupFetch.request(ssoUser);
38
- setUserDefaultGroupList(list);
39
- let filteredDefaultGroup = (list ? list : []).filter((group) => group.isDefault === true);
40
- if (!isEmpty(filteredDefaultGroup)) {
41
- setOriginalDefaultGroup(filteredDefaultGroup[0].name);
42
- }
43
- else {
44
- setOriginalDefaultGroup('Ungrouped Case');
45
- }
46
- }
47
- catch (error) {
48
- console.log(error);
38
+ const { toggleDefault } = useToggleDefaultGroup();
39
+ const groupList = useMemo(() => caseGroups.data || [], [caseGroups.data]);
40
+ const contactId = (_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _a === void 0 ? void 0 : _a.id;
41
+ const defaultCaseGroupId = (_c = (_b = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _b === void 0 ? void 0 : _b.defaultCaseGroup) !== null && _c !== void 0 ? _c : null;
42
+ const salesforceAccountId = (_d = loggedInUsersAccount.data) === null || _d === void 0 ? void 0 : _d.salesforceAccountId;
43
+ const loggedInContactId = (_e = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _e === void 0 ? void 0 : _e.id;
44
+ const loggedInIsOrgAdmin = (_f = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _f === void 0 ? void 0 : _f.isOrgAdmin;
45
+ const hasFetchedCaseGroups = useRef(false);
46
+ const updateDefaultGroupPref = (groupId) => __awaiter(this, void 0, void 0, function* () {
47
+ if (!contactId) {
48
+ ToastNotification.addDangerMessage(t('Cannot update default group: contact information is missing'));
49
+ throw new Error('Missing contact id');
49
50
  }
50
- });
51
- const updateDefaultGroupPref = (groupNum) => __awaiter(this, void 0, void 0, function* () {
52
- var _a;
53
51
  try {
54
- yield toggleDefaultGroupFetch.request(groupNum, loggedInUserRights.data.getSSOUsername(), true, loggedInUsersAccount.data.secureSupport);
55
- const updatedGroups = (caseGroups.data || []).map((group) => (Object.assign(Object.assign({}, group), { isDefault: group.groupNum === groupNum })));
52
+ yield toggleDefault(contactId, groupId);
53
+ const updatedGroups = groupList.map((group) => (Object.assign(Object.assign({}, group), { isDefault: groupId !== null && group.groupNum === groupId })));
56
54
  dispatchToGlobalMetadataReducer({
57
55
  type: GlobalMetadataReducerConstants.setCaseGroups,
58
56
  payload: {
59
57
  caseGroups: Object.assign(Object.assign({}, caseGroups), { data: updatedGroups }),
60
58
  },
61
59
  });
62
- setUserDefaultGroupList(updatedGroups);
63
- setOriginalDefaultGroup(((_a = updatedGroups.find((g) => g.isDefault)) === null || _a === void 0 ? void 0 : _a.name) || 'Ungrouped Case');
60
+ const updatedLoggedInUserData = Object.assign(Object.assign({}, loggedInUser.data), { defaultCaseGroup: groupId });
61
+ dispatchToGlobalMetadataReducer({
62
+ type: GlobalMetadataReducerConstants.setLoggedInUser,
63
+ payload: {
64
+ loggedInUser: Object.assign(Object.assign({}, loggedInUser), { data: updatedLoggedInUserData }),
65
+ },
66
+ });
67
+ setOriginalDefaultGroup(resolveDefaultGroupLabel(groupId, updatedGroups));
64
68
  }
65
69
  catch (error) {
66
- console.log(error);
70
+ const message = String((error === null || error === void 0 ? void 0 : error.message) || '');
71
+ if (message.includes('insufficient access rights')) {
72
+ ToastNotification.addDangerMessage(t('You do not have permission to change the default group'));
73
+ }
74
+ else if (message !== 'Missing contact id') {
75
+ ToastNotification.addDangerMessage(t('Failed to update default group'));
76
+ }
77
+ throw error;
67
78
  }
68
79
  });
69
80
  const languagesList = map(languageConst, (cl) => ({
@@ -72,7 +83,6 @@ export function PreferencesCaseCreate(props) {
72
83
  }));
73
84
  const [originalPreferredLanguage, setOriginalPreferredLanguage] = useState('');
74
85
  const [originalDefaultGroup, setOriginalDefaultGroup] = useState('');
75
- const [userDefaultGroupList, setUserDefaultGroupList] = useState();
76
86
  const { getPreferredLanguage, updatePreferredLanguage } = useUserPreferences();
77
87
  const preferredLangTitleId = 'preferred-language-select';
78
88
  const defaultGroupTitleId = 'default-group-select';
@@ -85,7 +95,7 @@ export function PreferencesCaseCreate(props) {
85
95
  return foundLang === null || foundLang === void 0 ? void 0 : foundLang.label;
86
96
  }
87
97
  };
88
- const onPreferredLanguageSelect = (event, selection, isPlaceholder) => __awaiter(this, void 0, void 0, function* () {
98
+ const onPreferredLanguageSelect = (event, selection) => __awaiter(this, void 0, void 0, function* () {
89
99
  const selectedLanguageCode = getLanguageKey(selection);
90
100
  try {
91
101
  yield updatePreferredLanguage(selectedLanguageCode.value);
@@ -95,19 +105,14 @@ export function PreferencesCaseCreate(props) {
95
105
  console.log(error);
96
106
  }
97
107
  });
98
- const onDefaultGroupSelect = (event, selection, isPlaceholder) => __awaiter(this, void 0, void 0, function* () {
99
- try {
100
- if (selection === 'Ungrouped Case') {
101
- updateDefaultGroupPref('-1');
102
- }
103
- if (!isEmpty(userDefaultGroupList)) {
104
- let filteredGroupSelect = userDefaultGroupList.filter((group) => group.name === selection);
105
- yield updateDefaultGroupPref(filteredGroupSelect[0].groupNum);
106
- setOriginalDefaultGroup(filteredGroupSelect[0].name);
107
- }
108
+ const onDefaultGroupSelect = (event, selection) => __awaiter(this, void 0, void 0, function* () {
109
+ if (selection === UNGROUPED_CASE_LABEL) {
110
+ yield updateDefaultGroupPref(null);
111
+ return;
108
112
  }
109
- catch (error) {
110
- console.log(error);
113
+ const selectedGroup = groupList.find((group) => group.name === selection);
114
+ if (selectedGroup) {
115
+ yield updateDefaultGroupPref(selectedGroup.groupNum);
111
116
  }
112
117
  });
113
118
  useEffect(() => {
@@ -125,23 +130,32 @@ export function PreferencesCaseCreate(props) {
125
130
  // eslint-disable-next-line react-hooks/exhaustive-deps
126
131
  }, [caseLanguages, caseGroups, dispatchToGlobalMetadataReducer, loggedInUserJwtToken]);
127
132
  useEffect(() => {
128
- grabDefaultGroupList(loggedInUserRights.data.getSSOUsername());
129
- // eslint-disable-next-line react-hooks/exhaustive-deps
130
- }, [loggedInUserRights, caseGroups]);
131
- useEffect(() => {
132
- if (location.pathname !== '/manage/preferences') {
133
+ if (loggedInUser.isFetching)
133
134
  return;
135
+ setOriginalDefaultGroup(resolveDefaultGroupLabel(defaultCaseGroupId, groupList));
136
+ }, [defaultCaseGroupId, groupList, loggedInUser.isFetching]);
137
+ useEffect(() => {
138
+ if (haventLoadedMetadata(caseLanguages)) {
139
+ fetchLanguageMetadata(dispatchToGlobalMetadataReducer, apolloClient);
134
140
  }
135
- grabDefaultGroupList(loggedInUserRights.data.getSSOUsername());
136
141
  // eslint-disable-next-line react-hooks/exhaustive-deps
137
- }, [location.pathname]);
142
+ }, [caseLanguages, apolloClient]);
138
143
  useEffect(() => {
139
- if (haventLoadedMetadata(caseLanguages)) {
140
- fetchLanguageMetadata(dispatchToGlobalMetadataReducer);
144
+ var _a;
145
+ if (!salesforceAccountId || loggedInUser.isFetching || !contactId)
146
+ return;
147
+ if (hasFetchedCaseGroups.current)
148
+ return;
149
+ hasFetchedCaseGroups.current = true;
150
+ if ((_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.isInternal) {
151
+ fetchCaseGroupsForAccount(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
152
+ }
153
+ else {
154
+ fetchCaseGroupsForSSO(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
141
155
  }
142
156
  // eslint-disable-next-line react-hooks/exhaustive-deps
143
- }, [caseLanguages]);
144
- return (React.createElement(Card, { className: "preference-card" },
157
+ }, [salesforceAccountId, loggedInUser.isFetching, contactId, defaultCaseGroupId]);
158
+ return (React.createElement(Card, { variant: "secondary", className: "preference-card" },
145
159
  React.createElement(CardHeader, null,
146
160
  React.createElement("h3", null,
147
161
  React.createElement(Trans, null, "Case create"))),
@@ -152,5 +166,5 @@ export function PreferencesCaseCreate(props) {
152
166
  React.createElement("p", { className: "form-instructions" },
153
167
  React.createElement(Trans, null, "Preferred language will impact future cases, not existing ones."))),
154
168
  React.createElement("div", { className: "form-group" },
155
- React.createElement(PreferenceSelect, { label: "Default group", id: defaultGroupTitleId, onSelect: onDefaultGroupSelect, selections: originalDefaultGroup }, (userDefaultGroupList ? userDefaultGroupList : []).map((option, index) => (React.createElement(SelectOption, { key: index, value: option.name })))))))));
169
+ React.createElement(PreferenceSelect, { label: "Default group", id: defaultGroupTitleId, onSelect: onDefaultGroupSelect, selections: originalDefaultGroup }, [UNGROUPED_CASE_LABEL, ...groupList.map((group) => group.name)].map((name, index) => (React.createElement(SelectOption, { key: index, value: name })))))))));
156
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesCaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseSearch.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,UAAU,MAAM;CAAG;AAEnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA6GlD"}
1
+ {"version":3,"file":"PreferencesCaseSearch.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseSearch.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAM/D,UAAU,MAAM;CAAG;AAEnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA6GlD"}
@@ -7,8 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { Card, CardBody, CardHeader } from '@patternfly/react-core';
11
- import { SelectOption } from '@patternfly/react-core/deprecated';
10
+ import { Card, CardBody, CardHeader, SelectOption } from '@patternfly/react-core';
12
11
  import { ToastNotification } from '@rh-support/components';
13
12
  import { GlobalMetadataStateContext, UserPreferencesKeys } from '@rh-support/react-context';
14
13
  import find from 'lodash/find';
@@ -56,7 +55,7 @@ export function PreferencesCaseSearch(props) {
56
55
  useEffect(() => {
57
56
  userOriginalSavedSearch();
58
57
  });
59
- const onSelect = (event, selection, isPlaceholder) => __awaiter(this, void 0, void 0, function* () {
58
+ const onSelect = (event, selection) => __awaiter(this, void 0, void 0, function* () {
60
59
  if (selection !== restoreLatestText) {
61
60
  try {
62
61
  yield updateAutoRestoreSavedSearchPreference(selection);
@@ -86,7 +85,7 @@ export function PreferencesCaseSearch(props) {
86
85
  return emptyPlaceHolderList;
87
86
  }; // we are now adding "restore last" as the last of the array and "select a saved search" as the first option.
88
87
  const titleId = 'auto-restore-preference-dropdown';
89
- return (React.createElement(Card, { className: "preference-card" },
88
+ return (React.createElement(Card, { variant: "secondary", className: "preference-card" },
90
89
  React.createElement(CardHeader, null,
91
90
  React.createElement("h3", null,
92
91
  React.createElement(Trans, null, "Case search"))),
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesCaseView.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseView.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;CAAG;AAEnB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAqShD"}
1
+ {"version":3,"file":"PreferencesCaseView.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseView.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;CAAG;AAEnB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBA0OhD"}