Some crazy ideas, search one is half baked and metadata-filter.component too.

This commit is contained in:
Joseph Milazzo 2023-10-28 17:08:19 -05:00
parent b4a07d8058
commit e705aadaac
4 changed files with 44 additions and 3 deletions

View file

@ -24,7 +24,7 @@
</ng-container> </ng-container>
<ng-template #filterSection> <ng-template #filterSection>
<div class="filter-section mx-auto pb-3" *ngIf="fullyLoaded && filterV2"> <div class="filter-section mx-auto pb-3 slide-down" *ngIf="fullyLoaded && filterV2" [@slideFromTop]="isOpen">
<div class="row justify-content-center g-0"> <div class="row justify-content-center g-0">
<app-metadata-builder [filter]="filterV2" <app-metadata-builder [filter]="filterV2"
[availableFilterFields]="allFilterFields" [availableFilterFields]="allFilterFields"

View file

@ -38,6 +38,9 @@ import {
Select2UpdateValue Select2UpdateValue
} from "ng-select2-component"; } from "ng-select2-component";
import {SmartFilter} from "../_models/metadata/v2/smart-filter"; import {SmartFilter} from "../_models/metadata/v2/smart-filter";
import {animate, state, style, transition, trigger} from "@angular/animations";
const ANIMATION_SPEED = 200;
@Component({ @Component({
selector: 'app-metadata-filter', selector: 'app-metadata-filter',
@ -46,7 +49,29 @@ import {SmartFilter} from "../_models/metadata/v2/smart-filter";
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true, standalone: true,
imports: [NgIf, NgbCollapse, NgTemplateOutlet, DrawerComponent, NgbTooltip, TypeaheadComponent, imports: [NgIf, NgbCollapse, NgTemplateOutlet, DrawerComponent, NgbTooltip, TypeaheadComponent,
ReactiveFormsModule, FormsModule, NgbRating, AsyncPipe, TranslocoModule, SortFieldPipe, MetadataBuilderComponent, NgForOf, Select2Module, NgClass] ReactiveFormsModule, FormsModule, NgbRating, AsyncPipe, TranslocoModule, SortFieldPipe, MetadataBuilderComponent, NgForOf, Select2Module, NgClass],
animations: [
trigger('slideFromTop', [
state('in', style({ transform: 'translateY(0)' })),
transition('void => *', [
style({ transform: 'translateY(-100%)' }),
animate(ANIMATION_SPEED)
]),
transition('* => void', [
animate(ANIMATION_SPEED, style({ transform: 'translateY(-100%)' })),
])
]),
trigger('slideFromBottom', [
state('in', style({ transform: 'translateY(0)' })),
transition('void => *', [
style({ transform: 'translateY(100%)' }),
animate(ANIMATION_SPEED)
]),
transition('* => void', [
animate(ANIMATION_SPEED, style({ transform: 'translateY(100%)' })),
])
])
],
}) })
export class MetadataFilterComponent implements OnInit { export class MetadataFilterComponent implements OnInit {
@ -89,6 +114,8 @@ export class MetadataFilterComponent implements OnInit {
smartFilters!: Array<Select2Option>; smartFilters!: Array<Select2Option>;
isOpen = false;
private readonly cdRef = inject(ChangeDetectorRef); private readonly cdRef = inject(ChangeDetectorRef);
private readonly toastr = inject(ToastrService); private readonly toastr = inject(ToastrService);
@ -114,10 +141,13 @@ export class MetadataFilterComponent implements OnInit {
this.filterOpen.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(openState => { this.filterOpen.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(openState => {
this.filteringCollapsed = !openState; this.filteringCollapsed = !openState;
this.toggleService.set(!this.filteringCollapsed); this.toggleService.set(!this.filteringCollapsed);
this.isOpen = openState;
this.cdRef.markForCheck(); this.cdRef.markForCheck();
}); });
} }
this.loadFromPresetsAndSetup(); this.loadFromPresetsAndSetup();
} }

View file

@ -15,6 +15,17 @@
</div> </div>
<div class="dropdown" *ngIf="hasFocus"> <div class="dropdown" *ngIf="hasFocus">
<ul class="list-group" role="listbox" id="dropdown"> <ul class="list-group" role="listbox" id="dropdown">
<ng-container *ngIf="groupedData.series.length === 0 && !hasData">
<li class="list-group-item section-header"><h6>Stumped on what to Type?</h6></li>
<ul class="list-group results" role="group">
<li class="list-group-item" style="font-size: 14px">
<i>Try batman, 2014, Ecchi</i> <!-- Or maybe it should be Search by x, y, z -->
</li>
</ul>
</ng-container>
<ng-container *ngIf="seriesTemplate !== undefined && groupedData.series.length > 0"> <ng-container *ngIf="seriesTemplate !== undefined && groupedData.series.length > 0">
<li class="list-group-item section-header"><h5 id="series-group">Series</h5></li> <li class="list-group-item section-header"><h5 id="series-group">Series</h5></li>
<ul class="list-group results" role="group" aria-describedby="series-group"> <ul class="list-group results" role="group" aria-describedby="series-group">

View file

@ -12,7 +12,7 @@
<i class="fa-solid fa-sliders" aria-hidden="true"></i> <i class="fa-solid fa-sliders" aria-hidden="true"></i>
<span class="visually-hidden">{{t('page-settings-title')}}</span> <span class="visually-hidden">{{t('page-settings-title')}}</span>
</button> </button>
<button *ngIf="hasFilter" class="btn btn-{{filterActive ? 'primary' : 'secondary'}} btn-small" (click)="toggleService.toggle()" <button *ngIf="hasFilter" class="btn btn-{{filterActive ? 'primary' : 'info'}} btn-small" (click)="toggleService.toggle()"
[attr.aria-expanded]="filterOpen" placement="left" [attr.aria-expanded]="filterOpen" placement="left"
id="filter-btn--komf" id="filter-btn--komf"
ngbTooltip="{{filterOpen ? t('open-filter-and-sort') : t('close-filter-and-sort')}}" ngbTooltip="{{filterOpen ? t('open-filter-and-sort') : t('close-filter-and-sort')}}"