@onewelcome/react-lib-components 9.8.0 → 9.8.1

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 (198) hide show
  1. package/dist/cjs/Breadcrumbs/Breadcrumbs.module.scss.cjs.js +1 -1
  2. package/dist/cjs/Button/BaseButton.module.scss.cjs.js +1 -1
  3. package/dist/cjs/Button/Button.module.scss.cjs.js +1 -1
  4. package/dist/cjs/Button/IconButton.module.scss.cjs.js +1 -1
  5. package/dist/cjs/ContextMenu/ContextMenu.module.scss.cjs.js +1 -1
  6. package/dist/cjs/ContextMenu/ContextMenuItem.module.scss.cjs.js +1 -1
  7. package/dist/cjs/DataGrid/DataGrid.module.scss.cjs.js +1 -1
  8. package/dist/cjs/DataGrid/DataGridActions/DataGridActions.module.scss.cjs.js +1 -1
  9. package/dist/cjs/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss.cjs.js +1 -1
  10. package/dist/cjs/DataGrid/DataGridBody/DataGridBody.module.scss.cjs.js +1 -1
  11. package/dist/cjs/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss.cjs.js +1 -1
  12. package/dist/cjs/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss.cjs.js +1 -1
  13. package/dist/cjs/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss.cjs.js +1 -1
  14. package/dist/cjs/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss.cjs.js +1 -1
  15. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilter.module.scss.cjs.js +1 -1
  16. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterPopover.cjs.js +1 -1
  17. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterPopover.cjs.js.map +1 -1
  18. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.module.scss.cjs.js +1 -1
  19. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.cjs.js +1 -1
  20. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeader.module.scss.cjs.js +1 -1
  21. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.cjs.js +1 -1
  22. package/dist/cjs/DatePicker/DatePicker.module.scss.cjs.js +1 -1
  23. package/dist/cjs/Form/Checkbox/Checkbox.module.scss.cjs.js +1 -1
  24. package/dist/cjs/Form/Fieldset/Fieldset.module.scss.cjs.js +1 -1
  25. package/dist/cjs/Form/FileUpload/FileItem/FileItem.module.scss.cjs.js +1 -1
  26. package/dist/cjs/Form/FileUpload/FileUpload.module.scss.cjs.js +1 -1
  27. package/dist/cjs/Form/Form.module.scss.cjs.js +1 -1
  28. package/dist/cjs/Form/FormControl/FormControl.module.scss.cjs.js +1 -1
  29. package/dist/cjs/Form/FormErrorText/FormErrorText.module.scss.cjs.js +1 -1
  30. package/dist/cjs/Form/FormGroup/FormGroup.module.scss.cjs.js +1 -1
  31. package/dist/cjs/Form/FormHelperText/FormHelperText.module.scss.cjs.js +1 -1
  32. package/dist/cjs/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss.cjs.js +1 -1
  33. package/dist/cjs/Form/Input/Input.module.scss.cjs.js +1 -1
  34. package/dist/cjs/Form/Label/Label.module.scss.cjs.js +1 -1
  35. package/dist/cjs/Form/Radio/Radio.module.scss.cjs.js +1 -1
  36. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.module.scss.cjs.js +1 -1
  37. package/dist/cjs/Form/Select/MultiSelect/SelectButton.module.scss.cjs.js +1 -1
  38. package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.module.scss.cjs.js +1 -1
  39. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js +1 -1
  40. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js.map +1 -1
  41. package/dist/cjs/Form/Select/SingleSelect/Select.module.scss.cjs.js +1 -1
  42. package/dist/cjs/Form/Select/useAddNewBtn.module.scss.cjs.js +1 -1
  43. package/dist/cjs/Form/Textarea/Textarea.module.scss.cjs.js +1 -1
  44. package/dist/cjs/Form/Toggle/Toggle.module.scss.cjs.js +1 -1
  45. package/dist/cjs/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss.cjs.js +1 -1
  46. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.module.scss.cjs.js +1 -1
  47. package/dist/cjs/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss.cjs.js +1 -1
  48. package/dist/cjs/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss.cjs.js +1 -1
  49. package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss.cjs.js +1 -1
  50. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.cjs.js +1 -1
  51. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.module.scss.cjs.js +1 -1
  52. package/dist/cjs/Icon/Icon.module.scss.cjs.js +1 -1
  53. package/dist/cjs/Layout/Card/Card.module.scss.cjs.js +1 -1
  54. package/dist/cjs/Layout/ContentHeader/ContentHeader.module.scss.cjs.js +1 -1
  55. package/dist/cjs/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss.cjs.js +1 -1
  56. package/dist/cjs/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss.cjs.js +1 -1
  57. package/dist/cjs/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss.cjs.js +1 -1
  58. package/dist/cjs/Link/Link.module.scss.cjs.js +1 -1
  59. package/dist/cjs/Notifications/Alert/AlertContainer/AlertContainer.module.scss.cjs.js +1 -1
  60. package/dist/cjs/Notifications/Alert/AlertItem/AlertItem.module.scss.cjs.js +1 -1
  61. package/dist/cjs/Notifications/Banner/Banner.module.scss.cjs.js +1 -1
  62. package/dist/cjs/Notifications/BaseModal/BaseModal.module.scss.cjs.js +1 -1
  63. package/dist/cjs/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss.cjs.js +1 -1
  64. package/dist/cjs/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss.cjs.js +1 -1
  65. package/dist/cjs/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss.cjs.js +1 -1
  66. package/dist/cjs/Notifications/Dialog/Dialog.module.scss.cjs.js +1 -1
  67. package/dist/cjs/Notifications/Dialog/DialogActions/DialogActions.module.scss.cjs.js +1 -1
  68. package/dist/cjs/Notifications/Dialog/DialogTitle/DialogTitle.module.scss.cjs.js +1 -1
  69. package/dist/cjs/Notifications/SideSheet/SideSheet.module.scss.cjs.js +1 -1
  70. package/dist/cjs/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss.cjs.js +1 -1
  71. package/dist/cjs/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss.cjs.js +1 -1
  72. package/dist/cjs/Notifications/SlideInModal/SlideInModal.module.scss.cjs.js +1 -1
  73. package/dist/cjs/Pagination/Pagination.module.scss.cjs.js +1 -1
  74. package/dist/cjs/Popover/Popover.module.scss.cjs.js +1 -1
  75. package/dist/cjs/ProgressBar/ProgressBar.module.scss.cjs.js +1 -1
  76. package/dist/cjs/Skeleton/Skeleton.module.scss.cjs.js +1 -1
  77. package/dist/cjs/Spinner/Spinner.module.scss.cjs.js +1 -1
  78. package/dist/cjs/Stepper/Step.module.scss.cjs.js +1 -1
  79. package/dist/cjs/Stepper/Stepper.module.scss.cjs.js +1 -1
  80. package/dist/cjs/Tabs/Tab.module.scss.cjs.js +1 -1
  81. package/dist/cjs/Tabs/TabButton.module.scss.cjs.js +1 -1
  82. package/dist/cjs/Tabs/Tabs.cjs.js +1 -1
  83. package/dist/cjs/Tabs/Tabs.cjs.js.map +1 -1
  84. package/dist/cjs/Tabs/Tabs.module.scss.cjs.js +1 -1
  85. package/dist/cjs/Tag/RemoveButton.module.scss.cjs.js +1 -1
  86. package/dist/cjs/Tag/Tag.module.scss.cjs.js +1 -1
  87. package/dist/cjs/TextEllipsis/TextEllipsis.module.scss.cjs.js +1 -1
  88. package/dist/cjs/Tiles/Tile.module.scss.cjs.js +1 -1
  89. package/dist/cjs/Tiles/Tiles.module.scss.cjs.js +1 -1
  90. package/dist/cjs/Tooltip/Tooltip.module.scss.cjs.js +1 -1
  91. package/dist/cjs/Typography/Typography.module.scss.cjs.js +1 -1
  92. package/dist/cjs/admin/layout/LeftNav/LeftNav.module.scss.cjs.js +1 -1
  93. package/dist/cjs/admin/layout/LeftNav/LeftNavItem/LeftNavItem.module.scss.cjs.js +1 -1
  94. package/dist/cjs/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss.cjs.js +1 -1
  95. package/dist/cjs/miscellaneous/IdentityProviderButton.module.scss.cjs.js +1 -1
  96. package/dist/cjs/src/components/Tabs/Tabs.d.ts +1 -0
  97. package/dist/cjs/src/readyclasses.module.scss.cjs.js +1 -1
  98. package/dist/esm/Breadcrumbs/Breadcrumbs.module.scss.esm.js +2 -2
  99. package/dist/esm/Button/BaseButton.module.scss.esm.js +2 -2
  100. package/dist/esm/Button/Button.module.scss.esm.js +2 -2
  101. package/dist/esm/Button/IconButton.module.scss.esm.js +2 -2
  102. package/dist/esm/ContextMenu/ContextMenu.module.scss.esm.js +2 -2
  103. package/dist/esm/ContextMenu/ContextMenuItem.module.scss.esm.js +2 -2
  104. package/dist/esm/DataGrid/DataGrid.module.scss.esm.js +2 -2
  105. package/dist/esm/DataGrid/DataGridActions/DataGridActions.module.scss.esm.js +2 -2
  106. package/dist/esm/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss.esm.js +2 -2
  107. package/dist/esm/DataGrid/DataGridBody/DataGridBody.module.scss.esm.js +2 -2
  108. package/dist/esm/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss.esm.js +2 -2
  109. package/dist/esm/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss.esm.js +2 -2
  110. package/dist/esm/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss.esm.js +2 -2
  111. package/dist/esm/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss.esm.js +2 -2
  112. package/dist/esm/DataGrid/DataGridFilters/DataGridFilter.module.scss.esm.js +2 -2
  113. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterPopover.esm.js +2 -8
  114. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterPopover.esm.js.map +1 -1
  115. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.module.scss.esm.js +2 -2
  116. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.esm.js +2 -2
  117. package/dist/esm/DataGrid/DataGridHeader/DataGridHeader.module.scss.esm.js +2 -2
  118. package/dist/esm/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.esm.js +2 -2
  119. package/dist/esm/DatePicker/DatePicker.module.scss.esm.js +2 -2
  120. package/dist/esm/Form/Checkbox/Checkbox.module.scss.esm.js +2 -2
  121. package/dist/esm/Form/Fieldset/Fieldset.module.scss.esm.js +2 -2
  122. package/dist/esm/Form/FileUpload/FileItem/FileItem.module.scss.esm.js +2 -2
  123. package/dist/esm/Form/FileUpload/FileUpload.module.scss.esm.js +2 -2
  124. package/dist/esm/Form/Form.module.scss.esm.js +2 -2
  125. package/dist/esm/Form/FormControl/FormControl.module.scss.esm.js +2 -2
  126. package/dist/esm/Form/FormErrorText/FormErrorText.module.scss.esm.js +2 -2
  127. package/dist/esm/Form/FormGroup/FormGroup.module.scss.esm.js +2 -2
  128. package/dist/esm/Form/FormHelperText/FormHelperText.module.scss.esm.js +2 -2
  129. package/dist/esm/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss.esm.js +2 -2
  130. package/dist/esm/Form/Input/Input.module.scss.esm.js +2 -2
  131. package/dist/esm/Form/Label/Label.module.scss.esm.js +2 -2
  132. package/dist/esm/Form/Radio/Radio.module.scss.esm.js +2 -2
  133. package/dist/esm/Form/Select/MultiSelect/MultiSelect.module.scss.esm.js +2 -2
  134. package/dist/esm/Form/Select/MultiSelect/SelectButton.module.scss.esm.js +2 -2
  135. package/dist/esm/Form/Select/MultiSelect/SelectedOptions.module.scss.esm.js +2 -2
  136. package/dist/esm/Form/Select/SingleSelect/Select.esm.js +1 -1
  137. package/dist/esm/Form/Select/SingleSelect/Select.esm.js.map +1 -1
  138. package/dist/esm/Form/Select/SingleSelect/Select.module.scss.esm.js +2 -2
  139. package/dist/esm/Form/Select/useAddNewBtn.module.scss.esm.js +2 -2
  140. package/dist/esm/Form/Textarea/Textarea.module.scss.esm.js +2 -2
  141. package/dist/esm/Form/Toggle/Toggle.module.scss.esm.js +2 -2
  142. package/dist/esm/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss.esm.js +2 -2
  143. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.module.scss.esm.js +2 -2
  144. package/dist/esm/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss.esm.js +2 -2
  145. package/dist/esm/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss.esm.js +2 -2
  146. package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss.esm.js +2 -2
  147. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.esm.js +2 -2
  148. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.module.scss.esm.js +2 -2
  149. package/dist/esm/Icon/Icon.module.scss.esm.js +2 -2
  150. package/dist/esm/Layout/Card/Card.module.scss.esm.js +2 -2
  151. package/dist/esm/Layout/ContentHeader/ContentHeader.module.scss.esm.js +2 -2
  152. package/dist/esm/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss.esm.js +2 -2
  153. package/dist/esm/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss.esm.js +2 -2
  154. package/dist/esm/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss.esm.js +2 -2
  155. package/dist/esm/Link/Link.module.scss.esm.js +2 -2
  156. package/dist/esm/Notifications/Alert/AlertContainer/AlertContainer.module.scss.esm.js +2 -2
  157. package/dist/esm/Notifications/Alert/AlertItem/AlertItem.module.scss.esm.js +2 -2
  158. package/dist/esm/Notifications/Banner/Banner.module.scss.esm.js +2 -2
  159. package/dist/esm/Notifications/BaseModal/BaseModal.module.scss.esm.js +2 -2
  160. package/dist/esm/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss.esm.js +2 -2
  161. package/dist/esm/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss.esm.js +2 -2
  162. package/dist/esm/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss.esm.js +2 -2
  163. package/dist/esm/Notifications/Dialog/Dialog.module.scss.esm.js +2 -2
  164. package/dist/esm/Notifications/Dialog/DialogActions/DialogActions.module.scss.esm.js +2 -2
  165. package/dist/esm/Notifications/Dialog/DialogTitle/DialogTitle.module.scss.esm.js +2 -2
  166. package/dist/esm/Notifications/SideSheet/SideSheet.module.scss.esm.js +2 -2
  167. package/dist/esm/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss.esm.js +2 -2
  168. package/dist/esm/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss.esm.js +2 -2
  169. package/dist/esm/Notifications/SlideInModal/SlideInModal.module.scss.esm.js +2 -2
  170. package/dist/esm/Pagination/Pagination.module.scss.esm.js +2 -2
  171. package/dist/esm/Popover/Popover.module.scss.esm.js +2 -2
  172. package/dist/esm/ProgressBar/ProgressBar.module.scss.esm.js +2 -2
  173. package/dist/esm/Skeleton/Skeleton.module.scss.esm.js +2 -2
  174. package/dist/esm/Spinner/Spinner.module.scss.esm.js +2 -2
  175. package/dist/esm/Stepper/Step.module.scss.esm.js +2 -2
  176. package/dist/esm/Stepper/Stepper.module.scss.esm.js +2 -2
  177. package/dist/esm/Tabs/Tab.module.scss.esm.js +2 -2
  178. package/dist/esm/Tabs/TabButton.module.scss.esm.js +2 -2
  179. package/dist/esm/Tabs/Tabs.esm.js +32 -15
  180. package/dist/esm/Tabs/Tabs.esm.js.map +1 -1
  181. package/dist/esm/Tabs/Tabs.module.scss.esm.js +2 -2
  182. package/dist/esm/Tag/RemoveButton.module.scss.esm.js +2 -2
  183. package/dist/esm/Tag/Tag.module.scss.esm.js +2 -2
  184. package/dist/esm/TextEllipsis/TextEllipsis.module.scss.esm.js +2 -2
  185. package/dist/esm/Tiles/Tile.module.scss.esm.js +2 -2
  186. package/dist/esm/Tiles/Tiles.module.scss.esm.js +2 -2
  187. package/dist/esm/Tooltip/Tooltip.module.scss.esm.js +2 -2
  188. package/dist/esm/Typography/Typography.module.scss.esm.js +2 -2
  189. package/dist/esm/admin/layout/LeftNav/LeftNav.module.scss.esm.js +2 -2
  190. package/dist/esm/admin/layout/LeftNav/LeftNavItem/LeftNavItem.module.scss.esm.js +2 -2
  191. package/dist/esm/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss.esm.js +2 -2
  192. package/dist/esm/miscellaneous/IdentityProviderButton.module.scss.esm.js +2 -2
  193. package/dist/esm/src/components/Tabs/Tabs.d.ts +1 -0
  194. package/dist/esm/src/readyclasses.module.scss.esm.js +2 -2
  195. package/package.json +1 -1
  196. package/src/components/DataGrid/DataGridFilters/DataGridFilterPopover.tsx +2 -7
  197. package/src/components/Form/Select/SingleSelect/Select.tsx +2 -3
  198. package/src/components/Tabs/Tabs.tsx +35 -15
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { useEffect } from "react";
17
+ import React from "react";
18
18
  import classes from "./DataGridFilter.module.scss";
