Browse Source

* Icons

* Secondary color button.
pull/710/head
Sebastian Stehle 5 years ago
parent
commit
239750fc71
  1. 7
      frontend/app/_theme.html
  2. 2
      frontend/app/features/content/shared/due-time-selector.component.html
  3. 2
      frontend/app/features/content/shared/references/content-selector.component.html
  4. 2
      frontend/app/features/dashboard/pages/dashboard-config.component.html
  5. 2
      frontend/app/features/rules/pages/rule/rule-page.component.html
  6. 2
      frontend/app/features/schemas/pages/schema/fields/field-wizard.component.html
  7. 2
      frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.html
  8. 8
      frontend/app/features/schemas/pages/schemas/schema-form.component.html
  9. 2
      frontend/app/features/settings/pages/clients/client-add-form.component.html
  10. 2
      frontend/app/features/settings/pages/clients/client-connect-form.component.html
  11. 2
      frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.html
  12. 2
      frontend/app/features/settings/pages/languages/language.component.html
  13. 2
      frontend/app/features/settings/pages/roles/role-add-form.component.html
  14. 2
      frontend/app/features/settings/pages/roles/role.component.html
  15. 2
      frontend/app/features/settings/pages/workflows/workflow-add-form.component.html
  16. 2
      frontend/app/features/settings/pages/workflows/workflow.component.html
  17. 145
      frontend/app/framework/angular/forms/confirm-click.directive.spec.ts
  18. 5
      frontend/app/framework/angular/forms/confirm-click.directive.ts
  19. 2
      frontend/app/shared/components/app-form.component.html
  20. 2
      frontend/app/shared/components/assets/asset-folder-dialog.component.html
  21. 2
      frontend/app/shared/components/assets/assets-selector.component.html
  22. 2
      frontend/app/shared/components/comments/comment.component.html
  23. 2
      frontend/app/shared/components/search/search-form.component.html
  24. 6
      frontend/app/shared/state/schemas.state.ts
  25. 4
      frontend/app/theme/_bootstrap.scss
  26. BIN
      frontend/app/theme/icomoon/fonts/icomoon.eot
  27. 2
      frontend/app/theme/icomoon/fonts/icomoon.svg
  28. BIN
      frontend/app/theme/icomoon/fonts/icomoon.ttf
  29. BIN
      frontend/app/theme/icomoon/fonts/icomoon.woff
  30. 65
      frontend/app/theme/icomoon/icons/component.svg
  31. 2
      frontend/app/theme/icomoon/selection.json
  32. 10
      frontend/app/theme/icomoon/style.css
  33. 3
      frontend/package.json

7
frontend/app/_theme.html

@ -155,7 +155,6 @@
<button type="button" class="btn btn-text-info">Info</button>
<button type="button" class="btn btn-text-warning">Warning</button>
<button type="button" class="btn btn-text-danger">Danger</button>
<button type="button" class="btn btn-text-secondary2">Secondary2</button>
</p>
<p class="bs-component">
@ -1416,7 +1415,7 @@
<div class="clearfix">
<button type="button" class="float-right btn btn-primary">Save changes</button>
<button type="button" class="float-left btn btn-text-secondary2">Close</button>
<button type="button" class="float-left btn btn-text-secondary">Close</button>
</div>
</div>
</div>
@ -1470,7 +1469,7 @@
</ul>
<div class="float-right">
<button type="reset" class="btn btn-text-secondary2">Cancel</button>
<button type="reset" class="btn btn-text-secondary">Cancel</button>
<button type="submit" class="btn btn-primary ml-1">Save</button>
</div>
</div>
@ -1542,7 +1541,7 @@
<button ype="submit" class="btn btn-success">Add Workflow</button>
</div>
<div class="col-auto pl-1">
<button type="reset" class="btn btn-text-secondary2">
<button type="reset" class="btn btn-text-secondary">
Cancel
</button>
</div>

2
frontend/app/features/content/shared/due-time-selector.component.html

@ -23,7 +23,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="cancelStatusChange()">
<button type="button" class="btn btn-text-secondary" (click)="cancelStatusChange()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/content/shared/references/content-selector.component.html

@ -88,7 +88,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn text-secondary2" (click)="emitComplete()">
<button type="button" class="btn text-secondary" (click)="emitComplete()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/dashboard/pages/dashboard-config.component.html

@ -47,7 +47,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="expertDialog.hide()">
<button type="button" class="btn btn-text-secondary" (click)="expertDialog.hide()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/rules/pages/rule/rule-page.component.html

@ -7,7 +7,7 @@
</ng-container>
<ng-container menu>
<div class="btn btn-outline-secondary2 btn-enabled" *ngIf="rule">
<div class="btn btn-outline-secondary btn-enabled" *ngIf="rule">
<span class="mr-1" *ngIf="isEnabled">
{{ 'common.enabled' | sqxTranslate }}
</span>

2
frontend/app/features/schemas/pages/schema/fields/field-wizard.component.html

@ -76,7 +76,7 @@
</ng-container>
<ng-container footer>
<button type="reset" class="float-left btn btn-text-secondary2" (click)="emitComplete()">
<button type="reset" class="float-left btn btn-text-secondary" (click)="emitComplete()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.html

@ -18,7 +18,7 @@
</ul>
<div class="float-right" *ngIf="showButtons">
<button [disabled]="field.isLocked" type="reset" class="btn btn-text-secondary2" (click)="cancel.emit()">
<button [disabled]="field.isLocked" type="reset" class="btn btn-text-secondary" (click)="cancel.emit()">
{{ 'common.cancel' | sqxTranslate }}
</button>

8
frontend/app/features/schemas/pages/schemas/schema-form.component.html

@ -86,13 +86,13 @@
{{ 'schemas.nameWarning' | sqxTranslate }}
</sqx-form-alert>
<ng-container *ngIf="schemasState.categories | async; let categories">
<div class="form-group" *ngIf="categories.length > 1">
<ng-container *ngIf="schemasState.categoryNames | async; let categories">
<div class="form-group" *ngIf="categories.size > 0">
<label for="category">{{ 'common.category' | sqxTranslate }}</label>
<select class="custom-select" id="category" formControlName="initialCategory">
<option></option>
<option *ngFor="let category of categories | slice:1" [ngValue]="category.name">{{category.name}}</option>
<option *ngFor="let category of categories" [ngValue]="category">{{category}}</option>
</select>
</div>
</ng-container>
@ -110,7 +110,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="cancel.emit()">
<button type="button" class="btn btn-text-secondary" (click)="cancel.emit()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/settings/pages/clients/client-add-form.component.html

@ -12,7 +12,7 @@
</button>
</div>
<div class="col-auto pl-1">
<button type="reset" class="btn btn-text-secondary2" (click)="cancel()">
<button type="reset" class="btn btn-text-secondary" (click)="cancel()">
{{ 'common.cancel' | sqxTranslate }}
</button>
</div>

2
frontend/app/features/settings/pages/clients/client-connect-form.component.html

@ -157,7 +157,7 @@
</ng-container>
<ng-container footer>
<button class="btn btn-text-secondary2" [disabled]="isStart" (click)="go('Start')">
<button class="btn btn-text-secondary" [disabled]="isStart" (click)="go('Start')">
{{ 'common.back' | sqxTranslate }}
</button>
</ng-container>

2
frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.html

@ -48,7 +48,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="close.emit()">
<button type="button" class="btn btn-text-secondary" (click)="close.emit()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/settings/pages/languages/language.component.html

@ -29,7 +29,7 @@
<form [formGroup]="editForm.form" (ngSubmit)="save()">
<div class="table-items-row-details-tabs clearfix">
<div class="float-right">
<button type="reset" class="btn btn-text-secondary2" (click)="toggleEditing()">
<button type="reset" class="btn btn-text-secondary" (click)="toggleEditing()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/settings/pages/roles/role-add-form.component.html

@ -12,7 +12,7 @@
</button>
</div>
<div class="col-auto pl-1">
<button type="reset" class="btn btn-text-secondary2" (click)="cancel()">
<button type="reset" class="btn btn-text-secondary" (click)="cancel()">
{{ 'common.cancel' | sqxTranslate }}
</button>
</div>

2
frontend/app/features/settings/pages/roles/role.component.html

@ -32,7 +32,7 @@
<form (ngSubmit)="save()">
<div class="table-items-row-details-tabs clearfix">
<div class="float-right">
<button type="reset" class="btn btn-text-secondary2" (click)="toggleEditing()">
<button type="reset" class="btn btn-text-secondary" (click)="toggleEditing()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/features/settings/pages/workflows/workflow-add-form.component.html

