secullum-react-native-ui 4.16.2-beta.9 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/lib/components/AppShell.d.ts +52 -0
  2. package/lib/components/AppShell.js +82 -0
  3. package/lib/components/Button.d.ts +49 -0
  4. package/lib/components/Button.js +70 -0
  5. package/lib/components/Card.d.ts +66 -0
  6. package/lib/components/Card.js +131 -0
  7. package/lib/components/CheckBox.d.ts +36 -0
  8. package/lib/components/CheckBox.js +50 -0
  9. package/lib/components/DatePicker.d.ts +67 -0
  10. package/lib/components/DatePicker.js +106 -0
  11. package/lib/components/DatePicker.web.d.ts +64 -0
  12. package/lib/components/DatePicker.web.js +106 -0
  13. package/lib/components/Delay.d.ts +12 -0
  14. package/lib/components/Delay.js +22 -0
  15. package/lib/components/Details.d.ts +67 -0
  16. package/lib/components/Details.js +96 -0
  17. package/lib/components/DetailsHeader.d.ts +41 -0
  18. package/lib/components/DetailsHeader.js +65 -0
  19. package/lib/components/DimensionsMonitor.d.ts +21 -0
  20. package/lib/components/DimensionsMonitor.js +37 -0
  21. package/lib/components/DropDown.d.ts +53 -0
  22. package/lib/components/DropDown.js +351 -0
  23. package/lib/components/ErrorMessage.d.ts +16 -0
  24. package/lib/components/ErrorMessage.js +31 -0
  25. package/lib/components/FilePicker.d.ts +29 -0
  26. package/lib/components/FilePicker.js +46 -0
  27. package/lib/components/Header.d.ts +58 -0
  28. package/lib/components/Header.js +94 -0
  29. package/lib/components/HeaderDesktop.d.ts +59 -0
  30. package/lib/components/HeaderDesktop.js +83 -0
  31. package/lib/components/ImageButton.d.ts +14 -0
  32. package/lib/components/ImageButton.js +34 -0
  33. package/lib/components/KeyboardAvoidingView.d.ts +34 -0
  34. package/lib/components/KeyboardAvoidingView.js +106 -0
  35. package/lib/components/Link.d.ts +18 -0
  36. package/lib/components/Link.js +30 -0
  37. package/lib/components/Loading.d.ts +13 -0
  38. package/lib/components/Loading.js +45 -0
  39. package/lib/components/Menu.d.ts +42 -0
  40. package/lib/components/Menu.js +114 -0
  41. package/lib/components/MenuDesktop.d.ts +24 -0
  42. package/lib/components/MenuDesktop.js +39 -0
  43. package/lib/components/MenuMobile.d.ts +49 -0
  44. package/lib/components/MenuMobile.js +94 -0
  45. package/lib/components/Message.d.ts +37 -0
  46. package/lib/components/Message.js +52 -0
  47. package/lib/components/Modal.d.ts +18 -0
  48. package/lib/components/Modal.js +35 -0
  49. package/lib/components/MultiSelect.d.ts +51 -0
  50. package/lib/components/MultiSelect.js +377 -0
  51. package/lib/components/NoRecordMessage.d.ts +23 -0
  52. package/lib/components/NoRecordMessage.js +36 -0
  53. package/lib/components/Question.d.ts +57 -0
  54. package/lib/components/Question.js +79 -0
  55. package/lib/components/RadioButton.d.ts +43 -0
  56. package/lib/components/RadioButton.js +55 -0
  57. package/lib/components/RadioGroup.d.ts +45 -0
  58. package/lib/components/RadioGroup.js +71 -0
  59. package/lib/components/RangeDatePicker.d.ts +57 -0
  60. package/lib/components/RangeDatePicker.js +127 -0
  61. package/lib/components/RangeDatePicker.web.d.ts +61 -0
  62. package/lib/components/RangeDatePicker.web.js +146 -0
  63. package/lib/components/Space.d.ts +11 -0
  64. package/lib/components/Space.js +15 -0
  65. package/lib/components/StatusBar.d.ts +18 -0
  66. package/lib/components/StatusBar.js +33 -0
  67. package/lib/components/Switch.d.ts +34 -0
  68. package/lib/components/Switch.js +50 -0
  69. package/lib/components/Table.d.ts +30 -0
  70. package/lib/components/Table.js +79 -0
  71. package/lib/components/Table.web.d.ts +18 -0
  72. package/lib/components/Table.web.js +111 -0
  73. package/lib/components/Text.d.ts +29 -0
  74. package/lib/components/Text.js +38 -0
  75. package/lib/components/TextBox.d.ts +84 -0
  76. package/lib/components/TextBox.js +126 -0
  77. package/lib/components/TextBoxMask.d.ts +12 -0
  78. package/lib/components/TextBoxMask.js +34 -0
  79. package/lib/components/TimePicker.d.ts +63 -0
  80. package/lib/components/TimePicker.js +112 -0
  81. package/lib/components/TimePicker.web.d.ts +48 -0
  82. package/lib/components/TimePicker.web.js +88 -0
  83. package/lib/index.d.ts +40 -0
  84. package/lib/index.js +56 -0
  85. package/lib/modules/browser.d.ts +2 -0
  86. package/lib/modules/browser.js +51 -0
  87. package/lib/modules/format.d.ts +6 -0
  88. package/lib/modules/format.js +127 -0
  89. package/lib/modules/layout.d.ts +1 -0
  90. package/lib/modules/layout.js +12 -0
  91. package/lib/modules/test.d.ts +2 -0
  92. package/lib/modules/test.js +18 -0
  93. package/lib/modules/theme.d.ts +41 -0
  94. package/lib/modules/theme.js +52 -0
  95. package/lib/modules/validation.d.ts +3 -0
  96. package/lib/modules/validation.js +16 -0
  97. package/package.json +1 -1
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiSelect = void 0;
4
+ const React = require("react");
5
+ const FontAwesome_1 = require("react-native-vector-icons/FontAwesome");
6
+ const theme_1 = require("../modules/theme");
7
+ const react_native_1 = require("react-native");
8
+ const layout_1 = require("../modules/layout");
9
+ const Switch_1 = require("./Switch");
10
+ const Modal_1 = require("./Modal");
11
+ const Button_1 = require("./Button");
12
+ const Space_1 = require("./Space");
13
+ class MultiSelectItem extends React.Component {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.getStyles = () => {
17
+ const theme = (0, theme_1.getTheme)();
18
+ const width = react_native_1.Dimensions.get('screen').width;
19
+ const styles = react_native_1.StyleSheet.create({
20
+ text: {
21
+ paddingHorizontal: 16,
22
+ paddingVertical: 16,
23
+ fontFamily: theme.fontFamily1,
24
+ fontSize: 16,
25
+ flexWrap: 'wrap',
26
+ maxWidth: width - 150,
27
+ color: theme.textColor1
28
+ },
29
+ icon: {
30
+ fontSize: 26
31
+ },
32
+ rowView: {
33
+ flexDirection: 'row',
34
+ paddingLeft: 16
35
+ },
36
+ switch: {
37
+ alignContent: 'center',
38
+ justifyContent: 'center'
39
+ },
40
+ iconView: {
41
+ width: 50,
42
+ alignItems: 'center',
43
+ justifyContent: 'center'
44
+ },
45
+ iconOnlyView: {
46
+ width: 100,
47
+ alignItems: 'center',
48
+ justifyContent: 'center'
49
+ },
50
+ iconOnly: {
51
+ paddingHorizontal: 16,
52
+ paddingVertical: 16,
53
+ fontSize: 60
54
+ },
55
+ switchStyle: {
56
+ paddingHorizontal: 8,
57
+ borderWidth: 0
58
+ }
59
+ });
60
+ return styles;
61
+ };
62
+ this.renderWithLabelAndIcon = (label, icon) => {
63
+ const { value, iconComponent, handleAdd, handleRemove } = this.props;
64
+ const theme = (0, theme_1.getTheme)();
65
+ const styles = this.getStyles();
66
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
67
+ React.createElement(react_native_1.View, { style: styles.switch },
68
+ React.createElement(Switch_1.Switch, { value: this.props.checked, onChange: () => {
69
+ if (this.props.checked) {
70
+ handleRemove(value);
71
+ }
72
+ else {
73
+ handleAdd(value);
74
+ }
75
+ }, style: styles.switchStyle })),
76
+ React.createElement(react_native_1.View, { style: styles.iconView }, iconComponent ? (React.createElement(iconComponent, {
77
+ name: icon,
78
+ style: styles.icon,
79
+ color: theme.textColor1
80
+ })) : (React.createElement(FontAwesome_1.default, { name: icon, color: theme.textColor1, style: styles.icon }))),
81
+ React.createElement(react_native_1.View, null,
82
+ React.createElement(react_native_1.Text, { style: styles.text }, label))));
83
+ };
84
+ this.renderWithLabel = (label) => {
85
+ const { value, handleAdd, handleRemove } = this.props;
86
+ const styles = this.getStyles();
87
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
88
+ React.createElement(react_native_1.View, { style: styles.switch },
89
+ React.createElement(Switch_1.Switch, { value: this.props.checked, onChange: () => {
90
+ if (this.props.checked) {
91
+ handleRemove(value);
92
+ }
93
+ else {
94
+ handleAdd(value);
95
+ }
96
+ }, style: styles.switchStyle })),
97
+ React.createElement(react_native_1.Text, { style: styles.text }, label)));
98
+ };
99
+ this.renderWithIcon = (icon) => {
100
+ const { value, iconComponent, handleAdd, handleRemove } = this.props;
101
+ const theme = (0, theme_1.getTheme)();
102
+ const styles = this.getStyles();
103
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
104
+ React.createElement(react_native_1.View, { style: styles.switch },
105
+ React.createElement(Switch_1.Switch, { value: this.props.checked, onChange: () => {
106
+ if (this.props.checked) {
107
+ handleRemove(value);
108
+ }
109
+ else {
110
+ handleAdd(value);
111
+ }
112
+ }, style: styles.switchStyle })),
113
+ React.createElement(react_native_1.View, { style: styles.iconOnlyView }, iconComponent ? (React.createElement(iconComponent, {
114
+ name: icon,
115
+ style: styles.iconOnly,
116
+ color: theme.textColor1
117
+ })) : (React.createElement(FontAwesome_1.default, { name: icon, color: theme.textColor1, style: styles.iconOnly })))));
118
+ };
119
+ }
120
+ render() {
121
+ const { label, icon } = this.props;
122
+ if (label && icon) {
123
+ return this.renderWithLabelAndIcon(label, icon);
124
+ }
125
+ else if (label && !icon) {
126
+ return this.renderWithLabel(label);
127
+ }
128
+ else if (!label && icon) {
129
+ return this.renderWithIcon(icon);
130
+ }
131
+ return null;
132
+ }
133
+ }
134
+ class MultiSelect extends React.Component {
135
+ constructor() {
136
+ super(...arguments);
137
+ this.state = {
138
+ modalOpen: false,
139
+ selectedValues: [],
140
+ selectedValuesInitial: []
141
+ };
142
+ this.componentDidMount = () => {
143
+ this.setState({
144
+ selectedValues: this.props.values || [],
145
+ selectedValuesInitial: this.props.values || []
146
+ });
147
+ };
148
+ this.componentDidUpdate = (prevProps) => {
149
+ if (prevProps.values !== this.props.values) {
150
+ this.setState({
151
+ selectedValues: this.props.values || [],
152
+ selectedValuesInitial: this.props.values || []
153
+ });
154
+ }
155
+ };
156
+ this.handleAddValue = (value) => {
157
+ this.setState({ selectedValues: [...this.state.selectedValues, value] });
158
+ };
159
+ this.handleRemoveValue = (value) => {
160
+ this.setState({
161
+ selectedValues: this.state.selectedValues.filter(x => x !== value)
162
+ });
163
+ };
164
+ this.handleSave = () => {
165
+ const { onChange } = this.props;
166
+ const { selectedValues } = this.state;
167
+ this.setState({ modalOpen: false, selectedValuesInitial: selectedValues });
168
+ onChange(selectedValues);
169
+ };
170
+ this.renderClosedWithNone = () => {
171
+ const { selectedNoneDescription } = this.props;
172
+ const styles = this.getStyles();
173
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
174
+ React.createElement(react_native_1.Text, { style: styles.text }, selectedNoneDescription),
175
+ React.createElement(FontAwesome_1.default, { name: "caret-down", style: styles.seta })));
176
+ };
177
+ this.renderClosedWithAll = () => {
178
+ const { selectedAllDescription } = this.props;
179
+ const styles = this.getStyles();
180
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
181
+ React.createElement(react_native_1.Text, { style: styles.text }, selectedAllDescription),
182
+ React.createElement(FontAwesome_1.default, { name: "caret-down", style: styles.seta })));
183
+ };
184
+ this.renderClosedWithOneLabel = (label) => {
185
+ const styles = this.getStyles();
186
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
187
+ React.createElement(react_native_1.Text, { style: styles.text }, label),
188
+ React.createElement(FontAwesome_1.default, { name: "caret-down", style: styles.seta })));
189
+ };
190
+ this.renderClosedWithOneIcon = (icon) => {
191
+ const { iconComponent } = this.props;
192
+ const theme = (0, theme_1.getTheme)();
193
+ const styles = this.getStyles();
194
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
195
+ iconComponent ? (React.createElement(iconComponent, {
196
+ name: icon,
197
+ style: styles.iconOnly,
198
+ color: theme.textColor1
199
+ })) : (React.createElement(FontAwesome_1.default, { name: icon, color: theme.textColor1, style: styles.iconOnly })),
200
+ React.createElement(FontAwesome_1.default, { name: "caret-down", style: styles.seta })));
201
+ };
202
+ this.renderClosedWithOneLabelAndIcon = (label, icon) => {
203
+ const { iconComponent } = this.props;
204
+ const theme = (0, theme_1.getTheme)();
205
+ const styles = this.getStyles();
206
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
207
+ React.createElement(react_native_1.View, { style: styles.iconView }, iconComponent ? (React.createElement(iconComponent, {
208
+ name: icon,
209
+ style: styles.icon,
210
+ color: theme.textColor1
211
+ })) : (React.createElement(FontAwesome_1.default, { name: icon, color: theme.textColor1, style: styles.icon }))),
212
+ React.createElement(react_native_1.View, { style: styles.textView },
213
+ React.createElement(react_native_1.Text, { style: styles.text }, label)),
214
+ React.createElement(FontAwesome_1.default, { name: "caret-down", style: styles.seta })));
215
+ };
216
+ this.renderClosedWithOne = (label, icon) => {
217
+ if (label && icon) {
218
+ return this.renderClosedWithOneLabelAndIcon(label, icon);
219
+ }
220
+ else if (label && !icon) {
221
+ return this.renderClosedWithOneLabel(label);
222
+ }
223
+ else if (!label && icon) {
224
+ return this.renderClosedWithOneIcon(icon);
225
+ }
226
+ return null;
227
+ };
228
+ this.renderClosedWithMany = () => {
229
+ const { selectedManyDescription } = this.props;
230
+ const styles = this.getStyles();
231
+ return (React.createElement(react_native_1.View, { style: styles.rowView },
232
+ React.createElement(react_native_1.Text, { style: styles.text }, selectedManyDescription),
233
+ React.createElement(FontAwesome_1.default, { name: "caret-down", style: styles.seta })));
234
+ };
235
+ this.renderClosedMultiSelect = (items, numOptions) => {
236
+ if (items.length === 0) {
237
+ return this.renderClosedWithNone();
238
+ }
239
+ else if (items.length === numOptions) {
240
+ return this.renderClosedWithAll();
241
+ }
242
+ else if (items.length === 1) {
243
+ return this.renderClosedWithOne(items[0].label, items[0].icon);
244
+ }
245
+ else {
246
+ return this.renderClosedWithMany();
247
+ }
248
+ };
249
+ this.getStyles = () => {
250
+ const theme = (0, theme_1.getTheme)();
251
+ const styles = react_native_1.StyleSheet.create({
252
+ container: {
253
+ paddingHorizontal: 16,
254
+ paddingVertical: 8,
255
+ borderWidth: 1,
256
+ borderColor: theme.borderColor1,
257
+ borderRadius: 3
258
+ },
259
+ label: {
260
+ color: theme.textColor2,
261
+ fontFamily: theme.fontFamily2,
262
+ fontSize: (0, layout_1.isTablet)() ? 15 : 12,
263
+ lineHeight: 16
264
+ },
265
+ textView: {
266
+ flexDirection: 'column',
267
+ justifyContent: 'center'
268
+ },
269
+ text: {
270
+ height: 27,
271
+ alignSelf: 'flex-start',
272
+ color: theme.textColor1,
273
+ fontFamily: theme.fontFamily1,
274
+ fontSize: 16
275
+ },
276
+ seta: {
277
+ color: theme.textColor1,
278
+ fontSize: 16,
279
+ position: 'absolute',
280
+ bottom: 0,
281
+ right: 0
282
+ },
283
+ modalOverlay: {
284
+ justifyContent: 'center',
285
+ paddingBottom: 16,
286
+ paddingTop: 16
287
+ },
288
+ modalContainer: {
289
+ borderRadius: 5,
290
+ backgroundColor: theme.backgroundColor1,
291
+ margin: 16
292
+ },
293
+ emptyMessageContainer: {
294
+ flexDirection: 'row',
295
+ alignItems: 'center',
296
+ paddingHorizontal: 16
297
+ },
298
+ readonly: {
299
+ backgroundColor: theme.disabledColor
300
+ },
301
+ icon: {
302
+ fontSize: 26
303
+ },
304
+ rowView: {
305
+ flexDirection: 'row'
306
+ },
307
+ iconView: {
308
+ width: 50,
309
+ alignItems: 'center',
310
+ justifyContent: 'center'
311
+ },
312
+ iconOnly: {
313
+ fontSize: 30,
314
+ paddingLeft: 16
315
+ },
316
+ buttonCancelar: {
317
+ flex: 1,
318
+ backgroundColor: theme.backgroundColor1
319
+ },
320
+ buttonOk: {
321
+ flex: 1
322
+ },
323
+ buttons: {
324
+ flexDirection: 'row',
325
+ padding: 16
326
+ }
327
+ });
328
+ return styles;
329
+ };
330
+ }
331
+ render() {
332
+ const { modalOpen, selectedValues, selectedValuesInitial } = this.state;
333
+ const { label, items, emptyMessage, disabled, iconComponent, okButtonDescription, cancelButtonDescription } = this.props;
334
+ const selectedItems = items.filter(x => selectedValues.includes(x.value));
335
+ const styles = this.getStyles();
336
+ const theme = (0, theme_1.getTheme)();
337
+ return (React.createElement(react_native_1.TouchableWithoutFeedback, { onPress: () => this.setState({ modalOpen: true }), disabled: disabled },
338
+ React.createElement(react_native_1.View, { style: [styles.container, disabled ? styles.readonly : null] },
339
+ React.createElement(react_native_1.Text, { style: styles.label }, label),
340
+ this.renderClosedMultiSelect(selectedItems, items.length),
341
+ React.createElement(Modal_1.Modal, { visible: modalOpen, overlayStyle: styles.modalOverlay },
342
+ React.createElement(react_native_1.View, { style: [
343
+ styles.modalContainer,
344
+ react_native_1.Platform.OS === 'web' && {
345
+ margin: 'auto',
346
+ width: '90%',
347
+ maxWidth: 450,
348
+ justifyContent: 'center',
349
+ marginBottom: '10px',
350
+ marginTop: '10px'
351
+ }
352
+ ] },
353
+ items.length > 0 ? (React.createElement(react_native_1.FlatList, { data: items, initialNumToRender: items.length, keyExtractor: item => item.value.toString(), extraData: selectedValues, renderItem: ({ item }) => {
354
+ return (React.createElement(MultiSelectItem, { label: item.label, value: item.value, icon: item.icon, iconComponent: iconComponent, handleAdd: value => this.handleAddValue(value), handleRemove: value => this.handleRemoveValue(value), checked: selectedValues.includes(item.value) }));
355
+ } })) : (React.createElement(react_native_1.View, { style: styles.emptyMessageContainer },
356
+ React.createElement(FontAwesome_1.default, { name: "warning", color: theme.warningColor, size: 24 }),
357
+ React.createElement(react_native_1.Text, { style: styles.text }, emptyMessage))),
358
+ React.createElement(react_native_1.View, { style: styles.buttons },
359
+ React.createElement(Button_1.Button, { text: cancelButtonDescription || 'Cancelar', style: styles.buttonCancelar, primary: false, onPress: () => {
360
+ this.setState({
361
+ modalOpen: false,
362
+ selectedValues: selectedValuesInitial
363
+ });
364
+ } }),
365
+ React.createElement(Space_1.Space, { width: 20 }),
366
+ React.createElement(Button_1.Button, { text: okButtonDescription || 'Ok', style: styles.buttonOk, onPress: this.handleSave })))))));
367
+ }
368
+ }
369
+ exports.MultiSelect = MultiSelect;
370
+ MultiSelect.defaultProps = {
371
+ emptyMessage: 'Não há registros cadastrados',
372
+ selectedAllDescription: 'Todos',
373
+ selectedManyDescription: 'Vários',
374
+ selectedNoneDescription: 'Nenhum',
375
+ okButtonDescription: 'Ok',
376
+ cancelButtonDescription: 'Cancelar'
377
+ };
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ interface NoRecordMessageProps {
3
+ visible: boolean;
4
+ message: string;
5
+ }
6
+ export declare class NoRecordMessage extends React.Component<NoRecordMessageProps> {
7
+ getStyles: () => {
8
+ text: {
9
+ fontSize: number;
10
+ color: string;
11
+ textAlign: "center";
12
+ };
13
+ icon: {
14
+ color: string;
15
+ };
16
+ view: {
17
+ alignItems: "center";
18
+ marginTop: number;
19
+ };
20
+ };
21
+ render(): JSX.Element;
22
+ }
23
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoRecordMessage = void 0;
4
+ const React = require("react");
5
+ const react_native_1 = require("react-native");
6
+ const FontAwesome_1 = require("react-native-vector-icons/FontAwesome");
7
+ const layout_1 = require("../modules/layout");
8
+ const Space_1 = require("./Space");
9
+ class NoRecordMessage extends React.Component {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.getStyles = () => {
13
+ return react_native_1.StyleSheet.create({
14
+ text: {
15
+ fontSize: (0, layout_1.isTablet)() ? 28 : 18,
16
+ color: '#969696',
17
+ textAlign: 'center'
18
+ },
19
+ icon: { color: '#969696' },
20
+ view: { alignItems: 'center', marginTop: 25 }
21
+ });
22
+ };
23
+ }
24
+ render() {
25
+ const { visible, message } = this.props;
26
+ if (!visible) {
27
+ return React.createElement(React.Fragment, null);
28
+ }
29
+ const styles = this.getStyles();
30
+ return (React.createElement(react_native_1.View, { style: styles.view },
31
+ React.createElement(FontAwesome_1.default, { name: 'exclamation-triangle', size: (0, layout_1.isTablet)() ? 80 : 60, style: styles.icon }),
32
+ React.createElement(Space_1.Space, { height: 5 }),
33
+ React.createElement(react_native_1.Text, { style: styles.text }, message)));
34
+ }
35
+ }
36
+ exports.NoRecordMessage = NoRecordMessage;
@@ -0,0 +1,57 @@
1
+ import * as React from 'react';
2
+ import { StyleProp, TextStyle, ViewStyle } from 'react-native';
3
+ export interface QuestionProperties {
4
+ message: string;
5
+ visible: boolean;
6
+ nativeID?: string;
7
+ textStyle?: StyleProp<TextStyle>;
8
+ buttonOrder: 'ok,cancel' | 'cancel,ok';
9
+ okButton: QuestionButtonProperties;
10
+ cancelButton: QuestionButtonProperties;
11
+ }
12
+ export interface QuestionButtonProperties {
13
+ text: string;
14
+ onPress: () => void;
15
+ style?: StyleProp<ViewStyle>;
16
+ textStyle?: StyleProp<TextStyle>;
17
+ nativeID?: string;
18
+ }
19
+ export declare class Question extends React.Component<QuestionProperties> {
20
+ static defaultProps: {
21
+ buttonOrder: string;
22
+ };
23
+ getStyles: () => {
24
+ botoesAcao: {
25
+ flexDirection: "row";
26
+ alignItems: "center";
27
+ justifyContent: "space-evenly";
28
+ width: string;
29
+ };
30
+ overlay: {
31
+ flex: number;
32
+ backgroundColor: string;
33
+ alignItems: "center";
34
+ };
35
+ text: {
36
+ color: string;
37
+ fontFamily: string;
38
+ fontSize: number;
39
+ textAlign: "center";
40
+ marginTop: number;
41
+ width: string;
42
+ };
43
+ container: {
44
+ backgroundColor: string;
45
+ borderRadius: number;
46
+ padding: number;
47
+ width: number;
48
+ marginTop: number;
49
+ alignItems: "center";
50
+ };
51
+ icon: {
52
+ color: string;
53
+ fontSize: number;
54
+ };
55
+ };
56
+ render(): JSX.Element;
57
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Question = void 0;
4
+ const React = require("react");
5
+ const FontAwesome_1 = require("react-native-vector-icons/FontAwesome");
6
+ const theme_1 = require("../modules/theme");
7
+ const layout_1 = require("../modules/layout");
8
+ const Button_1 = require("./Button");
9
+ const Space_1 = require("./Space");
10
+ const react_native_1 = require("react-native");
11
+ const test_1 = require("../modules/test");
12
+ class Question extends React.Component {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.getStyles = () => {
16
+ const theme = (0, theme_1.getTheme)();
17
+ const styles = react_native_1.StyleSheet.create({
18
+ botoesAcao: {
19
+ flexDirection: 'row',
20
+ alignItems: 'center',
21
+ justifyContent: 'space-evenly',
22
+ width: '100%'
23
+ },
24
+ overlay: {
25
+ flex: 1,
26
+ backgroundColor: 'rgba(33, 33, 33, 0.7)',
27
+ alignItems: 'center'
28
+ },
29
+ text: {
30
+ color: theme.questionTextColor,
31
+ fontFamily: theme.fontFamily1,
32
+ fontSize: (0, layout_1.isTablet)() ? 25 : 16,
33
+ textAlign: 'center',
34
+ marginTop: (0, layout_1.isTablet)() ? 15 : 5,
35
+ width: '100%'
36
+ },
37
+ container: {
38
+ backgroundColor: theme.backgroundColor1,
39
+ borderRadius: 6,
40
+ padding: (0, layout_1.isTablet)() ? 25 : 16,
41
+ width: (0, layout_1.isTablet)() ? 350 : 250,
42
+ marginTop: (0, layout_1.isTablet)() ? 250 : 140,
43
+ alignItems: 'center'
44
+ },
45
+ icon: {
46
+ color: theme.textColor3,
47
+ fontSize: (0, layout_1.isTablet)() ? 52 : 42
48
+ }
49
+ });
50
+ return styles;
51
+ };
52
+ }
53
+ render() {
54
+ const { message, textStyle, visible, nativeID, buttonOrder, okButton, cancelButton } = this.props;
55
+ const styles = this.getStyles();
56
+ const [leftButtonProps, rightButtonProps] = buttonOrder === 'ok,cancel'
57
+ ? [okButton, cancelButton]
58
+ : [cancelButton, okButton];
59
+ return (React.createElement(react_native_1.Modal, { animationType: "fade", transparent: true, visible: visible },
60
+ React.createElement(react_native_1.View, { style: [styles.overlay], nativeID: nativeID },
61
+ React.createElement(react_native_1.View, { style: styles.container },
62
+ React.createElement(FontAwesome_1.default, { name: 'question-circle', style: styles.icon }),
63
+ React.createElement(react_native_1.Text, { style: [styles.text, textStyle], nativeID: nativeID + '-message', testID: (0, test_1.getTestID)(nativeID + '-message') }, message),
64
+ React.createElement(Space_1.Space, null),
65
+ React.createElement(react_native_1.View, { style: styles.botoesAcao },
66
+ React.createElement(Button_1.Button, { text: leftButtonProps.text, onPress: leftButtonProps.onPress, style: [
67
+ { flex: 1, marginRight: (0, layout_1.isTablet)() ? 13 : 8 },
68
+ leftButtonProps.style
69
+ ], textStyle: leftButtonProps.textStyle, primary: buttonOrder === 'ok,cancel', nativeID: leftButtonProps.nativeID }),
70
+ React.createElement(Button_1.Button, { text: rightButtonProps.text, onPress: rightButtonProps.onPress, style: [
71
+ { flex: 1, marginLeft: (0, layout_1.isTablet)() ? 13 : 8 },
72
+ rightButtonProps.style
73
+ ], textStyle: rightButtonProps.textStyle, primary: buttonOrder === 'cancel,ok', nativeID: rightButtonProps.nativeID }))))));
74
+ }
75
+ }
76
+ exports.Question = Question;
77
+ Question.defaultProps = {
78
+ buttonOrder: 'cancel,ok'
79
+ };
@@ -0,0 +1,43 @@
1
+ import * as React from 'react';
2
+ export interface RadioButtonProps {
3
+ items: Array<{
4
+ label: string;
5
+ value: number;
6
+ nativeID?: string;
7
+ }>;
8
+ value: number;
9
+ onChange: (value: number) => void;
10
+ }
11
+ export declare class RadioButton extends React.Component<RadioButtonProps> {
12
+ getStyles: () => {
13
+ radioContainer: {
14
+ flexDirection: "row";
15
+ paddingVertical: number;
16
+ };
17
+ radioButtom: {
18
+ height: number;
19
+ width: number;
20
+ borderRadius: number;
21
+ borderWidth: number;
22
+ borderColor: string;
23
+ alignItems: "center";
24
+ justifyContent: "center";
25
+ top: number;
26
+ };
27
+ radioMark: {
28
+ height: number;
29
+ width: number;
30
+ borderRadius: number;
31
+ backgroundColor: string;
32
+ };
33
+ labelRadioButtom: {
34
+ flex: number;
35
+ fontSize: number;
36
+ color: string;
37
+ alignSelf: "flex-start";
38
+ left: number;
39
+ fontFamily: string;
40
+ };
41
+ };
42
+ render(): JSX.Element;
43
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RadioButton = void 0;
4
+ const React = require("react");
5
+ const react_native_1 = require("react-native");
6
+ const test_1 = require("../modules/test");
7
+ const theme_1 = require("../modules/theme");
8
+ class RadioButton extends React.Component {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.getStyles = () => {
12
+ const theme = (0, theme_1.getTheme)();
13
+ const styles = react_native_1.StyleSheet.create({
14
+ radioContainer: {
15
+ flexDirection: 'row',
16
+ paddingVertical: 5
17
+ },
18
+ radioButtom: {
19
+ height: 14,
20
+ width: 14,
21
+ borderRadius: 12,
22
+ borderWidth: 1.2,
23
+ borderColor: '#cfcfcf',
24
+ alignItems: 'center',
25
+ justifyContent: 'center',
26
+ top: 5
27
+ },
28
+ radioMark: {
29
+ height: 8,
30
+ width: 8,
31
+ borderRadius: 6,
32
+ backgroundColor: theme.textColor2
33
+ },
34
+ labelRadioButtom: {
35
+ flex: 1,
36
+ fontSize: 16,
37
+ color: theme.textColor1,
38
+ alignSelf: 'flex-start',
39
+ left: 10,
40
+ fontFamily: theme.fontFamily1
41
+ }
42
+ });
43
+ return styles;
44
+ };
45
+ }
46
+ render() {
47
+ const { items, value, onChange } = this.props;
48
+ const styles = this.getStyles();
49
+ return (React.createElement(react_native_1.View, null, items.map(item => (React.createElement(react_native_1.TouchableWithoutFeedback, { key: item.value, onPress: () => onChange(item.value), testID: (0, test_1.getTestID)(item.nativeID) },
50
+ React.createElement(react_native_1.View, { style: styles.radioContainer, nativeID: item.nativeID },
51
+ React.createElement(react_native_1.View, { style: styles.radioButtom }, item.value === value && React.createElement(react_native_1.View, { style: styles.radioMark })),
52
+ React.createElement(react_native_1.Text, { style: styles.labelRadioButtom }, item.label)))))));
53
+ }
54
+ }
55
+ exports.RadioButton = RadioButton;