adminforth 1.3.54-next.9 → 1.3.55-next.2
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/auth.d.ts +31 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +42 -56
- package/dist/auth.js.map +1 -0
- package/dist/basePlugin.d.ts +18 -0
- package/dist/basePlugin.d.ts.map +1 -0
- package/dist/basePlugin.js +1 -0
- package/dist/basePlugin.js.map +1 -0
- package/dist/dataConnectors/baseConnector.d.ts +94 -0
- package/dist/dataConnectors/baseConnector.d.ts.map +1 -0
- package/dist/dataConnectors/baseConnector.js +108 -122
- package/dist/dataConnectors/baseConnector.js.map +1 -0
- package/dist/dataConnectors/clickhouse.d.ts +92 -0
- package/dist/dataConnectors/clickhouse.d.ts.map +1 -0
- package/dist/dataConnectors/clickhouse.js +132 -149
- package/dist/dataConnectors/clickhouse.js.map +1 -0
- package/dist/dataConnectors/mongo.d.ts +93 -0
- package/dist/dataConnectors/mongo.d.ts.map +1 -0
- package/dist/dataConnectors/mongo.js +75 -101
- package/dist/dataConnectors/mongo.js.map +1 -0
- package/dist/dataConnectors/postgres.d.ts +71 -0
- package/dist/dataConnectors/postgres.d.ts.map +1 -0
- package/dist/dataConnectors/postgres.js +124 -143
- package/dist/dataConnectors/postgres.js.map +1 -0
- package/dist/dataConnectors/sqlite.d.ts +67 -0
- package/dist/dataConnectors/sqlite.d.ts.map +1 -0
- package/dist/dataConnectors/sqlite.js +113 -130
- package/dist/dataConnectors/sqlite.js.map +1 -0
- package/dist/index.d.ts +92 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +197 -217
- package/dist/index.js.map +1 -0
- package/dist/modules/codeInjector.d.ts +35 -0
- package/dist/modules/codeInjector.d.ts.map +1 -0
- package/dist/modules/codeInjector.js +480 -486
- package/dist/modules/codeInjector.js.map +1 -0
- package/dist/modules/configValidator.d.ts +12 -0
- package/dist/modules/configValidator.d.ts.map +1 -0
- package/dist/modules/configValidator.js +31 -22
- package/dist/modules/configValidator.js.map +1 -0
- package/dist/modules/operationalResource.d.ts +17 -0
- package/dist/modules/operationalResource.d.ts.map +1 -0
- package/dist/modules/operationalResource.js +50 -70
- package/dist/modules/operationalResource.js.map +1 -0
- package/dist/modules/restApi.d.ts +10 -0
- package/dist/modules/restApi.d.ts.map +1 -0
- package/dist/modules/restApi.js +104 -116
- package/dist/modules/restApi.js.map +1 -0
- package/dist/modules/styleGenerator.d.ts +9 -0
- package/dist/modules/styleGenerator.d.ts.map +1 -0
- package/dist/modules/styleGenerator.js +1 -0
- package/dist/modules/styleGenerator.js.map +1 -0
- package/dist/modules/styles.d.ts +96 -0
- package/dist/modules/styles.d.ts.map +1 -0
- package/dist/modules/styles.js +1 -0
- package/dist/modules/styles.js.map +1 -0
- package/dist/modules/utils.d.ts +39 -0
- package/dist/modules/utils.d.ts.map +1 -0
- package/dist/modules/utils.js +1 -0
- package/dist/modules/utils.js.map +1 -0
- package/dist/plugins/audit-log/types.d.ts +35 -0
- package/dist/plugins/audit-log/types.d.ts.map +1 -0
- package/dist/plugins/audit-log/types.js +2 -0
- package/dist/plugins/audit-log/types.js.map +1 -0
- package/dist/plugins/chat-gpt/types.d.ts +82 -0
- package/dist/plugins/chat-gpt/types.d.ts.map +1 -0
- package/dist/plugins/chat-gpt/types.js +2 -0
- package/dist/plugins/chat-gpt/types.js.map +1 -0
- package/dist/plugins/email-password-reset/types.d.ts +28 -0
- package/dist/plugins/email-password-reset/types.d.ts.map +1 -0
- package/dist/plugins/email-password-reset/types.js +2 -0
- package/dist/plugins/email-password-reset/types.js.map +1 -0
- package/dist/plugins/foreign-inline-list/types.d.ts +19 -0
- package/dist/plugins/foreign-inline-list/types.d.ts.map +1 -0
- package/dist/plugins/foreign-inline-list/types.js +2 -0
- package/dist/plugins/foreign-inline-list/types.js.map +1 -0
- package/dist/plugins/import-export/types.d.ts +3 -0
- package/dist/plugins/import-export/types.d.ts.map +1 -0
- package/dist/plugins/import-export/types.js +2 -0
- package/dist/plugins/import-export/types.js.map +1 -0
- package/dist/plugins/rich-editor/custom/async-queue.d.ts +8 -0
- package/dist/plugins/rich-editor/custom/async-queue.d.ts.map +1 -0
- package/dist/plugins/rich-editor/custom/async-queue.js +29 -0
- package/dist/plugins/rich-editor/custom/async-queue.js.map +1 -0
- package/dist/plugins/rich-editor/dist/custom/async-queue.d.ts +8 -0
- package/dist/plugins/rich-editor/dist/custom/async-queue.d.ts.map +1 -0
- package/dist/plugins/rich-editor/dist/custom/async-queue.js +29 -0
- package/dist/plugins/rich-editor/dist/custom/async-queue.js.map +1 -0
- package/dist/plugins/rich-editor/types.d.ts +153 -0
- package/dist/plugins/rich-editor/types.d.ts.map +1 -0
- package/dist/plugins/rich-editor/types.js +16 -0
- package/dist/plugins/rich-editor/types.js.map +1 -0
- package/dist/plugins/two-factors-auth/types.d.ts +18 -0
- package/dist/plugins/two-factors-auth/types.d.ts.map +1 -0
- package/dist/plugins/two-factors-auth/types.js +2 -0
- package/dist/plugins/two-factors-auth/types.js.map +1 -0
- package/dist/plugins/upload/types.d.ts +132 -0
- package/dist/plugins/upload/types.d.ts.map +1 -0
- package/dist/plugins/upload/types.js +2 -0
- package/dist/plugins/upload/types.js.map +1 -0
- package/dist/servers/express.d.ts +18 -0
- package/dist/servers/express.d.ts.map +1 -0
- package/dist/servers/express.js +30 -42
- package/dist/servers/express.js.map +1 -0
- package/dist/spa/index.html +2 -2
- package/dist/spa/package-lock.json +87 -1
- package/dist/spa/package.json +4 -1
- package/dist/spa/src/App.vue +154 -50
- package/dist/spa/src/components/AcceptModal.vue +1 -1
- package/dist/spa/src/components/Breadcrumbs.vue +1 -1
- package/dist/spa/src/components/CustomDatePicker.vue +1 -1
- package/dist/spa/src/components/CustomDateRangePicker.vue +1 -1
- package/dist/spa/src/components/CustomRangePicker.vue +9 -5
- package/dist/spa/src/components/Dropdown.vue +4 -4
- package/dist/spa/src/components/Filters.vue +2 -2
- package/dist/spa/src/components/MenuLink.vue +3 -0
- package/dist/spa/src/components/ResourceForm.vue +67 -36
- package/dist/spa/src/components/ResourceListTable.vue +216 -144
- package/dist/spa/src/components/SkeleteLoader.vue +4 -4
- package/dist/spa/src/components/Toast.vue +3 -2
- package/dist/spa/src/components/ValueRenderer.vue +81 -6
- package/dist/spa/src/composables/useFrontendApi.ts +1 -1
- package/dist/spa/src/composables/useStores.ts +18 -14
- package/dist/spa/src/index.scss +4 -0
- package/{spa → dist/spa}/src/renderers/CompactUUID.vue +4 -4
- package/{spa → dist/spa}/src/renderers/CountryFlag.vue +2 -2
- package/dist/spa/src/router/index.ts +4 -8
- package/dist/spa/src/spa_types/core.ts +2 -0
- package/dist/spa/src/stores/core.ts +6 -2
- package/dist/spa/src/stores/filters.ts +15 -10
- package/dist/spa/src/stores/toast.ts +22 -6
- package/dist/spa/src/types/AdminForthConfig.ts +340 -55
- package/dist/spa/src/types/FrontendAPI.ts +52 -30
- package/dist/spa/src/utils.ts +59 -2
- package/dist/spa/src/views/CreateView.vue +15 -4
- package/dist/spa/src/views/EditView.vue +20 -7
- package/dist/spa/src/views/ListView.vue +132 -38
- package/dist/spa/src/views/LoginView.vue +50 -18
- package/dist/spa/src/views/ShowView.vue +25 -15
- package/dist/types/AdminForthConfig.d.ts +1619 -0
- package/dist/types/AdminForthConfig.d.ts.map +1 -0
- package/dist/types/AdminForthConfig.js +1 -0
- package/dist/types/AdminForthConfig.js.map +1 -0
- package/{types/FrontendAPI.ts → dist/types/FrontendAPI.d.ts} +27 -52
- package/dist/types/FrontendAPI.d.ts.map +1 -0
- package/dist/types/FrontendAPI.js +1 -0
- package/dist/types/FrontendAPI.js.map +1 -0
- package/package.json +16 -6
- package/auth.ts +0 -140
- package/basePlugin.ts +0 -70
- package/dataConnectors/baseConnector.ts +0 -216
- package/dataConnectors/clickhouse.ts +0 -338
- package/dataConnectors/mongo.ts +0 -202
- package/dataConnectors/postgres.ts +0 -306
- package/dataConnectors/sqlite.ts +0 -254
- package/index.ts +0 -428
- package/modules/codeInjector.ts +0 -736
- package/modules/configValidator.ts +0 -571
- package/modules/operationalResource.ts +0 -98
- package/modules/restApi.ts +0 -718
- package/modules/styleGenerator.ts +0 -55
- package/modules/styles.ts +0 -126
- package/modules/utils.ts +0 -472
- package/servers/express.ts +0 -259
- package/spa/.eslintrc.cjs +0 -14
- package/spa/README.md +0 -39
- package/spa/env.d.ts +0 -1
- package/spa/index.html +0 -23
- package/spa/package-lock.json +0 -4602
- package/spa/package.json +0 -51
- package/spa/postcss.config.js +0 -6
- package/spa/public/assets/favicon.png +0 -0
- package/spa/src/App.vue +0 -418
- package/spa/src/assets/base.css +0 -2
- package/spa/src/assets/logo.svg +0 -19
- package/spa/src/components/AcceptModal.vue +0 -45
- package/spa/src/components/Breadcrumbs.vue +0 -41
- package/spa/src/components/BreadcrumbsWithButtons.vue +0 -26
- package/spa/src/components/CustomDatePicker.vue +0 -176
- package/spa/src/components/CustomDateRangePicker.vue +0 -218
- package/spa/src/components/CustomRangePicker.vue +0 -156
- package/spa/src/components/Dropdown.vue +0 -168
- package/spa/src/components/Filters.vue +0 -222
- package/spa/src/components/HelloWorld.vue +0 -17
- package/spa/src/components/MenuLink.vue +0 -27
- package/spa/src/components/ResourceForm.vue +0 -290
- package/spa/src/components/ResourceListTable.vue +0 -466
- package/spa/src/components/SingleSkeletLoader.vue +0 -13
- package/spa/src/components/SkeleteLoader.vue +0 -23
- package/spa/src/components/Toast.vue +0 -78
- package/spa/src/components/ValueRenderer.vue +0 -114
- package/spa/src/components/icons/IconCalendar.vue +0 -5
- package/spa/src/components/icons/IconCommunity.vue +0 -7
- package/spa/src/components/icons/IconDocumentation.vue +0 -7
- package/spa/src/components/icons/IconEcosystem.vue +0 -7
- package/spa/src/components/icons/IconSupport.vue +0 -7
- package/spa/src/components/icons/IconTime.vue +0 -5
- package/spa/src/components/icons/IconTooling.vue +0 -19
- package/spa/src/composables/useFrontendApi.ts +0 -26
- package/spa/src/composables/useStores.ts +0 -131
- package/spa/src/index.scss +0 -31
- package/spa/src/main.ts +0 -18
- package/spa/src/router/index.ts +0 -59
- package/spa/src/spa_types/core.ts +0 -53
- package/spa/src/stores/core.ts +0 -148
- package/spa/src/stores/filters.ts +0 -27
- package/spa/src/stores/modal.ts +0 -48
- package/spa/src/stores/toast.ts +0 -31
- package/spa/src/stores/user.ts +0 -72
- package/spa/src/utils.ts +0 -160
- package/spa/src/views/CreateView.vue +0 -167
- package/spa/src/views/EditView.vue +0 -170
- package/spa/src/views/ListView.vue +0 -352
- package/spa/src/views/LoginView.vue +0 -192
- package/spa/src/views/ResourceParent.vue +0 -17
- package/spa/src/views/ShowView.vue +0 -186
- package/spa/tailwind.config.js +0 -17
- package/spa/tsconfig.app.json +0 -14
- package/spa/tsconfig.json +0 -11
- package/spa/tsconfig.node.json +0 -19
- package/spa/vite.config.ts +0 -56
- package/tsconfig.json +0 -112
- package/types/AdminForthConfig.ts +0 -1762
- /package/{spa → dist/spa}/src/components/ThreeDotsMenu.vue +0 -0
|
@@ -1,24 +1,38 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="relative flex items-center justify-center min-h-screen bg-gray-100 dark:bg-gray-800"
|
|
3
|
-
:style="coreStore.config?.loginBackgroundImage ? {
|
|
2
|
+
<div class="relative flex items-center justify-center min-h-screen bg-gray-100 dark:bg-gray-800 relative w-screen h-screen"
|
|
3
|
+
:style="coreStore.config?.loginBackgroundImage && backgroundPosition === 'over' ? {
|
|
4
4
|
'background-image': 'url(' + loadFile(coreStore.config?.loginBackgroundImage) + ')',
|
|
5
5
|
'background-size': 'cover',
|
|
6
6
|
'background-position': 'center',
|
|
7
7
|
'background-blend-mode': 'darken'
|
|
8
8
|
}: {}"
|
|
9
|
-
|
|
9
|
+
>
|
|
10
|
+
|
|
11
|
+
<img v-if="coreStore.config?.loginBackgroundImage && backgroundPosition !== 'over'"
|
|
12
|
+
:src="loadFile(coreStore.config?.loginBackgroundImage)"
|
|
13
|
+
class="position-absolute top-0 left-0 h-screen object-cover w-0"
|
|
14
|
+
:class="{
|
|
15
|
+
'1/2': 'md:w-1/2',
|
|
16
|
+
'1/3': 'md:w-1/3',
|
|
17
|
+
'2/3': 'md:w-2/3',
|
|
18
|
+
'3/4': 'md:w-3/4',
|
|
19
|
+
'2/5': 'md:w-2/5',
|
|
20
|
+
'3/5': 'md:w-3/5',
|
|
21
|
+
}[backgroundPosition]"
|
|
22
|
+
/>
|
|
10
23
|
|
|
11
24
|
<!-- Main modal -->
|
|
12
|
-
<div id="authentication-modal" tabindex="-1"
|
|
13
|
-
|
|
25
|
+
<div id="authentication-modal" tabindex="-1"
|
|
26
|
+
class="overflow-y-auto flex flex-grow
|
|
27
|
+
overflow-x-hidden z-50 min-w-[350px] justify-center items-center md:inset-0 h-[calc(100%-1rem)] max-h-full">
|
|
28
|
+
<div class="relative p-4 w-full max-h-full max-w-[400px]">
|
|
14
29
|
<!-- Modal content -->
|
|
15
30
|
<div class="relative bg-white rounded-lg shadow dark:bg-gray-700 dark:shadow-black" >
|
|
16
31
|
<!-- Modal header -->
|
|
17
32
|
<div class="flex items-center justify-between p-4 md:p-5 border-b rounded-t dark:border-gray-600">
|
|
18
33
|
<h3 class="text-xl font-semibold text-gray-900 dark:text-white">
|
|
19
|
-
|
|
34
|
+
Sign in to {{ coreStore.config?.brandName }}
|
|
20
35
|
</h3>
|
|
21
|
-
|
|
22
36
|
</div>
|
|
23
37
|
<!-- Modal body -->
|
|
24
38
|
<div class="p-4 md:p-5">
|
|
@@ -41,15 +55,26 @@
|
|
|
41
55
|
<IconEyeSlashSolid class="w-5 h-5" v-else />
|
|
42
56
|
</button>
|
|
43
57
|
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
|
|
59
|
+
<div v-if="coreStore.config.rememberMeDays"
|
|
60
|
+
class="flex items-start mb-5"
|
|
61
|
+
:title="`Stay logged in for ${coreStore.config.rememberMeDays} days`"
|
|
62
|
+
>
|
|
63
|
+
<div class="flex items-center h-5">
|
|
64
|
+
<input id="remember"
|
|
65
|
+
ref="rememberInput"
|
|
66
|
+
type="checkbox"
|
|
67
|
+
value=""
|
|
68
|
+
class="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-blue-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-blue-600 dark:ring-offset-gray-800 dark:focus:ring-offset-gray-800" />
|
|
69
|
+
</div>
|
|
70
|
+
<label for="remember" class="ms-2 text-sm font-medium text-gray-900 dark:text-gray-300">Remember me</label>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<component
|
|
74
|
+
v-for="c in coreStore?.config?.loginPageInjections?.underInputs || []"
|
|
75
|
+
:is="getCustomComponent(c)"
|
|
76
|
+
:meta="c.meta"
|
|
77
|
+
/>
|
|
53
78
|
|
|
54
79
|
<div v-if="error" class="flex items-center p-4 mb-4 text-sm text-red-800 rounded-lg bg-red-50 dark:bg-gray-800 dark:text-red-400" role="alert">
|
|
55
80
|
<svg class="flex-shrink-0 inline w-4 h-4 me-3" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20">
|
|
@@ -61,6 +86,7 @@
|
|
|
61
86
|
</div>
|
|
62
87
|
</div>
|
|
63
88
|
|
|
89
|
+
|
|
64
90
|
|
|
65
91
|
<div v-if="coreStore.config?.loginPromptHTML"
|
|
66
92
|
class="flex items-center p-4 mb-4 text-sm text-gray-800 rounded-lg bg-gray-50 dark:bg-gray-800 dark:text-gray-400" role="alert"
|
|
@@ -96,7 +122,8 @@
|
|
|
96
122
|
|
|
97
123
|
<script setup>
|
|
98
124
|
|
|
99
|
-
import {
|
|
125
|
+
import { getCustomComponent } from '@/utils';
|
|
126
|
+
import { onMounted, ref, computed } from 'vue';
|
|
100
127
|
import { useCoreStore } from '@/stores/core';
|
|
101
128
|
import { useUserStore } from '@/stores/user';
|
|
102
129
|
import { IconEyeSolid, IconEyeSlashSolid } from '@iconify-prerendered/vue-flowbite';
|
|
@@ -105,6 +132,7 @@ import { useRouter } from 'vue-router';
|
|
|
105
132
|
|
|
106
133
|
const passwordInput = ref(null);
|
|
107
134
|
const usernameInput = ref(null);
|
|
135
|
+
const rememberInput = ref(null);
|
|
108
136
|
|
|
109
137
|
const router = useRouter();
|
|
110
138
|
const inProgress = ref(false);
|
|
@@ -112,11 +140,14 @@ const inProgress = ref(false);
|
|
|
112
140
|
const coreStore = useCoreStore();
|
|
113
141
|
const user = useUserStore();
|
|
114
142
|
|
|
115
|
-
|
|
116
143
|
const showPw = ref(false);
|
|
117
144
|
|
|
118
145
|
const error = ref(null);
|
|
119
146
|
|
|
147
|
+
const backgroundPosition = computed(() => {
|
|
148
|
+
return coreStore.config?.loginBackgroundPosition || '1/2';
|
|
149
|
+
});
|
|
150
|
+
|
|
120
151
|
onMounted(async () => {
|
|
121
152
|
await coreStore.getPublicConfig();
|
|
122
153
|
if (coreStore.config?.demoCredentials) {
|
|
@@ -143,6 +174,7 @@ async function login() {
|
|
|
143
174
|
body: {
|
|
144
175
|
username,
|
|
145
176
|
password,
|
|
177
|
+
rememberMe: rememberInput.value?.checked,
|
|
146
178
|
}
|
|
147
179
|
});
|
|
148
180
|
inProgress.value = false;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="relative">
|
|
3
3
|
<component
|
|
4
|
+
v-if="!loading"
|
|
4
5
|
v-for="c in coreStore?.resourceOptions?.pageInjections?.show?.beforeBreadcrumbs || []"
|
|
5
6
|
:is="getCustomComponent(c)"
|
|
6
7
|
:meta="c.meta"
|
|
@@ -9,8 +10,16 @@
|
|
|
9
10
|
:adminUser="coreStore.adminUser"
|
|
10
11
|
/>
|
|
11
12
|
<BreadcrumbsWithButtons>
|
|
13
|
+
<RouterLink v-if="coreStore.resource?.options?.allowedActions?.create"
|
|
14
|
+
:to="{ name: 'resource-create', params: { resourceId: $route.params.resourceId } }"
|
|
15
|
+
class="flex items-center py-1 px-3 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded border border-gray-300 hover:bg-gray-100 hover:text-lightPrimary focus:z-10 focus:ring-4 focus:ring-gray-100 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700 rounded-default"
|
|
16
|
+
>
|
|
17
|
+
<IconPlusOutline class="w-4 h-4 me-2"/>
|
|
18
|
+
Add new
|
|
19
|
+
</RouterLink>
|
|
20
|
+
|
|
12
21
|
<RouterLink v-if="coreStore?.resourceOptions?.allowedActions?.edit" :to="{ name: 'resource-edit', params: { resourceId: $route.params.resourceId, primaryKey: $route.params.primaryKey } }"
|
|
13
|
-
class="flex items-center py-1 px-3 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded-default border border-gray-300 hover:bg-gray-100 hover:text-
|
|
22
|
+
class="flex items-center py-1 px-3 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded-default border border-gray-300 hover:bg-gray-100 hover:text-lightPrimary focus:z-10 focus:ring-4 focus:ring-gray-100 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700"
|
|
14
23
|
>
|
|
15
24
|
<IconPenSolid class="w-4 h-4" />
|
|
16
25
|
Edit
|
|
@@ -22,6 +31,10 @@
|
|
|
22
31
|
<IconTrashBinSolid class="w-4 h-4" />
|
|
23
32
|
Delete
|
|
24
33
|
</button>
|
|
34
|
+
|
|
35
|
+
<ThreeDotsMenu
|
|
36
|
+
:threeDotsDropdownItems="coreStore.resourceOptions?.pageInjections?.show?.threeDotsDropdownItems"
|
|
37
|
+
></ThreeDotsMenu>
|
|
25
38
|
</BreadcrumbsWithButtons>
|
|
26
39
|
|
|
27
40
|
<component
|
|
@@ -58,8 +71,9 @@
|
|
|
58
71
|
</tr>
|
|
59
72
|
</thead>
|
|
60
73
|
<tbody>
|
|
61
|
-
<tr v-for="column in coreStore.resource?.columns.filter(c => c.showIn.includes('show'))" :key="column.name"
|
|
62
|
-
|
|
74
|
+
<tr v-for="column,i in coreStore.resource?.columns.filter(c => c.showIn.includes('show'))" :key="column.name"
|
|
75
|
+
class="bg-lightForm bg-darkForm odd:dark:bg-gray-900 even:dark:bg-gray-800 dark:border-gray-700"
|
|
76
|
+
:class="{ 'border-b': i !== coreStore.resource.columns.filter(c => c.showIn.includes('show')).length - 1 }"
|
|
63
77
|
>
|
|
64
78
|
<component
|
|
65
79
|
v-if="column.components?.showRow"
|
|
@@ -73,7 +87,7 @@
|
|
|
73
87
|
<td class="px-6 py-4 whitespace-nowrap "> <!--align-top-->
|
|
74
88
|
{{ column.label }}
|
|
75
89
|
</td>
|
|
76
|
-
<td class="px-6 py-4 whitespace-nowrap whitespace-pre-wrap">
|
|
90
|
+
<td class="px-6 py-4 whitespace-nowrap whitespace-pre-wrap" :data-af-column="column.name">
|
|
77
91
|
<component
|
|
78
92
|
v-if="column?.components?.show"
|
|
79
93
|
:is="getCustomComponent(column?.components?.show)"
|
|
@@ -98,6 +112,7 @@
|
|
|
98
112
|
</div>
|
|
99
113
|
|
|
100
114
|
<component
|
|
115
|
+
v-if="!loading"
|
|
101
116
|
v-for="c in coreStore?.resourceOptions?.pageInjections?.show?.bottom || []"
|
|
102
117
|
:is="getCustomComponent(c)"
|
|
103
118
|
:meta="c.meta"
|
|
@@ -118,31 +133,27 @@ import BreadcrumbsWithButtons from '@/components/BreadcrumbsWithButtons.vue';
|
|
|
118
133
|
|
|
119
134
|
import ValueRenderer from '@/components/ValueRenderer.vue';
|
|
120
135
|
import { useCoreStore } from '@/stores/core';
|
|
121
|
-
import {
|
|
122
|
-
import {
|
|
123
|
-
import { IconPenSolid, IconTrashBinSolid } from '@iconify-prerendered/vue-flowbite';
|
|
136
|
+
import { getCustomComponent, checkAcessByAllowedActions, initThreeDotsDropdown } from '@/utils';
|
|
137
|
+
import { IconPenSolid, IconTrashBinSolid, IconPlusOutline } from '@iconify-prerendered/vue-flowbite';
|
|
124
138
|
import { onMounted, ref } from 'vue';
|
|
125
139
|
import { useRoute,useRouter } from 'vue-router';
|
|
126
140
|
import {callAdminForthApi} from '@/utils';
|
|
127
141
|
import { showSuccesTost, showErrorTost } from '@/composables/useFrontendApi';
|
|
142
|
+
import ThreeDotsMenu from '@/components/ThreeDotsMenu.vue';
|
|
128
143
|
|
|
129
144
|
|
|
130
|
-
const item = ref(null);
|
|
131
145
|
const route = useRoute();
|
|
132
146
|
const router = useRouter();
|
|
133
147
|
const loading = ref(true);
|
|
134
148
|
|
|
135
|
-
console.log(route.params,'showWiev');
|
|
136
|
-
|
|
137
|
-
|
|
138
149
|
const coreStore = useCoreStore();
|
|
139
|
-
const modalStore = useModalStore();
|
|
140
150
|
|
|
141
151
|
onMounted(async () => {
|
|
142
152
|
loading.value = true;
|
|
143
153
|
await coreStore.fetchResourceFull({
|
|
144
154
|
resourceId: route.params.resourceId
|
|
145
155
|
});
|
|
156
|
+
initThreeDotsDropdown();
|
|
146
157
|
await coreStore.fetchRecord({
|
|
147
158
|
resourceId: route.params.resourceId,
|
|
148
159
|
primaryKey: route.params.primaryKey,
|
|
@@ -175,9 +186,8 @@ async function deleteRecord(row) {
|
|
|
175
186
|
|
|
176
187
|
} catch (e) {
|
|
177
188
|
console.error(e);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
189
|
+
};
|
|
190
|
+
}
|
|
181
191
|
|
|
182
192
|
}
|
|
183
193
|
|