@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,90 +1,102 @@
1
- <script setup lang="ts">
2
- import { ref, watch, computed} from 'vue'
3
- import { VCheckbox } from 'vuetify/components/VCheckbox'
4
- import { join,without,filter,head,reject } from 'lodash-es'
5
- interface Items {
6
- label : string
7
- value : any
8
- }
9
- interface Props extends /* @vue-ignore */ InstanceType<typeof VCheckbox['$props']>{
10
- items : Items[]
11
- label? : string
12
- modelValue : []
13
- inline? : boolean
14
- rules?: typeof import('vuetify/components')['VCheckbox']['rules']
15
- }
16
- const props = withDefaults(defineProps<Props>(),{
17
- inline:false
18
- })
19
- const emit = defineEmits(['update:modelValue'])
20
- const values = ref([])
21
- const valuesOther = ref()
22
-
23
- const computedRules = computed(() => {
24
- if (props.rules){
25
- let rules = props.rules.map((rule : any) => rule(values.value.length ? values.value : null))
26
- rules = without(rules,true)
27
- return join(rules,',')
28
- }
29
- })
30
- const computedOther = computed(() => {
31
- const itemOther = filter(props.items,{value:'other'})
32
- return head(itemOther)
33
- })
34
-
35
- const computeItems = computed(() => {
36
- return reject(props.items , {value:'other'})
37
- })
38
-
39
- watch(values, () => {
40
- emit('update:modelValue', [...values.value, valuesOther.value].filter(Boolean))
41
- }, {deep: true});
42
-
43
- watch(valuesOther, () => {
44
- emit('update:modelValue', [...values.value, valuesOther.value].filter(Boolean))
45
- })
46
-
47
- watch(props.modelValue, () => {
48
- if (!props.modelValue) {
49
- values.value = []
50
- valuesOther.value = ''
51
- } else {
52
- // Separate regular values and the "other" value if applicable
53
- if (Array.isArray(props.modelValue)) {
54
- valuesOther.value = props.modelValue.find(item => !props.items.some(({ value }) => value === item)) || ''
55
- values.value = props.modelValue.filter(item => item !== valuesOther.value)
56
- }
57
- }
58
- }, { deep: true, immediate: true })
59
- </script>
60
-
61
- <template>
62
- <label class="text-body-1 opacity-60">{{props.label}}</label>
63
- <div :class="`d-flex ${inline ? 'flex-row':'flex-column'}`">
64
- <v-checkbox v-for="item in computeItems"
65
- :value="item.value"
66
- v-model="values"
67
- density="compact"
68
- hide-details
69
- :error = "!!computedRules"
70
- :="$attrs"
71
- :label="item.label">
72
- </v-checkbox>
73
- </div>
74
- <v-text-field hide-details
75
- :error = "!!computedRules"
76
- v-if="computedOther"
77
- v-model="valuesOther"
78
- :="$attrs"
79
- :label="computedOther.label">
80
-
81
- </v-text-field>
82
- <label class="text-error text-subtitle-2 ml-1">
83
- {{computedRules}}
84
- </label>
85
-
86
- </template>
87
-
1
+ <script setup lang="ts">
2
+ /**
3
+ * FormCheckboxGroup 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, computed} from 'vue'
7
+ import { VCheckbox } from 'vuetify/components/VCheckbox'
8
+ import { join,without,filter,head,reject } from 'lodash-es'
9
+ interface Items {
10
+ label : string
11
+ value : any
12
+ }
13
+ interface Props extends /* @vue-ignore */ InstanceType<typeof VCheckbox['$props']>{
14
+ items: Items[] // option collection used for selection rendering
15
+ label?: string // UI label displayed to end users
16
+ modelValue: [] // Bound value for v-model synchronization with the parent component.
17
+ inline?: boolean // Displays checkbox options inline instead of stacked.
18
+ rules?: typeof import('vuetify/components')['VCheckbox']['rules'] // validation rules applied before accepting input
19
+ }
20
+ /**
21
+ * Public props accepted by FormCheckboxGroup.
22
+ * Document each prop field with intent, defaults, and side effects for clear generated docs.
23
+ */
24
+ const props = withDefaults(defineProps<Props>(),{
25
+ inline:false
26
+ })
27
+ /**
28
+ * Custom events emitted by FormCheckboxGroup.
29
+ * Parents can listen to these events to react to user actions and internal state changes.
30
+ */
31
+ const emit = defineEmits(['update:modelValue'])
32
+ const values = ref([])
33
+ const valuesOther = ref()
34
+
35
+ const computedRules = computed(() => {
36
+ if (props.rules){
37
+ let rules = props.rules.map((rule : any) => rule(values.value.length ? values.value : null))
38
+ rules = without(rules,true)
39
+ return join(rules,',')
40
+ }
41
+ })
42
+ const computedOther = computed(() => {
43
+ const itemOther = filter(props.items,{value:'other'})
44
+ return head(itemOther)
45
+ })
46
+
47
+ const computeItems = computed(() => {
48
+ return reject(props.items , {value:'other'})
49
+ })
50
+
51
+ watch(values, () => {
52
+ emit('update:modelValue', [...values.value, valuesOther.value].filter(Boolean))
53
+ }, {deep: true});
54
+
55
+ watch(valuesOther, () => {
56
+ emit('update:modelValue', [...values.value, valuesOther.value].filter(Boolean))
57
+ })
58
+
59
+ watch(props.modelValue, () => {
60
+ if (!props.modelValue) {
61
+ values.value = []
62
+ valuesOther.value = ''
63
+ } else {
64
+ // Separate regular values and the "other" value if applicable
65
+ if (Array.isArray(props.modelValue)) {
66
+ valuesOther.value = props.modelValue.find(item => !props.items.some(({ value }) => value === item)) || ''
67
+ values.value = props.modelValue.filter(item => item !== valuesOther.value)
68
+ }
69
+ }
70
+ }, { deep: true, immediate: true })
71
+ </script>
72
+
73
+ <template>
74
+ <label class="text-body-1 opacity-60">{{props.label}}</label>
75
+ <div :class="`d-flex ${inline ? 'flex-row':'flex-column'}`">
76
+ <v-checkbox v-for="item in computeItems"
77
+ :value="item.value"
78
+ v-model="values"
79
+ density="compact"
80
+ hide-details
81
+ :error = "!!computedRules"
82
+ :="$attrs"
83
+ :label="item.label">
84
+ </v-checkbox>
85
+ </div>
86
+ <v-text-field hide-details
87
+ :error = "!!computedRules"
88
+ v-if="computedOther"
89
+ v-model="valuesOther"
90
+ :="$attrs"
91
+ :label="computedOther.label">
92
+
93
+ </v-text-field>
94
+ <label class="text-error text-subtitle-2 ml-1">
95
+ {{computedRules}}
96
+ </label>
97
+
98
+ </template>
99
+
88
100
  <style scoped>
