diff --git a/redisinsight/ui/src/components/auto-refresh/AutoRefresh.tsx b/redisinsight/ui/src/components/auto-refresh/AutoRefresh.tsx index 281f4da40f..9744d85a3a 100644 --- a/redisinsight/ui/src/components/auto-refresh/AutoRefresh.tsx +++ b/redisinsight/ui/src/components/auto-refresh/AutoRefresh.tsx @@ -39,7 +39,7 @@ export interface Props { defaultRefreshRate?: string iconSize?: EuiButtonIconSizes disabled?: boolean - disabledRefreshButtonMessage: string + disabledRefreshButtonMessage?: string enableAutoRefreshDefault?: boolean } diff --git a/redisinsight/ui/src/pages/browser/modules/key-details-header/KeyDetailsHeader.tsx b/redisinsight/ui/src/pages/browser/modules/key-details-header/KeyDetailsHeader.tsx index 9db1f9a16b..74b5f8f577 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details-header/KeyDetailsHeader.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details-header/KeyDetailsHeader.tsx @@ -36,7 +36,7 @@ import { KeyDetailsHeaderSizeLength } from './components/key-details-header-size import styles from './styles.module.scss' export interface KeyDetailsHeaderProps { - onCloseKey: (key: RedisResponseBuffer) => void + onCloseKey: () => void onRemoveKey: () => void onEditKey: (key: RedisResponseBuffer, newKey: RedisResponseBuffer, onFailure?: () => void) => void isFullScreen: boolean @@ -58,7 +58,6 @@ const KeyDetailsHeader = ({ const { type, length, - nameString: keyProp, name: keyBuffer, } = useSelector(selectedKeyDataSelector) ?? initialKeyInfo const { id: instanceId } = useSelector(connectedInstanceSelector) @@ -142,7 +141,7 @@ const KeyDetailsHeader = ({ color="primary" aria-label="Close key" className={styles.closeBtn} - onClick={() => onCloseKey(keyProp)} + onClick={() => onCloseKey()} data-testid="close-key-btn" /> diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/dynamic-type-details/DynamicTypeDetails.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/dynamic-type-details/DynamicTypeDetails.tsx index dbb2204681..6ff62e10e2 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/dynamic-type-details/DynamicTypeDetails.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/dynamic-type-details/DynamicTypeDetails.tsx @@ -36,7 +36,7 @@ const DynamicTypeDetails = (props: Props) => { } if (isTruncatedString(keyProp)) { - return + return } // Supported key type @@ -46,11 +46,11 @@ const DynamicTypeDetails = (props: Props) => { // Unsupported redis modules key type if (Object.values(ModulesKeyTypes).includes(selectedKeyType as ModulesKeyTypes)) { - return + return } // Unsupported key type - return + return } export { DynamicTypeDetails } diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.spec.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.spec.tsx index 0009d8b17d..88d0474876 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.spec.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.spec.tsx @@ -6,6 +6,6 @@ import ModulesTypeDetails from './ModulesTypeDetails' describe('ModulesTypeDetails', () => { it('should render', () => { - expect(render()).toBeTruthy() + expect(render()).toBeTruthy() }) }) diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.tsx index 17fe9dddc1..85b6b8f30d 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/ModulesTypeDetails.tsx @@ -1,14 +1,19 @@ import React from 'react' -import { EuiFlexGroup, EuiFlexItem, EuiText, EuiTitle } from '@elastic/eui' +import { EuiText, EuiTitle } from '@elastic/eui' import { useHistory } from 'react-router-dom' import { useSelector } from 'react-redux' import { Pages } from 'uiSrc/constants' import { connectedInstanceSelector } from 'uiSrc/slices/instances/instances' -import styles from '../unsupported-type-details/styles.module.scss' +import styles from './styles.module.scss' +import TextDetailsWrapper from '../text-details-wrapper/TextDetailsWrapper' -const ModulesTypeDetails = ({ moduleName = 'unsupported' }: { moduleName: string }) => { +type ModulesTypeDetailsProps = { + moduleName: string, + onClose: () => void, +} +const ModulesTypeDetails = ({ moduleName = 'unsupported', onClose }: ModulesTypeDetailsProps) => { const history = useHistory() const { id: connectedInstanceId = '' } = useSelector(connectedInstanceSelector) @@ -18,30 +23,26 @@ const ModulesTypeDetails = ({ moduleName = 'unsupported' }: { moduleName: string } return ( -
- - - -

{`This is a ${moduleName} key.`}

-
- - {'Use Redis commands in the '} - ({})} - role="link" - rel="noreferrer" - > - Workbench - - {' tool to view the value.'} - -
-
-
+ + +

{`This is a ${moduleName} key.`}

