From 7f3816cb67e29cb81e625becfb33e7c871c357e7 Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Mon, 27 Apr 2015 18:26:04 -0700 Subject: [PATCH] fix(*) Closes 517,603,608, moves search-playground to edgehill-plugins --- .../lib/contenteditable-component.cjsx | 2 +- .../message-list/lib/message-list.cjsx | 3 +- .../mode-switch/lib/mode-toggle.cjsx | 3 +- .../mode-switch/stylesheets/mode-switch.less | 9 ++ .../search-bar/lib/search-bar.cjsx | 6 +- .../search-playground/.gitignore | 1 - .../search-playground/cloudine.png | Bin 114193 -> 0 bytes .../search-playground/keymaps/search-bar.cson | 2 - .../lib/formatting-utils.cjsx | 19 --- .../search-playground/lib/main.cjsx | 41 ----- .../lib/playground-actions.coffee | 12 -- .../lib/relevance-store.coffee | 74 --------- .../search-playground/lib/search-bar.cjsx | 152 ------------------ .../lib/search-bottom-bar.cjsx | 18 --- .../lib/search-results-list.cjsx | 91 ----------- .../lib/search-settings-bar.cjsx | 40 ----- .../search-playground/lib/search-store.coffee | 91 ----------- .../lib/search-suggestion-store.coffee | 71 -------- .../search-playground/package.json | 13 -- .../stylesheets/search-playground.less | 53 ------ .../thread-list/lib/thread-list-store.coffee | 1 + src/components/multiselect-list.cjsx | 5 +- src/components/retina-img.cjsx | 10 +- src/flux/stores/database-view.coffee | 5 + src/flux/stores/focused-tag-store.coffee | 4 +- 25 files changed, 34 insertions(+), 692 deletions(-) delete mode 100755 internal_packages/search-playground/.gitignore delete mode 100644 internal_packages/search-playground/cloudine.png delete mode 100644 internal_packages/search-playground/keymaps/search-bar.cson delete mode 100644 internal_packages/search-playground/lib/formatting-utils.cjsx delete mode 100644 internal_packages/search-playground/lib/main.cjsx delete mode 100644 internal_packages/search-playground/lib/playground-actions.coffee delete mode 100644 internal_packages/search-playground/lib/relevance-store.coffee delete mode 100644 internal_packages/search-playground/lib/search-bar.cjsx delete mode 100644 internal_packages/search-playground/lib/search-bottom-bar.cjsx delete mode 100644 internal_packages/search-playground/lib/search-results-list.cjsx delete mode 100644 internal_packages/search-playground/lib/search-settings-bar.cjsx delete mode 100644 internal_packages/search-playground/lib/search-store.coffee delete mode 100644 internal_packages/search-playground/lib/search-suggestion-store.coffee delete mode 100755 internal_packages/search-playground/package.json delete mode 100644 internal_packages/search-playground/stylesheets/search-playground.less diff --git a/internal_packages/composer/lib/contenteditable-component.cjsx b/internal_packages/composer/lib/contenteditable-component.cjsx index c6ad73e49..9cd25b2dd 100644 --- a/internal_packages/composer/lib/contenteditable-component.cjsx +++ b/internal_packages/composer/lib/contenteditable-component.cjsx @@ -577,7 +577,7 @@ class ContenteditableComponent extends React.Component @setState toolbarVisible: false _focusedOnToolbar: => - React.findDOMNode(@refs.floatingToolbar).contains(document.activeElement) + React.findDOMNode(@refs.floatingToolbar)?.contains(document.activeElement) # This needs to be in the contenteditable area because we need to first # restore the selection before calling the `execCommand` diff --git a/internal_packages/message-list/lib/message-list.cjsx b/internal_packages/message-list/lib/message-list.cjsx index 7f9bce8ad..ad515d66b 100755 --- a/internal_packages/message-list/lib/message-list.cjsx +++ b/internal_packages/message-list/lib/message-list.cjsx @@ -67,7 +67,8 @@ class MessageList extends React.Component ,100 render: => - return
if not @state.currentThread? + if not @state.currentThread? + return
wrapClass = classNames "messages-wrap": true diff --git a/internal_packages/mode-switch/lib/mode-toggle.cjsx b/internal_packages/mode-switch/lib/mode-toggle.cjsx index 9eaf59161..35ff6a36c 100644 --- a/internal_packages/mode-switch/lib/mode-toggle.cjsx +++ b/internal_packages/mode-switch/lib/mode-toggle.cjsx @@ -21,11 +21,12 @@ ModeToggle = React.createClass render: -> return
unless @state.visible -
diff --git a/internal_packages/mode-switch/stylesheets/mode-switch.less b/internal_packages/mode-switch/stylesheets/mode-switch.less index 8fa915ac2..7500ea2e3 100644 --- a/internal_packages/mode-switch/stylesheets/mode-switch.less +++ b/internal_packages/mode-switch/stylesheets/mode-switch.less @@ -1,3 +1,4 @@ +@import 'ui-variables'; .mode-switch { z-index: 1000; @@ -8,3 +9,11 @@ transition: left .2s ease-out; } } +.mode-toggle { + z-index: 1000; + position: relative; + + .colorfill { + background-color: @component-active-color; + } +} diff --git a/internal_packages/search-bar/lib/search-bar.cjsx b/internal_packages/search-bar/lib/search-bar.cjsx index 812aba648..14939ef03 100644 --- a/internal_packages/search-bar/lib/search-bar.cjsx +++ b/internal_packages/search-bar/lib/search-bar.cjsx @@ -14,7 +14,7 @@ class SearchBar extends React.Component query: "" focused: false suggestions: [] - committedQuery: "" + committedQuery: null componentDidMount: => @unsubscribe = SearchSuggestionStore.listen @_onStoreChange @@ -84,7 +84,7 @@ class SearchBar extends React.Component classNames 'focused': @state.focused 'showing-query': @state.query?.length > 0 - 'committed-query': @state.committedQuery.length > 0 + 'committed-query': @state.committedQuery?.length > 0 'search-container': true 'showing-suggestions': @state.suggestions?.length > 0 @@ -120,7 +120,7 @@ class SearchBar extends React.Component Actions.searchQueryCommitted(item.value) _onClearSearch: (event) => - Actions.searchQueryCommitted('') + Actions.searchQueryCommitted(null) _clearAndBlur: => @_onClearSearch() diff --git a/internal_packages/search-playground/.gitignore b/internal_packages/search-playground/.gitignore deleted file mode 100755 index 3c3629e64..000000000 --- a/internal_packages/search-playground/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/internal_packages/search-playground/cloudine.png b/internal_packages/search-playground/cloudine.png deleted file mode 100644 index d6028d3b25b9587b02736a00058b6c1efab621e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114193 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∓C1yvdgrHa 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%0A17)-)&XkA!Ma!XZIdRadHy(L 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 - diff = moment().diff(time, 'days', true) - if diff <= 1 - format = "h:mm a" - else if diff > 1 and diff <= 365 - format = "MMM D" - else - format = "MMM D YYYY" - moment(time).format(format) - - subject: (subj) -> - if (subj ? "").trim().length is 0 - return (No Subject) - else - return subj diff --git a/internal_packages/search-playground/lib/main.cjsx b/internal_packages/search-playground/lib/main.cjsx deleted file mode 100644 index 99569c1b7..000000000 --- a/internal_packages/search-playground/lib/main.cjsx +++ /dev/null @@ -1,41 +0,0 @@ -path = require 'path' -require 'coffee-react/register' -React = require 'react' -{ComponentRegistry, WorkspaceStore} = require 'inbox-exports' - -SearchPlaygroundBar = require './search-bar' -SearchPlaygroundSettingsBar = require './search-settings-bar' -SearchPlaygroundBottomBar = require './search-bottom-bar' -SearchResultsList = require './search-results-list' - -module.exports = - configDefaults: - showOnRightSide: false - - activate: (@state) -> - WorkspaceStore.defineSheet 'Search', {root: true, supportedModes: ['list'], name: 'Search'}, - list: ['RootSidebar', 'SearchPlayground'] - - ComponentRegistry.register - view: SearchPlaygroundBar - name: 'SearchPlaygroundBar' - location: WorkspaceStore.Location.SearchPlayground - - ComponentRegistry.register - view: SearchPlaygroundBottomBar - name: 'SearchPlaygroundBottomBar' - location: WorkspaceStore.Location.SearchPlayground - - ComponentRegistry.register - view: SearchPlaygroundSettingsBar - name: 'SearchPlaygroundSettingsBar' - location: WorkspaceStore.Location.SearchPlayground - - ComponentRegistry.register - view: SearchResultsList - name: 'SearchResultsList' - location: WorkspaceStore.Location.SearchPlayground - - - deactivate: -> - ComponentRegistry.unregister 'SearchBar' diff --git a/internal_packages/search-playground/lib/playground-actions.coffee b/internal_packages/search-playground/lib/playground-actions.coffee deleted file mode 100644 index f5a630849..000000000 --- a/internal_packages/search-playground/lib/playground-actions.coffee +++ /dev/null @@ -1,12 +0,0 @@ -Reflux = require 'reflux' - -Actions = Reflux.createActions([ - "setRankNext", - "clearRanks", - "submitRanks" -]) - -for key, action of Actions - action.sync = true - -module.exports = Actions \ No newline at end of file diff --git a/internal_packages/search-playground/lib/relevance-store.coffee b/internal_packages/search-playground/lib/relevance-store.coffee deleted file mode 100644 index 109762208..000000000 --- a/internal_packages/search-playground/lib/relevance-store.coffee +++ /dev/null @@ -1,74 +0,0 @@ -Reflux = require 'reflux' -_ = require 'underscore-plus' -remote = require 'remote' - -{NamespaceStore, - Contact, - Message, - Actions, - DatabaseStore} = require 'inbox-exports' - -PlaygroundActions = require './playground-actions' -SearchStore = require './search-store' - -module.exports = -RelevanceStore = Reflux.createStore - init: -> - @listenTo SearchStore, @_onSearchChanged - @listenTo PlaygroundActions.setRankNext, @_onSetRankNext - @listenTo PlaygroundActions.clearRanks, @_onClearRanks - @listenTo PlaygroundActions.submitRanks, @_onSubmitRanks - - valueForId: (id) -> - @_values[id] - - _onSubmitRanks: -> - v = SearchStore.view() - if @_valuesOrdered.length is 0 - return - - data = - namespaceId: NamespaceStore.current().id - query: SearchStore.searchQuery() - weights: SearchStore.searchWeights() - returned: [0..Math.min(9, v.count())].map (i) -> v.get(i)?.id - desired: @_valuesOrdered - - draft = new Message - from: [NamespaceStore.current().me()] - to: [new Contact(name: "Nilas Team", email: "feedback@nilas.com")] - date: (new Date) - draft: true - subject: "Feedback - Search Result Ranking" - namespaceId: NamespaceStore.current().id - body: JSON.stringify(data, null, '\t') - - DatabaseStore.persistModel(draft).then => - DatabaseStore.localIdForModel(draft).then (localId) -> - Actions.sendDraft(localId) - dialog = remote.require('dialog') - dialog.showMessageBox remote.getCurrentWindow(), { - type: 'warning' - buttons: ['OK'], - message: "Thank you." - detail: "Your preferred ranking order for this query has been sent to the Edgehill team." - } - @_onClearRanks() - - _onClearRanks: -> - @_values = {} - @_valuesOrdered = [] - @_valueLast = 0 - @trigger(@) - - _onSetRankNext: (id) -> - @_values[id] = @_valueLast += 1 - @_valuesOrdered.push(id) - @trigger(@) - - _onSearchChanged: -> - v = SearchStore.view() - @_values = {} - @_valuesOrdered = [] - @_valueLast = 0 - @trigger(@) diff --git a/internal_packages/search-playground/lib/search-bar.cjsx b/internal_packages/search-playground/lib/search-bar.cjsx deleted file mode 100644 index 2f9cdfd5a..000000000 --- a/internal_packages/search-playground/lib/search-bar.cjsx +++ /dev/null @@ -1,152 +0,0 @@ -React = require 'react/addons' -classNames = require 'classnames' -{Actions} = require 'inbox-exports' -{Menu, RetinaImg} = require 'ui-components' -SearchSuggestionStore = require './search-suggestion-store' -_ = require 'underscore-plus' - - -class SearchBar extends React.Component - @displayName = 'SearchBar' - - constructor: (@props) -> - @state = - query: "" - focused: false - suggestions: [] - committedQuery: "" - - componentDidMount: => - @unsubscribe = SearchSuggestionStore.listen @_onStoreChange - @body_unsubscriber = atom.commands.add 'body', { - 'application:focus-search': @_onFocusSearch - } - @body_unsubscriber = atom.commands.add '.search-bar', { - 'search-bar:escape-search': @_clearAndBlur - } - - # It's important that every React class explicitly stops listening to - # atom events before it unmounts. Thank you event-kit - # This can be fixed via a Reflux mixin - componentWillUnmount: => - @unsubscribe() - @body_unsubscriber.dispose() - - render: => - inputValue = @_queryToString(@state.query) - inputClass = classNames - 'input-bordered': true - 'empty': inputValue.length is 0 - - headerComponents = [ - - - -
- ] - - itemContentFunc = (item) => - if item.divider - - else if item.contact - - else - item.label - -
-
Search Query
- item.label } - onSelect={@_onSelectSuggestion} - /> -
- - _onFocusSearch: => - React.findDOMNode(@refs.searchInput).focus() - - _containerClasses: => - classNames - 'focused': @state.focused - 'showing-query': @state.query?.length > 0 - 'committed-query': @state.committedQuery.length > 0 - 'search-container': true - 'showing-suggestions': @state.suggestions?.length > 0 - - _queryToString: (query) => - return "" unless query instanceof Array - str = "" - for term in query - for key,val of term - if key == "all" - str += val - else - str += "#{key}:#{val}" - - _stringToQuery: (str) => - return [] unless str - - # note: right now this only works if there's one term. In the future, - # we'll make this whole search input a tokenizing field - [a,b] = str.split(':') - term = {} - if b - term[a] = b - else - term["all"] = a - [term] - - _onValueChange: (event) => - Actions.searchQueryChanged(@_stringToQuery(event.target.value)) - if (event.target.value is '') - @_onClearSearch() - - _onSelectSuggestion: (item) => - Actions.searchQueryCommitted(item.value) - - _onClearSearch: (event) => - Actions.searchQueryCommitted('') - - _clearAndBlur: => - @_onClearSearch() - React.findDOMNode(@refs.searchInput)?.blur() - - _onFocus: => - @setState focused: true - - _onBlur: => - # Don't immediately hide the menu when the text input is blurred, - # because the user might have clicked an item in the menu. Wait to - # handle the touch event, then dismiss the menu. - setTimeout => - Actions.searchBlurred() - @setState(focused: false) - , 150 - - _doSearch: => - Actions.searchQueryCommitted(@state.query) - - _onStoreChange: => - @setState - query: SearchSuggestionStore.query() - suggestions: SearchSuggestionStore.suggestions() - committedQuery: SearchSuggestionStore.committedQuery() - - -module.exports = SearchBar \ No newline at end of file diff --git a/internal_packages/search-playground/lib/search-bottom-bar.cjsx b/internal_packages/search-playground/lib/search-bottom-bar.cjsx deleted file mode 100644 index 0d1be33a3..000000000 --- a/internal_packages/search-playground/lib/search-bottom-bar.cjsx +++ /dev/null @@ -1,18 +0,0 @@ -React = require 'react' -_ = require 'underscore-plus' -PlaygroundActions = require './playground-actions' - -module.exports = -SearchBottomBar = React.createClass - - render: -> -
- - -
- - _onClear: -> - PlaygroundActions.clearRanks() - - _onSubmit: -> - PlaygroundActions.submitRanks() diff --git a/internal_packages/search-playground/lib/search-results-list.cjsx b/internal_packages/search-playground/lib/search-results-list.cjsx deleted file mode 100644 index d6d0f3488..000000000 --- a/internal_packages/search-playground/lib/search-results-list.cjsx +++ /dev/null @@ -1,91 +0,0 @@ -_ = require 'underscore-plus' -React = require 'react' -PlaygroundActions = require './playground-actions' -{ListTabular, MultiselectList, Flexbox} = require 'ui-components' -{timestamp, subject} = require './formatting-utils' -{Utils, - Thread, - WorkspaceStore, - NamespaceStore} = require 'inbox-exports' - -RelevanceStore = require './relevance-store' -SearchStore = require './search-store' - -Relevance = React.createClass - getInitialState: -> - @_getStateFromStores() - - componentDidMount: -> - @unlisten = RelevanceStore.listen @_onUpdate, @ - - componentWillUnmount: -> - @unlisten() if @unlisten - - render: -> -
- {@state.relevance} -
- - _onClick: (event) -> - PlaygroundActions.setRankNext(@props.threadId) - event.stopPropagation() - - _onUpdate: -> - @setState(@_getStateFromStores()) - - _getStateFromStores: -> - relevance: RelevanceStore.valueForId(@props.threadId) ? '-' - - -module.exports = -SearchResultsList = React.createClass - displayName: 'SearchResultsList' - - componentWillMount: -> - c2 = new ListTabular.Column - name: "Name" - width: 200 - resolver: (thread) -> - list = thread.participants - return [] unless list and list instanceof Array - me = NamespaceStore.current().emailAddress - list = _.reject list, (p) -> p.email is me - list = _.map list, (p) -> if p.name and p.name.length then p.name else p.email - list = list.join(', ') - {list} - - c3 = new ListTabular.Column - name: "Message" - flex: 4 - resolver: (thread) -> - attachments = [] - if thread.hasTagId('attachment') - attachments =
- - {subject(thread.subject)} - {thread.snippet} - {attachments} - - - c4 = new ListTabular.Column - name: "Date" - resolver: (thread) -> - {timestamp(thread.lastMessageTimestamp)} - - c5 = new ListTabular.Column - name: "Relevance" - resolver: (thread) -> - - - @columns = [c2, c3, c4, c5] - @commands = {} - - render: -> - {} } - commands={@commands} - className="thread-list" - collection="thread" /> - diff --git a/internal_packages/search-playground/lib/search-settings-bar.cjsx b/internal_packages/search-playground/lib/search-settings-bar.cjsx deleted file mode 100644 index 1f7a3f062..000000000 --- a/internal_packages/search-playground/lib/search-settings-bar.cjsx +++ /dev/null @@ -1,40 +0,0 @@ -React = require 'react' -{Actions} = require 'inbox-exports' -_ = require 'underscore-plus' -SearchStore = require './search-store' - -module.exports = -SearchBar = React.createClass - - getInitialState: -> - weights: SearchStore.searchWeights() - - componentDidMount: -> - @unsubscribe = SearchStore.listen @_onStoreChange - - componentWillUnmount: -> - @unsubscribe() - - render: -> -
-
Search Weights
-
- From: - - -
-
- Subject: - - -
-
- - _onValueChange: (event) -> - weights = SearchStore.searchWeights() - weights[event.target.name] = event.target.value - Actions.searchWeightsChanged(weights) - - _onStoreChange: -> - @setState - weights: SearchStore.searchWeights() diff --git a/internal_packages/search-playground/lib/search-store.coffee b/internal_packages/search-playground/lib/search-store.coffee deleted file mode 100644 index d7e762e67..000000000 --- a/internal_packages/search-playground/lib/search-store.coffee +++ /dev/null @@ -1,91 +0,0 @@ -Reflux = require 'reflux' -_ = require 'underscore-plus' - -{DatabaseStore, - SearchView, - NamespaceStore, - FocusedContentStore, - Actions, - Utils, - Thread, - Message} = require 'inbox-exports' - -module.exports = -SearchStore = Reflux.createStore - init: -> - @_resetInstanceVars() - - @listenTo Actions.searchQueryCommitted, @_onSearchCommitted - @listenTo Actions.searchWeightsChanged, @_onSearchWeightsChanged - @listenTo DatabaseStore, @_onDataChanged - @listenTo NamespaceStore, @_onNamespaceChanged - - _resetInstanceVars: -> - @_lastQuery = null - @_searchQuery = null - @_searchWeights = {"from": 4, "subject": 2} - - view: -> - @_view - - searchWeights: -> - @_searchWeights - - searchQuery: -> - @_searchQuery - - setView: (view) -> - @_viewUnlisten() if @_viewUnlisten - @_view = view - - if view - @_viewUnlisten = view.listen -> - @trigger(@) - ,@ - - @trigger(@) - - createView: -> - namespaceId = NamespaceStore.current()?.id - - if @_searchQuery - query = JSON.parse(JSON.stringify(@_searchQuery)) - for term in query - if term['all'] - term['weights'] = @_searchWeights - - v = new SearchView(query, namespaceId) - v.setSortOrder('relevance') - @setView(v) - else - @setView(null) - - Actions.focusInCollection(collection: 'thread', item: null) - - # Inbound Events - - _onNamespaceChanged: -> - @createView() - - _onSearchCommitted: (query) -> - @_searchQuery = query - @createView() - - _onSearchWeightsChanged: (weights) -> - @_searchWeights = weights - - @createViewDebounced ?= _.debounce => - @createView() - , 500 - @createViewDebounced() - @trigger(@) - - _onDataChanged: (change) -> - return unless @_view - - if change.objectClass is Thread.name - @_view.invalidate({changed: change.objects, shallow: true}) - - if change.objectClass is Message.name - threadIds = _.uniq _.map change.objects, (m) -> m.threadId - @_view.invalidateMetadataFor(threadIds) diff --git a/internal_packages/search-playground/lib/search-suggestion-store.coffee b/internal_packages/search-playground/lib/search-suggestion-store.coffee deleted file mode 100644 index 90e3a0700..000000000 --- a/internal_packages/search-playground/lib/search-suggestion-store.coffee +++ /dev/null @@ -1,71 +0,0 @@ -Reflux = require 'reflux' -{Actions, - Contact, - ContactStore} = require 'inbox-exports' -_ = require 'underscore-plus' - -# Stores should closely match the needs of a particular part of the front end. -# For example, we might create a "MessageStore" that observes this store -# for changes in selectedThread, "DatabaseStore" for changes to the underlying database, -# and vends up the array used for that view. - -SearchSuggestionStore = Reflux.createStore - init: -> - @_suggestions = [] - @_query = "" - @_committedQuery = "" - - @listenTo Actions.searchQueryChanged, @onSearchQueryChanged - @listenTo Actions.searchQueryCommitted, @onSearchQueryCommitted - @listenTo Actions.searchBlurred, @onSearchBlurred - - onSearchQueryChanged: (query) -> - @_query = query - @repopulate() - - onSearchQueryCommitted: (query) -> - @_query = query - @_committedQuery = query - @_suggestions = [] - @trigger() - - onSearchBlurred: -> - @_suggestions = [] - @trigger() - - repopulate: -> - @_suggestions = [] - term = @_query?[0] - return @trigger(@) unless term - - key = Object.keys(term)[0] - val = term[key]?.toLowerCase() - return @trigger(@) unless val - - contactResults = ContactStore.searchContacts(val, limit:10) - - @_suggestions.push - label: "Message Contains: #{val}" - value: [{"all": val}] - - if contactResults.length - @_suggestions.push - divider: 'People' - - _.each contactResults, (contact) => - @_suggestions.push - contact: contact - value: [{"participants": contact.email}] - - @trigger(@) - - # Exposed Data - - query: -> @_query - - committedQuery: -> @_committedQuery - - suggestions: -> - @_suggestions - -module.exports = SearchSuggestionStore diff --git a/internal_packages/search-playground/package.json b/internal_packages/search-playground/package.json deleted file mode 100755 index 93f155462..000000000 --- a/internal_packages/search-playground/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "search-playground", - "version": "0.1.0", - "main": "./lib/main", - "description": "Internal search playground for testing", - "license": "Proprietary", - "private": true, - "engines": { - "atom": "*" - }, - "dependencies": { - } -} diff --git a/internal_packages/search-playground/stylesheets/search-playground.less b/internal_packages/search-playground/stylesheets/search-playground.less deleted file mode 100644 index 1840f82d8..000000000 --- a/internal_packages/search-playground/stylesheets/search-playground.less +++ /dev/null @@ -1,53 +0,0 @@ -@import "ui-variables"; -@import "ui-mixins"; - -.search-bar, -.search-settings-bar { - .header { - color: @text-color-very-subtle; - font-weight: @font-weight-semi-bold; - font-size: @font-size-small; - padding-top:@padding-small-horizontal; - display:block; - } -} - -.search-settings-bar { - padding:15px; - padding-bottom:25px; - border-bottom:1px solid #ccc; - background: url(nylas://search-playground/cloudine.png) top right no-repeat; - background-size:contain; - - .field { - display:inline-block; - padding-right:15px; - } - input[type=range] { - margin-left:10px; - position:relative; - top:3px; - } - input[type=text] { - margin-left:10px; - width:40px; - padding-bottom:0; - } -} - -.search-bottom-bar { - order:100; - text-align:right; - padding-top:15px; - padding-bottom:15px; - .btn { - margin-right:15px; - } -} - -.search-playground { - .thread-list { - position: relative; - flex: 1; - } -} diff --git a/internal_packages/thread-list/lib/thread-list-store.coffee b/internal_packages/thread-list/lib/thread-list-store.coffee index ed01d244b..63d6555c1 100644 --- a/internal_packages/thread-list/lib/thread-list-store.coffee +++ b/internal_packages/thread-list/lib/thread-list-store.coffee @@ -78,6 +78,7 @@ ThreadListStore = Reflux.createStore _onNamespaceChanged: -> @createView() _onSearchCommitted: (query) -> + return if @_searchQuery is query @_searchQuery = query @createView() diff --git a/src/components/multiselect-list.cjsx b/src/components/multiselect-list.cjsx index 4a3271877..e75d2ab40 100644 --- a/src/components/multiselect-list.cjsx +++ b/src/components/multiselect-list.cjsx @@ -78,7 +78,10 @@ class MultiselectList extends React.Component name: "" resolver: (thread) => toggle = (event) => - props.dataStore.view().selection.toggle(thread) + if event.shiftKey + props.dataStore.view().selection.expandTo(thread) + else + props.dataStore.view().selection.toggle(thread) event.stopPropagation()
diff --git a/src/components/retina-img.cjsx b/src/components/retina-img.cjsx index 1f05c0b35..174517315 100644 --- a/src/components/retina-img.cjsx +++ b/src/components/retina-img.cjsx @@ -19,11 +19,11 @@ StylesImpactedByZoom = [ ### Public: RetinaImg wraps the DOM's standard ` tag and implements a `UIImage` style - interface. Rather than specifying an image `src`, RetinaImg allows you to provide - an image name. Like UIImage on iOS, it automatically finds the best image for the current - display based on pixel density. Given `image.png`, on a Retina screen, it looks for - `image@2x.png`, `image.png`, `image@1x.png` in that order. It uses a lookup table and caches - image names, so images generally resolve immediately. +interface. Rather than specifying an image `src`, RetinaImg allows you to provide +an image name. Like UIImage on iOS, it automatically finds the best image for the current +display based on pixel density. Given `image.png`, on a Retina screen, it looks for +`image@2x.png`, `image.png`, `image@1x.png` in that order. It uses a lookup table and caches +image names, so images generally resolve immediately. ### class RetinaImg extends React.Component @displayName: 'RetinaImg' diff --git a/src/flux/stores/database-view.coffee b/src/flux/stores/database-view.coffee index 1f5d945c3..733bc2410 100644 --- a/src/flux/stores/database-view.coffee +++ b/src/flux/stores/database-view.coffee @@ -237,6 +237,10 @@ class DatabaseView extends ModelView query.include(attr) for attr in @_includes query.then (items) => + # If the page is no longer in the cache at all, it may have fallen out of the + # retained range and been cleaned up. + return unless @_pages[idx] + # If we've started reloading since we made our query, don't do any more work if page.loadingStart isnt start @log("Retrieval cancelled — out of date.") @@ -251,6 +255,7 @@ class DatabaseView extends ModelView retrievePageMetadata: (idx, items) -> start = Date.now() page = @_pages[idx] + page.loadingStart = start # This method can only be used once the page is loaded. If no page is present, diff --git a/src/flux/stores/focused-tag-store.coffee b/src/flux/stores/focused-tag-store.coffee index ae457143e..ee00743e5 100644 --- a/src/flux/stores/focused-tag-store.coffee +++ b/src/flux/stores/focused-tag-store.coffee @@ -28,10 +28,10 @@ FocusedTagStore = Reflux.createStore @_setTag(tag) _onSearchQueryCommitted: (query) -> - if query? and query isnt "" + if query @_oldTag = @_tag @_setTag(null) - else + else if @_oldTag @_setTag(@_oldTag) _setTag: (tag) ->