@ -12,7 +12,7 @@
</button>
</div>
<div class="col-auto pl-1">
<button type="reset" class="btn btn-text-secondary2" (click)="cancel()">
<button type="reset" class="btn btn-text-secondary" (click)="cancel()">
{{ 'common.cancel' | sqxTranslate }}
</button>
</div>

2
frontend/app/features/settings/pages/workflows/workflow.component.html

@ -45,7 +45,7 @@
</ul>
<div class="float-right">
<button type="reset" class="btn btn-text-secondary2" (click)="toggleEditing()">
<button type="reset" class="btn btn-text-secondary" (click)="toggleEditing()">
{{ 'common.cancel' | sqxTranslate }}
</button>

145
frontend/app/framework/angular/forms/confirm-click.directive.spec.ts

@ -0,0 +1,145 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights r vbeserved
*/
import { DialogService } from '@app/framework/internal';
import { of } from 'rxjs';
import { IMock, It, Mock, Times } from 'typemoq';
import { ConfirmClickDirective } from './confirm-click.directive';
describe('ConfirmClickDirective', () => {
let dialogs: IMock<DialogService>;
let confirmClickDirective: ConfirmClickDirective;
beforeEach(() => {
dialogs = Mock.ofType<DialogService>();
confirmClickDirective = new ConfirmClickDirective(dialogs.object);
});
it('Should invoke action directly when disabled', () => {
confirmClickDirective.confirmRequired = false;
confirmClickDirective.confirmText = 'confirmText';
confirmClickDirective.confirmTitle = 'confirmTitle';
confirmClickDirective.confirmRememberKey = 'confirmKey';
let invoked = false;
confirmClickDirective.clickConfirmed.subscribe(() => {
invoked = true;
});
confirmClickDirective.onClick(new Event('click'));
expect(invoked).toBeTrue();
dialogs.verify(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAny()), Times.never());
});
it('Should invoke action when confirmed', () => {
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
.returns(() => of(true));
confirmClickDirective.confirmText = 'confirmText';
confirmClickDirective.confirmTitle = 'confirmTitle';
confirmClickDirective.confirmRememberKey = 'confirmKey';
let invoked = false;
confirmClickDirective.clickConfirmed.subscribe(() => {
invoked = true;
});
confirmClickDirective.onClick(new Event('click'));
expect(invoked).toBeTrue();
});
it('Should invoke action when unsubscribed in between', () => {
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
.returns(() => of(true));
confirmClickDirective.confirmText = 'confirmText';
confirmClickDirective.confirmTitle = 'confirmTitle';
confirmClickDirective.confirmRememberKey = 'confirmKey';
let invoked = false;
const subscription = confirmClickDirective.clickConfirmed.subscribe(() => {
invoked = true;
});
confirmClickDirective.beforeClick.subscribe(() => {
subscription.unsubscribe();
});
confirmClickDirective.onClick(new Event('click'));
expect(invoked).toBeTrue();
});
it('Should not invoke action when not confirmed', () => {
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
.returns(() => of(false));
confirmClickDirective.confirmText = 'confirmText';
confirmClickDirective.confirmTitle = 'confirmTitle';
confirmClickDirective.confirmRememberKey = 'confirmKey';
let invoked = false;
confirmClickDirective.clickConfirmed.subscribe(() => {
invoked = true;
});
confirmClickDirective.onClick(new Event('click'));
expect(invoked).toBeFalse();
});
it('Should invoke action when unsubscribed before', () => {
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
.returns(() => of(true));
confirmClickDirective.confirmText = 'confirmText';
confirmClickDirective.confirmTitle = 'confirmTitle';
confirmClickDirective.confirmRememberKey = 'confirmKey';
let invoked = false;
confirmClickDirective.clickConfirmed.subscribe(() => {
invoked = true;
}).unsubscribe();
confirmClickDirective.onClick(new Event('click'));
expect(invoked).toBeFalse();
});
it('Should not confirm when text is empty', () => {
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
.returns(() => of(false));
confirmClickDirective.confirmTitle = 'confirmTitle';
confirmClickDirective.onClick(new Event('click'));
expect().nothing();
dialogs.verify(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAny()), Times.never());
});
it('Should not confirm when title is empty', () => {
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
.returns(() => of(false));
confirmClickDirective.confirmText = 'confirmText';
confirmClickDirective.onClick(new Event('click'));
expect().nothing();
dialogs.verify(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAny()), Times.never());
});
});

