@rh-support/manage 1.0.30 → 1.0.32
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.
- package/lib/esm/ManageTab.d.ts.map +1 -1
- package/lib/esm/ManageTab.js +3 -2
- package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.js +24 -11
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.js +4 -4
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.d.ts +3 -0
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.js +9 -23
- package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.js +45 -30
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.js +49 -49
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManageTab.d.ts","sourceRoot":"","sources":["../../src/ManageTab.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ManageTab.d.ts","sourceRoot":"","sources":["../../src/ManageTab.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,UAAU,MAAM;IACZ,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,eAkBtC"}
|
package/lib/esm/ManageTab.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ErrorBoundary } from '@rh-support/components';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { Trans } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
export function ManageTab(props) {
|
|
5
5
|
const tab = props.tab;
|
|
6
|
+
const { t } = useTranslation();
|
|
6
7
|
return (React.createElement(React.Fragment, null,
|
|
7
8
|
React.createElement("pfe-tab", { role: "heading", slot: "tab", "data-tracking-id": tab['data-tracking-id'], onClick: tab.onClick },
|
|
8
9
|
React.createElement(Trans, null, tab.title)),
|
|
9
10
|
React.createElement("pfe-tab-panel", { role: "region", slot: "panel" },
|
|
10
|
-
React.createElement(ErrorBoundary, { isPageLevelError: true }, tab.component))));
|
|
11
|
+
React.createElement(ErrorBoundary, { errorMsgInfo: t('There was an error loading manage tab. Please try refreshing the page.'), isPageLevelError: true }, tab.component))));
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddEditBookmarkModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAStD,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uBAAuB,EAAE,SAAS,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,UAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"AddEditBookmarkModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAStD,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uBAAuB,EAAE,SAAS,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,UAAW,MAAM,gBA2IjD,CAAC"}
|
|
@@ -10,6 +10,14 @@ export const AddEditBookmarkModal = (props) => {
|
|
|
10
10
|
const [localSelectedBookmarks, setLocalSelectedBookmarks] = useState([]);
|
|
11
11
|
const [isInValid, setIsInValid] = useState(false);
|
|
12
12
|
const [saveButtonIsClicked, setSaveButtonIsClicked] = useState(false);
|
|
13
|
+
const [isPresentInGroups, setIsPresentInGroups] = useState(false);
|
|
14
|
+
const checkBookmarkPresent = () => {
|
|
15
|
+
if (!(props === null || props === void 0 ? void 0 : props.groups) || !(props === null || props === void 0 ? void 0 : props.selectedAccounts[0])) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const firstSelectedGroup = props.selectedAccounts[0].bookmarkGroupName;
|
|
19
|
+
return props.groups.some((b) => b === selectedGroup && selectedGroup !== firstSelectedGroup);
|
|
20
|
+
};
|
|
13
21
|
// only check if save button has been clicked once
|
|
14
22
|
const checkIsInvalid = (group, selectedAccounts) => {
|
|
15
23
|
const isInvalid = isEmpty(group === null || group === void 0 ? void 0 : group.trim()) || selectedAccounts.length === 0;
|
|
@@ -17,28 +25,34 @@ export const AddEditBookmarkModal = (props) => {
|
|
|
17
25
|
};
|
|
18
26
|
const resetModal = () => {
|
|
19
27
|
setIsInValid(false);
|
|
28
|
+
setIsPresentInGroups(false);
|
|
20
29
|
setSaveButtonIsClicked(false);
|
|
21
30
|
};
|
|
22
31
|
const save = () => {
|
|
23
32
|
setSaveButtonIsClicked(true);
|
|
24
|
-
|
|
33
|
+
let isInvalid = isEmpty(selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.trim()) || localSelectedBookmarks.length === 0;
|
|
34
|
+
//check if there is already a bookmark with this name
|
|
35
|
+
if (checkBookmarkPresent()) {
|
|
36
|
+
isInvalid = true;
|
|
37
|
+
setIsPresentInGroups(true);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
setIsPresentInGroups(false);
|
|
41
|
+
}
|
|
42
|
+
if (isInvalid) {
|
|
25
43
|
setIsInValid(true);
|
|
26
44
|
return;
|
|
27
45
|
}
|
|
28
46
|
resetModal();
|
|
29
47
|
props.onSave(localSelectedBookmarks, selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.trim());
|
|
30
48
|
};
|
|
31
|
-
const remove = () => {
|
|
32
|
-
props.onRemove(selectedGroup);
|
|
33
|
-
resetModal();
|
|
34
|
-
props.onClose();
|
|
35
|
-
};
|
|
36
49
|
const close = () => {
|
|
37
50
|
resetModal();
|
|
38
51
|
props.onClose();
|
|
39
52
|
};
|
|
40
53
|
const onGroupInputBoxChanged = (group) => {
|
|
41
54
|
setSelectedGroup(group);
|
|
55
|
+
setIsPresentInGroups(false);
|
|
42
56
|
saveButtonIsClicked && checkIsInvalid(group, localSelectedBookmarks);
|
|
43
57
|
};
|
|
44
58
|
const onBookMarkAccountSelected = (selected) => {
|
|
@@ -56,19 +70,18 @@ export const AddEditBookmarkModal = (props) => {
|
|
|
56
70
|
isEqual(props.selectedAccounts.map((a) => a.accountNumber).sort(), localSelectedBookmarks.map((a) => a.accountNumber).sort()) &&
|
|
57
71
|
selectedGroup === ((_a = props.selectedAccounts[0]) === null || _a === void 0 ? void 0 : _a.bookmarkGroupName));
|
|
58
72
|
};
|
|
59
|
-
return (React.createElement(Modal, { id: "Add-edit-bookmark-modal", className: "pf-modal-overflow-visible", title: props.title, "aria-describedby": "Add-edit-bookmark-modal", isOpen: props.isOpen, onClose:
|
|
73
|
+
return (React.createElement(Modal, { id: "Add-edit-bookmark-modal", className: "pf-modal-overflow-visible", title: props.title, "aria-describedby": "Add-edit-bookmark-modal", isOpen: props.isOpen, onClose: close, showClose: true, onEscapePress: props.onClose, variant: ModalVariant.medium, actions: [
|
|
60
74
|
React.createElement(Button, { key: "save", variant: ButtonVariant.primary, onClick: save, isDisabled: isInValid || isNothingIsChangedOnEditMode() },
|
|
61
75
|
React.createElement(Trans, null, "Save")),
|
|
62
76
|
React.createElement(Button, { key: "cancel", variant: props.addMode ? ButtonVariant.link : ButtonVariant.secondary, onClick: close },
|
|
63
77
|
React.createElement(Trans, null, "Cancel")),
|
|
64
|
-
!props.addMode && (React.createElement(Button, { key: "remove", variant: ButtonVariant.link, onClick: remove, isDisabled: !props.groups.includes(selectedGroup), style: props.groups.includes(selectedGroup) ? { color: '#a30000' } : {} },
|
|
65
|
-
React.createElement(Trans, null, "Remove"))),
|
|
66
78
|
] },
|
|
67
79
|
React.createElement("div", null,
|
|
68
80
|
React.createElement("div", { className: "pf-u-mb-lg" },
|
|
81
|
+
React.createElement(BookmarkGroupSelector, { selectedGroup: selectedGroup, groups: props.groups, onGroupInputBoxChanged: onGroupInputBoxChanged, isInValid: isInValid && (isPresentInGroups || isEmpty(selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.trim())), setIsInValid: setIsInValid, isPresentInGroups: isPresentInGroups })),
|
|
82
|
+
React.createElement("div", null,
|
|
69
83
|
React.createElement("label", { id: "add-bookmark-account-on-add-modal" },
|
|
70
84
|
React.createElement(Trans, null, "Account(s)"),
|
|
71
85
|
React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")),
|
|
72
|
-
React.createElement(BookmarkAccountSelector, { defaultSelected: props.selectedAccounts, labelId: "add-bookmark-account-on-add-modal", bookmarkedGroupAccounts: props.bookmarkedGroupAccounts, onBookMarkAccountSelected: onBookMarkAccountSelected, addMode: props.addMode, isInValid: isInValid && isEmpty(localSelectedBookmarks) }))
|
|
73
|
-
React.createElement(BookmarkGroupSelector, { selectedGroup: selectedGroup, groups: props.groups, onGroupInputBoxChanged: onGroupInputBoxChanged, isInValid: isInValid && isEmpty(selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.trim()) }))));
|
|
86
|
+
React.createElement(BookmarkAccountSelector, { defaultSelected: props.selectedAccounts, labelId: "add-bookmark-account-on-add-modal", bookmarkedGroupAccounts: props.bookmarkedGroupAccounts, onBookMarkAccountSelected: onBookMarkAccountSelected, addMode: props.addMode, isInValid: isInValid && isEmpty(localSelectedBookmarks) })))));
|
|
74
87
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarkAccountSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAUtD,UAAU,MAAM;IACZ,uBAAuB,EAAE,SAAS,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BookmarkAccountSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAUtD,UAAU,MAAM;IACZ,uBAAuB,EAAE,SAAS,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,eAwPpD;yBAxPe,uBAAuB"}
|
|
@@ -103,16 +103,16 @@ export function BookmarkAccountSelector(props) {
|
|
|
103
103
|
})
|
|
104
104
|
.map((a) => a.accountNumber)) ||
|
|
105
105
|
[];
|
|
106
|
-
const
|
|
106
|
+
const removeAccountLabel = (removedAccount) => {
|
|
107
107
|
const updatedSelectedAccounts = remove(selected, (account) => account.accountNumber !== removedAccount.accountNumber);
|
|
108
108
|
setSelected(updatedSelectedAccounts);
|
|
109
109
|
props.onBookMarkAccountSelected(updatedSelectedAccounts);
|
|
110
110
|
};
|
|
111
111
|
const labelGroupComponent = () => {
|
|
112
|
-
return (React.createElement(LabelGroup, { numLabels: 2 }, (selected || []).map((
|
|
113
|
-
|
|
112
|
+
return (React.createElement(LabelGroup, { numLabels: 2 }, (selected || []).map((currentLabel) => (React.createElement(Label, { key: currentLabel.accountNumber, onClose: () => removeAccountLabel(currentLabel), isTruncated: false, color: "cyan" },
|
|
113
|
+
currentLabel.name,
|
|
114
114
|
" (",
|
|
115
|
-
|
|
115
|
+
currentLabel.accountNumber,
|
|
116
116
|
")")))));
|
|
117
117
|
};
|
|
118
118
|
useEffect(() => {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
interface IProps {
|
|
2
3
|
groups: string[];
|
|
3
4
|
onGroupInputBoxChanged: (group: string) => void;
|
|
4
5
|
selectedGroup: string;
|
|
5
6
|
isInValid: boolean;
|
|
7
|
+
setIsInValid: React.Dispatch<React.SetStateAction<boolean>>;
|
|
8
|
+
isPresentInGroups: boolean;
|
|
6
9
|
}
|
|
7
10
|
declare const BookmarkGroupSelector: (props: IProps) => JSX.Element;
|
|
8
11
|
export { BookmarkGroupSelector };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarkGroupSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BookmarkGroupSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,UAAU,MAAM;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,iBAAiB,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,qBAAqB,UAAW,MAAM,gBAkD3C,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,27 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Form, FormGroup, TextInput } from '@patternfly/react-core';
|
|
2
2
|
import React, { useEffect, useState } from 'react';
|
|
3
3
|
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
const BookmarkGroupSelector = (props) => {
|
|
5
5
|
const { t } = useTranslation();
|
|
6
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
7
6
|
const [validated, setValidated] = useState('default');
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
const onSelect = (event, selection, isPlaceholder) => {
|
|
12
|
-
if (isPlaceholder)
|
|
13
|
-
clearSelection();
|
|
14
|
-
else {
|
|
15
|
-
setIsOpen(false);
|
|
16
|
-
props.onGroupInputBoxChanged(selection);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const onCreateOption = (newValue) => {
|
|
20
|
-
props.onGroupInputBoxChanged(newValue);
|
|
21
|
-
};
|
|
22
|
-
const clearSelection = () => {
|
|
23
|
-
setIsOpen(false);
|
|
24
|
-
props.onGroupInputBoxChanged('');
|
|
7
|
+
const onInputSave = (value) => {
|
|
8
|
+
props.onGroupInputBoxChanged(value);
|
|
25
9
|
};
|
|
26
10
|
useEffect(() => {
|
|
27
11
|
if (props.isInValid) {
|
|
@@ -31,13 +15,15 @@ const BookmarkGroupSelector = (props) => {
|
|
|
31
15
|
setValidated('default');
|
|
32
16
|
}
|
|
33
17
|
}, [props.isInValid]);
|
|
34
|
-
const titleId = 'group-name-
|
|
18
|
+
const titleId = 'group-name-input';
|
|
35
19
|
return (React.createElement(React.Fragment, null,
|
|
36
20
|
React.createElement("label", { id: titleId },
|
|
37
21
|
React.createElement(Trans, null, "Bookmark name"),
|
|
38
22
|
React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")),
|
|
39
|
-
React.createElement(
|
|
40
|
-
|
|
41
|
-
|
|
23
|
+
React.createElement(Form, null,
|
|
24
|
+
React.createElement(FormGroup, { helperTextInvalid: props.isPresentInGroups
|
|
25
|
+
? t('A bookmark with this name already exists')
|
|
26
|
+
: t('Add a name to your bookmark'), validated: validated },
|
|
27
|
+
React.createElement(TextInput, { value: props.selectedGroup, onChange: onInputSave, placeholder: t('Enter a unique name for your bookmark'), "aria-invalid": props.isInValid, validated: validated, selected: false, id: "bookmark-group-input", width: 200 })))));
|
|
42
28
|
};
|
|
43
29
|
export { BookmarkGroupSelector };
|
package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManageGroupedBookmarkedAccountsTab.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ManageGroupedBookmarkedAccountsTab.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.tsx"],"names":[],"mappings":"AA6CA,UAAU,MAAM;IACZ,yBAAyB,EAAE,OAAO,CAAC;CACtC;AAED,wBAAgB,kCAAkC,CAAC,EAAE,yBAAyB,EAAE,EAAE,MAAM,eA4YvF"}
|
package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.js
CHANGED
|
@@ -7,7 +7,9 @@ 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 { AlertVariant, Button, ButtonVariant, Label, LabelGroup, Popover, PopoverPosition, SearchInput, } from '@patternfly/react-core';
|
|
10
|
+
import { ActionList, ActionListItem, AlertVariant, Button, ButtonVariant, Label, LabelGroup, Popover, PopoverPosition, SearchInput, } from '@patternfly/react-core';
|
|
11
|
+
import PencilAltIcon from '@patternfly/react-icons/dist/esm/icons/pencil-alt-icon';
|
|
12
|
+
import TrashIcon from '@patternfly/react-icons/dist/esm/icons/trash-icon';
|
|
11
13
|
import { defaultTableSortMethod, ErrorBoundary, ToastNotification, useConfirmation, } from '@rh-support/components';
|
|
12
14
|
import { addEditbookmarks, getBookmarkGroups, removeGroupedBookmarks, removeWholeGroup, useGlobalDispatchContext, useGlobalStateContext, useGroupedBookmarkApiCalls, } from '@rh-support/react-context';
|
|
13
15
|
import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
@@ -15,6 +17,7 @@ import { promiseReflection } from '@rh-support/utils';
|
|
|
15
17
|
import differenceBy from 'lodash/differenceBy';
|
|
16
18
|
import groupBy from 'lodash/groupBy';
|
|
17
19
|
import isEmpty from 'lodash/isEmpty';
|
|
20
|
+
import isUndefined from 'lodash/isUndefined';
|
|
18
21
|
import uniq from 'lodash/uniq';
|
|
19
22
|
import React, { useRef, useState } from 'react';
|
|
20
23
|
import { Trans, useTranslation } from 'react-i18next';
|
|
@@ -94,7 +97,7 @@ export function ManageGroupedBookmarkedAccountsTab({ canManageBookmarkAccounts }
|
|
|
94
97
|
});
|
|
95
98
|
// remove already added accounts from selected accounts
|
|
96
99
|
const accounts = selectedAccounts.filter((a) => !alreadyAdded.includes(a.accountNumber));
|
|
97
|
-
if (accounts
|
|
100
|
+
if (isEmpty(accounts) && isEmpty(accountsRemovedFromGroup)) {
|
|
98
101
|
// clear the account selector inputbox
|
|
99
102
|
if (isInAddMode) {
|
|
100
103
|
setLocalSelectedAccounts([]);
|
|
@@ -104,15 +107,29 @@ export function ManageGroupedBookmarkedAccountsTab({ canManageBookmarkAccounts }
|
|
|
104
107
|
return;
|
|
105
108
|
}
|
|
106
109
|
try {
|
|
107
|
-
if (group === selectedGroupOnEdit) {
|
|
108
|
-
accountsRemovedFromGroup.map((account) => __awaiter(this, void 0, void 0, function* () { return yield apiCalls.removeAccountApiCalls(account); }));
|
|
109
|
-
}
|
|
110
|
-
// add bookmarks
|
|
111
110
|
let response = undefined;
|
|
112
|
-
if (
|
|
111
|
+
if (isInAddMode) {
|
|
113
112
|
response = yield apiCalls.addBookmarksApiCall(accounts, group);
|
|
114
113
|
}
|
|
115
|
-
|
|
114
|
+
else {
|
|
115
|
+
if (!isEmpty(accountsRemovedFromGroup)) {
|
|
116
|
+
yield Promise.all(accountsRemovedFromGroup.map((account) => apiCalls.removeAccountApiCalls(account)));
|
|
117
|
+
}
|
|
118
|
+
const rootBookmarkId = allGroups[selectedGroupOnEdit][0].rootBookmarkId;
|
|
119
|
+
// if we are renaming bookmark then call edit bookmark api
|
|
120
|
+
if (group !== selectedGroupOnEdit) {
|
|
121
|
+
// already existing bookmark accounts are deleted and new bookmark accounts are generated for this group
|
|
122
|
+
response = yield apiCalls.editBookmarkApiCall(selectedAccounts, group, rootBookmarkId);
|
|
123
|
+
selectedAccounts.forEach((a) => {
|
|
124
|
+
if (!isUndefined(a.bookmarkId))
|
|
125
|
+
accountsRemovedFromGroup.push(a);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else if (!isEmpty(accounts)) {
|
|
129
|
+
response = yield apiCalls.addBookmarksApiCall(accounts, group);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
addEditbookmarks(dispatchGlobalContext, bookmarkedGroupAccounts.data, response, accounts, group, accountsRemovedFromGroup);
|
|
116
133
|
// clear the account selector inputbox
|
|
117
134
|
clearRef.current();
|
|
118
135
|
ToastNotification.addSuccessMessage(t(`Account has been successfully updated`));
|
|
@@ -194,7 +211,7 @@ export function ManageGroupedBookmarkedAccountsTab({ canManageBookmarkAccounts }
|
|
|
194
211
|
sortable: true,
|
|
195
212
|
id: 'bookmark-group-name',
|
|
196
213
|
title: t('Bookmark name'),
|
|
197
|
-
cellWidth:
|
|
214
|
+
cellWidth: 20,
|
|
198
215
|
sortMethod: (a, b) => defaultTableSortMethod(a.toLowerCase(), b.toLowerCase()),
|
|
199
216
|
},
|
|
200
217
|
{
|
|
@@ -208,23 +225,20 @@ export function ManageGroupedBookmarkedAccountsTab({ canManageBookmarkAccounts }
|
|
|
208
225
|
account.accountNumber,
|
|
209
226
|
")"))))),
|
|
210
227
|
},
|
|
228
|
+
{
|
|
229
|
+
id: 'bookmark-actions',
|
|
230
|
+
title: '',
|
|
231
|
+
sortable: false,
|
|
232
|
+
cellWidth: 10,
|
|
233
|
+
cell: (group) => (React.createElement(ActionList, { isIconList: true },
|
|
234
|
+
React.createElement(ActionListItem, null,
|
|
235
|
+
React.createElement(Button, { variant: "plain", onClick: () => onOpenEditGroupOpenModal(group) },
|
|
236
|
+
React.createElement(PencilAltIcon, null))),
|
|
237
|
+
React.createElement(ActionListItem, null,
|
|
238
|
+
React.createElement(Button, { variant: "plain", onClick: () => removeGroup(group) },
|
|
239
|
+
React.createElement(TrashIcon, null))))),
|
|
240
|
+
},
|
|
211
241
|
];
|
|
212
|
-
const actionResolver = (rowData) => {
|
|
213
|
-
//@ts-ignore
|
|
214
|
-
const group = (rowData === null || rowData === void 0 ? void 0 : rowData.cells[0]) || '';
|
|
215
|
-
return [
|
|
216
|
-
{
|
|
217
|
-
title: 'Edit',
|
|
218
|
-
onClick: () => onOpenEditGroupOpenModal(group),
|
|
219
|
-
itemKey: 'edit-bookmaked-group',
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
title: 'Remove',
|
|
223
|
-
onClick: () => removeGroup(group),
|
|
224
|
-
itemKey: 'remove-bookmaked-group',
|
|
225
|
-
},
|
|
226
|
-
];
|
|
227
|
-
};
|
|
228
242
|
const isValid = () => {
|
|
229
243
|
return !localSelectedAccounts || localSelectedAccounts.length === 0;
|
|
230
244
|
};
|
|
@@ -242,24 +256,25 @@ export function ManageGroupedBookmarkedAccountsTab({ canManageBookmarkAccounts }
|
|
|
242
256
|
React.createElement("a", { href: "https://source.redhat.com/communitiesatredhat/applications/integration-community-of-practice/misplaced/lostnfound/bookmarking", target: "_blank", rel: "noopener noreferrer" },
|
|
243
257
|
' ',
|
|
244
258
|
"bookmarks in the customer support tool"))), closeBtnAriaLabel: "Close" },
|
|
245
|
-
React.createElement("i", { "aria-label": "Cluster Id Info", className: "m-l-1 fa fa-
|
|
259
|
+
React.createElement("i", { "aria-label": "Cluster Id Info", className: "m-l-1 fa fa-info-circle" }))))),
|
|
246
260
|
React.createElement("div", { className: "toolbar" },
|
|
247
261
|
React.createElement("form", { className: "toolbar-left" },
|
|
248
262
|
React.createElement("label", { htmlFor: "bookmark-account-selector" },
|
|
249
|
-
React.createElement(Trans, null, "
|
|
263
|
+
React.createElement(Trans, null, "Search accounts")),
|
|
250
264
|
React.createElement("span", { className: "bookmark-account" },
|
|
251
265
|
React.createElement(BookmarkAccountSelector, { clearRef: clearRef, labelId: "bookmark-account-selector", isDisabled: !loggedInUserRights.data.isInternal() || !canBookmarkAccounts, bookmarkedGroupAccounts: bookmarkedGroupAccounts.data, onBookMarkAccountSelected: onBookMarkAccountSelected, addMode: true, isInValid: false })),
|
|
252
266
|
React.createElement("span", { className: "pf-u-ml-sm" },
|
|
253
267
|
React.createElement(Button, { variant: ButtonVariant.primary, isInline: true, onClick: onOpenAddBookmarkModal, "data-tracking-id": "bookmark-add-button", isDisabled: isValid() || apiCalls.isAddingBookmark },
|
|
254
|
-
React.createElement(Trans, null, "Add")))),
|
|
268
|
+
React.createElement(Trans, null, "Add bookmark")))),
|
|
255
269
|
React.createElement("div", { className: "toolbar-right" },
|
|
256
270
|
React.createElement("label", { htmlFor: "search-bookmark-account-selector" },
|
|
257
271
|
React.createElement(Trans, null, "Filter by")),
|
|
258
272
|
React.createElement(SearchInput, { className: "pf-u-flex-grow-1 pf-c-search-input pf-u-background-color-100", value: searchString, id: "search-bookmark-account-selector", placeholder: t('Search for a bookmark'), "aria-label": t('Filter by searching for a bookmark'), onChange: setSearchString, onClear: () => setSearchString('') }))),
|
|
259
|
-
React.createElement(AddEditBookmarkModal, { selectedAccounts: isInAddMode ? localSelectedAccounts : editGroupSelectedAccounts, groups: groups, isOpen: isUpdateBookmarkModalOpen, onSave: onAddEditBookmarksSave, onClose: closeAddEditBookmarkModal, onRemove: removeGroup, bookmarkedGroupAccounts: bookmarkedGroupAccounts.data, addMode: isInAddMode, title: isInAddMode ? t('
|
|
273
|
+
React.createElement(AddEditBookmarkModal, { selectedAccounts: isInAddMode ? localSelectedAccounts : editGroupSelectedAccounts, groups: groups, isOpen: isUpdateBookmarkModalOpen, onSave: onAddEditBookmarksSave, onClose: closeAddEditBookmarkModal, onRemove: removeGroup, bookmarkedGroupAccounts: bookmarkedGroupAccounts.data, addMode: isInAddMode, title: isInAddMode ? t('Add a bookmark') : t('Edit bookmark') }),
|
|
260
274
|
React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading bookmarked accounts list') } },
|
|
261
275
|
React.createElement(ManageTable, { ariaLabel: t('Table to manage bookmarks'), columns: columns, data: groupNames, sortInfo: { column: 'bookmark-group-name', direction: 'asc' }, errorVariant: AlertVariant.warning, isFetching: bookmarkedGroupAccounts.isFetching ||
|
|
262
276
|
loggedInUser.isFetching ||
|
|
263
277
|
apiCalls.isAddingBookmark ||
|
|
264
|
-
apiCalls.isRemovingBookmark
|
|
278
|
+
apiCalls.isRemovingBookmark ||
|
|
279
|
+
apiCalls.isEditingBookmark, isError: bookmarkedGroupAccounts.isError, errorTitle: t('Bookmarked accounts error'), errorComponent: React.createElement(Trans, null, "Could not get bookmarked accounts"), noResultText: t('There are no results to display. Try adding a bookmark or refining your search') }))));
|
|
265
280
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreferencesCaseCreate.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseCreate.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PreferencesCaseCreate.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseCreate.tsx"],"names":[],"mappings":"AAmBA,UAAU,MAAM;CAAG;AACnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,eA8KlD"}
|
|
@@ -7,11 +7,11 @@ 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';
|
|
10
11
|
import { Card, CardBody, CardHeader, SelectOption } from '@patternfly/react-core';
|
|
11
|
-
import { ToastNotification } from '@rh-support/components';
|
|
12
|
-
import {
|
|
12
|
+
import { ToastNotification, useFetch } from '@rh-support/components';
|
|
13
|
+
import { fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataStateContext, } from '@rh-support/react-context';
|
|
13
14
|
import { haventLoadedMetadata, PreferredLanguages } from '@rh-support/utils';
|
|
14
|
-
import invert from 'lodash/invert';
|
|
15
15
|
import isEmpty from 'lodash/isEmpty';
|
|
16
16
|
import map from 'lodash/map';
|
|
17
17
|
import React, { useContext, useEffect, useState } from 'react';
|
|
@@ -20,9 +20,43 @@ import { useUserPreferences } from '../../../hooks/useUserPreferences';
|
|
|
20
20
|
import { PreferenceSelect } from '../components/PreferenceSelect';
|
|
21
21
|
export function PreferencesCaseCreate(props) {
|
|
22
22
|
const { t } = useTranslation();
|
|
23
|
-
const { globalMetadataState: { caseGroups, caseLanguages, loggedInUserJwtToken }, } = useContext(GlobalMetadataStateContext);
|
|
23
|
+
const { globalMetadataState: { caseGroups, caseLanguages, loggedInUserJwtToken, loggedInUserRights, loggedInUsersAccount, }, } = useContext(GlobalMetadataStateContext);
|
|
24
24
|
const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
|
|
25
25
|
const languageConst = caseLanguages.data;
|
|
26
|
+
const getDefaultGroupFetch = useFetch(publicApi.caseGroups.getCaseGroupsForSSO, {
|
|
27
|
+
propgateErrors: true,
|
|
28
|
+
});
|
|
29
|
+
const toggleDefaultGroupFetch = useFetch(publicApi.caseGroups.toggleDefaultGroup, {
|
|
30
|
+
propgateErrors: true,
|
|
31
|
+
});
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
const grabDefaultGroupList = (ssoUser) => __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
try {
|
|
35
|
+
let list = yield getDefaultGroupFetch.request(ssoUser);
|
|
36
|
+
setUserDefaultGroupList(list);
|
|
37
|
+
let filteredDefaultGroup = (list ? list : []).filter((group) => group.isDefault === true);
|
|
38
|
+
if (!isEmpty(filteredDefaultGroup)) {
|
|
39
|
+
setOriginalDefaultGroup(filteredDefaultGroup[0].name);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
setOriginalDefaultGroup('Ungrouped Case');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.log(error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
grabDefaultGroupList(loggedInUserRights.data.getSSOUsername());
|
|
50
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
|
+
}, [loggedInUserRights, caseGroups]);
|
|
52
|
+
const updateDefaultGroupPref = (groupNum) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
try {
|
|
54
|
+
yield toggleDefaultGroupFetch.request(groupNum, loggedInUserRights.data.getSSOUsername(), true, loggedInUsersAccount.data.secureSupport);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.log(error);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
26
60
|
useEffect(() => {
|
|
27
61
|
if (haventLoadedMetadata(caseLanguages)) {
|
|
28
62
|
fetchLanguageMetadata(dispatchToGlobalMetadataReducer);
|
|
@@ -35,9 +69,8 @@ export function PreferencesCaseCreate(props) {
|
|
|
35
69
|
}));
|
|
36
70
|
const [originalPreferredLanguage, setOriginalPreferredLanguage] = useState('');
|
|
37
71
|
const [originalDefaultGroup, setOriginalDefaultGroup] = useState('');
|
|
38
|
-
const [
|
|
39
|
-
const
|
|
40
|
-
const { getPreferredLanguage, updatePreferredLanguage, updateDefaultGroup, getDefaultGroup } = useUserPreferences();
|
|
72
|
+
const [userDefaultGroupList, setUserDefaultGroupList] = useState();
|
|
73
|
+
const { getPreferredLanguage, updatePreferredLanguage } = useUserPreferences();
|
|
41
74
|
const preferredLangTitleId = 'preferred-language-select';
|
|
42
75
|
const defaultGroupTitleId = 'default-group-select';
|
|
43
76
|
const getLanguageKey = (selection) => {
|
|
@@ -60,53 +93,21 @@ export function PreferencesCaseCreate(props) {
|
|
|
60
93
|
}
|
|
61
94
|
});
|
|
62
95
|
const onDefaultGroupSelect = (event, selection, isPlaceholder) => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
const selectionKey = invert(groupDictionary)[selection];
|
|
64
96
|
try {
|
|
65
|
-
|
|
66
|
-
|
|
97
|
+
if (selection === 'Ungrouped Case') {
|
|
98
|
+
updateDefaultGroupPref('-1');
|
|
99
|
+
}
|
|
100
|
+
if (!isEmpty(userDefaultGroupList)) {
|
|
101
|
+
let filteredGroupSelect = userDefaultGroupList.filter((group) => group.name === selection);
|
|
102
|
+
yield updateDefaultGroupPref(filteredGroupSelect[0].groupNum);
|
|
103
|
+
setOriginalDefaultGroup(filteredGroupSelect[0].name);
|
|
104
|
+
}
|
|
67
105
|
}
|
|
68
106
|
catch (error) {
|
|
69
107
|
console.log(error);
|
|
70
108
|
}
|
|
71
109
|
});
|
|
72
|
-
const createCaseGroupStruct = (caseGroups) => {
|
|
73
|
-
const defaultGroupDictionary = {};
|
|
74
|
-
for (let i = 0; i < caseGroups.data.length; i++) {
|
|
75
|
-
defaultGroupDictionary[caseGroups.data[i].groupNum] = caseGroups.data[i].name;
|
|
76
|
-
}
|
|
77
|
-
return defaultGroupDictionary;
|
|
78
|
-
};
|
|
79
|
-
//Set user default group after group obj built
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
const userOriginalDefaultGroup = () => __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
try {
|
|
83
|
-
const retrievedGroupId = yield getDefaultGroup();
|
|
84
|
-
setOriginalDefaultGroup(groupDictionary[retrievedGroupId]);
|
|
85
|
-
}
|
|
86
|
-
catch (e) {
|
|
87
|
-
ToastNotification.addWarningMessage(t('Failed to fetch original preference'));
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
userOriginalDefaultGroup();
|
|
91
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
92
|
-
}, [groupDictionary]);
|
|
93
|
-
// used to build the groups object and fetch pref language
|
|
94
110
|
useEffect(() => {
|
|
95
|
-
const refreshParsedGroups = () => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
-
var _a;
|
|
97
|
-
if (haventLoadedMetadata(caseGroups, (data) => data === undefined)) {
|
|
98
|
-
yield fetchCaseGroupsForSSO(dispatchToGlobalMetadataReducer, loggedInUserJwtToken.username);
|
|
99
|
-
}
|
|
100
|
-
if (!isEmpty(caseGroups) && ((_a = caseGroups === null || caseGroups === void 0 ? void 0 : caseGroups.data) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
101
|
-
let updatedDictionary = createCaseGroupStruct(caseGroups);
|
|
102
|
-
setGroupDictionary(updatedDictionary);
|
|
103
|
-
const parsedDefaultGroupNames = [];
|
|
104
|
-
for (let groupId in updatedDictionary) {
|
|
105
|
-
parsedDefaultGroupNames.push(updatedDictionary[groupId]);
|
|
106
|
-
}
|
|
107
|
-
setUserDefaultGroupList(parsedDefaultGroupNames);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
111
|
const userOriginalPreferredLanguage = () => __awaiter(this, void 0, void 0, function* () {
|
|
111
112
|
try {
|
|
112
113
|
const retrievedLanguage = yield getPreferredLanguage();
|
|
@@ -117,7 +118,6 @@ export function PreferencesCaseCreate(props) {
|
|
|
117
118
|
ToastNotification.addWarningMessage(t('Failed to fetch original preference'));
|
|
118
119
|
}
|
|
119
120
|
});
|
|
120
|
-
refreshParsedGroups();
|
|
121
121
|
userOriginalPreferredLanguage();
|
|
122
122
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
123
123
|
}, [caseLanguages, caseGroups, dispatchToGlobalMetadataReducer, loggedInUserJwtToken]);
|
|
@@ -132,5 +132,5 @@ export function PreferencesCaseCreate(props) {
|
|
|
132
132
|
React.createElement("p", { className: "form-instructions" },
|
|
133
133
|
React.createElement(Trans, null, "Preferred language will impact future cases, not existing ones."))),
|
|
134
134
|
React.createElement("div", { className: "form-group" },
|
|
135
|
-
React.createElement(PreferenceSelect, { label: "Default group", id: defaultGroupTitleId, onSelect: onDefaultGroupSelect, selections: originalDefaultGroup }, userDefaultGroupList.map((option, index) => (React.createElement(SelectOption, { key: index, value: option })))))))));
|
|
135
|
+
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 })))))))));
|
|
136
136
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/manage",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.32",
|
|
4
4
|
"description": "Customer Support Manage App",
|
|
5
5
|
"author": "Jordan Eudy <jeudy100@gmail.com>",
|
|
6
6
|
"homepage": "",
|
|
@@ -94,9 +94,9 @@
|
|
|
94
94
|
"@patternfly/pfe-tabs": "1.12.3",
|
|
95
95
|
"@patternfly/react-core": "4.264.0",
|
|
96
96
|
"@patternfly/react-table": "4.111.33",
|
|
97
|
-
"@rh-support/components": "1.2.
|
|
97
|
+
"@rh-support/components": "1.2.16",
|
|
98
98
|
"@rh-support/configs": "1.0.0",
|
|
99
|
-
"@rh-support/react-context": "1.0.
|
|
99
|
+
"@rh-support/react-context": "1.0.23",
|
|
100
100
|
"@rh-support/types": "0.2.0",
|
|
101
101
|
"@rh-support/user-permissions": "1.0.11",
|
|
102
102
|
"@rh-support/utils": "1.0.9",
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"react-i18next": ">=10.11.0",
|
|
110
110
|
"react-router-dom": ">=5.1.2"
|
|
111
111
|
},
|
|
112
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "af45effefff4d9434a171992428c249f80fc84ce"
|
|
113
113
|
}
|