linear-react-components-ui 1.0.10-beta.2 → 1.0.10-beta.21

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 (281) hide show
  1. package/.eslintrc.json +1 -0
  2. package/.vscode/settings.json +1 -1
  3. package/README.md +19 -12
  4. package/lib/@types/Align.d.ts +2 -1
  5. package/lib/alerts/AlertContainer.d.ts +2 -0
  6. package/lib/alerts/AlertProvider.d.ts +2 -0
  7. package/lib/alerts/BaseAlert.d.ts +2 -0
  8. package/lib/alerts/Message.d.ts +2 -0
  9. package/lib/alerts/Message.js +1 -1
  10. package/lib/alerts/alert.spec.js +133 -0
  11. package/lib/alerts/helpers.d.ts +2 -0
  12. package/lib/alerts/index.d.ts +2 -0
  13. package/lib/alerts/types.d.ts +3 -1
  14. package/lib/alerts/withAlert.d.ts +2 -0
  15. package/lib/assets/styles/dialog.scss +9 -6
  16. package/lib/assets/styles/drawers.scss +9 -0
  17. package/lib/assets/styles/effects.scss +2 -2
  18. package/lib/assets/styles/radio.scss +52 -8
  19. package/lib/assets/styles/table.scss +30 -0
  20. package/lib/assets/styles/tooltip.scss +42 -2
  21. package/lib/avatar/avatar.spec.js +190 -0
  22. package/lib/badge/badge.spec.js +127 -0
  23. package/lib/buttons/ActivateButton.d.ts +2 -0
  24. package/lib/buttons/AddButton.d.ts +2 -0
  25. package/lib/buttons/Button.d.ts +2 -0
  26. package/lib/buttons/CancelButton.d.ts +2 -0
  27. package/lib/buttons/DangerButton.d.ts +2 -0
  28. package/lib/buttons/DefaultButton.d.ts +2 -0
  29. package/lib/buttons/DefaultButton.js +14 -4
  30. package/lib/buttons/DestroyButton.d.ts +2 -0
  31. package/lib/buttons/EditButton.d.ts +2 -0
  32. package/lib/buttons/InactivateButton.d.ts +2 -0
  33. package/lib/buttons/InfoButton.d.ts +2 -0
  34. package/lib/buttons/PrimaryButton.d.ts +2 -0
  35. package/lib/buttons/RestoreButton.d.ts +2 -0
  36. package/lib/buttons/SaveButton.d.ts +2 -0
  37. package/lib/buttons/SpinnerLoading.js +230 -0
  38. package/lib/buttons/SuccessButton.d.ts +2 -0
  39. package/lib/buttons/WarningButton.d.ts +2 -0
  40. package/lib/buttons/buttons.spec.js +504 -0
  41. package/lib/buttons/index.d.ts +2 -0
  42. package/lib/buttons/split_button/index.d.ts +2 -0
  43. package/lib/buttons/types.d.ts +6 -2
  44. package/lib/calendar/calendar.spec.js +171 -0
  45. package/lib/checkbox/checkbox.spec.js +215 -0
  46. package/lib/dialog/Alert.d.ts +3 -0
  47. package/lib/dialog/Custom.d.ts +3 -0
  48. package/lib/dialog/Custom.js +1 -1
  49. package/lib/dialog/Error.d.ts +3 -0
  50. package/lib/dialog/Information.d.ts +3 -0
  51. package/lib/dialog/Question.d.ts +3 -0
  52. package/lib/dialog/Warning.d.ts +3 -0
  53. package/lib/dialog/base/Content.d.ts +3 -0
  54. package/lib/dialog/base/Footer.d.ts +3 -0
  55. package/lib/dialog/base/Header.d.ts +3 -0
  56. package/lib/dialog/base/Header.js +12 -1
  57. package/lib/dialog/base/index.d.ts +3 -0
  58. package/lib/dialog/base/index.js +78 -16
  59. package/lib/dialog/dialog.spec.js +488 -0
  60. package/lib/dialog/form/index.d.ts +7 -3
  61. package/lib/dialog/form/index.js +11 -4
  62. package/lib/dialog/index.d.ts +3 -0
  63. package/lib/dialog/types.d.ts +10 -4
  64. package/lib/drawer/Content.d.ts +2 -0
  65. package/lib/drawer/Drawer.d.ts +3 -1
  66. package/lib/drawer/Drawer.js +22 -2
  67. package/lib/drawer/Drawer.spec.js +258 -0
  68. package/lib/drawer/Header.d.ts +2 -0
  69. package/lib/drawer/helpers.d.ts +2 -0
  70. package/lib/drawer/index.d.ts +2 -0
  71. package/lib/drawer/types.d.ts +4 -1
  72. package/lib/dropdown/Popup.js +5 -0
  73. package/lib/dropdown/dropdown.spec.js +169 -0
  74. package/lib/fieldset/fieldset.spec.js +329 -0
  75. package/lib/form/Field.d.ts +2 -1
  76. package/lib/form/Field.js +33 -24
  77. package/lib/form/FieldArray.d.ts +1 -0
  78. package/lib/form/FieldArray.js +41 -4
  79. package/lib/form/FieldNumber.d.ts +1 -0
  80. package/lib/form/FieldNumber.js +24 -5
  81. package/lib/form/FieldPeriod.d.ts +1 -0
  82. package/lib/form/FieldPeriod.js +16 -2
  83. package/lib/form/form.spec.js +293 -0
  84. package/lib/form/helpers.d.ts +2 -1
  85. package/lib/form/helpers.js +2 -2
  86. package/lib/form/index.d.ts +4 -2
  87. package/lib/form/index.js +72 -35
  88. package/lib/form/types.d.ts +25 -6
  89. package/lib/form/withFieldHOC.d.ts +1 -0
  90. package/lib/form/withFieldHOC.js +1 -0
  91. package/lib/form/withFormSecurity.d.ts +1 -0
  92. package/lib/form/withFormSecurity.js +2 -1
  93. package/lib/gridlayout/gridLayout.spec.js +169 -0
  94. package/lib/icons/helper.d.ts +4 -0
  95. package/lib/icons/helper.js +4 -0
  96. package/lib/icons/icons.spec.js +86 -0
  97. package/lib/icons/index.d.ts +2 -0
  98. package/lib/icons/types.d.ts +3 -1
  99. package/lib/index.d.ts +4 -1
  100. package/lib/inputs/base/InputTextBase.d.ts +1 -0
  101. package/lib/inputs/base/InputTextBase.js +10 -2
  102. package/lib/inputs/base/base.spec.js +690 -0
  103. package/lib/inputs/base/helpers.d.ts +2 -1
  104. package/lib/inputs/base/index.js +1 -0
  105. package/lib/inputs/base/types.d.ts +2 -1
  106. package/lib/inputs/color/color_input.spec.js +174 -0
  107. package/lib/inputs/date/Dialog.d.ts +1 -0
  108. package/lib/inputs/date/Dropdown.d.ts +1 -0
  109. package/lib/inputs/date/date.spec.js +354 -0
  110. package/lib/inputs/date/helpers.d.ts +2 -1
  111. package/lib/inputs/date/helpers.js +3 -2
  112. package/lib/inputs/date/index.d.ts +1 -0
  113. package/lib/inputs/date/index.js +24 -9
  114. package/lib/inputs/date/types.d.ts +3 -1
  115. package/lib/inputs/file/DefaultFile.d.ts +1 -0
  116. package/lib/inputs/file/DragDropFile.d.ts +1 -0
  117. package/lib/inputs/file/File.d.ts +1 -0
  118. package/lib/inputs/file/FileButtonSettings.d.ts +1 -0
  119. package/lib/inputs/file/helpers.d.ts +1 -0
  120. package/lib/inputs/file/index.d.ts +1 -0
  121. package/lib/inputs/file/types.d.ts +1 -0
  122. package/lib/inputs/inputHOC.d.ts +3 -0
  123. package/lib/inputs/mask/BaseMask.d.ts +1 -0
  124. package/lib/inputs/mask/BaseMask.js +20 -5
  125. package/lib/inputs/mask/Cnpj.d.ts +1 -0
  126. package/lib/inputs/mask/Cpf.d.ts +1 -0
  127. package/lib/inputs/mask/Cpf.js +4 -4
  128. package/lib/inputs/mask/Phone.d.ts +1 -0
  129. package/lib/inputs/mask/ZipCode.d.ts +1 -0
  130. package/lib/inputs/mask/helpers.d.ts +3 -0
  131. package/lib/inputs/mask/helpers.js +1 -1
  132. package/lib/inputs/mask/imaskHOC.d.ts +3 -0
  133. package/lib/inputs/mask/imaskHOC.js +16 -12
  134. package/lib/inputs/mask/index.d.ts +1 -0
  135. package/lib/inputs/mask/input_mask.spec.js +607 -0
  136. package/lib/inputs/mask/types.d.ts +2 -1
  137. package/lib/inputs/multiSelect/ActionButtons.d.ts +2 -1
  138. package/lib/inputs/multiSelect/ActionButtons.js +4 -1
  139. package/lib/inputs/multiSelect/Dropdown.d.ts +1 -0
  140. package/lib/inputs/multiSelect/Dropdown.js +4 -4
  141. package/lib/inputs/multiSelect/helper.d.ts +8 -6
  142. package/lib/inputs/multiSelect/helper.js +5 -1
  143. package/lib/inputs/multiSelect/index.d.ts +1 -0
  144. package/lib/inputs/multiSelect/index.js +15 -11
  145. package/lib/inputs/multiSelect/types.d.ts +16 -6
  146. package/lib/inputs/number/BaseNumber.d.ts +3 -0
  147. package/lib/inputs/number/BaseNumber.js +1 -2
  148. package/lib/inputs/number/Currency.d.ts +3 -0
  149. package/lib/inputs/number/Decimal.d.ts +3 -0
  150. package/lib/inputs/number/format_number.d.ts +2 -1
  151. package/lib/inputs/number/format_number.js +8 -3
  152. package/lib/inputs/number/index.d.ts +3 -0
  153. package/lib/inputs/number/numberfield.spec.js +215 -0
  154. package/lib/inputs/number/types.d.ts +3 -1
  155. package/lib/inputs/period/Dialog.d.ts +1 -0
  156. package/lib/inputs/period/Dropdown.d.ts +1 -0
  157. package/lib/inputs/period/PeriodList.d.ts +1 -0
  158. package/lib/inputs/period/helper.d.ts +1 -0
  159. package/lib/inputs/period/index.d.ts +1 -0
  160. package/lib/inputs/period/index.js +8 -9
  161. package/lib/inputs/period/types.d.ts +3 -2
  162. package/lib/inputs/search/index.d.ts +3 -0
  163. package/lib/inputs/search/search_input.spec.js +209 -0
  164. package/lib/inputs/select/ActionButtons.d.ts +3 -0
  165. package/lib/inputs/select/Dropdown.d.ts +3 -0
  166. package/lib/inputs/select/Dropdown.js +1 -1
  167. package/lib/inputs/select/helper.d.ts +7 -9
  168. package/lib/inputs/select/helper.js +11 -2
  169. package/lib/inputs/select/index.d.ts +1 -0
  170. package/lib/inputs/select/index.js +6 -5
  171. package/lib/inputs/select/multiple/Selecteds.d.ts +1 -0
  172. package/lib/inputs/select/multiple/Selecteds.js +1 -1
  173. package/lib/inputs/select/multiple/index.d.ts +1 -0
  174. package/lib/inputs/select/multiple/index.js +13 -10
  175. package/lib/inputs/select/select.spec.js +395 -0
  176. package/lib/inputs/select/simple/index.d.ts +1 -0
  177. package/lib/inputs/select/simple/index.js +35 -18
  178. package/lib/inputs/select/types.d.ts +22 -7
  179. package/lib/inputs/text/index.d.ts +1 -0
  180. package/lib/inputs/text/textfield.spec.js +215 -0
  181. package/lib/inputs/text/types.d.ts +1 -1
  182. package/lib/inputs/textarea/index.d.ts +1 -0
  183. package/lib/inputs/textarea/index.js +1 -1
  184. package/lib/inputs/textarea/textarea.spec.js +59 -0
  185. package/lib/inputs/textarea/types.d.ts +1 -0
  186. package/lib/inputs/types.d.ts +7 -3
  187. package/lib/internals/types.d.ts +1 -0
  188. package/lib/internals/withTooltip.js +13 -6
  189. package/lib/labelMessages/index.d.ts +2 -0
  190. package/lib/labelMessages/index.js +3 -4
  191. package/lib/labelMessages/labelMessages.spec.js +176 -0
  192. package/lib/labelMessages/types.d.ts +3 -1
  193. package/lib/labels/DangerLabel.d.ts +2 -0
  194. package/lib/labels/DefaultLabel.d.ts +2 -0
  195. package/lib/labels/InfoLabel.d.ts +2 -0
  196. package/lib/labels/PrimaryLabel.d.ts +2 -0
  197. package/lib/labels/SuccessLabel.d.ts +2 -0
  198. package/lib/labels/WarningLabel.d.ts +2 -0
  199. package/lib/labels/index.d.ts +2 -0
  200. package/lib/labels/label.spec.js +162 -0
  201. package/lib/labels/types.d.ts +3 -1
  202. package/lib/list/Header.d.ts +2 -0
  203. package/lib/list/Item.d.ts +2 -0
  204. package/lib/list/helpers.d.ts +2 -0
  205. package/lib/list/index.d.ts +2 -0
  206. package/lib/list/list.spec.js +769 -0
  207. package/lib/list/types.d.ts +4 -2
  208. package/lib/menus/float/MenuItem.d.ts +2 -0
  209. package/lib/menus/float/float-menu.spec.js +221 -0
  210. package/lib/menus/float/helpers.d.ts +2 -0
  211. package/lib/menus/float/index.d.ts +2 -0
  212. package/lib/menus/float/types.d.ts +3 -1
  213. package/lib/menus/index.d.ts +2 -0
  214. package/lib/menus/sidenav/ExpandMenu.d.ts +2 -0
  215. package/lib/menus/sidenav/MenuLink.d.ts +2 -0
  216. package/lib/menus/sidenav/NavMenuGroup.d.ts +2 -0
  217. package/lib/menus/sidenav/NavMenuItem.d.ts +2 -0
  218. package/lib/menus/sidenav/NavSubMenuItem.d.ts +2 -0
  219. package/lib/menus/sidenav/helpers.d.ts +2 -0
  220. package/lib/menus/sidenav/index.d.ts +2 -0
  221. package/lib/menus/sidenav/popup_menu_search/EmptyList.d.ts +2 -0
  222. package/lib/menus/sidenav/popup_menu_search/index.d.ts +2 -0
  223. package/lib/menus/sidenav/sidenav.spec.js +379 -0
  224. package/lib/menus/sidenav/types.d.ts +4 -2
  225. package/lib/panel/Content.d.ts +3 -1
  226. package/lib/panel/DangerPanel.d.ts +3 -1
  227. package/lib/panel/Default.d.ts +3 -1
  228. package/lib/panel/Header.d.ts +3 -1
  229. package/lib/panel/Header.js +3 -4
  230. package/lib/panel/InfoPanel.d.ts +3 -1
  231. package/lib/panel/PrimaryPanel.d.ts +3 -1
  232. package/lib/panel/SuccessPanel.d.ts +3 -1
  233. package/lib/panel/ToolBar.d.ts +3 -1
  234. package/lib/panel/WarningPanel.d.ts +3 -1
  235. package/lib/panel/helpers.d.ts +3 -1
  236. package/lib/panel/index.d.ts +3 -1
  237. package/lib/panel/panel.spec.js +216 -0
  238. package/lib/panel/types.d.ts +3 -1
  239. package/lib/popover/PopoverText.d.ts +2 -0
  240. package/lib/popover/PopoverTitle.d.ts +2 -0
  241. package/lib/popover/index.d.ts +2 -0
  242. package/lib/popover/index.js +1 -2
  243. package/lib/popover/popover.spec.js +146 -0
  244. package/lib/popover/types.d.ts +3 -1
  245. package/lib/progress/progress.spec.js +94 -0
  246. package/lib/radio/index.d.ts +2 -1
  247. package/lib/radio/index.js +5 -1
  248. package/lib/radio/radio.spec.js +189 -0
  249. package/lib/radio/types.d.ts +4 -1
  250. package/lib/spinner/spinner.spec.js +152 -0
  251. package/lib/split/split.spec.js +163 -0
  252. package/lib/table/Body.js +9 -12
  253. package/lib/table/Header.js +19 -16
  254. package/lib/table/Row.js +20 -3
  255. package/lib/table/index.js +1 -0
  256. package/lib/table/table.spec.js +352 -0
  257. package/lib/table/types.d.ts +7 -0
  258. package/lib/tabs/DropdownItems.d.ts +2 -0
  259. package/lib/tabs/Menu.d.ts +2 -0
  260. package/lib/tabs/MenuItems.d.ts +2 -0
  261. package/lib/tabs/Panel.d.ts +2 -0
  262. package/lib/tabs/index.d.ts +2 -0
  263. package/lib/tabs/tabHelpers.d.ts +2 -0
  264. package/lib/tabs/tabs.spec.js +321 -0
  265. package/lib/tabs/types.d.ts +3 -1
  266. package/lib/toolbar/ButtonBar.d.ts +2 -0
  267. package/lib/toolbar/LabelBar.d.ts +2 -0
  268. package/lib/toolbar/ToolBarGroup.d.ts +2 -0
  269. package/lib/toolbar/helpers.d.ts +2 -0
  270. package/lib/toolbar/index.d.ts +2 -0
  271. package/lib/toolbar/toolbar.spec.js +394 -0
  272. package/lib/toolbar/types.d.ts +4 -2
  273. package/lib/tooltip/index.d.ts +1 -1
  274. package/lib/tooltip/index.js +5 -1
  275. package/lib/tooltip/tooltip.spec.js +215 -0
  276. package/lib/tooltip/types.d.ts +1 -0
  277. package/lib/treeview/index.js +1 -0
  278. package/lib/treeview/treeview.spec.js +279 -0
  279. package/lib/{types-90c43ae1.d.ts → types-c1e2d0c9.d.ts} +2 -1
  280. package/lib/uitour/uitour.spec.js +176 -0
  281. package/package.json +67 -64
