mirror of
https://github.com/zadam/trilium.git
synced 2025-12-05 06:54:23 +01:00
Compare commits
27 Commits
df55ecd82a
...
2131153924
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2131153924 | ||
|
|
732494dfc5 | ||
|
|
b8748b856a | ||
|
|
cc71f15700 | ||
|
|
124ef640b1 | ||
|
|
f5e3df0cd2 | ||
|
|
c8431181c8 | ||
|
|
07fb5ab017 | ||
|
|
6735b257b4 | ||
|
|
cef242a9ce | ||
|
|
2923d917e5 | ||
|
|
9a76a9069c | ||
|
|
8e1d796870 | ||
|
|
8b0d4e5c3b | ||
|
|
d51a0d415b | ||
|
|
a79c8b4add | ||
|
|
b359b48ec3 | ||
|
|
a0e1cc4154 | ||
|
|
625c0ed7dc | ||
|
|
1ac241ad1b | ||
|
|
2c447a4293 | ||
|
|
6c1886c5ca | ||
|
|
9c86145ff8 | ||
|
|
6dcc3a7e81 | ||
|
|
921b56a89e | ||
|
|
9d0b532aeb | ||
|
|
cc468d964f |
@ -592,11 +592,6 @@ button.btn-sm {
|
|||||||
color: var(--left-pane-text-color);
|
color: var(--left-pane-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn.active:not(.btn-primary) {
|
|
||||||
background-color: var(--button-disabled-background-color) !important;
|
|
||||||
opacity: 0.4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ck.ck-block-toolbar-button {
|
.ck.ck-block-toolbar-button {
|
||||||
transform: translateX(7px);
|
transform: translateX(7px);
|
||||||
color: var(--muted-text-color);
|
color: var(--muted-text-color);
|
||||||
|
|||||||
@ -41,6 +41,9 @@
|
|||||||
--cmd-button-keyboard-shortcut-color: white;
|
--cmd-button-keyboard-shortcut-color: white;
|
||||||
--cmd-button-disabled-opacity: 0.5;
|
--cmd-button-disabled-opacity: 0.5;
|
||||||
|
|
||||||
|
--button-group-active-button-background: #ffffff4e;
|
||||||
|
--button-group-active-button-text-color: white;
|
||||||
|
|
||||||
--icon-button-color: currentColor;
|
--icon-button-color: currentColor;
|
||||||
--icon-button-hover-background: var(--hover-item-background-color);
|
--icon-button-hover-background: var(--hover-item-background-color);
|
||||||
--icon-button-hover-color: var(--hover-item-text-color);
|
--icon-button-hover-color: var(--hover-item-text-color);
|
||||||
|
|||||||
@ -41,6 +41,9 @@
|
|||||||
--cmd-button-keyboard-shortcut-color: black;
|
--cmd-button-keyboard-shortcut-color: black;
|
||||||
--cmd-button-disabled-opacity: 0.5;
|
--cmd-button-disabled-opacity: 0.5;
|
||||||
|
|
||||||
|
--button-group-active-button-background: #00000026;
|
||||||
|
--button-group-active-button-text-color: black;
|
||||||
|
|
||||||
--icon-button-color: currentColor;
|
--icon-button-color: currentColor;
|
||||||
--icon-button-hover-background: var(--hover-item-background-color);
|
--icon-button-hover-background: var(--hover-item-background-color);
|
||||||
--icon-button-hover-color: var(--hover-item-text-color);
|
--icon-button-hover-color: var(--hover-item-text-color);
|
||||||
|
|||||||
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
.modal .modal-header .btn-close,
|
.modal .modal-header .btn-close,
|
||||||
.modal .modal-header .help-button,
|
.modal .modal-header .help-button,
|
||||||
|
.modal .modal-header .custom-title-bar-button,
|
||||||
#toast-container .toast .toast-header .btn-close {
|
#toast-container .toast .toast-header .btn-close {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@ -55,15 +56,17 @@
|
|||||||
font-family: boxicons;
|
font-family: boxicons;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal .modal-header .help-button {
|
.modal .modal-header .help-button,
|
||||||
|
.modal .modal-header .custom-title-bar-button {
|
||||||
margin-inline-end: 0;
|
margin-inline-end: 0;
|
||||||
font-size: calc(var(--modal-control-button-size) * .75);
|
font-size: calc(var(--modal-control-button-size) * .70);
|
||||||
font-family: unset;
|
font-family: unset;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal .modal-header .btn-close:hover,
|
.modal .modal-header .btn-close:hover,
|
||||||
.modal .modal-header .help-button:hover,
|
.modal .modal-header .help-button:hover,
|
||||||
|
.modal .modal-header .custom-title-bar-button:hover,
|
||||||
#toast-container .toast .toast-header .btn-close:hover {
|
#toast-container .toast .toast-header .btn-close:hover {
|
||||||
background: var(--modal-control-button-hover-background);
|
background: var(--modal-control-button-hover-background);
|
||||||
color: var(--modal-control-button-hover-color);
|
color: var(--modal-control-button-hover-color);
|
||||||
@ -71,6 +74,7 @@
|
|||||||
|
|
||||||
.modal .modal-header .btn-close:active,
|
.modal .modal-header .btn-close:active,
|
||||||
.modal .modal-header .help-button:active,
|
.modal .modal-header .help-button:active,
|
||||||
|
.modal .modal-header .custom-title-bar-button:active,
|
||||||
#toast-container .toast .toast-header .btn-close:active {
|
#toast-container .toast .toast-header .btn-close:active {
|
||||||
transform: scale(.85);
|
transform: scale(.85);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -146,6 +146,14 @@ button.btn.btn-success kbd {
|
|||||||
outline: 2px solid var(--input-focus-outline-color);
|
outline: 2px solid var(--input-focus-outline-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Button groups */
|
||||||
|
|
||||||
|
/* Active button */
|
||||||
|
:root .btn-group button.btn.active {
|
||||||
|
background-color: var(--button-group-active-button-background);
|
||||||
|
color: var(--button-group-active-button-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Input boxes
|
* Input boxes
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1448,6 +1448,14 @@ div.promoted-attribute-cell .multiplicity:has(span) span {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.promoted-attribute-cell.promoted-attribute-label-color {
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.promoted-attribute-cell.promoted-attribute-label-color .input-group {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Floating buttons
|
* Floating buttons
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2098,7 +2098,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "当前正在查看一个只读笔记。",
|
"read-only-note": "当前正在查看一个只读笔记。",
|
||||||
"auto-read-only-note": "这条笔记以只读模式显示便于快速加载。",
|
"auto-read-only-note": "这条笔记以只读模式显示便于快速加载。",
|
||||||
"auto-read-only-learn-more": "了解更多",
|
|
||||||
"edit-note": "编辑笔记"
|
"edit-note": "编辑笔记"
|
||||||
},
|
},
|
||||||
"note-color": {
|
"note-color": {
|
||||||
|
|||||||
@ -2097,7 +2097,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "Aktuelle Notiz wird im Lese-Modus angezeigt.",
|
"read-only-note": "Aktuelle Notiz wird im Lese-Modus angezeigt.",
|
||||||
"auto-read-only-note": "Diese Notiz wird im Nur-Lesen-Modus angezeigt, um ein schnelleres Laden zu ermöglichen.",
|
"auto-read-only-note": "Diese Notiz wird im Nur-Lesen-Modus angezeigt, um ein schnelleres Laden zu ermöglichen.",
|
||||||
"auto-read-only-learn-more": "Mehr erfahren",
|
|
||||||
"edit-note": "Notiz bearbeiten"
|
"edit-note": "Notiz bearbeiten"
|
||||||
},
|
},
|
||||||
"calendar_view": {
|
"calendar_view": {
|
||||||
|
|||||||
@ -112,6 +112,7 @@
|
|||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"title": "Cheatsheet",
|
"title": "Cheatsheet",
|
||||||
|
"editShortcuts": "Edit keyboard shortcuts",
|
||||||
"noteNavigation": "Note navigation",
|
"noteNavigation": "Note navigation",
|
||||||
"goUpDown": "go up/down in the list of notes",
|
"goUpDown": "go up/down in the list of notes",
|
||||||
"collapseExpand": "collapse/expand node",
|
"collapseExpand": "collapse/expand node",
|
||||||
@ -385,6 +386,7 @@
|
|||||||
"workspace_template": "This note will appear in the selection of available template when creating new note, but only when hoisted into a workspace containing this template",
|
"workspace_template": "This note will appear in the selection of available template when creating new note, but only when hoisted into a workspace containing this template",
|
||||||
"search_home": "new search notes will be created as children of this note",
|
"search_home": "new search notes will be created as children of this note",
|
||||||
"workspace_search_home": "new search notes will be created as children of this note when hoisted to some ancestor of this workspace note",
|
"workspace_search_home": "new search notes will be created as children of this note when hoisted to some ancestor of this workspace note",
|
||||||
|
"auto_execute_search": "Automatically executes the search defined in a saved search note and switches to the Collection Properties tab if any notes match the query",
|
||||||
"inbox": "default inbox location for new notes - when you create a note using \"new note\" button in the sidebar, notes will be created as child notes in the note marked as with <code>#inbox</code> label.",
|
"inbox": "default inbox location for new notes - when you create a note using \"new note\" button in the sidebar, notes will be created as child notes in the note marked as with <code>#inbox</code> label.",
|
||||||
"workspace_inbox": "default inbox location for new notes when hoisted to some ancestor of this workspace note",
|
"workspace_inbox": "default inbox location for new notes when hoisted to some ancestor of this workspace note",
|
||||||
"sql_console_home": "default location of SQL console notes",
|
"sql_console_home": "default location of SQL console notes",
|
||||||
|
|||||||
@ -2096,7 +2096,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "Actualmente, está viendo una nota de solo lectura.",
|
"read-only-note": "Actualmente, está viendo una nota de solo lectura.",
|
||||||
"auto-read-only-note": "Esta nota se muestra en modo de solo lectura para una carga más rápida.",
|
"auto-read-only-note": "Esta nota se muestra en modo de solo lectura para una carga más rápida.",
|
||||||
"auto-read-only-learn-more": "Para saber más",
|
|
||||||
"edit-note": "Editar nota"
|
"edit-note": "Editar nota"
|
||||||
},
|
},
|
||||||
"calendar_view": {
|
"calendar_view": {
|
||||||
|
|||||||
@ -2092,7 +2092,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "Stai visualizzando una nota di sola lettura.",
|
"read-only-note": "Stai visualizzando una nota di sola lettura.",
|
||||||
"auto-read-only-note": "Questa nota viene visualizzata in modalità di sola lettura per un caricamento più rapido.",
|
"auto-read-only-note": "Questa nota viene visualizzata in modalità di sola lettura per un caricamento più rapido.",
|
||||||
"auto-read-only-learn-more": "Per saperne di più",
|
|
||||||
"edit-note": "Modifica nota"
|
"edit-note": "Modifica nota"
|
||||||
},
|
},
|
||||||
"calendar_view": {
|
"calendar_view": {
|
||||||
|
|||||||
@ -2098,7 +2098,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "現在、読み取り専用のノートを表示しています。",
|
"read-only-note": "現在、読み取り専用のノートを表示しています。",
|
||||||
"auto-read-only-note": "このノートは読み込みを高速化するために読み取り専用モードで表示されています。",
|
"auto-read-only-note": "このノートは読み込みを高速化するために読み取り専用モードで表示されています。",
|
||||||
"auto-read-only-learn-more": "さらに詳しく",
|
|
||||||
"edit-note": "ノートを編集"
|
"edit-note": "ノートを編集"
|
||||||
},
|
},
|
||||||
"note-color": {
|
"note-color": {
|
||||||
|
|||||||
@ -2097,7 +2097,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "Vizualizați o notiță în modul doar în citire.",
|
"read-only-note": "Vizualizați o notiță în modul doar în citire.",
|
||||||
"auto-read-only-note": "Această notiță este afișată în modul doar în citire din motive de performanță.",
|
"auto-read-only-note": "Această notiță este afișată în modul doar în citire din motive de performanță.",
|
||||||
"auto-read-only-learn-more": "Mai multe detalii",
|
|
||||||
"edit-note": "Editează notița"
|
"edit-note": "Editează notița"
|
||||||
},
|
},
|
||||||
"calendar_view": {
|
"calendar_view": {
|
||||||
|
|||||||
@ -2098,7 +2098,6 @@
|
|||||||
"read-only-info": {
|
"read-only-info": {
|
||||||
"read-only-note": "目前正在檢視唯讀筆記。",
|
"read-only-note": "目前正在檢視唯讀筆記。",
|
||||||
"auto-read-only-note": "此筆記以唯讀模式顯示以加快載入速度。",
|
"auto-read-only-note": "此筆記以唯讀模式顯示以加快載入速度。",
|
||||||
"auto-read-only-learn-more": "了解更多",
|
|
||||||
"edit-note": "編輯筆記"
|
"edit-note": "編輯筆記"
|
||||||
},
|
},
|
||||||
"note-color": {
|
"note-color": {
|
||||||
|
|||||||
@ -236,6 +236,7 @@ const ATTR_HELP: Record<string, Record<string, string>> = {
|
|||||||
workspaceTemplate: t("attribute_detail.workspace_template"),
|
workspaceTemplate: t("attribute_detail.workspace_template"),
|
||||||
searchHome: t("attribute_detail.search_home"),
|
searchHome: t("attribute_detail.search_home"),
|
||||||
workspaceSearchHome: t("attribute_detail.workspace_search_home"),
|
workspaceSearchHome: t("attribute_detail.workspace_search_home"),
|
||||||
|
autoExecuteSearch: t("attribute_detail.auto_execute_search"),
|
||||||
inbox: t("attribute_detail.inbox"),
|
inbox: t("attribute_detail.inbox"),
|
||||||
workspaceInbox: t("attribute_detail.workspace_inbox"),
|
workspaceInbox: t("attribute_detail.workspace_inbox"),
|
||||||
sqlConsoleHome: t("attribute_detail.sql_console_home"),
|
sqlConsoleHome: t("attribute_detail.sql_console_home"),
|
||||||
|
|||||||
@ -33,8 +33,8 @@ body.mobile .modal.popup-editor-dialog .modal-dialog {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal.popup-editor-dialog .modal-header .title-row > * {
|
.modal.popup-editor-dialog .modal-header .note-title-widget {
|
||||||
margin: 5px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal.popup-editor-dialog .modal-body {
|
.modal.popup-editor-dialog .modal-body {
|
||||||
@ -66,12 +66,17 @@ body.mobile .modal.popup-editor-dialog .modal-dialog {
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal.popup-editor-dialog div.promoted-attributes-container {
|
||||||
|
margin-block: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.modal.popup-editor-dialog .classic-toolbar-widget {
|
.modal.popup-editor-dialog .classic-toolbar-widget {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
|
margin-inline: 8px;
|
||||||
top: 0;
|
top: 0;
|
||||||
inset-inline-start: 0;
|
inset-inline-start: 0;
|
||||||
inset-inline-end: 0;
|
inset-inline-end: 0;
|
||||||
background: transparent;
|
background: var(--modal-background-color);
|
||||||
z-index: 998;
|
z-index: 998;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,6 +60,11 @@ export default function PopupEditor() {
|
|||||||
<DialogWrapper>
|
<DialogWrapper>
|
||||||
<Modal
|
<Modal
|
||||||
title={<TitleRow />}
|
title={<TitleRow />}
|
||||||
|
customTitleBarButtons={[{
|
||||||
|
iconClassName: "bx-expand-alt",
|
||||||
|
title: "Switch to full editor",
|
||||||
|
onClick: () => {/* TO DO */}
|
||||||
|
}]}
|
||||||
className="popup-editor-dialog"
|
className="popup-editor-dialog"
|
||||||
size="lg"
|
size="lg"
|
||||||
show={shown}
|
show={shown}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import Modal from "../react/Modal.jsx";
|
import Modal from "../react/Modal.jsx";
|
||||||
import { t } from "../../services/i18n.js";
|
import { t } from "../../services/i18n.js";
|
||||||
import { ComponentChildren } from "preact";
|
import { ComponentChildren } from "preact";
|
||||||
import { CommandNames } from "../../components/app_context.js";
|
import appContext, { CommandNames } from "../../components/app_context.js";
|
||||||
import RawHtml from "../react/RawHtml.jsx";
|
import RawHtml from "../react/RawHtml.jsx";
|
||||||
import { useEffect, useState } from "preact/hooks";
|
import { useEffect, useState } from "preact/hooks";
|
||||||
import keyboard_actions from "../../services/keyboard_actions.js";
|
import keyboard_actions from "../../services/keyboard_actions.js";
|
||||||
@ -14,6 +14,7 @@ export default function HelpDialog() {
|
|||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
title={t("help.title")} className="help-dialog use-tn-links" minWidth="90%" size="lg" scrollable
|
title={t("help.title")} className="help-dialog use-tn-links" minWidth="90%" size="lg" scrollable
|
||||||
|
customTitleBarButtons={[{title: t("help.editShortcuts"), iconClassName: "bxs-pencil", onClick: editShortcuts}]}
|
||||||
onHidden={() => setShown(false)}
|
onHidden={() => setShown(false)}
|
||||||
show={shown}
|
show={shown}
|
||||||
>
|
>
|
||||||
@ -160,3 +161,7 @@ function Card({ title, children }: { title: string, children: ComponentChildren
|
|||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function editShortcuts() {
|
||||||
|
appContext.tabManager.openContextWithNote("_optionsShortcuts", { activate: true });
|
||||||
|
}
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
import clsx from "clsx";
|
||||||
import { useEffect, useRef, useMemo } from "preact/hooks";
|
import { useEffect, useRef, useMemo } from "preact/hooks";
|
||||||
import { t } from "../../services/i18n";
|
import { t } from "../../services/i18n";
|
||||||
import { ComponentChildren } from "preact";
|
import { ComponentChildren } from "preact";
|
||||||
@ -7,9 +8,16 @@ import { Modal as BootstrapModal } from "bootstrap";
|
|||||||
import { memo } from "preact/compat";
|
import { memo } from "preact/compat";
|
||||||
import { useSyncedRef } from "./hooks";
|
import { useSyncedRef } from "./hooks";
|
||||||
|
|
||||||
|
interface CustomTitleBarButton {
|
||||||
|
title: string;
|
||||||
|
iconClassName: string;
|
||||||
|
onClick: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
interface ModalProps {
|
interface ModalProps {
|
||||||
className: string;
|
className: string;
|
||||||
title: string | ComponentChildren;
|
title: string | ComponentChildren;
|
||||||
|
customTitleBarButtons?: (CustomTitleBarButton | null)[];
|
||||||
size: "xl" | "lg" | "md" | "sm";
|
size: "xl" | "lg" | "md" | "sm";
|
||||||
children: ComponentChildren;
|
children: ComponentChildren;
|
||||||
/**
|
/**
|
||||||
@ -72,7 +80,7 @@ interface ModalProps {
|
|||||||
noFocus?: boolean;
|
noFocus?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Modal({ children, className, size, title, header, footer, footerStyle, footerAlignment, onShown, onSubmit, helpPageId, minWidth, maxWidth, zIndex, scrollable, onHidden: onHidden, modalRef: externalModalRef, formRef, bodyStyle, show, stackable, keepInDom, noFocus }: ModalProps) {
|
export default function Modal({ children, className, size, title, customTitleBarButtons: titleBarButtons, header, footer, footerStyle, footerAlignment, onShown, onSubmit, helpPageId, minWidth, maxWidth, zIndex, scrollable, onHidden: onHidden, modalRef: externalModalRef, formRef, bodyStyle, show, stackable, keepInDom, noFocus }: ModalProps) {
|
||||||
const modalRef = useSyncedRef<HTMLDivElement>(externalModalRef);
|
const modalRef = useSyncedRef<HTMLDivElement>(externalModalRef);
|
||||||
const modalInstanceRef = useRef<BootstrapModal>();
|
const modalInstanceRef = useRef<BootstrapModal>();
|
||||||
const elementToFocus = useRef<Element | null>();
|
const elementToFocus = useRef<Element | null>();
|
||||||
@ -148,7 +156,17 @@ export default function Modal({ children, className, size, title, header, footer
|
|||||||
{helpPageId && (
|
{helpPageId && (
|
||||||
<button className="help-button" type="button" data-in-app-help={helpPageId} title={t("modal.help_title")}>?</button>
|
<button className="help-button" type="button" data-in-app-help={helpPageId} title={t("modal.help_title")}>?</button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{titleBarButtons?.filter((b) => b !== null).map((titleBarButton) => (
|
||||||
|
<button type="button"
|
||||||
|
className={clsx("custom-title-bar-button bx", titleBarButton.iconClassName)}
|
||||||
|
title={titleBarButton.title}
|
||||||
|
onClick={titleBarButton.onClick}>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
|
||||||
<button type="button" className="btn-close" data-bs-dismiss="modal" aria-label={t("modal.close")}></button>
|
<button type="button" className="btn-close" data-bs-dismiss="modal" aria-label={t("modal.close")}></button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{onSubmit ? (
|
{onSubmit ? (
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { ConvertToAttachmentResponse } from "@triliumnext/commons";
|
import { ConvertToAttachmentResponse } from "@triliumnext/commons";
|
||||||
import { FormDropdownDivider, FormListItem } from "../react/FormList";
|
import { FormDropdownDivider, FormListHeader, FormListItem } from "../react/FormList";
|
||||||
import { isElectron as getIsElectron, isMac as getIsMac } from "../../services/utils";
|
import { isElectron as getIsElectron, isMac as getIsMac } from "../../services/utils";
|
||||||
import { ParentComponent } from "../react/react_utils";
|
import { ParentComponent } from "../react/react_utils";
|
||||||
import { t } from "../../services/i18n"
|
import { t } from "../../services/i18n"
|
||||||
@ -113,8 +113,7 @@ function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: Not
|
|||||||
function DevelopmentActions({ note }: { note: FNote }) {
|
function DevelopmentActions({ note }: { note: FNote }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormDropdownDivider />
|
<FormListHeader text="Development-only Actions" />
|
||||||
<FormListItem disabled>Development-only Actions</FormListItem>
|
|
||||||
<FormListItem
|
<FormListItem
|
||||||
icon="bx bx-printer"
|
icon="bx bx-printer"
|
||||||
onClick={() => window.open(`/?print=#root/${note.noteId}`, "_blank")}
|
onClick={() => window.open(`/?print=#root/${note.noteId}`, "_blank")}
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import RenameNoteBulkAction from "../bulk_actions/note/rename_note";
|
|||||||
import { getErrorMessage } from "../../services/utils";
|
import { getErrorMessage } from "../../services/utils";
|
||||||
import "./SearchDefinitionTab.css";
|
import "./SearchDefinitionTab.css";
|
||||||
|
|
||||||
export default function SearchDefinitionTab({ note, ntxId, hidden }: TabContext) {
|
export default function SearchDefinitionTab({ note, ntxId, hidden, noteContext }: TabContext) {
|
||||||
const parentComponent = useContext(ParentComponent);
|
const parentComponent = useContext(ParentComponent);
|
||||||
const [ searchOptions, setSearchOptions ] = useState<{ availableOptions: SearchOption[], activeOptions: SearchOption[] }>();
|
const [ searchOptions, setSearchOptions ] = useState<{ availableOptions: SearchOption[], activeOptions: SearchOption[] }>();
|
||||||
const [ error, setError ] = useState<{ message: string }>();
|
const [ error, setError ] = useState<{ message: string }>();
|
||||||
@ -73,6 +73,27 @@ export default function SearchDefinitionTab({ note, ntxId, hidden }: TabContext)
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
async function autoExecute() {
|
||||||
|
if (!note || note.type !== "search" || !note.hasLabel("autoExecuteSearch")) {
|
||||||
|
executionState.save("");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const lastExecutedNoteId = executionState.load();
|
||||||
|
if (lastExecutedNoteId !== note.noteId) {
|
||||||
|
executionState.save(note.noteId);
|
||||||
|
|
||||||
|
await refreshResults();
|
||||||
|
|
||||||
|
if (noteContext?.viewScope?.viewMode === "default" && note.children.length > 0) {
|
||||||
|
parentComponent?.triggerCommand("toggleRibbonTabBookProperties", {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
autoExecute();
|
||||||
|
}, [note]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="search-definition-widget">
|
<div className="search-definition-widget">
|
||||||
<div className="search-settings">
|
<div className="search-settings">
|
||||||
@ -160,6 +181,14 @@ export default function SearchDefinitionTab({ note, ntxId, hidden }: TabContext)
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const executionState = function() {
|
||||||
|
let lastAutoExecutedSearchNoteId = "";
|
||||||
|
return {
|
||||||
|
load: () => lastAutoExecutedSearchNoteId,
|
||||||
|
save: (noteId: string) => lastAutoExecutedSearchNoteId = noteId,
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
|
||||||
function BulkActionsList({ note }: { note: FNote }) {
|
function BulkActionsList({ note }: { note: FNote }) {
|
||||||
const [ bulkActions, setBulkActions ] = useState<RenameNoteBulkAction[]>();
|
const [ bulkActions, setBulkActions ] = useState<RenameNoteBulkAction[]>();
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
"note_structure_description": "Notizen lassen sich hierarchisch anordnen. Ordner sind nicht nötig, da jede Notiz Unternotizen enthalten kann. Eine einzelne Notiz kann an mehreren Stellen in der Hierarchie hinzugefügt werden.",
|
"note_structure_description": "Notizen lassen sich hierarchisch anordnen. Ordner sind nicht nötig, da jede Notiz Unternotizen enthalten kann. Eine einzelne Notiz kann an mehreren Stellen in der Hierarchie hinzugefügt werden.",
|
||||||
"hoisting_description": "Trennen Sie Ihre persönlichen und beruflichen Notizen ganz einfach, indem Sie sie in einem Arbeitsbereich gruppieren. Dadurch wird Ihre Notizstruktur so fokussiert, dass nur ein bestimmter Satz von Notizen angezeigt wird.",
|
"hoisting_description": "Trennen Sie Ihre persönlichen und beruflichen Notizen ganz einfach, indem Sie sie in einem Arbeitsbereich gruppieren. Dadurch wird Ihre Notizstruktur so fokussiert, dass nur ein bestimmter Satz von Notizen angezeigt wird.",
|
||||||
"hoisting_title": "Arbeitsbereiche und Fokusansicht",
|
"hoisting_title": "Arbeitsbereiche und Fokusansicht",
|
||||||
"attributes_description": "Nutzen Sie Verbindungen zwischen Notizen oder fügen Sie Labels hinzu, um die Kategorisierung zu erleichtern. Mit hervorgehobenen („promoted“) Attributen können Sie strukturierte Informationen erfassen, die sich direkt in Tabellen und Boards verwenden lassen."
|
"attributes_description": "Verwenden Sie Beziehungen zwischen Notizen oder fügen Sie Beschriftungen hinzu, um die Kategorisierung zu vereinfachen. Verwenden Sie hervorgehobene Attribute, um strukturierte Informationen einzugeben, die in Tabellen und Boards verwendet werden können."
|
||||||
},
|
},
|
||||||
"productivity_benefits": {
|
"productivity_benefits": {
|
||||||
"revisions_title": "Notizrevisionen",
|
"revisions_title": "Notizrevisionen",
|
||||||
|
|||||||
@ -87,6 +87,8 @@
|
|||||||
"description_arm64": "ARM 기반 리눅스 배포판에서 aarch64 아키텍처와 호환됩니다."
|
"description_arm64": "ARM 기반 리눅스 배포판에서 aarch64 아키텍처와 호환됩니다."
|
||||||
},
|
},
|
||||||
"note_types": {
|
"note_types": {
|
||||||
"text_title": "텍스트 노트"
|
"text_title": "텍스트 노트",
|
||||||
|
"text_description": "노트는 WYSIWYG 편집기를 사용하며 표, 이미지, 수학 표현식, 구문 강조 기능의 코드 블록을 지원합니다. 특수문자를 사용한 마크다운 유사 구문이나 슬래시(/) 명령으로 텍스트 서식을 빠르게 지정할 수 있습니다.",
|
||||||
|
"code_title": "코드 노트"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -23,6 +23,7 @@ type Labels = {
|
|||||||
ancestorDepth: string;
|
ancestorDepth: string;
|
||||||
orderBy: string;
|
orderBy: string;
|
||||||
orderDirection: string;
|
orderDirection: string;
|
||||||
|
autoExecuteSearch: boolean;
|
||||||
|
|
||||||
// Collection-specific
|
// Collection-specific
|
||||||
viewType: string;
|
viewType: string;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user