From 0eb81072b5bee59ce672c120834cf10b317e9f20 Mon Sep 17 00:00:00 2001 From: Ron Lavi <1ronlavi@gmail.com> Date: Wed, 27 Dec 2023 19:55:25 +0000 Subject: [PATCH] Inventory page UX enhancements - Moved the page description into a modal which is reachable from the dropdown kebab. - Moved also the settings card into a modal. - Small margin/padding fixes. - replace PF3 Buttons with PF4 Buttons. --- .../Components/AccountList/accountList.scss | 5 ++++ .../InventorySettings/InventorySettings.js | 3 --- .../InventorySettings.test.js.snap | 3 --- .../Components/PageHeader/PageHeader.js | 6 ----- .../Components/PageHeader/PageHeader.scss | 1 - .../Components/PageHeader/PageTitle.js | 26 +++++++++++++++++++ .../__snapshots__/PageHeader.test.js.snap | 6 ----- .../__snapshots__/PageTitle.test.js.snap | 20 ++++++++++++++ .../PageHeader/components/AboutModal/index.js | 26 +++++++++++++++++++ .../components/SettingsModal/index.js | 26 +++++++++++++++++++ .../Components/TabHeader/TabHeader.js | 11 ++++---- .../__snapshots__/TabHeader.test.js.snap | 6 +---- .../ForemanInventoryConstants.js | 4 +++ .../__snapshots__/InsightsTable.test.js.snap | 3 +++ webpack/common/Switcher/HelpLabel.js | 2 +- webpack/common/Switcher/SwitcherPF4.scss | 4 +++ 16 files changed, 122 insertions(+), 30 deletions(-) create mode 100644 webpack/ForemanInventoryUpload/Components/PageHeader/components/AboutModal/index.js create mode 100644 webpack/ForemanInventoryUpload/Components/PageHeader/components/SettingsModal/index.js diff --git a/webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss b/webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss index 82f25b7f..e42918d5 100644 --- a/webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss +++ b/webpack/ForemanInventoryUpload/Components/AccountList/accountList.scss @@ -1,4 +1,9 @@ .rh-cloud-inventory-page { + + section { + padding-bottom: 0; + } + #main { padding: 0; diff --git a/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js b/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js index 9e0d598f..463bf0fd 100644 --- a/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +++ b/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js @@ -1,6 +1,4 @@ import React from 'react'; -import { translate as __ } from 'foremanReact/common/I18n'; - import AdvancedSetting from './AdvancedSetting'; import { settingsDict } from './AdvancedSetting/AdvancedSettingsConstants'; @@ -8,7 +6,6 @@ import './InventorySettings.scss'; const InventorySettings = () => (
-

{__('Settings')}

{Object.keys(settingsDict).map(key => ( ))} diff --git a/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap b/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap index 6f5229a2..9af41cc5 100644 --- a/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +++ b/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap @@ -4,9 +4,6 @@ exports[`InventorySettings rendering render without Props 1`] = `
-

- Settings -

(
-
- - -
diff --git a/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.scss b/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.scss index cd2a3cfe..72884cec 100644 --- a/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.scss +++ b/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.scss @@ -1,6 +1,5 @@ .rh-cloud-inventory-page { .inventory-upload-header { - margin-top: 35px; h1 { font-family: 'RedHatDisplay'; diff --git a/webpack/ForemanInventoryUpload/Components/PageHeader/PageTitle.js b/webpack/ForemanInventoryUpload/Components/PageHeader/PageTitle.js index c77d9d58..d5570762 100644 --- a/webpack/ForemanInventoryUpload/Components/PageHeader/PageTitle.js +++ b/webpack/ForemanInventoryUpload/Components/PageHeader/PageTitle.js @@ -13,18 +13,31 @@ import { ACTIONS_HISTORY_BUTTON_TEXT, DOCS_BUTTON_TEXT, CLOUD_PING_TITLE, + ABOUT_TITLE, + SETTINGS_TITLE, } from '../../ForemanInventoryConstants'; import { getActionsHistoryUrl, getInventoryDocsUrl, } from '../../ForemanInventoryHelpers'; import CloudPingModal from './components/CloudPingModal'; +import AboutModal from './components/AboutModal'; +import SettingsModal from './components/SettingsModal'; const PageTitle = () => { const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [showPingModal, setPingModal] = useState(false); + const [showAboutModal, setAboutModal] = useState(false); + const [showSettingsModal, setSettingsModal] = useState(false); + const togglePingModal = () => setPingModal(v => !v); + const toggleAboutModal = () => setAboutModal(v => !v); + const toggleSettingsModal = () => setSettingsModal(v => !v); + const dropdownItems = [ + + {SETTINGS_TITLE} + , { {CLOUD_PING_TITLE} , + + {ABOUT_TITLE} + , ]; return ( @@ -70,6 +86,16 @@ const PageTitle = () => { toggle={togglePingModal} title={CLOUD_PING_TITLE} /> + + ); diff --git a/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap b/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap index ebde573e..4a447d59 100644 --- a/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +++ b/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap @@ -6,12 +6,6 @@ exports[`PageHeader rendering render without Props 1`] = ` > -
- - -
+ Settings +
, Connectivity test , + + About + , ] } isOpen={false} @@ -59,6 +69,16 @@ exports[`PageTitle rendering render without Props 1`] = ` title="Connectivity test" toggle={[Function]} /> + + `; diff --git a/webpack/ForemanInventoryUpload/Components/PageHeader/components/AboutModal/index.js b/webpack/ForemanInventoryUpload/Components/PageHeader/components/AboutModal/index.js new file mode 100644 index 00000000..2cd7bdde --- /dev/null +++ b/webpack/ForemanInventoryUpload/Components/PageHeader/components/AboutModal/index.js @@ -0,0 +1,26 @@ +/* eslint-disable camelcase */ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Modal, ModalVariant } from '@patternfly/react-core'; +import PageDescription from '../PageDescription'; + +const AboutModal = ({ isOpen, toggle, title }) => ( + + + +); + +AboutModal.propTypes = { + isOpen: PropTypes.bool.isRequired, + toggle: PropTypes.func.isRequired, + title: PropTypes.string.isRequired, +}; + +export default AboutModal; diff --git a/webpack/ForemanInventoryUpload/Components/PageHeader/components/SettingsModal/index.js b/webpack/ForemanInventoryUpload/Components/PageHeader/components/SettingsModal/index.js new file mode 100644 index 00000000..dec90e25 --- /dev/null +++ b/webpack/ForemanInventoryUpload/Components/PageHeader/components/SettingsModal/index.js @@ -0,0 +1,26 @@ +/* eslint-disable camelcase */ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Modal, ModalVariant } from '@patternfly/react-core'; +import InventorySettings from '../../../InventorySettings'; + +const SettingsModal = ({ isOpen, toggle, title }) => ( + + + +); + +SettingsModal.propTypes = { + isOpen: PropTypes.bool.isRequired, + toggle: PropTypes.func.isRequired, + title: PropTypes.string.isRequired, +}; + +export default SettingsModal; diff --git a/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js b/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js index 31b6a305..855e1e0e 100644 --- a/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js +++ b/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js @@ -1,6 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Grid, Button, Icon } from 'patternfly-react'; +import { Grid, Icon } from 'patternfly-react'; +import { Button } from '@patternfly/react-core'; import { noop } from 'foremanReact/common/helpers'; import { sprintf, translate as __ } from 'foremanReact/common/I18n'; import { isExitCodeLoading } from '../../ForemanInventoryHelpers'; @@ -15,19 +16,19 @@ const TabHeader = ({ exitCode, onRestart, onDownload, toggleFullScreen }) => (
{onRestart ? ( ) : null} {onDownload ? ( - ) : null} - diff --git a/webpack/ForemanInventoryUpload/Components/TabHeader/__tests__/__snapshots__/TabHeader.test.js.snap b/webpack/ForemanInventoryUpload/Components/TabHeader/__tests__/__snapshots__/TabHeader.test.js.snap index 61159cbd..5f59b29b 100644 --- a/webpack/ForemanInventoryUpload/Components/TabHeader/__tests__/__snapshots__/TabHeader.test.js.snap +++ b/webpack/ForemanInventoryUpload/Components/TabHeader/__tests__/__snapshots__/TabHeader.test.js.snap @@ -24,12 +24,8 @@ exports[`TabHeader rendering render without Props 1`] = ` className="tab-action-buttons" >