spotlibs-components 0.1.10 → 0.1.12
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/{chunk-OGJBPTUP.mjs → chunk-F6KSEYVB.mjs} +3 -3
- package/dist/{chunk-OGJBPTUP.mjs.map → chunk-F6KSEYVB.mjs.map} +1 -1
- package/dist/chunk-UFE7HFT2.mjs +60 -0
- package/dist/chunk-UFE7HFT2.mjs.map +1 -0
- package/dist/{chunk-NXFLMH2Q.mjs → chunk-YOSPWY5K.mjs} +3 -4
- package/dist/{chunk-NXFLMH2Q.mjs.map → chunk-YOSPWY5K.mjs.map} +1 -1
- package/dist/{atoms → components/atoms}/icons/index.mjs +2 -2
- package/dist/components/index.d.mts +449 -0
- package/dist/components/index.mjs +7053 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/{mui → components/mui}/index.mjs +1 -1
- package/dist/components/types.d.mts +4 -0
- package/dist/{types-B0iF5xX8.d.mts → types-D1akE7ak.d.mts} +334 -245
- package/dist/utils/index.d.mts +106 -0
- package/dist/utils/index.mjs +477 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +13 -2
- package/src/utils/admin-kuota-nasional/constant.d.ts +23 -0
- package/src/utils/admin-kuota-nasional/constant.js +95 -0
- package/src/utils/asset.d.ts +1 -0
- package/src/utils/asset.js +10 -0
- package/src/utils/booleanUtils.d.ts +2 -0
- package/src/utils/booleanUtils.js +19 -0
- package/src/utils/briguna-digital/constant.d.ts +2 -0
- package/src/utils/briguna-digital/constant.js +12 -0
- package/src/utils/compress.d.ts +2 -0
- package/src/utils/compress.js +24 -0
- package/src/utils/compressImage.d.ts +6 -0
- package/src/utils/compressImage.js +20 -0
- package/src/utils/constants.d.ts +5 -0
- package/src/utils/constants.js +20 -0
- package/src/utils/cookies.d.ts +19 -0
- package/src/utils/cookies.js +102 -0
- package/src/utils/crypto.d.ts +5 -0
- package/src/utils/crypto.js +104 -0
- package/src/utils/decodeString.d.ts +1 -0
- package/src/utils/decodeString.js +17 -0
- package/src/utils/disableFormElements.d.ts +5 -0
- package/src/utils/disableFormElements.js +19 -0
- package/src/utils/excelUtils.d.ts +25 -0
- package/src/utils/excelUtils.js +60 -0
- package/src/utils/exception.d.ts +19 -0
- package/src/utils/exception.js +86 -0
- package/src/utils/formatString.d.ts +25 -0
- package/src/utils/formatString.js +151 -0
- package/src/utils/formatters/account.d.ts +2 -0
- package/src/utils/formatters/account.js +98 -0
- package/src/utils/formatters/currency.d.ts +20 -0
- package/src/utils/formatters/currency.js +125 -0
- package/src/utils/formatters/date.d.ts +12 -0
- package/src/utils/formatters/date.js +219 -0
- package/src/utils/formatters/index.d.ts +47 -0
- package/src/utils/formatters/index.js +47 -0
- package/src/utils/formatters/string.d.ts +6 -0
- package/src/utils/formatters/string.js +114 -0
- package/src/utils/generateImportExcel.d.ts +35 -0
- package/src/utils/generateImportExcel.js +546 -0
- package/src/utils/generateTimestamp.d.ts +1 -0
- package/src/utils/generateTimestamp.js +4 -0
- package/src/utils/handleApiError.d.ts +1 -0
- package/src/utils/handleApiError.js +17 -0
- package/src/utils/index.d.ts +104 -0
- package/src/utils/index.js +92 -0
- package/src/utils/json.d.ts +4 -0
- package/src/utils/json.js +55 -0
- package/src/utils/localStorage.d.ts +1 -0
- package/src/utils/localStorage.js +8 -0
- package/src/utils/logger.d.ts +4 -0
- package/src/utils/logger.js +46 -0
- package/src/utils/schema/globalSchema.d.ts +8 -0
- package/src/utils/schema/globalSchema.js +10 -0
- package/src/utils/signature.d.ts +10 -0
- package/src/utils/signature.js +75 -0
- package/src/utils/specifics/korporasi/prakarsaKorporasiUtils.d.ts +5 -0
- package/src/utils/specifics/korporasi/prakarsaKorporasiUtils.js +87 -0
- package/src/utils/specifics/mikro/validationMaintenanceAgunanUtils.d.ts +2 -0
- package/src/utils/specifics/mikro/validationMaintenanceAgunanUtils.js +214 -0
- package/src/utils/static-data/korporasi/prakarsa/analisa-risiko-kredit-nasabah/analisa-kinerja-keuangan/listStaticData.js +290 -0
- package/src/utils/static-data/korporasi/prakarsa/appendix/proyeksi-laporan-arus-kas/listStaticData.js +7 -0
- package/src/utils/static-data/korporasi/prakarsa/appendix/proyeksi-laporan-keuangan/listStaticData.js +75 -0
- package/src/utils/static-data/korporasi/prakarsa/appendix/total-exposure-group/listStaticData.js +7 -0
- package/src/utils/static-data/korporasi/prakarsa/create/listStaticData.js +21 -0
- package/src/utils/static-data/korporasi/prakarsa/generals/listExcelConfigData.js +11 -0
- package/src/utils/static-data/korporasi/prakarsa/pengajuan-fasilitas-kredit/fasilitas-kredit/listStaticData.js +69 -0
- package/src/utils/static-data/korporasi-internasional/eksternal/listStaticData.js +193 -0
- package/src/utils/static-data/korporasi-internasional/master/listStaticData.js +24 -0
- package/src/utils/static-data/korporasi-internasional/uji-kepatuhan/listStaticData.js +250 -0
- package/src/utils/status.d.ts +37 -0
- package/src/utils/status.js +160 -0
- package/src/utils/store/adminKuotaNasional.js +7 -0
- package/src/utils/store/authStore.js +13 -0
- package/src/utils/store/bankGaransiStore.js +10 -0
- package/src/utils/store/korporasi/approval/interface/interfaceStore.js +10 -0
- package/src/utils/store/korporasi/general/generalKorporasiStore.js +13 -0
- package/src/utils/store/korporasi/loan-disbursement/loanDisbursementStore.js +77 -0
- package/src/utils/store/korporasi/prakarsa/fasilitas-kredit/fasilitasKreditStore.js +141 -0
- package/src/utils/store/migrasi-mandiri/migrasiMandiriStore.js +53 -0
- package/src/utils/store/monitoring-konsumer/monitoring-leads-KPP/monitoring-leads-kpp-internal.js +34 -0
- package/src/utils/store/prakarsaBankGaransiStore.js +21 -0
- package/src/utils/store/prognosa-crr/settingPrognosaROStore.js +9 -0
- package/src/utils/store/prognosaRMStore.js +30 -0
- package/src/utils/store/restrukStore.js +26 -0
- package/src/utils/store/verificationAccessLink.js +11 -0
- package/src/utils/store/warkat-bg-wholesale/warkatBgWholesaleStore.js +22 -0
- package/src/utils/stringUtils.d.ts +22 -0
- package/src/utils/stringUtils.js +226 -0
- package/src/utils/tipeBank.d.ts +3 -0
- package/src/utils/tipeBank.js +14 -0
- package/dist/index.css +0 -32
- package/dist/index.css.map +0 -1
- package/dist/index.d.mts +0 -1726
- package/dist/index.mjs +0 -18560
- package/dist/index.mjs.map +0 -1
- package/dist/types.d.mts +0 -4
- /package/dist/{atoms → components/atoms}/icons/index.d.mts +0 -0
- /package/dist/{atoms → components/atoms}/icons/index.mjs.map +0 -0
- /package/dist/{mui → components/mui}/index.d.mts +0 -0
- /package/dist/{mui → components/mui}/index.mjs.map +0 -0
- /package/dist/{types.mjs → components/types.mjs} +0 -0
- /package/dist/{types.mjs.map → components/types.mjs.map} +0 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date Formatting Utilities
|
|
3
|
+
*
|
|
4
|
+
* Konsolidasi dari:
|
|
5
|
+
* - stringUtils.js (semua date formatter functions)
|
|
6
|
+
*
|
|
7
|
+
* Konvensi penamaan:
|
|
8
|
+
* - "Dash" = separator "-" (e.g., 2024-07-19)
|
|
9
|
+
* - "Slash" = separator "/" (e.g., 19/07/2024)
|
|
10
|
+
* - "YearFirst" = format YYYY-MM-DD
|
|
11
|
+
* - "DateFirst" = format DD-MM-YYYY atau DD/MM/YYYY
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Konversi Date object ke format YYYY-MM-DD.
|
|
16
|
+
* @param {Date|string} value - Date object atau date string
|
|
17
|
+
* @returns {string} Format "YYYY-MM-DD"
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* toYearFirstDash(new Date(2024, 6, 19)) // "2024-07-19"
|
|
21
|
+
* toYearFirstDash("2024-07-19T00:00:00") // "2024-07-19"
|
|
22
|
+
*/
|
|
23
|
+
export const toYearFirstDash = (value) => {
|
|
24
|
+
const date = new Date(value);
|
|
25
|
+
const year = date.getFullYear();
|
|
26
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
27
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
28
|
+
return `${year}-${month}-${day}`;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Konversi Date object ke format DD/MM/YYYY.
|
|
33
|
+
* @param {Date|string} value - Date object atau date string
|
|
34
|
+
* @returns {string} Format "DD/MM/YYYY"
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* toDateFirstSlash(new Date(2024, 1, 1)) // "01/02/2024"
|
|
38
|
+
* toDateFirstSlash("2024-02-01") // "01/02/2024"
|
|
39
|
+
*/
|
|
40
|
+
export const toDateFirstSlash = (value) => {
|
|
41
|
+
const date = new Date(value);
|
|
42
|
+
const year = date.getFullYear();
|
|
43
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
44
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
45
|
+
return `${day}/${month}/${year}`;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Konversi Date object ke format DD/MM/YYYY (alias).
|
|
50
|
+
* @param {Date} date - Date object
|
|
51
|
+
* @returns {string} Format "DD/MM/YYYY"
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* formatDateToDDSlashMMSlashYYYY(new Date(2025, 2, 31)) // "31/03/2025"
|
|
55
|
+
*/
|
|
56
|
+
export const formatDateToDDSlashMMSlashYYYY = (date) => {
|
|
57
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
58
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
59
|
+
const year = date.getFullYear();
|
|
60
|
+
return `${day}/${month}/${year}`;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Konversi Date object ke format DDMMYYYY (tanpa separator).
|
|
65
|
+
* @param {Date} date - Date object
|
|
66
|
+
* @returns {string} Format "DDMMYYYY"
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* formatDateToDDMMYYYY(new Date(2025, 2, 31)) // "31032025"
|
|
70
|
+
*/
|
|
71
|
+
export const formatDateToDDMMYYYY = (date) => {
|
|
72
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
73
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
74
|
+
const year = date.getFullYear();
|
|
75
|
+
return `${day}${month}${year}`;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Konversi format YYYY-MM-DD ke DD-MM-YYYY.
|
|
80
|
+
* @param {string} value - Date string format "YYYY-MM-DD"
|
|
81
|
+
* @returns {string} Format "DD-MM-YYYY"
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* yearFirstDashToDateFirstDash("2024-07-26") // "26-07-2024"
|
|
85
|
+
*/
|
|
86
|
+
export const yearFirstDashToDateFirstDash = (value) => {
|
|
87
|
+
if (!value) return "";
|
|
88
|
+
const [year, month, day] = value.split("-");
|
|
89
|
+
return `${day}-${month}-${year}`;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Konversi format YYYY-MM-DD ke DD/MM/YYYY.
|
|
94
|
+
* @param {string} value - Date string format "YYYY-MM-DD"
|
|
95
|
+
* @returns {string} Format "DD/MM/YYYY"
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* yearFirstDashToDateFirstSlash("2024-07-19") // "19/07/2024"
|
|
99
|
+
*/
|
|
100
|
+
export const yearFirstDashToDateFirstSlash = (value) => {
|
|
101
|
+
if (!value) return "";
|
|
102
|
+
const parts = value.split("-");
|
|
103
|
+
if (parts.length === 3) {
|
|
104
|
+
const [year, month, day] = parts;
|
|
105
|
+
return `${day}/${month}/${year}`;
|
|
106
|
+
}
|
|
107
|
+
return value;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Konversi format DD/MM/YYYY ke YYYY-MM-DD.
|
|
112
|
+
* @param {string} value - Date string format "DD/MM/YYYY"
|
|
113
|
+
* @returns {string} Format "YYYY-MM-DD"
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* dateFirstSlashToYearFirstDash("19/07/2024") // "2024-07-19"
|
|
117
|
+
*/
|
|
118
|
+
export const dateFirstSlashToYearFirstDash = (value) => {
|
|
119
|
+
if (!value) return "";
|
|
120
|
+
const [day, month, year] = value.split("/");
|
|
121
|
+
return `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Konversi format 7 digit (e.g., "0041125") ke DD/MM/YYYY.
|
|
126
|
+
* Format: [prefix 1 digit][DD][MM][YY atau YYYY]
|
|
127
|
+
* @param {string} value - 7-digit date string
|
|
128
|
+
* @returns {string} Format "DD/MM/YYYY"
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* sevenDigitToDateFirstSlash("0190724") // "19/07/2024"
|
|
132
|
+
* sevenDigitToDateFirstSlash("0041125") // "04/11/2025"
|
|
133
|
+
*/
|
|
134
|
+
export const sevenDigitToDateFirstSlash = (value) => {
|
|
135
|
+
if (!value) return "";
|
|
136
|
+
const actualDate = value.substring(1);
|
|
137
|
+
const day = actualDate.substring(0, 2);
|
|
138
|
+
const month = actualDate.substring(2, 4);
|
|
139
|
+
const yearLastTwoDigits = actualDate.substring(4, 8);
|
|
140
|
+
const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? "19" : "20";
|
|
141
|
+
const year = yearPrefix + yearLastTwoDigits;
|
|
142
|
+
return `${day}/${month}/${year}`;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Konversi format 7 digit ke YYYY-MM-DD.
|
|
147
|
+
* @param {string} value - 7-digit date string
|
|
148
|
+
* @returns {string} Format "YYYY-MM-DD"
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* sevenDigitToYearFirstDash("0190724") // "2024-07-19"
|
|
152
|
+
*/
|
|
153
|
+
export const sevenDigitToYearFirstDash = (value) => {
|
|
154
|
+
if (!value) return "";
|
|
155
|
+
const actualDate = value.substring(1);
|
|
156
|
+
const day = actualDate.slice(0, 2);
|
|
157
|
+
const month = actualDate.slice(2, 4);
|
|
158
|
+
const yearLastTwoDigits = actualDate.slice(4, 8);
|
|
159
|
+
const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? "19" : "20";
|
|
160
|
+
const year = yearPrefix + yearLastTwoDigits;
|
|
161
|
+
return `${year}-${month}-${day}`;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Konversi format 7 digit ke DD-MM-YYYY.
|
|
166
|
+
* @param {string} value - 7-digit date string
|
|
167
|
+
* @returns {string} Format "DD-MM-YYYY"
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* sevenDigitToDateFirstDash("0041125") // "04-11-2025"
|
|
171
|
+
*/
|
|
172
|
+
export const sevenDigitToDateFirstDash = (value) => {
|
|
173
|
+
if (!value) return "";
|
|
174
|
+
const actualDate = value.substring(1);
|
|
175
|
+
const day = actualDate.slice(0, 2);
|
|
176
|
+
const month = actualDate.slice(2, 4);
|
|
177
|
+
const yearLastTwoDigits = actualDate.slice(4, 8);
|
|
178
|
+
const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? "19" : "20";
|
|
179
|
+
const year = yearPrefix + yearLastTwoDigits;
|
|
180
|
+
return `${day}-${month}-${year}`;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Konversi datetime string ke format DD-MM-YYYY HH:mm.
|
|
185
|
+
* @param {string} value - DateTime string (e.g., "2025-01-13 16:39:39")
|
|
186
|
+
* @returns {string} Format "DD-MM-YYYY HH:mm"
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* toDateTimeHourMinute("2025-01-13 16:39:39") // "13-01-2025 16:39"
|
|
190
|
+
*/
|
|
191
|
+
export const toDateTimeHourMinute = (value) => {
|
|
192
|
+
if (!value) return "";
|
|
193
|
+
const date = new Date(value);
|
|
194
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
195
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
196
|
+
const year = date.getFullYear();
|
|
197
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
198
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
199
|
+
return `${day}-${month}-${year} ${hours}:${minutes}`;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Konversi format DDMMYY (6 digit) ke DD/MM/YYYY.
|
|
204
|
+
* @param {string} value - 6-digit date string (DDMMYY)
|
|
205
|
+
* @returns {string} Format "DD/MM/YYYY"
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ddmmyyToSlashDate("190724") // "19/07/2024"
|
|
209
|
+
* ddmmyyToSlashDate("010170") // "01/01/1970"
|
|
210
|
+
*/
|
|
211
|
+
export const ddmmyyToSlashDate = (value) => {
|
|
212
|
+
if (!value || value.length !== 6) return "";
|
|
213
|
+
const day = value.substring(0, 2);
|
|
214
|
+
const month = value.substring(2, 4);
|
|
215
|
+
const yearSuffix = value.substring(4, 6);
|
|
216
|
+
const year =
|
|
217
|
+
parseInt(yearSuffix, 10) >= 70 ? "19" + yearSuffix : "20" + yearSuffix;
|
|
218
|
+
return `${day}/${month}/${year}`;
|
|
219
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Account
|
|
2
|
+
export declare function formatAccountNumber(value: string | null | undefined): string;
|
|
3
|
+
export declare function formatNPWP(value: string | null | undefined): string;
|
|
4
|
+
|
|
5
|
+
// Currency
|
|
6
|
+
export declare function formatCurrency(
|
|
7
|
+
value: number | string | null | undefined,
|
|
8
|
+
options?: {
|
|
9
|
+
locale?: string;
|
|
10
|
+
currency?: string;
|
|
11
|
+
minFractionDigits?: number;
|
|
12
|
+
maxFractionDigits?: number;
|
|
13
|
+
}
|
|
14
|
+
): string;
|
|
15
|
+
export declare function formatRupiah(value: number | string | null | undefined): string;
|
|
16
|
+
export declare function formatNominal(
|
|
17
|
+
value: number | string | null | undefined,
|
|
18
|
+
options?: {
|
|
19
|
+
locale?: string;
|
|
20
|
+
minFractionDigits?: number;
|
|
21
|
+
maxFractionDigits?: number;
|
|
22
|
+
decimalSeparator?: string;
|
|
23
|
+
}
|
|
24
|
+
): string;
|
|
25
|
+
export declare function formatDigit(value: number | string): string;
|
|
26
|
+
|
|
27
|
+
// Date
|
|
28
|
+
export declare function toYearFirstDash(value: Date | string): string;
|
|
29
|
+
export declare function toDateFirstSlash(value: Date | string): string;
|
|
30
|
+
export declare function formatDateToDDSlashMMSlashYYYY(date: Date): string;
|
|
31
|
+
export declare function formatDateToDDMMYYYY(date: Date): string;
|
|
32
|
+
export declare function yearFirstDashToDateFirstDash(value: string): string;
|
|
33
|
+
export declare function yearFirstDashToDateFirstSlash(value: string): string;
|
|
34
|
+
export declare function dateFirstSlashToYearFirstDash(value: string): string;
|
|
35
|
+
export declare function sevenDigitToDateFirstSlash(value: string): string;
|
|
36
|
+
export declare function sevenDigitToYearFirstDash(value: string): string;
|
|
37
|
+
export declare function sevenDigitToDateFirstDash(value: string): string;
|
|
38
|
+
export declare function toDateTimeHourMinute(value: string): string;
|
|
39
|
+
export declare function ddmmyyToSlashDate(value: string): string;
|
|
40
|
+
|
|
41
|
+
// String
|
|
42
|
+
export declare function formatResponseDesc(desc: string): string;
|
|
43
|
+
export declare function titleCase(str: string): string;
|
|
44
|
+
export declare function snakeToCamelWithSpace(snakeStr: string): string;
|
|
45
|
+
export declare function stringToBoolean(str: string): boolean | undefined;
|
|
46
|
+
export declare function matchWiths(targetStr: string, values?: string[]): boolean;
|
|
47
|
+
export declare function maskString(value: string, type?: string): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated Formatters
|
|
3
|
+
*
|
|
4
|
+
* Barrel export untuk semua formatting utilities.
|
|
5
|
+
* Menggantikan fungsi-fungsi yang tersebar di:
|
|
6
|
+
* - formatString.js
|
|
7
|
+
* - formatCurrency.js
|
|
8
|
+
* - formatters.js
|
|
9
|
+
* - stringUtils.js
|
|
10
|
+
* - convertSnakeToCamelWithSpace.js
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
formatAccountNumber,
|
|
15
|
+
formatNPWP,
|
|
16
|
+
} from "./account";
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
formatCurrency,
|
|
20
|
+
formatRupiah,
|
|
21
|
+
formatNominal,
|
|
22
|
+
formatDigit,
|
|
23
|
+
} from "./currency";
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
toYearFirstDash,
|
|
27
|
+
toDateFirstSlash,
|
|
28
|
+
formatDateToDDSlashMMSlashYYYY,
|
|
29
|
+
formatDateToDDMMYYYY,
|
|
30
|
+
yearFirstDashToDateFirstDash,
|
|
31
|
+
yearFirstDashToDateFirstSlash,
|
|
32
|
+
dateFirstSlashToYearFirstDash,
|
|
33
|
+
sevenDigitToDateFirstSlash,
|
|
34
|
+
sevenDigitToYearFirstDash,
|
|
35
|
+
sevenDigitToDateFirstDash,
|
|
36
|
+
toDateTimeHourMinute,
|
|
37
|
+
ddmmyyToSlashDate,
|
|
38
|
+
} from "./date";
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
formatResponseDesc,
|
|
42
|
+
titleCase,
|
|
43
|
+
snakeToCamelWithSpace,
|
|
44
|
+
stringToBoolean,
|
|
45
|
+
matchWiths,
|
|
46
|
+
maskString,
|
|
47
|
+
} from "./string";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function formatResponseDesc(desc: string): string;
|
|
2
|
+
export declare function titleCase(str: string): string;
|
|
3
|
+
export declare function snakeToCamelWithSpace(snakeStr: string): string;
|
|
4
|
+
export declare function stringToBoolean(str: string): boolean | undefined;
|
|
5
|
+
export declare function matchWiths(targetStr: string, values?: string[]): boolean;
|
|
6
|
+
export declare function maskString(value: string, type?: string): string;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String Formatting & Transformation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Konsolidasi dari:
|
|
5
|
+
* - formatString.js (formatResponseDesc, titleCase, stringToBoolean)
|
|
6
|
+
* - convertSnakeToCamelWithSpace.js (snakeToCamelWithSpace)
|
|
7
|
+
* - stringUtils.js (matchWiths, needToHide)
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Format response description: replace underscores with spaces dan capitalize.
|
|
12
|
+
* @param {string} desc - Description string dari API response
|
|
13
|
+
* @returns {string} Formatted description
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* formatResponseDesc("invalid_request_data") // "Invalid Request Data"
|
|
17
|
+
* formatResponseDesc("brispot_error") // "BRISPOT Error"
|
|
18
|
+
*/
|
|
19
|
+
export const formatResponseDesc = (desc) => {
|
|
20
|
+
if (!desc) return "";
|
|
21
|
+
return desc
|
|
22
|
+
.replace(/_(\w)/g, (_match, p1) => " " + p1.toUpperCase())
|
|
23
|
+
.replace(/brispot/gi, "BRISPOT");
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Konversi string ke Title Case.
|
|
28
|
+
* @param {string} str - Input string
|
|
29
|
+
* @returns {string} Title cased string
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* titleCase("hello world") // "Hello World"
|
|
33
|
+
* titleCase("JOHN DOE") // "John Doe"
|
|
34
|
+
*/
|
|
35
|
+
export const titleCase = (str) => {
|
|
36
|
+
if (!str) return "";
|
|
37
|
+
return str
|
|
38
|
+
.toLowerCase()
|
|
39
|
+
.split(" ")
|
|
40
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
41
|
+
.join(" ");
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Konversi snake_case ke Title Case With Spaces.
|
|
46
|
+
* @param {string} snakeStr - Snake case string
|
|
47
|
+
* @returns {string} Title case with spaces
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* snakeToCamelWithSpace("hello_world") // "Hello World"
|
|
51
|
+
* snakeToCamelWithSpace("user_full_name") // "User Full Name"
|
|
52
|
+
*/
|
|
53
|
+
export function snakeToCamelWithSpace(snakeStr) {
|
|
54
|
+
if (!snakeStr) return "";
|
|
55
|
+
return snakeStr
|
|
56
|
+
.toLowerCase()
|
|
57
|
+
.replace(/_([a-z])/g, (_match, letter) => ` ${letter.toUpperCase()}`)
|
|
58
|
+
.replace(/^([a-z])/, (_, letter) => letter.toUpperCase());
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Konversi string "true"/"false" ke boolean.
|
|
63
|
+
* @param {string} str - String "true" atau "false"
|
|
64
|
+
* @returns {boolean|undefined} Boolean value atau undefined jika bukan "true"/"false"
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* stringToBoolean("true") // true
|
|
68
|
+
* stringToBoolean("false") // false
|
|
69
|
+
* stringToBoolean("other") // undefined
|
|
70
|
+
*/
|
|
71
|
+
export const stringToBoolean = (str) => {
|
|
72
|
+
if (str === "true" || str === "false") {
|
|
73
|
+
return str === "true";
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Cek apakah target string mengandung salah satu dari values.
|
|
80
|
+
* @param {string} targetStr - String yang akan dicek
|
|
81
|
+
* @param {string[]} values - Array of substrings to match
|
|
82
|
+
* @returns {boolean} True jika salah satu value ditemukan
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* matchWiths("hello world", ["hello", "foo"]) // true
|
|
86
|
+
* matchWiths("hello world", ["foo", "bar"]) // false
|
|
87
|
+
*/
|
|
88
|
+
export function matchWiths(targetStr, values = []) {
|
|
89
|
+
if (!targetStr) return false;
|
|
90
|
+
return values.some((v) => targetStr.includes(v));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Mask/hide sebagian karakter dari string (untuk privasi).
|
|
95
|
+
* @param {string} value - String yang akan di-mask
|
|
96
|
+
* @param {string} type - Tipe masking: "email" atau default
|
|
97
|
+
* @returns {string} Masked string
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* maskString("johndoe@email.com", "email") // "joh****@email.com"
|
|
101
|
+
* maskString("081234567890") // "081*****890"
|
|
102
|
+
*/
|
|
103
|
+
export const maskString = (value, type) => {
|
|
104
|
+
if (!value) return "";
|
|
105
|
+
const tempArr = value.split("");
|
|
106
|
+
let len = tempArr.length - 3;
|
|
107
|
+
|
|
108
|
+
if (type === "email") {
|
|
109
|
+
len = tempArr.indexOf("@");
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
tempArr.splice(3 - tempArr.length, len - 3, ..."*".repeat(len - 3).split(""));
|
|
113
|
+
return tempArr.join("");
|
|
114
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface GenerateAnnualTemplateExcelConfig {
|
|
2
|
+
year?: number;
|
|
3
|
+
data?: Array<Record<string, unknown>>;
|
|
4
|
+
headers1?: string[];
|
|
5
|
+
headers2?: string[];
|
|
6
|
+
title?: string;
|
|
7
|
+
disabledMonths?: number[];
|
|
8
|
+
startDataRow?: number;
|
|
9
|
+
isLocked?: boolean;
|
|
10
|
+
password?: string;
|
|
11
|
+
freezeColumns?: number;
|
|
12
|
+
freezeHeader?: boolean;
|
|
13
|
+
filename?: string;
|
|
14
|
+
isTotalCell?: boolean;
|
|
15
|
+
mappings?: Record<string, number>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ImportAnnualTemplateExcelConfig {
|
|
19
|
+
maxValue?: number;
|
|
20
|
+
file: File;
|
|
21
|
+
sheetName?: string;
|
|
22
|
+
headerRow?: number;
|
|
23
|
+
requiredHeaders?: string[];
|
|
24
|
+
mappings?: Record<string, string>;
|
|
25
|
+
hasMonthlyData?: boolean;
|
|
26
|
+
validateRow?: (row: Record<string, unknown>) => boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export declare function generateAnnualTemplateExcel(
|
|
30
|
+
config: GenerateAnnualTemplateExcelConfig
|
|
31
|
+
): Promise<void>;
|
|
32
|
+
|
|
33
|
+
export declare function importAnnualTemplateExcel(
|
|
34
|
+
config: ImportAnnualTemplateExcelConfig
|
|
35
|
+
): Promise<Array<Record<string, unknown>>>;
|