feat: show less when memo expanded (#4143)

* Added show less action and language files

* Renaming type as suggested in pr review
This commit is contained in:
RoccoSmit 2024-11-25 01:24:58 +11:00 committed by GitHub
parent 2a1c0bba6c
commit 54ee2bf3ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 35 additions and 7 deletions

View File

@ -26,13 +26,15 @@ interface Props {
onDoubleClick?: (e: React.MouseEvent) => void; onDoubleClick?: (e: React.MouseEvent) => void;
} }
type ContentCompactView = "ALL" | "SNIPPET";
const MemoContent: React.FC<Props> = (props: Props) => { const MemoContent: React.FC<Props> = (props: Props) => {
const { className, contentClassName, nodes, memoName, embeddedMemos, onClick, onDoubleClick } = props; const { className, contentClassName, nodes, memoName, embeddedMemos, onClick, onDoubleClick } = props;
const t = useTranslate(); const t = useTranslate();
const currentUser = useCurrentUser(); const currentUser = useCurrentUser();
const memoStore = useMemoStore(); const memoStore = useMemoStore();
const memoContentContainerRef = useRef<HTMLDivElement>(null); const memoContentContainerRef = useRef<HTMLDivElement>(null);
const [showCompactMode, setShowCompactMode] = useState<boolean>(false); const [showCompactMode, setShowCompactMode] = useState<ContentCompactView | undefined>(undefined);
const memo = memoName ? memoStore.getMemoByName(memoName) : null; const memo = memoName ? memoStore.getMemoByName(memoName) : null;
const allowEdit = !props.readonly && memo && (currentUser?.name === memo.creator || isSuperUser(currentUser)); const allowEdit = !props.readonly && memo && (currentUser?.name === memo.creator || isSuperUser(currentUser));
@ -46,7 +48,7 @@ const MemoContent: React.FC<Props> = (props: Props) => {
} }
if ((memoContentContainerRef.current as HTMLDivElement).getBoundingClientRect().height > MAX_DISPLAY_HEIGHT) { if ((memoContentContainerRef.current as HTMLDivElement).getBoundingClientRect().height > MAX_DISPLAY_HEIGHT) {
setShowCompactMode(true); setShowCompactMode("ALL");
} }
}, []); }, []);
@ -64,6 +66,10 @@ const MemoContent: React.FC<Props> = (props: Props) => {
let prevNode: Node | null = null; let prevNode: Node | null = null;
let skipNextLineBreakFlag = false; let skipNextLineBreakFlag = false;
const compactStates = {
ALL: { text: t("memo.show-more"), nextState: "SNIPPET" },
SNIPPET: { text: t("memo.show-less"), nextState: "ALL" },
};
return ( return (
<RendererContext.Provider <RendererContext.Provider
@ -80,7 +86,7 @@ const MemoContent: React.FC<Props> = (props: Props) => {
ref={memoContentContainerRef} ref={memoContentContainerRef}
className={clsx( className={clsx(
"relative w-full max-w-full word-break text-base leading-snug space-y-2 whitespace-pre-wrap", "relative w-full max-w-full word-break text-base leading-snug space-y-2 whitespace-pre-wrap",
showCompactMode && "line-clamp-6 max-h-60", showCompactMode == "ALL" && "line-clamp-6 max-h-60",
contentClassName, contentClassName,
)} )}
onClick={handleMemoContentClick} onClick={handleMemoContentClick}
@ -95,17 +101,19 @@ const MemoContent: React.FC<Props> = (props: Props) => {
skipNextLineBreakFlag = true; skipNextLineBreakFlag = true;
return <Renderer key={`${node.type}-${index}`} index={String(index)} node={node} />; return <Renderer key={`${node.type}-${index}`} index={String(index)} node={node} />;
})} })}
{showCompactMode && ( {showCompactMode == "ALL" && (
<div className="absolute bottom-0 left-0 w-full h-12 bg-gradient-to-b from-transparent dark:to-zinc-800 to-white pointer-events-none"></div> <div className="absolute bottom-0 left-0 w-full h-12 bg-gradient-to-b from-transparent dark:to-zinc-800 to-white pointer-events-none"></div>
)} )}
</div> </div>
{showCompactMode && ( {showCompactMode != undefined && (
<div className="w-full mt-1"> <div className="w-full mt-1">
<span <span
className="w-auto flex flex-row justify-start items-center cursor-pointer text-sm text-blue-600 dark:text-blue-400 hover:opacity-80" className="w-auto flex flex-row justify-start items-center cursor-pointer text-sm text-blue-600 dark:text-blue-400 hover:opacity-80"
onClick={() => setShowCompactMode(false)} onClick={() => {
setShowCompactMode(compactStates[showCompactMode].nextState as ContentCompactView);
}}
> >
<span>{t("memo.show-more")}</span> {compactStates[showCompactMode].text}
</span> </span>
</div> </div>
)} )}

