@ramathibodi/nuxt-commons 0.1.73 → 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.
Files changed (111) hide show
  1. package/README.md +115 -96
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +1 -0
  4. package/dist/runtime/components/Alert.vue +58 -54
  5. package/dist/runtime/components/BarcodeReader.vue +130 -122
  6. package/dist/runtime/components/ExportCSV.vue +110 -102
  7. package/dist/runtime/components/FileBtn.vue +79 -67
  8. package/dist/runtime/components/ImportCSV.vue +151 -139
  9. package/dist/runtime/components/MrzReader.vue +168 -0
  10. package/dist/runtime/components/SplitterPanel.vue +67 -59
  11. package/dist/runtime/components/TabsGroup.vue +39 -31
  12. package/dist/runtime/components/TextBarcode.vue +66 -54
  13. package/dist/runtime/components/device/IdCardButton.vue +95 -83
  14. package/dist/runtime/components/device/IdCardWebSocket.vue +207 -195
  15. package/dist/runtime/components/device/Scanner.vue +350 -338
  16. package/dist/runtime/components/dialog/Confirm.vue +112 -100
  17. package/dist/runtime/components/dialog/Host.vue +88 -84
  18. package/dist/runtime/components/dialog/Index.vue +84 -72
  19. package/dist/runtime/components/dialog/Loading.vue +51 -39
  20. package/dist/runtime/components/dialog/default/Confirm.vue +112 -100
  21. package/dist/runtime/components/dialog/default/Loading.vue +60 -48
  22. package/dist/runtime/components/dialog/default/Notify.vue +82 -70
  23. package/dist/runtime/components/dialog/default/Printing.vue +46 -34
  24. package/dist/runtime/components/dialog/default/VerifyUser.vue +144 -132
  25. package/dist/runtime/components/document/Form.vue +50 -42
  26. package/dist/runtime/components/document/TemplateBuilder.vue +536 -524
  27. package/dist/runtime/components/form/ActionPad.vue +156 -144
  28. package/dist/runtime/components/form/Birthdate.vue +116 -104
  29. package/dist/runtime/components/form/CheckboxGroup.vue +99 -87
  30. package/dist/runtime/components/form/CodeEditor.vue +45 -37
  31. package/dist/runtime/components/form/Date.vue +270 -258
  32. package/dist/runtime/components/form/DateTime.vue +220 -208
  33. package/dist/runtime/components/form/Dialog.vue +178 -166
  34. package/dist/runtime/components/form/EditPad.vue +157 -145
  35. package/dist/runtime/components/form/File.vue +295 -283
  36. package/dist/runtime/components/form/Hidden.vue +44 -32
  37. package/dist/runtime/components/form/Iterator.vue +538 -526
  38. package/dist/runtime/components/form/Login.vue +143 -131
  39. package/dist/runtime/components/form/Pad.vue +399 -387
  40. package/dist/runtime/components/form/SignPad.vue +226 -218
  41. package/dist/runtime/components/form/System.vue +34 -26
  42. package/dist/runtime/components/form/Table.vue +391 -379
  43. package/dist/runtime/components/form/TableData.vue +236 -224
  44. package/dist/runtime/components/form/Time.vue +177 -165
  45. package/dist/runtime/components/form/images/Capture.vue +245 -237
  46. package/dist/runtime/components/form/images/Edit.vue +133 -121
  47. package/dist/runtime/components/form/images/Field.vue +331 -320
  48. package/dist/runtime/components/form/images/Pad.vue +54 -42
  49. package/dist/runtime/components/label/Date.vue +37 -29
  50. package/dist/runtime/components/label/DateAgo.vue +102 -94
  51. package/dist/runtime/components/label/DateCount.vue +152 -144
  52. package/dist/runtime/components/label/Field.vue +111 -103
  53. package/dist/runtime/components/label/FormatMoney.vue +37 -29
  54. package/dist/runtime/components/label/Mask.vue +46 -38
  55. package/dist/runtime/components/label/Object.vue +21 -13
  56. package/dist/runtime/components/master/Autocomplete.vue +89 -81
  57. package/dist/runtime/components/master/Combobox.vue +88 -80
  58. package/dist/runtime/components/master/RadioGroup.vue +90 -78
  59. package/dist/runtime/components/master/Select.vue +70 -62
  60. package/dist/runtime/components/master/label.vue +55 -47
  61. package/dist/runtime/components/model/Autocomplete.vue +91 -79
  62. package/dist/runtime/components/model/Combobox.vue +90 -78
  63. package/dist/runtime/components/model/Pad.vue +114 -102
  64. package/dist/runtime/components/model/Select.vue +78 -72
  65. package/dist/runtime/components/model/Table.vue +370 -358
  66. package/dist/runtime/components/model/iterator.vue +497 -489
  67. package/dist/runtime/components/model/label.vue +58 -50
  68. package/dist/runtime/components/pdf/Print.vue +75 -63
  69. package/dist/runtime/components/pdf/View.vue +146 -134
  70. package/dist/runtime/composables/alert.d.ts +4 -0
  71. package/dist/runtime/composables/api.d.ts +4 -0
  72. package/dist/runtime/composables/dialog.d.ts +1 -1
  73. package/dist/runtime/composables/document/templateFormHidden.d.ts +4 -0
  74. package/dist/runtime/composables/graphql.d.ts +1 -1
  75. package/dist/runtime/composables/graphqlModel.d.ts +9 -9
  76. package/dist/runtime/composables/graphqlModelItem.d.ts +7 -7
  77. package/dist/runtime/composables/graphqlModelOperation.d.ts +6 -6
  78. package/dist/runtime/composables/localStorageModel.d.ts +4 -0
  79. package/dist/runtime/composables/lookupList.d.ts +4 -0
  80. package/dist/runtime/composables/menu.d.ts +4 -0
  81. package/dist/runtime/composables/useMrzReader.d.ts +48 -0
  82. package/dist/runtime/composables/useMrzReader.js +423 -0
  83. package/dist/runtime/composables/useTesseract.d.ts +16 -0
  84. package/dist/runtime/composables/useTesseract.js +45 -0
  85. package/dist/runtime/composables/userPermission.d.ts +1 -1
  86. package/dist/runtime/labs/Calendar.vue +99 -99
  87. package/dist/runtime/labs/form/EditMobile.vue +152 -152
  88. package/dist/runtime/labs/form/TextFieldMask.vue +43 -43
  89. package/dist/runtime/plugins/clientConfig.d.ts +1 -1
  90. package/dist/runtime/plugins/default.d.ts +1 -1
  91. package/dist/runtime/plugins/dialogManager.d.ts +1 -1
  92. package/dist/runtime/plugins/permission.d.ts +1 -1
  93. package/dist/runtime/types/alert.d.ts +11 -11
  94. package/dist/runtime/types/clientConfig.d.ts +13 -13
  95. package/dist/runtime/types/dialogManager.d.ts +35 -35
  96. package/dist/runtime/types/formDialog.d.ts +5 -5
  97. package/dist/runtime/types/graphqlOperation.d.ts +23 -23
  98. package/dist/runtime/types/menu.d.ts +31 -31
  99. package/dist/runtime/types/modules.d.ts +7 -7
  100. package/dist/runtime/types/permission.d.ts +13 -13
  101. package/dist/runtime/utils/asset.d.ts +2 -0
  102. package/dist/runtime/utils/asset.js +49 -0
  103. package/package.json +131 -122
  104. package/scripts/enrich-vue-docs-from-ai.mjs +197 -0
  105. package/scripts/generate-ai-summary.mjs +321 -0
  106. package/scripts/generate-composables-md.mjs +129 -0
  107. package/scripts/postInstall.cjs +70 -70
  108. package/templates/.codegen/codegen.ts +32 -32
  109. package/templates/.codegen/plugin-schema-object.js +161 -161
  110. package/templates/public/tesseract/mrz.traineddata.gz +0 -0
  111. package/templates/public/tesseract/ocrb.traineddata.gz +0 -0
