mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Clean up sidebar/filter.gjs (#26673)
The most important change being the replacement of `Input` component with an `<input>` element.
This commit is contained in:
parent
2d5d7b5a33
commit
bfd6a7b86c
@ -1,17 +1,18 @@
|
||||
import Component from "@glimmer/component";
|
||||
import { Input } from "@ember/component";
|
||||
import { on } from "@ember/modifier";
|
||||
import { action } from "@ember/object";
|
||||
import willDestroy from "@ember/render-modifiers/modifiers/will-destroy";
|
||||
import { service } from "@ember/service";
|
||||
import DButton from "discourse/components/d-button";
|
||||
import dIcon from "discourse-common/helpers/d-icon";
|
||||
import i18n from "discourse-common/helpers/i18n";
|
||||
import { bind } from "discourse-common/utils/decorators";
|
||||
|
||||
export default class Filter extends Component {
|
||||
@service sidebarState;
|
||||
|
||||
willDestroy() {
|
||||
super.willDestroy(...arguments);
|
||||
this.sidebarState.clearFilter();
|
||||
}
|
||||
|
||||
get shouldDisplay() {
|
||||
return this.sidebarState.currentPanel.filterable;
|
||||
}
|
||||
@ -20,20 +21,22 @@ export default class Filter extends Component {
|
||||
return this.sidebarState.filter.length > 0;
|
||||
}
|
||||
|
||||
@bind
|
||||
teardown() {
|
||||
this.sidebarState.clearFilter();
|
||||
@action
|
||||
setFilter(event) {
|
||||
this.sidebarState.filter = event.target.value.toLowerCase();
|
||||
}
|
||||
|
||||
@action
|
||||
setFilter(event) {
|
||||
handleEscape(event) {
|
||||
if (event.key === "Escape") {
|
||||
event.stopPropagation();
|
||||
return this.sidebarState.filter.length > 0
|
||||
? (this.sidebarState.filter = "")
|
||||
: event.target.blur();
|
||||
|
||||
if (this.sidebarState.filter.length > 0) {
|
||||
this.sidebarState.filter = "";
|
||||
} else {
|
||||
event.target.blur();
|
||||
}
|
||||
}
|
||||
this.sidebarState.filter = event.target.value.toLowerCase();
|
||||
}
|
||||
|
||||
@action
|
||||
@ -44,17 +47,22 @@ export default class Filter extends Component {
|
||||
|
||||
<template>
|
||||
{{#if this.shouldDisplay}}
|
||||
<div class="sidebar-filter" {{willDestroy this.teardown}}>
|
||||
<Input
|
||||
class="sidebar-filter__input"
|
||||
<div class="sidebar-filter">
|
||||
<input
|
||||
{{on "input" this.setFilter}}
|
||||
{{on "keydown" this.handleEscape}}
|
||||
value={{this.sidebarState.filter}}
|
||||
placeholder={{i18n "sidebar.filter"}}
|
||||
@value={{this.sidebarState.filter}}
|
||||
{{on "keydown" this.setFilter}}
|
||||
type="text"
|
||||
class="sidebar-filter__input"
|
||||
/>
|
||||
|
||||
{{#if this.displayClearFilter}}
|
||||
<DButton @action={{this.clearFilter}} class="sidebar-filter__clear">
|
||||
{{dIcon "times"}}
|
||||
</DButton>
|
||||
<DButton
|
||||
@action={{this.clearFilter}}
|
||||
@icon="times"
|
||||
class="sidebar-filter__clear"
|
||||
/>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
Loading…
Reference in New Issue
Block a user