@inceptionbg/iui 2.0.24 → 2.0.26

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 (208) hide show
  1. package/dist/NoAccessPage-DTPU8bP2.js +2 -0
  2. package/dist/{NoAccessPage-CJisyKrk.js.map → NoAccessPage-DTPU8bP2.js.map} +1 -1
  3. package/dist/NotFoundPage-PZunMooy.js +2 -0
  4. package/dist/{NotFoundPage-BeRit0kr.js.map → NotFoundPage-PZunMooy.js.map} +1 -1
  5. package/dist/icons/index.d.ts +3 -1
  6. package/dist/icons/index.js +1 -1
  7. package/dist/index.d.ts +44 -31
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/iui.css +1 -1
  11. package/package.json +1 -1
  12. package/src/assets/icons/duotone/faBell.ts +17 -17
  13. package/src/assets/icons/duotone/faCircleUser.ts +17 -17
  14. package/src/assets/icons/index.ts +26 -25
  15. package/src/assets/icons/light/faArrowDownShortWide.ts +15 -15
  16. package/src/assets/icons/light/faArrowDownWideShort.ts +15 -15
  17. package/src/assets/icons/light/faArrowLeft.ts +15 -15
  18. package/src/assets/icons/light/faArrowRight.ts +15 -15
  19. package/src/assets/icons/light/faArrowUpArrowDown.ts +15 -15
  20. package/src/assets/icons/light/faArrowUpRightFromSquare.ts +15 -15
  21. package/src/assets/icons/light/faArrowsToLine.ts +15 -15
  22. package/src/assets/icons/light/faArrowsUpDown.ts +15 -15
  23. package/src/assets/icons/light/faBell.ts +15 -15
  24. package/src/assets/icons/light/faBookmark.ts +15 -15
  25. package/src/assets/icons/light/faBookmarkSlash.ts +15 -15
  26. package/src/assets/icons/light/faCalendarPlus.ts +15 -15
  27. package/src/assets/icons/light/faCheck.ts +15 -15
  28. package/src/assets/icons/light/faChevronDown.ts +15 -15
  29. package/src/assets/icons/light/faChevronRight.ts +15 -15
  30. package/src/assets/icons/light/faCircleCheck.ts +15 -0
  31. package/src/assets/icons/light/faCircleInfo.ts +15 -15
  32. package/src/assets/icons/light/faCircleXmark.ts +15 -15
  33. package/src/assets/icons/light/faClipboardCheck.ts +15 -15
  34. package/src/assets/icons/light/faClockRotateLeft.ts +15 -15
  35. package/src/assets/icons/light/faEllipsisVertical.ts +15 -15
  36. package/src/assets/icons/light/faEnvelope.ts +15 -15
  37. package/src/assets/icons/light/faEye.ts +15 -15
  38. package/src/assets/icons/light/faEyeSlash.ts +15 -15
  39. package/src/assets/icons/light/faFilter.ts +15 -15
  40. package/src/assets/icons/light/faGear.ts +15 -15
  41. package/src/assets/icons/light/faHouse.ts +15 -15
  42. package/src/assets/icons/light/faIdBadge.ts +15 -15
  43. package/src/assets/icons/light/faLineColumns.ts +15 -15
  44. package/src/assets/icons/light/faLink.ts +15 -15
  45. package/src/assets/icons/light/faMagnifyingGlass.ts +15 -15
  46. package/src/assets/icons/light/faPen.ts +15 -15
  47. package/src/assets/icons/light/faPrint.ts +15 -15
  48. package/src/assets/icons/light/faQuestion.ts +15 -15
  49. package/src/assets/icons/light/faRotateRight.ts +15 -15
  50. package/src/assets/icons/light/faTrashCan.ts +15 -15
  51. package/src/assets/icons/light/faTriangleExclamation.ts +15 -15
  52. package/src/assets/icons/light/faXmark.ts +15 -15
  53. package/src/assets/icons/regular/faArrowLeft.ts +15 -15
  54. package/src/assets/icons/regular/faArrowRightArrowLeft.ts +15 -15
  55. package/src/assets/icons/regular/faCircleCheck.ts +15 -15
  56. package/src/assets/icons/regular/faCircleExclamation.ts +15 -15
  57. package/src/assets/icons/regular/faCircleInfo.ts +15 -15
  58. package/src/assets/icons/regular/faFileArrowDown.ts +15 -15
  59. package/src/assets/icons/regular/faFilterCircleXmark.ts +15 -15
  60. package/src/assets/icons/regular/faTriangleExclamation.ts +15 -15
  61. package/src/assets/icons/solid/faAngleLeft.ts +15 -15
  62. package/src/assets/icons/solid/faAngleRight.ts +15 -15
  63. package/src/assets/icons/solid/faArrowDownWideShort.ts +15 -15
  64. package/src/assets/icons/solid/faCaretDown.ts +15 -15
  65. package/src/assets/icons/solid/faCheck.ts +15 -15
  66. package/src/assets/icons/solid/faEllipsisVertical.ts +15 -15
  67. package/src/assets/icons/solid/faEnvelopeDot.ts +15 -15
  68. package/src/assets/icons/solid/faFilter.ts +15 -15
  69. package/src/assets/icons/solid/faFloppyDisk.ts +15 -15
  70. package/src/assets/icons/solid/faGripDotsVertical.ts +15 -15
  71. package/src/assets/icons/solid/faListUl.ts +15 -15
  72. package/src/assets/icons/solid/faMinus.ts +15 -15
  73. package/src/assets/icons/solid/faPlus.ts +15 -15
  74. package/src/assets/icons/solid/faPrint.ts +15 -15
  75. package/src/assets/icons/solid/faRotateRight.ts +15 -15
  76. package/src/assets/icons/solid/faXmark.ts +15 -15
  77. package/src/components/Accordions/Accordions.tsx +75 -75
  78. package/src/components/Alert/Alert.tsx +31 -31
  79. package/src/components/Badge/DotBadge.tsx +16 -16
  80. package/src/components/Badge/NotificationBadge.tsx +29 -29
  81. package/src/components/Badge/PillBadge.tsx +13 -13
  82. package/src/components/Button/Button.tsx +56 -56
  83. package/src/components/Button/IconButton.tsx +51 -51
  84. package/src/components/Button/SplitButton.tsx +91 -91
  85. package/src/components/Dashboard/Dashboard.tsx +9 -9
  86. package/src/components/Dashboard/DashboardWidget.tsx +44 -44
  87. package/src/components/Dashboard/FastLinksWidget/FastLinksWidget.tsx +37 -37
  88. package/src/components/Dialog/Dialog.tsx +166 -166
  89. package/src/components/Dialog/components/DialogFooter.tsx +100 -100
  90. package/src/components/Header/Components/EnvBadge.tsx +17 -17
  91. package/src/components/Header/Components/ModuleSelect.tsx +68 -68
  92. package/src/components/Header/Components/Notifications.tsx +202 -202
  93. package/src/components/Header/Components/UserMenu.tsx +52 -52
  94. package/src/components/Header/Header.tsx +45 -37
  95. package/src/components/Helper/Collapse.tsx +53 -53
  96. package/src/components/Inputs/Checkbox.tsx +53 -53
  97. package/src/components/Inputs/CurrencyInput.tsx +124 -124
  98. package/src/components/Inputs/DateInput/DateInput.tsx +184 -184
  99. package/src/components/Inputs/DateInput/components/DatePartInput.tsx +159 -159
  100. package/src/components/Inputs/InputWrapper.tsx +95 -95
  101. package/src/components/Inputs/NumberInput.tsx +86 -86
  102. package/src/components/Inputs/PasswordInput.tsx +40 -40
  103. package/src/components/Inputs/PhoneInput/PhoneInput.tsx +108 -108
  104. package/src/components/Inputs/PhoneInput/utils/countryCode.ts +20 -20
  105. package/src/components/Inputs/Radio.tsx +59 -59
  106. package/src/components/Inputs/RadioGroup.tsx +48 -48
  107. package/src/components/Inputs/RadioLarge.tsx +39 -39
  108. package/src/components/Inputs/SearchInput.tsx +46 -46
  109. package/src/components/Inputs/Selects/Select.tsx +17 -17
  110. package/src/components/Inputs/Selects/components/CustomSelectComponents.tsx +19 -20
  111. package/src/components/Inputs/Selects/components/SelectWrapper.tsx +118 -118
  112. package/src/components/Inputs/Selects/utils/selectStyles.ts +101 -101
  113. package/src/components/Inputs/TextAreaInput.tsx +68 -68
  114. package/src/components/Inputs/TextInput.tsx +100 -100
  115. package/src/components/Inputs/TimeInput/TimeInput.tsx +81 -81
  116. package/src/components/List/List.tsx +21 -21
  117. package/src/components/List/ListItem.tsx +70 -70
  118. package/src/components/Loader/Loader.tsx +59 -59
  119. package/src/components/Loader/ProgressBar.tsx +41 -41
  120. package/src/components/Menu/Menu.tsx +81 -81
  121. package/src/components/Menu/MenuItem.tsx +46 -46
  122. package/src/components/Menu/NewMenu.tsx +63 -63
  123. package/src/components/Menu/hooks/useMenuPosition.tsx +116 -116
  124. package/src/components/PageComponents/ScrollableContent.tsx +11 -0
  125. package/src/components/Pullover/Pullover.tsx +197 -197
  126. package/src/components/Router/Router.tsx +52 -52
  127. package/src/components/Sidebar/AddButton.tsx +22 -22
  128. package/src/components/Sidebar/Sidebar.tsx +85 -85
  129. package/src/components/Sidebar/SidebarItem.tsx +84 -84
  130. package/src/components/Sidebar/types/ISidebar.ts +28 -28
  131. package/src/components/Table/Table.tsx +259 -259
  132. package/src/components/Table/components/columns/ColumnsList.tsx +60 -60
  133. package/src/components/Table/components/columns/TableColumnsEdit.tsx +114 -114
  134. package/src/components/Table/components/edit/TableEditRow.tsx +78 -78
  135. package/src/components/Table/components/filters/FilterItem.tsx +15 -15
  136. package/src/components/Table/components/filters/TableFilters.tsx +126 -126
  137. package/src/components/Table/components/footer/TableFooter.tsx +126 -126
  138. package/src/components/Table/components/header/TableHeader.tsx +40 -40
  139. package/src/components/Table/components/header/TableHeaderRow.tsx +57 -57
  140. package/src/components/Table/components/items/TableItemActions.tsx +78 -78
  141. package/src/components/Table/components/print/TablePrint.tsx +200 -200
  142. package/src/components/Table/components/select/TableSelect.tsx +50 -50
  143. package/src/components/Table/components/sort/TableSort.tsx +73 -73
  144. package/src/components/Table/components/templates/CreateTemplateDialog.tsx +58 -58
  145. package/src/components/Table/components/templates/TableTemplates.tsx +65 -65
  146. package/src/components/Table/components/templates/TemplatesPullover.tsx +88 -88
  147. package/src/components/Table/contexts/TableContext.tsx +116 -116
  148. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  149. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +84 -84
  150. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +176 -176
  151. package/src/components/Table/hooks/localHooks/useLocalTablePagination.ts +12 -12
  152. package/src/components/Table/hooks/useTableColumns.ts +34 -34
  153. package/src/components/Table/hooks/useTableEdit.tsx +140 -140
  154. package/src/components/Table/hooks/useTableFilterFields.tsx +150 -150
  155. package/src/components/Table/hooks/useTablePagination.ts +19 -19
  156. package/src/components/Table/hooks/useTablePrint.ts +83 -83
  157. package/src/components/Table/hooks/useTableSearch.ts +31 -31
  158. package/src/components/Table/hooks/useTableSelect.ts +19 -19
  159. package/src/components/Table/hooks/useTableSort.ts +8 -8
  160. package/src/components/Tabs/Tabs.tsx +68 -68
  161. package/src/components/Tooltip/Tooltip.tsx +191 -191
  162. package/src/components/Tree/Tree.tsx +22 -22
  163. package/src/components/Tree/TreeItem.tsx +57 -57
  164. package/src/components/Wrappers/AppLayout.tsx +17 -17
  165. package/src/components/Wrappers/ConditionalWrapper.tsx +10 -10
  166. package/src/components/Wrappers/FormWrapper.tsx +84 -84
  167. package/src/components/Wrappers/PageLayout.tsx +164 -156
  168. package/src/hooks/useBackgroundClose.ts +19 -19
  169. package/src/hooks/useGetFocusableElements.ts +43 -43
  170. package/src/hooks/useIsMenuOpen.ts +11 -11
  171. package/src/hooks/useLocalPopoverControl.ts +32 -32
  172. package/src/hooks/usePopupControl.ts +22 -22
  173. package/src/hooks/useZendesk.ts +21 -21
  174. package/src/index.ts +381 -379
  175. package/src/pages/NoAccessPage.tsx +27 -27
  176. package/src/pages/NotFoundPage.tsx +26 -26
  177. package/src/styles/common/helpers/_color.scss +3 -0
  178. package/src/styles/components/_page.scss +0 -13
  179. package/src/types/IBasic.ts +32 -32
  180. package/src/types/IHeader.ts +40 -40
  181. package/src/types/IInfo.ts +1 -1
  182. package/src/types/IKeyboard.ts +33 -33
  183. package/src/types/IMenu.ts +19 -19
  184. package/src/types/INotifications.ts +15 -15
  185. package/src/types/IPopup.ts +17 -17
  186. package/src/types/IRouter.ts +6 -6
  187. package/src/types/ISelect.ts +54 -54
  188. package/src/types/ITab.ts +10 -10
  189. package/src/types/ITable.ts +290 -290
  190. package/src/utils/InputPatternValidation.ts +12 -12
  191. package/src/utils/dateUtils.ts +32 -32
  192. package/src/utils/fileUtils.ts +177 -177
  193. package/src/utils/i18n/i18nIUICyrilic.ts +119 -119
  194. package/src/utils/i18n/i18nIUILatin.ts +120 -120
  195. package/src/utils/i18n/i18nIUIMe.ts +118 -118
  196. package/src/utils/icons.ts +13 -13
  197. package/src/utils/localStorageHelper.ts +24 -24
  198. package/src/utils/logoUtils.ts +7 -7
  199. package/src/utils/numberUtils.ts +21 -21
  200. package/src/utils/objectUtils.ts +114 -114
  201. package/src/utils/popupUtils.ts +82 -82
  202. package/src/utils/rootDir.ts +1 -1
  203. package/src/utils/stringUtils.ts +18 -18
  204. package/src/utils/tableUtils.ts +130 -130
  205. package/src/utils/toasts.ts +6 -6
  206. package/src/utils/urlUtils.ts +4 -4
  207. package/dist/NoAccessPage-CJisyKrk.js +0 -2
  208. package/dist/NotFoundPage-BeRit0kr.js +0 -2
@@ -1,114 +1,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
+ 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 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
+ 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 || ''}}$`;