diff --git a/app/assets/javascripts/views/notes/notes-view.pug b/app/assets/javascripts/views/notes/notes-view.pug index a42e16bc1..1e7657102 100644 --- a/app/assets/javascripts/views/notes/notes-view.pug +++ b/app/assets/javascripts/views/notes/notes-view.pug @@ -1,7 +1,7 @@ #notes-column.sn-component.section.notes(aria-label='Notes') .content #notes-title-bar.section-title-bar - .padded + .p-4.pt-0 .section-title-bar-header .sk-h2.font-semibold.title {{self.state.panelTitle}} .sk-button.contrast.wide( @@ -19,11 +19,18 @@ placeholder='Search', select-on-focus='true', title='Searches notes in the currently selected tag' - ) + ) #search-clear-button( ng-click='self.clearFilterText();', ng-show='self.state.noteFilter.text' ) ✕ + label.sk-horizontal-group.tight.mt-3 + input( + type="checkbox" + ng-checked="self.state.noteFilter.includeProtectedNoteText" + ng-on-click="self.onIncludeProtectedNoteTextChange($event)" + ) + p.capitalize Include protected contents no-account-warning( application='self.application' app-state='self.appState' diff --git a/app/assets/javascripts/views/notes/notes_view.ts b/app/assets/javascripts/views/notes/notes_view.ts index 5a8911252..44f60a6a3 100644 --- a/app/assets/javascripts/views/notes/notes_view.ts +++ b/app/assets/javascripts/views/notes/notes_view.ts @@ -31,7 +31,10 @@ type NotesState = { hideNotePreview?: boolean hideDate?: boolean hideTags: boolean - noteFilter: { text: string } + noteFilter: { + text: string; + includeProtectedNoteText: boolean; + } mutable: { showMenu: boolean } completedFullSync: boolean [PrefKey.TagsPanelWidth]?: number @@ -125,7 +128,10 @@ class NotesViewCtrl extends PureViewCtrl { renderedNotes: [], renderedNotesTags: [], mutable: { showMenu: false }, - noteFilter: { text: '' }, + noteFilter: { + text: '', + includeProtectedNoteText: false + }, panelTitle: '', completedFullSync: false, hideTags: true, @@ -149,6 +155,18 @@ class NotesViewCtrl extends PureViewCtrl { } } + async onIncludeProtectedNoteTextChange(event: Event) { + if (this.state.noteFilter.includeProtectedNoteText) { + this.state.noteFilter.includeProtectedNoteText = false; + } else { + event.preventDefault(); + if (await this.application.authorizeSearchingProtectedNotesText()) { + this.state.noteFilter.includeProtectedNoteText = true; + } + } + this.flushUI(); + } + /** @template */ public get activeEditorNote() { return this.appState?.getActiveEditor()?.note; @@ -330,17 +348,16 @@ class NotesViewCtrl extends PureViewCtrl { private reloadNotesDisplayOptions() { const tag = this.appState.selectedTag; const searchText = this.getState().noteFilter.text.toLowerCase(); - const searchQuery = searchText ? { - query: searchText, - includeProtectedNoteText: false - } : undefined; const criteria = NotesDisplayCriteria.Create({ sortProperty: this.state.sortBy! as CollectionSort, sortDirection: this.state.sortReverse! ? 'asc' : 'dsc', tags: tag ? [tag] : [], includeArchived: this.getState().showArchived!, includePinned: !this.getState().hidePinned!, - searchQuery: searchQuery + searchQuery: { + query: searchText ?? '', + includeProtectedNoteText: this.state.noteFilter.includeProtectedNoteText + } }); this.application!.setNotesDisplayCriteria(criteria); } diff --git a/app/assets/stylesheets/_main.scss b/app/assets/stylesheets/_main.scss index 914c0bd12..7503712c6 100644 --- a/app/assets/stylesheets/_main.scss +++ b/app/assets/stylesheets/_main.scss @@ -206,10 +206,6 @@ $footer-height: 32px; .section-title-bar { - .padded { - padding: 0 14px; - } - .add-button { font-size: 12px; } diff --git a/app/assets/stylesheets/_notes.scss b/app/assets/stylesheets/_notes.scss index fa7d78c10..02a818464 100644 --- a/app/assets/stylesheets/_notes.scss +++ b/app/assets/stylesheets/_notes.scss @@ -42,7 +42,6 @@ #notes-menu-bar { position: relative; - margin-top: 14px; } #notes-options-menu { diff --git a/app/assets/stylesheets/_ui.scss b/app/assets/stylesheets/_ui.scss index 8ee59b19d..bcf559449 100644 --- a/app/assets/stylesheets/_ui.scss +++ b/app/assets/stylesheets/_ui.scss @@ -101,6 +101,10 @@ $screen-md-max: ($screen-lg-min - 1) !default; margin: 0; } +.mb-0 { + margin-bottom: 0; +} + .mt-1 { margin-top: .25rem; } @@ -114,10 +118,17 @@ $screen-md-max: ($screen-lg-min - 1) !default; .p-0 { padding: 0rem; } +.p-4 { + padding: 1rem; +} .p-5 { padding: 1.25rem; } +.pt-0 { + padding-top: 0; +} + .px-3 { padding-left: .75rem; padding-right: .75rem; diff --git a/package.json b/package.json index d7e5c0678..f72a83dc6 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@reach/alert-dialog": "^0.13.0", "@reach/dialog": "^0.13.0", "@standardnotes/sncrypto-web": "^1.2.10", - "@standardnotes/snjs": "^2.0.65", + "@standardnotes/snjs": "^2.0.67", "mobx": "^6.1.6", "preact": "^10.5.12" } diff --git a/yarn.lock b/yarn.lock index d0189870a..e12a45984 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1850,10 +1850,10 @@ "@standardnotes/sncrypto-common" "^1.2.7" libsodium-wrappers "^0.7.8" -"@standardnotes/snjs@^2.0.65": - version "2.0.65" - resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.0.65.tgz#1701e713fa02be0f99db4d0fa3ab516fce656846" - integrity sha512-0CfGVJtt4C+qvBhJfYWwioeQixxwL7LHv/M/bAIoMWaYS9xxFb6/a4y0z/dbEw7ZROx2+KTxgWvZi6qqjRGYhQ== +"@standardnotes/snjs@^2.0.67": + version "2.0.67" + resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.0.67.tgz#87e29f40bb5efaa36f30ddc5905164f7dce194d9" + integrity sha512-XCDxlFQCh0zmV3Hc9mjU7ritZ/2Ma5JPoCbDy4CIAlkKdmVL4tu/4jCfRFILM0zpKF/kLsCTbLGdG7TgU/ReKg== dependencies: "@standardnotes/auth" "^2.0.0" "@standardnotes/sncrypto-common" "^1.2.9"