@inceptionbg/iui 2.0.22 → 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 (237) 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/icons/index.d.ts +3 -1
  6. package/dist/icons/index.js +1 -1
  7. package/dist/index.d.ts +452 -408
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/iui.css +1 -1
  11. package/idea/GridTable/GridTable.tsx +1 -1
  12. package/idea/Menu/Menu.tsx +5 -3
  13. package/idea/Menu/MenuItem.tsx +3 -2
  14. package/idea/Menu/hooks/useMenuControl.ts +1 -1
  15. package/idea/Menu.tsx +3 -2
  16. package/idea/NoAccessInfo.tsx +1 -1
  17. package/idea/Table/Components/Edit/ItemActionsMenu.tsx +2 -1
  18. package/idea/Table/Components/Edit/ItemEditOptionsButtons.tsx +1 -1
  19. package/idea/Table/Components/Edit/TableEditRow.tsx +3 -2
  20. package/idea/Table/Components/FilterItem.tsx +2 -2
  21. package/idea/Table/Components/Header/TableHeader.tsx +3 -2
  22. package/idea/Table/Components/Header/TableHeaderRow.tsx +2 -2
  23. package/idea/Table/Components/Print/CustomTablePrint.tsx +3 -2
  24. package/idea/Table/Components/SetSortList.tsx +2 -2
  25. package/idea/Table/Components/SetTableFilter.tsx +3 -2
  26. package/idea/Table/Components/TableFooter.tsx +6 -4
  27. package/idea/Table/Components/TableOptions.tsx +3 -2
  28. package/idea/Table/Table.tsx +3 -2
  29. package/idea/Table/hooks/useTableKeyboard.ts +2 -2
  30. package/package.json +1 -1
  31. package/src/assets/icons/duotone/faBell.ts +17 -17
  32. package/src/assets/icons/duotone/faCircleUser.ts +17 -17
  33. package/src/assets/icons/index.ts +25 -24
  34. package/src/assets/icons/light/faArrowDownShortWide.ts +15 -15
  35. package/src/assets/icons/light/faArrowDownWideShort.ts +15 -15
  36. package/src/assets/icons/light/faArrowLeft.ts +5 -5
  37. package/src/assets/icons/light/faArrowRight.ts +5 -5
  38. package/src/assets/icons/light/faArrowUpArrowDown.ts +15 -15
  39. package/src/assets/icons/light/faArrowUpRightFromSquare.ts +15 -15
  40. package/src/assets/icons/light/faArrowsToLine.ts +15 -15
  41. package/src/assets/icons/light/faArrowsUpDown.ts +15 -15
  42. package/src/assets/icons/light/faBell.ts +15 -15
  43. package/src/assets/icons/light/faBookmark.ts +15 -15
  44. package/src/assets/icons/light/faBookmarkSlash.ts +15 -15
  45. package/src/assets/icons/light/faCalendarPlus.ts +15 -15
  46. package/src/assets/icons/light/faCheck.ts +15 -15
  47. package/src/assets/icons/light/faChevronDown.ts +15 -15
  48. package/src/assets/icons/light/faChevronRight.ts +15 -15
  49. package/src/assets/icons/light/faCircleInfo.ts +15 -15
  50. package/src/assets/icons/light/faCircleXmark.ts +15 -15
  51. package/src/assets/icons/light/faClipboardCheck.ts +15 -15
  52. package/src/assets/icons/light/faClockRotateLeft.ts +15 -15
  53. package/src/assets/icons/light/faEllipsisVertical.ts +15 -15
  54. package/src/assets/icons/light/faEnvelope.ts +15 -15
  55. package/src/assets/icons/light/faEye.ts +15 -15
  56. package/src/assets/icons/light/faEyeSlash.ts +15 -15
  57. package/src/assets/icons/light/faFilter.ts +15 -15
  58. package/src/assets/icons/light/faGear.ts +15 -15
  59. package/src/assets/icons/light/faHouse.ts +15 -15
  60. package/src/assets/icons/light/faIdBadge.ts +15 -15
  61. package/src/assets/icons/light/faLineColumns.ts +15 -15
  62. package/src/assets/icons/light/faLink.ts +15 -15
  63. package/src/assets/icons/light/faMagnifyingGlass.ts +15 -15
  64. package/src/assets/icons/light/faPen.ts +15 -15
  65. package/src/assets/icons/light/faPrint.ts +15 -15
  66. package/src/assets/icons/light/faQuestion.ts +15 -15
  67. package/src/assets/icons/light/faRotateRight.ts +15 -15
  68. package/src/assets/icons/light/faTrashCan.ts +15 -15
  69. package/src/assets/icons/light/faTriangleExclamation.ts +15 -15
  70. package/src/assets/icons/light/faXmark.ts +15 -15
  71. package/src/assets/icons/regular/faArrowLeft.ts +15 -15
  72. package/src/assets/icons/regular/faArrowRightArrowLeft.ts +15 -15
  73. package/src/assets/icons/regular/faCircleCheck.ts +15 -15
  74. package/src/assets/icons/regular/faCircleExclamation.ts +15 -15
  75. package/src/assets/icons/regular/faCircleInfo.ts +15 -15
  76. package/src/assets/icons/regular/faFileArrowDown.ts +15 -15
  77. package/src/assets/icons/regular/faFilterCircleXmark.ts +15 -15
  78. package/src/assets/icons/regular/faTriangleExclamation.ts +15 -15
  79. package/src/assets/icons/solid/faAngleLeft.ts +15 -15
  80. package/src/assets/icons/solid/faAngleRight.ts +15 -15
  81. package/src/assets/icons/solid/faArrowDownWideShort.ts +15 -15
  82. package/src/assets/icons/solid/faCaretDown.ts +15 -15
  83. package/src/assets/icons/solid/faCheck.ts +15 -15
  84. package/src/assets/icons/solid/faEllipsisVertical.ts +15 -15
  85. package/src/assets/icons/solid/faEnvelopeDot.ts +15 -15
  86. package/src/assets/icons/solid/faFilter.ts +15 -15
  87. package/src/assets/icons/solid/faFloppyDisk.ts +15 -15
  88. package/src/assets/icons/solid/faGripDotsVertical.ts +15 -15
  89. package/src/assets/icons/solid/faListUl.ts +15 -15
  90. package/src/assets/icons/solid/faMinus.ts +15 -15
  91. package/src/assets/icons/solid/faPlus.ts +15 -15
  92. package/src/assets/icons/solid/faPrint.ts +15 -15
  93. package/src/assets/icons/solid/faRotateRight.ts +15 -15
  94. package/src/assets/icons/solid/faXmark.ts +15 -15
  95. package/src/components/Accordions/Accordions.tsx +75 -74
  96. package/src/components/Alert/Alert.tsx +31 -31
  97. package/src/components/Badge/DotBadge.tsx +16 -16
  98. package/src/components/Badge/NotificationBadge.tsx +29 -29
  99. package/src/components/Badge/PillBadge.tsx +13 -13
  100. package/src/components/Button/Button.tsx +56 -56
  101. package/src/components/Button/IconButton.tsx +51 -51
  102. package/src/components/Button/SplitButton.tsx +91 -91
  103. package/src/components/Dashboard/Dashboard.tsx +9 -9
  104. package/src/components/Dashboard/DashboardWidget.tsx +44 -44
  105. package/src/components/Dashboard/FastLinksWidget/FastLinksWidget.tsx +37 -37
  106. package/src/components/Dialog/Dialog.tsx +166 -162
  107. package/src/components/Dialog/components/DialogFooter.tsx +100 -98
  108. package/src/components/Header/Components/EnvBadge.tsx +17 -17
  109. package/src/components/Header/Components/ModuleSelect.tsx +68 -68
  110. package/src/components/Header/Components/Notifications.tsx +202 -208
  111. package/src/components/Header/Components/UserMenu.tsx +52 -52
  112. package/src/components/Header/Header.tsx +37 -36
  113. package/src/components/Helper/Collapse.tsx +53 -52
  114. package/src/components/Inputs/Checkbox.tsx +53 -53
  115. package/src/components/Inputs/CurrencyInput.tsx +124 -123
  116. package/src/components/Inputs/DateInput/DateInput.tsx +184 -183
  117. package/src/components/Inputs/DateInput/components/DatePartInput.tsx +159 -158
  118. package/src/components/Inputs/InputWrapper.tsx +95 -95
  119. package/src/components/Inputs/NumberInput.tsx +86 -86
  120. package/src/components/Inputs/PasswordInput.tsx +40 -39
  121. package/src/components/Inputs/PhoneInput/PhoneInput.tsx +108 -0
  122. package/src/components/Inputs/PhoneInput/utils/countryCode.ts +20 -0
  123. package/src/components/Inputs/Radio.tsx +59 -59
  124. package/src/components/Inputs/RadioGroup.tsx +48 -48
  125. package/src/components/Inputs/RadioLarge.tsx +39 -39
  126. package/src/components/Inputs/SearchInput.tsx +46 -45
  127. package/src/components/Inputs/Selects/Select.tsx +17 -17
  128. package/src/components/Inputs/Selects/components/CustomSelectComponents.tsx +20 -19
  129. package/src/components/Inputs/Selects/components/SelectWrapper.tsx +118 -118
  130. package/src/components/Inputs/Selects/utils/selectStyles.ts +101 -101
  131. package/src/components/Inputs/TextAreaInput.tsx +68 -67
  132. package/src/components/Inputs/TextInput.tsx +100 -99
  133. package/src/components/Inputs/TimeInput/TimeInput.tsx +81 -81
  134. package/src/components/List/List.tsx +21 -20
  135. package/src/components/List/ListItem.tsx +70 -69
  136. package/src/components/Loader/Loader.tsx +59 -53
  137. package/src/components/Loader/ProgressBar.tsx +41 -41
  138. package/src/components/Menu/Menu.tsx +81 -80
  139. package/src/components/Menu/MenuItem.tsx +46 -46
  140. package/src/components/Menu/NewMenu.tsx +63 -63
  141. package/src/components/Menu/hooks/useMenuPosition.tsx +116 -115
  142. package/src/components/Pullover/Pullover.tsx +197 -196
  143. package/src/components/Router/Router.tsx +52 -51
  144. package/src/components/Sidebar/AddButton.tsx +22 -22
  145. package/src/components/Sidebar/Sidebar.tsx +85 -83
  146. package/src/components/Sidebar/SidebarItem.tsx +84 -84
  147. package/src/components/Sidebar/types/ISidebar.ts +28 -28
  148. package/src/components/Table/Table.tsx +259 -258
  149. package/src/components/Table/components/columns/ColumnsList.tsx +60 -59
  150. package/src/components/Table/components/columns/TableColumnsEdit.tsx +114 -112
  151. package/src/components/Table/components/edit/TableEditRow.tsx +78 -77
  152. package/src/components/Table/components/filters/FilterItem.tsx +15 -15
  153. package/src/components/Table/components/filters/TableFilters.tsx +126 -125
  154. package/src/components/Table/components/footer/TableFooter.tsx +126 -124
  155. package/src/components/Table/components/header/TableHeader.tsx +40 -40
  156. package/src/components/Table/components/header/TableHeaderRow.tsx +57 -57
  157. package/src/components/Table/components/items/TableItemActions.tsx +78 -78
  158. package/src/components/Table/components/print/TablePrint.tsx +200 -199
  159. package/src/components/Table/components/select/TableSelect.tsx +50 -49
  160. package/src/components/Table/components/sort/TableSort.tsx +73 -72
  161. package/src/components/Table/components/templates/CreateTemplateDialog.tsx +58 -48
  162. package/src/components/Table/components/templates/TableTemplates.tsx +65 -112
  163. package/src/components/Table/components/templates/TemplatesPullover.tsx +88 -0
  164. package/src/components/Table/contexts/TableContext.tsx +116 -123
  165. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  166. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +84 -84
  167. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +176 -177
  168. package/src/components/Table/hooks/localHooks/useLocalTablePagination.ts +12 -12
  169. package/src/components/Table/hooks/useTableColumns.ts +34 -34
  170. package/src/components/Table/hooks/useTableEdit.tsx +140 -140
  171. package/src/components/Table/hooks/useTableFilterFields.tsx +150 -150
  172. package/src/components/Table/hooks/useTablePagination.ts +19 -19
  173. package/src/components/Table/hooks/useTablePrint.ts +83 -83
  174. package/src/components/Table/hooks/useTableSearch.ts +31 -30
  175. package/src/components/Table/hooks/useTableSelect.ts +19 -19
  176. package/src/components/Table/hooks/useTableSort.ts +8 -8
  177. package/src/components/Tabs/Tabs.tsx +68 -67
  178. package/src/components/Tooltip/Tooltip.tsx +191 -200
  179. package/src/components/Tree/Tree.tsx +22 -22
  180. package/src/components/Tree/TreeItem.tsx +57 -56
  181. package/src/components/Wrappers/AppLayout.tsx +17 -17
  182. package/src/components/Wrappers/ConditionalWrapper.tsx +10 -10
  183. package/src/components/Wrappers/FormWrapper.tsx +84 -83
  184. package/src/components/Wrappers/PageLayout.tsx +156 -155
  185. package/src/hooks/useBackgroundClose.ts +19 -18
  186. package/src/hooks/useGetFocusableElements.ts +43 -42
  187. package/src/hooks/useIsMenuOpen.ts +11 -11
  188. package/src/hooks/useLocalPopoverControl.ts +32 -32
  189. package/src/hooks/useOnEsc.ts +14 -14
  190. package/src/hooks/usePopupControl.ts +22 -22
  191. package/src/hooks/useZendesk.ts +21 -21
  192. package/src/index.ts +379 -382
  193. package/src/pages/NoAccessPage.tsx +27 -27
  194. package/src/pages/NotFoundPage.tsx +26 -26
  195. package/src/styles/common/helpers/_size.scss +0 -3
  196. package/src/styles/components/_accordions.scss +2 -1
  197. package/src/styles/components/_buttonSplit.scss +4 -29
  198. package/src/styles/components/_dialog.scss +2 -2
  199. package/src/styles/components/_input.scss +9 -0
  200. package/src/styles/components/_page.scss +2 -3
  201. package/src/types/IBasic.ts +32 -31
  202. package/src/types/ICountryCode.ts +5 -0
  203. package/src/types/IError.ts +5 -5
  204. package/src/types/IHeader.ts +40 -40
  205. package/src/types/IInfo.ts +1 -1
  206. package/src/types/IKeyboard.ts +33 -33
  207. package/src/types/IMenu.ts +19 -19
  208. package/src/types/INotifications.ts +15 -15
  209. package/src/types/IPopup.ts +17 -17
  210. package/src/types/IRouter.ts +6 -6
  211. package/src/types/ISelect.ts +54 -54
  212. package/src/types/ITab.ts +1 -1
  213. package/src/types/ITable.ts +290 -279
  214. package/src/types/ITree.ts +6 -6
  215. package/src/utils/InputPatternValidation.ts +12 -12
  216. package/src/utils/dateUtils.ts +32 -32
  217. package/src/utils/fileUtils.ts +177 -177
  218. package/src/utils/i18n/i18nIUICyrilic.ts +119 -116
  219. package/src/utils/i18n/i18nIUILatin.ts +120 -117
  220. package/src/utils/i18n/i18nIUIMe.ts +118 -115
  221. package/src/utils/icons.ts +13 -13
  222. package/src/utils/localStorageHelper.ts +24 -24
  223. package/src/utils/logoUtils.ts +7 -7
  224. package/src/utils/numberUtils.ts +21 -21
  225. package/src/utils/objectUtils.ts +114 -114
  226. package/src/utils/popupUtils.ts +82 -82
  227. package/src/utils/rootDir.ts +1 -1
  228. package/src/utils/stringUtils.ts +18 -18
  229. package/src/utils/tableUtils.ts +130 -130
  230. package/src/utils/toasts.ts +6 -6
  231. package/src/utils/urlUtils.ts +4 -4
  232. package/tsconfig.json +1 -0
  233. package/dist/NoAccessPage-BmizYfw0.js +0 -2
  234. package/dist/NotFoundPage-Cv544vAr.js +0 -2
  235. package/src/components/Dialog/hooks/useDialogKeyboard.ts +0 -42
  236. package/src/components/Inputs/Select2/Select.tsx +0 -258
  237. 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,116 +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
