@vc-shell/create-vc-app 1.2.4-beta.8 → 2.0.0-alpha.1

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 (165) hide show
  1. package/README.md +44 -74
  2. package/dist/commands/add-module.d.ts +2 -0
  3. package/dist/commands/add-module.d.ts.map +1 -0
  4. package/dist/commands/init.d.ts +2 -0
  5. package/dist/commands/init.d.ts.map +1 -0
  6. package/dist/engine/codegen.d.ts +9 -0
  7. package/dist/engine/codegen.d.ts.map +1 -0
  8. package/dist/engine/helpers.d.ts +19 -0
  9. package/dist/engine/helpers.d.ts.map +1 -0
  10. package/dist/engine/template.d.ts +21 -0
  11. package/dist/engine/template.d.ts.map +1 -0
  12. package/dist/index.js +355 -526
  13. package/dist/output.d.ts +4 -0
  14. package/dist/output.d.ts.map +1 -0
  15. package/dist/templates/dynamic-module/_gitignore +4 -0
  16. package/dist/templates/dynamic-module/_package.json.ejs +26 -0
  17. package/dist/templates/dynamic-module/src/modules/index.ts.ejs +5 -0
  18. package/dist/templates/dynamic-module/tsconfig.json +14 -0
  19. package/dist/templates/dynamic-module/vite.config.mts.ejs +3 -0
  20. package/dist/templates/{base/_env → host-app/_env.ejs} +1 -1
  21. package/dist/templates/{base/_package.json → host-app/_package.json.ejs} +7 -7
  22. package/dist/templates/{base/index.html → host-app/index.html.ejs} +1 -1
  23. package/dist/templates/{base/src/bootstrap.ts → host-app/src/bootstrap.ts.ejs} +6 -3
  24. package/dist/templates/{base/src/main.ts → host-app/src/main.ts.ejs} +7 -5
  25. package/dist/templates/{base/src/pages/App.vue → host-app/src/pages/App.vue.ejs} +1 -1
  26. package/dist/templates/host-app/src/pages/Platform.vue +19 -0
  27. package/dist/templates/host-app/src/router/routes.ts.ejs +107 -0
  28. package/dist/templates/host-app/vite.config.mts.ejs +7 -0
  29. package/dist/templates/module/composables/index.ts.ejs +2 -0
  30. package/dist/templates/module/composables/useDetails.ts.ejs +38 -0
  31. package/dist/templates/module/composables/useList.ts.ejs +43 -0
  32. package/dist/templates/module/locales/en.json.ejs +22 -0
  33. package/dist/templates/module/pages/details.vue.ejs +111 -0
  34. package/dist/templates/module/pages/index.ts.ejs +2 -0
  35. package/dist/templates/module/pages/list.vue.ejs +117 -0
  36. package/dist/templates/{sample/classic-module → sample-module}/pages/details.vue +2 -2
  37. package/dist/templates/{sample/classic-module → sample-module}/pages/list.vue +3 -3
  38. package/dist/templates/standalone/LICENSE +12 -0
  39. package/dist/templates/standalone/README.md +54 -0
  40. package/dist/templates/standalone/_browserslistrc +3 -0
  41. package/dist/templates/standalone/_commitlintrc.json +3 -0
  42. package/dist/templates/standalone/_editorconfig +22 -0
  43. package/dist/templates/standalone/_env.ejs +3 -0
  44. package/dist/templates/standalone/_env.local.ejs +1 -0
  45. package/dist/templates/standalone/_eslintignore +3 -0
  46. package/dist/templates/standalone/_eslintrc.js +41 -0
  47. package/dist/templates/standalone/_github/COMMIT_CONVENTION.md +91 -0
  48. package/dist/templates/standalone/_github/PULL_REQUEST_TEMPLATE.md +8 -0
  49. package/dist/templates/standalone/_gitignore +71 -0
  50. package/dist/templates/standalone/_package.json.ejs +0 -0
  51. package/dist/templates/standalone/_prettierignore +4 -0
  52. package/dist/templates/standalone/_prettierrc +4 -0
  53. package/dist/templates/standalone/_vscode/extensions.json +14 -0
  54. package/dist/templates/standalone/_vscode/settings.json +14 -0
  55. package/dist/templates/standalone/_yarn/releases/yarn-4.9.1.cjs +948 -0
  56. package/dist/templates/standalone/_yarnrc.yml +7 -0
  57. package/dist/templates/standalone/index.html.ejs +26 -0
  58. package/dist/templates/standalone/postcss.config.cjs +6 -0
  59. package/dist/templates/standalone/public/assets/1.jpeg +0 -0
  60. package/dist/templates/standalone/public/assets/2.jpg +0 -0
  61. package/dist/templates/standalone/public/assets/3.jpg +0 -0
  62. package/dist/templates/standalone/public/assets/app-select.svg +11 -0
  63. package/dist/templates/standalone/public/assets/avatar.jpg +0 -0
  64. package/dist/templates/standalone/public/assets/background.jpg +0 -0
  65. package/dist/templates/standalone/public/assets/empty.png +0 -0
  66. package/dist/templates/standalone/public/assets/logo-white.svg +21 -0
  67. package/dist/templates/standalone/public/assets/logo.svg +8 -0
  68. package/dist/templates/standalone/public/assets/welcome.png +0 -0
  69. package/dist/templates/standalone/public/img/icons/apple-touch-icon.png +0 -0
  70. package/dist/templates/standalone/public/img/icons/favicon-16x16.png +0 -0
  71. package/dist/templates/standalone/public/img/icons/favicon-32x32.png +0 -0
  72. package/dist/templates/standalone/public/img/icons/favicon.ico +0 -0
  73. package/dist/templates/standalone/public/img/icons/mstile-150x150.png +0 -0
  74. package/dist/templates/standalone/public/img/icons/safari-pinned-tab.svg +32 -0
  75. package/dist/templates/standalone/src/api_client/README.md +199 -0
  76. package/dist/templates/standalone/src/bootstrap.ts.ejs +26 -0
  77. package/dist/templates/standalone/src/components/dashboard-widgets/Welcome.vue +51 -0
  78. package/dist/templates/standalone/src/composables/index.ts +1 -0
  79. package/dist/templates/standalone/src/env.d.ts +9 -0
  80. package/dist/templates/standalone/src/locales/en.json +16 -0
  81. package/dist/templates/standalone/src/locales/index.ts +2 -0
  82. package/dist/templates/{sample/overrides/main.ts → standalone/src/main.ts.ejs} +22 -9
  83. package/dist/templates/standalone/src/pages/App.vue.ejs +38 -0
  84. package/dist/templates/standalone/src/pages/Dashboard.vue.ejs +7 -0
  85. package/dist/templates/standalone/src/router/index.ts +10 -0
  86. package/dist/templates/{base/src/router/routes.ts → standalone/src/router/routes.ts.ejs} +27 -7
  87. package/dist/templates/standalone/src/shims-vue.d.ts +27 -0
  88. package/dist/templates/standalone/src/styles/custom.scss +116 -0
  89. package/dist/templates/standalone/src/styles/index.scss +8 -0
  90. package/dist/templates/standalone/src/vue-i18n.d.ts +10 -0
  91. package/dist/templates/standalone/tailwind.config.ts +7 -0
  92. package/dist/templates/standalone/tsconfig.json +16 -0
  93. package/dist/templates/standalone/yarn.lock +0 -0
  94. package/dist/types.d.ts +23 -0
  95. package/dist/types.d.ts.map +1 -0
  96. package/package.json +7 -4
  97. package/dist/templates/modules/classic-module/composables/index.ts +0 -2
  98. package/dist/templates/modules/classic-module/composables/use{{ModuleNamePascalCase}}Details/index.ts +0 -24
  99. package/dist/templates/modules/classic-module/composables/use{{ModuleNamePascalCase}}List/index.ts +0 -47
  100. package/dist/templates/modules/classic-module/locales/en.json +0 -37
  101. package/dist/templates/modules/classic-module/pages/details.vue +0 -87
  102. package/dist/templates/modules/classic-module/pages/list.vue +0 -257
  103. package/dist/templates/sample/classic-module/pages/index.ts +0 -2
  104. /package/dist/templates/{base → host-app}/LICENSE +0 -0
  105. /package/dist/templates/{base → host-app}/README.md +0 -0
  106. /package/dist/templates/{base → host-app}/_browserslistrc +0 -0
  107. /package/dist/templates/{base → host-app}/_commitlintrc.json +0 -0
  108. /package/dist/templates/{base → host-app}/_editorconfig +0 -0
  109. /package/dist/templates/{base/_env.local → host-app/_env.local.ejs} +0 -0
  110. /package/dist/templates/{base → host-app}/_eslintignore +0 -0
  111. /package/dist/templates/{base → host-app}/_eslintrc.js +0 -0
  112. /package/dist/templates/{base → host-app}/_github/COMMIT_CONVENTION.md +0 -0
  113. /package/dist/templates/{base → host-app}/_github/PULL_REQUEST_TEMPLATE.md +0 -0
  114. /package/dist/templates/{base → host-app}/_gitignore +0 -0
  115. /package/dist/templates/{base → host-app}/_prettierignore +0 -0
  116. /package/dist/templates/{base → host-app}/_prettierrc +0 -0
  117. /package/dist/templates/{base → host-app}/_vscode/extensions.json +0 -0
  118. /package/dist/templates/{base → host-app}/_vscode/settings.json +0 -0
  119. /package/dist/templates/{base → host-app}/_yarn/releases/yarn-4.9.1.cjs +0 -0
  120. /package/dist/templates/{base → host-app}/_yarnrc.yml +0 -0
  121. /package/dist/templates/{base → host-app}/postcss.config.cjs +0 -0
  122. /package/dist/templates/{base → host-app}/public/assets/1.jpeg +0 -0
  123. /package/dist/templates/{base → host-app}/public/assets/2.jpg +0 -0
  124. /package/dist/templates/{base → host-app}/public/assets/3.jpg +0 -0
  125. /package/dist/templates/{base → host-app}/public/assets/app-select.svg +0 -0
  126. /package/dist/templates/{base → host-app}/public/assets/avatar.jpg +0 -0
  127. /package/dist/templates/{base → host-app}/public/assets/background.jpg +0 -0
  128. /package/dist/templates/{base → host-app}/public/assets/empty.png +0 -0
  129. /package/dist/templates/{base → host-app}/public/assets/logo-white.svg +0 -0
  130. /package/dist/templates/{base → host-app}/public/assets/logo.svg +0 -0
  131. /package/dist/templates/{base → host-app}/public/assets/welcome.png +0 -0
  132. /package/dist/templates/{base → host-app}/public/img/icons/apple-touch-icon.png +0 -0
  133. /package/dist/templates/{base → host-app}/public/img/icons/favicon-16x16.png +0 -0
  134. /package/dist/templates/{base → host-app}/public/img/icons/favicon-32x32.png +0 -0
  135. /package/dist/templates/{base → host-app}/public/img/icons/favicon.ico +0 -0
  136. /package/dist/templates/{base → host-app}/public/img/icons/mstile-150x150.png +0 -0
  137. /package/dist/templates/{base → host-app}/public/img/icons/safari-pinned-tab.svg +0 -0
  138. /package/dist/templates/{base → host-app}/src/api_client/README.md +0 -0
  139. /package/dist/templates/{base → host-app}/src/components/dashboard-widgets/Welcome.vue +0 -0
  140. /package/dist/templates/{base → host-app}/src/composables/index.ts +0 -0
  141. /package/dist/templates/{base → host-app}/src/env.d.ts +0 -0
  142. /package/dist/templates/{base → host-app}/src/locales/en.json +0 -0
  143. /package/dist/templates/{base → host-app}/src/locales/index.ts +0 -0
  144. /package/dist/templates/{base/src/pages/Dashboard.vue → host-app/src/pages/Dashboard.vue.ejs} +0 -0
  145. /package/dist/templates/{base → host-app}/src/router/index.ts +0 -0
  146. /package/dist/templates/{base → host-app}/src/shims-vue.d.ts +0 -0
  147. /package/dist/templates/{base → host-app}/src/styles/custom.scss +0 -0
  148. /package/dist/templates/{base → host-app}/src/styles/index.scss +0 -0
  149. /package/dist/templates/{base → host-app}/src/vue-i18n.d.ts +0 -0
  150. /package/dist/templates/{base → host-app}/tailwind.config.ts +0 -0
  151. /package/dist/templates/{base → host-app}/tsconfig.json +0 -0
  152. /package/dist/templates/{base → host-app}/yarn.lock +0 -0
  153. /package/dist/templates/{modules/classic-module/index.ts → module/index.ts.ejs} +0 -0
  154. /package/dist/templates/{modules/classic-module → module}/locales/index.ts +0 -0
  155. /package/dist/templates/{sample/classic-module → sample-module}/composables/index.ts +0 -0
  156. /package/dist/templates/{sample/classic-module → sample-module}/composables/useDetails/index.ts +0 -0
  157. /package/dist/templates/{sample/classic-module → sample-module}/composables/useList/index.ts +0 -0
  158. /package/dist/templates/{sample/classic-module → sample-module}/index.ts +0 -0
  159. /package/dist/templates/{sample/classic-module → sample-module}/locales/en.json +0 -0
  160. /package/dist/templates/{sample/classic-module → sample-module}/locales/index.ts +0 -0
  161. /package/dist/templates/{modules/classic-module → sample-module}/pages/index.ts +0 -0
  162. /package/dist/templates/{mocks → sample-module}/sample-data/constants.ts +0 -0
  163. /package/dist/templates/{mocks → sample-module}/sample-data/index.ts +0 -0
  164. /package/dist/templates/{mocks → sample-module}/sample-data/methods.ts +0 -0
  165. /package/dist/templates/{base/vite.config.mts → standalone/vite.config.mts.ejs} +0 -0
