diff --git a/libraries/fetch-utils/test/unit/helpers/TestServer.js b/libraries/fetch-utils/test/unit/helpers/TestServer.js index 5d080445e0..5a0eae03e9 100644 --- a/libraries/fetch-utils/test/unit/helpers/TestServer.js +++ b/libraries/fetch-utils/test/unit/helpers/TestServer.js @@ -57,7 +57,8 @@ class TestServer { }) this.app.get('/json/basic-auth', (req, res) => { - const expectedAuth = 'Basic ' + Buffer.from('user:pass').toString('base64') + const expectedAuth = + 'Basic ' + Buffer.from('user:pass').toString('base64') if (req.headers.authorization === expectedAuth) { res.json({ key: 'verysecret' }) } else { diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index e4945a0a33..bef36a902c 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -441,7 +441,6 @@ "history_adding_label": "", "history_are_you_sure_delete_label": "", "history_compare_from_this_version": "", - "history_compare_to_selected_version": "", "history_compare_up_to_this_version": "", "history_delete_label": "", "history_deleting_label": "", diff --git a/services/web/frontend/fonts/material-symbols/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2 b/services/web/frontend/fonts/material-symbols/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2 index 3926ea8f62..5e2d030f32 100644 Binary files a/services/web/frontend/fonts/material-symbols/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2 and b/services/web/frontend/fonts/material-symbols/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2 differ diff --git a/services/web/frontend/js/features/history/components/change-list/dropdown/label-dropdown-content.tsx b/services/web/frontend/js/features/history/components/change-list/dropdown/label-dropdown-content.tsx index 72d3e4fea0..f78aa0888a 100644 --- a/services/web/frontend/js/features/history/components/change-list/dropdown/label-dropdown-content.tsx +++ b/services/web/frontend/js/features/history/components/change-list/dropdown/label-dropdown-content.tsx @@ -2,21 +2,16 @@ import Download from './menu-item/download' import { Version } from '../../../services/types/update' import { ActiveDropdown } from '../../../hooks/use-dropdown-active-item' import { useCallback } from 'react' -import CompareItems from './menu-item/compare-items' type LabelDropdownContentProps = { projectId: string version: Version - versionTimestamp: number - selected: boolean closeDropdownForItem: ActiveDropdown['closeDropdownForItem'] } function LabelDropdownContent({ projectId, version, - versionTimestamp, - selected, closeDropdownForItem, }: LabelDropdownContentProps) { const closeDropdown = useCallback(() => { @@ -30,16 +25,6 @@ function LabelDropdownContent({ version={version} closeDropdown={closeDropdown} /> - ) } diff --git a/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare-items.tsx b/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare-items.tsx index 45dc0a84ec..f2d76d6dfe 100644 --- a/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare-items.tsx +++ b/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare-items.tsx @@ -19,16 +19,44 @@ function CompareItems({ const { t } = useTranslation() const { selection } = useHistoryContext() const { updateRange: selRange, comparing } = selection - const notASelectionBoundary = + + // Comparing mode variables + const notASelectionBoundaryComparingMode = !!selRange && comparing && updateRange.toV !== selRange.toV && updateRange.fromV !== selRange.fromV const showCompareWithSelected = !comparing && !!selRange && !selected - const showCompareToThis = - notASelectionBoundary && updateRange.toV > selRange.fromV - const showCompareFromThis = - notASelectionBoundary && updateRange.fromV < selRange.toV + const showCompareToThisComparingMode = + notASelectionBoundaryComparingMode && updateRange.toV > selRange.toV + const showCompareFromThisComparingMode = + notASelectionBoundaryComparingMode && updateRange.fromV < selRange.fromV + + // Normal mode variables + const notASelectionBoundaryNormalMode = + !!selRange && + updateRange.toV !== selRange.toV && + updateRange.fromV !== selRange.fromV + const showCompareToThisNormalMode = + notASelectionBoundaryNormalMode && updateRange.toV > selRange.toV + const showCompareFromThisNormalMode = + notASelectionBoundaryNormalMode && updateRange.fromV < selRange.fromV + + let iconTypeNonSelectedVersion = '' + let toolTipDescriptionNonSelectedVersion = '' + + if (showCompareToThisNormalMode) { + iconTypeNonSelectedVersion = 'align_start' + toolTipDescriptionNonSelectedVersion = t( + 'history_compare_up_to_this_version' + ) + } + if (showCompareFromThisNormalMode) { + iconTypeNonSelectedVersion = 'align_end' + toolTipDescriptionNonSelectedVersion = t( + 'history_compare_from_this_version' + ) + } return ( <> @@ -36,10 +64,16 @@ function CompareItems({ + } /> ) : null} - {showCompareFromThis ? ( + {showCompareFromThisComparingMode ? ( } + toolTipDescription={t('history_compare_from_this_version')} + icon={ + + } /> ) : null} - {showCompareToThis ? ( + {showCompareToThisComparingMode ? ( } + toolTipDescription={t('history_compare_up_to_this_version')} + icon={ + + } /> ) : null} diff --git a/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare.tsx b/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare.tsx index 45b9c645ad..7d9fb27e63 100644 --- a/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare.tsx +++ b/services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare.tsx @@ -1,26 +1,27 @@ -import { MenuItem, MenuItemProps } from 'react-bootstrap' import Icon from '../../../../../../shared/components/icon' import { useHistoryContext } from '../../../../context/history-context' import { UpdateRange } from '../../../../services/types/update' import { ReactNode } from 'react' +import Tooltip from '../../../../../../shared/components/tooltip' +import { Button } from 'react-bootstrap' type CompareProps = { comparisonRange: UpdateRange - text: string icon?: ReactNode + toolTipDescription?: string closeDropdown: () => void } function Compare({ comparisonRange, - text, closeDropdown, + toolTipDescription, icon = , ...props }: CompareProps) { const { setSelection } = useHistoryContext() - const handleCompareVersion = (e: React.MouseEvent) => { + const handleCompareVersion = (e: React.MouseEvent + ) } diff --git a/services/web/frontend/js/features/history/components/change-list/dropdown/version-dropdown-content.tsx b/services/web/frontend/js/features/history/components/change-list/dropdown/version-dropdown-content.tsx index 673259ad5a..3dd89c8646 100644 --- a/services/web/frontend/js/features/history/components/change-list/dropdown/version-dropdown-content.tsx +++ b/services/web/frontend/js/features/history/components/change-list/dropdown/version-dropdown-content.tsx @@ -3,24 +3,18 @@ import Download from './menu-item/download' import { LoadedUpdate } from '../../../services/types/update' import { useCallback } from 'react' import { ActiveDropdown } from '../../../hooks/use-dropdown-active-item' -import CompareItems from './menu-item/compare-items' -import { updateRangeForUpdate } from '../../../utils/history-details' type VersionDropdownContentProps = { projectId: string update: LoadedUpdate - selected: boolean closeDropdownForItem: ActiveDropdown['closeDropdownForItem'] } function VersionDropdownContent({ projectId, update, - selected, closeDropdownForItem, }: VersionDropdownContentProps) { - const updateRange = updateRangeForUpdate(update) - const closeDropdown = useCallback(() => { closeDropdownForItem(update) }, [closeDropdownForItem, update]) @@ -37,11 +31,6 @@ function VersionDropdownContent({ version={update.toV} closeDropdown={closeDropdown} /> - ) } diff --git a/services/web/frontend/js/features/history/components/change-list/history-version.tsx b/services/web/frontend/js/features/history/components/change-list/history-version.tsx index b5fa4af67b..592226df1a 100644 --- a/services/web/frontend/js/features/history/components/change-list/history-version.tsx +++ b/services/web/frontend/js/features/history/components/change-list/history-version.tsx @@ -10,9 +10,10 @@ import { LoadedUpdate } from '../../services/types/update' import classNames from 'classnames' import { updateRangeForUpdate } from '../../utils/history-details' import { ActiveDropdown } from '../../hooks/use-dropdown-active-item' -import { memo } from 'react' +import { memo, useCallback } from 'react' import { HistoryContextValue } from '../../context/types/history-context-value' import VersionDropdownContent from './dropdown/version-dropdown-content' +import CompareItems from './dropdown/menu-item/compare-items' type HistoryVersionProps = { update: LoadedUpdate @@ -45,6 +46,12 @@ function HistoryVersion({ }: HistoryVersionProps) { const orderedLabels = orderBy(update.labels, ['created_at'], ['desc']) + const closeDropdown = useCallback(() => { + closeDropdownForItem(update) + }, [closeDropdownForItem, update]) + + const updateRange = updateRangeForUpdate(update) + return ( <> {showDivider ?
: null} @@ -75,7 +82,6 @@ function HistoryVersion({ > {dropdownActive ? ( )} + + {!selected ? ( + + + + ) : null} +