@inceptionbg/iui 2.0.24 → 2.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/NoAccessPage-DTPU8bP2.js +2 -0
  2. package/dist/{NoAccessPage-CJisyKrk.js.map → NoAccessPage-DTPU8bP2.js.map} +1 -1
  3. package/dist/NotFoundPage-PZunMooy.js +2 -0
  4. package/dist/{NotFoundPage-BeRit0kr.js.map → NotFoundPage-PZunMooy.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 +44 -31
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/iui.css +1 -1
  11. package/package.json +1 -1
  12. package/src/assets/icons/duotone/faBell.ts +17 -17
  13. package/src/assets/icons/duotone/faCircleUser.ts +17 -17
  14. package/src/assets/icons/index.ts +26 -25
  15. package/src/assets/icons/light/faArrowDownShortWide.ts +15 -15
  16. package/src/assets/icons/light/faArrowDownWideShort.ts +15 -15
  17. package/src/assets/icons/light/faArrowLeft.ts +15 -15
  18. package/src/assets/icons/light/faArrowRight.ts +15 -15
  19. package/src/assets/icons/light/faArrowUpArrowDown.ts +15 -15
  20. package/src/assets/icons/light/faArrowUpRightFromSquare.ts +15 -15
  21. package/src/assets/icons/light/faArrowsToLine.ts +15 -15
  22. package/src/assets/icons/light/faArrowsUpDown.ts +15 -15
  23. package/src/assets/icons/light/faBell.ts +15 -15
  24. package/src/assets/icons/light/faBookmark.ts +15 -15
  25. package/src/assets/icons/light/faBookmarkSlash.ts +15 -15
  26. package/src/assets/icons/light/faCalendarPlus.ts +15 -15
  27. package/src/assets/icons/light/faCheck.ts +15 -15
  28. package/src/assets/icons/light/faChevronDown.ts +15 -15
  29. package/src/assets/icons/light/faChevronRight.ts +15 -15
  30. package/src/assets/icons/light/faCircleCheck.ts +15 -0
  31. package/src/assets/icons/light/faCircleInfo.ts +15 -15
  32. package/src/assets/icons/light/faCircleXmark.ts +15 -15
  33. package/src/assets/icons/light/faClipboardCheck.ts +15 -15
  34. package/src/assets/icons/light/faClockRotateLeft.ts +15 -15
  35. package/src/assets/icons/light/faEllipsisVertical.ts +15 -15
  36. package/src/assets/icons/light/faEnvelope.ts +15 -15
  37. package/src/assets/icons/light/faEye.ts +15 -15
  38. package/src/assets/icons/light/faEyeSlash.ts +15 -15
  39. package/src/assets/icons/light/faFilter.ts +15 -15
  40. package/src/assets/icons/light/faGear.ts +15 -15
  41. package/src/assets/icons/light/faHouse.ts +15 -15
  42. package/src/assets/icons/light/faIdBadge.ts +15 -15
  43. package/src/assets/icons/light/faLineColumns.ts +15 -15
  44. package/src/assets/icons/light/faLink.ts +15 -15
  45. package/src/assets/icons/light/faMagnifyingGlass.ts +15 -15
  46. package/src/assets/icons/light/faPen.ts +15 -15
  47. package/src/assets/icons/light/faPrint.ts +15 -15
  48. package/src/assets/icons/light/faQuestion.ts +15 -15
  49. package/src/assets/icons/light/faRotateRight.ts +15 -15
  50. package/src/assets/icons/light/faTrashCan.ts +15 -15
  51. package/src/assets/icons/light/faTriangleExclamation.ts +15 -15
  52. package/src/assets/icons/light/faXmark.ts +15 -15
  53. package/src/assets/icons/regular/faArrowLeft.ts +15 -15
  54. package/src/assets/icons/regular/faArrowRightArrowLeft.ts +15 -15
  55. package/src/assets/icons/regular/faCircleCheck.ts +15 -15
  56. package/src/assets/icons/regular/faCircleExclamation.ts +15 -15
  57. package/src/assets/icons/regular/faCircleInfo.ts +15 -15
  58. package/src/assets/icons/regular/faFileArrowDown.ts +15 -15
  59. package/src/assets/icons/regular/faFilterCircleXmark.ts +15 -15
  60. package/src/assets/icons/regular/faTriangleExclamation.ts +15 -15
  61. package/src/assets/icons/solid/faAngleLeft.ts +15 -15
  62. package/src/assets/icons/solid/faAngleRight.ts +15 -15
  63. package/src/assets/icons/solid/faArrowDownWideShort.ts +15 -15
  64. package/src/assets/icons/solid/faCaretDown.ts +15 -15
  65. package/src/assets/icons/solid/faCheck.ts +15 -15
  66. package/src/assets/icons/solid/faEllipsisVertical.ts +15 -15
  67. package/src/assets/icons/solid/faEnvelopeDot.ts +15 -15
  68. package/src/assets/icons/solid/faFilter.ts +15 -15
  69. package/src/assets/icons/solid/faFloppyDisk.ts +15 -15
  70. package/src/assets/icons/solid/faGripDotsVertical.ts +15 -15
  71. package/src/assets/icons/solid/faListUl.ts +15 -15
  72. package/src/assets/icons/solid/faMinus.ts +15 -15
  73. package/src/assets/icons/solid/faPlus.ts +15 -15
  74. package/src/assets/icons/solid/faPrint.ts +15 -15
  75. package/src/assets/icons/solid/faRotateRight.ts +15 -15
  76. package/src/assets/icons/solid/faXmark.ts +15 -15
  77. package/src/components/Accordions/Accordions.tsx +75 -75
  78. package/src/components/Alert/Alert.tsx +31 -31
  79. package/src/components/Badge/DotBadge.tsx +16 -16
  80. package/src/components/Badge/NotificationBadge.tsx +29 -29
  81. package/src/components/Badge/PillBadge.tsx +13 -13
  82. package/src/components/Button/Button.tsx +56 -56
  83. package/src/components/Button/IconButton.tsx +51 -51
  84. package/src/components/Button/SplitButton.tsx +91 -91
  85. package/src/components/Dashboard/Dashboard.tsx +9 -9
  86. package/src/components/Dashboard/DashboardWidget.tsx +44 -44
  87. package/src/components/Dashboard/FastLinksWidget/FastLinksWidget.tsx +37 -37
  88. package/src/components/Dialog/Dialog.tsx +166 -166
  89. package/src/components/Dialog/components/DialogFooter.tsx +100 -100
  90. package/src/components/Header/Components/EnvBadge.tsx +17 -17
  91. package/src/components/Header/Components/ModuleSelect.tsx +68 -68
  92. package/src/components/Header/Components/Notifications.tsx +202 -202
  93. package/src/components/Header/Components/UserMenu.tsx +52 -52
  94. package/src/components/Header/Header.tsx +45 -37
  95. package/src/components/Helper/Collapse.tsx +53 -53
  96. package/src/components/Inputs/Checkbox.tsx +53 -53
  97. package/src/components/Inputs/CurrencyInput.tsx +124 -124
  98. package/src/components/Inputs/DateInput/DateInput.tsx +184 -184
  99. package/src/components/Inputs/DateInput/components/DatePartInput.tsx +159 -159
  100. package/src/components/Inputs/InputWrapper.tsx +95 -95
  101. package/src/components/Inputs/NumberInput.tsx +86 -86
  102. package/src/components/Inputs/PasswordInput.tsx +40 -40
  103. package/src/components/Inputs/PhoneInput/PhoneInput.tsx +108 -108
  104. package/src/components/Inputs/PhoneInput/utils/countryCode.ts +20 -20
  105. package/src/components/Inputs/Radio.tsx +59 -59
  106. package/src/components/Inputs/RadioGroup.tsx +48 -48
  107. package/src/components/Inputs/RadioLarge.tsx +39 -39
  108. package/src/components/Inputs/SearchInput.tsx +46 -46
  109. package/src/components/Inputs/Selects/Select.tsx +17 -17
  110. package/src/components/Inputs/Selects/components/CustomSelectComponents.tsx +19 -20
  111. package/src/components/Inputs/Selects/components/SelectWrapper.tsx +118 -118
  112. package/src/components/Inputs/Selects/utils/selectStyles.ts +101 -101
  113. package/src/components/Inputs/TextAreaInput.tsx +68 -68
  114. package/src/components/Inputs/TextInput.tsx +100 -100
  115. package/src/components/Inputs/TimeInput/TimeInput.tsx +81 -81
  116. package/src/components/List/List.tsx +21 -21
  117. package/src/components/List/ListItem.tsx +70 -70
  118. package/src/components/Loader/Loader.tsx +59 -59
  119. package/src/components/Loader/ProgressBar.tsx +41 -41
  120. package/src/components/Menu/Menu.tsx +81 -81
  121. package/src/components/Menu/MenuItem.tsx +46 -46
  122. package/src/components/Menu/NewMenu.tsx +63 -63
  123. package/src/components/Menu/hooks/useMenuPosition.tsx +116 -116
  124. package/src/components/PageComponents/ScrollableContent.tsx +11 -0
  125. package/src/components/Pullover/Pullover.tsx +197 -197
  126. package/src/components/Router/Router.tsx +52 -52
  127. package/src/components/Sidebar/AddButton.tsx +22 -22
  128. package/src/components/Sidebar/Sidebar.tsx +85 -85
  129. package/src/components/Sidebar/SidebarItem.tsx +84 -84
  130. package/src/components/Sidebar/types/ISidebar.ts +28 -28
  131. package/src/components/Table/Table.tsx +259 -259
  132. package/src/components/Table/components/columns/ColumnsList.tsx +60 -60
  133. package/src/components/Table/components/columns/TableColumnsEdit.tsx +114 -114
  134. package/src/components/Table/components/edit/TableEditRow.tsx +78 -78
  135. package/src/components/Table/components/filters/FilterItem.tsx +15 -15
  136. package/src/components/Table/components/filters/TableFilters.tsx +126 -126
  137. package/src/components/Table/components/footer/TableFooter.tsx +126 -126
  138. package/src/components/Table/components/header/TableHeader.tsx +40 -40
  139. package/src/components/Table/components/header/TableHeaderRow.tsx +57 -57
  140. package/src/components/Table/components/items/TableItemActions.tsx +78 -78
  141. package/src/components/Table/components/print/TablePrint.tsx +200 -200
  142. package/src/components/Table/components/select/TableSelect.tsx +50 -50
  143. package/src/components/Table/components/sort/TableSort.tsx +73 -73
  144. package/src/components/Table/components/templates/CreateTemplateDialog.tsx +58 -58
  145. package/src/components/Table/components/templates/TableTemplates.tsx +65 -65
  146. package/src/components/Table/components/templates/TemplatesPullover.tsx +88 -88
  147. package/src/components/Table/contexts/TableContext.tsx +116 -116
  148. package/src/components/Table/hooks/localHooks/useLocalTableColumns.tsx +70 -70
  149. package/src/components/Table/hooks/localHooks/useLocalTableData.tsx +84 -84
  150. package/src/components/Table/hooks/localHooks/useLocalTableKeyboard.ts +176 -176
  151. package/src/components/Table/hooks/localHooks/useLocalTablePagination.ts +12 -12
  152. package/src/components/Table/hooks/useTableColumns.ts +34 -34
  153. package/src/components/Table/hooks/useTableEdit.tsx +140 -140
  154. package/src/components/Table/hooks/useTableFilterFields.tsx +150 -150
  155. package/src/components/Table/hooks/useTablePagination.ts +19 -19
  156. package/src/components/Table/hooks/useTablePrint.ts +83 -83
  157. package/src/components/Table/hooks/useTableSearch.ts +31 -31
  158. package/src/components/Table/hooks/useTableSelect.ts +19 -19
  159. package/src/components/Table/hooks/useTableSort.ts +8 -8
  160. package/src/components/Tabs/Tabs.tsx +68 -68
  161. package/src/components/Tooltip/Tooltip.tsx +191 -191
  162. package/src/components/Tree/Tree.tsx +22 -22
  163. package/src/components/Tree/TreeItem.tsx +57 -57
  164. package/src/components/Wrappers/AppLayout.tsx +17 -17
  165. package/src/components/Wrappers/ConditionalWrapper.tsx +10 -10
  166. package/src/components/Wrappers/FormWrapper.tsx +84 -84
  167. package/src/components/Wrappers/PageLayout.tsx +164 -156
  168. package/src/hooks/useBackgroundClose.ts +19 -19
  169. package/src/hooks/useGetFocusableElements.ts +43 -43
  170. package/src/hooks/useIsMenuOpen.ts +11 -11
  171. package/src/hooks/useLocalPopoverControl.ts +32 -32
  172. package/src/hooks/usePopupControl.ts +22 -22
  173. package/src/hooks/useZendesk.ts +21 -21
  174. package/src/index.ts +381 -379
  175. package/src/pages/NoAccessPage.tsx +27 -27
  176. package/src/pages/NotFoundPage.tsx +26 -26
  177. package/src/styles/common/helpers/_color.scss +3 -0
  178. package/src/styles/components/_page.scss +0 -13
  179. package/src/types/IBasic.ts +32 -32
  180. package/src/types/IHeader.ts +40 -40
  181. package/src/types/IInfo.ts +1 -1
  182. package/src/types/IKeyboard.ts +33 -33
  183. package/src/types/IMenu.ts +19 -19
  184. package/src/types/INotifications.ts +15 -15
  185. package/src/types/IPopup.ts +17 -17
  186. package/src/types/IRouter.ts +6 -6
  187. package/src/types/ISelect.ts +54 -54
  188. package/src/types/ITab.ts +10 -10
  189. package/src/types/ITable.ts +290 -290
  190. package/src/utils/InputPatternValidation.ts +12 -12
  191. package/src/utils/dateUtils.ts +32 -32
  192. package/src/utils/fileUtils.ts +177 -177
  193. package/src/utils/i18n/i18nIUICyrilic.ts +119 -119
  194. package/src/utils/i18n/i18nIUILatin.ts +120 -120
  195. package/src/utils/i18n/i18nIUIMe.ts +118 -118
  196. package/src/utils/icons.ts +13 -13
  197. package/src/utils/localStorageHelper.ts +24 -24
  198. package/src/utils/logoUtils.ts +7 -7
  199. package/src/utils/numberUtils.ts +21 -21
  200. package/src/utils/objectUtils.ts +114 -114
  201. package/src/utils/popupUtils.ts +82 -82
  202. package/src/utils/rootDir.ts +1 -1
  203. package/src/utils/stringUtils.ts +18 -18
  204. package/src/utils/tableUtils.ts +130 -130
  205. package/src/utils/toasts.ts +6 -6
  206. package/src/utils/urlUtils.ts +4 -4
  207. package/dist/NoAccessPage-CJisyKrk.js +0 -2
  208. package/dist/NotFoundPage-BeRit0kr.js +0 -2
@@ -1,177 +1,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
+ // 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
+ };