Browse Source

Icons integrated

pull/1/head
Sebastian 9 years ago
parent
commit
cc3d27cf48
  1. 4
      src/Squidex.Core/Schemas/Field.cs
  2. 12
      src/Squidex.Core/Schemas/Schema.cs
  3. 44
      src/Squidex.Infrastructure/EnumExtensions.cs
  4. 10
      src/Squidex.Infrastructure/StringExtensions.cs
  5. 32
      src/Squidex.Infrastructure/ValidationExtensions.cs
  6. 53
      src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs
  7. 2
      src/Squidex/app/features/content/pages/content/content-field.component.html
  8. 7
      src/Squidex/app/theme/icomoon/demo-files/demo.css
  9. 305
      src/Squidex/app/theme/icomoon/demo.html
  10. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.eot
  11. 2
      src/Squidex/app/theme/icomoon/fonts/icomoon.svg
  12. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.ttf
  13. BIN
      src/Squidex/app/theme/icomoon/fonts/icomoon.woff
  14. 51
      src/Squidex/app/theme/icomoon/icons/control-Markdown.svg
  15. 51
      src/Squidex/app/theme/icomoon/icons/control-RichText.svg
  16. 542
      src/Squidex/app/theme/icomoon/selection.json
  17. 60
      src/Squidex/app/theme/icomoon/style.css
  18. 29
      tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs
  19. 32
      tests/Squidex.Infrastructure.Tests/ValidationExtensionsTests.cs

4
src/Squidex.Core/Schemas/Field.cs

@ -164,7 +164,7 @@ namespace Squidex.Core.Schemas
return;
}
var languageType = typeResolver(new EdmComplexType("Squidex", $"{schemaName}_{Name}_Property"));
var languageType = typeResolver(new EdmComplexType("Squidex", $"{schemaName}{Name.ToPascalCase()}Property"));
foreach (var language in languages)
{
@ -197,7 +197,7 @@ namespace Squidex.Core.Schemas
languagesObject.Properties.Add(language.Iso2Code, languageProperty);
}
languagesProperty.AllOf.Add(schemaResolver($"{schemaName}_{Name}_Property", languagesObject));
languagesProperty.AllOf.Add(schemaResolver($"{schemaName}{Name.ToPascalCase()}Property", languagesObject));
schema.Properties.Add(Name, languagesProperty);
}

12
src/Squidex.Core/Schemas/Schema.cs

@ -177,11 +177,13 @@ namespace Squidex.Core.Schemas
Guard.NotEmpty(languages, nameof(languages));
Guard.NotNull(typeResolver, nameof(typeResolver));
var edmType = new EdmComplexType("Squidex", Name);
var schemaName = Name.ToPascalCase();
var edmType = new EdmComplexType("Squidex", schemaName);
foreach (var field in fieldsByName.Values.Where(x => !x.IsHidden))
{
field.AddToEdmType(edmType, languages, Name, typeResolver);
field.AddToEdmType(edmType, languages, schemaName, typeResolver);
}
return edmType;
@ -192,11 +194,13 @@ namespace Squidex.Core.Schemas
Guard.NotEmpty(languages, nameof(languages));
Guard.NotNull(schemaResolver, nameof(schemaResolver));
var schema = new JsonSchema4 { Id = Name, Type = JsonObjectType.Object };
var schemaName = Name.ToPascalCase();
var schema = new JsonSchema4 { Id = schemaName, Type = JsonObjectType.Object };
foreach (var field in fieldsByName.Values.Where(x => !x.IsHidden))
{
field.AddToSchema(schema, languages, Name, schemaResolver);
field.AddToSchema(schema, languages, schemaName, schemaResolver);
}
return schema;

44
src/Squidex.Infrastructure/EnumExtensions.cs

@ -1,44 +0,0 @@
// ==========================================================================
// EnumExtensions.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System;
using System.Text.RegularExpressions;
// ReSharper disable ObjectCreationAsStatement
namespace Squidex.Infrastructure
{
public static class EnumExtensions
{
public static bool IsEnumValue<TEnum>(this TEnum value) where TEnum : struct
{
try
{
return Enum.IsDefined(typeof(TEnum), value);
}
catch
{
return false;
}
}
public static bool IsValidRegex(this string value)
{
try
{
new Regex(value);
return true;
}
catch (ArgumentException)
{
return false;
}
}
}
}

10
src/Squidex.Infrastructure/Extensions.cs → src/Squidex.Infrastructure/StringExtensions.cs

@ -1,5 +1,5 @@
// ==========================================================================
// Extensions.cs
// StringExtensionsTests.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
@ -7,12 +7,12 @@
// ==========================================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Squidex.Infrastructure
{
public static class Extensions
public static class StringExtensions
{
private static readonly Regex SlugRegex = new Regex("^[a-z0-9]+(\\-[a-z0-9]+)*$", RegexOptions.Compiled);
private static readonly Regex PropertyNameRegex = new Regex("^[a-zA-Z0-9]+(\\-[a-zA-Z0-9]+)*$", RegexOptions.Compiled);
@ -27,9 +27,9 @@ namespace Squidex.Infrastructure
return value != null && PropertyNameRegex.IsMatch(value);
}
public static bool IsBetween<TValue>(this TValue value, TValue low, TValue high) where TValue : IComparable
public static string ToPascalCase(this string value)
{
return Comparer<TValue>.Default.Compare(low, value) <= 0 && Comparer<TValue>.Default.Compare(high, value) >= 0;
return string.Concat(value.Split(new[] { '-', '_', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(c => char.ToUpper(c[0]) + c.Substring(1)));
}
}
}

32
src/Squidex.Infrastructure/ValidationExtensions.cs

@ -9,11 +9,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Squidex.Infrastructure
{
public static class ValidationExtensions
{
public static bool IsBetween<TValue>(this TValue value, TValue low, TValue high) where TValue : IComparable
{
return Comparer<TValue>.Default.Compare(low, value) <= 0 && Comparer<TValue>.Default.Compare(high, value) >= 0;
}
public static bool IsEnumValue<TEnum>(this TEnum value) where TEnum : struct
{
try
{
return Enum.IsDefined(typeof(TEnum), value);
}
catch
{
return false;
}
}
public static bool IsValidRegex(this string value)
{
try
{
new Regex(value);
return true;
}
catch (ArgumentException)
{
return false;
}
}
public static void Validate(this IValidatable target, Func<string> message)
{
var errors = new List<ValidationError>();

53
src/Squidex/Controllers/ContentApi/Generator/SchemasSwaggerGenerator.cs

@ -159,7 +159,7 @@ When you change the field to be localizable the value will become the value for
{
foreach (var operation in document.Paths.Values.SelectMany(x => x.Values))
{
operation.Responses.Add("500", new SwaggerResponse { Description = "Operations failed with internal server error.", Schema = errorDtoSchema });
operation.Responses.Add("500", new SwaggerResponse { Description = "Operation failed with internal server error.", Schema = errorDtoSchema });
}
}
@ -178,7 +178,7 @@ When you change the field to be localizable the value will become the value for
document.Tags.Add(
new SwaggerTag
{
Name = schemaName, Description = $"API to managed {schemaName} content elements."
Name = schemaName, Description = $"API to managed {schemaName} content."
});
var dataSchem = AppendSchema($"{schema.Name}Dto", schema.BuildSchema(languages, AppendSchema));
@ -205,16 +205,17 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Get, null, $"{appBasePath}/{schema.Name}", operation =>
{
operation.Summary = $"Queries {schemaName} content elements.";
operation.Summary = $"Queries {schemaName} content.";
operation.AddQueryParameter("$top", JsonObjectType.Number, "The number of elements to take.");
operation.AddQueryParameter("$skip", JsonObjectType.Number, "The number of elements to skip.");
operation.AddQueryParameter("$filter", JsonObjectType.String, "Optional filter.");
operation.AddQueryParameter("$search", JsonObjectType.String, "Optional full text query string.");
operation.AddQueryParameter("$top", JsonObjectType.Number, "Optional number of contents to take.");
operation.AddQueryParameter("$skip", JsonObjectType.Number, "Optional number of contents to skip.");
operation.AddQueryParameter("$filter", JsonObjectType.String, "Optional OData filter.");
operation.AddQueryParameter("$search", JsonObjectType.String, "Optional OData full text search.");
operation.AddQueryParameter("orderby", JsonObjectType.String, "Optional OData order definition.");
var responseSchema = CreateContentsSchema(schemaName, schema.Name, dataSchem);
operation.AddResponse("200", $"{schemaName} content elements retrieved.", responseSchema);
operation.AddResponse("200", $"{schemaName} content retrieved.", responseSchema);
});
}
@ -222,11 +223,11 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Get, schemaName, $"{appBasePath}/{schema.Name}/{{id}}", operation =>
{
operation.Summary = $"Get a {schemaName} content element.";
operation.Summary = $"Get a {schemaName} content.";
var responseSchema = CreateContentSchema(schemaName, schema.Name, dataSchema);
operation.AddResponse("200", $"{schemaName} element found.", responseSchema);
operation.AddResponse("200", $"{schemaName} content found.", responseSchema);
});
}
@ -234,7 +235,7 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Post, null, $"{appBasePath}/{schema.Name}", operation =>
{
operation.Summary = $"Create a {schemaName} content element.";
operation.Summary = $"Create a {schemaName} content.";
operation.AddBodyParameter(dataSchema, "data", string.Format(BodyDescription, schemaName));
@ -246,7 +247,7 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Put, schemaName, $"{appBasePath}/{schema.Name}/{{id}}", operation =>
{
operation.Summary = $"Update a {schemaName} content element.";
operation.Summary = $"Update a {schemaName} content.";
operation.AddBodyParameter(dataSchema, "data", string.Format(BodyDescription, schemaName));
@ -258,7 +259,7 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Patch, schemaName, $"{appBasePath}/{schema.Name}/{{id}}", operation =>
{
operation.Summary = $"Patchs a {schemaName} content element.";
operation.Summary = $"Patchs a {schemaName} content.";
operation.AddBodyParameter(dataSchema, "data", string.Format(BodyDescription, schemaName));
@ -270,7 +271,7 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Put, schemaName, $"{appBasePath}/{schema.Name}/{{id}}/publish", operation =>
{
operation.Summary = $"Publish a {schemaName} content element.";
operation.Summary = $"Publish a {schemaName} content.";
operation.AddResponse("204", $"{schemaName} element published.");
});
@ -280,7 +281,7 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Put, schemaName, $"{appBasePath}/{schema.Name}/{{id}}/unpublish", operation =>
{
operation.Summary = $"Unpublish a {schemaName} content element.";
operation.Summary = $"Unpublish a {schemaName} content.";
operation.AddResponse("204", $"{schemaName} element unpublished.");
});
@ -290,9 +291,9 @@ When you change the field to be localizable the value will become the value for
{
return AddOperation(SwaggerOperationMethod.Delete, schemaName, $"{appBasePath}/{schema.Name}/{{id}}/", operation =>
{
operation.Summary = $"Delete a {schemaName} content element.";
operation.Summary = $"Delete a {schemaName} content.";
operation.AddResponse("204", $"{schemaName} element deleted.");
operation.AddResponse("204", $"{schemaName} content deleted.");
});
}
@ -309,7 +310,7 @@ When you change the field to be localizable the value will become the value for
{
operation.AddPathParameter("id", JsonObjectType.String, $"The id of the {entityName} (GUID).");
operation.AddResponse("404", $"App, schema or {entityName} not found.");
operation.AddResponse("404", $"App, schema or {entityName} content not found.");
}
return operations;
@ -325,11 +326,11 @@ When you change the field to be localizable the value will become the value for
{
["total"] = new JsonProperty
{
Type = JsonObjectType.Number, IsRequired = true, Description = $"The total number of {schemaName} content elements."
Type = JsonObjectType.Number, IsRequired = true, Description = $"The total number of {schemaName} contents."
},
["items"] = new JsonProperty
{
Type = JsonObjectType.Array, IsRequired = true, Item = contentSchema, Description = $"The item of {schemaName} content elements."
Type = JsonObjectType.Array, IsRequired = true, Item = contentSchema, Description = $"The {schemaName} contents."
}
},
Type = JsonObjectType.Object
@ -344,19 +345,19 @@ When you change the field to be localizable the value will become the value for
new Func<string, string, JsonProperty>((d, f) =>
new JsonProperty { Description = d, Format = f, IsRequired = true, Type = JsonObjectType.String });
var dataDescription = $"The data of the {schemaName} content element";
var dataDescription = $"The data of the {schemaName} content";
var dataProperty = new JsonProperty { Description = dataDescription, Type = JsonObjectType.Object, IsRequired = true, SchemaReference = dataSchema };
var schema = new JsonSchema4
{
Properties =
{
["id"] = CreateProperty($"The id of the {schemaName}", null),
["id"] = CreateProperty($"The id of the {schemaName} content.", null),
["data"] = dataProperty,
["created"] = CreateProperty($"The date and time when the {schemaName} content element has been created.", "date-time"),
["createdBy"] = CreateProperty($"The user that has created the {schemaName} content element.", null),
["lastModified"] = CreateProperty($"The date and time when the {schemaName} content element has been modified last.", "date-time"),
["lastModifiedBy"] = CreateProperty($"The user that has updated the {schemaName} content element.", null)
["created"] = CreateProperty($"The date and time when the {schemaName} content has been created.", "date-time"),
["createdBy"] = CreateProperty($"The user that has created the {schemaName} content.", null),
["lastModified"] = CreateProperty($"The date and time when the {schemaName} content has been modified last.", "date-time"),
["lastModifiedBy"] = CreateProperty($"The user that has updated the {schemaName} content last.", null)
},
Type = JsonObjectType.Object
};

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

@ -6,7 +6,7 @@
<span class="field-disabled" *ngIf="field.isDisabled">Disabled</span>
<div [formGroup]="fieldForm">
<div *ngIf="field.properties.isLocalizable">
<div *ngIf="field.properties.isLocalizable && languages.length > 1">
<sqx-language-selector size="sm" class="languages-buttons" (selectedLanguageChanged)="selectLanguage($event)" [languages]="languages"></sqx-language-selector>
</div>

7
src/Squidex/app/theme/icomoon/demo-files/demo.css

@ -147,15 +147,18 @@ p {
font-size: 16px;
}
.fs1 {
font-size: 32px;
font-size: 24px;
}
.fs2 {
font-size: 32px;
}
.fs3 {
font-size: 28px;
font-size: 32px;
}
.fs4 {
font-size: 32px;
}
.fs5 {
font-size: 32px;
}

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

@ -9,20 +9,20 @@
<link rel="stylesheet" href="style.css"></head>
<body>
<div class="bgc1 clearfix">
<h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;56)</small></h1>
<h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;58)</small></h1>
</div>
<div class="clearfix mhl ptl">
<h1 class="mvm mtn fgc1">Grid Size: 32</h1>
<h1 class="mvm mtn fgc1">Grid Size: 24</h1>
<div class="glyph fs1">
<div class="clearfix bshadow0 pbs">
<span class="icon-browser">
<span class="icon-control-RichText">
</span>
<span class="mls"> icon-browser</span>
<span class="mls"> icon-control-RichText</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e935" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe935;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e939" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe939;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -31,17 +31,17 @@
</div>
</div>
<div class="clearfix mhl ptl">
<h1 class="mvm mtn fgc1">Grid Size: 16</h1>
<h1 class="mvm mtn fgc1">Grid Size: 14</h1>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-unlocked">
<span class="icon-control-Markdown">
</span>
<span class="mls"> icon-unlocked</span>
<span class="mls"> icon-control-Markdown</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e933" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe933;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e938" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe938;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -50,14 +50,14 @@
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-lock">
<span class="icon-control-Date">
</span>
<span class="mls"> icon-lock</span>
<span class="mls"> icon-control-Date</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e934" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe934;" class="unitRight size1of2 talign-right" />
<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>
@ -66,14 +66,14 @@
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-reset">
<span class="icon-control-DateTime">
</span>
<span class="mls"> icon-reset</span>
<span class="mls"> icon-control-DateTime</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92e" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92e;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e937" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe937;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -82,14 +82,14 @@
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-pause">
<span class="icon-angle-right">
</span>
<span class="mls"> icon-pause</span>
<span class="mls"> icon-angle-right</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92f" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92f;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e931" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe931;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -98,14 +98,14 @@
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-play">
<span class="icon-user-o">
</span>
<span class="mls"> icon-play</span>
<span class="mls"> icon-user-o</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e930" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe930;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e932" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe932;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -114,14 +114,14 @@
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-settings2">
<span class="icon-caret-right">
</span>
<span class="mls"> icon-settings2</span>
<span class="mls"> icon-caret-right</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92d" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92d;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e929" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe929;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -130,193 +130,228 @@
</div>
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-bin2">
<span class="icon-caret-left">
</span>
<span class="mls"> icon-bin2</span>
<span class="mls"> icon-caret-left</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e902" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe902;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e92a" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92a;" 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>
<div class="glyph fs3">
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Date">
<span class="icon-caret-up">
</span>
<span class="mls"> icon-control-Date</span>
<span class="mls"> icon-caret-up</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" />
<input type="text" readonly value="e92b" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92b;" 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 fs3">
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-DateTime">
<span class="icon-caret-down">
</span>
<span class="mls"> icon-control-DateTime</span>
<span class="mls"> icon-caret-down</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e937" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe937;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e92c" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92c;" 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 fs3">
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-angle-right">
<span class="icon-angle-up">
</span>
<span class="mls"> icon-angle-right</span>
<span class="mls"> icon-angle-up</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e931" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe931;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e903" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe903;" 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 fs3">
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-user-o">
<span class="icon-angle-down">
</span>
<span class="mls"> icon-user-o</span>
<span class="mls"> icon-angle-down</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e932" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe932;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e900" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe900;" 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 fs3">
<div class="glyph fs2">
<div class="clearfix bshadow0 pbs">
<span class="icon-caret-right">
<span class="icon-angle-left">
</span>
<span class="mls"> icon-caret-right</span>
<span class="mls"> icon-angle-left</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e929" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe929;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e901" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe901;" 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: 32</h1>
<div class="glyph fs3">
<div class="clearfix bshadow0 pbs">
<span class="icon-caret-left">
<span class="icon-browser">
</span>
<span class="mls"> icon-caret-left</span>
<span class="mls"> icon-browser</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92a" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92a;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e935" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe935;" 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 fs3">
</div>
<div class="clearfix mhl ptl">
<h1 class="mvm mtn fgc1">Grid Size: 16</h1>
<div class="glyph fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-caret-up">
<span class="icon-unlocked">
</span>
<span class="mls"> icon-caret-up</span>
<span class="mls"> icon-unlocked</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92b" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92b;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e933" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe933;" 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 fs3">
<div class="glyph fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-caret-down">
<span class="icon-lock">
</span>
<span class="mls"> icon-caret-down</span>
<span class="mls"> icon-lock</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92c" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92c;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e934" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe934;" 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 fs3">
<div class="glyph fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-angle-up">
<span class="icon-reset">
</span>
<span class="mls"> icon-angle-up</span>
<span class="mls"> icon-reset</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e903" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe903;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e92e" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92e;" 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 fs3">
<div class="glyph fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-angle-down">
<span class="icon-pause">
</span>
<span class="mls"> icon-angle-down</span>
<span class="mls"> icon-pause</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e900" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe900;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e92f" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92f;" 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 fs3">
<div class="glyph fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-angle-left">
<span class="icon-play">
</span>
<span class="mls"> icon-angle-left</span>
<span class="mls"> icon-play</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e901" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe901;" class="unitRight size1of2 talign-right" />
<input type="text" readonly value="e930" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe930;" 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 fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-settings2">
</span>
<span class="mls"> icon-settings2</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e92d" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe92d;" 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 fs4">
<div class="clearfix bshadow0 pbs">
<span class="icon-bin2">
</span>
<span class="mls"> icon-bin2</span>
</div>
<fieldset class="fs0 size1of1 clearfix hidden-false">
<input type="text" readonly value="e902" class="unit size1of2" />
<input type="text" maxlength="1" readonly value="&#xe902;" class="unitRight size1of2 talign-right" />
</fieldset>
<div class="fs0 bshadow0 clearfix hidden-true">
<span class="unit pvs fgc1">liga: </span>
@ -326,7 +361,7 @@
</div>
<div class="clearfix mhl ptl">
<h1 class="mvm mtn fgc1">Grid Size: Unknown</h1>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-activity">
@ -342,7 +377,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-history">
@ -358,7 +393,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-time">
@ -374,7 +409,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-add">
@ -390,7 +425,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-plus">
@ -406,7 +441,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-check-circle">
@ -422,7 +457,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-check-circle-filled">
@ -438,7 +473,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-close">
@ -454,7 +489,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-content">
@ -470,7 +505,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Checkbox">
@ -486,7 +521,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Dropdown">
@ -502,7 +537,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Input">
@ -518,7 +553,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Radio">
@ -534,7 +569,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-TextArea">
@ -550,7 +585,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-control-Toggle">
@ -566,7 +601,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-copy">
@ -582,7 +617,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-dashboard">
@ -598,7 +633,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-delete">
@ -614,7 +649,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-bin">
@ -630,7 +665,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-delete-filled">
@ -646,7 +681,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-document-delete">
@ -662,7 +697,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-document-disable">
@ -678,7 +713,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-document-publish">
@ -694,7 +729,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-drag">
@ -710,7 +745,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-filter">
@ -726,7 +761,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-help">
@ -742,7 +777,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-type-Json">
@ -758,7 +793,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-json">
@ -774,7 +809,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-location">
@ -790,7 +825,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-logo">
@ -806,7 +841,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-media">
@ -822,7 +857,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-more">
@ -838,7 +873,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-dots">
@ -854,7 +889,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-pencil">
@ -870,7 +905,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-reference">
@ -886,7 +921,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-schemas">
@ -902,7 +937,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-search">
@ -918,7 +953,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-settings">
@ -934,7 +969,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-type-Boolean">
@ -950,7 +985,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-type-DateTime">
@ -966,7 +1001,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-type-Number">
@ -982,7 +1017,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-type-String">
@ -998,7 +1033,7 @@
<input type="text" readonly value="" class="liga unitRight" />
</div>
</div>
<div class="glyph fs4">
<div class="glyph fs5">
<div class="clearfix bshadow0 pbs">
<span class="icon-user">

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

