@inceptionbg/iui 2.0.23 → 2.0.24

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 (232) hide show
  1. package/dist/NoAccessPage-CJisyKrk.js +2 -0
  2. package/dist/{NoAccessPage-BmizYfw0.js.map → NoAccessPage-CJisyKrk.js.map} +1 -1
  3. package/dist/NotFoundPage-BeRit0kr.js +2 -0
  4. package/dist/{NotFoundPage-Cv544vAr.js.map → NotFoundPage-BeRit0kr.js.map} +1 -1
  5. package/dist/index.d.ts +432 -430
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/iui.css +1 -1
  9. package/idea/GridTable/GridTable.tsx +1 -1
  10. package/idea/Menu/Menu.tsx +5 -3
  11. package/idea/Menu/MenuItem.tsx +3 -2
  12. package/idea/Menu/hooks/useMenuControl.ts +1 -1
  13. package/idea/Menu.tsx +3 -2
  14. package/idea/NoAccessInfo.tsx +1 -1
  15. package/idea/Table/Components/Edit/ItemActionsMenu.tsx +2 -1
  16. package/idea/Table/Components/Edit/ItemEditOptionsButtons.tsx +1 -1
  17. package/idea/Table/Components/Edit/TableEditRow.tsx +3 -2
  18. package/idea/Table/Components/FilterItem.tsx +2 -2
  19. package/idea/Table/Components/Header/TableHeader.tsx +3 -2
  20. package/idea/Table/Components/Header/TableHeaderRow.tsx +2 -2
  21. package/idea/Table/Components/Print/CustomTablePrint.tsx +3 -2
  22. package/idea/Table/Components/SetSortList.tsx +2 -2
  23. package/idea/Table/Components/SetTableFilter.tsx +3 -2
  24. package/idea/Table/Components/TableFooter.tsx +6 -4
  25. package/idea/Table/Components/TableOptions.tsx +3 -2
  26. package/idea/Table/Table.tsx +3 -2
  27. package/idea/Table/hooks/useTableKeyboard.ts +2 -2
  28. package/package.json +1 -1
  29. package/src/assets/icons/duotone/faBell.ts +17 -17
  30. package/src/assets/icons/duotone/faCircleUser.ts +17 -17
  31. package/src/assets/icons/index.ts +25 -25
  32. package/src/assets/icons/light/faArrowDownShortWide.ts +15 -15
  33. package/src/assets/icons/light/faArrowDownWideShort.ts +15 -15
  34. package/src/assets/icons/light/faArrowLeft.ts +5 -5
  35. package/src/assets/icons/light/faArrowRight.ts +5 -5
  36. package/src/assets/icons/light/faArrowUpArrowDown.ts +15 -15
  37. package/src/assets/icons/light/faArrowUpRightFromSquare.ts +15 -15
  38. package/src/assets/icons/light/faArrowsToLine.ts +15 -15
  39. package/src/assets/icons/light/faArrowsUpDown.ts +15 -15
  40. package/src/assets/icons/light/faBell.ts +15 -15
  41. package/src/assets/icons/light/faBookmark.ts +15 -15
  42. package/src/assets/icons/light/faBookmarkSlash.ts +15 -15
  43. package/src/assets/icons/light/faCalendarPlus.ts +15 -15
  44. package/src/assets/icons/light/faCheck.ts +15 -15
  45. package/src/assets/icons/light/faChevronDown.ts +15 -15
  46. package/src/assets/icons/light/faChevronRight.ts +15 -15
  47. package/src/assets/icons/light/faCircleInfo.ts +15 -15
  48. package/src/assets/icons/light/faCircleXmark.ts +15 -15
  49. package/src/assets/icons/light/faClipboardCheck.ts +15 -15
  50. package/src/assets/icons/light/faClockRotateLeft.ts +15 -15
  51. package/src/assets/icons/light/faEllipsisVertical.ts +15 -15
  52. package/src/assets/icons/light/faEnvelope.ts +15 -15
  53. package/src/assets/icons/light/faEye.ts +15 -15
  54. package/src/assets/icons/light/faEyeSlash.ts +15 -15
  55. package/src/assets/icons/light/faFilter.ts +15 -15
  56. package/src/assets/icons/light/faGear.ts +15 -15
  57. package/src/assets/icons/light/faHouse.ts +15 -15
  58. package/src/assets/icons/light/faIdBadge.ts +15 -15
  59. package/src/assets/icons/light/faLineColumns.ts +15 -15
  60. package/src/assets/icons/light/faLink.ts +15 -15
  61. package/src/assets/icons/light/faMagnifyingGlass.ts +15 -15
  62. package/src/assets/icons/light/faPen.ts +15 -15
  63. package/src/assets/icons/light/faPrint.ts +15 -15
  64. package/src/assets/icons/light/faQuestion.ts +15 -15
  65. package/src/assets/icons/light/faRotateRight.ts +15 -15
  66. package/src/assets/icons/light/faTrashCan.ts +15 -15
  67. package/src/assets/icons/light/faTriangleExclamation.ts +15 -15
  68. package/src/assets/icons/light/faXmark.ts +15 -15
  69. package/src/assets/icons/regular/faArrowLeft.ts +15 -15
  70. package/src/assets/icons/regular/faArrowRightArrowLeft.ts +15 -15
  71. package/src/assets/icons/regular/faCircleCheck.ts +15 -15
  72. package/src/assets/icons/regular/faCircleExclamation.ts +15 -15
  73. package/src/assets/icons/regular/faCircleInfo.ts +15 -15
  74. package/src/assets/icons/regular/faFileArrowDown.ts +15 -15
  75. package/src/assets/icons/regular/faFilterCircleXmark.ts +15 -15
  76. package/src/assets/icons/regular/faTriangleExclamation.ts +15 -15
  77. package/src/assets/icons/solid/faAngleLeft.ts +15 -15
  78. package/src/assets/icons/solid/faAngleRight.ts +15 -15
  79. package/src/assets/icons/solid/faArrowDownWideShort.ts +15 -15
  80. package/src/assets/icons/solid/faCaretDown.ts +15 -15
  81. package/src/assets/icons/solid/faCheck.ts +15 -15
  82. package/src/assets/icons/solid/faEllipsisVertical.ts +15 -15
  83. package/src/assets/icons/solid/faEnvelopeDot.ts +15 -15
  84. package/src/assets/icons/solid/faFilter.ts +15 -15
  85. package/src/assets/icons/solid/faFloppyDisk.ts +15 -15
  86. package/src/assets/icons/solid/faGripDotsVertical.ts +15 -15
  87. package/src/assets/icons/solid/faListUl.ts +15 -15
  88. package/src/assets/icons/solid/faMinus.ts +15 -15
  89. package/src/assets/icons/solid/faPlus.ts +15 -15
  90. package/src/assets/icons/solid/faPrint.ts +15 -15
  91. package/src/assets/icons/solid/faRotateRight.ts +15 -15
  92. package/src/assets/icons/solid/faXmark.ts +15 -15
  93. package/src/components/Accordions/Accordions.tsx +75 -74
  94. package/src/components/Alert/Alert.tsx +31 -31
  95. package/src/components/Badge/DotBadge.tsx +16 -16
  96. package/src/components/Badge/NotificationBadge.tsx +29 -29
  97. package/src/components/Badge/PillBadge.tsx +13 -13
  98. package/src/components/Button/Button.tsx +56 -56
  99. package/src/components/Button/IconButton.tsx +51 -51
  100. package/src/components/Button/SplitButton.tsx +91 -91
  101. package/src/components/Dashboard/Dashboard.tsx +9 -9
  102. package/src/components/Dashboard/DashboardWidget.tsx +44 -44
  103. package/src/components/Dashboard/FastLinksWidget/FastLinksWidget.tsx +37 -37
  104. package/src/components/Dialog/Dialog.tsx +166 -164
  105. package/src/components/Dialog/components/DialogFooter.tsx +100 -98
  106. package/src/components/Header/Components/EnvBadge.tsx +17 -17
  107. package/src/components/Header/Components/ModuleSelect.tsx +68 -68
  108. package/src/components/Header/Components/Notifications.tsx +202 -208
  109. package/src/components/Header/Components/UserMenu.tsx +52 -52
  110. package/src/components/Header/Header.tsx +37 -36
  111. package/src/components/Helper/Collapse.tsx +53 -52
  112. package/src/components/Inputs/Checkbox.tsx +53 -53
  113. package/src/components/Inputs/CurrencyInput.tsx +124 -123
  114. package/src/components/Inputs/DateInput/DateInput.tsx +184 -183
  115. package/src/components/Inputs/DateInput/components/DatePartInput.tsx +159 -158
  116. package/src/components/Inputs/InputWrapper.tsx +95 -95
  117. package/src/components/Inputs/NumberInput.tsx +86 -86
  118. package/src/components/Inputs/PasswordInput.tsx +40 -39
  119. package/src/components/Inputs/PhoneInput/PhoneInput.tsx +108 -108
  120. package/src/components/Inputs/PhoneInput/utils/countryCode.ts +20 -20
  121. package/src/components/Inputs/Radio.tsx +59 -59
  122. package/src/components/Inputs/RadioGroup.tsx +48 -48
  123. package/src/components/Inputs/RadioLarge.tsx +39 -39
  124. package/src/components/Inputs/SearchInput.tsx +46 -45
  125. package/src/components/Inputs/Selects/Select.tsx +17 -17
  126. package/src/components/Inputs/Selects/components/CustomSelectComponents.tsx +20 -19
  127. package/src/components/Inputs/Selects/components/SelectWrapper.tsx +118 -118
  128. package/src/components/Inputs/Selects/utils/selectStyles.ts +101 -101
  129. package/src/components/Inputs/TextAreaInput.tsx +68 -67
  130. package/src/components/Inputs/TextInput.tsx +100 -99
  131. package/src/components/Inputs/TimeInput/TimeInput.tsx +81 -81
  132. package/src/components/List/List.tsx +21 -20
  133. package/src/components/List/ListItem.tsx +70 -69
  134. package/src/components/Loader/Loader.tsx +59 -53
  135. package/src/components/Loader/ProgressBar.tsx +41 -41
  136. package/src/components/Menu/Menu.tsx +81 -80
  137. package/src/components/Menu/MenuItem.tsx +46 -46
  138. package/src/components/Menu/NewMenu.tsx +63 -63
  139. package/src/components/Menu/hooks/useMenuPosition.tsx +116 -115
  140. package/src/components/Pullover/Pullover.tsx +197 -196
  141. package/src/components/Router/Router.tsx +52 -51
  142. package/src/components/Sidebar/AddButton.tsx +22 -22
  143. package/src/components/Sidebar/Sidebar.tsx +85 -83
  144. package/src/components/Sidebar/SidebarItem.tsx +84 -84
  145. package/src/components/Sidebar/types/ISidebar.ts +28 -28
  146. package/src/components/Table/Table.tsx +259 -258
  147. package/src/components/Table/components/columns/ColumnsList.tsx +60 -59
  148. package/src/components/Table/components/columns/TableColumnsEdit.tsx +114 -112
  149. package/src/components/Table/components/edit/TableEditRow.tsx +78 -77
  150. package/src/components/Table/components/filters/FilterItem.tsx +15 -15
  151. package/src/components/Table/components/filters/TableFilters.tsx +126 -125
  152. package/src/components/Table/components/footer/TableFooter.tsx +126 -124
  153. package/src/components/Table/components/header/TableHeader.tsx +40 -40
  154. package/src/components/Table/components/header/TableHeaderRow.tsx +57 -57
  155. package/src/components/Table/components/items/TableItemActions.tsx +78 -78
  156. package/src/components/Table/components/print/TablePrint.tsx +200 -199
  157. package/src/components/Table/components/select/TableSelect.tsx +50 -49
  158. package/src/components/Table/components/sort/TableSort.tsx +73 -72
  159. package/src/components/Table/components/templates/CreateTemplateDialog.tsx +58 -57
  160. package/src/components/Table/components/templates/TableTemplates.tsx +65 -64
  161. package/src/components/Table/components/templates/TemplatesPullover.tsx +88 -88
  162. package/src/components/Table/contexts/TableContext.tsx +116 -123
  163. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  164. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +84 -84
  165. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +176 -177
  166. package/src/components/Table/hooks/localHooks/useLocalTablePagination.ts +12 -12
  167. package/src/components/Table/hooks/useTableColumns.ts +34 -34
  168. package/src/components/Table/hooks/useTableEdit.tsx +140 -140
  169. package/src/components/Table/hooks/useTableFilterFields.tsx +150 -150
  170. package/src/components/Table/hooks/useTablePagination.ts +19 -19
  171. package/src/components/Table/hooks/useTablePrint.ts +83 -83
  172. package/src/components/Table/hooks/useTableSearch.ts +31 -30
  173. package/src/components/Table/hooks/useTableSelect.ts +19 -19
  174. package/src/components/Table/hooks/useTableSort.ts +8 -8
  175. package/src/components/Tabs/Tabs.tsx +68 -67
  176. package/src/components/Tooltip/Tooltip.tsx +191 -200
  177. package/src/components/Tree/Tree.tsx +22 -22
  178. package/src/components/Tree/TreeItem.tsx +57 -56
  179. package/src/components/Wrappers/AppLayout.tsx +17 -17
  180. package/src/components/Wrappers/ConditionalWrapper.tsx +10 -10
  181. package/src/components/Wrappers/FormWrapper.tsx +84 -83
  182. package/src/components/Wrappers/PageLayout.tsx +156 -155
  183. package/src/hooks/useBackgroundClose.ts +19 -18
  184. package/src/hooks/useGetFocusableElements.ts +43 -42
  185. package/src/hooks/useIsMenuOpen.ts +11 -11
  186. package/src/hooks/useLocalPopoverControl.ts +32 -32
  187. package/src/hooks/useOnEsc.ts +14 -14
  188. package/src/hooks/usePopupControl.ts +22 -22
  189. package/src/hooks/useZendesk.ts +21 -21
  190. package/src/index.ts +379 -386
  191. package/src/pages/NoAccessPage.tsx +27 -27
  192. package/src/pages/NotFoundPage.tsx +26 -26
  193. package/src/styles/common/helpers/_size.scss +0 -3
  194. package/src/styles/components/_accordions.scss +1 -1
  195. package/src/styles/components/_buttonSplit.scss +4 -29
  196. package/src/types/IBasic.ts +32 -31
  197. package/src/types/ICountryCode.ts +5 -0
  198. package/src/types/IError.ts +5 -5
  199. package/src/types/IHeader.ts +40 -40
  200. package/src/types/IInfo.ts +1 -1
  201. package/src/types/IKeyboard.ts +33 -33
  202. package/src/types/IMenu.ts +19 -19
  203. package/src/types/INotifications.ts +15 -15
  204. package/src/types/IPopup.ts +17 -17
  205. package/src/types/IRouter.ts +6 -6
  206. package/src/types/ISelect.ts +54 -54
  207. package/src/types/ITab.ts +1 -1
  208. package/src/types/ITable.ts +290 -281
  209. package/src/types/ITree.ts +6 -6
  210. package/src/utils/InputPatternValidation.ts +12 -12
  211. package/src/utils/dateUtils.ts +32 -32
  212. package/src/utils/fileUtils.ts +177 -177
  213. package/src/utils/i18n/i18nIUICyrilic.ts +119 -119
  214. package/src/utils/i18n/i18nIUILatin.ts +120 -120
  215. package/src/utils/i18n/i18nIUIMe.ts +118 -118
  216. package/src/utils/icons.ts +13 -13
  217. package/src/utils/localStorageHelper.ts +24 -24
  218. package/src/utils/logoUtils.ts +7 -7
  219. package/src/utils/numberUtils.ts +21 -21
  220. package/src/utils/objectUtils.ts +114 -114
  221. package/src/utils/popupUtils.ts +82 -82
  222. package/src/utils/rootDir.ts +1 -1
  223. package/src/utils/stringUtils.ts +18 -18
  224. package/src/utils/tableUtils.ts +130 -130
  225. package/src/utils/toasts.ts +6 -6
  226. package/src/utils/urlUtils.ts +4 -4
  227. package/tsconfig.json +1 -0
  228. package/dist/NoAccessPage-BmizYfw0.js +0 -2
  229. package/dist/NotFoundPage-Cv544vAr.js +0 -2
  230. package/src/components/Dialog/hooks/useDialogKeyboard.ts +0 -42
  231. package/src/components/Inputs/Select2/Select.tsx +0 -258
  232. package/src/components/Inputs/Select2/select.scss +0 -42