19
19
  import { Button } from "../../Button/Button";
20
20
  import { Option } from "../../Form/Select/SingleSelect/Option";
@@ -81,12 +81,6 @@ export const DataGridFilterPopover = ({
81
81
  const isValueRequired = operator && !operator.allowEmptyValues;
82
82
  const hasValidationError = Boolean(isValueRequired && pickedValues.length === 0);
83
83
 
84
- useEffect(() => {
85
- if (isOpen) {
86
- popoverRef.current?.focus();
87
- }
88
- }, [isOpen]);
89
-
90
84
  return (
91
85
  <Popover
92
86
  tabIndex={-1}
@@ -100,6 +94,7 @@ export const DataGridFilterPopover = ({
100
94
  <div className={classes["popover"]}>
101
95
  <div className={classes["controls"]}>
102
96
  <SelectWrapper
97
+ selectProps={{ selectButtonProps: { autoFocus: true } }}
103
98
  label={columnSelectLabel}
104
99
  value={column}
105
100
  name={"column"}
@@ -140,9 +140,8 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
140
140
  */
141
141
  const renderOptions = () => {
142
142
  if (isSearching || filter !== "") {
143
- const filteredChildren = React.Children.toArray(children).filter(
144
- child =>
145
- (child as ReactElement).props.children.toLowerCase().match(filter.toLowerCase()) !== null
143
+ const filteredChildren = React.Children.toArray(children).filter(child =>
144
+ (child as ReactElement).props.children.toLowerCase().includes(filter.toLowerCase())
146
145
  );
147
146
 
148
147
  const internalChildren = _internalRenderChildren(filteredChildren as ReactElement[]);
@@ -32,6 +32,7 @@ export interface Props extends ComponentPropsWithRef<"div"> {
32
32
  children: ReactElement<TabProps>[];
33
33
  selected?: number;
34
34
  onTabChange?: (index: number) => void;
35
+ tabChanging?: (newIndex: number, oldIndex: number) => Promise<boolean> | boolean;
35
36
  fluid?: boolean;
36
37
  align?: "left" | "center" | "right";
37
38
  tabListClassName?: string;
@@ -48,6 +49,7 @@ const TabsComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
48
49
  tabListClassName,
49
50
  align,
50
51
  iconsPosition = "left",
52
+ tabChanging,
51
53
  ...rest
52
54
  }: Props,
53
55
  ref
@@ -78,21 +80,21 @@ const TabsComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
78
80
  }
79
81
 
80
82
  switch (e.key) {
81
- case "ArrowRight":
82
- setActiveTabIndex(currentIndex => {
83
- return currentIndex + 1 > totalAmountOfTabs - 1 ? 0 : currentIndex + 1;
84
- });
83
+ case "ArrowRight": {
84
+ const nextIndex = activeTabIndex + 1 > totalAmountOfTabs - 1 ? 0 : activeTabIndex + 1;
85
+ void handleTabClick(nextIndex);
85
86
  break;
86
- case "ArrowLeft":
87
- setActiveTabIndex(currentIndex => {
88
- return currentIndex - 1 < 0 ? totalAmountOfTabs - 1 : currentIndex - 1;
89
- });
87
+ }
88
+ case "ArrowLeft": {
89
+ const prevIndex = activeTabIndex - 1 < 0 ? totalAmountOfTabs - 1 : activeTabIndex - 1;
90
+ void handleTabClick(prevIndex);
90
91
  break;
92
+ }
91
93
  case "Home":
92
- setActiveTabIndex(0);
94
+ void handleTabClick(0);
93
95
  break;
94
96
  case "End":
95
- setActiveTabIndex(totalAmountOfTabs - 1);
97
+ void handleTabClick(totalAmountOfTabs - 1);
96
98
  break;
97
99
  default:
98
100
  return;
@@ -117,16 +119,32 @@ const TabsComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
117
119
  }
118
120
  };
119
121
 
122
+ const handleTabClick = async (newIndex: number) => {
123
+ try {
124
+ const allowed =
125
+ typeof tabChanging === "function"
126
+ ? await Promise.resolve(tabChanging(newIndex, activeTabIndex))
127
+ : true;
128
+
129
+ if (!allowed) {
130
+ const buttons = tabsRef.current?.querySelectorAll<HTMLButtonElement>('button[role="tab"]');
131
+ buttons?.[activeTabIndex]?.focus();
132
+ return;
133
+ }
134
+
135
+ setActiveTabIndex(newIndex);
136
+ onTabChange?.(newIndex);
137
+ } catch (error) {
138
+ console.error("handleTabClick failed: ", error);
139
+ }
140
+ };
141
+
120
142
  useEffect(() => {
121
143
  if (tabsRef.current && renderedButtons.length) {
122
144
  calculateIndicatorPosition();
123
145
  }
124
146
  }, [tabsRef.current, activeTabIndex, renderedButtons]);
125
147
 
126
- useEffect(() => {
127
- onTabChange?.(activeTabIndex);
128
- }, [activeTabIndex]);
129
-
130
148
  useEffect(() => {
131
149
  const buttons = React.Children.map(children, (child, index) => {
132
150
  if (Object.prototype.hasOwnProperty.call(child.props, "title")) {
@@ -139,7 +157,9 @@ const TabsComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
139
157
  focused: usingKeyboardNavigation && activeTabIndex === index,
140
158
  tabActive: activeTabIndex === index,
141
159
  "aria-controls": `tab_${index}`,
142
- onClick: () => setActiveTabIndex(index),
160
+ onClick: () => {
161
+ void handleTabClick(index);
162
+ },
143
163
  disabled: child.props.disabled,
144
164
  fluid: fluid,
145
165
  iconPosition: iconsPosition,