Binary file not shown.

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

@ -63,4 +63,6 @@
<glyph unicode="&#xe935;" glyph-name="browser" horiz-adv-x="1344" d="M1328 640c-8.832 0-16-7.168-16-16v-640c0-8.832-7.168-16-16-16h-1248c-8.832 0-16 7.168-16 16v640c0 8.832-7.168 16-16 16s-16-7.168-16-16v-640c0-26.464 21.536-48 48-48h1248c26.464 0 48 21.536 48 48v640c0 8.832-7.168 16-16 16zM1296 960h-1248c-26.464 0-48-21.536-48-48v-192c0-8.832 7.168-16 16-16h1312c8.832 0 16 7.168 16 16v192c0 26.464-21.536 48-48 48zM1312 736h-1280v176c0 8.832 7.168 16 16 16h1248c8.832 0 16-7.168 16-16v-176zM560 64c8.832 0 16 7.168 16 16v512c0 8.832-7.168 16-16 16h-416c-8.832 0-16-7.168-16-16v-512c0-8.832 7.168-16 16-16h416zM160 576h384v-480h-384v480zM720 480h480c8.832 0 16 7.168 16 16s-7.168 16-16 16h-480c-8.832 0-16-7.168-16-16s7.168-16 16-16zM720 320h480c8.832 0 16 7.168 16 16s-7.168 16-16 16h-480c-8.832 0-16-7.168-16-16s7.168-16 16-16zM720 160h480c8.832 0 16 7.168 16 16s-7.168 16-16 16h-480c-8.832 0-16-7.168-16-16s7.168-16 16-16zM96 832c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32s-32-14.327-32-32zM224 832c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32s-32-14.327-32-32zM352 832c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32s-32-14.327-32-32z" />
<glyph unicode="&#xe936;" glyph-name="control-Date" d="M947.2 848.457h-128v25.6c0 14.131-11.469 25.6-25.6 25.6s-25.6-11.469-25.6-25.6v-25.6h-512v25.6c0 14.131-11.52 25.6-25.6 25.6s-25.6-11.469-25.6-25.6v-25.6h-128c-42.342 0-76.8-34.458-76.8-76.8v-716.8c0-42.342 34.458-76.8 76.8-76.8h870.4c42.342 0 76.8 34.458 76.8 76.8v716.8c0 42.342-34.458 76.8-76.8 76.8zM972.8 54.857c0-14.131-11.469-25.6-25.6-25.6h-870.4c-14.080 0-25.6 11.469-25.6 25.6v537.6h921.6v-537.6zM972.8 643.657h-921.6v128c0 14.080 11.52 25.6 25.6 25.6h128v-76.8c0-14.080 11.52-25.6 25.6-25.6s25.6 11.52 25.6 25.6v76.8h512v-76.8c0-14.080 11.469-25.6 25.6-25.6s25.6 11.52 25.6 25.6v76.8h128c14.131 0 25.6-11.52 25.6-25.6v-128zM332.8 438.857h51.2c14.080 0 25.6 11.52 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6zM486.4 438.857h51.2c14.131 0 25.6 11.52 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.52-25.6-25.6s11.52-25.6 25.6-25.6zM640 438.857h51.2c14.131 0 25.6 11.52 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.52-25.6-25.6s11.469-25.6 25.6-25.6zM793.6 438.857h51.2c14.131 0 25.6 11.52 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.52-25.6-25.6s11.469-25.6 25.6-25.6zM179.2 336.457h51.2c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM332.8 336.457h51.2c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM486.4 336.457h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM640 336.457h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.469-25.6-25.6s11.469-25.6 25.6-25.6zM793.6 336.457h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.469-25.6-25.6s11.469-25.6 25.6-25.6zM179.2 234.057h51.2c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM332.8 234.057h51.2c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM486.4 234.057h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM640 234.057h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.469-25.6-25.6s11.469-25.6 25.6-25.6zM793.6 234.057h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.469-25.6-25.6s11.469-25.6 25.6-25.6zM179.2 131.657h51.2c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM332.8 131.657h51.2c14.080 0 25.6 11.469 25.6 25.6s-11.52 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM486.4 131.657h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.080 0-25.6-11.469-25.6-25.6s11.52-25.6 25.6-25.6zM640 131.657h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.469-25.6-25.6s11.469-25.6 25.6-25.6zM793.6 131.657h51.2c14.131 0 25.6 11.469 25.6 25.6s-11.469 25.6-25.6 25.6h-51.2c-14.131 0-25.6-11.469-25.6-25.6s11.469-25.6 25.6-25.6z" />
<glyph unicode="&#xe937;" glyph-name="control-DateTime" d="M486.4 541.257h51.2c14.080 0 25.6-11.52 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6zM230.4 336.457c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6h51.2zM230.4 438.857c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6h51.2zM51.2 208.457v435.2h665.6v-102.4h51.2v281.6c0 42.342-34.458 76.8-76.8 76.8h-128v25.6c0 14.131-11.469 25.6-25.6 25.6s-25.6-11.469-25.6-25.6v-25.6h-256v25.6c0 14.131-11.52 25.6-25.6 25.6s-25.6-11.469-25.6-25.6v-25.6h-128c-42.342 0-76.8-34.458-76.8-76.8v-614.4c0-42.342 34.458-76.8 76.8-76.8h332.8v51.2h-332.8c-14.080 0-25.6 11.469-25.6 25.6zM51.2 822.857c0 14.080 11.52 25.6 25.6 25.6h128v-76.8c0-14.080 11.52-25.6 25.6-25.6s25.6 11.52 25.6 25.6v76.8h256v-76.8c0-14.080 11.469-25.6 25.6-25.6s25.6 11.52 25.6 25.6v76.8h128c14.131 0 25.6-11.52 25.6-25.6v-128h-665.6v128zM384 541.257c14.080 0 25.6-11.52 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.52-25.6 25.6s11.52 25.6 25.6 25.6h51.2zM742.4 490.057c-155.546 0-281.6-126.054-281.6-281.6s126.054-281.6 281.6-281.6 281.6 126.054 281.6 281.6-126.054 281.6-281.6 281.6zM742.4-21.943c-127.232 0-230.4 103.168-230.4 230.4s103.168 230.4 230.4 230.4 230.4-103.168 230.4-230.4-103.168-230.4-230.4-230.4zM384 438.857c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6h51.2zM384 336.457c14.080 0 25.6-11.469 25.6-25.6s-11.52-25.6-25.6-25.6h-51.2c-14.080 0-25.6 11.469-25.6 25.6s11.52 25.6 25.6 25.6h51.2zM844.8 234.057c14.131 0 25.6-11.469 25.6-25.6s-11.469-25.6-25.6-25.6h-102.4c-14.131 0-25.6 11.469-25.6 25.6v102.4c0 14.131 11.469 25.6 25.6 25.6s25.6-11.469 25.6-25.6v-76.8h76.8z" />
<glyph unicode="&#xe938;" glyph-name="control-Markdown" d="M793.6 341.441h-61.838v28.108h-0.783q-21.135-33.092-62.034-33.092-37.573 0-60.469 26.912-22.896 27.112-22.896 75.554 0 50.635 25.244 81.136t66.144 30.501q38.747 0 54.011-28.308h0.783v121.405h61.838v-302.216zM732.936 440.718v15.35q0 19.935-11.35 33.092t-29.549 13.157q-20.548 0-32.093-16.546-11.546-16.347-11.546-45.053 0-26.912 11.154-41.465t30.919-14.553q18.786 0 30.528 15.35 11.937 15.35 11.937 40.668zM548.594 341.441h-61.643v116.421q0 44.455-32.093 44.455-15.264 0-24.853-13.357t-9.589-33.292v-114.228h-61.839v117.617q0 43.259-31.506 43.259-15.851 0-25.44-12.758-9.393-12.758-9.393-34.687v-113.431h-61.838v204.135h61.838v-31.896h0.783q9.589 16.347 26.81 26.514 17.417 10.366 37.964 10.366 42.465 0 58.12-38.076 22.896 38.076 67.318 38.076 65.361 0 65.361-82.133v-126.987zM0 950.857v-204.8h76.8v-76.8h51.2v76.8h76.8v204.8zM819.2 950.857v-204.8h204.8v204.8zM51.2 899.657h102.4v-102.4h-102.4zM870.4 899.657h102.4v-102.4h-102.4zM281.6 874.057v-51.2h102.4v51.2zM486.4 874.057v-51.2h102.4v51.2zM691.2 874.057v-51.2h102.4v51.2zM896 669.257v-102.4h51.2v102.4zM76.8 566.857v-102.4h51.2v102.4zM896 464.457v-102.4h51.2v102.4zM76.8 362.057v-102.4h51.2v102.4zM896 259.657v-102.4h51.2v102.4zM76.8 157.257v-25.6h-76.8v-204.8h204.8v76.8h76.8v51.2h-76.8v76.8h-76.8v25.6zM819.2 131.657v-76.8h-25.6v-51.2h25.6v-76.8h204.8v204.8zM51.2 80.457h102.4v-102.4h-102.4zM870.4 80.457h102.4v-102.4h-102.4zM384 54.857v-51.2h102.4v51.2zM588.8 54.857v-51.2h102.4v51.2z" />
<glyph unicode="&#xe939;" glyph-name="control-RichText" d="M918 554.667v-128h-128v-298h-128v298h-128v128h384zM106 768.667h556v-128h-214v-512h-128v512h-214v128z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 50 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.

51
src/Squidex/app/theme/icomoon/icons/control-Markdown.svg

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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"
id="Layer_1"
x="0px"
y="0px"
width="40px"
height="40px"
viewBox="0 0 40 40"
enable-background="new 0 0 40 40"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="control-Markdown.svg"><metadata
id="metadata37"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs35" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview33"
showgrid="false"
inkscape:zoom="5.9"
inkscape:cx="-10.223134"
inkscape:cy="9.6004962"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><g
transform="scale(0.99077863,1.0093072)"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.80102253px;line-height:125%;font-family:'Segoe UI';-inkscape-font-specification:'Segoe UI Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4133"><path
id="path4140"
style=""
d="m 31.288522,23.585804 -2.438048,0 0,-1.087863 -0.03086,0 q -0.833257,1.280747 -2.445764,1.280747 -1.481345,0 -2.384041,-1.041572 -0.902695,-1.049286 -0.902695,-2.924115 0,-1.959697 0.99528,-3.140144 0.995279,-1.180448 2.607786,-1.180448 1.527637,0 2.129434,1.095579 l 0.03086,0 0,-4.698644 2.438048,0 0,11.69646 z m -2.391756,-3.842241 0,-0.594081 q 0,-0.771535 -0.44749,-1.280747 -0.44749,-0.509213 -1.165017,-0.509213 -0.810111,0 -1.265316,0.640374 -0.455206,0.632658 -0.455206,1.743667 0,1.041571 0.439775,1.604792 0.439775,0.56322 1.219024,0.56322 0.740673,0 1.203594,-0.594082 0.470636,-0.594081 0.470636,-1.57393 z m -7.267854,3.842241 -2.430333,0 0,-4.50576 q 0,-1.720522 -1.265316,-1.720522 -0.601797,0 -0.979849,0.516928 -0.378051,0.516928 -0.378051,1.288462 l 0,4.420892 -2.438049,0 0,-4.552052 q 0,-1.67423 -1.24217,-1.67423 -0.624943,0 -1.002995,0.493782 -0.370336,0.493782 -0.370336,1.34247 l 0,4.39003 -2.4380485,0 0,-7.900511 2.4380485,0 0,1.234455 0.03086,0 q 0.378052,-0.632659 1.057002,-1.026141 0.686666,-0.401198 1.496777,-0.401198 1.674229,0 2.291457,1.473631 0.902695,-1.473631 2.654078,-1.473631 2.576924,0 2.576924,3.178721 l 0,4.914674 z M 0,0 l 0,7.926229 3.0279216,0 0,2.972336 2.0186144,0 0,-2.972336 3.0279216,0 0,-7.926229 z m 32.29783,0 0,7.926229 8.074458,0 0,-7.926229 z m -30.2792156,1.9815573 4.0372288,0 0,3.9631145 -4.0372288,0 z m 32.2978306,0 4.037228,0 0,3.9631145 -4.037228,0 z m -23.214066,0.9907786 0,1.9815572 4.037229,0 0,-1.9815572 z m 8.074458,0 0,1.9815572 4.037228,0 0,-1.9815572 z m 8.074457,0 0,1.9815572 4.037229,0 0,-1.9815572 z m 8.074458,7.9262291 0,3.963114 2.018614,0 0,-3.963114 z m -32.2978304,3.963114 0,3.963115 2.0186144,0 0,-3.963115 z m 32.2978304,3.963115 0,3.963114 2.018614,0 0,-3.963114 z m -32.2978304,3.963114 0,3.963115 2.0186144,0 0,-3.963115 z m 32.2978304,3.963115 0,3.963114 2.018614,0 0,-3.963114 z m -32.2978304,3.963114 0,0.990779 -3.0279216,0 0,7.926229 8.0744576,0 0,-2.972336 3.0279214,0 0,-1.981557 -3.0279214,0 0,-2.972336 -3.0279216,0 0,-0.990779 z m 29.2699084,0.990779 0,2.972336 -1.009307,0 0,1.981557 1.009307,0 0,2.972336 8.074458,0 0,-7.926229 z m -30.2792156,1.981557 4.0372288,0 0,3.963115 -4.0372288,0 z m 32.2978306,0 4.037228,0 0,3.963115 -4.037228,0 z m -19.176837,0.990779 0,1.981557 4.037229,0 0,-1.981557 z m 8.074457,0 0,1.981557 4.037229,0 0,-1.981557 z" /></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