View File

@ -109,6 +109,7 @@
"no-archived-memos": "No archived memos.", "no-archived-memos": "No archived memos.",
"search-placeholder": "Search memos", "search-placeholder": "Search memos",
"show-more": "Show more", "show-more": "Show more",
"show-less": "Show less",
"view-detail": "View Detail", "view-detail": "View Detail",
"visibility": { "visibility": {
"disabled": "Public memos are disabled", "disabled": "Public memos are disabled",

View File

@ -99,6 +99,7 @@
"no-archived-memos": "No hay memos archivados.", "no-archived-memos": "No hay memos archivados.",
"search-placeholder": "Buscar memos", "search-placeholder": "Buscar memos",
"show-more": "Mostrar más", "show-more": "Mostrar más",
"show-less": "Mostrar menos",
"view-detail": "Ver detalles", "view-detail": "Ver detalles",
"visibility": { "visibility": {
"disabled": "Los memos públicos están deshabilitados", "disabled": "Los memos públicos están deshabilitados",

View File

@ -111,6 +111,7 @@
"no-archived-memos": "Pas de memos archivés.", "no-archived-memos": "Pas de memos archivés.",
"search-placeholder": "Recherche de memos", "search-placeholder": "Recherche de memos",
"show-more": "Afficher plus", "show-more": "Afficher plus",
"show-less": "Afficher moins",
"to-do": "À faire", "to-do": "À faire",
"view-detail": "Voir le détail", "view-detail": "Voir le détail",
"visibility": { "visibility": {

View File

@ -107,6 +107,7 @@
"no-archived-memos": "Nincsenek archivált jegyzetek.", "no-archived-memos": "Nincsenek archivált jegyzetek.",
"search-placeholder": "Jegyzetek keresése", "search-placeholder": "Jegyzetek keresése",
"show-more": "Több mutatása", "show-more": "Több mutatása",
"show-less": "Mutass kevesebbet",
"view-detail": "Részletek", "view-detail": "Részletek",
"visibility": { "visibility": {
"disabled": "A nyilvános jegyzetek le vannak tiltva", "disabled": "A nyilvános jegyzetek le vannak tiltva",

View File

@ -109,6 +109,7 @@
"no-archived-memos": "Tidak ada memo yang diarsipkan.", "no-archived-memos": "Tidak ada memo yang diarsipkan.",
"search-placeholder": "Cari memo", "search-placeholder": "Cari memo",
"show-more": "Tampilkan lebih banyak", "show-more": "Tampilkan lebih banyak",
"show-less": "Tampilkan lebih sedikit",
"view-detail": "Lihat Detail", "view-detail": "Lihat Detail",
"visibility": { "visibility": {
"disabled": "Memo publik dinonaktifkan", "disabled": "Memo publik dinonaktifkan",

View File

@ -111,6 +111,7 @@
"no-archived-memos": "アーカイブされたメモはありません。", "no-archived-memos": "アーカイブされたメモはありません。",
"search-placeholder": "メモを検索", "search-placeholder": "メモを検索",
"show-more": "続きを見る", "show-more": "続きを見る",
"show-less": "表示を少なくする",
"to-do": "To-do", "to-do": "To-do",
"view-detail": "詳細を見る", "view-detail": "詳細を見る",
"visibility": { "visibility": {

View File

@ -109,6 +109,7 @@
"no-archived-memos": "დაარქივებული მემოები არ არის.", "no-archived-memos": "დაარქივებული მემოები არ არის.",
"search-placeholder": "მემოების ძიება", "search-placeholder": "მემოების ძიება",
"show-more": "მეტის ჩვენება", "show-more": "მეტის ჩვენება",
"show-less": "ნაკლების ჩვენება",
"view-detail": "დეტალების ნახვა", "view-detail": "დეტალების ნახვა",
"visibility": { "visibility": {
"disabled": "საჯარო მემოები გამორთულია", "disabled": "საჯარო მემოები გამორთულია",

View File

@ -96,6 +96,7 @@
"no-archived-memos": "보관처리된 메모가 없습니다.", "no-archived-memos": "보관처리된 메모가 없습니다.",
"search-placeholder": "메모 검색하기", "search-placeholder": "메모 검색하기",
"show-more": "더보기", "show-more": "더보기",
"show-less": "간략히 보기",
"view-detail": "자세히 보기", "view-detail": "자세히 보기",
"visibility": { "visibility": {
"disabled": "공개 메모는 비활성화됨", "disabled": "공개 메모는 비활성화됨",

View File

@ -109,6 +109,7 @@
"no-archived-memos": "कोणतेही संग्रहित मेमो नाहीत.", "no-archived-memos": "कोणतेही संग्रहित मेमो नाहीत.",
"search-placeholder": "मेमोज शोधा", "search-placeholder": "मेमोज शोधा",
"show-more": "अधिक दाखवा", "show-more": "अधिक दाखवा",
"show-less": "कमी दाखवा",
"view-detail": "तपशील दाखवा", "view-detail": "तपशील दाखवा",
"visibility": { "visibility": {
"disabled": "सार्वजनिक मेमो अक्षम केले आहेत", "disabled": "सार्वजनिक मेमो अक्षम केले आहेत",

View File

@ -108,6 +108,7 @@
"no-archived-memos": "Brak zarchiwizowanych notatek.", "no-archived-memos": "Brak zarchiwizowanych notatek.",
"search-placeholder": "Szukaj notatek", "search-placeholder": "Szukaj notatek",
"show-more": "Pokaż więcej", "show-more": "Pokaż więcej",
"show-less": "Pokaż mniej",
"view-detail": "Zobacz szczegóły", "view-detail": "Zobacz szczegóły",
"visibility": { "visibility": {
"disabled": "Publiczne notatki są wyłączone", "disabled": "Publiczne notatki są wyłączone",

View File

@ -111,6 +111,7 @@
"no-archived-memos": "Nenhum memo arquivado.", "no-archived-memos": "Nenhum memo arquivado.",
"search-placeholder": "Pesquisar memos", "search-placeholder": "Pesquisar memos",
"show-more": "Mostrar mais", "show-more": "Mostrar mais",
"show-less": "Mostrar menos",
"to-do": "Tarefas", "to-do": "Tarefas",
"view-detail": "Ver detalhes", "view-detail": "Ver detalhes",
"visibility": { "visibility": {

View File

@ -109,6 +109,7 @@
"no-archived-memos": "Não existem memos arquivados.", "no-archived-memos": "Não existem memos arquivados.",
"search-placeholder": "Pesquisar memos", "search-placeholder": "Pesquisar memos",
"show-more": "Mostrar mais", "show-more": "Mostrar mais",
"show-less": "Mostrar menos",
"view-detail": "Ver detalhes", "view-detail": "Ver detalhes",
"visibility": { "visibility": {
"disabled": "Memos públicos estão desativados", "disabled": "Memos públicos estão desativados",

View File

@ -106,6 +106,7 @@
"no-archived-memos": "Нет заархивированных записей.", "no-archived-memos": "Нет заархивированных записей.",
"search-placeholder": "Поиск записей", "search-placeholder": "Поиск записей",
"show-more": "Подробнее", "show-more": "Подробнее",
"show-less": "Показать меньше",
"view-detail": "Подробно", "view-detail": "Подробно",
"visibility": { "visibility": {
"disabled": "Публичные записи отключены", "disabled": "Публичные записи отключены",

View File

@ -109,6 +109,7 @@
"no-archived-memos": "Ni arhiviranih beležk.", "no-archived-memos": "Ni arhiviranih beležk.",
"search-placeholder": "Poišči beležke", "search-placeholder": "Poišči beležke",
"show-more": "Prikaži več", "show-more": "Prikaži več",
"show-less": "Prikaži manj",
"view-detail": "Poglej podrobnosti", "view-detail": "Poglej podrobnosti",
"visibility": { "visibility": {
"disabled": "Javne beležke so onemogočene", "disabled": "Javne beležke so onemogočene",

View File

@ -111,6 +111,7 @@
"no-archived-memos": "ไม่มีบันทึกช่วยจำที่ถูกเก็บถาวร", "no-archived-memos": "ไม่มีบันทึกช่วยจำที่ถูกเก็บถาวร",
"search-placeholder": "ค้นหาบันทึกช่วยจำ", "search-placeholder": "ค้นหาบันทึกช่วยจำ",
"show-more": "แสดงเพิ่มเติม", "show-more": "แสดงเพิ่มเติม",
"show-less": "แสดงน้อยลง",
"to-do": "สิ่งที่ต้องทำ", "to-do": "สิ่งที่ต้องทำ",
"view-detail": "ดูรายละเอียด", "view-detail": "ดูรายละเอียด",
"visibility": { "visibility": {

View File

@ -111,6 +111,7 @@
"no-archived-memos": "Arşivlenmiş not yok.", "no-archived-memos": "Arşivlenmiş not yok.",
"search-placeholder": "Notları ara", "search-placeholder": "Notları ara",
"show-more": "Daha fazlasını göster", "show-more": "Daha fazlasını göster",
"show-less": "Daha az göster",
"to-do": "Yapılacaklar", "to-do": "Yapılacaklar",
"view-detail": "Detayları görüntüle", "view-detail": "Detayları görüntüle",
"visibility": { "visibility": {

View File

@ -109,6 +109,7 @@
"no-archived-memos": "Немає архівованих нотаток.", "no-archived-memos": "Немає архівованих нотаток.",
"search-placeholder": "Пошук нотаток", "search-placeholder": "Пошук нотаток",
"show-more": "Показати більше", "show-more": "Показати більше",
"show-less": "Показувати менше",
"view-detail": "Переглянути деталі", "view-detail": "Переглянути деталі",
"visibility": { "visibility": {
"disabled": "Публічні нотатки вимкнені", "disabled": "Публічні нотатки вимкнені",

View File

@ -109,6 +109,7 @@
"no-archived-memos": "Không có ghi chú nào được lưu trữ.", "no-archived-memos": "Không có ghi chú nào được lưu trữ.",
"search-placeholder": "Tìm kiếm ghi chú", "search-placeholder": "Tìm kiếm ghi chú",
"show-more": "Hiển thị thêm", "show-more": "Hiển thị thêm",
"show-less": "Hiển thị ít hơn",
"view-detail": "Xem chi tiết", "view-detail": "Xem chi tiết",
"visibility": { "visibility": {
"disabled": "Ghi chú công khai đã bị vô hiệu hóa", "disabled": "Ghi chú công khai đã bị vô hiệu hóa",

View File

@ -109,6 +109,7 @@
"no-archived-memos": "没有已归档备忘录。", "no-archived-memos": "没有已归档备忘录。",
"search-placeholder": "搜索备忘录", "search-placeholder": "搜索备忘录",
"show-more": "查看更多", "show-more": "查看更多",
"show-less": "显示较少",
"view-detail": "查看详情", "view-detail": "查看详情",
"visibility": { "visibility": {
"disabled": "已禁用公开备忘录", "disabled": "已禁用公开备忘录",

View File

@ -111,6 +111,7 @@
"no-archived-memos": "無封存的 Memos", "no-archived-memos": "無封存的 Memos",
"search-placeholder": "搜尋 Memos", "search-placeholder": "搜尋 Memos",
"show-more": "查看更多", "show-more": "查看更多",
"show-less": "顯示較少",
"to-do": "待辦", "to-do": "待辦",
"view-detail": "查看詳情", "view-detail": "查看詳情",
"visibility": { "visibility": {