@inceptionbg/iui 2.0.25 → 2.0.27

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 (202) hide show
  1. package/dist/icons/index.d.ts +3 -1
  2. package/dist/icons/index.js +1 -1
  3. package/dist/index.d.ts +45 -31
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/iui.css +1 -1
  7. package/package.json +1 -1
  8. package/src/assets/icons/duotone/faBell.ts +17 -17
  9. package/src/assets/icons/duotone/faCircleUser.ts +17 -17
  10. package/src/assets/icons/index.ts +26 -25
  11. package/src/assets/icons/light/faArrowDownShortWide.ts +15 -15
  12. package/src/assets/icons/light/faArrowDownWideShort.ts +15 -15
  13. package/src/assets/icons/light/faArrowLeft.ts +15 -15
  14. package/src/assets/icons/light/faArrowRight.ts +15 -15
  15. package/src/assets/icons/light/faArrowUpArrowDown.ts +15 -15
  16. package/src/assets/icons/light/faArrowUpRightFromSquare.ts +15 -15
  17. package/src/assets/icons/light/faArrowsToLine.ts +15 -15
  18. package/src/assets/icons/light/faArrowsUpDown.ts +15 -15
  19. package/src/assets/icons/light/faBell.ts +15 -15
  20. package/src/assets/icons/light/faBookmark.ts +15 -15
  21. package/src/assets/icons/light/faBookmarkSlash.ts +15 -15
  22. package/src/assets/icons/light/faCalendarPlus.ts +15 -15
  23. package/src/assets/icons/light/faCheck.ts +15 -15
  24. package/src/assets/icons/light/faChevronDown.ts +15 -15
  25. package/src/assets/icons/light/faChevronRight.ts +15 -15
  26. package/src/assets/icons/light/faCircleCheck.ts +15 -0
  27. package/src/assets/icons/light/faCircleInfo.ts +15 -15
  28. package/src/assets/icons/light/faCircleXmark.ts +15 -15
  29. package/src/assets/icons/light/faClipboardCheck.ts +15 -15
  30. package/src/assets/icons/light/faClockRotateLeft.ts +15 -15
  31. package/src/assets/icons/light/faEllipsisVertical.ts +15 -15
  32. package/src/assets/icons/light/faEnvelope.ts +15 -15
  33. package/src/assets/icons/light/faEye.ts +15 -15
  34. package/src/assets/icons/light/faEyeSlash.ts +15 -15
  35. package/src/assets/icons/light/faFilter.ts +15 -15
  36. package/src/assets/icons/light/faGear.ts +15 -15
  37. package/src/assets/icons/light/faHouse.ts +15 -15
  38. package/src/assets/icons/light/faIdBadge.ts +15 -15
  39. package/src/assets/icons/light/faLineColumns.ts +15 -15
  40. package/src/assets/icons/light/faLink.ts +15 -15
  41. package/src/assets/icons/light/faMagnifyingGlass.ts +15 -15
  42. package/src/assets/icons/light/faPen.ts +15 -15
  43. package/src/assets/icons/light/faPrint.ts +15 -15
  44. package/src/assets/icons/light/faQuestion.ts +15 -15
  45. package/src/assets/icons/light/faRotateRight.ts +15 -15
  46. package/src/assets/icons/light/faTrashCan.ts +15 -15
  47. package/src/assets/icons/light/faTriangleExclamation.ts +15 -15
  48. package/src/assets/icons/light/faXmark.ts +15 -15
  49. package/src/assets/icons/regular/faArrowLeft.ts +15 -15
  50. package/src/assets/icons/regular/faArrowRightArrowLeft.ts +15 -15
  51. package/src/assets/icons/regular/faCircleCheck.ts +15 -15
  52. package/src/assets/icons/regular/faCircleExclamation.ts +15 -15
  53. package/src/assets/icons/regular/faCircleInfo.ts +15 -15
  54. package/src/assets/icons/regular/faFileArrowDown.ts +15 -15
  55. package/src/assets/icons/regular/faFilterCircleXmark.ts +15 -15
  56. package/src/assets/icons/regular/faTriangleExclamation.ts +15 -15
  57. package/src/assets/icons/solid/faAngleLeft.ts +15 -15
  58. package/src/assets/icons/solid/faAngleRight.ts +15 -15
  59. package/src/assets/icons/solid/faArrowDownWideShort.ts +15 -15
  60. package/src/assets/icons/solid/faCaretDown.ts +15 -15
  61. package/src/assets/icons/solid/faCheck.ts +15 -15
  62. package/src/assets/icons/solid/faEllipsisVertical.ts +15 -15
  63. package/src/assets/icons/solid/faEnvelopeDot.ts +15 -15
  64. package/src/assets/icons/solid/faFilter.ts +15 -15
  65. package/src/assets/icons/solid/faFloppyDisk.ts +15 -15
  66. package/src/assets/icons/solid/faGripDotsVertical.ts +15 -15
  67. package/src/assets/icons/solid/faListUl.ts +15 -15
  68. package/src/assets/icons/solid/faMinus.ts +15 -15
  69. package/src/assets/icons/solid/faPlus.ts +15 -15
  70. package/src/assets/icons/solid/faPrint.ts +15 -15
  71. package/src/assets/icons/solid/faRotateRight.ts +15 -15
  72. package/src/assets/icons/solid/faXmark.ts +15 -15
  73. package/src/components/Accordions/Accordions.tsx +75 -75
  74. package/src/components/Alert/Alert.tsx +31 -31
  75. package/src/components/Badge/DotBadge.tsx +16 -16
  76. package/src/components/Badge/NotificationBadge.tsx +29 -29
  77. package/src/components/Badge/PillBadge.tsx +13 -13
  78. package/src/components/Button/Button.tsx +56 -56
  79. package/src/components/Button/IconButton.tsx +51 -51
  80. package/src/components/Button/SplitButton.tsx +91 -91
  81. package/src/components/Dashboard/Dashboard.tsx +9 -9
  82. package/src/components/Dashboard/DashboardWidget.tsx +44 -44
  83. package/src/components/Dashboard/FastLinksWidget/FastLinksWidget.tsx +37 -37
  84. package/src/components/Dialog/Dialog.tsx +166 -166
  85. package/src/components/Dialog/components/DialogFooter.tsx +100 -100
  86. package/src/components/Header/Components/EnvBadge.tsx +17 -17
  87. package/src/components/Header/Components/ModuleSelect.tsx +68 -68
  88. package/src/components/Header/Components/Notifications.tsx +202 -202
  89. package/src/components/Header/Components/UserMenu.tsx +52 -52
  90. package/src/components/Header/Header.tsx +45 -37
  91. package/src/components/Helper/Collapse.tsx +53 -53
  92. package/src/components/Inputs/Checkbox.tsx +53 -53
  93. package/src/components/Inputs/CurrencyInput.tsx +124 -124
  94. package/src/components/Inputs/DateInput/DateInput.tsx +184 -184
  95. package/src/components/Inputs/DateInput/components/DatePartInput.tsx +159 -159
  96. package/src/components/Inputs/InputWrapper.tsx +95 -95
  97. package/src/components/Inputs/NumberInput.tsx +86 -86
  98. package/src/components/Inputs/PasswordInput.tsx +40 -40
  99. package/src/components/Inputs/PhoneInput/PhoneInput.tsx +108 -108
  100. package/src/components/Inputs/PhoneInput/utils/countryCode.ts +20 -20
  101. package/src/components/Inputs/Radio.tsx +59 -59
  102. package/src/components/Inputs/RadioGroup.tsx +48 -48
  103. package/src/components/Inputs/RadioLarge.tsx +39 -39
  104. package/src/components/Inputs/SearchInput.tsx +46 -46
  105. package/src/components/Inputs/Selects/Select.tsx +17 -17
  106. package/src/components/Inputs/Selects/components/CustomSelectComponents.tsx +19 -19
  107. package/src/components/Inputs/Selects/components/SelectWrapper.tsx +118 -118
  108. package/src/components/Inputs/Selects/utils/selectStyles.ts +101 -101
  109. package/src/components/Inputs/TextAreaInput.tsx +68 -68
  110. package/src/components/Inputs/TextInput.tsx +100 -100
  111. package/src/components/Inputs/TimeInput/TimeInput.tsx +81 -81
  112. package/src/components/List/List.tsx +21 -21
  113. package/src/components/List/ListItem.tsx +70 -70
  114. package/src/components/Loader/Loader.tsx +59 -59
  115. package/src/components/Loader/ProgressBar.tsx +41 -41
  116. package/src/components/Menu/Menu.tsx +81 -81
  117. package/src/components/Menu/MenuItem.tsx +46 -46
  118. package/src/components/Menu/NewMenu.tsx +63 -63
  119. package/src/components/Menu/hooks/useMenuPosition.tsx +116 -116
  120. package/src/components/PageComponents/ScrollableContent.tsx +11 -0
  121. package/src/components/Pullover/Pullover.tsx +197 -197
  122. package/src/components/Router/Router.tsx +52 -52
  123. package/src/components/Sidebar/AddButton.tsx +22 -22
  124. package/src/components/Sidebar/Sidebar.tsx +85 -85
  125. package/src/components/Sidebar/SidebarItem.tsx +84 -84
  126. package/src/components/Sidebar/types/ISidebar.ts +28 -28
  127. package/src/components/Table/Table.tsx +261 -259
  128. package/src/components/Table/components/columns/ColumnsList.tsx +60 -60
  129. package/src/components/Table/components/columns/TableColumnsEdit.tsx +114 -114
  130. package/src/components/Table/components/edit/TableEditRow.tsx +78 -78
  131. package/src/components/Table/components/filters/FilterItem.tsx +15 -15
  132. package/src/components/Table/components/filters/TableFilters.tsx +126 -126
  133. package/src/components/Table/components/footer/TableFooter.tsx +126 -126
  134. package/src/components/Table/components/header/TableHeader.tsx +40 -40
  135. package/src/components/Table/components/header/TableHeaderRow.tsx +57 -57
  136. package/src/components/Table/components/items/TableItemActions.tsx +78 -78
  137. package/src/components/Table/components/print/TablePrint.tsx +200 -200
  138. package/src/components/Table/components/select/TableSelect.tsx +50 -50
  139. package/src/components/Table/components/sort/TableSort.tsx +73 -73
  140. package/src/components/Table/components/templates/CreateTemplateDialog.tsx +58 -58
  141. package/src/components/Table/components/templates/TableTemplates.tsx +65 -65
  142. package/src/components/Table/components/templates/TemplatesPullover.tsx +88 -88
  143. package/src/components/Table/contexts/TableContext.tsx +117 -116
  144. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  145. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +82 -84
  146. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +175 -176
  147. package/src/components/Table/hooks/localHooks/useLocalTablePagination.ts +12 -12
  148. package/src/components/Table/hooks/useTableColumns.ts +34 -34
  149. package/src/components/Table/hooks/useTableEdit.tsx +140 -140
  150. package/src/components/Table/hooks/useTableFilterFields.tsx +150 -150
  151. package/src/components/Table/hooks/useTablePagination.ts +19 -19
  152. package/src/components/Table/hooks/useTablePrint.ts +83 -83
  153. package/src/components/Table/hooks/useTableSearch.ts +31 -31
  154. package/src/components/Table/hooks/useTableSelect.ts +19 -19
  155. package/src/components/Table/hooks/useTableSort.ts +8 -8
  156. package/src/components/Tabs/Tabs.tsx +68 -68
  157. package/src/components/Tooltip/Tooltip.tsx +191 -191
  158. package/src/components/Tree/Tree.tsx +22 -22
  159. package/src/components/Tree/TreeItem.tsx +57 -57
  160. package/src/components/Wrappers/AppLayout.tsx +17 -17
  161. package/src/components/Wrappers/ConditionalWrapper.tsx +10 -10
  162. package/src/components/Wrappers/FormWrapper.tsx +84 -84
  163. package/src/components/Wrappers/PageLayout.tsx +164 -156
  164. package/src/hooks/useBackgroundClose.ts +19 -19
  165. package/src/hooks/useGetFocusableElements.ts +43 -43
  166. package/src/hooks/useIsMenuOpen.ts +11 -11
  167. package/src/hooks/useLocalPopoverControl.ts +32 -32
  168. package/src/hooks/usePopupControl.ts +22 -22
  169. package/src/hooks/useZendesk.ts +21 -21
  170. package/src/index.ts +381 -379
  171. package/src/pages/NoAccessPage.tsx +27 -27
  172. package/src/pages/NotFoundPage.tsx +26 -26
  173. package/src/styles/common/helpers/_color.scss +3 -0
  174. package/src/styles/components/_page.scss +0 -13
  175. package/src/types/IBasic.ts +32 -32
  176. package/src/types/IHeader.ts +40 -40
  177. package/src/types/IInfo.ts +1 -1
  178. package/src/types/IKeyboard.ts +33 -33
  179. package/src/types/IMenu.ts +19 -19
  180. package/src/types/INotifications.ts +15 -15
  181. package/src/types/IPopup.ts +17 -17
  182. package/src/types/IRouter.ts +6 -6
  183. package/src/types/ISelect.ts +54 -54
  184. package/src/types/ITab.ts +10 -10
  185. package/src/types/ITable.ts +291 -290
  186. package/src/utils/InputPatternValidation.ts +12 -12
  187. package/src/utils/dateUtils.ts +32 -32
  188. package/src/utils/fileUtils.ts +177 -177
  189. package/src/utils/i18n/i18nIUICyrilic.ts +119 -119
  190. package/src/utils/i18n/i18nIUILatin.ts +120 -120
  191. package/src/utils/i18n/i18nIUIMe.ts +118 -118
  192. package/src/utils/icons.ts +13 -13
  193. package/src/utils/localStorageHelper.ts +24 -24
  194. package/src/utils/logoUtils.ts +7 -7
  195. package/src/utils/numberUtils.ts +21 -21
  196. package/src/utils/objectUtils.ts +114 -114
  197. package/src/utils/popupUtils.ts +82 -82
  198. package/src/utils/rootDir.ts +1 -1
  199. package/src/utils/stringUtils.ts +18 -18
  200. package/src/utils/tableUtils.ts +130 -130
  201. package/src/utils/toasts.ts +6 -6
  202. package/src/utils/urlUtils.ts +4 -4
@@ -1,290 +1,291 @@
1
- import type {
2
- Dispatch,
3
- MouseEvent,
4
- ReactElement,
5
- ReactNode,
6
- SetStateAction,
7
- } from 'react';
8
- import type { IAnyObject, ISimpleObject } from './IBasic';
9
- import type { ITableKeyboardActionsBase } from './IKeyboard';
10
- import type { IPopupControl } from './IPopup';
11
-
12
- export interface ITable<T = unknown> {
13
- id?: string;
14
- columnData: ITableColumnsData;
15
- data: ITableDataItem<T>[];
16
- dataActions?: ITableDataActions<T>;
17
- rowSelect?: {
18
- selectedRows: Set<string>;
19
- setSelectedRows: Dispatch<SetStateAction<Set<string>>>;
20
- actions?: ITableSelectedAction[];
21
- };
22
- filterData?: ITableFilterData;
23
- sortData?: ITableSortData;
24
- templateData?: ITableTemplateData;
25
- printData?: IPrintData<T>;
26
- sumRows?: ITableDataItem<T>[];
27
- editable?: ITableEdit<T>;
28
- selectedRowUuid?: string;
29
- itemDeleteData?: ITableItemDeleteData;
30
- keyboard?: {
31
- enabled: boolean;
32
- actions?: ITableKeyboardActionsBase;
33
- };
34
- headerWrap?: boolean;
35
- customHeader?: ITableColumn[][];
36
- // customPrintData?: ICustomPrintData;
37
- // additionsalOptions?: ReactNode;
38
- footer?: {
39
- paginationControl?: IPaginationControl;
40
- customPagination?: {
41
- defaultLimit?: number;
42
- customLimit?: number[];
43
- };
44
- totalRows?: number;
45
- // noTotalRows?: boolean;
46
- refetch?: () => void;
47
- };
48
- isLoading?: boolean;
49
- className?: string;
50
- rowHeight?: 'xs' | 's' | 'm';
51
- maxHeight?: string;
52
- }
53
-
54
- export interface ITableColumn {
55
- id: string;
56
- label?: string | ReactElement;
57
- labelForFilter?: string;
58
- align?: 'center' | 'left' | 'right' | 'justify' | undefined;
59
- unavailable?: boolean;
60
- hidden?: boolean;
61
- printHidden?: boolean;
62
- width?: string;
63
- minWidth?: string;
64
- colSpan?: number;
65
- rowSpan?: number;
66
- break?: boolean;
67
- color?: 'secondary';
68
- sticky?: boolean;
69
- sortOptions?: {
70
- asc: string;
71
- desc: string;
72
- label: string;
73
- };
74
- notFirstCell?: boolean;
75
- // code?: string;
76
- className?: string;
77
- }
78
-
79
- export interface ITableDataItem<T = unknown> {
80
- uuid: string;
81
- onRowClick?: (event?: MouseEvent<HTMLTableRowElement>) => void;
82
- className?: string;
83
- item?: T;
84
- disableSelect?: boolean;
85
- cells: ITableDataItemCells;
86
- extendable?: {
87
- element: ReactElement;
88
- isLoading?: boolean;
89
- };
90
- }
91
- export interface ITableDataItemCells {
92
- [id: string]: {
93
- value: any;
94
- align?: ITableColumn['align'];
95
- className?: string;
96
- onClick?: (event?: MouseEvent<HTMLTableCellElement>) => void;
97
- link?: boolean;
98
- tooltip?: string;
99
- span?: number;
100
- unclickable?: boolean;
101
- printValue?: string;
102
- };
103
- }
104
-
105
- export interface ITableDataActions<T = unknown> {
106
- hasEditAccess?: boolean;
107
- actions?: (item?: T) => {
108
- label: string;
109
- onClick: () => void;
110
- hasAccess: boolean;
111
- disabled?: boolean;
112
- }[];
113
- }
114
- export interface ITableFilterData {
115
- filters: ITableFilter;
116
- customFilterIdList?: string[];
117
- activeFilterNo?: number;
118
- additionalFilters?: ReactElement;
119
- defaultSearch?: IAnyObject;
120
- search: IAnyObject;
121
- searchData: IAnyObject;
122
- setSearchData: (search: IAnyObject) => void;
123
- onSearch: (search: IAnyObject) => void;
124
- excludeFromSearch?: string[];
125
- }
126
-
127
- export interface ITableFilterItem {
128
- label: string;
129
- field: ReactElement;
130
- }
131
- export interface ITableFilter {
132
- [id: string]: ITableFilterItem;
133
- }
134
-
135
- export interface ITableSortData {
136
- sort: string;
137
- setSort: (sort: string) => void;
138
- sortOptions: ITableSort[];
139
- menuSize?: 's' | 'm' | 'l';
140
- }
141
- export interface ITableSort {
142
- label: string;
143
- value: string;
144
- }
145
-
146
- export interface ITableColumnsData {
147
- defaultColumns: ITableColumn[];
148
- columns: ITableColumn[];
149
- setColumns?: (columns: ITableColumn[]) => void;
150
- // withSearch?: boolean;
151
- }
152
- export interface ITableSelectedAction {
153
- label: string;
154
- onClick: (selected: Set<string>) => void;
155
- hidden?: boolean;
156
- disabled?: boolean;
157
- clearSelected?: boolean;
158
- }
159
-
160
- export interface ITableTemplateData {
161
- identifier: string;
162
- popupController: IPopupControl;
163
- defaultTemplate?: IReportTemplate;
164
- items: IReportTemplate[];
165
- isLoading?: boolean;
166
- isFetching?: boolean;
167
- setSearch?: (search: string) => void;
168
- setItemToDeleteUuids: (itemUuids: string[]) => void;
169
- DeleteDialog: ReactNode;
170
- createItem: {
171
- allowPublicCreate?: boolean;
172
- onCreate: (data: Partial<IReportTemplate>) => void;
173
- onCreateDefault: () => void;
174
- };
175
- }
176
-
177
- ///// EDIT /////
178
- export interface ITableEdit<T = unknown> {
179
- selectedItem: ITableDataItem<T> | null;
180
- setSelectedItem: (item: ITableDataItem<T> | null) => void;
181
- editData: Partial<T>;
182
- setEditData: Dispatch<SetStateAction<Partial<T>>>;
183
- onSubmit: ITableEditSubmit<T>;
184
- cells: ITableDataItemCells;
185
- defaultDataValue?: T;
186
- addDisabled?: boolean;
187
- addLabel?: string;
188
- // inputFocusRef?: RefObject<any>;
189
- keepEditOnSubmit?: boolean;
190
- }
191
-
192
- export type ITableEditSubmit<T> = (data: T, onSuccess: () => void) => void;
193
-
194
- ///// DELETE /////
195
- export interface ITableItemDeleteData {
196
- hasAccess: boolean;
197
- itemToDeleteUuids: string[];
198
- setItemToDeleteUuids: Dispatch<SetStateAction<string[]>>;
199
- DeleteDialog: ReactNode;
200
- }
201
-
202
- ///// PRINT /////
203
- export interface IBasePrintData {
204
- label: string;
205
- organization?: {
206
- name?: string;
207
- taxId?: string;
208
- registrationNumber?: string;
209
- jbkjs?: string;
210
- email?: string;
211
- };
212
- filters?: {
213
- basic?: { label: string; value?: string }[];
214
- date?: { label: string; from?: string; to?: string }[];
215
- };
216
- saveXlsx?: () => void;
217
- }
218
-
219
- export type IGetPrintData<T> = (props: {
220
- pagination: IPagination;
221
- noTotalRows?: boolean;
222
- }) => Promise<{ items: T[]; totalRows?: number }>;
223
-
224
- export interface IPrintData<T = unknown> extends IBasePrintData {
225
- printPopupControl: IPopupControl;
226
- customHeader?: ITableColumn[][];
227
- isLoading?: boolean;
228
- progress?: number;
229
- tableData?: ITableDataItem[];
230
- items?: T[];
231
- paginationControl?: IPaginationControl;
232
- totals?: ITableDataItem;
233
- optionalNode?: {
234
- aboveTable?: ReactNode;
235
- bellowTable?: ReactNode;
236
- };
237
- }
238
-
239
- export interface ICustomPrintData extends IBasePrintData {
240
- content: ReactNode;
241
- }
242
- ///////////////
243
-
244
- ///// PAGINATION /////
245
- export interface IPagination {
246
- limit: number;
247
- offset: number;
248
- }
249
- export interface IPaginationControl {
250
- limit: number;
251
- offset: number;
252
- setLimit: Dispatch<SetStateAction<number>>;
253
- setOffset: Dispatch<SetStateAction<number>>;
254
- }
255
-
256
- ///// REPORT TEMPLATE /////
257
-
258
- export interface IReportTemplate {
259
- uuid: string;
260
- name: string;
261
- identifier: string;
262
- filterValues?: IReportTemplateFilterValue[];
263
- options?: { key: string; value?: any }[];
264
- columns: string[];
265
- organization?: ISimpleObject;
266
- subsystem?: string; // IModuleId;
267
- sorts?: string[];
268
- isPublic?: boolean;
269
- isDefault?: boolean;
270
- order?: number;
271
- createdAt?: string;
272
- createdBy?: ISimpleObject;
273
- }
274
-
275
- export interface IReportTemplateFilterValue {
276
- filter: string;
277
- value: string;
278
- name?: string;
279
- type: 'STRING' | 'ARRAY' | 'OBJECT' | 'BOOLEAN';
280
- }
281
-
282
- export interface IReportTemplateData {
283
- searchData?: IAnyObject;
284
- visibleColumns?: string[];
285
- sorts?: string[];
286
- options?: { key: string; value?: any }[];
287
- }
288
-
289
- export const tableStandardLimit = [5, 10, 25, 50, 100];
290
- export const tableCustomLimit1000 = [...tableStandardLimit, 1000];
1
+ import type {
2
+ Dispatch,
3
+ MouseEvent,
4
+ ReactElement,
5
+ ReactNode,
6
+ SetStateAction,
7
+ } from 'react';
8
+ import type { IAnyObject, ISimpleObject } from './IBasic';
9
+ import type { ITableKeyboardActionsBase } from './IKeyboard';
10
+ import type { IPopupControl } from './IPopup';
11
+
12
+ export interface ITable<T = unknown> {
13
+ id?: string;
14
+ columnData: ITableColumnsData;
15
+ data: ITableDataItem<T>[];
16
+ dataActions?: ITableDataActions<T>;
17
+ rowSelect?: {
18
+ selectedRows: Set<string>;
19
+ setSelectedRows: Dispatch<SetStateAction<Set<string>>>;
20
+ actions?: ITableSelectedAction[];
21
+ };
22
+ filterData?: ITableFilterData;
23
+ sortData?: ITableSortData;
24
+ templateData?: ITableTemplateData;
25
+ printData?: IPrintData<T>;
26
+ sumRows?: ITableDataItem<T>[];
27
+ editable?: ITableEdit<T>;
28
+ selectedRowUuid?: string;
29
+ itemDeleteData?: ITableItemDeleteData;
30
+ keyboard?: {
31
+ enabled: boolean;
32
+ actions?: ITableKeyboardActionsBase;
33
+ };
34
+ headerWrap?: boolean;
35
+ customHeader?: ITableColumn[][];
36
+ // customPrintData?: ICustomPrintData;
37
+ // additionsalOptions?: ReactNode;
38
+ footer?: {
39
+ paginationControl?: IPaginationControl;
40
+ customPagination?: {
41
+ defaultLimit?: number;
42
+ customLimit?: number[];
43
+ };
44
+ totalRows?: number;
45
+ // noTotalRows?: boolean;
46
+ refetch?: () => void;
47
+ hidden?: boolean;
48
+ };
49
+ isLoading?: boolean;
50
+ className?: string;
51
+ rowHeight?: 'xs' | 's' | 'm';
52
+ maxHeight?: string;
53
+ }
54
+
55
+ export interface ITableColumn {
56
+ id: string;
57
+ label?: string | ReactElement;
58
+ labelForFilter?: string;
59
+ align?: 'center' | 'left' | 'right' | 'justify' | undefined;
60
+ unavailable?: boolean;
61
+ hidden?: boolean;
62
+ printHidden?: boolean;
63
+ width?: string;
64
+ minWidth?: string;
65
+ colSpan?: number;
66
+ rowSpan?: number;
67
+ break?: boolean;
68
+ color?: 'secondary';
69
+ sticky?: boolean;
70
+ sortOptions?: {
71
+ asc: string;
72
+ desc: string;
73
+ label: string;
74
+ };
75
+ notFirstCell?: boolean;
76
+ // code?: string;
77
+ className?: string;
78
+ }
79
+
80
+ export interface ITableDataItem<T = unknown> {
81
+ uuid: string;
82
+ onRowClick?: (event?: MouseEvent<HTMLTableRowElement>) => void;
83
+ className?: string;
84
+ item?: T;
85
+ disableSelect?: boolean;
86
+ cells: ITableDataItemCells;
87
+ extendable?: {
88
+ element: ReactElement;
89
+ isLoading?: boolean;
90
+ };
91
+ }
92
+ export interface ITableDataItemCells {
93
+ [id: string]: {
94
+ value: any;
95
+ align?: ITableColumn['align'];
96
+ className?: string;
97
+ onClick?: (event?: MouseEvent<HTMLTableCellElement>) => void;
98
+ link?: boolean;
99
+ tooltip?: string;
100
+ span?: number;
101
+ unclickable?: boolean;
102
+ printValue?: string;
103
+ };
104
+ }
105
+
106
+ export interface ITableDataActions<T = unknown> {
107
+ hasEditAccess?: boolean;
108
+ actions?: (item?: T) => {
109
+ label: string;
110
+ onClick: () => void;
111
+ hasAccess: boolean;
112
+ disabled?: boolean;
113
+ }[];
114
+ }
115
+ export interface ITableFilterData {
116
+ filters: ITableFilter;
117
+ customFilterIdList?: string[];
118
+ activeFilterNo?: number;
119
+ additionalFilters?: ReactElement;
120
+ defaultSearch?: IAnyObject;
121
+ search: IAnyObject;
122
+ searchData: IAnyObject;
123
+ setSearchData: (search: IAnyObject) => void;
124
+ onSearch: (search: IAnyObject) => void;
125
+ excludeFromSearch?: string[];
126
+ }
127
+
128
+ export interface ITableFilterItem {
129
+ label: string;
130
+ field: ReactElement;
131
+ }
132
+ export interface ITableFilter {
133
+ [id: string]: ITableFilterItem;
134
+ }
135
+
136
+ export interface ITableSortData {
137
+ sort: string;
138
+ setSort: (sort: string) => void;
139
+ sortOptions: ITableSort[];
140
+ menuSize?: 's' | 'm' | 'l';
141
+ }
142
+ export interface ITableSort {
143
+ label: string;
144
+ value: string;
145
+ }
146
+
147
+ export interface ITableColumnsData {
148
+ defaultColumns: ITableColumn[];
149
+ columns: ITableColumn[];
150
+ setColumns?: (columns: ITableColumn[]) => void;
151
+ // withSearch?: boolean;
152
+ }
153
+ export interface ITableSelectedAction {
154
+ label: string;
155
+ onClick: (selected: Set<string>) => void;
156
+ hidden?: boolean;
157
+ disabled?: boolean;
158
+ clearSelected?: boolean;
159
+ }
160
+
161
+ export interface ITableTemplateData {
162
+ identifier: string;
163
+ popupController: IPopupControl;
164
+ defaultTemplate?: IReportTemplate;
165
+ items: IReportTemplate[];
166
+ isLoading?: boolean;
167
+ isFetching?: boolean;
168
+ setSearch?: (search: string) => void;
169
+ setItemToDeleteUuids: (itemUuids: string[]) => void;
170
+ DeleteDialog: ReactNode;
171
+ createItem: {
172
+ allowPublicCreate?: boolean;
173
+ onCreate: (data: Partial<IReportTemplate>) => void;
174
+ onCreateDefault: () => void;
175
+ };
176
+ }
177
+
178
+ ///// EDIT /////
179
+ export interface ITableEdit<T = unknown> {
180
+ selectedItem: ITableDataItem<T> | null;
181
+ setSelectedItem: (item: ITableDataItem<T> | null) => void;
182
+ editData: Partial<T>;
183
+ setEditData: Dispatch<SetStateAction<Partial<T>>>;
184
+ onSubmit: ITableEditSubmit<T>;
185
+ cells: ITableDataItemCells;
186
+ defaultDataValue?: T;
187
+ addDisabled?: boolean;
188
+ addLabel?: string;
189
+ // inputFocusRef?: RefObject<any>;
190
+ keepEditOnSubmit?: boolean;
191
+ }
192
+
193
+ export type ITableEditSubmit<T> = (data: T, onSuccess: () => void) => void;
194
+
195
+ ///// DELETE /////
196
+ export interface ITableItemDeleteData {
197
+ hasAccess: boolean;
198
+ itemToDeleteUuids: string[];
199
+ setItemToDeleteUuids: Dispatch<SetStateAction<string[]>>;
200
+ DeleteDialog: ReactNode;
201
+ }
202
+
203
+ ///// PRINT /////
204
+ export interface IBasePrintData {
205
+ label: string;
206
+ organization?: {
207
+ name?: string;
208
+ taxId?: string;
209
+ registrationNumber?: string;
210
+ jbkjs?: string;
211
+ email?: string;
212
+ };
213
+ filters?: {
214
+ basic?: { label: string; value?: string }[];
215
+ date?: { label: string; from?: string; to?: string }[];
216
+ };
217
+ saveXlsx?: () => void;
218
+ }
219
+
220
+ export type IGetPrintData<T> = (props: {
221
+ pagination: IPagination;
222
+ noTotalRows?: boolean;
223
+ }) => Promise<{ items: T[]; totalRows?: number }>;
224
+
225
+ export interface IPrintData<T = unknown> extends IBasePrintData {
226
+ printPopupControl: IPopupControl;
227
+ customHeader?: ITableColumn[][];
228
+ isLoading?: boolean;
229
+ progress?: number;
230
+ tableData?: ITableDataItem[];
231
+ items?: T[];
232
+ paginationControl?: IPaginationControl;
233
+ totals?: ITableDataItem;
234
+ optionalNode?: {
235
+ aboveTable?: ReactNode;
236
+ bellowTable?: ReactNode;
237
+ };
238
+ }
239
+
240
+ export interface ICustomPrintData extends IBasePrintData {
241
+ content: ReactNode;
242
+ }
243
+ ///////////////
244
+
245
+ ///// PAGINATION /////
246
+ export interface IPagination {
247
+ limit: number;
248
+ offset: number;
249
+ }
250
+ export interface IPaginationControl {
251
+ limit: number;
252
+ offset: number;
253
+ setLimit: Dispatch<SetStateAction<number>>;
254
+ setOffset: Dispatch<SetStateAction<number>>;
255
+ }
256
+
257
+ ///// REPORT TEMPLATE /////
258
+
259
+ export interface IReportTemplate {
260
+ uuid: string;
261
+ name: string;
262
+ identifier: string;
263
+ filterValues?: IReportTemplateFilterValue[];
264
+ options?: { key: string; value?: any }[];
265
+ columns: string[];
266
+ organization?: ISimpleObject;
267
+ subsystem?: string; // IModuleId;
268
+ sorts?: string[];
269
+ isPublic?: boolean;
270
+ isDefault?: boolean;
271
+ order?: number;
272
+ createdAt?: string;
273
+ createdBy?: ISimpleObject;
274
+ }
275
+
276
+ export interface IReportTemplateFilterValue {
277
+ filter: string;
278
+ value: string;
279
+ name?: string;
280
+ type: 'STRING' | 'ARRAY' | 'OBJECT' | 'BOOLEAN';
281
+ }
282
+
283
+ export interface IReportTemplateData {
284
+ searchData?: IAnyObject;
285
+ visibleColumns?: string[];
286
+ sorts?: string[];
287
+ options?: { key: string; value?: any }[];
288
+ }
289
+
290
+ export const tableStandardLimit = [5, 10, 25, 50, 100];
291
+ export const tableCustomLimit1000 = [...tableStandardLimit, 1000];
@@ -1,12 +1,12 @@
1
- export const inputPattern = {
2
- taxId: '^\\d{9}$',
3
- businessCode: '^\\d{8}$',
4
- umcn: '^\\d{13}$',
5
- idCardNumber: '^\\d{9}$',
6
- phoneNumber: '^\\+\\d{11,13}$',
7
- port: '^\\d{4}$',
8
- year: '^\\d{4}$',
9
- number: '^\\d*$',
10
- strongPassword: '^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$',
11
- email: '\\S+@\\S+\\.\\S+',
12
- };
1
+ export const inputPattern = {
2
+ taxId: '^\\d{9}$',
3
+ businessCode: '^\\d{8}$',
4
+ umcn: '^\\d{13}$',
5
+ idCardNumber: '^\\d{9}$',
6
+ phoneNumber: '^\\+\\d{11,13}$',
7
+ port: '^\\d{4}$',
8
+ year: '^\\d{4}$',
9
+ number: '^\\d*$',
10
+ strongPassword: '^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$',
11
+ email: '\\S+@\\S+\\.\\S+',
12
+ };