Browse Source

Virtual scroll (#735)

pull/737/head
Sebastian Stehle 5 years ago
committed by GitHub
parent
commit
7d68578a7e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      frontend/app/features/content/module.ts
  2. 24
      frontend/app/features/content/shared/forms/array-editor.component.html
  3. 20
      frontend/app/features/content/shared/forms/array-editor.component.scss
  4. 8
      frontend/package-lock.json
  5. 1
      frontend/package.json

4
frontend/app/features/content/module.ts

@ -8,6 +8,8 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CanDeactivateGuard, ContentMustExistGuard, LoadLanguagesGuard, LoadSchemasGuard, SchemaMustExistPublishedGuard, SchemaMustNotBeSingletonGuard, SqxFrameworkModule, SqxSharedModule } from '@app/shared';
import { ScrollingModule } from '@angular/cdk/scrolling';
import { ScrollingModule as ScrollingModuleExperimental } from '@angular/cdk-experimental/scrolling';
import { ArrayEditorComponent, ArrayItemComponent, AssetsEditorComponent, CommentsPageComponent, ComponentComponent, ComponentSectionComponent, ContentComponent, ContentCreatorComponent, ContentEditorComponent, ContentEventComponent, ContentExtensionComponent, ContentFieldComponent, ContentHistoryPageComponent, ContentListCellDirective, ContentListFieldComponent, ContentListHeaderComponent, ContentListWidthPipe, ContentPageComponent, ContentReferencesComponent, ContentsColumnsPipe, ContentSectionComponent, ContentSelectorComponent, ContentSelectorItemComponent, ContentsFiltersPageComponent, ContentsPageComponent, ContentStatusComponent, ContentValueComponent, ContentValueEditorComponent, CustomViewEditorComponent, DueTimeSelectorComponent, FieldEditorComponent, FieldLanguagesComponent, IFrameEditorComponent, PreviewButtonComponent, ReferenceItemComponent, ReferencesEditorComponent, SchemasPageComponent, SidebarPageComponent, StockPhotoEditorComponent } from './declarations';
const routes: Routes = [
@ -76,6 +78,8 @@ const routes: Routes = [
@NgModule({
imports: [
RouterModule.forChild(routes),
ScrollingModule,
ScrollingModuleExperimental,
SqxFrameworkModule,
SqxSharedModule,
],

24
frontend/app/features/content/shared/forms/array-editor.component.html

@ -1,5 +1,6 @@
<ng-container *ngIf="formModel.itemChanges | async; let items">
<div class="array-container" *ngIf="items.length > 0"
<div class="array-container" *ngIf="items.length > 0">
<div class="cdk-container" *ngIf="items.length <= 50;"
cdkDropList
[cdkDropListDisabled]="false"
[cdkDropListData]="items"
@ -26,6 +27,27 @@
</div>
</div>
<cdk-virtual-scroll-viewport autosize *ngIf="items.length > 50">
<div *cdkVirtualFor="let itemForm of items; index as i; last as isLast; first as isFirst" class="table-drag item">
<sqx-array-item
[canUnset]="canUnset"
[form]="form"
[formContext]="formContext"
[formModel]="itemForm"
[index]="i"
[isDisabled]="isDisabled | async"
[isFirst]="isFirst"
[isLast]="isLast"
[language]="language"
[languages]="languages"
(clone)="addCopy(itemForm)"
(itemRemove)="removeItem(i)"
(itemMove)="move(itemForm, $event)" >
</sqx-array-item>
</div>
</cdk-virtual-scroll-viewport>
</div>
<div class="row no-gutters align-items-center">
<div class="col-auto">
<ng-container *ngIf="isArray; else component">

20
frontend/app/features/content/shared/forms/array-editor.component.scss

@ -1,11 +1,25 @@
:host ::ng-deep {
.cdk-virtual-scroll-content-wrapper {
right: 0;
}
}
.array-container {
background: $color-border;
margin: 0;
margin-bottom: 1rem;
padding: 1rem;
padding-bottom: 1px;
padding-bottom: 1rem;
position: relative;
}
.drag-container {
position: relative;
}
cdk-virtual-scroll-viewport {
height: 1000px;
}
.item {
margin-bottom: 1rem;
padding: 1rem 1rem 0;
}

8
frontend/package-lock.json

@ -46,6 +46,14 @@
"tslib": "^2.1.0"
}
},
"@angular/cdk-experimental": {
"version": "12.1.1",
"resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-12.1.1.tgz",
"integrity": "sha512-troV5cZ5Ss5B9Grv61hvtOwqTHQmdA2/Kzm+9mrPIHNEimpFEfG5lATfGA2C3QFk9Cs0yloiXu39oEJYEqyuBA==",
"requires": {
"tslib": "^2.2.0"
}
},
"@angular/common": {
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-12.0.2.tgz",

1
frontend/package.json

@ -20,6 +20,7 @@
"dependencies": {
"@angular/animations": "12.0.2",
"@angular/cdk": "12.0.2",
"@angular/cdk-experimental": "^12.1.1",
"@angular/common": "12.0.2",
"@angular/core": "12.0.2",
"@angular/forms": "12.0.2",

Loading…
Cancel
Save