mirror of
https://github.com/flarum/core.git
synced 2025-08-09 18:07:02 +02:00
feat: search UI/UX revamp (#3941)
* feat: first iteration * chore: tweak * feat: second iteration * chore: incorrect code organization * feat: gambit input suggestions * feat: gambit keyboard navigation * chore: bugs * feat: negative gambits * feat: improve gambit highlighting * refactor: localize gambits * feat: negative and positive gambit buttons * fix: permissions * chore: wat * per: lazy load search modal * fix: extensibility and bug fixes * fix: bugs * feat: reusable autocomplete dropdown * chore: format * fix: tag filter
This commit is contained in:
@@ -1,15 +1,19 @@
|
||||
import IGambit from 'flarum/common/query/IGambit';
|
||||
import app from 'flarum/common/app';
|
||||
import { BooleanGambit } from 'flarum/common/query/IGambit';
|
||||
|
||||
export default class SubscriptionGambit implements IGambit {
|
||||
pattern(): string {
|
||||
return 'is:(follow|ignor)(?:ing|ed)';
|
||||
export default class SubscriptionGambit extends BooleanGambit {
|
||||
key(): string[] {
|
||||
return [
|
||||
app.translator.trans('flarum-subscriptions.lib.gambits.discussions.subscription.following_key', {}, true),
|
||||
app.translator.trans('flarum-subscriptions.lib.gambits.discussions.subscription.ignoring_key', {}, true),
|
||||
];
|
||||
}
|
||||
|
||||
toFilter(matches: string[], negate: boolean): Record<string, any> {
|
||||
const type = matches[1] === 'follow' ? 'following' : 'ignoring';
|
||||
const key = (negate ? '-' : '') + this.filterKey();
|
||||
|
||||
return {
|
||||
subscription: type,
|
||||
[key]: matches[1],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -20,4 +24,8 @@ export default class SubscriptionGambit implements IGambit {
|
||||
fromFilter(value: string, negate: boolean): string {
|
||||
return `${negate ? '-' : ''}is:${value}`;
|
||||
}
|
||||
|
||||
enabled(): boolean {
|
||||
return !!app.session.user;
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@ import GlobalSearchState from 'flarum/forum/states/GlobalSearchState';
|
||||
export default function addSubscriptionFilter() {
|
||||
extend(IndexSidebar.prototype, 'navItems', function (items) {
|
||||
if (app.session.user) {
|
||||
const params = app.search.stickyParams();
|
||||
const params = app.search.state.stickyParams();
|
||||
|
||||
items.add(
|
||||
'following',
|
||||
|
@@ -75,6 +75,16 @@ flarum-subscriptions:
|
||||
# REUSED TRANSLATIONS - These keys should not be used directly in code!
|
||||
##
|
||||
|
||||
# Translations in this namespace are used by the forum and admin interfaces.
|
||||
lib:
|
||||
|
||||
# These translations are used by gambits. Gambit keys must be in snake_case, no spaces.
|
||||
gambits:
|
||||
discussions:
|
||||
subscription:
|
||||
following_key: following
|
||||
ignoring_key: ignoring
|
||||
|
||||
# Translations in this namespace are referenced by two or more unique keys.
|
||||
ref:
|
||||
follow: Follow
|
||||
|
Reference in New Issue
Block a user