+
+ + {'Use Redis commands in the '} + ({})} + role="link" + rel="noreferrer" + > + Workbench + + {' tool to view the value.'} + +
) } diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/styles.module.scss b/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/styles.module.scss new file mode 100644 index 0000000000..d002cfade9 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/modules-type-details/styles.module.scss @@ -0,0 +1,4 @@ +.link { + text-decoration: underline; + color: var(--euiColorFullShade); +} \ No newline at end of file diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/TextDetailsWrapper.spec.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/TextDetailsWrapper.spec.tsx new file mode 100644 index 0000000000..45b7c0e9ac --- /dev/null +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/TextDetailsWrapper.spec.tsx @@ -0,0 +1,29 @@ +import React from "react" +import TextDetailsWrapper from "./TextDetailsWrapper" +import { fireEvent, render, screen } from "uiSrc/utils/test-utils"; + +describe('TextDetailsWrapper', () => { + it('should render children correctly', () => { + const { queryByTestId } = render( + +
Children
+
+ ); + + expect(queryByTestId('children-wrapper')).toBeInTheDocument(); + }); + + it('should call onClose when close button is clicked', () => { + const mockOnClose = jest.fn(); + + render( + +
Children
+
+ ); + + fireEvent.click(screen.getByTestId("close-key-btn")); + + expect(mockOnClose).toBeCalledTimes(1); + }); +}) \ No newline at end of file diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/TextDetailsWrapper.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/TextDetailsWrapper.tsx new file mode 100644 index 0000000000..d135d8d563 --- /dev/null +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/TextDetailsWrapper.tsx @@ -0,0 +1,38 @@ +import React, { ReactNode } from 'react'; + +import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem, EuiToolTip } from "@elastic/eui"; + +import styles from './styles.module.scss'; + +const TextDetailsWrapper = ( + { onClose, children, testid }: { onClose: () => void, children: ReactNode, testid?: string } +) => { + const getDataTestid = (suffix: string) => (testid ? `${testid}-${suffix}` : suffix); + + return ( +
+ + onClose()} + data-testid={getDataTestid('close-key-btn')} + /> + + + +
{children}
+
+
+
+ ); +} + + +export default TextDetailsWrapper; \ No newline at end of file diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/styles.module.scss b/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/styles.module.scss similarity index 66% rename from redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/styles.module.scss rename to redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/styles.module.scss index d7bb0e297a..8002cad487 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/text-details-wrapper/styles.module.scss @@ -20,7 +20,15 @@ top: -7%; } -.link { - text-decoration: underline; - color: var(--euiColorFullShade); -} +.closeRightPanel { + position: absolute; + top: 22px; + right: 18px; + + .closeBtn { + :global(svg) { + width: 20px; + height: 20px; + } + } +} \ No newline at end of file diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.spec.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.spec.tsx index eeee4b5efc..06e49e22b6 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.spec.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.spec.tsx @@ -1,10 +1,9 @@ import React from 'react' import { render } from 'uiSrc/utils/test-utils' -import TooLongKeyNameDetails - from 'uiSrc/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails' +import TooLongKeyNameDetails from './TooLongKeyNameDetails'; describe('TooLongKeyNameDetails', () => { it('should render', () => { - expect(render()).toBeTruthy() + expect(render()).toBeTruthy() }) }) diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.tsx index ed8aad1cab..829ee89e9d 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/too-long-key-name-details/TooLongKeyNameDetails.tsx @@ -1,21 +1,17 @@ import React from 'react' -import { EuiFlexGroup, EuiFlexItem, EuiText, EuiTitle } from '@elastic/eui' +import { EuiText, EuiTitle } from '@elastic/eui' -import styles from './styles.module.scss' +import TextDetailsWrapper from '../text-details-wrapper/TextDetailsWrapper' -const TooLongKeyNameDetails = () => ( -
- - - -

The key name is too long

-
- - Details cannot be displayed. - -
-
-
+const TooLongKeyNameDetails = ({ onClose }: { onClose: () => void}) => ( + + +

The key name is too long

+
+ + Details cannot be displayed. + +
) export default TooLongKeyNameDetails diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.spec.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.spec.tsx index 36e466120b..91e2bfce4c 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.spec.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.spec.tsx @@ -5,6 +5,6 @@ import UnsupportedTypeDetails from './UnsupportedTypeDetails' describe('UnsupportedTypeDetails', () => { it('should render', () => { - expect(render()).toBeTruthy() + expect(render()).toBeTruthy() }) }) diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx index fa7ab2a5c7..32f872dbb1 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/UnsupportedTypeDetails.tsx @@ -1,31 +1,29 @@ import React from 'react' -import { EuiFlexGroup, EuiFlexItem, EuiText, EuiTitle } from '@elastic/eui' +import { EuiText, EuiTitle } from '@elastic/eui' import { EXTERNAL_LINKS } from 'uiSrc/constants/links' +import TextDetailsWrapper from '../text-details-wrapper/TextDetailsWrapper'; + import styles from './styles.module.scss' -const UnsupportedTypeDetails = () => ( -
- - - -

This key type is not currently supported.

-
- - See{' '} - - our repository - - {' '}for the list of supported key types. - -
-
-
+const UnsupportedTypeDetails = ({ onClose }: { onClose: () => void }) => ( + + +

This key type is not currently supported.

+
+ + See{' '} + + our repository + + {' '}for the list of supported key types. + +
) export default UnsupportedTypeDetails diff --git a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/styles.module.scss b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/styles.module.scss index d7bb0e297a..aa781cbd8c 100644 --- a/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/styles.module.scss +++ b/redisinsight/ui/src/pages/browser/modules/key-details/components/unsupported-type-details/styles.module.scss @@ -1,26 +1,4 @@ -.container { - display: flex; - flex-grow: 1; - padding: 16px 40px 30px; - - text-align: center; - color: #FFFFFFAD; - - h4 { - font-size: 18px; - font-weight: normal; - margin-bottom: 18px; - line-height: 24px; - } -} - -.textWrapper { - max-width: 640px; - position: relative; - top: -7%; -} - .link { text-decoration: underline; - color: var(--euiColorFullShade); -} + color: var(--euiColorFullShade) !important; +} \ No newline at end of file