@@ -1,132 +1,144 @@
1
- <script lang="ts" setup>
2
- import {computed, ref, type Ref, watch} from 'vue'
3
- import {useDialog} from "../../../composables/dialog"
4
- import {useGraphQlOperation} from "../../../composables/graphqlOperation";
5
- import {type AuthenticationState, useState} from '#imports'
6
-
7
- interface DialogProps {
8
- title?: string
9
- modelValue: boolean
10
- message?: string
11
- confirmButtonText?: string
12
- cancelButtonText?: string
13
- type?: 'primary' | 'success' | 'warning' | 'info' | 'error'
14
- fixedUsername?: boolean | string
15
- width?: string
16
- }
17
-
18
- const props = withDefaults(defineProps<DialogProps>(), {
19
- title: 'Verify User',
20
- message: 'Please enter your credentials to continue.',
21
- confirmButtonText: 'Verify',
22
- cancelButtonText: 'Cancel',
23
- type: 'primary',
24
- fixedUsername: true,
25
- width: '400',
26
- })
27
-
28
- const emit = defineEmits<{
29
- (e: 'update:modelValue', value: boolean): void
30
- (e: 'resolve', value: string): void
31
- (e: 'reject', value: any): void
32
- }>()
33
-
34
- const authenState = useState<AuthenticationState>("authentication")
35
-
36
- const dialogVisible: Ref<boolean> = ref(props.modelValue)
37
-
38
- watch(() => props.modelValue, (val) => {
39
- dialogVisible.value = val
40
- })
41
-
42
- watch(dialogVisible, (val) => {
43
- if (!val) emit('update:modelValue', false)
44
- })
45
-
46
- const username = ref<string>('')
47
- const password = ref<string>('')
48
-
49
- watch(()=>props.fixedUsername, (fixedUsername) => {
50
- if (fixedUsername === true) {
51
- let userProfile = authenState.value?.userProfile as {username: string}
52
- username.value = userProfile?.username ?? ""
53
- } else {
54
- username.value = (fixedUsername) ? fixedUsername as string : ""
55
- }
56
- },{immediate: true})
57
-
58
- const isDisabled = computed(() => {
59
- return !username.value || !password.value
60
- })
61
-
62
- const verifyUser = async (username: string, password: string): Promise<boolean> => {
63
- try {
64
- let result: any = await useGraphQlOperation('Mutation',"verifyUser",["success"], {username: username, password: password})
65
- return result.success
66
- } catch (_error) {
67
- return false
68
- }
69
- }
70
-
71
- const handleConfirm = async () => {
72
- const verified = await verifyUser(username.value, password.value)
73
- if (verified) {
74
- dialogVisible.value = false
75
- emit('resolve', username.value)
76
- } else {
77
- useDialog().notify({message: "Invalid username or password",type: 'warning',title:"Error"})
78
- }
79
- }
80
-
81
- const handleCancel = () => {
82
- dialogVisible.value = false
83
- emit('reject', 'User cancelled')
84
- }
85
- </script>
86
-
87
- <template>
88
- <v-row justify="center">
89
- <v-dialog
90
- v-model="dialogVisible"
91
- :width="props.width"
92
- persistent
93
- >
94
- <v-card>
95
- <v-toolbar
96
- :color="props.type"
97
- :title="props.title"
98
- density="compact"
99
- />
100
- <v-card-text>
101
- <div class="mb-2">{{ props.message }}</div>
102
- <v-text-field
103
- v-model="username"
104
- :readonly="!!props.fixedUsername"
105
- label="Username"
106
- variant="underlined"
107
- />
108
- <v-text-field
109
- v-model="password"
110
- label="Password"
111
- type="password"
112
- variant="underlined"
113
- />
114
- </v-card-text>
115
- <v-card-actions>
116
- <v-spacer />
117
- <v-btn variant="text" @click="handleCancel">
118
- {{ props.cancelButtonText }}
119
- </v-btn>
120
- <v-btn
121
- :color="props.type"
122
- :disabled="isDisabled"
123
- variant="text"
124
- @click="handleConfirm"
125
- >
126
- {{ props.confirmButtonText }}
127
- </v-btn>
128
- </v-card-actions>
129
- </v-card>
130
- </v-dialog>
131
- </v-row>
132
- </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,43 +1,51 @@
1
- <script lang="ts" setup>
2
- import {ref, withDefaults,watch,computed} from 'vue'
3
- import {graphqlOperation} from '#imports'
4
-
5
- interface Props {
6
- templateCode: string
7
- parentTemplates?: string|string[]
8
- }
9
-
10
- const props = withDefaults(defineProps<Props>(), {
11
- parentTemplates: (): string[] => [],
12
- })
13
-
14
- const template = ref<any>()
15
- const templateScript = ref<string>()
16
-
17
- const parentTemplates = computed(()=>{
18
- if (typeof props.parentTemplates === 'string') {
19
- if (props.parentTemplates && props.parentTemplates!="") return props.parentTemplates.split("|")
20
- else return []
21
- } else {
22
- return props.parentTemplates
23
- }
24
- })
25
-
26
- const parentTemplatesNext = computed(()=>{
27
- return [...parentTemplates.value,props.templateCode]
28
- })
29
-
30
- watch(()=>props.templateCode,()=>{
31
- if (!parentTemplates.value.includes(props.templateCode) && props.templateCode) {
32
- if (graphqlOperation["documentTemplateByTemplateCode"]) {
33
- graphqlOperation["documentTemplateByTemplateCode"].call(["*"],{templateCode: props.templateCode}).then((result: any)=>{
34
- template.value = result.editTemplate
35
- templateScript.value = result.templateScript
36
- })
37
- }
38
- }
39
- },{immediate: true})
40
- </script>
41
- <template>
42
- <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>
43
51
  </template>