This commit is contained in:
TheGiddyLimit
2024-01-25 23:07:09 +00:00
parent 5ffd4acdb4
commit a4e391a3e7
94 changed files with 7263 additions and 939 deletions

View File

@@ -1469,6 +1469,7 @@ class Filter extends FilterBase {
* Defaults to ascending alphabetical sort.
* @param [opts.itemSortFnMini] Function which should be used to sort the `items` array when rendering mini-pills.
* @param [opts.groupFn] Function which takes an item and assigns it to a group.
* @param [opts.groupNameFn] Function which takes a group and returns a group name;
* @param [opts.minimalUi] True if the filter should render with a reduced UI, false otherwise.
* @param [opts.umbrellaItems] Items which should, when set active, show everything in the filter. E.g. "All".
* @param [opts.umbrellaExcludes] Items which should ignore the state of any `umbrellaItems`
@@ -1489,6 +1490,7 @@ class Filter extends FilterBase {
this._itemSortFn = opts.itemSortFn === undefined ? SortUtil.ascSort : opts.itemSortFn;
this._itemSortFnMini = opts.itemSortFnMini;
this._groupFn = opts.groupFn;
this._groupNameFn = opts.groupNameFn;
this._minimalUi = opts.minimalUi;
this._umbrellaItems = Filter._getAsFilterItems(opts.umbrellaItems);
this._umbrellaExcludes = Filter._getAsFilterItems(opts.umbrellaExcludes);
@@ -2137,14 +2139,14 @@ class Filter extends FilterBase {
_doRenderPills_doRenderWrpGroup (group) {
const existingMeta = this._pillGroupsMeta[group];
if (existingMeta && !existingMeta.isAttached) {
existingMeta.hrDivider.appendTo(this.__wrpPills);
existingMeta.wrpDivider.appendTo(this.__wrpPills);
existingMeta.wrpPills.appendTo(this.__wrpPills);
existingMeta.isAttached = true;
}
if (existingMeta) return;
this._pillGroupsMeta[group] = {
hrDivider: this._doRenderPills_doRenderWrpGroup_getHrDivider(group).appendTo(this.__wrpPills),
wrpDivider: this._doRenderPills_doRenderWrpGroup_getDivider(group).appendTo(this.__wrpPills),
wrpPills: this._doRenderPills_doRenderWrpGroup_getWrpPillsSub(group).appendTo(this.__wrpPills),
isAttached: true,
};
@@ -2152,14 +2154,14 @@ class Filter extends FilterBase {
Object.entries(this._pillGroupsMeta)
.sort((a, b) => SortUtil.ascSortLower(a[0], b[0]))
.forEach(([groupKey, groupMeta], i) => {
groupMeta.hrDivider.appendTo(this.__wrpPills);
groupMeta.hrDivider.toggleVe(!this._isGroupDividerHidden(groupKey, i));
groupMeta.wrpDivider.appendTo(this.__wrpPills);
groupMeta.wrpDivider.toggleVe(!this._isGroupDividerHidden(groupKey, i));
groupMeta.wrpPills.appendTo(this.__wrpPills);
});
if (this._nests) {
this._pillGroupsMeta[group].toggleDividerFromNestVisibility = () => {
this._pillGroupsMeta[group].hrDivider.toggleVe(!this._isGroupDividerHidden(group));
this._pillGroupsMeta[group].wrpDivider.toggleVe(!this._isGroupDividerHidden(group));
};
// bind group dividers to show/hide depending on nest visibility state
@@ -2184,7 +2186,34 @@ class Filter extends FilterBase {
return groupItems.length === hiddenGroupItems.length;
}
_doRenderPills_doRenderWrpGroup_getHrDivider () { return e_({tag: "hr", clazz: `fltr__dropdown-divider--sub hr-2 mx-3`}); }
_doRenderPills_doRenderWrpGroup_getDivider (group) {
const eleHeader = this._doRenderPills_doRenderWrpGroup_getDividerHeader(group);
const eleHr = this._doRenderPills_doRenderWrpGroup_getDividerHr(group);
return e_({
tag: "div",
clazz: "ve-flex-col w-100",
children: [
eleHr,
eleHeader,
]
.filter(Boolean),
});
}
_doRenderPills_doRenderWrpGroup_getDividerHr (group) { return e_({tag: "hr", clazz: `fltr__dropdown-divider--sub hr-2 mx-3`}); }
_doRenderPills_doRenderWrpGroup_getDividerHeader (group) {
const groupName = this._groupNameFn?.(group);
if (!groupName) return null;
return e_({
tag: "div",
clazz: `fltr__divider-header ve-muted italic ve-small`,
text: groupName,
});
}
_doRenderPills_doRenderWrpGroup_getWrpPillsSub () { return e_({tag: "div", clazz: `fltr__wrp-pills--sub fltr__container-pills`}); }
_doRenderMiniPills () {
@@ -2461,7 +2490,7 @@ class Filter extends FilterBase {
Object.values(this._pillGroupsMeta || {})
.forEach(it => {
it.hrDivider.detach();
it.wrpDivider.detach();
it.wrpPills.detach();
it.isAttached = false;
});
@@ -2816,6 +2845,7 @@ class SourceFilter extends Filter {
opts.itemSortFnMini = opts.itemSortFnMini === undefined ? SourceFilter._SORT_ITEMS_MINI.bind(SourceFilter) : opts.itemSortFnMini;
opts.itemSortFn = opts.itemSortFn === undefined ? (a, b) => SortUtil.ascSortLower(Parser.sourceJsonToFull(a.item), Parser.sourceJsonToFull(b.item)) : opts.itemSortFn;
opts.groupFn = opts.groupFn === undefined ? SourceUtil.getFilterGroup : opts.groupFn;
opts.groupNameFn = opts.groupNameFn === undefined ? SourceUtil.getFilterGroupName : opts.groupNameFn;
opts.selFn = opts.selFn === undefined ? PageFilter.defaultSourceSelFn : opts.selFn;
super(opts);
@@ -3071,15 +3101,15 @@ class SourceFilter extends Filter {
return [ent.source].concat(otherSourcesFilt.map(src => new SourceFilterItem({item: src.source, isIgnoreRed: true, isOtherSource: true})));
}
_doRenderPills_doRenderWrpGroup_getHrDivider (group) {
_doRenderPills_doRenderWrpGroup_getDividerHeader (group) {
switch (group) {
case SourceUtil.FILTER_GROUP_NON_STANDARD: return this._doRenderPills_doRenderWrpGroup_getHrDivider_groupNonStandard(group);
case SourceUtil.FILTER_GROUP_HOMEBREW: return this._doRenderPills_doRenderWrpGroup_getHrDivider_groupBrew(group);
default: return super._doRenderPills_doRenderWrpGroup_getHrDivider(group);
case SourceUtil.FILTER_GROUP_NON_STANDARD: return this._doRenderPills_doRenderWrpGroup_getDividerHeader_groupNonStandard(group);
case SourceUtil.FILTER_GROUP_HOMEBREW: return this._doRenderPills_doRenderWrpGroup_getDividerHeader_groupBrew(group);
default: return super._doRenderPills_doRenderWrpGroup_getDividerHeader(group);
}
}
_doRenderPills_doRenderWrpGroup_getHrDivider_groupNonStandard (group) {
_doRenderPills_doRenderWrpGroup_getDividerHeader_groupNonStandard (group) {
let dates = [];
const comp = BaseComponent.fromObject({
min: 0,
@@ -3203,9 +3233,9 @@ class SourceFilter extends Filter {
return e_({
tag: "div",
clazz: `ve-flex-col w-100`,
clazz: `split-v-center w-100`,
children: [
super._doRenderPills_doRenderWrpGroup_getHrDivider(),
super._doRenderPills_doRenderWrpGroup_getDividerHeader(group) || e_({clazz: "div"}),
e_({
tag: "div",
clazz: `mb-1 ve-flex-h-right`,
@@ -3219,7 +3249,7 @@ class SourceFilter extends Filter {
});
}
_doRenderPills_doRenderWrpGroup_getHrDivider_groupBrew (group) {
_doRenderPills_doRenderWrpGroup_getDividerHeader_groupBrew (group) {
const btnClear = e_({
tag: "button",
clazz: `btn btn-xxs btn-default px-1`,
@@ -3235,9 +3265,9 @@ class SourceFilter extends Filter {
return e_({
tag: "div",
clazz: `ve-flex-col w-100`,
clazz: `split-v-center w-100`,
children: [
super._doRenderPills_doRenderWrpGroup_getHrDivider(),
super._doRenderPills_doRenderWrpGroup_getDividerHeader(group) || e_({clazz: "div"}),
e_({
tag: "div",
clazz: `mb-1 ve-flex-h-right`,