@@ -0,0 +1,395 @@
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
+ var _storageMock = _interopRequireWildcard(require("../../../../config/jest/storageMock"));
10
+
11
+ var _simple = _interopRequireDefault(require("./simple"));
12
+
13
+ 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); }
14
+
15
+ 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; }
16
+
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+
19
+ 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); }
20
+
21
+ var SelectFieldTest = function SelectFieldTest(props) {
22
+ var dataArray = function dataArray() {
23
+ return [{
24
+ id: 9000,
25
+ name: 'C#',
26
+ iconName: 'user_group'
27
+ }, {
28
+ id: 14,
29
+ name: 'Java',
30
+ iconName: 'folder_close'
31
+ }, {
32
+ id: 3,
33
+ name: 'Erlang',
34
+ iconName: 'calendar'
35
+ }, {
36
+ id: 13,
37
+ name: 'Pascal',
38
+ iconName: 'config'
39
+ }];
40
+ };
41
+
42
+ return /*#__PURE__*/_react.default.createElement(_simple.default, _extends({}, props, {
43
+ dataSource: dataArray(),
44
+ idKey: "id",
45
+ descriptionKey: "name",
46
+ id: "testId",
47
+ value: 14,
48
+ label: "testLabel",
49
+ placeHolder: "testPlaceHolder",
50
+ maxLength: 5,
51
+ multiple: true,
52
+ hint: "testHint",
53
+ errorMessages: ['error1, error2'],
54
+ textAlign: "left",
55
+ dropdownMaxHeight: 100,
56
+ name: "test"
57
+ }));
58
+ };
59
+
60
+ describe('Select', function () {
61
+ describe('Permission', function () {
62
+ var defineStorage = function defineStorage() {
63
+ Object.defineProperty(window, 'sessionStorage', {
64
+ value: (0, _storageMock.default)()
65
+ });
66
+ };
67
+
68
+ it('should check permission', function () {
69
+ defineStorage();
70
+
71
+ var _render = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_simple.default, {
72
+ idKey: "id",
73
+ descriptionKey: "name",
74
+ permissionAttr: (0, _storageMock.permissionAttrMockAuthorized)('disabled')
75
+ })),
76
+ container = _render.container;
77
+
78
+ expect(container.firstChild).not.toHaveClass('-disabled');
79
+ expect(container.firstChild).toBeTruthy();
80
+ });
81
+ it('should check permission, be unavaible and onDenied is disabled', function () {
82
+ defineStorage();
83
+ var mockOnClick = jest.fn();
84
+
85
+ var mockButton = /*#__PURE__*/_react.default.createElement(_simple.default, {
86
+ idKey: "id",
87
+ descriptionKey: "name",
88
+ onClick: mockOnClick,
89
+ permissionAttr: (0, _storageMock.permissionAttrMockUnauthorized)('disabled')
90
+ });
91
+
92
+ var _render2 = (0, _react2.render)(mockButton),
93
+ container = _render2.container;
94
+
95
+ _react2.fireEvent.click(container.querySelector('input'));
96
+
97
+ expect(container.querySelector('input')).toBeDisabled();
98
+ expect(mockOnClick).toBeCalledTimes(0);
99
+ });
100
+ it('should check permission, be unavaible and onDenied is unvisible', function () {
101
+ defineStorage();
102
+
103
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_simple.default, {
104
+ idKey: "id",
105
+ descriptionKey: "name",
106
+ permissionAttr: (0, _storageMock.permissionAttrMockUnauthorized)('unvisible')
107
+ })),
108
+ container = _render3.container;
109
+
110
+ expect(container.querySelector('input')).not.toBeTruthy();
111
+ });
112
+ });
113
+ describe('Default', function () {
114
+ it('should render without errors', function () {
115
+ var _render4 = (0, _react2.render)(SelectFieldTest()),
116
+ container = _render4.container;
117
+
118
+ expect(container.firstChild).toBeTruthy();
119
+ });
120
+ it('should idKey', function () {
121
+ var _render5 = (0, _react2.render)(SelectFieldTest()),
122
+ container = _render5.container;
123
+
124
+ expect(container.querySelector('input').id).toBe('testId');
125
+ });
126
+ it('should value', function () {
127
+ var _render6 = (0, _react2.render)(SelectFieldTest()),
128
+ container = _render6.container;
129
+
130
+ expect(container.querySelector('input').value).toBe('Java');
131
+ });
132
+ it('should multiple', function () {
133
+ var _render7 = (0, _react2.render)(SelectFieldTest()),
134
+ container = _render7.container,
135
+ getByTestId = _render7.getByTestId;
136
+
137
+ var inputContent = container.querySelector('input');
138
+
139
+ _react2.fireEvent.change(inputContent, {
140
+ target: {
141
+ value: [14, 13, 3]
142
+ }
143
+ });
144
+
145
+ expect(getByTestId('testInputContent')).toHaveClass('multiselect');
146
+ expect(getByTestId('testInputContent').querySelectorAll('.item').length >= 1);
147
+ });
148
+ it('should hint', function () {
149
+ var _render8 = (0, _react2.render)(SelectFieldTest()),
150
+ container = _render8.container;
151
+
152
+ expect(container.querySelector('p')).toHaveTextContent('testHint');
153
+ });
154
+ it('should undigitable', function () {
155
+ var _render9 = (0, _react2.render)(SelectFieldTest({
156
+ undigitable: true
157
+ })),
158
+ getByTestId = _render9.getByTestId;
159
+
160
+ expect(getByTestId('testInputWrapper')).toHaveClass('-undigitable');
161
+ });
162
+ it('should label text match with prop label', function () {
163
+ var _render10 = (0, _react2.render)(SelectFieldTest()),
164
+ container = _render10.container;
165
+
166
+ expect(container.querySelector('.select-component')).toHaveTextContent('testLabel');
167
+ });
168
+ it('should readOnly', function () {
169
+ var _render11 = (0, _react2.render)(SelectFieldTest({
170
+ readOnly: true
171
+ })),
172
+ container = _render11.container;
173
+
174
+ expect(container.querySelector('input').readOnly).toEqual(true);
175
+ });
176
+ it('should apply placeHolder', function () {
177
+ var _render12 = (0, _react2.render)(SelectFieldTest()),
178
+ container = _render12.container;
179
+
180
+ expect(container.querySelector('input').placeholder).toBe('testPlaceHolder');
181
+ });
182
+ it('should maxLength', function () {
183
+ var _render13 = (0, _react2.render)(SelectFieldTest()),
184
+ container = _render13.container;
185
+
186
+ expect(container.querySelector('input').maxLength).toBe(5);
187
+ });
188
+ it('should name', function () {
189
+ var _render14 = (0, _react2.render)(SelectFieldTest()),
190
+ container = _render14.container;
191
+
192
+ expect(container.querySelector('input').name).toBe('test');
193
+ });
194
+ it('should textAlign', function () {
195
+ var _render15 = (0, _react2.render)(SelectFieldTest()),
196
+ container = _render15.container;
197
+
198
+ expect(container.querySelector('input')).toHaveClass('text-align-left');
199
+ });
200
+ it('should rounded', function () {
201
+ var _render16 = (0, _react2.render)(SelectFieldTest({
202
+ rounded: true
203
+ })),
204
+ getByTestId = _render16.getByTestId;
205
+
206
+ expect(getByTestId('testInputWrapper')).toHaveClass('-roundedborders');
207
+ });
208
+ it('should id', function () {
209
+ var _render17 = (0, _react2.render)(SelectFieldTest()),
210
+ container = _render17.container;
211
+
212
+ expect(container.querySelector('input').id).toBe('testId');
213
+ });
214
+ it('should required', function () {
215
+ var _render18 = (0, _react2.render)(SelectFieldTest({
216
+ required: true
217
+ })),
218
+ container = _render18.container;
219
+
220
+ expect(container.querySelector('.labelcontainer span span')).toHaveClass('-requiredlabel');
221
+ });
222
+ it('should errorMessages', function () {
223
+ var _render19 = (0, _react2.render)(SelectFieldTest()),
224
+ getByTestId = _render19.getByTestId;
225
+
226
+ expect(getByTestId('testInputWrapper')).toHaveClass('-requirederror');
227
+ });
228
+ it('should searchOnDropdown', function () {
229
+ var _render20 = (0, _react2.render)(SelectFieldTest({
230
+ searchOnDropdown: true
231
+ })),
232
+ getByTestId = _render20.getByTestId;
233
+
234
+ expect(getByTestId('testInputWrapper')).toHaveClass('-undigitable');
235
+ });
236
+ it('should gridLayout', function () {
237
+ var _render21 = (0, _react2.render)(SelectFieldTest({
238
+ gridLayout: '6 6 6 6'
239
+ })),
240
+ container = _render21.container;
241
+
242
+ expect(container.querySelector('div')).toHaveClass('grid-container col-xs-6 col-sm-6 col-md-6 col-lg-6');
243
+ });
244
+ it('should showClearButton', function () {
245
+ var _render22 = (0, _react2.render)(SelectFieldTest({
246
+ showClearButton: true
247
+ })),
248
+ container = _render22.container;
249
+
250
+ expect(container.querySelector('svg')).toHaveClass('icon-component iconclear');
251
+ });
252
+ it('should autoFocus', function () {
253
+ var _render23 = (0, _react2.render)(SelectFieldTest({
254
+ autoFocus: true
255
+ })),
256
+ container = _render23.container;
257
+
258
+ expect(container.querySelector('input').focus).toBeTruthy();
259
+ });
260
+ it('should apply disabled', function () {
261
+ var _render24 = (0, _react2.render)(SelectFieldTest({
262
+ disabled: true
263
+ })),
264
+ container = _render24.container;
265
+
266
+ expect(container.querySelector('input')).toBeDisabled();
267
+ });
268
+ it('should apply onChange', function () {
269
+ var onChange = jest.fn();
270
+
271
+ var _render25 = (0, _react2.render)(SelectFieldTest({
272
+ onChange: onChange
273
+ })),
274
+ container = _render25.container;
275
+
276
+ var inputContent = container.querySelector('input');
277
+
278
+ _react2.fireEvent.change(inputContent, {
279
+ target: {
280
+ value: 14
281
+ }
282
+ });
283
+
284
+ expect(onChange).toBeCalled();
285
+ });
286
+ it('should apply onBlur', function () {
287
+ var onBlur = jest.fn();
288
+
289
+ var _render26 = (0, _react2.render)(SelectFieldTest({
290
+ onBlur: onBlur
291
+ })),
292
+ container = _render26.container;
293
+
294
+ var inputContent = container.querySelector('input');
295
+
296
+ _react2.fireEvent.blur(inputContent);
297
+
298
+ expect(onBlur).toBeCalled();
299
+ });
300
+ it('should remoteSearch', function () {
301
+ var MockOnSearch = jest.fn();
302
+
303
+ var _render27 = (0, _react2.render)(SelectFieldTest({
304
+ remoteSearch: true,
305
+ onSearch: MockOnSearch
306
+ })),
307
+ container = _render27.container;
308
+
309
+ var inputContent = container.querySelector('input');
310
+
311
+ _react2.fireEvent.change(inputContent, {
312
+ target: {
313
+ value: 'test'
314
+ }
315
+ });
316
+
317
+ expect(MockOnSearch).toHaveBeenCalled();
318
+ });
319
+ it('should apply onSearch', function () {
320
+ var onSearch = jest.fn();
321
+
322
+ var _render28 = (0, _react2.render)(SelectFieldTest({
323
+ remoteSearch: true,
324
+ onSearch: onSearch
325
+ })),
326
+ container = _render28.container;
327
+
328
+ var inputContent = container.querySelector('input');
329
+
330
+ _react2.fireEvent.change(inputContent, {
331
+ target: {
332
+ value: 'C#'
333
+ }
334
+ });
335
+
336
+ expect(onSearch).toBeCalled();
337
+ });
338
+ it('should descriptionKey', function () {
339
+ var _render29 = (0, _react2.render)(SelectFieldTest()),
340
+ container = _render29.container;
341
+
342
+ var inputContent = container.querySelector('input');
343
+
344
+ _react2.fireEvent.change(inputContent, {
345
+ target: {
346
+ value: 'test'
347
+ }
348
+ });
349
+
350
+ var dropdownItem = document.querySelectorAll('.select-dropdown .item')[0];
351
+ expect(dropdownItem).toHaveTextContent('C#');
352
+ });
353
+ it('should selectFirstOnEnter', function () {
354
+ var _render30 = (0, _react2.render)(SelectFieldTest({
355
+ selectFirstOnEnter: true
356
+ })),
357
+ container = _render30.container;
358
+
359
+ var inputContent = container.querySelector('input');
360
+
361
+ _react2.fireEvent.change(inputContent, {
362
+ target: {
363
+ value: ''
364
+ }
365
+ });
366
+
367
+ var dropdown = document.querySelector('.select-dropdown');
368
+ expect(dropdown.firstChild).toHaveClass('-selected');
369
+ });
370
+ it('should openDropdownOnFocus', function () {
371
+ var _render31 = (0, _react2.render)(SelectFieldTest({
372
+ openDropdownOnFocus: false
373
+ })),
374
+ container = _render31.container;
375
+
376
+ container.querySelector('input').focus();
377
+ expect(container.querySelector('.dropdown')).not.toBeTruthy();
378
+ });
379
+ it('should dataSource', function () {
380
+ var _render32 = (0, _react2.render)(SelectFieldTest()),
381
+ container = _render32.container;
382
+
383
+ var inputContent = container.querySelector('input');
384
+
385
+ _react2.fireEvent.change(inputContent, {
386
+ target: {
387
+ value: 'test'
388
+ }
389
+ });
390
+
391
+ var dropdown = document.querySelector('.select-dropdown');
392
+ expect(dropdown.firstChild !== dropdown.lastChild);
393
+ });
394
+ });
395
+ });
@@ -1,4 +1,5 @@
1
1
  import { ISimpleSelectProps } from '../types.js';
