Skip to content

Commit 62c6ee6

Browse files
committed
Input tags
1 parent 9d4e15f commit 62c6ee6

File tree

3 files changed

+37
-102
lines changed

3 files changed

+37
-102
lines changed

src/Flame/Native/Attribute/Internal.purs

+3
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ placeholder = createProperty "placeholder"
120120
src ToStringAttribute
121121
src = createProperty "source"
122122

123+
type' ToStringAttribute
124+
type' = createProperty "type"
125+
123126
title ToStringAttribute
124127
title = createProperty "title"
125128

src/Flame/Native/Element.js

+24-89
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, {createElement } from 'react';
2-
import { View, Text, Button, txtInput, StyleSheet, Image } from 'react-native';
2+
import { View, Text, Button, TextInput, StyleSheet, Image } from 'react-native';
33

44
let textNode = 1,
55
elementNode = 2,
@@ -46,6 +46,22 @@ export function createHrNode(nodeData) {
4646
return createViewNode(nodeData)(undefined);
4747
}
4848

49+
export function createLabelNode(nodeData) {
50+
return function(children) {
51+
let props = fromNodeData(nodeData),
52+
propedChildren = [];
53+
54+
for (let c of children) {
55+
let txt = text(c);
56+
txt.props = props;
57+
58+
propedChildren.push(txt);
59+
}
60+
61+
return createViewNode(undefined)(propedChildren);
62+
}
63+
}
64+
4965
export function createBrNode(nodeData) {
5066
let txt = text('\n');
5167
txt.props = fromNodeData(nodeData);
@@ -54,7 +70,13 @@ export function createBrNode(nodeData) {
5470
}
5571

5672
export function createInputNode(nodeData) {
57-
return createElement(txtInput, fromNodeData(nodeData));
73+
let props = fromNodeData(nodeData);
74+
75+
if (props.type === 'button' || props.type === 'submit') {
76+
return createElement(Button, { title: props.value || "", ...props })
77+
}
78+
79+
return createElement(TextInput, props);
5880
}
5981

6082
export function createANode(nodeData) {
@@ -110,93 +132,6 @@ export function text(value) {
110132
return createElement(Text, undefined, value);
111133
}
112134

113-
export function createLazyNode(nodeData) {
114-
return function (render) {
115-
return function (arg) {
116-
let key = nodeData[0];
117-
118-
return {
119-
nodeType: lazyNode,
120-
node: undefined,
121-
nodeData: key === undefined ? undefined : { key: key },
122-
render: render,
123-
arg: arg,
124-
rendered: undefined
125-
};
126-
};
127-
};
128-
}
129-
130-
export function createManagedNode(render) {
131-
return function (nodeData) {
132-
return function (arg) {
133-
return {
134-
nodeType: managedNode,
135-
node: undefined,
136-
nodeData: fromNodeData(nodeData),
137-
createNode: render.createNode,
138-
updateNode: render.updateNode,
139-
arg: arg
140-
};
141-
};
142-
};
143-
}
144-
145-
export function createDatalessManagedNode(render) {
146-
return function (arg) {
147-
return {
148-
nodeType: managedNode,
149-
node: undefined,
150-
nodeData: {},
151-
createNode: render.createNode,
152-
updateNode: render.updateNode,
153-
arg: arg
154-
};
155-
};
156-
}
157-
158-
export function createSvgNode(nodeData) {
159-
return function (children) {
160-
return {
161-
nodeType: svgNode,
162-
node: undefined,
163-
tag: 'svg',
164-
nodeData: fromNodeData(nodeData),
165-
children: asSvg(children)
166-
};
167-
};
168-
}
169-
170-
export function createDatalessSvgNode(children) {
171-
return {
172-
nodeType: svgNode,
173-
node: undefined,
174-
tag: 'svg',
175-
nodeData: {},
176-
children: asSvg(children)
177-
};
178-
}
179-
180-
export function createSingleSvgNode(nodeData) {
181-
return {
182-
nodeType: svgNode,
183-
node: undefined,
184-
tag: 'svg',
185-
nodeData: fromNodeData(nodeData)
186-
};
187-
}
188-
189-
function asSvg(elements) {
190-
for (let e of elements) {
191-
if (e.nodeType === elementNode)
192-
e.nodeType = svgNode;
193-
if (e.children !== null && typeof e.children !== 'undefined')
194-
e.children = asSvg(e.children);
195-
}
196-
197-
return elements;
198-
}
199-
200135
function fromNodeData(allData) {
201136
let nodeData;
202137

src/Flame/Native/Element.purs

+10-13
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,12 @@ foreign import createHrNode :: forall message. Array (NodeData message) -> Html
4848

4949
foreign import createANode :: forall message. Array (NodeData message) -> Array (Html message) -> Html message
5050

51-
foreign import createInputNode :: forall message. Array (NodeData message) -> Array (Html message) -> Html message
51+
foreign import createInputNode :: forall message. Array (NodeData message) -> Html message
5252

5353
foreign import createBNode :: forall message. Array (NodeData message) -> Array (Html message) -> Html message
5454

55+
foreign import createLabelNode :: forall message. Array (NodeData message) -> Array (Html message) -> Html message
56+
5557
-- | Creates a text node
5658
foreign import text message. String Html message
5759

@@ -65,10 +67,7 @@ br' :: forall a h. ToHtml' a h
6567
br' nodeData = createBrNode (toNode nodeData)
6668

6769
input :: forall a h. ToHtml' a h
68-
input nodeData = createInputNode (toNode nodeData) []
69-
70-
input_ :: forall b h. ToHtml_ b h
71-
input_ children = createInputNode [] $ toNode children
70+
input nodeData = createInputNode (toNode nodeData)
7271

7372
a :: forall a b h. ToHtml a b h
7473
a nodeData children = createANode (toNode nodeData) $ toNode children
@@ -118,7 +117,6 @@ div' nodeData = createViewNode (toNode nodeData) []
118117
img a h. ToHtml' a h
119118
img nodeData = createImageNode (toNode nodeData)
120119

121-
122120
-- h1 ∷ ∀ a b h. ToHtml a b h
123121
-- h1 = createElement "h1"
124122

@@ -201,15 +199,14 @@ img nodeData = createImageNode (toNode nodeData)
201199
-- i' = createElement' "i"
202200

203201

204-
-- label ∷ ∀ a b h. ToHtml a b h
205-
-- label = createElement "label"
206-
207-
-- label_ ∷ ∀ b h. ToHtml_ b h
208-
-- label_ = createElement_ "label"
202+
label a b h. ToHtml a b h
203+
label nodeData children = createLabelNode (toNode nodeData) $ toNode children
209204

210-
-- label' ∷ ∀ a h. ToHtml' a h
211-
-- label' = createElement' "label"
205+
label_ b h. ToHtml_ b h
206+
label_ children = createLabelNode [] $ toNode children
212207

208+
label' a h. ToHtml' a h
209+
label' nodeData = createLabelNode (toNode nodeData) []
213210

214211
-- li ∷ ∀ a b h. ToHtml a b h
215212
-- li = createElement "li"

0 commit comments

Comments
 (0)