linear-react-components-ui 0.4.77-beta.27 → 0.4.77-beta.28

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 (246) hide show
  1. package/.eslintrc.json +3 -76
  2. package/.husky/pre-commit +4 -0
  3. package/.vscode/settings.json +2 -2
  4. package/jest.config.js +3 -3
  5. package/lib/alerts/AlertContainer.js +19 -14
  6. package/lib/alerts/AlertProvider.js +9 -4
  7. package/lib/alerts/BaseAlert.js +8 -5
  8. package/lib/alerts/Message.js +40 -31
  9. package/lib/alerts/alert.spec.js +133 -0
  10. package/lib/alerts/helpers.js +5 -2
  11. package/lib/alerts/withAlert.js +2 -2
  12. package/lib/assets/styles/commons.scss +10 -0
  13. package/lib/assets/styles/dropdown.scss +36 -2
  14. package/lib/assets/styles/effects.scss +11 -0
  15. package/lib/assets/styles/list.scss +8 -0
  16. package/lib/assets/styles/table.scss +2 -7
  17. package/lib/avatar/avatar.spec.js +190 -0
  18. package/lib/avatar/index.js +58 -13
  19. package/lib/badge/badge.spec.js +127 -0
  20. package/lib/badge/index.js +22 -6
  21. package/lib/buttons/ActivateButton.js +3 -3
  22. package/lib/buttons/AddButton.js +1 -1
  23. package/lib/buttons/Button.js +11 -19
  24. package/lib/buttons/ButtonGroups.js +5 -0
  25. package/lib/buttons/CancelButton.js +3 -16
  26. package/lib/buttons/DangerButton.js +19 -14
  27. package/lib/buttons/DefaultButton.js +127 -65
  28. package/lib/buttons/DestroyButton.js +3 -12
  29. package/lib/buttons/EditButton.js +3 -3
  30. package/lib/buttons/InactivateButton.js +3 -3
  31. package/lib/buttons/InfoButton.js +19 -14
  32. package/lib/buttons/PrimaryButton.js +19 -14
  33. package/lib/buttons/RestoreButton.js +3 -3
  34. package/lib/buttons/SaveButton.js +2 -15
  35. package/lib/buttons/SpinnerLoading.js +230 -0
  36. package/lib/buttons/SuccessButton.js +18 -13
  37. package/lib/buttons/WarningButton.js +18 -13
  38. package/lib/buttons/button_container/index.js +18 -5
  39. package/lib/buttons/buttons.spec.js +504 -0
  40. package/lib/buttons/index.js +28 -28
  41. package/lib/buttons/split_button/index.js +30 -13
  42. package/lib/calendar/DangerCalendar.js +2 -11
  43. package/lib/calendar/InfoCalendar.js +2 -11
  44. package/lib/calendar/PrimaryCalendar.js +2 -11
  45. package/lib/calendar/SuccessCalendar.js +2 -11
  46. package/lib/calendar/WarningCalendar.js +2 -11
  47. package/lib/calendar/base/Day.js +8 -2
  48. package/lib/calendar/base/Month.js +5 -0
  49. package/lib/calendar/base/Week.js +6 -0
  50. package/lib/calendar/base/helpers.js +9 -9
  51. package/lib/calendar/base/index.js +36 -33
  52. package/lib/calendar/calendar.spec.js +171 -0
  53. package/lib/calendar/index.js +10 -10
  54. package/lib/checkbox/Label.js +12 -2
  55. package/lib/checkbox/checkbox.spec.js +215 -0
  56. package/lib/checkbox/index.js +79 -42
  57. package/lib/dialog/Alert.js +8 -3
  58. package/lib/dialog/Custom.js +25 -17
  59. package/lib/dialog/Error.js +6 -1
  60. package/lib/dialog/Information.js +6 -1
  61. package/lib/dialog/Question.js +17 -6
  62. package/lib/dialog/Warning.js +6 -1
  63. package/lib/dialog/base/Content.js +9 -0
  64. package/lib/dialog/base/Footer.js +8 -2
  65. package/lib/dialog/base/Header.js +22 -8
  66. package/lib/dialog/base/index.js +28 -6
  67. package/lib/dialog/dialog.spec.js +488 -0
  68. package/lib/dialog/form/index.js +32 -22
  69. package/lib/dialog/index.js +6 -6
  70. package/lib/drawer/Content.js +10 -1
  71. package/lib/drawer/Drawer.js +50 -29
  72. package/lib/drawer/Drawer.spec.js +258 -0
  73. package/lib/drawer/Header.js +31 -12
  74. package/lib/drawer/helpers.js +1 -1
  75. package/lib/drawer/index.js +4 -4
  76. package/lib/dropdown/Popup.js +16 -32
  77. package/lib/dropdown/dropdown.spec.js +169 -0
  78. package/lib/dropdown/helper.js +2 -2
  79. package/lib/dropdown/withDropdown.js +43 -18
  80. package/lib/fieldset/fieldset.spec.js +329 -0
  81. package/lib/fieldset/index.js +43 -12
  82. package/lib/form/Field.js +41 -14
  83. package/lib/form/FieldArray.js +50 -20
  84. package/lib/form/FieldNumber.js +44 -12
  85. package/lib/form/FieldPeriod.js +41 -19
  86. package/lib/form/form.spec.js +293 -0
  87. package/lib/form/helpers.js +16 -10
  88. package/lib/form/index.js +92 -57
  89. package/lib/form/withFieldHOC.js +120 -40
  90. package/lib/form/withFormSecurity.js +38 -17
  91. package/lib/gridlayout/GridCol.js +18 -3
  92. package/lib/gridlayout/GridRow.js +24 -4
  93. package/lib/gridlayout/gridLayout.spec.js +169 -0
  94. package/lib/icons/helper.js +571 -560
  95. package/lib/icons/icons.spec.js +86 -0
  96. package/lib/icons/index.js +40 -23
  97. package/lib/index.js +12 -12
  98. package/lib/inputs/base/InputTextBase.js +149 -40
  99. package/lib/inputs/base/base.spec.js +690 -0
  100. package/lib/inputs/base/helpers.js +4 -4
  101. package/lib/inputs/base/index.js +1 -0
  102. package/lib/inputs/color/color_input.spec.js +174 -0
  103. package/lib/inputs/color/index.js +29 -31
  104. package/lib/inputs/date/Dialog.js +8 -1
  105. package/lib/inputs/date/Dropdown.js +70 -18
  106. package/lib/inputs/date/date.spec.js +354 -0
  107. package/lib/inputs/date/helpers.js +1 -1
  108. package/lib/inputs/date/index.js +411 -255
  109. package/lib/inputs/inputHOC.js +96 -44
  110. package/lib/inputs/mask/BaseMask.js +45 -16
  111. package/lib/inputs/mask/Cnpj.js +19 -12
  112. package/lib/inputs/mask/Cpf.js +22 -14
  113. package/lib/inputs/mask/Phone.js +9 -1
  114. package/lib/inputs/mask/ZipCode.js +1 -1
  115. package/lib/inputs/mask/helpers.js +36 -21
  116. package/lib/inputs/mask/imaskHOC.js +255 -186
  117. package/lib/inputs/mask/index.js +4 -4
  118. package/lib/inputs/mask/input_mask.spec.js +607 -0
  119. package/lib/inputs/multiSelect/ActionButtons.js +14 -2
  120. package/lib/inputs/multiSelect/Dropdown.js +70 -43
  121. package/lib/inputs/multiSelect/index.js +80 -60
  122. package/lib/inputs/number/BaseNumber.js +62 -27
  123. package/lib/inputs/number/Currency.js +14 -4
  124. package/lib/inputs/number/format_number.js +1 -1
  125. package/lib/inputs/number/index.js +15 -9
  126. package/lib/inputs/number/numberfield.spec.js +215 -0
  127. package/lib/inputs/period/Dialog.js +8 -1
  128. package/lib/inputs/period/Dropdown.js +70 -16
  129. package/lib/inputs/period/PeriodList.js +19 -6
  130. package/lib/inputs/period/helper.js +71 -30
  131. package/lib/inputs/period/index.js +160 -112
  132. package/lib/inputs/search/index.js +261 -129
  133. package/lib/inputs/search/search_input.spec.js +209 -0
  134. package/lib/inputs/select/ActionButtons.js +20 -14
  135. package/lib/inputs/select/Dropdown.js +63 -30
  136. package/lib/inputs/select/helper.js +16 -18
  137. package/lib/inputs/select/index.js +13 -14
  138. package/lib/inputs/select/multiple/Selecteds.js +13 -5
  139. package/lib/inputs/select/multiple/index.js +414 -289
  140. package/lib/inputs/select/select.spec.js +395 -0
  141. package/lib/inputs/select/simple/index.js +461 -322
  142. package/lib/inputs/text/index.js +0 -1
  143. package/lib/inputs/text/textfield.spec.js +215 -0
  144. package/lib/inputs/textarea/index.js +15 -5
  145. package/lib/inputs/textarea/textarea.spec.js +59 -0
  146. package/lib/internals/constants.js +1 -1
  147. package/lib/internals/withTooltip.js +34 -26
  148. package/lib/labelMessages/index.js +45 -27
  149. package/lib/labelMessages/labelMessages.spec.js +176 -0
  150. package/lib/labels/DangerLabel.js +4 -13
  151. package/lib/labels/DefaultLabel.js +57 -25
  152. package/lib/labels/InfoLabel.js +4 -13
  153. package/lib/labels/PrimaryLabel.js +4 -13
  154. package/lib/labels/SuccessLabel.js +4 -13
  155. package/lib/labels/WarningLabel.js +4 -13
  156. package/lib/labels/index.js +10 -10
  157. package/lib/labels/label.spec.js +162 -0
  158. package/lib/labels/label_container/index.js +12 -2
  159. package/lib/list/Header.js +13 -0
  160. package/lib/list/Item.js +65 -27
  161. package/lib/list/helpers.js +2 -2
  162. package/lib/list/index.js +51 -31
  163. package/lib/list/list.spec.js +769 -0
  164. package/lib/menus/float/MenuItem.js +42 -10
  165. package/lib/menus/float/SubMenuContainer.js +95 -0
  166. package/lib/menus/float/float-menu.spec.js +221 -0
  167. package/lib/menus/float/helpers.js +1 -1
  168. package/lib/menus/float/index.js +39 -9
  169. package/lib/menus/sidenav/ExpandMenu.js +13 -1
  170. package/lib/menus/sidenav/MenuLink.js +14 -0
  171. package/lib/menus/sidenav/NavMenuGroup.js +12 -1
  172. package/lib/menus/sidenav/NavMenuItem.js +45 -19
  173. package/lib/menus/sidenav/NavSubMenuItem.js +15 -4
  174. package/lib/menus/sidenav/helpers.js +3 -3
  175. package/lib/menus/sidenav/index.js +60 -30
  176. package/lib/menus/sidenav/popup_menu_search/EmptyList.js +11 -2
  177. package/lib/menus/sidenav/popup_menu_search/index.js +11 -14
  178. package/lib/menus/sidenav/sidenav.spec.js +379 -0
  179. package/lib/panel/Content.js +18 -6
  180. package/lib/panel/DangerPanel.js +1 -1
  181. package/lib/panel/Default.js +45 -18
  182. package/lib/panel/Header.js +29 -7
  183. package/lib/panel/InfoPanel.js +1 -1
  184. package/lib/panel/PrimaryPanel.js +1 -1
  185. package/lib/panel/SuccessPanel.js +1 -1
  186. package/lib/panel/ToolBar.js +5 -0
  187. package/lib/panel/WarningPanel.js +1 -1
  188. package/lib/panel/helpers.js +3 -7
  189. package/lib/panel/index.js +14 -14
  190. package/lib/panel/panel.spec.js +216 -0
  191. package/lib/permissionValidations.js +12 -14
  192. package/lib/popover/PopoverText.js +5 -0
  193. package/lib/popover/PopoverTitle.js +5 -0
  194. package/lib/popover/index.js +40 -26
  195. package/lib/popover/popover.spec.js +146 -0
  196. package/lib/progress/Bar.js +47 -37
  197. package/lib/progress/index.js +18 -8
  198. package/lib/progress/progress.spec.js +94 -0
  199. package/lib/radio/index.js +46 -22
  200. package/lib/radio/radio.spec.js +189 -0
  201. package/lib/skeleton/SkeletonContainer.js +13 -0
  202. package/lib/skeleton/index.js +26 -7
  203. package/lib/spinner/SpinnerLoading.js +12 -4
  204. package/lib/spinner/index.js +29 -24
  205. package/lib/spinner/spinner.spec.js +152 -0
  206. package/lib/split/Split.js +62 -45
  207. package/lib/split/SplitSide.js +21 -1
  208. package/lib/split/helpers.js +1 -1
  209. package/lib/split/split.spec.js +163 -0
  210. package/lib/table/Body.js +16 -9
  211. package/lib/table/Header.js +19 -40
  212. package/lib/table/HeaderColumn.js +20 -6
  213. package/lib/table/Row.js +28 -7
  214. package/lib/table/RowColumn.js +30 -12
  215. package/lib/table/helpers.js +3 -3
  216. package/lib/table/index.js +53 -15
  217. package/lib/table/table.spec.js +352 -0
  218. package/lib/tabs/DropdownItems.js +53 -39
  219. package/lib/tabs/Menu.js +20 -16
  220. package/lib/tabs/MenuItems.js +39 -25
  221. package/lib/tabs/Panel.js +51 -18
  222. package/lib/tabs/index.js +75 -81
  223. package/lib/tabs/tabHelpers.js +8 -10
  224. package/lib/tabs/tabs.spec.js +321 -0
  225. package/lib/toolbar/ButtonBar.js +13 -32
  226. package/lib/toolbar/LabelBar.js +18 -31
  227. package/lib/toolbar/ToolBarGroup.js +12 -6
  228. package/lib/toolbar/helpers.js +1 -1
  229. package/lib/toolbar/index.js +33 -25
  230. package/lib/toolbar/toolbar.spec.js +394 -0
  231. package/lib/tooltip/index.js +34 -25
  232. package/lib/tooltip/tooltip.spec.js +215 -0
  233. package/lib/treeview/Header.js +12 -0
  234. package/lib/treeview/Node.js +387 -261
  235. package/lib/treeview/constants.js +2 -1
  236. package/lib/treeview/index.js +548 -363
  237. package/lib/treeview/treeview.spec.js +279 -0
  238. package/lib/treeview_old/Node.js +6 -6
  239. package/lib/uitour/helpers.js +1 -1
  240. package/lib/uitour/index.js +32 -15
  241. package/lib/uitour/uitour.spec.js +176 -0
  242. package/package.json +16 -40
  243. package/.husky/pre-push +0 -4
  244. package/babel.config.json +0 -11
  245. package/tsconfig.json +0 -32
  246. package/tsup.config.ts +0 -10
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ require("babel-polyfill");
10
+
11
+ require("@testing-library/jest-dom");
12
+
13
+ var _ = _interopRequireWildcard(require("."));
14
+
15
+ var _text = _interopRequireDefault(require("../inputs/text"));
16
+
17
+ var _checkbox = _interopRequireDefault(require("../checkbox"));
18
+
19
+ var _select = _interopRequireDefault(require("../inputs/select"));
20
+
21
+ var _number = _interopRequireDefault(require("../inputs/number"));
22
+
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+
25
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
+
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
+
29
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
30
+
31
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
32
+
33
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
34
+
35
+ var mockOnSubmit = jest.fn();
36
+ var mockHandlerSubmit = jest.fn();
37
+ var data = {
38
+ status: [0],
39
+ nome: 'Gustavo',
40
+ idade: '4'
41
+ };
42
+ var mockSelectOptions = [{
43
+ id: 0,
44
+ name: 'Ativo'
45
+ }, {
46
+ id: 1,
47
+ name: 'Inativo'
48
+ }, {
49
+ id: 2,
50
+ name: 'Excluído'
51
+ }];
52
+
53
+ var mockForm = function mockForm(props, fieldProps, fieldArrayProps) {
54
+ return /*#__PURE__*/_react.default.createElement(_.default, _extends({
55
+ dataSource: data,
56
+ onSubmit: mockOnSubmit,
57
+ handlerSubmit: mockHandlerSubmit,
58
+ customClass: "mock-form",
59
+ style: {
60
+ marginBottom: '10px'
61
+ }
62
+ }, props), /*#__PURE__*/_react.default.createElement(_.Field, _extends({
63
+ label: "Nome",
64
+ component: _text.default,
65
+ name: "nome",
66
+ externalMessagesErrors: ['External Message Errors']
67
+ }, fieldProps)), /*#__PURE__*/_react.default.createElement(_.Field, {
68
+ label: "Endereco Valido",
69
+ component: _checkbox.default,
70
+ name: "endereco.valido",
71
+ componentType: "Checkbox",
72
+ fieldId: "fooo"
73
+ }), /*#__PURE__*/_react.default.createElement(_.FieldArray, _extends({
74
+ label: "Status",
75
+ name: "status",
76
+ idKey: "id",
77
+ descriptionKey: "name",
78
+ multiple: true,
79
+ labelContainerStyle: {
80
+ height: 200
81
+ },
82
+ dataSource: mockSelectOptions,
83
+ component: _select.default,
84
+ valuePropName: "values",
85
+ changePropName: "onChange",
86
+ bordered: true
87
+ }, fieldArrayProps)), /*#__PURE__*/_react.default.createElement(_.FieldNumber, {
88
+ label: "Idade",
89
+ component: _number.default,
90
+ scale: 3,
91
+ name: "idade"
92
+ }));
93
+ };
94
+
95
+ describe('Form', function () {
96
+ it('should render correctly', function () {
97
+ var _render = (0, _react2.render)(mockForm()),
98
+ container = _render.container;
99
+
100
+ expect(container.firstChild).toBeTruthy();
101
+ });
102
+ it('should apply custom class', function () {
103
+ var _render2 = (0, _react2.render)(mockForm()),
104
+ container = _render2.container;
105
+
106
+ expect(container.firstChild).toHaveClass('mock-form');
107
+ });
108
+ it('should apply style', function () {
109
+ var _render3 = (0, _react2.render)(mockForm()),
110
+ container = _render3.container;
111
+
112
+ expect(container.firstChild).toHaveStyle('margin-bottom: 10px;');
113
+ });
114
+ it('should render with dataSource', function () {
115
+ var mockOnDataChange = jest.fn();
116
+
117
+ var _render4 = (0, _react2.render)(mockForm({
118
+ onDataChange: mockOnDataChange
119
+ })),
120
+ getByDisplayValue = _render4.getByDisplayValue;
121
+
122
+ _react2.fireEvent.change(getByDisplayValue('Gustavo'), {
123
+ target: {
124
+ value: 'Foo'
125
+ }
126
+ });
127
+
128
+ expect(mockOnDataChange).toHaveBeenCalledWith(_extends({}, data));
129
+ });
130
+ it('should submit form', function () {
131
+ var _render5 = (0, _react2.render)(mockForm()),
132
+ container = _render5.container;
133
+
134
+ _react2.fireEvent.submit(container.querySelector('.form-component'));
135
+
136
+ expect(mockHandlerSubmit).toHaveBeenCalled();
137
+ });
138
+ it('should submit on press enter', function () {
139
+ var _render6 = (0, _react2.render)(mockForm()),
140
+ container = _render6.container;
141
+
142
+ _react2.fireEvent.keyUp(container.querySelector('.form-component'), {
143
+ key: 'Enter',
144
+ code: 'Enter',
145
+ keyCode: '13',
146
+ charCode: '13'
147
+ });
148
+
149
+ expect(mockHandlerSubmit).toHaveBeenCalled();
150
+ });
151
+ it('should change form data', function () {
152
+ var mockOnDataChange = jest.fn();
153
+
154
+ var _render7 = (0, _react2.render)(mockForm({
155
+ onDataChange: mockOnDataChange
156
+ })),
157
+ getByDisplayValue = _render7.getByDisplayValue;
158
+
159
+ _react2.fireEvent.change(getByDisplayValue('Foo'), {
160
+ target: {
161
+ value: 'Gustavo'
162
+ }
163
+ });
164
+
165
+ expect(mockOnDataChange).toHaveBeenCalledWith(_extends({}, data));
166
+ });
167
+ it('should execute handlerValidates', function () {
168
+ var mockOnDataChange = jest.fn();
169
+ var mockHandlerValidates = jest.fn();
170
+
171
+ var _render8 = (0, _react2.render)(mockForm({
172
+ onDataChange: mockOnDataChange,
173
+ handlerValidates: mockHandlerValidates
174
+ })),
175
+ getByDisplayValue = _render8.getByDisplayValue;
176
+
177
+ _react2.fireEvent.change(getByDisplayValue('Gustavo'), {
178
+ target: {
179
+ value: 'XPTO'
180
+ }
181
+ });
182
+
183
+ expect(mockHandlerValidates).toHaveBeenCalled();
184
+ });
185
+ it('should execute handlerReset', function () {
186
+ var mockHandlerReset = jest.fn();
187
+ (0, _react2.render)(mockForm({
188
+ handlerReset: mockHandlerReset
189
+ }));
190
+ expect(mockHandlerReset).toHaveBeenCalled();
191
+ });
192
+ it('should apply disabled', function () {
193
+ var mockHandlerReset = jest.fn();
194
+ (0, _react2.render)(mockForm({
195
+ disabled: true,
196
+ handlerReset: mockHandlerReset
197
+ }));
198
+ expect(mockHandlerReset).not.toHaveBeenCalled();
199
+ });
200
+ });
201
+ describe('Field', function () {
202
+ describe('Default & Number', function () {
203
+ it('should field has name', function () {
204
+ var _render9 = (0, _react2.render)(mockForm()),
205
+ getByDisplayValue = _render9.getByDisplayValue;
206
+
207
+ expect(getByDisplayValue('XPTO')).toHaveAttribute('name', 'nome');
208
+ });
209
+ it('should render component', function () {
210
+ var _render10 = (0, _react2.render)(mockForm()),
211
+ container = _render10.container;
212
+
213
+ expect(container.firstChild).toContainElement(container.querySelector('.textinput'));
214
+ });
215
+ it('should execute callback on field change', function () {
216
+ var mockOnChange = jest.fn();
217
+
218
+ var _render11 = (0, _react2.render)(mockForm({}, {
219
+ onChange: mockOnChange
220
+ })),
221
+ getByDisplayValue = _render11.getByDisplayValue;
222
+
223
+ _react2.fireEvent.change(getByDisplayValue('XPTO'), {
224
+ target: {
225
+ value: 'Gustavo'
226
+ }
227
+ });
228
+
229
+ expect(mockOnChange).toHaveBeenCalled();
230
+ });
231
+ it('should render label', function () {
232
+ var _render12 = (0, _react2.render)(mockForm()),
233
+ container = _render12.container;
234
+
235
+ expect(container.firstChild).toHaveTextContent('Nome');
236
+ });
237
+ it('should apply validators', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
238
+ var _render13, container;
239
+
240
+ return regeneratorRuntime.wrap(function _callee$(_context) {
241
+ while (1) {
242
+ switch (_context.prev = _context.next) {
243
+ case 0:
244
+ _render13 = (0, _react2.render)(mockForm()), container = _render13.container;
245
+ expect(container.querySelector('.errormessages')).toHaveTextContent('External Message Errors');
246
+
247
+ case 2:
248
+ case "end":
249
+ return _context.stop();
250
+ }
251
+ }
252
+ }, _callee);
253
+ })));
254
+ it('should apply fieldId', function () {
255
+ var _render14 = (0, _react2.render)(mockForm()),
256
+ container = _render14.container;
257
+
258
+ expect(container.querySelector('#fooo')).toBeInTheDocument();
259
+ });
260
+ });
261
+ describe('Array', function () {
262
+ it('should apply bordered', function () {
263
+ var _render15 = (0, _react2.render)(mockForm()),
264
+ container = _render15.container;
265
+
266
+ expect(container.querySelector('.arraycontainer')).toHaveClass('-bordered');
267
+ });
268
+ it('should apply labelContainerStyle', function () {
269
+ var _render16 = (0, _react2.render)(mockForm()),
270
+ container = _render16.container;
271
+
272
+ expect(container.querySelector('.arraycontainer')).toHaveStyle('height: 200px;');
273
+ });
274
+ it('should apply grid columns', function () {
275
+ var _render17 = (0, _react2.render)(mockForm({}, {}, {
276
+ cols: '12 12 12 12'
277
+ })),
278
+ container = _render17.container;
279
+
280
+ expect(container.querySelector('.grid-container')).toBeInTheDocument();
281
+ expect(container.querySelector('.grid-container')).toHaveClass('col-xs-12 col-sm-12 col-md-12 col-lg-12');
282
+ expect(container.querySelector('.grid-container')).toContainElement(container.querySelector('.arraycontainer'));
283
+ });
284
+ it('should apply skipLabel', function () {
285
+ var _render18 = (0, _react2.render)(mockForm({}, {}, {
286
+ skipLabel: true
287
+ })),
288
+ container = _render18.container;
289
+
290
+ expect(container.querySelector('.arraycontainer')).not.toBeInTheDocument();
291
+ });
292
+ });
293
+ });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withFieldContext = exports.securityBeforeUnload = exports.getValidatorsArray = exports.getErrorMessages = exports.changeValue = exports.FormContext = void 0;
6
+ exports.getValidatorsArray = exports.getErrorMessages = exports.changeValue = exports.withFieldContext = exports.FormContext = exports.FieldContext = exports.securityBeforeUnload = void 0;
7
7
 
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
 
