@inceptionbg/iui 2.0.23 → 2.0.25

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 (230) hide show
  1. package/dist/{NoAccessPage-BmizYfw0.js → NoAccessPage-DTPU8bP2.js} +2 -2
  2. package/dist/{NoAccessPage-BmizYfw0.js.map → NoAccessPage-DTPU8bP2.js.map} +1 -1
  3. package/dist/{NotFoundPage-Cv544vAr.js → NotFoundPage-PZunMooy.js} +2 -2
  4. package/dist/{NotFoundPage-Cv544vAr.js.map → NotFoundPage-PZunMooy.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 +19 -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/src/components/Dialog/hooks/useDialogKeyboard.ts +0 -42
  229. package/src/components/Inputs/Select2/Select.tsx +0 -258
  230. package/src/components/Inputs/Select2/select.scss +0 -42
@@ -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
+ // })`;
@@ -1,177 +1,177 @@
1
- // import i18next from 'i18next';
2
- import { IBooleanObject } from '../types/IBasic';
3
- import { lsGet } from './localStorageHelper';
4
- import { convertBooleanObjectToArray } from './objectUtils';
5
- import { toastError } from './toasts';
6
-
7
- export const sizeInBytesPretty = (bytes?: number) => {
8
- if (bytes === 0) {
9
- return '0.00 B';
10
- } else if (bytes === undefined) {
11
- return '/';
12
- }
13
- const e = Math.floor(Math.log(bytes) / Math.log(1024));
14
- return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';
15
- };
16
-
17
- export const dataURLtoFile = (dataUrl: string, filename: string, fileExt: string) => {
18
- const arr = dataUrl.split(',');
19
- const mime = arr[0].match(/:(.*?);/)![1];
20
- const bstr = window.atob(arr[1]);
21
- let n = bstr.length;
22
- const u8arr = new Uint8Array(n);
23
-
24
- while (n--) {
25
- u8arr[n] = bstr.charCodeAt(n);
26
- }
27
-
28
- return new File([u8arr], `${filename}.${fileExt}`, { type: mime });
29
- };
30
-
31
- export const getExtensionFromFilename = (filename?: string) =>
32
- filename?.split('.').pop()?.toLowerCase() ?? '';
33
-
34
- export const calculateFilesSize = (filesList: any[], selectedFiles: IBooleanObject) =>
35
- filesList.reduce(
36
- (prev, curr) =>
37
- convertBooleanObjectToArray(selectedFiles).includes(curr.uuid)
38
- ? prev + curr.storedFile.lengthInBytes
39
- : prev,
40
- 0
41
- );
42
-
43
- export const downloadDocumentFile = (
44
- fileName: string,
45
- url: string,
46
- type: 'pdf' | 'xml' | 'xlsx',
47
- apiUrl?: string,
48
- search?: any
49
- ) => {
50
- let req = new XMLHttpRequest();
51
- const params =
52
- search &&
53
- Object.keys(search)
54
- .map(key => key + '=' + search[key])
55
- .join('&');
56
-
57
- req.open(
58
- 'GET',
59
- `${
60
- apiUrl
61
- // || api.apiUrl
62
- }${url}${params ? `?${params}` : ''}`,
63
- true
64
- );
65
- req.setRequestHeader('Authorization', 'Bearer ' + lsGet('token'));
66
- req.responseType = 'blob';
67
-
68
- req.onload = function () {
69
- if (req.status === 200) {
70
- var blob = req.response;
71
- var link = document.createElement('a');
72
- link.href = window.URL.createObjectURL(blob);
73
- link.download = `${fileName}.${type}`;
74
- link.click();
75
- }
76
- // else toastError(i18next.t('ErrorMessage'));
77
- };
78
-
79
- req.send();
80
- };
81
-
82
- export const getFileFromUrl = (url: string, name: string) =>
83
- fetch(url)
84
- .then(res => res.blob())
85
- .then(data => {
86
- const file = new File([data], name, {
87
- type: data.type || 'image/png',
88
- });
89
- return file;
90
- });
91
-
92
- export const getBase64FromFile = (file: Blob): Promise<string> =>
93
- new Promise((resolve, reject) => {
94
- const reader = new FileReader();
95
- reader.readAsDataURL(file);
96
- reader.onload = () => resolve(reader.result as string);
97
- reader.onerror = () => reject(new Error('Failed to read file'));
98
- });
99
-
100
- export const getBase64FromUrl = (url: string): Promise<string> =>
101
- getFileFromUrl(url, url).then(file => {
102
- if (file) {
103
- return getBase64FromFile(file);
104
- }
105
- throw new Error('Failed to create file from URL');
106
- });
107
-
108
- export const splitBase64File = (base64: string, type?: 'img') => {
109
- const regex =
110
- type === 'img' ? /^data:([a-z]+\/[a-z]+);base64,(.+)$/ : /^data:(.+);base64,(.+)$/;
111
- const match = base64.match(regex);
112
- if (match) {
113
- const contentType = match[1];
114
- const base64Data = match[2];
115
- return { contentType, base64Data };
116
- } else {
117
- throw new Error(type === 'img' ? 'Invalid base64 image format' : 'Invalid file');
118
- }
119
- };
120
-
121
- export const rotateBase64Image = (
122
- base64data: string,
123
- angle: number,
124
- callback: (data: string) => void
125
- ) => {
126
- const canvas = document.createElement('canvas');
127
- let ctx = canvas.getContext('2d');
128
- let image = new Image();
129
-
130
- image.onload = function () {
131
- canvas.width = angle % 180 === 0 ? image.width : image.height;
132
- canvas.height = angle % 180 === 0 ? image.height : image.width;
133
-
134
- ctx?.translate(canvas.width / 2, canvas.height / 2);
135
- ctx?.rotate((angle * Math.PI) / 180);
136
- ctx?.drawImage(image, image.width / -2, image.height / -2);
137
-
138
- callback(canvas.toDataURL());
139
- };
140
- image.src = base64data;
141
- };
142
-
143
- export function downloadFile({
144
- url,
145
- fileName,
146
- onSuccess,
147
- setIsLoading,
148
- }: {
149
- url: string;
150
- fileName: string;
151
- setIsLoading?: (isLoading: boolean) => void;
152
- onSuccess?: () => void;
153
- }) {
154
- setIsLoading?.(true);
155
- //Create XMLHTTP Request.
156
- const req = new XMLHttpRequest();
157
- req.open('GET', url, true);
158
- req.responseType = 'blob';
159
- req.onload = function () {
160
- //Convert the Byte Data to BLOB object.
161
- const blob = new Blob([req.response], { type: 'application/octetstream' });
162
- const url2 = window.URL || window.webkitURL;
163
- const link = url2.createObjectURL(blob);
164
- const a = document.createElement('a');
165
- a.setAttribute('download', fileName);
166
- a.setAttribute('href', link);
167
- document.body.appendChild(a);
168
- a.click();
169
- document.body.removeChild(a);
170
- };
171
- req.onloadend = function () {
172
- console.info('Finished downloading file');
173
- onSuccess?.();
174
- setIsLoading?.(false);
175
- };
176
- req.send();
177
- }
1
+ // import i18next from 'i18next';
2
+ import type { IBooleanObject } from '../types/IBasic';
3
+ import { lsGet } from './localStorageHelper';
4
+ import { convertBooleanObjectToArray } from './objectUtils';
5
+ import { toastError } from './toasts';
6
+
7
+ export const sizeInBytesPretty = (bytes?: number) => {
8
+ if (bytes === 0) {
9
+ return '0.00 B';
10
+ } else if (bytes === undefined) {
11
+ return '/';
12
+ }
13
+ const e = Math.floor(Math.log(bytes) / Math.log(1024));
14
+ return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';
15
+ };
16
+
17
+ export const dataURLtoFile = (dataUrl: string, filename: string, fileExt: string) => {
18
+ const arr = dataUrl.split(',');
19
+ const mime = arr[0].match(/:(.*?);/)![1];
20
+ const bstr = window.atob(arr[1]);
21
+ let n = bstr.length;
22
+ const u8arr = new Uint8Array(n);
23
+
24
+ while (n--) {
25
+ u8arr[n] = bstr.charCodeAt(n);
26
+ }
27
+
28
+ return new File([u8arr], `${filename}.${fileExt}`, { type: mime });
29
+ };
30
+
31
+ export const getExtensionFromFilename = (filename?: string) =>
32
+ filename?.split('.').pop()?.toLowerCase() ?? '';
33
+
34
+ export const calculateFilesSize = (filesList: any[], selectedFiles: IBooleanObject) =>
35
+ filesList.reduce(
36
+ (prev, curr) =>
37
+ convertBooleanObjectToArray(selectedFiles).includes(curr.uuid)
38
+ ? prev + curr.storedFile.lengthInBytes
39
+ : prev,
40
+ 0
41
+ );
42
+
43
+ export const downloadDocumentFile = (
44
+ fileName: string,
45
+ url: string,
46
+ type: 'pdf' | 'xml' | 'xlsx',
47
+ apiUrl?: string,
48
+ search?: any
49
+ ) => {
50
+ let req = new XMLHttpRequest();
51
+ const params =
52
+ search &&
53
+ Object.keys(search)
54
+ .map(key => key + '=' + search[key])
55
+ .join('&');
56
+
57
+ req.open(
58
+ 'GET',
59
+ `${
60
+ apiUrl
61
+ // || api.apiUrl
62
+ }${url}${params ? `?${params}` : ''}`,
63
+ true
64
+ );
65
+ req.setRequestHeader('Authorization', 'Bearer ' + lsGet('token'));
66
+ req.responseType = 'blob';
67
+
68
+ req.onload = function () {
69
+ if (req.status === 200) {
70
+ var blob = req.response;
71
+ var link = document.createElement('a');
72
+ link.href = window.URL.createObjectURL(blob);
73
+ link.download = `${fileName}.${type}`;
74
+ link.click();
75
+ }
76
+ // else toastError(i18next.t('ErrorMessage'));
77
+ };
78
+
79
+ req.send();
80
+ };
81
+
82
+ export const getFileFromUrl = (url: string, name: string) =>
83
+ fetch(url)
84
+ .then(res => res.blob())
85
+ .then(data => {
86
+ const file = new File([data], name, {
87
+ type: data.type || 'image/png',
88
+ });
89
+ return file;
90
+ });
91
+
92
+ export const getBase64FromFile = (file: Blob): Promise<string> =>
93
+ new Promise((resolve, reject) => {
94
+ const reader = new FileReader();
95
+ reader.readAsDataURL(file);
96
+ reader.onload = () => resolve(reader.result as string);
97
+ reader.onerror = () => reject(new Error('Failed to read file'));
98
+ });
99
+
100
+ export const getBase64FromUrl = (url: string): Promise<string> =>
101
+ getFileFromUrl(url, url).then(file => {
102
+ if (file) {
103
+ return getBase64FromFile(file);
104
+ }
105
+ throw new Error('Failed to create file from URL');
106
+ });
107
+
108
+ export const splitBase64File = (base64: string, type?: 'img') => {
109
+ const regex =
110
+ type === 'img' ? /^data:([a-z]+\/[a-z]+);base64,(.+)$/ : /^data:(.+);base64,(.+)$/;
111
+ const match = base64.match(regex);
112
+ if (match) {
113
+ const contentType = match[1];
114
+ const base64Data = match[2];
115
+ return { contentType, base64Data };
116
+ } else {
117
+ throw new Error(type === 'img' ? 'Invalid base64 image format' : 'Invalid file');
118
+ }
119
+ };
120
+
121
+ export const rotateBase64Image = (
122
+ base64data: string,
123
+ angle: number,
124
+ callback: (data: string) => void
125
+ ) => {
126
+ const canvas = document.createElement('canvas');
127
+ let ctx = canvas.getContext('2d');
128
+ let image = new Image();
129
+
130
+ image.onload = function () {
131
+ canvas.width = angle % 180 === 0 ? image.width : image.height;
132
+ canvas.height = angle % 180 === 0 ? image.height : image.width;
133
+
134
+ ctx?.translate(canvas.width / 2, canvas.height / 2);
135
+ ctx?.rotate((angle * Math.PI) / 180);
136
+ ctx?.drawImage(image, image.width / -2, image.height / -2);
137
+
138
+ callback(canvas.toDataURL());
139
+ };
140
+ image.src = base64data;
141
+ };
142
+
143
+ export function downloadFile({
144
+ url,
145
+ fileName,
146
+ onSuccess,
147
+ setIsLoading,
148
+ }: {
149
+ url: string;
150
+ fileName: string;
151
+ setIsLoading?: (isLoading: boolean) => void;
152
+ onSuccess?: () => void;
153
+ }) {
154
+ setIsLoading?.(true);
155
+ //Create XMLHTTP Request.
156
+ const req = new XMLHttpRequest();
157
+ req.open('GET', url, true);
158
+ req.responseType = 'blob';
159
+ req.onload = function () {
160
+ //Convert the Byte Data to BLOB object.
161
+ const blob = new Blob([req.response], { type: 'application/octetstream' });
162
+ const url2 = window.URL || window.webkitURL;
163
+ const link = url2.createObjectURL(blob);
164
+ const a = document.createElement('a');
165
+ a.setAttribute('download', fileName);
166
+ a.setAttribute('href', link);
167
+ document.body.appendChild(a);
168
+ a.click();
169
+ document.body.removeChild(a);
170
+ };
171
+ req.onloadend = function () {
172
+ console.info('Finished downloading file');
173
+ onSuccess?.();
174
+ setIsLoading?.(false);
175
+ };
176
+ req.send();
177
+ }
@@ -1,119 +1,119 @@
1
- export const i18nIUICyrilic = {
2
- ////// BASIC //////
3
- HomePage: 'Почетна',
4
-
5
- // Accept: 'Прихвати',
6
- Actions: 'Акције',
7
- Active: 'Активан',
8
- AddInput: 'Унеси',
9
- Back: 'Назад',
10
- Cancel: 'Откажи',
11
- Change: 'Промени',
12
- Choose: 'Изабери',
13
- Close: 'Затвори',
14
- Confirm: 'Потврди',
15
- Create: 'Креирај',
16
- Delete: 'Обриши',
17
- Edit: 'Измени',
18
- FreeText: 'Слободан унос',
19
- from: 'од',
20
- Group: 'Група',
21
- Groups: 'Групе',
22
- Next: 'Даље',
23
- No: 'Не',
24
- Ok: 'У реду',
25
- Options: 'Опције',
26
- or: 'или',
27
- Save: 'Сачувај',
28
- Search: 'Претрага',
29
- Selected: 'Означено',
30
- Send: 'Пошаљи',
31
- Sending: 'Слање',
32
- Title: 'Наслов',
33
- to: 'до',
34
- Yes: 'Да',
35
- LoadingProgress: 'Учитавање...',
36
-
37
- ////// TABLE //////
38
- RefreshData: 'Освежи податке',
39
- allResults: 'Сви',
40
- Columns: 'Колоне',
41
- DragDropListsInfo:
42
- 'Одаберите колоне за приказивање превлачењем са једне листе на другу',
43
- TableSelect: 'Акције над изабраним редовима',
44
- Filter: 'Филтери',
45
- ApplyFilters: 'Примени филтере',
46
- HiddenColumns: 'Сакривене колоне',
47
- NoResults: 'Нема резултата',
48
- of: 'од',
49
- page: 'Страна',
50
- Print: 'Одштампај',
51
- PrintDate: 'Датум извештаја',
52
- PrintExport: 'Штампа/Извоз',
53
- ResetFilter: 'Ресетуј филтере',
54
- rowsPerPage: 'Број редова',
55
- SaveXlsx: 'Сачувај XЛСX',
56
- SelectedColumns: 'Одабране колоне',
57
- Sort: 'Сортирање',
58
- AddItem: 'Додај ставку',
59
- // TEMPLATES
60
- Templates: 'Шаблони',
61
- ApplyTemplate: 'Примени шаблон',
62
- ResetTemplate: 'Поништи шаблон',
63
- DeleteTemplate: 'Обриши шаблон',
64
- CreateTemplateLong: 'Сачувај тренутни изглед као шаблон',
65
- CreateDefaultTemplate: 'Сачувај тренутни изглед као подразумевани',
66
- CreateTemplate: 'Креирај шаблон',
67
- TemplateName: 'Назив шаблона',
68
- NoTemplatesAvailable: `Нема доступних шаблона.
69
- Кликните на "Креирај шаблон" да бисте направили шаблон са тренутно изабраним колонама, филтерима и сортирањем.`,
70
- // SelectTemplate: 'Изабери шаблон',
71
- // TemplateList: 'Листа шаблона',
72
- PublicTemplate: 'Јавни шаблон',
73
- // PublicTemplates: 'Јавни шаблони',
74
- PrivateTemplate: 'Приватни шаблон',
75
- // DefaultTemplate: 'Основни шаблони',
76
- // RemoveFiltersAndLook: 'Поништи изглед и филтере',
77
- // DeleteTemplateDesc: 'Да ли сте сигурни да желите да изришете шаблон?',
78
- // DeleteTemplateTitle: 'Брисање шаблона',
79
-
80
- FastLinks: 'Брзи приступ',
81
-
82
- ////// INPUTS //////
83
- CharMin: 'Минималан број карактера: {{from}}',
84
- CharRange: 'Број карактера од {{from}} до {{-to}}',
85
- CharNumber: 'Број карактера {{number}}',
86
- PhoneValidation: 'Неисправан број телефона',
87
- Serbia: 'Србија',
88
- Montenegro: 'Црна Гора',
89
-
90
- ////// TOAST //////
91
- Pending: 'У току',
92
- Successfully: 'Успешно',
93
- DeletedSuccessfully: 'Успешно обрисано',
94
- ErrorMessage: 'Дошло је до грешке!',
95
- TryAgain: 'Покушај поново',
96
-
97
- ////// NOTIFICATIONS //////
98
- InApp: 'U aplikaciji',
99
- MarkAllAsRead: 'Означи све као прочитано',
100
- NoNewNotifications: 'Немате нове нотификације',
101
- Notifications: 'Нотификације',
102
- NotificationsAll: 'Све',
103
- NotificationsUnread: 'Непрочитане',
104
- NotificationsRead: 'Прочитане',
105
- NotificationSound: 'Звук нотификације',
106
- // NTitleADD_DOC: 'Додат је документ на платформу',
107
- // NContentADD_DOC: 'Документ са бројем <documentNumber>{{- documentNumber}}</documentNumber> је додат на платформу',
108
-
109
- ////// PAGES //////
110
- ReturnToHomepage: 'Повратак на почетну страну',
111
- FooterText: `Инцептион ЦА је акредитовано сертификационо тело за квалификовану електронску доставу,
112
- издавање временских жигова, валидацију квалификованог потписа и печата и квалификовано чување докумената.`,
113
- PageNotFound: 'Страница није пронађена',
114
- PageNotFoundInfo: `Страница коју тражите није пронађена или је премештена.
115
- Можете се вратити на почетну страну.`,
116
- NoAccessPage: 'Немате приступ страници',
117
- NoAccessPageInfo: `Немате привилегију за приступ овој страници.
118
- За више информација и доделу приступа, обратите се администратору.`,
119
- };
1
+ export const i18nIUICyrilic = {
2
+ ////// BASIC //////
3
+ HomePage: 'Почетна',
4
+
5
+ // Accept: 'Прихвати',
6
+ Actions: 'Акције',
7
+ Active: 'Активан',
8
+ AddInput: 'Унеси',
9
+ Back: 'Назад',
10
+ Cancel: 'Откажи',
11
+ Change: 'Промени',
12
+ Choose: 'Изабери',
13
+ Close: 'Затвори',
14
+ Confirm: 'Потврди',
15
+ Create: 'Креирај',
16
+ Delete: 'Обриши',
17
+ Edit: 'Измени',
18
+ FreeText: 'Слободан унос',
19
+ from: 'од',
20
+ Group: 'Група',
21
+ Groups: 'Групе',
22
+ Next: 'Даље',
23
+ No: 'Не',
24
+ Ok: 'У реду',
25
+ Options: 'Опције',
26
+ or: 'или',
27
+ Save: 'Сачувај',
28
+ Search: 'Претрага',
29
+ Selected: 'Означено',
30
+ Send: 'Пошаљи',
31
+ Sending: 'Слање',
32
+ Title: 'Наслов',
33
+ to: 'до',
34
+ Yes: 'Да',
35
+ LoadingProgress: 'Учитавање...',
36
+
37
+ ////// TABLE //////
38
+ RefreshData: 'Освежи податке',
39
+ allResults: 'Сви',
40
+ Columns: 'Колоне',
41
+ DragDropListsInfo:
42
+ 'Одаберите колоне за приказивање превлачењем са једне листе на другу',
43
+ TableSelect: 'Акције над изабраним редовима',
44
+ Filter: 'Филтери',
45
+ ApplyFilters: 'Примени филтере',
46
+ HiddenColumns: 'Сакривене колоне',
47
+ NoResults: 'Нема резултата',
48
+ of: 'од',
49
+ page: 'Страна',
50
+ Print: 'Одштампај',
51
+ PrintDate: 'Датум извештаја',
52
+ PrintExport: 'Штампа/Извоз',
53
+ ResetFilter: 'Ресетуј филтере',
54
+ rowsPerPage: 'Број редова',
55
+ SaveXlsx: 'Сачувај XЛСX',
56
+ SelectedColumns: 'Одабране колоне',
57
+ Sort: 'Сортирање',
58
+ AddItem: 'Додај ставку',
59
+ // TEMPLATES
60
+ Templates: 'Шаблони',
61
+ ApplyTemplate: 'Примени шаблон',
62
+ ResetTemplate: 'Поништи шаблон',
63
+ DeleteTemplate: 'Обриши шаблон',
64
+ CreateTemplateLong: 'Сачувај тренутни изглед као шаблон',
65
+ CreateDefaultTemplate: 'Сачувај тренутни изглед као подразумевани',
66
+ CreateTemplate: 'Креирај шаблон',
67
+ TemplateName: 'Назив шаблона',
68
+ NoTemplatesAvailable: `Нема доступних шаблона.
69
+ Кликните на "Креирај шаблон" да бисте направили шаблон са тренутно изабраним колонама, филтерима и сортирањем.`,
70
+ // SelectTemplate: 'Изабери шаблон',
71
+ // TemplateList: 'Листа шаблона',
72
+ PublicTemplate: 'Јавни шаблон',
73
+ // PublicTemplates: 'Јавни шаблони',
74
+ PrivateTemplate: 'Приватни шаблон',
75
+ // DefaultTemplate: 'Основни шаблони',
76
+ // RemoveFiltersAndLook: 'Поништи изглед и филтере',
77
+ // DeleteTemplateDesc: 'Да ли сте сигурни да желите да изришете шаблон?',
78
+ // DeleteTemplateTitle: 'Брисање шаблона',
79
+
80
+ FastLinks: 'Брзи приступ',
81
+
82
+ ////// INPUTS //////
83
+ CharMin: 'Минималан број карактера: {{from}}',
84
+ CharRange: 'Број карактера од {{from}} до {{-to}}',
85
+ CharNumber: 'Број карактера {{number}}',
86
+ PhoneValidation: 'Неисправан број телефона',
87
+ Serbia: 'Србија',
88
+ Montenegro: 'Црна Гора',
89
+
90
+ ////// TOAST //////
91
+ Pending: 'У току',
92
+ Successfully: 'Успешно',
93
+ DeletedSuccessfully: 'Успешно обрисано',
94
+ ErrorMessage: 'Дошло је до грешке!',
95
+ TryAgain: 'Покушај поново',
96
+
97
+ ////// NOTIFICATIONS //////
98
+ InApp: 'U aplikaciji',
99
+ MarkAllAsRead: 'Означи све као прочитано',
100
+ NoNewNotifications: 'Немате нове нотификације',
101
+ Notifications: 'Нотификације',
102
+ NotificationsAll: 'Све',
103
+ NotificationsUnread: 'Непрочитане',
104
+ NotificationsRead: 'Прочитане',
105
+ NotificationSound: 'Звук нотификације',
106
+ // NTitleADD_DOC: 'Додат је документ на платформу',
107
+ // NContentADD_DOC: 'Документ са бројем <documentNumber>{{- documentNumber}}</documentNumber> је додат на платформу',
108
+
109
+ ////// PAGES //////
110
+ ReturnToHomepage: 'Повратак на почетну страну',
111
+ FooterText: `Инцептион ЦА је акредитовано сертификационо тело за квалификовану електронску доставу,
112
+ издавање временских жигова, валидацију квалификованог потписа и печата и квалификовано чување докумената.`,
113
+ PageNotFound: 'Страница није пронађена',
114
+ PageNotFoundInfo: `Страница коју тражите није пронађена или је премештена.
115
+ Можете се вратити на почетну страну.`,
116
+ NoAccessPage: 'Немате приступ страници',
117
+ NoAccessPageInfo: `Немате привилегију за приступ овој страници.
118
+ За више информација и доделу приступа, обратите се администратору.`,
119
+ };