@@ -1,114 +1,114 @@
1
- import { TFunction } from 'i18next';
2
- import { IBooleanObject } from '../types/IBasic';
3
- import { formatDate, formatDateAndTime } from './dateUtils';
4
- import { INotification } from '../types/INotifications';
5
-
6
- export const hasValue = (value: any) => ![null, undefined, ''].includes(value);
7
-
8
- export const deleteProps = <T extends Record<string, any>>(
9
- obj: T,
10
- props: (keyof T)[]
11
- ) => {
12
- const newObj = { ...obj };
13
- props.forEach(prop => delete newObj[prop]);
14
- return newObj as Partial<T>;
15
- };
16
-
17
- export const deletePropsThatEndsWith = <T>(obj: T, endsWith: string) => {
18
- const newObj = { ...obj };
19
- for (const prop in newObj) {
20
- if (prop.endsWith(endsWith)) {
21
- delete newObj[prop];
22
- }
23
- }
24
- return newObj as Partial<T>;
25
- };
26
-
27
- export const deleteEmptyProps = <T extends Record<string, any>>(obj: T): T =>
28
- Object.entries(obj).reduce(
29
- (updatedObj, [key, value]) =>
30
- hasValue(value) ? ((updatedObj[key as keyof T] = value), updatedObj) : updatedObj,
31
- {} as T
32
- );
33
-
34
- export const deleteEmptyPropsIncludingArray = <T extends Record<string, any>>(
35
- obj: T
36
- ): T =>
37
- Object.entries(obj).reduce(
38
- (updatedObj, [key, value]) =>
39
- !hasValue(value) || (Array.isArray(value) && !value.length)
40
- ? updatedObj
41
- : ((updatedObj[key as keyof T] = value), updatedObj),
42
- {} as T
43
- );
44
-
45
- export const convertBooleanObjectToArray = (obj: IBooleanObject) =>
46
- Object.keys(obj).filter(key => obj[key]);
47
-
48
- export const convertArrayToBooleanObject = (arr?: string[]) =>
49
- arr ? arr.reduce((acc: IBooleanObject, item) => ({ ...acc, [item]: true }), {}) : {};
50
-
51
- export const deepCopy = (el: any[] | object) => JSON.parse(JSON.stringify(el));
52
-
53
- export const areStringArraysEqual = (arr1: string[], arr2: string[]) =>
54
- JSON.stringify(arr1) === JSON.stringify(arr2);
55
-
56
- export const compareArrayItemsIndex = <T>(
57
- array: T[] | readonly T[],
58
- item1: T,
59
- comparison: 'greaterThan' | 'greaterThanOrEqualTo' | 'lessThan' | 'lessThanOrEqualTo',
60
- item2: T
61
- ): boolean => {
62
- const index1 = array.indexOf(item1);
63
- const index2 = array.indexOf(item2);
64
- return (
65
- // Check if items exist in array
66
- index1 >= 0 &&
67
- index2 >= 0 &&
68
- // Compare items location in the array
69
- (comparison === 'greaterThan'
70
- ? index1 > index2
71
- : comparison === 'greaterThanOrEqualTo'
72
- ? index1 >= index2
73
- : comparison === 'lessThan'
74
- ? index1 < index2
75
- : index1 <= index2)
76
- );
77
- };
78
-
79
- export const intersectArrays = <T>(
80
- arr1: any[] | readonly T[],
81
- arr2: any[] | readonly T[]
82
- ) => {
83
- const set2 = new Set(arr2);
84
- return (arr1 as T[]).filter(item => set2.has(item));
85
- };
86
-
87
- export const getNotificationValues = (
88
- t: TFunction,
89
- notificationValues?: INotification['values']
90
- ) =>
91
- notificationValues?.reduce((obj, item) => {
92
- let processedValue = item.value;
93
- if (item.format === 'TRANSLATE') {
94
- processedValue = t(processedValue);
95
- } else if (item.format === 'DATE') {
96
- processedValue = formatDate(processedValue);
97
- } else if (item.format === 'DATE_TIME') {
98
- processedValue = formatDateAndTime(processedValue);
99
- }
100
- return { ...obj, [item.key]: processedValue };
101
- }, {});
102
-
103
- export const flattenTreeForSelect = (items: any[], depth = 0, maxDepth = 5): any[] => {
104
- if (!Array.isArray(items)) return [];
105
- const indent = '\u00A0'.repeat(Math.min(depth, maxDepth) * 3);
106
- return items.flatMap(node => [
107
- {
108
- value: node.uuid,
109
- label: `${indent}${node.code ? node.code + ' - ' : ''}${node.name}`,
110
- disabled: node.active === false || node.hasUserAccess === false,
111
- },
112
- ...(node.children ? flattenTreeForSelect(node.children, depth + 1, maxDepth) : []),
113
- ]);
114
- };
1
+ import type { TFunction } from 'i18next';
2
+ import type { IBooleanObject } from '../types/IBasic';
3
+ import type { INotification } from '../types/INotifications';
4
+ import { formatDate, formatDateAndTime } from './dateUtils';
5
+
6
+ export const hasValue = (value: any) => ![null, undefined, ''].includes(value);
7
+
8
+ export const deleteProps = <T extends Record<string, any>>(
9
+ obj: T,
10
+ props: (keyof T)[]
11
+ ) => {
12
+ const newObj = { ...obj };
13
+ props.forEach(prop => delete newObj[prop]);
14
+ return newObj as Partial<T>;
15
+ };
16
+
17
+ export const deletePropsThatEndsWith = <T>(obj: T, endsWith: string) => {
18
+ const newObj = { ...obj };
19
+ for (const prop in newObj) {
20
+ if (prop.endsWith(endsWith)) {
21
+ delete newObj[prop];
22
+ }
23
+ }
24
+ return newObj as Partial<T>;
25
+ };
26
+
27
+ export const deleteEmptyProps = <T extends Record<string, any>>(obj: T): T =>
28
+ Object.entries(obj).reduce(
29
+ (updatedObj, [key, value]) =>
30
+ hasValue(value) ? ((updatedObj[key as keyof T] = value), updatedObj) : updatedObj,
31
+ {} as T
32
+ );
33
+
34
+ export const deleteEmptyPropsIncludingArray = <T extends Record<string, any>>(
35
+ obj: T
36
+ ): T =>
37
+ Object.entries(obj).reduce(
38
+ (updatedObj, [key, value]) =>
39
+ !hasValue(value) || (Array.isArray(value) && !value.length)
40
+ ? updatedObj
41
+ : ((updatedObj[key as keyof T] = value), updatedObj),
42
+ {} as T
43
+ );
44
+
45
+ export const convertBooleanObjectToArray = (obj: IBooleanObject) =>
46
+ Object.keys(obj).filter(key => obj[key]);
47
+
48
+ export const convertArrayToBooleanObject = (arr?: string[]) =>
49
+ arr ? arr.reduce((acc: IBooleanObject, item) => ({ ...acc, [item]: true }), {}) : {};
50
+
51
+ export const deepCopy = (el: any[] | object) => JSON.parse(JSON.stringify(el));
52
+
53
+ export const areStringArraysEqual = (arr1: string[], arr2: string[]) =>
54
+ JSON.stringify(arr1) === JSON.stringify(arr2);
55
+
56
+ export const compareArrayItemsIndex = <T>(
57
+ array: T[] | readonly T[],
58
+ item1: T,
59
+ comparison: 'greaterThan' | 'greaterThanOrEqualTo' | 'lessThan' | 'lessThanOrEqualTo',
60
+ item2: T
61
+ ): boolean => {
62
+ const index1 = array.indexOf(item1);
63
+ const index2 = array.indexOf(item2);
64
+ return (
65
+ // Check if items exist in array
66
+ index1 >= 0 &&
67
+ index2 >= 0 &&
68
+ // Compare items location in the array
69
+ (comparison === 'greaterThan'
70
+ ? index1 > index2
71
+ : comparison === 'greaterThanOrEqualTo'
72
+ ? index1 >= index2
73
+ : comparison === 'lessThan'
74
+ ? index1 < index2
75
+ : index1 <= index2)
76
+ );
77
+ };
78
+
79
+ export const intersectArrays = <T>(
80
+ arr1: any[] | readonly T[],
81
+ arr2: any[] | readonly T[]
82
+ ) => {
83
+ const set2 = new Set(arr2);
84
+ return (arr1 as T[]).filter(item => set2.has(item));
85
+ };
86
+
87
+ export const getNotificationValues = (
88
+ t: TFunction,
89
+ notificationValues?: INotification['values']
90
+ ) =>
91
+ notificationValues?.reduce((obj, item) => {
92
+ let processedValue = item.value;
93
+ if (item.format === 'TRANSLATE') {
94
+ processedValue = t(processedValue);
95
+ } else if (item.format === 'DATE') {
96
+ processedValue = formatDate(processedValue);
97
+ } else if (item.format === 'DATE_TIME') {
98
+ processedValue = formatDateAndTime(processedValue);
99
+ }
100
+ return { ...obj, [item.key]: processedValue };
101
+ }, {});
102
+
103
+ export const flattenTreeForSelect = (items: any[], depth = 0, maxDepth = 5): any[] => {
104
+ if (!Array.isArray(items)) return [];
105
+ const indent = '\u00A0'.repeat(Math.min(depth, maxDepth) * 3);
106
+ return items.flatMap(node => [
107
+ {
108
+ value: node.uuid,
109
+ label: `${indent}${node.code ? node.code + ' - ' : ''}${node.name}`,
110
+ disabled: node.active === false || node.hasUserAccess === false,
111
+ },
112
+ ...(node.children ? flattenTreeForSelect(node.children, depth + 1, maxDepth) : []),
113
+ ]);
114
+ };
@@ -1,82 +1,82 @@
1
- import { KeyboardEvent } from 'react';
2
- import { IKeyboardAction } from '../types/IKeyboard';
3
-
4
- export const onPopupKeyDown = (
5
- event: KeyboardEvent<HTMLDivElement>,
6
- {
7
- onClose,
8
- enter,
9
- search,
10
- focusableElements,
11
- }: {
12
- onClose: () => void;
13
- enter?: {
14
- onAction: () => void;
15
- disabled?: boolean;
16
- };
17
- search?: {
18
- onAction: () => void;
19
- disabled?: boolean;
20
- };
21
- focusableElements?: HTMLElement[];
22
- }
23
- ) => {
24
- event.stopPropagation();
25
- const actions: IKeyboardAction[] = [
26
- {
27
- code: 'Enter',
28
- onAction: () => enter?.onAction(),
29
- disabled: !enter || !!enter.disabled,
30
- },
31
- { code: 'Escape', onAction: onClose },
32
- {
33
- code: 'KeyF',
34
- ctrl: true,
35
- onAction: () => {
36
- event.preventDefault();
37
- search?.onAction();
38
- },
39
- disabled: !search || !!search.disabled,
40
- },
41
- {
42
- code: 'Tab',
43
- onAction: () => {
44
- if (focusableElements?.length) {
45
- const first = focusableElements[0];
46
- const last = focusableElements[focusableElements.length - 1];
47
- if (document.activeElement === last) {
48
- event.preventDefault();
49
- first.focus();
50
- }
51
- }
52
- },
53
- disabled: !focusableElements?.length,
54
- },
55
- {
56
- code: 'Tab',
57
- shift: true,
58
- onAction: () => {
59
- if (focusableElements?.length) {
60
- const first = focusableElements[0];
61
- const last = focusableElements[focusableElements.length - 1];
62
- if (document.activeElement === first) {
63
- event.preventDefault();
64
- last.focus();
65
- }
66
- }
67
- },
68
- disabled: !focusableElements?.length,
69
- },
70
- ];
71
-
72
- actions.forEach(item => {
73
- if (
74
- !item.disabled &&
75
- item.code === event.code &&
76
- !!item.shift === event.shiftKey &&
77
- !!item.ctrl === (event.ctrlKey || event.metaKey)
78
- ) {
79
- item.onAction();
80
- }
81
- });
82
- };
1
+ import type { KeyboardEvent } from 'react';
2
+ import type { IKeyboardAction } from '../types/IKeyboard';
3
+
4
+ export const onPopupKeyDown = (
5
+ event: KeyboardEvent<HTMLDivElement>,
6
+ {
7
+ onClose,
8
+ enter,
9
+ search,
10
+ focusableElements,
11
+ }: {
12
+ onClose: () => void;
13
+ enter?: {
14
+ onAction: () => void;
15
+ disabled?: boolean;
16
+ };
17
+ search?: {
18
+ onAction: () => void;
19
+ disabled?: boolean;
20
+ };
21
+ focusableElements?: HTMLElement[];
22
+ }
23
+ ) => {
24
+ event.stopPropagation();
25
+ const actions: IKeyboardAction[] = [
26
+ {
27
+ code: 'Enter',
28
+ onAction: () => enter?.onAction(),
29
+ disabled: !enter || !!enter.disabled,
30
+ },
31
+ { code: 'Escape', onAction: onClose },
32
+ {
33
+ code: 'KeyF',
34
+ ctrl: true,
35
+ onAction: () => {
36
+ event.preventDefault();
37
+ search?.onAction();
38
+ },
39
+ disabled: !search || !!search.disabled,
40
+ },
41
+ {
42
+ code: 'Tab',
43
+ onAction: () => {
44
+ if (focusableElements?.length) {
45
+ const first = focusableElements[0];
46
+ const last = focusableElements[focusableElements.length - 1];
47
+ if (document.activeElement === last) {
48
+ event.preventDefault();
49
+ first.focus();
50
+ }
51
+ }
52
+ },
53
+ disabled: !focusableElements?.length,
54
+ },
55
+ {
56
+ code: 'Tab',
57
+ shift: true,
58
+ onAction: () => {
59
+ if (focusableElements?.length) {
60
+ const first = focusableElements[0];
61
+ const last = focusableElements[focusableElements.length - 1];
62
+ if (document.activeElement === first) {
63
+ event.preventDefault();
64
+ last.focus();
65
+ }
66
+ }
67
+ },
68
+ disabled: !focusableElements?.length,
69
+ },
70
+ ];
71
+
72
+ actions.forEach(item => {
73
+ if (
74
+ !item.disabled &&
75
+ item.code === event.code &&
76
+ !!item.shift === event.shiftKey &&
77
+ !!item.ctrl === (event.ctrlKey || event.metaKey)
78
+ ) {
79
+ item.onAction();
80
+ }
81
+ });
82
+ };
@@ -1 +1 @@
1
- export const rootDir = (document.getElementById('root') as HTMLElement) ?? document.body;
1
+ export const rootDir = (document.getElementById('root') as HTMLElement) ?? document.body;
@@ -1,18 +1,18 @@
1
- export const maxChar = (str = '', maxLength = 30) =>
2
- str.length > maxLength ? `${str.substring(0, maxLength)}...` : str;
3
-
4
- export const getInputHelperText = (
5
- t: any,
6
- min?: string | number,
7
- max?: string | number
8
- ) =>
9
- max
10
- ? min === max
11
- ? t('CharNumber', { number: min })
12
- : t('CharRange', { from: min || 1, to: max })
13
- : min
14
- ? t('CharMin', { from: min })
15
- : undefined;
16
-
17
- export const getInputMinMaxPattern = (min?: string | number, max?: string | number) =>
18
- `^.{${min || 0},${max || ''}}$`;
1
+ export const maxChar = (str = '', maxLength = 30) =>
2
+ str.length > maxLength ? `${str.substring(0, maxLength)}...` : str;
3
+
4
+ export const getInputHelperText = (
5
+ t: any,
6
+ min?: string | number,
7
+ max?: string | number
8
+ ) =>
9
+ max
10
+ ? min === max
11
+ ? t('CharNumber', { number: min })
12
+ : t('CharRange', { from: min || 1, to: max })
13
+ : min
14
+ ? t('CharMin', { from: min })
15
+ : undefined;
16
+
17
+ export const getInputMinMaxPattern = (min?: string | number, max?: string | number) =>
18
+ `^.{${min || 0},${max || ''}}$`;