diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderTrackButton.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderTrackButton.cs new file mode 100644 index 000000000..c0c8db9d7 --- /dev/null +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderTrackButton.cs @@ -0,0 +1,7 @@ +using Avalonia.Controls; + +namespace AtomUI.Desktop.Controls; + +internal class ColorSliderTrackButton : RepeatButton +{ +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTheme.axaml b/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTheme.axaml index 78ede51c7..358236fcb 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTheme.axaml +++ b/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTheme.axaml @@ -29,34 +29,10 @@ Value="{TemplateBinding Value, Mode=TwoWay}" ClipToBounds="False"> - - - - - - - + - - - - - - - + + + + + + + + + + + + diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTrackButtonTheme.cs b/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTrackButtonTheme.cs new file mode 100644 index 000000000..524de2240 --- /dev/null +++ b/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorSlider/ColorSliderTrackButtonTheme.cs @@ -0,0 +1,7 @@ +using Avalonia.Styling; + +namespace AtomUI.Desktop.Controls.Themes; + +internal class ColorSliderTrackButtonTheme : ControlTheme +{ +} diff --git a/src/AtomUI.Desktop.Controls/ComboBox/ComboBoxTextBox.cs b/src/AtomUI.Desktop.Controls/ComboBox/ComboBoxTextBox.cs new file mode 100644 index 000000000..058d9e0f2 --- /dev/null +++ b/src/AtomUI.Desktop.Controls/ComboBox/ComboBoxTextBox.cs @@ -0,0 +1,5 @@ +namespace AtomUI.Desktop.Controls; + +internal class ComboBoxTextBox : Avalonia.Controls.TextBox +{ +} diff --git a/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTextBoxTheme.axaml b/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTextBoxTheme.axaml new file mode 100644 index 000000000..2c4a9c32f --- /dev/null +++ b/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTextBoxTheme.axaml @@ -0,0 +1,45 @@ + + + + + + + + + + + + diff --git a/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTextBoxTheme.cs b/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTextBoxTheme.cs new file mode 100644 index 000000000..1ec4c6f35 --- /dev/null +++ b/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTextBoxTheme.cs @@ -0,0 +1,7 @@ +using Avalonia.Styling; + +namespace AtomUI.Desktop.Controls.Themes; + +internal class ComboBoxTextBoxTheme : ControlTheme +{ +} diff --git a/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTheme.axaml b/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTheme.axaml index 78df493fc..eb5579c3a 100644 --- a/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTheme.axaml +++ b/src/AtomUI.Desktop.Controls/ComboBox/Themes/ComboBoxTheme.axaml @@ -62,7 +62,7 @@ atom:OverflowTip.ShowDelay="{TemplateBinding OverflowTipDelay}" atom:OverflowTip.Placement="{TemplateBinding OverflowTipPlacement}" atom:OverflowTip.PlacementTarget="{Binding $parent[atom:AddOnDecoratedBox]}" /> - - - - - - - - - - - - + IsVisible="{TemplateBinding IsEditable}" /> diff --git a/tests/AtomUI.Desktop.Controls.Tests/Theme/ThemeSelectorBoundaryTests.cs b/tests/AtomUI.Desktop.Controls.Tests/Theme/ThemeSelectorBoundaryTests.cs index 58f40be7a..f2c2895a9 100644 --- a/tests/AtomUI.Desktop.Controls.Tests/Theme/ThemeSelectorBoundaryTests.cs +++ b/tests/AtomUI.Desktop.Controls.Tests/Theme/ThemeSelectorBoundaryTests.cs @@ -37,6 +37,30 @@ public class ThemeSelectorBoundaryTests violations.Count.ShouldBe(0, string.Join(Environment.NewLine, violations)); } + [Fact] + public void Production_ControlThemes_Do_Not_Override_Child_Control_Templates() + { + var repositoryRoot = GetRepositoryRoot(); + var sourceRoot = Path.Combine(repositoryRoot, "src"); + var violations = new List(); + + foreach (var path in Directory.EnumerateFiles(sourceRoot, "*.axaml", SearchOption.AllDirectories)) + { + var document = XDocument.Load(path); + foreach (var theme in document.Descendants().Where(element => element.Name.LocalName == "ControlTheme")) + { + foreach (var templateProperty in theme.Descendants() + .Where(element => element.Name.LocalName.EndsWith(".Template", StringComparison.Ordinal))) + { + violations.Add( + $"{Path.GetRelativePath(repositoryRoot, path)}: {templateProperty.Name.LocalName}"); + } + } + } + + violations.Count.ShouldBe(0, string.Join(Environment.NewLine, violations)); + } + private static int CountTemplateBoundaries(string selector) { var count = 0;