From 5913a4af1ba34b910705a73ff5a39942f74f8e07 Mon Sep 17 00:00:00 2001 From: "John R. Supplee" Date: Sun, 10 Jan 2021 21:52:25 +0200 Subject: [PATCH 01/20] Global search development * search input * parse query with operators --- client/components/main/globalSearch.jade | 37 ++++++ client/components/main/globalSearch.js | 148 +++++++++++++++++++++++ client/components/main/globalSearch.styl | 69 +++++++++++ config/router.js | 18 +++ 4 files changed, 272 insertions(+) create mode 100644 client/components/main/globalSearch.jade create mode 100644 client/components/main/globalSearch.js create mode 100644 client/components/main/globalSearch.styl diff --git a/client/components/main/globalSearch.jade b/client/components/main/globalSearch.jade new file mode 100644 index 000000000..ec9eb2ff9 --- /dev/null +++ b/client/components/main/globalSearch.jade @@ -0,0 +1,37 @@ +template(name="globalSearchHeaderBar") + h1 + i.fa.fa-search + | {{_ 'globalSearch-title'}} + +template(name="globalSearchModalTitle") + h2 + i.fa.fa-keyboard-o + | {{_ 'globalSearch-title'}} + +template(name="globalSearch") + if isPageReady.get + .wrapper + form.js-search-query-form + input(type="text" name="searchQuery" placeholder="{{_ 'search-example'}}" autofocus dir="auto") + else + +spinner + +template(name="globalSearchViewChangePopup") + ul.pop-over-list + li + with "globalSearchViewChange-choice-me" + a.js-due-cards-view-me + i.fa.fa-user.colorful + | {{_ 'globalSearchViewChange-choice-me'}} + if $eq Utils.globalSearchView "me" + i.fa.fa-check + li + with "globalSearchViewChange-choice-all" + a.js-due-cards-view-all + i.fa.fa-users.colorful + | {{_ 'globalSearchViewChange-choice-all'}} + span.sub-name + +viewer + | {{_ 'globalSearchViewChange-choice-all-description' }} + if $eq Utils.globalSearchView "all" + i.fa.fa-check diff --git a/client/components/main/globalSearch.js b/client/components/main/globalSearch.js new file mode 100644 index 000000000..a7d755f74 --- /dev/null +++ b/client/components/main/globalSearch.js @@ -0,0 +1,148 @@ +const subManager = new SubsManager(); + +BlazeComponent.extendComponent({ + events() { + return [ + { + 'click .js-due-cards-view-change': Popup.open('globalSearchViewChange'), + }, + ]; + }, +}).register('globalSearchHeaderBar'); + +Template.globalSearch.helpers({ + userId() { + return Meteor.userId(); + }, +}); + +BlazeComponent.extendComponent({ + events() { + return [ + { + 'click .js-due-cards-view-me'() { + Utils.setDueCardsView('me'); + Popup.close(); + }, + + 'click .js-due-cards-view-all'() { + Utils.setDueCardsView('all'); + Popup.close(); + }, + }, + ]; + }, +}).register('globalSearchViewChangePopup'); + +BlazeComponent.extendComponent({ + onCreated() { + this.isPageReady = new ReactiveVar(true); + this.query = new ReactiveVar(''); + + // this.autorun(() => { + // const handle = subManager.subscribe('globalSearch'); + // Tracker.nonreactive(() => { + // Tracker.autorun(() => { + // this.isPageReady.set(handle.ready()); + // }); + // }); + // }); + Meteor.subscribe('setting'); + }, + + events() { + return [ + { + 'submit .js-search-query-form'(evt) { + evt.preventDefault(); + this.query.set(evt.target.searchQuery.value); + // eslint-disable-next-line no-console + console.log('query:', this.query.get()); + + let query = this.query.get(); + const reUser = /^@(?\w+)(\s+|$)/; + const reLabel = /^#(?