@ramathibodi/nuxt-commons 0.1.74 → 0.1.75
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/README.md +115 -115
- package/dist/module.json +1 -1
- package/dist/runtime/components/Alert.vue +58 -58
- package/dist/runtime/components/BarcodeReader.vue +130 -130
- package/dist/runtime/components/ExportCSV.vue +110 -110
- package/dist/runtime/components/FileBtn.vue +79 -79
- package/dist/runtime/components/ImportCSV.vue +151 -151
- package/dist/runtime/components/MrzReader.vue +168 -168
- package/dist/runtime/components/SplitterPanel.vue +67 -67
- package/dist/runtime/components/TabsGroup.vue +39 -39
- package/dist/runtime/components/TextBarcode.vue +66 -66
- package/dist/runtime/components/device/IdCardButton.vue +95 -95
- package/dist/runtime/components/device/IdCardWebSocket.vue +207 -207
- package/dist/runtime/components/device/Scanner.vue +350 -350
- package/dist/runtime/components/dialog/Confirm.vue +112 -112
- package/dist/runtime/components/dialog/Host.vue +88 -88
- package/dist/runtime/components/dialog/Index.vue +84 -84
- package/dist/runtime/components/dialog/Loading.vue +51 -51
- package/dist/runtime/components/dialog/default/Confirm.vue +112 -112
- package/dist/runtime/components/dialog/default/Loading.vue +60 -60
- package/dist/runtime/components/dialog/default/Notify.vue +82 -82
- package/dist/runtime/components/dialog/default/Printing.vue +46 -46
- package/dist/runtime/components/dialog/default/VerifyUser.vue +144 -144
- package/dist/runtime/components/document/Form.vue +50 -50
- package/dist/runtime/components/document/TemplateBuilder.vue +536 -536
- package/dist/runtime/components/form/ActionPad.vue +156 -156
- package/dist/runtime/components/form/Birthdate.vue +116 -116
- package/dist/runtime/components/form/CheckboxGroup.vue +99 -99
- package/dist/runtime/components/form/CodeEditor.vue +45 -45
- package/dist/runtime/components/form/Date.vue +270 -270
- package/dist/runtime/components/form/DateTime.vue +220 -220
- package/dist/runtime/components/form/Dialog.vue +178 -178
- package/dist/runtime/components/form/EditPad.vue +157 -157
- package/dist/runtime/components/form/File.vue +295 -295
- package/dist/runtime/components/form/Hidden.vue +44 -44
- package/dist/runtime/components/form/Iterator.vue +538 -538
- package/dist/runtime/components/form/Login.vue +143 -143
- package/dist/runtime/components/form/Pad.vue +399 -399
- package/dist/runtime/components/form/SignPad.vue +226 -226
- package/dist/runtime/components/form/System.vue +34 -34
- package/dist/runtime/components/form/Table.vue +391 -391
- package/dist/runtime/components/form/TableData.vue +236 -236
- package/dist/runtime/components/form/Time.vue +177 -177
- package/dist/runtime/components/form/images/Capture.vue +245 -245
- package/dist/runtime/components/form/images/Edit.vue +133 -133
- package/dist/runtime/components/form/images/Field.vue +331 -331
- package/dist/runtime/components/form/images/Pad.vue +54 -54
- package/dist/runtime/components/label/Date.vue +37 -37
- package/dist/runtime/components/label/DateAgo.vue +102 -102
- package/dist/runtime/components/label/DateCount.vue +152 -152
- package/dist/runtime/components/label/Field.vue +111 -111
- package/dist/runtime/components/label/FormatMoney.vue +37 -37
- package/dist/runtime/components/label/Mask.vue +46 -46
- package/dist/runtime/components/label/Object.vue +21 -21
- package/dist/runtime/components/master/Autocomplete.vue +89 -89
- package/dist/runtime/components/master/Combobox.vue +88 -88
- package/dist/runtime/components/master/RadioGroup.vue +90 -90
- package/dist/runtime/components/master/Select.vue +70 -70
- package/dist/runtime/components/master/label.vue +55 -55
- package/dist/runtime/components/model/Autocomplete.vue +91 -91
- package/dist/runtime/components/model/Combobox.vue +90 -90
- package/dist/runtime/components/model/Pad.vue +114 -114
- package/dist/runtime/components/model/Select.vue +78 -84
- package/dist/runtime/components/model/Table.vue +370 -370
- package/dist/runtime/components/model/iterator.vue +497 -497
- package/dist/runtime/components/model/label.vue +58 -58
- package/dist/runtime/components/pdf/Print.vue +75 -75
- package/dist/runtime/components/pdf/View.vue +146 -146
- package/dist/runtime/composables/dialog.d.ts +1 -1
- package/dist/runtime/composables/graphql.d.ts +1 -1
- package/dist/runtime/composables/graphqlModel.d.ts +9 -9
- package/dist/runtime/composables/graphqlModelItem.d.ts +7 -7
- package/dist/runtime/composables/graphqlModelOperation.d.ts +6 -6
- package/dist/runtime/composables/userPermission.d.ts +1 -1
- package/dist/runtime/labs/Calendar.vue +99 -99
- package/dist/runtime/labs/form/EditMobile.vue +152 -152
- package/dist/runtime/labs/form/TextFieldMask.vue +43 -43
- package/dist/runtime/plugins/clientConfig.d.ts +1 -1
- package/dist/runtime/plugins/default.d.ts +1 -1
- package/dist/runtime/plugins/dialogManager.d.ts +1 -1
- package/dist/runtime/plugins/permission.d.ts +1 -1
- package/dist/runtime/types/alert.d.ts +11 -11
- package/dist/runtime/types/clientConfig.d.ts +13 -13
- package/dist/runtime/types/dialogManager.d.ts +35 -35
- package/dist/runtime/types/formDialog.d.ts +5 -5
- package/dist/runtime/types/graphqlOperation.d.ts +23 -23
- package/dist/runtime/types/menu.d.ts +31 -31
- package/dist/runtime/types/modules.d.ts +7 -7
- package/dist/runtime/types/permission.d.ts +13 -13
- package/package.json +131 -131
- package/scripts/enrich-vue-docs-from-ai.mjs +197 -197
- package/scripts/generate-ai-summary.mjs +321 -321
- package/scripts/generate-composables-md.mjs +129 -129
- package/scripts/postInstall.cjs +70 -70
- package/templates/.codegen/codegen.ts +32 -32
- package/templates/.codegen/plugin-schema-object.js +161 -161
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
/**
|
|
3
|
-
* DialogDefaultVerifyUser is a default dialog content component used by the dialog host for common runtime prompts and feedback.
|
|
4
|
-
* This doc block is consumed by vue-docgen for generated API documentation.
|
|
5
|
-
*/
|
|
6
|
-
import {computed, ref, type Ref, watch} from 'vue'
|
|
7
|
-
import {useDialog} from "../../../composables/dialog"
|
|
8
|
-
import {useGraphQlOperation} from "../../../composables/graphqlOperation";
|
|
9
|
-
import {type AuthenticationState, useState} from '#imports'
|
|
10
|
-
|
|
11
|
-
interface DialogProps {
|
|
12
|
-
title?: string // Title text displayed in the component header or dialog.
|
|
13
|
-
modelValue: boolean // Bound value for v-model synchronization with the parent component.
|
|
14
|
-
message?: string // main message body shown in UI
|
|
15
|
-
confirmButtonText?: string // Label text for the confirm/verify action button.
|
|
16
|
-
cancelButtonText?: string // Label text for the cancel action button.
|
|
17
|
-
type?: 'primary' | 'success' | 'warning' | 'info' | 'error' // visual variant controlling color and intent semantics
|
|
18
|
-
fixedUsername?: boolean | string // Locks username input to provided/default value when enabled.
|
|
19
|
-
width?: string // dialog/component width in CSS-compatible units
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Public props accepted by DialogDefaultVerifyUser.
|
|
24
|
-
* Document each prop field with intent, defaults, and side effects for clear generated docs.
|
|
25
|
-
*/
|
|
26
|
-
const props = withDefaults(defineProps<DialogProps>(), {
|
|
27
|
-
title: 'Verify User',
|
|
28
|
-
message: 'Please enter your credentials to continue.',
|
|
29
|
-
confirmButtonText: 'Verify',
|
|
30
|
-
cancelButtonText: 'Cancel',
|
|
31
|
-
type: 'primary',
|
|
32
|
-
fixedUsername: true,
|
|
33
|
-
width: '400',
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Custom events emitted by DialogDefaultVerifyUser.
|
|
38
|
-
* Parents can listen to these events to react to user actions and internal state changes.
|
|
39
|
-
*/
|
|
40
|
-
const emit = defineEmits<{
|
|
41
|
-
(e: 'update:modelValue', value: boolean): void
|
|
42
|
-
(e: 'resolve', value: string): void
|
|
43
|
-
(e: 'reject', value: any): void
|
|
44
|
-
}>()
|
|
45
|
-
|
|
46
|
-
const authenState = useState<AuthenticationState>("authentication")
|
|
47
|
-
|
|
48
|
-
const dialogVisible: Ref<boolean> = ref(props.modelValue)
|
|
49
|
-
|
|
50
|
-
watch(() => props.modelValue, (val) => {
|
|
51
|
-
dialogVisible.value = val
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
watch(dialogVisible, (val) => {
|
|
55
|
-
if (!val) emit('update:modelValue', false)
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
const username = ref<string>('')
|
|
59
|
-
const password = ref<string>('')
|
|
60
|
-
|
|
61
|
-
watch(()=>props.fixedUsername, (fixedUsername) => {
|
|
62
|
-
if (fixedUsername === true) {
|
|
63
|
-
let userProfile = authenState.value?.userProfile as {username: string}
|
|
64
|
-
username.value = userProfile?.username ?? ""
|
|
65
|
-
} else {
|
|
66
|
-
username.value = (fixedUsername) ? fixedUsername as string : ""
|
|
67
|
-
}
|
|
68
|
-
},{immediate: true})
|
|
69
|
-
|
|
70
|
-
const isDisabled = computed(() => {
|
|
71
|
-
return !username.value || !password.value
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
const verifyUser = async (username: string, password: string): Promise<boolean> => {
|
|
75
|
-
try {
|
|
76
|
-
let result: any = await useGraphQlOperation('Mutation',"verifyUser",["success"], {username: username, password: password})
|
|
77
|
-
return result.success
|
|
78
|
-
} catch (_error) {
|
|
79
|
-
return false
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const handleConfirm = async () => {
|
|
84
|
-
const verified = await verifyUser(username.value, password.value)
|
|
85
|
-
if (verified) {
|
|
86
|
-
dialogVisible.value = false
|
|
87
|
-
emit('resolve', username.value)
|
|
88
|
-
} else {
|
|
89
|
-
useDialog().notify({message: "Invalid username or password",type: 'warning',title:"Error"})
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const handleCancel = () => {
|
|
94
|
-
dialogVisible.value = false
|
|
95
|
-
emit('reject', 'User cancelled')
|
|
96
|
-
}
|
|
97
|
-
</script>
|
|
98
|
-
|
|
99
|
-
<template>
|
|
100
|
-
<v-row justify="center">
|
|
101
|
-
<v-dialog
|
|
102
|
-
v-model="dialogVisible"
|
|
103
|
-
:width="props.width"
|
|
104
|
-
persistent
|
|
105
|
-
>
|
|
106
|
-
<v-card>
|
|
107
|
-
<v-toolbar
|
|
108
|
-
:color="props.type"
|
|
109
|
-
:title="props.title"
|
|
110
|
-
density="compact"
|
|
111
|
-
/>
|
|
112
|
-
<v-card-text>
|
|
113
|
-
<div class="mb-2">{{ props.message }}</div>
|
|
114
|
-
<v-text-field
|
|
115
|
-
v-model="username"
|
|
116
|
-
:readonly="!!props.fixedUsername"
|
|
117
|
-
label="Username"
|
|
118
|
-
variant="underlined"
|
|
119
|
-
/>
|
|
120
|
-
<v-text-field
|
|
121
|
-
v-model="password"
|
|
122
|
-
label="Password"
|
|
123
|
-
type="password"
|
|
124
|
-
variant="underlined"
|
|
125
|
-
/>
|
|
126
|
-
</v-card-text>
|
|
127
|
-
<v-card-actions>
|
|
128
|
-
<v-spacer />
|
|
129
|
-
<v-btn variant="text" @click="handleCancel">
|
|
130
|
-
{{ props.cancelButtonText }}
|
|
131
|
-
</v-btn>
|
|
132
|
-
<v-btn
|
|
133
|
-
:color="props.type"
|
|
134
|
-
:disabled="isDisabled"
|
|
135
|
-
variant="text"
|
|
136
|
-
@click="handleConfirm"
|
|
137
|
-
>
|
|
138
|
-
{{ props.confirmButtonText }}
|
|
139
|
-
</v-btn>
|
|
140
|
-
</v-card-actions>
|
|
141
|
-
</v-card>
|
|
142
|
-
</v-dialog>
|
|
143
|
-
</v-row>
|
|
144
|
-
</template>
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
/**
|
|
3
|
+
* DialogDefaultVerifyUser is a default dialog content component used by the dialog host for common runtime prompts and feedback.
|
|
4
|
+
* This doc block is consumed by vue-docgen for generated API documentation.
|
|
5
|
+
*/
|
|
6
|
+
import {computed, ref, type Ref, watch} from 'vue'
|
|
7
|
+
import {useDialog} from "../../../composables/dialog"
|
|
8
|
+
import {useGraphQlOperation} from "../../../composables/graphqlOperation";
|
|
9
|
+
import {type AuthenticationState, useState} from '#imports'
|
|
10
|
+
|
|
11
|
+
interface DialogProps {
|
|
12
|
+
title?: string // Title text displayed in the component header or dialog.
|
|
13
|
+
modelValue: boolean // Bound value for v-model synchronization with the parent component.
|
|
14
|
+
message?: string // main message body shown in UI
|
|
15
|
+
confirmButtonText?: string // Label text for the confirm/verify action button.
|
|
16
|
+
cancelButtonText?: string // Label text for the cancel action button.
|
|
17
|
+
type?: 'primary' | 'success' | 'warning' | 'info' | 'error' // visual variant controlling color and intent semantics
|
|
18
|
+
fixedUsername?: boolean | string // Locks username input to provided/default value when enabled.
|
|
19
|
+
width?: string // dialog/component width in CSS-compatible units
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Public props accepted by DialogDefaultVerifyUser.
|
|
24
|
+
* Document each prop field with intent, defaults, and side effects for clear generated docs.
|
|
25
|
+
*/
|
|
26
|
+
const props = withDefaults(defineProps<DialogProps>(), {
|
|
27
|
+
title: 'Verify User',
|
|
28
|
+
message: 'Please enter your credentials to continue.',
|
|
29
|
+
confirmButtonText: 'Verify',
|
|
30
|
+
cancelButtonText: 'Cancel',
|
|
31
|
+
type: 'primary',
|
|
32
|
+
fixedUsername: true,
|
|
33
|
+
width: '400',
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Custom events emitted by DialogDefaultVerifyUser.
|
|
38
|
+
* Parents can listen to these events to react to user actions and internal state changes.
|
|
39
|
+
*/
|
|
40
|
+
const emit = defineEmits<{
|
|
41
|
+
(e: 'update:modelValue', value: boolean): void
|
|
42
|
+
(e: 'resolve', value: string): void
|
|
43
|
+
(e: 'reject', value: any): void
|
|
44
|
+
}>()
|
|
45
|
+
|
|
46
|
+
const authenState = useState<AuthenticationState>("authentication")
|
|
47
|
+
|
|
48
|
+
const dialogVisible: Ref<boolean> = ref(props.modelValue)
|
|
49
|
+
|
|
50
|
+
watch(() => props.modelValue, (val) => {
|
|
51
|
+
dialogVisible.value = val
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
watch(dialogVisible, (val) => {
|
|
55
|
+
if (!val) emit('update:modelValue', false)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const username = ref<string>('')
|
|
59
|
+
const password = ref<string>('')
|
|
60
|
+
|
|
61
|
+
watch(()=>props.fixedUsername, (fixedUsername) => {
|
|
62
|
+
if (fixedUsername === true) {
|
|
63
|
+
let userProfile = authenState.value?.userProfile as {username: string}
|
|
64
|
+
username.value = userProfile?.username ?? ""
|
|
65
|
+
} else {
|
|
66
|
+
username.value = (fixedUsername) ? fixedUsername as string : ""
|
|
67
|
+
}
|
|
68
|
+
},{immediate: true})
|
|
69
|
+
|
|
70
|
+
const isDisabled = computed(() => {
|
|
71
|
+
return !username.value || !password.value
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const verifyUser = async (username: string, password: string): Promise<boolean> => {
|
|
75
|
+
try {
|
|
76
|
+
let result: any = await useGraphQlOperation('Mutation',"verifyUser",["success"], {username: username, password: password})
|
|
77
|
+
return result.success
|
|
78
|
+
} catch (_error) {
|
|
79
|
+
return false
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const handleConfirm = async () => {
|
|
84
|
+
const verified = await verifyUser(username.value, password.value)
|
|
85
|
+
if (verified) {
|
|
86
|
+
dialogVisible.value = false
|
|
87
|
+
emit('resolve', username.value)
|
|
88
|
+
} else {
|
|
89
|
+
useDialog().notify({message: "Invalid username or password",type: 'warning',title:"Error"})
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const handleCancel = () => {
|
|
94
|
+
dialogVisible.value = false
|
|
95
|
+
emit('reject', 'User cancelled')
|
|
96
|
+
}
|
|
97
|
+
</script>
|
|
98
|
+
|
|
99
|
+
<template>
|
|
100
|
+
<v-row justify="center">
|
|
101
|
+
<v-dialog
|
|
102
|
+
v-model="dialogVisible"
|
|
103
|
+
:width="props.width"
|
|
104
|
+
persistent
|
|
105
|
+
>
|
|
106
|
+
<v-card>
|
|
107
|
+
<v-toolbar
|
|
108
|
+
:color="props.type"
|
|
109
|
+
:title="props.title"
|
|
110
|
+
density="compact"
|
|
111
|
+
/>
|
|
112
|
+
<v-card-text>
|
|
113
|
+
<div class="mb-2">{{ props.message }}</div>
|
|
114
|
+
<v-text-field
|
|
115
|
+
v-model="username"
|
|
116
|
+
:readonly="!!props.fixedUsername"
|
|
117
|
+
label="Username"
|
|
118
|
+
variant="underlined"
|
|
119
|
+
/>
|
|
120
|
+
<v-text-field
|
|
121
|
+
v-model="password"
|
|
122
|
+
label="Password"
|
|
123
|
+
type="password"
|
|
124
|
+
variant="underlined"
|
|
125
|
+
/>
|
|
126
|
+
</v-card-text>
|
|
127
|
+
<v-card-actions>
|
|
128
|
+
<v-spacer />
|
|
129
|
+
<v-btn variant="text" @click="handleCancel">
|
|
130
|
+
{{ props.cancelButtonText }}
|
|
131
|
+
</v-btn>
|
|
132
|
+
<v-btn
|
|
133
|
+
:color="props.type"
|
|
134
|
+
:disabled="isDisabled"
|
|
135
|
+
variant="text"
|
|
136
|
+
@click="handleConfirm"
|
|
137
|
+
>
|
|
138
|
+
{{ props.confirmButtonText }}
|
|
139
|
+
</v-btn>
|
|
140
|
+
</v-card-actions>
|
|
141
|
+
</v-card>
|
|
142
|
+
</v-dialog>
|
|
143
|
+
</v-row>
|
|
144
|
+
</template>
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
/**
|
|
3
|
-
* DocumentForm supports document-template rendering and synchronizes template-defined field behavior with runtime data.
|
|
4
|
-
* This doc block is consumed by vue-docgen for generated API documentation.
|
|
5
|
-
*/
|
|
6
|
-
import {ref, withDefaults,watch,computed} from 'vue'
|
|
7
|
-
import {graphqlOperation} from '#imports'
|
|
8
|
-
|
|
9
|
-
interface Props {
|
|
10
|
-
templateCode: string // Template identifier used to load document schema/config.
|
|
11
|
-
parentTemplates?: string|string[] // Parent template code(s) used for template inheritance/extension.
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Public props accepted by DocumentForm.
|
|
16
|
-
* Document each prop field with intent, defaults, and side effects for clear generated docs.
|
|
17
|
-
*/
|
|
18
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
19
|
-
parentTemplates: (): string[] => [],
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
const template = ref<any>()
|
|
23
|
-
const templateScript = ref<string>()
|
|
24
|
-
|
|
25
|
-
const parentTemplates = computed(()=>{
|
|
26
|
-
if (typeof props.parentTemplates === 'string') {
|
|
27
|
-
if (props.parentTemplates && props.parentTemplates!="") return props.parentTemplates.split("|")
|
|
28
|
-
else return []
|
|
29
|
-
} else {
|
|
30
|
-
return props.parentTemplates
|
|
31
|
-
}
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
const parentTemplatesNext = computed(()=>{
|
|
35
|
-
return [...parentTemplates.value,props.templateCode]
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
watch(()=>props.templateCode,()=>{
|
|
39
|
-
if (!parentTemplates.value.includes(props.templateCode) && props.templateCode) {
|
|
40
|
-
if (graphqlOperation["documentTemplateByTemplateCode"]) {
|
|
41
|
-
graphqlOperation["documentTemplateByTemplateCode"].call(["*"],{templateCode: props.templateCode}).then((result: any)=>{
|
|
42
|
-
template.value = result.editTemplate
|
|
43
|
-
templateScript.value = result.templateScript
|
|
44
|
-
})
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
},{immediate: true})
|
|
48
|
-
</script>
|
|
49
|
-
<template>
|
|
50
|
-
<form-pad :template="template" :template-script="templateScript" :parent-templates="parentTemplatesNext"></form-pad>
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
/**
|
|
3
|
+
* DocumentForm supports document-template rendering and synchronizes template-defined field behavior with runtime data.
|
|
4
|
+
* This doc block is consumed by vue-docgen for generated API documentation.
|
|
5
|
+
*/
|
|
6
|
+
import {ref, withDefaults,watch,computed} from 'vue'
|
|
7
|
+
import {graphqlOperation} from '#imports'
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
templateCode: string // Template identifier used to load document schema/config.
|
|
11
|
+
parentTemplates?: string|string[] // Parent template code(s) used for template inheritance/extension.
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Public props accepted by DocumentForm.
|
|
16
|
+
* Document each prop field with intent, defaults, and side effects for clear generated docs.
|
|
17
|
+
*/
|
|
18
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
19
|
+
parentTemplates: (): string[] => [],
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
const template = ref<any>()
|
|
23
|
+
const templateScript = ref<string>()
|
|
24
|
+
|
|
25
|
+
const parentTemplates = computed(()=>{
|
|
26
|
+
if (typeof props.parentTemplates === 'string') {
|
|
27
|
+
if (props.parentTemplates && props.parentTemplates!="") return props.parentTemplates.split("|")
|
|
28
|
+
else return []
|
|
29
|
+
} else {
|
|
30
|
+
return props.parentTemplates
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const parentTemplatesNext = computed(()=>{
|
|
35
|
+
return [...parentTemplates.value,props.templateCode]
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
watch(()=>props.templateCode,()=>{
|
|
39
|
+
if (!parentTemplates.value.includes(props.templateCode) && props.templateCode) {
|
|
40
|
+
if (graphqlOperation["documentTemplateByTemplateCode"]) {
|
|
41
|
+
graphqlOperation["documentTemplateByTemplateCode"].call(["*"],{templateCode: props.templateCode}).then((result: any)=>{
|
|
42
|
+
template.value = result.editTemplate
|
|
43
|
+
templateScript.value = result.templateScript
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},{immediate: true})
|
|
48
|
+
</script>
|
|
49
|
+
<template>
|
|
50
|
+
<form-pad :template="template" :template-script="templateScript" :parent-templates="parentTemplatesNext"></form-pad>
|
|
51
51
|
</template>
|