@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,281 +1,290 @@
1
- import { Dispatch, MouseEvent, ReactElement, ReactNode, SetStateAction } from 'react';
2
- import { IAnyObject, ISimpleObject } from './IBasic';
3
- import { ITableKeyboardActionsBase } from './IKeyboard';
4
- import { IPopupControl } from './IPopup';
5
-
6
- export interface ITable<T = unknown> {
7
- id?: string;
8
- columnData: ITableColumnsData;
9
- data: ITableDataItem<T>[];
10
- dataActions?: ITableDataActions<T>;
11
- rowSelect?: {
12
- selectedRows: Set<string>;
13
- setSelectedRows: Dispatch<SetStateAction<Set<string>>>;
14
- actions?: ITableSelectedAction[];
15
- };
16
- filterData?: ITableFilterData;
17
- sortData?: ITableSortData;
18
- templateData?: ITableTemplateData;
19
- printData?: IPrintData<T>;
20
- sumRows?: ITableDataItem<T>[];
21
- editable?: ITableEdit<T>;
22
- selectedRowUuid?: string;
23
- itemDeleteData?: ITableItemDeleteData;
24
- keyboard?: {
25
- enabled: boolean;
26
- actions?: ITableKeyboardActionsBase;
27
- };
28
- headerWrap?: boolean;
29
- customHeader?: ITableColumn[][];
30
- // customPrintData?: ICustomPrintData;
31
- // additionsalOptions?: ReactNode;
32
- footer?: {
33
- paginationControl?: IPaginationControl;
34
- customPagination?: {
35
- defaultLimit?: number;
36
- customLimit?: number[];
37
- };
38
- totalRows?: number;
39
- // noTotalRows?: boolean;
40
- refetch?: () => void;
41
- };
42
- isLoading?: boolean;
43
- className?: string;
44
- rowHeight?: 'xs' | 's' | 'm';
45
- maxHeight?: string;
46
- }
47
-
48
- export interface ITableColumn {
49
- id: string;
50
- label?: string | ReactElement;
51
- labelForFilter?: string;
52
- align?: 'center' | 'left' | 'right' | 'justify' | undefined;
53
- unavailable?: boolean;
54
- hidden?: boolean;
55
- printHidden?: boolean;
56
- width?: string;
57
- minWidth?: string;
58
- colSpan?: number;
59
- rowSpan?: number;
60
- break?: boolean;
61
- color?: 'secondary';
62
- sticky?: boolean;
63
- sortOptions?: {
64
- asc: string;
65
- desc: string;
66
- label: string;
67
- };
68
- notFirstCell?: boolean;
69
- // code?: string;
70
- className?: string;
71
- }
72
-
73
- export interface ITableDataItem<T = unknown> {
74
- uuid: string;
75
- onRowClick?: (event?: MouseEvent<HTMLTableRowElement>) => void;
76
- className?: string;
77
- item?: T;
78
- disableSelect?: boolean;
79
- cells: ITableDataItemCells;
80
- extendable?: {
81
- element: ReactElement;
82
- isLoading?: boolean;
83
- };
84
- }
85
- export interface ITableDataItemCells {
86
- [id: string]: {
87
- value: any;
88
- align?: ITableColumn['align'];
89
- className?: string;
90
- onClick?: (event?: MouseEvent<HTMLTableCellElement>) => void;
91
- link?: boolean;
92
- tooltip?: string;
93
- span?: number;
94
- unclickable?: boolean;
95
- printValue?: string;
96
- };
97
- }
98
-
99
- export interface ITableDataActions<T = unknown> {
100
- hasEditAccess?: boolean;
101
- actions?: (item?: T) => {
102
- label: string;
103
- onClick: () => void;
104
- hasAccess: boolean;
105
- disabled?: boolean;
106
- }[];
107
- }
108
- export interface ITableFilterData {
109
- filters: ITableFilter;
110
- customFilterIdList?: string[];
111
- activeFilterNo?: number;
112
- additionalFilters?: ReactElement;
113
- defaultSearch?: IAnyObject;
114
- search: IAnyObject;
115
- searchData: IAnyObject;
116
- setSearchData: (search: IAnyObject) => void;
117
- onSearch: (search: IAnyObject) => void;
118
- excludeFromSearch?: string[];
119
- }
120
-
121
- export interface ITableFilterItem {
122
- label: string;
123
- field: ReactElement;
124
- }
125
- export interface ITableFilter {
126
- [id: string]: ITableFilterItem;
127
- }
128
-
129
- export interface ITableSortData {
130
- sort: string;
131
- setSort: (sort: string) => void;
132
- sortOptions: ITableSort[];
133
- menuSize?: 's' | 'm' | 'l';
134
- }
135
- export interface ITableSort {
136
- label: string;
137
- value: string;
138
- }
139
-
140
- export interface ITableColumnsData {
141
- defaultColumns: ITableColumn[];
142
- columns: ITableColumn[];
143
- setColumns?: (columns: ITableColumn[]) => void;
144
- // withSearch?: boolean;
145
- }
146
- export interface ITableSelectedAction {
147
- label: string;
148
- onClick: (selected: Set<string>) => void;
149
- hidden?: boolean;
150
- disabled?: boolean;
151
- clearSelected?: boolean;
152
- }
153
-
154
- export interface ITableTemplateData {
155
- identifier: string;
156
- popupController: IPopupControl;
157
- defaultTemplate?: IReportTemplate;
158
- items: IReportTemplate[];
159
- isLoading?: boolean;
160
- isFetching?: boolean;
161
- setSearch?: (search: string) => void;
162
- setItemToDeleteUuids: (itemUuids: string[]) => void;
163
- DeleteDialog: ReactNode;
164
- createItem: {
165
- allowPublicCreate?: boolean;
166
- onCreate: (data: Partial<IReportTemplate>) => void;
167
- onCreateDefault: () => void;
168
- };
169
- }
170
- ///// EDIT /////
171
- export interface ITableEdit<T = unknown> {
172
- selectedItem: ITableDataItem<T> | null;
173
- setSelectedItem: (item: ITableDataItem<T> | null) => void;
174
- editData: Partial<T>;
175
- setEditData: Dispatch<SetStateAction<Partial<T>>>;
176
- onSubmit: (data: T, onSubmitCallback: () => void) => void;
177
- cells: ITableDataItemCells;
178
- defaultDataValue?: T;
179
- addDisabled?: boolean;
180
- addLabel?: string;
181
- // inputFocusRef?: RefObject<any>;
182
- keepEditOnSubmit?: boolean;
183
- }
184
-
185
- ///// DELETE /////
186
- export interface ITableItemDeleteData {
187
- hasAccess: boolean;
188
- itemToDeleteUuids: string[];
189
- setItemToDeleteUuids: Dispatch<SetStateAction<string[]>>;
190
- DeleteDialog: ReactNode;
191
- }
192
-
193
- ///// PRINT /////
194
- export interface IBasePrintData {
195
- label: string;
196
- organization?: {
197
- name?: string;
198
- taxId?: string;
199
- registrationNumber?: string;
200
- jbkjs?: string;
201
- email?: string;
202
- };
203
- filters?: {
204
- basic?: { label: string; value?: string }[];
205
- date?: { label: string; from?: string; to?: string }[];
206
- };
207
- saveXlsx?: () => void;
208
- }
209
-
210
- export type IGetPrintData<T> = (props: {
211
- pagination: IPagination;
212
- noTotalRows?: boolean;
213
- }) => Promise<{ items: T[]; totalRows?: number }>;
214
-
215
- export interface IPrintData<T = unknown> extends IBasePrintData {
216
- printPopupControl: IPopupControl;
217
- customHeader?: ITableColumn[][];
218
- isLoading?: boolean;
219
- progress?: number;
220
- tableData?: ITableDataItem[];
221
- items?: T[];
222
- paginationControl?: IPaginationControl;
223
- totals?: ITableDataItem;
224
- optionalNode?: {
225
- aboveTable?: ReactNode;
226
- bellowTable?: ReactNode;
227
- };
228
- }
229
-
230
- export interface ICustomPrintData extends IBasePrintData {
231
- content: ReactNode;
232
- }
233
- ///////////////
234
-
235
- ///// PAGINATION /////
236
- export interface IPagination {
237
- limit: number;
238
- offset: number;
239
- }
240
- export interface IPaginationControl {
241
- limit: number;
242
- offset: number;
243
- setLimit: Dispatch<SetStateAction<number>>;
244
- setOffset: Dispatch<SetStateAction<number>>;
245
- }
246
-
247
- ///// REPORT TEMPLATE /////
248
-
249
- export interface IReportTemplate {
250
- uuid: string;
251
- name: string;
252
- identifier: string;
253
- filterValues?: IReportTemplateFilterValue[];
254
- options?: { key: string; value?: any }[];
255
- columns: string[];
256
- organization?: ISimpleObject;
257
- subsystem?: string; // IModuleId;
258
- sorts?: string[];
259
- isPublic?: boolean;
260
- isDefault?: boolean;
261
- order?: number;
262
- createdAt?: string;
263
- createdBy?: ISimpleObject;
264
- }
265
-
266
- export interface IReportTemplateFilterValue {
267
- filter: string;
268
- value: string;
269
- name?: string;
270
- type: 'STRING' | 'ARRAY' | 'OBJECT' | 'BOOLEAN';
271
- }
272
-
273
- export interface IReportTemplateData {
274
- searchData?: IAnyObject;
275
- visibleColumns?: string[];
276
- sorts?: string[];
277
- options?: { key: string; value?: any }[];
278
- }
279
-
280
- export const tableStandardLimit = [5, 10, 25, 50, 100];
281
- 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,6 +1,6 @@
1
- export interface ITreeItem {
2
- uuid: string;
3
- name: string;
4
- code?: string;
5
- children?: ITreeItem[];
6
- }
1
+ export interface ITreeItem {
2
+ uuid: string;
3
+ name: string;
4
+ code?: string;
5
+ children?: ITreeItem[];
6
+ }
@@ -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
+ };