From 5411d415cff3599e33afd0ee14d9a8282b9ea9ae Mon Sep 17 00:00:00 2001 From: Branko Zachemsky Date: Thu, 29 Jan 2026 10:48:32 +0100 Subject: [PATCH 1/5] add dark/light background color in items add converting everythink double value from "," to "." --- .../Components/VisualComposerContainer.razor | 20 ++++++++- .../VisualComposerContainer.razor.cs | 10 ++++- .../VisualComposerItem.razor | 31 +++++++++---- .../VisualComposerItemData.cs | 45 ++++++++++++++++--- .../VisualComposerItemModal.razor | 15 ++++++- .../Serializing/SerializableItem.cs | 12 +++-- 6 files changed, 109 insertions(+), 24 deletions(-) diff --git a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor index 88032f7ce..17334d26d 100644 --- a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor +++ b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor @@ -311,7 +311,20 @@
- + @if (_options.Background) + { +
+
+ + +
+
+ + +
+ +
+ }
@@ -497,7 +510,10 @@ - +
+ + +
diff --git a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor.cs b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor.cs index 395599c98..93925fe6e 100644 --- a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor.cs +++ b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor.cs @@ -144,7 +144,7 @@ internal async Task AddItemAsync(ITwinElement item) { if (_useOption) { - _items.Add(new VisualComposerItemData(EventCallback.Factory.Create(this, StateHasChanged), EventCallback.Factory.Create(this, SaveAsync), item, _options.Left, _options.Top, _options.Transform, _options.Presentation, _options.Width, _options.Height, _options.ZIndex, _options.Scale, _options.Rotate, _options.Roles, _options.PresentationTemplate, _options.Background, _options.BackgroundColor, _options.PollingInterval)); + _items.Add(new VisualComposerItemData(EventCallback.Factory.Create(this, StateHasChanged), EventCallback.Factory.Create(this, SaveAsync), item, _options.Left, _options.Top, _options.Transform, _options.Presentation, _options.Width, _options.Height, _options.ZIndex, _options.Scale, _options.Rotate, _options.Roles, _options.PresentationTemplate, _options.Background, _options.BackgroundColorLight, _options.BackgroundColorDark, _options.PollingInterval)); if (_optionsMove) { @@ -387,6 +387,14 @@ private async Task ChangeThemeAsync() await SaveAsync(); } + private async Task SetDefaultBackgroundColorsAsync() + { + CurrentView.BackgroundColorLight = "var(--color-background-dark)"; + CurrentView.BackgroundColorDark = "var(--color-background-dark)"; + + await SaveAsync(); + } + private async Task ChangeSaveLocationAsync(ChangeEventArgs e, SaveLocationType oldType, string view) { var newSaveLocation = e.Value.ToString(); diff --git a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItem.razor b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItem.razor index 9f2130558..1827c415e 100644 --- a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItem.razor +++ b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItem.razor @@ -1,12 +1,25 @@ - + + + + @if (InDesign) {
-
+ style="position: absolute; left: @(Origin.Left.ToString().Replace(',', '.'))%; top: @(Origin.Top.ToString().Replace(',', '.'))%; transform: scale(@(Origin.Scale.ToString().Replace(',', '.'))) rotate(@(Origin.Rotate.ToString().Replace(',', '.'))deg); translate: @(Origin.Transform.X.ToString().Replace(',', '.'))% @(Origin.Transform.Y.ToString().Replace(',', '.'))%; width: @(Origin.Width != -1 ? Origin.Width.ToString().Replace(',', '.') + "rem" : "max-content"); height: @(Origin.Height != -1 ? Origin.Height.ToString().Replace(',', '.') + "rem" : "max-content"); z-index: @Origin.ZIndex; @(Origin.Width == -1 ? "max-width:50rem;" : "") @(Origin.Height == -1 ? "max-height:30rem;" : "")"> +
-
+
+
-
-
+
+
-
+
+
_backgroundColor; + get => _backgroundColorLight; set { - _backgroundColor = value; + _backgroundColorLight = value; + + if (EventCallbackStateHasChanged.HasDelegate) + EventCallbackStateHasChanged.InvokeAsync(); + + if (EventCallbackSave.HasDelegate) + EventCallbackSave.InvokeAsync(); + } + } + + public string _backgroundColorDark = "var(--color-white)"; + public string BackgroundColorDark + { + get => _backgroundColorDark; + set + { + _backgroundColorDark = value; if (EventCallbackStateHasChanged.HasDelegate) EventCallbackStateHasChanged.InvokeAsync(); @@ -309,7 +325,8 @@ public VisualComposerItemData(EventCallback eventCallbackStateHasChanged, string roles, string? presentationTemplate, bool background, - string backgroundColor, + string backgroundColorLight, + string backgroundColorDark, int pollingInterval) { EventCallbackStateHasChanged = eventCallbackStateHasChanged; @@ -329,7 +346,8 @@ public VisualComposerItemData(EventCallback eventCallbackStateHasChanged, _roles = roles; _presentationTemplate = presentationTemplate; _background = background; - _backgroundColor = backgroundColor; + _backgroundColorLight = backgroundColorLight; + _backgroundColorDark = backgroundColorDark; _pollingInterval = pollingInterval; } @@ -366,8 +384,21 @@ public VisualComposerItemData(EventCallback eventCallbackStateHasChanged, _roles = item.Roles; _presentationTemplate = item.PresentationTemplate; _background = item.Background; - _backgroundColor = item.BackgroundColor; + _backgroundColorLight = item.BackgroundColorLight; + _backgroundColorDark = item.BackgroundColorDark; _pollingInterval = item.PollingInterval; } + + public void SetDefaultBackgroundColors() + { + BackgroundColorLight = "var(--color-white)"; + BackgroundColorDark = "var(--color-dark-800)"; + + if (EventCallbackStateHasChanged.HasDelegate) + EventCallbackStateHasChanged.InvokeAsync(); + + if (EventCallbackSave.HasDelegate) + EventCallbackSave.InvokeAsync(); + } } } diff --git a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItemModal.razor b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItemModal.razor index 2bce1427a..aa11a104f 100644 --- a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItemModal.razor +++ b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerItem/VisualComposerItemModal.razor @@ -78,7 +78,20 @@
- + @if (Origin.Background) + { +
+
+ + +
+
+ + +
+ +
+ }
diff --git a/src/base/src/AXOpen.VisualComposer/Serializing/SerializableItem.cs b/src/base/src/AXOpen.VisualComposer/Serializing/SerializableItem.cs index 56862e28f..61b04a07a 100644 --- a/src/base/src/AXOpen.VisualComposer/Serializing/SerializableItem.cs +++ b/src/base/src/AXOpen.VisualComposer/Serializing/SerializableItem.cs @@ -18,7 +18,8 @@ public class SerializableItem public string Roles { get; set; } public string PresentationTemplate { get; set; } public bool Background { get; set; } - public string BackgroundColor { get; set; } + public string BackgroundColorLight { get; set; } + public string BackgroundColorDark { get; set; } public int PollingInterval { get; set; } public SerializableItem() @@ -39,7 +40,8 @@ public SerializableItem(string id, string roles, string presentationTemplate, bool background, - string backgroundColor, + string backgroundColorLight, + string backgroundColorDark, int pollingInterval) { Id = id; @@ -55,7 +57,8 @@ public SerializableItem(string id, Roles = roles; PresentationTemplate = presentationTemplate; Background = background; - BackgroundColor = backgroundColor; + BackgroundColorLight = backgroundColorLight; + BackgroundColorDark = backgroundColorDark; PollingInterval = pollingInterval; } @@ -74,7 +77,8 @@ public SerializableItem(VisualComposerItemData item) Roles = item.Roles; PresentationTemplate = item.PresentationTemplate; Background = item.Background; - BackgroundColor = item.BackgroundColor; + BackgroundColorLight = item.BackgroundColorLight; + BackgroundColorDark = item.BackgroundColorDark; PollingInterval = item.PollingInterval; } } From 4258fd462ee2abd14d7537cb869d28e08a691d99 Mon Sep 17 00:00:00 2001 From: Branko Zachemsky Date: Thu, 29 Jan 2026 13:00:32 +0100 Subject: [PATCH 2/5] added export/import for views --- .../Components/VisualComposerContainer.razor | 22 ++++++ .../VisualComposerContainer.razor.cs | 78 +++++++++++++++++++ .../VisualComposerContainer.razor.js | 12 +++ 3 files changed, 112 insertions(+) diff --git a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor index 17334d26d..4eedec682 100644 --- a/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor +++ b/src/base/src/AXOpen.VisualComposer/Components/VisualComposerContainer.razor @@ -441,6 +441,9 @@ } + + + @@ -468,6 +471,9 @@ } + + + @@ -479,6 +485,22 @@ } +
+
Import View
+
+ + +
+