-
87
- ////// TOAST //////
88
- Pending: 'У току',
89
- Successfully: 'Успешно',
90
- DeletedSuccessfully: 'Успешно обрисано',
91
- ErrorMessage: 'Дошло је до грешке!',
92
- TryAgain: 'Покушај поново',
93
-
94
- ////// NOTIFICATIONS //////
95
- InApp: 'U aplikaciji',
96
- MarkAllAsRead: 'Означи све као прочитано',
97
- NoNewNotifications: 'Немате нове нотификације',
98
- Notifications: 'Нотификације',
99
- NotificationsAll: 'Све',
100
- NotificationsUnread: 'Непрочитане',
101
- NotificationsRead: 'Прочитане',
102
- NotificationSound: 'Звук нотификације',
103
- // NTitleADD_DOC: 'Додат је документ на платформу',
104
- // NContentADD_DOC: 'Документ са бројем <documentNumber>{{- documentNumber}}</documentNumber> је додат на платформу',
105
-
106
- ////// PAGES //////
107
- ReturnToHomepage: 'Повратак на почетну страну',
108
- FooterText: `Инцептион ЦА је акредитовано сертификационо тело за квалификовану електронску доставу,
109
- издавање временских жигова, валидацију квалификованог потписа и печата и квалификовано чување докумената.`,
110
- PageNotFound: 'Страница није пронађена',
111
- PageNotFoundInfo: `Страница коју тражите није пронађена или је премештена.
112
- Можете се вратити на почетну страну.`,
113
- NoAccessPage: 'Немате приступ страници',
114
- NoAccessPageInfo: `Немате привилегију за приступ овој страници.
115
- За више информација и доделу приступа, обратите се администратору.`,
116
- };
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
+ };