@simitgroup/simpleapp-generator 1.3.0-alpha → 1.3.2-alpha

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 (213) hide show
  1. package/dist/framework.d.ts.map +1 -1
  2. package/dist/framework.js +4 -1
  3. package/dist/framework.js.map +1 -1
  4. package/dist/generate.js +12 -3
  5. package/dist/generate.js.map +1 -1
  6. package/package.json +1 -1
  7. package/src/framework.ts +6 -2
  8. package/src/generate.ts +11 -3
  9. package/templates/basic/nest/apischema.ts.eta +2 -3
  10. package/templates/basic/nest/controller.ts.eta +3 -4
  11. package/templates/basic/nest/default.ts.eta +6 -0
  12. package/templates/basic/nest/jsonschema.ts.eta +3 -4
  13. package/templates/basic/nest/model.ts.eta +3 -5
  14. package/templates/basic/nest/processor.ts.eta +3 -4
  15. package/templates/basic/nest/service.ts.eta +8 -1
  16. package/templates/basic/nest/type.ts.eta +3 -4
  17. package/templates/basic/nuxt/default.ts.eta +6 -0
  18. package/templates/basic/nuxt/pages.form.vue.eta +2 -1
  19. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +3 -4
  20. package/templates/nest/.env._eta +2 -5
  21. package/templates/nest/.gitignore.eta +5 -0
  22. package/templates/nest/src/simpleapp/.gitignore.eta +5 -0
  23. package/templates/nest/src/simpleapp/apischemas/index.ts._eta +6 -1
  24. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +7 -0
  25. package/templates/nest/src/simpleapp/generate/apischemas/simpleapp.apischema.ts.eta +1 -1
  26. package/templates/nest/src/simpleapp/generate/workflow/formschema/index.ts.eta +6 -0
  27. package/templates/nest/src/simpleapp/generate/workflow/workflow.apischema.ts.eta +6 -0
  28. package/templates/nest/src/simpleapp/generate/workflow/workflow.config.ts.eta +6 -0
  29. package/templates/nest/src/simpleapp/generate/workflow/workflow.controller.ts.eta +6 -0
  30. package/templates/nest/src/simpleapp/generate/workflow/workflow.delegate.ts.eta +6 -0
  31. package/templates/nest/src/simpleapp/generate/workflow/workflow.service.ts.eta +2 -4
  32. package/templates/nest/src/simpleapp/generate/workflow/workflow.type.ts.eta +4 -5
  33. package/templates/nest/src/simpleapp/generate/workflow/workflow.userservice.ts.eta +6 -0
  34. package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +1 -1
  35. package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +1 -1
  36. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +1 -1
  37. package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +1 -1
  38. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +1 -1
  39. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +1 -1
  40. package/templates/nest/src/simpleapp/services/docno.service.ts.eta +1 -1
  41. package/templates/nest/src/simpleapp/services/org.service.ts.eta +1 -1
  42. package/templates/nest/src/simpleapp/services/perm.service.ts.eta +1 -1
  43. package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +1 -1
  44. package/templates/nest/src/simpleapp/services/user.service.ts.etax +1 -1
  45. package/templates/nest/src/simpleapp/types/index.ts._eta +6 -1
  46. package/templates/nest/src/simpleapp/workflows/listeners/simpleapp.listener.ts._eta +4 -5
  47. package/templates/nest/test/app.e2e-spec.ts.eta +6 -0
  48. package/templates/nest/test/setting.ts.eta +6 -0
  49. package/templates/nuxt/.env._eta +2 -0
  50. package/templates/nuxt/.gitignore.eta +5 -0
  51. package/templates/nuxt/{app.vue.eta → app.vue._eta} +14 -14
  52. package/templates/nuxt/assets/css/calendar.css._eta +6 -1
  53. package/templates/nuxt/assets/css/listview.css._eta +17 -0
  54. package/templates/nuxt/assets/css/style.css._eta +6 -4
  55. package/templates/nuxt/assets/css/tailwind.css._eta +6 -0
  56. package/templates/nuxt/assets/primevue/passthrough.ts._eta +13 -8
  57. package/templates/nuxt/components/button/ButtonDanger.vue._eta +16 -4
  58. package/templates/nuxt/components/button/ButtonDefault.vue._eta +17 -4
  59. package/templates/nuxt/components/button/ButtonMultiple.vue._eta +8 -2
  60. package/templates/nuxt/components/button/ButtonPrimary.vue._eta +17 -5
  61. package/templates/nuxt/components/button/ButtonText.vue._eta +21 -0
  62. package/templates/nuxt/components/button/ButtonWarning.vue._eta +17 -5
  63. package/templates/nuxt/components/calendar/CalendarByResource.vue.eta +7 -3
  64. package/templates/nuxt/components/calendar/CalendarSmall.vue.eta +6 -0
  65. package/templates/nuxt/components/debug/DebugDocumentData.vue.eta +3 -3
  66. package/templates/nuxt/components/event/EventDecision.vue._eta +3 -3
  67. package/templates/nuxt/components/event/EventDocumentViewer.vue._eta +3 -3
  68. package/templates/nuxt/components/event/EventNotification.vue._eta +3 -3
  69. package/templates/nuxt/components/form/FormBranch.vue.eta +4 -3
  70. package/templates/nuxt/components/header/HeaderBar.vue._eta +7 -1
  71. package/templates/nuxt/components/header/HeaderBreadcrumb.vue.eta +6 -0
  72. package/templates/nuxt/components/header/HeaderSelectBranch.vue.eta +6 -0
  73. package/templates/nuxt/components/header/button/HeaderButtonHome.vue.eta +6 -1
  74. package/templates/nuxt/components/header/button/HeaderButtonLogout.vue.eta +9 -1
  75. package/templates/nuxt/components/header/button/HeaderButtonMenuPicker.vue._eta +7 -0
  76. package/templates/nuxt/components/header/button/HeaderButtonProfile.vue.eta +6 -0
  77. package/templates/nuxt/components/header/button/task/HeaderButtonTaskItem.vue.eta +7 -0
  78. package/templates/nuxt/components/header/button/task/HeaderButtonTaskList.vue.eta +6 -0
  79. package/templates/nuxt/components/list/ListDocument.vue.eta +6 -0
  80. package/templates/nuxt/components/list/ListDocumentTable.vue.eta +6 -0
  81. package/templates/nuxt/components/list/ListView.vue.eta +60 -47
  82. package/templates/nuxt/components/mobile/MobileToolbar.vue.eta +9 -3
  83. package/templates/nuxt/components/overlay/OverlayPanelWithToolBar.vue.eta +44 -0
  84. package/templates/nuxt/components/overlay/OverlaySideBarCrud.vue.eta +10 -1
  85. package/templates/nuxt/components/overlay/OverlayViewer.vue.eta +7 -1
  86. package/templates/nuxt/components/page/PageDocList.vue.eta +23 -14
  87. package/templates/nuxt/components/renderer/index.ts._eta +3 -3
  88. package/templates/nuxt/components/session/SessionBlock.vue.eta +6 -0
  89. package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +7 -1
  90. package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +6 -0
  91. package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +6 -0
  92. package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +7 -2
  93. package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue.eta +21 -17
  94. package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +6 -0
  95. package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +6 -1
  96. package/templates/nuxt/components/simpleApp/SimpleAppJsonSchemaForm.vue.eta +6 -0
  97. package/templates/nuxt/components/table/TableDocuments.vue.eta +6 -0
  98. package/templates/nuxt/components/text/TextDanger.vue._eta +8 -0
  99. package/templates/nuxt/components/text/TextSubtitle.vue._eta +8 -0
  100. package/templates/nuxt/components/text/TextTitle.vue._eta +8 -0
  101. package/templates/nuxt/components/user/UserButtonCreateTenant.vue.eta +6 -0
  102. package/templates/nuxt/components/user/UserButtonPermissionInfo.vue.eta +6 -0
  103. package/templates/nuxt/components/user/UserInvitation.vue.eta +22 -16
  104. package/templates/nuxt/components/user/UserProfileListItem.vue.eta +6 -1
  105. package/templates/nuxt/components/user/UserTenantPicker.vue.eta +6 -1
  106. package/templates/nuxt/components/workflow/forms/dynamicfield.vue._eta +7 -0
  107. package/templates/nuxt/components/workflow/forms/index.ts._eta +7 -0
  108. package/templates/nuxt/components/workflow/forms/simpleapprove.vue._eta +6 -0
  109. package/templates/nuxt/composables/date.generate.ts.eta +6 -3
  110. package/templates/nuxt/composables/docformat.generate.ts.eta +6 -0
  111. package/templates/nuxt/composables/getDocument.generate.ts.eta +6 -0
  112. package/templates/nuxt/composables/getTenant.generate.ts.eta +6 -0
  113. package/templates/nuxt/composables/getUserStore.generate.ts.eta +6 -0
  114. package/templates/nuxt/composables/goTo.generate.ts.eta +6 -0
  115. package/templates/nuxt/composables/logout.generate.ts.eta +6 -0
  116. package/templates/nuxt/composables/notifications.generate.ts.eta +6 -0
  117. package/templates/nuxt/composables/refreshDocumentList.generate.ts.eta +6 -0
  118. package/templates/nuxt/composables/roles.generate.ts.eta +6 -0
  119. package/templates/nuxt/composables/screensize.generate.ts.eta +6 -0
  120. package/templates/nuxt/composables/stringHelper.generate.ts.eta +6 -0
  121. package/templates/nuxt/composables/themes.generate.ts.eta +6 -0
  122. package/templates/nuxt/composables/workflow.generate.ts.eta +6 -0
  123. package/templates/nuxt/error.vue._eta +6 -1
  124. package/templates/nuxt/i18n.config.ts.eta +6 -0
  125. package/templates/nuxt/lang/cn.ts._eta +6 -0
  126. package/templates/nuxt/lang/en.ts.eta +1 -0
  127. package/templates/nuxt/layouts/default.vue._eta +6 -0
  128. package/templates/nuxt/layouts/loginlayout.vue._eta +9 -1
  129. package/templates/nuxt/layouts/mobile.vue._eta +6 -0
  130. package/templates/nuxt/middleware/30.acl.global.ts.eta +1 -1
  131. package/templates/nuxt/nuxt.config.ts._eta +4 -4
  132. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/[id].vue.eta +4 -5
  133. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +7 -0
  134. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype].vue.eta +6 -1
  135. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +6 -1
  136. package/templates/nuxt/pages/[xorg]/docnoformat.vue.eta +4 -6
  137. package/templates/nuxt/pages/[xorg]/index.vue._eta +4 -5
  138. package/templates/nuxt/pages/[xorg]/organization/viewer.vue.eta +8 -0
  139. package/templates/nuxt/pages/[xorg]/organization.vue.eta +6 -1
  140. package/templates/nuxt/pages/[xorg]/profile.vue.eta +6 -0
  141. package/templates/nuxt/pages/[xorg]/reports/index.vue._eta +18 -0
  142. package/templates/nuxt/pages/[xorg]/user/[id].vue.eta +4 -5
  143. package/templates/nuxt/pages/[xorg]/user/form.vue.eta +6 -1
  144. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +4 -5
  145. package/templates/nuxt/pages/[xorg]/user/new.vue.eta +4 -5
  146. package/templates/nuxt/pages/[xorg]/user/viewer.vue.eta +4 -5
  147. package/templates/nuxt/pages/[xorg]/user.vue.eta +4 -4
  148. package/templates/nuxt/pages/index.vue._eta +4 -4
  149. package/templates/nuxt/pages/login.vue._eta +4 -4
  150. package/templates/nuxt/pages/profile.vue.eta +8 -1
  151. package/templates/nuxt/pages/relogin.vue.eta +6 -0
  152. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +1 -1
  153. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +1 -1
  154. package/templates/nuxt/server/api/[xorg]/[...].ts.eta +1 -1
  155. package/templates/nuxt/server/api/auth/[...].ts.eta +1 -1
  156. package/templates/nuxt/server/api/auth/logout.ts.eta +1 -1
  157. package/templates/nuxt/server/api/profile/[...].ts.eta +1 -2
  158. package/templates/nuxt/server/api/profile/index.ts.eta +1 -1
  159. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +2 -4
  160. package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +1 -1
  161. package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +1 -1
  162. package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +1 -1
  163. package/templates/nuxt/simpleapp/generate/defaults/index.ts.eta +7 -0
  164. package/templates/nuxt/simpleapp/generate/types/index.ts.eta +7 -0
  165. package/templates/nuxt/simpleapp/workflows/forms/index.ts._eta +6 -0
  166. package/templates/nuxt/simpleapp/workflows/forms/simpleapprove.jsonschema.ts._eta +6 -0
  167. package/templates/nuxt/tailwind.config.ts._eta +6 -0
  168. package/templates/nuxt/types/calendar.ts.eta +2 -3
  169. package/templates/nuxt/types/documentlist.ts.eta +3 -3
  170. package/templates/nuxt/types/events.ts.eta +2 -2
  171. package/templates/nuxt/types/index.ts._eta +4 -5
  172. package/templates/nuxt/types/listview.ts.eta +2 -2
  173. package/templates/nuxt/types/notifications.ts.eta +2 -2
  174. package/templates/nuxt/types/others.ts.eta +2 -2
  175. package/templates/nuxt/types/schema.ts.eta +2 -2
  176. package/templates/nuxt/types/simpleappinput.ts.eta +2 -2
  177. package/templates/nuxt/types/user.ts.eta +2 -2
  178. package/templates/nuxt/types/workflow.ts.eta +2 -2
  179. package/templates/project/lang/default._json +1 -1
  180. package/templates/project/sharelibs/hello.ts._eta +6 -0
  181. package/templates/project/sharelibs/index.ts.eta +5 -0
  182. package/tsconfig.tsbuildinfo +1 -1
  183. package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocomplete.vue +0 -135
  184. package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocompletemulti.vue +0 -73
  185. package/templates/nuxt/components/simpleApp/pending/SimpleAppCalendar.vue +0 -55
  186. package/templates/nuxt/components/simpleApp/pending/SimpleAppCheckbox.vue +0 -29
  187. package/templates/nuxt/components/simpleApp/pending/SimpleAppChip.vue +0 -28
  188. package/templates/nuxt/components/simpleApp/pending/SimpleAppColor.vue +0 -41
  189. package/templates/nuxt/components/simpleApp/pending/SimpleAppDocumentNo.vue +0 -90
  190. package/templates/nuxt/components/simpleApp/pending/SimpleAppDynamicInput.vue +0 -29
  191. package/templates/nuxt/components/simpleApp/pending/SimpleAppEditor.vue +0 -31
  192. package/templates/nuxt/components/simpleApp/pending/SimpleAppInputTable.vue +0 -83
  193. package/templates/nuxt/components/simpleApp/pending/SimpleAppList.vue +0 -38
  194. package/templates/nuxt/components/simpleApp/pending/SimpleAppListmulti.vue +0 -41
  195. package/templates/nuxt/components/simpleApp/pending/SimpleAppNumber.vue +0 -43
  196. package/templates/nuxt/components/simpleApp/pending/SimpleAppPassword.vue +0 -41
  197. package/templates/nuxt/components/simpleApp/pending/SimpleAppRadio.vue +0 -42
  198. package/templates/nuxt/components/simpleApp/pending/SimpleAppRating.vue +0 -41
  199. package/templates/nuxt/components/simpleApp/pending/SimpleAppSelect.vue +0 -48
  200. package/templates/nuxt/components/simpleApp/pending/SimpleAppSelectmulti.vue +0 -39
  201. package/templates/nuxt/components/simpleApp/pending/SimpleAppSlider.vue +0 -42
  202. package/templates/nuxt/components/simpleApp/pending/SimpleAppSwitch.vue +0 -30
  203. package/templates/nuxt/components/simpleApp/pending/SimpleAppText.vue +0 -59
  204. package/templates/nuxt/components/simpleApp/pending/SimpleAppTextarea.vue +0 -41
  205. package/templates/nuxt/components/simpleApp/pending/SimpleAppValue.vue +0 -86
  206. package/templates/nuxt/components/simpleApp/pending/helper.ts-backup +0 -90
  207. package/templates/nuxt/components/simpleApp/pending/type.ts-backup +0 -32
  208. package/templates/nuxt/components/suspended/CrudNestedDoc.vue.eta +0 -172
  209. package/templates/nuxt/components/suspended/CrudSimple.vue.eta +0 -181
  210. package/templates/nuxt/components/suspended/Menus.vue.eta +0 -58
  211. package/templates/nuxt/components/suspended/Spinner.vue.eta +0 -9
  212. package/templates/nuxt/lang/df.ts.etaxxxx +0 -16
  213. package/templates/project/sharelibs/hello.ts.eta +0 -1
@@ -1,135 +0,0 @@
1
- <template>
2
- <FieldContainer :hidelabel="hidelabel" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
3
-
4
- <div v-if="componentErr!=''" class="input-error">{{componentErr}}</div>
5
- <span v-else-if="isReadonly" readonly class="readonly-input">{{ selecteditem[optionLabel] }}</span>
6
- <AutoComplete v-else
7
- class="simpleapp-inputfield simpleapp-autocomplete flex flex-row "
8
- :inputId="slotprops.uuid"
9
- v-model="selecteditem"
10
- v-bind="$attrs"
11
- :optionLabel="optionLabel"
12
- :path="setting.instancepath"
13
- @blur="onblur"
14
- @item-select="pickValue"
15
- @complete="getListFromAutocompleteApi"
16
- :suggestions="list"
17
- forceSelection
18
-
19
- :dropdown="dropdown"
20
- :pt="{
21
- // root:{class: 'w-full' },
22
- // container:{class: 'w-full' },
23
- input:{class:'border w-full'}
24
- }"
25
-
26
- />
27
-
28
- </FieldContainer>
29
- </template>
30
- <script lang="ts" setup>
31
-
32
- import {computed,watch,ref} from 'vue'
33
- import AutoComplete from 'primevue/autocomplete';
34
- import FieldContainer from './SimpleAppFieldContainer.vue'
35
- import {prepareList} from './helper'
36
- import type {SimpleAppFieldSetting,ListOptionType} from './type'
37
- import { SimpleAppClient } from '../simpleapp/generate/clients/SimpleAppClient'
38
- import type { JSONSchema7 } from 'json-schema';
39
-
40
- type autocompletetype={[key:string]:any}
41
-
42
- const props = withDefaults(defineProps<{
43
- label?:string
44
- description?:string
45
- error?:string
46
- setting:SimpleAppFieldSetting
47
- instancepath?:string
48
- optionLabel:string
49
- dropdown?: boolean
50
- remoteSrc?: any
51
- hidelabel?:boolean
52
- readonly?:boolean
53
- }>(),{
54
- dropdown:true,
55
- hidelabel:false
56
- })
57
- //{type:boolean, default:true, require:false},
58
- // {type:boolean, default:false, require:false},
59
- interface typefieldsetting extends JSONSchema7 {
60
- 'x-foreignkey'?:string
61
- }
62
- const modelValue = defineModel<autocompletetype>()
63
- const labelfield = props.optionLabel
64
- const list = ref()
65
- const componentErr = ref('')
66
- let tmp:autocompletetype={}
67
- const fieldsetting:typefieldsetting = props.setting.fieldsetting
68
-
69
- Object.assign(tmp,modelValue.value)
70
- const selecteditem=ref(tmp)
71
-
72
- if(!selecteditem.value[labelfield]){
73
- selecteditem.value[labelfield]=''
74
- }
75
-
76
- const getListFromAutocompleteApi = (event:any)=>{
77
- const keyword = event.query??''
78
- const remoteSrc = props.remoteSrc
79
- remoteSrc.autoComplete(keyword).then((res:any)=>{
80
- list.value = res.data
81
- }).catch((res:any)=>{
82
- console.error(res)
83
- })
84
- }
85
- const emit = defineEmits(['change'])
86
- watch(modelValue,(newvalue:autocompletetype)=>{
87
- selecteditem.value=newvalue
88
- if(newvalue){
89
- console.log("newvalue",newvalue,props.optionLabel)
90
- if(typeof newvalue[props.optionLabel] == 'undefined'){
91
- selecteditem.value[props.optionLabel]=''
92
- }
93
- // props.setting.document.validateFailed()
94
- emit('change',modelValue.value)
95
- }
96
-
97
- })
98
-
99
- if(fieldsetting['x-foreignkey'] == 'undefined'){
100
- componentErr.value='undefine "x-foreignkey" of this field in jsonschema'
101
- }else if( !props['remoteSrc'] || !props['remoteSrc']['autoComplete']){
102
- componentErr.value='invalid property "remoteSrc" cause props.remoteSrc.autoComplete(keyword:string) does not exists)'
103
- }else{
104
- componentErr.value=''
105
- }
106
-
107
-
108
- const pickValue = (event:any)=>{
109
- if(typeof event.value.query == 'undefined'){
110
- modelValue.value=event.value
111
- }
112
- }
113
-
114
- const onblur = ()=>{
115
- selecteditem.value={...modelValue.value}
116
- if(typeof selecteditem.value[labelfield]=='undefined'){
117
- selecteditem.value[labelfield]=''
118
- }
119
- }
120
- const capitalizeFirstLetter = (str: string) => {
121
- const res = str == '' ? '' : str.slice(0, 1).toUpperCase() + str.slice(1);
122
- // const res = str;
123
- return res;
124
- };
125
-
126
- const isReadonly = computed(()=>{
127
- if(props.readonly){
128
- return props.readonly
129
- }else if(props.setting.readonly){
130
- return props.setting.readonly
131
- }else{
132
- return false
133
- }
134
- })
135
- </script>
@@ -1,73 +0,0 @@
1
- <template>
2
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
3
- <AutoComplete
4
- class="simpleapp-inputfield"
5
- :inputId="slotprops.uuid"
6
- v-model="selecteditem"
7
- v-bind="$attrs"
8
- @item-unselect="deleteValue"
9
- :path="setting.instancepath"
10
- @blur="onblur"
11
- @item-select="pickValue"
12
- forceSelection
13
- multiple
14
-
15
- />
16
- </FieldContainer>
17
- </template>
18
- <script lang="ts" setup>
19
-
20
- import {computed,watch,ref} from 'vue'
21
- import AutoComplete from 'primevue/autocomplete';
22
- import FieldContainer from './SimpleAppFieldContainer.vue'
23
- import {prepareList} from './helper'
24
- import type {SimpleAppFieldSetting,ListOptionType} from './type'
25
- import type { JSONSchema7 } from 'json-schema';
26
-
27
- const props = defineProps<{
28
- label?:string,
29
- description?:string,
30
- error?:string,
31
- setting:SimpleAppFieldSetting,
32
- instancepath?:string,
33
- displayText?:string
34
- }>()
35
- const modelValue = defineModel<any[]>()
36
- const selecteditem=ref(modelValue.value)
37
-
38
- if(props.setting.fieldsetting && props.setting.fieldsetting.format){
39
- const formatarr=props.setting.fieldsetting.format.split(':')
40
- }
41
- watch(modelValue,(newvalue)=>selecteditem.value=newvalue)
42
- const deleteValue = (event:any)=>{
43
- modelValue.value = selecteditem.value
44
- console.log(selecteditem.value)
45
- // if(typeof event.value.query == 'undefined' && typeof modelValue.value != 'undefined'){
46
-
47
- // for(let i=0;i< modelValue.value.length;i++){
48
- // if(event.value.ic == modelValue.value[i].ic){
49
-
50
- // // modelValue.value =
51
- // modelValue.value.slice(i,0)
52
- // // delete modelValue.value[i]
53
- // // console.log("sliced ",slicedvalue)
54
- // console.log("Delete item ",i, event.value,modelValue.value)
55
- // }
56
- // }
57
- // }
58
- }
59
-
60
- const pickValue = (event:any)=>{
61
- if(typeof modelValue.value == 'undefined'){
62
- modelValue.value=[]
63
- }
64
- if(typeof event.value.query == 'undefined'){
65
- modelValue.value.push(event.value)
66
- console.log("pick value",modelValue.value)
67
- }
68
- }
69
-
70
- const onblur = ()=>{
71
- selecteditem.value=modelValue.value
72
- }
73
- </script>
@@ -1,55 +0,0 @@
1
- <template>
2
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :error="error" #default="slotprops">
3
- <Calendar
4
- v-model="datedata"
5
- :inputId="slotprops.uuid"
6
- @update:modelValue="change"
7
- :numberOfMonths="2"
8
- v-bind="$attrs"
9
- :dateFormat="dateformat"/>
10
- </FieldContainer>
11
- </template>
12
- <script setup lang="ts">
13
- import FieldContainer from './SimpleAppFieldContainer.vue'
14
- import { ref, watch,computed } from "vue"
15
- import moment from 'moment'
16
- import Calendar from 'primevue/calendar';
17
-
18
-
19
- const x = new Date()
20
- const date = ref<Date>()
21
- // const emit = defineEmits(['update:modelValue'])
22
- const props = defineProps<{
23
- label?:string,
24
- id?:string,
25
- description?:string,
26
- setting?:any,
27
- error?:string,
28
- }>()
29
- const modelValue = defineModel<string>()
30
- const emit = defineEmits(['update:modelValue'])
31
- const getDateFormat=():string=>{
32
- // const date = new Date();
33
- const date = new Date();
34
- const datestr = date.toISOString()
35
- let day =date.getDate().toString()
36
- day = day.length == 1 ? '0'+day : day
37
- let month = (date.getMonth() + 1).toString()
38
- month = month.length == 1 ? '0'+month : month
39
- const year = date.getFullYear().toString()
40
- const dateformat = datestr.replace(year,'yy').replace(month,'mm').replace(day,'dd');
41
- return dateformat
42
- }
43
- const datestr:string = modelValue.value??''
44
- const datedefaultdata = new Date(datestr)
45
- const dateformat = computed(()=> getDateFormat())
46
- const datedata = ref(datedefaultdata)
47
- watch(props,(newvalue)=>{
48
- datedata.value = new Date(datedefaultdata)
49
- })
50
-
51
- const change = (e:Date)=>{
52
- const newdate:string = moment(e).format("yyyy-MM-DD")
53
- emit('update:modelValue',newdate)
54
- }
55
- </script>
@@ -1,29 +0,0 @@
1
-
2
-
3
- <template>
4
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
5
- <Checkbox
6
- class="simpleapp-inputfield"
7
- :inputId="slotprops.uuid"
8
- v-model="modelValue"
9
- :binary="true"
10
- v-bind="$attrs"
11
- :path="setting.instancepath"
12
- ></Checkbox>
13
- </FieldContainer>
14
- </template>
15
- <script lang="ts" setup>
16
- // import {Ref} from 'vue'
17
- import Checkbox from 'primevue/checkbox';
18
- import FieldContainer from './SimpleAppFieldContainer.vue'
19
-
20
- const modelValue = defineModel<boolean>()
21
- const props = defineProps<{
22
- label?:string,
23
- description?:string,
24
- error?:string,
25
- setting:any,
26
- instancepath?:string,
27
- }>()
28
-
29
- </script>
@@ -1,28 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :error="error" #default="slotprops">
4
- <Chips class="simpleapp-inputfield simpleapp-inputchip"
5
- v-model="modelValue"
6
- :inputId="slotprops.uuid"
7
- v-bind="$attrs"
8
- ></Chips>
9
- </FieldContainer>
10
- </template>
11
- <script lang="ts" setup>
12
- import {computed,watch,ref} from 'vue'
13
- import Chips from 'primevue/chips';
14
- import FieldContainer from './SimpleAppFieldContainer.vue'
15
- // const modelValue = defineModel()
16
-
17
- const modelValue=defineModel()
18
- const props = defineProps<{
19
- label?:string,
20
- description?:string,
21
- setting?:any,
22
- error?:string
23
- }>()
24
- </script>
25
- <style >
26
-
27
-
28
- </style>
@@ -1,41 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <ColorPicker
5
- class="simpleapp-inputcolor"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :path="setting.instancepath"
10
- ></ColorPicker>
11
- </FieldContainer>
12
- </template>
13
- <script lang="ts" setup>
14
- import {computed,watch,ref} from 'vue'
15
- import ColorPicker from 'primevue/colorpicker';
16
-
17
- import FieldContainer from './SimpleAppFieldContainer.vue'
18
- const modelValue = defineModel()
19
- const props = defineProps<{
20
- label?:string,
21
- description?:string,
22
- error?:string,
23
- setting:any,
24
- instancepath?:string,
25
- }>()
26
-
27
- // const modelValue = defineModel<{modelValue?:string}>()
28
- // console.log(modelValue.value)
29
-
30
-
31
- // const emits = defineEmits(['update:modelValue'])
32
- // const onchange=(e:any)=>{
33
- // emits('update:modelValue',e.target.value)
34
- // }
35
-
36
-
37
- // watch(props ,(after,before)=>{
38
- // // console.log("B4",before,"after",after)
39
- // inputvalue.value=after.modelValue
40
- // })
41
- </script>
@@ -1,90 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer :hidelabel="hidelabel" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <div class="p-inputgroup ">
5
- <InputText class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- :placeholder="placeholder"
9
- :path="setting.instancepath"
10
- :pt="{input:{class:'text-right w-full'}}"
11
- />
12
- <span class="p-inputgroup-addon p p-0">
13
- <Button class="pi pi-angle-down" type="button" @click="toggle"></Button>
14
-
15
- <OverlayPanel ref="op">
16
- <ul>
17
- <li v-for="docno in docFormatlist" class="hover-list-primary " >
18
- <a class="flex-row p-2 mt-4" @click="chooseFormat(docno)">
19
- <span class="pi pi-hashtag mr-2"></span>
20
- <span class="">{{docno.docNoFormatName}}</span>
21
- <span class="ml-2 text text-green-600">{{docno.sample}}</span>
22
- </a>
23
- </li>
24
- </ul>
25
- </OverlayPanel>
26
- </span>
27
- <!-- {{ Object.getOwnPropertyNames(setting) }} -->
28
- </div>
29
- </FieldContainer>
30
- </template>
31
- <script lang="ts" setup>
32
- import {ForeignKey} from '~/types'
33
- import OverlayPanel from 'primevue/overlaypanel';
34
- import {computed,watch,ref} from 'vue'
35
- import InputText from 'primevue/inputtext';
36
- import FieldContainer from './SimpleAppFieldContainer.vue'
37
- import {DocNoFormat} from "~/types"
38
- const selectedformat = ref()
39
- const op = ref();
40
- const placeholder = ref('')
41
- const docFormatlist = ref()
42
- const modelValue = defineModel<string>()
43
- const docNoFormat = defineModel<ForeignKey>('docNoFormat')
44
- // const emit = defineEmits(['update:docNoFormat'])
45
-
46
- const props = withDefaults(defineProps<{
47
- // docNoFormat:object,
48
- // docFormatlist?:DocNoFormat[]
49
- label?:string,
50
- description?:string,
51
- setting:any
52
- error?:string,
53
- instancepath?:string,
54
- hidelabel?:boolean,
55
-
56
- }>(),{
57
- hidelabel:false
58
- })
59
- const documenttype = props.setting.document.doctype
60
-
61
-
62
- const toggle = async (event:any) => {
63
- op.value.toggle(event);
64
-
65
-
66
- }
67
-
68
- const chooseFormat = (item:any) =>{
69
- placeholder.value = item.sample
70
- const f = item
71
- docNoFormat.value = { _id : f._id, label : f.docNoFormatName}
72
- op.value.toggle();
73
- }
74
-
75
- const loadDocFormats = async () =>{
76
- docFormatlist.value= await getDocFormats(documenttype)
77
- if(docFormatlist.value.length>0){
78
- const f = docFormatlist.value[0]
79
- docNoFormat.value = { _id : f._id, label : f.docNoFormatName}
80
- placeholder.value = docFormatlist.value[0].sample
81
-
82
- }
83
- }
84
-
85
-
86
- onMounted(()=>{
87
- loadDocFormats()
88
-
89
- })
90
- </script>
@@ -1,29 +0,0 @@
1
- <script setup lang="ts">
2
- import type {SimpleAppFieldSetting} from './type';
3
- import SimpleAppAutocomplete from './SimpleAppAutocomplete.vue';
4
- import SimpleAppText from './SimpleAppText.vue';
5
- import SimpleAppSelect from './SimpleAppSelect.vue';
6
- import type {JSONSchema7} from 'json-schema'
7
- import {watch} from 'vue'
8
- import SimpleAppTextarea from './SimpleAppTextarea.vue';
9
- import SimpleAppCheckbox from './SimpleAppCheckbox.vue';
10
-
11
- const props = defineProps<{setting:SimpleAppFieldSetting, getAutocomplete:Function, hidelabel?:boolean}>()
12
- interface customSchema extends JSONSchema7 {
13
- 'x-foreignkey'?:string
14
- }
15
-
16
- // by right use 'customSchema', but been force to use any for avoid some error
17
- const f:any = props.setting.fieldsetting
18
- const modelValue = defineModel()
19
- </script>
20
- <template>
21
- <SimpleAppAutocomplete v-if="f['x-foreignkey']" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel" :remote-src="getAutocomplete(typeof f['x-foreignkey']=='string' ? f['x-foreignkey'] : f['x-foreignkey']['target'])" optionLabel="label"/>
22
- <SimpleAppCheckbox v-else-if="f.type=='boolean'" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"/>
23
- <SimpleAppNumber v-else-if="f.type=='number' || f.type=='integer'" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"></SimpleAppNumber>
24
- <SimpleAppSelect v-else-if="f.enum" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"></SimpleAppSelect>
25
- <SimpleAppChip v-else-if="f.type=='array' && f.items && f.items.type=='string'" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"></SimpleAppChip>
26
- <SimpleAppTextarea v-else-if="f.type=='string' && f.format=='text'" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"></SimpleAppTextarea>
27
- <SimpleAppText v-else-if="f.type=='string' && f.format" :type="f.format" v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"></SimpleAppText>
28
- <SimpleAppText v-else v-model="modelValue" :setting="props.setting" :hidelabel="hidelabel"></SimpleAppText>
29
- </template>
@@ -1,31 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <Editor
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :autoResize="autoResize"
10
- :path="setting.instancepath"
11
- ></Editor>
12
- </FieldContainer>
13
- </template>
14
- <script lang="ts" setup>
15
- import {computed,watch,ref} from 'vue'
16
- import Editor from 'primevue/editor';
17
-
18
-
19
- import FieldContainer from './SimpleAppFieldContainer.vue'
20
- const modelValue = defineModel()
21
- const props = defineProps<{
22
- label?:string,
23
- id?:string,
24
- description?:string,
25
- error?:string,
26
- setting:any,
27
- autoResize?:boolean,
28
- instancepath?:string,
29
- }>()
30
-
31
- </script>
@@ -1,83 +0,0 @@
1
- <template>
2
- <DataTable v-bind="$attrs" stripedRows resizableColumns
3
- class="simpleapp-datatable p-datatable-sm" :value="modelValue">
4
- <template #empty> <div class="text-center">No record found.</div> </template>
5
- <template #header >
6
- <div>
7
- <Button icon="pi pi-plus" @click="addNew()" class="simpleapp-datatable-add btn-primary" type="button">Add</Button>
8
- </div>
9
- </template>
10
- <slot>
11
- <!-- <template> -->
12
-
13
- <Column class="text-center" header="undefine columns">
14
- <template #body>
15
- <div class="text-center">Missing {{ '<Column></Column>' }}</div>
16
- </template>
17
-
18
- </Column>
19
-
20
-
21
- <!-- </template> -->
22
-
23
- </slot>
24
- </DataTable>
25
- </template>
26
- <script setup lang="ts">
27
-
28
- import {ref} from 'vue'
29
- import DataTable from 'primevue/datatable';
30
- import Column from 'primevue/column';
31
- import {camelCaseToWords} from './helper'
32
- import type {InputTableColumn} from './type'
33
- const props = defineProps<{
34
- // columns:InputTableColumn[],
35
- setting:any,
36
- getField:Function,
37
- getAutocomplete:Function, readonly?:boolean
38
- }>()
39
-
40
-
41
- //{path: '#/properties/details', instancepath: '/details', fieldsetting: {…}, modelObject: Proxy(Object), apiObj: INVApi, …}
42
- const modelValue = defineModel<any[]>()
43
-
44
-
45
- const fieldsetting = props.setting.fieldsetting
46
-
47
- const readonly = ref(false)
48
- if(props.setting.readonly!==undefined ){
49
- readonly.value = props.setting.readonly
50
- }
51
- if(props.readonly!==undefined ){
52
- readonly.value = props.readonly
53
- }
54
- // const columns = ref(props.columns)
55
- // for(let i=0;i<props.columns.length;i++){
56
- // if(columns.value[i].title ===undefined){
57
- // columns.value[i].title=columns.value[i].field
58
- // }
59
- // }
60
- const getChildFieldSetting=(field:string)=>{
61
- return props.getField(`${props.setting.path}/items/properties/${field}`)
62
- }
63
- const getInstancePath=(index:number,field:string)=>{
64
- return `${props.setting.instancepath}/${index}/${field}`
65
- }
66
-
67
- const deleteRow=(index: number)=>{
68
- if(modelValue.value){
69
- modelValue.value.splice(index,1)
70
- }
71
- }
72
- const addNew = () => {
73
- const field = props.setting.path.split('/').at(-1)
74
- props.setting.document[`add${field}`]()
75
- }
76
- /**
77
- * 1. support array with field to label
78
- * 2. auto add edit button
79
- * 3. option readonly or not readonly
80
- * 4.
81
- */
82
-
83
- </script>
@@ -1,38 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <Listbox v-model="modelValue"
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-bind="$attrs"
8
- :optionValue="optionValue"
9
- :optionLabel="optionLabel"
10
- :path="setting.instancepath"
11
- :options="options"
12
- />
13
- </FieldContainer>
14
- </template>
15
- <script lang="ts" setup>
16
- import {computed,watch,ref} from 'vue'
17
- import Listbox from 'primevue/listbox';
18
- import FieldContainer from './SimpleAppFieldContainer.vue'
19
- import {prepareList,simpleArrayToObject} from './helper'
20
- import type {SimpleAppFieldSetting} from './type'
21
- import type { JSONSchema7 } from 'json-schema';
22
- const modelValue = defineModel()
23
- const props = defineProps<{
24
- label?:string,
25
- description?:string,
26
- error?:string,
27
- setting:SimpleAppFieldSetting,
28
- optionLabel?:string,
29
- optionValue?:string,
30
- instancepath?:string,
31
- options?:any[],
32
- }>()
33
- const optionValue = props.optionValue ?? 'label'
34
- const optionLabel = props.optionLabel ?? 'value'
35
- const options = prepareList('oneOf',props.setting.fieldsetting,optionLabel,optionValue,props.options,)
36
-
37
-
38
- </script>
@@ -1,41 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs" :refto="id" v-model="modelValue" :label="label" :description="description" :setting="setting" :instancepath="instancepath" :error="error" #default="slotprops">
4
- <Listbox v-model="modelValue"
5
- class="simpleapp-inputfield"
6
- :id="slotprops.uuid"
7
- v-bind="$attrs"
8
- optionValue="value"
9
- optionLabel="label"
10
- :path="setting.instancepath"
11
- :options="options"
12
- multiple
13
- />
14
- </FieldContainer>
15
- </template>
16
- <script lang="ts" setup>
17
- import {computed,watch,ref} from 'vue'
18
- import Listbox from 'primevue/listbox';
19
- import FieldContainer from './SimpleAppFieldContainer.vue'
20
- import {prepareList,simpleArrayToObject} from './helper'
21
- import type {SimpleAppFieldSetting} from './type'
22
- import type { JSONSchema7 } from 'json-schema';
23
- const modelValue = defineModel()
24
- const props = defineProps<{
25
- label?:string,
26
- id?:string,
27
- description?:string,
28
- error?:string,
29
- setting:SimpleAppFieldSetting,
30
- optionLabel?:string,
31
- optionValue?:string,
32
- instancepath?:string,
33
- options?:any[],
34
- }>()
35
- const optionValue = props.optionValue ?? 'label'
36
- const optionLabel = props.optionLabel ?? 'value'
37
-
38
- const options = prepareList('anyOf',props.setting.fieldsetting.items,optionLabel,optionValue,props.options,)
39
-
40
-
41
- </script>