diff --git a/src/frontend/apps/impress/src/components/DropdownMenu.tsx b/src/frontend/apps/impress/src/components/DropdownMenu.tsx index cd2dc771..2f4196b5 100644 --- a/src/frontend/apps/impress/src/components/DropdownMenu.tsx +++ b/src/frontend/apps/impress/src/components/DropdownMenu.tsx @@ -1,7 +1,7 @@ import { PropsWithChildren, useState } from 'react'; import { css } from 'styled-components'; -import { Box, BoxButton, BoxProps, DropButton, Icon } from '@/components'; +import { Box, BoxButton, BoxProps, DropButton, Icon, Text } from '@/components'; import { useCunninghamTheme } from '@/cunningham'; export type DropdownMenuOption = { @@ -10,6 +10,7 @@ export type DropdownMenuOption = { testId?: string; callback?: () => void | Promise; danger?: boolean; + isSelected?: boolean; disabled?: boolean; show?: boolean; }; @@ -17,7 +18,9 @@ export type DropdownMenuOption = { export type DropdownMenuProps = { options: DropdownMenuOption[]; showArrow?: boolean; + label?: string; arrowCss?: BoxProps['$css']; + topMessage?: string; }; export const DropdownMenu = ({ @@ -25,6 +28,8 @@ export const DropdownMenu = ({ children, showArrow = false, arrowCss, + label, + topMessage, }: PropsWithChildren) => { const theme = useCunninghamTheme(); const spacings = theme.spacingsTokens(); @@ -39,9 +44,10 @@ export const DropdownMenu = ({ +
{children}
- - {options.map((option, index) => { + + {topMessage && ( + + {topMessage} + + )} + {options.map((option) => { if (option.show !== undefined && !option.show) { return; } - const isDisabled = option.disabled !== undefined && option.disabled; return ( - {option.icon && ( - + + {option.icon && ( + + )} + + {option.label} + + + {option.isSelected && ( + )} - {option.label} ); })} diff --git a/src/frontend/apps/impress/src/components/LoadMoreText.tsx b/src/frontend/apps/impress/src/components/LoadMoreText.tsx new file mode 100644 index 00000000..2b715b5b --- /dev/null +++ b/src/frontend/apps/impress/src/components/LoadMoreText.tsx @@ -0,0 +1,35 @@ +import { useTranslation } from 'react-i18next'; + +import { Box } from './Box'; +import { Icon } from './Icon'; +import { Text } from './Text'; + +type LoadMoreTextProps = { + ['data-testid']?: string; +}; + +export const LoadMoreText = ({ + 'data-testid': dataTestId, +}: LoadMoreTextProps) => { + const { t } = useTranslation(); + + return ( + + + + {t('Load more')} + + + ); +}; diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx index dfa11253..979b94ad 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx @@ -22,7 +22,8 @@ import { BlockNoteToolbar } from './BlockNoteToolbar'; const cssEditor = (readonly: boolean) => ` &, & > .bn-container, & .ProseMirror { - height:100% + height:100%; + }; & .bn-inline-content code { @@ -32,8 +33,7 @@ const cssEditor = (readonly: boolean) => ` } @media screen and (width <= 560px) { & .bn-editor { - padding-left: 40px; - padding-right: 10px; + ${readonly && `padding-left: 10px;`} }; .bn-side-menu[data-block-type=heading][data-level="1"] { diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx index 2bdfbc02..172c166e 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx @@ -1,7 +1,6 @@ -import { Alert, Loader, VariantType } from '@openfun/cunningham-react'; +import { Loader } from '@openfun/cunningham-react'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; -import { useTranslation } from 'react-i18next'; import { css } from 'styled-components'; import * as Y from 'yjs'; @@ -25,7 +24,6 @@ interface DocEditorProps { } export const DocEditor = ({ doc, versionId }: DocEditorProps) => { - const { t } = useTranslation(); const { isDesktop } = useResponsiveStore(); const isVersion = !!versionId && typeof versionId === 'string'; @@ -60,14 +58,6 @@ export const DocEditor = ({ doc, versionId }: DocEditorProps) => { )} - {!doc.abilities.partial_update && ( - - - {t(`Read only, you cannot edit this document.`)} - - - )} - { - +
); diff --git a/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx b/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx index c88a7406..bc31cd60 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx @@ -21,14 +21,12 @@ import { useEditorStore, usePanelEditorStore, } from '@/features/docs/doc-editor/'; -import { - Doc, - ModalRemoveDoc, - ModalShare, -} from '@/features/docs/doc-management'; +import { Doc, ModalRemoveDoc } from '@/features/docs/doc-management'; import { ModalSelectVersion } from '@/features/docs/doc-versioning'; import { useResponsiveStore } from '@/stores'; +import { DocShareModal } from '../../doc-share/component/DocShareModal'; + import { ModalPDF } from './ModalExport'; interface DocToolBoxProps { @@ -42,10 +40,10 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => { const spacings = spacingsTokens(); const colors = colorsTokens(); - const [isModalShareOpen, setIsModalShareOpen] = useState(false); const [isModalRemoveOpen, setIsModalRemoveOpen] = useState(false); const [isModalPDFOpen, setIsModalPDFOpen] = useState(false); const selectHistoryModal = useModal(); + const modalShare = useModal(); const { setIsPanelOpen, setIsPanelTableContentOpen } = usePanelEditorStore(); const { isSmallMobile, isDesktop } = useResponsiveStore(); @@ -60,7 +58,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => { label: t('Share'), icon: 'upload', callback: () => { - setIsModalShareOpen(true); + modalShare.open(); }, }, { @@ -72,6 +70,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => { }, ] : []), + { label: t('Version history'), icon: 'history', @@ -149,7 +148,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {