git.iko.soy/rowtype-yoga/ry-blocks
on main help sign in
Fix tests
commitcccc9e084815df4afb0e7629eccf2dccd6358dfb authorMark Eibes <mark.eibes@gmail.com> dateMon 4 Jan 2021, 20:51 (6 years ago) parenta571217
11 files changed+656−614
src/Yoga/Block.purs+3−3 src/Yoga/Block/Atom/Button/Style.purs+57−56 src/Yoga/Block/Atom/Icon/Story.purs+6−6 src/Yoga/Block/Atom/Segmented/View/ActiveIndicator.purs+125−72 src/Yoga/Block/Container/Style.purs+1−1 src/Yoga/Block/Internal.purs+442−459 src/Yoga/Block/Layout/Sidebar/Spec.purs+4−3 src/Yoga/Block/Layout/Sidebar/View.purs+9−9 src/Yoga/Block/Layout/Stack/Spec.purs+3−2 src/Yoga/Block/Layout/Stack/View.purs+5−2 src/Yoga/Prelude/Spec.purs+1−1
src/Yoga/Block.purs+3−3
@@ -1,7 +1,7 @@
11module Yoga.Block where
22
33import Prim.Row (class Union)
4−import React.Basic (ReactComponent)
4+import React.Basic (JSX, ReactComponent)
55import Yoga.Block.Atom.Button as Button
66import Yoga.Block.Atom.Icon as Icon
77import Yoga.Block.Atom.Range as Range
@@ -47,10 +47,10 @@ range = Range.component
4747segmented ∷ ReactComponent Segmented.Props
4848segmented = Segmented.component
4949
50−sidebar ∷ ∀ p q. Union p q Sidebar.Props => ReactComponent { | p }
50+sidebar ∷ ∀ p q. Union p q Sidebar.Props => ReactComponent { children ∷ Array JSX | p }
5151sidebar = Sidebar.component
5252
53−stack ∷ ∀ p q. Union p q Stack.Props => ReactComponent { | p }
53+stack ∷ ∀ p q. Union p q Stack.Props => ReactComponent { children ∷ Array JSX | p }
5454stack = Stack.component
5555
5656switcher ∷ ∀ p q. Union p q Switcher.Props => ReactComponent { | p }
src/Yoga/Block/Atom/Button/Style.purs+57−56
@@ -4,10 +4,10 @@ import Yoga.Prelude.Style
44import Data.Interpolate (i)
55import Yoga.Block.Container.Style (colour)
66
7−type Props f r =
8− ( css ∷ f Style
9− | r
10− )
7+type Props f r
8+ = ( css ∷ f Style
9+ | r
10+ )
1111
1212gradientBackground ∷ StyleProperty
1313gradientBackground =
@@ -40,7 +40,8 @@ button =
4040 , borderTop: str $ i "1px solid " colour.interfaceBackgroundHighlight
4141 , borderBottom: str $ i "1px solid " colour.interfaceBackgroundShadow
4242 , display: inlineFlex
43− , padding: str "calc(var(--s-1) * 0.85) var(--s0)"
43+ , padding: str "calc(var(--s-1) * 0.8) var(--s0)"
44+ , paddingBottom: str "calc(var(--s-1) * 0.8 + 1px)"
4445 , justifyContent: center
4546 , alignItems: center
4647 , borderRadius: var "--s-1"
@@ -53,61 +54,61 @@ button =
5354 , userSelect: none
5455 , transition: str "all 0.2s ease-out" <> str "transform 50ms ease-in"
5556 , """&[data-button-shape="pill"]""":
56− nest
57− { borderRadius: str "calc(var(--s1) * 0.85)"
58− , padding: str "calc(var(--s-1) * 0.85) var(--s0)"
59− , paddingBottom: str "calc(var(--s-1))"
60− }
57+ nest
58+ { borderRadius: str "calc(var(--s1) * 0.85)"
59+ , padding: str "calc(var(--s-1) * 0.85) var(--s0)"
60+ , paddingBottom: str "calc(var(--s-1))"
61+ }
6162 , """&[data-button-type="primary"]""":
62− nest
63− { background: gradientBackground
64− , backgroundSize: str "200% 200%"
65− , fontWeight: str "600"
66− , letterSpacing: str "calc(var(--s-5)* (0.1))"
67− , animation: backgroundAnimation <> str " alternate ease-out 10s infinite"
68− , boxShadow: str "0 1px 4px 0px rgba(0,0,0,0.40)"
69− , borderColor: str "transparent"
70− , color: str colour.highlightText
71− , """&:focus-visible""":
72− nest
73− { borderColor: str "inherit"
74− }
75− , """&:active""":
76− nest
77− { boxShadow: str "inset 0 1px 6px rgba(0,0,0,0.40)"
78− , border: str $ i "1px solid transparent"
79− }
80− , "&:disabled":
81− nest
82− { background: str colour.highlightDisabled
83− }
84− }
63+ nest
64+ { background: gradientBackground
65+ , backgroundSize: str "200% 200%"
66+ , fontWeight: str "600"
67+ , letterSpacing: str "calc(var(--s-5)* (0.1))"
68+ , animation: backgroundAnimation <> str " alternate ease-out 10s infinite"
69+ , boxShadow: str "0 1px 4px 0px rgba(0,0,0,0.40)"
70+ , borderColor: str "transparent"
71+ , color: str colour.highlightText
72+ , """&:focus-visible""":
73+ nest
74+ { borderColor: str "inherit"
75+ }
76+ , """&:active""":
77+ nest
78+ { boxShadow: str "inset 0 1px 6px rgba(0,0,0,0.40)"
79+ , border: str $ i "1px solid transparent"
80+ }
81+ , "&:disabled":
82+ nest
83+ { background: str colour.highlightDisabled
84+ }
85+ }
8586 , """&[data-button-type="dangerous"]""":
86− nest
87− { color: str $ colour.interfaceDangerousText
88− , background: str $ colour.interfaceBackgroundDangerous
89− , fontWeight: str "600"
90− , letterSpacing: str "calc(var(--s-5) * -0.10)"
91− }
87+ nest
88+ { color: str $ colour.interfaceDangerousText
89+ , background: str $ colour.interfaceBackgroundDangerous
90+ , fontWeight: str "600"
91+ , letterSpacing: str "calc(var(--s-5) * -0.10)"
92+ }
9293 , """&:focus""": nest { outline: none }
9394 , """&:focus-visible""":
94− nest
95− { boxShadow: str $ "0 0 0 var(--s-4) " <> colour.highlight
96− }
95+ nest
96+ { boxShadow: str $ "0 0 0 var(--s-4) " <> colour.highlight
97+ }
9798 , """&:active""":
98− nest
99− { boxShadow: str $ "inset 0 1px var(--s-1) rgba(0,0,0,0.20)"
100− , borderTop: str $ i "1px solid " colour.interfaceBackgroundShadow
101− , borderBottom: str $ i "1px solid " colour.interfaceBackgroundShadow
102− , transform: str "scale3d(0.95,0.95,0.95)"
103− , transition: str "transform 50ms ease"
104− }
99+ nest
100+ { boxShadow: str $ "inset 0 1px var(--s-1) rgba(0,0,0,0.20)"
101+ , borderTop: str $ i "1px solid " colour.interfaceBackgroundShadow
102+ , borderBottom: str $ i "1px solid " colour.interfaceBackgroundShadow
103+ , transform: str "scale3d(0.95,0.95,0.95)"
104+ , transition: str "transform 50ms ease"
105+ }
105106 , "&:disabled":
106− nest
107− { color: str colour.interfaceTextDisabled
108− , boxShadow: none
109− , background: str colour.interfaceBackgroundDisabled
110− , borderTop: str $ i "1px solid " colour.interfaceBackgroundShadow
111− , borderBottom: str $ i "1px solid " colour.interfaceBackgroundShadow
112− }
107+ nest
108+ { color: str colour.interfaceTextDisabled
109+ , boxShadow: none
110+ , background: str colour.interfaceBackgroundDisabled
111+ , borderTop: str $ i "1px solid " colour.interfaceBackgroundShadow
112+ , borderBottom: str $ i "1px solid " colour.interfaceBackgroundShadow
113+ }
113114 }
src/Yoga/Block/Atom/Icon/Story.purs+6−6
@@ -17,12 +17,12 @@ default ∷
1717default =
1818 { title: "Atom/Icon"
1919 , decorators:
20− [ \storyFn ->
21− R.div_
22− [ element E.global { styles: Styles.global }
23− , unsafePerformEffect storyFn
24− ]
25− ]
20+ [ \storyFn ->
21+ R.div_
22+ [ element E.global { styles: Styles.global }
23+ , unsafePerformEffect storyFn
24+ ]
25+ ]
2626 }
2727
2828icon ∷ Effect JSX
src/Yoga/Block/Atom/Segmented/View/ActiveIndicator.purs+125−72
@@ -13,7 +13,7 @@ import Literals.Undefined (undefined)
1313import MotionValue (useMotionValue)
1414import MotionValue as MotionValue
1515import Partial.Unsafe (unsafeCrashWith)
16−import React.Basic.DOM (css)
16+import React.Basic.DOM (CSS, css)
1717import React.Basic.Emotion as Emotion
1818import React.Basic.Hooks (reactComponent)
1919import React.Basic.Hooks as React
@@ -21,12 +21,12 @@ import Unsafe.Coerce (unsafeCoerce)
2121import Yoga.Block.Atom.Segmented.Style as Style
2222import Yoga.Block.Hook.Scroll (useScrollPosition)
2323
24−type Props =
25− { activeItemRefs ∷ TwoOrMore (Ref (Nullable Node))
26− , activeItemIndex ∷ Int
27− , updateActiveIndex ∷ Int -> Effect Unit
28− , windowWidth ∷ Number
29− }
24+type Props
25+ = { activeItemRefs ∷ TwoOrMore (Ref (Nullable Node))
26+ , activeItemIndex ∷ Int
27+ , updateActiveIndex ∷ Int -> Effect Unit
28+ , windowWidth ∷ Number
29+ }
3030
3131component ∷ ReactComponent Props
3232component =
@@ -42,14 +42,17 @@ component =
4242 _ <-
4343 runMaybeT do
4444 rawStyles <- traverse getStyle props.activeItemRefs
45− let styles = rawStyles <#> \s -> s { left = s.left + scrollX }
45+ let
46+ -- [TODO] ScrollX is questionable
47+ styles = rawStyles <#> \s -> s { left = s.left + scrollX }
4648 unless (maybeAnimationVariants == Just styles) do
4749 setVariants (Just styles) # lift
4850 mempty
4951 useLayoutEffect maybeDragX do
5052 case maybeDragX, maybeAnimationVariants of
5153 Just x, Just animationVariants -> do
52− let { left, width } = handleDrag { activeItemIndex: props.activeItemIndex, animationVariants, x }
54+ let
55+ { left, width } = handleDrag { activeItemIndex: props.activeItemIndex, animationVariants, x }
5356 activeLeft # MotionValue.set left
5457 activeWidth # MotionValue.set width
5558 _, _ -> mempty
@@ -76,42 +79,44 @@ component =
7679 , dragMomentum: Motion.dragMomentum false
7780 , animate: Motion.animate $ indexToVariant props.activeItemIndex
7881 , style:
79− css
80− { left: activeLeft
81− , width: activeWidth
82− }
82+ css
83+ { left: activeLeft
84+ , width: activeWidth
85+ }
8386 , onDragStart:
84− Motion.onDragStart \_ pi -> do
85− setDragX (Just pi.point.x)
87+ Motion.onDragStart \_ pi -> do
88+ setDragX (Just pi.point.x)
8689 , onDrag:
87− Motion.onDrag \_ pi -> do
88− when (isJust maybeDragX) $ setDragX (Just pi.point.x)
90+ Motion.onDrag \_ pi -> do
91+ when (isJust maybeDragX) $ setDragX (Just pi.point.x)
8992 , onDragEnd:
90− Motion.onDragEnd \_ pi -> do
91− let
92− x =
93− maybeDragX
94− # fromMaybe' \_ -> unsafeCrashWith "no x"
95− newIdx =
96− findOverlapping
97− props.activeItemIndex
98− animationVariants
99− x
100− v =
101− animationVariants TwoOrMore.!! newIdx
102− # fromMaybe' \_ -> unsafeCrashWith "omg"
103− setDragX Nothing
104− activeLeft # MotionValue.set v.left
105− activeWidth # MotionValue.set v.width
106− props.updateActiveIndex newIdx
93+ Motion.onDragEnd \_ pi -> do
94+ let
95+ x =
96+ maybeDragX
97+ # fromMaybe' \_ -> unsafeCrashWith "no x"
98+
99+ newIdx =
100+ findOverlapping
101+ props.activeItemIndex
102+ animationVariants
103+ x
104+
105+ v =
106+ animationVariants TwoOrMore.!! newIdx
107+ # fromMaybe' \_ -> unsafeCrashWith "omg"
108+ setDragX Nothing
109+ activeLeft # MotionValue.set v.left
110+ activeWidth # MotionValue.set v.width
111+ props.updateActiveIndex newIdx
107112 , dragConstraints: Motion.dragConstraints { left: 0, right: 0 }
108113 , dragElastic: Motion.dragElastic false
109114 , transition:
110− Motion.transition
111− { type: "tween"
112− , duration: if isJust maybeDragX then 0.0 else 0.167
113− , ease: "easeOut"
114− }
115+ Motion.transition
116+ { type: "tween"
117+ , duration: if isJust maybeDragX then 0.0 else 0.167
118+ , ease: "easeOut"
119+ }
115120 , _aria: Object.fromHomogeneous { hidden: "true" }
116121 }
117122
@@ -127,21 +132,49 @@ getStyle itemRef = do
127132 , top: br.top
128133 }
129134
135+mkVariantForIndex :: Int -> CSS
136+mkVariantForIndex i =
137+ css
138+ { width: unsafeStyle _.width
139+ , height: unsafeStyle _.height
140+ , x: unsafeStyle _.left
141+ , y: unsafeStyle _.top
142+ }
143+ where
144+ unsafeStyle :: _ -> TwoOrMore NodeRef -> Number
145+ unsafeStyle fn refs =
146+ unsafeGetRefAtI refs
147+ # unsafeGetBoundingBoxFromRef
148+ <#> fn
149+ # fromMaybe 0.0
150+
151+ unsafeGetRefAtI :: TwoOrMore NodeRef -> NodeRef
152+ unsafeGetRefAtI x =
153+ (x TwoOrMore.!! i)
154+ # fromMaybe' \_ -> unsafeCrashWith "Trying to get non-existing index"
155+
156+ unsafeGetBoundingBoxFromRef = unsafePerformEffect <<< getBoundingBoxFromRef
157+
130158indexToVariant ∷ Int -> VariantLabel
131159indexToVariant = show >>> unsafeCoerce
132160
133−type BBox =
134− { top ∷ Number, left ∷ Number, width ∷ Number, height ∷ Number }
161+type BBox
162+ = { top ∷ Number, left ∷ Number, width ∷ Number, height ∷ Number }
135163
136164findOverlapping ∷ Int -> TwoOrMore BBox -> Number -> Int
137165findOverlapping activeIndex styles x =
138166 fromMaybe activeIndex do
139167 curr <- styles TwoOrMore.!! activeIndex
140− let fst = TwoOrMore.head styles
141− let lst = TwoOrMore.last styles
142− let inside e = (e.left < x) && (e.left + e.width) >= x
143− let tooFarLeft = MZ.guard (x <= fst.left + fst.width) $> 0
144− let tooFarRight = MZ.guard (x >= lst.left) $> TwoOrMore.length styles - 1
168+ let
169+ fst = TwoOrMore.head styles
170+ let
171+ lst = TwoOrMore.last styles
172+ let
173+ inside e = (e.left < x) && (e.left + e.width) >= x
174+ let
175+ tooFarLeft = MZ.guard (x <= fst.left + fst.width) $> 0
176+ let
177+ tooFarRight = MZ.guard (x >= lst.left) $> TwoOrMore.length styles - 1
145178 TwoOrMore.findIndex inside styles <|> tooFarLeft <|> tooFarRight
146179
147180handleDrag ∷
@@ -151,11 +184,16 @@ handleDrag ∷
151184 } ->
152185 { left ∷ Number, width ∷ Number }
153186handleDrag { x, activeItemIndex, animationVariants } = do
154− let idx = findOverlapping activeItemIndex animationVariants x
155− let av = animationVariants
156− let firstVariant = av # TwoOrMore.head
157− let lastVariant = av # TwoOrMore.last
158− let baseVariant = av TwoOrMore.!! idx # fromMaybe' \_ -> unsafeCrashWith "shit"
187+ let
188+ idx = findOverlapping activeItemIndex animationVariants x
189+ let
190+ av = animationVariants
191+ let
192+ firstVariant = av # TwoOrMore.head
193+ let
194+ lastVariant = av # TwoOrMore.last
195+ let
196+ baseVariant = av TwoOrMore.!! idx # fromMaybe' \_ -> unsafeCrashWith "shit"
159197 let
160198 closestVariant =
161199 if x >= (baseVariant.left + (baseVariant.width / 2.0)) then
@@ -169,29 +207,44 @@ handleDrag { x, activeItemIndex, animationVariants } = do
169207 else
170208 closestVariant /\ baseVariant
171209 -- Total
172− let rangeStart = smaller.left + (smaller.width / 2.0)
173− let rangeEnd = greater.left + (greater.width / 2.0)
174− let range = rangeEnd - rangeStart
175− let ratio = ((x - rangeStart) / range)
176− let interpolatedWidth = (greater.width * ratio) + smaller.width * (1.0 - ratio)
210+ let
211+ rangeStart = smaller.left + (smaller.width / 2.0)
212+ let
213+ rangeEnd = greater.left + (greater.width / 2.0)
214+ let
215+ range = rangeEnd - rangeStart
216+ let
217+ ratio = ((x - rangeStart) / range)
218+ let
219+ interpolatedWidth = (greater.width * ratio) + smaller.width * (1.0 - ratio)
177220 -- Right
178− let rangeStartRight = smaller.left + smaller.width
179− let rangeEndRight = greater.left + greater.width
180− let rangeRight = rangeEndRight - rangeStartRight
181− let ratioRight = ((x + (interpolatedWidth / 2.0) - rangeStartRight) / rangeRight)
221+ let
222+ rangeStartRight = smaller.left + smaller.width
223+ let
224+ rangeEndRight = greater.left + greater.width
225+ let
226+ rangeRight = rangeEndRight - rangeStartRight
227+ let
228+ ratioRight = ((x + (interpolatedWidth / 2.0) - rangeStartRight) / rangeRight)
182229 -- Left
183− let rangeStartLeft = smaller.left
184− let rangeEndLeft = greater.left
185− let rangeLeft = rangeEndLeft - rangeStartLeft
186− let ratioLeft = (((x - (interpolatedWidth / 2.0)) - rangeStartLeft) / rangeLeft)
230+ let
231+ rangeStartLeft = smaller.left
232+ let
233+ rangeEndLeft = greater.left
234+ let
235+ rangeLeft = rangeEndLeft - rangeStartLeft
236+ let
237+ ratioLeft = (((x - (interpolatedWidth / 2.0)) - rangeStartLeft) / rangeLeft)
187238 -- Individual
188− let left = rangeStartLeft + (ratioLeft * rangeLeft)
189− let right = rangeStartRight + (ratioRight * rangeRight)
190− let width = right - left
239+ let
240+ left = rangeStartLeft + (ratioLeft * rangeLeft)
241+ let
242+ right = rangeStartRight + (ratioRight * rangeRight)
243+ let
244+ width = right - left
191245 if x < firstVariant.left then
192246 { left: firstVariant.left, width: firstVariant.width }
193− else
194− if x >= lastVariant.left + lastVariant.width then do
195− { left: lastVariant.left, width: lastVariant.width }
196− else do
197− { left, width }
247+ else if x >= lastVariant.left + lastVariant.width then do
248+ { left: lastVariant.left, width: lastVariant.width }
249+ else do
250+ { left, width }
src/Yoga/Block/Container/Style.purs+1−1
@@ -108,7 +108,7 @@ mkGlobal maybeMode =
108108 }
109109 , "&:visited":
110110 nest
111− { color: str colour.backgroundLayer1
111+ { color: str colour.text
112112 , textDecorationColor: str colour.backgroundLayer1
113113 }
114114 }
src/Yoga/Block/Internal.purs+442−459
@@ -67,8 +67,8 @@ foreign import mkForwardRefComponentEffect ∷
6767
6868foreign import createRef ∷ ∀ a. Effect (Ref a)
6969
70−type NodeRef =
71− Ref (Nullable Node)
70+type NodeRef
71+ = Ref (Nullable Node)
7272
7373getBoundingBoxFromRef ∷ Ref (Nullable Node) -> Effect (Maybe DOMRect)
7474getBoundingBoxFromRef itemRef = do
@@ -84,8 +84,8 @@ getHTMLElementFromRef itemRef =
8484forwardedRefAsMaybe ∷ ∀ a. Ref a -> Maybe (Ref a)
8585forwardedRefAsMaybe r = safelyWrapped # uorToMaybe >>= Nullable.toMaybe
8686 where
87− safelyWrapped ∷ UndefinedOr (Nullable (Ref a))
88− safelyWrapped = unsafeCoerce r
87+ safelyWrapped ∷ UndefinedOr (Nullable (Ref a))
88+ safelyWrapped = unsafeCoerce r
8989
9090foreign import unsafeUnionDroppingUndefined ∷ ∀ r1 r2 r3. Record r1 -> Record r2 -> Record r3
9191
@@ -94,9 +94,6 @@ foreign import unsafeMergeSecond ∷ ∀ r1 r2 r3. Record r1 -> Record r2 -> Rec
9494unsafeEmotion ∷ ∀ props propsA propsB. ReactComponent { className ∷ String, css ∷ E.Style | props } -> Record propsA -> { className ∷ String, css ∷ E.Style | propsB } -> JSX
9595unsafeEmotion component propsA propsB = E.element component (unsafeUnionDroppingUndefined propsB propsA)
9696
97−unsafeEmotionKeyed ∷ ∀ props propsA propsB. ReactComponent { className ∷ String, css ∷ E.Style, key ∷ String | props } -> Record propsA -> { className ∷ String, css ∷ E.Style | propsB } -> JSX
98−unsafeEmotionKeyed component propsA propsB = E.elementKeyed component (unsafeUnionDroppingUndefined propsB propsA)
99−
10097emotionDiv_ ∷
10198 ∀ props props_.
10299 Lacks "ref" props =>
@@ -137,21 +134,7 @@ pickDefined ∷
137134 { ref ∷ Ref (Nullable Node) | b }
138135pickDefined ref = runFn3 pickDefinedFn ref ks
139136 where
140− ks = Array.fromFoldable $ keys (RProxy ∷ RProxy b)
141−
142−-- [TODO] Delete?
143−emotionInputKeyed_ ∷
144− ∀ props props_.
145− Lacks "ref" props =>
146− Union props props_ ( className ∷ String, css ∷ Style, ref ∷ Ref (Nullable Node), key ∷ String | InputProps ) =>
147− { | InputProps } ->
148− { className ∷ String
149− , css ∷ Style
150− , key ∷ String
151− | props
152− } ->
153− JSX
154−emotionInputKeyed_ = unsafeEmotionKeyed unsafeInput
137+ ks = Array.fromFoldable $ keys (RProxy ∷ RProxy b)
155138
156139emotionInput_ ∷
157140 ∀ props props_.
@@ -178,8 +161,8 @@ emotionInput ∷
178161 JSX
179162emotionInput ref = emotionInput_ <<< pickDefined ref <<< coerceUnOptional
180163 where
181− coerceUnOptional ∷ { | InputPropsF OptionalProp more } -> { | InputPropsF Id more }
182− coerceUnOptional = unsafeCoerce
164+ coerceUnOptional ∷ { | InputPropsF OptionalProp more } -> { | InputPropsF Id more }
165+ coerceUnOptional = unsafeCoerce
183166
184167unsafeInput ∷ ∀ r. ReactComponent (Record r)
185168unsafeInput = dangerous "input"
@@ -217,443 +200,443 @@ dangerous = unsafePerformEffect <<< unsafeCreateDOMComponent
217200
218201-- type DivProps =
219202-- Props_div
220−type DivProps =
221− DivPropsF Id ()
203+type DivProps
204+ = DivPropsF Id ()
222205
223−type DivPropsF f more =
224− ( _aria ∷ f (Object String)
225− , _data ∷ f (Object String)
226− , about ∷ f String
227− , acceptCharset ∷ f String
228− , accessKey ∷ f String
229− , allowFullScreen ∷ f Boolean
230− , autoFocus ∷ f Boolean
231− , autoPlay ∷ f Boolean
232− , capture ∷ f Boolean
233− , cellPadding ∷ f String
234− , cellSpacing ∷ f String
235− , charSet ∷ f String
236− , children ∷ f (Array JSX)
237− , classID ∷ f String
238− , colSpan ∷ f Int
239− , contentEditable ∷ f Boolean
240− , contextMenu ∷ f String
241− , crossOrigin ∷ f String
242− , dangerouslySetInnerHTML ∷ f { __html ∷ f String }
243− , datatype ∷ f String
244− , dateTime ∷ f String
245− , dir ∷ f String
246− , draggable ∷ f Boolean
247− , encType ∷ f String
248− , formAction ∷ f String
249− , formEncType ∷ f String
250− , formMethod ∷ f String
251− , formNoValidate ∷ f Boolean
252− , formTarget ∷ f String
253− , frameBorder ∷ f String
254− , hidden ∷ f Boolean
255− , hrefLang ∷ f String
256− , htmlFor ∷ f String
257− , httpEquiv ∷ f String
258− , icon ∷ f String
259− , id ∷ f String
260− , inlist ∷ f String
261− , inputMode ∷ f String
262− , is ∷ f String
263− , itemID ∷ f String
264− , itemProp ∷ f String
265− , itemRef ∷ f String
266− , itemScope ∷ f Boolean
267− , itemType ∷ f String
268− , keyParams ∷ f String
269− , keyType ∷ f String
270− , lang ∷ f String
271− , marginHeight ∷ f String
272− , marginWidth ∷ f String
273− , maxLength ∷ f Int
274− , mediaGroup ∷ f String
275− , minLength ∷ f Int
276− , noValidate ∷ f Boolean
277− , onAnimationEnd ∷ f EventHandler
278− , onAnimationIteration ∷ f EventHandler
279− , onAnimationStart ∷ f EventHandler
280− , onBlur ∷ f EventHandler
281− , onClick ∷ f EventHandler
282− , onCompositionEnd ∷ f EventHandler
283− , onCompositionStart ∷ f EventHandler
284− , onCompositionUpdate ∷ f EventHandler
285− , onContextMenu ∷ f EventHandler
286− , onCopy ∷ f EventHandler
287− , onCut ∷ f EventHandler
288− , onDoubleClick ∷ f EventHandler
289− , onDrag ∷ f EventHandler
290− , onDragEnd ∷ f EventHandler
291− , onDragEnter ∷ f EventHandler
292− , onDragExit ∷ f EventHandler
293− , onDragLeave ∷ f EventHandler
294− , onDragOver ∷ f EventHandler
295− , onDragStart ∷ f EventHandler
296− , onDrop ∷ f EventHandler
297− , onFocus ∷ f EventHandler
298− , onGotPointerCapture ∷ f EventHandler
299− , onInvalid ∷ f EventHandler
300− , onKeyDown ∷ f EventHandler
301− , onKeyPress ∷ f EventHandler
302− , onKeyUp ∷ f EventHandler
303− , onLostPointerCapture ∷ f EventHandler
304− , onMouseDown ∷ f EventHandler
305− , onMouseEnter ∷ f EventHandler
306− , onMouseLeave ∷ f EventHandler
307− , onMouseMove ∷ f EventHandler
308− , onMouseOut ∷ f EventHandler
309− , onMouseOver ∷ f EventHandler
310− , onMouseUp ∷ f EventHandler
311− , onPaste ∷ f EventHandler
312− , onPointerCancel ∷ f EventHandler
313− , onPointerDown ∷ f EventHandler
314− , onPointerEnter ∷ f EventHandler
315− , onPointerLeave ∷ f EventHandler
316− , onPointerMove ∷ f EventHandler
317− , onPointerOut ∷ f EventHandler
318− , onPointerOver ∷ f EventHandler
319− , onPointerUp ∷ f EventHandler
320− , onSelect ∷ f EventHandler
321− , onSubmit ∷ f EventHandler
322− , onTouchCancel ∷ f EventHandler
323− , onTouchEnd ∷ f EventHandler
324− , onTouchMove ∷ f EventHandler
325− , onTouchStart ∷ f EventHandler
326− , onTransitionEnd ∷ f EventHandler
327− , onWheel ∷ f EventHandler
328− , prefix ∷ f String
329− , property ∷ f String
330− , radioGroup ∷ f String
331− , readOnly ∷ f Boolean
332− , ref ∷ f (Ref (Nullable Node))
333− , resource ∷ f String
334− , role ∷ f String
335− , rowSpan ∷ f Int
336− , scoped ∷ f Boolean
337− , seamless ∷ f Boolean
338− , security ∷ f String
339− , spellCheck ∷ f Boolean
340− , srcDoc ∷ f JSX
341− , srcLang ∷ f String
342− , srcSet ∷ f String
343− , style ∷ f CSS
344− , suppressContentEditableWarning ∷ f Boolean
345− , tabIndex ∷ f Int
346− , title ∷ f String
347− , typeof ∷ f String
348− , unselectable ∷ f Boolean
349− , useMap ∷ f String
350− , vocab ∷ f String
351− , wmode ∷ f String
352− | more
353− )
206+type DivPropsF f more
207+ = ( _aria ∷ f (Object String)
208+ , _data ∷ f (Object String)
209+ , about ∷ f String
210+ , acceptCharset ∷ f String
211+ , accessKey ∷ f String
212+ , allowFullScreen ∷ f Boolean
213+ , autoFocus ∷ f Boolean
214+ , autoPlay ∷ f Boolean
215+ , capture ∷ f Boolean
216+ , cellPadding ∷ f String
217+ , cellSpacing ∷ f String
218+ , charSet ∷ f String
219+ , children ∷ f (Array JSX)
220+ , classID ∷ f String
221+ , colSpan ∷ f Int
222+ , contentEditable ∷ f Boolean
223+ , contextMenu ∷ f String
224+ , crossOrigin ∷ f String
225+ , dangerouslySetInnerHTML ∷ f { __html ∷ f String }
226+ , datatype ∷ f String
227+ , dateTime ∷ f String
228+ , dir ∷ f String
229+ , draggable ∷ f Boolean
230+ , encType ∷ f String
231+ , formAction ∷ f String
232+ , formEncType ∷ f String
233+ , formMethod ∷ f String
234+ , formNoValidate ∷ f Boolean
235+ , formTarget ∷ f String
236+ , frameBorder ∷ f String
237+ , hidden ∷ f Boolean
238+ , hrefLang ∷ f String
239+ , htmlFor ∷ f String
240+ , httpEquiv ∷ f String
241+ , icon ∷ f String
242+ , id ∷ f String
243+ , inlist ∷ f String
244+ , inputMode ∷ f String
245+ , is ∷ f String
246+ , itemID ∷ f String
247+ , itemProp ∷ f String
248+ , itemRef ∷ f String
249+ , itemScope ∷ f Boolean
250+ , itemType ∷ f String
251+ , keyParams ∷ f String
252+ , keyType ∷ f String
253+ , lang ∷ f String
254+ , marginHeight ∷ f String
255+ , marginWidth ∷ f String
256+ , maxLength ∷ f Int
257+ , mediaGroup ∷ f String
258+ , minLength ∷ f Int
259+ , noValidate ∷ f Boolean
260+ , onAnimationEnd ∷ f EventHandler
261+ , onAnimationIteration ∷ f EventHandler
262+ , onAnimationStart ∷ f EventHandler
263+ , onBlur ∷ f EventHandler
264+ , onClick ∷ f EventHandler
265+ , onCompositionEnd ∷ f EventHandler
266+ , onCompositionStart ∷ f EventHandler
267+ , onCompositionUpdate ∷ f EventHandler
268+ , onContextMenu ∷ f EventHandler
269+ , onCopy ∷ f EventHandler
270+ , onCut ∷ f EventHandler
271+ , onDoubleClick ∷ f EventHandler
272+ , onDrag ∷ f EventHandler
273+ , onDragEnd ∷ f EventHandler
274+ , onDragEnter ∷ f EventHandler
275+ , onDragExit ∷ f EventHandler
276+ , onDragLeave ∷ f EventHandler
277+ , onDragOver ∷ f EventHandler
278+ , onDragStart ∷ f EventHandler
279+ , onDrop ∷ f EventHandler
280+ , onFocus ∷ f EventHandler
281+ , onGotPointerCapture ∷ f EventHandler
282+ , onInvalid ∷ f EventHandler
283+ , onKeyDown ∷ f EventHandler
284+ , onKeyPress ∷ f EventHandler
285+ , onKeyUp ∷ f EventHandler
286+ , onLostPointerCapture ∷ f EventHandler
287+ , onMouseDown ∷ f EventHandler
288+ , onMouseEnter ∷ f EventHandler
289+ , onMouseLeave ∷ f EventHandler
290+ , onMouseMove ∷ f EventHandler
291+ , onMouseOut ∷ f EventHandler
292+ , onMouseOver ∷ f EventHandler
293+ , onMouseUp ∷ f EventHandler
294+ , onPaste ∷ f EventHandler
295+ , onPointerCancel ∷ f EventHandler
296+ , onPointerDown ∷ f EventHandler
297+ , onPointerEnter ∷ f EventHandler
298+ , onPointerLeave ∷ f EventHandler
299+ , onPointerMove ∷ f EventHandler
300+ , onPointerOut ∷ f EventHandler
301+ , onPointerOver ∷ f EventHandler
302+ , onPointerUp ∷ f EventHandler
303+ , onSelect ∷ f EventHandler
304+ , onSubmit ∷ f EventHandler
305+ , onTouchCancel ∷ f EventHandler
306+ , onTouchEnd ∷ f EventHandler
307+ , onTouchMove ∷ f EventHandler
308+ , onTouchStart ∷ f EventHandler
309+ , onTransitionEnd ∷ f EventHandler
310+ , onWheel ∷ f EventHandler
311+ , prefix ∷ f String
312+ , property ∷ f String
313+ , radioGroup ∷ f String
314+ , readOnly ∷ f Boolean
315+ , ref ∷ f (Ref (Nullable Node))
316+ , resource ∷ f String
317+ , role ∷ f String
318+ , rowSpan ∷ f Int
319+ , scoped ∷ f Boolean
320+ , seamless ∷ f Boolean
321+ , security ∷ f String
322+ , spellCheck ∷ f Boolean
323+ , srcDoc ∷ f JSX
324+ , srcLang ∷ f String
325+ , srcSet ∷ f String
326+ , style ∷ f CSS
327+ , suppressContentEditableWarning ∷ f Boolean
328+ , tabIndex ∷ f Int
329+ , title ∷ f String
330+ , typeof ∷ f String
331+ , unselectable ∷ f Boolean
332+ , useMap ∷ f String
333+ , vocab ∷ f String
334+ , wmode ∷ f String
335+ | more
336+ )
354337
355−type InputProps =
356− InputPropsF Id ()
338+type InputProps
339+ = InputPropsF Id ()
357340
358−type InputPropsF f more =
359− ( _aria ∷ f (Object String)
360− , _data ∷ f (Object String)
361− , about ∷ f String
362− , accept ∷ f String
363− , acceptCharset ∷ f String
364− , accessKey ∷ f String
365− , allowFullScreen ∷ f Boolean
366− , alt ∷ f String
367− , autoCapitalize ∷ f String
368− , autoComplete ∷ f String
369− , autoCorrect ∷ f String
370− , autoFocus ∷ f Boolean
371− , autoPlay ∷ f Boolean
372− , autoSave ∷ f String
373− , capture ∷ f Boolean
374− , cellPadding ∷ f String
375− , cellSpacing ∷ f String
376− , charSet ∷ f String
377− , checked ∷ f Boolean
378− , classID ∷ f String
379− , colSpan ∷ f Int
380− , contentEditable ∷ f Boolean
381− , contextMenu ∷ f String
382− , crossOrigin ∷ f String
383− , dangerouslySetInnerHTML ∷ f { __html ∷ f String }
384− , datatype ∷ f String
385− , dateTime ∷ f String
386− , defaultChecked ∷ f String
387− , defaultValue ∷ f String
388− , dir ∷ f String
389− , disabled ∷ f Boolean
390− , draggable ∷ f Boolean
391− , encType ∷ f String
392− , form ∷ f String
393− , formAction ∷ f String
394− , formEncType ∷ f String
395− , formMethod ∷ f String
396− , formNoValidate ∷ f Boolean
397− , formTarget ∷ f String
398− , frameBorder ∷ f String
399− , height ∷ f String
400− , hidden ∷ f Boolean
401− , hrefLang ∷ f String
402− , htmlFor ∷ f String
403− , httpEquiv ∷ f String
404− , icon ∷ f String
405− , id ∷ f String
406− , inlist ∷ f String
407− , inputMode ∷ f String
408− , is ∷ f String
409− , itemID ∷ f String
410− , itemProp ∷ f String
411− , itemRef ∷ f String
412− , itemScope ∷ f Boolean
413− , itemType ∷ f String
414− , keyParams ∷ f String
415− , keyType ∷ f String
416− , lang ∷ f String
417− , list ∷ f String
418− , marginHeight ∷ f String
419− , marginWidth ∷ f String
420− , maxLength ∷ f Int
421− , mediaGroup ∷ f String
422− , minLength ∷ f Int
423− , multiple ∷ f Boolean
424− , name ∷ f String
425− , noValidate ∷ f Boolean
426− , onAnimationEnd ∷ f EventHandler
427− , onAnimationIteration ∷ f EventHandler
428− , onAnimationStart ∷ f EventHandler
429− , onBlur ∷ f EventHandler
430− , onChange ∷ f EventHandler
431− , onClick ∷ f EventHandler
432− , onCompositionEnd ∷ f EventHandler
433− , onCompositionStart ∷ f EventHandler
434− , onCompositionUpdate ∷ f EventHandler
435− , onContextMenu ∷ f EventHandler
436− , onCopy ∷ f EventHandler
437− , onCut ∷ f EventHandler
438− , onDoubleClick ∷ f EventHandler
439− , onDrag ∷ f EventHandler
440− , onDragEnd ∷ f EventHandler
441− , onDragEnter ∷ f EventHandler
442− , onDragExit ∷ f EventHandler
443− , onDragLeave ∷ f EventHandler
444− , onDragOver ∷ f EventHandler
445− , onDragStart ∷ f EventHandler
446− , onDrop ∷ f EventHandler
447− , onFocus ∷ f EventHandler
448− , onGotPointerCapture ∷ f EventHandler
449− , onInvalid ∷ f EventHandler
450− , onKeyDown ∷ f EventHandler
451− , onKeyPress ∷ f EventHandler
452− , onKeyUp ∷ f EventHandler
453− , onLostPointerCapture ∷ f EventHandler
454− , onMouseDown ∷ f EventHandler
455− , onMouseEnter ∷ f EventHandler
456− , onMouseLeave ∷ f EventHandler
457− , onMouseMove ∷ f EventHandler
458− , onMouseOut ∷ f EventHandler
459− , onMouseOver ∷ f EventHandler
460− , onMouseUp ∷ f EventHandler
461− , onPaste ∷ f EventHandler
462− , onPointerCancel ∷ f EventHandler
463− , onPointerDown ∷ f EventHandler
464− , onPointerEnter ∷ f EventHandler
465− , onPointerLeave ∷ f EventHandler
466− , onPointerMove ∷ f EventHandler
467− , onPointerOut ∷ f EventHandler
468− , onPointerOver ∷ f EventHandler
469− , onPointerUp ∷ f EventHandler
470− , onSelect ∷ f EventHandler
471− , onSubmit ∷ f EventHandler
472− , onTouchCancel ∷ f EventHandler
473− , onTouchEnd ∷ f EventHandler
474− , onTouchMove ∷ f EventHandler
475− , onTouchStart ∷ f EventHandler
476− , onTransitionEnd ∷ f EventHandler
477− , onWheel ∷ f EventHandler
478− , pattern ∷ f String
479− , placeholder ∷ f String
480− , prefix ∷ f String
481− , property ∷ f String
482− , radioGroup ∷ f String
483− , ref ∷ f (Ref (Nullable Node))
484− , readOnly ∷ f Boolean
485− , required ∷ f Boolean
486− , resource ∷ f String
487− , results ∷ f String
488− , role ∷ f String
489− , rowSpan ∷ f Int
490− , scoped ∷ f Boolean
491− , seamless ∷ f Boolean
492− , security ∷ f String
493− , size ∷ f Int
494− , spellCheck ∷ f Boolean
495− , src ∷ f String
496− , srcDoc ∷ f JSX
497− , srcLang ∷ f String
498− , srcSet ∷ f String
499− , step ∷ f String
500− , style ∷ f CSS
501− , suppressContentEditableWarning ∷ f Boolean
502− , tabIndex ∷ f Int
503− , title ∷ f String
504− , title ∷ f String
505− , type ∷ f String
506− , typeof ∷ f String
507− , unselectable ∷ f Boolean
508− , useMap ∷ f String
509− , value ∷ f String
510− , vocab ∷ f String
511− , width ∷ f String
512− , wmode ∷ f String
513− , min ∷ f (String)
514− , max ∷ f (String)
515− | more
516− )
341+type InputPropsF f more
342+ = ( _aria ∷ f (Object String)
343+ , _data ∷ f (Object String)
344+ , about ∷ f String
345+ , accept ∷ f String
346+ , acceptCharset ∷ f String
347+ , accessKey ∷ f String
348+ , allowFullScreen ∷ f Boolean
349+ , alt ∷ f String
350+ , autoCapitalize ∷ f String
351+ , autoComplete ∷ f String
352+ , autoCorrect ∷ f String
353+ , autoFocus ∷ f Boolean
354+ , autoPlay ∷ f Boolean
355+ , autoSave ∷ f String
356+ , capture ∷ f Boolean
357+ , cellPadding ∷ f String
358+ , cellSpacing ∷ f String
359+ , charSet ∷ f String
360+ , checked ∷ f Boolean
361+ , classID ∷ f String
362+ , colSpan ∷ f Int
363+ , contentEditable ∷ f Boolean
364+ , contextMenu ∷ f String
365+ , crossOrigin ∷ f String
366+ , dangerouslySetInnerHTML ∷ f { __html ∷ f String }
367+ , datatype ∷ f String
368+ , dateTime ∷ f String
369+ , defaultChecked ∷ f String
370+ , defaultValue ∷ f String
371+ , dir ∷ f String
372+ , disabled ∷ f Boolean
373+ , draggable ∷ f Boolean
374+ , encType ∷ f String
375+ , form ∷ f String
376+ , formAction ∷ f String
377+ , formEncType ∷ f String
378+ , formMethod ∷ f String
379+ , formNoValidate ∷ f Boolean
380+ , formTarget ∷ f String
381+ , frameBorder ∷ f String
382+ , height ∷ f String
383+ , hidden ∷ f Boolean
384+ , hrefLang ∷ f String
385+ , htmlFor ∷ f String
386+ , httpEquiv ∷ f String
387+ , icon ∷ f String
388+ , id ∷ f String
389+ , inlist ∷ f String
390+ , inputMode ∷ f String
391+ , is ∷ f String
392+ , itemID ∷ f String
393+ , itemProp ∷ f String
394+ , itemRef ∷ f String
395+ , itemScope ∷ f Boolean
396+ , itemType ∷ f String
397+ , keyParams ∷ f String
398+ , keyType ∷ f String
399+ , lang ∷ f String
400+ , list ∷ f String
401+ , marginHeight ∷ f String
402+ , marginWidth ∷ f String
403+ , maxLength ∷ f Int
404+ , mediaGroup ∷ f String
405+ , minLength ∷ f Int
406+ , multiple ∷ f Boolean
407+ , name ∷ f String
408+ , noValidate ∷ f Boolean
409+ , onAnimationEnd ∷ f EventHandler
410+ , onAnimationIteration ∷ f EventHandler
411+ , onAnimationStart ∷ f EventHandler
412+ , onBlur ∷ f EventHandler
413+ , onChange ∷ f EventHandler
414+ , onClick ∷ f EventHandler
415+ , onCompositionEnd ∷ f EventHandler
416+ , onCompositionStart ∷ f EventHandler
417+ , onCompositionUpdate ∷ f EventHandler
418+ , onContextMenu ∷ f EventHandler
419+ , onCopy ∷ f EventHandler
420+ , onCut ∷ f EventHandler
421+ , onDoubleClick ∷ f EventHandler
422+ , onDrag ∷ f EventHandler
423+ , onDragEnd ∷ f EventHandler
424+ , onDragEnter ∷ f EventHandler
425+ , onDragExit ∷ f EventHandler
426+ , onDragLeave ∷ f EventHandler
427+ , onDragOver ∷ f EventHandler
428+ , onDragStart ∷ f EventHandler
429+ , onDrop ∷ f EventHandler
430+ , onFocus ∷ f EventHandler
431+ , onGotPointerCapture ∷ f EventHandler
432+ , onInvalid ∷ f EventHandler
433+ , onKeyDown ∷ f EventHandler
434+ , onKeyPress ∷ f EventHandler
435+ , onKeyUp ∷ f EventHandler
436+ , onLostPointerCapture ∷ f EventHandler
437+ , onMouseDown ∷ f EventHandler
438+ , onMouseEnter ∷ f EventHandler
439+ , onMouseLeave ∷ f EventHandler
440+ , onMouseMove ∷ f EventHandler
441+ , onMouseOut ∷ f EventHandler
442+ , onMouseOver ∷ f EventHandler
443+ , onMouseUp ∷ f EventHandler
444+ , onPaste ∷ f EventHandler
445+ , onPointerCancel ∷ f EventHandler
446+ , onPointerDown ∷ f EventHandler
447+ , onPointerEnter ∷ f EventHandler
448+ , onPointerLeave ∷ f EventHandler
449+ , onPointerMove ∷ f EventHandler
450+ , onPointerOut ∷ f EventHandler
451+ , onPointerOver ∷ f EventHandler
452+ , onPointerUp ∷ f EventHandler
453+ , onSelect ∷ f EventHandler
454+ , onSubmit ∷ f EventHandler
455+ , onTouchCancel ∷ f EventHandler
456+ , onTouchEnd ∷ f EventHandler
457+ , onTouchMove ∷ f EventHandler
458+ , onTouchStart ∷ f EventHandler
459+ , onTransitionEnd ∷ f EventHandler
460+ , onWheel ∷ f EventHandler
461+ , pattern ∷ f String
462+ , placeholder ∷ f String
463+ , prefix ∷ f String
464+ , property ∷ f String
465+ , radioGroup ∷ f String
466+ , ref ∷ f (Ref (Nullable Node))
467+ , readOnly ∷ f Boolean
468+ , required ∷ f Boolean
469+ , resource ∷ f String
470+ , results ∷ f String
471+ , role ∷ f String
472+ , rowSpan ∷ f Int
473+ , scoped ∷ f Boolean
474+ , seamless ∷ f Boolean
475+ , security ∷ f String
476+ , size ∷ f Int
477+ , spellCheck ∷ f Boolean
478+ , src ∷ f String
479+ , srcDoc ∷ f JSX
480+ , srcLang ∷ f String
481+ , srcSet ∷ f String
482+ , step ∷ f String
483+ , style ∷ f CSS
484+ , suppressContentEditableWarning ∷ f Boolean
485+ , tabIndex ∷ f Int
486+ , title ∷ f String
487+ , title ∷ f String
488+ , type ∷ f String
489+ , typeof ∷ f String
490+ , unselectable ∷ f Boolean
491+ , useMap ∷ f String
492+ , value ∷ f String
493+ , vocab ∷ f String
494+ , width ∷ f String
495+ , wmode ∷ f String
496+ , min ∷ f (String)
497+ , max ∷ f (String)
498+ | more
499+ )
517500
518−type ButtonProps =
519− ButtonPropsF Id ()
501+type ButtonProps
502+ = ButtonPropsF Id ()
520503
521−type ButtonPropsF f more =
522− ( _aria ∷ f (Object String)
523− , _data ∷ f (Object String)
524− , about ∷ f String
525− , acceptCharset ∷ f String
526− , accessKey ∷ f String
527− , allowFullScreen ∷ f Boolean
528− , allowTransparency ∷ f Boolean
529− , autoFocus ∷ f Boolean
530− , autoPlay ∷ f Boolean
531− , capture ∷ f Boolean
532− , cellPadding ∷ f String
533− , cellSpacing ∷ f String
534− , charSet ∷ f String
535− , children ∷ f (Array JSX)
536− , classID ∷ f String
537− , className ∷ f String
538− , colSpan ∷ f Int
539− , contentEditable ∷ f Boolean
540− , contextMenu ∷ f String
541− , crossOrigin ∷ f String
542− , dangerouslySetInnerHTML ∷ f { __html ∷ String }
543− , datatype ∷ f String
544− , dateTime ∷ f String
545− , dir ∷ f String
546− , disabled ∷ f Boolean
547− , draggable ∷ f Boolean
548− , encType ∷ f String
549− , form ∷ f String
550− , formAction ∷ f String
551− , formEncType ∷ f String
552− , formMethod ∷ f String
553− , formNoValidate ∷ f Boolean
554− , formTarget ∷ f String
555− , frameBorder ∷ f String
556− , hidden ∷ f Boolean
557− , hrefLang ∷ f String
558− , htmlFor ∷ f String
559− , httpEquiv ∷ f String
560− , icon ∷ f String
561− , id ∷ f String
562− , inlist ∷ f String
563− , inputMode ∷ f String
564− , is ∷ f String
565− , itemID ∷ f String
566− , itemProp ∷ f String
567− , itemRef ∷ f String
568− , itemScope ∷ f Boolean
569− , itemType ∷ f String
570− , key ∷ f String
571− , keyParams ∷ f String
572− , keyType ∷ f String
573− , lang ∷ f String
574− , marginHeight ∷ f String
575− , marginWidth ∷ f String
576− , maxLength ∷ f Int
577− , mediaGroup ∷ f String
578− , minLength ∷ f Int
579− , name ∷ f String
580− , noValidate ∷ f Boolean
581− , onAnimationEnd ∷ f EventHandler
582− , onAnimationIteration ∷ f EventHandler
583− , onAnimationStart ∷ f EventHandler
584− , onBlur ∷ f EventHandler
585− , onClick ∷ f EventHandler
586− , onCompositionEnd ∷ f EventHandler
587− , onCompositionStart ∷ f EventHandler
588− , onCompositionUpdate ∷ f EventHandler
589− , onContextMenu ∷ f EventHandler
590− , onCopy ∷ f EventHandler
591− , onCut ∷ f EventHandler
592− , onDoubleClick ∷ f EventHandler
593− , onDrag ∷ f EventHandler
594− , onDragEnd ∷ f EventHandler
595− , onDragEnter ∷ f EventHandler
596− , onDragExit ∷ f EventHandler
597− , onDragLeave ∷ f EventHandler
598− , onDragOver ∷ f EventHandler
599− , onDragStart ∷ f EventHandler
600− , onDrop ∷ f EventHandler
601− , onFocus ∷ f EventHandler
602− , onGotPointerCapture ∷ f EventHandler
603− , onInvalid ∷ f EventHandler
604− , onKeyDown ∷ f EventHandler
605− , onKeyPress ∷ f EventHandler
606− , onKeyUp ∷ f EventHandler
607− , onLostPointerCapture ∷ f EventHandler
608− , onMouseDown ∷ f EventHandler
609− , onMouseEnter ∷ f EventHandler
610− , onMouseLeave ∷ f EventHandler
611− , onMouseMove ∷ f EventHandler
612− , onMouseOut ∷ f EventHandler
613− , onMouseOver ∷ f EventHandler
614− , onMouseUp ∷ f EventHandler
615− , onPaste ∷ f EventHandler
616− , onPointerCancel ∷ f EventHandler
617− , onPointerDown ∷ f EventHandler
618− , onPointerEnter ∷ f EventHandler
619− , onPointerLeave ∷ f EventHandler
620− , onPointerMove ∷ f EventHandler
621− , onPointerOut ∷ f EventHandler
622− , onPointerOver ∷ f EventHandler
623− , onPointerUp ∷ f EventHandler
624− , onSelect ∷ f EventHandler
625− , onSubmit ∷ f EventHandler
626− , onTouchCancel ∷ f EventHandler
627− , onTouchEnd ∷ f EventHandler
628− , onTouchMove ∷ f EventHandler
629− , onTouchStart ∷ f EventHandler
630− , onTransitionEnd ∷ f EventHandler
631− , onWheel ∷ f EventHandler
632− , prefix ∷ f String
633− , property ∷ f String
634− , radioGroup ∷ f String
635− , readOnly ∷ f Boolean
636− , ref ∷ f (Ref (Nullable Node))
637− , resource ∷ f String
638− , role ∷ f String
639− , rowSpan ∷ f Int
640− , scoped ∷ f Boolean
641− , seamless ∷ f Boolean
642− , security ∷ f String
643− , spellCheck ∷ f Boolean
644− , srcDoc ∷ f JSX
645− , srcLang ∷ f String
646− , srcSet ∷ f String
647− , style ∷ f CSS
648− , suppressContentEditableWarning ∷ f Boolean
649− , tabIndex ∷ f Int
650− , title ∷ f String
651− , type ∷ f String
652− , typeof ∷ f String
653− , unselectable ∷ f Boolean
654− , useMap ∷ f String
655− , value ∷ f String
656− , vocab ∷ f String
657− , wmode ∷ f String
658− | more
659− )
504+type ButtonPropsF f more
505+ = ( _aria ∷ f (Object String)
506+ , _data ∷ f (Object String)
507+ , about ∷ f String
508+ , acceptCharset ∷ f String
509+ , accessKey ∷ f String
510+ , allowFullScreen ∷ f Boolean
511+ , allowTransparency ∷ f Boolean
512+ , autoFocus ∷ f Boolean
513+ , autoPlay ∷ f Boolean
514+ , capture ∷ f Boolean
515+ , cellPadding ∷ f String
516+ , cellSpacing ∷ f String
517+ , charSet ∷ f String
518+ , children ∷ f (Array JSX)
519+ , classID ∷ f String
520+ , className ∷ f String
521+ , colSpan ∷ f Int
522+ , contentEditable ∷ f Boolean
523+ , contextMenu ∷ f String
524+ , crossOrigin ∷ f String
525+ , dangerouslySetInnerHTML ∷ f { __html ∷ String }
526+ , datatype ∷ f String
527+ , dateTime ∷ f String
528+ , dir ∷ f String
529+ , disabled ∷ f Boolean
530+ , draggable ∷ f Boolean
531+ , encType ∷ f String
532+ , form ∷ f String
533+ , formAction ∷ f String
534+ , formEncType ∷ f String
535+ , formMethod ∷ f String
536+ , formNoValidate ∷ f Boolean
537+ , formTarget ∷ f String
538+ , frameBorder ∷ f String
539+ , hidden ∷ f Boolean
540+ , hrefLang ∷ f String
541+ , htmlFor ∷ f String
542+ , httpEquiv ∷ f String
543+ , icon ∷ f String
544+ , id ∷ f String
545+ , inlist ∷ f String
546+ , inputMode ∷ f String
547+ , is ∷ f String
548+ , itemID ∷ f String
549+ , itemProp ∷ f String
550+ , itemRef ∷ f String
551+ , itemScope ∷ f Boolean
552+ , itemType ∷ f String
553+ , key ∷ f String
554+ , keyParams ∷ f String
555+ , keyType ∷ f String
556+ , lang ∷ f String
557+ , marginHeight ∷ f String
558+ , marginWidth ∷ f String
559+ , maxLength ∷ f Int
560+ , mediaGroup ∷ f String
561+ , minLength ∷ f Int
562+ , name ∷ f String
563+ , noValidate ∷ f Boolean
564+ , onAnimationEnd ∷ f EventHandler
565+ , onAnimationIteration ∷ f EventHandler
566+ , onAnimationStart ∷ f EventHandler
567+ , onBlur ∷ f EventHandler
568+ , onClick ∷ f EventHandler
569+ , onCompositionEnd ∷ f EventHandler
570+ , onCompositionStart ∷ f EventHandler
571+ , onCompositionUpdate ∷ f EventHandler
572+ , onContextMenu ∷ f EventHandler
573+ , onCopy ∷ f EventHandler
574+ , onCut ∷ f EventHandler
575+ , onDoubleClick ∷ f EventHandler
576+ , onDrag ∷ f EventHandler
577+ , onDragEnd ∷ f EventHandler
578+ , onDragEnter ∷ f EventHandler
579+ , onDragExit ∷ f EventHandler
580+ , onDragLeave ∷ f EventHandler
581+ , onDragOver ∷ f EventHandler
582+ , onDragStart ∷ f EventHandler
583+ , onDrop ∷ f EventHandler
584+ , onFocus ∷ f EventHandler
585+ , onGotPointerCapture ∷ f EventHandler
586+ , onInvalid ∷ f EventHandler
587+ , onKeyDown ∷ f EventHandler
588+ , onKeyPress ∷ f EventHandler
589+ , onKeyUp ∷ f EventHandler
590+ , onLostPointerCapture ∷ f EventHandler
591+ , onMouseDown ∷ f EventHandler
592+ , onMouseEnter ∷ f EventHandler
593+ , onMouseLeave ∷ f EventHandler
594+ , onMouseMove ∷ f EventHandler
595+ , onMouseOut ∷ f EventHandler
596+ , onMouseOver ∷ f EventHandler
597+ , onMouseUp ∷ f EventHandler
598+ , onPaste ∷ f EventHandler
599+ , onPointerCancel ∷ f EventHandler
600+ , onPointerDown ∷ f EventHandler
601+ , onPointerEnter ∷ f EventHandler
602+ , onPointerLeave ∷ f EventHandler
603+ , onPointerMove ∷ f EventHandler
604+ , onPointerOut ∷ f EventHandler
605+ , onPointerOver ∷ f EventHandler
606+ , onPointerUp ∷ f EventHandler
607+ , onSelect ∷ f EventHandler
608+ , onSubmit ∷ f EventHandler
609+ , onTouchCancel ∷ f EventHandler
610+ , onTouchEnd ∷ f EventHandler
611+ , onTouchMove ∷ f EventHandler
612+ , onTouchStart ∷ f EventHandler
613+ , onTransitionEnd ∷ f EventHandler
614+ , onWheel ∷ f EventHandler
615+ , prefix ∷ f String
616+ , property ∷ f String
617+ , radioGroup ∷ f String
618+ , readOnly ∷ f Boolean
619+ , ref ∷ f (Ref (Nullable Node))
620+ , resource ∷ f String
621+ , role ∷ f String
622+ , rowSpan ∷ f Int
623+ , scoped ∷ f Boolean
624+ , seamless ∷ f Boolean
625+ , security ∷ f String
626+ , spellCheck ∷ f Boolean
627+ , srcDoc ∷ f JSX
628+ , srcLang ∷ f String
629+ , srcSet ∷ f String
630+ , style ∷ f CSS
631+ , suppressContentEditableWarning ∷ f Boolean
632+ , tabIndex ∷ f Int
633+ , title ∷ f String
634+ , type ∷ f String
635+ , typeof ∷ f String
636+ , unselectable ∷ f Boolean
637+ , useMap ∷ f String
638+ , value ∷ f String
639+ , vocab ∷ f String
640+ , wmode ∷ f String
641+ | more
642+ )
src/Yoga/Block/Layout/Sidebar/Spec.purs+4−3
@@ -1,8 +1,8 @@
11module Yoga.Block.Layout.Sidebar.Spec where
22
33import Yoga.Prelude.Spec
4−import Yoga.Block.Layout.Sidebar as Sidebar
54import React.Basic.DOM as R
5+import Yoga.Block.Layout.Sidebar as Sidebar
66
77spec ∷ Spec Unit
88spec =
@@ -10,7 +10,7 @@ spec =
1010 describe "The sidebar" do
1111 it "renders without errors" do
1212 void
13− $ renderComponent Sidebar.component {}
13+ $ renderComponent Sidebar.component { children: [] }
1414 it "accepts div props" do
1515 { findByText } <-
1616 renderComponent Sidebar.component
@@ -18,4 +18,5 @@ spec =
1818 , children: [ R.text "Find me!" ]
1919 }
2020 elem <- findByText "Find me!"
21− elem `shouldHaveAttribute` "role"
21+ parent <- elem # getParentOrFailWith "Sidebar has no parent"
22+ parent `shouldHaveAttribute` "role"
src/Yoga/Block/Layout/Sidebar/View.purs+9−9
@@ -3,18 +3,18 @@ module Yoga.Block.Layout.Sidebar.View (component, Props, PropsF) where
33import Yoga.Prelude.View
44import Yoga.Block.Layout.Sidebar.Style as Style
55
6−type PropsF f =
7− ( className ∷ f String
8− | Style.Props f DivProps
9− )
6+type PropsF f
7+ = ( className ∷ f String
8+ | Style.Props f DivProps
9+ )
1010
11−type Props =
12− PropsF Id
11+type Props
12+ = PropsF Id
1313
14−type PropsOptional =
15− PropsF OptionalProp
14+type PropsOptional
15+ = PropsF OptionalProp
1616
17−component ∷ ∀ p p_. Union p p_ Props => ReactComponent { | p }
17+component ∷ ∀ p p_. Union p p_ Props => ReactComponent { children :: Array JSX | p }
1818component = rawComponent
1919
2020rawComponent ∷ ∀ p. ReactComponent { | p }
src/Yoga/Block/Layout/Stack/Spec.purs+3−2
@@ -10,7 +10,7 @@ spec =
1010 describe "The stack" do
1111 it "renders without errors" do
1212 void
13− $ renderComponent Stack.component {}
13+ $ renderComponent Stack.component { children: [] }
1414 it "accepts div props" do
1515 { findByText } <-
1616 renderComponent Stack.component
@@ -18,4 +18,5 @@ spec =
1818 , children: [ R.text "Find me!" ]
1919 }
2020 elem <- findByText "Find me!"
21− elem `shouldHaveAttribute` "role"
21+ parent <- elem # getParentOrFailWith "No parent!"
22+ parent `shouldHaveAttribute` "role"
src/Yoga/Block/Layout/Stack/View.purs+5−2
@@ -1,6 +1,7 @@
11module Yoga.Block.Layout.Stack.View (component, Props, PropsF) where
22
33import Yoga.Prelude.View
4+import Unsafe.Coerce (unsafeCoerce)
45import Yoga.Block.Layout.Stack.Style as Style
56
67type PropsF f =
@@ -14,16 +15,18 @@ type Props =
1415type PropsOptional =
1516 PropsF OptionalProp
1617
17−component ∷ ∀ p q. Union p q Props => ReactComponent { | p }
18+component ∷ ∀ p q. Union p q Props => ReactComponent { children ∷ Array JSX | p }
1819component = rawComponent
1920
2021rawComponent ∷ ∀ p. ReactComponent { | p }
2122rawComponent =
2223 mkForwardRefComponent "Stack" do
2324 \(props ∷ { | PropsOptional }) ref -> React.do
25+ -- Must be careful here because React fiddles with children
26+ let safeChildren = reactChildrenToArray (unsafeCoerce props.children)
2427 -- Wrapping children to use `:nth-of-type` instead of `:nth-child`
2528 -- in CSS because the latter is problematic in SSR
26− let wrappedChildren = props.children <#> \c -> div </ {} /> [ c ]
29+ let wrappedChildren = safeChildren <#> \c -> div </ {} /> [ c ]
2730 pure
2831 $ emotionDiv ref props
2932 { className: "ry-stack " <>? props.className
src/Yoga/Prelude/Spec.purs+1−1
@@ -12,4 +12,4 @@ import Effect.Aff (Aff)
1212import React.Basic (ReactComponent)
1313import React.TestingLibrary (class TextMatch, FakeKeyboardEvent, RenderQueries, cleanup, defaultKeyboardEvent, describeComponent, findByText, fireEvent, fireEventAbort, fireEventAnimationEnd, fireEventAnimationIteration, fireEventAnimationStart, fireEventBlur, fireEventCanPlay, fireEventCanPlayThrough, fireEventChange, fireEventClick, fireEventCompositionEnd, fireEventCompositionStart, fireEventCompositionUpdate, fireEventContextMenu, fireEventCopy, fireEventCut, fireEventDblClick, fireEventDoubleClick, fireEventDrag, fireEventDragEnd, fireEventDragEnter, fireEventDragExit, fireEventDragLeave, fireEventDragOver, fireEventDragStart, fireEventDrop, fireEventDurationChange, fireEventEmptied, fireEventEncrypted, fireEventEnded, fireEventError, fireEventFocus, fireEventFocusIn, fireEventFocusOut, fireEventInput, fireEventInvalid, fireEventKeyDown, fireEventKeyPress, fireEventKeyUp, fireEventLoad, fireEventLoadStart, fireEventLoadedData, fireEventLoadedMetadata, fireEventMouseDown, fireEventMouseEnter, fireEventMouseLeave, fireEventMouseMove, fireEventMouseOut, fireEventMouseOver, fireEventMouseUp, fireEventPaste, fireEventPause, fireEventPlay, fireEventPlaying, fireEventPointerCancel, fireEventPointerDown, fireEventPointerMove, fireEventPointerOut, fireEventPointerOver, fireEventPointerUp, fireEventProgress, fireEventRateChange, fireEventScroll, fireEventSeeked, fireEventSeeking, fireEventSelect, fireEventStalled, fireEventSubmit, fireEventSuspend, fireEventTimeUpdate, fireEventTouchCancel, fireEventTouchEnd, fireEventTouchMove, fireEventTouchStart, fireEventTransitionEnd, fireEventVolumeChange, fireEventWaiting, fireEventWheel, render, renderComponent, typeText)
1414import Test.Spec (class Example, class FocusWarning, ActionWith, ComputationType(..), Item(..), Spec, SpecT(..), SpecTree, Tree(..), after, afterAll, afterAll_, after_, around, aroundWith, around_, before, beforeAll, beforeAll_, beforeWith, before_, collect, describe, describeOnly, evaluateExample, focus, hoistSpec, it, itOnly, mapSpecTree, parallel, pending, pending', sequential)
15−import Test.Spec.Assertions.DOM (shouldHaveAttribute, shouldHaveAttributeWithValue, textContentShouldEqual, valueShouldEqual)
15+import Test.Spec.Assertions.DOM (getParentOrFailWith, shouldHaveAttribute, shouldHaveAttributeWithValue, textContentShouldEqual, valueShouldEqual)