89
101
 
90
102
  </style>
@@ -1,37 +1,45 @@
1
- <script setup lang="ts">
2
- import {Codemirror} from 'vue-codemirror'
3
- import {oneDark} from '@codemirror/theme-one-dark'
4
- import {javascript} from '@codemirror/lang-javascript'
5
- import {html} from '@codemirror/lang-html'
6
- import {vue as vueLang} from '@codemirror/lang-vue'
7
-
8
- interface Props {
9
- height?: string | number
10
- minHeight?: string | number
11
- lang?: 'html' | 'javascript' | 'vue'
12
- }
13
-
14
- const props = withDefaults(defineProps<Props>(), {
15
- height: '100%',
16
- minHeight: '20em',
17
- lang: 'vue',
18
- })
19
-
20
- const extensions = [oneDark]
21
- if (props.lang == 'vue') {
22
- extensions.push(vueLang({ base: html({ autoCloseTags: true, matchClosingTags: true, selfClosingTags: true }) }))
23
- }
24
- else {
25
- extensions.push(javascript({ typescript: true }))
26
- }
27
-
28
- const model = defineModel<string>()
29
- </script>
30
-
31
- <template>
32
- <codemirror
33
- v-model="model"
34
- :extensions="extensions"
35
- :style="{ height: height, minHeight: minHeight }"
36
- />
37
- </template>
1
+ <script setup lang="ts">
2
+ /**
3
+ * FormCodeEditor 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 {Codemirror} from 'vue-codemirror'
7
+ import {oneDark} from '@codemirror/theme-one-dark'
8
+ import {javascript} from '@codemirror/lang-javascript'
9
+ import {html} from '@codemirror/lang-html'
10
+ import {vue as vueLang} from '@codemirror/lang-vue'
11
+
12
+ interface Props {
13
+ height?: string | number // Fixed or minimum height applied to the component container.
14
+ minHeight?: string | number // Minimum editor/container height before scrolling is used.
15
+ lang?: 'html' | 'javascript' | 'vue' // Language code used when selecting localized option labels.
16
+ }
17
+
18
+ /**
19
+ * Public props accepted by FormCodeEditor.
20
+ * Document each prop field with intent, defaults, and side effects for clear generated docs.
21
+ */
22
+ const props = withDefaults(defineProps<Props>(), {
23
+ height: '100%',
24
+ minHeight: '20em',
25
+ lang: 'vue',
26
+ })
27
+
28
+ const extensions = [oneDark]
29
+ if (props.lang == 'vue') {
30
+ extensions.push(vueLang({ base: html({ autoCloseTags: true, matchClosingTags: true, selfClosingTags: true }) }))
31
+ }
32
+ else {
33
+ extensions.push(javascript({ typescript: true }))
34
+ }
35
+
36
+ const model = defineModel<string>()
37
+ </script>
38
+
39
+ <template>
40
+ <codemirror
41
+ v-model="model"
42
+ :extensions="extensions"
43
+ :style="{ height: height, minHeight: minHeight }"
44
+ />
45
+ </template>