secullum-react-native-ui 4.3.8-beta.2 → 4.3.10

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