Skip to content

Commit b957552

Browse files
committed
Add text-overflow CSS property
1 parent edc2458 commit b957552

File tree

4 files changed

+61
-8
lines changed

4 files changed

+61
-8
lines changed

src/CSS.purs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import CSS.String (class IsString, fromString) as X
2222
import CSS.Stylesheet (App(..), CSS, Feature(..), Keyframes(..), MediaQuery(..), MediaType(..), NotOrOnly(..), Rule(..), StyleM(..), fontFace, importUrl, key, keyframes, keyframesFromTo, prefixed, query, rule, runS, select, (?)) as X
2323
import CSS.Text (TextDecoration(..), blink, letterSpacing, lineThrough, noneTextDecoration, overline, textDecoration, underline) as X
2424
import CSS.Text.Whitespace (TextWhitespace, textWhitespace, whitespaceNoWrap, whitespaceNormal, whitespacePre, whitespacePreLine, whitespacePreWrap) as X
25+
import CSS.Text.Transform (TextTransform, textTransform) as X
26+
import CSS.Text.Overflow (TextOverflow, textOverflow) as X
2527
import CSS.Time (Time(..), ms, sec) as X
2628
import CSS.Transform (TransformOrigin(..), TransformOriginOffset(..), Transformation(..), offset, offsetBottom, offsetCenter, offsetLeft, offsetRight, offsetTop, rotate, transform, transformOrigin, transforms, translate) as X
2729
import CSS.Transition (TimingFunction(..), easeOut, linear) as X

src/CSS/Text/Overflow.purs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
module CSS.Text.Overflow
2+
( TextOverflow
3+
, textOverflow
4+
, clip
5+
, ellipsis
6+
, custom
7+
) where
8+
9+
import CSS.Property (class Val, quote)
10+
import CSS.String (fromString)
11+
import CSS.Stylesheet (CSS, key)
12+
import Data.Eq (class Eq)
13+
import Data.Function (($))
14+
import Data.Ord (class Ord)
15+
16+
data TextOverflow
17+
= Clip
18+
| Ellipsis
19+
| Custom String
20+
21+
derive instance eqTextOverflow :: Eq TextOverflow
22+
derive instance ordTextOverflow :: Ord TextOverflow
23+
24+
instance valTextOverflow :: Val TextOverflow where
25+
value Clip = fromString "clip"
26+
value Ellipsis = fromString "ellipsis"
27+
value (Custom v) = fromString $ quote v
28+
29+
textOverflow :: TextOverflow -> CSS
30+
textOverflow = key $ fromString "text-overflow"
31+
32+
clip :: TextOverflow
33+
clip = Clip
34+
35+
ellipsis :: TextOverflow
36+
ellipsis = Ellipsis
37+
38+
custom :: String -> TextOverflow
39+
custom = Custom

src/CSS/Text/Transform.purs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ derive instance eqTextTransform :: Eq TextTransform
2727
derive instance ordTextTransform :: Ord TextTransform
2828

2929
instance valTextTransform :: Val TextTransform where
30-
value (Uppercase) = fromString "uppercase"
31-
value (Lowercase) = fromString "lowercase"
32-
value (Capitalize) = fromString "capitalize"
33-
value (None) = fromString "none"
34-
value (Initial) = fromString "initial"
35-
value (Inherit) = fromString "inherit"
30+
value Uppercase = fromString "uppercase"
31+
value Lowercase = fromString "lowercase"
32+
value Capitalize = fromString "capitalize"
33+
value None = fromString "none"
34+
value Initial = fromString "initial"
35+
value Inherit = fromString "inherit"
3636

37-
instance showTextTransform :: Show (TextTransform) where
37+
instance showTextTransform :: Show TextTransform where
3838
show Uppercase = "Uppercase"
3939
show Lowercase = "Lowercase"
4040
show Capitalize = "Capitalize"

test/Main.purs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import Prelude
44

55
import Effect (Effect)
66
import Effect.Exception (error, throwException)
7-
import CSS (Rendered, Path(..), Predicate(..), Refinement(..), Selector(..), FontFaceSrc(..), FontFaceFormat(..), renderedSheet, renderedInline, fromString, selector, block, display, render, borderBox, boxSizing, contentBox, blue, color, body, a, p, px, dashed, border, inlineBlock, red, (?), (##), (|>), (**), hover, fontFaceSrc, fontStyle, deg, zIndex)
7+
import CSS (Rendered, Path(..), Predicate(..), Refinement(..), Selector(..), FontFaceSrc(..), FontFaceFormat(..), renderedSheet, renderedInline, fromString, selector, block, display, render, borderBox, boxSizing, contentBox, blue, color, body, a, p, px, dashed, border, inlineBlock, red, (?), (##), (|>), (**), hover, fontFaceSrc, fontStyle, deg, zIndex, textOverflow)
88
import CSS.FontStyle as FontStyle
9+
import CSS.Text.Overflow as TextOverflow
910
import Data.Maybe (Maybe(..))
1011
import Data.NonEmpty (singleton)
1112

@@ -71,6 +72,14 @@ exampleFontStyle3 :: Rendered
7172
exampleFontStyle3 = render do
7273
fontStyle $ FontStyle.obliqueAngle (deg 45.0)
7374

75+
exampleTextOverflow1 :: Rendered
76+
exampleTextOverflow1 = render do
77+
textOverflow TextOverflow.ellipsis
78+
79+
exampleTextOverflow2 :: Rendered
80+
exampleTextOverflow2 = render do
81+
textOverflow $ TextOverflow.custom "foobar"
82+
7483
nestedNodes :: Rendered
7584
nestedNodes = render do
7685
fromString "#parent" ? do
@@ -114,3 +123,6 @@ main = do
114123
renderedInline exampleFontStyle1 `assertEqual` Just "font-style: italic"
115124
renderedInline exampleFontStyle2 `assertEqual` Just "font-style: oblique"
116125
renderedInline exampleFontStyle3 `assertEqual` Just "font-style: oblique 45.0deg"
126+
127+
renderedInline exampleTextOverflow1 `assertEqual` Just "text-overflow: ellipsis"
128+
renderedInline exampleTextOverflow2 `assertEqual` Just "text-overflow: \"foobar\""

0 commit comments

Comments
 (0)