FEATURE: Collapsable filters on mobile

This commit is contained in:
Kris 2019-11-08 16:07:08 -05:00
parent 43bc28a198
commit 5e756f57da
7 changed files with 93 additions and 25 deletions

View File

@ -3,5 +3,19 @@ export default Ember.Component.extend({
originalPostContent: Ember.computed.readOnly( originalPostContent: Ember.computed.readOnly(
"topic.post_stream.posts.firstObject.cooked" "topic.post_stream.posts.firstObject.cooked"
) ),
didInsertElement() {
this._super(...arguments);
document
.querySelector("body")
.classList.add("archetype-knowledge-explorer-topic");
},
willDestroyElement() {
this._super(...arguments);
document
.querySelector("body")
.classList.remove("archetype-knowledge-explorer-topic");
}
}); });

View File

@ -1,4 +1,5 @@
import { default as computed } from "ember-addons/ember-computed-decorators"; import { default as computed } from "ember-addons/ember-computed-decorators";
import { on } from "discourse-common/utils/decorators";
import KnowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer"; import KnowledgeExplorer from "discourse/plugins/discourse-knowledge-explorer/discourse/models/knowledge-explorer";
function mergeCategories(results) { function mergeCategories(results) {
@ -33,6 +34,14 @@ export default Ember.Controller.extend({
searchTerm: null, searchTerm: null,
selectedTopic: null, selectedTopic: null,
topic: null, topic: null,
expandedFilters: false,
@on("init")
_setupFilters() {
if (!this.site.mobileView) {
this.set("expandedFilters", true);
}
},
@computed("loadMoreUrl") @computed("loadMoreUrl")
canLoadMore(loadMoreUrl) { canLoadMore(loadMoreUrl) {
@ -167,6 +176,14 @@ export default Ember.Controller.extend({
isLoading: false isLoading: false
}); });
}); });
},
toggleFilters() {
if (!this.expandedFilters) {
this.set("expandedFilters", true);
} else {
this.set("expandedFilters", false);
}
} }
} }
}); });

View File

@ -1,4 +1,4 @@
<span class="knowledge-base-search-wrapper"> <span class="knowledge-explorer-search-wrapper">
{{input {{input
type="text" type="text"
value=(readonly searchTerm) value=(readonly searchTerm)

View File

@ -5,29 +5,36 @@
}} }}
{{#conditional-loading-spinner condition=isLoading}} {{#conditional-loading-spinner condition=isLoading}}
<div class="knowledge-explorer-browse"> <div class="knowledge-explorer-browse">
{{#if site.mobileView}}
{{#unless selectedTopic}}
{{d-button class="knowledge-explorer-expander" icon=(if expandedFilters "angle-up" "angle-down") action=(action "toggleFilters") label="knowledge_explorer.filter_button"}}
{{/unless}}
{{/if}}
<div class="knowledge-explorer-filters"> <div class="knowledge-explorer-filters">
{{#if categories}} {{#if expandedFilters}}
<div class="knowledge-explorer-items knowledge-explorer-categories"> {{#if categories}}
<h3>{{i18n 'knowledge_explorer.categories'}}</h3> <div class="knowledge-explorer-items knowledge-explorer-categories">
{{#each categories as |category|}} <h3>{{i18n 'knowledge_explorer.categories'}}</h3>
{{knowledge-explorer-category {{#each categories as |category|}}
category=category {{knowledge-explorer-category
selectCategory=(action "updateSelectedCategories" category=category
tagName="") selectCategory=(action "updateSelectedCategories"
}} tagName="")
{{/each}} }}
</div> {{/each}}
{{/if}} </div>
{{#if tags}} {{/if}}
<div class="knowledge-explorer-items knowledge-explorer-tags"> {{#if tags}}
<h3>{{i18n 'knowledge_explorer.tags'}}</h3> <div class="knowledge-explorer-items knowledge-explorer-tags">
{{#each tags as |tag|}} <h3>{{i18n 'knowledge_explorer.tags'}}</h3>
{{knowledge-explorer-tag {{#each tags as |tag|}}
tag=tag {{knowledge-explorer-tag
selectTag=(action "updateSelectedTags") tag=tag
}} selectTag=(action "updateSelectedTags")
{{/each}} }}
</div> {{/each}}
</div>
{{/if}}
{{/if}} {{/if}}
</div> </div>
{{#if selectedTopic}} {{#if selectedTopic}}

View File

@ -1,4 +1,4 @@
.knowledge-base-search-wrapper { .knowledge-explorer-search-wrapper {
position: relative; position: relative;
width: 500px; width: 500px;
.d-icon { .d-icon {

View File

@ -4,6 +4,12 @@
width: calc(100vw - 0.75em); width: calc(100vw - 0.75em);
margin: 0.625em 0; margin: 0.625em 0;
} }
.knowledge-explorer-search-wrapper {
display: flex;
justify-content: center;
}
.knowledge-explorer-search { .knowledge-explorer-search {
font-size: $font-up-2; font-size: $font-up-2;
padding: 0.5em 0; padding: 0.5em 0;
@ -25,4 +31,27 @@
} }
} }
} }
.knowledge-explorer-filters {
margin-top: 0;
background: $primary-very-low;
padding: 0 0.5em;
.knowledge-explorer-items:first-of-type {
margin-top: 1em;
}
+ .knowledge-explorer-results {
margin-top: 2em;
}
}
.archetype-knowledge-explorer-topic {
.knowledge-explorer-filters {
display: none;
}
}
.knowledge-explorer-expander {
margin: 1em 0 0 0;
width: 100%;
}
} }

View File

@ -12,3 +12,4 @@ en:
topic: topic:
back: "Go back" back: "Go back"
navigate_to_topic: "View the discussion on this topic" navigate_to_topic: "View the discussion on this topic"
filter_button: "Filters"