@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,131 +1,143 @@
1
- <script lang="ts" setup>
2
- import { ref, watch, withDefaults } from 'vue'
3
-
4
- interface Props {
5
- title?: string
6
- btnSubmit?: string
7
- imgLogo?: string
8
- errorMessages?: string
9
- loading?: boolean
10
- hint?: string
11
- }
12
-
13
- const props = withDefaults(defineProps<Props>(), {
14
- title: 'Login Ramathibodi',
15
- btnSubmit: 'เข้าสู่ระบบ',
16
- imgLogo: '',
17
- errorMessages: '',
18
- loading: false,
19
- hint: '',
20
- })
21
-
22
- interface LoginData {
23
- username: string
24
- password: string
25
- }
26
-
27
- const formValid = ref<boolean>(false)
28
- const loginData = ref<LoginData>({ username: '', password: '' })
29
- const emit = defineEmits(['update:modelValue'])
30
-
31
- const errorText = ref<string>('')
32
-
33
- const clearErrorMessages = () => {
34
- errorText.value = ''
35
- }
36
-
37
- watch(() => props.errorMessages, (newVal) => {
38
- if (errorText.value !== newVal) {
39
- errorText.value = newVal
40
- }
41
- })
42
-
43
- const onSubmit = () => {
44
- if (!formValid.value) return
45
- emit('update:modelValue', { ...loginData.value })
46
- }
47
- </script>
48
-
49
- <template>
50
- <v-row
51
- justify="center"
52
- align="center"
53
- >
54
- <v-col
55
- cols="12"
56
- xs="12"
57
- sm="8"
58
- md="6"
59
- lg="6"
60
- xl="4"
61
- align-self="center"
62
- >
63
- <v-sheet
64
- class="pa-3"
65
- rounded
66
- >
67
- <v-card class="mx-auto px-6 py-6">
68
- <v-img
69
- :src="props.imgLogo"
70
- cover
71
- />
72
- <v-card-title class="text-primary text-center">
73
- {{ props.title }}
74
- </v-card-title>
75
- <v-form
76
- v-model="formValid"
77
- @submit.prevent="onSubmit"
78
- >
79
- <form-pad
80
- ref="formPadTemplate"
81
- v-model="loginData"
82
- >
83
- <template #default="{ data, rules }">
84
- <v-text-field
85
- ref="usernameField"
86
- v-model="data.username"
87
- color="primary"
88
- label="ชื่อผู้ใช้งาน (Username)"
89
- clearable
90
- :rules="[rules.require('กรุณาระบุ')]"
91
- autofocus
92
- @update:model-value="clearErrorMessages()"
93
- />
94
- <v-text-field
95
- ref="passwordField"
96
- v-model="data.password"
97
- color="primary"
98
- label="รหัสผ่าน (Password)"
99
- type="password"
100
- clearable
101
- :rules="[rules.require('กรุณาระบุ')]"
102
- autofocus
103
- @update:model-value="clearErrorMessages()"
104
- />
105
- </template>
106
- </form-pad>
107
- <div class="text-body-2 text-error">
108
- {{ errorText }}
109
- </div>
110
- <div class="my-3">
111
- <slot name="hint">
112
- {{ props.hint }}
113
- </slot>
114
- </div>
115
- <v-btn
116
- :disabled="!formValid"
117
- :loading="props.loading"
118
- block
119
- color="primary"
120
- size="large"
121
- type="submit"
122
- variant="elevated"
123
- >
124
- {{ props.btnSubmit }}
125
- </v-btn>
126
- </v-form>
127
- </v-card>
128
- </v-sheet>
129
- </v-col>
130
- </v-row>
131
- </template>
1
+ <script lang="ts" setup>
2
+ /**
3
+ * FormLogin is a schema-driven form field component that binds model data, renders field UI, and emits normalized updates.
4
+ * This doc block is consumed by vue-docgen for generated API documentation.
5
+ */
6
+ import { ref, watch, withDefaults } from 'vue'
7
+
8
+ interface Props {
9
+ title?: string // Title text displayed in the component header or dialog.
10
+ btnSubmit?: string // Label text displayed on the login submit button.
11
+ imgLogo?: string // Logo image URL shown above the login form.
12
+ errorMessages?: string // Validation or authentication error message displayed to the user.
13
+ loading?: boolean // Displays loading state and disables actions while pending.
14
+ hint?: string // Helper text displayed under input fields.
15
+ }
16
+
17
+ /**
18
+ * Public props accepted by FormLogin.
19
+ * Document each prop field with intent, defaults, and side effects for clear generated docs.
20
+ */
21
+ const props = withDefaults(defineProps<Props>(), {
22
+ title: 'Login Ramathibodi',
23
+ btnSubmit: 'เข้าสู่ระบบ',
24
+ imgLogo: '',
25
+ errorMessages: '',
26
+ loading: false,
27
+ hint: '',
28
+ })
29
+
30
+ interface LoginData {
31
+ username: string
32
+ password: string
33
+ }
34
+
35
+ const formValid = ref<boolean>(false)
36
+ const loginData = ref<LoginData>({ username: '', password: '' })
37
+ /**
38
+ * Custom events emitted by FormLogin.
39
+ * Parents can listen to these events to react to user actions and internal state changes.
40
+ */
41
+ const emit = defineEmits(['update:modelValue'])
42
+
43
+ const errorText = ref<string>('')
44
+
45
+ const clearErrorMessages = () => {
46
+ errorText.value = ''
47
+ }
48
+
49
+ watch(() => props.errorMessages, (newVal) => {
50
+ if (errorText.value !== newVal) {
51
+ errorText.value = newVal
52
+ }
53
+ })
54
+
55
+ const onSubmit = () => {
56
+ if (!formValid.value) return
57
+ emit('update:modelValue', { ...loginData.value })
58
+ }
59
+ </script>
60
+
61
+ <template>
62
+ <v-row
63
+ justify="center"
64
+ align="center"
65
+ >
66
+ <v-col
67
+ cols="12"
68
+ xs="12"
69
+ sm="8"
70
+ md="6"
71
+ lg="6"
72
+ xl="4"
73
+ align-self="center"
74
+ >
75
+ <v-sheet
76
+ class="pa-3"
77
+ rounded
78
+ >
79
+ <v-card class="mx-auto px-6 py-6">
80
+ <v-img
81
+ :src="props.imgLogo"
82
+ cover
83
+ />
84
+ <v-card-title class="text-primary text-center">
85
+ {{ props.title }}
86
+ </v-card-title>
87
+ <v-form
88
+ v-model="formValid"
89
+ @submit.prevent="onSubmit"
90
+ >
91
+ <form-pad
92
+ ref="formPadTemplate"
93
+ v-model="loginData"
94
+ >
95
+ <template #default="{ data, rules }">
96
+ <v-text-field
97
+ ref="usernameField"
98
+ v-model="data.username"
99
+ color="primary"
100
+ label="ชื่อผู้ใช้งาน (Username)"
101
+ clearable
102
+ :rules="[rules.require('กรุณาระบุ')]"
103
+ autofocus
104
+ @update:model-value="clearErrorMessages()"
105
+ />
106
+ <v-text-field
107
+ ref="passwordField"
108
+ v-model="data.password"
109
+ color="primary"
110
+ label="รหัสผ่าน (Password)"
111
+ type="password"
112
+ clearable
113
+ :rules="[rules.require('กรุณาระบุ')]"
114
+ autofocus
115
+ @update:model-value="clearErrorMessages()"
116
+ />
117
+ </template>
118
+ </form-pad>
119
+ <div class="text-body-2 text-error">
120
+ {{ errorText }}
121
+ </div>
122
+ <div class="my-3">
123
+ <slot name="hint">
124
+ {{ props.hint }}
125
+ </slot>
126
+ </div>
127
+ <v-btn
128
+ :disabled="!formValid"
129
+ :loading="props.loading"
130
+ block
131
+ color="primary"
132
+ size="large"
133
+ type="submit"
134
+ variant="elevated"
135
+ >
136
+ {{ props.btnSubmit }}
137
+ </v-btn>
138
+ </v-form>
139
+ </v-card>
140
+ </v-sheet>
141
+ </v-col>
142
+ </v-row>
143
+ </template>