2
+ import '../../../@types/Align.js';
2
3
  import '../../../@types/DataCombo.js';
3
4
  import '../../../@types/PermissionAttr.js';
4
5
  import '../../base/types.js';
@@ -55,12 +55,13 @@ var SimpleSelect = function SimpleSelect(props) {
55
55
  searchOnDropdown = _props$searchOnDropdo === void 0 ? false : _props$searchOnDropdo,
56
56
  _props$allOptions = props.allOptions,
57
57
  allOptions = _props$allOptions === void 0 ? undefined : _props$allOptions;
58
- var dataSourceWithAllOptions = allOptions ? [(_ref = {}, _defineProperty(_ref, idKey, allOptions.idValue), _defineProperty(_ref, descriptionKey, allOptions.label), _ref)].concat(_toConsumableArray(dataSource)) : dataSource;
58
+ var descriptionKeyIsString = typeof descriptionKey === 'string';
59
+ var dataSourceWithAllOptions = allOptions ? [(_ref = {}, _defineProperty(_ref, idKey, allOptions.idValue), _defineProperty(_ref, descriptionKeyIsString ? descriptionKey : descriptionKey(allOptions.label), allOptions.label), _ref)].concat(_toConsumableArray(dataSource)) : dataSource;
59
60
  var _useState = (0, _react.useState)(dataSourceWithAllOptions),
60
61
  _useState2 = _slicedToArray(_useState, 2),
61
62
  dataCombo = _useState2[0],
62
63
  setDataCombo = _useState2[1];
63
- var _useState3 = (0, _react.useState)(),
64
+ var _useState3 = (0, _react.useState)(null),
64
65
  _useState4 = _slicedToArray(_useState3, 2),
65
66
  selected = _useState4[0],
66
67
  setSelected = _useState4[1];
@@ -88,15 +89,16 @@ var SimpleSelect = function SimpleSelect(props) {
88
89
  _useState16 = _slicedToArray(_useState15, 2),
89
90
  isTyping = _useState16[0],
90
91
  setIsTyping = _useState16[1];
91
- var _useState17 = (0, _react.useState)(''),
92
- _useState18 = _slicedToArray(_useState17, 2),
93
- valueFromProps = _useState18[0],
94
- setValueFromProps = _useState18[1];
95
92
  var dropdownRef = (0, _react.useRef)(null);
96
93
  var componentId = "select-component".concat(_uuid.default.v1());
97
94
  var componentRef = (0, _react.useRef)(null);
98
95
  var selectWrapper = (0, _react.useRef)();
99
96
  var gridElement = (0, _react.useRef)();
97
+ var clearSelected = function clearSelected() {
98
+ setInputText('');
99
+ setSelected(null);
100
+ setDataCombo(dataSourceWithAllOptions);
101
+ };
100
102
  var onScreenResize = function onScreenResize() {
101
103
  if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);
102
104
  };
@@ -128,7 +130,7 @@ var SimpleSelect = function SimpleSelect(props) {
128
130
  }
129
131
  };
130
132
  var onFilter = function onFilter(valueFilter) {
131
- var selectedFilter;
133
+ var selectedFilter = null;
132
134
  if (remoteSearch) {
133
135
  if (onSearch) onSearch(valueFilter);
134
136
  } else {
@@ -137,19 +139,25 @@ var SimpleSelect = function SimpleSelect(props) {
137
139
  descriptionKey: descriptionKey,
138
140
  dataSource: dataSourceWithAllOptions
139
141
  });
140
- if (dataComboFilter && dataComboFilter.length > 0) selectedFilter = dataComboFilter[0];
142
+ if (dataComboFilter && dataComboFilter.length > 0) {
143
+ selectedFilter = dataComboFilter[0];
144
+ }
141
145
  setDataCombo(dataComboFilter);
142
146
  }
143
- onChange(selectedFilter);
144
147
  setOpened(true);
145
148
  setInputText(valueFilter);
146
149
  setSelected(selectedFilter);
150
+ if (selectedFilter) {
151
+ if (descriptionKeyIsString && valueFilter === selectedFilter[descriptionKey] || !descriptionKeyIsString && valueFilter === descriptionKey(selectedFilter)) {
152
+ onChange(selectedFilter);
153
+ }
154
+ }
147
155
  };
148
156
  var onSelect = function onSelect(selectedDropdown) {
149
157
  if (selectedDropdown === undefined) return;
150
158
  setOpened(false);
151
159
  setSelected(selectedDropdown);
152
- setInputText(selectedDropdown[descriptionKey]);
160
+ if (descriptionKeyIsString) setInputText(selectedDropdown[descriptionKey]);else setInputText(descriptionKey(selectedDropdown));
153
161
  onChange(selectedDropdown);
154
162
  };
155
163
  var onOpenClose = function onOpenClose() {
@@ -167,6 +175,11 @@ var SimpleSelect = function SimpleSelect(props) {
167
175
  if (props.onBlur) {
168
176
  var event = getSelectEvent(selected);
169
177
  props.onBlur(event);
178
+ if (selected) {
179
+ if (descriptionKeyIsString && inputText !== selected[descriptionKey] || !descriptionKeyIsString && inputText !== descriptionKey(selected)) {
180
+ clearSelected();
181
+ }
182
+ }
170
183
  }
171
184
  if (!insideComponent) {
172
185
  setOpened(false);
@@ -181,15 +194,15 @@ var SimpleSelect = function SimpleSelect(props) {
181
194
  onSelect(selected);
182
195
  } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
183
196
  if (!opened) setOpened(true);
184
- var index = dataSourceWithAllOptions.length > 0 ? dataSourceWithAllOptions.findIndex(function (d) {
197
+ var index = dataCombo.length > 0 ? dataCombo.findIndex(function (d) {
185
198
  return selected && d[idKey] === selected[idKey];
186
199
  }) : 0;
187
200
  if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
188
- index = dataSourceWithAllOptions && index === dataSourceWithAllOptions.length - 1 ? 0 : index + 1;
201
+ index = dataCombo && index === dataCombo.length - 1 ? 0 : index + 1;
189
202
  } else {
190
- index = dataSourceWithAllOptions && index === 0 ? (dataSourceWithAllOptions === null || dataSourceWithAllOptions === void 0 ? void 0 : dataSourceWithAllOptions.length) - 1 : index - 1;
203
+ index = dataCombo && index === 0 ? (dataCombo === null || dataCombo === void 0 ? void 0 : dataCombo.length) - 1 : index - 1;
191
204
  }
192
- setSelected(dataSourceWithAllOptions[index]);
205
+ setSelected(dataCombo[index]);
193
206
  }
194
207
  }
195
208
  if (!isTyping) setIsTyping(true);
@@ -224,18 +237,18 @@ var SimpleSelect = function SimpleSelect(props) {
224
237
  }
225
238
  }, [gridLayout]);
226
239
  (0, _react.useEffect)(function () {
227
- if (value !== valueFromProps && dataSourceWithAllOptions.length > 0) {
240
+ if (dataSourceWithAllOptions.length > 0) {
228
241
  var newCurrent = null;
229
- if (value) {
242
+ if (value || value === 0) {
230
243
  newCurrent = dataSourceWithAllOptions.find(function (i) {
231
244
  var _i$idKey;
232
- return value && ((_i$idKey = i[idKey]) === null || _i$idKey === void 0 ? void 0 : _i$idKey.toString().toLowerCase()) === (value === null || value === void 0 ? void 0 : value.toString().toLowerCase());
245
+ return (value || value === 0) && ((_i$idKey = i[idKey]) === null || _i$idKey === void 0 ? void 0 : _i$idKey.toString().toLowerCase()) === (value === null || value === void 0 ? void 0 : value.toString().toLowerCase());
233
246
  });
234
- setValueFromProps(value);
235
247
  } else if (dataSourceWithAllOptions.length > 0 && selectFirstOnEnter) {
236
248
  newCurrent = dataSourceWithAllOptions[0];
237
249
  }
238
250
  setSelected(newCurrent);
251
+ if (descriptionKeyIsString) setInputText(newCurrent ? newCurrent[descriptionKey] : '');else setInputText(newCurrent ? descriptionKey(newCurrent) : '');
239
252
  }
240
253
  }, [dataSourceWithAllOptions.length, value]);
241
254
  (0, _react.useEffect)(function () {
@@ -251,6 +264,10 @@ var SimpleSelect = function SimpleSelect(props) {
251
264
  setSelected(data);
252
265
  }
253
266
  }
267
+ if (allOptions) {
268
+ var _ref2;
269
+ setDataCombo([(_ref2 = {}, _defineProperty(_ref2, idKey, allOptions.idValue), _defineProperty(_ref2, descriptionKeyIsString ? descriptionKey : descriptionKey(allOptions.label), allOptions.label), _ref2)].concat(_toConsumableArray(dataSource)));
270
+ }
254
271
  }, [JSON.stringify(dataSourceWithAllOptions)]);
255
272
  return /*#__PURE__*/_react.default.createElement("span", {
256
273
  id: componentId,
@@ -1,3 +1,4 @@
1
+ import { TextAlign } from '../../@types/Align.js';
1
2
  import { DataCombo } from '../../@types/DataCombo.js';
2
3
  import { PermissionAttr } from '../../@types/PermissionAttr.js';
3
4
  import { CustomInputEvent } from '../base/types.js';
@@ -8,16 +9,17 @@ type AllOptions = {
8
9
  idValue?: number | null;
9
10
  label: string;
10
11
  };
12
+ type DescriptionKey = string | ((dataSelected: DataCombo) => string);
11
13
  interface ISimpleSelectProps {
12
14
  idKey: string;
13
- descriptionKey: string;
15
+ descriptionKey: DescriptionKey;
14
16
  dataSource?: DataCombo[];
15
17
  id?: string;
16
18
  label?: string;
17
19
  placeHolder?: string;
18
20
  hint?: string;
19
21
  value?: string | number | boolean | number[];
20
- textAlign?: string;
22
+ textAlign?: TextAlign;
21
23
  errorMessages?: string[];
22
24
  showClearButton?: boolean;
23
25
  searchOnDropdown?: boolean;
@@ -46,12 +48,13 @@ interface ISimpleSelectProps {
46
48
  onFocus?: () => void;
47
49
  allOptions?: AllOptions;
48
50
  }
49
- interface ISelectFieldProps extends Omit<ISimpleSelectProps, 'idKey' | 'descriptionKey'> {
51
+ interface ISelectFieldProps extends Omit<ISimpleSelectProps, 'idKey' | 'value' | 'descriptionKey'> {
50
52
  multiple?: boolean;
51
53
  gridLayout?: string;
52
- descriptionKey?: string;
54
+ descriptionKey?: DescriptionKey;
53
55
  idKey?: string;
54
56
  dataSource?: DataCombo[];
57
+ value?: number | number[] | string | string[];
55
58
  showClearButton?: boolean;
56
59
  searchOnDropdown?: boolean;
57
60
  searchNotFoundText?: string;
@@ -66,9 +69,10 @@ interface ISelectFieldProps extends Omit<ISimpleSelectProps, 'idKey' | 'descript
66
69
  autoFocus?: boolean;
67
70
  disabled?: boolean;
68
71
  required?: boolean;
72
+ onSelect?: (data?: string | string[]) => DataCombo;
69
73
  }
70
74
  interface IMultipleSelectProps extends Omit<ISimpleSelectProps, 'idKey' | 'value' | 'descriptionKey'> {
71
- descriptionKey: string;
75
+ descriptionKey: DescriptionKey;
72
76
  idKey: string;
73
77
  dataSource: DataCombo[];
74
78
  searchNotFoundText?: string;
@@ -86,9 +90,20 @@ interface IMultipleSelectProps extends Omit<ISimpleSelectProps, 'idKey' | 'value
86
90
  }
87
91
  interface ISelectedsMultipleProps {
88
92
  idKey: string;
89
- descriptionKey: string;
93
+ descriptionKey: DescriptionKey;
90
94
  currents: DataCombo[];
91
95
  handleOnUnselect: (id: string) => void;
92
96
  }
97
+ interface GetFilteredParams {
98
+ dataSource: DataCombo[];
99
+ descriptionKey: DescriptionKey;
100
+ currents: DataCombo[];
101
+ }
102
+ interface GetSimpleFilteredParams extends GetFilteredParams {
103
+ inputText: number | string;
104
+ }
105
+ interface GetMultipleFilteredParams extends GetFilteredParams {
106
+ inputText: number[] | string[];
107
+ }
93
108
 
94
- export { AllOptions, IMultipleSelectProps, ISelectFieldProps, ISelectedsMultipleProps, ISimpleSelectProps };
109
+ export { AllOptions, DescriptionKey, GetFilteredParams, GetMultipleFilteredParams, GetSimpleFilteredParams, IMultipleSelectProps, ISelectFieldProps, ISelectedsMultipleProps, ISimpleSelectProps };
@@ -3,6 +3,7 @@ import '../../@types/Period.js';
3
3
  import '../../@types/PermissionAttr.js';
4
4
  import '../base/types.js';
5
5
  import 'react';
6
+ import '../../@types/Align.js';
6
7
  import '../../internals/types.js';
7
8
  import '../../@types/Position.js';
8
9