Merge pull request #230 from gamosoft/features/quick-create
Features/quick create
This commit is contained in:
commit
eade9fb7a6
|
|
@ -9,6 +9,7 @@
|
|||
- **Resume where you left off** - Editor scroll position is remembered per note within the session, so switching back to a long note returns you to the same spot
|
||||
- **Undo/Redo** - Ctrl+Z / Ctrl+Y support
|
||||
- **Note templates** - Create notes from templates with dynamic placeholders
|
||||
- **Quick-create** - Set the **+ / New** button to skip the type chooser and create your most common item (note, folder, template, or drawing) in one click; **Shift+click** always shows the full chooser. Optionally pre-fill new note titles with a `yyyymmddHHMMSS` timestamp.
|
||||
- **Syntax highlighting** for code blocks (50+ languages)
|
||||
- **Copy code blocks** - One-click copy button on hover
|
||||
- **LaTeX/Math rendering** - Beautiful mathematical equations with MathJax (see [MATHJAX.md](MATHJAX.md))
|
||||
|
|
|
|||
|
|
@ -43,8 +43,14 @@ const LOCAL_SETTINGS = {
|
|||
hideUnderscoreFolders: { key: 'hideUnderscoreFolders', type: 'boolean', default: false },
|
||||
tabInsertsTab: { key: 'tabInsertsTab', type: 'boolean', default: false },
|
||||
sidebarPanelCollapsed: { key: 'sidebarPanelCollapsed', type: 'boolean', default: false },
|
||||
autoFillNoteTitle: { key: 'autoFillNoteTitle', type: 'boolean', default: false },
|
||||
// String settings
|
||||
sortMode: { key: 'sortMode', type: 'string', default: 'a-z' },
|
||||
newButtonAction: {
|
||||
key: 'newButtonAction', type: 'string', default: 'chooser',
|
||||
valid: ['chooser', 'note', 'folder', 'template', 'drawing']
|
||||
},
|
||||
lastUsedTemplate: { key: 'lastUsedTemplate', type: 'string', default: '' },
|
||||
// Number settings with validation
|
||||
sidebarWidth: { key: 'sidebarWidth', type: 'number', default: CONFIG.DEFAULT_SIDEBAR_WIDTH, min: 200, max: 600 },
|
||||
editorWidth: { key: 'editorWidth', type: 'number', default: 50, min: 20, max: 80 },
|
||||
|
|
@ -408,6 +414,9 @@ function noteApp() {
|
|||
availableTemplates: [],
|
||||
selectedTemplate: '',
|
||||
newTemplateNoteName: '',
|
||||
newButtonAction: 'chooser',
|
||||
autoFillNoteTitle: false,
|
||||
lastUsedTemplate: '',
|
||||
|
||||
// New note / folder name modal (replaces window.prompt)
|
||||
showCreateNameModal: false,
|
||||
|
|
@ -1742,6 +1751,9 @@ function noteApp() {
|
|||
|
||||
const data = await response.json();
|
||||
|
||||
this.lastUsedTemplate = this.selectedTemplate;
|
||||
try { localStorage.setItem('lastUsedTemplate', this.selectedTemplate); } catch (_) {}
|
||||
|
||||
// Close modal and reset state
|
||||
this.showTemplateModal = false;
|
||||
this.selectedTemplate = '';
|
||||
|
|
@ -4570,16 +4582,35 @@ function noteApp() {
|
|||
// DROPDOWN MENU SYSTEM
|
||||
// =====================================================
|
||||
|
||||
// Shift+click always forces the chooser regardless of newButtonAction.
|
||||
toggleNewDropdown(event) {
|
||||
this.showNewDropdown = true; // Always open (or keep open)
|
||||
const wantsChooser =
|
||||
(event && event.shiftKey) ||
|
||||
!this.newButtonAction ||
|
||||
this.newButtonAction === 'chooser';
|
||||
|
||||
if (wantsChooser) {
|
||||
this._openNewDropdownChooser(event);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (this.newButtonAction) {
|
||||
case 'note': this.createNote(); break;
|
||||
case 'folder': this.createFolder(); break;
|
||||
case 'template': this.openTemplateModal(); break;
|
||||
case 'drawing': this.createNewDrawing(); break;
|
||||
default: this._openNewDropdownChooser(event);
|
||||
}
|
||||
},
|
||||
|
||||
_openNewDropdownChooser(event) {
|
||||
this.showNewDropdown = true;
|
||||
|
||||
if (event && event.target) {
|
||||
const rect = event.target.getBoundingClientRect();
|
||||
// Position dropdown next to the clicked element
|
||||
let top = rect.bottom + 4; // 4px spacing
|
||||
let top = rect.bottom + 4;
|
||||
let left = rect.left;
|
||||
|
||||
// Keep dropdown on screen
|
||||
const dropdownWidth = 200;
|
||||
const dropdownHeight = 150;
|
||||
if (left + dropdownWidth > window.innerWidth) {
|
||||
|
|
@ -4593,6 +4624,26 @@ function noteApp() {
|
|||
}
|
||||
},
|
||||
|
||||
openTemplateModal() {
|
||||
this.showNewDropdown = false;
|
||||
this.mobileSidebarOpen = false;
|
||||
const hasLastUsed = !!this.lastUsedTemplate &&
|
||||
this.availableTemplates.some(t => t.name === this.lastUsedTemplate);
|
||||
this.selectedTemplate = hasLastUsed ? this.lastUsedTemplate : '';
|
||||
this.newTemplateNoteName = this.autoFillNoteTitle ? this._autoTitleTimestamp() : '';
|
||||
this.showTemplateModal = true;
|
||||
// Only steal focus when the modal is one-Enter-away from submission.
|
||||
if (hasLastUsed) {
|
||||
this.$nextTick(() => {
|
||||
const el = document.getElementById('template-note-name-input');
|
||||
if (el) {
|
||||
el.focus();
|
||||
el.select();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
closeDropdown() {
|
||||
this.showNewDropdown = false;
|
||||
this.dropdownTargetFolder = null; // Reset folder context
|
||||
|
|
@ -4653,7 +4704,8 @@ function noteApp() {
|
|||
this.mobileSidebarOpen = false;
|
||||
this.createNameModalKind = kind;
|
||||
this.createNameModalTargetFolder = targetFolder;
|
||||
this.createNameModalInput = '';
|
||||
this.createNameModalInput =
|
||||
(kind === 'note' && this.autoFillNoteTitle) ? this._autoTitleTimestamp() : '';
|
||||
this.showCreateNameModal = true;
|
||||
this.$nextTick(() => {
|
||||
const el = document.getElementById('create-name-modal-input');
|
||||
|
|
@ -4664,6 +4716,14 @@ function noteApp() {
|
|||
});
|
||||
},
|
||||
|
||||
// Zettelkasten-style yyyymmddHHMMSS in local time.
|
||||
_autoTitleTimestamp() {
|
||||
const d = new Date();
|
||||
const pad = (n) => String(n).padStart(2, '0');
|
||||
return `${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}` +
|
||||
`${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;
|
||||
},
|
||||
|
||||
closeCreateNameModal() {
|
||||
this.showCreateNameModal = false;
|
||||
this.createNameModalInput = '';
|
||||
|
|
|
|||
|
|
@ -2158,11 +2158,11 @@
|
|||
|
||||
<!-- Syntax Highlighting Toggle -->
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center justify-between cursor-pointer">
|
||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('syntax_highlight.title')"></span>
|
||||
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);" x-text="t('syntax_highlight.title')"></span>
|
||||
<div
|
||||
@click="toggleSyntaxHighlight()"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer flex-shrink-0"
|
||||
:style="syntaxHighlightEnabled ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||
>
|
||||
<div
|
||||
|
|
@ -2176,11 +2176,11 @@
|
|||
|
||||
<!-- Readable Line Length Toggle -->
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center justify-between cursor-pointer">
|
||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.readable_line_length')"></span>
|
||||
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);" x-text="t('settings.readable_line_length')"></span>
|
||||
<div
|
||||
@click="toggleReadableLineLength()"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer flex-shrink-0"
|
||||
:style="readableLineLength ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||
>
|
||||
<div
|
||||
|
|
@ -2194,11 +2194,11 @@
|
|||
|
||||
<!-- Hide Underscore Folders Toggle -->
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center justify-between cursor-pointer">
|
||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.hide_underscore_folders')"></span>
|
||||
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);" x-text="t('settings.hide_underscore_folders')"></span>
|
||||
<div
|
||||
@click="toggleHideUnderscoreFolders()"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer flex-shrink-0"
|
||||
:style="hideUnderscoreFolders ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||
>
|
||||
<div
|
||||
|
|
@ -2212,11 +2212,11 @@
|
|||
|
||||
<!-- Tab inserts tab -->
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center justify-between cursor-pointer">
|
||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.tab_inserts_tab')"></span>
|
||||
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);" x-text="t('settings.tab_inserts_tab')"></span>
|
||||
<div
|
||||
@click="toggleTabInsertsTab()"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer flex-shrink-0"
|
||||
:style="tabInsertsTab ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||
>
|
||||
<div
|
||||
|
|
@ -2228,6 +2228,40 @@
|
|||
<p class="text-xs mt-1" style="color: var(--text-tertiary);" x-text="t('settings.tab_inserts_tab_desc')"></p>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="block text-xs font-medium mb-2" style="color: var(--text-secondary);" x-text="t('settings.new_button_action')"></label>
|
||||
<select
|
||||
x-model="newButtonAction"
|
||||
@change="localStorage.setItem('newButtonAction', newButtonAction)"
|
||||
class="w-full px-3 py-2 rounded border text-sm"
|
||||
style="background-color: var(--bg-tertiary); color: var(--text-primary); border-color: var(--border-primary);"
|
||||
>
|
||||
<option value="chooser" x-text="t('settings.new_button_option_chooser')"></option>
|
||||
<option value="note" x-text="t('settings.new_button_option_note')"></option>
|
||||
<option value="folder" x-text="t('settings.new_button_option_folder')"></option>
|
||||
<option value="template" x-text="t('settings.new_button_option_template')"></option>
|
||||
<option value="drawing" x-text="t('settings.new_button_option_drawing')"></option>
|
||||
</select>
|
||||
<p class="text-xs mt-1" style="color: var(--text-tertiary);" x-text="t('settings.new_button_action_desc')"></p>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);" x-text="t('settings.auto_fill_note_title')"></span>
|
||||
<div
|
||||
@click="autoFillNoteTitle = !autoFillNoteTitle; localStorage.setItem('autoFillNoteTitle', autoFillNoteTitle)"
|
||||
class="relative w-10 h-5 rounded-full transition-colors cursor-pointer flex-shrink-0"
|
||||
:style="autoFillNoteTitle ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||
>
|
||||
<div
|
||||
class="absolute top-0.5 left-0.5 w-4 h-4 rounded-full transition-transform"
|
||||
:style="'background-color: var(--bg-primary);' + (autoFillNoteTitle ? ' transform: translateX(20px);' : '')"
|
||||
></div>
|
||||
</div>
|
||||
</label>
|
||||
<p class="text-xs mt-1" style="color: var(--text-tertiary);" x-text="t('settings.auto_fill_note_title_desc')"></p>
|
||||
</div>
|
||||
|
||||
<!-- Logout (if auth enabled) - uses authEnabled from main app state -->
|
||||
<div x-show="authEnabled" class="mb-4">
|
||||
<label class="block text-xs font-medium mb-2" style="color: var(--text-secondary);" x-text="t('settings.account')"></label>
|
||||
|
|
@ -3083,7 +3117,7 @@
|
|||
class="flex items-center justify-between px-3 py-2 cursor-pointer"
|
||||
style="border-bottom: 1px solid var(--border-primary);"
|
||||
>
|
||||
<span class="text-xs font-medium" style="color: var(--text-secondary);">
|
||||
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);">
|
||||
⚙️ Properties
|
||||
</span>
|
||||
<span class="text-xs opacity-40">▲ Collapse</span>
|
||||
|
|
@ -3449,7 +3483,7 @@
|
|||
<span x-text="t('sidebar.new_folder')"></span>
|
||||
</button>
|
||||
<button
|
||||
@click.stop="showTemplateModal = true; showNewDropdown = false; mobileSidebarOpen = false"
|
||||
@click.stop="openTemplateModal()"
|
||||
class="w-full px-4 py-2.5 text-sm text-left flex items-center gap-3 transition-colors"
|
||||
style="color: var(--text-primary);"
|
||||
onmouseover="this.style.backgroundColor='var(--bg-hover)'"
|
||||
|
|
@ -3505,6 +3539,7 @@
|
|||
<label class="block text-sm font-medium mb-2" style="color: var(--text-secondary);" x-text="t('notes.prompt_name')">
|
||||
</label>
|
||||
<input
|
||||
id="template-note-name-input"
|
||||
x-model="newTemplateNoteName"
|
||||
type="text"
|
||||
:placeholder="t('notes.input_placeholder')"
|
||||
|
|
@ -3538,7 +3573,7 @@
|
|||
:disabled="!selectedTemplate || !newTemplateNoteName.trim() || availableTemplates.length === 0"
|
||||
class="flex-1 px-4 py-2 rounded font-medium text-white transition-colors"
|
||||
style="background-color: var(--accent-primary);"
|
||||
:style="(!selectedTemplate || !newTemplateNoteName.trim() || availableTemplates.length === 0) ? 'opacity: 0.5; cursor: not-allowed;' : ''"
|
||||
:style="(!selectedTemplate || !newTemplateNoteName.trim() || availableTemplates.length === 0) ? { opacity: '0.5', cursor: 'not-allowed' } : {}"
|
||||
onmouseover="if(!this.disabled) this.style.backgroundColor='var(--accent-hover)'"
|
||||
onmouseout="if(!this.disabled) this.style.backgroundColor='var(--accent-primary)'"
|
||||
x-text="t('templates.create_note')"
|
||||
|
|
@ -3657,6 +3692,7 @@
|
|||
<div x-show="showConfirmModal"
|
||||
@click.self="confirmModalCancel()"
|
||||
@keydown.escape.window="showConfirmModal && confirmModalCancel()"
|
||||
@keydown.enter.window="if (showConfirmModal) { $event.preventDefault(); confirmModalConfirm(); }"
|
||||
class="fixed inset-0 flex items-center justify-center p-4"
|
||||
style="background-color: rgba(0, 0, 0, 0.5); z-index: 1250;"
|
||||
x-cloak>
|
||||
|
|
|
|||
|
|
@ -269,7 +269,16 @@
|
|||
"hide_underscore_folders": "Systemordner ausblenden",
|
||||
"hide_underscore_folders_desc": "_attachments, _templates und andere Unterstrich-Ordner ausblenden",
|
||||
"tab_inserts_tab": "Tab-Taste fügt Tab ein",
|
||||
"tab_inserts_tab_desc": "Tab drücken, um ein Tabulatorzeichen einzufügen statt den Fokus zu wechseln"
|
||||
"tab_inserts_tab_desc": "Tab drücken, um ein Tabulatorzeichen einzufügen statt den Fokus zu wechseln",
|
||||
"new_button_action": "Wenn du auf + klickst",
|
||||
"new_button_action_desc": "Umschalt+Klick zeigt immer die Auswahl.",
|
||||
"new_button_option_chooser": "Auswahl anzeigen (Standard)",
|
||||
"new_button_option_note": "Neue Notiz",
|
||||
"new_button_option_folder": "Neuer Ordner",
|
||||
"new_button_option_template": "Neue Notiz aus Vorlage",
|
||||
"new_button_option_drawing": "Neue Zeichnung",
|
||||
"auto_fill_note_title": "Titel mit Zeitstempel",
|
||||
"auto_fill_note_title_desc": "jjjjmmttHHMMSS. Enter akzeptiert, Tippen ersetzt."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Startseite",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,16 @@
|
|||
"hide_underscore_folders": "Hide system folders",
|
||||
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar",
|
||||
"tab_inserts_tab": "Tab key inserts tab",
|
||||
"tab_inserts_tab_desc": "Press Tab to insert a tab character instead of changing focus"
|
||||
"tab_inserts_tab_desc": "Press Tab to insert a tab character instead of changing focus",
|
||||
"new_button_action": "When you click +",
|
||||
"new_button_action_desc": "Shift+click always shows the chooser.",
|
||||
"new_button_option_chooser": "Show chooser (default)",
|
||||
"new_button_option_note": "New note",
|
||||
"new_button_option_folder": "New folder",
|
||||
"new_button_option_template": "New note from template",
|
||||
"new_button_option_drawing": "New drawing",
|
||||
"auto_fill_note_title": "Auto-fill title with timestamp",
|
||||
"auto_fill_note_title_desc": "yyyymmddHHMMSS. Enter to accept, type to replace."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Home",
|
||||
|
|
|
|||
|
|
@ -269,7 +269,16 @@
|
|||
"hide_underscore_folders": "Hide system folders",
|
||||
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar",
|
||||
"tab_inserts_tab": "Tab key inserts tab",
|
||||
"tab_inserts_tab_desc": "Press Tab to insert a tab character instead of changing focus"
|
||||
"tab_inserts_tab_desc": "Press Tab to insert a tab character instead of changing focus",
|
||||
"new_button_action": "When you click +",
|
||||
"new_button_action_desc": "Shift+click always shows the chooser.",
|
||||
"new_button_option_chooser": "Show chooser (default)",
|
||||
"new_button_option_note": "New note",
|
||||
"new_button_option_folder": "New folder",
|
||||
"new_button_option_template": "New note from template",
|
||||
"new_button_option_drawing": "New drawing",
|
||||
"auto_fill_note_title": "Auto-fill title with timestamp",
|
||||
"auto_fill_note_title_desc": "yyyymmddHHMMSS. Enter to accept, type to replace."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Home",
|
||||
|
|
|
|||
|
|
@ -269,7 +269,16 @@
|
|||
"hide_underscore_folders": "Ocultar carpetas de sistema",
|
||||
"hide_underscore_folders_desc": "Ocultar _attachments, _templates y otras carpetas con guion bajo",
|
||||
"tab_inserts_tab": "Tabulador inserta tabulación",
|
||||
"tab_inserts_tab_desc": "Pulsa Tab para insertar un tabulador en lugar de cambiar el foco"
|
||||
"tab_inserts_tab_desc": "Pulsa Tab para insertar un tabulador en lugar de cambiar el foco",
|
||||
"new_button_action": "Cuando haces clic en +",
|
||||
"new_button_action_desc": "Mayús+clic siempre muestra el selector.",
|
||||
"new_button_option_chooser": "Mostrar selector (por defecto)",
|
||||
"new_button_option_note": "Nueva nota",
|
||||
"new_button_option_folder": "Nueva carpeta",
|
||||
"new_button_option_template": "Nueva nota desde plantilla",
|
||||
"new_button_option_drawing": "Nuevo dibujo",
|
||||
"auto_fill_note_title": "Título con marca de tiempo",
|
||||
"auto_fill_note_title_desc": "aaaammddHHMMSS. Intro acepta, escribe para reemplazar."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Inicio",
|
||||
|
|
|
|||
|
|
@ -269,7 +269,16 @@
|
|||
"hide_underscore_folders": "Masquer les dossiers système",
|
||||
"hide_underscore_folders_desc": "Masquer _attachments, _templates et autres dossiers préfixés",
|
||||
"tab_inserts_tab": "Tab insère une tabulation",
|
||||
"tab_inserts_tab_desc": "Appuyez sur Tab pour insérer une tabulation au lieu de changer le focus"
|
||||
"tab_inserts_tab_desc": "Appuyez sur Tab pour insérer une tabulation au lieu de changer le focus",
|
||||
"new_button_action": "Quand vous cliquez sur +",
|
||||
"new_button_action_desc": "Maj+clic affiche toujours le sélecteur.",
|
||||
"new_button_option_chooser": "Afficher le sélecteur (par défaut)",
|
||||
"new_button_option_note": "Nouvelle note",
|
||||
"new_button_option_folder": "Nouveau dossier",
|
||||
"new_button_option_template": "Nouvelle note depuis un modèle",
|
||||
"new_button_option_drawing": "Nouveau dessin",
|
||||
"auto_fill_note_title": "Titre avec horodatage",
|
||||
"auto_fill_note_title_desc": "aaaammjjHHMMSS. Entrée accepte, tapez pour remplacer."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Accueil",
|
||||
|
|
|
|||
|
|
@ -269,7 +269,16 @@
|
|||
"hide_underscore_folders": "Rendszermappák elrejtése",
|
||||
"hide_underscore_folders_desc": "_attachments, _templates és más aláhúzásos mappák elrejtése",
|
||||
"tab_inserts_tab": "Tab billentyű több helyet hagy a szövegben",
|
||||
"tab_inserts_tab_desc": "Nyomd meg a Tab-ot, hogy több helyet hagyj a szövegben a fókuszváltás helyett"
|
||||
"tab_inserts_tab_desc": "Nyomd meg a Tab-ot, hogy több helyet hagyj a szövegben a fókuszváltás helyett",
|
||||
"new_button_action": "A + gombra kattintáskor",
|
||||
"new_button_action_desc": "Shift+kattintás mindig megmutatja a választót.",
|
||||
"new_button_option_chooser": "Választó megjelenítése (alapértelmezett)",
|
||||
"new_button_option_note": "Új jegyzet",
|
||||
"new_button_option_folder": "Új mappa",
|
||||
"new_button_option_template": "Új jegyzet sablonból",
|
||||
"new_button_option_drawing": "Új rajz",
|
||||
"auto_fill_note_title": "Cím kitöltése időbélyeggel",
|
||||
"auto_fill_note_title_desc": "éééé.hh.nn.ÓÓ.PP.MM. Enter elfogad, gépelés felülír."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Főoldal",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,16 @@
|
|||
"hide_underscore_folders": "Nascondi cartelle di sistema",
|
||||
"hide_underscore_folders_desc": "Nascondi _attachments, _templates e altre cartelle con underscore",
|
||||
"tab_inserts_tab": "Tab inserisce tabulazione",
|
||||
"tab_inserts_tab_desc": "Premi Tab per inserire una tabulazione invece di cambiare focus"
|
||||
"tab_inserts_tab_desc": "Premi Tab per inserire una tabulazione invece di cambiare focus",
|
||||
"new_button_action": "Quando clicchi su +",
|
||||
"new_button_action_desc": "Shift+clic mostra sempre il selettore.",
|
||||
"new_button_option_chooser": "Mostra selettore (predefinito)",
|
||||
"new_button_option_note": "Nuova nota",
|
||||
"new_button_option_folder": "Nuova cartella",
|
||||
"new_button_option_template": "Nuova nota da modello",
|
||||
"new_button_option_drawing": "Nuovo disegno",
|
||||
"auto_fill_note_title": "Compila titolo con timestamp",
|
||||
"auto_fill_note_title_desc": "aaaammddHHMMSS. Invio accetta, digita per sostituire."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Home",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,16 @@
|
|||
"hide_underscore_folders": "システムフォルダを非表示",
|
||||
"hide_underscore_folders_desc": "_attachments、_templatesなどのフォルダをサイドバーから非表示",
|
||||
"tab_inserts_tab": "Tabキーでタブを挿入",
|
||||
"tab_inserts_tab_desc": "Tabキーでフォーカス移動ではなくタブ文字を挿入"
|
||||
"tab_inserts_tab_desc": "Tabキーでフォーカス移動ではなくタブ文字を挿入",
|
||||
"new_button_action": "+ をクリックしたとき",
|
||||
"new_button_action_desc": "Shift+クリックで常にセレクタが開きます。",
|
||||
"new_button_option_chooser": "セレクタを表示(デフォルト)",
|
||||
"new_button_option_note": "新規ノート",
|
||||
"new_button_option_folder": "新規フォルダ",
|
||||
"new_button_option_template": "テンプレートから新規ノート",
|
||||
"new_button_option_drawing": "新規お絵描き",
|
||||
"auto_fill_note_title": "タイトルに日時を自動入力",
|
||||
"auto_fill_note_title_desc": "yyyymmddHHMMSS。Enterで確定、入力で置換。"
|
||||
},
|
||||
"homepage": {
|
||||
"title": "ホーム",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,16 @@
|
|||
"hide_underscore_folders": "Скрыть системные папки",
|
||||
"hide_underscore_folders_desc": "Скрыть _attachments, _templates и другие папки с подчёркиванием",
|
||||
"tab_inserts_tab": "Tab вставляет табуляцию",
|
||||
"tab_inserts_tab_desc": "Нажмите Tab для вставки табуляции вместо переключения фокуса"
|
||||
"tab_inserts_tab_desc": "Нажмите Tab для вставки табуляции вместо переключения фокуса",
|
||||
"new_button_action": "При нажатии +",
|
||||
"new_button_action_desc": "Shift+клик всегда показывает селектор.",
|
||||
"new_button_option_chooser": "Показать селектор (по умолчанию)",
|
||||
"new_button_option_note": "Новая заметка",
|
||||
"new_button_option_folder": "Новая папка",
|
||||
"new_button_option_template": "Новая заметка из шаблона",
|
||||
"new_button_option_drawing": "Новый рисунок",
|
||||
"auto_fill_note_title": "Метка времени в названии",
|
||||
"auto_fill_note_title_desc": "ггггммддЧЧММСС. Enter — принять, печатать — заменить."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Главная",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,16 @@
|
|||
"hide_underscore_folders": "Skrij sistemske mape",
|
||||
"hide_underscore_folders_desc": "Skrij _attachments, _templates in druge mape s podčrtajem",
|
||||
"tab_inserts_tab": "Tipka Tab vstavi tabulator",
|
||||
"tab_inserts_tab_desc": "Pritisnite Tab za vstavljanje tabulatorja namesto premikanja fokusa"
|
||||
"tab_inserts_tab_desc": "Pritisnite Tab za vstavljanje tabulatorja namesto premikanja fokusa",
|
||||
"new_button_action": "Ko kliknete +",
|
||||
"new_button_action_desc": "Shift+klik vedno pokaže izbirnik.",
|
||||
"new_button_option_chooser": "Pokaži izbirnik (privzeto)",
|
||||
"new_button_option_note": "Nova zabeležka",
|
||||
"new_button_option_folder": "Nova mapa",
|
||||
"new_button_option_template": "Nova zabeležka iz predloge",
|
||||
"new_button_option_drawing": "Nova risba",
|
||||
"auto_fill_note_title": "Časovni žig v naslovu",
|
||||
"auto_fill_note_title_desc": "llllmmddUUMMSS. Enter potrdi, tipkanje zamenja."
|
||||
},
|
||||
"homepage": {
|
||||
"title": "Domov",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,16 @@
|
|||
"hide_underscore_folders": "隐藏系统文件夹",
|
||||
"hide_underscore_folders_desc": "从侧边栏隐藏 _attachments、_templates 等下划线文件夹",
|
||||
"tab_inserts_tab": "Tab键插入制表符",
|
||||
"tab_inserts_tab_desc": "按Tab键插入制表符而不是切换焦点"
|
||||
"tab_inserts_tab_desc": "按Tab键插入制表符而不是切换焦点",
|
||||
"new_button_action": "点击 + 时",
|
||||
"new_button_action_desc": "Shift+点击始终显示选择器。",
|
||||
"new_button_option_chooser": "显示选择器(默认)",
|
||||
"new_button_option_note": "新建笔记",
|
||||
"new_button_option_folder": "新建文件夹",
|
||||
"new_button_option_template": "从模板新建笔记",
|
||||
"new_button_option_drawing": "新建绘图",
|
||||
"auto_fill_note_title": "用时间戳自动填充标题",
|
||||
"auto_fill_note_title_desc": "yyyymmddHHMMSS。Enter 接受,输入以替换。"
|
||||
},
|
||||
"homepage": {
|
||||
"title": "首页",
|
||||
|
|
|
|||
Loading…
Reference in New Issue