51
src/Squidex/app/theme/icomoon/icons/control-RichText.svg

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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"
id="Layer_1"
x="0px"
y="0px"
width="40px"
height="40px"
viewBox="0 0 40 40"
enable-background="new 0 0 40 40"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="control-RichText.svg"><metadata
id="metadata37"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs35" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview33"
showgrid="false"
inkscape:zoom="5.9"
inkscape:cx="-10.223134"
inkscape:cy="9.6004962"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><g
transform="scale(0.99077863,1.0093072)"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.80102253px;line-height:125%;font-family:'Segoe UI';-inkscape-font-specification:'Segoe UI Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4133"><path
id="path4140"
style=""
d="m 31.288522,23.585804 -2.438048,0 0,-1.087863 -0.03086,0 q -0.833257,1.280747 -2.445764,1.280747 -1.481345,0 -2.384041,-1.041572 -0.902695,-1.049286 -0.902695,-2.924115 0,-1.959697 0.99528,-3.140144 0.995279,-1.180448 2.607786,-1.180448 1.527637,0 2.129434,1.095579 l 0.03086,0 0,-4.698644 2.438048,0 0,11.69646 z m -2.391756,-3.842241 0,-0.594081 q 0,-0.771535 -0.44749,-1.280747 -0.44749,-0.509213 -1.165017,-0.509213 -0.810111,0 -1.265316,0.640374 -0.455206,0.632658 -0.455206,1.743667 0,1.041571 0.439775,1.604792 0.439775,0.56322 1.219024,0.56322 0.740673,0 1.203594,-0.594082 0.470636,-0.594081 0.470636,-1.57393 z m -7.267854,3.842241 -2.430333,0 0,-4.50576 q 0,-1.720522 -1.265316,-1.720522 -0.601797,0 -0.979849,0.516928 -0.378051,0.516928 -0.378051,1.288462 l 0,4.420892 -2.438049,0 0,-4.552052 q 0,-1.67423 -1.24217,-1.67423 -0.624943,0 -1.002995,0.493782 -0.370336,0.493782 -0.370336,1.34247 l 0,4.39003 -2.4380485,0 0,-7.900511 2.4380485,0 0,1.234455 0.03086,0 q 0.378052,-0.632659 1.057002,-1.026141 0.686666,-0.401198 1.496777,-0.401198 1.674229,0 2.291457,1.473631 0.902695,-1.473631 2.654078,-1.473631 2.576924,0 2.576924,3.178721 l 0,4.914674 z M 0,0 l 0,7.926229 3.0279216,0 0,2.972336 2.0186144,0 0,-2.972336 3.0279216,0 0,-7.926229 z m 32.29783,0 0,7.926229 8.074458,0 0,-7.926229 z m -30.2792156,1.9815573 4.0372288,0 0,3.9631145 -4.0372288,0 z m 32.2978306,0 4.037228,0 0,3.9631145 -4.037228,0 z m -23.214066,0.9907786 0,1.9815572 4.037229,0 0,-1.9815572 z m 8.074458,0 0,1.9815572 4.037228,0 0,-1.9815572 z m 8.074457,0 0,1.9815572 4.037229,0 0,-1.9815572 z m 8.074458,7.9262291 0,3.963114 2.018614,0 0,-3.963114 z m -32.2978304,3.963114 0,3.963115 2.0186144,0 0,-3.963115 z m 32.2978304,3.963115 0,3.963114 2.018614,0 0,-3.963114 z m -32.2978304,3.963114 0,3.963115 2.0186144,0 0,-3.963115 z m 32.2978304,3.963115 0,3.963114 2.018614,0 0,-3.963114 z m -32.2978304,3.963114 0,0.990779 -3.0279216,0 0,7.926229 8.0744576,0 0,-2.972336 3.0279214,0 0,-1.981557 -3.0279214,0 0,-2.972336 -3.0279216,0 0,-0.990779 z m 29.2699084,0.990779 0,2.972336 -1.009307,0 0,1.981557 1.009307,0 0,2.972336 8.074458,0 0,-7.926229 z m -30.2792156,1.981557 4.0372288,0 0,3.963115 -4.0372288,0 z m 32.2978306,0 4.037228,0 0,3.963115 -4.037228,0 z m -19.176837,0.990779 0,1.981557 4.037229,0 0,-1.981557 z m 8.074457,0 0,1.981557 4.037229,0 0,-1.981557 z" /></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

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

