Skip to content

Commit e6a3fea

Browse files
committed
Add text-overflow CSS property
1 parent 9e78699 commit e6a3fea

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
@@ -21,6 +21,8 @@ import CSS.String (class IsString, fromString) as X
2121
import CSS.Stylesheet (App(..), CSS, Feature(..), Keyframes(..), MediaQuery(..), MediaType(..), NotOrOnly(..), Rule(..), StyleM(..), fontFace, importUrl, key, keyframes, keyframesFromTo, prefixed, query, rule, runS, select, (?)) as X
2222
import CSS.Text (TextDecoration(..), blink, letterSpacing, lineThrough, noneTextDecoration, overline, textDecoration, underline) as X
2323
import CSS.Text.Whitespace (TextWhitespace, textWhitespace, whitespaceNoWrap, whitespaceNormal, whitespacePre, whitespacePreLine, whitespacePreWrap) as X
24+
import CSS.Text.Transform (TextTransform, textTransform) as X
25+
import CSS.Text.Overflow (TextOverflow, textOverflow) as X
2426
import CSS.Time (Time(..), ms, sec) as X
2527
import CSS.Transform (TransformOrigin(..), TransformOriginOffset(..), Transformation(..), offset, offsetBottom, offsetCenter, offsetLeft, offsetRight, offsetTop, rotate, transform, transformOrigin, transforms, translate) as X
2628
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+
, placeholder
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+
| Placeholder 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 (Placeholder 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+
placeholder :: String -> TextOverflow
39+
placeholder = Placeholder

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,7 +4,8 @@ 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, px, dashed, border, inlineBlock, red, (?), fontFaceSrc, zIndex)
7+
import CSS (Rendered, Path(..), Predicate(..), Refinement(..), Selector(..), FontFaceSrc(..), FontFaceFormat(..), renderedSheet, renderedInline, fromString, selector, block, display, render, borderBox, boxSizing, contentBox, blue, color, body, px, dashed, border, inlineBlock, red, (?), fontFaceSrc, zIndex, textOverflow)
8+
import CSS.Text.Overflow as TextOverflow
89
import Data.Maybe (Maybe(..))
910
import Data.NonEmpty (singleton)
1011

@@ -41,6 +42,14 @@ example7 :: Rendered
4142
example7 = render do
4243
zIndex 11
4344

45+
exampleTextOverflow1 :: Rendered
46+
exampleTextOverflow1 = render do
47+
textOverflow TextOverflow.ellipsis
48+
49+
exampleTextOverflow2 :: Rendered
50+
exampleTextOverflow2 = render do
51+
textOverflow $ TextOverflow.placeholder "foobar"
52+
4453
nestedNodes :: Rendered
4554
nestedNodes = render do
4655
fromString "#parent" ? do
@@ -76,3 +85,6 @@ main = do
7685
renderedInline example6 `assertEqual` Just "src: url(\"font.woff\") format(\"woff\")"
7786

7887
renderedInline example7 `assertEqual` Just "z-index: 11"
88+
89+
renderedInline exampleTextOverflow1 `assertEqual` Just "text-overflow: ellipsis"
90+
renderedInline exampleTextOverflow2 `assertEqual` Just "text-overflow: \"foobar\""

0 commit comments

Comments
 (0)