Skip to content

Commit 8abe58e

Browse files
committed
Fix tags styles
1 parent 134b4bd commit 8abe58e

File tree

3 files changed

+38
-40
lines changed

3 files changed

+38
-40
lines changed

src/Flame/Native/Attribute/Internal.purs

+2-4
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,10 @@ foreign import createProperty ∷ ∀ message v. String → v → NodeData messa
4141

4242
foreign import createClass message. Array String NodeData message
4343

44-
-- | Sets the element style
45-
-- |
46-
-- | https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style
4744
foreign import createStyle r message. r -> NodeData message
4845

49-
style :: r message. Homogeneous r String => { | r } -> NodeData message
46+
-- | Sets the element style
47+
style :: r message. { | r } -> NodeData message
5048
style = createStyle
5149

5250
class' a b. ToClassList b b NodeData a

src/Flame/Native/Element.js

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

44
let styleData = 1,
55
classData = 2,
@@ -24,36 +24,50 @@ let initialStyles = StyleSheet.create({
2424

2525
export function createViewNode(nodeData) {
2626
return function (children) {
27-
let props = fromNodeData(nodeData)
27+
let props = toProps(nodeData)
2828

2929
return createElement(View, props, ...children);
3030
};
3131
}
3232

33+
let noop = () => {};
34+
3335
export function createButtonNode(nodeData) {
3436
return function(children) {
35-
let props = fromNodeData(nodeData)
36-
props.title = children[0] ;
37+
let props = toProps(nodeData),
38+
title = children[0]
39+
onPress = noop,
40+
disabled = false;
41+
42+
if (props.disabled) {
43+
disabled = true;
44+
delete props.disabled;
45+
}
3746

38-
return createElement(Button, props);
47+
if (props.onPress) {
48+
onPress = props.onPress;
49+
delete props.onPress;
50+
}
51+
52+
return createElement(TouchableOpacity, { onPress, disabled }, createElement(View, props, createElement(Text, props, title.toUpperCase())));
3953
}
4054
}
4155

4256
export function createHrNode(nodeData) {
43-
let props = fromNodeData(nodeData);
57+
let props = toProps(nodeData);
4458

4559
if (props.style === undefined)
4660
props.style = [initialStyles.hr];
4761
else {
4862
props.style = [initialStyles.hr, props.style];
4963
}
5064

51-
return createViewNode(nodeData)(undefined);
65+
return createElement(View, props, undefined);
5266
}
5367

5468
export function createTableNode(nodeData) {
5569
return function(children) {
56-
let props = fromNodeData(nodeData);
70+
let props = toProps(nodeData);
5771

5872
if (props.style === undefined)
5973
props.style = [initialStyles.table];
@@ -67,7 +81,7 @@ export function createTableNode(nodeData) {
6781

6882
export function createTrNode(nodeData) {
6983
return function(children) {
70-
let props = fromNodeData(nodeData);
84+
let props = toProps(nodeData);
7185

7286
if (props.style === undefined)
7387
props.style = [initialStyles.tr];
@@ -81,56 +95,47 @@ export function createTrNode(nodeData) {
8195

8296
export function createLabelNode(nodeData) {
8397
return function(children) {
84-
let props = fromNodeData(nodeData),
98+
let props = toProps(nodeData),
8599
propedChildren = [];
86100

87101
for (let c of children) {
88-
let txt = text(c);
89-
txt.props = props;
90-
91-
propedChildren.push(txt);
102+
propedChildren.push(createElement(Text, props, c));
92103
}
93104

94105
return createViewNode(undefined)(propedChildren);
95106
}
96107
}
97108

98109
export function createBrNode(nodeData) {
99-
let txt = text('\n');
100-
txt.props = fromNodeData(nodeData);
101-
102-
return txt;
110+
return createElement(Text, toProps(nodeData), '\n');
103111
}
104112

105113
export function createInputNode(nodeData) {
106-
let props = fromNodeData(nodeData);
114+
let props = toProps(nodeData);
107115

108116
if (props.type === 'button' || props.type === 'submit') {
109-
return createElement(Button, { title: props.value || "", ...props })
117+
return createButtonNode(nodeData)([props.value || ""]);
110118
}
111119

112120
return createElement(TextInput, props);
113121
}
114122

115123
export function createANode(nodeData) {
116124
return function(children) {
117-
let props = fromNodeData(nodeData),
125+
let props = toProps(nodeData),
118126
propedChildren = [];
119127

120128
for (let c of children) {
121-
let txt = text(c);
122-
txt.props = props;
123-
124-
propedChildren.push(txt);
129+
propedChildren.push(createElement(Text, props, c));
125130
}
126131

127-
return createViewNode(undefined)(propedChildren);
132+
return createElement(View, undefined, ...propedChildren);
128133
}
129134
}
130135

131136
export function createBNode(nodeData) {
132137
return function(children) {
133-
let props = fromNodeData(nodeData);
138+
let props = toProps(nodeData);
134139

135140
if (props.style === undefined)
136141
props.style = [initialStyles.b];
@@ -141,18 +146,15 @@ export function createBNode(nodeData) {
141146
let propedChildren = [];
142147

143148
for (let c of children) {
144-
let txt = text(c);
145-
txt.props = props;
146-
147-
propedChildren.push(txt);
149+
propedChildren.push(createElement(Text, props, c));
148150
}
149151

150-
return createViewNode(undefined)(propedChildren);
152+
return createElement(View, undefined, ...propedChildren);
151153
}
152154
}
153155

154156
export function createImageNode(nodeData) {
155-
let props = fromNodeData(nodeData);
157+
let props = toProps(nodeData);
156158

157159
return createElement(Image, props);
158160
}
@@ -161,7 +163,7 @@ export function text(value) {
161163
return createElement(Text, undefined, value);
162164
}
163165

164-
function fromNodeData(allData) {
166+
function toProps(allData) {
165167
let nodeData = {};
166168

167169
if (allData !== undefined)

src/Flame/Native/Style.purs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
module Flame.Native.Style where
22

3-
import Prelude
4-
53
foreign import create r. { | r } { | r }

0 commit comments

Comments
 (0)