5
frontend/app/framework/angular/forms/confirm-click.directive.ts

@ -44,10 +44,9 @@ export class ConfirmClickDirective {
this.confirmTitle.length > 0 &&
this.confirmText &&
this.confirmText.length > 0) {
this.beforeClick.emit();
const destinations = this.clickConfirmed.observers?.map(x => (x as Subscriber<any>)['destination']) || [];
const destinations =
this.clickConfirmed.observers?.map(x => (x as Subscriber<any>)['destination']) || [];
this.beforeClick.emit();
this.dialogs.confirm(this.confirmTitle, this.confirmText, this.confirmRememberKey).pipe(take(1))
.subscribe(confirmed => {

2
frontend/app/shared/components/app-form.component.html

@ -33,7 +33,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-secondary2" (click)="emitComplete()">
<button type="button" class="btn btn-secondary" (click)="emitComplete()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/shared/components/assets/asset-folder-dialog.component.html

@ -28,7 +28,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="emitComplete()">
<button type="button" class="btn btn-text-secondary" (click)="emitComplete()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/shared/components/assets/assets-selector.component.html

@ -51,7 +51,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="emitComplete()">
<button type="button" class="btn btn-text-secondary" (click)="emitComplete()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/shared/components/comments/comment.component.html

@ -48,7 +48,7 @@
</textarea>
<div>
<button type="button" class="btn btn-sm btn-text-secondary2 mr-1" (click)="cancelEdit()">
<button type="button" class="btn btn-sm btn-text-secondary mr-1" (click)="cancelEdit()">
{{ 'common.cancel' | sqxTranslate }}
</button>

2
frontend/app/shared/components/search/search-form.component.html

@ -123,7 +123,7 @@
</ng-container>
<ng-container footer>
<button type="button" class="btn btn-text-secondary2" (click)="saveQueryDialog.hide()">
<button type="button" class="btn btn-text-secondary" (click)="saveQueryDialog.hide()">
{{ 'common.cancel' | sqxTranslate }}
</button>

6
frontend/app/shared/state/schemas.state.ts

@ -39,9 +39,6 @@ export type SchemaCategory = { displayName: string; name?: string; schemas: Sche
@Injectable()
export class SchemasState extends State<Snapshot> {
public categoryNames =
this.project(x => x.categories);
public selectedSchema =
this.project(x => x.selectedSchema);
@ -60,6 +57,9 @@ export class SchemasState extends State<Snapshot> {
public publishedSchemas =
this.projectFrom(this.schemas, x => x.filter(s => s.isPublished));
public categoryNames =
this.project(x => x.categories);
public categories =
this.projectFrom2(this.schemas, this.categoryNames, (s, c) => buildCategories(c, s));

4
frontend/app/theme/_bootstrap.scss

@ -572,10 +572,6 @@ a {
&-warning {
@include build-text-button($color-theme-orange);
}
&-secondary2 {
@include build-text-button($color-input);
}
}
}

BIN
frontend/app/theme/icomoon/fonts/icomoon.eot

Binary file not shown.

2
frontend/app/theme/icomoon/fonts/icomoon.svg

@ -141,7 +141,7 @@
<glyph unicode="&#xe983;" glyph-name="zoom_in" d="M512 512.667h-86v-86h-42v86h-86v42h86v86h42v-86h86v-42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-42-20-95t-46-85l12-12h34z" />
<glyph unicode="&#xe984;" glyph-name="enter" d="M470 554.667l60-60-154-154h392v428h86v-512h-478l154-154-60-60-256 256z" />
<glyph unicode="&#xe985;" glyph-name="plugin" horiz-adv-x="839" d="M456.158 914.575c-12.145 0.032-24.18-1.32-35.941-3.974-23.536-5.313-45.906-15.872-65.238-31.342-77.826-61.631-80.817-179.217-6.302-244.772 0.028-0.028 0.084-0.086 0.113-0.114 0.020-0.018 0.038-0.039 0.058-0.057 0.037-0.039 0.074-0.076 0.112-0.112l0.001-0.001c4.727-4.044 7.287-9.964 7.097-16.182-0.003-0.018 0.003-0.038 0-0.057-0.008-0.085-0.012-0.184-0.012-0.284s0.004-0.199 0.013-0.296l-0.001 0.013c0-10.503-8.234-18.737-18.737-18.737h-290.707c-5.436 0.020-10.354-4.898-10.334-10.334v-192.479c0.079-40.118 25.509-70.246 57.289-81.875 31.779-11.628 70.726-5.088 96.694 25.494 48.914 57.384 140.83 35.582 158.809-37.644 6.312-27.401 0.010-56.217-17.261-78.411-35.813-45.415-103.666-46.801-141.265-2.839-0.153 0.167-0.32 0.317-0.501 0.448l-0.010 0.007c-0.073 0.080-0.147 0.154-0.224 0.224l-0.003 0.002c-25.873 30.135-64.41 36.684-96.012 25.21-31.887-11.577-57.465-41.733-57.517-81.988v-191.003c-0.020-5.436 4.898-10.354 10.334-10.334h745.955c5.436-0.020 10.354 4.898 10.334 10.334l-0.852 616.898c0.020 5.436-4.898 10.354-10.334 10.334h-222.401c-10.503 0-18.737 8.234-18.737 18.737-0.019 5.72 2.466 11.020 6.87 14.592 0.080 0.073 0.154 0.147 0.224 0.224l0.002 0.003 0.227 0.227c97.336 84.032 59.622 244.251-65.125 275.83-0.169 0.034-0.365 0.054-0.566 0.057h-0.002c-0.018 0.004-0.038-0.004-0.058 0h-0.113c-11.884 2.753-23.91 4.17-35.884 4.202zM454.682 845.816c6.891-0.035 13.821-0.856 20.667-2.441 73.201-17.648 95.396-109.369 38.439-158.582-30.669-26.067-37.154-65.105-25.38-96.921 11.773-31.813 42.084-57.204 82.329-57.006h164.090v-499.65h-629.673l-0.795 133.884c0.026 10.44 8.193 18.619 18.623 18.68 5.89-0.174 11.341-2.823 15.103-7.324 0.055-0.060 0.111-0.116 0.169-0.17l0.002-0.002c0.028-0.028 0.086-0.087 0.114-0.113 65.15-75.665 183.646-73.404 245.737 4.769l0.058 0.058c0.076 0.085 0.151 0.178 0.22 0.275l0.007 0.010c30.825 38.562 42.246 89.164 31.058 137.234-0.010 0.168-0.030 0.324-0.062 0.475l0.004-0.021c-30.581 126.005-192.369 164.654-276.681 66.145-0.019-0.019-0.037-0.038-0.055-0.057l-0.001-0.001c-0.175-0.215-0.297-0.397-0.454-0.624-5.948-8.251-13.969-9.414-21.519-6.699-7.485 2.692-12.925 8.644-12.378 18.623v0.172c0.003 0.041-0.003 0.073 0 0.113 0.017 0.131 0.045 0.267 0.057 0.397 0.002 0.043 0.003 0.092 0.003 0.142s-0.001 0.1-0.003 0.149v-0.007 133.259h233.53c40.255 0.052 70.451 25.629 82.045 57.517 11.514 31.669 4.916 70.308-25.38 96.183 0 0.008 0 0.018 0 0.028s0 0.020 0 0.030v-0.002c-0.064 0.053-0.108 0.117-0.172 0.17-0.106 0.123-0.218 0.234-0.337 0.337l-0.004 0.003c-43.965 37.601-42.63 105.454 2.782 141.265 11.117 8.651 23.938 14.535 37.36 17.488 6.716 1.478 13.596 2.249 20.497 2.214z" />
<glyph unicode="&#xe986;" glyph-name="component" d="M251.429 850.286c-87.881 0-160-72.119-160-160v-525.714c0-87.881 72.119-160 160-160h525.714c87.881 0 160 72.119 160 160v525.714c0 87.881-72.119 160-160 160zM251.429 804.571h525.714c62.976 0 114.286-51.31 114.286-114.286v-525.714c0-62.976-51.31-114.286-114.286-114.286h-525.714c-62.976 0-114.286 51.31-114.286 114.286v525.714c0 62.976 51.31 114.286 114.286 114.286zM434.286 662.857c-87.881 0-160-72.119-160-160v-233.143c0-87.881 72.119-160 160-160h233.143c87.881 0 160 72.119 160 160v233.143c0 87.881-72.119 160-160 160zM434.286 617.143h233.143c62.976 0 114.286-51.31 114.286-114.286v-233.143c0-62.976-51.31-114.286-114.286-114.286h-233.143c-62.976 0-114.286 51.31-114.286 114.286v233.143c0 62.976 51.31 114.286 114.286 114.286zM406.082 485.346h-0.329c-12.617 0-22.857-10.24-22.857-22.857s10.24-22.857 22.857-22.857h306.944c12.617 0 22.857 10.24 22.857 22.857s-35.474 22.857-22.857 22.857h-0.329zM406.082 348.203h-0.329c-12.617 0-22.857-10.24-22.857-22.857s10.24-22.857 22.857-22.857h224.658c12.617 0 22.857 10.24 22.857 22.857s-10.24 22.857-22.857 22.857h-0.329z" />
<glyph unicode="&#xe986;" glyph-name="component" d="M251.429 850.286c-87.881 0-160-72.119-160-160v-525.714c0-87.881 72.119-160 160-160h525.714c87.881 0 160 72.119 160 160v525.714c0 87.881-72.119 160-160 160zM251.429 804.571h525.714c62.976 0 114.286-51.31 114.286-114.286v-525.714c0-62.976-51.31-114.286-114.286-114.286h-525.714c-62.976 0-114.286 51.31-114.286 114.286v525.714c0 62.976 51.31 114.286 114.286 114.286zM397.714 704c-87.881 0-160-72.119-160-160v-233.143c0-87.881 72.119-160 160-160h233.143c87.881 0 160 72.119 160 160v233.143c0 87.881-72.119 160-160 160zM397.714 658.286h233.143c62.976 0 114.286-51.31 114.286-114.286v-233.143c0-62.976-51.31-114.286-114.286-114.286h-233.143c-62.976 0-114.286 51.31-114.286 114.286v233.143c0 62.976 51.31 114.286 114.286 114.286zM361.143 526.489h-0.329c-12.617 0-22.857-10.24-22.857-22.857s10.24-22.857 22.857-22.857h306.944c12.617 0 22.857 10.24 22.857 22.857s-35.474 22.857-22.857 22.857h-0.329zM402.286 389.346h-0.329c-12.617 0-22.857-10.24-22.857-22.857s10.24-22.857 22.857-22.857h224.658c12.617 0 22.857 10.24 22.857 22.857s-10.24 22.857-22.857 22.857h-0.329z" />
<glyph unicode="&#xe9ca;" glyph-name="earth" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512-0.002c-62.958 0-122.872 13.012-177.23 36.452l233.148 262.29c5.206 5.858 8.082 13.422 8.082 21.26v96c0 17.674-14.326 32-32 32-112.99 0-232.204 117.462-233.374 118.626-6 6.002-14.14 9.374-22.626 9.374h-128c-17.672 0-32-14.328-32-32v-192c0-12.122 6.848-23.202 17.69-28.622l110.31-55.156v-187.886c-116.052 80.956-192 215.432-192 367.664 0 68.714 15.49 133.806 43.138 192h116.862c8.488 0 16.626 3.372 22.628 9.372l128 128c6 6.002 9.372 14.14 9.372 22.628v77.412c40.562 12.074 83.518 18.588 128 18.588 70.406 0 137.004-16.26 196.282-45.2-4.144-3.502-8.176-7.164-12.046-11.036-36.266-36.264-56.236-84.478-56.236-135.764s19.97-99.5 56.236-135.764c36.434-36.432 85.218-56.264 135.634-56.26 3.166 0 6.342 0.080 9.518 0.236 13.814-51.802 38.752-186.656-8.404-372.334-0.444-1.744-0.696-3.488-0.842-5.224-81.324-83.080-194.7-134.656-320.142-134.656z" />
<glyph unicode="&#xf00a;" glyph-name="grid" d="M292.571 237.714v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM292.571 530.286v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM658.286 237.714v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM292.571 822.857v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM658.286 530.286v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM1024 237.714v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM658.286 822.857v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM1024 530.286v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857zM1024 822.857v-109.714c0-30.286-24.571-54.857-54.857-54.857h-182.857c-30.286 0-54.857 24.571-54.857 54.857v109.714c0 30.286 24.571 54.857 54.857 54.857h182.857c30.286 0 54.857-24.571 54.857-54.857z" />
<glyph unicode="&#xf0c9;" glyph-name="list1" horiz-adv-x="878" d="M877.714 182.857v-73.143c0-20-16.571-36.571-36.571-36.571h-804.571c-20 0-36.571 16.571-36.571 36.571v73.143c0 20 16.571 36.571 36.571 36.571h804.571c20 0 36.571-16.571 36.571-36.571zM877.714 475.428v-73.143c0-20-16.571-36.571-36.571-36.571h-804.571c-20 0-36.571 16.571-36.571 36.571v73.143c0 20 16.571 36.571 36.571 36.571h804.571c20 0 36.571-16.571 36.571-36.571zM877.714 768v-73.143c0-20-16.571-36.571-36.571-36.571h-804.571c-20 0-36.571 16.571-36.571 36.571v73.143c0 20 16.571 36.571 36.571 36.571h804.571c20 0 36.571-16.571 36.571-36.571z" />

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

BIN
frontend/app/theme/icomoon/fonts/icomoon.ttf

Binary file not shown.

BIN
frontend/app/theme/icomoon/fonts/icomoon.woff

Binary file not shown.

65
frontend/app/theme/icomoon/icons/component.svg

@ -2,20 +2,20 @@
<!-- Generated by IcoMoon.io -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="28"
height="28"
viewBox="0 0 28 28"
id="svg12"
sodipodi:docname="component.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata18">
<rdf:RDF>
@ -43,31 +43,36 @@
inkscape:window-height="1017"
id="namedview14"
showgrid="false"
inkscape:zoom="16.857143"
inkscape:cx="41.190874"
inkscape:cy="19.905555"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:zoom="2.97995"
inkscape:cx="-81.880567"
inkscape:cy="77.35029"
inkscape:window-x="-8"
inkscape:window-y="2"
inkscape:window-maximized="1"
inkscape:current-layer="svg12" />
inkscape:current-layer="svg12"
inkscape:pagecheckerboard="0" />
<title
id="title2">single-content</title>
<path
d="M6.875 2.75c-2.403 0-4.375 1.972-4.375 4.375v14.375c0 2.403 1.972 4.375 4.375 4.375h14.375c2.403 0 4.375-1.972 4.375-4.375v-14.375c0-2.403-1.972-4.375-4.375-4.375zM6.875 4h14.375c1.722 0 3.125 1.403 3.125 3.125v14.375c0 1.722-1.403 3.125-3.125 3.125h-14.375c-1.722 0-3.125-1.403-3.125-3.125v-14.375c0-1.722 1.403-3.125 3.125-3.125z"
d="M 6.875,2.75 C 4.472,2.75 2.5,4.722 2.5,7.125 V 21.5 c 0,2.403 1.972,4.375 4.375,4.375 H 21.25 c 2.403,0 4.375,-1.972 4.375,-4.375 V 7.125 C 25.625,4.722 23.653,2.75 21.25,2.75 Z m 0,1.25 H 21.25 c 1.722,0 3.125,1.403 3.125,3.125 V 21.5 c 0,1.722 -1.403,3.125 -3.125,3.125 H 6.875 C 5.153,24.625 3.75,23.222 3.75,21.5 V 7.125 C 3.75,5.403 5.153,4 6.875,4 Z"
id="path4" />
<path
inkscape:connector-curvature="0"
d="m 11.875,7.8749991 c -2.403,0 -4.375,1.972 -4.375,4.3750009 v 6.375 C 7.5,21.028 9.472,23 11.875,23 h 6.375 c 2.403,0 4.375,-1.972 4.375,-4.375 V 12.25 c 0,-2.4030009 -1.972,-4.3750009 -4.375,-4.3750009 z m 0,1.25 h 6.375 c 1.722,0 3.125,1.4029999 3.125,3.1250009 v 6.375 c 0,1.722 -1.403,3.125 -3.125,3.125 H 11.875 C 10.153,21.75 8.75,20.347 8.75,18.625 V 12.25 c 0,-1.722001 1.403,-3.1250009 3.125,-3.1250009 z"
id="path4-2"
sodipodi:nodetypes="ssssssssssssssssss" />
<path
inkscape:connector-curvature="0"
d="m 11.103814,12.728814 h -0.009 c -0.345,0 -0.625,0.28 -0.625,0.625 0,0.345 0.28,0.625 0.625,0.625 h 0.009 8.375 0.009 c 0.345,0 0.625,-0.28 0.625,-0.625 0,-0.345 -0.97,-0.625 -0.625,-0.625 h -0.009 v 0 z"
id="path6-4"
sodipodi:nodetypes="csssccsssccc" />
<path
inkscape:connector-curvature="0"
d="m 11.103814,16.478814 h -0.009 c -0.345,0 -0.625,0.28 -0.625,0.625 0,0.345 0.28,0.625 0.625,0.625 h 0.009 6.125 0.009 c 0.345,0 0.625,-0.28 0.625,-0.625 0,-0.345 -0.28,-0.625 -0.625,-0.625 h -0.009 v 0 z"
id="path8-6"
sodipodi:nodetypes="csssccsssccc" />
<g
id="g847"
transform="translate(0,-1.1249995)">
<path
inkscape:connector-curvature="0"
d="m 10.875,7.8749991 c -2.403,0 -4.375,1.972 -4.375,4.3750009 v 6.375 C 6.5,21.028 8.472,23 10.875,23 h 6.375 c 2.403,0 4.375,-1.972 4.375,-4.375 V 12.25 c 0,-2.4030009 -1.972,-4.3750009 -4.375,-4.3750009 z m 0,1.25 h 6.375 c 1.722,0 3.125,1.4029999 3.125,3.1250009 v 6.375 c 0,1.722 -1.403,3.125 -3.125,3.125 H 10.875 C 9.153,21.75 7.75,20.347 7.75,18.625 V 12.25 c 0,-1.722001 1.403,-3.1250009 3.125,-3.1250009 z"
id="path4-2"
sodipodi:nodetypes="ssssssssssssssssss" />
<path
inkscape:connector-curvature="0"
d="M 9.875,12.728814 H 9.866 c -0.345,0 -0.625,0.28 -0.625,0.625 0,0.345 0.28,0.625 0.625,0.625 h 0.009 8.375 0.009 c 0.345,0 0.625,-0.28 0.625,-0.625 0,-0.345 -0.97,-0.625 -0.625,-0.625 H 18.25 v 0 z"
id="path6-4"
sodipodi:nodetypes="csssccsssccc" />
<path
inkscape:connector-curvature="0"
d="m 11,16.478814 h -0.009 c -0.345,0 -0.625,0.28 -0.625,0.625 0,0.345 0.28,0.625 0.625,0.625 H 11 h 6.125 0.009 c 0.345,0 0.625,-0.28 0.625,-0.625 0,-0.345 -0.28,-0.625 -0.625,-0.625 h -0.009 v 0 z"
id="path8-6"
sodipodi:nodetypes="csssccsssccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

2
frontend/app/theme/icomoon/selection.json

File diff suppressed because one or more lines are too long

10
frontend/app/theme/icomoon/style.css

@ -1,10 +1,10 @@
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?trv5pt');
src: url('fonts/icomoon.eot?trv5pt#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?trv5pt') format('truetype'),
url('fonts/icomoon.woff?trv5pt') format('woff'),
url('fonts/icomoon.svg?trv5pt#icomoon') format('svg');
src: url('fonts/icomoon.eot?99rx9x');
src: url('fonts/icomoon.eot?99rx9x#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?99rx9x') format('truetype'),
url('fonts/icomoon.woff?99rx9x') format('woff'),
url('fonts/icomoon.svg?99rx9x#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;

3
frontend/package.json

@ -14,7 +14,8 @@
"build": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --config app-config/webpack.config.js --env production",
"build:clean": "rimraf wwwroot/build",
"build:analyze": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --config app-config/webpack.config.js --env production --env analyze",
"postinstall": "npx patch-package && ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points"
"postinstall": "npx patch-package && ngcc",
"ngcc": "ngcc"
},
"dependencies": {
"@angular/animations": "12.0.0",

Loading…
Cancel
Save