@webitel/ui-sdk 26.2.101 → 26.2.103
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.
- package/dist/ui-sdk.css +1 -1
- package/package.json +4 -3
- package/src/components/on-demand/wt-upload-file-icon-btn/wt-upload-file-icon-btn.vue +77 -0
- package/src/css/main.css +17 -0
- package/src/locale/en/en.js +9 -0
- package/src/locale/es/es.js +9 -0
- package/src/locale/kz/kz.js +9 -0
- package/src/locale/pl/pl.js +9 -0
- package/src/locale/ro/ro.js +9 -0
- package/src/locale/ru/ru.js +9 -0
- package/src/locale/uk/uk.js +9 -0
- package/src/locale/uz/uz.js +9 -0
- package/src/locale/vi/vi.js +9 -0
- package/src/modules/UploadCsvPopup/components/wt-upload-csv-popup.vue +266 -0
- package/src/modules/UploadCsvPopup/composable/useUploadCsv.ts +203 -0
- package/src/modules/UploadCsvPopup/scripts/normalizeCSVData.ts +60 -0
- package/src/modules/UploadCsvPopup/scripts/parseCSV.ts +13 -0
- package/src/modules/UploadCsvPopup/scripts/processFile.ts +12 -0
- package/src/modules/UploadCsvPopup/scripts/splitAndSaveData.ts +25 -0
- package/src/modules/UploadCsvPopup/types/WtUploadCSVHandlingMode.enum.ts +9 -0
- package/types/components/on-demand/wt-upload-file-icon-btn/wt-upload-file-icon-btn.vue.d.ts +12 -0
- package/types/locale/en/en.d.ts +9 -0
- package/types/locale/es/es.d.ts +9 -0
- package/types/locale/i18n.d.ts +81 -0
- package/types/locale/index.d.ts +81 -0
- package/types/locale/kz/kz.d.ts +9 -0
- package/types/locale/pl/pl.d.ts +9 -0
- package/types/locale/ro/ro.d.ts +9 -0
- package/types/locale/ru/ru.d.ts +9 -0
- package/types/locale/uk/uk.d.ts +9 -0
- package/types/locale/uz/uz.d.ts +9 -0
- package/types/locale/vi/vi.d.ts +9 -0
- package/types/modules/UploadCsvPopup/components/wt-upload-csv-popup.vue.d.ts +22 -0
- package/types/modules/UploadCsvPopup/composable/useUploadCsv.d.ts +33 -0
- package/types/modules/UploadCsvPopup/scripts/normalizeCSVData.d.ts +21 -0
- package/types/modules/UploadCsvPopup/scripts/parseCSV.d.ts +2 -0
- package/types/modules/UploadCsvPopup/scripts/processFile.d.ts +4 -0
- package/types/modules/UploadCsvPopup/scripts/splitAndSaveData.d.ts +5 -0
- package/types/modules/UploadCsvPopup/types/WtUploadCSVHandlingMode.enum.d.ts +6 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { computed, ref, watch } from 'vue';
|
|
2
|
+
|
|
3
|
+
import { debounce, isEmpty } from '../../../scripts';
|
|
4
|
+
import normalizeCSVData from '../scripts/normalizeCSVData';
|
|
5
|
+
import parseCSV from '../scripts/parseCSV';
|
|
6
|
+
import processFile from '../scripts/processFile';
|
|
7
|
+
import splitAndSaveData from '../scripts/splitAndSaveData';
|
|
8
|
+
import HandlingCSVMode from '../types/WtUploadCSVHandlingMode.enum';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @param {Object} params
|
|
12
|
+
* @param {Object} params.props - component props (file, mappingFields, handlingMode, addBulkItems, fileUploadHandler)
|
|
13
|
+
* @param {Function} params.emit - emit from setup
|
|
14
|
+
* @param {import('vue').Ref<boolean>} params.skipHeaders
|
|
15
|
+
* @param {import('vue').Ref<string>} params.separator
|
|
16
|
+
*/
|
|
17
|
+
const useUploadCsv = ({ props, emit, skipHeaders, separator }) => {
|
|
18
|
+
const isReadingFile = ref(false);
|
|
19
|
+
const isParsingCSV = ref(false);
|
|
20
|
+
const parsedFile = ref(null);
|
|
21
|
+
const isParsingPreview = ref(false);
|
|
22
|
+
const parseErrorStackTrace = ref('');
|
|
23
|
+
const csvPreview = ref([
|
|
24
|
+
[],
|
|
25
|
+
]);
|
|
26
|
+
|
|
27
|
+
const csvValues = computed(() =>
|
|
28
|
+
(props.mappingFields || [])
|
|
29
|
+
.filter((field) => field.csv)
|
|
30
|
+
.flatMap((field) => field.csv),
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
const csvColumns = computed(() => {
|
|
34
|
+
const firstRow = csvPreview.value[0] || {};
|
|
35
|
+
const columns = Object.keys(firstRow);
|
|
36
|
+
|
|
37
|
+
if (skipHeaders.value) {
|
|
38
|
+
return columns;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return columns.map((_, index) => `${index + 1} column`);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const filteredCsvColumns = computed(() =>
|
|
45
|
+
csvColumns.value.filter((item) => csvValues.value.indexOf(item) !== -1),
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const parseCSVOptions = computed(() => ({
|
|
49
|
+
/* docs: https://csv.js.org/parse/options/ */
|
|
50
|
+
delimiter: separator.value,
|
|
51
|
+
columns: (firstLine) => {
|
|
52
|
+
if (skipHeaders.value) return firstLine;
|
|
53
|
+
return firstLine.map((_, index) => `${index}`);
|
|
54
|
+
},
|
|
55
|
+
skipEmptyLines: true,
|
|
56
|
+
}));
|
|
57
|
+
|
|
58
|
+
const csvPreviewTableHeaders = computed(() =>
|
|
59
|
+
csvColumns.value.map((col, index) => ({
|
|
60
|
+
text: col,
|
|
61
|
+
value: skipHeaders.value ? col : `${index}`,
|
|
62
|
+
})),
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
const filteredCsvPreviewTableHeaders = computed(() =>
|
|
66
|
+
filteredCsvColumns.value.map((col, index) => ({
|
|
67
|
+
text: col,
|
|
68
|
+
value: skipHeaders.value ? col : `${index}`,
|
|
69
|
+
})),
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const csvPreviewTableData = computed(() => csvPreview.value);
|
|
73
|
+
|
|
74
|
+
const allowSaveAction = computed(() =>
|
|
75
|
+
(props.mappingFields || []).every(
|
|
76
|
+
(field) => !field.required || !isEmpty(field.csv),
|
|
77
|
+
),
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
async function createCSVPreview(file = parsedFile.value) {
|
|
81
|
+
try {
|
|
82
|
+
parseErrorStackTrace.value = '';
|
|
83
|
+
csvPreview.value = await parseCSV(file, {
|
|
84
|
+
...parseCSVOptions.value,
|
|
85
|
+
toLine: 4,
|
|
86
|
+
});
|
|
87
|
+
} catch (err) {
|
|
88
|
+
parseErrorStackTrace.value = err;
|
|
89
|
+
csvPreview.value = [
|
|
90
|
+
[],
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function resetMappings() {
|
|
96
|
+
const mappingFields = (props.mappingFields || []).map((field) => ({
|
|
97
|
+
...field,
|
|
98
|
+
csv: field.multiple ? [] : '',
|
|
99
|
+
}));
|
|
100
|
+
emit('changeMappingFields', mappingFields);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async function handleParseOptionsChangeImpl() {
|
|
104
|
+
isParsingPreview.value = true;
|
|
105
|
+
await createCSVPreview();
|
|
106
|
+
resetMappings();
|
|
107
|
+
isParsingPreview.value = false;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const handleParseOptionsChange = debounce(handleParseOptionsChangeImpl);
|
|
111
|
+
|
|
112
|
+
async function initUploadPopup() {
|
|
113
|
+
if (!props.file) return;
|
|
114
|
+
|
|
115
|
+
isReadingFile.value = true;
|
|
116
|
+
|
|
117
|
+
parsedFile.value = await processFile(props.file, {});
|
|
118
|
+
await createCSVPreview(parsedFile.value);
|
|
119
|
+
|
|
120
|
+
isReadingFile.value = false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async function handleCSVProcessing() {
|
|
124
|
+
const sourceData = await parseCSV(parsedFile.value, parseCSVOptions.value);
|
|
125
|
+
|
|
126
|
+
const normalizedData = normalizeCSVData({
|
|
127
|
+
data: sourceData,
|
|
128
|
+
mappings: props.mappingFields,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
await splitAndSaveData({
|
|
132
|
+
data: normalizedData,
|
|
133
|
+
saveCallback: props.addBulkItems,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
async function processCSV() {
|
|
138
|
+
isParsingCSV.value = true;
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
parseErrorStackTrace.value = '';
|
|
142
|
+
|
|
143
|
+
const handler =
|
|
144
|
+
props.handlingMode === HandlingCSVMode.PROCESS
|
|
145
|
+
? handleCSVProcessing
|
|
146
|
+
: props.fileUploadHandler;
|
|
147
|
+
|
|
148
|
+
if (handler) {
|
|
149
|
+
await handler();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
close();
|
|
153
|
+
} catch (err) {
|
|
154
|
+
parseErrorStackTrace.value = err;
|
|
155
|
+
throw err;
|
|
156
|
+
} finally {
|
|
157
|
+
isParsingCSV.value = false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function handleSave() {
|
|
162
|
+
emit('save');
|
|
163
|
+
return processCSV();
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function close() {
|
|
167
|
+
emit('close');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// watchers (те, що були в mixin.watch)
|
|
171
|
+
watch(skipHeaders, async () => {
|
|
172
|
+
await handleParseOptionsChange();
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
watch(separator, async () => {
|
|
176
|
+
await handleParseOptionsChange();
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
watch(
|
|
180
|
+
() => props.file,
|
|
181
|
+
(file) => {
|
|
182
|
+
if (file) initUploadPopup();
|
|
183
|
+
},
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
return {
|
|
187
|
+
isReadingFile,
|
|
188
|
+
isParsingCSV,
|
|
189
|
+
isParsingPreview,
|
|
190
|
+
parseErrorStackTrace,
|
|
191
|
+
csvPreviewTableData,
|
|
192
|
+
csvPreviewTableHeaders,
|
|
193
|
+
filteredCsvPreviewTableHeaders,
|
|
194
|
+
csvColumns,
|
|
195
|
+
allowSaveAction,
|
|
196
|
+
|
|
197
|
+
processCSV,
|
|
198
|
+
handleSave,
|
|
199
|
+
close,
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export default useUploadCsv;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import isEmpty from '../../../scripts/isEmpty';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param data
|
|
6
|
+
* @param mappings
|
|
7
|
+
*
|
|
8
|
+
* Data format: {
|
|
9
|
+
* [colName]: [value]
|
|
10
|
+
* }
|
|
11
|
+
*
|
|
12
|
+
* Mappings format: {
|
|
13
|
+
* name: string, // webitel field name
|
|
14
|
+
* csv: string | string[], // csv column name
|
|
15
|
+
* required: boolean, // is this webitel field required?
|
|
16
|
+
* locale: string, // ui
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
const normalizeCSVData = ({ data, mappings }) => {
|
|
20
|
+
const nonEmptyMappingFields = mappings.filter((field) => !isEmpty(field.csv));
|
|
21
|
+
|
|
22
|
+
return data.map((dataItem, index) => {
|
|
23
|
+
const normalized = nonEmptyMappingFields.reduce(
|
|
24
|
+
(normalizedItem, { name, csv, required }) => {
|
|
25
|
+
const value = Array.isArray(csv)
|
|
26
|
+
? csv.map((csv) => dataItem[csv])
|
|
27
|
+
: dataItem[csv];
|
|
28
|
+
|
|
29
|
+
let filteredValue; // Filter empty values in validation purposes
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
// Because required field can be combined from many fields in multiple select, so we need to check all values.
|
|
32
|
+
// For example, if we have 3 fields and they are empty, we will get empty array.
|
|
33
|
+
filteredValue = value.filter((item) => !isEmpty(item));
|
|
34
|
+
} else {
|
|
35
|
+
filteredValue = value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const isValueEmpty = isEmpty(filteredValue);
|
|
39
|
+
// This check is only for required fields
|
|
40
|
+
if (required && isValueEmpty) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Required field is empty: ${name} on row ${index + 1}`,
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return isValueEmpty
|
|
47
|
+
? normalizedItem
|
|
48
|
+
: {
|
|
49
|
+
...normalizedItem,
|
|
50
|
+
[name]: value, // Return the original value for proper mapping (e.g., variables in members)
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
{},
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return normalized;
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export default normalizeCSVData;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { parse } from 'csv-parse/browser/esm';
|
|
2
|
+
|
|
3
|
+
const parseCSV = (csvStr, options = {}) =>
|
|
4
|
+
new Promise((resolve, reject) => {
|
|
5
|
+
const callback = (err, output) => {
|
|
6
|
+
if (output) resolve(output, err);
|
|
7
|
+
reject(err);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
parse(csvStr, options, callback);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export default parseCSV;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const processFile = (file, { charset = 'utf-8' } = {}) =>
|
|
2
|
+
new Promise((resolve, reject) => {
|
|
3
|
+
const reader = new FileReader();
|
|
4
|
+
reader.addEventListener('load', (e) => {
|
|
5
|
+
const loadedFile = e.target.result;
|
|
6
|
+
resolve(loadedFile);
|
|
7
|
+
});
|
|
8
|
+
reader.addEventListener('error', (e) => reject(e));
|
|
9
|
+
reader.readAsText(file, charset);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export default processFile;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const splitAndSaveData = async ({ data, saveCallback }) => {
|
|
2
|
+
const chunkSize = 100;
|
|
3
|
+
const chunksCount = Math.ceil(data.length / chunkSize);
|
|
4
|
+
let processedChunkIndex = 1;
|
|
5
|
+
try {
|
|
6
|
+
for (; processedChunkIndex <= chunksCount; processedChunkIndex += 1) {
|
|
7
|
+
await saveCallback(
|
|
8
|
+
data.slice(
|
|
9
|
+
(processedChunkIndex - 1) * chunkSize,
|
|
10
|
+
processedChunkIndex * chunkSize,
|
|
11
|
+
),
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
} catch (err) {
|
|
15
|
+
const errMessage = JSON.stringify(err instanceof Error ? err.message : err);
|
|
16
|
+
|
|
17
|
+
throw new Error(
|
|
18
|
+
`An error occurred during saving ${
|
|
19
|
+
(processedChunkIndex - 1) * chunkSize
|
|
20
|
+
}-${processedChunkIndex * chunkSize} data chunk: ${errMessage}`,
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default splitAndSaveData;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
accept?: string;
|
|
3
|
+
}
|
|
4
|
+
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
5
|
+
change: (files: FileList, event: Event) => any;
|
|
6
|
+
}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
|
|
7
|
+
onChange?: (files: FileList, event: Event) => any;
|
|
8
|
+
}>, {
|
|
9
|
+
accept: string;
|
|
10
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
package/types/locale/en/en.d.ts
CHANGED
|
@@ -220,6 +220,15 @@ declare const _default: {
|
|
|
220
220
|
FAILED: string;
|
|
221
221
|
};
|
|
222
222
|
};
|
|
223
|
+
importCSV: string;
|
|
224
|
+
CSV: {
|
|
225
|
+
skipHeaders: string;
|
|
226
|
+
charSet: string;
|
|
227
|
+
separator: string;
|
|
228
|
+
CSVColumn: string;
|
|
229
|
+
fieldName: string;
|
|
230
|
+
clearMember: string;
|
|
231
|
+
};
|
|
223
232
|
};
|
|
224
233
|
channel: {
|
|
225
234
|
state: {
|
package/types/locale/es/es.d.ts
CHANGED
|
@@ -241,6 +241,15 @@ declare namespace _default {
|
|
|
241
241
|
export { status_2 as status };
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
+
export let importCSV: string;
|
|
245
|
+
export namespace CSV {
|
|
246
|
+
let skipHeaders: string;
|
|
247
|
+
let charSet: string;
|
|
248
|
+
let separator: string;
|
|
249
|
+
let CSVColumn: string;
|
|
250
|
+
let fieldName: string;
|
|
251
|
+
let clearMember: string;
|
|
252
|
+
}
|
|
244
253
|
export namespace channel_1 {
|
|
245
254
|
let state_1: {
|
|
246
255
|
[x: number]: string;
|
package/types/locale/i18n.d.ts
CHANGED
|
@@ -221,6 +221,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
221
221
|
FAILED: string;
|
|
222
222
|
};
|
|
223
223
|
};
|
|
224
|
+
importCSV: string;
|
|
225
|
+
CSV: {
|
|
226
|
+
skipHeaders: string;
|
|
227
|
+
charSet: string;
|
|
228
|
+
separator: string;
|
|
229
|
+
CSVColumn: string;
|
|
230
|
+
fieldName: string;
|
|
231
|
+
clearMember: string;
|
|
232
|
+
};
|
|
224
233
|
};
|
|
225
234
|
channel: {
|
|
226
235
|
state: {
|
|
@@ -1032,6 +1041,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
1032
1041
|
};
|
|
1033
1042
|
};
|
|
1034
1043
|
};
|
|
1044
|
+
importCSV: string;
|
|
1045
|
+
CSV: {
|
|
1046
|
+
skipHeaders: string;
|
|
1047
|
+
charSet: string;
|
|
1048
|
+
separator: string;
|
|
1049
|
+
CSVColumn: string;
|
|
1050
|
+
fieldName: string;
|
|
1051
|
+
clearMember: string;
|
|
1052
|
+
};
|
|
1035
1053
|
channel: {
|
|
1036
1054
|
state: {
|
|
1037
1055
|
[x: number]: string;
|
|
@@ -1826,6 +1844,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
1826
1844
|
};
|
|
1827
1845
|
};
|
|
1828
1846
|
};
|
|
1847
|
+
importCSV: string;
|
|
1848
|
+
CSV: {
|
|
1849
|
+
skipHeaders: string;
|
|
1850
|
+
charSet: string;
|
|
1851
|
+
separator: string;
|
|
1852
|
+
CSVColumn: string;
|
|
1853
|
+
fieldName: string;
|
|
1854
|
+
clearMember: string;
|
|
1855
|
+
};
|
|
1829
1856
|
channel: {
|
|
1830
1857
|
state: {
|
|
1831
1858
|
[x: number]: string;
|
|
@@ -2622,6 +2649,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
2622
2649
|
};
|
|
2623
2650
|
};
|
|
2624
2651
|
};
|
|
2652
|
+
importCSV: string;
|
|
2653
|
+
CSV: {
|
|
2654
|
+
skipHeaders: string;
|
|
2655
|
+
charSet: string;
|
|
2656
|
+
separator: string;
|
|
2657
|
+
CSVColumn: string;
|
|
2658
|
+
fieldName: string;
|
|
2659
|
+
clearMember: string;
|
|
2660
|
+
};
|
|
2625
2661
|
channel: {
|
|
2626
2662
|
state: {
|
|
2627
2663
|
[x: number]: string;
|
|
@@ -3416,6 +3452,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
3416
3452
|
};
|
|
3417
3453
|
};
|
|
3418
3454
|
};
|
|
3455
|
+
importCSV: string;
|
|
3456
|
+
CSV: {
|
|
3457
|
+
skipHeaders: string;
|
|
3458
|
+
charSet: string;
|
|
3459
|
+
separator: string;
|
|
3460
|
+
CSVColumn: string;
|
|
3461
|
+
fieldName: string;
|
|
3462
|
+
clearMember: string;
|
|
3463
|
+
};
|
|
3419
3464
|
channel: {
|
|
3420
3465
|
state: {
|
|
3421
3466
|
[x: number]: string;
|
|
@@ -4212,6 +4257,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
4212
4257
|
};
|
|
4213
4258
|
};
|
|
4214
4259
|
};
|
|
4260
|
+
importCSV: string;
|
|
4261
|
+
CSV: {
|
|
4262
|
+
skipHeaders: string;
|
|
4263
|
+
charSet: string;
|
|
4264
|
+
separator: string;
|
|
4265
|
+
CSVColumn: string;
|
|
4266
|
+
fieldName: string;
|
|
4267
|
+
clearMember: string;
|
|
4268
|
+
};
|
|
4215
4269
|
channel: {
|
|
4216
4270
|
state: {
|
|
4217
4271
|
[x: number]: string;
|
|
@@ -5008,6 +5062,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
5008
5062
|
};
|
|
5009
5063
|
};
|
|
5010
5064
|
};
|
|
5065
|
+
importCSV: string;
|
|
5066
|
+
CSV: {
|
|
5067
|
+
skipHeaders: string;
|
|
5068
|
+
charSet: string;
|
|
5069
|
+
separator: string;
|
|
5070
|
+
CSVColumn: string;
|
|
5071
|
+
fieldName: string;
|
|
5072
|
+
clearMember: string;
|
|
5073
|
+
};
|
|
5011
5074
|
channel: {
|
|
5012
5075
|
state: {
|
|
5013
5076
|
[x: number]: string;
|
|
@@ -5805,6 +5868,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
5805
5868
|
};
|
|
5806
5869
|
};
|
|
5807
5870
|
};
|
|
5871
|
+
importCSV: string;
|
|
5872
|
+
CSV: {
|
|
5873
|
+
skipHeaders: string;
|
|
5874
|
+
charSet: string;
|
|
5875
|
+
separator: string;
|
|
5876
|
+
CSVColumn: string;
|
|
5877
|
+
fieldName: string;
|
|
5878
|
+
clearMember: string;
|
|
5879
|
+
};
|
|
5808
5880
|
channel: {
|
|
5809
5881
|
state: {
|
|
5810
5882
|
[x: number]: string;
|
|
@@ -6601,6 +6673,15 @@ declare const _default: import("vue-i18n").I18n<{
|
|
|
6601
6673
|
};
|
|
6602
6674
|
};
|
|
6603
6675
|
};
|
|
6676
|
+
importCSV: string;
|
|
6677
|
+
CSV: {
|
|
6678
|
+
skipHeaders: string;
|
|
6679
|
+
charSet: string;
|
|
6680
|
+
separator: string;
|
|
6681
|
+
CSVColumn: string;
|
|
6682
|
+
fieldName: string;
|
|
6683
|
+
clearMember: string;
|
|
6684
|
+
};
|
|
6604
6685
|
channel: {
|
|
6605
6686
|
state: {
|
|
6606
6687
|
[x: number]: string;
|
package/types/locale/index.d.ts
CHANGED
|
@@ -231,6 +231,15 @@ export declare const messages: {
|
|
|
231
231
|
FAILED: string;
|
|
232
232
|
};
|
|
233
233
|
};
|
|
234
|
+
importCSV: string;
|
|
235
|
+
CSV: {
|
|
236
|
+
skipHeaders: string;
|
|
237
|
+
charSet: string;
|
|
238
|
+
separator: string;
|
|
239
|
+
CSVColumn: string;
|
|
240
|
+
fieldName: string;
|
|
241
|
+
clearMember: string;
|
|
242
|
+
};
|
|
234
243
|
};
|
|
235
244
|
channel: {
|
|
236
245
|
state: {
|
|
@@ -1042,6 +1051,15 @@ export declare const messages: {
|
|
|
1042
1051
|
};
|
|
1043
1052
|
};
|
|
1044
1053
|
};
|
|
1054
|
+
importCSV: string;
|
|
1055
|
+
CSV: {
|
|
1056
|
+
skipHeaders: string;
|
|
1057
|
+
charSet: string;
|
|
1058
|
+
separator: string;
|
|
1059
|
+
CSVColumn: string;
|
|
1060
|
+
fieldName: string;
|
|
1061
|
+
clearMember: string;
|
|
1062
|
+
};
|
|
1045
1063
|
channel: {
|
|
1046
1064
|
state: {
|
|
1047
1065
|
[x: number]: string;
|
|
@@ -1836,6 +1854,15 @@ export declare const messages: {
|
|
|
1836
1854
|
};
|
|
1837
1855
|
};
|
|
1838
1856
|
};
|
|
1857
|
+
importCSV: string;
|
|
1858
|
+
CSV: {
|
|
1859
|
+
skipHeaders: string;
|
|
1860
|
+
charSet: string;
|
|
1861
|
+
separator: string;
|
|
1862
|
+
CSVColumn: string;
|
|
1863
|
+
fieldName: string;
|
|
1864
|
+
clearMember: string;
|
|
1865
|
+
};
|
|
1839
1866
|
channel: {
|
|
1840
1867
|
state: {
|
|
1841
1868
|
[x: number]: string;
|
|
@@ -2632,6 +2659,15 @@ export declare const messages: {
|
|
|
2632
2659
|
};
|
|
2633
2660
|
};
|
|
2634
2661
|
};
|
|
2662
|
+
importCSV: string;
|
|
2663
|
+
CSV: {
|
|
2664
|
+
skipHeaders: string;
|
|
2665
|
+
charSet: string;
|
|
2666
|
+
separator: string;
|
|
2667
|
+
CSVColumn: string;
|
|
2668
|
+
fieldName: string;
|
|
2669
|
+
clearMember: string;
|
|
2670
|
+
};
|
|
2635
2671
|
channel: {
|
|
2636
2672
|
state: {
|
|
2637
2673
|
[x: number]: string;
|
|
@@ -3426,6 +3462,15 @@ export declare const messages: {
|
|
|
3426
3462
|
};
|
|
3427
3463
|
};
|
|
3428
3464
|
};
|
|
3465
|
+
importCSV: string;
|
|
3466
|
+
CSV: {
|
|
3467
|
+
skipHeaders: string;
|
|
3468
|
+
charSet: string;
|
|
3469
|
+
separator: string;
|
|
3470
|
+
CSVColumn: string;
|
|
3471
|
+
fieldName: string;
|
|
3472
|
+
clearMember: string;
|
|
3473
|
+
};
|
|
3429
3474
|
channel: {
|
|
3430
3475
|
state: {
|
|
3431
3476
|
[x: number]: string;
|
|
@@ -4222,6 +4267,15 @@ export declare const messages: {
|
|
|
4222
4267
|
};
|
|
4223
4268
|
};
|
|
4224
4269
|
};
|
|
4270
|
+
importCSV: string;
|
|
4271
|
+
CSV: {
|
|
4272
|
+
skipHeaders: string;
|
|
4273
|
+
charSet: string;
|
|
4274
|
+
separator: string;
|
|
4275
|
+
CSVColumn: string;
|
|
4276
|
+
fieldName: string;
|
|
4277
|
+
clearMember: string;
|
|
4278
|
+
};
|
|
4225
4279
|
channel: {
|
|
4226
4280
|
state: {
|
|
4227
4281
|
[x: number]: string;
|
|
@@ -5018,6 +5072,15 @@ export declare const messages: {
|
|
|
5018
5072
|
};
|
|
5019
5073
|
};
|
|
5020
5074
|
};
|
|
5075
|
+
importCSV: string;
|
|
5076
|
+
CSV: {
|
|
5077
|
+
skipHeaders: string;
|
|
5078
|
+
charSet: string;
|
|
5079
|
+
separator: string;
|
|
5080
|
+
CSVColumn: string;
|
|
5081
|
+
fieldName: string;
|
|
5082
|
+
clearMember: string;
|
|
5083
|
+
};
|
|
5021
5084
|
channel: {
|
|
5022
5085
|
state: {
|
|
5023
5086
|
[x: number]: string;
|
|
@@ -5815,6 +5878,15 @@ export declare const messages: {
|
|
|
5815
5878
|
};
|
|
5816
5879
|
};
|
|
5817
5880
|
};
|
|
5881
|
+
importCSV: string;
|
|
5882
|
+
CSV: {
|
|
5883
|
+
skipHeaders: string;
|
|
5884
|
+
charSet: string;
|
|
5885
|
+
separator: string;
|
|
5886
|
+
CSVColumn: string;
|
|
5887
|
+
fieldName: string;
|
|
5888
|
+
clearMember: string;
|
|
5889
|
+
};
|
|
5818
5890
|
channel: {
|
|
5819
5891
|
state: {
|
|
5820
5892
|
[x: number]: string;
|
|
@@ -6611,6 +6683,15 @@ export declare const messages: {
|
|
|
6611
6683
|
};
|
|
6612
6684
|
};
|
|
6613
6685
|
};
|
|
6686
|
+
importCSV: string;
|
|
6687
|
+
CSV: {
|
|
6688
|
+
skipHeaders: string;
|
|
6689
|
+
charSet: string;
|
|
6690
|
+
separator: string;
|
|
6691
|
+
CSVColumn: string;
|
|
6692
|
+
fieldName: string;
|
|
6693
|
+
clearMember: string;
|
|
6694
|
+
};
|
|
6614
6695
|
channel: {
|
|
6615
6696
|
state: {
|
|
6616
6697
|
[x: number]: string;
|
package/types/locale/kz/kz.d.ts
CHANGED
|
@@ -241,6 +241,15 @@ declare namespace _default {
|
|
|
241
241
|
export { status_2 as status };
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
+
export let importCSV: string;
|
|
245
|
+
export namespace CSV {
|
|
246
|
+
let skipHeaders: string;
|
|
247
|
+
let charSet: string;
|
|
248
|
+
let separator: string;
|
|
249
|
+
let CSVColumn: string;
|
|
250
|
+
let fieldName: string;
|
|
251
|
+
let clearMember: string;
|
|
252
|
+
}
|
|
244
253
|
export namespace channel_1 {
|
|
245
254
|
let state_1: {
|
|
246
255
|
[x: number]: string;
|
package/types/locale/pl/pl.d.ts
CHANGED
|
@@ -241,6 +241,15 @@ declare namespace _default {
|
|
|
241
241
|
export { status_2 as status };
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
+
export let importCSV: string;
|
|
245
|
+
export namespace CSV {
|
|
246
|
+
let skipHeaders: string;
|
|
247
|
+
let charSet: string;
|
|
248
|
+
let separator: string;
|
|
249
|
+
let CSVColumn: string;
|
|
250
|
+
let fieldName: string;
|
|
251
|
+
let clearMember: string;
|
|
252
|
+
}
|
|
244
253
|
export namespace channel_1 {
|
|
245
254
|
let state_1: {
|
|
246
255
|
[x: number]: string;
|
package/types/locale/ro/ro.d.ts
CHANGED
|
@@ -241,6 +241,15 @@ declare namespace _default {
|
|
|
241
241
|
export { status_2 as status };
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
+
export let importCSV: string;
|
|
245
|
+
export namespace CSV {
|
|
246
|
+
let skipHeaders: string;
|
|
247
|
+
let charSet: string;
|
|
248
|
+
let separator: string;
|
|
249
|
+
let CSVColumn: string;
|
|
250
|
+
let fieldName: string;
|
|
251
|
+
let clearMember: string;
|
|
252
|
+
}
|
|
244
253
|
export namespace channel_1 {
|
|
245
254
|
let state_1: {
|
|
246
255
|
[x: number]: string;
|