File diff suppressed because it is too large

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

@ -1,10 +1,10 @@
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?y0t7c1');
src: url('fonts/icomoon.eot?y0t7c1#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?y0t7c1') format('truetype'),
url('fonts/icomoon.woff?y0t7c1') format('woff'),
url('fonts/icomoon.svg?y0t7c1#icomoon') format('svg');
src: url('fonts/icomoon.eot?y1amtc');
src: url('fonts/icomoon.eot?y1amtc#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?y1amtc') format('truetype'),
url('fonts/icomoon.woff?y1amtc') format('woff'),
url('fonts/icomoon.svg?y1amtc#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
@ -24,29 +24,11 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-browser:before {
content: "\e935";
}
.icon-unlocked:before {
content: "\e933";
}
.icon-lock:before {
content: "\e934";
.icon-control-RichText:before {
content: "\e939";
}
.icon-reset:before {
content: "\e92e";
}
.icon-pause:before {
content: "\e92f";
}
.icon-play:before {
content: "\e930";
}
.icon-settings2:before {
content: "\e92d";
}
.icon-bin2:before {
content: "\e902";
.icon-control-Markdown:before {
content: "\e938";
}
.icon-control-Date:before {
content: "\e936";
@ -81,6 +63,30 @@
.icon-angle-left:before {
content: "\e901";
}
.icon-browser:before {
content: "\e935";
}
.icon-unlocked:before {
content: "\e933";
}
.icon-lock:before {
content: "\e934";
}
.icon-reset:before {
content: "\e92e";
}
.icon-pause:before {
content: "\e92f";
}
.icon-play:before {
content: "\e930";
}
.icon-settings2:before {
content: "\e92d";
}
.icon-bin2:before {
content: "\e902";
}
.icon-activity:before {
content: "\e904";
}

29
tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs

@ -0,0 +1,29 @@
// ==========================================================================
// StringExtensionsTests.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using Xunit;
namespace Squidex.Infrastructure
{
public class StringExtensionsTests
{
[Theory]
[InlineData("my", "My")]
[InlineData("myProperty ", "MyProperty")]
[InlineData("my property", "MyProperty")]
[InlineData("my_property", "MyProperty")]
[InlineData("my-property", "MyProperty")]
[InlineData("my property", "MyProperty")]
[InlineData("my__property", "MyProperty")]
[InlineData("my--property", "MyProperty")]
public void Should_convert_to_pascal_case(string input, string output)
{
Assert.Equal(output, input.ToPascalCase());
}
}
}

32
tests/Squidex.Infrastructure.Tests/EnumExtensionsTests.cs → tests/Squidex.Infrastructure.Tests/ValidationExtensionsTests.cs

@ -1,5 +1,5 @@
// ==========================================================================
// EnumExtensionsTests.cs
// ValidationExtensionsTests.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
@ -11,8 +11,36 @@ using Xunit;
namespace Squidex.Infrastructure
{
public sealed class EnumExtensionsTests
public sealed class ValidationExtensionsTests
{
[Fact]
public void Should_return_true_if_is_between()
{
Assert.True(1.IsBetween(0, 2));
}
[Fact]
public void Should_return_false_if_is_not_between()
{
Assert.False(1.IsBetween(2, 3));
}
[Fact]
public void Should_return_true_if_is_valid_regex()
{
var regex = "[a-z]*";
Assert.True(regex.IsValidRegex());
}
[Fact]
public void Should_return_true_if_is_not_a_valid_regex()
{
var regex = "([a-z]*";
Assert.False(regex.IsValidRegex());
}
[Fact]
public void Should_return_true_if_enum_is_valid()
{
Loading…
Cancel
Save