-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathLabelForm.jsx
111 lines (104 loc) · 2.76 KB
/
LabelForm.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// @flow
import 'elemental/less/elemental.less';
import { Button, Checkbox, Form, FormInput, FormSelect } from 'elemental';
import React from 'react';
type State = {
selectedSize: string,
selectedFont: string,
selectedAlign?: string,
outline: boolean,
bold: boolean,
};
const style = {
label: {
padding: 10,
width: 450,
maxWidth: '100%',
wordBreak: 'break-all',
},
};
export default class LabelForm extends React.Component {
state: State = {
outline: true,
bold: false,
selectedFont: 'lettergothic',
selectedSize: '42',
};
handleChange(type: string) {
return (value: string) => {
this.setState({
[type]: value,
});
};
}
handleBoolChange(type: string) {
return (e: Event) => {
this.setState({
// $FlowFixMe
[type]: e.target.checked,
});
};
}
render() {
const { selectedSize, selectedFont, selectedAlign, outline, bold } = this.state;
const size = Number.parseInt(selectedSize, 10);
const labelStyle = {
...style.label,
fontFamily: selectedFont,
fontSize: size / 2 - (size > 50 ? 1 : 0),
fontWeight: bold ? 'bold' : 'normal',
};
return (
<Form method="POST" target="_blank" action="/">
<FormInput name="text" style={labelStyle} defaultValue={text} multiline placeholder="Label Text" />
<br />
<div>
<Checkbox label="Outline Font" checked={outline} onChange={this.handleBoolChange('outline')} />
<Checkbox name="bold" label="bold" checked={bold} onChange={this.handleBoolChange('bold')} />
</div>
{outline ? (
<FormSelect
name="fontSize"
label="Size"
value={selectedSize}
onChange={this.handleChange('selectedSize')}
options={sizesOutline}
/>
) : (
<FormSelect
name="fontSize"
label="Size"
value={selectedSize}
onChange={this.handleChange('selectedSize')}
options={sizesBitmap}
/>
)}
{outline ? (
<FormSelect
name="font"
label="Font"
value={selectedFont}
onChange={this.handleChange('selectedFont')}
options={fontsOutline}
/>
) : (
<FormSelect
name="font"
label="Font"
value={selectedFont}
onChange={this.handleChange('selectedFont')}
options={fontsBitMap}
/>
)}
<FormSelect
name="align"
label="Align"
value={selectedAlign}
onChange={this.handleChange('selectedAlign')}
options={aligns}
/>
<Button submit>{'Print'}</Button>
</Form>
);
}
}