Skip to content

Commit 387587c

Browse files
committed
add content visibility property - fixes #90
1 parent 8dc13db commit 387587c

File tree

7 files changed

+70
-0
lines changed

7 files changed

+70
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace AngleSharp.Css.Tests.Declarations
2+
{
3+
using NUnit.Framework;
4+
using static CssConstructionFunctions;
5+
6+
[TestFixture]
7+
public class CssContentVisibilityPropertyTests
8+
{
9+
[Test]
10+
public void CssContentVisibilityIsHidden()
11+
{
12+
var source = "a{content-visibility:hidden}";
13+
var parsed = ParseStyle(source);
14+
Assert.AreEqual("content-visibility: hidden", parsed.Style.CssText);
15+
}
16+
17+
[Test]
18+
public void CssContentVisibilityIsUnkown()
19+
{
20+
var source = "a{content-visibility:aa}";
21+
var parsed = ParseStyle(source);
22+
Assert.AreEqual("", parsed.Style.CssText);
23+
}
24+
}
25+
}

src/AngleSharp.Css/Constants/InitialValues.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ static class InitialValues
165165
public static readonly ICssValue QuotesDecl = new Quote("«", "»");
166166
public static readonly ICssValue PointerEventsDecl = new Constant<PointerEvent>(CssKeywords.Auto, PointerEvent.Auto);
167167
public static readonly ICssValue ContentDecl = new Constant<Object>(CssKeywords.Normal, null);
168+
public static readonly ICssValue ContentVisibilityDecl = new Constant<Visibility>(CssKeywords.Visible, Visibility.Visible);
168169
public static readonly ICssValue CounterIncrementDecl = new Constant<Object>(CssKeywords.None, null);
169170
public static readonly ICssValue CounterResetDecl = new Constant<Object>(CssKeywords.None, null);
170171
public static readonly ICssValue DisplayDecl = new Constant<DisplayMode>(CssKeywords.Inline, DisplayMode.Inline);

src/AngleSharp.Css/Constants/Map.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,5 +894,15 @@ static class Map
894894
{ CssKeywords.MinContent, Sizing.MinContent},
895895
{ CssKeywords.MaxContent, Sizing.MaxContent },
896896
};
897+
898+
/// <summary>
899+
/// Contains the string-ContentVisibility mapping.
900+
/// </summary>
901+
public static readonly Dictionary<String, Visibility> ContentVisibilities = new Dictionary<String, Visibility>(StringComparer.OrdinalIgnoreCase)
902+
{
903+
{ CssKeywords.Visible, Visibility.Visible },
904+
{ CssKeywords.Hidden, Visibility.Hidden },
905+
{ CssKeywords.Collapse, Visibility.Collapse },
906+
};
897907
}
898908
}

src/AngleSharp.Css/Constants/PropertyNames.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,11 @@ public static class PropertyNames
477477
/// </summary>
478478
public static readonly String Content = "content";
479479

480+
/// <summary>
481+
/// The content-visibility declaration.
482+
/// </summary>
483+
public static readonly String ContentVisibility = "content-visibility";
484+
480485
/// <summary>
481486
/// The counter-increment declaration.
482487
/// </summary>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace AngleSharp.Css.Declarations
2+
{
3+
using AngleSharp.Css.Dom;
4+
using System;
5+
using static ValueConverters;
6+
7+
static class ContentVisibilityDeclaration
8+
{
9+
public static String Name = PropertyNames.ContentVisibility;
10+
11+
public static IValueConverter Converter = VisibilityConverter;
12+
13+
public static ICssValue InitialValue = InitialValues.ContentVisibilityDecl;
14+
15+
public static PropertyFlags Flags = PropertyFlags.None;
16+
}
17+
}

src/AngleSharp.Css/Factories/DefaultDeclarationFactory.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ public class DefaultDeclarationFactory : IDeclarationFactory
123123
initialValue: ContentDeclaration.InitialValue,
124124
flags: ContentDeclaration.Flags)
125125
},
126+
{
127+
ContentVisibilityDeclaration.Name, new DeclarationInfo(
128+
name: ContentVisibilityDeclaration.Name,
129+
converter: ContentVisibilityDeclaration.Converter,
130+
initialValue: ContentVisibilityDeclaration.InitialValue,
131+
flags: ContentVisibilityDeclaration.Flags)
132+
},
126133
{
127134
BoxDecorationBreakDeclaration.Name, new DeclarationInfo(
128135
name: BoxDecorationBreakDeclaration.Name,

src/AngleSharp.Css/ValueConverters.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,11 @@ static class ValueConverters
560560
/// </summary>
561561
public static readonly IValueConverter FootnotePolicyConverter = Map.FootnotePolicies.ToConverter();
562562

563+
/// <summary>
564+
/// Represents a converter for the Visibility enumeration.
565+
/// </summary>
566+
public static readonly IValueConverter ContentVisibilityConverter = Map.Visibilities.ToConverter();
567+
563568
#endregion
564569

565570
#region Specific

0 commit comments

Comments
 (0)