linear-react-components-ui 0.4.75-beta.8 → 0.4.76-rc.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 (125) hide show
  1. package/.eslintrc.js +2 -5
  2. package/.tool-versions +1 -0
  3. package/.vscode/settings.json +8 -9
  4. package/README.md +23 -0
  5. package/config/jest/cssTransform.js +14 -0
  6. package/config/jest/fileTransform.js +12 -0
  7. package/config/jest/storageMock.js +40 -0
  8. package/jest.config.js +18 -0
  9. package/lib/alerts/alert.spec.js +133 -0
  10. package/lib/assets/styles/dropdown.scss +25 -2
  11. package/lib/assets/styles/effects.scss +12 -0
  12. package/lib/assets/styles/floatMenu.scss +0 -1
  13. package/lib/assets/styles/multiSelect.scss +105 -0
  14. package/lib/assets/styles/panel.scss +0 -1
  15. package/lib/assets/styles/periodpicker.scss +65 -0
  16. package/lib/assets/styles/popover.scss +9 -11
  17. package/lib/assets/styles/progress.scss +8 -1
  18. package/lib/assets/styles/select.scss +1 -0
  19. package/lib/assets/styles/table.scss +13 -5
  20. package/lib/assets/styles/tabs.scss +77 -43
  21. package/lib/avatar/avatar.spec.js +190 -0
  22. package/lib/avatar/index.js +6 -2
  23. package/lib/badge/badge.spec.js +127 -0
  24. package/lib/badge/index.js +3 -5
  25. package/lib/buttons/buttons.spec.js +504 -0
  26. package/lib/calendar/calendar.spec.js +171 -0
  27. package/lib/checkbox/checkbox.spec.js +215 -0
  28. package/lib/checkbox/index.js +1 -0
  29. package/lib/dialog/Custom.js +7 -1
  30. package/lib/dialog/base/index.js +18 -6
  31. package/lib/dialog/dialog.spec.js +488 -0
  32. package/lib/dialog/form/index.js +23 -4
  33. package/lib/drawer/Drawer.js +3 -0
  34. package/lib/drawer/Drawer.spec.js +258 -0
  35. package/lib/drawer/Header.js +4 -1
  36. package/lib/drawer/index.js +4 -1
  37. package/lib/dropdown/Popup.js +1 -0
  38. package/lib/dropdown/dropdown.spec.js +168 -0
  39. package/lib/dropdown/withDropdown.js +10 -4
  40. package/lib/fieldset/fieldset.spec.js +329 -0
  41. package/lib/form/Field.js +2 -0
  42. package/lib/form/FieldNumber.js +10 -2
  43. package/lib/form/FieldPeriod.js +100 -0
  44. package/lib/form/form.spec.js +285 -0
  45. package/lib/form/helpers.js +9 -1
  46. package/lib/form/index.js +76 -10
  47. package/lib/form/withFieldHOC.js +2 -0
  48. package/lib/form/withFormSecurity.js +106 -0
  49. package/lib/gridlayout/GridRow.js +1 -1
  50. package/lib/gridlayout/gridLayout.spec.js +169 -0
  51. package/lib/icons/helper.js +16 -0
  52. package/lib/icons/icons.spec.js +86 -0
  53. package/lib/icons/index.js +2 -0
  54. package/lib/inputs/base/InputTextBase.js +15 -5
  55. package/lib/inputs/base/base.spec.js +690 -0
  56. package/lib/inputs/color/color_input.spec.js +174 -0
  57. package/lib/inputs/color/index.js +2 -2
  58. package/lib/inputs/date/date.spec.js +344 -0
  59. package/lib/inputs/date/index.js +7 -6
  60. package/lib/inputs/mask/Cpf.js +9 -9
  61. package/lib/inputs/mask/input_mask.spec.js +590 -0
  62. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  63. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  64. package/lib/inputs/multiSelect/helper.js +18 -0
  65. package/lib/inputs/multiSelect/index.js +343 -0
  66. package/lib/inputs/number/BaseNumber.js +1 -1
  67. package/lib/inputs/number/index.js +7 -5
  68. package/lib/inputs/number/numberfield.spec.js +215 -0
  69. package/lib/inputs/period/Dialog.js +38 -0
  70. package/lib/inputs/period/Dropdown.js +90 -0
  71. package/lib/inputs/period/PeriodList.js +79 -0
  72. package/lib/inputs/period/helper.js +118 -0
  73. package/lib/inputs/period/index.js +490 -0
  74. package/lib/inputs/search/search_input.spec.js +209 -0
  75. package/lib/inputs/select/Dropdown.js +4 -4
  76. package/lib/inputs/select/index.js +26 -3
  77. package/lib/inputs/select/multiple/index.js +9 -7
  78. package/lib/inputs/select/select.spec.js +391 -0
  79. package/lib/inputs/select/simple/index.js +30 -18
  80. package/lib/inputs/text/textfield.spec.js +215 -0
  81. package/lib/inputs/textarea/textarea.spec.js +59 -0
  82. package/lib/internals/withTooltip.js +83 -82
  83. package/lib/labelMessages/index.js +3 -2
  84. package/lib/labelMessages/labelMessages.spec.js +176 -0
  85. package/lib/labels/label.spec.js +162 -0
  86. package/lib/list/Item.js +3 -3
  87. package/lib/list/index.js +21 -10
  88. package/lib/list/list.spec.js +611 -0
  89. package/lib/menus/float/MenuItem.js +25 -8
  90. package/lib/menus/float/float-menu.spec.js +221 -0
  91. package/lib/menus/sidenav/index.js +7 -3
  92. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  93. package/lib/menus/sidenav/sidenav.spec.js +312 -0
  94. package/lib/noPermission/index.js +2 -1
  95. package/lib/panel/panel.spec.js +216 -0
  96. package/lib/popover/index.js +2 -1
  97. package/lib/popover/popover.spec.js +146 -0
  98. package/lib/progress/Bar.js +40 -9
  99. package/lib/progress/index.js +12 -4
  100. package/lib/progress/progress.spec.js +86 -0
  101. package/lib/radio/radio.spec.js +189 -0
  102. package/lib/spinner/SpinnerLoading.js +14 -24
  103. package/lib/spinner/index.js +6 -1
  104. package/lib/spinner/spinner.spec.js +152 -0
  105. package/lib/split/Split.js +10 -12
  106. package/lib/split/split.spec.js +151 -0
  107. package/lib/table/Header.js +3 -1
  108. package/lib/table/Row.js +2 -5
  109. package/lib/table/index.js +1 -4
  110. package/lib/table/table.spec.js +352 -0
  111. package/lib/tabs/DropdownItems.js +84 -0
  112. package/lib/tabs/Menu.js +18 -5
  113. package/lib/tabs/MenuItems.js +7 -7
  114. package/lib/tabs/Panel.js +1 -3
  115. package/lib/tabs/index.js +126 -17
  116. package/lib/tabs/tabs.spec.js +346 -0
  117. package/lib/toolbar/index.js +8 -4
  118. package/lib/toolbar/toolbar.spec.js +394 -0
  119. package/lib/tooltip/index.js +13 -0
  120. package/lib/tooltip/tooltip.spec.js +203 -0
  121. package/lib/treeview/Node.js +55 -32
  122. package/lib/treeview/index.js +30 -3
  123. package/lib/treeview/treeview.spec.js +261 -0
  124. package/package.json +19 -9
  125. package/.DS_Store +0 -0
@@ -0,0 +1,285 @@
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
+ });
193
+ describe('Field', function () {
194
+ describe('Default & Number', function () {
195
+ it('should field has name', function () {
196
+ var _render9 = (0, _react2.render)(mockForm()),
197
+ getByDisplayValue = _render9.getByDisplayValue;
198
+
199
+ expect(getByDisplayValue('XPTO')).toHaveAttribute('name', 'nome');
200
+ });
201
+ it('should render component', function () {
202
+ var _render10 = (0, _react2.render)(mockForm()),
203
+ container = _render10.container;
204
+
205
+ expect(container.firstChild).toContainElement(container.querySelector('.textinput'));
206
+ });
207
+ it('should execute callback on field change', function () {
208
+ var mockOnChange = jest.fn();
209
+
210
+ var _render11 = (0, _react2.render)(mockForm({}, {
211
+ onChange: mockOnChange
212
+ })),
213
+ getByDisplayValue = _render11.getByDisplayValue;
214
+
215
+ _react2.fireEvent.change(getByDisplayValue('XPTO'), {
216
+ target: {
217
+ value: 'Gustavo'
218
+ }
219
+ });
220
+
221
+ expect(mockOnChange).toHaveBeenCalled();
222
+ });
223
+ it('should render label', function () {
224
+ var _render12 = (0, _react2.render)(mockForm()),
225
+ container = _render12.container;
226
+
227
+ expect(container.firstChild).toHaveTextContent('Nome');
228
+ });
229
+ it('should apply validators', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
230
+ var _render13, container;
231
+
232
+ return regeneratorRuntime.wrap(function _callee$(_context) {
233
+ while (1) {
234
+ switch (_context.prev = _context.next) {
235
+ case 0:
236
+ _render13 = (0, _react2.render)(mockForm()), container = _render13.container;
237
+ expect(container.querySelector('.errormessages')).toHaveTextContent('External Message Errors');
238
+
239
+ case 2:
240
+ case "end":
241
+ return _context.stop();
242
+ }
243
+ }
244
+ }, _callee);
245
+ })));
246
+ it('should apply fieldId', function () {
247
+ var _render14 = (0, _react2.render)(mockForm()),
248
+ container = _render14.container;
249
+
250
+ expect(container.querySelector('#fooo')).toBeInTheDocument();
251
+ });
252
+ });
253
+ describe('Array', function () {
254
+ it('should apply bordered', function () {
255
+ var _render15 = (0, _react2.render)(mockForm()),
256
+ container = _render15.container;
257
+
258
+ expect(container.querySelector('.arraycontainer')).toHaveClass('-bordered');
259
+ });
260
+ it('should apply labelContainerStyle', function () {
261
+ var _render16 = (0, _react2.render)(mockForm()),
262
+ container = _render16.container;
263
+
264
+ expect(container.querySelector('.arraycontainer')).toHaveStyle('height: 200px;');
265
+ });
266
+ it('should apply grid columns', function () {
267
+ var _render17 = (0, _react2.render)(mockForm({}, {}, {
268
+ cols: '12 12 12 12'
269
+ })),
270
+ container = _render17.container;
271
+
272
+ expect(container.querySelector('.grid-container')).toBeInTheDocument();
273
+ expect(container.querySelector('.grid-container')).toHaveClass('col-xs-12 col-sm-12 col-md-12 col-lg-12');
274
+ expect(container.querySelector('.grid-container')).toContainElement(container.querySelector('.arraycontainer'));
275
+ });
276
+ it('should apply skipLabel', function () {
277
+ var _render18 = (0, _react2.render)(mockForm({}, {}, {
278
+ skipLabel: true
279
+ })),
280
+ container = _render18.container;
281
+
282
+ expect(container.querySelector('.arraycontainer')).not.toBeInTheDocument();
283
+ });
284
+ });
285
+ });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getValidatorsArray = exports.getErrorMessages = exports.withFieldContext = exports.FormContext = exports.FieldContext = void 0;
6
+ exports.getValidatorsArray = exports.getErrorMessages = exports.withFieldContext = exports.FormContext = exports.FieldContext = exports.securityBeforeUnload = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -21,6 +21,9 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
21
21
 
22
22
  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; }
23
23
 
24
+ var securityBeforeUnload = 'securityBeforeUnload';
25
+ exports.securityBeforeUnload = securityBeforeUnload;
26
+
24
27
  var FieldContext = /*#__PURE__*/_react["default"].createContext();
25
28
 
26
29
  exports.FieldContext = FieldContext;
@@ -36,6 +39,7 @@ exports.withFieldContext = withFieldContext;
36
39
  var getErrorMessages = function getErrorMessages(_ref) {
37
40
  var name = _ref.name,
38
41
  fieldErrors = _ref.fieldErrors,
42
+ externalFieldErrors = _ref.externalFieldErrors,
39
43
  externalMessagesErrors = _ref.externalMessagesErrors;
40
44
 
41
45
  var errors = _toConsumableArray(externalMessagesErrors);
@@ -44,6 +48,10 @@ var getErrorMessages = function getErrorMessages(_ref) {
44
48
  errors = [].concat(_toConsumableArray(errors), _toConsumableArray(fieldErrors[name]));
45
49
  }
46
50
 
51
+ if (externalFieldErrors && externalFieldErrors[name]) {
52
+ errors = [].concat(_toConsumableArray(errors), _toConsumableArray(externalFieldErrors[name]));
53
+ }
54
+
47
55
  return errors;
48
56
  };
49
57
 
package/lib/form/index.js CHANGED
@@ -41,6 +41,10 @@ var _FieldArray = _interopRequireDefault(require("./FieldArray"));
41
41
 
42
42
  require("../assets/styles/form.scss");
43
43
 
44
+ var _dialog = require("../dialog");
45
+
46
+ var _withFormSecurity = require("./withFormSecurity");
47
+
44
48
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
45
49
 
46
50
  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); }
@@ -94,6 +98,20 @@ var Form = /*#__PURE__*/function (_Component) {
94
98
  _classCallCheck(this, Form);
95
99
 
96
100
  _this = _super.call(this, props);
101
+ Object.defineProperty(_assertThisInitialized(_this), "onBeforeUnload", {
102
+ configurable: true,
103
+ enumerable: true,
104
+ writable: true,
105
+ value: function value(e) {
106
+ e.preventDefault();
107
+
108
+ if (Object.is(_this.state.data, _this.state.originalData)) {
109
+ return;
110
+ }
111
+
112
+ e.returnValue = true;
113
+ }
114
+ });
97
115
  Object.defineProperty(_assertThisInitialized(_this), "onFieldChange", {
98
116
  configurable: true,
99
117
  enumerable: true,
@@ -106,12 +124,19 @@ var Form = /*#__PURE__*/function (_Component) {
106
124
  var _e$target = e.target,
107
125
  name = _e$target.name,
108
126
  value = _e$target.value;
127
+ var onChangedData = _this.context.onChangedData;
109
128
 
110
129
  _lodash["default"].set(data, name, value);
111
130
 
112
131
  _this.setState({
113
132
  data: data
114
- }); // TODO - Usar debounce para evitar chamada a cada letra digitada
133
+ });
134
+
135
+ if (!Object.is(data, _this.state.originalData)) {
136
+ onChangedData(true);
137
+ } else {
138
+ onChangedData(false);
139
+ } // TODO - Usar debounce para evitar chamada a cada letra digitada
115
140
 
116
141
 
117
142
  if (onValidateForm) onValidateForm(_this.checkIsValid(data, false));
@@ -196,7 +221,8 @@ var Form = /*#__PURE__*/function (_Component) {
196
221
  },
197
222
  handlerRemoveValidators: _this.onRemoveFieldValidators,
198
223
  data: _this.state.data,
199
- fieldErrors: _this.state.fieldErrors
224
+ fieldErrors: _this.state.fieldErrors,
225
+ externalFieldErrors: _this.props.externalFieldErrors
200
226
  };
201
227
  }
202
228
  });
@@ -254,12 +280,23 @@ var Form = /*#__PURE__*/function (_Component) {
254
280
  var _this$props2 = this.props,
255
281
  handlerReset = _this$props2.handlerReset,
256
282
  handlerSubmit = _this$props2.handlerSubmit,
257
- handlerValidates = _this$props2.handlerValidates;
283
+ handlerValidates = _this$props2.handlerValidates,
284
+ securityBeforeUnload = _this$props2.securityBeforeUnload;
285
+ var setSecurityBeforeUnload = this.context.setSecurityBeforeUnload;
258
286
  handlerSubmit(this.onSubmit);
259
287
  if (handlerReset) handlerReset(this.onReset);
260
288
  if (handlerValidates) handlerValidates(this.checkIsValid);
261
- } // up = data => _.debounce((data) => { this.props.onValidateForm(this.checkIsValid(data)); }, 300)
262
289
 
290
+ if (securityBeforeUnload) {
291
+ setSecurityBeforeUnload(true);
292
+ window.addEventListener('beforeunload', this.onBeforeUnload);
293
+ }
294
+ }
295
+ }, {
296
+ key: "componentWillUnmount",
297
+ value: function componentWillUnmount() {
298
+ window.removeEventListener('beforeunload', this.onBeforeUnload);
299
+ }
263
300
  }, {
264
301
  key: "render",
265
302
  value: function render() {
@@ -268,8 +305,15 @@ var Form = /*#__PURE__*/function (_Component) {
268
305
  var _this$props3 = this.props,
269
306
  style = _this$props3.style,
270
307
  customClass = _this$props3.customClass,
271
- children = _this$props3.children;
272
- return /*#__PURE__*/_react["default"].createElement(_helpers.FormContext.Provider, {
308
+ children = _this$props3.children,
309
+ securityBeforeUnload = _this$props3.securityBeforeUnload,
310
+ securityTitle = _this$props3.securityTitle,
311
+ securityText = _this$props3.securityText;
312
+ var _this$context = this.context,
313
+ showQuestion = _this$context.showQuestion,
314
+ onUnconfirmClick = _this$context.onUnconfirmClick,
315
+ onConfirmClick = _this$context.onConfirmClick;
316
+ return /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(_helpers.FormContext.Provider, {
273
317
  value: this.getContextValue()
274
318
  }, /*#__PURE__*/_react["default"].createElement("form", {
275
319
  style: style,
@@ -281,7 +325,15 @@ var Form = /*#__PURE__*/function (_Component) {
281
325
  },
282
326
  role: "presentation",
283
327
  className: "form-component ".concat(customClass)
284
- }, children));
328
+ }, children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
329
+ zIndex: "99999999",
330
+ customClassName: "classTeste",
331
+ title: securityTitle || 'Dados Alterados',
332
+ text: securityText || 'Vocẽ possui dados alterados, confirma o fechamento?',
333
+ visible: securityBeforeUnload && showQuestion,
334
+ onConfirmClick: onConfirmClick,
335
+ onUnconfirmClick: onUnconfirmClick
336
+ }));
285
337
  }
286
338
  }], [{
287
339
  key: "getDerivedStateFromProps",
@@ -293,7 +345,7 @@ var Form = /*#__PURE__*/function (_Component) {
293
345
  return {
294
346
  submitFormOnEnter: submitOnPressEnterKey,
295
347
  data: dataSource,
296
- originalData: dataSource
348
+ originalData: state.originalData || dataSource
297
349
  };
298
350
  }
299
351
 
@@ -304,6 +356,12 @@ var Form = /*#__PURE__*/function (_Component) {
304
356
  return Form;
305
357
  }(_react.Component);
306
358
 
359
+ Object.defineProperty(Form, "contextType", {
360
+ configurable: true,
361
+ enumerable: true,
362
+ writable: true,
363
+ value: _withFormSecurity.FormSecurityContext
364
+ });
307
365
  Form.propTypes = {
308
366
  dataSource: _propTypes["default"].object.isRequired,
309
367
  children: _propTypes["default"].any.isRequired,
@@ -315,7 +373,11 @@ Form.propTypes = {
315
373
  submitOnPressEnterKey: _propTypes["default"].bool,
316
374
  style: _propTypes["default"].object,
317
375
  customClass: _propTypes["default"].string,
318
- onDataChange: _propTypes["default"].func
376
+ onDataChange: _propTypes["default"].func,
377
+ securityBeforeUnload: _propTypes["default"].bool,
378
+ securityTitle: _propTypes["default"].string,
379
+ securityText: _propTypes["default"].string,
380
+ externalFieldErrors: _propTypes["default"].object
319
381
  };
320
382
  Form.defaultProps = {
321
383
  onValidateForm: undefined,
@@ -324,7 +386,11 @@ Form.defaultProps = {
324
386
  handlerReset: undefined,
325
387
  handlerValidates: undefined,
326
388
  customClass: '',
327
- onDataChange: undefined
389
+ onDataChange: undefined,
390
+ securityBeforeUnload: false,
391
+ securityTitle: null,
392
+ securityText: null,
393
+ externalFieldErrors: {}
328
394
  };
329
395
  var _default = Form;
330
396
  exports["default"] = _default;
@@ -151,6 +151,7 @@ function withFieldHOC(WrappedComponent) {
151
151
  handlerFieldValidade = _ref.handlerFieldValidade,
152
152
  data = _ref.data,
153
153
  fieldErrors = _ref.fieldErrors,
154
+ externalFieldErrors = _ref.externalFieldErrors,
154
155
  handlerStoreValidators = _ref.handlerStoreValidators,
155
156
  handlerRemoveValidators = _ref.handlerRemoveValidators;
156
157
  return /*#__PURE__*/_react["default"].createElement(FieldHOC, _extends({}, props, {
@@ -160,6 +161,7 @@ function withFieldHOC(WrappedComponent) {
160
161
  handlerRemoveValidators: handlerRemoveValidators,
161
162
  data: data,
162
163
  fieldErrors: fieldErrors,
164
+ externalFieldErrors: externalFieldErrors,
163
165
  forwardedRef: ref
164
166
  }));
165
167
  });
@@ -0,0 +1,106 @@
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
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FormSecurityContext = exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _excluded = ["handlerClose"];
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
22
+ 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); }
23
+
24
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
+
26
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
27
+
28
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
+
30
+ 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; }
31
+
32
+ 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; }
33
+
34
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
+
36
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
37
+
38
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
39
+
40
+ var FormSecurityContext = /*#__PURE__*/_react["default"].createContext();
41
+
42
+ exports.FormSecurityContext = FormSecurityContext;
43
+
44
+ var withFormSecurity = function withFormSecurity(WrappedComponent) {
45
+ var EnhancedComponent = function EnhancedComponent(_ref) {
46
+ var handlerClose = _ref.handlerClose,
47
+ props = _objectWithoutProperties(_ref, _excluded);
48
+
49
+ var changedData = (0, _react.useRef)(false);
50
+
51
+ var _useState = (0, _react.useState)(false),
52
+ _useState2 = _slicedToArray(_useState, 2),
53
+ securityBeforeUnload = _useState2[0],
54
+ setSecurityBeforeUnload = _useState2[1];
55
+
56
+ var _useState3 = (0, _react.useState)(false),
57
+ _useState4 = _slicedToArray(_useState3, 2),
58
+ showQuestion = _useState4[0],
59
+ setShowQuestion = _useState4[1];
60
+
61
+ var newHandlerClose = function newHandlerClose() {
62
+ if (changedData.current && securityBeforeUnload) {
63
+ setShowQuestion(true);
64
+ } else {
65
+ handlerClose();
66
+ }
67
+ };
68
+
69
+ var onConfirmClick = function onConfirmClick() {
70
+ handlerClose();
71
+ };
72
+
73
+ var onUnconfirmClick = function onUnconfirmClick() {
74
+ setShowQuestion(false);
75
+ };
76
+
77
+ var onChangedData = function onChangedData(value) {
78
+ changedData.current = value;
79
+ };
80
+
81
+ return /*#__PURE__*/_react["default"].createElement(FormSecurityContext.Provider, {
82
+ value: {
83
+ onChangedData: onChangedData,
84
+ showQuestion: showQuestion,
85
+ onConfirmClick: onConfirmClick,
86
+ onUnconfirmClick: onUnconfirmClick,
87
+ setSecurityBeforeUnload: setSecurityBeforeUnload
88
+ }
89
+ }, /*#__PURE__*/_react["default"].createElement(WrappedComponent, _extends({}, props, {
90
+ handlerClose: newHandlerClose
91
+ })));
92
+ };
93
+
94
+ EnhancedComponent.propTypes = {
95
+ handlerClose: _propTypes["default"].func,
96
+ onClick: _propTypes["default"].func
97
+ };
98
+ EnhancedComponent.defaultProps = {
99
+ handlerClose: undefined,
100
+ onClick: undefined
101
+ };
102
+ return EnhancedComponent;
103
+ };
104
+
105
+ var _default = withFormSecurity;
106
+ exports["default"] = _default;
@@ -18,7 +18,7 @@ var getClass = function getClass(_ref) {
18
18
  customClass = _ref.customClass,
19
19
  horizontalAlign = _ref.horizontalAlign,
20
20
  withTrim = _ref.withTrim;
21
- return "row ".concat(customClass, " justify-content\n ").concat(withTrim && ' -withtrim', "\n ").concat(verticalAlign && " align-".concat(verticalAlign), "\n ").concat(horizontalAlign && " justify-content-".concat(horizontalAlign));
21
+ return "row ".concat(customClass, "\n ").concat(withTrim && ' -withtrim', "\n ").concat(verticalAlign && " align-".concat(verticalAlign), "\n ").concat(horizontalAlign && " justify-content-".concat(horizontalAlign));
22
22
  };
23
23
 
24
24
  var GridRow = function GridRow(props) {