@@ -26,18 +26,23 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
26
26
  var securityBeforeUnload = 'securityBeforeUnload';
27
27
  exports.securityBeforeUnload = securityBeforeUnload;
28
28
 
29
- var FormContext = /*#__PURE__*/_react.default.createContext({});
29
+ var FieldContext = /*#__PURE__*/_react.default.createContext();
30
+
31
+ exports.FieldContext = FieldContext;
32
+
33
+ var FormContext = /*#__PURE__*/_react.default.createContext();
30
34
 
31
35
  exports.FormContext = FormContext;
32
36
 
33
- var withFieldContext = /*#__PURE__*/_react.default.createContext({});
37
+ var withFieldContext = /*#__PURE__*/_react.default.createContext();
34
38
 
35
39
  exports.withFieldContext = withFieldContext;
36
40
 
37
41
  var changeValue = function changeValue(newData, target) {
38
42
  var name = target.name,
39
43
  value = target.value;
40
- return _lodash.default.set(JSON.parse(JSON.stringify(newData)), name, value);
44
+
45
+ _lodash.default.set(newData, name, value);
41
46
  };
42
47
 
43
48
  exports.changeValue = changeValue;
@@ -47,9 +52,10 @@ var getErrorMessages = function getErrorMessages(_ref) {
47
52
  fieldErrors = _ref.fieldErrors,
48
53
  externalFieldErrors = _ref.externalFieldErrors,
49
54
  externalMessagesErrors = _ref.externalMessagesErrors;
50
- var errors = externalMessagesErrors ? _toConsumableArray(externalMessagesErrors) : [];
51
55
 
52
- if (fieldErrors && fieldErrors[name]) {
56
+ var errors = _toConsumableArray(externalMessagesErrors);
57
+
58
+ if (fieldErrors[name]) {
53
59
  errors = [].concat(_toConsumableArray(errors), _toConsumableArray(fieldErrors[name]));
54
60
  }
55
61
 
@@ -63,13 +69,13 @@ var getErrorMessages = function getErrorMessages(_ref) {
63
69
  exports.getErrorMessages = getErrorMessages;
64
70
 
65
71
  var getValidatorsArray = function getValidatorsArray(validators, validatorFromComponent) {
66
- var validatorsArray = [];
72
+ var validatorsArray;
67
73
 
68
74
  if (validators && validatorFromComponent) {
69
- validatorsArray = !_lodash.default.isArray(validators) ? [validators] : validators;
70
- validatorsArray = !_lodash.default.isArray(validatorFromComponent) ? [].concat(_toConsumableArray(validatorsArray), [validatorFromComponent]) : [].concat(_toConsumableArray(validatorsArray), _toConsumableArray(validatorFromComponent));
75
+ validatorsArray = !(validators instanceof Array) ? [validators] : validators;
76
+ validatorsArray = [].concat(_toConsumableArray(validatorsArray), [validatorFromComponent]);
71
77
  } else if (validatorFromComponent) {
72
- validatorsArray = !_lodash.default.isArray(validatorFromComponent) ? [validatorFromComponent] : validatorFromComponent;
78
+ validatorsArray = [validatorFromComponent];
73
79
  } else if (validators) {
74
80
  validatorsArray = !(validators instanceof Array) ? [validators] : validators;
75
81
  }
package/lib/form/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
@@ -11,22 +11,24 @@ Object.defineProperty(exports, "Field", {
11
11
  return _Field.default;
12
12
  }
13
13
  });
14
- Object.defineProperty(exports, "FieldArray", {
14
+ Object.defineProperty(exports, "FieldNumber", {
15
15
  enumerable: true,
16
16
  get: function get() {
17
- return _FieldArray.default;
17
+ return _FieldNumber.default;
18
18
  }
19
19
  });
20
- Object.defineProperty(exports, "FieldNumber", {
20
+ Object.defineProperty(exports, "FieldArray", {
21
21
  enumerable: true,
22
22
  get: function get() {
23
- return _FieldNumber.default;
23
+ return _FieldArray.default;
24
24
  }
25
25
  });
26
26
  exports.default = void 0;
27
27
 
28
28
  var _react = _interopRequireWildcard(require("react"));
29
29
 
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
30
32
  var _lodash = _interopRequireDefault(require("lodash"));
31
33
 
32
34
  var _helpers = require("./helpers");
@@ -51,7 +53,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
51
53
 
52
54
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
53
55
 
54
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
56
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
55
57
 
56
58
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
57
59
 
@@ -69,17 +71,17 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
69
71
 
70
72
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
71
73
 
72
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
74
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
73
75
 
74
76
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
75
77
 
76
78
  var Form = function Form(_ref) {
77
- var _ref$submitOnPressEnt = _ref.submitOnPressEnterKey,
78
- submitOnPressEnterKey = _ref$submitOnPressEnt === void 0 ? true : _ref$submitOnPressEnt,
79
+ var submitOnPressEnterKey = _ref.submitOnPressEnterKey,
79
80
  dataSource = _ref.dataSource,
80
81
  securityBeforeUnload = _ref.securityBeforeUnload,
81
82
  handlerReset = _ref.handlerReset,
82
83
  handlerSubmit = _ref.handlerSubmit,
84
+ children = _ref.children,
83
85
  handlerValidates = _ref.handlerValidates,
84
86
  style = _ref.style,
85
87
  customClass = _ref.customClass,
@@ -90,8 +92,7 @@ var Form = function Form(_ref) {
90
92
  externalFieldErrors = _ref.externalFieldErrors,
91
93
  onSubmit = _ref.onSubmit,
92
94
  skeletonize = _ref.skeletonize,
93
- disabled = _ref.disabled,
94
- children = _ref.children;
95
+ disabled = _ref.disabled;
95
96
 
96
97
  var _useState = (0, _react.useState)(dataSource),
97
98
  _useState2 = _slicedToArray(_useState, 2),
@@ -120,10 +121,8 @@ var Form = function Form(_ref) {
120
121
  var validatorsArray = !(validators instanceof Array) ? [validators] : validators;
121
122
  var errors = [];
122
123
  validatorsArray.forEach(function (validator) {
123
- if (typeof validator === 'function') {
124
- var result = validator(fieldValue);
125
- if (result) errors = [].concat(_toConsumableArray(errors), [result]);
126
- }
124
+ var result = validator(fieldValue);
125
+ if (result) errors = [].concat(_toConsumableArray(errors), [result]);
127
126
  });
128
127
  return errors;
129
128
  };
@@ -149,9 +148,25 @@ var Form = function Form(_ref) {
149
148
 
150
149
  var onFieldChange = function onFieldChange(event) {
151
150
  var target = event.target;
152
- setData(function (prevState) {
153
- return (0, _helpers.changeValue)(prevState, target);
154
- });
151
+ (0, _helpers.changeValue)(dataSource, target);
152
+ (0, _helpers.changeValue)(data, target);
153
+
154
+ var newData = _extends({}, data);
155
+
156
+ if (context && context.onChangedData) {
157
+ var onChangedData = context.onChangedData;
158
+
159
+ if (!_lodash.default.isEqual(newData, originalData)) {
160
+ onChangedData(true);
161
+ } else {
162
+ onChangedData(false);
163
+ }
164
+ }
165
+
166
+ setData(newData); // TODO - Usar debounce para evitar chamada a cada letra digitada
167
+
168
+ if (onValidateForm) onValidateForm(checkIsValid(newData, false));
169
+ if (onDataChange) onDataChange(newData);
155
170
  };
156
171
 
157
172
  var onValidate = function onValidate(fieldName, fieldValue, validators) {
@@ -186,14 +201,13 @@ var Form = function Form(_ref) {
186
201
  };
187
202
 
188
203
  var onBeforeUnload = function onBeforeUnload(e) {
189
- var event = e;
190
- event.preventDefault();
204
+ e.preventDefault();
191
205
 
192
206
  if (_lodash.default.isEqual(data, originalData)) {
193
207
  return;
194
208
  }
195
209
 
196
- event.returnValue = true;
210
+ e.returnValue = true;
197
211
  };
198
212
 
199
213
  var submitOnEnter = function submitOnEnter(event) {
@@ -203,16 +217,31 @@ var Form = function Form(_ref) {
203
217
  }
204
218
  };
205
219
 
220
+ var getContextValue = function getContextValue() {
221
+ return {
222
+ skeletonize: skeletonize,
223
+ handlerFieldChange: onFieldChange,
224
+ handlerFieldValidade: onValidate,
225
+ handlerStoreValidators: function handlerStoreValidators(fieldName, fieldValidates) {
226
+ fieldsValidators.current = _extends({}, fieldsValidators.current, _defineProperty({}, fieldName, fieldValidates));
227
+ },
228
+ handlerRemoveValidators: onRemoveFieldValidators,
229
+ data: data,
230
+ fieldErrors: fieldErrors,
231
+ externalFieldErrors: externalFieldErrors
232
+ };
233
+ };
234
+
206
235
  var formProps = function formProps() {
207
236
  var propsForm = null;
208
237
 
209
238
  if (!disabled) {
210
239
  propsForm = {
211
- onSubmit: function onSubmit(event) {
212
- return event.preventDefault();
240
+ onSubmit: function onSubmit(e) {
241
+ return e.preventDefault();
213
242
  },
214
- onKeyPress: function onKeyPress(event) {
215
- return submitOnEnter(event);
243
+ onKeyPress: function onKeyPress(e) {
244
+ return submitOnEnter(e);
216
245
  }
217
246
  };
218
247
  }
@@ -221,24 +250,10 @@ var Form = function Form(_ref) {
221
250
  };
222
251
 
223
252
  (0, _react.useEffect)(function () {
224
- if (!_lodash.default.isEmpty(context)) {
225
- var onChangedData = context.onChangedData;
226
-
227
- if (!_lodash.default.isEqual(data, originalData)) {
228
- onChangedData(true);
229
- } else {
230
- onChangedData(false);
231
- }
232
- } // TODO - Usar debounce para evitar chamada a cada letra digitada
233
-
234
-
235
- if (onDataChange) onDataChange(data);
236
- if (onValidateForm) onValidateForm(checkIsValid(data, false));
237
-
238
253
  if (!disabled) {
239
254
  handlerSubmit(onFormSubmit);
240
255
  if (handlerReset) handlerReset(onReset);
241
- if (handlerValidates) handlerValidates(checkIsValid(data));
256
+ if (handlerValidates) handlerValidates(checkIsValid);
242
257
  }
243
258
  }, [data]);
244
259
  (0, _react.useEffect)(function () {
@@ -254,9 +269,7 @@ var Form = function Form(_ref) {
254
269
  (0, _react.useEffect)(function () {
255
270
  if (!disabled) {
256
271
  if (submitOnPressEnterKey !== submitFormOnEnter || dataSource !== originalData) {
257
- setData(function (prevState) {
258
- return !_lodash.default.isEqual(data, dataSource) ? dataSource : prevState;
259
- });
272
+ setData(dataSource);
260
273
  setOriginalData(function (prevState) {
261
274
  return prevState || dataSource;
262
275
  });
@@ -264,20 +277,8 @@ var Form = function Form(_ref) {
264
277
  }
265
278
  }
266
279
  }, [submitOnPressEnterKey, dataSource]);
267
- var contextValues = {
268
- skeletonize: skeletonize,
269
- handlerFieldChange: onFieldChange,
270
- handlerFieldValidade: onValidate,
271
- handlerStoreValidators: function handlerStoreValidators(fieldName, fieldValidates) {
272
- fieldsValidators.current = _extends({}, fieldsValidators.current, _defineProperty({}, fieldName, fieldValidates));
273
- },
274
- handlerRemoveValidators: onRemoveFieldValidators,
275
- data: data,
276
- fieldErrors: fieldErrors,
277
- externalFieldErrors: externalFieldErrors
278
- };
279
280
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_helpers.FormContext.Provider, {
280
- value: contextValues
281
+ value: getContextValue()
281
282
  }, /*#__PURE__*/_react.default.createElement("form", _extends({
282
283
  style: style
283
284
  }, formProps(), {
@@ -287,11 +288,45 @@ var Form = function Form(_ref) {
287
288
  zIndex: "99999999",
288
289
  title: securityTitle || 'Dados Alterados',
289
290
  text: securityText || 'Você possui dados alterados, confirma o fechamento?',
290
- visible: !_lodash.default.isEmpty(context) && context.showQuestion,
291
+ visible: !!context && context.showQuestion,
291
292
  onConfirmClick: context ? context.onConfirmClick : function () {},
292
293
  onUnconfirmClick: context ? context.onUnconfirmClick : function () {}
293
294
  }));
294
295
  };
295
296
 
297
+ Form.propTypes = {
298
+ dataSource: _propTypes.default.object.isRequired,
299
+ children: _propTypes.default.any.isRequired,
300
+ onSubmit: _propTypes.default.func.isRequired,
301
+ handlerSubmit: _propTypes.default.func.isRequired,
302
+ handlerReset: _propTypes.default.func,
303
+ handlerValidates: _propTypes.default.func,
304
+ onValidateForm: _propTypes.default.func,
305
+ submitOnPressEnterKey: _propTypes.default.bool,
306
+ style: _propTypes.default.object,
307
+ customClass: _propTypes.default.string,
308
+ onDataChange: _propTypes.default.func,
309
+ securityBeforeUnload: _propTypes.default.bool,
310
+ securityTitle: _propTypes.default.string,
311
+ securityText: _propTypes.default.string,
312
+ externalFieldErrors: _propTypes.default.object,
313
+ skeletonize: _propTypes.default.bool,
314
+ disabled: _propTypes.default.bool
315
+ };
316
+ Form.defaultProps = {
317
+ onValidateForm: undefined,
318
+ submitOnPressEnterKey: true,
319
+ style: {},
320
+ handlerReset: undefined,
321
+ handlerValidates: undefined,
322
+ customClass: '',
323
+ onDataChange: undefined,
324
+ securityBeforeUnload: false,
325
+ securityTitle: null,
326
+ securityText: null,
327
+ externalFieldErrors: {},
328
+ skeletonize: false,
329
+ disabled: false
330
+ };
296
331
  var _default = Form;
297
332
  exports.default = _default;