Browse Source

Leaflet Control

pull/1/head
Sebastian 9 years ago
parent
commit
fc108f4ef2
  1. 3
      src/Squidex/app/features/content/pages/content/content-field.component.html
  2. 2
      src/Squidex/app/features/schemas/declarations.ts
  3. 4
      src/Squidex/app/features/schemas/module.ts
  4. 6
      src/Squidex/app/features/schemas/pages/schema/field.component.html
  5. 1
      src/Squidex/app/features/schemas/pages/schema/schema-page.component.ts
  6. 15
      src/Squidex/app/features/schemas/pages/schema/types/geolocation-ui.component.html
  7. 2
      src/Squidex/app/features/schemas/pages/schema/types/geolocation-ui.component.scss
  8. 31
      src/Squidex/app/features/schemas/pages/schema/types/geolocation-ui.component.ts
  9. 9
      src/Squidex/app/features/schemas/pages/schema/types/geolocation-validation.component.html
  10. 10
      src/Squidex/app/features/schemas/pages/schema/types/geolocation-validation.component.scss
  11. 24
      src/Squidex/app/features/schemas/pages/schema/types/geolocation-validation.component.ts
  12. 2
      src/Squidex/app/features/settings/pages/clients/client.component.html
  13. 3
      src/Squidex/app/framework/angular/date-time-editor.component.html
  14. 4
      src/Squidex/app/framework/angular/date-time-editor.component.scss
  15. 16
      src/Squidex/app/framework/angular/date-time-editor.component.ts
  16. 19
      src/Squidex/app/framework/angular/geolocation-editor.component.html
  17. 14
      src/Squidex/app/framework/angular/geolocation-editor.component.scss
  18. 160
      src/Squidex/app/framework/angular/geolocation-editor.component.ts
  19. 2
      src/Squidex/app/framework/angular/stars.component.html
  20. 13
      src/Squidex/app/framework/angular/stars.component.scss
  21. 27
      src/Squidex/app/framework/angular/stars.component.ts
  22. 8
      src/Squidex/app/framework/angular/toggle.component.scss
  23. 1
      src/Squidex/app/framework/declarations.ts
  24. 3
      src/Squidex/app/framework/module.ts
  25. 11
      src/Squidex/app/shared/services/schemas.service.spec.ts
  26. 16
      src/Squidex/app/shared/services/schemas.service.ts
  27. 48
      src/Squidex/app/theme/icomoon/demo.html
  28. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.eot
  29. 2
      src/Squidex/app/theme/icomoon/fonts/icomoon.svg
  30. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.ttf
  31. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.woff
  32. 2
      src/Squidex/app/theme/icomoon/selection.json
  33. 19
      src/Squidex/app/theme/icomoon/style.css

3
src/Squidex/app/features/content/pages/content/content-field.component.html

@ -83,6 +83,9 @@
<div *ngSwitchCase="'DateTime'">
<sqx-date-time-editor enforceTime="true" [mode]="field.properties.editor" [formControlName]="language"></sqx-date-time-editor>
</div>
<div *ngSwitchCase="'Geolocation'">
<sqx-geolocation-editor [formControlName]="language"></sqx-geolocation-editor>
</div>
<div *ngSwitchCase="'Json'">
<sqx-json-editor [formControlName]="language"></sqx-json-editor>
</div>

2
src/Squidex/app/features/schemas/declarations.ts

@ -9,6 +9,8 @@ export * from './pages/schema/types/boolean-ui.component';
export * from './pages/schema/types/boolean-validation.component';
export * from './pages/schema/types/date-time-ui.component';
export * from './pages/schema/types/date-time-validation.component';
export * from './pages/schema/types/geolocation-ui.component';
export * from './pages/schema/types/geolocation-validation.component';
export * from './pages/schema/types/json-ui.component';
export * from './pages/schema/types/json-validation.component';
export * from './pages/schema/types/number-ui.component';

4
src/Squidex/app/features/schemas/module.ts

@ -22,6 +22,8 @@ import {
BooleanValidationComponent,
DateTimeUIComponent,
DateTimeValidationComponent,
GeolocationUIComponent,
GeolocationValidationComponent,
JsonUIComponent,
JsonValidationComponent,
NumberUIComponent,
@ -80,6 +82,8 @@ const routes: Routes = [
BooleanValidationComponent,
DateTimeUIComponent,
DateTimeValidationComponent,
GeolocationUIComponent,
GeolocationValidationComponent,
JsonUIComponent,
JsonValidationComponent,
NumberUIComponent,

6
src/Squidex/app/features/schemas/pages/schema/field.component.html

@ -141,6 +141,9 @@
<div *ngSwitchCase="'DateTime'">
<sqx-date-time-validation [editForm]="editForm" [properties]="field.properties"></sqx-date-time-validation>
</div>
<div *ngSwitchCase="'Geolocation'">
<sqx-geolocation-validation [editForm]="editForm" [properties]="field.properties"></sqx-geolocation-validation>
</div>
<div *ngSwitchCase="'Json'">
<sqx-json-validation [editForm]="editForm" [properties]="field.properties"></sqx-json-validation>
</div>
@ -161,6 +164,9 @@
<div *ngSwitchCase="'DateTime'">
<sqx-date-time-ui [editForm]="editForm" [properties]="field.properties"></sqx-date-time-ui>
</div>
<div *ngSwitchCase="'Geolocation'">
<sqx-geolocation-ui [editForm]="editForm" [properties]="field.properties"></sqx-geolocation-ui>
</div>
<div *ngSwitchCase="'Json'">
<sqx-json-ui [editForm]="editForm" [properties]="field.properties"></sqx-json-ui>
</div>

1
src/Squidex/app/features/schemas/pages/schema/schema-page.component.ts

@ -44,6 +44,7 @@ export class SchemaPageComponent extends AppComponentBase implements OnInit {
public fieldTypes: string[] = [
'Boolean',
'DateTime',
'Geolocation',
'Json',
'Number',
'String'

15
src/Squidex/app/features/schemas/pages/schema/types/geolocation-ui.component.html

@ -0,0 +1,15 @@
<div [formGroup]="editForm">
<div class="form-group row">
<label for="field-editor" class="col col-3 col-form-label">Editor</label>
<div class="col col-9">
<label class="btn btn-radio" [class.active]="editForm.controls.editor.value === 'Map'">
<input type="radio" class="radio-input" formControlName="editor" value="Map" />
<i class="icon-control-Map"></i>
<span class="radio-label">Map</span>
</label>
</div>
</div>
<div>

2
src/Squidex/app/features/schemas/pages/schema/types/geolocation-ui.component.scss

@ -0,0 +1,2 @@
@import '_vars';
@import '_mixins';

31
src/Squidex/app/features/schemas/pages/schema/types/geolocation-ui.component.ts

@ -0,0 +1,31 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Component, Input, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { GeolocationFieldPropertiesDto } from 'shared';
@Component({
selector: 'sqx-geolocation-ui',
styleUrls: ['geolocation-ui.component.scss'],
templateUrl: 'geolocation-ui.component.html'
})
export class GeolocationUIComponent implements OnInit {
@Input()
public editForm: FormGroup;
@Input()
public properties: GeolocationFieldPropertiesDto;
public ngOnInit() {
this.editForm.addControl('editor',
new FormControl(this.properties.editor, [
Validators.required
]));
}
}

9
src/Squidex/app/features/schemas/pages/schema/types/geolocation-validation.component.html

@ -0,0 +1,9 @@
<div [formGroup]="editForm">
<div class="form-group row">
<label class="col col-3 col-form-checkbox-label" for="field-required">Required</label>
<div class="col col-6">
<input type="checkbox" class="form-check-input" id="field-required" formControlName="isRequired" />
</div>
</div>
</div>

10
src/Squidex/app/features/schemas/pages/schema/types/geolocation-validation.component.scss

@ -0,0 +1,10 @@
@import '_vars';
@import '_mixins';
.form-check-input {
margin: 0;
}
.form-group {
margin-top: .5rem;
}

24
src/Squidex/app/features/schemas/pages/schema/types/geolocation-validation.component.ts

@ -0,0 +1,24 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Component, Input } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { GeolocationFieldPropertiesDto } from 'shared';
@Component({
selector: 'sqx-geolocation-validation',
styleUrls: ['geolocation-validation.component.scss'],
templateUrl: 'geolocation-validation.component.html'
})
export class GeolocationValidationComponent {
@Input()
public editForm: FormGroup;
@Input()
public properties: GeolocationFieldPropertiesDto;
}

2
src/Squidex/app/features/settings/pages/clients/client.component.html

@ -13,7 +13,7 @@
</div>
<div class="client-header">
<form *ngIf="isRenaming" class="form-inline" [formGroup]="renameForm" (ngSubmit)="rename()">
<form *ngIf="isRenaming" class="form-inline" [formGroup]="renameForm" (ngSubmit)="rename()">
<div class="form-group mr-2">
<sqx-control-errors for="name" [submitted]="renameFormSubmitted"></sqx-control-errors>

3
src/Squidex/app/framework/angular/date-time-editor.component.html

@ -6,5 +6,8 @@
<div class="form-group time-group" *ngIf="showTime">
<input type="text" class="form-control" [formControl]="timeControl" (blur)="touched()" />
</div>
<div class="form-group" [class.hidden]="!hasValue">
<button class="btn btn-link clear" (click)="reset()">Clear</button>
</div>
</div>
</div>

4
src/Squidex/app/framework/angular/date-time-editor.component.scss

@ -38,4 +38,8 @@ $form-color: #fff;
.form-control {
width: 7.5rem;
}
}
.clear {
margin-left: .5rem;
}

16
src/Squidex/app/framework/angular/date-time-editor.component.ts

@ -45,6 +45,10 @@ export class DateTimeEditorComponent implements ControlValueAccessor, OnInit, Af
@Input()
public enforceTime: boolean;
public get hasValue() {
return this.dateValue !== null;
}
@ViewChild('dateInput')
public dateInput: ElementRef;
@ -125,6 +129,18 @@ export class DateTimeEditorComponent implements ControlValueAccessor, OnInit, Af
this.touchedCallback();
}
public reset() {
this.timeControl.setValue(null, { emitEvent: false });
this.dateControl.setValue(null, { emitEvent: false });
this.dateValue = null;
this.changeCallback(null);
this.touchedCallback();
return false;
}
private updateValue() {
let result: string = null;

19
src/Squidex/app/framework/angular/geolocation-editor.component.html

@ -0,0 +1,19 @@
<div>
<div class="editor" #editor></div>
<div>
<form class="form-inline" [formGroup]="geolocationForm" (submit)="updateValueByInput()">
<div class="form-group latitude-group">
<input type="number" class="form-control" formControlName="latitude" step="any" #dateInput />
</div>
<div class="form-group longitude-group">
<input type="number" class="form-control" formControlName="longitude" step="any" />
</div>
<div class="form-group" [class.hidden]="!hasValue">
<button type="reset" class="btn btn-link clear" (click)="reset()">Clear</button>
</div>
<button type="submit" class="hidden"></button>
</form>
</div>
</div>

14
src/Squidex/app/framework/angular/geolocation-editor.component.scss

@ -0,0 +1,14 @@
@import '_mixins';
@import '_vars';
.editor {
height: 30rem;
}
.form-inline {
margin-top: .5rem;
}
.latitude-group {
margin-right: .25rem;
}

160
src/Squidex/app/framework/angular/geolocation-editor.component.ts

@ -0,0 +1,160 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { AfterViewInit, Component, ElementRef, forwardRef, ViewChild } from '@angular/core';
import { ControlValueAccessor, FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
import { ResourceLoaderService } from './../services/resource-loader.service';
import { ValidatorsEx } from './validators';
const NOOP = () => { /* NOOP */ };
declare var L: any;
export const SQX_GEOLOCATION_EDITOR_CONTROL_VALUE_ACCESSOR: any = {
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => GeolocationEditorComponent), multi: true
};
@Component({
selector: 'sqx-geolocation-editor',
styleUrls: ['./geolocation-editor.component.scss'],
templateUrl: './geolocation-editor.component.html',
providers: [SQX_GEOLOCATION_EDITOR_CONTROL_VALUE_ACCESSOR]
})
export class GeolocationEditorComponent implements ControlValueAccessor, AfterViewInit {
private changeCallback: (value: any) => void = NOOP;
private touchedCallback: () => void = NOOP;
private marker: any;
private map: any;
private value: any;
public get hasValue() {
return !!this.value;
}
public geolocationForm =
this.formBuilder.group({
latitude: ['',
[
ValidatorsEx.between(-90, 90)
]],
longitude: ['',
[
ValidatorsEx.between(-180, 180)
]]
});
public isDisabled = false;
@ViewChild('editor')
public editor: ElementRef;
constructor(
private readonly resourceLoader: ResourceLoaderService,
private readonly formBuilder: FormBuilder
) {
}
public writeValue(value: any) {
this.value = value;
if (this.marker) {
this.updateMarker(true, false);
}
}
public setDisabledState(isDisabled: boolean): void {
this.isDisabled = isDisabled;
}
public registerOnChange(fn: any) {
this.changeCallback = fn;
}
public registerOnTouched(fn: any) {
this.touchedCallback = fn;
}
public updateValueByInput() {
if (this.geolocationForm.controls['latitude'].value !== null &&
this.geolocationForm.controls['longitude'].value !== null &&
this.geolocationForm.valid) {
this.value = this.geolocationForm.value;
} else {
this.value = null;
}
this.updateMarker(true, true);
}
public ngAfterViewInit() {
this.resourceLoader.loadStyle('https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.3/leaflet.css');
this.resourceLoader.loadScript('https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.3/leaflet.js').then(() => {
this.map = L.map(this.editor.nativeElement).fitWorld();
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(this.map);
this.map.on('click', (event: any) => {
this.value = { latitude: event.latlng.lat, longitude: event.latlng.lng };
this.updateMarker(false, true);
});
this.updateMarker(true, false);
});
}
public reset() {
this.value = null;
this.updateMarker(true, true);
}
private updateMarker(zoom: boolean, fireEvent: boolean) {
if (this.value) {
if (!this.marker) {
this.marker = L.marker([0, 90], { draggable: true }).addTo(this.map);
this.marker.on('drag', (event: any) => {
this.value = { latitude: event.latlng.lat, longitude: event.latlng.lng };
});
this.marker.on('dragend', (event: any) => {
this.updateMarker(false, true);
});
}
const latLng = L.latLng(this.value.latitude, this.value.longitude);
if (zoom) {
this.map.setView(latLng, 8);
} else {
this.map.panTo(latLng);
}
this.marker.setLatLng(latLng);
this.geolocationForm.setValue(this.value, { emitEvent: false, onlySelf: false });
} else {
if (this.marker) {
this.marker.removeFrom(this.map);
this.marker = null;
}
this.map.fitWorld();
this.geolocationForm.reset(undefined, { emitEvent: false, onlySelf: false });
}
if (fireEvent) {
this.changeCallback(this.value);
this.touchedCallback();
}
}
}

2
src/Squidex/app/framework/angular/stars.component.html

@ -6,5 +6,7 @@
<span class="stars" (mouseleave)="stopPreview()" [class.disabled]="isDisabled">
<span class="star" *ngFor="let star of starsArray" (mouseenter)="setPreview(star)" (click)="setValue(star)" [class.selected]="star <= stars"></span>
</span>
<button class="btn btn-link" [class.hidden]="!value" (click)="reset()">Clear</button>
</div>
</div>

13
src/Squidex/app/framework/angular/stars.component.scss

@ -7,25 +7,28 @@ $color-gold: #ffd700;
color: $color-empty;
}
.stars-container {
height: 1.8rem;
}
.stars {
& {
display: inline-block;
border: 0;
height: 2.4rem;
line-height: 2.4rem;
}
&.disabled {
cursor: not-allowed;
}
&-container {
height: 2.4rem;
}
}
.star {
& {
background: transparent;
border: 0;
line-height: 1px;
}
&::before {
@ -33,7 +36,7 @@ $color-gold: #ffd700;
color: $color-gold;
content: '';
font-size: 1.8rem;
line-height: 2rem;
line-height: 1px;
}
&.selected {

27
src/Squidex/app/framework/angular/stars.component.ts

@ -23,7 +23,6 @@ export const SQX_STARS_CONTROL_VALUE_ACCESSOR: any = {
export class StarsComponent implements ControlValueAccessor {
private changeCallback: (value: any) => void = NOOP;
private touchedCallback: () => void = NOOP;
private value = 1;
private maximumStarsValue = 5;
public isDisabled = false;
@ -31,6 +30,8 @@ export class StarsComponent implements ControlValueAccessor {
public stars: number;
public starsArray: number[] = [1, 2, 3, 4, 5];
public value: number | null = 1;
public get maximumStars() {
return this.maximumStarsValue;
}
@ -71,13 +72,35 @@ export class StarsComponent implements ControlValueAccessor {
}
public setPreview(value: number) {
if (this.isDisabled) {
return;
}
this.stars = value;
}
public stopPreview() {
if (this.isDisabled) {
return;
}
this.stars = this.value;
}
public reset() {
if (this.isDisabled) {
return;
}
this.value = null;
this.stars = 0;
this.changeCallback(this.value);
this.touchedCallback();
return false;
}
public setValue(value: number) {
if (this.isDisabled) {
return;
@ -87,5 +110,7 @@ export class StarsComponent implements ControlValueAccessor {
this.changeCallback(this.value);
this.touchedCallback();
return false;
}
}

8
src/Squidex/app/framework/angular/toggle.component.scss

@ -50,11 +50,9 @@ $toggle-button-size: $toggle-height - .3rem;
}
&.disabled {
& {
background: $color-disabled;
border: 0;
cursor: not-allowed;
}
background: $color-disabled;
border: 0;
cursor: not-allowed;
}
}
}

1
src/Squidex/app/framework/declarations.ts

@ -15,6 +15,7 @@ export * from './angular/date-time-editor.component';
export * from './angular/date-time.pipes';
export * from './angular/focus-on-change.directive';
export * from './angular/focus-on-init.directive';
export * from './angular/geolocation-editor.component';
export * from './angular/http-utils';
export * from './angular/indeterminate.directive';
export * from './angular/json-editor.component';

3
src/Squidex/app/framework/module.ts

@ -25,6 +25,7 @@ import {
FocusOnChangeDirective,
FocusOnInitDirective,
FromNowPipe,
GeolocationEditorComponent,
JsonEditorComponent,
LocalStoreService,
MarkdownEditorComponent,
@ -73,6 +74,7 @@ import {
FocusOnChangeDirective,
FocusOnInitDirective,
FromNowPipe,
GeolocationEditorComponent,
JsonEditorComponent,
MarkdownEditorComponent,
ModalViewDirective,
@ -105,6 +107,7 @@ import {
FocusOnChangeDirective,
FocusOnInitDirective,
FromNowPipe,
GeolocationEditorComponent,
JsonEditorComponent,
MarkdownEditorComponent,
ModalViewDirective,

11
src/Squidex/app/shared/services/schemas.service.spec.ts

@ -149,6 +149,14 @@ describe('SchemasService', () => {
properties: {
fieldType: 'Json'
}
}, {
fieldId: 6,
name: 'field6',
isHidden: true,
isDisabled: true,
properties: {
fieldType: 'Geolocation'
}
}]
}
})
@ -172,7 +180,8 @@ describe('SchemasService', () => {
new FieldDto(2, 'field2', true, true, createProperties('String')),
new FieldDto(3, 'field3', true, true, createProperties('Boolean')),
new FieldDto(4, 'field4', true, true, createProperties('DateTime')),
new FieldDto(5, 'field5', true, true, createProperties('Json'))
new FieldDto(5, 'field5', true, true, createProperties('Json')),
new FieldDto(6, 'field6', true, true, createProperties('Geolocation'))
]));
authService.verifyAll();

16
src/Squidex/app/shared/services/schemas.service.ts

@ -50,6 +50,9 @@ export function createProperties(fieldType: string, values: Object | null = null
case 'Json':
properties = new JsonFieldPropertiesDto(undefined, undefined, undefined, false, false, false);
break;
case 'Geolocation':
properties = new GeolocationFieldPropertiesDto(undefined, undefined, undefined, false, false, false, 'Map');
break;
default:
throw 'Invalid properties type';
}
@ -182,6 +185,19 @@ export class BooleanFieldPropertiesDto extends FieldPropertiesDto {
}
}
export class GeolocationFieldPropertiesDto extends FieldPropertiesDto {
constructor(label: string | undefined, hints: string | undefined, placeholder: string | undefined,
isRequired: boolean,
isListField: boolean,
isLocalizable: boolean,
public readonly editor: string
) {
super(label, hints, placeholder, isRequired, isListField, isLocalizable);
this['fieldType'] = 'Geolocation';
}
}
export class JsonFieldPropertiesDto extends FieldPropertiesDto {
constructor(label: string | undefined, hints: string | undefined, placeholder: string | undefined,
isRequired: boolean,

48
src/Squidex/app/theme/icomoon/demo.html

@ -64,22 +64,6 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Date">
</span>
<span class="mls"> icon-control-Date</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e936" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe936;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
</div>
<div class="clearfix mhl ptl">
<h1 class="mvm mtn fgc1">Grid Size: 14</h1>
@ -857,6 +841,38 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Map">
</span>
<span class="mls"> icon-control-Map</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e91b" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe91b;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-type-Geolocation">
</span>
<span class="mls"> icon-type-Geolocation</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e91b" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe91b;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-logo">

BIN
src/Squidex/app/theme/icomoon/fonts/icomoon.eot

Binary file not shown.

2
src/Squidex/app/theme/icomoon/fonts/icomoon.svg

@ -34,7 +34,7 @@
<glyph unicode="&#xe918;" glyph-name="filter" d="M921.6 678.042c0 70.707-171.878 128.154-384 128.154s-384-57.19-384-127.898c0-10.035 3.789-19.712 10.342-29.030 0 0.051 296.858-406.067 296.858-406.067v-256l153.6 51.2v204.8c0 0 298.752 408.166 299.725 409.702 0 0 7.475 16.64 7.475 25.139zM537.6 755.2c206.899 0 318.208-53.248 332.083-76.8-13.875-23.552-125.184-76.8-332.083-76.8s-318.208 53.248-332.083 76.8c13.875 23.552 125.184 76.8 332.083 76.8zM869.376 614.144v0 0zM573.030 273.408c-6.4-8.755-9.83-19.354-9.83-30.208v-167.885l-51.2-17.050v184.934c0 10.854-3.43 21.453-9.83 30.208l-228.147 312.115c68.762-21.709 161.382-35.123 263.578-35.123 102.298 0 195.021 13.414 263.834 35.174-0.102-0.051-0.205-0.051-0.307-0.102l-228.096-312.064z" />
<glyph unicode="&#xe919;" glyph-name="help" d="M512 448h-204.8v-51.2h204.8v51.2zM768 806.4h-51.2c0 28.314-22.886 51.2-51.2 51.2h-307.2c-28.314 0-51.2-22.886-51.2-51.2h-51.2c-28.314 0-51.2-22.886-51.2-51.2v-665.6c0-28.314 22.886-51.2 51.2-51.2h512c28.314 0 51.2 22.886 51.2 51.2v665.6c0 28.314-22.886 51.2-51.2 51.2zM358.4 806.4h307.2v-51.2h-307.2v51.2zM768 140.8c0-28.314-22.886-51.2-51.2-51.2h-409.6c-28.314 0-51.2 22.886-51.2 51.2v563.2c0 28.314 22.886 51.2 51.2 51.2 0-28.314 22.886-51.2 51.2-51.2h307.2c28.314 0 51.2 22.886 51.2 51.2 28.314 0 51.2-22.886 51.2-51.2v-563.2zM307.2 499.2h409.6v51.2h-409.6v-51.2zM307.2 294.4h409.6v51.2h-409.6v-51.2z" />
<glyph unicode="&#xe91a;" glyph-name="type-Json, json" d="M179.2 704c0 28.262 22.938 51.2 51.2 51.2h25.6c14.157 0 25.6 11.443 25.6 25.6 0 14.131-11.443 25.6-25.6 25.6h-25.6c-56.55 0-102.4-45.85-102.4-102.4v-179.2c0-28.262-22.938-51.2-51.2-51.2h-25.6c-14.157 0-25.6-11.469-25.6-25.6 0-14.157 11.443-25.6 25.6-25.6h25.6c28.262 0 51.2-22.938 51.2-51.2v-179.2c0-56.55 45.85-102.4 102.4-102.4h25.6c14.157 0 25.6 11.443 25.6 25.6s-11.443 25.6-25.6 25.6h-25.6c-28.262 0-51.2 22.938-51.2 51.2v179.2c0 30.746-13.85 58.061-35.328 76.8 21.478 18.765 35.328 46.029 35.328 76.8v179.2zM972.8 473.6h-25.6c-28.262 0-51.2 22.938-51.2 51.2v179.2c0 56.55-45.85 102.4-102.4 102.4h-25.6c-14.157 0-25.6-11.469-25.6-25.6 0-14.157 11.443-25.6 25.6-25.6h25.6c28.262 0 51.2-22.938 51.2-51.2v-179.2c0-30.771 13.85-58.035 35.328-76.8-21.478-18.739-35.328-46.054-35.328-76.8v-179.2c0-28.262-22.938-51.2-51.2-51.2h-25.6c-14.157 0-25.6-11.443-25.6-25.6s11.443-25.6 25.6-25.6h25.6c56.55 0 102.4 45.85 102.4 102.4v179.2c0 28.262 22.938 51.2 51.2 51.2h25.6c14.157 0 25.6 11.443 25.6 25.6 0 14.131-11.443 25.6-25.6 25.6zM512 627.2c-14.157 0-25.6-11.469-25.6-25.6 0-14.157 11.443-25.6 25.6-25.6s25.6 11.443 25.6 25.6c0 14.131-11.443 25.6-25.6 25.6zM512 524.8c-14.157 0-25.6-11.469-25.6-25.6v-204.8c0-14.157 11.443-25.6 25.6-25.6s25.6 11.443 25.6 25.6v204.8c0 14.131-11.443 25.6-25.6 25.6z" />
<glyph unicode="&#xe91b;" glyph-name="location" d="M512 960c-169.421 0-307.2-137.779-307.2-307.2 0-78.643 15.258-164.915 45.261-256.41 23.859-72.55 56.986-148.582 98.56-226.099 70.707-131.635 140.339-220.774 143.309-224.512 4.813-6.195 12.288-9.779 20.070-9.779 7.834 0 15.258 3.584 20.122 9.779 2.97 3.686 72.602 92.826 143.309 224.512 41.574 77.517 74.701 153.549 98.56 226.099 29.952 91.494 45.21 177.766 45.21 256.41 0 169.421-137.83 307.2-307.2 307.2zM630.682 195.328c-46.234-86.374-92.979-154.982-118.682-190.822-25.6 35.635-72.038 103.885-118.221 189.952-62.874 117.146-137.779 291.738-137.779 458.342 0 141.158 114.842 256 256 256s256-114.842 256-256c0-166.298-74.65-340.582-137.318-457.472zM512 806.4c-84.685 0-153.6-68.915-153.6-153.6s68.915-153.6 153.6-153.6 153.6 68.915 153.6 153.6-68.915 153.6-153.6 153.6zM512 550.4c-56.525 0-102.4 45.875-102.4 102.4 0 56.474 45.875 102.4 102.4 102.4 56.474 0 102.4-45.926 102.4-102.4 0-56.525-45.926-102.4-102.4-102.4z" />
<glyph unicode="&#xe91b;" glyph-name="location, control-Map, type-Geolocation" d="M512 960c-169.421 0-307.2-137.779-307.2-307.2 0-78.643 15.258-164.915 45.261-256.41 23.859-72.55 56.986-148.582 98.56-226.099 70.707-131.635 140.339-220.774 143.309-224.512 4.813-6.195 12.288-9.779 20.070-9.779 7.834 0 15.258 3.584 20.122 9.779 2.97 3.686 72.602 92.826 143.309 224.512 41.574 77.517 74.701 153.549 98.56 226.099 29.952 91.494 45.21 177.766 45.21 256.41 0 169.421-137.83 307.2-307.2 307.2zM630.682 195.328c-46.234-86.374-92.979-154.982-118.682-190.822-25.6 35.635-72.038 103.885-118.221 189.952-62.874 117.146-137.779 291.738-137.779 458.342 0 141.158 114.842 256 256 256s256-114.842 256-256c0-166.298-74.65-340.582-137.318-457.472zM512 806.4c-84.685 0-153.6-68.915-153.6-153.6s68.915-153.6 153.6-153.6 153.6 68.915 153.6 153.6-68.915 153.6-153.6 153.6zM512 550.4c-56.525 0-102.4 45.875-102.4 102.4 0 56.474 45.875 102.4 102.4 102.4 56.474 0 102.4-45.926 102.4-102.4 0-56.525-45.926-102.4-102.4-102.4z" />
<glyph unicode="&#xe91c;" glyph-name="logo" d="M512.273 876.218c-0.141-0.056-182.959-84.073-229.418-256.782-4.481-16.584 32.696-9.296 31.036-27.527-2.034-22.136-44.668-31.201-39.109-94.764 5.659-64.734 60.321-130.141 68.527-169.673v-27.655c-0.497-8.54-4.566-31.715-18.018-43.036-7.378-6.19-17.322-8.421-30.436-6.782-18.205 2.275-25.449 14.468-28.345 24.309-4.753 16.218-0.322 35.123 10.345 44 10.724 8.924 12.17 24.842 3.236 35.564-8.934 10.712-24.858 12.161-35.582 3.218-25.995-21.64-36.887-61.52-26.491-97 9.815-33.392 36.197-55.884 70.6-60.182 4.903-0.609 9.566-0.909 14-0.909 26.623 0 44.661 10.175 55.582 19.455 32.866 27.97 35.449 74.593 35.636 79.818 0.009 0.309 0.018 0.618 0.018 0.927v21.218h0.109v1.418c0 12.351 10.008 22.364 22.382 22.364 11.944 0 21.609-9.346 22.273-21.109v-202.491c-0.206-2.912-2.536-29.892-17.891-42.945-7.368-6.274-17.384-8.53-30.545-6.873-18.214 2.275-25.476 14.468-28.364 24.291-4.762 16.228-0.322 35.151 10.345 44.018 10.724 8.933 12.188 24.833 3.255 35.564-8.924 10.694-24.876 12.161-35.6 3.218-26.013-21.631-36.887-61.52-26.491-97 9.796-33.392 36.197-55.893 70.6-60.2 4.903-0.609 9.566-0.891 14-0.891 26.623 0 44.671 10.156 55.564 19.436 32.875 27.97 35.458 74.611 35.636 79.836 0.019 0.328 0.018 0.609 0.018 0.909v225.636l0.127 0.055v1c0 12.595 10.219 22.8 22.836 22.8 12.349 0 22.333-9.824 22.727-22.073v-227.418c0-0.309 0-0.591 0.018-0.909 0.187-5.216 2.779-51.866 35.655-79.836 10.912-9.28 28.959-19.436 55.582-19.436 4.443 0 9.088 0.282 13.982 0.891 34.394 4.307 60.804 26.818 70.6 60.2 10.405 35.48-0.487 75.36-26.491 97-10.743 8.943-26.676 7.466-35.6-3.218-8.934-10.74-7.488-26.63 3.236-35.564 10.668-8.868 15.135-27.79 10.364-44.018-2.878-9.823-10.159-22.015-28.364-24.291-13.105-1.648-23.050 0.592-30.418 6.782-13.508 11.358-17.558 34.657-18.036 43v201.818c0.297 12.093 10.14 21.818 22.327 21.818 12.374 0 22.4-10.003 22.4-22.364v-1.418h0.073v-21.218c0-0.318 0-0.628 0.018-0.927 0.178-5.216 2.779-51.848 35.655-79.818 10.912-9.28 28.941-19.455 55.564-19.455 4.434 0 9.107 0.292 14 0.891 34.394 4.298 60.786 26.818 70.582 60.2 10.405 35.48-0.487 75.351-26.491 97-10.743 8.933-26.667 7.476-35.582-3.236-8.943-10.722-7.488-26.622 3.236-35.545 10.668-8.877 15.117-27.8 10.345-44.018-2.878-9.842-10.159-22.025-28.364-24.291-13.086-1.648-23.050 0.583-30.418 6.764-13.508 11.368-17.549 34.675-18.018 43v21.018c5.305 54.103 63.095 107.777 69.091 176.364 5.531 63.563-37.121 72.627-39.145 94.764-1.669 18.232 35.498 10.944 31.036 27.527-46.468 172.709-229.269 256.726-229.4 256.782z" />
<glyph unicode="&#xe91d;" glyph-name="media" d="M947.2 960h-870.4c-42.342 0-76.8-34.458-76.8-76.8v-870.4c0-42.342 34.458-76.8 76.8-76.8h870.4c42.342 0 76.8 34.458 76.8 76.8v870.4c0 42.342-34.458 76.8-76.8 76.8zM972.8 12.8c0-14.157-11.443-25.6-25.6-25.6h-870.4c-14.131 0-25.6 11.443-25.6 25.6v870.4c0 14.131 11.469 25.6 25.6 25.6h870.4c14.157 0 25.6-11.469 25.6-25.6v-870.4zM665.6 499.2c56.448 0 102.4 45.926 102.4 102.4s-45.952 102.4-102.4 102.4c-56.448 0-102.4-45.926-102.4-102.4s45.952-102.4 102.4-102.4zM665.6 652.8c28.211 0 51.2-22.989 51.2-51.2s-22.989-51.2-51.2-51.2c-28.211 0-51.2 22.989-51.2 51.2s22.989 51.2 51.2 51.2zM896 857.6h-768c-14.131 0-25.6-11.469-25.6-25.6v-614.4c0-14.157 11.469-25.6 25.6-25.6h768c14.157 0 25.6 11.443 25.6 25.6v614.4c0 14.131-11.443 25.6-25.6 25.6zM153.6 243.2v118.246l164.301 184.858c4.198 4.787 9.728 7.373 15.462 7.475 5.734 0.051 11.29-2.458 15.642-7.040l283.238-303.539h-478.643zM870.4 243.2h-168.090l-315.853 338.432c-14.285 15.334-33.331 23.603-53.709 23.347-20.326-0.256-39.219-9.011-53.094-24.627l-126.054-141.798v367.846h716.8v-563.2z" />
<glyph unicode="&#xe91e;" glyph-name="more, dots" d="M128 576c-70.656 0-128-57.344-128-128s57.344-128 128-128c70.656 0 128 57.344 128 128s-57.344 128-128 128zM512 576c-70.656 0-128-57.344-128-128s57.344-128 128-128c70.656 0 128 57.344 128 128s-57.344 128-128 128zM896 576c-70.656 0-128-57.344-128-128s57.344-128 128-128c70.656 0 128 57.344 128 128s-57.344 128-128 128z" />

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

BIN
src/Squidex/app/theme/icomoon/fonts/icomoon.ttf

Binary file not shown.

BIN
src/Squidex/app/theme/icomoon/fonts/icomoon.woff

Binary file not shown.

2
src/Squidex/app/theme/icomoon/selection.json

@ -1370,7 +1370,7 @@
"properties": {
"order": 25,
"id": 13,
"name": "location",
"name": "location, control-Map, type-Geolocation",
"prevSize": 32,
"code": 59675
},

19
src/Squidex/app/theme/icomoon/style.css

@ -1,10 +1,10 @@
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?y7zcsi');
src: url('fonts/icomoon.eot?y7zcsi#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?y7zcsi') format('truetype'),
url('fonts/icomoon.woff?y7zcsi') format('woff'),
url('fonts/icomoon.svg?y7zcsi#icomoon') format('svg');
src: url('fonts/icomoon.eot?gbczp5');
src: url('fonts/icomoon.eot?gbczp5#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?gbczp5') format('truetype'),
url('fonts/icomoon.woff?gbczp5') format('woff'),
url('fonts/icomoon.svg?gbczp5#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
@ -33,9 +33,6 @@
.icon-control-RichText:before {
content: "\e939";
}
.icon-control-Date:before {
content: "\e936";
}
.icon-control-Markdown:before {
content: "\e938";
}
@ -180,6 +177,12 @@
.icon-location:before {
content: "\e91b";
}
.icon-control-Map:before {
content: "\e91b";
}
.icon-type-Geolocation:before {
content: "\e91b";
}
.icon-logo:before {
content: "\e91c";
}

Loading…
Cancel
Save