diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NoUpdate.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NoUpdate.cs index d4eb744b5..243931568 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NoUpdate.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/NoUpdate.cs @@ -11,12 +11,12 @@ namespace Squidex.Domain.Apps.Core.Contents { public static readonly NoUpdate Always = new NoUpdate(null, null); - public NoUpdate(string expression, params string[] roles) + public NoUpdate(string? expression, params string[]? roles) : base(expression, roles) { } - public static NoUpdate When(string expression, params string[] roles) + public static NoUpdate When(string? expression, params string[]? roles) { return new NoUpdate(expression, roles); } diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowCondition.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowCondition.cs index 4cbb74403..51838284f 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowCondition.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowCondition.cs @@ -12,11 +12,11 @@ namespace Squidex.Domain.Apps.Core.Contents { public abstract class WorkflowCondition { - public string Expression { get; } + public string? Expression { get; } - public ReadOnlyCollection Roles { get; } + public ReadOnlyCollection? Roles { get; } - protected WorkflowCondition(string expression, params string[] roles) + protected WorkflowCondition(string? expression, params string[]? roles) { Expression = expression; diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowStep.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowStep.cs index 718b9286a..6564cd597 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowStep.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowStep.cs @@ -15,9 +15,9 @@ namespace Squidex.Domain.Apps.Core.Contents public IReadOnlyDictionary Transitions { get; } - public string Color { get; } + public string? Color { get; } - public NoUpdate NoUpdate { get; } + public NoUpdate? NoUpdate { get; } public WorkflowStep(IReadOnlyDictionary? transitions = null, string? color = null, NoUpdate? noUpdate = null) { diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowTransition.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowTransition.cs index 4ef55737c..a970fc7fa 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowTransition.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/WorkflowTransition.cs @@ -11,12 +11,12 @@ namespace Squidex.Domain.Apps.Core.Contents { public static readonly WorkflowTransition Always = new WorkflowTransition(null, null); - public WorkflowTransition(string expression, params string[] roles) + public WorkflowTransition(string? expression, params string[]? roles) : base(expression, roles) { } - public static WorkflowTransition When(string expression, params string[] roles) + public static WorkflowTransition When(string? expression, params string[]? roles) { return new WorkflowTransition(expression, roles); } diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs index 8d7a32788..72047e3e9 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowDto.cs @@ -50,7 +50,7 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models { Steps = workflow.Steps.ToDictionary( x => x.Key, - x => WorkflowStepDto.FromWorkflowStep(x.Value)!), + x => WorkflowStepDto.FromWorkflowStep(x.Value)), Id = id }); diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs index 84ca13287..b49a5e3d8 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowStepDto.cs @@ -35,20 +35,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// /// Optional expression that must evaluate to true when you want to prevent updates. /// - public string NoUpdateExpression { get; set; } + public string? NoUpdateExpression { get; set; } /// /// Optional list of roles to restrict the updates for users with these roles. /// - public string[] NoUpdateRoles { get; set; } + public string[]? NoUpdateRoles { get; set; } - public static WorkflowStepDto? FromWorkflowStep(WorkflowStep step) + public static WorkflowStepDto FromWorkflowStep(WorkflowStep step) { - if (step == null) - { - return null; - } - var response = SimpleMapper.Map(step, new WorkflowStepDto { Transitions = step.Transitions.ToDictionary( diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs index 2e9eff3c7..4a556a53b 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/Models/WorkflowTransitionDto.cs @@ -15,20 +15,15 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models /// /// The optional expression. /// - public string Expression { get; set; } + public string? Expression { get; set; } /// /// The optional restricted role. /// - public string[] Roles { get; set; } + public string[]? Roles { get; set; } public static WorkflowTransitionDto FromWorkflowTransition(WorkflowTransition transition) { - if (transition == null) - { - return null; - } - return new WorkflowTransitionDto { Expression = transition.Expression, Roles = transition.Roles?.ToArray() }; } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DynamicContentWorkflowTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DynamicContentWorkflowTests.cs index 89d4573dd..0e4b443a7 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DynamicContentWorkflowTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DynamicContentWorkflowTests.cs @@ -317,7 +317,7 @@ namespace Squidex.Domain.Apps.Entities.Contents new StatusInfo(Status.Draft, StatusColors.Draft) }; - var result = await sut.GetNextsAsync(content, null); + var result = await sut.GetNextsAsync(content, null!); result.Should().BeEquivalentTo(expected); } diff --git a/frontend/app/features/settings/pages/workflows/workflow-step.component.html b/frontend/app/features/settings/pages/workflows/workflow-step.component.html index 63627ed0b..f33b2d332 100644 --- a/frontend/app/features/settings/pages/workflows/workflow-step.component.html +++ b/frontend/app/features/settings/pages/workflows/workflow-step.component.html @@ -45,7 +45,7 @@
-
+
@@ -62,9 +62,10 @@
-
-
-
+
+
+
+
for
- -
+
+
-
-
-
\ No newline at end of file diff --git a/frontend/app/features/settings/pages/workflows/workflow-step.component.scss b/frontend/app/features/settings/pages/workflows/workflow-step.component.scss index e3b0d12bd..426813d3f 100644 --- a/frontend/app/features/settings/pages/workflows/workflow-step.component.scss +++ b/frontend/app/features/settings/pages/workflows/workflow-step.component.scss @@ -16,10 +16,24 @@ padding: 0 .5rem; } + .col-arrow { + min-width: 2rem; + max-width: 2rem; + } + + .col-button { + min-width: 3rem; + max-width: 3rem; + } + .col-step { min-width: 10rem; max-width: 10rem; - padding-left: .5rem; + } + + .col-roles { + min-width: 18rem; + max-width: 18rem; } .transition { @@ -40,6 +54,7 @@ .step { & { margin-bottom: 1.5rem; + border-bottom: 1px solid $color-border; } &-inner { @@ -74,21 +89,10 @@ } } -.col-step-role { - width: 56px; - padding-left: 0rem; - padding-right: 4rem; -} - -.col-step-expression { - padding-left: 0; - padding-right: 0 -} - .transition-prevent-updates { & { margin-top: .25rem; - margin-bottom: .5rem; + margin-bottom: 1rem; line-height: 2.5rem; } @@ -99,18 +103,6 @@ } } -.col-line { - display: block; - height: 1px; - border: 0; - border-top: 1px solid #e1e4e8; - margin: 1em 0; -} - -.col-div-line { - padding-top: 0.5rem -} - .transition-prevent-updates-checkbox { - margin-top: 0.8rem; + margin-top: .8rem; } \ No newline at end of file diff --git a/frontend/app/features/settings/pages/workflows/workflow-transition.component.html b/frontend/app/features/settings/pages/workflows/workflow-transition.component.html index 18af9f12c..8b5ef28c1 100644 --- a/frontend/app/features/settings/pages/workflows/workflow-transition.component.html +++ b/frontend/app/features/settings/pages/workflows/workflow-transition.component.html @@ -1,5 +1,5 @@
-
+
@@ -21,8 +21,7 @@
for
- -
+
-
+