From 8ef595700c1cbb8e3d3f235b1e2e9d446b29bf30 Mon Sep 17 00:00:00 2001 From: ilkin-overleaf <100852799+ilkin-overleaf@users.noreply.github.com> Date: Wed, 26 Apr 2023 10:52:25 +0300 Subject: [PATCH] Merge pull request #12773 from overleaf/ii-history-react-changes-list-dropdown [web] Actions dropdown history migration GitOrigin-RevId: 6b7055501c5eb1529b1794db92bb9f5f3faa6648 --- .../web/frontend/extracted-translations.json | 7 + .../change-list/add-label-modal.tsx | 108 ++++++++++++++++ .../change-list/dropdown/actions-dropdown.tsx | 43 +++++++ .../dropdown/history-version-dropdown.tsx | 40 ++++++ .../change-list/dropdown/label-dropdown.tsx | 37 ++++++ .../dropdown/menu-item/add-label.tsx | 30 +++++ .../dropdown/menu-item/compare.tsx | 63 +++++++++ .../dropdown/menu-item/download.tsx | 33 +++++ .../change-list/history-version-details.tsx | 47 +++++++ .../change-list/history-version.tsx | 121 +++++++----------- .../components/change-list/labels-list.tsx | 95 +++++++++----- .../components/change-list/modal-error.tsx | 24 ++++ .../components/change-list/tag-tooltip.tsx | 56 +++----- .../components/change-list/toggle-switch.tsx | 14 +- .../history/context/history-context.tsx | 20 ++- .../context/types/history-context-value.ts | 5 +- .../history/hooks/use-add-or-remove-labels.ts | 46 +++++++ .../js/features/history/services/api.ts | 22 +++- .../features/history/services/types/label.ts | 10 +- .../features/history/utils/history-details.ts | 13 +- .../js/features/history/utils/label.ts | 2 + .../dropdown/dropdown-toggle-with-tooltip.tsx | 45 +++++++ .../stories/history/toggle-switch.stories.tsx | 13 +- .../stylesheets/app/editor/history-react.less | 56 +++++++- .../stylesheets/components/badge.less | 2 +- services/web/locales/en.json | 3 + .../history/components/change-list.spec.tsx | 19 +-- 27 files changed, 788 insertions(+), 186 deletions(-) create mode 100644 services/web/frontend/js/features/history/components/change-list/add-label-modal.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/dropdown/actions-dropdown.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/dropdown/history-version-dropdown.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/dropdown/label-dropdown.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/add-label.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/compare.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/dropdown/menu-item/download.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/history-version-details.tsx create mode 100644 services/web/frontend/js/features/history/components/change-list/modal-error.tsx create mode 100644 services/web/frontend/js/features/history/hooks/use-add-or-remove-labels.ts create mode 100644 services/web/frontend/js/shared/components/dropdown/dropdown-toggle-with-tooltip.tsx diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 5e7b089d5b..215529a616 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -354,15 +354,21 @@ "hide_document_preamble": "", "hide_outline": "", "history": "", + "history_add_label": "", + "history_adding_label": "", "history_are_you_sure_delete_label": "", + "history_compare_with_this_version": "", "history_delete_label": "", "history_deleting_label": "", + "history_download_this_version": "", "history_entry_origin_dropbox": "", "history_entry_origin_git": "", "history_entry_origin_github": "", "history_entry_origin_upload": "", "history_label_created_by": "", "history_label_project_current_state": "", + "history_label_this_version": "", + "history_new_label_name": "", "history_view_a11y_description": "", "history_view_all": "", "history_view_labels": "", @@ -512,6 +518,7 @@ "menu": "", "month": "", "more": "", + "more_actions": "", "n_items": "", "n_items_plural": "", "n_more_updates_above": "", diff --git a/services/web/frontend/js/features/history/components/change-list/add-label-modal.tsx b/services/web/frontend/js/features/history/components/change-list/add-label-modal.tsx new file mode 100644 index 0000000000..95a148ae2a --- /dev/null +++ b/services/web/frontend/js/features/history/components/change-list/add-label-modal.tsx @@ -0,0 +1,108 @@ +import { useTranslation } from 'react-i18next' +import { useState } from 'react' +import { Modal, FormGroup, FormControl } from 'react-bootstrap' +import ModalError from './modal-error' +import AccessibleModal from '../../../../shared/components/accessible-modal' +import useAsync from '../../../../shared/hooks/use-async' +import useAbortController from '../../../../shared/hooks/use-abort-controller' +import useAddOrRemoveLabels from '../../hooks/use-add-or-remove-labels' +import { useHistoryContext } from '../../context/history-context' +import { addLabel } from '../../services/api' +import { Label } from '../../services/types/label' + +type AddLabelModalProps = { + show: boolean + setShow: React.Dispatch> + version: number +} + +function AddLabelModal({ show, setShow, version }: AddLabelModalProps) { + const { t } = useTranslation() + const [comment, setComment] = useState('') + const { + isLoading, + isSuccess, + isError, + error, + data: label, + reset, + runAsync, + } = useAsync