Merge pull request #367 from standardnotes/issue-364
Create a new note from search
This commit is contained in:
@@ -221,9 +221,9 @@ class NotesCtrl extends PureCtrl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @template
|
* @template
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
async selectNote(note) {
|
async selectNote(note) {
|
||||||
this.appState.setSelectedNote(note);
|
this.appState.setSelectedNote(note);
|
||||||
@@ -247,7 +247,7 @@ class NotesCtrl extends PureCtrl {
|
|||||||
selectedTag: this.state.tag,
|
selectedTag: this.state.tag,
|
||||||
showArchived: this.state.showArchived,
|
showArchived: this.state.showArchived,
|
||||||
hidePinned: this.state.hidePinned,
|
hidePinned: this.state.hidePinned,
|
||||||
filterText: this.state.noteFilter.text,
|
filterText: this.state.noteFilter.text.toLowerCase(),
|
||||||
sortBy: this.state.sortBy,
|
sortBy: this.state.sortBy,
|
||||||
reverse: this.state.sortReverse
|
reverse: this.state.sortReverse
|
||||||
});
|
});
|
||||||
@@ -532,10 +532,16 @@ class NotesCtrl extends PureCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
createNewNote() {
|
createNewNote() {
|
||||||
if (this.state.selectedNote && this.state.selectedNote.dummy) {
|
let title;
|
||||||
|
let isDummyNote = true;
|
||||||
|
if (this.isFiltering()) {
|
||||||
|
title = this.state.noteFilter.text;
|
||||||
|
isDummyNote = false;
|
||||||
|
} else if (this.state.selectedNote && this.state.selectedNote.dummy) {
|
||||||
return;
|
return;
|
||||||
|
} else {
|
||||||
|
title = `Note ${this.state.notes.length + 1}`;
|
||||||
}
|
}
|
||||||
const title = "Note" + (this.state.notes ? (" " + (this.state.notes.length + 1)) : "");
|
|
||||||
const newNote = this.modelManager.createItem({
|
const newNote = this.modelManager.createItem({
|
||||||
content_type: 'Note',
|
content_type: 'Note',
|
||||||
content: {
|
content: {
|
||||||
@@ -544,7 +550,7 @@ class NotesCtrl extends PureCtrl {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
newNote.client_updated_at = new Date();
|
newNote.client_updated_at = new Date();
|
||||||
newNote.dummy = true;
|
newNote.dummy = isDummyNote;
|
||||||
this.modelManager.addItem(newNote);
|
this.modelManager.addItem(newNote);
|
||||||
this.modelManager.setItemDirty(newNote);
|
this.modelManager.setItemDirty(newNote);
|
||||||
const selectedTag = this.appState.getSelectedTag();
|
const selectedTag = this.appState.getSelectedTag();
|
||||||
@@ -556,7 +562,7 @@ class NotesCtrl extends PureCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isFiltering() {
|
isFiltering() {
|
||||||
return this.state.noteFilter.text &&
|
return this.state.noteFilter.text &&
|
||||||
this.state.noteFilter.text.length > 0;
|
this.state.noteFilter.text.length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,31 +5,30 @@
|
|||||||
.section-title-bar-header
|
.section-title-bar-header
|
||||||
.title {{self.state.panelTitle}}
|
.title {{self.state.panelTitle}}
|
||||||
.sk-button.contrast.wide(
|
.sk-button.contrast.wide(
|
||||||
ng-click='self.createNewNote()',
|
ng-click='self.createNewNote()',
|
||||||
title='Create a new note in the selected tag'
|
title='Create a new note in the selected tag'
|
||||||
)
|
)
|
||||||
.sk-label
|
.sk-label
|
||||||
i.icon.ion-plus.add-button
|
i.icon.ion-plus.add-button
|
||||||
.filter-section(role='search')
|
.filter-section(role='search')
|
||||||
input#search-bar.filter-bar(
|
input#search-bar.filter-bar(
|
||||||
lowercase='true',
|
ng-blur='self.onFilterEnter()',
|
||||||
ng-blur='self.onFilterEnter()',
|
ng-change='self.filterTextChanged()',
|
||||||
ng-change='self.filterTextChanged()',
|
ng-keyup='$event.keyCode == 13 && self.onFilterEnter();',
|
||||||
ng-keyup='$event.keyCode == 13 && self.onFilterEnter();',
|
|
||||||
ng-model='self.state.noteFilter.text',
|
ng-model='self.state.noteFilter.text',
|
||||||
placeholder='Search',
|
placeholder='Search',
|
||||||
select-on-click='true',
|
select-on-click='true',
|
||||||
title='Searches notes in the currently selected tag'
|
title='Searches notes in the currently selected tag'
|
||||||
)
|
)
|
||||||
#search-clear-button(
|
#search-clear-button(
|
||||||
ng-click='self.clearFilterText();',
|
ng-click='self.clearFilterText();',
|
||||||
ng-show='self.state.noteFilter.text'
|
ng-show='self.state.noteFilter.text'
|
||||||
) ✕
|
) ✕
|
||||||
#notes-menu-bar.sn-component
|
#notes-menu-bar.sn-component
|
||||||
.sk-app-bar.no-edges
|
.sk-app-bar.no-edges
|
||||||
.left
|
.left
|
||||||
.sk-app-bar-item(
|
.sk-app-bar-item(
|
||||||
ng-class="{'selected' : self.state.mutable.showMenu}",
|
ng-class="{'selected' : self.state.mutable.showMenu}",
|
||||||
ng-click='self.state.mutable.showMenu = !self.state.mutable.showMenu'
|
ng-click='self.state.mutable.showMenu = !self.state.mutable.showMenu'
|
||||||
)
|
)
|
||||||
.sk-app-bar-item-column
|
.sk-app-bar-item-column
|
||||||
@@ -45,72 +44,72 @@
|
|||||||
a.info.sk-h5(ng-click='self.toggleReverseSort()')
|
a.info.sk-h5(ng-click='self.toggleReverseSort()')
|
||||||
| {{self.state.sortReverse === true ? 'Disable Reverse Sort' : 'Enable Reverse Sort'}}
|
| {{self.state.sortReverse === true ? 'Disable Reverse Sort' : 'Enable Reverse Sort'}}
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.selectedSortByCreated()"
|
action="self.selectedMenuItem(); self.selectedSortByCreated()"
|
||||||
circle="self.state.sortBy == 'created_at' && 'success'"
|
circle="self.state.sortBy == 'created_at' && 'success'"
|
||||||
desc="'Sort notes by newest first'"
|
desc="'Sort notes by newest first'"
|
||||||
label="'Date Added'"
|
label="'Date Added'"
|
||||||
)
|
)
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.selectedSortByUpdated()"
|
action="self.selectedMenuItem(); self.selectedSortByUpdated()"
|
||||||
circle="self.state.sortBy == 'client_updated_at' && 'success'"
|
circle="self.state.sortBy == 'client_updated_at' && 'success'"
|
||||||
desc="'Sort notes with the most recently updated first'"
|
desc="'Sort notes with the most recently updated first'"
|
||||||
label="'Date Modified'"
|
label="'Date Modified'"
|
||||||
)
|
)
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.selectedSortByTitle()"
|
action="self.selectedMenuItem(); self.selectedSortByTitle()"
|
||||||
circle="self.state.sortBy == 'title' && 'success'"
|
circle="self.state.sortBy == 'title' && 'success'"
|
||||||
desc="'Sort notes alphabetically by their title'"
|
desc="'Sort notes alphabetically by their title'"
|
||||||
label="'Title'"
|
label="'Title'"
|
||||||
)
|
)
|
||||||
.sk-menu-panel-section
|
.sk-menu-panel-section
|
||||||
.sk-menu-panel-header
|
.sk-menu-panel-header
|
||||||
.sk-menu-panel-header-title Display
|
.sk-menu-panel-header-title Display
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.togglePrefKey('showArchived')"
|
action="self.selectedMenuItem(); self.togglePrefKey('showArchived')"
|
||||||
circle="self.state.showArchived ? 'success' : 'danger'"
|
circle="self.state.showArchived ? 'success' : 'danger'"
|
||||||
desc=`'Archived notes are usually hidden.
|
desc=`'Archived notes are usually hidden.
|
||||||
You can explicitly show them with this option.'`
|
You can explicitly show them with this option.'`
|
||||||
faded="!self.state.showArchived"
|
faded="!self.state.showArchived"
|
||||||
label="'Archived Notes'"
|
label="'Archived Notes'"
|
||||||
)
|
)
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.togglePrefKey('hidePinned')"
|
action="self.selectedMenuItem(); self.togglePrefKey('hidePinned')"
|
||||||
circle="self.state.hidePinned ? 'danger' : 'success'"
|
circle="self.state.hidePinned ? 'danger' : 'success'"
|
||||||
desc=`'Pinned notes always appear on top. You can hide them temporarily
|
desc=`'Pinned notes always appear on top. You can hide them temporarily
|
||||||
with this option so you can focus on other notes in the list.'`
|
with this option so you can focus on other notes in the list.'`
|
||||||
faded="self.state.hidePinned"
|
faded="self.state.hidePinned"
|
||||||
label="'Pinned Notes'"
|
label="'Pinned Notes'"
|
||||||
)
|
)
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.togglePrefKey('hideNotePreview')"
|
action="self.selectedMenuItem(); self.togglePrefKey('hideNotePreview')"
|
||||||
circle="self.state.hideNotePreview ? 'danger' : 'success'"
|
circle="self.state.hideNotePreview ? 'danger' : 'success'"
|
||||||
desc="'Hide the note preview for a more condensed list of notes'"
|
desc="'Hide the note preview for a more condensed list of notes'"
|
||||||
faded="self.state.hideNotePreview"
|
faded="self.state.hideNotePreview"
|
||||||
label="'Note Preview'"
|
label="'Note Preview'"
|
||||||
)
|
)
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.togglePrefKey('hideDate')"
|
action="self.selectedMenuItem(); self.togglePrefKey('hideDate')"
|
||||||
circle="self.state.hideDate ? 'danger' : 'success'"
|
circle="self.state.hideDate ? 'danger' : 'success'"
|
||||||
desc="'Hide the date displayed in each row'"
|
desc="'Hide the date displayed in each row'"
|
||||||
faded="self.state.hideDate"
|
faded="self.state.hideDate"
|
||||||
label="'Date'"
|
label="'Date'"
|
||||||
)
|
)
|
||||||
menu-row(
|
menu-row(
|
||||||
action="self.selectedMenuItem(); self.togglePrefKey('hideTags')"
|
action="self.selectedMenuItem(); self.togglePrefKey('hideTags')"
|
||||||
circle="self.state.hideTags ? 'danger' : 'success'"
|
circle="self.state.hideTags ? 'danger' : 'success'"
|
||||||
desc="'Hide the list of tags associated with each note'"
|
desc="'Hide the list of tags associated with each note'"
|
||||||
faded="self.state.hideTags"
|
faded="self.state.hideTags"
|
||||||
label="'Tags'"
|
label="'Tags'"
|
||||||
)
|
)
|
||||||
.scrollable
|
.scrollable
|
||||||
#notes-scrollable.infinite-scroll(
|
#notes-scrollable.infinite-scroll(
|
||||||
can-load='true',
|
can-load='true',
|
||||||
infinite-scroll='self.paginate()',
|
infinite-scroll='self.paginate()',
|
||||||
threshold='200'
|
threshold='200'
|
||||||
)
|
)
|
||||||
.note(
|
.note(
|
||||||
ng-class="{'selected' : self.state.selectedNote == note}",
|
ng-class="{'selected' : self.state.selectedNote == note}",
|
||||||
ng-click='self.selectNote(note, true)',
|
ng-click='self.selectNote(note, true)',
|
||||||
ng-repeat='note in self.state.renderedNotes track by note.uuid'
|
ng-repeat='note in self.state.renderedNotes track by note.uuid'
|
||||||
)
|
)
|
||||||
.note-flags(ng-show='note.flags.length > 0')
|
.note-flags(ng-show='note.flags.length > 0')
|
||||||
@@ -120,12 +119,12 @@
|
|||||||
| {{note.title}}
|
| {{note.title}}
|
||||||
.note-preview(
|
.note-preview(
|
||||||
ng-if=`
|
ng-if=`
|
||||||
!self.state.hideNotePreview &&
|
!self.state.hideNotePreview &&
|
||||||
!note.content.hidePreview &&
|
!note.content.hidePreview &&
|
||||||
!note.content.protected`
|
!note.content.protected`
|
||||||
)
|
)
|
||||||
.html-preview(
|
.html-preview(
|
||||||
ng-bind-html='note.content.preview_html',
|
ng-bind-html='note.content.preview_html',
|
||||||
ng-show='note.content.preview_html'
|
ng-show='note.content.preview_html'
|
||||||
)
|
)
|
||||||
.plain-preview(
|
.plain-preview(
|
||||||
@@ -135,17 +134,17 @@
|
|||||||
ng-show='!note.content.preview_html && !note.content.preview_plain'
|
ng-show='!note.content.preview_html && !note.content.preview_plain'
|
||||||
) {{note.text}}
|
) {{note.text}}
|
||||||
.date.faded(ng-show='!self.state.hideDate')
|
.date.faded(ng-show='!self.state.hideDate')
|
||||||
span(ng-show="self.state.sortBy == 'client_updated_at'")
|
span(ng-show="self.state.sortBy == 'client_updated_at'")
|
||||||
| Modified {{note.cachedUpdatedAtString || 'Now'}}
|
| Modified {{note.cachedUpdatedAtString || 'Now'}}
|
||||||
span(ng-show="self.state.sortBy != 'client_updated_at'")
|
span(ng-show="self.state.sortBy != 'client_updated_at'")
|
||||||
| {{note.cachedCreatedAtString || 'Now'}}
|
| {{note.cachedCreatedAtString || 'Now'}}
|
||||||
.tags-string(ng-show='note.shouldShowTags')
|
.tags-string(ng-show='note.shouldShowTags')
|
||||||
.faded {{note.savedTagsString || note.tagsString()}}
|
.faded {{note.savedTagsString || note.tagsString()}}
|
||||||
panel-resizer(
|
panel-resizer(
|
||||||
collapsable="true"
|
collapsable="true"
|
||||||
control="self.panelController"
|
control="self.panelController"
|
||||||
default-width="300"
|
default-width="300"
|
||||||
hoverable="true"
|
hoverable="true"
|
||||||
on-resize-finish="self.onPanelResize"
|
on-resize-finish="self.onPanelResize"
|
||||||
panel-id="'notes-column'"
|
panel-id="'notes-column'"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user