adminforth 2.22.0-next.2 → 2.22.0-next.20
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/commands/createApp/utils.js +43 -3
- package/commands/createPlugin/templates/index.ts.hbs +1 -4
- package/dist/auth.d.ts +1 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -2
- package/dist/auth.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/restApi.js.map +1 -1
- package/dist/modules/utils.d.ts +1 -0
- package/dist/modules/utils.d.ts.map +1 -1
- package/dist/modules/utils.js +18 -15
- package/dist/modules/utils.js.map +1 -1
- package/dist/spa/package-lock.json +28 -0
- package/dist/spa/package.json +1 -0
- package/dist/spa/src/adminforth.ts +1 -0
- package/dist/spa/src/afcl/Input.vue +1 -26
- package/dist/spa/src/afcl/Table.vue +1 -1
- package/dist/spa/src/components/AcceptModal.vue +2 -0
- package/dist/spa/src/components/GroupsTable.vue +14 -12
- package/dist/spa/src/components/ShowTable.vue +4 -2
- package/dist/spa/src/stores/core.ts +2 -1
- package/dist/spa/src/stores/modal.ts +6 -2
- package/dist/spa/src/types/Back.ts +1 -0
- package/dist/spa/src/types/FrontendAPI.ts +4 -0
- package/dist/spa/src/types/adapters/CompletionAdapter.ts +8 -0
- package/dist/spa/src/utils/utils.ts +69 -14
- package/dist/spa/src/views/CreateView.vue +8 -4
- package/dist/spa/src/views/EditView.vue +8 -4
- package/dist/spa/src/views/ListView.vue +2 -0
- package/dist/spa/tailwind.config.js +1 -1
- package/dist/types/Back.d.ts +1 -0
- package/dist/types/Back.d.ts.map +1 -1
- package/dist/types/Back.js.map +1 -1
- package/dist/types/FrontendAPI.d.ts +4 -0
- package/dist/types/FrontendAPI.d.ts.map +1 -1
- package/dist/types/FrontendAPI.js.map +1 -1
- package/dist/types/adapters/CompletionAdapter.d.ts +7 -1
- package/dist/types/adapters/CompletionAdapter.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/modules/utils.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare function inverseRGBA(rgba: any): "rgba(0,0,0,1)" | "rgba(255,255,
|
|
|
22
22
|
export declare function suggestIfTypo(names: string[], name: string): string;
|
|
23
23
|
export declare function getClientIp(headers: object): void;
|
|
24
24
|
export declare function md5hash(str: string): string;
|
|
25
|
+
export declare function convertPeriodToSeconds(period: string): number;
|
|
25
26
|
export declare class RateLimiter {
|
|
26
27
|
rateLimiter: RateLimiterAbstract;
|
|
27
28
|
durStringToSeconds(rate: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../modules/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA4J/E,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,8BAQtE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,KAAA,OAStC;AAED,eAAO,MAAM,cAAc,0BAW1B,CAAA;AAGD,eAAO,MAAM,yBAAyB,QAAmD,CAAC;AAI1F,eAAO,MAAM,kBAAkB,EAAE,MAA6B,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,QAAQ,KAAA,OAEhD;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,cAE9C;AAED,wBAAgB,SAAS,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,OAmBvC;AAMD,wBAAgB,eAAe,CAAC,GAAG,KAAA,EAAE,SAAS,SAAK,EAAE,MAAM,KAAK,MAqB/D;AAgBA,wBAAgB,UAAU,CAAC,KAAK,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,UAoBvD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,KAAA;;;;;;EAcvC;AAED,wBAAgB,UAAU,CAAC,IAAI,KAAA,UAe9B;AAED,wBAAgB,WAAW,CAAC,IAAI,KAAA,UAe/B;AAGD,wBAAgB,WAAW,CAAC,IAAI,KAAA,2CAK/B;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBnE;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,QAE1C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAC,MAAM,UAEjC;AAED,qBAAa,WAAW;IAItB,WAAW,EAAE,mBAAmB,CAAC;IAGjC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../modules/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA4J/E,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,8BAQtE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,KAAA,OAStC;AAED,eAAO,MAAM,cAAc,0BAW1B,CAAA;AAGD,eAAO,MAAM,yBAAyB,QAAmD,CAAC;AAI1F,eAAO,MAAM,kBAAkB,EAAE,MAA6B,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,QAAQ,KAAA,OAEhD;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,cAE9C;AAED,wBAAgB,SAAS,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,OAmBvC;AAMD,wBAAgB,eAAe,CAAC,GAAG,KAAA,EAAE,SAAS,SAAK,EAAE,MAAM,KAAK,MAqB/D;AAgBA,wBAAgB,UAAU,CAAC,KAAK,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,UAoBvD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,KAAA;;;;;;EAcvC;AAED,wBAAgB,UAAU,CAAC,IAAI,KAAA,UAe9B;AAED,wBAAgB,WAAW,CAAC,IAAI,KAAA,UAe/B;AAGD,wBAAgB,WAAW,CAAC,IAAI,KAAA,2CAK/B;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBnE;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,QAE1C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAC,MAAM,UAEjC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa7D;AACD,qBAAa,WAAW;IAItB,WAAW,EAAE,mBAAmB,CAAC;IAGjC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;gBAU5B,IAAI,EAAE,MAAM;IAWlB,OAAO,CAAC,GAAG,EAAE,MAAM;CAS1B;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAsD;;IAMnE,QAAQ,CAAC,GAAG,KAAA;;;;IAON,GAAG,CAAC,GAAG,KAAA,EAAE,EAAE,KAAA;CAgBlB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,OAAO,CAOxG;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
package/dist/modules/utils.js
CHANGED
|
@@ -343,26 +343,29 @@ export function getClientIp(headers) {
|
|
|
343
343
|
export function md5hash(str) {
|
|
344
344
|
return crypto.createHash('md5').update(str).digest('hex');
|
|
345
345
|
}
|
|
346
|
+
export function convertPeriodToSeconds(period) {
|
|
347
|
+
const periodChar = period.slice(-1);
|
|
348
|
+
const duration = parseInt(period.slice(0, -1));
|
|
349
|
+
if (periodChar === 's') {
|
|
350
|
+
return duration;
|
|
351
|
+
}
|
|
352
|
+
else if (periodChar === 'm') {
|
|
353
|
+
return duration * 60;
|
|
354
|
+
}
|
|
355
|
+
else if (periodChar === 'h') {
|
|
356
|
+
return duration * 60 * 60;
|
|
357
|
+
}
|
|
358
|
+
else if (periodChar === 'd') {
|
|
359
|
+
return duration * 60 * 60 * 24;
|
|
360
|
+
}
|
|
361
|
+
throw new Error(`Invalid period: ${period}`);
|
|
362
|
+
}
|
|
346
363
|
export class RateLimiter {
|
|
347
364
|
durStringToSeconds(rate) {
|
|
348
365
|
if (!rate) {
|
|
349
366
|
throw new Error('Rate duration is required');
|
|
350
367
|
}
|
|
351
|
-
|
|
352
|
-
const duration = parseInt(rate.slice(0, -1));
|
|
353
|
-
if (period === 's') {
|
|
354
|
-
return duration;
|
|
355
|
-
}
|
|
356
|
-
else if (period === 'm') {
|
|
357
|
-
return duration * 60;
|
|
358
|
-
}
|
|
359
|
-
else if (period === 'h') {
|
|
360
|
-
return duration * 60 * 60;
|
|
361
|
-
}
|
|
362
|
-
else if (period === 'd') {
|
|
363
|
-
return duration * 60 * 60 * 24;
|
|
364
|
-
}
|
|
365
|
-
throw new Error(`Invalid rate duration period: ${period}`);
|
|
368
|
+
return convertPeriodToSeconds(rate);
|
|
366
369
|
}
|
|
367
370
|
constructor(rate) {
|
|
368
371
|
const [points, duration] = rate.split('/');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../modules/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../modules/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@rushstack/eslint-patch": "^1.8.0",
|
|
32
|
+
"@tailwindcss/typography": "^0.5.19",
|
|
32
33
|
"@tsconfig/node20": "^20.1.4",
|
|
33
34
|
"@types/node": "^20.12.5",
|
|
34
35
|
"@vitejs/plugin-vue": "^5.0.4",
|
|
@@ -1165,6 +1166,33 @@
|
|
|
1165
1166
|
"@svgdotjs/svg.js": "^3.2.4"
|
|
1166
1167
|
}
|
|
1167
1168
|
},
|
|
1169
|
+
"node_modules/@tailwindcss/typography": {
|
|
1170
|
+
"version": "0.5.19",
|
|
1171
|
+
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz",
|
|
1172
|
+
"integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==",
|
|
1173
|
+
"dev": true,
|
|
1174
|
+
"license": "MIT",
|
|
1175
|
+
"dependencies": {
|
|
1176
|
+
"postcss-selector-parser": "6.0.10"
|
|
1177
|
+
},
|
|
1178
|
+
"peerDependencies": {
|
|
1179
|
+
"tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
|
|
1180
|
+
}
|
|
1181
|
+
},
|
|
1182
|
+
"node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
|
|
1183
|
+
"version": "6.0.10",
|
|
1184
|
+
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
|
|
1185
|
+
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
|
|
1186
|
+
"dev": true,
|
|
1187
|
+
"license": "MIT",
|
|
1188
|
+
"dependencies": {
|
|
1189
|
+
"cssesc": "^3.0.0",
|
|
1190
|
+
"util-deprecate": "^1.0.2"
|
|
1191
|
+
},
|
|
1192
|
+
"engines": {
|
|
1193
|
+
"node": ">=4"
|
|
1194
|
+
}
|
|
1195
|
+
},
|
|
1168
1196
|
"node_modules/@tsconfig/node20": {
|
|
1169
1197
|
"version": "20.1.4",
|
|
1170
1198
|
"resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz",
|
package/dist/spa/package.json
CHANGED
|
@@ -132,6 +132,7 @@ class FrontendAPI implements FrontendAPIInterface {
|
|
|
132
132
|
return new Promise((resolve, reject) => {
|
|
133
133
|
this.modalStore.setModalContent({
|
|
134
134
|
content: params.message,
|
|
135
|
+
contentHTML: params.messageHtml,
|
|
135
136
|
acceptText: params.yes || 'Yes',
|
|
136
137
|
cancelText: params.no || 'Cancel'
|
|
137
138
|
})
|
|
@@ -12,9 +12,7 @@
|
|
|
12
12
|
ref="input"
|
|
13
13
|
v-bind="$attrs"
|
|
14
14
|
:type="type"
|
|
15
|
-
|
|
16
|
-
:max="max"
|
|
17
|
-
@input="onInput"
|
|
15
|
+
@input="$emit('update:modelValue', type === 'number' ? Number(($event.target as HTMLInputElement)?.value) : ($event.target as HTMLInputElement)?.value)"
|
|
18
16
|
:value="modelValue"
|
|
19
17
|
aria-describedby="helper-text-explanation"
|
|
20
18
|
class="afcl-input inline-flex bg-lightInputBackground text-lightInputText dark:text-darkInputText border border-lightInputBorder rounded-0 focus:ring-lightPrimary focus:border-lightPrimary dark:focus:ring-darkPrimary dark:focus:border-darkPrimary
|
|
@@ -50,31 +48,8 @@ const props = defineProps<{
|
|
|
50
48
|
suffix?: string,
|
|
51
49
|
prefix?: string,
|
|
52
50
|
readonly?: boolean,
|
|
53
|
-
min?: number | null,
|
|
54
|
-
max?: number | null,
|
|
55
51
|
}>()
|
|
56
52
|
|
|
57
|
-
const emit = defineEmits<{
|
|
58
|
-
(e: 'update:modelValue', value: number | null): void
|
|
59
|
-
}>();
|
|
60
|
-
|
|
61
|
-
const onInput = (e: Event) => {
|
|
62
|
-
const el = e.target as HTMLInputElement;
|
|
63
|
-
|
|
64
|
-
if (props.type === 'number') {
|
|
65
|
-
let val = Number(el.value);
|
|
66
|
-
|
|
67
|
-
if (props.min != null && val < props.min) val = props.min;
|
|
68
|
-
if (props.max != null && val > props.max) val = props.max;
|
|
69
|
-
|
|
70
|
-
el.value = String(val);
|
|
71
|
-
emit('update:modelValue', val);
|
|
72
|
-
} else {
|
|
73
|
-
emit('update:modelValue', el.value);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
|
|
78
53
|
const input = ref<HTMLInputElement | null>(null)
|
|
79
54
|
|
|
80
55
|
defineExpose({
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
</tr>
|
|
79
79
|
</tbody>
|
|
80
80
|
</table>
|
|
81
|
-
<nav class="afcl-table-pagination-container bg-lightTableBackground dark:bg-darkTableBackground
|
|
81
|
+
<nav class="afcl-table-pagination-container bg-lightTableBackground dark:bg-darkTableBackground pt-2 flex flex-col gap-2 items-center sm:flex-row justify-center sm:justify-between px-4 pb-4"
|
|
82
82
|
v-if="totalPages > 1"
|
|
83
83
|
:aria-label="$t('Table navigation')"
|
|
84
84
|
:class="makePaginationSticky ? 'sticky bottom-0 pt-4' : ''"
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11V6m0 8h.01M19 10a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"/>
|
|
15
15
|
</svg>
|
|
16
16
|
<h3 class="afcl-confirmation-title mb-5 text-lg font-normal text-lightAcceptModalText dark:text-darkAcceptModalText">{{ modalStore?.modalContent?.content }}</h3>
|
|
17
|
+
<h3 class=" afcl-confirmation-title mb-5 text-lg font-normal text-lightAcceptModalText dark:text-darkAcceptModalText" v-html="modalStore?.modalContent?.contentHTML"></h3>
|
|
18
|
+
|
|
17
19
|
<button @click="()=>{ modalStore.onAcceptFunction(true);modalStore.togleModal()}" type="button" class="afcl-confirmation-accept-button text-lightAcceptModalConfirmButtonText bg-lightAcceptModalConfirmButtonBackground hover:bg-lightAcceptModalConfirmButtonBackgroundHover focus:ring-4 focus:outline-none focus:ring-lightAcceptModalConfirmButtonFocus font-medium rounded-lg text-sm inline-flex items-center px-5 py-2.5 text-center dark:text-darkAcceptModalConfirmButtonText dark:bg-darkAcceptModalConfirmButtonBackground dark:hover:bg-darkAcceptModalConfirmButtonBackgroundHover dark:focus:ring-darkAcceptModalConfirmButtonFocus">
|
|
18
20
|
{{ modalStore?.modalContent?.acceptText }}
|
|
19
21
|
</button>
|
|
@@ -22,21 +22,23 @@
|
|
|
22
22
|
class="bg-lightForm dark:bg-darkForm dark:border-darkFormBorder block md:table-row"
|
|
23
23
|
:class="{ 'border-b': i !== group.columns.length - 1}"
|
|
24
24
|
>
|
|
25
|
-
<td class="px-6 py-4 flex items-center block
|
|
25
|
+
<td class="px-6 py-4 flex items-center block pb-0 md:pb-4 relative md:table-cell"
|
|
26
26
|
:class="{'rounded-bl-lg border-b-none': i === group.columns.length - 1}"> <!--align-top-->
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
<div class="absolute inset-0 flex items-center overflow-hidden px-6 py-4 max-h-32">
|
|
28
|
+
<span class="flex items-center gap-1">
|
|
29
|
+
{{ column.label }}
|
|
30
|
+
<Tooltip v-if="column.required[mode]">
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
<IconExclamationCircleSolid v-if="column.required[mode]" class="w-4 h-4"
|
|
33
|
+
:class="(columnError(column) && validating) ? 'text-lightInputErrorColor dark:text-darkInputErrorColor' : 'text-lightRequiredIconColor dark:text-darkRequiredIconColor'"
|
|
34
|
+
/>
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
<template #tooltip>
|
|
37
|
+
{{ $t('Required field') }}
|
|
38
|
+
</template>
|
|
39
|
+
</Tooltip>
|
|
40
|
+
</span>
|
|
41
|
+
</div>
|
|
40
42
|
</td>
|
|
41
43
|
<td
|
|
42
44
|
class="px-6 py-4 whitespace-pre-wrap relative block md:table-cell"
|
|
@@ -32,8 +32,10 @@
|
|
|
32
32
|
:record="coreStore.record"
|
|
33
33
|
/>
|
|
34
34
|
<template v-else-if="checkShowIf(column, record, resource?.columns || [])">
|
|
35
|
-
<td class="px-6 py-4 relative block
|
|
36
|
-
|
|
35
|
+
<td class="px-6 py-4 relative block flex justify-start font-bold md:font-normal pb-0 md:pb-4 relative md:table-cell">
|
|
36
|
+
<div class="absolute inset-0 flex items-center overflow-hidden px-6 py-4 max-h-32">
|
|
37
|
+
{{ column.label }}
|
|
38
|
+
</div>
|
|
37
39
|
</td>
|
|
38
40
|
<td class="px-6 py-4 whitespace-pre-wrap" :data-af-column="column.name">
|
|
39
41
|
<component
|
|
@@ -121,7 +121,8 @@ export const useCoreStore = defineStore('core', () => {
|
|
|
121
121
|
item.badge = badge;
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
|
-
|
|
124
|
+
// TODO: This thing was created for something. Find out why
|
|
125
|
+
// websocket.unsubscribeAll();
|
|
125
126
|
subscribeToMenuBadges();
|
|
126
127
|
|
|
127
128
|
}
|
|
@@ -4,6 +4,7 @@ import { defineStore } from 'pinia'
|
|
|
4
4
|
type ModalContentType = {
|
|
5
5
|
title?: string;
|
|
6
6
|
content?: string;
|
|
7
|
+
contentHTML?: string;
|
|
7
8
|
acceptText?: string;
|
|
8
9
|
cancelText?: string;
|
|
9
10
|
}
|
|
@@ -12,7 +13,8 @@ import { defineStore } from 'pinia'
|
|
|
12
13
|
export const useModalStore = defineStore('modal', () => {
|
|
13
14
|
const modalContent = ref({
|
|
14
15
|
title: 'title',
|
|
15
|
-
content: '
|
|
16
|
+
content: '',
|
|
17
|
+
contentHTML: '',
|
|
16
18
|
acceptText: 'acceptText',
|
|
17
19
|
cancelText: 'cancelText',
|
|
18
20
|
});
|
|
@@ -31,7 +33,8 @@ export const useModalStore = defineStore('modal', () => {
|
|
|
31
33
|
function setModalContent(content: ModalContentType) {
|
|
32
34
|
modalContent.value = {
|
|
33
35
|
title: content.title || 'title',
|
|
34
|
-
content: content.content || '
|
|
36
|
+
content: content.content || '',
|
|
37
|
+
contentHTML: content.contentHTML || '',
|
|
35
38
|
acceptText: content.acceptText || 'acceptText',
|
|
36
39
|
cancelText: content.cancelText || 'cancelText',
|
|
37
40
|
};
|
|
@@ -41,6 +44,7 @@ export const useModalStore = defineStore('modal', () => {
|
|
|
41
44
|
modalContent.value = {
|
|
42
45
|
title: 'title',
|
|
43
46
|
content: 'content',
|
|
47
|
+
contentHTML: '',
|
|
44
48
|
acceptText: 'acceptText',
|
|
45
49
|
cancelText: 'cancelText',
|
|
46
50
|
};
|
|
@@ -159,6 +159,10 @@ export type ConfirmParams = {
|
|
|
159
159
|
* The message to display in the dialog
|
|
160
160
|
*/
|
|
161
161
|
message?: string;
|
|
162
|
+
/**
|
|
163
|
+
* Message to display in the dialog as HTML (can be used instead of message)
|
|
164
|
+
*/
|
|
165
|
+
messageHtml?: string;
|
|
162
166
|
/**
|
|
163
167
|
* The text to display in the "accept" button
|
|
164
168
|
*/
|
|
@@ -17,9 +17,17 @@ export interface CompletionAdapter {
|
|
|
17
17
|
content: string,
|
|
18
18
|
stop: string[],
|
|
19
19
|
maxTokens: number,
|
|
20
|
+
outputSchema?: any
|
|
20
21
|
): Promise<{
|
|
21
22
|
content?: string;
|
|
22
23
|
finishReason?: string;
|
|
23
24
|
error?: string;
|
|
24
25
|
}>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* This method should return the number of tokens in the input content.
|
|
29
|
+
* @param content - The input text for which to measure the token count
|
|
30
|
+
* @returns The number of tokens in the input content
|
|
31
|
+
*/
|
|
32
|
+
measureTokensCount(content: string): Promise<number> | number;
|
|
25
33
|
}
|
|
@@ -10,6 +10,7 @@ import sanitizeHtml from 'sanitize-html'
|
|
|
10
10
|
import debounce from 'debounce';
|
|
11
11
|
import type { AdminForthResourceColumnInputCommon, Predicate } from '@/types/Common';
|
|
12
12
|
import { i18nInstance } from '../i18n'
|
|
13
|
+
import { useI18n } from 'vue-i18n';
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
|
|
@@ -524,41 +525,95 @@ export function atob_function(source: string): string {
|
|
|
524
525
|
return atob(source);
|
|
525
526
|
}
|
|
526
527
|
|
|
527
|
-
export function compareOldAndNewRecord(oldRecord: Record<string, any>, newRecord: Record<string, any>): boolean {
|
|
528
|
+
export function compareOldAndNewRecord(oldRecord: Record<string, any>, newRecord: Record<string, any>): {ok: boolean, changedFields: Record<string, {oldValue: any, newValue: any}>} {
|
|
528
529
|
const newKeys = Object.keys(newRecord);
|
|
529
530
|
const coreStore = useCoreStore();
|
|
531
|
+
const changedColumns: Record<string, { oldValue: any, newValue: any }> = {};
|
|
530
532
|
|
|
531
533
|
for (const key of newKeys) {
|
|
532
|
-
|
|
534
|
+
const oldValue = typeof oldRecord[key] === 'object' && oldRecord[key] !== null ? JSON.stringify(oldRecord[key]) : oldRecord[key];
|
|
535
|
+
const newValue = typeof newRecord[key] === 'object' && newRecord[key] !== null ? JSON.stringify(newRecord[key]) : newRecord[key];
|
|
536
|
+
if (oldValue !== newValue) {
|
|
533
537
|
if (
|
|
534
538
|
(
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
(Array.isArray(
|
|
539
|
+
oldValue === undefined ||
|
|
540
|
+
oldValue === null ||
|
|
541
|
+
oldValue === '' ||
|
|
542
|
+
(Array.isArray(oldValue) && oldValue.length === 0) ||
|
|
543
|
+
oldValue === '[]'
|
|
539
544
|
)
|
|
540
545
|
&&
|
|
541
546
|
(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
(Array.isArray(
|
|
547
|
+
newValue === undefined ||
|
|
548
|
+
newValue === null ||
|
|
549
|
+
newValue === '' ||
|
|
550
|
+
(Array.isArray(newValue) && newValue.length === 0) ||
|
|
551
|
+
newValue === '[]'
|
|
546
552
|
)
|
|
547
553
|
) {
|
|
548
554
|
// console.log(`Value for key ${key} is considered equal (empty)`)
|
|
549
555
|
continue;
|
|
550
556
|
}
|
|
551
557
|
|
|
552
|
-
const column = coreStore.resource
|
|
558
|
+
const column = coreStore.resource?.columns.find((c) => c.name === key);
|
|
553
559
|
if (column?.foreignResource) {
|
|
554
560
|
if (newRecord[key] === oldRecord[key]?.pk) {
|
|
555
561
|
// console.log(`Value for key ${key} is considered equal (foreign key)`)
|
|
556
562
|
continue;
|
|
557
563
|
}
|
|
558
564
|
}
|
|
559
|
-
// console.log(`Value for key ${key} is different`, { oldValue:
|
|
560
|
-
|
|
565
|
+
// console.log(`Value for key ${key} is different`, { oldValue: oldValue, newValue: newValue });
|
|
566
|
+
changedColumns[key] = { oldValue, newValue };
|
|
561
567
|
}
|
|
562
568
|
}
|
|
563
|
-
return
|
|
569
|
+
return { ok: Object.keys(changedColumns).length !== 0, changedFields: changedColumns };
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
export function generateMessageHtmlForRecordChange(changedFields: Record<string, { oldValue: any, newValue: any }>, t: ReturnType<typeof useI18n>['t']): string {
|
|
573
|
+
const coreStore = useCoreStore();
|
|
574
|
+
|
|
575
|
+
const escapeHtml = (value: any) => {
|
|
576
|
+
if (value === null || value === undefined || value === '') return `<em>${t('empty')}</em>`;
|
|
577
|
+
let s: string;
|
|
578
|
+
if (typeof value === 'object') {
|
|
579
|
+
try {
|
|
580
|
+
s = JSON.stringify(value);
|
|
581
|
+
} catch (e) {
|
|
582
|
+
s = String(value);
|
|
583
|
+
}
|
|
584
|
+
} else {
|
|
585
|
+
s = String(value);
|
|
586
|
+
}
|
|
587
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
588
|
+
};
|
|
589
|
+
|
|
590
|
+
const items = Object.keys(changedFields || {}).map(key => {
|
|
591
|
+
const column = coreStore.resource?.columns?.find((c: any) => c.name === key);
|
|
592
|
+
const label = column?.label || key;
|
|
593
|
+
const oldV = escapeHtml(changedFields[key].oldValue);
|
|
594
|
+
const newV = escapeHtml(changedFields[key].newValue);
|
|
595
|
+
return `<li class="truncate"><strong>${escapeHtml(label)}</strong>: <span class="af-old-value text-muted">${oldV}</span> → <span class="af-new-value">${newV}</span></li>`;
|
|
596
|
+
}).join('');
|
|
597
|
+
|
|
598
|
+
const listHtml = items ? `<ul class="mt-2 list-disc list-inside">${items}</ul>` : '';
|
|
599
|
+
const messageHtml = `<div>${escapeHtml(t('There are unsaved changes. Are you sure you want to leave this page?'))}${listHtml}</div>`;
|
|
600
|
+
return messageHtml;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
export function getTimeAgoString(date: Date): string {
|
|
604
|
+
const now = new Date();
|
|
605
|
+
const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);
|
|
606
|
+
|
|
607
|
+
if (diffInSeconds < 60) {
|
|
608
|
+
return `${diffInSeconds} ${diffInSeconds === 1 ? 'second' : 'seconds'} ago`;
|
|
609
|
+
} else if (diffInSeconds < 3600) {
|
|
610
|
+
const minutes = Math.floor(diffInSeconds / 60);
|
|
611
|
+
return `${minutes} ${minutes === 1 ? 'minute' : 'minutes'} ago`;
|
|
612
|
+
} else if (diffInSeconds < 86400) {
|
|
613
|
+
const hours = Math.floor(diffInSeconds / 3600);
|
|
614
|
+
return `${hours} ${hours === 1 ? 'hour' : 'hours'} ago`;
|
|
615
|
+
} else {
|
|
616
|
+
const days = Math.floor(diffInSeconds / 86400);
|
|
617
|
+
return `${days} ${days === 1 ? 'day' : 'days'} ago`;
|
|
618
|
+
}
|
|
564
619
|
}
|
|
@@ -79,7 +79,7 @@ import BreadcrumbsWithButtons from '@/components/BreadcrumbsWithButtons.vue';
|
|
|
79
79
|
import ResourceForm from '@/components/ResourceForm.vue';
|
|
80
80
|
import SingleSkeletLoader from '@/components/SingleSkeletLoader.vue';
|
|
81
81
|
import { useCoreStore } from '@/stores/core';
|
|
82
|
-
import { callAdminForthApi, getCustomComponent,checkAcessByAllowedActions, initThreeDotsDropdown, checkShowIf, compareOldAndNewRecord } from '@/utils';
|
|
82
|
+
import { callAdminForthApi, getCustomComponent,checkAcessByAllowedActions, initThreeDotsDropdown, checkShowIf, compareOldAndNewRecord, generateMessageHtmlForRecordChange } from '@/utils';
|
|
83
83
|
import { IconFloppyDiskSolid } from '@iconify-prerendered/vue-flowbite';
|
|
84
84
|
import { onMounted, onBeforeMount, onBeforeUnmount, ref, watch, nextTick } from 'vue';
|
|
85
85
|
import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router';
|
|
@@ -121,7 +121,7 @@ async function onUpdateRecord(newRecord: any) {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
function checkIfWeCanLeavePage() {
|
|
124
|
-
return wasSaveSuccessful.value || cancelButtonClicked.value || compareOldAndNewRecord(initialValues.value, record.value);
|
|
124
|
+
return wasSaveSuccessful.value || cancelButtonClicked.value || compareOldAndNewRecord(initialValues.value, record.value).ok === false;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
function onBeforeUnload(event: BeforeUnloadEvent) {
|
|
@@ -139,8 +139,12 @@ onBeforeUnmount(() => {
|
|
|
139
139
|
|
|
140
140
|
onBeforeRouteLeave(async (to, from, next) => {
|
|
141
141
|
if (!checkIfWeCanLeavePage()) {
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
const { changedFields } = compareOldAndNewRecord(initialValues.value, record.value);
|
|
143
|
+
|
|
144
|
+
const messageHtml = generateMessageHtmlForRecordChange(changedFields, t);
|
|
145
|
+
|
|
146
|
+
const answer = await confirm({ messageHtml: messageHtml, yes: t('Yes'), no: t('No') });
|
|
147
|
+
if (!answer) return next(false);
|
|
144
148
|
}
|
|
145
149
|
next();
|
|
146
150
|
});
|
|
@@ -74,7 +74,7 @@ import BreadcrumbsWithButtons from '@/components/BreadcrumbsWithButtons.vue';
|
|
|
74
74
|
import ResourceForm from '@/components/ResourceForm.vue';
|
|
75
75
|
import SingleSkeletLoader from '@/components/SingleSkeletLoader.vue';
|
|
76
76
|
import { useCoreStore } from '@/stores/core';
|
|
77
|
-
import { callAdminForthApi, getCustomComponent,checkAcessByAllowedActions, initThreeDotsDropdown, compareOldAndNewRecord } from '@/utils';
|
|
77
|
+
import { callAdminForthApi, getCustomComponent,checkAcessByAllowedActions, initThreeDotsDropdown, compareOldAndNewRecord, generateMessageHtmlForRecordChange } from '@/utils';
|
|
78
78
|
import { IconFloppyDiskSolid } from '@iconify-prerendered/vue-flowbite';
|
|
79
79
|
import { computed, onMounted, onBeforeMount, ref, type Ref, nextTick, watch, onBeforeUnmount } from 'vue';
|
|
80
80
|
import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router';
|
|
@@ -113,7 +113,7 @@ function onBeforeUnload(event: BeforeUnloadEvent) {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
function checkIfWeCanLeavePage() {
|
|
116
|
-
return wasSaveSuccessful.value || cancelButtonClicked.value || compareOldAndNewRecord(initialRecord.value, record.value);
|
|
116
|
+
return wasSaveSuccessful.value || cancelButtonClicked.value || compareOldAndNewRecord(initialRecord.value, record.value).ok === false;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
window.addEventListener('beforeunload', onBeforeUnload);
|
|
@@ -124,8 +124,12 @@ onBeforeUnmount(() => {
|
|
|
124
124
|
|
|
125
125
|
onBeforeRouteLeave(async (to, from, next) => {
|
|
126
126
|
if (!checkIfWeCanLeavePage()) {
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
const { changedFields } = compareOldAndNewRecord(initialRecord.value, record.value);
|
|
128
|
+
|
|
129
|
+
const messageHtml = generateMessageHtmlForRecordChange(changedFields, t);
|
|
130
|
+
|
|
131
|
+
const answer = await confirm({ messageHtml: messageHtml, yes: t('Yes'), no: t('No') });
|
|
132
|
+
if (!answer) return next(false);
|
|
129
133
|
}
|
|
130
134
|
next();
|
|
131
135
|
});
|