diff --git a/.gitignore b/.gitignore index 0825d81b78..23ba01ebf0 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,4 @@ build/temp/ # eof +/src/Umbraco.Web.UI.Client/TESTS-*.xml diff --git a/build/NuSpecs/UmbracoCms.Web.nuspec b/build/NuSpecs/UmbracoCms.Web.nuspec index cf4958bc98..9897206e07 100644 --- a/build/NuSpecs/UmbracoCms.Web.nuspec +++ b/build/NuSpecs/UmbracoCms.Web.nuspec @@ -29,7 +29,7 @@ - + diff --git a/build/NuSpecs/UmbracoCms.nuspec b/build/NuSpecs/UmbracoCms.nuspec index ee0764bdd3..66e1a7a248 100644 --- a/build/NuSpecs/UmbracoCms.nuspec +++ b/build/NuSpecs/UmbracoCms.nuspec @@ -25,15 +25,15 @@ not want this to happen as the alpha of the next major is, really, the next major already. --> - - - + + + - + diff --git a/src/Umbraco.Core/Components/AuditEventsComponent.cs b/src/Umbraco.Core/Compose/AuditEventsComponent.cs similarity index 99% rename from src/Umbraco.Core/Components/AuditEventsComponent.cs rename to src/Umbraco.Core/Compose/AuditEventsComponent.cs index 08d4702afa..15fdfeacff 100644 --- a/src/Umbraco.Core/Components/AuditEventsComponent.cs +++ b/src/Umbraco.Core/Compose/AuditEventsComponent.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Text; using System.Threading; using System.Web; +using Umbraco.Core.Composing; using Umbraco.Core.Events; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; @@ -10,7 +11,7 @@ using Umbraco.Core.Security; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Compose { public sealed class AuditEventsComponent : IComponent { diff --git a/src/Umbraco.Core/Components/AuditEventsComposer.cs b/src/Umbraco.Core/Compose/AuditEventsComposer.cs similarity index 63% rename from src/Umbraco.Core/Components/AuditEventsComposer.cs rename to src/Umbraco.Core/Compose/AuditEventsComposer.cs index 692cb6c6dd..339d106087 100644 --- a/src/Umbraco.Core/Components/AuditEventsComposer.cs +++ b/src/Umbraco.Core/Compose/AuditEventsComposer.cs @@ -1,4 +1,6 @@ -namespace Umbraco.Core.Components +using Umbraco.Core.Composing; + +namespace Umbraco.Core.Compose { public sealed class AuditEventsComposer : ComponentComposer, ICoreComposer { } diff --git a/src/Umbraco.Core/Components/CompositionExtensions.cs b/src/Umbraco.Core/Compose/CompositionExtensions.cs similarity index 99% rename from src/Umbraco.Core/Components/CompositionExtensions.cs rename to src/Umbraco.Core/Compose/CompositionExtensions.cs index 96d7e7d5c7..4767797dc1 100644 --- a/src/Umbraco.Core/Components/CompositionExtensions.cs +++ b/src/Umbraco.Core/Compose/CompositionExtensions.cs @@ -1,18 +1,17 @@ using System; using Umbraco.Core.Cache; -using Umbraco.Core.Dictionary; using Umbraco.Core.Composing; +using Umbraco.Core.Dictionary; using Umbraco.Core.IO; -using Umbraco.Core.Migrations; +using Umbraco.Core.Logging.Viewer; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.PackageActions; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Strings; using Umbraco.Core.Sync; -using Umbraco.Core.Logging.Viewer; -using Umbraco.Core.PackageActions; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Compose { /// /// Provides extension methods to the class. diff --git a/src/Umbraco.Core/Components/ManifestWatcherComponent.cs b/src/Umbraco.Core/Compose/ManifestWatcherComponent.cs similarity index 95% rename from src/Umbraco.Core/Components/ManifestWatcherComponent.cs rename to src/Umbraco.Core/Compose/ManifestWatcherComponent.cs index 2420e1d5bb..4821a1dd94 100644 --- a/src/Umbraco.Core/Components/ManifestWatcherComponent.cs +++ b/src/Umbraco.Core/Compose/ManifestWatcherComponent.cs @@ -1,9 +1,10 @@ using System.IO; +using Umbraco.Core.Composing; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Manifest; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Compose { public sealed class ManifestWatcherComponent : IComponent { diff --git a/src/Umbraco.Core/Components/ManifestWatcherComposer.cs b/src/Umbraco.Core/Compose/ManifestWatcherComposer.cs similarity index 71% rename from src/Umbraco.Core/Components/ManifestWatcherComposer.cs rename to src/Umbraco.Core/Compose/ManifestWatcherComposer.cs index b08680156b..fb37e3dc25 100644 --- a/src/Umbraco.Core/Components/ManifestWatcherComposer.cs +++ b/src/Umbraco.Core/Compose/ManifestWatcherComposer.cs @@ -1,4 +1,6 @@ -namespace Umbraco.Core.Components +using Umbraco.Core.Composing; + +namespace Umbraco.Core.Compose { [RuntimeLevel(MinLevel = RuntimeLevel.Run)] public class ManifestWatcherComposer : ComponentComposer, ICoreComposer diff --git a/src/Umbraco.Core/Components/RelateOnCopyComponent.cs b/src/Umbraco.Core/Compose/RelateOnCopyComponent.cs similarity index 98% rename from src/Umbraco.Core/Components/RelateOnCopyComponent.cs rename to src/Umbraco.Core/Compose/RelateOnCopyComponent.cs index d38406f970..63a7e170da 100644 --- a/src/Umbraco.Core/Components/RelateOnCopyComponent.cs +++ b/src/Umbraco.Core/Compose/RelateOnCopyComponent.cs @@ -3,7 +3,7 @@ using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Compose { // TODO: This should just exist in the content service/repo! public sealed class RelateOnCopyComponent : IComponent diff --git a/src/Umbraco.Core/Components/RelateOnCopyComposer.cs b/src/Umbraco.Core/Compose/RelateOnCopyComposer.cs similarity index 71% rename from src/Umbraco.Core/Components/RelateOnCopyComposer.cs rename to src/Umbraco.Core/Compose/RelateOnCopyComposer.cs index f5e9423edd..3c65b291c6 100644 --- a/src/Umbraco.Core/Components/RelateOnCopyComposer.cs +++ b/src/Umbraco.Core/Compose/RelateOnCopyComposer.cs @@ -1,4 +1,6 @@ -namespace Umbraco.Core.Components +using Umbraco.Core.Composing; + +namespace Umbraco.Core.Compose { [RuntimeLevel(MinLevel = RuntimeLevel.Run)] public sealed class RelateOnCopyComposer : ComponentComposer, ICoreComposer diff --git a/src/Umbraco.Core/Components/RelateOnTrashComponent.cs b/src/Umbraco.Core/Compose/RelateOnTrashComponent.cs similarity index 99% rename from src/Umbraco.Core/Components/RelateOnTrashComponent.cs rename to src/Umbraco.Core/Compose/RelateOnTrashComponent.cs index 6279bb98ba..501907a6e7 100644 --- a/src/Umbraco.Core/Components/RelateOnTrashComponent.cs +++ b/src/Umbraco.Core/Compose/RelateOnTrashComponent.cs @@ -5,7 +5,7 @@ using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Compose { public sealed class RelateOnTrashComponent : IComponent { diff --git a/src/Umbraco.Core/Components/RelateOnTrashComposer.cs b/src/Umbraco.Core/Compose/RelateOnTrashComposer.cs similarity index 71% rename from src/Umbraco.Core/Components/RelateOnTrashComposer.cs rename to src/Umbraco.Core/Compose/RelateOnTrashComposer.cs index 5d89bc0e37..d0e90fba33 100644 --- a/src/Umbraco.Core/Components/RelateOnTrashComposer.cs +++ b/src/Umbraco.Core/Compose/RelateOnTrashComposer.cs @@ -1,4 +1,6 @@ -namespace Umbraco.Core.Components +using Umbraco.Core.Composing; + +namespace Umbraco.Core.Compose { [RuntimeLevel(MinLevel = RuntimeLevel.Run)] public sealed class RelateOnTrashComposer : ComponentComposer, ICoreComposer diff --git a/src/Umbraco.Core/Components/ComponentCollection.cs b/src/Umbraco.Core/Composing/ComponentCollection.cs similarity index 96% rename from src/Umbraco.Core/Components/ComponentCollection.cs rename to src/Umbraco.Core/Composing/ComponentCollection.cs index 55bc7b5388..9b5319dc41 100644 --- a/src/Umbraco.Core/Components/ComponentCollection.cs +++ b/src/Umbraco.Core/Composing/ComponentCollection.cs @@ -1,9 +1,8 @@ using System.Collections.Generic; using System.Linq; -using Umbraco.Core.Composing; using Umbraco.Core.Logging; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents the collection of implementations. diff --git a/src/Umbraco.Core/Components/ComponentCollectionBuilder.cs b/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs similarity index 95% rename from src/Umbraco.Core/Components/ComponentCollectionBuilder.cs rename to src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs index 584de7a8f2..59a272125e 100644 --- a/src/Umbraco.Core/Components/ComponentCollectionBuilder.cs +++ b/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs @@ -1,9 +1,8 @@ using System; using System.Collections.Generic; -using Umbraco.Core.Composing; using Umbraco.Core.Logging; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Builds a . diff --git a/src/Umbraco.Core/Components/ComponentComposer.cs b/src/Umbraco.Core/Composing/ComponentComposer.cs similarity index 91% rename from src/Umbraco.Core/Components/ComponentComposer.cs rename to src/Umbraco.Core/Composing/ComponentComposer.cs index 792790c42f..b93ec49a89 100644 --- a/src/Umbraco.Core/Components/ComponentComposer.cs +++ b/src/Umbraco.Core/Composing/ComponentComposer.cs @@ -1,4 +1,6 @@ -namespace Umbraco.Core.Components +using Umbraco.Core.Compose; + +namespace Umbraco.Core.Composing { /// /// Provides a base class for composers which compose a component. diff --git a/src/Umbraco.Core/Components/ComposeAfterAttribute.cs b/src/Umbraco.Core/Composing/ComposeAfterAttribute.cs similarity index 98% rename from src/Umbraco.Core/Components/ComposeAfterAttribute.cs rename to src/Umbraco.Core/Composing/ComposeAfterAttribute.cs index a8fdfaa92b..95c39c7094 100644 --- a/src/Umbraco.Core/Components/ComposeAfterAttribute.cs +++ b/src/Umbraco.Core/Composing/ComposeAfterAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Indicates that a composer requires another composer. diff --git a/src/Umbraco.Core/Components/ComposeBeforeAttribute.cs b/src/Umbraco.Core/Composing/ComposeBeforeAttribute.cs similarity index 98% rename from src/Umbraco.Core/Components/ComposeBeforeAttribute.cs rename to src/Umbraco.Core/Composing/ComposeBeforeAttribute.cs index 17065d1676..f88445b0e7 100644 --- a/src/Umbraco.Core/Components/ComposeBeforeAttribute.cs +++ b/src/Umbraco.Core/Composing/ComposeBeforeAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Indicates that a component is required by another composer. diff --git a/src/Umbraco.Core/Components/Composers.cs b/src/Umbraco.Core/Composing/Composers.cs similarity index 99% rename from src/Umbraco.Core/Components/Composers.cs rename to src/Umbraco.Core/Composing/Composers.cs index 4bbbdf26b0..14cb0dce8e 100644 --- a/src/Umbraco.Core/Components/Composers.cs +++ b/src/Umbraco.Core/Composing/Composers.cs @@ -6,7 +6,7 @@ using System.Text; using Umbraco.Core.Collections; using Umbraco.Core.Logging; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { // note: this class is NOT thread-safe in any ways diff --git a/src/Umbraco.Core/Components/Composition.cs b/src/Umbraco.Core/Composing/Composition.cs similarity index 99% rename from src/Umbraco.Core/Components/Composition.cs rename to src/Umbraco.Core/Composing/Composition.cs index 6df86d793f..d7686ccd07 100644 --- a/src/Umbraco.Core/Components/Composition.cs +++ b/src/Umbraco.Core/Composing/Composition.cs @@ -1,10 +1,9 @@ using System; using System.Collections.Generic; -using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents a composition. diff --git a/src/Umbraco.Core/Composing/Composers/ConfigurationComposer.cs b/src/Umbraco.Core/Composing/CompositionExtensions/Configuration.cs similarity index 75% rename from src/Umbraco.Core/Composing/Composers/ConfigurationComposer.cs rename to src/Umbraco.Core/Composing/CompositionExtensions/Configuration.cs index 7fba47a2cd..78475953b7 100644 --- a/src/Umbraco.Core/Composing/Composers/ConfigurationComposer.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/Configuration.cs @@ -1,13 +1,11 @@ -using Umbraco.Core.Components; -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.UmbracoSettings; +using Umbraco.Core.Configuration.UmbracoSettings; -namespace Umbraco.Core.Composing.Composers +namespace Umbraco.Core.Composing.CompositionExtensions { /// /// Compose configurations. /// - public static class ConfigurationComposer + public static class Configuration { public static Composition ComposeConfiguration(this Composition composition) { diff --git a/src/Umbraco.Core/Composing/Composers/CoreMappingProfilesComposer.cs b/src/Umbraco.Core/Composing/CompositionExtensions/CoreMappingProfiles.cs similarity index 69% rename from src/Umbraco.Core/Composing/Composers/CoreMappingProfilesComposer.cs rename to src/Umbraco.Core/Composing/CompositionExtensions/CoreMappingProfiles.cs index 0274b8f1a9..ed875ec973 100644 --- a/src/Umbraco.Core/Composing/Composers/CoreMappingProfilesComposer.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/CoreMappingProfiles.cs @@ -1,11 +1,10 @@ using AutoMapper; -using Umbraco.Core.Components; using Umbraco.Core.Models.Identity; -namespace Umbraco.Core.Composing.Composers +namespace Umbraco.Core.Composing.CompositionExtensions { - public static class CoreMappingProfilesComposer + public static class CoreMappingProfiles { public static Composition ComposeCoreMappingProfiles(this Composition composition) { diff --git a/src/Umbraco.Core/Composing/Composers/FileSystemsComposer.cs b/src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs similarity index 95% rename from src/Umbraco.Core/Composing/Composers/FileSystemsComposer.cs rename to src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs index 4c598f27e4..76b363f80e 100644 --- a/src/Umbraco.Core/Composing/Composers/FileSystemsComposer.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs @@ -1,10 +1,10 @@ -using Umbraco.Core.Components; +using Umbraco.Core.Compose; using Umbraco.Core.IO; using Umbraco.Core.IO.MediaPathSchemes; -namespace Umbraco.Core.Composing.Composers +namespace Umbraco.Core.Composing.CompositionExtensions { - public static class FileSystemsComposer + public static class FileSystems { /* * HOW TO REPLACE THE MEDIA UNDERLYING FILESYSTEM @@ -73,10 +73,10 @@ namespace Umbraco.Core.Composing.Composers // it needs to be registered (not only the interface) because it provides additional // functionality eg for scoping, and is injected in the scope provider - whereas the // interface is really for end-users to get access to filesystems. - composition.RegisterUnique(factory => factory.CreateInstance(factory)); + composition.RegisterUnique(factory => factory.CreateInstance(factory)); // register IFileSystems, which gives access too all filesystems - composition.RegisterUnique(factory => factory.GetInstance()); + composition.RegisterUnique(factory => factory.GetInstance()); // register the scheme for media paths composition.RegisterUnique(); diff --git a/src/Umbraco.Core/Composing/Composers/RepositoriesComposer.cs b/src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs similarity index 95% rename from src/Umbraco.Core/Composing/Composers/RepositoriesComposer.cs rename to src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs index 62b92081c1..03f13f96cb 100644 --- a/src/Umbraco.Core/Composing/Composers/RepositoriesComposer.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs @@ -1,13 +1,12 @@ -using Umbraco.Core.Components; -using Umbraco.Core.Persistence.Repositories; +using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; -namespace Umbraco.Core.Composing.Composers +namespace Umbraco.Core.Composing.CompositionExtensions { /// /// Composes repositories. /// - public static class RepositoriesComposer + public static class Repositories { public static Composition ComposeRepositories(this Composition composition) { diff --git a/src/Umbraco.Core/Composing/Composers/ServicesComposer.cs b/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs similarity index 98% rename from src/Umbraco.Core/Composing/Composers/ServicesComposer.cs rename to src/Umbraco.Core/Composing/CompositionExtensions/Services.cs index 1e10585b8e..ead2524d80 100644 --- a/src/Umbraco.Core/Composing/Composers/ServicesComposer.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs @@ -2,7 +2,6 @@ using System.IO; using System.Linq; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Events; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -10,9 +9,9 @@ using Umbraco.Core.Packaging; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; -namespace Umbraco.Core.Composing.Composers +namespace Umbraco.Core.Composing.CompositionExtensions { - public static class ServicesComposer + public static class Services { public static Composition ComposeServices(this Composition composition) { diff --git a/src/Umbraco.Core/Components/DisableAttribute.cs b/src/Umbraco.Core/Composing/DisableAttribute.cs similarity index 97% rename from src/Umbraco.Core/Components/DisableAttribute.cs rename to src/Umbraco.Core/Composing/DisableAttribute.cs index 608967d6ae..c2a419f8bc 100644 --- a/src/Umbraco.Core/Components/DisableAttribute.cs +++ b/src/Umbraco.Core/Composing/DisableAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Indicates that a composer should be disabled. diff --git a/src/Umbraco.Core/Components/DisableComposerAttribute.cs b/src/Umbraco.Core/Composing/DisableComposerAttribute.cs similarity index 96% rename from src/Umbraco.Core/Components/DisableComposerAttribute.cs rename to src/Umbraco.Core/Composing/DisableComposerAttribute.cs index 9d90a099df..7adc5673ec 100644 --- a/src/Umbraco.Core/Components/DisableComposerAttribute.cs +++ b/src/Umbraco.Core/Composing/DisableComposerAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Indicates that a composer should be disabled. diff --git a/src/Umbraco.Core/Components/EnableAttribute.cs b/src/Umbraco.Core/Composing/EnableAttribute.cs similarity index 97% rename from src/Umbraco.Core/Components/EnableAttribute.cs rename to src/Umbraco.Core/Composing/EnableAttribute.cs index 2176a4ec23..276a04cbec 100644 --- a/src/Umbraco.Core/Components/EnableAttribute.cs +++ b/src/Umbraco.Core/Composing/EnableAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Indicates that a composer should be enabled. diff --git a/src/Umbraco.Core/Components/EnableComposerAttribute.cs b/src/Umbraco.Core/Composing/EnableComposerAttribute.cs similarity index 97% rename from src/Umbraco.Core/Components/EnableComposerAttribute.cs rename to src/Umbraco.Core/Composing/EnableComposerAttribute.cs index fe57700145..a1bc0a8123 100644 --- a/src/Umbraco.Core/Components/EnableComposerAttribute.cs +++ b/src/Umbraco.Core/Composing/EnableComposerAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Indicates that a composer should be enabled. diff --git a/src/Umbraco.Core/Components/IComponent.cs b/src/Umbraco.Core/Composing/IComponent.cs similarity index 95% rename from src/Umbraco.Core/Components/IComponent.cs rename to src/Umbraco.Core/Composing/IComponent.cs index b1954d821b..dcd0365b12 100644 --- a/src/Umbraco.Core/Components/IComponent.cs +++ b/src/Umbraco.Core/Composing/IComponent.cs @@ -1,4 +1,4 @@ -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents a component. diff --git a/src/Umbraco.Core/Components/IComposer.cs b/src/Umbraco.Core/Composing/IComposer.cs similarity index 81% rename from src/Umbraco.Core/Components/IComposer.cs rename to src/Umbraco.Core/Composing/IComposer.cs index ce02aa4f13..a7a159d697 100644 --- a/src/Umbraco.Core/Components/IComposer.cs +++ b/src/Umbraco.Core/Composing/IComposer.cs @@ -1,6 +1,4 @@ -using Umbraco.Core.Composing; - -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents a composer. diff --git a/src/Umbraco.Core/Components/ICoreComposer.cs b/src/Umbraco.Core/Composing/ICoreComposer.cs similarity index 91% rename from src/Umbraco.Core/Components/ICoreComposer.cs rename to src/Umbraco.Core/Composing/ICoreComposer.cs index 94aa9953a9..ff09f41f6b 100644 --- a/src/Umbraco.Core/Components/ICoreComposer.cs +++ b/src/Umbraco.Core/Composing/ICoreComposer.cs @@ -1,4 +1,4 @@ -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents a core . diff --git a/src/Umbraco.Core/Components/IRuntimeComposer.cs b/src/Umbraco.Core/Composing/IRuntimeComposer.cs similarity index 88% rename from src/Umbraco.Core/Components/IRuntimeComposer.cs rename to src/Umbraco.Core/Composing/IRuntimeComposer.cs index 4b8253ee6c..2a352dc783 100644 --- a/src/Umbraco.Core/Components/IRuntimeComposer.cs +++ b/src/Umbraco.Core/Composing/IRuntimeComposer.cs @@ -1,4 +1,4 @@ -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents a runtime . diff --git a/src/Umbraco.Core/Components/IUserComposer.cs b/src/Umbraco.Core/Composing/IUserComposer.cs similarity index 89% rename from src/Umbraco.Core/Components/IUserComposer.cs rename to src/Umbraco.Core/Composing/IUserComposer.cs index 59e0023635..136e69a469 100644 --- a/src/Umbraco.Core/Components/IUserComposer.cs +++ b/src/Umbraco.Core/Composing/IUserComposer.cs @@ -1,4 +1,4 @@ -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Represents a user . diff --git a/src/Umbraco.Core/Components/RuntimeLevelAttribute.cs b/src/Umbraco.Core/Composing/RuntimeLevelAttribute.cs similarity index 92% rename from src/Umbraco.Core/Components/RuntimeLevelAttribute.cs rename to src/Umbraco.Core/Composing/RuntimeLevelAttribute.cs index 2c698a671a..5de90ee8e8 100644 --- a/src/Umbraco.Core/Components/RuntimeLevelAttribute.cs +++ b/src/Umbraco.Core/Composing/RuntimeLevelAttribute.cs @@ -1,7 +1,6 @@ using System; -using Umbraco.Core.Composing; -namespace Umbraco.Core.Components +namespace Umbraco.Core.Composing { /// /// Marks a composer to indicate a minimum and/or maximum runtime level for which the composer would compose. diff --git a/src/Umbraco.Core/Composing/CompositionExtensions.cs b/src/Umbraco.Core/CompositionExtensions.cs similarity index 97% rename from src/Umbraco.Core/Composing/CompositionExtensions.cs rename to src/Umbraco.Core/CompositionExtensions.cs index c312259b82..46e8111237 100644 --- a/src/Umbraco.Core/Composing/CompositionExtensions.cs +++ b/src/Umbraco.Core/CompositionExtensions.cs @@ -1,9 +1,9 @@ using Umbraco.Core.Cache; -using Umbraco.Core.Components; +using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; -namespace Umbraco.Core.Composing +namespace Umbraco.Core { /// /// Provides extension methods to the class. diff --git a/src/Umbraco.Core/Composing/FactoryExtensions.cs b/src/Umbraco.Core/FactoryExtensions.cs similarity index 98% rename from src/Umbraco.Core/Composing/FactoryExtensions.cs rename to src/Umbraco.Core/FactoryExtensions.cs index 8027f2c7a1..8514525417 100644 --- a/src/Umbraco.Core/Composing/FactoryExtensions.cs +++ b/src/Umbraco.Core/FactoryExtensions.cs @@ -1,8 +1,9 @@ using System; using System.Linq; using System.Reflection; +using Umbraco.Core.Composing; -namespace Umbraco.Core.Composing +namespace Umbraco.Core { /// /// Provides extension methods to the class. diff --git a/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs b/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs index 5ddcb01078..651e3de06e 100644 --- a/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs +++ b/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Components; +using Umbraco.Core.Compose; +using Umbraco.Core.Composing; namespace Umbraco.Core.Logging.Viewer { diff --git a/src/Umbraco.Core/Models/Packaging/CompiledPackage.cs b/src/Umbraco.Core/Models/Packaging/CompiledPackage.cs index f4ed11e09e..be514eaf44 100644 --- a/src/Umbraco.Core/Models/Packaging/CompiledPackage.cs +++ b/src/Umbraco.Core/Models/Packaging/CompiledPackage.cs @@ -22,6 +22,7 @@ namespace Umbraco.Core.Models.Packaging public RequirementsType UmbracoVersionRequirementsType { get; set; } public string Author { get; set; } public string AuthorUrl { get; set; } + public IList Contributors { get; set; } public string Readme { get; set; } public string PackageView { get; set; } public string IconUrl { get; set; } diff --git a/src/Umbraco.Core/Models/Packaging/IPackageInfo.cs b/src/Umbraco.Core/Models/Packaging/IPackageInfo.cs index eea56549f1..e4e9addf76 100644 --- a/src/Umbraco.Core/Models/Packaging/IPackageInfo.cs +++ b/src/Umbraco.Core/Models/Packaging/IPackageInfo.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace Umbraco.Core.Models.Packaging { @@ -12,6 +13,7 @@ namespace Umbraco.Core.Models.Packaging Version UmbracoVersion { get; } string Author { get; } string AuthorUrl { get; } + IList Contributors { get; } string Readme { get; } /// diff --git a/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs b/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs index 8c0ef79d0b..070d0773d2 100644 --- a/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs +++ b/src/Umbraco.Core/Models/Packaging/PackageDefinition.cs @@ -25,6 +25,7 @@ namespace Umbraco.Core.Models.Packaging Actions = compiled.Actions, Author = compiled.Author, AuthorUrl = compiled.AuthorUrl, + Contributors = compiled.Contributors, PackageView = compiled.PackageView, IconUrl = compiled.IconUrl, License = compiled.License, @@ -79,6 +80,9 @@ namespace Umbraco.Core.Models.Packaging [Url] public string AuthorUrl { get; set; } = string.Empty; + [DataMember(Name = "contributors")] + public IList Contributors { get; set; } = new List(); + [DataMember(Name = "license")] public string License { get; set; } = "MIT License"; diff --git a/src/Umbraco.Core/Packaging/CompiledPackageXmlParser.cs b/src/Umbraco.Core/Packaging/CompiledPackageXmlParser.cs index 8dccf73814..83034a7e1b 100644 --- a/src/Umbraco.Core/Packaging/CompiledPackageXmlParser.cs +++ b/src/Umbraco.Core/Packaging/CompiledPackageXmlParser.cs @@ -43,6 +43,7 @@ namespace Umbraco.Core.Packaging Name = package.Element("name")?.Value, Author = author.Element("name")?.Value, AuthorUrl = author.Element("website")?.Value, + Contributors = info.Element("contributors")?.Elements("contributor").Select(x => x.Value).ToList() ?? new List(), Version = package.Element("version")?.Value, Readme = info.Element("readme")?.Value, License = package.Element("license")?.Value, diff --git a/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs b/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs index b66cdb095c..50cb692530 100644 --- a/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs +++ b/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs @@ -39,6 +39,7 @@ namespace Umbraco.Core.Packaging LicenseUrl = xml.Element("license")?.AttributeValue("url") ?? string.Empty, Author = xml.Element("author")?.Value ?? string.Empty, AuthorUrl = xml.Element("author")?.AttributeValue("url") ?? string.Empty, + Contributors = xml.Element("contributors")?.Elements("contributor").Select(x => x.Value).ToList() ?? new List(), Readme = xml.Element("readme")?.Value ?? string.Empty, Actions = xml.Element("actions")?.ToString(SaveOptions.None) ?? "", //take the entire outer xml value ContentNodeId = xml.Element("content")?.AttributeValue("nodeId") ?? string.Empty, @@ -87,6 +88,8 @@ namespace Umbraco.Core.Packaging new XCData(def.Author ?? string.Empty), new XAttribute("url", def.AuthorUrl ?? string.Empty)), + new XElement("contributors", (def.Contributors ?? Array.Empty()).Where(x => !x.IsNullOrWhiteSpace()).Select(x => new XElement("contributor", x))), + new XElement("readme", new XCData(def.Readme ?? string.Empty)), actionsXml, new XElement("datatypes", string.Join(",", def.DataTypes ?? Array.Empty())), diff --git a/src/Umbraco.Core/Packaging/PackagesRepository.cs b/src/Umbraco.Core/Packaging/PackagesRepository.cs index 05f67b3ed6..72954b238d 100644 --- a/src/Umbraco.Core/Packaging/PackagesRepository.cs +++ b/src/Umbraco.Core/Packaging/PackagesRepository.cs @@ -573,12 +573,25 @@ namespace Umbraco.Core.Packaging package.Add(requirements); info.Add(package); - //Author + // Author var author = new XElement("author", ""); author.Add(new XElement("name", definition.Author)); author.Add(new XElement("website", definition.AuthorUrl)); info.Add(author); + // Contributors + var contributors = new XElement("contributors", ""); + + if (definition.Contributors != null && definition.Contributors.Any()) + { + foreach (var contributor in definition.Contributors) + { + contributors.Add(new XElement("contributor", contributor)); + } + } + + info.Add(contributors); + info.Add(new XElement("readme", new XCData(definition.Readme))); return info; @@ -608,10 +621,5 @@ namespace Umbraco.Core.Packaging var packagesXml = XDocument.Load(packagesFile); return packagesXml; } - - - - - } } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs index b3f2ff4af0..5a62c25df7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs @@ -250,6 +250,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement lock (_codeIdMap) { if (_codeIdMap.TryGetValue(isoCode, out var id)) return id; + if (isoCode.Contains('-') && _codeIdMap.TryGetValue(isoCode.Split('-').First(), out var invariantId)) return invariantId; } if (throwOnNotFound) throw new ArgumentException($"Code {isoCode} does not correspond to an existing language.", nameof(isoCode)); diff --git a/src/Umbraco.Core/Composing/RegisterExtensions.cs b/src/Umbraco.Core/RegisterExtensions.cs similarity index 96% rename from src/Umbraco.Core/Composing/RegisterExtensions.cs rename to src/Umbraco.Core/RegisterExtensions.cs index d1eacc0c0f..69e092878e 100644 --- a/src/Umbraco.Core/Composing/RegisterExtensions.cs +++ b/src/Umbraco.Core/RegisterExtensions.cs @@ -1,4 +1,6 @@ -namespace Umbraco.Core.Composing +using Umbraco.Core.Composing; + +namespace Umbraco.Core { /// /// Provides extension methods to the class. diff --git a/src/Umbraco.Core/Runtime/CoreRuntime.cs b/src/Umbraco.Core/Runtime/CoreRuntime.cs index da71cb1061..813c2e6a18 100644 --- a/src/Umbraco.Core/Runtime/CoreRuntime.cs +++ b/src/Umbraco.Core/Runtime/CoreRuntime.cs @@ -6,7 +6,6 @@ using System.Reflection; using System.Threading; using System.Web; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Exceptions; diff --git a/src/Umbraco.Core/Runtime/CoreRuntimeComponent.cs b/src/Umbraco.Core/Runtime/CoreRuntimeComponent.cs index b9efdd6432..e9842a1ba1 100644 --- a/src/Umbraco.Core/Runtime/CoreRuntimeComponent.cs +++ b/src/Umbraco.Core/Runtime/CoreRuntimeComponent.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using AutoMapper; -using Umbraco.Core.Components; +using Umbraco.Core.Composing; using Umbraco.Core.IO; namespace Umbraco.Core.Runtime diff --git a/src/Umbraco.Core/Runtime/CoreRuntimeComposer.cs b/src/Umbraco.Core/Runtime/CoreRuntimeComposer.cs index b4faddb5d0..690ac4d56c 100644 --- a/src/Umbraco.Core/Runtime/CoreRuntimeComposer.cs +++ b/src/Umbraco.Core/Runtime/CoreRuntimeComposer.cs @@ -1,9 +1,8 @@ using System; using System.Configuration; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; +using Umbraco.Core.Composing.CompositionExtensions; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; diff --git a/src/Umbraco.Core/RuntimeOptions.cs b/src/Umbraco.Core/RuntimeOptions.cs index 1f89ee6314..c0bae23446 100644 --- a/src/Umbraco.Core/RuntimeOptions.cs +++ b/src/Umbraco.Core/RuntimeOptions.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Configuration; using System.Runtime.CompilerServices; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; diff --git a/src/Umbraco.Core/Composing/TypeLoaderExtensions.cs b/src/Umbraco.Core/TypeLoaderExtensions.cs similarity index 93% rename from src/Umbraco.Core/Composing/TypeLoaderExtensions.cs rename to src/Umbraco.Core/TypeLoaderExtensions.cs index 5d17b0f53c..96028daca6 100644 --- a/src/Umbraco.Core/Composing/TypeLoaderExtensions.cs +++ b/src/Umbraco.Core/TypeLoaderExtensions.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; -using System.Linq; using Umbraco.Core.Cache; +using Umbraco.Core.Composing; using Umbraco.Core.PackageActions; using Umbraco.Core.Persistence.Mappers; -using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.PropertyEditors; -namespace Umbraco.Core.Composing +namespace Umbraco.Core { internal static class TypeLoaderExtensions { diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 79c3f5a2aa..bd3d64254d 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -112,7 +112,7 @@ - + @@ -157,37 +157,37 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + @@ -205,7 +205,7 @@ - + @@ -290,7 +290,7 @@ - + @@ -1445,9 +1445,9 @@ - - - + + + diff --git a/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs b/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs index 68b666632c..650cc64720 100644 --- a/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs +++ b/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs @@ -5,7 +5,6 @@ using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Sync; diff --git a/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs b/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs index 64bf6c3c55..6e8835b9a5 100644 --- a/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs +++ b/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Threading; using Moq; using NUnit.Framework; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Events; diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs index 87ec4215ac..2a6739df38 100644 --- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs +++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs @@ -2,6 +2,7 @@ using System.Xml; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; diff --git a/src/Umbraco.Tests/Components/ComponentTests.cs b/src/Umbraco.Tests/Components/ComponentTests.cs index 873389c03f..c026e5a157 100644 --- a/src/Umbraco.Tests/Components/ComponentTests.cs +++ b/src/Umbraco.Tests/Components/ComponentTests.cs @@ -4,7 +4,7 @@ using System.Linq; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Components; +using Umbraco.Core.Compose; using Umbraco.Core.Composing; using Umbraco.Core.IO; using Umbraco.Core.Logging; diff --git a/src/Umbraco.Tests/Composing/CollectionBuildersTests.cs b/src/Umbraco.Tests/Composing/CollectionBuildersTests.cs index 07699f77ed..ec757e09f0 100644 --- a/src/Umbraco.Tests/Composing/CollectionBuildersTests.cs +++ b/src/Umbraco.Tests/Composing/CollectionBuildersTests.cs @@ -5,7 +5,6 @@ using Moq; using NUnit.Framework; using Umbraco.Core.Composing; using Umbraco.Core; -using Umbraco.Core.Components; using Umbraco.Core.Logging; using Umbraco.Tests.Components; diff --git a/src/Umbraco.Tests/Composing/ContainerConformingTests.cs b/src/Umbraco.Tests/Composing/ContainerConformingTests.cs index 86226b82e7..f5c1ff9bc7 100644 --- a/src/Umbraco.Tests/Composing/ContainerConformingTests.cs +++ b/src/Umbraco.Tests/Composing/ContainerConformingTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; namespace Umbraco.Tests.Composing diff --git a/src/Umbraco.Tests/Composing/LazyCollectionBuilderTests.cs b/src/Umbraco.Tests/Composing/LazyCollectionBuilderTests.cs index cbabae1a83..3996eba89f 100644 --- a/src/Umbraco.Tests/Composing/LazyCollectionBuilderTests.cs +++ b/src/Umbraco.Tests/Composing/LazyCollectionBuilderTests.cs @@ -5,7 +5,6 @@ using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; diff --git a/src/Umbraco.Tests/Composing/PackageActionCollectionTests.cs b/src/Umbraco.Tests/Composing/PackageActionCollectionTests.cs index fe8ca7dadc..07db4be3d3 100644 --- a/src/Umbraco.Tests/Composing/PackageActionCollectionTests.cs +++ b/src/Umbraco.Tests/Composing/PackageActionCollectionTests.cs @@ -5,7 +5,6 @@ using System.Xml.Linq; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.PackageActions; diff --git a/src/Umbraco.Tests/IO/FileSystemsTests.cs b/src/Umbraco.Tests/IO/FileSystemsTests.cs index 1f98fd4443..8c70de883f 100644 --- a/src/Umbraco.Tests/IO/FileSystemsTests.cs +++ b/src/Umbraco.Tests/IO/FileSystemsTests.cs @@ -4,16 +4,16 @@ using System.Text; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Components; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; using Umbraco.Core.IO; using Umbraco.Core.IO.MediaPathSchemes; using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Tests.Components; using Umbraco.Tests.TestHelpers; +using Umbraco.Core.Composing.CompositionExtensions; +using FileSystems = Umbraco.Core.IO.FileSystems; namespace Umbraco.Tests.IO { diff --git a/src/Umbraco.Tests/Models/ContentExtensionsTests.cs b/src/Umbraco.Tests/Models/ContentExtensionsTests.cs index efa464a46c..42d7f0e01b 100644 --- a/src/Umbraco.Tests/Models/ContentExtensionsTests.cs +++ b/src/Umbraco.Tests/Models/ContentExtensionsTests.cs @@ -3,8 +3,7 @@ using System.Linq; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; +using Umbraco.Core.Composing.CompositionExtensions; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.Models; diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index 693f919b7a..05f726893e 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -8,8 +8,7 @@ using Moq; using Umbraco.Core; using NUnit.Framework; using Umbraco.Core.Cache; -using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; +using Umbraco.Core.Composing.CompositionExtensions; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.Models; diff --git a/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs b/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs index 1817414f69..7ebdfabbb0 100644 --- a/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs +++ b/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs @@ -4,8 +4,7 @@ using AutoMapper; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; +using Umbraco.Core.Composing.CompositionExtensions; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Services; using Umbraco.Core.Dictionary; diff --git a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs index ba71caad95..51df7d1f2f 100644 --- a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs +++ b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs @@ -5,7 +5,6 @@ using System.Xml.Linq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Packaging; @@ -16,6 +15,7 @@ using Umbraco.Core.Services; using Umbraco.Tests.Services; using Umbraco.Tests.Services.Importing; using Umbraco.Tests.Testing; +using Umbraco.Core.Composing.CompositionExtensions; namespace Umbraco.Tests.Packaging { diff --git a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs index 731ce73d3d..abf61370a8 100644 --- a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs +++ b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.IO; using Umbraco.Core.Models; diff --git a/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs index 5823537f7a..39f6e3e114 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs @@ -79,7 +79,39 @@ namespace Umbraco.Tests.Persistence.Repositories } } + [Test] + public void Can_Perform_Get_By_Invariant_Code_On_LanguageRepository() + { + var provider = TestObjects.GetScopeProvider(Logger); + using (var scope = provider.CreateScope()) + { + var repository = CreateRepository(provider); + var es = new CultureInfo("es"); + var esSpecific = new CultureInfo("es-ES"); + + var language = (ILanguage)new Language(es.Name) + { + CultureName = es.DisplayName, + FallbackLanguageId = 1 + }; + repository.Save(language); + + language = repository.GetByIsoCode(es.Name); + var languageSpecific = repository.GetByIsoCode(esSpecific.Name); + + // Assert + Assert.That(language, Is.Not.Null); + Assert.That(language.HasIdentity, Is.True); + Assert.That(language.IsoCode, Is.EqualTo(es.Name)); + + Assert.That(languageSpecific, Is.Not.Null); + Assert.That(languageSpecific.HasIdentity, Is.True); + Assert.That(languageSpecific.Id, Is.EqualTo(language.Id)); + Assert.That(language.IsoCode, Is.EqualTo(language.IsoCode)); + } + } + [Test] public void Get_When_Id_Doesnt_Exist_Returns_Null() { diff --git a/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs b/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs index c55da764e2..8d2ab84d35 100644 --- a/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs +++ b/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs @@ -6,7 +6,6 @@ using NUnit.Framework; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; diff --git a/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueEditorTests.cs b/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueEditorTests.cs index ea5fbcaa06..764f6ac4a4 100644 --- a/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueEditorTests.cs +++ b/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueEditorTests.cs @@ -3,7 +3,6 @@ using System.Threading; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Models; diff --git a/src/Umbraco.Tests/Published/ConvertersTests.cs b/src/Umbraco.Tests/Published/ConvertersTests.cs index eb0f1a9368..0fce8ebfc3 100644 --- a/src/Umbraco.Tests/Published/ConvertersTests.cs +++ b/src/Umbraco.Tests/Published/ConvertersTests.cs @@ -5,7 +5,6 @@ using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs index e293653c37..7a9a882baa 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Web.Routing; using Moq; +using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web; using Umbraco.Web.PublishedCache; diff --git a/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs index c40b2e5876..5efd8668d5 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs @@ -1,5 +1,6 @@ using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Tests.TestHelpers; diff --git a/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs index dfbe9b0cda..ac2e62b1ef 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs @@ -1,5 +1,6 @@ using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Models; diff --git a/src/Umbraco.Tests/Routing/UrlRoutesTests.cs b/src/Umbraco.Tests/Routing/UrlRoutesTests.cs index a794e226f1..2e944211ca 100644 --- a/src/Umbraco.Tests/Routing/UrlRoutesTests.cs +++ b/src/Umbraco.Tests/Routing/UrlRoutesTests.cs @@ -1,6 +1,7 @@ using System; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Models; diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs index ee3bca42e9..5850153100 100644 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs @@ -6,7 +6,7 @@ using Examine; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Components; +using Umbraco.Core.Compose; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Events; diff --git a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs index 71f2fba18f..e191d282ca 100644 --- a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs +++ b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs @@ -11,7 +11,6 @@ using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.IO; diff --git a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs index 4aa28b5975..001553a8ae 100644 --- a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs @@ -3,7 +3,6 @@ using System.Linq; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Components; using Umbraco.Core.Events; using Umbraco.Core.Models; using Umbraco.Core.IO; diff --git a/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs b/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs index 0a23e4a1b9..b9d680780e 100644 --- a/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs @@ -4,10 +4,11 @@ using System.Text; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; using Umbraco.Core.IO; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; +using Umbraco.Core.Composing.CompositionExtensions; +using FileSystems = Umbraco.Core.IO.FileSystems; namespace Umbraco.Tests.Scoping { diff --git a/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs b/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs index ad0f7142df..c7e4ddcb19 100644 --- a/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs @@ -11,6 +11,7 @@ using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; using Umbraco.Web.Cache; using Moq; +using Umbraco.Core; using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Sync; diff --git a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs index c8dcdd7fd0..044965bc79 100644 --- a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Xml; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.UmbracoSettings; diff --git a/src/Umbraco.Tests/Services/EntityXmlSerializerTests.cs b/src/Umbraco.Tests/Services/EntityXmlSerializerTests.cs index 28c69344b7..972595f2f1 100644 --- a/src/Umbraco.Tests/Services/EntityXmlSerializerTests.cs +++ b/src/Umbraco.Tests/Services/EntityXmlSerializerTests.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.Linq; using System.Xml.Linq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Models; using Umbraco.Core.Services; diff --git a/src/Umbraco.Tests/Services/SectionServiceTests.cs b/src/Umbraco.Tests/Services/SectionServiceTests.cs index d6bf26184b..cf0471a947 100644 --- a/src/Umbraco.Tests/Services/SectionServiceTests.cs +++ b/src/Umbraco.Tests/Services/SectionServiceTests.cs @@ -1,6 +1,7 @@ using NUnit.Framework; using System.Linq; using System.Threading; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Models.Membership; using Umbraco.Tests.Testing; diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index 35fcc853d4..2e1aadc9bb 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -3,7 +3,6 @@ using NPoco; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index a868245940..dc41c64444 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Linq; using System.Reflection; using AutoMapper; using Examine; @@ -8,9 +7,7 @@ using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Components; using Umbraco.Core.Composing; -using Umbraco.Core.Composing.Composers; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Events; @@ -26,7 +23,6 @@ using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Scoping; -using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; using Umbraco.Tests.Components; @@ -36,14 +32,14 @@ using Umbraco.Web; using Umbraco.Web.Services; using Umbraco.Tests.Testing.Objects.Accessors; using Umbraco.Web.Actions; -using Umbraco.Web.Composing.Composers; using Umbraco.Web.ContentApps; -using Umbraco.Web.Macros; using Umbraco.Web.PublishedCache; -using Current = Umbraco.Core.Composing.Current; using Umbraco.Web.Routing; -using Umbraco.Web.Templates; using Umbraco.Web.Trees; +using Umbraco.Core.Composing.CompositionExtensions; +using Umbraco.Web.Composing.CompositionExtensions; +using Current = Umbraco.Core.Composing.Current; +using FileSystems = Umbraco.Core.IO.FileSystems; namespace Umbraco.Tests.Testing { diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs index ba6a83adff..9e59422310 100644 --- a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs +++ b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs @@ -14,6 +14,7 @@ using Umbraco.Core.Models; using Newtonsoft.Json; using System.Collections.Generic; using System; +using Umbraco.Core; namespace Umbraco.Tests.UmbracoExamine { diff --git a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs index fc0d771fb8..a45a33ec00 100644 --- a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs +++ b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs @@ -5,6 +5,7 @@ using Examine; using Examine.Search; using NUnit.Framework; using Moq; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Services; diff --git a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs index c5c8b5c77d..d1395c6f2e 100644 --- a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs @@ -5,6 +5,7 @@ using System.Web.Mvc; using System.Web.Routing; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.UmbracoSettings; diff --git a/src/Umbraco.Web.UI.Client/gulp/tasks/build.js b/src/Umbraco.Web.UI.Client/gulp/tasks/build.js index 8fe582e406..32bf71f5f7 100644 --- a/src/Umbraco.Web.UI.Client/gulp/tasks/build.js +++ b/src/Umbraco.Web.UI.Client/gulp/tasks/build.js @@ -6,5 +6,5 @@ var runSequence = require('run-sequence'); // Build - build the files ready for production gulp.task('build', function(cb) { - runSequence(["js", "dependencies", "less", "views"], /*"test:unit",*/ cb); + runSequence(["js", "dependencies", "less", "views"], "test:unit", cb); }); diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/css/bootstrap-responsive.css b/src/Umbraco.Web.UI.Client/lib/bootstrap/css/bootstrap-responsive.css index 9259d26dca..0f4cb1dc75 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/css/bootstrap-responsive.css +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/css/bootstrap-responsive.css @@ -35,9 +35,7 @@ display: block; width: 100%; min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } .hidden { @@ -208,9 +206,7 @@ min-height: 30px; margin-left: 2.564102564102564%; *margin-left: 2.5109110747408616%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; @@ -555,9 +551,7 @@ min-height: 30px; margin-left: 2.7624309392265194%; *margin-left: 2.709239449864817%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; @@ -819,16 +813,12 @@ float: none; width: 100%; margin-left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } .span12, .row-fluid .span12 { width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } .input-large, .input-xlarge, @@ -840,9 +830,7 @@ display: block; width: 100%; min-height: 30px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + box-sizing: border-box; } .input-prepend input, .input-append input, @@ -869,7 +857,7 @@ @media (max-width: 480px) { .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0,0,0); } .page-header h1 small { display: block; @@ -961,16 +949,12 @@ padding: 9px 15px; font-weight: bold; color: #777777; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + border-radius: 3px; } .nav-collapse .btn { padding: 4px 10px 4px; font-weight: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + border-radius: 4px; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; @@ -998,12 +982,8 @@ margin: 0 15px; background-color: transparent; border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; + border-radius: 0; + box-shadow: none; } .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { @@ -1023,9 +1003,7 @@ margin: 10px 0; border-top: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); } .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/breadcrumbs.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/breadcrumbs.less index f753df6be8..68b3086072 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/breadcrumbs.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/breadcrumbs.less @@ -11,7 +11,6 @@ .border-radius(@baseBorderRadius); > li { display: inline-block; - .ie7-inline-block(); text-shadow: 0 1px 0 @white; > .divider { padding: 0 5px; diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/button-groups.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/button-groups.less index 55cdc60338..1f0c640b30 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/button-groups.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/button-groups.less @@ -7,11 +7,9 @@ .btn-group { position: relative; display: inline-block; - .ie7-inline-block(); font-size: 0; // remove as part 1 of font-size inline-block hack vertical-align: middle; // match .btn alignment given font-size hack above white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) - .ie7-restore-left-whitespace(); } // Space out series of button groups @@ -203,7 +201,6 @@ .btn-group-vertical { display: inline-block; // makes buttons only take up the width they need - .ie7-inline-block(); } .btn-group-vertical > .btn { display: block; diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/buttons.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/buttons.less index 4cd4d862b3..e522ab536a 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/buttons.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/buttons.less @@ -9,7 +9,6 @@ // Core .btn { display: inline-block; - .ie7-inline-block(); padding: 4px 12px; margin-bottom: 0; // For input.btn font-size: @baseFontSize; @@ -19,10 +18,8 @@ cursor: pointer; .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75)); border: 1px solid @btnBorder; - *border: 0; // Remove the border to prevent IE7's black border on input:focus border-bottom-color: darken(@btnBorder, 10%); .border-radius(@baseBorderRadius); - .ie7-restore-left-whitespace(); // Give IE7 some love .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); // Hover/focus state @@ -178,23 +175,6 @@ input[type="submit"].btn { padding: 0; border: 0; } - - // IE7 has some default padding on button controls - *padding-top: 3px; - *padding-bottom: 3px; - - &.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; - } - &.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; - } - &.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; - } } diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/code.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/code.less index 685523eb0a..0b90a13059 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/code.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/code.less @@ -34,7 +34,6 @@ pre.code { white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; - border: 1px solid #ccc; // fallback for IE7-8 border: 1px solid rgba(0,0,0,.15); .border-radius(@baseBorderRadius); @@ -58,4 +57,4 @@ pre.code { .pre-scrollable { max-height: 340px; overflow-y: scroll; -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/dropdowns.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/dropdowns.less index 35730a6bba..7707e04feb 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/dropdowns.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/dropdowns.less @@ -8,10 +8,7 @@ .dropdown { position: relative; } -.dropdown-toggle { - // The caret makes the toggle a bit too tall in IE7 - *margin-bottom: -3px; -} + .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; @@ -50,15 +47,10 @@ margin: 2px 0 0; // override default ul list-style: none; background-color: @dropdownBackground; - border: 1px solid #ccc; // Fallback for IE7-8 border: 1px solid @dropdownBorder; - *border-right-width: 2px; - *border-bottom-width: 2px; .border-radius(6px); .box-shadow(0 5px 10px rgba(0,0,0,.2)); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; + background-clip: padding-box; // Aligns the dropdown menu to right &.pull-right { @@ -120,17 +112,12 @@ text-decoration: none; background-color: transparent; background-image: none; // Remove CSS gradient - .reset-filter(); cursor: default; } // Open state for the dropdown // --------------------------- .open { - // IE7's z-index only goes to the nearest positioned ancestor, which would - // make the menu appear below buttons that appeared later on the page - *z-index: @zindexDropdown; - & > .dropdown-menu { display: block; } diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/forms.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/forms.less index 6bbbacd1e3..38ed7a9914 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/forms.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/forms.less @@ -135,8 +135,6 @@ input[type="color"], input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; - *margin-top: 0; /* IE7 */ - margin-top: 1px \9; /* IE8-9 */ line-height: normal; } @@ -154,8 +152,7 @@ input[type="checkbox"] { // Set the height of select and file controls to match text inputs select, input[type="file"] { - height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; /* For IE7, add top margin to align select with labels */ + height: @inputHeight; line-height: @inputHeight; } @@ -409,7 +406,6 @@ select:focus:invalid { .help-inline { display: inline-block; - .ie7-inline-block(); vertical-align: middle; padding-left: 5px; } @@ -542,9 +538,7 @@ select:focus:invalid { input.search-query { padding-right: 14px; - padding-right: 4px \9; padding-left: 14px; - padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom: 0; // Remove the default margin on all inputs .border-radius(15px); } @@ -587,7 +581,6 @@ input.search-query { .input-prepend, .input-append { display: inline-block; - .ie7-inline-block(); margin-bottom: 0; vertical-align: middle; } @@ -658,15 +651,7 @@ legend + .control-group { } // Move over all input controls and content .controls { - // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend - // don't inherit the margin of the parent, in this case .controls - *display: inline-block; - *padding-left: 20px; margin-left: @horizontalComponentOffset; - *margin-left: 0; - &:first-child { - *padding-left: @horizontalComponentOffset; - } } // Remove bottom margin on block level help text since that's accounted for on .control-group .help-block { diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/mixins.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/mixins.less index 79d889219f..ec4f1abed9 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/mixins.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/mixins.less @@ -42,31 +42,6 @@ margin-right: auto; } -// IE7 inline-block -// ---------------- -.ie7-inline-block() { - *display: inline; /* IE7 inline-block hack */ - *zoom: 1; -} - -// IE7 likes to collapse whitespace on either side of the inline-block elements. -// Ems because we're attempting to match the width of a space character. Left -// version is for form buttons, which typically come after other elements, and -// right version is for icons, which come before. Applying both is ok, but it will -// mean that space between those elements will be .6em (~2 space characters) in IE7, -// instead of the 1 space in other browsers. -.ie7-restore-left-whitespace() { - *margin-left: .3em; - - &:first-child { - *margin-left: 0; - } -} - -.ie7-restore-right-whitespace() { - *margin-right: .3em; -} - // Sizing shortcuts // ------------------------- .size(@height, @width) { @@ -203,31 +178,21 @@ // Border Radius .border-radius(@radius) { - -webkit-border-radius: @radius; - -moz-border-radius: @radius; - border-radius: @radius; + border-radius: @radius; } // Single Corner Border Radius .border-top-left-radius(@radius) { - -webkit-border-top-left-radius: @radius; - -moz-border-radius-topleft: @radius; - border-top-left-radius: @radius; + border-top-left-radius: @radius; } .border-top-right-radius(@radius) { - -webkit-border-top-right-radius: @radius; - -moz-border-radius-topright: @radius; - border-top-right-radius: @radius; + border-top-right-radius: @radius; } .border-bottom-right-radius(@radius) { - -webkit-border-bottom-right-radius: @radius; - -moz-border-radius-bottomright: @radius; - border-bottom-right-radius: @radius; + border-bottom-right-radius: @radius; } .border-bottom-left-radius(@radius) { - -webkit-border-bottom-left-radius: @radius; - -moz-border-radius-bottomleft: @radius; - border-bottom-left-radius: @radius; + border-bottom-left-radius: @radius; } // Single Side Border Radius @@ -250,66 +215,36 @@ // Drop shadows .box-shadow(@shadow) { - -webkit-box-shadow: @shadow; - -moz-box-shadow: @shadow; - box-shadow: @shadow; + box-shadow: @shadow; } // Transitions .transition(@transition) { - -webkit-transition: @transition; - -moz-transition: @transition; - -o-transition: @transition; - transition: @transition; + transition: @transition; } .transition-delay(@transition-delay) { - -webkit-transition-delay: @transition-delay; - -moz-transition-delay: @transition-delay; - -o-transition-delay: @transition-delay; - transition-delay: @transition-delay; + transition-delay: @transition-delay; } .transition-duration(@transition-duration) { - -webkit-transition-duration: @transition-duration; - -moz-transition-duration: @transition-duration; - -o-transition-duration: @transition-duration; - transition-duration: @transition-duration; + transition-duration: @transition-duration; } // Transformations .rotate(@degrees) { - -webkit-transform: rotate(@degrees); - -moz-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - -o-transform: rotate(@degrees); - transform: rotate(@degrees); + transform: rotate(@degrees); } .scale(@ratio) { - -webkit-transform: scale(@ratio); - -moz-transform: scale(@ratio); - -ms-transform: scale(@ratio); - -o-transform: scale(@ratio); - transform: scale(@ratio); + transform: scale(@ratio); } .translate(@x, @y) { - -webkit-transform: translate(@x, @y); - -moz-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); - -o-transform: translate(@x, @y); - transform: translate(@x, @y); + transform: translate(@x, @y); } .skew(@x, @y) { - -webkit-transform: skew(@x, @y); - -moz-transform: skew(@x, @y); - -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885 - -o-transform: skew(@x, @y); - transform: skew(@x, @y); + transform: skew(@x, @y); -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319 } .translate3d(@x, @y, @z) { - -webkit-transform: translate3d(@x, @y, @z); - -moz-transform: translate3d(@x, @y, @z); - -o-transform: translate3d(@x, @y, @z); - transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); } // Backface visibility @@ -325,25 +260,18 @@ // Background clipping // Heads up: FF 3.6 and under need "padding" instead of "padding-box" .background-clip(@clip) { - -webkit-background-clip: @clip; - -moz-background-clip: @clip; - background-clip: @clip; + background-clip: @clip; } // Background sizing .background-size(@size) { - -webkit-background-size: @size; - -moz-background-size: @size; - -o-background-size: @size; - background-size: @size; + background-size: @size; } // Box sizing .box-sizing(@boxmodel) { - -webkit-box-sizing: @boxmodel; - -moz-box-sizing: @boxmodel; - box-sizing: @boxmodel; + box-sizing: @boxmodel; } // User select @@ -385,7 +313,6 @@ // Opacity .opacity(@opacity) { opacity: @opacity / 100; - filter: ~"alpha(opacity=@{opacity})"; } @@ -423,7 +350,6 @@ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10 background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10 background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down } .vertical(@startColor: #555, @endColor: #333) { background-color: mix(@startColor, @endColor, 60%); @@ -433,7 +359,6 @@ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10 background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down } .directional(@startColor: #555, @endColor: #333, @deg: 45deg) { background-color: @endColor; @@ -451,7 +376,6 @@ background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor); background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor); background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback } .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { @@ -462,7 +386,6 @@ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback } .radial(@innerColor: #555, @outerColor: #333) { background-color: @outerColor; @@ -481,10 +404,6 @@ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); } } -// Reset filters for IE -.reset-filter() { - filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); -} @@ -495,14 +414,8 @@ // ------------------------- // Dividers (basically an hr) within dropdowns and nav lists .nav-divider(@top: #e5e5e5, @bottom: @white) { - // IE7 needs a set width since we gave a height. Restricting just - // to IE7 to keep the 1px left/right space in other browsers. - // It is unclear where IE is getting the extra space that we need - // to negative-margin away, but so it goes. - *width: 100%; height: 1px; margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px - *margin: -5px 0 5px; overflow: hidden; background-color: @top; border-bottom: 1px solid @bottom; @@ -513,17 +426,13 @@ .buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { // gradientBar will set the background to a pleasing blend of these, to support IE<=9 .gradientBar(@startColor, @endColor, @textColor, @textShadow); - *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - .reset-filter(); // in these cases the gradient won't cover the background, so we override &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] { color: @textColor; background-color: @endColor; - *background-color: darken(@endColor, 5%); } - // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves &:active, &.active { background-color: darken(@endColor, 10%) e("\9"); diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/navbar.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/navbar.less index 540e7973bb..6d3d06f36a 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/navbar.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/navbar.less @@ -10,10 +10,6 @@ .navbar { overflow: visible; margin-bottom: @baseLineHeight; - - // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar - *position: relative; - *z-index: 2; } // Inner for background effects @@ -475,9 +471,7 @@ width: (@gridColumnWidth * @gridColumns) + (@gridGutterWidth * (@gridColumns - 1 .transition(none); .placeholder(@navbarInverseSearchPlaceholderColor); - // Focus states (we use .focused since IE7-8 and down doesn't support :focus) - &:focus, - &.focused { + &:focus{ padding: 5px 15px; color: @grayDark; text-shadow: 0 1px 0 @white; diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/pagination.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/pagination.less index a789db2d28..6f6e6ac7de 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/pagination.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/pagination.less @@ -10,7 +10,6 @@ .pagination ul { // Allow for text-based alignment display: inline-block; - .ie7-inline-block(); // Reset default ul styles margin-left: 0; margin-bottom: 0; diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/popovers.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/popovers.less index aae35c8cd5..0836e896d2 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/popovers.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/popovers.less @@ -13,9 +13,7 @@ padding: 1px; text-align: left; // Reset given new insertion method background-color: @popoverBackground; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; + background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,.2); .border-radius(6px); diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/progress-bars.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/progress-bars.less index 5e0c3dda01..d8822ee848 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/progress-bars.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/progress-bars.less @@ -6,30 +6,6 @@ // ANIMATIONS // ---------- -// Webkit -@-webkit-keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - -// Firefox -@-moz-keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - -// IE9 -@-ms-keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - -// Opera -@-o-keyframes progress-bar-stripes { - from { background-position: 0 0; } - to { background-position: 40px 0; } -} - // Spec @keyframes progress-bar-stripes { from { background-position: 40px 0; } @@ -77,11 +53,7 @@ // Call animation for the active one .progress.active .bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; } diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/reset.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/reset.less index 4806bd5e59..01be666671 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/reset.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/reset.less @@ -79,7 +79,6 @@ sub { img { /* Responsive images (ensure images don't scale beyond their parents) */ max-width: 100%; /* Part 1: Set a maxium relative to the parent */ - width: auto\9; /* IE7-8 need help adjusting responsive images */ height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */ vertical-align: middle; diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/responsive-767px-max.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/responsive-767px-max.less index 128f4ce30d..0829546ba2 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/responsive-767px-max.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/responsive-767px-max.less @@ -122,7 +122,7 @@ // Smooth out the collapsing/expanding nav .nav-collapse { - -webkit-transform: translate3d(0, 0, 0); // activate the GPU + transform: translate3d(0, 0, 0); // activate the GPU } // Block level the page header small tag for readability diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/sprites.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/sprites.less index 1812bf71ac..d73e23f5ea 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/sprites.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/sprites.less @@ -19,7 +19,6 @@ display: inline-block; width: 14px; height: 14px; - .ie7-restore-right-whitespace(); line-height: 14px; vertical-align: text-top; background-image: url("@{iconSpritePath}"); diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less index 0e35271e11..f88b66bd18 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tables.less @@ -74,7 +74,6 @@ table { .table-bordered { border: 1px solid @tableBorder; border-collapse: separate; // Done so we can round those corners! - *border-collapse: collapse; // IE7 can't round corners anyway border-left: 0; .border-radius(@baseBorderRadius); th, diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tests/css-tests.css b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tests/css-tests.css index 0f5604ee68..98ba23f816 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tests/css-tests.css +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/tests/css-tests.css @@ -73,9 +73,7 @@ body { width: 100%; height: 400px; margin: 20px 0; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; + border-radius: 5px; } .gradient-horizontal { @@ -86,7 +84,6 @@ body { background-image: -o-linear-gradient(left, #555555, #333333); background-image: linear-gradient(to right, #555555, #333333); background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=1); } .gradient-vertical { @@ -97,7 +94,6 @@ body { background-image: -o-linear-gradient(top, #555555, #333333); background-image: linear-gradient(to bottom, #555555, #333333); background-repeat: repeat-x; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff333333', GradientType=0); } .gradient-directional { @@ -117,7 +113,6 @@ body { background-image: -o-linear-gradient(#00b3ee, #7a43b6 50%, #c3325f); background-image: linear-gradient(#00b3ee, #7a43b6 50%, #c3325f); background-repeat: no-repeat; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff00b3ee', endColorstr='#ffc3325f', GradientType=0); } .gradient-radial { @@ -146,5 +141,4 @@ body { background-image: -o-linear-gradient(left, #00b3ee, #7a43b6 50%, #c3325f); background-image: linear-gradient(to right, #00b3ee, #7a43b6 50%, #c3325f); background-repeat: no-repeat; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00b3ee', endColorstr='#c3325f', GradientType=0); } diff --git a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/type.less b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/type.less index 337138ac8e..bf1167f950 100644 --- a/src/Umbraco.Web.UI.Client/lib/bootstrap/less/type.less +++ b/src/Umbraco.Web.UI.Client/lib/bootstrap/less/type.less @@ -130,7 +130,6 @@ ol.inline { list-style: none; > li { display: inline-block; - .ie7-inline-block(); padding-left: 5px; padding-right: 5px; } diff --git a/src/Umbraco.Web.UI.Client/lib/markdown/markdown.css b/src/Umbraco.Web.UI.Client/lib/markdown/markdown.css index 5594f70634..84b867d2d6 100644 --- a/src/Umbraco.Web.UI.Client/lib/markdown/markdown.css +++ b/src/Umbraco.Web.UI.Client/lib/markdown/markdown.css @@ -2,27 +2,21 @@ width: 100%; } -.wmd-input { +.wmd-input { height: 300px; width: 100%; box-sizing: border-box; - -webkit-box-sizing:border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; } -.wmd-preview { +.wmd-preview { .well; width: 100%; box-sizing: border-box; - -webkit-box-sizing:border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; } .wmd-panel .btn-toolbar { margin-bottom: 0; - padding: 0; + padding: 0; width: 100%; } diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 207eba38c5..487c50bddb 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -8664,6 +8664,16 @@ "jasmine-core": "^3.3" } }, + "karma-junit-reporter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-1.2.0.tgz", + "integrity": "sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y=", + "dev": true, + "requires": { + "path-is-absolute": "^1.0.0", + "xmlbuilder": "8.2.2" + } + }, "karma-phantomjs-launcher": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", @@ -16436,6 +16446,12 @@ "ultron": "~1.1.0" } }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "dev": true + }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f24275420a..3a5ff22f04 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -48,6 +48,7 @@ "@babel/preset-env": "7.1.6", "autoprefixer": "9.3.1", "cssnano": "4.1.7", + "fs": "0.0.2", "gulp": "^3.9.1", "gulp-babel": "8.0.0", "gulp-clean-css": "4.0.0", @@ -58,6 +59,7 @@ "gulp-imagemin": "^4.1.0", "gulp-less": "4.0.1", "gulp-ngdocs": "0.3.0", + "gulp-notify": "^3.0.0", "gulp-open": "3.0.1", "gulp-postcss": "8.0.0", "gulp-rename": "1.4.0", @@ -65,16 +67,15 @@ "gulp-watch": "5.0.1", "gulp-wrap": "0.14.0", "gulp-wrap-js": "0.4.1", - "gulp-notify": "^3.0.0", "jasmine-core": "3.3.0", "karma": "3.1.1", "karma-jasmine": "2.0.1", + "karma-junit-reporter": "^1.2.0", "karma-phantomjs-launcher": "1.0.4", "less": "3.9.0", "lodash": "4.17.11", "marked": "^0.5.2", "merge-stream": "1.0.1", - "run-sequence": "2.2.1", - "fs": "0.0.2" + "run-sequence": "2.2.1" } } diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Black.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Black.eot deleted file mode 100644 index d41103b2a9..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Black.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Black.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Black.ttf deleted file mode 100644 index 45c55e4e2e..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Black.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BlackItalic.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BlackItalic.eot deleted file mode 100644 index 74ea6229ba..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BlackItalic.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BlackItalic.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BlackItalic.ttf deleted file mode 100644 index 76563c22f8..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BlackItalic.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Bold.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Bold.eot deleted file mode 100644 index d90b47b81e..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Bold.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Bold.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Bold.ttf deleted file mode 100644 index c598c24a3d..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Bold.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BoldItalic.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BoldItalic.eot deleted file mode 100644 index 17216efe59..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BoldItalic.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BoldItalic.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BoldItalic.ttf deleted file mode 100644 index c1f225af19..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-BoldItalic.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Italic.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Italic.eot deleted file mode 100644 index 403b9a5bd3..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Italic.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Italic.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Italic.ttf deleted file mode 100644 index c61fc07cab..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Italic.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Light.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Light.eot deleted file mode 100644 index 865537d94f..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Light.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Light.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Light.ttf deleted file mode 100644 index 6af1b85dfd..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Light.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-LightItalic.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-LightItalic.eot deleted file mode 100644 index 52ee50c857..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-LightItalic.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-LightItalic.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-LightItalic.ttf deleted file mode 100644 index b8810365ec..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-LightItalic.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Regular.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Regular.eot deleted file mode 100644 index 96a9035981..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Regular.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Regular.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Regular.ttf deleted file mode 100644 index bcc57780d8..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/lato/LatoLatin-Regular.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.eot deleted file mode 100644 index 6bbc3cf58c..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.svg b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.svg deleted file mode 100644 index 25a3952340..0000000000 --- a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.svg +++ /dev/null @@ -1,1831 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.ttf deleted file mode 100644 index c537f8382a..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.woff b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.woff deleted file mode 100644 index e231183dce..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular-webfont.woff and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.ttf deleted file mode 100644 index db433349b7..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.woff b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.woff new file mode 100644 index 0000000000..e495e6f010 Binary files /dev/null and b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.woff differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.woff2 b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.woff2 new file mode 100644 index 0000000000..c8050c25f8 Binary files /dev/null and b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Regular.woff2 differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.eot b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.eot deleted file mode 100644 index d8375dd0ab..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.eot and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.svg b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.svg deleted file mode 100644 index eec4db8bd7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.ttf b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.ttf deleted file mode 100644 index b3290843a7..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.ttf and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.woff b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.woff deleted file mode 100644 index 28d6adee03..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold-webfont.woff and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold.woff b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold.woff new file mode 100644 index 0000000000..5a604b3a01 Binary files /dev/null and b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold.woff differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold.woff2 b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold.woff2 new file mode 100644 index 0000000000..a0965b7a89 Binary files /dev/null and b/src/Umbraco.Web.UI.Client/src/assets/fonts/opensans/OpenSans-Semibold.woff2 differ diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umblogin.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umblogin.directive.js index 891e8f0e7b..39058b32d7 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umblogin.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umblogin.directive.js @@ -48,6 +48,7 @@ vm.externalLoginInfo = externalLoginInfo; vm.resetPasswordCodeInfo = resetPasswordCodeInfo; vm.backgroundImage = Umbraco.Sys.ServerVariables.umbracoSettings.loginBackgroundImage; + vm.usernameIsEmail = Umbraco.Sys.ServerVariables.umbracoSettings.usernameIsEmail; vm.$onInit = onInit; vm.togglePassword = togglePassword; @@ -61,6 +62,15 @@ vm.requestPasswordResetSubmit = requestPasswordResetSubmit; vm.setPasswordSubmit = setPasswordSubmit; + vm.labels = {}; + localizationService.localizeMany([ + vm.usernameIsEmail ? "general_email" : "general_username", + vm.usernameIsEmail ? "placeholders_email" : "placeholders_usernameHint"] + ).then(function (data) { + vm.labels.usernameLabel = data[0]; + vm.labels.usernamePlaceholder = data[1]; + }) + function onInit() { // Check if it is a new user diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js index b1ce4a266c..9844118858 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js @@ -174,8 +174,8 @@ */ function createButtons(content) { - // for trashed items, the save button is the primary action - otherwise it's a secondary action - $scope.page.saveButtonStyle = content.trashed ? "primary" : "info"; + // for trashed and element type items, the save button is the primary action - otherwise it's a secondary action + $scope.page.saveButtonStyle = content.trashed || content.isElement ? "primary" : "info"; // only create the save/publish/preview buttons if the // content app is "Conent" diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js index a043b292ef..0fdfe6a457 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js @@ -44,7 +44,8 @@ "prompt_doctypeChangeWarning", "general_history", "auditTrails_historyIncludingVariants", - "content_itemNotPublished" + "content_itemNotPublished", + "general_choose" ]; localizationService.localizeMany(keys) @@ -59,10 +60,11 @@ labels.notPublished = data[9]; scope.historyLabel = scope.node.variants && scope.node.variants.length === 1 ? data[7] : data[8]; + scope.chooseLabel = data[10]; setNodePublishStatus(); - if (scope.currentUrls.length === 0) { + if (scope.currentUrls && scope.currentUrls.length === 0) { if (scope.node.id > 0) { //it's created but not published scope.currentUrls.push({ text: labels.notPublished, isUrl: false }); @@ -102,6 +104,8 @@ loadAuditTrail(); } + // never show templates for element types (if they happen to have been created in the content tree) + scope.disableTemplates = scope.disableTemplates || scope.node.isElement; } scope.auditTrailPageChange = function (pageNumber) { @@ -301,6 +305,12 @@ } function updateCurrentUrls() { + // never show urls for element types (if they happen to have been created in the content tree) + if (scope.node.isElement) { + scope.currentUrls = null; + return; + } + // find the urls for the currently selected language if (scope.node.variants.length > 1) { // nodes with variants diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/imaging/umbimagecrop.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/imaging/umbimagecrop.directive.js index 5be2ec1173..0eb0f506fc 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/imaging/umbimagecrop.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/imaging/umbimagecrop.directive.js @@ -232,7 +232,7 @@ angular.module("umbraco.directives") var throttledResizing = _.throttle(function(){ resizeImageToScale(scope.dimensions.scale.current); calculateCropBox(); - }, 100); + }, 15); //happens when we change the scale diff --git a/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js index afcd3b27ff..1bda86c3b3 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js @@ -12,14 +12,14 @@ { "value": 4, "name": "Inactive", "key": "Inactive", "color": "warning" } ]; - angular.forEach(userStates, function (userState) { - var key = "user_state" + userState.key; - localizationService.localize(key).then(function (value) { - var reg = /^\[[\S\s]*]$/g; - var result = reg.test(value); - if (result === false) { + localizationService.localizeMany(_.map(userStates, function (userState) { + return "user_state" + userState.key; + })).then(function (data) { + var reg = /^\[[\S\s]*]$/g; + _.each(data, function (value, index) { + if (!reg.test(value)) { // Only translate if key exists - userState.name = value; + userStates[index].name = value; } }); }); diff --git a/src/Umbraco.Web.UI.Client/src/less/application/animations.less b/src/Umbraco.Web.UI.Client/src/less/application/animations.less index 0f2dcb7a7e..91e2213775 100644 --- a/src/Umbraco.Web.UI.Client/src/less/application/animations.less +++ b/src/Umbraco.Web.UI.Client/src/less/application/animations.less @@ -4,41 +4,35 @@ //Animate.css - https://daneden.github.io/animate.css/ //Licensed under the MIT license - https://opensource.org/licenses/MIT //Copyright (c) 2013 Daniel Eden -.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} +.animated{animation-duration:1s;animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}.animated.hinge{animation-duration:2s}.bounceIn,.bounceOut,.flipOutX,.flipOutY{animation-duration:.75s}@keyframes bounce{0%,100%,20%,53%,80%{transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,0,0)}40%,43%{transition-timing-function:cubic-bezier(.755,.050,.855,.060);transform:translate3d(0,-30px,0)}70%{transition-timing-function:cubic-bezier(.755,.050,.855,.060);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{animation-name:bounce;transform-origin:center bottom}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{animation-name:flash}@keyframes pulse{0%,100%{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}}.pulse{animation-name:pulse}@keyframes rubberBand{0%,100%{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}}.rubberBand{animation-name:rubberBand}@keyframes shake{0%,100%{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.shake{animation-name:shake}@keyframes swing{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}100%{transform:rotate3d(0,0,1,0deg)}}.swing{transform-origin:top center;animation-name:swing}@keyframes tada{0%,100%{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}}.tada{animation-name:tada}@keyframes wobble{0%,100%{transform:none}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}}.wobble{animation-name:wobble}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}100%{opacity:1;transform:scale3d(1,1,1)}}.bounceIn{animation-name:bounceIn}@keyframes bounceInDown{0%,100%,60%,75%,90%{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}100%{transform:none}}.bounceInDown{animation-name:bounceInDown}@keyframes bounceInLeft{0%,100%,60%,75%,90%{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}100%{transform:none}}.bounceInLeft{animation-name:bounceInLeft}@keyframes bounceInRight{0%,100%,60%,75%,90%{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}100%{transform:none}}.bounceInRight{animation-name:bounceInRight}@keyframes bounceInUp{0%,100%,60%,75%,90%{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}100%{transform:translate3d(0,0,0)}}.bounceInUp{animation-name:bounceInUp}@keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{animation-name:bounceOut}@keyframes bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}100%{opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{animation-name:bounceOutDown}@keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}100%{opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{animation-name:bounceOutLeft}@keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}100%{opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{animation-name:bounceOutRight}@keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}100%{opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{animation-name:bounceOutUp}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{animation-name:fadeIn}@keyframes fadeInDown{0%{opacity:0;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:none}}.fadeInDown{animation-name:fadeInDown}@keyframes fadeInDownBig{0%{opacity:0;transform:translate3d(0,-2000px,0)}100%{opacity:1;transform:none}}.fadeInDownBig{animation-name:fadeInDownBig}@keyframes fadeInLeft{0%{opacity:0;transform:translate3d(-100%,0,0)}100%{opacity:1;transform:none}}.fadeInLeft{animation-name:fadeInLeft}@keyframes fadeInLeftBig{0%{opacity:0;transform:translate3d(-2000px,0,0)}100%{opacity:1;transform:none}}.fadeInLeftBig{animation-name:fadeInLeftBig}@keyframes fadeInRight{0%{opacity:0;transform:translate3d(100%,0,0)}100%{opacity:1;transform:none}}.fadeInRight{animation-name:fadeInRight}@keyframes fadeInRightBig{0%{opacity:0;transform:translate3d(2000px,0,0)}100%{opacity:1;transform:none}}.fadeInRightBig{animation-name:fadeInRightBig}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,100%,0)}100%{opacity:1;transform:none}}.fadeInUp{animation-name:fadeInUp}@keyframes fadeInUpBig{0%{opacity:0;transform:translate3d(0,2000px,0)}100%{opacity:1;transform:none}}.fadeInUpBig{animation-name:fadeInUpBig}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{animation-name:fadeOut}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{animation-name:fadeOutDown}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{animation-name:fadeOutDownBig}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{animation-name:fadeOutLeft}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{animation-name:fadeOutLeftBig}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{animation-name:fadeOutRight}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{animation-name:fadeOutRightBig}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;transform:translate3d(0,-100%,0)}}.fadeOutUp{animation-name:fadeOutUp}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{animation-name:fadeOutUpBig}@keyframes flip{0%{transform:perspective(400px) rotate3d(0,1,0,-360deg);animation-timing-function:ease-out}40%{transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95);animation-timing-function:ease-in}100%{transform:perspective(400px);animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;animation-name:flip}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1,0,0,90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:flipInX}.flipInY,.flipOutX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important}@keyframes flipInY{0%{transform:perspective(400px) rotate3d(0,1,0,90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{transform:perspective(400px)}}.flipInY{backface-visibility:visible!important;animation-name:flipInY}@keyframes flipOutX{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{animation-name:flipOutX;backface-visibility:visible!important}@keyframes flipOutY{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;animation-name:flipOutY}@keyframes lightSpeedIn{0%{transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{transform:skewX(20deg);opacity:1}80%{transform:skewX(-5deg);opacity:1}100%{transform:none;opacity:1}}.lightSpeedIn{animation-name:lightSpeedIn;animation-timing-function:ease-out}@keyframes lightSpeedOut{0%{opacity:1}100%{transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{animation-name:lightSpeedOut;animation-timing-function:ease-in}@keyframes rotateIn{0%{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}100%{transform-origin:center;transform:none;opacity:1}}.rotateIn{animation-name:rotateIn}@keyframes rotateInDownLeft{0%{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}100%{transform-origin:left bottom;transform:none;opacity:1}}.rotateInDownLeft{animation-name:rotateInDownLeft}@keyframes rotateInDownRight{0%{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}100%{transform-origin:right bottom;transform:none;opacity:1}}.rotateInDownRight{animation-name:rotateInDownRight}@keyframes rotateInUpLeft{0%{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}100%{transform-origin:left bottom;transform:none;opacity:1}}.rotateInUpLeft{animation-name:rotateInUpLeft}@keyframes rotateInUpRight{0%{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}100%{transform-origin:right bottom;transform:none;opacity:1}}.rotateInUpRight{animation-name:rotateInUpRight}@keyframes rotateOut{0%{transform-origin:center;opacity:1}100%{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{animation-name:rotateOut}@keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}100%{transform-origin:left bottom;transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{animation-name:rotateOutDownLeft}@keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}100%{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{animation-name:rotateOutDownRight}@keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}100%{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{animation-name:rotateOutUpLeft}@keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}100%{transform-origin:right bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{animation-name:rotateOutUpRight}@keyframes hinge{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}100%{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-name:hinge}@keyframes rollIn{0%{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;transform:none}}.rollIn{animation-name:rollIn}@keyframes rollOut{0%{opacity:1}100%{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{animation-name:rollOut}@keyframes zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{animation-name:zoomIn}@keyframes zoomInDown{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{animation-name:zoomInDown}@keyframes zoomInLeft{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{animation-name:zoomInLeft}@keyframes zoomInRight{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{animation-name:zoomInRight}@keyframes zoomInUp{0%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{animation-name:zoomInUp}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{animation-name:zoomOut}@keyframes zoomOutDown{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}100%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{animation-name:zoomOutDown}@keyframes zoomOutLeft{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{animation-name:zoomOutLeft}@keyframes zoomOutRight{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{animation-name:zoomOutRight}@keyframes zoomOutUp{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}100%{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{animation-name:zoomOutUp} .animated.-half-second { animation-duration: 0.5s; } .slide-in-left.ng-hide-remove { - -webkit-animation: fadeInLeft 0.6s; animation: fadeInLeft 0.6s; } .slide-in-left.ng-hide-add { - -webkit-animation: fadeOutLeft 0.6s; animation: fadeOutLeft 0.6s; display: block !important; } .slide-in-right.ng-hide-remove { - -webkit-animation: fadeInRight 0.6s; animation: fadeInRight 0.6s; } .slide-in-right.ng-hide-add { - -webkit-animation: fadeOutRight 0.6s; animation: fadeOutRight 0.6s; display: block !important; } .slide-in-up.ng-hide-remove { - -webkit-animation: fadeInUp 0.6s; animation: fadeInUp 0.6s; } .slide-in-up.ng-hide-add { - -webkit-animation: fadeOutDown 0.6s; animation: fadeOutDown 0.6s; display: block !important; } @@ -60,70 +54,10 @@ color: @red !important; } -@-webkit-keyframes leave { - to { - opacity: 0; - height: 0px; - bottom: -70px; - } - 25% { - bottom: 15px; - } - from { - opacity: 1; - height: 30px; - bottom: 0px; - } -} -@-moz-keyframes leave { - to { - opacity: 0; - height: 0px; - bottom: -70px; - } - 25% { - bottom: 15px; - } - from { - opacity: 1; - height: 30px; - bottom: 0px; - } -} -@-ms-keyframes leave { - to { - opacity: 0; - height: 0px; - bottom: -70px; - } - 25% { - bottom: 15px; - } - from { - opacity: 1; - height: 30px; - bottom: 0px; - } -} -@-o-keyframes leave { - to { - opacity: 0; - height: 0px; - bottom: -70px; - } - 25% { - bottom: 15px; - } - from { - opacity: 1; - height: 30px; - bottom: 0px; - } -} @keyframes leave { to { opacity: 0; - height: 0px; + height: 0; bottom: -70px; } 25% { @@ -132,26 +66,18 @@ from { opacity: 1; height: 30px; - bottom: 0px; + bottom: 0; } } .tree-node-slide-up { opacity:1; - top: 0px; - -webkit-transition: 700ms cubic-bezier(0.000, 0.000, 0.580, 1.000) all; - -moz-transition: 700ms cubic-bezier(0.000, 0.000, 0.580, 1.000) all; - -ms-transition: 700ms cubic-bezier(0.000, 0.000, 0.580, 1.000) all; - -o-transition: 700ms cubic-bezier(0.000, 0.000, 0.580, 1.000) all; + top: 0; transition: 700ms cubic-bezier(0.000, 0.000, 0.580, 1.000) all; } .tree-node-slide-up * { font-size:100%; - -webkit-transition:font-size 700ms; - -moz-transition:font-size 700ms; - -ms-transition:font-size 700ms; - -o-transition:font-size 700ms; transition:font-size 700ms; } .tree-node-slide-up.tree-node-slide-up-hide-active { @@ -166,10 +92,6 @@ .tree-fade-out-show, .tree-fade-out-hide div:not(.tree-node-slide-up-hide-active), .tree-fade-out-show div:not(.tree-node-slide-up-hide-active) { - -webkit-transition: 700ms cubic-bezier(0.075, 0.820, 0.165, 1.000) all; - -moz-transition: 700ms cubic-bezier(0.075, 0.820, 0.165, 1.000) all; - -ms-transition: 700ms cubic-bezier(0.075, 0.820, 0.165, 1.000) all; - -o-transition: 700ms cubic-bezier(0.075, 0.820, 0.165, 1.000) all; transition: 700ms cubic-bezier(0.075, 0.820, 0.165, 1.000) all; } .tree-fade-out-show.tree-fade-out-show-active div:not(.tree-node-slide-up-hide-active){ diff --git a/src/Umbraco.Web.UI.Client/src/less/application/grid.less b/src/Umbraco.Web.UI.Client/src/less/application/grid.less index 073d1b5721..0c6e790272 100644 --- a/src/Umbraco.Web.UI.Client/src/less/application/grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/application/grid.less @@ -62,10 +62,6 @@ body.umb-drawer-is-visible #mainwrapper{ margin: 0; } -#umb-notifications-wrapper { - left: 80px; -} - #contentcolumn { left: 0px; } @@ -171,13 +167,11 @@ body.umb-drawer-is-visible #mainwrapper{ } @media (min-width: 1101px) { - #contentwrapper, #umb-notifications-wrapper {left: 360px;} - #speechbubble {left: 360px;} + #contentwrapper, #speechbubble {left: 360px;} .emptySection #contentwrapper {left:0px;} } //empty section modification -.emptySection #umb-notifications-wrapper {left: 80px;} .emptySection #speechbubble {left: 0;} .emptySection #navigation {display: none} diff --git a/src/Umbraco.Web.UI.Client/src/less/belle.less b/src/Umbraco.Web.UI.Client/src/less/belle.less index db0b64daa4..9458b11f46 100644 --- a/src/Umbraco.Web.UI.Client/src/less/belle.less +++ b/src/Umbraco.Web.UI.Client/src/less/belle.less @@ -76,7 +76,6 @@ @import "listview.less"; @import "gridview.less"; @import "footer.less"; -@import "dashboards.less"; @import "forms/umb-validation-label.less"; @@ -138,6 +137,7 @@ @import "components/umb-insert-code-box.less"; @import "components/umb-packages.less"; @import "components/umb-package-local-install.less"; +@import "components/umb-panel-group.less"; @import "components/umb-lightbox.less"; @import "components/umb-avatar.less"; @import "components/umb-progress-bar.less"; @@ -192,18 +192,20 @@ @import "pages/welcome-dashboard.less"; -//used for property editors +// Used for property editors @import "property-editors.less"; -//used for prevalue editors +// Used for prevalue editors @import "components/prevalues/multivalues.less"; +// Dashboards +@import "dashboards/getstarted.less"; +@import "dashboards/umbraco-forms.less"; +@import "dashboards/examine-management.less"; +@import "dashboards/healthcheck.less"; @import "typeahead.less"; @import "hacks.less"; -@import "healthcheck.less"; -@import "getstarted.less"; - // cleanup properties.less when it is done @import "properties.less"; diff --git a/src/Umbraco.Web.UI.Client/src/less/button-groups.less b/src/Umbraco.Web.UI.Client/src/less/button-groups.less index 070e353c14..444a56803c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/button-groups.less +++ b/src/Umbraco.Web.UI.Client/src/less/button-groups.less @@ -7,11 +7,9 @@ .btn-group { position: relative; display: inline-block; - .ie7-inline-block(); font-size: 0; // remove as part 1 of font-size inline-block hack vertical-align: middle; // match .btn alignment given font-size hack above white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) - .ie7-restore-left-whitespace(); } // Space out series of button groups @@ -104,24 +102,14 @@ padding-left: 8px; padding-right: 8px; .box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); - *padding-top: 5px; - *padding-bottom: 5px; } .btn-group > .btn-mini + .dropdown-toggle { padding-left: 5px; padding-right: 5px; - *padding-top: 2px; - *padding-bottom: 2px; -} -.btn-group > .btn-small + .dropdown-toggle { - *padding-top: 5px; - *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { padding-left: 12px; padding-right: 12px; - *padding-top: 7px; - *padding-bottom: 7px; } .btn-group.open { @@ -182,28 +170,11 @@ } -/* -// Account for other colors -.btn-primary, -.btn-warning, -.btn-danger, -.btn-info, -.btn-success, -.btn-inverse { - .caret { - border-top-color: @white; - border-bottom-color: @white; - } -} -*/ - - // Vertical button groups // ---------------------- .btn-group-vertical { display: inline-block; // makes buttons only take up the width they need - .ie7-inline-block(); } .btn-group-vertical > .btn { display: block; diff --git a/src/Umbraco.Web.UI.Client/src/less/buttons.less b/src/Umbraco.Web.UI.Client/src/less/buttons.less index 7fd62e31c7..f21c7f3106 100644 --- a/src/Umbraco.Web.UI.Client/src/less/buttons.less +++ b/src/Umbraco.Web.UI.Client/src/less/buttons.less @@ -62,7 +62,6 @@ .btn-group>.btn+.dropdown-toggle { box-shadow: none; - -webkit-box-shadow:none; border-left-width: 1px; border-left-style: solid; border-color: rgba(0,0,0,0.09); @@ -139,7 +138,6 @@ input[type="button"] { line-height: 32px; text-align: center; - -moz-border-radius: 15px; border-radius: 15px; height: 32px; width: 32px; @@ -274,23 +272,6 @@ input[type="submit"].btn { border: 0; } - // IE7 has some default padding on button controls - *padding-top: 3px; - *padding-bottom: 3px; - - &.btn-large { - *padding-top: 7px; - *padding-bottom: 7px; - } - &.btn-small { - *padding-top: 3px; - *padding-bottom: 3px; - } - &.btn-mini { - *padding-top: 1px; - *padding-bottom: 1px; - } - // Safari defaults to 1px for input. Ref U4-7721. margin: 0px; } diff --git a/src/Umbraco.Web.UI.Client/src/less/canvas-designer.less b/src/Umbraco.Web.UI.Client/src/less/canvas-designer.less index d1492a33c6..f5e15975b7 100644 --- a/src/Umbraco.Web.UI.Client/src/less/canvas-designer.less +++ b/src/Umbraco.Web.UI.Client/src/less/canvas-designer.less @@ -24,8 +24,6 @@ body { font-size: 14px; line-height: 20px; color: #343434; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; padding-left:80px; } @@ -106,35 +104,11 @@ a, a:hover{ cursor: pointer; background: #f2f2f2; border: 1px solid #cccccc; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; border-radius: 2px; - -webkit-box-shadow: none; box-shadow: none; } -/* -.btn-success { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - background-color: #53a93f; - background-image: -moz-linear-gradient(top, #53a93f, #53a93f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#53a93f), to(#53a93f)); - background-image: -webkit-linear-gradient(top, #53a93f, #53a93f); - background-image: -o-linear-gradient(top, #53a93f, #53a93f); - background-image: linear-gradient(to bottom, #53a93f, #53a93f); - background-repeat: repeat-x; - border-color: #53a93f #53a93f #38712a; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff53a93f', endColorstr='#ff53a93f', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} -.btn-success:hover { - color: #ffffff; -} -*/ .btn-group > .btn + .dropdown-toggle { - -webkit-box-shadow: none; box-shadow: none; } @@ -145,18 +119,12 @@ a, a:hover{ .btn-group > .btn + .dropdown-toggle { padding-right: 8px; padding-left: 8px; - -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { - -webkit-border-top-right-radius: 2px; border-top-right-radius: 2px; - -webkit-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; } .caret { @@ -190,14 +158,8 @@ a, a:hover{ background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); - -webkit-border-radius: 6px; - -moz-border-radius: 6px; border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; background-clip: padding-box; } @@ -277,8 +239,6 @@ a, a:hover{ font-size: 13px; line-height: 16px; background: #1b264f; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; z-index: 9999; } @@ -300,8 +260,6 @@ a, a:hover{ text-align: center; color: #D8D7D9; opacity: 0.4; - -webkit-transition: all .3s linear; - -moz-transition: all .3s linear; transition: all .3s linear; } @@ -312,8 +270,6 @@ ul.sections { position:absolute; top: 90px; width: 80px; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; list-style:none; margin:0; @@ -324,8 +280,6 @@ ul.sections { ul.sections li { display: block; border-left: 4px #1b264f solid; - -webkit-transition: all .3s linear; - -moz-transition: all .3s linear; transition: all .3s linear; } @@ -333,8 +287,6 @@ ul.sections li { .fix-left-menu ul.sections li a i { color: #fff; opacity: .7; - -webkit-transition: all .3s linear; - -moz-transition: all .3s linear; transition: all .3s linear; } @@ -401,15 +353,11 @@ ul.sections li.current, ul.sections li:hover { font-size: 13px; line-height: 16px; background: #ffffff; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; width: 250px; height: 100%; padding: 0; z-index: 999; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); } @@ -430,8 +378,6 @@ ul.sections li.current, ul.sections li:hover { position: absolute; right: 20px; cursor:pointer; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } @@ -469,11 +415,7 @@ ul.sections li.current, ul.sections li:hover { font-size: 13px; line-height: 16px; background: #ffffff; - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } @@ -629,7 +571,7 @@ h4.panel-title { .canvasdesigner .ui-widget-content { background: rgba(0, 0, 0, 0.27) !important; - border: 0px solid #fff !important; + border: 0 solid #fff !important; border-radius: 1px !important; } @@ -723,10 +665,6 @@ h4.panel-title { cursor: pointer; } -.canvasdesigner .spectrumcolorpicker { - -} - .canvasdesigner .float-panel .sp-container.sp-flat { background-color: transparent; border: none; @@ -827,9 +765,7 @@ iframe { } .flip:before { - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -o-transform: rotate(90deg); + transform: rotate(90deg); } /*************************************************/ @@ -896,9 +832,6 @@ iframe { height: 78px; cursor: pointer; background-position: center center; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; background-size: cover; border: 2px solid #F3F2F2; } @@ -970,7 +903,6 @@ iframe { font-size: 23px; cursor: pointer; opacity: 0; - filter: alpha(opacity=0); transform: translate(-300px, 0) scale(4); direction: ltr; } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/application/umb-language-picker.less b/src/Umbraco.Web.UI.Client/src/less/components/application/umb-language-picker.less index c950b01602..527c742382 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/application/umb-language-picker.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/application/umb-language-picker.less @@ -57,7 +57,6 @@ } .umb-language-picker__dropdown a.umb-language-picker__dropdown-item--current { - //background-color: @gray-10; padding-left: 16px; border-left: 4px solid @ui-light-active-border; color:@ui-light-active-type; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/editor.less b/src/Umbraco.Web.UI.Client/src/less/components/editor.less index f165c0c865..b1716de86c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/editor.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/editor.less @@ -63,14 +63,14 @@ // header .umb-editor-header { - background: @white; - position: absolute; - padding-left: 20px; - z-index: @zIndexEditor; - border-bottom: 1px solid @gray-9; - width: 100%; - box-sizing: border-box; - height: @editorHeaderHeight; + background: @white; + position: absolute; + padding-left: 20px; + z-index: @zIndexEditor; + border-bottom: 1px solid @gray-9; + width: 100%; + box-sizing: border-box; + height: @editorHeaderHeight; } .umb-editor-header__back { @@ -84,6 +84,14 @@ display: flex; } +.umb-editor-header__name-and-description { + margin-right: 20px; +} + +.-split-view-active .umb-editor-header__name-and-description { + margin-right: 0; +} + .umb-editor-header__name-wrapper ng-form { flex: 1 1 auto; } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/editor/umb-editor.less b/src/Umbraco.Web.UI.Client/src/less/components/editor/umb-editor.less index f1fa8245ea..a9d879ab7f 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/editor/umb-editor.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/editor/umb-editor.less @@ -17,9 +17,6 @@ z-index: @zIndexEditor; } -.umb-editor--animating { - //will-change: transform, width, left; -} .umb-editor--infinityMode { transform: none; will-change: transform; @@ -30,26 +27,21 @@ } .umb-editor--outOfRange { - //left:0; transform: none; display: none; will-change: auto; transition: display 0s 320ms; } .umb-editor--level0 { - //left:0; transform: none; } .umb-editor--level1 { - //left:60px; transform: translateX(60px); } .umb-editor--level2 { - //left:120px; transform: translateX(120px); } .umb-editor--level3 { - //left:180px; transform: translateX(180px); } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/notifications/umb-notifications.less b/src/Umbraco.Web.UI.Client/src/less/components/notifications/umb-notifications.less index b29c340dce..9e16eca414 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/notifications/umb-notifications.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/notifications/umb-notifications.less @@ -1,35 +1,31 @@ .umb-notifications { - z-index: 1000; - position: absolute; - bottom: @editorFooterHeight; - left: 0; - right: 0; - border-bottom: none; - margin: auto; - padding: 0px; - border: none; - background: none; - border-radius: 0; + z-index: 1000; + position: absolute; + bottom: @editorFooterHeight; + left: 0; + right: 0; + + @media (min-width: 1101px) { + left: 360px; + } } .umb-notifications__notifications { - list-style: none; - margin: 0; - position: relative; -} - + list-style: none; + margin: 0; + position: relative; +} .umb-notifications__notification { - padding: 5px 20px; - text-shadow: none; - font-size: 14px; - border: none; - border-radius: 0; - position: relative; - margin-bottom: 0; + padding: 5px 20px; + text-shadow: none; + font-size: 14px; + border: none; + position: relative; + margin-bottom: 0; } .umb-notifications__notification.-extra-padding { - padding-top: 20px; - padding-bottom: 20px; + padding-top: 20px; + padding-bottom: 20px; } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-actions.less b/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-actions.less index 40a0cc41e3..14544ded10 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-actions.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-actions.less @@ -23,7 +23,6 @@ .icon { font-size: 18px; vertical-align: middle; - //color: @gray-3; } } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree-item.less b/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree-item.less index 53e724cf54..b372d41eb4 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree-item.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree-item.less @@ -46,11 +46,7 @@ } // active is equivilant to selected, its the item that is begin affected by the actions performed in the right-click-dialog. -.umb-tree-item.active { - -} .umb-tree-item.active > .umb-tree-item__inner { - //background: @ui-selected; color: @ui-selected-type; a { color: @ui-selected-type; @@ -68,8 +64,6 @@ border: 2px solid fade(white, 80%); } &:hover { - //background: @ui-selected-hover; - //border-color: @ui-selected-border-hover;// dont hover border, cause its cant be deselected in current code. color: @ui-selected-type-hover; a { color: @ui-selected-type-hover; @@ -95,7 +89,6 @@ i { background: @ui-active-type; - //border-color: @ui-active; transition: opacity 120ms ease; } } @@ -104,14 +97,10 @@ .umb-tree-icon, ins { color: @ui-active-type !important; - //background-color: @ui-active; - //border-color: @ui-active; } } .umb-tree-item.current-not-active > .umb-tree-item__inner { - background: @ui-active-blur; - color:@ui-active-type; - + color:@ui-active-type; } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree.less b/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree.less index eaa26b5d1a..8d740a866c 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/tree/umb-tree.less @@ -14,11 +14,6 @@ a, a:hover { outline: none; text-decoration: none; - - // TODO: => confirm not in use -// &.noSpr { -// background-position: 0 -// } } ins { @@ -31,7 +26,6 @@ transition: color 120ms; &:hover { - //opacity: .7; color: @ui-option-type-hover; } } @@ -171,8 +165,8 @@ body.touch .umb-tree { } } -.umb-tree .umb-tree-node-checked i[class^="icon-"], -.umb-tree .umb-tree-node-checked i[class*=" icon-"] { +.umb-tree .umb-tree-node-checked > .umb-tree-item__inner > i[class^="icon-"], +.umb-tree .umb-tree-node-checked > .umb-tree-item__inner > i[class*=" icon-"] { font-family: 'icomoon' !important; color: @green !important; @@ -219,15 +213,15 @@ body.touch .umb-tree { // Tree item states // ------------------------- .not-published { - > i.icon, - a { + > .umb-tree-item__inner > i.icon, + > .umb-tree-item__inner > a { opacity: 0.6; } } .not-allowed { - > i.icon, - a { + > .umb-tree-item__inner > i.icon, + > .umb-tree-item__inner > a { cursor: not-allowed; } } diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-content-grid.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-content-grid.less index ccf86e7ea6..d2fa2be0c7 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-content-grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-content-grid.less @@ -10,18 +10,13 @@ flex: 0 1 200px; cursor: pointer; position: relative; - //margin: 10px; user-select: none; box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16); border-radius: 3px; } -.umb-content-grid__item.-selected { - //box-shadow: 0 2px 8px 0 rgba(0,0,0,0.35); - - //color:@ui-selected-type; - +.umb-content-grid__item.-selected { &::before { content: ""; position: absolute; @@ -49,15 +44,9 @@ .umb-content-grid__icon[class^="icon-"], .umb-content-grid__icon[class*=" icon-"] { font-size: 20px; -//color: @gray-8; margin-right: 5px; } -.umb-content-grid__icon.-light { - //color: @gray-5; -} - - .umb-content-grid__content { box-sizing: border-box; padding: 15px; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-editor-navigation-item.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-editor-navigation-item.less index 0372eeef4b..09c8fa9aa0 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-editor-navigation-item.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-editor-navigation-item.less @@ -14,7 +14,7 @@ flex-direction: column; align-items: center; justify-content: center; - height: @editorHeaderHeight; + height: calc(~'@{editorHeaderHeight}' - ~'1px'); // need to offset the 1px border-bottom on .umb-editor-header - avoids overflowing top of the container position: relative; color: @ui-active-type; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-file-dropzone.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-file-dropzone.less index 63190f0ed3..b5021d7c38 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-file-dropzone.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-file-dropzone.less @@ -13,8 +13,6 @@ color: @gray-3; margin: 0 0 20px 0; position: relative; - -webkit-transition: height 0.8s; - -moz-transition: height 0.8s; transition: height 0.8s; .illustration { width: 300px; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-folder-grid.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-folder-grid.less index 32100247a0..ffdd4d9322 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-folder-grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-folder-grid.less @@ -14,7 +14,6 @@ padding: 10px 20px; box-sizing: border-box; flex: 1 1 200px; - //border: 2px solid transparent; transition: border 0.2s; position: relative; justify-content: space-between; @@ -27,11 +26,7 @@ } .umb-folder-grid__folder.-selected { - //box-shadow: 0 2px 8px 0 darken(@ui-selected-border, 20); - - //background: @ui-selected; color:@ui-selected-type; - //border-color:@ui-selected-border; &::before { content: ""; @@ -49,7 +44,6 @@ &:hover { color:@ui-selected-type-hover; - //border-color:@ui-selected-border-hover; } } @@ -73,37 +67,13 @@ .umb-folder-grid__folder-icon[class*=" icon-"] { font-size: 20px; margin-right: 15px; - //color: @black; } .umb-folder-grid__folder-name { font-size: 13px; - //color: @black; font-weight: bold; } .umb-folder-grid__folder-name:hover { text-decoration: underline; } -/* -.umb-folder-grid__action { - opacity: 0; - border: 2px solid @white; - width: 26px; - height: 26px; - background: @gray-3; - border-radius: 50px; - box-sizing: border-box; - display: flex; - justify-content: center; - align-items: center; - color: @white; - margin-left: 7px; - cursor: pointer; -} - -.umb-folder-grid__action.-selected { - opacity: 1; - background: @green; -} -*/ diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less index e7f24d08fa..d6db204ff2 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-grid.less @@ -604,7 +604,6 @@ -webkit-appearance: none; background-image: linear-gradient(to bottom,#e6e6e6,#bfbfbf); background-repeat: repeat-x; - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0); zoom: 1; border-color: #bfbfbf #bfbfbf #999; border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); @@ -836,8 +835,6 @@ .preview-rows { display: inline-block; position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; width: 125px; margin: 15px; @@ -901,8 +898,6 @@ .preview-col { display: block; float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; width: 33.3%; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-media-grid.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-media-grid.less index fc6de2bf75..7a6cd043a4 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-media-grid.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-media-grid.less @@ -217,4 +217,6 @@ .umb-media-grid__item:hover .umb-media-grid__edit { opacity: 1; - } + text-decoration: none; + box-shadow: 0 1px 2px rgba(0,0,0,.2); +} diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less index 631ef5c2bd..e0abd3fd26 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less @@ -62,6 +62,7 @@ -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; + user-select: none; } .umb-nested-content__heading { diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-panel-group.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-panel-group.less new file mode 100644 index 0000000000..487c1881b1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-panel-group.less @@ -0,0 +1,111 @@ +.umb-panel-group__details { + border-radius: 3px; + margin-bottom: 40px; +} + +.umb-panel-group__details-group { + background: @white; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16); + border-radius: @baseBorderRadius; +} + +.umb-panel-group__details-group-title { + background-color: @blueExtraDark; + padding: 10px 20px; + display: flex; + align-items: center; + justify-content: space-between; + border-radius: 3px 3px 0 0; +} + +.umb-panel-group__details-group-name { + font-size: 16px; + color: @white; + font-weight: bold; +} + +.umb-panel-group__details-checks { + border-top: none; + border-radius: 0 0 3px 3px; + background: @white; +} + +.umb-panel-group__details-check { + position: relative; +} + +.umb-panel-group__details-check-title { + padding: 15px 20px; +} + +.umb-panel-group__details-check-name { + font-size: 15px; + color: @black; + font-weight: bold; + margin-bottom: 3px; +} + +.umb-panel-group__details-check-description { + font-size: 13px; + color: @gray-3; + line-height: 1.6em; +} + +.umb-panel-group__details-status { + padding: 15px 0; + display: flex; + border-top: 2px solid @gray-10; +} + +.umb-panel-group__details-status-overlay { + background: @white; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0.9; +} + +.umb-panel-group__details-status:last-child { + border-bottom: none; +} + +.umb-panel-group__details-status-icon-container { + flex: 0 0 50px; + display: flex; + justify-content: center; + padding: 0 20px; +} + +.umb-panel-group__details-status-content { + padding: 0 20px; + flex: 1 1 auto; +} + +.umb-panel-group__details-status-text { + line-height: 1.6em; +} + +.umb-panel-group__details-status-actions { + display: flex; + flex-direction: column; + margin-top: 10px; +} + +.umb-panel-group__details-status-action { + background-color: @gray-10; + padding: 10px; + margin-bottom: 10px; + border-radius: 3px; +} + +.umb-panel-group__details-status-action:last-child { + margin-bottom: 0; +} + +.umb-panel-group__details-status-action-description { + margin-top: 5px; + font-size: 12px; + padding-left: 165px; +} diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-progress-circle.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-progress-circle.less index 5e98075fc2..03816637a7 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-progress-circle.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-progress-circle.less @@ -4,10 +4,6 @@ .umb-progress-circle__view-box { position: absolute; - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); transform: rotate(-90deg); } diff --git a/src/Umbraco.Web.UI.Client/src/less/dashboards.less b/src/Umbraco.Web.UI.Client/src/less/dashboards.less deleted file mode 100644 index 7bf38e1583..0000000000 --- a/src/Umbraco.Web.UI.Client/src/less/dashboards.less +++ /dev/null @@ -1,136 +0,0 @@ -.umb-dashboards-forms-install { - background: url('../img/forms/installer-background.png'); - background-repeat: repeat-x; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - padding-top: 30px; - background-color: @white; - overflow: auto; - - small { - font-size: 14px; - opacity: .5; - } - - .umb-loader { - width: 640px; - height: 4px; - } - - .video_player{ - video { - width: 100%; - max-width: 640px; - border: 1px solid @gray-9; - border-left: none; - border-bottom: none; - -moz-box-sizing:border-box; - box-sizing:border-box; - } - - input[type="range"] { - position: relative; - z-index: 999; - max-width: 640px; - width: 100%; - margin: 0 auto; - opacity: 0; - cursor: pointer; - } - - input[type="range"]::-ms-fill-lower, input[type="range"]::-ms-fill-upper { - background: transparent; - } - - input[type="range"]::-ms-tooltip { - display: none; - } - - .video-controls { - position: relative; - max-width: 640px; - height: 20px; - margin: -13px auto 40px; - opacity: .8; - } - - .loader { - display: block; - width: 100%; - height: 3px; - margin-top: -13px; - background-color: @gray-10; - } - - .progress-bar { - display: block; - -moz-box-sizing:border-box; - box-sizing: border-box; - max-width: 100%; - width: 200px; - height: 100%; - background: @gray-5; - } - - .video-controls, .loader, .progress-bar { - -webkit-transition: all 150ms ease-in-out; - transition: all 150ms ease-in-out; - } - - .progress-bar { - transition-property: background; - } - - .video_player video:hover + .video-controls, .video-controls:hover { - margin-top: -19px; - margin-bottom: 46px; - opacity: 1; - } - - .video_player video:hover + .video-controls .loader, .video-controls:hover .loader { - height: 8px; - } - - .video_player video:hover + .video-controls .progress-bar, .video-controls:hover .progress-bar { - background: @blueMid; - } - } - - .forms-install-button { - .btn { - padding: 14px 40px; - } - } - - .installer-top { - overflow: hidden; - margin: 0 auto 30px; - height: 80px; - line-height: 80px; - text-align: center; - position: relative; - display: flex; - justify-content: center; - - .icon, h3 { - display: inline-block; - } - - .icon { - font-size: 80px; - } - - h3 { - margin: 0 0 0 20px; - line-height: 80px; - font-weight: 700; - font-size: 36px; - letter-spacing: -1px; - } - } - - -} diff --git a/src/Umbraco.Web.UI.Client/src/less/dashboards/examine-management.less b/src/Umbraco.Web.UI.Client/src/less/dashboards/examine-management.less new file mode 100644 index 0000000000..0c219af1e4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/less/dashboards/examine-management.less @@ -0,0 +1,15 @@ +.examine-management { + + .form-search { + + .search-query { + flex: 1 1 auto; + width: auto; + } + + button.btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + } +} diff --git a/src/Umbraco.Web.UI.Client/src/less/getstarted.less b/src/Umbraco.Web.UI.Client/src/less/dashboards/getstarted.less similarity index 100% rename from src/Umbraco.Web.UI.Client/src/less/getstarted.less rename to src/Umbraco.Web.UI.Client/src/less/dashboards/getstarted.less diff --git a/src/Umbraco.Web.UI.Client/src/less/dashboards/healthcheck.less b/src/Umbraco.Web.UI.Client/src/less/dashboards/healthcheck.less new file mode 100644 index 0000000000..449cc4066b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/less/dashboards/healthcheck.less @@ -0,0 +1,134 @@ + +.umb-healthcheck { + display: flex; + flex-wrap: wrap; + margin-left: -10px; + margin-right: -10px; +} + +.umb-healthcheck-help-text { + line-height: 1.6em; + max-width: 750px; +} + +.umb-healthcheck-action-bar { + display: flex; + justify-content: flex-end; + margin-bottom: 20px; +} + + +/* Group and states */ +.umb-healthcheck-group { + display: flex; + flex-wrap: wrap; + flex-direction: column; + background: @white; + border-radius: 3px; + padding: 20px; + box-sizing: border-box; + text-align: center; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16); + height: 100%; + box-sizing: border-box; +} + +.umb-healthcheck-group:hover { + box-shadow: 0 3px 6px 0 rgba(0,0,0,0.16); + cursor: pointer; + transition: box-shadow 150ms ease-in-out; +} + +.umb-healthcheck-group__load-container { + position: relative; + height: 30px; + margin-top: 15px; + margin-bottom: 16px; +} + + +/* Title */ +.umb-healthcheck-title { + font-size: 14px; + font-weight: bold; +} + + +/* Messages */ +.umb-healthcheck-messages { + margin-top: 15px; +} + +.umb-healthcheck-message { + position: relative; + background: @gray-10; + border-radius: 50px; + display: inline-flex; + align-items: center; + padding-left: 8px; + padding-right: 8px; + margin-bottom: 5px; + color: @black; + font-weight: bold; + font-size: 13px; +} + +.umb-healthcheck-message i { + font-size: 15px; + margin-right: 3px; +} + +.umb-healthcheck-details-link { + color: @turquoise-d1; +} + +.umb-healthcheck-details-link:hover { + text-decoration: none; + color: @turquoise-d1; +} + + +/* Helpers */ +.align-self-center { + align-self: center; +} + + +/* Spacing for boxes */ +.umb-air { + flex: 0 0 auto; + flex-basis: 100%; + max-width: 100%; + padding: 10px; + box-sizing: border-box; + + @media (min-width: 500px) { + flex-basis: 50%; + max-width: 50%; + } + + @media (min-width: 768px) { + flex-basis: 20%; + max-width: 20%; + } +} + + +/* DETAILS */ + +.umb-healthcheck-back-link { + font-weight: bold; + color: @black; +} + +.umb-healthcheck-status-icon { + font-size: 20px; + margin-top: 2px; +} + +.umb-healthcheck-status-icon.-large { + width: 70px; + height: 70px; + font-size: 30px; + background-color: @white; +} diff --git a/src/Umbraco.Web.UI.Client/src/less/dashboards/umbraco-forms.less b/src/Umbraco.Web.UI.Client/src/less/dashboards/umbraco-forms.less new file mode 100644 index 0000000000..b51bfeffa9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/less/dashboards/umbraco-forms.less @@ -0,0 +1,150 @@ +.umb-dashboards-forms-install { + background: url('../img/forms/installer-background.png'); + background-repeat: repeat-x; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + padding-top: 30px; + background-color: @white; + overflow: auto; + display: flex; + + small { + font-size: 14px; + opacity: .5; + } + + .umb-loader { + width: 640px; + height: 4px; + } + + .video_player { + video { + width: 100%; + max-width: 640px; + border: 1px solid @gray-9; + border-left: none; + border-bottom: none; + box-sizing: border-box; + } + + input[type="range"] { + position: relative; + z-index: 999; + max-width: 640px; + width: 100%; + margin: 0 auto; + opacity: 0; + cursor: pointer; + } + + input[type="range"]::-ms-fill-lower, input[type="range"]::-ms-fill-upper { + background: transparent; + } + + input[type="range"]::-ms-tooltip { + display: none; + } + + .video-controls { + position: relative; + max-width: 640px; + height: 20px; + margin: -13px auto 40px; + opacity: .8; + } + + .loader { + display: block; + width: 100%; + height: 3px; + margin-top: -13px; + background-color: @gray-10; + } + + .progress-bar { + display: block; + box-sizing: border-box; + max-width: 100%; + width: 200px; + height: 100%; + background: @gray-5; + } + + .video-controls, .loader, .progress-bar { + transition: all 150ms ease-in-out; + } + + .progress-bar { + transition-property: background; + } + + .video_player video:hover + .video-controls, .video-controls:hover { + margin-top: -19px; + margin-bottom: 46px; + opacity: 1; + } + + .video_player video:hover + .video-controls .loader, .video-controls:hover .loader { + height: 8px; + } + + .video_player video:hover + .video-controls .progress-bar, .video-controls:hover .progress-bar { + background: @blueMid; + } + } + + .forms-install-button { + .btn { + padding: 14px 40px; + } + } + + .step-text { + font-size: 16px; + line-height: 1.5; + color: #4c4c4c; + margin-bottom: 20px; + } + + .installing { + position: relative; + } + + .installer-wrapper { + max-width: 800px; + text-align: center; + margin: auto; + padding: 20px; + } + + .installer-intro { + overflow: hidden; + margin: 0 auto 30px; + height: 80px; + line-height: 80px; + text-align: center; + position: relative; + display: flex; + justify-content: center; + + .icon, h3 { + display: inline-block; + } + + .icon { + font-size: 80px; + } + + h3 { + margin: 0 0 0 20px; + line-height: 80px; + font-weight: 700; + font-size: 36px; + letter-spacing: -1px; + } + } +} diff --git a/src/Umbraco.Web.UI.Client/src/less/fonts.less b/src/Umbraco.Web.UI.Client/src/less/fonts.less index 613794d1bf..8c40bc4ec9 100644 --- a/src/Umbraco.Web.UI.Client/src/less/fonts.less +++ b/src/Umbraco.Web.UI.Client/src/less/fonts.less @@ -7,15 +7,19 @@ Black: font-weight: 900; */ +@fontPath: '../fonts'; +@latoPath: '@{fontPath}/lato'; +@openSansPath: '@{fontPath}/opensans'; + /* Webfont: LatoLatin-Black */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-Black.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-Black.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-Black.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Black.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Black.ttf') format('truetype'); + src: local('LatoLatin Black'), + local('LatoLatin-Black'), + url('@{latoPath}/LatoLatin-Black.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-Black.woff') format('woff'); /* Modern Browsers */ font-style: normal; + font-display: swap; font-weight: 900; text-rendering: optimizeLegibility; } @@ -23,91 +27,91 @@ /* Webfont: LatoLatin-BlackItalic */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-BlackItalic.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-BlackItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-BlackItalic.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-BlackItalic.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-BlackItalic.ttf') format('truetype'); + src: local('LatoLatin BlackItalic'), + local('LatoLatin-BlackItalic'), + url('@{latoPath}/LatoLatin-BlackItalic.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-BlackItalic.woff') format('woff'); /* Modern Browsers */ font-style: italic; font-weight: 900; + font-display: swap; text-rendering: optimizeLegibility; } /* Webfont: LatoLatin-Bold */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-Bold.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-Bold.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Bold.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Bold.ttf') format('truetype'); + src: local('LatoLatin Bold'), + local('LatoLatin-Bold'), + url('@{latoPath}/LatoLatin-Bold.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-Bold.woff') format('woff'); /* Modern Browsers */ font-style: normal; - font-weight: bold; + font-weight: 700; + font-display: swap; text-rendering: optimizeLegibility; } /* Webfont: LatoLatin-BoldItalic */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-BoldItalic.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-BoldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-BoldItalic.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-BoldItalic.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-BoldItalic.ttf') format('truetype'); + src: local('LatoLatin BoldItalic'), + local('LatoLatin-BoldItalic'), + url('@{latoPath}/LatoLatin-BoldItalic.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-BoldItalic.woff') format('woff'); /* Modern Browsers */ font-style: italic; - font-weight: bold; + font-weight: 700; + font-display: swap; text-rendering: optimizeLegibility; } /* Webfont: LatoLatin-Italic */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-Italic.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-Italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-Italic.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Italic.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Italic.ttf') format('truetype'); + src: local('LatoLatin Italic'), + local('LatoLatin-Italic'), + url('@{latoPath}/LatoLatin-Italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-Italic.woff') format('woff'); /* Modern Browsers */ font-style: italic; - font-weight: normal; + font-weight: 400; + font-display: swap; text-rendering: optimizeLegibility; } /* Webfont: LatoLatin-Regular */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-Regular.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-Regular.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Regular.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Regular.ttf') format('truetype'); + src: local('LatoLatin Regular'), + local('LatoLatin-Regular'), + url('@{latoPath}/LatoLatin-Regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-Regular.woff') format('woff'); /* Modern Browsers */ font-style: normal; - font-weight: normal; + font-weight: 400; + font-display: swap; text-rendering: optimizeLegibility; } /* Webfont: LatoLatin-Light */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-Light.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-Light.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-Light.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Light.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-Light.ttf') format('truetype'); + src: local('LatoLatin Light'), + local('LatoLatin-Light'), + url('@{latoPath}/LatoLatin-Light.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-Light.woff') format('woff'); /* Modern Browsers */ font-style: normal; font-weight: 300; + font-display: swap; text-rendering: optimizeLegibility; } /* Webfont: LatoLatin-LightItalic */ @font-face { font-family: 'Lato'; - src: url('../fonts/lato/LatoLatin-LightItalic.eot'); /* IE9 Compat Modes */ - src: url('../fonts/lato/LatoLatin-LightItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - //url('../fonts/lato/LatoLatin-LightItalic.woff2') format('woff2'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-LightItalic.woff') format('woff'), /* Modern Browsers */ - url('../fonts/lato/LatoLatin-LightItalic.ttf') format('truetype'); + src: local('LatoLatin LightItalic'), + local('LatoLatin-LightItalic'), + url('@{latoPath}/LatoLatin-LightItalic.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{latoPath}/LatoLatin-LightItalic.woff') format('woff'); /* Modern Browsers */ font-style: italic; font-weight: 300; + font-display: swap; text-rendering: optimizeLegibility; } @@ -122,24 +126,22 @@ @font-face { font-family: 'Open Sans'; - src: url('../fonts/opensans/OpenSans-Regular-webfont.eot'); - src: local('Open Sans'), local('OpenSans'), - url('../fonts/opensans/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/opensans/OpenSans-Regular-webfont.ttf') format('truetype'), - url('../fonts/opensans/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); + src: local('Open Sans'), + local('OpenSans'), + url('@{openSansPath}/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{openSansPath}/OpenSans-Regular.woff') format('woff'); /* Modern Browsers */ font-weight: 400; + font-display: swap; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('../fonts/opensans/OpenSans-Semibold-webfont.eot'); - src: local('Open Sans Semibold'), local('OpenSans-Semibold'), - url('../fonts/opensans/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/opensans/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('../fonts/opensans/OpenSans-Semibold-webfont.svg#open_sanssemibold') format('svg'); + src: local('Open Sans'), + local('OpenSans'), + url('@{openSansPath}/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ + url('@{openSansPath}/OpenSans-Semibold.woff') format('woff'); /* Modern Browsers */ font-weight: 600; + font-display: swap; font-style: normal; } - - diff --git a/src/Umbraco.Web.UI.Client/src/less/forms.less b/src/Umbraco.Web.UI.Client/src/less/forms.less index 6507b22397..45188ca02e 100644 --- a/src/Umbraco.Web.UI.Client/src/less/forms.less +++ b/src/Umbraco.Web.UI.Client/src/less/forms.less @@ -258,7 +258,6 @@ input[type="color"], input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; - *margin-top: 0; /* IE7 */ margin-top: 1px \9; /* IE8-9 */ line-height: normal; } @@ -277,8 +276,7 @@ input[type="checkbox"] { // Set the height of select and file controls to match text inputs select, input[type="file"] { - height: @inputHeight; /* In IE7, the height of the select element cannot be changed by height, only font-size */ - *margin-top: 4px; /* For IE7, add top margin to align select with labels */ + height: @inputHeight; line-height: @inputHeight; } @@ -526,7 +524,6 @@ input[type="checkbox"][readonly] { .help-inline { display: inline-block; - .ie7-inline-block(); vertical-align: middle; padding-left: 5px; } @@ -649,7 +646,6 @@ div.help { input.search-query { padding-right: 4px \9; padding-left: 14px; - padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin: 0; // Remove the default margin on all inputs } @@ -684,7 +680,6 @@ input.search-query { .input-prepend, .input-append { display: inline-block; - .ie7-inline-block(); margin-bottom: 0; vertical-align: top; } @@ -760,12 +755,7 @@ legend + .control-group { } // Move over all input controls and content .controls { - // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend - // don't inherit the margin of the parent, in this case .controls - *display: inline-block; - *padding-left: 20px; margin-left: @horizontalComponentOffset; - *margin-left: 0; &:first-child { *padding-left: @horizontalComponentOffset; } diff --git a/src/Umbraco.Web.UI.Client/src/less/gridview.less b/src/Umbraco.Web.UI.Client/src/less/gridview.less index 469ab2becf..bb684cd69b 100644 --- a/src/Umbraco.Web.UI.Client/src/less/gridview.less +++ b/src/Umbraco.Web.UI.Client/src/less/gridview.less @@ -21,9 +21,7 @@ overflow: hidden; padding: 5px; border-radius:5px; - -webkit-box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); - -moz-box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); - box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); + box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); } .usky-grid .ui-sortable-helper *{ @@ -91,8 +89,6 @@ .usky-grid .td.last { border-right:1px dashed rgba(182, 182, 182, 0.0) !important; } - .usky-grid .tr { - } .usky-grid .middle { text-align: center; @@ -106,17 +102,6 @@ } - - // COLUMN - // ------------------------- - .usky-grid .usky-column { - - } - .usky-grid .usky-column.last { - - } - - // ROW // ------------------------- .usky-grid .usky-row{ @@ -128,12 +113,6 @@ border-bottom:1px dashed rgba(182, 182, 182, 0) !important; } -/* -.usky-grid .selectedRow { - border: 1px solid rgba(182, 182, 182, 0.3); -}*/ - - // CELL @@ -146,8 +125,6 @@ .usky-grid .cell-tools { transition: all .20s ease-in-out; - -moz-transition: all .20s ease-in-out; - -webkit-transition: all .20s ease-in-out; position: absolute; bottom: 0; top: 0; @@ -217,33 +194,13 @@ // CONTROL // ------------------------- .usky-grid .usky-control { - /*transition: all .20s ease-in-out; - -moz-transition: all .20s ease-in-out; - -webkit-transition: all .20s ease-in-out;*/ position:relative; display:block; - - /* - border: 1px dashed rgba(255, 0, 0, .0); - border-bottom-width: 1px; - */ - - -webkit-background-clip: padding-box; /* for Safari */ - background-clip: padding-box; /* for IE9+, Firefox 4+, Opera, Chrome */ + background-clip: padding-box; margin: 10px 0 0 0; } -.usky-grid .usky-control:hover{ - /*border: 1px solid rgba(182, 182, 182, 0.3);*/ - /*border-bottom: 1px solid rgba(182, 182, 182, 0.3);*/ -} - -.usky-grid .usky-control-placeholder:hover{ - /*border: 1px solid rgba(182, 182, 182, 0);*/ - /*border-bottom:1px solid rgba(182, 182, 182, 0.0) !important;*/ -} - .usky-grid .warnhighlight, .usky-grid .td.last.warnhighlight{ border: 1px dashed @red !important; } @@ -395,10 +352,10 @@ } .usky-grid .iconBox:hover, .usky-grid .iconBox:hover *{ - background: @blueMid !important; - color: @white !important; - border-color: @blueMid !important; - text-decoration:none; + background: @blueMid !important; + color: @white !important; + border-color: @blueMid !important; + text-decoration:none; } .usky-grid .iconBox a:hover { @@ -408,21 +365,14 @@ .usky-grid .iconBox.selected { -webkit-appearance: none; - background-image: -moz-linear-gradient(top,#e6e6e6,#bfbfbf); background-image: -webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf)); background-image: -webkit-linear-gradient(top,#e6e6e6,#bfbfbf); - background-image: -o-linear-gradient(top,#e6e6e6,#bfbfbf); background-image: linear-gradient(to bottom,#e6e6e6,#bfbfbf); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0); zoom: 1; border-color: #bfbfbf #bfbfbf #999; border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05); - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; background: transparent; } @@ -482,8 +432,6 @@ padding: -1px; position: absolute; margin: -1px -1px 0 -1px; - -webkit-box-shadow: 2px 2px 10px 0px rgba(50, 50, 50, 0.14); - -moz-box-shadow: 2px 2px 10px 0px rgba(50, 50, 50, 0.14); box-shadow: 2px 2px 10px 0px rgba(50, 50, 50, 0.14); z-index: 9999999; } @@ -651,8 +599,6 @@ display: inline-block; position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; width: 125px; margin: 35px 40px 15px 0; @@ -719,8 +665,6 @@ display: block; float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; width: 33.3%; /* temp value */ height: 10px; @@ -772,9 +716,7 @@ top: 0; left: 50%; z-index: 6660; - -webkit-box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); - -moz-box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); - box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); + box-shadow: 3px 3px 12px 0px rgba(50, 50, 50, 0.45); } diff --git a/src/Umbraco.Web.UI.Client/src/less/hacks.less b/src/Umbraco.Web.UI.Client/src/less/hacks.less index 0bbb89a250..726b3fa5ed 100644 --- a/src/Umbraco.Web.UI.Client/src/less/hacks.less +++ b/src/Umbraco.Web.UI.Client/src/less/hacks.less @@ -59,7 +59,6 @@ iframe, .content-column-body { right: 0; margin: 0; opacity: 0; - filter: alpha(opacity=0); transform: translate(-300px, 0) scale(4); font-size: 23px; direction: ltr; diff --git a/src/Umbraco.Web.UI.Client/src/less/healthcheck.less b/src/Umbraco.Web.UI.Client/src/less/healthcheck.less deleted file mode 100644 index 23bbbf4931..0000000000 --- a/src/Umbraco.Web.UI.Client/src/less/healthcheck.less +++ /dev/null @@ -1,246 +0,0 @@ - -.umb-healthcheck { - display: flex; - flex-wrap: wrap; - margin-left: -10px; - margin-right: -10px; -} - -.umb-healthcheck-help-text { - line-height: 1.6em; - max-width: 750px; -} - -.umb-healthcheck-action-bar { - display: flex; - justify-content: flex-end; - margin-bottom: 20px; -} - - -/* Group and states */ -.umb-healthcheck-group { - display: flex; - flex-wrap: wrap; - flex-direction: column; - background: @white; - border-radius: 3px; - padding: 20px; - box-sizing: border-box; - text-align: center; - box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16); - height: 100%; - box-sizing: border-box; -} - -.umb-healthcheck-group:hover { - box-shadow: 0 3px 6px 0 rgba(0,0,0,0.16); - cursor: pointer; - transition: box-shadow 150ms ease-in-out; -} - -.umb-healthcheck-group__load-container { - position: relative; - height: 30px; - margin-top: 15px; - margin-bottom: 16px; -} - - -/* Title */ -.umb-healthcheck-title { - font-size: 14px; - font-weight: bold; -} - - -/* Messages */ -.umb-healthcheck-messages { - margin-top: 15px; -} - -.umb-healthcheck-message { - position: relative; - background: @gray-10; - border-radius: 50px; - display: inline-flex; - align-items: center; - padding-left: 8px; - padding-right: 8px; - margin-bottom: 5px; - color: @black; - font-weight: bold; - font-size: 13px; -} - -.umb-healthcheck-message i { - font-size: 15px; - margin-right: 3px; -} - -.umb-healthcheck-details-link { - color: @turquoise-d1; -} - -.umb-healthcheck-details-link:hover { - text-decoration: none; - color: @turquoise-d1; -} - - -/* Helpers */ -.align-self-center { - align-self: center; -} - - -/* Spacing for boxes */ -.umb-air { - flex: 0 0 auto; - flex-basis: 100%; - max-width: 100%; - padding: 10px; - box-sizing: border-box; - - @media (min-width: 500px) { - flex-basis: 50%; - max-width: 50%; - } - - @media (min-width: 768px) { - flex-basis: 20%; - max-width: 20%; - } -} - - -/* DETAILS */ - -.umb-healthcheck-back-link { - font-weight: bold; - color: @black; -} - -.umb-healthcheck-group__details { - border-radius: 3px; - margin-bottom: 40px; -} - -.umb-healthcheck-group__details-group { - background: @white; - box-shadow: 0 1px 1px 0 rgba(0,0,0,0.16); - border-radius: @baseBorderRadius; -} - -.umb-healthcheck-group__details-group-title { - background-color: @blueExtraDark; - padding: 10px 20px; - display: flex; - align-items: center; - justify-content: space-between; - border-radius: 3px 3px 0 0; -} - -.umb-healthcheck-group__details-group-name { - font-size: 16px; - color: @white; - font-weight: bold; -} - -.umb-healthcheck-group__details-checks { - border-top: none; - border-radius: 0 0 3px 3px; - background: @white; -} - -.umb-healthcheck-group__details-check { - position: relative; -} - -.umb-healthcheck-group__details-check-title { - padding: 15px 20px; -} - -.umb-healthcheck-group__details-check-name { - font-size: 15px; - color: @black; - font-weight: bold; - margin-bottom: 3px; -} - -.umb-healthcheck-group__details-check-description { - font-size: 13px; - color: @gray-3; - line-height: 1.6em; -} - -.umb-healthcheck-group__details-status { - padding: 15px 0; - display: flex; - border-top: 2px solid @gray-10; -} - -.umb-healthcheck-group__details-status-overlay { - background: @white; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - opacity: 0.9; -} - -.umb-healthcheck-group__details-status:last-child { - border-bottom: none; -} - -.umb-healthcheck-group__details-status-icon-container { - flex: 0 0 50px; - display: flex; - justify-content: center; - padding: 0 20px; -} - -.umb-healthcheck-status-icon { - font-size: 20px; - margin-top: 2px; -} - -.umb-healthcheck-status-icon.-large { - width: 70px; - height: 70px; - font-size: 30px; - background-color: @white; -} - -.umb-healthcheck-group__details-status-content { - padding: 0 20px; - flex: 1 1 auto; -} - -.umb-healthcheck-group__details-status-text { - line-height: 1.6em; -} - -.umb-healthcheck-group__details-status-actions { - display: flex; - flex-direction: column; - margin-top: 10px; -} - -.umb-healthcheck-group__details-status-action { - background-color: @gray-10; - padding: 10px; - margin-bottom: 10px; - border-radius: 3px; -} - -.umb-healthcheck-group__details-status-action:last-child { - margin-bottom: 0; -} - -.umb-healthcheck-group__details-status-action-description { - margin-top: 5px; - font-size: 12px; - padding-left: 165px; -} diff --git a/src/Umbraco.Web.UI.Client/src/less/installer.less b/src/Umbraco.Web.UI.Client/src/less/installer.less index 485d20f9c3..798252c394 100644 --- a/src/Umbraco.Web.UI.Client/src/less/installer.less +++ b/src/Umbraco.Web.UI.Client/src/less/installer.less @@ -21,9 +21,6 @@ html { background: url('../img/installer.jpg') no-repeat center center fixed; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; background-size: cover; } @@ -153,9 +150,6 @@ input.ng-dirty.ng-invalid{border-color: #b94a48; color: #b94a48;} } .fade-hide, .fade-show { - -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; - -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; - -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; } .fade-hide { @@ -173,84 +167,23 @@ input.ng-dirty.ng-invalid{border-color: #b94a48; color: #b94a48;} .umb-loader{ -background-color: @white; -margin-top:0; -margin-left:-100%; --moz-animation-name:bounce_loadingProgressG; --moz-animation-duration:1s; --moz-animation-iteration-count:infinite; --moz-animation-timing-function:linear; --webkit-animation-name:bounce_loadingProgressG; --webkit-animation-duration:1s; --webkit-animation-iteration-count:infinite; --webkit-animation-timing-function:linear; --ms-animation-name:bounce_loadingProgressG; --ms-animation-duration:1s; --ms-animation-iteration-count:infinite; --ms-animation-timing-function:linear; --o-animation-name:bounce_loadingProgressG; --o-animation-duration:1s; --o-animation-iteration-count:infinite; --o-animationtiming-function:linear; -animation-name:bounce_loadingProgressG; -animation-duration:1s; -animation-iteration-count:infinite; -animation-timing-function:linear; -width:100%; -height: 5px; + background-color: @white; + margin-top:0; + margin-left:-100%; + animation-name:bounce_loadingProgressG; + animation-duration:1s; + animation-iteration-count:infinite; + animation-timing-function:linear; + width:100%; + height: 5px; } - - @-moz-keyframes bounce_loadingProgressG{ +@keyframes bounce_loadingProgressG{ 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @-webkit-keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @-ms-keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @-o-keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; + margin-left:-100%; } 100%{ - margin-left:100%; + margin-left:100%; } } @@ -317,4 +250,4 @@ select { #starterKits a.thumbnail img { position:relative; z-index:100; -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.Client/src/less/listview.less b/src/Umbraco.Web.UI.Client/src/less/listview.less index c0cb609afb..8b5a295752 100644 --- a/src/Umbraco.Web.UI.Client/src/less/listview.less +++ b/src/Umbraco.Web.UI.Client/src/less/listview.less @@ -54,9 +54,6 @@ .umb-listview table input[type="text"] { background: none; - -webkit-transition: all .5s; - -moz-transition: all .5s; - -o-transition: all .5s; transition: all .5s; width: 60px; padding: 4px 0 4px 20px; @@ -181,10 +178,6 @@ /* ---------- LAYOUTS ---------- */ -.list-view-layouts { - -} - .list-view-layout { display: flex; align-items: center; diff --git a/src/Umbraco.Web.UI.Client/src/less/main.less b/src/Umbraco.Web.UI.Client/src/less/main.less index bf30b26777..62ddb28041 100644 --- a/src/Umbraco.Web.UI.Client/src/less/main.less +++ b/src/Umbraco.Web.UI.Client/src/less/main.less @@ -98,10 +98,6 @@ h5.-black { display: block; color: @gray-8; text-decoration: none; - -webkit-transition: all 0.3s ease-in-out; - -moz-transition: all 0.3s ease-in-out; - -ms-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out; } @@ -379,8 +375,6 @@ table thead a { height: 100%; z-index: 5999; opacity: .6; - filter: alpha(opacity=6); - -webkit-box-shadow: inset 0 0 0 40px white,inset 0 0 0 41px rgba(0,0,0,0.2),inset 0 0 20px 41px rgba(0,0,0,0.2); box-shadow: inset 0 0 0 40px white,inset 0 0 0 41px rgba(0,0,0,0.2),inset 0 0 20px 41px rgba(0,0,0,0.2); } @@ -495,95 +489,32 @@ table thead a { // ------------------------ .umb-loader{ -background-color: @blue; -margin-top:0; -margin-left:-100%; --moz-animation-name:bounce_loadingProgressG; --moz-animation-duration:1s; --moz-animation-iteration-count:infinite; --moz-animation-timing-function:linear; --webkit-animation-name:bounce_loadingProgressG; --webkit-animation-duration:1s; --webkit-animation-iteration-count:infinite; --webkit-animation-timing-function:linear; --ms-animation-name:bounce_loadingProgressG; --ms-animation-duration:1s; --ms-animation-iteration-count:infinite; --ms-animation-timing-function:linear; --o-animation-name:bounce_loadingProgressG; --o-animation-duration:1s; --o-animation-iteration-count:infinite; --o-animationtiming-function:linear; -animation-name:bounce_loadingProgressG; -animation-duration:1s; -animation-iteration-count:infinite; -animation-timing-function:linear; -width:100%; -height:2px; + background-color: @blue; + margin-top:0; + margin-left:-100%; + animation-name:bounce_loadingProgressG; + animation-duration:1s; + animation-iteration-count:infinite; + animation-timing-function:linear; + width:100%; + height:2px; } - - @-moz-keyframes bounce_loadingProgressG{ +@keyframes bounce_loadingProgressG{ 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @-webkit-keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @-ms-keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @-o-keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; - } - - 100%{ - margin-left:100%; - } - - } - - @keyframes bounce_loadingProgressG{ - 0%{ - margin-left:-100%; + margin-left:-100%; } 100%{ - margin-left:100%; + margin-left:100%; } } .umb-loader-wrapper { - position: absolute; right: 0; left: 0; margin: 10px 0; overflow: hidden; - } .umb-loader-wrapper.-bottom { @@ -663,7 +594,6 @@ input[type=checkbox]:checked + .input-label--small { .visuallyhidden{ position: absolute !important; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); padding:0 !important; border:0 !important; diff --git a/src/Umbraco.Web.UI.Client/src/less/mixins.less b/src/Umbraco.Web.UI.Client/src/less/mixins.less index 0dadc906ef..20d4e8d1f8 100644 --- a/src/Umbraco.Web.UI.Client/src/less/mixins.less +++ b/src/Umbraco.Web.UI.Client/src/less/mixins.less @@ -10,7 +10,6 @@ // -------- // For clearing floats like a boss h5bp.com/q .clearfix { - *zoom: 1; &:before, &:after { display: table; @@ -42,31 +41,6 @@ margin-right: auto; } -// IE7 inline-block -// ---------------- -.ie7-inline-block() { - *display: inline; /* IE7 inline-block hack */ - *zoom: 1; -} - -// IE7 likes to collapse whitespace on either side of the inline-block elements. -// Ems because we're attempting to match the width of a space character. Left -// version is for form buttons, which typically come after other elements, and -// right version is for icons, which come before. Applying both is ok, but it will -// mean that space between those elements will be .6em (~2 space characters) in IE7, -// instead of the 1 space in other browsers. -.ie7-restore-left-whitespace() { - *margin-left: .3em; - - &:first-child { - *margin-left: 0; - } -} - -.ie7-restore-right-whitespace() { - *margin-right: .3em; -} - // Sizing shortcuts // ------------------------- .size(@height, @width) { @@ -190,18 +164,6 @@ background-color: @backgroundColor; border-color: @textColor; } - //SD: We could do this but need to get the colors right - /*input.ng-invalid { - &:-moz-placeholder { - color: lighten(@textColor, 50%) !important; - } - &:-ms-input-placeholder { - color: lighten(@textColor, 50%) !important; - } - &::-webkit-input-placeholder { - color: lighten(@textColor, 50%) !important; - } - }*/ } // CSS3 PROPERTIES @@ -209,31 +171,21 @@ // Border Radius .border-radius(@radius) { - -webkit-border-radius: @radius; - -moz-border-radius: @radius; - border-radius: @radius; + border-radius: @radius; } // Single Corner Border Radius .border-top-left-radius(@radius) { - -webkit-border-top-left-radius: @radius; - -moz-border-radius-topleft: @radius; - border-top-left-radius: @radius; + border-top-left-radius: @radius; } .border-top-right-radius(@radius) { - -webkit-border-top-right-radius: @radius; - -moz-border-radius-topright: @radius; - border-top-right-radius: @radius; + border-top-right-radius: @radius; } .border-bottom-right-radius(@radius) { - -webkit-border-bottom-right-radius: @radius; - -moz-border-radius-bottomright: @radius; - border-bottom-right-radius: @radius; + border-bottom-right-radius: @radius; } .border-bottom-left-radius(@radius) { - -webkit-border-bottom-left-radius: @radius; - -moz-border-radius-bottomleft: @radius; - border-bottom-left-radius: @radius; + border-bottom-left-radius: @radius; } // Single Side Border Radius @@ -256,66 +208,36 @@ // Drop shadows .box-shadow(@shadow) { - -webkit-box-shadow: @shadow; - -moz-box-shadow: @shadow; - box-shadow: @shadow; + box-shadow: @shadow; } // Transitions .transition(@transition) { - -webkit-transition: @transition; - -moz-transition: @transition; - -o-transition: @transition; - transition: @transition; + transition: @transition; } .transition-delay(@transition-delay) { - -webkit-transition-delay: @transition-delay; - -moz-transition-delay: @transition-delay; - -o-transition-delay: @transition-delay; - transition-delay: @transition-delay; + transition-delay: @transition-delay; } .transition-duration(@transition-duration) { - -webkit-transition-duration: @transition-duration; - -moz-transition-duration: @transition-duration; - -o-transition-duration: @transition-duration; - transition-duration: @transition-duration; + transition-duration: @transition-duration; } // Transformations .rotate(@degrees) { - -webkit-transform: rotate(@degrees); - -moz-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - -o-transform: rotate(@degrees); - transform: rotate(@degrees); + transform: rotate(@degrees); } .scale(@ratio) { - -webkit-transform: scale(@ratio); - -moz-transform: scale(@ratio); - -ms-transform: scale(@ratio); - -o-transform: scale(@ratio); - transform: scale(@ratio); + transform: scale(@ratio); } .translate(@x, @y) { - -webkit-transform: translate(@x, @y); - -moz-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); - -o-transform: translate(@x, @y); - transform: translate(@x, @y); + transform: translate(@x, @y); } .skew(@x, @y) { - -webkit-transform: skew(@x, @y); - -moz-transform: skew(@x, @y); - -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885 - -o-transform: skew(@x, @y); - transform: skew(@x, @y); - -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319 + transform: skew(@x, @y); + -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319 } .translate3d(@x, @y, @z) { - -webkit-transform: translate3d(@x, @y, @z); - -moz-transform: translate3d(@x, @y, @z); - -o-transform: translate3d(@x, @y, @z); - transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); } // Backface visibility @@ -331,25 +253,18 @@ // Background clipping // Heads up: FF 3.6 and under need "padding" instead of "padding-box" .background-clip(@clip) { - -webkit-background-clip: @clip; - -moz-background-clip: @clip; - background-clip: @clip; + background-clip: @clip; } // Background sizing .background-size(@size) { - -webkit-background-size: @size; - -moz-background-size: @size; - -o-background-size: @size; - background-size: @size; + background-size: @size; } // Box sizing .box-sizing(@boxmodel) { - -webkit-box-sizing: @boxmodel; - -moz-box-sizing: @boxmodel; - box-sizing: @boxmodel; + box-sizing: @boxmodel; } // User select @@ -391,7 +306,6 @@ // Opacity .opacity(@opacity) { opacity: @opacity / 100; - filter: ~"alpha(opacity=@{opacity})"; } @@ -428,7 +342,6 @@ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10 background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10 background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down } .vertical(@startColor: #555, @endColor: #333) { background-color: mix(@startColor, @endColor, 60%); @@ -438,7 +351,6 @@ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10 background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down } .directional(@startColor: #555, @endColor: #333, @deg: 45deg) { background-color: @endColor; @@ -456,7 +368,6 @@ background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor); background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor); background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback } .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { @@ -467,7 +378,6 @@ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback } .radial(@innerColor: #555, @outerColor: #333) { background-color: @outerColor; @@ -486,10 +396,6 @@ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); } } -// Reset filters for IE -.reset-filter() { - filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); -} @@ -500,14 +406,8 @@ // ------------------------- // Dividers (basically an hr) within dropdowns and nav lists .nav-divider(@top: @gray-8, @bottom: @white) { - // IE7 needs a set width since we gave a height. Restricting just - // to IE7 to keep the 1px left/right space in other browsers. - // It is unclear where IE is getting the extra space that we need - // to negative-margin away, but so it goes. - *width: 100%; height: 1px; margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px - *margin: -5px 0 5px; overflow: hidden; background-color: @top; border-bottom: 1px solid @bottom; @@ -516,15 +416,12 @@ // Button backgrounds // ------------------ .buttonBackground(@startColor, @hoverColor: @startColor, @textColor: #fff, @textColorHover: @textColor) { - // gradientBar will set the background to a pleasing blend of these, to support IE<=9 - //.gradientBar(@startColor, @endColor, @textColor); color: @textColor; border-color: @startColor @startColor darken(@startColor, 15%); border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%); - background-color: @startColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ - .reset-filter(); + background-color: @startColor; .caret { border-top-color: @textColor; @@ -541,13 +438,6 @@ color: @white; background-color: @sand-1; } - /* - // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves - &:active, - &.active { - background-color: darken(@endColor, 10%) e("\9"); - } - */ } // Navbar vertical align @@ -654,17 +544,14 @@ .offset (@columns) { margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2); - *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%); } .offsetFirstChild (@columns) { margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth); - *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%); } .span (@columns) { width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)); - *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%); } .row-fluid { @@ -674,7 +561,6 @@ .input-block-level(); float: left; margin-left: @fluidGridGutterWidth; - *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%); } [class*="span"]:first-child { margin-left: 0; diff --git a/src/Umbraco.Web.UI.Client/src/less/modals.less b/src/Umbraco.Web.UI.Client/src/less/modals.less index 8ef2c8c859..771be1bc2a 100644 --- a/src/Umbraco.Web.UI.Client/src/less/modals.less +++ b/src/Umbraco.Web.UI.Client/src/less/modals.less @@ -129,10 +129,7 @@ outline: none; top: 0 !important; left: -100% !important; - width: 0px !important; - -webkit-transition: left 0.3s linear, left 0.3s ease-out; - -moz-transition: opacity 0.3s linear, top 0.3s ease-out; - -o-transition: opacity 0.3s linear, top 0.3s ease-out; + width: 0 !important; transition: opacity 0.3s linear, top 0.3s ease-out; height: 100% !important; } @@ -149,10 +146,7 @@ .umb-modal-left.fade { top: 0 !important; left: -100% !important; - width: 0px !important; - -webkit-transition: left 0.3s linear, left 0.3s ease-out; - -moz-transition: opacity 0.3s linear, top 0.3s ease-out; - -o-transition: opacity 0.3s linear, top 0.3s ease-out; + width: 0 !important; transition: opacity 0.3s linear, top 0.3s ease-out; height: 100% !important; } diff --git a/src/Umbraco.Web.UI.Client/src/less/panel.less b/src/Umbraco.Web.UI.Client/src/less/panel.less index 29b05558cf..a8c1efe1d3 100644 --- a/src/Umbraco.Web.UI.Client/src/less/panel.less +++ b/src/Umbraco.Web.UI.Client/src/less/panel.less @@ -48,18 +48,20 @@ .form-search { flex: 1; - &__toggle{ + &__toggle { margin: 10px 0; display: flex; align-items: center; - input { - margin: 0; - } - label { + display: flex; + align-items: center; margin-left: 5px; margin-bottom: 0; + + input[type="checkbox"] { + margin: 0 5px 0 0; + } } } } @@ -142,9 +144,7 @@ /* tab buttons */ .umb-bottom-bar { background: @white; - -webkit-box-shadow: 0px -18px 20px rgba(255, 255, 255, 1); - -moz-box-shadow: 0px -18px 20px rgba(255, 255, 255, 1); - box-shadow: 0px -18px 20px rgba(255, 255, 255, 1); + box-shadow: 0 -18px 20px rgba(255, 255, 255, 1); border-top: 1px solid @gray-10; padding: 10px 0 10px 0; position: fixed; diff --git a/src/Umbraco.Web.UI.Client/src/less/property-editors.less b/src/Umbraco.Web.UI.Client/src/less/property-editors.less index 9b0daa1e4d..307f32788e 100644 --- a/src/Umbraco.Web.UI.Client/src/less/property-editors.less +++ b/src/Umbraco.Web.UI.Client/src/less/property-editors.less @@ -284,7 +284,6 @@ line-height: 36px; text-align: center; - -moz-border-radius: 15px; border-radius: 15px; height: 32px; @@ -306,10 +305,8 @@ position: relative; display: flex; -ms-flex-direction: row; - -webkit-flex-direction: row; flex-direction: row; -ms-flex-wrap: wrap; - -webkit-flex-wrap: wrap; flex-wrap: wrap; justify-content: flex-start; } @@ -534,11 +531,7 @@ width: 100%; height: 100%; z-index: @zindexCropperOverlay - 1; - -moz-opacity: .75; opacity: .75; - filter: alpha(opacity=7); - -webkit-box-shadow: inset 0 0 0 20px white,inset 0 0 0 21px rgba(0,0,0,.1),inset 0 0 20px 21px rgba(0,0,0,.2); - -moz-box-shadow: inset 0 0 0 20px white,inset 0 0 0 21px rgba(0,0,0,.1),inset 0 0 20px 21px rgba(0,0,0,.2); box-shadow: inset 0 0 0 20px white,inset 0 0 0 21px rgba(0,0,0,.1),inset 0 0 20px 21px rgba(0,0,0,.2); } diff --git a/src/Umbraco.Web.UI.Client/src/less/tables.less b/src/Umbraco.Web.UI.Client/src/less/tables.less index 09b6ea8a42..cd6304ef49 100644 --- a/src/Umbraco.Web.UI.Client/src/less/tables.less +++ b/src/Umbraco.Web.UI.Client/src/less/tables.less @@ -90,7 +90,6 @@ table { .table-bordered { border: 1px solid @tableBorder; border-collapse: separate; // Done so we can round those corners! - *border-collapse: collapse; // IE7 can't round corners anyway border-left: 0; box-shadow: none; .border-radius(@baseBorderRadius); diff --git a/src/Umbraco.Web.UI.Client/src/less/typeahead.less b/src/Umbraco.Web.UI.Client/src/less/typeahead.less index 0426c2966a..884f44974a 100644 --- a/src/Umbraco.Web.UI.Client/src/less/typeahead.less +++ b/src/Umbraco.Web.UI.Client/src/less/typeahead.less @@ -3,30 +3,22 @@ .tt-hint { z-index: auto !important; margin-top:-4px !important; - width: 396px; - height: 30px; - padding: 8px 12px; - font-size: 24px; - line-height: 30px; - border: 2px solid @gray-8; - -webkit-border-radius: 2px !important; - -moz-border-radius: 2px !important; - border-radius: 2px !important; - outline: none; + width: 396px; + height: 30px; + padding: 8px 12px; + font-size: 24px; + line-height: 30px; + border: 2px solid @gray-8; + border-radius: 2px !important; + outline: none; } .typeahead { background-color: @white; } -.typeahead:focus { - /*border: 2px solid @blue;*/ -} - .tt-query { - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .tt-hint { @@ -39,12 +31,8 @@ padding: 8px 0; background-color: @white; border: 1px solid @gray-8; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); - -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); - box-shadow: 0 5px 10px rgba(0,0,0,.2); + border-radius: 8px; + box-shadow: 0 5px 10px rgba(0,0,0,.2); } .tt-suggestion { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.controller.js index 6057b671bd..f4725fa82d 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.controller.js @@ -75,7 +75,7 @@ angular.module("umbraco").controller("Umbraco.Editors.LinkPickerController", // get the content properties to build the anchor name list contentResource.getById(id).then(function (resp) { $scope.anchorValues = tinyMceService.getAnchorNames(JSON.stringify(resp.properties)); - $scope.model.target.url = resp.urls[0]; + $scope.model.target.url = resp.urls[0].text; }); } } else if ($scope.model.target.url.length) { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html index d6a5fbe230..1e75a4ba06 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html @@ -80,6 +80,7 @@ diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html index eb85cc5fd2..da88b9321e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html @@ -32,8 +32,8 @@ no-dirty-check />
-
@@ -172,13 +172,13 @@ action="close()" button-style="link" shortcut="esc" - label="Close" + label-key="general_close" type="button"> diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.controller.js index e179e0acb3..afec0ae120 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.controller.js @@ -20,6 +20,7 @@ vm.diff = null; vm.currentVersion = null; vm.rollbackButtonDisabled = true; + vm.labels = {}; // find the current version for invariant nodes if($scope.model.node.variants.length === 1) { @@ -39,12 +40,13 @@ } } - // set default title - if(!$scope.model.title) { - localizationService.localize("actions_rollback").then(function(value){ - $scope.model.title = value; - }); - } + localizationService.localizeMany(["actions_rollback", "general_choose"]).then(function (data) { + // set default title + if (!$scope.model.title) { + $scope.model.title = data[0]; + } + vm.labels.choose = data[1]; + }); // Load in diff library assetsService.loadJs('lib/jsdiff/diff.min.js', $scope).then(function () { @@ -177,4 +179,4 @@ angular.module("umbraco").controller("Umbraco.Editors.RollbackController", RollbackController); -})(); \ No newline at end of file +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.html index d7ba57c1af..9b230410b0 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/rollback/rollback.html @@ -40,7 +40,7 @@ ng-model="vm.selectedVersion" ng-options="version.displayValue for version in vm.previousVersions track by version.versionId" ng-change="vm.changeVersion(vm.selectedVersion)"> - + diff --git a/src/Umbraco.Web.UI.Client/src/views/components/application/umb-login.html b/src/Umbraco.Web.UI.Client/src/views/components/application/umb-login.html index 2ce49880d7..d6ec18667c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/application/umb-login.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/application/umb-login.html @@ -153,8 +153,8 @@
- - + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html b/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html index dda9334e05..1f38d61469 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html @@ -57,9 +57,9 @@ shortcut="ctrl+s" add-ellipsis="{{page.saveButtonEllipsis}}"> - - - + Open diff --git a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html index 98ecfd4d28..09d46fcf4c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html @@ -1,4 +1,4 @@ -
+
@@ -10,7 +10,7 @@
-
+
-
+
+
@@ -20,7 +20,7 @@
-
+ diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.create.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.create.controller.js index 9fbf342435..f101450705 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.create.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.create.controller.js @@ -17,6 +17,7 @@ function contentCreateController($scope, var mainCulture = $routeParams.mculture ? $routeParams.mculture : null; function initialize() { + $scope.allowedTypes = null; contentTypeResource.getAllowedTypes($scope.currentNode.id).then(function (data) { $scope.allowedTypes = iconHelper.formatContentTypeIcons(data); }); @@ -80,7 +81,13 @@ function contentCreateController($scope, $scope.createOrSelectBlueprintIfAny = createOrSelectBlueprintIfAny; $scope.createFromBlueprint = createFromBlueprint; - initialize(); + // the current node changes behind the scenes when the context menu is clicked without closing + // the default menu first, so we must watch the current node and re-initialize accordingly + var unbindModelWatcher = $scope.$watch("currentNode", initialize); + $scope.$on('$destroy', function () { + unbindModelWatcher(); + }); + } angular.module("umbraco").controller("Umbraco.Editors.Content.CreateController", contentCreateController); diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.createblueprint.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.createblueprint.controller.js index 361ce36b72..c0002220e3 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.createblueprint.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.createblueprint.controller.js @@ -3,7 +3,6 @@ function CreateBlueprintController( $scope, contentResource, - notificationsService, navigationService, localizationService, formHelper, @@ -13,13 +12,10 @@ name: $scope.currentNode.name }; - var successText = {}; localizationService.localize("blueprints_createBlueprintFrom", ["" + $scope.message.name + ""]).then(function (localizedVal) { $scope.title = localizedVal; }); - - $scope.cancel = function () { navigationService.hideMenu(); }; diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/content/overlays/delete.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/overlays/delete.html new file mode 100644 index 0000000000..0a5de2b9e7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/overlays/delete.html @@ -0,0 +1,11 @@ +
+ +
+ This will remove the redirect

+ Original URL: {{model.redirect.originalUrl}}
+ Redirected To: {{model.redirect.destinationUrl}} +
+ + ? + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/content/overlays/disable.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/overlays/disable.html new file mode 100644 index 0000000000..678fcd6e9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/overlays/disable.html @@ -0,0 +1,5 @@ +
+ + Are you sure you want to disable the URL tracker? + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.controller.js b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.controller.js index 8206d0a114..32b772c2f2 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.controller.js @@ -1,7 +1,7 @@ (function() { "use strict"; - function RedirectUrlsController($scope, redirectUrlsResource, notificationsService, localizationService, $q) { + function RedirectUrlsController($scope, $q, redirectUrlsResource, notificationsService, localizationService, eventsService, overlayService) { // TODO: search by url or url part // TODO: search by domain // TODO: display domain in dashboard results? @@ -76,68 +76,113 @@ }); } - function removeRedirect(redirectToDelete) { - localizationService.localize("redirectUrls_confirmRemove", [redirectToDelete.originalUrl, redirectToDelete.destinationUrl]).then(function (value) { - var toggleConfirm = confirm(value); + function disableUrlTracker(event) { - if (toggleConfirm) { - redirectUrlsResource.deleteRedirectUrl(redirectToDelete.redirectId).then(function () { - - var index = vm.redirectUrls.indexOf(redirectToDelete); - vm.redirectUrls.splice(index, 1); - - localizationService.localize("redirectUrls_redirectRemoved").then(function(value){ - notificationsService.success(value); - }); - - // check if new redirects needs to be loaded - if (vm.redirectUrls.length === 0 && vm.pagination.totalPages > 1) { - - // if we are not on the first page - get records from the previous - if (vm.pagination.pageIndex > 0) { - vm.pagination.pageIndex = vm.pagination.pageIndex - 1; - vm.pagination.pageNumber = vm.pagination.pageNumber - 1; - } - - search(); - } - }, function (error) { - localizationService.localize("redirectUrls_redirectRemoveError").then(function(value){ - notificationsService.error(value); - }); - }); + const dialog = { + view: "views/dashboard/content/overlays/disable.html", + submitButtonLabel: "Disable", + submitButtonLabelKey: "actions_disable", + submit: function (model) { + performDisable(); + overlayService.close(); + }, + close: function () { + overlayService.close(); } + }; + + localizationService.localize("redirectUrls_disableUrlTracker").then(value => { + dialog.title = value; + overlayService.open(dialog); + }); + + event.preventDefault() + event.stopPropagation(); + } + + function removeRedirect(redirect, event) { + + const dialog = { + view: "views/dashboard/content/overlays/delete.html", + redirect: redirect, + submitButtonLabelKey: "contentTypeEditor_yesDelete", + submit: function (model) { + performDelete(model.redirect); + overlayService.close(); + }, + close: function () { + overlayService.close(); + } + }; + + localizationService.localize("general_delete").then(value => { + dialog.title = value; + overlayService.open(dialog); + }); + + event.preventDefault() + event.stopPropagation(); + } + + function performDisable() { + + redirectUrlsResource.toggleUrlTracker(true).then(function () { + activate(); + localizationService.localize("redirectUrls_disabledConfirm").then(function (value) { + notificationsService.success(value); + }); + }, function (error) { + localizationService.localize("redirectUrls_disableError").then(function (value) { + notificationsService.warning(value); + }); }); } - function disableUrlTracker() { - localizationService.localize("redirectUrls_confirmDisable").then(function(value) { - var toggleConfirm = confirm(value); - if (toggleConfirm) { + function performDelete(redirect) { + redirect.deleteButtonState = "busy"; - redirectUrlsResource.toggleUrlTracker(true).then(function () { - activate(); - localizationService.localize("redirectUrls_disabledConfirm").then(function(value){ - notificationsService.success(value); - }); - }, function (error) { - localizationService.localize("redirectUrls_disableError").then(function(value){ - notificationsService.warning(value); - }); - }); + redirectUrlsResource.deleteRedirectUrl(redirect.redirectId).then(function () { + // emit event + var args = { redirect: redirect }; + eventsService.emit("editors.redirects.redirectDeleted", args); + + // remove from list + var index = vm.redirectUrls.indexOf(redirect); + vm.redirectUrls.splice(index, 1); + + localizationService.localize("redirectUrls_redirectRemoved").then(function (value) { + notificationsService.success(value); + }); + + // check if new redirects needs to be loaded + if (vm.redirectUrls.length === 0 && vm.pagination.totalPages > 1) { + + // if we are not on the first page - get records from the previous + if (vm.pagination.pageIndex > 0) { + vm.pagination.pageIndex = vm.pagination.pageIndex - 1; + vm.pagination.pageNumber = vm.pagination.pageNumber - 1; + } + + search(); } + }, function (error) { + redirect.deleteButtonState = "error"; + + localizationService.localize("redirectUrls_redirectRemoveError").then(function (value) { + notificationsService.error(value); + }); }); } function enableUrlTracker() { - redirectUrlsResource.toggleUrlTracker(false).then(function() { + redirectUrlsResource.toggleUrlTracker(false).then(function () { activate(); - localizationService.localize("redirectUrls_enabledConfirm").then(function(value){ + localizationService.localize("redirectUrls_enabledConfirm").then(function (value) { notificationsService.success(value); }); - }, function(error) { - localizationService.localize("redirectUrls_enableError").then(function(value){ + }, function (error) { + localizationService.localize("redirectUrls_enableError").then(function (value) { notificationsService.warning(value); }); }); @@ -167,7 +212,6 @@ } activate(); - } angular.module("umbraco").controller("Umbraco.Dashboard.RedirectUrlsController", RedirectUrlsController); diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.html index a06984f31e..98a8294e80 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.html +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/content/redirecturls.html @@ -12,7 +12,7 @@ ng-if="vm.dashboard.urlTrackerDisabled === false" type="button" size="s" - action="vm.disableUrlTracker()" + action="vm.disableUrlTracker($event)" label-key="redirectUrls_disableUrlTracker"> @@ -63,13 +63,13 @@
-
+
- {{redirectUrl.culture ||'*'}} + {{redirect.culture ||'*'}}
@@ -78,14 +78,15 @@
+ state="redirect.deleteButtonState" + action="vm.removeRedirect(redirect, $event)" + label-key="general_remove">
diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/dashboard.tabs.controller.js b/src/Umbraco.Web.UI.Client/src/views/dashboard/dashboard.tabs.controller.js index e801e2cc58..25e5932ee6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/dashboard.tabs.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/dashboard.tabs.controller.js @@ -129,7 +129,9 @@ function startUpDynamicContentController($timeout, $scope, dashboardResource, as angular.module("umbraco").controller("Umbraco.Dashboard.StartUpDynamicContentController", startUpDynamicContentController); -function FormsController($scope, $route, $cookies, packageResource, localizationService) { +function FormsController($scope, $cookies, packageResource, localizationService) { + + var vm = this; var labels = {}; var labelKeys = [ @@ -140,7 +142,7 @@ function FormsController($scope, $route, $cookies, packageResource, localization "packager_installStateComplete" ]; - localizationService.localizeMany(labelKeys).then(function(values){ + localizationService.localizeMany(labelKeys).then(function(values) { labels.installStateDownloading = values[0]; labels.installStateImporting = values[1]; labels.installStateInstalling = values[2]; @@ -148,52 +150,47 @@ function FormsController($scope, $route, $cookies, packageResource, localization labels.installStateComplete = values[4]; }); - $scope.installForms = function(){ - $scope.state = labels.installStateDownloading; + vm.installForms = function() { + vm.state = labels.installStateDownloading; packageResource .fetch("CD44CF39-3D71-4C19-B6EE-948E1FAF0525") .then(function(pack) { - $scope.state = labels.installStateImporting; + vm.state = labels.installStateImporting; return packageResource.import(pack); - }, - $scope.error) + }, vm.error) .then(function(pack) { - $scope.state = labels.installStateInstalling; + vm.state = labels.installStateInstalling; return packageResource.installFiles(pack); - }, - $scope.error) + }, vm.error) .then(function(pack) { - $scope.state = labels.installStateRestarting; + vm.state = labels.installStateRestarting; return packageResource.installData(pack); - }, - $scope.error) + }, vm.error) .then(function(pack) { - $scope.state = installStateComplete; + vm.state = installStateComplete; return packageResource.cleanUp(pack); - }, - $scope.error) - .then($scope.complete, $scope.error); + }, vm.error) + .then(vm.complete, vm.error); }; - $scope.complete = function(result){ - var url = window.location.href + "?init=true"; + vm.complete = function(result) { + window.location.href + "?init=true"; $cookies.putObject("umbPackageInstallId", result.packageGuid); window.location.reload(true); }; - $scope.error = function(err){ - $scope.state = undefined; - $scope.error = err; - //This will return a rejection meaning that the promise change above will stop + vm.error = function(err) { + vm.state = undefined; + vm.error = err; + // This will return a rejection meaning that the promise change above will stop return $q.reject(); }; - function Video_player (videoId) { // Get dom elements this.container = document.getElementById(videoId); - //Create controls + // Create controls this.controls = document.createElement('div'); this.controls.className="video-controls"; diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/forms/formsdashboardintro.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/forms/formsdashboardintro.html index c18e7f4ccf..3a93abbf7a 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/forms/formsdashboardintro.html +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/forms/formsdashboardintro.html @@ -1,34 +1,36 @@ -
-
+
+
-
+

Umbraco Forms

-
+
-
+ +
-

Create forms using an intuitive drag and drop interface. From simple contact forms that sends e-mails to advanced questionaires that integrate with CRM systems. Your clients will love it!

+

Create forms using an intuitive drag and drop interface. From simple contact forms that sends e-mails to advanced questionaires that integrate with CRM systems. Your clients will love it!

+ action="vm.installForms()">
-
-

Installing...

+ +
+

Installing...

-
-
-
- {{state}} -
-
+
+ + + + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.controller.js b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.controller.js index 10037db166..7ad87b9e78 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.controller.js @@ -1,4 +1,4 @@ -function ExamineManagementController($scope, umbRequestHelper, $http, $q, $timeout) { +function ExamineManagementController($scope, $http, $q, $timeout, umbRequestHelper, localizationService, overlayService) { var vm = this; @@ -25,14 +25,18 @@ function ExamineManagementController($scope, umbRequestHelper, $http, $q, $timeo function showSearchResultDialog(values) { if (vm.searchResults) { - vm.searchResults.overlay = { - title: "Field values", - searchResultValues: values, - view: "views/dashboard/settings/examinemanagementresults.html", - close: function () { - vm.searchResults.overlay = null; - } - }; + + localizationService.localize("examineManagement_fieldValues").then(function (value) { + + vm.searchResults.overlay = { + title: value, + searchResultValues: values, + view: "views/dashboard/settings/examinemanagementresults.html", + close: function () { + vm.searchResults.overlay = null; + } + }; + }); } } @@ -132,28 +136,46 @@ function ExamineManagementController($scope, umbRequestHelper, $http, $q, $timeo } } - function rebuildIndex(index) { - if (confirm("This will cause the index to be rebuilt. " + - "Depending on how much content there is in your site this could take a while. " + - "It is not recommended to rebuild an index during times of high website traffic " + - "or when editors are editing content.")) { + function rebuildIndex(index, event) { - index.isProcessing = true; - index.processingAttempts = 0; + const dialog = { + view: "views/dashboard/settings/overlays/examinemanagement.rebuild.html", + index: index, + submitButtonLabelKey: "general_ok", + submit: function (model) { + performRebuild(model.index); + overlayService.close(); + }, + close: function () { + overlayService.close(); + } + }; - umbRequestHelper.resourcePromise( - $http.post(umbRequestHelper.getApiUrl("examineMgmtBaseUrl", - "PostRebuildIndex", - { indexName: index.name })), - 'Failed to rebuild index') - .then(function() { + localizationService.localize("examineManagement_rebuildIndex").then(value => { + dialog.title = value; + overlayService.open(dialog); + }); - // rebuilding has started, nothing is returned accept a 200 status code. - // lets poll to see if it is done. - $timeout(() => { checkProcessing(index, "PostCheckRebuildIndex"), 1000 }); + event.preventDefault() + event.stopPropagation(); + } - }); - } + function performRebuild(index) { + index.isProcessing = true; + index.processingAttempts = 0; + + umbRequestHelper.resourcePromise( + $http.post(umbRequestHelper.getApiUrl("examineMgmtBaseUrl", + "PostRebuildIndex", + { indexName: index.name })), + 'Failed to rebuild index') + .then(function () { + + // rebuilding has started, nothing is returned accept a 200 status code. + // lets poll to see if it is done. + $timeout(() => { checkProcessing(index, "PostCheckRebuildIndex"), 1000 }); + + }); } function init() { diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.html index 5f226771e9..6a7e65f7ae 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.html +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/examinemanagement.html @@ -1,4 +1,4 @@ -
+
@@ -13,30 +13,30 @@
-
+
-
+
-
-
Indexers
+
+
Indexers
-
-
-
-
Manage Examine's indexes
-
Allows you to view the details of each index and provides some tools for managing the indexes
+
+
+
+
Manage Examine's indexes
+
Allows you to view the details of each index and provides some tools for managing the indexes
-
+
-
- +
-
-
+
+
{{indexer.name}} @@ -51,27 +51,27 @@
-
+
-
-
Searchers
+
+
Searchers
-
-
-
-
Configured Searchers
-
Shows properties and tools for any configured Searcher (i.e. such as a multi-index searcher)
+
+
+
+
Configured Searchers
+
Shows properties and tools for any configured Searcher (i.e. such as a multi-index searcher)
-
+
-
- +
+
-
-
+
+
{{searcher.name}} @@ -89,40 +89,44 @@ - ← Back to overview + ← Back to overview -
+
-
+
-
-
{{ vm.selectedSearcher.name }}
+
+
{{ vm.selectedSearcher.name }}
-
+
-
+
-
-
Search
-
Search the index and view the results
+
+
Search
+
Search the index and view the results
-
+
-
+
-
-
+
+