@rh-support/manage 2.4.10-beta.6 → 2.5.1
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/README.md +2 -0
- package/lib/esm/Manage.d.ts +2 -3
- package/lib/esm/Manage.d.ts.map +1 -1
- package/lib/esm/Manage.js +4 -10
- package/lib/esm/ManageTabs.d.ts +3 -1
- package/lib/esm/ManageTabs.d.ts.map +1 -1
- package/lib/esm/ManageTabs.js +54 -51
- package/lib/esm/Routes.d.ts +2 -0
- package/lib/esm/Routes.d.ts.map +1 -1
- package/lib/esm/Routes.js +21 -9
- package/lib/esm/components/Configs/ConfigInLineEdit.d.ts +2 -1
- package/lib/esm/components/Configs/ConfigInLineEdit.d.ts.map +1 -1
- package/lib/esm/components/Configs/ConfigSwitch.d.ts +2 -1
- package/lib/esm/components/Configs/ConfigSwitch.d.ts.map +1 -1
- package/lib/esm/components/Configs/ConfigSwitch.js +1 -1
- package/lib/esm/components/Configs/ConfigsTable.d.ts +2 -1
- package/lib/esm/components/Configs/ConfigsTable.d.ts.map +1 -1
- package/lib/esm/components/Configs/ConfigsTable.js +4 -3
- package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.d.ts +2 -1
- package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.d.ts.map +1 -1
- package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.js +2 -1
- package/lib/esm/components/Groups/GroupSelect/GroupSelect.d.ts +2 -1
- package/lib/esm/components/Groups/GroupSelect/GroupSelect.d.ts.map +1 -1
- package/lib/esm/components/Groups/GroupSelect/GroupSelect.js +23 -11
- package/lib/esm/components/Groups/GroupUserPermissionsSelect/GroupUserPermissionsSelect.d.ts +2 -1
- package/lib/esm/components/Groups/GroupUserPermissionsSelect/GroupUserPermissionsSelect.d.ts.map +1 -1
- package/lib/esm/components/Groups/GroupUserPermissionsSelect/GroupUserPermissionsSelect.js +1 -1
- package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.d.ts +2 -1
- package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.d.ts.map +1 -1
- package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.js +13 -11
- package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.d.ts +2 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/AddEditBookmarkModal.js +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.d.ts +2 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkAccountSelector.js +15 -7
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.d.ts +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/BookmarkGroupSelector.js +8 -5
- package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.d.ts +2 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.d.ts.map +1 -1
- package/lib/esm/components/ManageBookmarkedAccountsTab/ManageGroupedBookmarkedAccountsTab.js +14 -11
- package/lib/esm/components/ManageExpiredContents/ExpiredContentCategory.d.ts +9 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentCategory.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentCategory.js +31 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentHeader.d.ts +3 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentHeader.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentHeader.js +9 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentManagement.d.ts +3 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentManagement.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentManagement.js +13 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentManager.d.ts +3 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentManager.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentManager.js +68 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItem.d.ts +9 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItem.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItem.js +77 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItemView.d.ts +14 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItemView.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/ExpiredContentSingleItemView.js +179 -0
- package/lib/esm/components/ManageExpiredContents/index.d.ts +2 -0
- package/lib/esm/components/ManageExpiredContents/index.d.ts.map +1 -0
- package/lib/esm/components/ManageExpiredContents/index.js +1 -0
- package/lib/esm/components/ManagePartnerships/NonOrgCustomerInfoModal.d.ts +2 -1
- package/lib/esm/components/ManagePartnerships/NonOrgCustomerInfoModal.d.ts.map +1 -1
- package/lib/esm/components/ManagePartnerships/PartnershipsList.d.ts +2 -1
- package/lib/esm/components/ManagePartnerships/PartnershipsList.d.ts.map +1 -1
- package/lib/esm/components/ManagePartnerships/PartnershipsList.js +3 -3
- package/lib/esm/components/ManagePartnerships/PartnershipsTermsModal.d.ts +2 -1
- package/lib/esm/components/ManagePartnerships/PartnershipsTermsModal.d.ts.map +1 -1
- package/lib/esm/components/ManagePartnerships/PartnershipsTermsModal.js +42 -21
- package/lib/esm/components/ManagePartnerships/RequestCollaborationModal.d.ts +2 -1
- package/lib/esm/components/ManagePartnerships/RequestCollaborationModal.d.ts.map +1 -1
- package/lib/esm/components/ManagePartnerships/RequestCollaborationModal.js +15 -13
- package/lib/esm/components/ManagePartnerships/Requests.d.ts +2 -1
- package/lib/esm/components/ManagePartnerships/Requests.d.ts.map +1 -1
- package/lib/esm/components/ManagePartnerships/Requests.js +25 -5
- package/lib/esm/components/ManagePartnerships/index.d.ts +2 -1
- package/lib/esm/components/ManagePartnerships/index.d.ts.map +1 -1
- package/lib/esm/components/ManagePartnerships/index.js +4 -3
- package/lib/esm/components/ManagePreferences/ManagePreferences.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/ManagePreferences.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/ManagePreferences.js +1 -2
- package/lib/esm/components/ManagePreferences/Preferences.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/Preferences.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/PreferencesBody.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/PreferencesBody.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/PreferencesBody.js +6 -2
- package/lib/esm/components/ManagePreferences/PreferencesHeader.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/PreferencesHeader.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/PreferencesHeader.js +1 -1
- package/lib/esm/components/ManagePreferences/components/PreferenceSelect.d.ts +1 -1
- package/lib/esm/components/ManagePreferences/components/PreferenceSelect.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/components/PreferenceSelect.js +5 -3
- package/lib/esm/components/ManagePreferences/components/PreferenceSwitch.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/components/PreferenceSwitch.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/components/PreferenceSwitch.js +1 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesACL.d.ts +3 -0
- package/lib/esm/components/ManagePreferences/sections/PreferencesACL.d.ts.map +1 -0
- package/lib/esm/components/ManagePreferences/sections/PreferencesACL.js +62 -0
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.js +13 -2
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseSearch.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseSearch.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseSearch.js +6 -4
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.d.ts +2 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.d.ts.map +1 -1
- package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.js +12 -11
- package/lib/esm/components/ManageTable/ManageTable.d.ts +1 -1
- package/lib/esm/components/ManageTable/ManageTable.d.ts.map +1 -1
- package/lib/esm/components/ManageTable/ManageTable.js +7 -8
- package/lib/esm/components/ManageTags/TagsManagement.d.ts +3 -0
- package/lib/esm/components/ManageTags/TagsManagement.d.ts.map +1 -0
- package/lib/esm/components/ManageTags/TagsManagement.js +11 -0
- package/lib/esm/components/ManageTags/TagsManager.d.ts +3 -0
- package/lib/esm/components/ManageTags/TagsManager.d.ts.map +1 -0
- package/lib/esm/components/ManageTags/TagsManager.js +261 -0
- package/lib/esm/components/ManageTags/index.d.ts +2 -0
- package/lib/esm/components/ManageTags/index.d.ts.map +1 -0
- package/lib/esm/components/ManageTags/index.js +1 -0
- package/lib/esm/components/NotificationEmails/NotificationEmailsModal.d.ts +2 -1
- package/lib/esm/components/NotificationEmails/NotificationEmailsModal.d.ts.map +1 -1
- package/lib/esm/components/NotificationEmails/NotificationEmailsModal.js +32 -7
- package/lib/esm/components/NotificationEmails/index.d.ts +2 -1
- package/lib/esm/components/NotificationEmails/index.d.ts.map +1 -1
- package/lib/esm/components/NotificationEmails/index.js +4 -4
- package/lib/esm/components/TopContentManagement/CategoryLimit/CategoryLimit.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/CategoryLimit/CategoryLimit.js +3 -2
- package/lib/esm/components/TopContentManagement/CategoryLimit/CategoryLimitGuidelines.js +1 -1
- package/lib/esm/components/TopContentManagement/CategoryLimit/QuestionAnswer.js +1 -1
- package/lib/esm/components/TopContentManagement/ContentUsage/ContentAccordion.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/ContentUsage/ContentAccordion.js +2 -2
- package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetrics.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetrics.js +3 -3
- package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.d.ts +1 -1
- package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.js +3 -3
- package/lib/esm/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.js +4 -4
- package/lib/esm/components/TopContentManagement/NoTopContentFound.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/NoTopContentFound.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/NoTopContentFound.js +14 -15
- package/lib/esm/components/TopContentManagement/TopContent.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContent.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/AddNewCategoryDropDown.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/AddNewCategoryDropDown.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/AddNewCategoryDropDown.js +8 -3
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategory.d.ts +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategory.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategory.js +3 -2
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategoryNew.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentCategoryNew.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentComponent.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentComponent.js +3 -3
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItem.d.ts +6 -2
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItem.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItem.js +178 -59
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentCategoryContent/TopContentSingleItemLink.js +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentEditor.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentEditor.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentEditor.js +60 -16
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestion.d.ts +1 -0
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestion.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestion.js +35 -10
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestionHint.js +3 -3
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestionHintAccept.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentEditor/TopContentSuggestion/TopContentSuggestionHintAccept.js +26 -20
- package/lib/esm/components/TopContentManagement/TopContentHeader.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContentHeader.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentHeader.js +1 -1
- package/lib/esm/components/TopContentManagement/TopContentManagement.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContentManagement.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentManagement.js +4 -3
- package/lib/esm/components/TopContentManagement/TopContentProductVersionSelector.d.ts +2 -1
- package/lib/esm/components/TopContentManagement/TopContentProductVersionSelector.d.ts.map +1 -1
- package/lib/esm/components/TopContentManagement/TopContentProductVersionSelector.js +6 -6
- package/lib/esm/context/ExpiredContentContextProvider.d.ts +8 -0
- package/lib/esm/context/ExpiredContentContextProvider.d.ts.map +1 -0
- package/lib/esm/context/ExpiredContentContextProvider.js +10 -0
- package/lib/esm/context/ManagePartnershipsProvider.d.ts +1 -1
- package/lib/esm/context/ManagePartnershipsProvider.d.ts.map +1 -1
- package/lib/esm/context/TagManagementContextProvider.d.ts +8 -0
- package/lib/esm/context/TagManagementContextProvider.d.ts.map +1 -0
- package/lib/esm/context/TagManagementContextProvider.js +10 -0
- package/lib/esm/context/TopContentProvider.d.ts +1 -1
- package/lib/esm/context/TopContentProvider.d.ts.map +1 -1
- package/lib/esm/context/TopContentProvider.js +1 -0
- package/lib/esm/hooks/useUserPreferences.d.ts +13 -12
- package/lib/esm/hooks/useUserPreferences.d.ts.map +1 -1
- package/lib/esm/hooks/useUserPreferences.js +0 -1
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +1 -0
- package/lib/esm/reducers/ExpiredContentReducer.d.ts +36 -0
- package/lib/esm/reducers/ExpiredContentReducer.d.ts.map +1 -0
- package/lib/esm/reducers/ExpiredContentReducer.js +207 -0
- package/lib/esm/reducers/ManagePartnershipsReducer.d.ts +2 -2
- package/lib/esm/reducers/ManagePartnershipsReducer.d.ts.map +1 -1
- package/lib/esm/reducers/TagManagmentReducer.d.ts +27 -0
- package/lib/esm/reducers/TagManagmentReducer.d.ts.map +1 -0
- package/lib/esm/reducers/TagManagmentReducer.js +144 -0
- package/lib/esm/reducers/TopContentHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/TopContentHelpers.js +4 -4
- package/lib/esm/reducers/TopContentReducer.d.ts +12 -7
- package/lib/esm/reducers/TopContentReducer.d.ts.map +1 -1
- package/lib/esm/reducers/TopContentReducer.js +61 -23
- package/lib/esm/scss/_main.scss +87 -55
- package/lib/esm/scss/_pf-overrides.scss +181 -0
- package/lib/esm/scss/index.scss +7 -7
- package/package.json +42 -42
- package/lib/esm/ManageTab.d.ts +0 -8
- package/lib/esm/ManageTab.d.ts.map +0 -1
- package/lib/esm/ManageTab.js +0 -12
- package/lib/esm/scss/_pf4-overrides.scss +0 -132
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { ActionList, ActionListItem, Bullseye, Button, ButtonVariant, EmptyState, EmptyStateVariant, Flex, FormGroup, FormHelperText, HelperText, HelperTextItem, Modal, Spinner, TextInput, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
|
|
11
|
+
import PencilAltIcon from '@patternfly/react-icons/dist/js/icons/pencil-alt-icon';
|
|
12
|
+
import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
|
|
13
|
+
import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
|
|
14
|
+
import TrashIcon from '@patternfly/react-icons/dist/js/icons/trash-icon';
|
|
15
|
+
import { ErrorBoundary, ToastNotification } from '@rh-support/components';
|
|
16
|
+
import { formatDate } from '@rh-support/utils';
|
|
17
|
+
import { isEmpty, isNull, isUndefined } from 'lodash';
|
|
18
|
+
import React, { useContext, useEffect, useMemo, useState } from 'react';
|
|
19
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
20
|
+
import { TagManagementDispatchContext, TagManagementStateContext } from '../../context/TagManagementContextProvider';
|
|
21
|
+
import { createNewTags, deleteTag, fetchTopContentTags, updateTag } from '../../reducers/TagManagmentReducer';
|
|
22
|
+
import { ManageTable } from '../ManageTable';
|
|
23
|
+
export default function TagsManager() {
|
|
24
|
+
const { t } = useTranslation();
|
|
25
|
+
const [createTagModalOpen, setCreateTagModalOpen] = useState(false);
|
|
26
|
+
const [newTagName, setNewTagName] = useState('');
|
|
27
|
+
const [isCreatingNewTag, setIsCreatingNewTag] = useState(false);
|
|
28
|
+
const [createTagError, setCreateTagError] = useState('');
|
|
29
|
+
const [editTagModalOpen, setEditTagModalOpen] = useState(false);
|
|
30
|
+
const [editTagName, setEditTagName] = useState('');
|
|
31
|
+
const [isEditingTagName, setisEditingTagName] = useState(false);
|
|
32
|
+
const [selectedEditTag, setSelectedEditTag] = useState(null);
|
|
33
|
+
const [editTagError, setEditTagError] = useState('');
|
|
34
|
+
const [selectedDeleteTag, setSelectedDeleteTag] = useState(null);
|
|
35
|
+
const [isDeletingTag, setIsDeletingTag] = useState(false);
|
|
36
|
+
const [deleteTagModalOpen, setDeleteTagModalOpen] = useState(false);
|
|
37
|
+
const [tagSearchTerm, setTagSearchTerm] = useState('');
|
|
38
|
+
const { tagResponse, tags } = useContext(TagManagementStateContext);
|
|
39
|
+
const dispatch = useContext(TagManagementDispatchContext);
|
|
40
|
+
const tagsByIds = useMemo(() => tags.reduce((acc, t) => (Object.assign(Object.assign({}, acc), { [t.id]: t })), {}), [tags]);
|
|
41
|
+
const getCreateTagError = (tagName) => {
|
|
42
|
+
tagName = tagName.trim();
|
|
43
|
+
if (isEmpty(tagName))
|
|
44
|
+
return t('Tag name cannot be empty.');
|
|
45
|
+
const existingTag = tags.find((t) => t.tagName.toLowerCase() === tagName.toLowerCase());
|
|
46
|
+
if (existingTag)
|
|
47
|
+
return t('Tag with this name is already present.');
|
|
48
|
+
return '';
|
|
49
|
+
};
|
|
50
|
+
//filtering tags for user search
|
|
51
|
+
const filteredTagIds = useMemo(() => {
|
|
52
|
+
if (isEmpty(tagSearchTerm))
|
|
53
|
+
return tags.map((t) => t.id);
|
|
54
|
+
const filteredIds = [];
|
|
55
|
+
tags.forEach((t) => {
|
|
56
|
+
if (t.tagName.toLowerCase().includes(tagSearchTerm.toLowerCase())) {
|
|
57
|
+
filteredIds.push(t.id);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return filteredIds;
|
|
61
|
+
}, [tagSearchTerm, tags]);
|
|
62
|
+
const getTopContentTags = () => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
try {
|
|
64
|
+
yield fetchTopContentTags(dispatch);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
ToastNotification.addDangerMessage(t('Error loading tag details'));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
getTopContentTags();
|
|
72
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
73
|
+
}, []);
|
|
74
|
+
const onCreateNewTag = () => __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const errorMsg = getCreateTagError(newTagName);
|
|
76
|
+
if (!isEmpty(errorMsg)) {
|
|
77
|
+
setCreateTagError(errorMsg);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
setIsCreatingNewTag(true);
|
|
82
|
+
yield createNewTags(dispatch, [{ tagName: newTagName.trim(), isActive: true }]);
|
|
83
|
+
setTagSearchTerm('');
|
|
84
|
+
ToastNotification.addSuccessMessage(t('Successfully created tag'));
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
console.log({ err });
|
|
88
|
+
ToastNotification.addDangerMessage(t('Error creating tag'));
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
setIsCreatingNewTag(false);
|
|
92
|
+
onCancelCreateNewTag();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
const onCancelCreateNewTag = () => {
|
|
96
|
+
setCreateTagError('');
|
|
97
|
+
setCreateTagModalOpen(false);
|
|
98
|
+
setNewTagName('');
|
|
99
|
+
};
|
|
100
|
+
const onEditTagClick = (tag) => __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
setEditTagName(tag.tagName);
|
|
102
|
+
setSelectedEditTag(tag);
|
|
103
|
+
setEditTagModalOpen(true);
|
|
104
|
+
});
|
|
105
|
+
const onEditTagConfirm = () => __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
const errorMsg = getCreateTagError(editTagName);
|
|
107
|
+
if (!isEmpty(errorMsg)) {
|
|
108
|
+
setEditTagError(errorMsg);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (isNull(selectedEditTag) || isUndefined(selectedEditTag))
|
|
112
|
+
return;
|
|
113
|
+
try {
|
|
114
|
+
setisEditingTagName(true);
|
|
115
|
+
yield updateTag(dispatch, { id: selectedEditTag.id, tagName: editTagName.trim() }, tags);
|
|
116
|
+
ToastNotification.addSuccessMessage(t('Successfully edited tag'));
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
console.log(err);
|
|
120
|
+
ToastNotification.addDangerMessage(t('Error editing tag'));
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
setisEditingTagName(false);
|
|
124
|
+
onEditCancel();
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
const onEditCancel = () => {
|
|
128
|
+
setEditTagModalOpen(false);
|
|
129
|
+
setSelectedEditTag(null);
|
|
130
|
+
setEditTagName('');
|
|
131
|
+
setEditTagError('');
|
|
132
|
+
};
|
|
133
|
+
const onDeleteTagClick = (tag) => __awaiter(this, void 0, void 0, function* () {
|
|
134
|
+
setDeleteTagModalOpen(true);
|
|
135
|
+
setSelectedDeleteTag(tag);
|
|
136
|
+
});
|
|
137
|
+
const onDeleteTagConfirm = () => __awaiter(this, void 0, void 0, function* () {
|
|
138
|
+
if (isNull(selectedDeleteTag) || isUndefined(selectedDeleteTag))
|
|
139
|
+
return;
|
|
140
|
+
try {
|
|
141
|
+
setIsDeletingTag(true);
|
|
142
|
+
yield deleteTag(dispatch, selectedDeleteTag, { tagResponse, tags });
|
|
143
|
+
ToastNotification.addSuccessMessage(t('Tag deleted successfully'));
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
console.log(err);
|
|
147
|
+
ToastNotification.addDangerMessage(t('Error deleting tag'));
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
setDeleteTagModalOpen(false);
|
|
151
|
+
setIsDeletingTag(false);
|
|
152
|
+
setSelectedDeleteTag(null);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
const onSearchClear = () => {
|
|
156
|
+
setTagSearchTerm('');
|
|
157
|
+
};
|
|
158
|
+
const columns = [
|
|
159
|
+
{
|
|
160
|
+
accessor: (id) => tagsByIds[id].tagName,
|
|
161
|
+
sortable: false,
|
|
162
|
+
id: 'tagname-manage-table',
|
|
163
|
+
title: t('Tag'),
|
|
164
|
+
cellWidth: 20,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: 'article-count-for-tags',
|
|
168
|
+
sortable: false,
|
|
169
|
+
title: t('No of top contents'),
|
|
170
|
+
cellWidth: 20,
|
|
171
|
+
cell: (id) => `${tagsByIds[id].numberOfLinkedContents || 0} articles`,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'tag-created-by',
|
|
175
|
+
sortable: false,
|
|
176
|
+
title: t('Created by'),
|
|
177
|
+
cellWidth: 30,
|
|
178
|
+
cell: (id) => tagsByIds[id].createdBy,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
id: 'tag-modified-date',
|
|
182
|
+
sortable: false,
|
|
183
|
+
title: t('Modified date'),
|
|
184
|
+
cellWidth: 20,
|
|
185
|
+
cell: (id) => formatDate(tagsByIds[id].modifiedDate),
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
id: 'tag-manage-actions',
|
|
189
|
+
title: '',
|
|
190
|
+
sortable: false,
|
|
191
|
+
cellWidth: 10,
|
|
192
|
+
cell: (id) => (React.createElement(ActionList, { isIconList: true },
|
|
193
|
+
React.createElement(ActionListItem, null,
|
|
194
|
+
React.createElement(Button, { variant: "plain", "data-tracking-id": "edit-tag", "aria-label": `edit tag ${tagsByIds[id].tagName}`, onClick: () => onEditTagClick(tagsByIds[id]) },
|
|
195
|
+
React.createElement(PencilAltIcon, null))),
|
|
196
|
+
React.createElement(ActionListItem, null,
|
|
197
|
+
React.createElement(Button, { "aria-label": `delete tag ${tagsByIds[id].tagName}`, variant: "plain", "data-tracking-id": "delete-tag", onClick: () => onDeleteTagClick(tagsByIds[id]) },
|
|
198
|
+
React.createElement(TrashIcon, null))))),
|
|
199
|
+
},
|
|
200
|
+
];
|
|
201
|
+
const CreateTagModel = (React.createElement(Modal, { title: t('Create a tag'), onClose: onCancelCreateNewTag, isOpen: createTagModalOpen, actions: [
|
|
202
|
+
React.createElement(Button, { key: "create-tag", variant: ButtonVariant.primary, onClick: onCreateNewTag, isLoading: isCreatingNewTag, isDisabled: !isEmpty(createTagError) || isCreatingNewTag },
|
|
203
|
+
React.createElement(Trans, null, "Create")),
|
|
204
|
+
React.createElement(Button, { key: "cancel-create-tag", variant: ButtonVariant.link, onClick: onCancelCreateNewTag }, "Cancel"),
|
|
205
|
+
] },
|
|
206
|
+
React.createElement(FormGroup, { label: "Tag name", isRequired: true },
|
|
207
|
+
React.createElement(TextInput, { isRequired: true, type: "text", id: "create-new-tag-text-input", value: newTagName, onChange: (e, v) => {
|
|
208
|
+
setNewTagName(v);
|
|
209
|
+
setCreateTagError('');
|
|
210
|
+
}, placeholder: t('Enter a unique name to create a tag'), validated: isEmpty(createTagError) ? 'default' : 'error' }),
|
|
211
|
+
!isEmpty(createTagError) && (React.createElement(FormHelperText, null,
|
|
212
|
+
React.createElement(HelperText, null,
|
|
213
|
+
React.createElement(HelperTextItem, { variant: "error" }, createTagError)))))));
|
|
214
|
+
const EditTagModal = (React.createElement(Modal, { title: t('Edit Tag'), isOpen: editTagModalOpen, onClose: onEditCancel, actions: [
|
|
215
|
+
React.createElement(Button, { key: "edit-tag", variant: ButtonVariant.primary, onClick: onEditTagConfirm, isLoading: isEditingTagName, isDisabled: !isEmpty(editTagError) || isEditingTagName },
|
|
216
|
+
React.createElement(Trans, null, "Save")),
|
|
217
|
+
React.createElement(Button, { key: "cancel-edit-tag", variant: ButtonVariant.link, onClick: onEditCancel }, "Cancel"),
|
|
218
|
+
] },
|
|
219
|
+
React.createElement(FormGroup, { label: "Tag name", isRequired: true },
|
|
220
|
+
React.createElement(TextInput, { isRequired: true, type: "text", id: "edit-tag-text-input", value: editTagName, onChange: (e, v) => {
|
|
221
|
+
setEditTagName(v);
|
|
222
|
+
setEditTagError('');
|
|
223
|
+
}, placeholder: t('Enter a unique name for this tag') }),
|
|
224
|
+
!isEmpty(editTagError) && (React.createElement(FormHelperText, null,
|
|
225
|
+
React.createElement(HelperText, null,
|
|
226
|
+
React.createElement(HelperTextItem, { variant: "error" }, editTagError)))))));
|
|
227
|
+
const DeleteTagModel = () => (React.createElement(Modal, { title: t('Are you sure?'), isOpen: deleteTagModalOpen, onClose: () => setDeleteTagModalOpen(false), actions: [
|
|
228
|
+
React.createElement(Button, { key: "delete-tag", variant: ButtonVariant.danger, onClick: onDeleteTagConfirm, isLoading: isDeletingTag, isDisabled: isDeletingTag },
|
|
229
|
+
React.createElement(Trans, null, "Yes, I am sure")),
|
|
230
|
+
React.createElement(Button, { key: "cancel-delete-tag", variant: ButtonVariant.link, onClick: () => setDeleteTagModalOpen(false) }, "Cancel"),
|
|
231
|
+
] },
|
|
232
|
+
React.createElement(Trans, null, "Deleting this tag will permanently untag all content associated with it. Are you sure you want to proceed?")));
|
|
233
|
+
return (React.createElement(React.Fragment, null,
|
|
234
|
+
CreateTagModel,
|
|
235
|
+
EditTagModal,
|
|
236
|
+
React.createElement(DeleteTagModel, null),
|
|
237
|
+
React.createElement("header", null,
|
|
238
|
+
React.createElement("h2", null, "Tags"),
|
|
239
|
+
React.createElement("p", { className: "pf-v5-u-my-sm" },
|
|
240
|
+
React.createElement(Trans, null, "Add, edit or remove tags and manage tagged top content."))),
|
|
241
|
+
React.createElement("div", { className: "toolbar" },
|
|
242
|
+
React.createElement(Flex, { alignItems: { default: 'alignItemsCenter' }, className: "pf-v5-u-w-100" },
|
|
243
|
+
React.createElement("label", { htmlFor: "tag-search-input" },
|
|
244
|
+
React.createElement(Trans, null, "Search Tag")),
|
|
245
|
+
React.createElement("div", { className: "pf-v5-u-flex-grow-1" },
|
|
246
|
+
React.createElement(TextInputGroup, null,
|
|
247
|
+
React.createElement(TextInputGroupMain, { type: "text", id: "tag-search-input", placeholder: t('Search for a tag'), icon: React.createElement(SearchIcon, null), value: tagSearchTerm, onChange: (e, v) => setTagSearchTerm(v) }),
|
|
248
|
+
!isEmpty(tagSearchTerm) && (React.createElement(TextInputGroupUtilities, null,
|
|
249
|
+
React.createElement(Button, { variant: "plain", onClick: onSearchClear, "aria-label": "Clear button and input" },
|
|
250
|
+
React.createElement(TimesIcon, null)))))),
|
|
251
|
+
React.createElement("span", { className: "pf-v5-u-ml-sm" },
|
|
252
|
+
React.createElement(Button, { variant: ButtonVariant.primary, isInline: true, onClick: () => {
|
|
253
|
+
setCreateTagModalOpen(true);
|
|
254
|
+
setNewTagName(tagSearchTerm);
|
|
255
|
+
}, "data-tracking-id": "tag-create-button" },
|
|
256
|
+
React.createElement(Trans, null, "Create tag"))))),
|
|
257
|
+
React.createElement("div", { className: "tags-manager-wrapper" },
|
|
258
|
+
React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading tags list') } }, tagResponse.isFetching ? (React.createElement(Bullseye, null,
|
|
259
|
+
React.createElement(EmptyState, { variant: EmptyStateVariant.full },
|
|
260
|
+
React.createElement(Spinner, { size: "lg" })))) : (React.createElement(ManageTable, { ariaLabel: t('Table to manage tags'), data: filteredTagIds, columns: columns, isError: false, keepPageNumberOnDataChange: true }))))));
|
|
261
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ManageTags/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TagsManagement } from './TagsManagement';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
interface IProps {
|
|
2
3
|
isOpen: boolean;
|
|
3
4
|
onClose: () => void;
|
|
@@ -8,6 +9,6 @@ interface IProps {
|
|
|
8
9
|
isAddingNotificationEmail: boolean;
|
|
9
10
|
emailsList: string[];
|
|
10
11
|
}
|
|
11
|
-
export declare const NotificationEmailsModal: (props: IProps) => JSX.Element;
|
|
12
|
+
export declare const NotificationEmailsModal: (props: IProps) => React.JSX.Element;
|
|
12
13
|
export {};
|
|
13
14
|
//# sourceMappingURL=NotificationEmailsModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationEmailsModal.d.ts","sourceRoot":"","sources":["../../../../src/components/NotificationEmails/NotificationEmailsModal.tsx"],"names":[],"mappings":"AAiBA,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,yBAAyB,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB,EAAE,OAAO,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,UAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"NotificationEmailsModal.d.ts","sourceRoot":"","sources":["../../../../src/components/NotificationEmails/NotificationEmailsModal.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,yBAAyB,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB,EAAE,OAAO,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,UAAW,MAAM,sBA0NpD,CAAC"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { customEmail } from '@cee-eng/hydrajs';
|
|
11
|
-
import { Button, ButtonVariant, Form, FormGroup, Modal, ModalVariant, TextInput, ValidatedOptions, } from '@patternfly/react-core';
|
|
11
|
+
import { Button, ButtonVariant, Form, FormGroup, FormHelperText, HelperText, HelperTextItem, Modal, ModalVariant, TextInput, ValidatedOptions, } from '@patternfly/react-core';
|
|
12
12
|
import { ToastNotification, useFetch } from '@rh-support/components';
|
|
13
13
|
import { isEmailValid } from '@rh-support/utils';
|
|
14
14
|
import isEmpty from 'lodash/isEmpty';
|
|
@@ -18,11 +18,13 @@ export const NotificationEmailsModal = (props) => {
|
|
|
18
18
|
const { t } = useTranslation();
|
|
19
19
|
const [isValidEmail, setIsValidEmail] = useState(true);
|
|
20
20
|
const [isValidFirstName, setIsValidFirstName] = useState(true);
|
|
21
|
+
const [isValidLastName, setIsValidLastName] = useState(true);
|
|
21
22
|
const [email, setEmail] = useState('');
|
|
22
23
|
const [firstName, setFirstName] = useState('');
|
|
23
24
|
const [lastName, setLastName] = useState('');
|
|
24
25
|
const [saveButtonIsClicked, setSaveButtonIsClicked] = useState(false);
|
|
25
26
|
const [isEmailDuplicate, setIsEmailDuplicate] = useState(false);
|
|
27
|
+
const [isSpecialCharFirstName, setIsSpecialCharFirstName] = useState(false);
|
|
26
28
|
const { request: updateCustomEmail, isFetching: isUpdating } = useFetch(customEmail.updateCustomEmail, {
|
|
27
29
|
propgateErrors: true,
|
|
28
30
|
});
|
|
@@ -33,6 +35,7 @@ export const NotificationEmailsModal = (props) => {
|
|
|
33
35
|
const resetModal = () => {
|
|
34
36
|
setIsValidEmail(true);
|
|
35
37
|
setIsValidFirstName(true);
|
|
38
|
+
setIsValidLastName(true);
|
|
36
39
|
setSaveButtonIsClicked(false);
|
|
37
40
|
setIsEmailDuplicate(false);
|
|
38
41
|
};
|
|
@@ -45,6 +48,7 @@ export const NotificationEmailsModal = (props) => {
|
|
|
45
48
|
const isDuplicateEmail = props.isAddingNotificationEmail ? props.emailsList.includes(email) : false;
|
|
46
49
|
setIsValidEmail(isAValidEmail);
|
|
47
50
|
setIsValidFirstName(isAValidFirstName);
|
|
51
|
+
setIsValidLastName(!checkForSpecialCharacters(lastName));
|
|
48
52
|
props.isAddingNotificationEmail && setIsEmailDuplicate(isDuplicateEmail);
|
|
49
53
|
if (!isAValidEmail || !isAValidFirstName || isDuplicateEmail)
|
|
50
54
|
return;
|
|
@@ -87,17 +91,26 @@ export const NotificationEmailsModal = (props) => {
|
|
|
87
91
|
setEmail(localemail);
|
|
88
92
|
};
|
|
89
93
|
const onFirstNameChange = (firstName) => {
|
|
90
|
-
|
|
94
|
+
const hasSpecialChars = checkForSpecialCharacters(firstName);
|
|
95
|
+
const isValid = !isEmpty(firstName.trim()) && !hasSpecialChars;
|
|
96
|
+
setIsValidFirstName(isValid);
|
|
97
|
+
setIsSpecialCharFirstName(hasSpecialChars);
|
|
91
98
|
setFirstName(firstName);
|
|
92
99
|
};
|
|
93
100
|
const onLastNameChange = (lastName) => {
|
|
101
|
+
setIsValidLastName(!checkForSpecialCharacters(lastName));
|
|
94
102
|
setLastName(lastName);
|
|
95
103
|
};
|
|
104
|
+
const checkForSpecialCharacters = (s) => {
|
|
105
|
+
const specialCharRegex = /[^a-zA-Z0-9\s]/;
|
|
106
|
+
return specialCharRegex.test(s);
|
|
107
|
+
};
|
|
96
108
|
return (React.createElement(Modal, { id: "Add-edit-notification-email-modal", className: "pf-modal-overflow-visible", title: t('Edit notification email'), "aria-describedby": "Add-edit-notification-email-modal", isOpen: props.isOpen, onClose: props.onClose, showClose: true, onEscapePress: props.onClose, variant: ModalVariant.medium, actions: [
|
|
97
109
|
React.createElement(Button, { key: "save", variant: ButtonVariant.primary, onClick: save, isDisabled: !isFormDirty() ||
|
|
98
110
|
isUpdating ||
|
|
99
111
|
isAdding ||
|
|
100
112
|
!isValidFirstName ||
|
|
113
|
+
!isValidLastName ||
|
|
101
114
|
!isValidEmail ||
|
|
102
115
|
isEmailDuplicate, spinnerAriaValueText: isUpdating || isAdding ? t('Adding') : undefined, isLoading: isUpdating || isAdding },
|
|
103
116
|
React.createElement(Trans, null, "Save")),
|
|
@@ -105,10 +118,22 @@ export const NotificationEmailsModal = (props) => {
|
|
|
105
118
|
React.createElement(Trans, null, "Cancel")),
|
|
106
119
|
] },
|
|
107
120
|
React.createElement(Form, null,
|
|
108
|
-
React.createElement(FormGroup, { label: t('Email address'), isRequired: true, fieldId: "email-notification-first-emailaddress"
|
|
109
|
-
React.createElement(TextInput, { value: email,
|
|
110
|
-
|
|
111
|
-
|
|
121
|
+
React.createElement(FormGroup, { label: t('Email address'), isRequired: true, fieldId: "email-notification-first-emailaddress" },
|
|
122
|
+
React.createElement(TextInput, { value: email, isRequired: true, type: "text", onChange: (_event, localemail) => onEmailChange(localemail), "aria-label": t('Email address'), placeholder: t('Email address'), maxLength: 254, validated: isValidEmail && !isEmailDuplicate ? ValidatedOptions.default : ValidatedOptions.error, isDisabled: !props.isAddingNotificationEmail }),
|
|
123
|
+
!(isValidEmail && !isEmailDuplicate) && (React.createElement(FormHelperText, null,
|
|
124
|
+
React.createElement(HelperText, null,
|
|
125
|
+
React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, !isValidEmail ? t('Invalid email') : isEmailDuplicate ? t('Duplicate Email') : ''))))),
|
|
126
|
+
React.createElement(FormGroup, { label: t('First name'), isRequired: true, fieldId: "email-notification-first-name" },
|
|
127
|
+
React.createElement(TextInput, { value: firstName, isRequired: true, validated: isValidFirstName ? ValidatedOptions.default : ValidatedOptions.error, type: "text", onChange: (_event, firstName) => onFirstNameChange(firstName), "aria-label": t('First name'), placeholder: t('First name'), maxLength: 254 }),
|
|
128
|
+
!isValidFirstName && (React.createElement(FormHelperText, null,
|
|
129
|
+
React.createElement(HelperText, null,
|
|
130
|
+
React.createElement(HelperTextItem, { variant: ValidatedOptions.error }, isSpecialCharFirstName
|
|
131
|
+
? t('First name cannot contain special characters')
|
|
132
|
+
: t('First name cannot be empty')))))),
|
|
112
133
|
React.createElement(FormGroup, { label: t('Last name'), fieldId: "email-notification-last-name" },
|
|
113
|
-
React.createElement(TextInput, { value: lastName,
|
|
134
|
+
React.createElement(TextInput, { value: lastName, type: "text", validated: isValidLastName ? ValidatedOptions.default : ValidatedOptions.error, onChange: (_event, lastName) => onLastNameChange(lastName), "aria-label": t('Last name'), placeholder: t('Last name'), maxLength: 254 }),
|
|
135
|
+
!isValidLastName && (React.createElement(FormHelperText, null,
|
|
136
|
+
React.createElement(HelperText, null,
|
|
137
|
+
React.createElement(HelperTextItem, { variant: ValidatedOptions.error },
|
|
138
|
+
React.createElement(Trans, null, "Last name cannot contain special characters")))))))));
|
|
114
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/NotificationEmails/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/NotificationEmails/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,wBAAgB,kBAAkB,sBAmOjC"}
|
|
@@ -155,20 +155,20 @@ export function NotificationEmails() {
|
|
|
155
155
|
setIsAddingNotificationEmail(true);
|
|
156
156
|
editEmail({ firstName: '', lastName: '', email: emailToAdd });
|
|
157
157
|
};
|
|
158
|
-
return (React.createElement(
|
|
158
|
+
return (React.createElement(React.Fragment, null,
|
|
159
159
|
React.createElement("header", null,
|
|
160
160
|
React.createElement("h2", null, t('Notification emails')),
|
|
161
161
|
t('Add, edit or remove emails from your account that were added to receive notifications.')),
|
|
162
162
|
React.createElement("div", { className: "toolbar" },
|
|
163
163
|
React.createElement("div", { className: "toolbar-left" },
|
|
164
164
|
React.createElement("label", { htmlFor: "notification-emails-input" }, t('Add an Email')),
|
|
165
|
-
React.createElement(TextInput, { id: "notification-email-input", placeholder: t('Enter a valid email address'), "aria-label": t('Enter a valid email address'), onChange: onEmailInputBoxChange }),
|
|
166
|
-
React.createElement("span", { className: "pf-u-ml-sm" },
|
|
165
|
+
React.createElement(TextInput, { id: "notification-email-input", placeholder: t('Enter a valid email address'), "aria-label": t('Enter a valid email address'), onChange: (_event, email) => onEmailInputBoxChange(email) }),
|
|
166
|
+
React.createElement("span", { className: "pf-v5-u-ml-sm" },
|
|
167
167
|
React.createElement(Button, { variant: ButtonVariant.primary, isInline: true, onClick: addEmail, "data-tracking-id": "email-address-add-button", isDisabled: isAddButtonDisabled },
|
|
168
168
|
React.createElement(Trans, null, "Add")))),
|
|
169
169
|
React.createElement("div", { className: "toolbar-right" },
|
|
170
170
|
React.createElement("label", { htmlFor: "search-notification-emails-selector" }, t('Filter by')),
|
|
171
|
-
React.createElement(SearchInput, { className: "pf-u-flex-grow-1 pf-c-search-input pf-u-background-color-100", id: "search-notification-emails-selector", placeholder: t('Search for an existing email'), value: searchString, onChange: onSearchChange, onClear: () => onSearchChange(''), "aria-label": t('Search for an existing email') }))),
|
|
171
|
+
React.createElement(SearchInput, { className: "pf-v5-u-flex-grow-1 pf-v5-c-search-input pf-v5-u-background-color-100", id: "search-notification-emails-selector", placeholder: t('Search for an existing email'), value: searchString, onChange: (_, value) => onSearchChange(value), onClear: () => onSearchChange(''), "aria-label": t('Search for an existing email') }))),
|
|
172
172
|
React.createElement(ManageTable, { ariaLabel: t('Table to manage Notification emails'), columns: columns, data: emailLists || [], sortInfo: { column: 'first-name', direction: 'asc' }, errorVariant: AlertVariant.warning, isFetching: accountCustomEmails.isFetching, isError: accountCustomEmails.isError, errorTitle: t('Notification emails error'), errorComponent: React.createElement(Trans, null, "Could not get notification emails"), actionResolver: emailLists && emailLists.length !== 0 ? actionResolver : null, keepPageNumberOnDataChange: keepPageNumberOnDataChange }),
|
|
173
173
|
React.createElement(NotificationEmailsModal, { isOpen: isEditModalOpen, onClose: onModalClose, selectedEmailNotification: selectedEmailNotification, onUpdate: onUpdate, onAdd: onAdd, accountNumber: loggedInUserJwtToken.account_number, isAddingNotificationEmail: isAddingNotificationEmail, emailsList: (accountCustomEmails.data || []).map((e) => e.emailAddress) })));
|
|
174
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CategoryLimit.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/CategoryLimit/CategoryLimit.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAK5C,QAAA,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"CategoryLimit.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/CategoryLimit/CategoryLimit.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAK5C,QAAA,MAAM,aAAa,EAAE,EAgCpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button, Popover } from '@patternfly/react-core';
|
|
1
|
+
import { Button, Icon, Popover } from '@patternfly/react-core';
|
|
2
2
|
import CircleInfo from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
3
3
|
import React, { useState } from 'react';
|
|
4
4
|
import { Trans } from 'react-i18next';
|
|
@@ -14,7 +14,8 @@ const CategoryLimit = () => {
|
|
|
14
14
|
setModalOpen(true);
|
|
15
15
|
} }, "Review guidelines."))) },
|
|
16
16
|
React.createElement(Button, { variant: "plain" },
|
|
17
|
-
React.createElement(
|
|
17
|
+
React.createElement(Icon, { size: "md" },
|
|
18
|
+
React.createElement(CircleInfo, null)))),
|
|
18
19
|
React.createElement(CategoryLimitGuidelines, { isModalOpen: isModalOpen, onHideModal: onHideModal })));
|
|
19
20
|
};
|
|
20
21
|
export default CategoryLimit;
|
|
@@ -10,7 +10,7 @@ export const CategoryLimitGuidelines = ({ isModalOpen, onHideModal }) => {
|
|
|
10
10
|
React.createElement(Title, { headingLevel: "h1", size: TitleSizes['2xl'] },
|
|
11
11
|
React.createElement(Trans, null, " Top content guideline ")),
|
|
12
12
|
React.createElement(Trans, null,
|
|
13
|
-
React.createElement("p", { className: "pf-u-pt-sm" }, "Guidelines and limitations for top content resources.")),
|
|
13
|
+
React.createElement("p", { className: "pf-v5-u-pt-sm" }, "Guidelines and limitations for top content resources.")),
|
|
14
14
|
React.createElement(QuestionAnswer, { question: "What is top content?", answer: "Top content is defined as the top resource for given product and version that will provide the most value for our customer and the highest likelihood for case deflection." }),
|
|
15
15
|
React.createElement(QuestionAnswer, { question: "What is not top content", answer: "Resource that are accessible in other parts of the customer journey throughout the Customer Portal. For example, labs are not a top content resource. " }),
|
|
16
16
|
React.createElement(QuestionAnswer, { question: "Category and link restrictions", answer: `we allow for a minimum of ${DIGIT_WORD_MAP[CATEGORY_LIMIT.MIN]} and max ${DIGIT_WORD_MAP[CATEGORY_LIMIT.MAX]} categories, and links within each category.` })));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Title } from '@patternfly/react-core';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Trans } from 'react-i18next';
|
|
4
|
-
const QuestionAnswer = ({ question, answer }) => (React.createElement("div", { className: "pf-u-pt-lg" },
|
|
4
|
+
const QuestionAnswer = ({ question, answer }) => (React.createElement("div", { className: "pf-v5-u-pt-lg" },
|
|
5
5
|
React.createElement(Title, { headingLevel: "h6", size: "md" },
|
|
6
6
|
React.createElement(Trans, null,
|
|
7
7
|
" ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentAccordion.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/ContentAccordion.tsx"],"names":[],"mappings":"AAUA,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,UAAU,MAAM;IACZ,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ContentAccordion.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/ContentAccordion.tsx"],"names":[],"mappings":"AAUA,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,UAAU,MAAM;IACZ,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,MAAM,CAsEvC,CAAC"}
|
|
@@ -25,11 +25,11 @@ export const ContentAccordion = ({ contentList, selectedVersion }) => {
|
|
|
25
25
|
});
|
|
26
26
|
return (React.createElement(AccordionItem, { key: topContentId },
|
|
27
27
|
React.createElement(AccordionToggle, { onClick: onToggle(topContentId), isExpanded: expanded === topContentId, id: contentTitle },
|
|
28
|
-
React.createElement("span", { className: isAttentionNeeded ? 'pf-u-danger-color-200' : '' },
|
|
28
|
+
React.createElement("span", { className: isAttentionNeeded ? 'pf-v5-u-danger-color-200' : '' },
|
|
29
29
|
' ',
|
|
30
30
|
contentTitle)),
|
|
31
31
|
React.createElement(AccordionContent, { id: contentTitle, isHidden: expanded !== topContentId },
|
|
32
|
-
React.createElement("span", { className: "pf-u-font-size-sm" }, lastModifiedBy),
|
|
32
|
+
React.createElement("span", { className: "pf-v5-u-font-size-sm" }, lastModifiedBy),
|
|
33
33
|
React.createElement("br", null),
|
|
34
34
|
React.createElement("br", null),
|
|
35
35
|
React.createElement(PerformanceMetricClickCount, { needsAttention: isAttentionNeeded, contentId: topContentId, selectedVersion: selectedVersion }))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerformanceMetrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/PerformanceMetrics.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKlC,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CAC3B;AACD,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"PerformanceMetrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/PerformanceMetrics.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKlC,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CAC3B;AACD,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,MAAM,CAwCzC,CAAC"}
|
|
@@ -8,8 +8,8 @@ export const PerformanceMetrics = ({ isModalOpen, onHideModal, needsAttention, c
|
|
|
8
8
|
] },
|
|
9
9
|
React.createElement(Title, { headingLevel: "h1", size: TitleSizes['2xl'] },
|
|
10
10
|
React.createElement(Trans, null, " Performance metrics ")),
|
|
11
|
-
React.createElement("p", { className: "pf-u-pb-lg pf-u-pt-sm" }, "Better understand the Performance for the top content resources."),
|
|
12
|
-
React.createElement("div", { className: "pf-u-pb-xs top-content-tooltip-view-metric-label" }, title),
|
|
13
|
-
React.createElement("div", { className: "pf-u-pb-lg" }, lastModifiedBy),
|
|
11
|
+
React.createElement("p", { className: "pf-v5-u-pb-lg pf-v5-u-pt-sm" }, "Better understand the Performance for the top content resources."),
|
|
12
|
+
React.createElement("div", { className: "pf-v5-u-pb-xs top-content-tooltip-view-metric-label" }, title),
|
|
13
|
+
React.createElement("div", { className: "pf-v5-u-pb-lg" }, lastModifiedBy),
|
|
14
14
|
React.createElement(PerformanceMetricClickCount, { needsAttention: needsAttention, contentId: contentId, selectedVersion: selectedVersion })));
|
|
15
15
|
};
|
package/lib/esm/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerformanceMetricsSelect.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,kBAAkB,EAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"PerformanceMetricsSelect.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/PerformanceMetricsSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,kBAAkB,EAAiB,MAAM,mCAAmC,CAAC;AAC5G,OAAO,KAAK,EAAE,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAG5C,UAAU,MAAM;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,CACd,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,EAC3C,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAClC,aAAa,CAAC,EAAE,OAAO,KACtB,IAAI,CAAC;IACV,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,WAAW,EAAE,CAAC,MAAM,KAAA,KAAK,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,MAAM,CAuC/C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Select, SelectOption, SelectVariant } from '@patternfly/react-core';
|
|
1
|
+
import { Select, SelectOption, SelectVariant } from '@patternfly/react-core/deprecated';
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import { Trans } from 'react-i18next';
|
|
4
4
|
export const PerformanceMetricsSelect = ({ placeholderText, title, onSelectCallback, options, optionValue, isLoading = false, isDisabled, }) => {
|
|
@@ -11,10 +11,10 @@ export const PerformanceMetricsSelect = ({ placeholderText, title, onSelectCallb
|
|
|
11
11
|
setOpen(false);
|
|
12
12
|
};
|
|
13
13
|
return (React.createElement(React.Fragment, null,
|
|
14
|
-
React.createElement("div", { className: "pf-u-font-weight-bold" },
|
|
14
|
+
React.createElement("div", { className: "pf-v5-u-font-weight-bold" },
|
|
15
15
|
React.createElement(Trans, null,
|
|
16
16
|
" ",
|
|
17
17
|
title,
|
|
18
18
|
" ")),
|
|
19
|
-
React.createElement(Select, { variant: SelectVariant.single, placeholderText: placeholderText, "aria-label": "Select Input with descriptions", onToggle: onToggle, onSelect: onSelect, selections: selected, isOpen: isOpen, isDisabled: isDisabled || isLoading }, options.map((option, index) => (React.createElement(SelectOption, { key: index, value: optionValue(option) }))))));
|
|
19
|
+
React.createElement(Select, { variant: SelectVariant.single, placeholderText: placeholderText, "aria-label": "Select Input with descriptions", onToggle: (_event, isOpen) => onToggle(isOpen), onSelect: onSelect, selections: selected, isOpen: isOpen, isDisabled: isDisabled || isLoading }, options.map((option, index) => (React.createElement(SelectOption, { key: index, value: optionValue(option) }))))));
|
|
20
20
|
};
|
package/lib/esm/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionPerformanceMetrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VersionPerformanceMetrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/TopContentManagement/ContentUsage/VersionPerformanceMetrics.tsx"],"names":[],"mappings":"AAKA,OAAc,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAUhE,UAAU,MAAM;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CAC3B;AACD,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,MAAM,CAsGhD,CAAC"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { pcm } from '@cee-eng/hydrajs';
|
|
11
|
-
import { Button, ButtonVariant, Flex, FlexItem, Modal, ModalVariant, Title, TitleSizes
|
|
11
|
+
import { Button, ButtonVariant, Flex, FlexItem, Modal, ModalVariant, Title, TitleSizes } from '@patternfly/react-core';
|
|
12
12
|
import { useFetch } from '@rh-support/components';
|
|
13
13
|
import isEmpty from 'lodash/isEmpty';
|
|
14
14
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
@@ -56,13 +56,13 @@ export const VersionPerformanceMetrics = ({ isModalOpen, onHideModal, selectedVe
|
|
|
56
56
|
React.createElement("div", { className: "sticky-header" },
|
|
57
57
|
React.createElement(Title, { headingLevel: "h1", size: TitleSizes['2xl'] },
|
|
58
58
|
React.createElement(Trans, null, " Performance metrics ")),
|
|
59
|
-
React.createElement("p", { className: "pf-u-pt-sm" },
|
|
59
|
+
React.createElement("p", { className: "pf-v5-u-pt-sm" },
|
|
60
60
|
React.createElement(Trans, null, "Better understand the Performance for the top content resources.")),
|
|
61
61
|
React.createElement("br", null),
|
|
62
62
|
React.createElement(Flex, { justifyContent: { default: 'justifyContentSpaceBetween' } },
|
|
63
|
-
React.createElement(FlexItem, { className: "pf-u-w-50 pf-u-pr-md", style: { marginRight: 'unset' } },
|
|
63
|
+
React.createElement(FlexItem, { className: "pf-v5-u-w-50 pf-v5-u-pr-md", style: { marginRight: 'unset' } },
|
|
64
64
|
React.createElement(PerformanceMetricsSelect, { placeholderText: t(!isEmpty(versionOptions) ? 'Select a version' : 'No versions available'), title: t(`Version using ${selectedVersionProp}`), onSelectCallback: onVersionSelect, options: versionOptions, optionValue: (option) => option, isLoading: isLoading, isDisabled: isEmpty(versionOptions) })),
|
|
65
|
-
React.createElement(FlexItem, { className: "pf-u-w-50 pf-u-pl-md" },
|
|
65
|
+
React.createElement(FlexItem, { className: "pf-v5-u-w-50 pf-v5-u-pl-md" },
|
|
66
66
|
React.createElement(PerformanceMetricsSelect, { placeholderText: t('select a category'), title: t('Categories'), options: flagContentEditState, optionValue: (option) => option.categoryName, onSelectCallback: (e, selectedOption) => setSelectedCategory(selectedOption), isLoading: !selectedVersion || isTopContentLoading })))),
|
|
67
67
|
React.createElement("br", null),
|
|
68
68
|
React.createElement(ContentAccordion, { contentList: selectedContent, selectedVersion: selectedVersion })));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
interface IProps {
|
|
2
3
|
version: string;
|
|
3
4
|
product: string;
|
|
@@ -6,6 +7,6 @@ interface IProps {
|
|
|
6
7
|
onVersionChange?: (version: string) => void;
|
|
7
8
|
isContentOnlyForMajorVersion: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare function NoTopContentFound({ version, product, dataLength, onAddCategory, onVersionChange, isContentOnlyForMajorVersion, }: IProps): JSX.Element;
|
|
10
|
+
export declare function NoTopContentFound({ version, product, dataLength, onAddCategory, onVersionChange, isContentOnlyForMajorVersion, }: IProps): React.JSX.Element;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=NoTopContentFound.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoTopContentFound.d.ts","sourceRoot":"","sources":["../../../../src/components/TopContentManagement/NoTopContentFound.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NoTopContentFound.d.ts","sourceRoot":"","sources":["../../../../src/components/TopContentManagement/NoTopContentFound.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,MAAM;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CACX,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,mCAAmC,CAAC,EAAE,OAAO,KAC5C,IAAI,CAAC;IACV,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,4BAA4B,EAAE,OAAO,CAAC;CACzC;AAED,wBAAgB,iBAAiB,CAAC,EAC9B,OAAO,EACP,OAAO,EACP,UAAU,EACV,aAAa,EACb,eAAe,EACf,4BAA4B,GAC/B,EAAE,MAAM,qBA8FR"}
|