@@ -1,257 +0,0 @@
1
- <template>
2
- <VcBlade
3
- :title="title"
4
- width="50%"
5
- :expanded="expanded"
6
- :closable="closable"
7
- :toolbar-items="bladeToolbar"
8
- @close="$emit('close:blade')"
9
- @expand="$emit('expand:blade')"
10
- @collapse="$emit('collapse:blade')"
11
- >
12
- <!-- Blade contents -->
13
- <!-- @vue-generic {never} -->
14
- <VcTable
15
- :expanded="expanded"
16
- class="tw-grow tw-basis-0"
17
- multiselect
18
- :loading="loading"
19
- :columns="columns"
20
- :sort="sortExpression"
21
- :current-page="currentPage"
22
- :search-value="searchValue"
23
- enable-item-actions
24
- :item-action-builder="actionBuilder"
25
- :pages="pages"
26
- :empty="empty"
27
- :notfound="notfound"
28
- :total-count="totalCount"
29
- :selected-item-id="selectedItemId"
30
- :search-placeholder="$t('{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.SEARCH.PLACEHOLDER')"
31
- :total-label="$t('{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.TABLE.TOTALS')"
32
- state-key="{{ModuleNameUppercaseSnakeCase}}"
33
- :items="data"
34
- @item-click="onItemClick"
35
- @header-click="onHeaderClick"
36
- @search:change="onSearchList"
37
- @pagination-click="onPaginationClick"
38
- @selection-changed="onSelectionChanged"
39
- >
40
- </VcTable>
41
- </VcBlade>
42
- </template>
43
-
44
- <script lang="ts" setup>
45
- import { computed, ref, markRaw, onMounted, watch } from "vue";
46
- import { IBladeToolbar, IParentCallArgs, ITableColumns, useBladeNavigation, useTableSort, IActionBuilderResult, useFunctions, usePopup } from "@vc-shell/framework";
47
- import { useI18n } from "vue-i18n";
48
- import { use{{ModuleNamePascalCase}}List } from "./../composables";
49
- import Details from "./details.vue";
50
-
51
- export interface Props {
52
- expanded?: boolean;
53
- closable?: boolean;
54
- param?: string;
55
- options?: Record<string, unknown>;
56
- }
57
-
58
- export interface Emits {
59
- (event: "parent:call", args: IParentCallArgs): void;
60
- (event: "collapse:blade"): void;
61
- (event: "expand:blade"): void;
62
- (event: "close:blade"): void;
63
- }
64
-
65
- defineOptions({
66
- url: "/{{ModuleName}}",
67
- name: "{{ModuleNamePascalCase}}List",
68
- isWorkspace: true,
69
- menuItem: {
70
- title: "{{ModuleNameUppercaseSnakeCase}}.MENU.TITLE",
71
- icon: "lucide-file",
72
- priority: 1,
73
- },
74
- });
75
-
76
- const props = withDefaults(defineProps<Props>(), {
77
- expanded: true,
78
- closable: true,
79
- });
80
-
81
- defineEmits<Emits>();
82
-
83
- const { t } = useI18n({ useScope: "global" });
84
- const { openBlade } = useBladeNavigation();
85
- const { debounce } = useFunctions();
86
- const { showConfirmation } = usePopup();
87
- const { sortExpression, handleSortChange: tableSortHandler } = useTableSort({
88
- initialDirection: "DESC",
89
- initialProperty: "createdDate",
90
- });
91
-
92
- const { getItems, data, loading, totalCount, pages, currentPage, searchQuery, removeItems } = use{{ModuleNamePascalCase}}List({
93
- sort: sortExpression.value,
94
- pageSize: 20,
95
- });
96
-
97
- const searchValue = ref();
98
- const selectedItemId = ref<string>();
99
- const selectedItemsIds = ref<string[]>([]);
100
-
101
- const empty = {
102
- icon: "lucide-file",
103
- text: computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.EMPTY.NO_ITEMS")),
104
- action: computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.EMPTY.ADD")),
105
- clickHandler: () => {
106
- addItem();
107
- },
108
- };
109
-
110
- const notfound = {
111
- icon: "lucide-file",
112
- text: computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.NOT_FOUND.EMPTY")),
113
- action: computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.NOT_FOUND.RESET")),
114
- clickHandler: async () => {
115
- searchValue.value = "";
116
- await getItems({
117
- ...searchQuery.value,
118
- keyword: "",
119
- });
120
- },
121
- };
122
-
123
- watch(
124
- () => props.param,
125
- (newVal) => {
126
- selectedItemId.value = newVal;
127
- },
128
- { immediate: true },
129
- );
130
-
131
- onMounted(async () => {
132
- await getItems({
133
- ...searchQuery.value,
134
- sort: sortExpression.value,
135
- });
136
- });
137
-
138
- const bladeToolbar = ref<IBladeToolbar[]>([
139
- {
140
- id: "refresh",
141
- title: computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.TOOLBAR.REFRESH")),
142
- icon: "material-refresh",
143
- async clickHandler() {
144
- await reload();
145
- },
146
- },
147
- {
148
- id: "add",
149
- icon: "material-add",
150
- title: computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.TOOLBAR.ADD")),
151
- clickHandler: () => {
152
- addItem();
153
- },
154
- },
155
- ]);
156
-
157
- const columns = ref<ITableColumns[]>([
158
- // You can add columns here
159
- ]);
160
-
161
- const title = computed(() => t("{{ModuleNameUppercaseSnakeCase}}.PAGES.LIST.TITLE"));
162
-
163
- const onSearchList = debounce(async (keyword: string) => {
164
- searchValue.value = keyword;
165
- await getItems({
166
- ...searchQuery.value,
167
- keyword,
168
- });
169
- }, 1000);
170
-
171
- const reload = async () => {
172
- await getItems({
173
- ...searchQuery.value,
174
- skip: (currentPage.value - 1) * (searchQuery.value.take ?? 10),
175
- sort: sortExpression.value,
176
- });
177
- };
178
-
179
- const addItem = () => {
180
- openBlade({
181
- blade: markRaw(Details),
182
- });
183
- };
184
-
185
- const onItemClick = (item: { id: string }) => {
186
- openBlade({
187
- blade: markRaw(Details),
188
- param: item.id,
189
- onOpen() {
190
- selectedItemId.value = item.id;
191
- },
192
- onClose() {
193
- selectedItemId.value = undefined;
194
- },
195
- });
196
- };
197
-
198
- const onHeaderClick = (item: ITableColumns) => {
199
- tableSortHandler(item.id);
200
- };
201
-
202
- const actionBuilder = (): IActionBuilderResult[] => {
203
- const result: IActionBuilderResult[] = [];
204
- result.push({
205
- icon: "material-delete",
206
- title: "Delete",
207
- type: "danger",
208
- async clickHandler(_item: { id: string }) {
209
- if (_item.id && !selectedItemsIds.value.includes(_item.id)) {
210
- selectedItemsIds.value.push(_item.id);
211
- }
212
- await remove(selectedItemsIds.value);
213
- selectedItemsIds.value = [];
214
- },
215
- });
216
-
217
- return result;
218
- };
219
-
220
- const onPaginationClick = async (page: number) => {
221
- await getItems({
222
- ...searchQuery.value,
223
- skip: (page - 1) * (searchQuery.value.take ?? 20),
224
- });
225
- };
226
-
227
- const onSelectionChanged = (items: Record<string, any>[]) => {
228
- selectedItemsIds.value = items.flatMap((item) => (item.id ? [item.id] : []));
229
- };
230
-
231
- async function remove(ids: string[]) {
232
- if (
233
- await showConfirmation(
234
- t(`{{ModuleNameUppercaseSnakeCase}}.PAGES.ALERTS.DELETE_SELECTED_CONFIRMATION.MESSAGE`, {
235
- count: selectedItemsIds.value.length,
236
- }),
237
- )
238
- ) {
239
- await removeItems({ ids });
240
- await reload();
241
- }
242
- }
243
-
244
- watch(
245
- () => sortExpression.value,
246
- async (newVal) => {
247
- await getItems({
248
- sort: newVal,
249
- });
250
- },
251
- );
252
-
253
- defineExpose({
254
- title,
255
- reload,
256
- });
257
- </script>
@@ -1,2 +0,0 @@
1
- export { default as List } from "./list.vue";
2
- export {default as Details } from './details.vue'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes