Merge pull request #367 from standardnotes/issue-364

Create a new note from search
This commit is contained in:
Mo Bitar
2020-02-13 13:47:40 -06:00
committed by GitHub
2 changed files with 62 additions and 57 deletions

View File

@@ -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;
} }

View File

@@ -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'"
) )