@inceptionbg/iui 2.0.25 → 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 (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 +44 -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 +259 -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 +116 -116
  144. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  145. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +84 -84
  146. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +176 -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 +290 -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,290 @@
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
+ };
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,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
+ };
@@ -1,32 +1,32 @@
1
- import dayjs from 'dayjs';
2
-
3
- type inputDate = string | Date | dayjs.Dayjs;
4
-
5
- export const formatDate = (date?: inputDate) =>
6
- date ? dayjs(date).format(`DD.MM.YYYY.`) : '/';
7
- export const formatDateYMD = (date: inputDate) => dayjs(date).format(`YYYY-MM-DD`);
8
-
9
- export const formatDateAndTime = (date?: inputDate, withSeconds?: boolean) =>
10
- date ? dayjs(date).format(`DD.MM.YYYY. HH:mm${withSeconds ? ':ss' : ''}`) : '/';
11
-
12
- export const formatTime = (date?: inputDate, withSeconds?: boolean) =>
13
- date ? dayjs(date).format(`HH:mm${withSeconds ? ':ss' : ''}`) : '/';
14
-
15
- export const dateAddDays = (date: inputDate, addDays: number) =>
16
- dayjs(date).add(addDays, 'days').toISOString();
17
-
18
- export const checkIfExpired = (date?: inputDate) =>
19
- date ? dayjs().isAfter(dayjs(date)) : false;
20
-
21
- export const getCurrentDateFormatted = () => dayjs().format('DD.MM.YYYY.').toString();
22
- export const getCurrentDateFormattedYMD = () => dayjs().format('YYYY-MM-DD').toString();
23
-
24
- export const getDaysLeft = (date?: inputDate) => dayjs(date).diff(new Date(), 'days');
25
-
26
- export const formatYearMonth = (year: number, month: number) =>
27
- `${year}-${month < 10 ? `0${month}` : month}`;
28
-
29
- // export const getDayInputRegex = (max: number) =>
30
- // `(0[1-9]|1[0-9]|2[0-${max === 28 ? "8" : "9"}]${
31
- // max > 29 && `|3[0${max > 30 && "-1"}]`
32
- // })`;
1
+ import dayjs from 'dayjs';
2
+
3
+ type inputDate = string | Date | dayjs.Dayjs;
4
+
5
+ export const formatDate = (date?: inputDate) =>
6
+ date ? dayjs(date).format(`DD.MM.YYYY.`) : '/';
7
+ export const formatDateYMD = (date: inputDate) => dayjs(date).format(`YYYY-MM-DD`);
8
+
9
+ export const formatDateAndTime = (date?: inputDate, withSeconds?: boolean) =>
10
+ date ? dayjs(date).format(`DD.MM.YYYY. HH:mm${withSeconds ? ':ss' : ''}`) : '/';
11
+
12
+ export const formatTime = (date?: inputDate, withSeconds?: boolean) =>
13
+ date ? dayjs(date).format(`HH:mm${withSeconds ? ':ss' : ''}`) : '/';
14
+
15
+ export const dateAddDays = (date: inputDate, addDays: number) =>
16
+ dayjs(date).add(addDays, 'days').toISOString();
17
+
18
+ export const checkIfExpired = (date?: inputDate) =>
19
+ date ? dayjs().isAfter(dayjs(date)) : false;
20
+
21
+ export const getCurrentDateFormatted = () => dayjs().format('DD.MM.YYYY.').toString();
22
+ export const getCurrentDateFormattedYMD = () => dayjs().format('YYYY-MM-DD').toString();
23
+
24
+ export const getDaysLeft = (date?: inputDate) => dayjs(date).diff(new Date(), 'days');
25
+
26
+ export const formatYearMonth = (year: number, month: number) =>
27
+ `${year}-${month < 10 ? `0${month}` : month}`;
28
+
29
+ // export const getDayInputRegex = (max: number) =>
30
+ // `(0[1-9]|1[0-9]|2[0-${max === 28 ? "8" : "9"}]${
31
+ // max > 29 && `|3[0${max > 30 && "-1"}]`
32
+ // })`;