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
|
- **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
|
- **Undo/Redo** - Ctrl+Z / Ctrl+Y support
|
||||||
- **Note templates** - Create notes from templates with dynamic placeholders
|
- **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)
|
- **Syntax highlighting** for code blocks (50+ languages)
|
||||||
- **Copy code blocks** - One-click copy button on hover
|
- **Copy code blocks** - One-click copy button on hover
|
||||||
- **LaTeX/Math rendering** - Beautiful mathematical equations with MathJax (see [MATHJAX.md](MATHJAX.md))
|
- **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 },
|
hideUnderscoreFolders: { key: 'hideUnderscoreFolders', type: 'boolean', default: false },
|
||||||
tabInsertsTab: { key: 'tabInsertsTab', type: 'boolean', default: false },
|
tabInsertsTab: { key: 'tabInsertsTab', type: 'boolean', default: false },
|
||||||
sidebarPanelCollapsed: { key: 'sidebarPanelCollapsed', type: 'boolean', default: false },
|
sidebarPanelCollapsed: { key: 'sidebarPanelCollapsed', type: 'boolean', default: false },
|
||||||
|
autoFillNoteTitle: { key: 'autoFillNoteTitle', type: 'boolean', default: false },
|
||||||
// String settings
|
// String settings
|
||||||
sortMode: { key: 'sortMode', type: 'string', default: 'a-z' },
|
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
|
// Number settings with validation
|
||||||
sidebarWidth: { key: 'sidebarWidth', type: 'number', default: CONFIG.DEFAULT_SIDEBAR_WIDTH, min: 200, max: 600 },
|
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 },
|
editorWidth: { key: 'editorWidth', type: 'number', default: 50, min: 20, max: 80 },
|
||||||
|
|
@ -408,6 +414,9 @@ function noteApp() {
|
||||||
availableTemplates: [],
|
availableTemplates: [],
|
||||||
selectedTemplate: '',
|
selectedTemplate: '',
|
||||||
newTemplateNoteName: '',
|
newTemplateNoteName: '',
|
||||||
|
newButtonAction: 'chooser',
|
||||||
|
autoFillNoteTitle: false,
|
||||||
|
lastUsedTemplate: '',
|
||||||
|
|
||||||
// New note / folder name modal (replaces window.prompt)
|
// New note / folder name modal (replaces window.prompt)
|
||||||
showCreateNameModal: false,
|
showCreateNameModal: false,
|
||||||
|
|
@ -1742,6 +1751,9 @@ function noteApp() {
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
|
this.lastUsedTemplate = this.selectedTemplate;
|
||||||
|
try { localStorage.setItem('lastUsedTemplate', this.selectedTemplate); } catch (_) {}
|
||||||
|
|
||||||
// Close modal and reset state
|
// Close modal and reset state
|
||||||
this.showTemplateModal = false;
|
this.showTemplateModal = false;
|
||||||
this.selectedTemplate = '';
|
this.selectedTemplate = '';
|
||||||
|
|
@ -4570,16 +4582,35 @@ function noteApp() {
|
||||||
// DROPDOWN MENU SYSTEM
|
// DROPDOWN MENU SYSTEM
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
||||||
|
// Shift+click always forces the chooser regardless of newButtonAction.
|
||||||
toggleNewDropdown(event) {
|
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) {
|
if (event && event.target) {
|
||||||
const rect = event.target.getBoundingClientRect();
|
const rect = event.target.getBoundingClientRect();
|
||||||
// Position dropdown next to the clicked element
|
let top = rect.bottom + 4;
|
||||||
let top = rect.bottom + 4; // 4px spacing
|
|
||||||
let left = rect.left;
|
let left = rect.left;
|
||||||
|
|
||||||
// Keep dropdown on screen
|
|
||||||
const dropdownWidth = 200;
|
const dropdownWidth = 200;
|
||||||
const dropdownHeight = 150;
|
const dropdownHeight = 150;
|
||||||
if (left + dropdownWidth > window.innerWidth) {
|
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() {
|
closeDropdown() {
|
||||||
this.showNewDropdown = false;
|
this.showNewDropdown = false;
|
||||||
this.dropdownTargetFolder = null; // Reset folder context
|
this.dropdownTargetFolder = null; // Reset folder context
|
||||||
|
|
@ -4653,7 +4704,8 @@ function noteApp() {
|
||||||
this.mobileSidebarOpen = false;
|
this.mobileSidebarOpen = false;
|
||||||
this.createNameModalKind = kind;
|
this.createNameModalKind = kind;
|
||||||
this.createNameModalTargetFolder = targetFolder;
|
this.createNameModalTargetFolder = targetFolder;
|
||||||
this.createNameModalInput = '';
|
this.createNameModalInput =
|
||||||
|
(kind === 'note' && this.autoFillNoteTitle) ? this._autoTitleTimestamp() : '';
|
||||||
this.showCreateNameModal = true;
|
this.showCreateNameModal = true;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
const el = document.getElementById('create-name-modal-input');
|
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() {
|
closeCreateNameModal() {
|
||||||
this.showCreateNameModal = false;
|
this.showCreateNameModal = false;
|
||||||
this.createNameModalInput = '';
|
this.createNameModalInput = '';
|
||||||
|
|
|
||||||
|
|
@ -2158,11 +2158,11 @@
|
||||||
|
|
||||||
<!-- Syntax Highlighting Toggle -->
|
<!-- Syntax Highlighting Toggle -->
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label class="flex items-center justify-between cursor-pointer">
|
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('syntax_highlight.title')"></span>
|
<span class="text-xs font-medium flex-1 min-w-0" style="color: var(--text-secondary);" x-text="t('syntax_highlight.title')"></span>
|
||||||
<div
|
<div
|
||||||
@click="toggleSyntaxHighlight()"
|
@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)'"
|
:style="syntaxHighlightEnabled ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
|
@ -2176,11 +2176,11 @@
|
||||||
|
|
||||||
<!-- Readable Line Length Toggle -->
|
<!-- Readable Line Length Toggle -->
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label class="flex items-center justify-between cursor-pointer">
|
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.readable_line_length')"></span>
|
<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
|
<div
|
||||||
@click="toggleReadableLineLength()"
|
@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)'"
|
:style="readableLineLength ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
|
@ -2194,11 +2194,11 @@
|
||||||
|
|
||||||
<!-- Hide Underscore Folders Toggle -->
|
<!-- Hide Underscore Folders Toggle -->
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label class="flex items-center justify-between cursor-pointer">
|
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.hide_underscore_folders')"></span>
|
<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
|
<div
|
||||||
@click="toggleHideUnderscoreFolders()"
|
@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)'"
|
:style="hideUnderscoreFolders ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
|
@ -2212,11 +2212,11 @@
|
||||||
|
|
||||||
<!-- Tab inserts tab -->
|
<!-- Tab inserts tab -->
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label class="flex items-center justify-between cursor-pointer">
|
<label class="flex items-center justify-between gap-3 cursor-pointer">
|
||||||
<span class="text-xs font-medium" style="color: var(--text-secondary);" x-text="t('settings.tab_inserts_tab')"></span>
|
<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
|
<div
|
||||||
@click="toggleTabInsertsTab()"
|
@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)'"
|
:style="tabInsertsTab ? 'background-color: var(--accent-primary)' : 'background-color: var(--bg-tertiary)'"
|
||||||
>
|
>
|
||||||
<div
|
<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>
|
<p class="text-xs mt-1" style="color: var(--text-tertiary);" x-text="t('settings.tab_inserts_tab_desc')"></p>
|
||||||
</div>
|
</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 -->
|
<!-- Logout (if auth enabled) - uses authEnabled from main app state -->
|
||||||
<div x-show="authEnabled" class="mb-4">
|
<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>
|
<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"
|
class="flex items-center justify-between px-3 py-2 cursor-pointer"
|
||||||
style="border-bottom: 1px solid var(--border-primary);"
|
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
|
⚙️ Properties
|
||||||
</span>
|
</span>
|
||||||
<span class="text-xs opacity-40">▲ Collapse</span>
|
<span class="text-xs opacity-40">▲ Collapse</span>
|
||||||
|
|
@ -3449,7 +3483,7 @@
|
||||||
<span x-text="t('sidebar.new_folder')"></span>
|
<span x-text="t('sidebar.new_folder')"></span>
|
||||||
</button>
|
</button>
|
||||||
<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"
|
class="w-full px-4 py-2.5 text-sm text-left flex items-center gap-3 transition-colors"
|
||||||
style="color: var(--text-primary);"
|
style="color: var(--text-primary);"
|
||||||
onmouseover="this.style.backgroundColor='var(--bg-hover)'"
|
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 class="block text-sm font-medium mb-2" style="color: var(--text-secondary);" x-text="t('notes.prompt_name')">
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
|
id="template-note-name-input"
|
||||||
x-model="newTemplateNoteName"
|
x-model="newTemplateNoteName"
|
||||||
type="text"
|
type="text"
|
||||||
:placeholder="t('notes.input_placeholder')"
|
:placeholder="t('notes.input_placeholder')"
|
||||||
|
|
@ -3538,7 +3573,7 @@
|
||||||
:disabled="!selectedTemplate || !newTemplateNoteName.trim() || availableTemplates.length === 0"
|
:disabled="!selectedTemplate || !newTemplateNoteName.trim() || availableTemplates.length === 0"
|
||||||
class="flex-1 px-4 py-2 rounded font-medium text-white transition-colors"
|
class="flex-1 px-4 py-2 rounded font-medium text-white transition-colors"
|
||||||
style="background-color: var(--accent-primary);"
|
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)'"
|
onmouseover="if(!this.disabled) this.style.backgroundColor='var(--accent-hover)'"
|
||||||
onmouseout="if(!this.disabled) this.style.backgroundColor='var(--accent-primary)'"
|
onmouseout="if(!this.disabled) this.style.backgroundColor='var(--accent-primary)'"
|
||||||
x-text="t('templates.create_note')"
|
x-text="t('templates.create_note')"
|
||||||
|
|
@ -3657,6 +3692,7 @@
|
||||||
<div x-show="showConfirmModal"
|
<div x-show="showConfirmModal"
|
||||||
@click.self="confirmModalCancel()"
|
@click.self="confirmModalCancel()"
|
||||||
@keydown.escape.window="showConfirmModal && 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"
|
class="fixed inset-0 flex items-center justify-center p-4"
|
||||||
style="background-color: rgba(0, 0, 0, 0.5); z-index: 1250;"
|
style="background-color: rgba(0, 0, 0, 0.5); z-index: 1250;"
|
||||||
x-cloak>
|
x-cloak>
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,16 @@
|
||||||
"hide_underscore_folders": "Systemordner ausblenden",
|
"hide_underscore_folders": "Systemordner ausblenden",
|
||||||
"hide_underscore_folders_desc": "_attachments, _templates und andere Unterstrich-Ordner ausblenden",
|
"hide_underscore_folders_desc": "_attachments, _templates und andere Unterstrich-Ordner ausblenden",
|
||||||
"tab_inserts_tab": "Tab-Taste fügt Tab ein",
|
"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": {
|
"homepage": {
|
||||||
"title": "Startseite",
|
"title": "Startseite",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,16 @@
|
||||||
"hide_underscore_folders": "Hide system folders",
|
"hide_underscore_folders": "Hide system folders",
|
||||||
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar",
|
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar",
|
||||||
"tab_inserts_tab": "Tab key inserts tab",
|
"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": {
|
"homepage": {
|
||||||
"title": "Home",
|
"title": "Home",
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,16 @@
|
||||||
"hide_underscore_folders": "Hide system folders",
|
"hide_underscore_folders": "Hide system folders",
|
||||||
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar",
|
"hide_underscore_folders_desc": "Hide _attachments, _templates and other underscore folders from sidebar",
|
||||||
"tab_inserts_tab": "Tab key inserts tab",
|
"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": {
|
"homepage": {
|
||||||
"title": "Home",
|
"title": "Home",
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,16 @@
|
||||||
"hide_underscore_folders": "Ocultar carpetas de sistema",
|
"hide_underscore_folders": "Ocultar carpetas de sistema",
|
||||||
"hide_underscore_folders_desc": "Ocultar _attachments, _templates y otras carpetas con guion bajo",
|
"hide_underscore_folders_desc": "Ocultar _attachments, _templates y otras carpetas con guion bajo",
|
||||||
"tab_inserts_tab": "Tabulador inserta tabulación",
|
"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": {
|
"homepage": {
|
||||||
"title": "Inicio",
|
"title": "Inicio",
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,16 @@
|
||||||
"hide_underscore_folders": "Masquer les dossiers système",
|
"hide_underscore_folders": "Masquer les dossiers système",
|
||||||
"hide_underscore_folders_desc": "Masquer _attachments, _templates et autres dossiers préfixés",
|
"hide_underscore_folders_desc": "Masquer _attachments, _templates et autres dossiers préfixés",
|
||||||
"tab_inserts_tab": "Tab insère une tabulation",
|
"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": {
|
"homepage": {
|
||||||
"title": "Accueil",
|
"title": "Accueil",
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,16 @@
|
||||||
"hide_underscore_folders": "Rendszermappák elrejtése",
|
"hide_underscore_folders": "Rendszermappák elrejtése",
|
||||||
"hide_underscore_folders_desc": "_attachments, _templates és más aláhúzásos mappá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": "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": {
|
"homepage": {
|
||||||
"title": "Főoldal",
|
"title": "Főoldal",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,16 @@
|
||||||
"hide_underscore_folders": "Nascondi cartelle di sistema",
|
"hide_underscore_folders": "Nascondi cartelle di sistema",
|
||||||
"hide_underscore_folders_desc": "Nascondi _attachments, _templates e altre cartelle con underscore",
|
"hide_underscore_folders_desc": "Nascondi _attachments, _templates e altre cartelle con underscore",
|
||||||
"tab_inserts_tab": "Tab inserisce tabulazione",
|
"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": {
|
"homepage": {
|
||||||
"title": "Home",
|
"title": "Home",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,16 @@
|
||||||
"hide_underscore_folders": "システムフォルダを非表示",
|
"hide_underscore_folders": "システムフォルダを非表示",
|
||||||
"hide_underscore_folders_desc": "_attachments、_templatesなどのフォルダをサイドバーから非表示",
|
"hide_underscore_folders_desc": "_attachments、_templatesなどのフォルダをサイドバーから非表示",
|
||||||
"tab_inserts_tab": "Tabキーでタブを挿入",
|
"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": {
|
"homepage": {
|
||||||
"title": "ホーム",
|
"title": "ホーム",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,16 @@
|
||||||
"hide_underscore_folders": "Скрыть системные папки",
|
"hide_underscore_folders": "Скрыть системные папки",
|
||||||
"hide_underscore_folders_desc": "Скрыть _attachments, _templates и другие папки с подчёркиванием",
|
"hide_underscore_folders_desc": "Скрыть _attachments, _templates и другие папки с подчёркиванием",
|
||||||
"tab_inserts_tab": "Tab вставляет табуляцию",
|
"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": {
|
"homepage": {
|
||||||
"title": "Главная",
|
"title": "Главная",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,16 @@
|
||||||
"hide_underscore_folders": "Skrij sistemske mape",
|
"hide_underscore_folders": "Skrij sistemske mape",
|
||||||
"hide_underscore_folders_desc": "Skrij _attachments, _templates in druge mape s podčrtajem",
|
"hide_underscore_folders_desc": "Skrij _attachments, _templates in druge mape s podčrtajem",
|
||||||
"tab_inserts_tab": "Tipka Tab vstavi tabulator",
|
"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": {
|
"homepage": {
|
||||||
"title": "Domov",
|
"title": "Domov",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,16 @@
|
||||||
"hide_underscore_folders": "隐藏系统文件夹",
|
"hide_underscore_folders": "隐藏系统文件夹",
|
||||||
"hide_underscore_folders_desc": "从侧边栏隐藏 _attachments、_templates 等下划线文件夹",
|
"hide_underscore_folders_desc": "从侧边栏隐藏 _attachments、_templates 等下划线文件夹",
|
||||||
"tab_inserts_tab": "Tab键插入制表符",
|
"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": {
|
"homepage": {
|
||||||
"title": "首页",
|
"title": "首页",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue