linear-react-components-ui 1.1.13 → 1.1.14-beta.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 (368) hide show
  1. package/.eslintrc.json +77 -45
  2. package/.gitlab-ci.yml +5 -13
  3. package/.tool-versions +1 -0
  4. package/.vscode/settings.json +3 -12
  5. package/babel.config.json +4 -4
  6. package/lib/@types/SizePixels.d.ts +1 -1
  7. package/lib/alerts/AlertContainer.js +56 -47
  8. package/lib/alerts/AlertProvider.js +51 -33
  9. package/lib/alerts/BaseAlert.js +18 -11
  10. package/lib/alerts/Message.d.ts +1 -1
  11. package/lib/alerts/Message.js +44 -77
  12. package/lib/alerts/helpers.js +3 -2
  13. package/lib/alerts/index.js +3 -2
  14. package/lib/alerts/types.d.ts +0 -1
  15. package/lib/alerts/withAlert.js +9 -8
  16. package/lib/assets/styles/alerts.scss +7 -4
  17. package/lib/assets/styles/button.scss +9 -11
  18. package/lib/assets/styles/checkbox.scss +38 -45
  19. package/lib/assets/styles/colors.scss +1 -3
  20. package/lib/assets/styles/commons.scss +0 -1
  21. package/lib/assets/styles/dialog.scss +20 -37
  22. package/lib/assets/styles/drawers.scss +6 -9
  23. package/lib/assets/styles/fieldset.scss +0 -3
  24. package/lib/assets/styles/gridlayout.scss +2 -0
  25. package/lib/assets/styles/hint.scss +0 -21
  26. package/lib/assets/styles/icon.scss +4 -31
  27. package/lib/assets/styles/input.scss +7 -7
  28. package/lib/assets/styles/multiSelect.scss +1 -6
  29. package/lib/assets/styles/radio.scss +35 -37
  30. package/lib/assets/styles/select.scss +7 -13
  31. package/lib/assets/styles/table.scss +1 -9
  32. package/lib/assets/styles/tabs.scss +18 -28
  33. package/lib/avatar/index.js +39 -39
  34. package/lib/badge/index.js +13 -11
  35. package/lib/buttons/ActivateButton.js +7 -4
  36. package/lib/buttons/AddButton.js +10 -7
  37. package/lib/buttons/Button.js +9 -8
  38. package/lib/buttons/ButtonGroups.js +4 -5
  39. package/lib/buttons/CancelButton.js +5 -6
  40. package/lib/buttons/DangerButton.js +5 -6
  41. package/lib/buttons/DefaultButton.js +85 -85
  42. package/lib/buttons/DestroyButton.js +5 -6
  43. package/lib/buttons/EditButton.js +7 -4
  44. package/lib/buttons/InactivateButton.js +7 -4
  45. package/lib/buttons/InfoButton.js +5 -6
  46. package/lib/buttons/PrimaryButton.js +5 -6
  47. package/lib/buttons/RestoreButton.js +7 -4
  48. package/lib/buttons/SaveButton.js +5 -6
  49. package/lib/buttons/SuccessButton.js +5 -6
  50. package/lib/buttons/WarningButton.js +5 -6
  51. package/lib/buttons/button_container/index.js +19 -15
  52. package/lib/buttons/index.js +16 -15
  53. package/lib/buttons/split_button/index.js +23 -20
  54. package/lib/buttons/types.d.ts +0 -1
  55. package/lib/calendar/DangerCalendar.js +5 -6
  56. package/lib/calendar/InfoCalendar.js +5 -6
  57. package/lib/calendar/PrimaryCalendar.js +5 -6
  58. package/lib/calendar/SuccessCalendar.js +5 -6
  59. package/lib/calendar/WarningCalendar.js +5 -6
  60. package/lib/calendar/base/Day.js +11 -12
  61. package/lib/calendar/base/Month.js +17 -12
  62. package/lib/calendar/base/Week.js +17 -12
  63. package/lib/calendar/base/helpers.js +11 -11
  64. package/lib/calendar/base/index.js +43 -29
  65. package/lib/calendar/index.js +7 -6
  66. package/lib/checkbox/Label.js +9 -19
  67. package/lib/checkbox/index.d.ts +2 -2
  68. package/lib/checkbox/index.js +95 -81
  69. package/lib/checkbox/types.d.ts +1 -2
  70. package/lib/dialog/Alert.js +4 -3
  71. package/lib/dialog/Custom.js +16 -14
  72. package/lib/dialog/Error.js +4 -3
  73. package/lib/dialog/Information.js +4 -3
  74. package/lib/dialog/Question.js +12 -11
  75. package/lib/dialog/Warning.js +5 -5
  76. package/lib/dialog/base/Content.js +5 -7
  77. package/lib/dialog/base/Footer.js +7 -4
  78. package/lib/dialog/base/Header.js +28 -28
  79. package/lib/dialog/base/index.d.ts +2 -8
  80. package/lib/dialog/base/index.js +104 -108
  81. package/lib/dialog/base/style.js +10 -7
  82. package/lib/dialog/form/index.js +35 -36
  83. package/lib/dialog/index.js +8 -7
  84. package/lib/dialog/types.d.ts +13 -8
  85. package/lib/drawer/Content.js +10 -11
  86. package/lib/drawer/Drawer.js +83 -69
  87. package/lib/drawer/Header.js +36 -33
  88. package/lib/drawer/helpers.js +3 -2
  89. package/lib/drawer/index.js +4 -3
  90. package/lib/dropdown/Popup.d.ts +1 -1
  91. package/lib/dropdown/Popup.js +39 -38
  92. package/lib/dropdown/helper.js +5 -3
  93. package/lib/dropdown/types.d.ts +0 -1
  94. package/lib/dropdown/withDropdown.js +58 -37
  95. package/lib/fieldset/index.js +56 -50
  96. package/lib/fieldset/types.d.ts +0 -2
  97. package/lib/form/Field.d.ts +0 -2
  98. package/lib/form/Field.js +74 -68
  99. package/lib/form/FieldArray.d.ts +0 -2
  100. package/lib/form/FieldArray.js +90 -66
  101. package/lib/form/FieldNumber.d.ts +0 -2
  102. package/lib/form/FieldNumber.js +53 -33
  103. package/lib/form/FieldPeriod.d.ts +0 -2
  104. package/lib/form/FieldPeriod.js +52 -46
  105. package/lib/form/helpers.d.ts +0 -2
  106. package/lib/form/helpers.js +26 -21
  107. package/lib/form/index.d.ts +0 -2
  108. package/lib/form/index.js +143 -111
  109. package/lib/form/types.d.ts +4 -7
  110. package/lib/form/withFieldHOC.d.ts +0 -2
  111. package/lib/form/withFieldHOC.js +38 -31
  112. package/lib/form/withFormSecurity.d.ts +0 -2
  113. package/lib/form/withFormSecurity.js +34 -26
  114. package/lib/gridlayout/GridCol.js +13 -13
  115. package/lib/gridlayout/GridRow.js +11 -17
  116. package/lib/gridlayout/index.js +3 -2
  117. package/lib/gridlayout/types.d.ts +1 -1
  118. package/lib/hint/index.d.ts +1 -2
  119. package/lib/hint/index.js +28 -17
  120. package/lib/hint/types.d.ts +0 -3
  121. package/lib/icons/helper.d.ts +0 -4
  122. package/lib/icons/helper.js +4 -7
  123. package/lib/icons/index.d.ts +2 -3
  124. package/lib/icons/index.js +47 -42
  125. package/lib/icons/types.d.ts +9 -22
  126. package/lib/index.d.ts +1 -2
  127. package/lib/index.js +9 -9
  128. package/lib/inputs/base/InputTextBase.d.ts +0 -2
  129. package/lib/inputs/base/InputTextBase.js +111 -143
  130. package/lib/inputs/base/helpers.d.ts +2 -3
  131. package/lib/inputs/base/helpers.js +25 -20
  132. package/lib/inputs/base/types.d.ts +3 -17
  133. package/lib/inputs/color/index.js +38 -27
  134. package/lib/inputs/date/Dialog.d.ts +0 -2
  135. package/lib/inputs/date/Dialog.js +9 -8
  136. package/lib/inputs/date/Dropdown.d.ts +0 -2
  137. package/lib/inputs/date/Dropdown.js +10 -11
  138. package/lib/inputs/date/helpers.d.ts +0 -2
  139. package/lib/inputs/date/helpers.js +13 -13
  140. package/lib/inputs/date/index.d.ts +0 -2
  141. package/lib/inputs/date/index.js +150 -125
  142. package/lib/inputs/date/types.d.ts +1 -4
  143. package/lib/inputs/file/DefaultFile.d.ts +0 -2
  144. package/lib/inputs/file/DefaultFile.js +72 -45
  145. package/lib/inputs/file/DragDropFile.d.ts +0 -2
  146. package/lib/inputs/file/DragDropFile.js +147 -95
  147. package/lib/inputs/file/File.d.ts +1 -3
  148. package/lib/inputs/file/File.js +28 -22
  149. package/lib/inputs/file/FileButtonSettings.d.ts +0 -2
  150. package/lib/inputs/file/FileButtonSettings.js +12 -12
  151. package/lib/inputs/file/helpers.d.ts +0 -2
  152. package/lib/inputs/file/helpers.js +6 -4
  153. package/lib/inputs/file/index.d.ts +0 -2
  154. package/lib/inputs/file/index.js +4 -3
  155. package/lib/inputs/file/types.d.ts +0 -2
  156. package/lib/inputs/inputHOC.d.ts +1 -2
  157. package/lib/inputs/inputHOC.js +32 -19
  158. package/lib/inputs/mask/BaseMask.d.ts +5 -4
  159. package/lib/inputs/mask/BaseMask.js +34 -121
  160. package/lib/inputs/mask/Cnpj.d.ts +0 -2
  161. package/lib/inputs/mask/Cnpj.js +29 -16
  162. package/lib/inputs/mask/Cpf.d.ts +0 -2
  163. package/lib/inputs/mask/Cpf.js +35 -18
  164. package/lib/inputs/mask/Phone.d.ts +0 -2
  165. package/lib/inputs/mask/Phone.js +4 -5
  166. package/lib/inputs/mask/ZipCode.d.ts +0 -2
  167. package/lib/inputs/mask/ZipCode.js +7 -4
  168. package/lib/inputs/mask/helpers.d.ts +12 -53
  169. package/lib/inputs/mask/helpers.js +36 -90
  170. package/lib/inputs/{errorMessage/index.d.ts → mask/imaskHOC.d.ts} +7 -5
  171. package/lib/inputs/mask/imaskHOC.js +224 -0
  172. package/lib/inputs/mask/index.d.ts +2 -4
  173. package/lib/inputs/mask/index.js +6 -5
  174. package/lib/inputs/mask/types.d.ts +18 -22
  175. package/lib/inputs/multiSelect/ActionButtons.d.ts +0 -2
  176. package/lib/inputs/multiSelect/ActionButtons.js +21 -22
  177. package/lib/inputs/multiSelect/Dropdown.d.ts +0 -2
  178. package/lib/inputs/multiSelect/Dropdown.js +65 -48
  179. package/lib/inputs/multiSelect/helper.d.ts +0 -2
  180. package/lib/inputs/multiSelect/helper.js +7 -8
  181. package/lib/inputs/multiSelect/index.d.ts +0 -2
  182. package/lib/inputs/multiSelect/index.js +132 -80
  183. package/lib/inputs/multiSelect/types.d.ts +0 -2
  184. package/lib/inputs/number/BaseNumber.d.ts +2 -3
  185. package/lib/inputs/number/BaseNumber.js +21 -22
  186. package/lib/inputs/number/Currency.d.ts +2 -3
  187. package/lib/inputs/number/Currency.js +6 -6
  188. package/lib/inputs/number/Decimal.d.ts +2 -3
  189. package/lib/inputs/number/Decimal.js +5 -2
  190. package/lib/inputs/number/format_number.js +5 -5
  191. package/lib/inputs/number/index.d.ts +2 -3
  192. package/lib/inputs/number/index.js +49 -18
  193. package/lib/inputs/number/types.d.ts +14 -15
  194. package/lib/inputs/period/Dialog.d.ts +1 -3
  195. package/lib/inputs/period/Dialog.js +9 -8
  196. package/lib/inputs/period/Dropdown.d.ts +0 -2
  197. package/lib/inputs/period/Dropdown.js +8 -7
  198. package/lib/inputs/period/PeriodList.d.ts +0 -2
  199. package/lib/inputs/period/PeriodList.js +12 -13
  200. package/lib/inputs/period/helper.d.ts +0 -2
  201. package/lib/inputs/period/helper.js +36 -33
  202. package/lib/inputs/period/index.d.ts +0 -2
  203. package/lib/inputs/period/index.js +194 -160
  204. package/lib/inputs/period/types.d.ts +1 -3
  205. package/lib/inputs/search/index.d.ts +1 -2
  206. package/lib/inputs/search/index.js +63 -40
  207. package/lib/inputs/select/ActionButtons.d.ts +1 -2
  208. package/lib/inputs/select/ActionButtons.js +34 -24
  209. package/lib/inputs/select/Dropdown.d.ts +1 -2
  210. package/lib/inputs/select/Dropdown.js +58 -39
  211. package/lib/inputs/select/helper.d.ts +1 -2
  212. package/lib/inputs/select/helper.js +43 -49
  213. package/lib/inputs/select/index.d.ts +0 -2
  214. package/lib/inputs/select/index.js +8 -9
  215. package/lib/inputs/select/multiple/Selecteds.d.ts +1 -3
  216. package/lib/inputs/select/multiple/Selecteds.js +21 -16
  217. package/lib/inputs/select/multiple/index.d.ts +0 -2
  218. package/lib/inputs/select/multiple/index.js +176 -128
  219. package/lib/inputs/select/simple/index.d.ts +0 -2
  220. package/lib/inputs/select/simple/index.js +179 -151
  221. package/lib/inputs/select/types.d.ts +2 -5
  222. package/lib/inputs/text/index.js +5 -2
  223. package/lib/inputs/textarea/index.d.ts +0 -2
  224. package/lib/inputs/textarea/index.js +9 -9
  225. package/lib/inputs/textarea/types.d.ts +0 -2
  226. package/lib/inputs/types.d.ts +7 -12
  227. package/lib/internals/colorStyles.js +3 -2
  228. package/lib/internals/constants.js +4 -2
  229. package/lib/internals/types.d.ts +2 -5
  230. package/lib/internals/withTooltip.d.ts +2 -3
  231. package/lib/internals/withTooltip.js +74 -74
  232. package/lib/labelMessages/index.js +41 -21
  233. package/lib/labels/DangerLabel.js +5 -6
  234. package/lib/labels/DefaultLabel.js +39 -25
  235. package/lib/labels/InfoLabel.js +5 -6
  236. package/lib/labels/PrimaryLabel.js +5 -6
  237. package/lib/labels/SuccessLabel.js +5 -6
  238. package/lib/labels/WarningLabel.js +5 -6
  239. package/lib/labels/index.js +8 -7
  240. package/lib/labels/label_container/index.js +7 -7
  241. package/lib/list/Header.js +7 -8
  242. package/lib/list/Item.js +68 -72
  243. package/lib/list/Separator.js +7 -4
  244. package/lib/list/helpers.js +5 -3
  245. package/lib/list/index.js +100 -73
  246. package/lib/menus/float/MenuItem.js +19 -18
  247. package/lib/menus/float/SubMenuContainer.js +32 -26
  248. package/lib/menus/float/helpers.js +3 -2
  249. package/lib/menus/float/index.js +17 -16
  250. package/lib/menus/float/types.d.ts +1 -1
  251. package/lib/menus/index.js +2 -1
  252. package/lib/menus/sidenav/ExpandMenu.js +7 -8
  253. package/lib/menus/sidenav/MenuLink.js +8 -9
  254. package/lib/menus/sidenav/NavMenuGroup.js +11 -12
  255. package/lib/menus/sidenav/NavMenuItem.js +60 -46
  256. package/lib/menus/sidenav/NavSubMenuItem.js +24 -19
  257. package/lib/menus/sidenav/helpers.js +8 -5
  258. package/lib/menus/sidenav/index.js +111 -83
  259. package/lib/menus/sidenav/popup_menu_search/EmptyList.js +6 -6
  260. package/lib/menus/sidenav/popup_menu_search/index.js +83 -63
  261. package/lib/menus/sidenav/types.d.ts +1 -1
  262. package/lib/noPermission/index.js +16 -13
  263. package/lib/panel/Content.d.ts +1 -1
  264. package/lib/panel/Content.js +56 -43
  265. package/lib/panel/DangerPanel.d.ts +1 -1
  266. package/lib/panel/DangerPanel.js +7 -4
  267. package/lib/panel/Default.d.ts +1 -1
  268. package/lib/panel/Default.js +56 -41
  269. package/lib/panel/Header.d.ts +1 -1
  270. package/lib/panel/Header.js +26 -28
  271. package/lib/panel/InfoPanel.d.ts +1 -1
  272. package/lib/panel/InfoPanel.js +7 -4
  273. package/lib/panel/PrimaryPanel.d.ts +1 -1
  274. package/lib/panel/PrimaryPanel.js +7 -4
  275. package/lib/panel/SuccessPanel.d.ts +1 -1
  276. package/lib/panel/SuccessPanel.js +7 -4
  277. package/lib/panel/ToolBar.d.ts +1 -1
  278. package/lib/panel/ToolBar.js +4 -5
  279. package/lib/panel/WarningPanel.d.ts +1 -1
  280. package/lib/panel/WarningPanel.js +7 -4
  281. package/lib/panel/helpers.d.ts +2 -7
  282. package/lib/panel/helpers.js +23 -11
  283. package/lib/panel/index.d.ts +1 -1
  284. package/lib/panel/index.js +9 -8
  285. package/lib/panel/types.d.ts +5 -46
  286. package/lib/permissionValidations.js +29 -24
  287. package/lib/popover/PopoverText.js +4 -5
  288. package/lib/popover/PopoverTitle.js +4 -5
  289. package/lib/popover/index.js +18 -14
  290. package/lib/progress/Bar.js +36 -30
  291. package/lib/progress/index.js +18 -16
  292. package/lib/radio/index.js +55 -34
  293. package/lib/shortcuts/index.js +8 -9
  294. package/lib/skeleton/SkeletonContainer.js +10 -9
  295. package/lib/skeleton/index.js +32 -25
  296. package/lib/spinner/SpinnerLoading.js +7 -6
  297. package/lib/spinner/index.js +36 -22
  298. package/lib/split/Split.js +110 -93
  299. package/lib/split/SplitSide.js +18 -19
  300. package/lib/split/helpers.js +3 -2
  301. package/lib/split/index.js +3 -2
  302. package/lib/table/Body.js +44 -41
  303. package/lib/table/Header.js +31 -28
  304. package/lib/table/HeaderColumn.d.ts +1 -1
  305. package/lib/table/HeaderColumn.js +21 -34
  306. package/lib/table/Row.js +47 -44
  307. package/lib/table/RowColumn.js +37 -36
  308. package/lib/table/helpers.js +12 -6
  309. package/lib/table/index.js +98 -78
  310. package/lib/table/types.d.ts +0 -3
  311. package/lib/tabs/{MenuTabs.d.ts → DropdownItems.d.ts} +3 -3
  312. package/lib/tabs/DropdownItems.js +65 -0
  313. package/lib/tabs/Menu.d.ts +1 -1
  314. package/lib/tabs/Menu.js +20 -32
  315. package/lib/tabs/MenuItems.d.ts +11 -0
  316. package/lib/tabs/MenuItems.js +76 -0
  317. package/lib/tabs/Panel.d.ts +1 -1
  318. package/lib/tabs/Panel.js +65 -69
  319. package/lib/tabs/index.d.ts +1 -1
  320. package/lib/tabs/index.js +221 -42
  321. package/lib/tabs/tabHelpers.d.ts +15 -4
  322. package/lib/tabs/tabHelpers.js +41 -36
  323. package/lib/tabs/types.d.ts +15 -48
  324. package/lib/toolbar/ButtonBar.js +39 -35
  325. package/lib/toolbar/LabelBar.js +36 -32
  326. package/lib/toolbar/Separator.js +7 -4
  327. package/lib/toolbar/ToolBarGroup.js +6 -6
  328. package/lib/toolbar/helpers.js +3 -2
  329. package/lib/toolbar/index.js +21 -19
  330. package/lib/toolbar/types.d.ts +0 -1
  331. package/lib/tooltip/index.js +32 -27
  332. package/lib/treetable/Body.js +32 -20
  333. package/lib/treetable/Header.js +14 -11
  334. package/lib/treetable/Row.js +137 -85
  335. package/lib/treetable/helpers.js +24 -15
  336. package/lib/treetable/index.js +10 -8
  337. package/lib/treeview/Header.js +6 -7
  338. package/lib/treeview/Node.js +132 -92
  339. package/lib/treeview/constants.js +2 -1
  340. package/lib/treeview/index.js +214 -148
  341. package/lib/treeview_old/Header.js +28 -0
  342. package/lib/treeview_old/Node.js +88 -0
  343. package/lib/treeview_old/index.js +42 -0
  344. package/lib/types-c2a0f035.d.ts +50 -0
  345. package/lib/uitour/helpers.js +7 -4
  346. package/lib/uitour/index.d.ts +1 -2
  347. package/lib/uitour/index.js +99 -112
  348. package/lib/uitour/types.d.ts +1 -9
  349. package/package.json +82 -77
  350. package/tsconfig.json +0 -1
  351. package/.eslintcache +0 -1
  352. package/.nvmrc +0 -1
  353. package/lib/assets/styles/error.scss +0 -9
  354. package/lib/assets/styles/textContent.scss +0 -9
  355. package/lib/hint/helpers.d.ts +0 -3
  356. package/lib/hint/helpers.js +0 -21
  357. package/lib/inputs/base/Label.d.ts +0 -14
  358. package/lib/inputs/base/Label.js +0 -35
  359. package/lib/inputs/errorMessage/index.js +0 -26
  360. package/lib/tabs/DropdownTabs.d.ts +0 -11
  361. package/lib/tabs/DropdownTabs.js +0 -71
  362. package/lib/tabs/MenuTabs.js +0 -82
  363. package/lib/tabs/context.d.ts +0 -12
  364. package/lib/tabs/context.js +0 -130
  365. package/lib/tabs/useTabs.d.ts +0 -11
  366. package/lib/tabs/useTabs.js +0 -11
  367. package/lib/textContent/index.d.ts +0 -8
  368. package/lib/textContent/index.js +0 -30
package/lib/tabs/Panel.js CHANGED
@@ -1,86 +1,82 @@
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
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
8
  var _react = _interopRequireWildcard(require("react"));
8
- var _tabHelpers = require("./tabHelpers");
9
+ var _tabHelpers = _interopRequireWildcard(require("./tabHelpers"));
9
10
  var _permissionValidations = require("../permissionValidations");
10
11
  var _noPermission = _interopRequireDefault(require("../noPermission"));
11
- var _useTabs = require("./useTabs");
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
- const Panel = props => {
16
- const {
17
- id,
18
- children,
19
- onEndReached,
20
- permissionAttr,
21
- customClass = '',
22
- onEndReachedThreshold = 0.1,
23
- style
24
- } = props;
25
- const {
26
- selectedTabId
27
- } = (0, _useTabs.useTabs)();
28
- const hidePanel = id !== selectedTabId ? 'hidepanel' : '';
29
- const rootElementRef = (0, _react.useRef)(null);
30
- const [onDenied] = (0, _react.useState)((0, _permissionValidations.actionsOnPermissionDenied)(_tabHelpers.onDeniedOptions, permissionAttr));
31
- const {
32
- hideContent
33
- } = onDenied;
34
- const enableOnEndReached = (0, _react.useRef)(true);
35
- const lastScrollHeight = (0, _react.useRef)(0);
36
- const onScrollEndReached = (0, _react.useCallback)(async () => {
37
- const element = rootElementRef.current;
38
- if (element && onEndReached) {
39
- const {
40
- scrollTop,
41
- scrollHeight,
42
- clientHeight
43
- } = element;
44
- const scrollOffset = scrollHeight - clientHeight - scrollTop - 1;
45
- const threshold = (0, _tabHelpers.getCurrentThreshold)(element, onEndReachedThreshold);
46
- if (scrollOffset <= threshold && enableOnEndReached.current) {
47
- enableOnEndReached.current = false;
48
- await new Promise(resolve => {
49
- resolve(onEndReached());
50
- });
51
- lastScrollHeight.current = scrollHeight;
52
- }
53
- }
54
- }, [onEndReached, onEndReachedThreshold, rootElementRef.current, lastScrollHeight.current]);
55
- (0, _react.useEffect)(() => {
56
- let observer;
57
- if (rootElementRef.current && onEndReached) {
58
- observer = new ResizeObserver(() => {
59
- const {
60
- scrollHeight
61
- } = rootElementRef.current;
62
- if (scrollHeight !== lastScrollHeight.current) {
63
- var _observer;
64
- enableOnEndReached.current = true;
65
- (_observer = observer) === null || _observer === void 0 ? void 0 : _observer.disconnect();
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
+ 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; }
15
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
+ 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."); }
17
+ 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); }
18
+ 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; }
19
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
20
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
+ var observer = null;
22
+ var Panel = function Panel(_ref) {
23
+ var id = _ref.id,
24
+ children = _ref.children,
25
+ onEndReached = _ref.onEndReached,
26
+ permissionAttr = _ref.permissionAttr,
27
+ _ref$customClass = _ref.customClass,
28
+ customClass = _ref$customClass === void 0 ? '' : _ref$customClass,
29
+ _ref$onEndReachedThre = _ref.onEndReachedThreshold,
30
+ onEndReachedThreshold = _ref$onEndReachedThre === void 0 ? 0.1 : _ref$onEndReachedThre;
31
+ var _useContext = (0, _react.useContext)(_tabHelpers.default),
32
+ selectedTabId = _useContext.selectedTabId,
33
+ contentHeight = _useContext.contentHeight;
34
+ var hidePanel = id !== selectedTabId ? 'hidepanel' : '';
35
+ var style = {};
36
+ var rootElementRef = (0, _react.useRef)(null);
37
+ var observedElement = (0, _react.useRef)(null);
38
+ /* usa uma referencia ao onEndReched pra evitar novas instancias do observer */
39
+ var onEndReachedRef = (0, _react.useRef)(onEndReached);
40
+ var _useState = (0, _react.useState)((0, _permissionValidations.actionsOnPermissionDenied)(_tabHelpers.onDeniedOptions, permissionAttr)),
41
+ _useState2 = _slicedToArray(_useState, 1),
42
+ onDenied = _useState2[0];
43
+ var hideContent = onDenied.hideContent;
44
+ if (contentHeight) style.height = contentHeight;
45
+ var options = {
46
+ root: rootElementRef.current,
47
+ threshold: onEndReachedThreshold || 0
48
+ };
49
+ var scrollObserver = function scrollObserver(node) {
50
+ // evitar criação de multiplos observers
51
+ if (observer) observer.unobserve(node);
52
+ observer = new IntersectionObserver(function (entries) {
53
+ entries.forEach(function (en) {
54
+ if (en.intersectionRatio > 0) {
55
+ var _onEndReachedRef$curr;
56
+ (_onEndReachedRef$curr = onEndReachedRef.current) === null || _onEndReachedRef$curr === void 0 ? void 0 : _onEndReachedRef$curr.call(onEndReachedRef);
66
57
  }
67
- });
68
- observer.observe(rootElementRef.current);
69
- rootElementRef.current.addEventListener('scroll', onScrollEndReached);
70
- rootElementRef.current.addEventListener('resize', onScrollEndReached);
58
+ }, options);
59
+ });
60
+ observer.observe(node);
61
+ };
62
+
63
+ /* atualiza referencia caso a função mude */
64
+ (0, _react.useEffect)(function () {
65
+ onEndReachedRef.current = onEndReached;
66
+ }, [onEndReached]);
67
+ (0, _react.useEffect)(function () {
68
+ if (observedElement.current && onEndReachedRef.current) {
69
+ scrollObserver(observedElement.current);
71
70
  }
72
- return () => {
73
- var _rootElementRef$curre, _rootElementRef$curre2, _observer2;
74
- (_rootElementRef$curre = rootElementRef.current) === null || _rootElementRef$curre === void 0 ? void 0 : _rootElementRef$curre.removeEventListener('scroll', onScrollEndReached);
75
- (_rootElementRef$curre2 = rootElementRef.current) === null || _rootElementRef$curre2 === void 0 ? void 0 : _rootElementRef$curre2.removeEventListener('resize', onScrollEndReached);
76
- (_observer2 = observer) === null || _observer2 === void 0 ? void 0 : _observer2.disconnect();
77
- };
78
- }, [onScrollEndReached]);
71
+ }, [observedElement]);
79
72
  return /*#__PURE__*/_react.default.createElement("div", {
80
73
  ref: rootElementRef,
81
74
  id: id,
82
- className: "".concat(customClass, " panel ").concat(hidePanel),
75
+ className: " ".concat(customClass, " panel ").concat(hidePanel),
83
76
  style: style
84
- }, hideContent ? /*#__PURE__*/_react.default.createElement(_noPermission.default, null) : children);
77
+ }, hideContent ? /*#__PURE__*/_react.default.createElement(_noPermission.default, null) : children, !hideContent && onEndReached ? /*#__PURE__*/_react.default.createElement("div", {
78
+ ref: observedElement
79
+ }) : /*#__PURE__*/_react.default.createElement("noscript", null));
85
80
  };
86
- var _default = exports.default = Panel;
81
+ var _default = Panel;
82
+ exports.default = _default;
@@ -7,6 +7,6 @@ import '../@types/PermissionAttr.js';
7
7
  import '../@types/Icon.js';
8
8
  import '../icons/helper.js';
9
9
 
10
- declare const Tabs: ({ toolbar, toolBarRef, children, firstTabIdent, handlerTabClick, handlerCloseTab, style, tabMenuSize, tabMenuAlign, tabMenuPosition, customClassForToolBar, tabsWidth, ...props }: ITabsPros) => JSX.Element;
10
+ declare const Tabs: ({ toolbar, children, selectedTab, firstTabIdent, handlerTabClick, handlerCloseTab, style, tabMenuSize, tabMenuAlign, tabMenuPosition, customClassForToolBar, tabsWidthOnExceedCount, ...props }: ITabsPros) => JSX.Element;
11
11
 
12
12
  export { Tabs as default };
package/lib/tabs/index.js CHANGED
@@ -1,11 +1,12 @@
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
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  Object.defineProperty(exports, "TabPanel", {
7
8
  enumerable: true,
8
- get: function () {
9
+ get: function get() {
9
10
  return _Panel.default;
10
11
  }
11
12
  });
@@ -13,58 +14,236 @@ exports.default = void 0;
13
14
  var _react = _interopRequireWildcard(require("react"));
14
15
  var _Menu = _interopRequireDefault(require("./Menu"));
15
16
  var _Panel = _interopRequireDefault(require("./Panel"));
16
- var _tabHelpers = require("./tabHelpers");
17
+ var _tabHelpers = _interopRequireWildcard(require("./tabHelpers"));
17
18
  require("../assets/styles/tabs.scss");
18
- var _context = require("./context");
19
- const _excluded = ["toolbar", "toolBarRef", "children", "firstTabIdent", "handlerTabClick", "handlerCloseTab", "style", "tabMenuSize", "tabMenuAlign", "tabMenuPosition", "customClassForToolBar", "tabsWidth"];
19
+ var _excluded = ["toolbar", "children", "selectedTab", "firstTabIdent", "handlerTabClick", "handlerCloseTab", "style", "tabMenuSize", "tabMenuAlign", "tabMenuPosition", "customClassForToolBar", "tabsWidthOnExceedCount"];
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ 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); }
22
+ 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; }
23
23
  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); }
24
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
25
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
27
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
28
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
29
+ 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."); }
30
+ 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); }
31
+ 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; }
32
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
33
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
34
  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; }
25
35
  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; }
26
- const Tabs = _ref => {
27
- let {
28
- toolbar,
29
- toolBarRef,
30
- children,
31
- firstTabIdent,
32
- handlerTabClick,
33
- handlerCloseTab,
34
- style = {},
35
- tabMenuSize = 'default',
36
- tabMenuAlign = 'left',
37
- tabMenuPosition = 'top',
38
- customClassForToolBar = '',
39
- tabsWidth = 'auto'
40
- } = _ref,
36
+ var DROPDOWN_WIDTH = 26;
37
+ var Tabs = function Tabs(_ref) {
38
+ var _panels$, _panels$$props;
39
+ var toolbar = _ref.toolbar,
40
+ children = _ref.children,
41
+ selectedTab = _ref.selectedTab,
42
+ firstTabIdent = _ref.firstTabIdent,
43
+ handlerTabClick = _ref.handlerTabClick,
44
+ handlerCloseTab = _ref.handlerCloseTab,
45
+ _ref$style = _ref.style,
46
+ style = _ref$style === void 0 ? {} : _ref$style,
47
+ _ref$tabMenuSize = _ref.tabMenuSize,
48
+ tabMenuSize = _ref$tabMenuSize === void 0 ? 'default' : _ref$tabMenuSize,
49
+ _ref$tabMenuAlign = _ref.tabMenuAlign,
50
+ tabMenuAlign = _ref$tabMenuAlign === void 0 ? 'left' : _ref$tabMenuAlign,
51
+ _ref$tabMenuPosition = _ref.tabMenuPosition,
52
+ tabMenuPosition = _ref$tabMenuPosition === void 0 ? 'top' : _ref$tabMenuPosition,
53
+ _ref$customClassForTo = _ref.customClassForToolBar,
54
+ customClassForToolBar = _ref$customClassForTo === void 0 ? '' : _ref$customClassForTo,
55
+ _ref$tabsWidthOnExcee = _ref.tabsWidthOnExceedCount,
56
+ tabsWidthOnExceedCount = _ref$tabsWidthOnExcee === void 0 ? 0 : _ref$tabsWidthOnExcee,
41
57
  props = _objectWithoutProperties(_ref, _excluded);
42
- const containerRef = (0, _react.useRef)(null);
43
- const content = (0, _react.useMemo)(() => {
44
- const menu = /*#__PURE__*/_react.default.createElement(_Menu.default, {
58
+ var _useState = (0, _react.useState)((0, _tabHelpers.buildPanels)(children) || []),
59
+ _useState2 = _slicedToArray(_useState, 2),
60
+ panels = _useState2[0],
61
+ setPanels = _useState2[1];
62
+ var _useState3 = (0, _react.useState)([]),
63
+ _useState4 = _slicedToArray(_useState3, 2),
64
+ currentPanels = _useState4[0],
65
+ setCurrentPanels = _useState4[1];
66
+ var _useState5 = (0, _react.useState)([]),
67
+ _useState6 = _slicedToArray(_useState5, 2),
68
+ dropdownPanels = _useState6[0],
69
+ setDropdownPanels = _useState6[1];
70
+ var _useState7 = (0, _react.useState)(selectedTab || ((_panels$ = panels[0]) === null || _panels$ === void 0 ? void 0 : (_panels$$props = _panels$.props) === null || _panels$$props === void 0 ? void 0 : _panels$$props.id)),
71
+ _useState8 = _slicedToArray(_useState7, 2),
72
+ selectedTabId = _useState8[0],
73
+ setSelectedTabId = _useState8[1];
74
+ var _useState9 = (0, _react.useState)(''),
75
+ _useState10 = _slicedToArray(_useState9, 1),
76
+ customClass = _useState10[0];
77
+ var _useState11 = (0, _react.useState)(0),
78
+ _useState12 = _slicedToArray(_useState11, 2),
79
+ contentHeight = _useState12[0],
80
+ setContentHeight = _useState12[1];
81
+ var _useState13 = (0, _react.useState)(0),
82
+ _useState14 = _slicedToArray(_useState13, 2),
83
+ tabsContentWidth = _useState14[0],
84
+ setTabsContentWidth = _useState14[1];
85
+ var _useState15 = (0, _react.useState)(false),
86
+ _useState16 = _slicedToArray(_useState15, 2),
87
+ hasMenuAttributes = _useState16[0],
88
+ setHasMenuAttributes = _useState16[1];
89
+ var _useState17 = (0, _react.useState)('auto'),
90
+ _useState18 = _slicedToArray(_useState17, 2),
91
+ tabWidth = _useState18[0],
92
+ setTabWidth = _useState18[1];
93
+ var componentRef = (0, _react.useRef)(null);
94
+ var _menuRef = (0, _react.useRef)(null);
95
+ var _toolBarRef = (0, _react.useRef)(null);
96
+ var getTabListWidth = function getTabListWidth() {
97
+ var _menuRef$current;
98
+ var tabMenu = (_menuRef$current = _menuRef.current) === null || _menuRef$current === void 0 ? void 0 : _menuRef$current.children[0];
99
+ var tabList = Array.from(tabMenu === null || tabMenu === void 0 ? void 0 : tabMenu.childNodes);
100
+ var tabsListWidth = tabList.reduce(function (total, tab) {
101
+ return total + tab.clientWidth;
102
+ }, 0);
103
+ return tabsListWidth;
104
+ };
105
+ var getMenuAttributes = function getMenuAttributes() {
106
+ var _menuRef$current2;
107
+ var menuSize = (_menuRef$current2 = _menuRef.current) === null || _menuRef$current2 === void 0 ? void 0 : _menuRef$current2.clientWidth;
108
+ var toolbarSize = toolbar && _toolBarRef.current ? _toolBarRef.current.clientWidth : 0;
109
+ var contentWidth = menuSize ? (toolbar ? menuSize - toolbarSize : menuSize) - DROPDOWN_WIDTH : 0;
110
+ setTabsContentWidth(contentWidth);
111
+ };
112
+ var getTabsList = function getTabsList() {
113
+ var tabsListWidth = getTabListWidth();
114
+ var newDropdownPanels = _toConsumableArray(dropdownPanels);
115
+ var newCurrentPanels = _toConsumableArray(panels);
116
+ if (newDropdownPanels.length) {
117
+ var newDropdownPanelsIds = newDropdownPanels.map(function (dd) {
118
+ var _dd$props;
119
+ return dd === null || dd === void 0 ? void 0 : (_dd$props = dd.props) === null || _dd$props === void 0 ? void 0 : _dd$props.id;
120
+ });
121
+ newCurrentPanels = newCurrentPanels.filter(function (tab) {
122
+ return !newDropdownPanelsIds.includes(tab === null || tab === void 0 ? void 0 : tab.props.id);
123
+ });
124
+ }
125
+ if (tabsListWidth > tabsContentWidth) {
126
+ var lastPanel = newCurrentPanels[newCurrentPanels.length - 1];
127
+ newDropdownPanels.push(lastPanel);
128
+ newCurrentPanels.pop();
129
+ if (tabsWidthOnExceedCount) setTabWidth(tabsWidthOnExceedCount);
130
+ } else if (tabsListWidth + (tabsWidthOnExceedCount || 110) < tabsContentWidth && newDropdownPanels.length) {
131
+ newCurrentPanels.push(newDropdownPanels[0]);
132
+ newDropdownPanels.shift();
133
+ }
134
+ setCurrentPanels(newCurrentPanels);
135
+ setDropdownPanels(newDropdownPanels);
136
+ };
137
+ var onMenuClick = function onMenuClick(tabId) {
138
+ var includedInDropdown = dropdownPanels.filter(function (item) {
139
+ var _item$props;
140
+ return (item === null || item === void 0 ? void 0 : (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.id) === tabId;
141
+ });
142
+ if (includedInDropdown.length > 0 && getTabListWidth() > 0) {
143
+ var newDropdownPanels = dropdownPanels.filter(function (item) {
144
+ var _item$props2;
145
+ return (item === null || item === void 0 ? void 0 : (_item$props2 = item.props) === null || _item$props2 === void 0 ? void 0 : _item$props2.id) !== tabId;
146
+ });
147
+ var newPanels = panels.filter(function (item) {
148
+ return (item === null || item === void 0 ? void 0 : item.props.id) !== tabId;
149
+ });
150
+ var newCurrentPanels = currentPanels.slice(0, -1);
151
+ newDropdownPanels.push(currentPanels.pop());
152
+ newPanels.unshift(includedInDropdown[0]);
153
+ newCurrentPanels.unshift(includedInDropdown[0]);
154
+ setPanels(newPanels);
155
+ setDropdownPanels(newDropdownPanels);
156
+ setCurrentPanels(newCurrentPanels);
157
+ }
158
+ if (handlerTabClick) handlerTabClick(tabId);
159
+ setSelectedTabId(tabId);
160
+ };
161
+ var onRemovePanel = function onRemovePanel(closedPanelId) {
162
+ var panelIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
163
+ var fromDropdownPanels = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
164
+ var newSelectedTabId = selectedTabId;
165
+ var remainPanels;
166
+ if (!fromDropdownPanels) {
167
+ var _remainPanels;
168
+ remainPanels = panels.filter(function (panel) {
169
+ return (panel === null || panel === void 0 ? void 0 : panel.props.id) !== closedPanelId;
170
+ });
171
+ newSelectedTabId = selectedTabId === closedPanelId ? (_remainPanels = remainPanels[panelIndex - (panelIndex === 0 ? 0 : 1)]) === null || _remainPanels === void 0 ? void 0 : _remainPanels.props.id : selectedTabId;
172
+ setSelectedTabId(newSelectedTabId);
173
+ } else {
174
+ remainPanels = dropdownPanels.filter(function (panel) {
175
+ var _panel$props;
176
+ return (panel === null || panel === void 0 ? void 0 : (_panel$props = panel.props) === null || _panel$props === void 0 ? void 0 : _panel$props.id) !== closedPanelId;
177
+ });
178
+ setDropdownPanels(remainPanels);
179
+ }
180
+ if (handlerCloseTab && newSelectedTabId) handlerCloseTab(closedPanelId, newSelectedTabId);
181
+ };
182
+ var onResize = function onResize() {
183
+ if (componentRef.current && _menuRef.current) {
184
+ setContentHeight(componentRef.current.offsetHeight - _menuRef.current.offsetHeight);
185
+ if (!hasMenuAttributes && _menuRef.current && _menuRef.current.clientWidth > 0) {
186
+ getMenuAttributes();
187
+ setHasMenuAttributes(true);
188
+ }
189
+ }
190
+ };
191
+ var renderContent = function renderContent() {
192
+ var menu = /*#__PURE__*/_react.default.createElement(_Menu.default, _extends({}, props, {
45
193
  toolbar: toolbar,
46
- tabWidth: tabsWidth,
47
- customClassForToolBar: customClassForToolBar,
194
+ tabWidth: tabWidth,
195
+ customClass: customClass,
48
196
  tabMenuSize: tabMenuSize,
197
+ handlerClick: onMenuClick,
49
198
  tabMenuAlign: tabMenuAlign,
50
- firstTabIdent: firstTabIdent
51
- });
199
+ firstTabIdent: firstTabIdent,
200
+ currentPanels: currentPanels,
201
+ selectedTabId: selectedTabId,
202
+ dropdownPanels: dropdownPanels,
203
+ handlerRemovePanel: onRemovePanel,
204
+ customClassForToolBar: customClassForToolBar,
205
+ menuRef: function menuRef(ref) {
206
+ _menuRef.current = ref;
207
+ },
208
+ toolBarRef: function toolBarRef(ref) {
209
+ _toolBarRef.current = ref;
210
+ }
211
+ }));
212
+ /*
213
+ Change the order of elements depending of menus position
214
+ */
52
215
  if (tabMenuPosition === 'top' || tabMenuPosition === 'left') {
53
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, menu, children);
216
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, menu, panels);
54
217
  }
55
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, children, menu);
56
- }, [children, tabMenuPosition]);
57
- return /*#__PURE__*/_react.default.createElement(_context.TabsProvider, _extends({
58
- tabs: children,
59
- container: containerRef,
60
- onTabChange: handlerTabClick,
61
- onTabClose: handlerCloseTab,
62
- tabsWidth: tabsWidth,
63
- firstTabIdent: firstTabIdent
64
- }, props), /*#__PURE__*/_react.default.createElement("div", {
65
- ref: containerRef,
218
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, panels, menu);
219
+ };
220
+ (0, _react.useEffect)(function () {
221
+ onResize();
222
+ window.addEventListener('resize', onResize);
223
+ return function () {
224
+ return window.removeEventListener('resize', onResize);
225
+ };
226
+ }, [_menuRef.current, tabMenuPosition]);
227
+ (0, _react.useEffect)(function () {
228
+ if (selectedTab) setSelectedTabId(selectedTab);
229
+ if (children) setPanels((0, _tabHelpers.buildPanels)(children));
230
+ }, [selectedTab, children]);
231
+ (0, _react.useEffect)(function () {
232
+ getTabsList();
233
+ }, [panels.length, currentPanels.length, tabsContentWidth]);
234
+ var contextValues = {
235
+ selectedTabId: selectedTabId,
236
+ contentHeight: contentHeight
237
+ };
238
+ return /*#__PURE__*/_react.default.createElement(_tabHelpers.default.Provider, {
239
+ value: contextValues
240
+ }, /*#__PURE__*/_react.default.createElement("div", {
241
+ ref: function ref(_ref2) {
242
+ componentRef.current = _ref2;
243
+ },
66
244
  className: (0, _tabHelpers.tabsClass)(tabMenuPosition),
67
245
  style: style
68
- }, content));
246
+ }, renderContent()));
69
247
  };
70
- var _default = exports.default = Tabs;
248
+ var _default = Tabs;
249
+ exports.default = _default;
@@ -1,12 +1,23 @@
1
- import React__default from 'react';
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
2
3
  import { Position } from '../@types/Position.js';
4
+ import { PanelTypeAndProps, TabsContextValues } from './types.js';
5
+ import '../@types/Size.js';
6
+ import '../@types/PermissionAttr.js';
7
+ import '../@types/Icon.js';
8
+ import '../icons/helper.js';
3
9
 
4
- declare function getCurrentThreshold(scrollableElement: HTMLDivElement, scrollThreshold: number): number;
5
- declare const getTabs: (tabsProp: React__default.ReactNode) => any[];
10
+ /**
11
+ * Recursive funcion to get the panels passed as children elements to the Tabs Component.
12
+ * Sometimes, when tabs were added dynamically, the children can came as array or Panels.
13
+ */
14
+ declare function buildPanels(children: ReactNode | ReactNode, panels?: Array<ReactNode>): PanelTypeAndProps[];
6
15
  declare function tabsClass(tabMenuPosition: Exclude<Position, 'center'>): string;
7
16
  declare function menuStyles(tabMenuAlign: Position): {
8
17
  justifyContent: string;
9
18
  };
19
+ declare function numberAroundZeroAndOne(props: Array<object>, propName: number, componentName: string): Error | null;
10
20
  declare const onDeniedOptions: string[];
21
+ declare const TabContext: React.Context<TabsContextValues>;
11
22
 
12
- export { getCurrentThreshold, getTabs, menuStyles, onDeniedOptions, tabsClass };
23
+ export { buildPanels, TabContext as default, menuStyles, numberAroundZeroAndOne, onDeniedOptions, tabsClass };
@@ -3,56 +3,48 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getCurrentThreshold = getCurrentThreshold;
7
- exports.getTabs = void 0;
6
+ exports.buildPanels = buildPanels;
7
+ exports.default = void 0;
8
8
  exports.menuStyles = menuStyles;
9
+ exports.numberAroundZeroAndOne = numberAroundZeroAndOne;
9
10
  exports.onDeniedOptions = void 0;
10
11
  exports.tabsClass = tabsClass;
11
- var _react = _interopRequireDefault(require("react"));
12
+ var _react = require("react");
13
+ var _Panel = _interopRequireDefault(require("./Panel"));
12
14
  var _permissionValidations = require("../permissionValidations");
13
- const _excluded = ["children"];
14
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- 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; }
16
- 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; }
17
- function getCurrentThreshold(scrollableElement, scrollThreshold) {
18
- const MIN_THRESHOLD = 0;
19
- const MAX_THRESHOLD = 1;
20
- if (scrollThreshold < MIN_THRESHOLD) return MIN_THRESHOLD;
21
- if (scrollThreshold > MAX_THRESHOLD) return MAX_THRESHOLD;
22
- const {
23
- scrollHeight,
24
- clientHeight
25
- } = scrollableElement;
26
- const offsetHeight = scrollHeight - clientHeight;
27
- const calculatedScrollThreshold = Math.round(scrollHeight * scrollThreshold);
28
- const maxScrollThreshold = Math.round(offsetHeight - offsetHeight * 0.3);
29
- return Math.min(calculatedScrollThreshold, maxScrollThreshold);
16
+ /**
17
+ * Recursive funcion to get the panels passed as children elements to the Tabs Component.
18
+ * Sometimes, when tabs were added dynamically, the children can came as array or Panels.
19
+ */
20
+
21
+ function buildPanels(children) {
22
+ var panels = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
23
+ if (!Array.isArray(children)) return new Array(children);
24
+ children.forEach(function (child) {
25
+ if (child.type === _Panel.default) {
26
+ var _child$props;
27
+ if (!((_child$props = child.props) !== null && _child$props !== void 0 && _child$props.hidden)) {
28
+ panels.push(child);
29
+ }
30
+ } else if (Array.isArray(child)) {
31
+ buildPanels(child, panels);
32
+ }
33
+ });
34
+ return panels;
30
35
  }
31
- const getTabs = tabsProp => {
32
- const tabs = _react.default.Children.map(tabsProp, child => {
33
- if (!child || ! /*#__PURE__*/_react.default.isValidElement(child)) return null;
34
- const _child$props = child.props,
35
- {
36
- children: childrenProp
37
- } = _child$props,
38
- props = _objectWithoutProperties(_child$props, _excluded);
39
- return props;
40
- }) || [];
41
- return tabs.filter(tab => !tab.hidden);
42
- };
43
36
 
44
37
  /**
45
38
  * Get the css class according to the options passed to the Tabs Component
46
39
  */
47
- exports.getTabs = getTabs;
48
- const positionsMenuClass = {
40
+ var positionsMenuClass = {
49
41
  top: '',
50
42
  left: 'menu-left',
51
43
  bottom: 'menu-bottom',
52
44
  right: 'menu-right'
53
45
  };
54
46
  function tabsClass(tabMenuPosition) {
55
- let cssClass = 'tabs-component ';
47
+ var cssClass = 'tabs-component ';
56
48
  cssClass += positionsMenuClass[tabMenuPosition];
57
49
  return cssClass;
58
50
  }
@@ -60,7 +52,7 @@ function tabsClass(tabMenuPosition) {
60
52
  /**
61
53
  * Menu Styles for tab menus
62
54
  */
63
- const flextJustifyContent = {
55
+ var flextJustifyContent = {
64
56
  left: 'flex-start',
65
57
  top: 'flex-start',
66
58
  right: 'flex-end',
@@ -72,4 +64,17 @@ function menuStyles(tabMenuAlign) {
72
64
  justifyContent: flextJustifyContent[tabMenuAlign]
73
65
  };
74
66
  }
75
- const onDeniedOptions = exports.onDeniedOptions = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible, _permissionValidations.OPTIONS_ON_DENIED.hideContent];
67
+ function numberAroundZeroAndOne(props, propName, componentName) {
68
+ if (props[propName]) {
69
+ var value = props[propName];
70
+ if (typeof value === 'number') {
71
+ return value >= 0 && value <= 1 ? null : new Error("invalid value of ".concat(propName, " in ").concat(componentName, " component, is not between 0 and 1"));
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ var onDeniedOptions = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible, _permissionValidations.OPTIONS_ON_DENIED.hideContent];
77
+ exports.onDeniedOptions = onDeniedOptions;
78
+ var TabContext = /*#__PURE__*/(0, _react.createContext)({});
79
+ var _default = TabContext;
80
+ exports.default = _default;