@simitgroup/simpleapp-generator 1.3.1-alpha → 1.3.3-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 (211) hide show
  1. package/dist/generate.js +7 -3
  2. package/dist/generate.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/generate.ts +7 -3
  5. package/templates/basic/nest/apischema.ts.eta +2 -3
  6. package/templates/basic/nest/controller.ts.eta +3 -4
  7. package/templates/basic/nest/default.ts.eta +6 -0
  8. package/templates/basic/nest/jsonschema.ts.eta +3 -4
  9. package/templates/basic/nest/model.ts.eta +3 -5
  10. package/templates/basic/nest/processor.ts.eta +3 -4
  11. package/templates/basic/nest/service.ts.eta +8 -1
  12. package/templates/basic/nest/type.ts.eta +3 -4
  13. package/templates/basic/nuxt/default.ts.eta +6 -0
  14. package/templates/basic/nuxt/pages.form.vue.eta +2 -1
  15. package/templates/basic/nuxt/simpleapp.generate.client.ts.eta +3 -4
  16. package/templates/nest/.env._eta +2 -1
  17. package/templates/nest/.gitignore.eta +5 -0
  18. package/templates/nest/src/simpleapp/.gitignore.eta +5 -0
  19. package/templates/nest/src/simpleapp/apischemas/index.ts._eta +6 -1
  20. package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +7 -0
  21. package/templates/nest/src/simpleapp/generate/apischemas/simpleapp.apischema.ts.eta +1 -1
  22. package/templates/nest/src/simpleapp/generate/workflow/formschema/index.ts.eta +6 -0
  23. package/templates/nest/src/simpleapp/generate/workflow/workflow.apischema.ts.eta +6 -0
  24. package/templates/nest/src/simpleapp/generate/workflow/workflow.config.ts.eta +6 -0
  25. package/templates/nest/src/simpleapp/generate/workflow/workflow.controller.ts.eta +6 -0
  26. package/templates/nest/src/simpleapp/generate/workflow/workflow.delegate.ts.eta +6 -0
  27. package/templates/nest/src/simpleapp/generate/workflow/workflow.service.ts.eta +2 -4
  28. package/templates/nest/src/simpleapp/generate/workflow/workflow.type.ts.eta +4 -5
  29. package/templates/nest/src/simpleapp/generate/workflow/workflow.userservice.ts.eta +6 -0
  30. package/templates/nest/src/simpleapp/profile/profile.apischema.ts.eta +1 -1
  31. package/templates/nest/src/simpleapp/profile/profile.controller.ts.eta +1 -1
  32. package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +1 -1
  33. package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +1 -1
  34. package/templates/nest/src/simpleapp/services/autoinc.service.ts.eta +1 -1
  35. package/templates/nest/src/simpleapp/services/branch.service.ts.eta +1 -1
  36. package/templates/nest/src/simpleapp/services/docno.service.ts.eta +1 -1
  37. package/templates/nest/src/simpleapp/services/org.service.ts.eta +1 -1
  38. package/templates/nest/src/simpleapp/services/perm.service.ts.eta +1 -1
  39. package/templates/nest/src/simpleapp/services/tenant.service.ts.eta +1 -1
  40. package/templates/nest/src/simpleapp/services/user.service.ts.etax +1 -1
  41. package/templates/nest/src/simpleapp/types/index.ts._eta +6 -1
  42. package/templates/nest/src/simpleapp/workflows/listeners/simpleapp.listener.ts._eta +4 -5
  43. package/templates/nest/test/app.e2e-spec.ts.eta +6 -0
  44. package/templates/nest/test/setting.ts.eta +6 -0
  45. package/templates/nuxt/.env._eta +2 -1
  46. package/templates/nuxt/.gitignore.eta +5 -0
  47. package/templates/nuxt/{app.vue.eta → app.vue._eta} +14 -14
  48. package/templates/nuxt/assets/css/calendar.css._eta +6 -1
  49. package/templates/nuxt/assets/css/listview.css._eta +17 -0
  50. package/templates/nuxt/assets/css/style.css._eta +6 -4
  51. package/templates/nuxt/assets/css/tailwind.css._eta +6 -0
  52. package/templates/nuxt/assets/primevue/passthrough.ts._eta +13 -8
  53. package/templates/nuxt/components/button/ButtonDanger.vue._eta +16 -4
  54. package/templates/nuxt/components/button/ButtonDefault.vue._eta +17 -4
  55. package/templates/nuxt/components/button/ButtonMultiple.vue._eta +8 -2
  56. package/templates/nuxt/components/button/ButtonPrimary.vue._eta +17 -5
  57. package/templates/nuxt/components/button/ButtonText.vue._eta +21 -0
  58. package/templates/nuxt/components/button/ButtonWarning.vue._eta +17 -5
  59. package/templates/nuxt/components/calendar/CalendarByResource.vue.eta +7 -3
  60. package/templates/nuxt/components/calendar/CalendarSmall.vue.eta +6 -0
  61. package/templates/nuxt/components/debug/DebugDocumentData.vue.eta +3 -3
  62. package/templates/nuxt/components/event/EventDecision.vue._eta +3 -3
  63. package/templates/nuxt/components/event/EventDocumentViewer.vue._eta +3 -3
  64. package/templates/nuxt/components/event/EventNotification.vue._eta +3 -3
  65. package/templates/nuxt/components/form/FormBranch.vue.eta +4 -3
  66. package/templates/nuxt/components/header/HeaderBar.vue._eta +7 -1
  67. package/templates/nuxt/components/header/HeaderBreadcrumb.vue.eta +6 -0
  68. package/templates/nuxt/components/header/HeaderSelectBranch.vue.eta +6 -0
  69. package/templates/nuxt/components/header/button/HeaderButtonHome.vue.eta +6 -1
  70. package/templates/nuxt/components/header/button/HeaderButtonLogout.vue.eta +9 -1
  71. package/templates/nuxt/components/header/button/HeaderButtonMenuPicker.vue._eta +7 -0
  72. package/templates/nuxt/components/header/button/HeaderButtonProfile.vue.eta +6 -0
  73. package/templates/nuxt/components/header/button/task/HeaderButtonTaskItem.vue.eta +7 -0
  74. package/templates/nuxt/components/header/button/task/HeaderButtonTaskList.vue.eta +6 -0
  75. package/templates/nuxt/components/list/ListDocument.vue.eta +6 -0
  76. package/templates/nuxt/components/list/ListDocumentTable.vue.eta +6 -0
  77. package/templates/nuxt/components/list/ListView.vue.eta +60 -47
  78. package/templates/nuxt/components/mobile/MobileToolbar.vue.eta +9 -3
  79. package/templates/nuxt/components/overlay/OverlayPanelWithToolBar.vue.eta +44 -0
  80. package/templates/nuxt/components/overlay/OverlaySideBarCrud.vue.eta +10 -1
  81. package/templates/nuxt/components/overlay/OverlayViewer.vue.eta +7 -1
  82. package/templates/nuxt/components/page/PageDocList.vue.eta +23 -14
  83. package/templates/nuxt/components/renderer/index.ts._eta +3 -3
  84. package/templates/nuxt/components/session/SessionBlock.vue.eta +6 -0
  85. package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +7 -1
  86. package/templates/nuxt/components/simpleApp/SimpleAppDocumentNo.vue.eta +6 -0
  87. package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +6 -0
  88. package/templates/nuxt/components/simpleApp/SimpleAppForm.vue.eta +7 -2
  89. package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue.eta +21 -17
  90. package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +6 -0
  91. package/templates/nuxt/components/simpleApp/SimpleAppInputTable.vue.eta +6 -1
  92. package/templates/nuxt/components/simpleApp/SimpleAppJsonSchemaForm.vue.eta +6 -0
  93. package/templates/nuxt/components/table/TableDocuments.vue.eta +6 -0
  94. package/templates/nuxt/components/text/TextDanger.vue._eta +8 -0
  95. package/templates/nuxt/components/text/TextSubtitle.vue._eta +8 -0
  96. package/templates/nuxt/components/text/TextTitle.vue._eta +8 -0
  97. package/templates/nuxt/components/user/UserButtonCreateTenant.vue.eta +6 -0
  98. package/templates/nuxt/components/user/UserButtonPermissionInfo.vue.eta +6 -0
  99. package/templates/nuxt/components/user/UserInvitation.vue.eta +22 -16
  100. package/templates/nuxt/components/user/UserProfileListItem.vue.eta +6 -1
  101. package/templates/nuxt/components/user/UserTenantPicker.vue.eta +6 -1
  102. package/templates/nuxt/components/viewer/readme.md.eta +1 -0
  103. package/templates/nuxt/components/workflow/forms/dynamicfield.vue._eta +7 -0
  104. package/templates/nuxt/components/workflow/forms/index.ts._eta +7 -0
  105. package/templates/nuxt/components/workflow/forms/simpleapprove.vue._eta +6 -0
  106. package/templates/nuxt/composables/date.generate.ts.eta +6 -3
  107. package/templates/nuxt/composables/docformat.generate.ts.eta +6 -0
  108. package/templates/nuxt/composables/getDocument.generate.ts.eta +6 -0
  109. package/templates/nuxt/composables/getTenant.generate.ts.eta +6 -0
  110. package/templates/nuxt/composables/getUserStore.generate.ts.eta +6 -0
  111. package/templates/nuxt/composables/goTo.generate.ts.eta +6 -0
  112. package/templates/nuxt/composables/logout.generate.ts.eta +6 -0
  113. package/templates/nuxt/composables/notifications.generate.ts.eta +6 -0
  114. package/templates/nuxt/composables/refreshDocumentList.generate.ts.eta +6 -0
  115. package/templates/nuxt/composables/roles.generate.ts.eta +6 -0
  116. package/templates/nuxt/composables/screensize.generate.ts.eta +6 -0
  117. package/templates/nuxt/composables/stringHelper.generate.ts.eta +6 -0
  118. package/templates/nuxt/composables/themes.generate.ts.eta +6 -0
  119. package/templates/nuxt/composables/workflow.generate.ts.eta +6 -0
  120. package/templates/nuxt/error.vue._eta +6 -1
  121. package/templates/nuxt/i18n.config.ts.eta +6 -0
  122. package/templates/nuxt/lang/cn.ts._eta +6 -0
  123. package/templates/nuxt/lang/en.ts.eta +1 -0
  124. package/templates/nuxt/layouts/default.vue._eta +6 -0
  125. package/templates/nuxt/layouts/loginlayout.vue._eta +9 -1
  126. package/templates/nuxt/layouts/mobile.vue._eta +6 -0
  127. package/templates/nuxt/middleware/30.acl.global.ts.eta +1 -1
  128. package/templates/nuxt/nuxt.config.ts._eta +4 -5
  129. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/[id].vue.eta +4 -5
  130. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +7 -0
  131. package/templates/nuxt/pages/[xorg]/docnoformat/[doctype].vue.eta +6 -1
  132. package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +6 -1
  133. package/templates/nuxt/pages/[xorg]/docnoformat.vue.eta +4 -6
  134. package/templates/nuxt/pages/[xorg]/index.vue._eta +4 -5
  135. package/templates/nuxt/pages/[xorg]/organization/viewer.vue.eta +8 -0
  136. package/templates/nuxt/pages/[xorg]/organization.vue.eta +6 -1
  137. package/templates/nuxt/pages/[xorg]/profile.vue.eta +6 -0
  138. package/templates/nuxt/pages/[xorg]/reports/index.vue._eta +18 -0
  139. package/templates/nuxt/pages/[xorg]/user/[id].vue.eta +4 -5
  140. package/templates/nuxt/pages/[xorg]/user/form.vue.eta +6 -1
  141. package/templates/nuxt/pages/[xorg]/user/index.vue.eta +4 -5
  142. package/templates/nuxt/pages/[xorg]/user/new.vue.eta +4 -5
  143. package/templates/nuxt/pages/[xorg]/user/viewer.vue.eta +4 -5
  144. package/templates/nuxt/pages/[xorg]/user.vue.eta +4 -4
  145. package/templates/nuxt/pages/index.vue._eta +4 -4
  146. package/templates/nuxt/pages/login.vue._eta +4 -4
  147. package/templates/nuxt/pages/profile.vue.eta +8 -1
  148. package/templates/nuxt/pages/relogin.vue.eta +6 -0
  149. package/templates/nuxt/plugins/10.simpleapp-event.ts.eta +1 -1
  150. package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +1 -1
  151. package/templates/nuxt/plugins/50.simpleapp-client.ts.eta +1 -1
  152. package/templates/nuxt/server/api/[xorg]/[...].ts.eta +1 -1
  153. package/templates/nuxt/server/api/auth/[...].ts.eta +1 -1
  154. package/templates/nuxt/server/api/auth/logout.ts.eta +1 -1
  155. package/templates/nuxt/server/api/profile/[...].ts.eta +1 -2
  156. package/templates/nuxt/server/api/profile/index.ts.eta +1 -1
  157. package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +2 -4
  158. package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +2 -2
  159. package/templates/nuxt/simpleapp/generate/commons/groups.ts.eta +1 -1
  160. package/templates/nuxt/simpleapp/generate/commons/roles.ts.eta +1 -1
  161. package/templates/nuxt/simpleapp/generate/defaults/index.ts.eta +7 -0
  162. package/templates/nuxt/simpleapp/generate/types/index.ts.eta +7 -0
  163. package/templates/nuxt/simpleapp/workflows/forms/index.ts._eta +6 -0
  164. package/templates/nuxt/simpleapp/workflows/forms/simpleapprove.jsonschema.ts._eta +6 -0
  165. package/templates/nuxt/tailwind.config.ts._eta +6 -0
  166. package/templates/nuxt/types/calendar.ts.eta +2 -3
  167. package/templates/nuxt/types/documentlist.ts.eta +3 -3
  168. package/templates/nuxt/types/events.ts.eta +2 -2
  169. package/templates/nuxt/types/index.ts._eta +4 -5
  170. package/templates/nuxt/types/listview.ts.eta +2 -2
  171. package/templates/nuxt/types/notifications.ts.eta +2 -2
  172. package/templates/nuxt/types/others.ts.eta +2 -2
  173. package/templates/nuxt/types/schema.ts.eta +2 -2
  174. package/templates/nuxt/types/simpleappinput.ts.eta +2 -2
  175. package/templates/nuxt/types/user.ts.eta +2 -2
  176. package/templates/nuxt/types/workflow.ts.eta +2 -2
  177. package/templates/project/lang/default._json +1 -1
  178. package/templates/project/sharelibs/hello.ts._eta +6 -0
  179. package/templates/project/sharelibs/index.ts.eta +5 -0
  180. package/tsconfig.tsbuildinfo +1 -1
  181. package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocomplete.vue +0 -135
  182. package/templates/nuxt/components/simpleApp/pending/SimpleAppAutocompletemulti.vue +0 -73
  183. package/templates/nuxt/components/simpleApp/pending/SimpleAppCalendar.vue +0 -55
  184. package/templates/nuxt/components/simpleApp/pending/SimpleAppCheckbox.vue +0 -29
  185. package/templates/nuxt/components/simpleApp/pending/SimpleAppChip.vue +0 -28
  186. package/templates/nuxt/components/simpleApp/pending/SimpleAppColor.vue +0 -41
  187. package/templates/nuxt/components/simpleApp/pending/SimpleAppDocumentNo.vue +0 -90
  188. package/templates/nuxt/components/simpleApp/pending/SimpleAppDynamicInput.vue +0 -29
  189. package/templates/nuxt/components/simpleApp/pending/SimpleAppEditor.vue +0 -31
  190. package/templates/nuxt/components/simpleApp/pending/SimpleAppInputTable.vue +0 -83
  191. package/templates/nuxt/components/simpleApp/pending/SimpleAppList.vue +0 -38
  192. package/templates/nuxt/components/simpleApp/pending/SimpleAppListmulti.vue +0 -41
  193. package/templates/nuxt/components/simpleApp/pending/SimpleAppNumber.vue +0 -43
  194. package/templates/nuxt/components/simpleApp/pending/SimpleAppPassword.vue +0 -41
  195. package/templates/nuxt/components/simpleApp/pending/SimpleAppRadio.vue +0 -42
  196. package/templates/nuxt/components/simpleApp/pending/SimpleAppRating.vue +0 -41
  197. package/templates/nuxt/components/simpleApp/pending/SimpleAppSelect.vue +0 -48
  198. package/templates/nuxt/components/simpleApp/pending/SimpleAppSelectmulti.vue +0 -39
  199. package/templates/nuxt/components/simpleApp/pending/SimpleAppSlider.vue +0 -42
  200. package/templates/nuxt/components/simpleApp/pending/SimpleAppSwitch.vue +0 -30
  201. package/templates/nuxt/components/simpleApp/pending/SimpleAppText.vue +0 -59
  202. package/templates/nuxt/components/simpleApp/pending/SimpleAppTextarea.vue +0 -41
  203. package/templates/nuxt/components/simpleApp/pending/SimpleAppValue.vue +0 -86
  204. package/templates/nuxt/components/simpleApp/pending/helper.ts-backup +0 -90
  205. package/templates/nuxt/components/simpleApp/pending/type.ts-backup +0 -32
  206. package/templates/nuxt/components/suspended/CrudNestedDoc.vue.eta +0 -172
  207. package/templates/nuxt/components/suspended/CrudSimple.vue.eta +0 -181
  208. package/templates/nuxt/components/suspended/Menus.vue.eta +0 -58
  209. package/templates/nuxt/components/suspended/Spinner.vue.eta +0 -9
  210. package/templates/nuxt/lang/df.ts.etaxxxx +0 -16
  211. package/templates/project/sharelibs/hello.ts.eta +0 -1
