@cwa/nuxt-edge 1.0.0-29138192.e49c1a0

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 (387) hide show
  1. package/README.md +38 -0
  2. package/README.template.md +32 -0
  3. package/dist/layer/error.vue +13 -0
  4. package/dist/layer/layouts/CwaRootLayout.vue +140 -0
  5. package/dist/layer/nuxt.config.spec.ts +10 -0
  6. package/dist/layer/nuxt.config.ts +3 -0
  7. package/dist/layer/pages/_cwa/composables/useDataList.ts +50 -0
  8. package/dist/layer/pages/_cwa/composables/useDataType.ts +30 -0
  9. package/dist/layer/pages/_cwa/composables/useDynamicPageLoader.ts +28 -0
  10. package/dist/layer/pages/_cwa/composables/useItemPage.ts +172 -0
  11. package/dist/layer/pages/_cwa/composables/useListPage.ts +43 -0
  12. package/dist/layer/pages/_cwa/data/[type]/[iri].vue +17 -0
  13. package/dist/layer/pages/_cwa/data/[type].vue +131 -0
  14. package/dist/layer/pages/_cwa/data/index.vue +84 -0
  15. package/dist/layer/pages/_cwa/layouts/[iri].vue +174 -0
  16. package/dist/layer/pages/_cwa/layouts.vue +77 -0
  17. package/dist/layer/pages/_cwa/pages/[iri].vue +11 -0
  18. package/dist/layer/pages/_cwa/pages.vue +129 -0
  19. package/dist/layer/pages/_cwa/routes.vue +72 -0
  20. package/dist/layer/pages/_cwa/users/[iri].vue +248 -0
  21. package/dist/layer/pages/_cwa/users.vue +86 -0
  22. package/dist/layer/pages/_cwa.vue +43 -0
  23. package/dist/layer/pages/forgot-password.vue +32 -0
  24. package/dist/layer/pages/login.vue +33 -0
  25. package/dist/layer/pages/reset-password/[username]/[token].vue +39 -0
  26. package/dist/module.d.mts +53 -0
  27. package/dist/module.json +13 -0
  28. package/dist/module.mjs +235 -0
  29. package/dist/runtime/admin/admin.d.ts +36 -0
  30. package/dist/runtime/admin/admin.js +65 -0
  31. package/dist/runtime/admin/manageable-resource.d.ts +41 -0
  32. package/dist/runtime/admin/manageable-resource.js +206 -0
  33. package/dist/runtime/admin/manager-tabs-resolver.d.ts +17 -0
  34. package/dist/runtime/admin/manager-tabs-resolver.js +51 -0
  35. package/dist/runtime/admin/navigation-guard.d.ts +18 -0
  36. package/dist/runtime/admin/navigation-guard.js +55 -0
  37. package/dist/runtime/admin/resource-stack-manager.d.ts +92 -0
  38. package/dist/runtime/admin/resource-stack-manager.js +355 -0
  39. package/dist/runtime/api/api-documentation.d.ts +28 -0
  40. package/dist/runtime/api/api-documentation.js +131 -0
  41. package/dist/runtime/api/auth.d.ts +85 -0
  42. package/dist/runtime/api/auth.js +183 -0
  43. package/dist/runtime/api/fetcher/cwa-fetch.d.ts +5 -0
  44. package/dist/runtime/api/fetcher/cwa-fetch.js +20 -0
  45. package/dist/runtime/api/fetcher/fetch-status-manager.d.ts +51 -0
  46. package/dist/runtime/api/fetcher/fetch-status-manager.js +185 -0
  47. package/dist/runtime/api/fetcher/fetcher.d.ts +57 -0
  48. package/dist/runtime/api/fetcher/fetcher.js +222 -0
  49. package/dist/runtime/api/fetcher/preload-headers.d.ts +6 -0
  50. package/dist/runtime/api/fetcher/preload-headers.js +31 -0
  51. package/dist/runtime/api/forms.d.ts +40 -0
  52. package/dist/runtime/api/forms.js +40 -0
  53. package/dist/runtime/api/mercure.d.ts +33 -0
  54. package/dist/runtime/api/mercure.js +191 -0
  55. package/dist/runtime/composables/component/html-content.d.ts +2 -0
  56. package/dist/runtime/composables/component/html-content.js +82 -0
  57. package/dist/runtime/composables/cwa-collection-pagination.d.ts +13 -0
  58. package/dist/runtime/composables/cwa-collection-pagination.js +34 -0
  59. package/dist/runtime/composables/cwa-collection-resource.d.ts +16 -0
  60. package/dist/runtime/composables/cwa-collection-resource.js +92 -0
  61. package/dist/runtime/composables/cwa-image.d.ts +19 -0
  62. package/dist/runtime/composables/cwa-image.js +43 -0
  63. package/dist/runtime/composables/cwa-query-bound-model.d.ts +9 -0
  64. package/dist/runtime/composables/cwa-query-bound-model.js +108 -0
  65. package/dist/runtime/composables/cwa-resource-endpoint.d.ts +5 -0
  66. package/dist/runtime/composables/cwa-resource-endpoint.js +36 -0
  67. package/dist/runtime/composables/cwa-resource-manageable.d.ts +10 -0
  68. package/dist/runtime/composables/cwa-resource-manageable.js +32 -0
  69. package/dist/runtime/composables/cwa-resource-manager-tab.d.ts +17 -0
  70. package/dist/runtime/composables/cwa-resource-manager-tab.js +30 -0
  71. package/dist/runtime/composables/cwa-resource-model.d.ts +21 -0
  72. package/dist/runtime/composables/cwa-resource-model.js +149 -0
  73. package/dist/runtime/composables/cwa-resource-upload.d.ts +8 -0
  74. package/dist/runtime/composables/cwa-resource-upload.js +70 -0
  75. package/dist/runtime/composables/cwa-resource.d.ts +24 -0
  76. package/dist/runtime/composables/cwa-resource.js +22 -0
  77. package/dist/runtime/composables/cwa-select-input.d.ts +21 -0
  78. package/dist/runtime/composables/cwa-select-input.js +37 -0
  79. package/dist/runtime/composables/cwa-select.d.ts +15 -0
  80. package/dist/runtime/composables/cwa-select.js +24 -0
  81. package/dist/runtime/composables/cwa.d.ts +2 -0
  82. package/dist/runtime/composables/cwa.js +2 -0
  83. package/dist/runtime/composables/forgot-password.d.ts +9 -0
  84. package/dist/runtime/composables/forgot-password.js +45 -0
  85. package/dist/runtime/composables/login.d.ts +9 -0
  86. package/dist/runtime/composables/login.js +30 -0
  87. package/dist/runtime/composables/popper.d.ts +529 -0
  88. package/dist/runtime/composables/popper.js +104 -0
  89. package/dist/runtime/composables/process.d.ts +4 -0
  90. package/dist/runtime/composables/process.js +6 -0
  91. package/dist/runtime/composables/reset-password.d.ts +14 -0
  92. package/dist/runtime/composables/reset-password.js +75 -0
  93. package/dist/runtime/composables/transitions.d.ts +12 -0
  94. package/dist/runtime/composables/transitions.js +12 -0
  95. package/dist/runtime/cwa.d.ts +61 -0
  96. package/dist/runtime/cwa.js +123 -0
  97. package/dist/runtime/errors/cwa-resource-error.d.ts +18 -0
  98. package/dist/runtime/errors/cwa-resource-error.js +54 -0
  99. package/dist/runtime/plugin.d.ts +7 -0
  100. package/dist/runtime/plugin.js +18 -0
  101. package/dist/runtime/resources/resource-utils.d.ts +44 -0
  102. package/dist/runtime/resources/resource-utils.js +73 -0
  103. package/dist/runtime/resources/resources-manager.d.ts +70 -0
  104. package/dist/runtime/resources/resources-manager.js +463 -0
  105. package/dist/runtime/resources/resources.d.ts +53 -0
  106. package/dist/runtime/resources/resources.js +300 -0
  107. package/dist/runtime/route-middleware.d.ts +2 -0
  108. package/dist/runtime/route-middleware.js +86 -0
  109. package/dist/runtime/storage/storage.d.ts +20 -0
  110. package/dist/runtime/storage/storage.js +25 -0
  111. package/dist/runtime/storage/stores/admin/actions.d.ts +5 -0
  112. package/dist/runtime/storage/stores/admin/actions.js +10 -0
  113. package/dist/runtime/storage/stores/admin/admin-store.d.ts +18 -0
  114. package/dist/runtime/storage/stores/admin/admin-store.js +20 -0
  115. package/dist/runtime/storage/stores/admin/state.d.ts +7 -0
  116. package/dist/runtime/storage/stores/admin/state.js +9 -0
  117. package/dist/runtime/storage/stores/api-documentation/api-documentation-store.d.ts +16 -0
  118. package/dist/runtime/storage/stores/api-documentation/api-documentation-store.js +18 -0
  119. package/dist/runtime/storage/stores/api-documentation/state.d.ts +74 -0
  120. package/dist/runtime/storage/stores/api-documentation/state.js +6 -0
  121. package/dist/runtime/storage/stores/auth/auth-store.d.ts +16 -0
  122. package/dist/runtime/storage/stores/auth/auth-store.js +18 -0
  123. package/dist/runtime/storage/stores/auth/state.d.ts +20 -0
  124. package/dist/runtime/storage/stores/auth/state.js +15 -0
  125. package/dist/runtime/storage/stores/cwa-store-types.d.ts +14 -0
  126. package/dist/runtime/storage/stores/error/actions.d.ts +11 -0
  127. package/dist/runtime/storage/stores/error/actions.js +69 -0
  128. package/dist/runtime/storage/stores/error/error-store.d.ts +13 -0
  129. package/dist/runtime/storage/stores/error/error-store.js +21 -0
  130. package/dist/runtime/storage/stores/error/getters.d.ts +7 -0
  131. package/dist/runtime/storage/stores/error/getters.js +11 -0
  132. package/dist/runtime/storage/stores/error/state.d.ts +35 -0
  133. package/dist/runtime/storage/stores/error/state.js +15 -0
  134. package/dist/runtime/storage/stores/fetcher/actions.d.ts +49 -0
  135. package/dist/runtime/storage/stores/fetcher/actions.js +125 -0
  136. package/dist/runtime/storage/stores/fetcher/fetcher-store.d.ts +19 -0
  137. package/dist/runtime/storage/stores/fetcher/fetcher-store.js +23 -0
  138. package/dist/runtime/storage/stores/fetcher/getter-utils.d.ts +7 -0
  139. package/dist/runtime/storage/stores/fetcher/getter-utils.js +27 -0
  140. package/dist/runtime/storage/stores/fetcher/getters.d.ts +13 -0
  141. package/dist/runtime/storage/stores/fetcher/getters.js +52 -0
  142. package/dist/runtime/storage/stores/fetcher/state.d.ts +25 -0
  143. package/dist/runtime/storage/stores/fetcher/state.js +7 -0
  144. package/dist/runtime/storage/stores/mercure/mercure-store.d.ts +16 -0
  145. package/dist/runtime/storage/stores/mercure/mercure-store.js +18 -0
  146. package/dist/runtime/storage/stores/mercure/state.d.ts +5 -0
  147. package/dist/runtime/storage/stores/mercure/state.js +6 -0
  148. package/dist/runtime/storage/stores/resources/actions.d.ts +54 -0
  149. package/dist/runtime/storage/stores/resources/actions.js +390 -0
  150. package/dist/runtime/storage/stores/resources/getter-utils.d.ts +7 -0
  151. package/dist/runtime/storage/stores/resources/getter-utils.js +27 -0
  152. package/dist/runtime/storage/stores/resources/getters.d.ts +38 -0
  153. package/dist/runtime/storage/stores/resources/getters.js +251 -0
  154. package/dist/runtime/storage/stores/resources/resources-store.d.ts +19 -0
  155. package/dist/runtime/storage/stores/resources/resources-store.js +23 -0
  156. package/dist/runtime/storage/stores/resources/state.d.ts +64 -0
  157. package/dist/runtime/storage/stores/resources/state.js +24 -0
  158. package/dist/runtime/templates/assets/base.css +1 -0
  159. package/dist/runtime/templates/assets/cwa.css +1 -0
  160. package/dist/runtime/templates/components/core/ComponentPlaceholder.vue +18 -0
  161. package/dist/runtime/templates/components/core/ComponentPlaceholder.vue.d.ts +3 -0
  162. package/dist/runtime/templates/components/core/ComponentPosition.spec.ts.snap +16 -0
  163. package/dist/runtime/templates/components/core/ComponentPosition.vue +63 -0
  164. package/dist/runtime/templates/components/core/ComponentPosition.vue.d.ts +3 -0
  165. package/dist/runtime/templates/components/core/ConfirmDialog.vue +41 -0
  166. package/dist/runtime/templates/components/core/ConfirmDialog.vue.d.ts +9 -0
  167. package/dist/runtime/templates/components/core/DialogBox.vue +95 -0
  168. package/dist/runtime/templates/components/core/DialogBox.vue.d.ts +38 -0
  169. package/dist/runtime/templates/components/core/README.md +1 -0
  170. package/dist/runtime/templates/components/core/ResourceLoader.spec.ts.snap +39 -0
  171. package/dist/runtime/templates/components/core/ResourceLoader.vue +151 -0
  172. package/dist/runtime/templates/components/core/ResourceLoader.vue.d.ts +13 -0
  173. package/dist/runtime/templates/components/core/admin/ListContainer.vue +7 -0
  174. package/dist/runtime/templates/components/core/admin/ListContainer.vue.d.ts +12 -0
  175. package/dist/runtime/templates/components/core/admin/ListContent.vue +136 -0
  176. package/dist/runtime/templates/components/core/admin/ListContent.vue.d.ts +21 -0
  177. package/dist/runtime/templates/components/core/admin/ListFilter.vue +49 -0
  178. package/dist/runtime/templates/components/core/admin/ListFilter.vue.d.ts +9 -0
  179. package/dist/runtime/templates/components/core/admin/ListFilterButton.vue +53 -0
  180. package/dist/runtime/templates/components/core/admin/ListFilterButton.vue.d.ts +9 -0
  181. package/dist/runtime/templates/components/core/admin/ListHeading.vue +32 -0
  182. package/dist/runtime/templates/components/core/admin/ListHeading.vue.d.ts +20 -0
  183. package/dist/runtime/templates/components/core/admin/ListPagination.vue +87 -0
  184. package/dist/runtime/templates/components/core/admin/ListPagination.vue.d.ts +15 -0
  185. package/dist/runtime/templates/components/core/admin/ListPaginationButton.vue +18 -0
  186. package/dist/runtime/templates/components/core/admin/ListPaginationButton.vue.d.ts +16 -0
  187. package/dist/runtime/templates/components/core/admin/PageAdminModal.vue +260 -0
  188. package/dist/runtime/templates/components/core/admin/PageAdminModal.vue.d.ts +12 -0
  189. package/dist/runtime/templates/components/core/admin/PageDataAdminModal.vue +187 -0
  190. package/dist/runtime/templates/components/core/admin/PageDataAdminModal.vue.d.ts +13 -0
  191. package/dist/runtime/templates/components/core/admin/ResourceModal.vue +99 -0
  192. package/dist/runtime/templates/components/core/admin/ResourceModal.vue.d.ts +27 -0
  193. package/dist/runtime/templates/components/core/admin/ResourceModalOverlay.vue +27 -0
  194. package/dist/runtime/templates/components/core/admin/ResourceModalOverlay.vue.d.ts +6 -0
  195. package/dist/runtime/templates/components/core/admin/ResourceModalOverlayTemplate.vue +23 -0
  196. package/dist/runtime/templates/components/core/admin/ResourceModalOverlayTemplate.vue.d.ts +15 -0
  197. package/dist/runtime/templates/components/core/admin/ResourceModalTabs.vue +77 -0
  198. package/dist/runtime/templates/components/core/admin/ResourceModalTabs.vue.d.ts +19 -0
  199. package/dist/runtime/templates/components/core/admin/RouteListRow.vue +102 -0
  200. package/dist/runtime/templates/components/core/admin/RouteListRow.vue.d.ts +20 -0
  201. package/dist/runtime/templates/components/core/admin/RouteRedirectsTree.vue +52 -0
  202. package/dist/runtime/templates/components/core/admin/RouteRedirectsTree.vue.d.ts +10 -0
  203. package/dist/runtime/templates/components/core/admin/RoutesTab.vue +273 -0
  204. package/dist/runtime/templates/components/core/admin/RoutesTab.vue.d.ts +12 -0
  205. package/dist/runtime/templates/components/core/admin/form/FilterFormWrapper.vue +18 -0
  206. package/dist/runtime/templates/components/core/admin/form/FilterFormWrapper.vue.d.ts +16 -0
  207. package/dist/runtime/templates/components/core/admin/form/FilterSelect.vue +86 -0
  208. package/dist/runtime/templates/components/core/admin/form/FilterSelect.vue.d.ts +3 -0
  209. package/dist/runtime/templates/components/core/admin/form/ModalInfo.vue +23 -0
  210. package/dist/runtime/templates/components/core/admin/form/ModalInfo.vue.d.ts +16 -0
  211. package/dist/runtime/templates/components/core/admin/form/ModalInput.vue +30 -0
  212. package/dist/runtime/templates/components/core/admin/form/ModalInput.vue.d.ts +15 -0
  213. package/dist/runtime/templates/components/core/admin/form/ModalSelect.vue +99 -0
  214. package/dist/runtime/templates/components/core/admin/form/ModalSelect.vue.d.ts +6 -0
  215. package/dist/runtime/templates/components/core/admin/form/PageTypeSelect.vue +112 -0
  216. package/dist/runtime/templates/components/core/admin/form/PageTypeSelect.vue.d.ts +4 -0
  217. package/dist/runtime/templates/components/core/assets/CwaLogo.vue +21 -0
  218. package/dist/runtime/templates/components/core/assets/CwaLogo.vue.d.ts +2 -0
  219. package/dist/runtime/templates/components/core/assets/IconComponents.vue +15 -0
  220. package/dist/runtime/templates/components/core/assets/IconComponents.vue.d.ts +2 -0
  221. package/dist/runtime/templates/components/core/assets/IconData.vue +24 -0
  222. package/dist/runtime/templates/components/core/assets/IconData.vue.d.ts +2 -0
  223. package/dist/runtime/templates/components/core/assets/IconLayouts.vue +20 -0
  224. package/dist/runtime/templates/components/core/assets/IconLayouts.vue.d.ts +2 -0
  225. package/dist/runtime/templates/components/core/assets/IconPages.vue +21 -0
  226. package/dist/runtime/templates/components/core/assets/IconPages.vue.d.ts +2 -0
  227. package/dist/runtime/templates/components/core/assets/IconRoutes.vue +23 -0
  228. package/dist/runtime/templates/components/core/assets/IconRoutes.vue.d.ts +2 -0
  229. package/dist/runtime/templates/components/core/assets/IconUsers.vue +13 -0
  230. package/dist/runtime/templates/components/core/assets/IconUsers.vue.d.ts +2 -0
  231. package/dist/runtime/templates/components/core/useDataResolver.d.ts +12 -0
  232. package/dist/runtime/templates/components/core/useDataResolver.js +109 -0
  233. package/dist/runtime/templates/components/main/ComponentGroup.Util.Positions.d.ts +6 -0
  234. package/dist/runtime/templates/components/main/ComponentGroup.Util.Positions.js +164 -0
  235. package/dist/runtime/templates/components/main/ComponentGroup.Util.Synchronizer.d.ts +20 -0
  236. package/dist/runtime/templates/components/main/ComponentGroup.Util.Synchronizer.js +69 -0
  237. package/dist/runtime/templates/components/main/ComponentGroup.spec.ts.snap +59 -0
  238. package/dist/runtime/templates/components/main/ComponentGroup.vue +107 -0
  239. package/dist/runtime/templates/components/main/ComponentGroup.vue.d.ts +9 -0
  240. package/dist/runtime/templates/components/main/CwaLink.vue +51 -0
  241. package/dist/runtime/templates/components/main/CwaLink.vue.d.ts +14 -0
  242. package/dist/runtime/templates/components/main/DefaultLayout.vue +8 -0
  243. package/dist/runtime/templates/components/main/DefaultLayout.vue.d.ts +12 -0
  244. package/dist/runtime/templates/components/main/ErrorPage.vue +98 -0
  245. package/dist/runtime/templates/components/main/ErrorPage.vue.d.ts +6 -0
  246. package/dist/runtime/templates/components/main/Logo.vue +18 -0
  247. package/dist/runtime/templates/components/main/Logo.vue.d.ts +2 -0
  248. package/dist/runtime/templates/components/main/README.md +7 -0
  249. package/dist/runtime/templates/components/main/admin/_common/ResourceContextItem.vue +41 -0
  250. package/dist/runtime/templates/components/main/admin/_common/ResourceContextItem.vue.d.ts +7 -0
  251. package/dist/runtime/templates/components/main/admin/_common/ResourceLoadingIndicator.vue +48 -0
  252. package/dist/runtime/templates/components/main/admin/_common/ResourceLoadingIndicator.vue.d.ts +2 -0
  253. package/dist/runtime/templates/components/main/admin/_common/useDynamicPositionSelectOptions.d.ts +5 -0
  254. package/dist/runtime/templates/components/main/admin/_common/useDynamicPositionSelectOptions.js +19 -0
  255. package/dist/runtime/templates/components/main/admin/header/Header.vue +207 -0
  256. package/dist/runtime/templates/components/main/admin/header/Header.vue.d.ts +2 -0
  257. package/dist/runtime/templates/components/main/admin/header/_parts/Menu.vue +189 -0
  258. package/dist/runtime/templates/components/main/admin/header/_parts/Menu.vue.d.ts +2 -0
  259. package/dist/runtime/templates/components/main/admin/header/_parts/MenuLink.vue +14 -0
  260. package/dist/runtime/templates/components/main/admin/header/_parts/MenuLink.vue.d.ts +16 -0
  261. package/dist/runtime/templates/components/main/admin/header/_parts/MenuPrimaryLink.vue +19 -0
  262. package/dist/runtime/templates/components/main/admin/header/_parts/MenuPrimaryLink.vue.d.ts +15 -0
  263. package/dist/runtime/templates/components/main/admin/header/_parts/Notification.vue +69 -0
  264. package/dist/runtime/templates/components/main/admin/header/_parts/Notification.vue.d.ts +12 -0
  265. package/dist/runtime/templates/components/main/admin/header/_parts/OutdatedContentNotice.vue +19 -0
  266. package/dist/runtime/templates/components/main/admin/header/_parts/OutdatedContentNotice.vue.d.ts +2 -0
  267. package/dist/runtime/templates/components/main/admin/header/_parts/PathSelector.vue +79 -0
  268. package/dist/runtime/templates/components/main/admin/header/_parts/PathSelector.vue.d.ts +2 -0
  269. package/dist/runtime/templates/components/main/admin/header/_parts/RequestErrors.vue +52 -0
  270. package/dist/runtime/templates/components/main/admin/header/_parts/RequestErrors.vue.d.ts +2 -0
  271. package/dist/runtime/templates/components/main/admin/resource-manager/ComponentFocus.vue +151 -0
  272. package/dist/runtime/templates/components/main/admin/resource-manager/ComponentFocus.vue.d.ts +10 -0
  273. package/dist/runtime/templates/components/main/admin/resource-manager/LayoutPageOverlay.vue +192 -0
  274. package/dist/runtime/templates/components/main/admin/resource-manager/LayoutPageOverlay.vue.d.ts +6 -0
  275. package/dist/runtime/templates/components/main/admin/resource-manager/ResourceManager.vue +186 -0
  276. package/dist/runtime/templates/components/main/admin/resource-manager/ResourceManager.vue.d.ts +9 -0
  277. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/AddComponentDialog.vue +205 -0
  278. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/AddComponentDialog.vue.d.ts +2 -0
  279. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/CwaResourceManagerContextMenu.vue +38 -0
  280. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/CwaResourceManagerContextMenu.vue.d.ts +6 -0
  281. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/ManagerTab.vue +15 -0
  282. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/ManagerTab.vue.d.ts +7 -0
  283. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/ManagerTabs.vue +44 -0
  284. package/dist/runtime/templates/components/main/admin/resource-manager/_parts/ManagerTabs.vue.d.ts +13 -0
  285. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/ResourceInfoTab.vue +59 -0
  286. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/ResourceInfoTab.vue.d.ts +6 -0
  287. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/component/Order.vue +75 -0
  288. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/component/Order.vue.d.ts +6 -0
  289. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/component/Publish.vue +41 -0
  290. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/component/Publish.vue.d.ts +6 -0
  291. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/component/Ui.vue +101 -0
  292. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/component/Ui.vue.d.ts +6 -0
  293. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/group/Group.vue +34 -0
  294. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/group/Group.vue.d.ts +6 -0
  295. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/position/DataPage.vue +121 -0
  296. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/position/DataPage.vue.d.ts +6 -0
  297. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/position/DynamicPage.vue +52 -0
  298. package/dist/runtime/templates/components/main/admin/resource-manager/_tabs/position/DynamicPage.vue.d.ts +6 -0
  299. package/dist/runtime/templates/components/main/admin/resource-manager/cta/CurrentResourceCta.vue +99 -0
  300. package/dist/runtime/templates/components/main/admin/resource-manager/cta/CurrentResourceCta.vue.d.ts +7 -0
  301. package/dist/runtime/templates/components/main/admin/resource-manager/cta/NewResourceCta.vue +59 -0
  302. package/dist/runtime/templates/components/main/admin/resource-manager/cta/NewResourceCta.vue.d.ts +7 -0
  303. package/dist/runtime/templates/components/main/admin/resource-manager/cta/ResourceManagerCtaButton.vue +28 -0
  304. package/dist/runtime/templates/components/main/admin/resource-manager/cta/ResourceManagerCtaButton.vue.d.ts +2 -0
  305. package/dist/runtime/templates/components/main/auth/ForgotPasswordPage.vue +55 -0
  306. package/dist/runtime/templates/components/main/auth/ForgotPasswordPage.vue.d.ts +20 -0
  307. package/dist/runtime/templates/components/main/auth/LoginPage.vue +60 -0
  308. package/dist/runtime/templates/components/main/auth/LoginPage.vue.d.ts +23 -0
  309. package/dist/runtime/templates/components/main/auth/ResetPasswordPage.vue +59 -0
  310. package/dist/runtime/templates/components/main/auth/ResetPasswordPage.vue.d.ts +27 -0
  311. package/dist/runtime/templates/components/main/auth/_parts/AuthPageLink.spec.ts.snap +14 -0
  312. package/dist/runtime/templates/components/main/auth/_parts/AuthPageLink.vue +17 -0
  313. package/dist/runtime/templates/components/main/auth/_parts/AuthPageLink.vue.d.ts +6 -0
  314. package/dist/runtime/templates/components/main/auth/_parts/AuthTemplate.spec.ts.snap +90 -0
  315. package/dist/runtime/templates/components/main/auth/_parts/AuthTemplate.vue +45 -0
  316. package/dist/runtime/templates/components/main/auth/_parts/AuthTemplate.vue.d.ts +17 -0
  317. package/dist/runtime/templates/components/main/auth/_parts/InputField.spec.ts.snap +111 -0
  318. package/dist/runtime/templates/components/main/auth/_parts/InputField.vue +50 -0
  319. package/dist/runtime/templates/components/main/auth/_parts/InputField.vue.d.ts +17 -0
  320. package/dist/runtime/templates/components/ui/BackgroundParticles.vue +960 -0
  321. package/dist/runtime/templates/components/ui/BackgroundParticles.vue.d.ts +2 -0
  322. package/dist/runtime/templates/components/ui/Hamburger.vue +75 -0
  323. package/dist/runtime/templates/components/ui/Hamburger.vue.d.ts +9 -0
  324. package/dist/runtime/templates/components/ui/ProgressBar.spec.ts.snap +71 -0
  325. package/dist/runtime/templates/components/ui/ProgressBar.vue +29 -0
  326. package/dist/runtime/templates/components/ui/ProgressBar.vue.d.ts +9 -0
  327. package/dist/runtime/templates/components/ui/README.md +6 -0
  328. package/dist/runtime/templates/components/ui/alert/Info.spec.ts.snap +23 -0
  329. package/dist/runtime/templates/components/ui/alert/Info.vue +13 -0
  330. package/dist/runtime/templates/components/ui/alert/Info.vue.d.ts +12 -0
  331. package/dist/runtime/templates/components/ui/alert/Warning.spec.ts.snap +14 -0
  332. package/dist/runtime/templates/components/ui/alert/Warning.vue +8 -0
  333. package/dist/runtime/templates/components/ui/alert/Warning.vue.d.ts +12 -0
  334. package/dist/runtime/templates/components/ui/form/Button.vue +139 -0
  335. package/dist/runtime/templates/components/ui/form/Button.vue.d.ts +52 -0
  336. package/dist/runtime/templates/components/ui/form/ButtonPopoverGroup.vue +18 -0
  337. package/dist/runtime/templates/components/ui/form/ButtonPopoverGroup.vue.d.ts +10 -0
  338. package/dist/runtime/templates/components/ui/form/ButtonPopoverItem.vue +15 -0
  339. package/dist/runtime/templates/components/ui/form/ButtonPopoverItem.vue.d.ts +10 -0
  340. package/dist/runtime/templates/components/ui/form/File.vue +72 -0
  341. package/dist/runtime/templates/components/ui/form/File.vue.d.ts +9 -0
  342. package/dist/runtime/templates/components/ui/form/Input.vue +22 -0
  343. package/dist/runtime/templates/components/ui/form/Input.vue.d.ts +5 -0
  344. package/dist/runtime/templates/components/ui/form/LabelWrapper.vue +16 -0
  345. package/dist/runtime/templates/components/ui/form/LabelWrapper.vue.d.ts +15 -0
  346. package/dist/runtime/templates/components/ui/form/SearchResource.vue +212 -0
  347. package/dist/runtime/templates/components/ui/form/SearchResource.vue.d.ts +14 -0
  348. package/dist/runtime/templates/components/ui/form/Select.vue +60 -0
  349. package/dist/runtime/templates/components/ui/form/Select.vue.d.ts +3 -0
  350. package/dist/runtime/templates/components/ui/form/Toggle.vue +39 -0
  351. package/dist/runtime/templates/components/ui/form/Toggle.vue.d.ts +6 -0
  352. package/dist/runtime/templates/components/ui/icon/ArrowIcon.vue +30 -0
  353. package/dist/runtime/templates/components/ui/icon/ArrowIcon.vue.d.ts +2 -0
  354. package/dist/runtime/templates/components/ui/icon/BinIcon.vue +24 -0
  355. package/dist/runtime/templates/components/ui/icon/BinIcon.vue.d.ts +2 -0
  356. package/dist/runtime/templates/components/ui/icon/CogIcon.vue +9 -0
  357. package/dist/runtime/templates/components/ui/icon/CogIcon.vue.d.ts +2 -0
  358. package/dist/runtime/templates/components/ui/icon/EyeIcon.vue +24 -0
  359. package/dist/runtime/templates/components/ui/icon/EyeIcon.vue.d.ts +2 -0
  360. package/dist/runtime/templates/components/ui/icon/PenIcon.vue +12 -0
  361. package/dist/runtime/templates/components/ui/icon/PenIcon.vue.d.ts +2 -0
  362. package/dist/runtime/templates/components/ui/icon/PlusIcon.vue +9 -0
  363. package/dist/runtime/templates/components/ui/icon/PlusIcon.vue.d.ts +2 -0
  364. package/dist/runtime/templates/components/ui/icon/SearchIcon.vue +10 -0
  365. package/dist/runtime/templates/components/ui/icon/SearchIcon.vue.d.ts +2 -0
  366. package/dist/runtime/templates/components/ui/icon/TickIcon.vue +23 -0
  367. package/dist/runtime/templates/components/ui/icon/TickIcon.vue.d.ts +2 -0
  368. package/dist/runtime/templates/components/ui/icon/WarningIcon.vue +11 -0
  369. package/dist/runtime/templates/components/ui/icon/WarningIcon.vue.d.ts +2 -0
  370. package/dist/runtime/templates/components/ui/icon/XMarkIcon.vue +15 -0
  371. package/dist/runtime/templates/components/ui/icon/XMarkIcon.vue.d.ts +2 -0
  372. package/dist/runtime/templates/components/utils/ContextMenu.vue +59 -0
  373. package/dist/runtime/templates/components/utils/ContextMenu.vue.d.ts +21 -0
  374. package/dist/runtime/templates/components/utils/HotSpot.vue +24 -0
  375. package/dist/runtime/templates/components/utils/HotSpot.vue.d.ts +9 -0
  376. package/dist/runtime/templates/components/utils/README.md +1 -0
  377. package/dist/runtime/templates/components/utils/Spinner.spec.ts.snap +56 -0
  378. package/dist/runtime/templates/components/utils/Spinner.vue +42 -0
  379. package/dist/runtime/templates/components/utils/Spinner.vue.d.ts +5 -0
  380. package/dist/runtime/templates/components/utils/SpinnerTick.vue +43 -0
  381. package/dist/runtime/templates/components/utils/SpinnerTick.vue.d.ts +6 -0
  382. package/dist/runtime/templates/cwa-page.spec.ts.snap +20 -0
  383. package/dist/runtime/templates/cwa-page.vue +32 -0
  384. package/dist/runtime/templates/cwa-page.vue.d.ts +2 -0
  385. package/dist/runtime/types/popper.d.ts +14 -0
  386. package/dist/types.d.mts +9 -0
  387. package/package.json +108 -0
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ <!---
2
+ This file is auto-generate by a github hook please modify README.template.md if you don't want to lose your work
3
+ -->
4
+ # CWA Nuxt 3 Module (in development)
5
+
6
+ [![codecov](https://codecov.io/github/components-web-app/cwa-nuxt-module/branch/feat/manager-tabs/graph/badge.svg?token=Z6GQJN413O)](https://app.codecov.io/gh/components-web-app/cwa-nuxt-module/tree/feat/manager-tabs)
7
+
8
+ This module is designed to work with the [API Component Bundle](https://github.com/components-web-app/api-components-bundle) and will provide a full user-interface and utilities to easily create custom web apps with an advanced in-line content management system
9
+
10
+ ## CWA Module in Action
11
+
12
+ ### Template using this module for front-end and API Components Bundle for back-end
13
+ https://github.com/components-web-app/components-web-app/tree/v3
14
+
15
+ ### Template application deployed online
16
+ https://cwa-v3-silverback-web-apps.vercel.app/
17
+
18
+ ## Development
19
+
20
+ - Run `pnpm run dev:prepare` to generate type stubs.
21
+ - Use `pnpm run dev` to start [playground](./playground) in development mode.
22
+
23
+ ### Linting
24
+
25
+ - Run `pnpm run lint` or `pnpm run lint:fix`
26
+
27
+ ### Testing
28
+
29
+ We have built in testing using `vitest`.
30
+
31
+ - To run tests as a one-off use `pnpm run test`
32
+ - To include coverage run `pnpm run test:coverage`
33
+ - To run tests in watch mode during development run `pnpm run test:watch`
34
+ - If you want to check coverage updates at the same time as watching for file changes you can run `pnpm run test:watch:coverage`
35
+
36
+ ## Test coverage for branch `feat/manager-tabs`
37
+
38
+ ![Codecov sunburst image](https://codecov.io/github/components-web-app/cwa-nuxt-module/branch/feat/manager-tabs/graphs/sunburst.svg?token=Z6GQJN413O)
@@ -0,0 +1,32 @@
1
+ # CWA Nuxt 3 Module (in development)
2
+
3
+ [![codecov](https://codecov.io/github/components-web-app/cwa-nuxt-module/branch/{{ current.branch }}/graph/badge.svg?token=Z6GQJN413O)](https://app.codecov.io/gh/components-web-app/cwa-nuxt-module/tree/{{ current.branch }})
4
+
5
+ This module is designed to work with the [API Component Bundle](https://github.com/components-web-app/api-components-bundle) and will provide a full user-interface and utilities to easily create custom web apps with an advanced in-line content management system
6
+
7
+ ## CWA Module in Action
8
+
9
+ ### Template using this module for front-end and API Components Bundle for back-end
10
+ https://github.com/components-web-app/components-web-app/tree/v3
11
+
12
+ ## Development
13
+
14
+ - Run `pnpm run dev:prepare` to generate type stubs.
15
+ - Use `pnpm run dev` to start [playground](./playground) in development mode.
16
+
17
+ ### Linting
18
+
19
+ - Run `pnpm run lint` or `pnpm run lint:fix`
20
+
21
+ ### Testing
22
+
23
+ We have built in testing using `vitest`.
24
+
25
+ - To run tests as a one-off use `pnpm run test`
26
+ - To include coverage run `pnpm run test:coverage`
27
+ - To run tests in watch mode during development run `pnpm run test:watch`
28
+ - If you want to check coverage updates at the same time as watching for file changes you can run `pnpm run test:watch:coverage`
29
+
30
+ ## Test coverage for branch `{{ current.branch }}`
31
+
32
+ ![Codecov sunburst image](https://codecov.io/github/components-web-app/cwa-nuxt-module/branch/{{ current.branch }}/graphs/sunburst.svg?token=Z6GQJN413O)
@@ -0,0 +1,13 @@
1
+ <script setup lang="ts">
2
+ import type { NuxtError } from '#app'
3
+
4
+ defineProps<{
5
+ error: NuxtError
6
+ }>()
7
+ </script>
8
+
9
+ <template>
10
+ <NuxtLayout>
11
+ <CwaErrorPage :error="error" />
12
+ </NuxtLayout>
13
+ </template>
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <div
3
+ id="cwa-root-layout"
4
+ ref="rootLayout"
5
+ class="cwa:relative cwa:h-full cwa:flex cwa:flex-col"
6
+ @contextmenu="closeContextMenu"
7
+ >
8
+ <ClientOnly>
9
+ <LazyCwaAdminHeader v-if="showAdmin" />
10
+ <OutdatedContentNotice
11
+ v-else
12
+ class="cwa:absolute cwa:top-0 cwa:mt-1.5 cwa:left-1/2 cwa:-translate-x-1/2 cwa:z-50"
13
+ />
14
+ </ClientOnly>
15
+ <component
16
+ :is="resolvedComponent"
17
+ v-if="resolvedComponent"
18
+ class="cwa:relative"
19
+ @click.stop="onLayoutClick"
20
+ @contextmenu.stop="onLayoutContextMenu"
21
+ >
22
+ <div
23
+ ref="page"
24
+ class="cwa:grow"
25
+ @click.stop="onPageClick"
26
+ @contextmenu.stop="onPageContextMenu"
27
+ >
28
+ <slot />
29
+ </div>
30
+ </component>
31
+ <ClientOnly>
32
+ <template v-if="showAdmin">
33
+ <LazyCwaAdminResourceManager ref="resourceManager" />
34
+ <LayoutPageOverlay
35
+ v-if="$cwa.admin.isEditing && page && rootLayout"
36
+ :page="page"
37
+ :layout="rootLayout"
38
+ />
39
+ <teleport to="body">
40
+ <DialogsWrapper />
41
+ </teleport>
42
+ </template>
43
+ </ClientOnly>
44
+ </div>
45
+ </template>
46
+
47
+ <script setup lang="ts">
48
+ import { computed, ref, getCurrentInstance, watch, nextTick } from 'vue'
49
+ import { DialogsWrapper } from 'vuejs-confirm-dialog'
50
+ import { useRouter } from 'vue-router'
51
+ import { useWindowScroll } from '@vueuse/core'
52
+ import { useCwa } from '#imports'
53
+ import { LazyCwaAdminHeader, LazyCwaAdminResourceManager, LazyCwaDefaultLayout } from '#components'
54
+ import OutdatedContentNotice from '#cwa/runtime/templates/components/main/admin/header/_parts/OutdatedContentNotice.vue'
55
+ import type { GlobalComponentNames } from '#cwa/module'
56
+ import LayoutPageOverlay from '#cwa/runtime/templates/components/main/admin/resource-manager/LayoutPageOverlay.vue'
57
+
58
+ const $cwa = useCwa()
59
+ const currentRoute = useRouter().currentRoute
60
+ const resourceManager = ref<null | InstanceType<typeof LazyCwaAdminResourceManager>>(null)
61
+ const page = ref<null | HTMLDivElement>(null)
62
+ const rootLayout = ref<null | HTMLDivElement>(null)
63
+ const instance = getCurrentInstance()
64
+
65
+ const cwaPageMeta = computed(() => {
66
+ return currentRoute.value.meta?.cwa
67
+ })
68
+
69
+ function callResourceManagerHandler(handler: 'contextMenuHandler' | 'clickHandler', e: MouseEvent, type: 'layout' | 'page') {
70
+ resourceManager.value && resourceManager.value[handler](e, type)
71
+ }
72
+
73
+ function closeContextMenu(e: MouseEvent) {
74
+ resourceManager.value && resourceManager.value.closeContextMenu(e)
75
+ }
76
+
77
+ function onLayoutContextMenu(e: MouseEvent) {
78
+ callResourceManagerHandler('contextMenuHandler', e, 'layout')
79
+ }
80
+
81
+ function onPageContextMenu(e: MouseEvent) {
82
+ callResourceManagerHandler('contextMenuHandler', e, 'page')
83
+ }
84
+
85
+ function onPageClick(e: MouseEvent) {
86
+ callResourceManagerHandler('clickHandler', e, 'page')
87
+ }
88
+
89
+ function onLayoutClick(e: MouseEvent) {
90
+ callResourceManagerHandler('clickHandler', e, 'layout')
91
+ }
92
+
93
+ const layoutResource = computed(() => {
94
+ return $cwa.resources.layout.value
95
+ })
96
+
97
+ const layoutUiComponent = computed<GlobalComponentNames>(() => {
98
+ return cwaPageMeta.value?.staticLayout || (layoutResource.value?.data?.uiComponent as GlobalComponentNames) || LazyCwaDefaultLayout
99
+ })
100
+
101
+ // todo: adjust to not be global https://github.com/nuxt/nuxt/issues/14036#issuecomment-2110180751
102
+ const resolvedComponent = computed(() => {
103
+ // todo: add checks to ensure component exists - otherwise output a warning and/or default
104
+ if (
105
+ typeof instance?.appContext.components !== 'object'
106
+ || !layoutUiComponent.value
107
+ ) {
108
+ return LazyCwaDefaultLayout
109
+ }
110
+ return layoutUiComponent.value
111
+ })
112
+
113
+ const cachedWindowScroll = ref<{ x: number, y: number }>()
114
+ const windowScroll = useWindowScroll()
115
+
116
+ watch(() => $cwa.admin.isEditing, () => {
117
+ cachedWindowScroll.value = {
118
+ x: windowScroll.x.value,
119
+ y: windowScroll.y.value,
120
+ }
121
+ }, {
122
+ flush: 'pre',
123
+ })
124
+
125
+ watch(() => $cwa.admin.isEditing, async () => {
126
+ // when lots of elements on the page are replaced with drafts, it can cause the scroll to revert to the top of the page. Prevent this.
127
+ // we may need to wait for other components to have loaded in from drafts... todo: have a think about draft component loading and taking some time.
128
+ await nextTick()
129
+ setTimeout(() => {
130
+ if (cachedWindowScroll.value) {
131
+ window.scrollTo(cachedWindowScroll.value.x, cachedWindowScroll.value.y)
132
+ cachedWindowScroll.value = undefined
133
+ }
134
+ }, 10)
135
+ }, {
136
+ flush: 'post',
137
+ })
138
+
139
+ const showAdmin = $cwa.auth.isAdmin
140
+ </script>
@@ -0,0 +1,10 @@
1
+ import { vi, describe, test, expect } from 'vitest'
2
+ import * as nuxt from 'nuxt/config'
3
+
4
+ describe('defineNuxtConfig called with correct object', () => {
5
+ test('Config is correct', async () => {
6
+ vi.spyOn(nuxt, 'defineNuxtConfig').mockImplementationOnce(() => {})
7
+ await import('./nuxt.config')
8
+ expect(nuxt.defineNuxtConfig).toHaveBeenCalledWith({})
9
+ })
10
+ })
@@ -0,0 +1,3 @@
1
+ import { defineNuxtConfig } from 'nuxt/config'
2
+
3
+ export default defineNuxtConfig({})
@@ -0,0 +1,50 @@
1
+ import { onMounted, ref } from 'vue'
2
+ import { useCwa } from '#cwa/runtime/composables/cwa'
3
+ import type { PageDataMetadataResource } from '#cwa/runtime/storage/stores/api-documentation/state'
4
+
5
+ export const useDataList = () => {
6
+ const $cwa = useCwa()
7
+ const dataTypes = ref<PageDataMetadataResource[]>([])
8
+ const isLoadingDataTypes = ref(true)
9
+
10
+ function fqcnToEntrypointKey(fqcn: string) {
11
+ // e.g. App\\Entity\\BlogArticleData -> blogArticleData
12
+ const className = fqcn.split('\\').pop()
13
+ if (!className) {
14
+ return
15
+ }
16
+ return className.charAt(0).toLowerCase() + className.slice(1)
17
+ }
18
+
19
+ function displayPageDataClassName(cls: string) {
20
+ const clsName = cls.split('\\').pop()
21
+ const configName = clsName ? $cwa.pageDataConfig?.[clsName]?.name : undefined
22
+ return configName || clsName || cls
23
+ }
24
+
25
+ onMounted(async () => {
26
+ if (!$cwa.auth.user?.['@id']) {
27
+ return
28
+ }
29
+ isLoadingDataTypes.value = true
30
+ // need to fetch a resource to get the docs from link header if not set - user should always be there as we are logged in
31
+ await $cwa.fetchResource({
32
+ path: $cwa.auth.user?.['@id'],
33
+ })
34
+ const docs = await $cwa.getApiDocumentation()
35
+ const allMetadata = docs?.pageDataMetadata?.['hydra:member']
36
+ if (!allMetadata) {
37
+ isLoadingDataTypes.value = false
38
+ return
39
+ }
40
+ dataTypes.value = allMetadata.filter(data => (!data.resourceClass.endsWith('\\AbstractPageData')))
41
+ isLoadingDataTypes.value = false
42
+ })
43
+
44
+ return {
45
+ displayPageDataClassName,
46
+ dataTypes,
47
+ fqcnToEntrypointKey,
48
+ isLoadingDataTypes,
49
+ }
50
+ }
@@ -0,0 +1,30 @@
1
+ import { computed } from 'vue'
2
+ import { useRoute } from 'vue-router'
3
+ import { useCwa } from '#cwa/runtime/composables/cwa'
4
+
5
+ export const useDataType = () => {
6
+ const $cwa = useCwa()
7
+ const route = useRoute()
8
+ const dataType = computed(() => {
9
+ const typeParam = route.params.type
10
+ return Array.isArray(typeParam) ? typeParam[0] : typeParam
11
+ })
12
+ const dataTypeClassName = computed(() => {
13
+ if (!dataType.value) {
14
+ return
15
+ }
16
+ return dataType.value.charAt(0).toUpperCase() + dataType.value.slice(1)
17
+ })
18
+ const pageDataClassName = computed(() => {
19
+ if (!dataTypeClassName.value) {
20
+ return 'Unknown'
21
+ }
22
+ return $cwa.pageDataConfig?.[dataTypeClassName.value]?.name || dataType.value
23
+ })
24
+
25
+ return {
26
+ dataTypeClassName,
27
+ dataType,
28
+ pageDataClassName,
29
+ }
30
+ }
@@ -0,0 +1,28 @@
1
+ import { ref } from 'vue'
2
+ import type { CwaResource } from '#cwa/runtime/resources/resource-utils'
3
+ import { useCwa } from '#imports'
4
+
5
+ export const useDynamicPageLoader = () => {
6
+ const $cwa = useCwa()
7
+ const loadingDynamicPages = ref(false)
8
+ const currentRequestId = ref(0)
9
+ const dynamicPages = ref<CwaResource[]>()
10
+
11
+ async function loadDynamicPageOptions() {
12
+ const thisRequestId = currentRequestId.value + 1
13
+ currentRequestId.value = thisRequestId
14
+ loadingDynamicPages.value = true
15
+ const { response } = $cwa.fetch({ path: '/_/pages?isTemplate=true', noQuery: true })
16
+ const { _data: data } = await response
17
+ if (thisRequestId === currentRequestId.value) {
18
+ data && (dynamicPages.value = data['hydra:member'])
19
+ loadingDynamicPages.value = false
20
+ }
21
+ return dynamicPages
22
+ }
23
+
24
+ return {
25
+ loadDynamicPageOptions,
26
+ dynamicPages,
27
+ }
28
+ }
@@ -0,0 +1,172 @@
1
+ import { computed, type ComputedRef, isRef, onMounted, type Ref, ref, watch } from 'vue'
2
+ import { useRoute, useRouter } from 'vue-router'
3
+ import dayjs from 'dayjs'
4
+ import type { CwaResource } from '#cwa/runtime/resources/resource-utils'
5
+ import { useCwa } from '#cwa/runtime/composables/cwa'
6
+ import { ErrorType } from '#cwa/runtime/storage/stores/error/state'
7
+
8
+ type TempCwaResource = Omit<CwaResource, '@id' | '_metadata'>
9
+
10
+ type StartsWithHash = `#${string}`
11
+
12
+ type UseItemOps = {
13
+ createEndpoint: string | Ref<string>
14
+ emit: ((evt: 'close') => void) & ((evt: 'reload') => void)
15
+ resourceType: string
16
+ defaultResource: Omit<TempCwaResource, '@type'>
17
+ validate?: (data: any) => boolean | string
18
+ endpoint?: Ref<string | undefined>
19
+ routeHashAfterAdd?: ComputedRef<StartsWithHash>
20
+ iri?: Ref<string | undefined>
21
+ excludeFields?: string[]
22
+ }
23
+
24
+ export const useItemPage = ({ emit, resourceType, defaultResource, createEndpoint, validate, endpoint: userDefinedEndpoint, routeHashAfterAdd, iri, excludeFields }: UseItemOps) => {
25
+ const $cwa = useCwa()
26
+ const router = useRouter()
27
+ const route = useRoute()
28
+ const endpoint = computed(() => userDefinedEndpoint?.value || (Array.isArray(route.params.iri) ? route.params.iri[0] : route.params.iri))
29
+ if (!endpoint.value) {
30
+ throw new Error('No Endpoint Found For useItemPage composable')
31
+ }
32
+
33
+ const isLoading = ref(true)
34
+ const isUpdating = ref(false)
35
+ const localResourceData = ref<TempCwaResource | CwaResource>()
36
+
37
+ const isAdding = computed(() => endpoint.value === 'add')
38
+ const resource = computed(() => isAdding.value ? localResourceData.value : $cwa.resources.getResource(iri?.value || endpoint.value).value?.data)
39
+
40
+ function formatDate(dateStr: string) {
41
+ return dayjs(dateStr).format('DD/MM/YY @ HH:mm UTCZ')
42
+ }
43
+
44
+ function loadResource() {
45
+ if (isAdding.value) {
46
+ localResourceData.value = {
47
+ '@type': resourceType,
48
+ ...defaultResource,
49
+ }
50
+ return localResourceData.value
51
+ }
52
+ return $cwa.fetchResource({
53
+ path: endpoint.value,
54
+ iri: iri?.value,
55
+ shallowFetch: true,
56
+ })
57
+ }
58
+
59
+ async function deleteResource(refreshEndpoints?: string[]) {
60
+ isUpdating.value = true
61
+ await $cwa.resourcesManager.deleteResource({
62
+ endpoint: iri?.value || endpoint.value,
63
+ refreshEndpoints,
64
+ })
65
+ emit('reload')
66
+ emit('close')
67
+ isUpdating.value = false
68
+ }
69
+
70
+ function saveTitle() {
71
+ if (isAdding.value) {
72
+ return
73
+ }
74
+ return saveResource()
75
+ }
76
+
77
+ async function saveResource(close = false) {
78
+ if (!localResourceData.value) {
79
+ return
80
+ }
81
+ if (validate) {
82
+ const result = validate(localResourceData.value)
83
+ if (result !== true) {
84
+ if (result !== false) {
85
+ $cwa.resourcesManager.addError({
86
+ type: ErrorType.VALIDATION,
87
+ timestamp: (new Date()).getTime(),
88
+ statusCode: 0,
89
+ detail: result,
90
+ violations: [
91
+ {
92
+ message: result,
93
+ property: 'plainPassword',
94
+ },
95
+ ],
96
+ })
97
+ }
98
+ return
99
+ }
100
+ }
101
+ const doRequest = async () => {
102
+ const data: { [key: string]: any } = {
103
+ ...localResourceData.value,
104
+ }
105
+ if (excludeFields) {
106
+ for (const field of excludeFields) {
107
+ data[field] && (delete data[field])
108
+ }
109
+ }
110
+ if (isAdding.value) {
111
+ const newResource = await $cwa.resourcesManager.createResource({
112
+ endpoint: isRef(createEndpoint) ? createEndpoint.value : createEndpoint,
113
+ data,
114
+ source: 'admin-modal',
115
+ })
116
+ if (newResource) {
117
+ emit('reload')
118
+ if (close) {
119
+ emit('close')
120
+ }
121
+ else {
122
+ router.push({ name: route.name, params: { iri: newResource['@id'] }, query: route.query, hash: routeHashAfterAdd?.value })
123
+ }
124
+ }
125
+ return newResource
126
+ }
127
+
128
+ const updatedResource = await $cwa.resourcesManager.updateResource({
129
+ endpoint: iri?.value || endpoint.value,
130
+ data,
131
+ })
132
+ if (close && updatedResource) {
133
+ emit('close')
134
+ }
135
+ return updatedResource
136
+ }
137
+
138
+ isUpdating.value = true
139
+ const resource = await doRequest()
140
+ isUpdating.value = false
141
+ return resource
142
+ }
143
+
144
+ function syncLocalResourceWithStore(newResource: TempCwaResource | undefined) {
145
+ !isAdding.value && newResource && (localResourceData.value = { ...newResource })
146
+ }
147
+
148
+ watch(resource, syncLocalResourceWithStore)
149
+
150
+ onMounted(async () => {
151
+ await loadResource()
152
+ if (!resource.value || (resourceType !== undefined && resource.value['@type'] !== resourceType)) {
153
+ emit('close')
154
+ isLoading.value = false
155
+ return
156
+ }
157
+ isLoading.value = false
158
+ })
159
+
160
+ return {
161
+ isLoading,
162
+ isUpdating,
163
+ resource,
164
+ localResourceData,
165
+ isAdding,
166
+ formatDate,
167
+ deleteResource,
168
+ saveTitle,
169
+ saveResource,
170
+ loadResource,
171
+ }
172
+ }
@@ -0,0 +1,43 @@
1
+ import { type RouteLocationRaw, useRoute, useRouter } from 'vue-router'
2
+ import type { Ref } from 'vue'
3
+ import { computed } from 'vue'
4
+ import type ListContent from '#cwa/runtime/templates/components/core/admin/ListContent.vue'
5
+
6
+ export const useListPage = (listContent: Ref<InstanceType<typeof ListContent> | null>, clearPageNumberQuery?: boolean) => {
7
+ const router = useRouter()
8
+ const route = useRoute()
9
+
10
+ function triggerReload() {
11
+ listContent.value?.reloadItems()
12
+ }
13
+
14
+ function goToAdd() {
15
+ router.push(computedItemLink.value('add'))
16
+ }
17
+
18
+ const computedItemLink = computed(() => {
19
+ return (iri: string, routeName?: string, hash?: string, params?: { [key: string]: string }): RouteLocationRaw => {
20
+ const currentRouteName = routeName || route.name?.toString()
21
+ if (!currentRouteName) {
22
+ return '#'
23
+ }
24
+ const upperRouteName = currentRouteName.replace(/-iri$/, '')
25
+
26
+ if (!params) {
27
+ params = {}
28
+ }
29
+ params.iri = iri
30
+
31
+ const query = { ...route.query }
32
+ clearPageNumberQuery && delete query.page
33
+
34
+ return { name: `${upperRouteName}-iri`, params, query, hash }
35
+ }
36
+ })
37
+
38
+ return {
39
+ goToAdd,
40
+ triggerReload,
41
+ computedItemLink,
42
+ }
43
+ }
@@ -0,0 +1,17 @@
1
+ <template>
2
+ <PageDataAdminModal
3
+ :resource-type="dataTypeClassName || ''"
4
+ @reload="$emit('reload')"
5
+ />
6
+ </template>
7
+
8
+ <script lang="ts" setup>
9
+ import PageDataAdminModal from '#cwa/runtime/templates/components/core/admin/PageDataAdminModal.vue'
10
+ import { useDataType } from '#cwa/layer/pages/_cwa/composables/useDataType'
11
+
12
+ const { dataTypeClassName } = useDataType()
13
+
14
+ defineEmits<{
15
+ reload: []
16
+ }>()
17
+ </script>