@@ -1,43 +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
- <InputNumber class="simpleapp-inputfield"
5
- :inputId="slotprops.uuid"
6
- v-model="modelValue"
7
- :path="setting.instancepath"
8
- :pt="{input:{class:'text-right w-full'}}"
9
- :readonly="isReadonly"
10
- ></InputNumber>
11
- </FieldContainer>
12
- </template>
13
- <script lang="ts" setup>
14
- import {computed,watch,ref} from 'vue'
15
- import InputNumber from 'primevue/inputnumber';
16
- import FieldContainer from './SimpleAppFieldContainer.vue'
17
- const props = withDefaults(defineProps<{
18
- label?:string,
19
- description?:string,
20
- setting:any
21
- error?:string,
22
- instancepath?:string,
23
- hidelabel?:boolean
24
- readonly?:boolean
25
- }>(),{
26
- hidelabel:false
27
- })
28
- const emit = defineEmits(['change'])
29
- const modelValue =defineModel()
30
- const isReadonly = computed(()=>{
31
- if(props.readonly){
32
- return props.readonly
33
- }else if(props.setting.readonly){
34
- return props.setting.readonly
35
- }else{
36
- return false
37
- }
38
- })
39
- watch(modelValue,()=>{
40
- // props.setting.document.validateFailed()
41
- emit('change',modelValue)
42
- })
43
- </script>
@@ -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
- <Password
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :path="setting.instancepath"
10
- ></Password>
11
- </FieldContainer>
12
- </template>
13
- <script lang="ts" setup>
14
- import {computed,watch,ref} from 'vue'
15
- import Password from 'primevue/password';
16
- import FieldContainer from './SimpleAppFieldContainer.vue'
17
- const modelValue = defineModel()
18
- const props = defineProps<{
19
- label?:string,
20
- id?: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,42 +0,0 @@
1
-
2
- <template>
3
- <FieldContainer v-bind="$attrs"
4
- v-model="modelValue"
5
- :label="label"
6
- :description="description"
7
- :setting="setting"
8
- :instancepath="instancepath"
9
- :error="error"
10
- #default="slotprops">
11
- <div v-for="(o, index) in options" :key="index" class="simpleapp-inputradio">
12
- <RadioButton
13
- v-model="modelValue"
14
- :inputId="`${slotprops.uuid}_${index}`"
15
- :value="o.value" />
16
- <label :for="`${slotprops.uuid}_${index}`">{{ o.label }}</label>
17
- </div>
18
-
19
-
20
- </FieldContainer>
21
- </template>
22
- <script lang="ts" setup>
23
- import RadioButton from 'primevue/radiobutton';
24
- import FieldContainer from './SimpleAppFieldContainer.vue'
25
- import {prepareList,simpleArrayToObject} from './helper'
26
- import type {ListOptionType} from './type'
27
- const modelValue = defineModel()
28
- const props = defineProps<{
29
- label?:string,
30
- description?:string,
31
- error?:string,
32
- setting:any,
33
- optionLabel?:string,
34
- optionValue?:string,
35
- instancepath?:string,
36
- options?:any[],
37
- }>()
38
- const optionValue = props.optionValue ?? 'label'
39
- const optionLabel = props.optionLabel ?? 'value'
40
- const options = prepareList('oneOf',props.setting.fieldsetting,optionLabel,optionValue,props.options,)
41
-
42
- </script>
@@ -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
- <Rating
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :path="setting.instancepath"
10
- ></Rating>
11
- </FieldContainer>
12
- </template>
13
- <script lang="ts" setup>
14
- import {computed,watch,ref} from 'vue'
15
- import Rating from 'primevue/rating';
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,48 +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
- <Dropdown v-model="modelValue"
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-bind="$attrs"
8
- optionValue="value"
9
- optionLabel="label"
10
- :path="setting.instancepath"
11
- :options="options"
12
- :readonly="isReadonly"
13
- />
14
- </FieldContainer>
15
- </template>
16
- <script lang="ts" setup>
17
- import {computed,watch,ref} from 'vue'
18
- import Dropdown from 'primevue/dropdown';
19
- import FieldContainer from './SimpleAppFieldContainer.vue'
20
- import {prepareList,simpleArrayToObject} from './helper'
21
- import type {ListOptionType} from './type'
22
- import type { JSONSchema7 } from 'json-schema';
23
- const modelValue = defineModel()
24
- const props = defineProps<{
25
- label?:string,
26
- description?:string,
27
- error?:string,
28
- setting:any,
29
- optionLabel?:string,
30
- optionValue?:string,
31
- instancepath?:string,
32
- options?:any[]
33
- readonly?:boolean
34
- }>()
35
-
36
- const optionValue = props.optionValue ?? 'value'
37
- const optionLabel = props.optionLabel ?? 'label'
38
- const options = prepareList('oneOf',props.setting.fieldsetting,optionLabel,optionValue,props.options,)
39
- const isReadonly = computed(()=>{
40
- if(props.readonly){
41
- return props.readonly
42
- }else if(props.setting.readonly){
43
- return props.setting.readonly
44
- }else{
45
- return false
46
- }
47
- })
48
- </script>
@@ -1,39 +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
- <MultiSelect 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
- multiple
13
- />
14
- </FieldContainer>
15
- </template>
16
- <script lang="ts" setup>
17
- import {computed,watch,ref} from 'vue'
18
- import MultiSelect from 'primevue/multiselect';
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
- description?:string,
27
- error?:string,
28
- setting:SimpleAppFieldSetting,
29
- optionLabel?:string,
30
- optionValue?:string,
31
- instancepath?:string,
32
- options?:any[]
33
- }>()
34
- const optionValue = props.optionValue ?? 'label'
35
- const optionLabel = props.optionLabel ?? 'value'
36
- // console.log("appselectmulti",props.description, props.setting.fieldsetting)
37
- const options = prepareList('anyOf',props.setting.fieldsetting.items,optionLabel,optionValue,props.options,)
38
- // props.setting.fieldsetting.items
39
- </script>
@@ -1,42 +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
- <Slider
5
- class="simpleapp-inputfield"
6
- :inputId="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :path="setting.instancepath"
10
- ></Slider>
11
- </FieldContainer>
12
- </template>
13
- <script lang="ts" setup>
14
- import {computed,watch,ref} from 'vue'
15
- import Slider from 'primevue/slider';
16
-
17
-
18
- import FieldContainer from './SimpleAppFieldContainer.vue'
19
- const modelValue = defineModel()
20
- const props = defineProps<{
21
- label?:string,
22
- description?:string,
23
- error?:string,
24
- setting:any,
25
- instancepath?:string,
26
- }>()
27
-
28
- // const modelValue = defineModel<{modelValue?:string}>()
29
- // console.log(modelValue.value)
30
-
31
-
32
- // const emits = defineEmits(['update:modelValue'])
33
- // const onchange=(e:any)=>{
34
- // emits('update:modelValue',e.target.value)
35
- // }
36
-
37
-
38
- // watch(props ,(after,before)=>{
39
- // // console.log("B4",before,"after",after)
40
- // inputvalue.value=after.modelValue
41
- // })
42
- </script>
@@ -1,30 +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
- <InputSwitch
6
- class="simpleapp-inputswitch"
7
- :inputId="slotprops.uuid"
8
- v-model="modelValue"
9
- :binary="true"
10
- v-bind="$attrs"
11
- :path="setting.instancepath"
12
- ></InputSwitch>
13
- </FieldContainer>
14
- </template>
15
- <script lang="ts" setup>
16
- // import {Ref} from 'vue'
17
- import InputSwitch from 'primevue/inputswitch';
18
- import FieldContainer from './SimpleAppFieldContainer.vue'
19
-
20
- const modelValue = defineModel<boolean>()
21
- const props = defineProps<{
22
- label?:string,
23
- id?:string,
24
- description?:string,
25
- error?:string,
26
- setting:any,
27
- instancepath?:string,
28
- }>()
29
-
30
- </script>
@@ -1,59 +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
- <InputText v-if="slotprops.error"
5
- class="simpleapp-inputfield simpleapp-invalid-input"
6
- :id="slotprops.uuid"
7
- v-model="modelValue"
8
- :path="setting.instancepath"
9
- :type="type"
10
- :readonly="isReadonly"
11
- ></InputText>
12
- <InputText v-else
13
- class="simpleapp-inputfield"
14
- :id="slotprops.uuid"
15
- v-model="modelValue"
16
- :path="setting.instancepath"
17
- :type="type"
18
- :readonly="isReadonly"
19
- ></InputText>
20
- </FieldContainer>
21
- </template>
22
- <script lang="ts" setup>
23
- import {computed,watch,ref} from 'vue'
24
- import InputText from 'primevue/inputtext';
25
- import FieldContainer from './SimpleAppFieldContainer.vue'
26
- const modelValue = defineModel()
27
- const props = withDefaults( defineProps<{
28
- label?:string,
29
- description?:string,
30
- error?:string,
31
- setting:any,
32
- type?:string,
33
- instancepath?:string,
34
- hidelabel?: boolean
35
- readonly?: boolean
36
- }>(),{type:'text'})
37
-
38
- // const modelValue = defineModel<{modelValue?:string}>()
39
- // console.log(modelValue.value)
40
- const isReadonly = computed(()=>{
41
- if(props.readonly){
42
- return props.readonly
43
- }else if(props.setting.readonly){
44
- return props.setting.readonly
45
- }else{
46
- return false
47
- }
48
- })
49
- const emits = defineEmits(['change'])
50
- // const onchange=(e:any)=>{
51
- // emits('update:modelValue',e.target.value)
52
- // }
53
-
54
-
55
- watch(modelValue ,()=>{
56
- // props.setting.document.validateFailed()
57
- emits('change',modelValue.value)
58
- })
59
- </script>
@@ -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
- <Textarea
5
- class="simpleapp-inputfield"
6
- :id="slotprops.uuid"
7
- v-model="modelValue"
8
- v-bind="$attrs"
9
- :autoResize="autoResize"
10
- :path="setting.instancepath"
11
- :readonly="isReadonly"
12
- ></Textarea>
13
- </FieldContainer>
14
- </template>
15
- <script lang="ts" setup>
16
- import {computed,watch,ref} from 'vue'
17
- import Textarea from 'primevue/textarea';
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
- readonly?:boolean
30
-
31
- }>()
32
- const isReadonly = computed(()=>{
33
- if(props.readonly){
34
- return props.readonly
35
- }else if(props.setting.readonly){
36
- return props.setting.readonly
37
- }else{
38
- return false
39
- }
40
- })
41
- </script>
@@ -1,86 +0,0 @@
1
- <template>
2
- <div v-if="schema" :class="fieldcontainerclass">
3
-
4
- <div v-if="hidelabel"></div>
5
- <label v-else :for="uuid">{{ fieldlabel }} <span v-if="props.setting.isrequired && fieldlabel" class="input-error">*</span></label>
6
-
7
- <div :uuid="uuid" class="simpleapp-value-readonly">{{ modelValue }}</div>
8
-
9
-
10
- <small v-if="error" class="input-desc">{{ error }}</small>
11
- <small v-else class="input-desc">{{ fielddesc }}</small>
12
-
13
- <slot></slot>
14
- </div>
15
- <div v-else class="simpleapp-input-container">
16
- <label class="input-error">wrong path in getField()</label>
17
- <div class="input-error">{{ props.setting.path }}</div>
18
- </div>
19
- </template>
20
- <script setup lang="ts">
21
- import {camelCaseToWords} from './helper'
22
- import {computed,watch} from 'vue'
23
- import {ref} from 'vue'
24
- const modelValue = defineModel()
25
- const uuid = randomUUID()
26
- const fieldlabel = ref('')
27
- const fielddesc = ref('')
28
- const defaultcssclass='simpleapp-input-container'
29
- const fieldcontainerclass = ref(defaultcssclass)
30
- let instancepath = ref('')
31
- const props = defineProps<{
32
- label?: string,
33
- description?: string,
34
- instancepath?:string,
35
- hidelabel?:boolean,
36
- // error?:string,
37
- setting:any
38
- }>()
39
-
40
- // console.log('props.setting',props.setting.fieldsetting)
41
- let schema:any
42
- if(props.setting.fieldsetting && props.setting.fieldsetting.type){
43
-
44
- schema = props.setting.fieldsetting
45
- // console.log("schema setting",props.setting,schema)
46
- if(props?.instancepath) instancepath.value =props.instancepath
47
- else if(props.setting?.instancepath) instancepath.value = props.setting.instancepath
48
- else instancepath.value='/unknown'
49
-
50
- const fieldnamearr = instancepath.value.split('/')
51
- const fieldname = camelCaseToWords(fieldnamearr[fieldnamearr.length-1])
52
-
53
- if(props.label)fieldlabel.value = props.label
54
- else if (schema.title ) fieldlabel.value=schema.title
55
- else fieldlabel.value=fieldname
56
-
57
- if(props.description)fielddesc.value = props.description
58
- else if (schema?.description != 'undefined') fielddesc.value=schema.description
59
- else fielddesc.value=''
60
-
61
-
62
-
63
- }
64
- const errormsg = computed(()=>{
65
-
66
- props.setting.errors[instancepath.value]
67
- })
68
- const error = ref("")
69
- watch(props.setting.errors,(newvalue,oldvalue)=>{
70
- //it is array
71
- error.value=''
72
- if(newvalue[instancepath.value]){
73
- const errlist:any[] = newvalue[instancepath.value]
74
- for(let i=0;i<errlist.length;i++){
75
- error.value += errlist[i].message +','
76
- }
77
- fieldcontainerclass.value=defaultcssclass + ' input-error'
78
- }else{
79
- error.value=''
80
- fieldcontainerclass.value=defaultcssclass
81
- }
82
- // console.log("validation result",props.setting.instancepath,)
83
- // error.value = newvalue[props.setting.instancepath].message
84
- })
85
-
86
- </script>
@@ -1,90 +0,0 @@
1
- import type { JSONSchema7,JSONSchema7Definition } from 'json-schema';
2
- import type {ListOptionType} from './type'
3
- export const prepareList=(schemaComposition:string,fsetting:JSONSchema7Definition | JSONSchema7Definition[] | undefined,labelfield:string,valuefield:string,propsoptions?:any[],):ListOptionType[]=>{
4
- let options :ListOptionType[] = []
5
- let fieldsetting:JSONSchema7 = {} as JSONSchema7
6
- Object.assign(fieldsetting,fsetting)
7
- // {...fsetting} as JSONSchema7
8
- try{
9
- const convertToList=(list:any[]):ListOptionType[]=>{
10
- let opts :ListOptionType[] = []
11
- if(list.length>0 && typeof list[0]=='object'){
12
- for(let i=0;i<list.length;i++){
13
- const t = list[i]
14
- const item = {value:t[valuefield], label:t[labelfield]}
15
- opts.push(item)
16
- }
17
- }else{
18
- opts = simpleArrayToObject(list)
19
- }
20
- return opts
21
- }
22
-
23
- if(Array.isArray(propsoptions)){
24
- if(propsoptions.length>0 && typeof propsoptions[0]== 'string'){
25
- options = simpleArrayToObject(propsoptions)
26
- }else{
27
- options = convertToList(propsoptions)
28
- }
29
-
30
- }
31
- else if(Array.isArray(fieldsetting.enum)){
32
-
33
- options = simpleArrayToObject(fieldsetting.enum)
34
- }else{
35
- let list:JSONSchema7Definition[]|undefined=[]
36
- switch(schemaComposition){
37
- case 'anyOf':
38
- list=fieldsetting.anyOf
39
- break;
40
- case 'oneOf':
41
- list=fieldsetting.oneOf
42
- break;
43
- default:
44
- break;
45
- }
46
- // console.log("get from anyof")
47
- // let list:any[]=fieldsetting.anyOf
48
- options = convertToList(list??[])
49
- }
50
-
51
- // else if(fieldsetting.oneOf && Array.isArray(fieldsetting.oneOf)){
52
- // let list:any[]=fieldsetting.oneOf
53
- // options = convertToList(list)
54
- // }
55
- //try validate data
56
- if(options.length>0){
57
- const d:any = options[0]
58
- if(typeof d.label=='undefined'){
59
- const errormsg = `undefine property '${labelfield}', correct 'optionLabel'`
60
- console.error(errormsg,fieldsetting)
61
- options=[{value:'',label:errormsg}]
62
- }
63
- if(typeof d.value=='undefined'){
64
- const errormsg = `undefine property '${valuefield}', correct 'optionValue`
65
- console.error(errormsg,fieldsetting)
66
- options=[{value:'',label:errormsg}]
67
- }
68
- }
69
- return options;
70
- }catch(error){
71
- console.error("xxxxx",error)
72
- return []
73
- }
74
- }
75
-
76
- export const simpleArrayToObject=(list:any[]):ListOptionType[]=>{
77
- let options :ListOptionType[] = []
78
- for (let i =0; i< list.length; i++){
79
- const value:string = list[i].toString()
80
- let item :any={value:value,label:value}
81
- options.push(item)
82
- }
83
- return options
84
- }
85
-
86
- export const camelCaseToWords = (s: string) =>{
87
- const result = s.replace(/([A-Z])/g, ' $1');
88
- return result.charAt(0).toUpperCase() + result.slice(1);
89
- }
90
-
@@ -1,32 +0,0 @@
1
- import { SimpleAppClient } from './SimpleAppClient';
2
- import type { JSONSchema7,JSONSchema7Definition } from 'json-schema';
3
- export type ListOptionType = {
4
- value?: string
5
- label?: string
6
- }
7
- export enum InputTableColumnType {
8
- 'field'='field',
9
- 'button'='button',
10
- 'checkbox'='checkbox',
11
- 'renderer'='renderer'
12
- }
13
- export type InputTableColumn={
14
- type:InputTableColumnType,
15
- title?:string
16
- field?:string
17
- renderer?:Function
18
- style?:string
19
- readonly?:boolean
20
- }
21
- export type SimpleAppFieldSetting= {
22
- path: string,
23
- instancepath: string,
24
- fieldsetting:JSONSchema7
25
- document:SimpleAppClient<any,any>
26
- modelObject: any,
27
- modelField: string,
28
- isrequired: boolean,
29
- readonly?:boolean
30
- // errors: props.document.getErrors()
31
- }
32
- // x.fieldsetting.pro