@opengis/cms 0.0.22 → 0.0.24

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/package.json +2 -10
  2. package/src/index.js +23 -0
  3. package/module/cms/card/cms.content.table/index.yml +0 -17
  4. package/module/cms/card/cms.content.table/main_info.hbs +0 -26
  5. package/module/cms/card/cms.menu.table/content_info.hbs +0 -16
  6. package/module/cms/card/cms.menu.table/index.yml +0 -18
  7. package/module/cms/card/cms.menu.table/main_info.hbs +0 -22
  8. package/module/cms/card/cms.settings.table/index.yml +0 -13
  9. package/module/cms/card/cms.settings.table/main_info.hbs +0 -20
  10. package/module/cms/cls/content.status.json +0 -18
  11. package/module/cms/cls/user_type.json +0 -10
  12. package/module/cms/form/admin.users.form.json +0 -78
  13. package/module/cms/form/cms.content.form.json +0 -79
  14. package/module/cms/form/cms.menu.form.json +0 -69
  15. package/module/cms/form/cms.settings.form.json +0 -32
  16. package/module/cms/menu.json +0 -24
  17. package/module/cms/router.js +0 -169
  18. package/module/cms/select/cms.page_type.sql +0 -2
  19. package/module/cms/select/collection.sql +0 -1
  20. package/module/cms/select/locale.sql +0 -17
  21. package/module/cms/select/news_tag_id.sql +0 -12
  22. package/module/cms/select/tag_id.sql +0 -1
  23. package/module/cms/table/admin.users.table.json +0 -54
  24. package/module/cms/table/cms.content.table.json +0 -106
  25. package/module/cms/table/cms.menu.table.json +0 -73
  26. package/module/cms/table/cms.settings.table.json +0 -57
  27. package/module/cms/table/collection.default.table.json +0 -102
  28. package/module/cms/table/single.default.table.json +0 -115
  29. package/src/App.css +0 -52
  30. package/src/App.vue +0 -62
  31. package/src/assets/image.png +0 -0
  32. package/src/assets/main.css +0 -3
  33. package/src/assets/tailwind-3.4.17.js +0 -113
  34. package/src/components/LanguageSwitcher.vue +0 -73
  35. package/src/components/SettingsCard.vue +0 -40
  36. package/src/components/builder/CreateForm.vue +0 -128
  37. package/src/components/builder/formTypeSchema.js +0 -145
  38. package/src/components/builder/tabs/index.ts +0 -9
  39. package/src/components/builder/tabs/vs-builder-edit.vue +0 -133
  40. package/src/components/builder/tabs/vs-builder-monaco.vue +0 -29
  41. package/src/components/builder/tabs/vs-builder-preview.vue +0 -39
  42. package/src/components/builder/vs-builder-datatable-controls.vue +0 -138
  43. package/src/components/builder/vs-builder-datatable-form.vue +0 -80
  44. package/src/components/builder/vs-builder-datatable.vue +0 -191
  45. package/src/components/builder/vs-builder-list-item.vue +0 -110
  46. package/src/components/collections/CollectionsBreadcrumb.vue +0 -52
  47. package/src/components/collections/CollectionsGrid.vue +0 -176
  48. package/src/components/collections/ContentBlock.vue +0 -75
  49. package/src/components/collections/formWrapper.vue +0 -156
  50. package/src/components/dashboard/ContentItem.vue +0 -82
  51. package/src/components/dashboard/DashboardHeader.vue +0 -33
  52. package/src/components/dashboard/QuickActions.vue +0 -84
  53. package/src/components/dashboard/RecentContent.vue +0 -54
  54. package/src/components/dashboard/StatCard.vue +0 -63
  55. package/src/components/dashboard/StatsGrid.vue +0 -28
  56. package/src/components/form-components/MonacoEditor.vue +0 -104
  57. package/src/components/form-components/VsFormMeta.vue +0 -40
  58. package/src/components/form-components/VsFormTags.vue +0 -150
  59. package/src/components/form-components/custom-datatable/vs-form-custom-datatable-add.vue +0 -84
  60. package/src/components/form-components/custom-datatable/vs-form-custom-datatable-controls.vue +0 -106
  61. package/src/components/form-components/index.js +0 -23
  62. package/src/components/form-components/reference/vs-form-reference-add.vue +0 -92
  63. package/src/components/form-components/reference/vs-form-reference-controls.vue +0 -101
  64. package/src/components/form-components/reference-list/referenceOptionList.js +0 -78
  65. package/src/components/form-components/reference-list/vs-form-reference-add.vue +0 -145
  66. package/src/components/form-components/reference-list/vs-form-reference-choce.vue +0 -39
  67. package/src/components/form-components/reference-list/vs-form-reference-controls.vue +0 -110
  68. package/src/components/form-components/reference-skeleton/about-skeleton.vue +0 -37
  69. package/src/components/form-components/reference-skeleton/banner-skeleton.vue +0 -29
  70. package/src/components/form-components/reference-skeleton/body-skeleton.vue +0 -56
  71. package/src/components/form-components/reference-skeleton/cards-skeleton.vue +0 -47
  72. package/src/components/form-components/reference-skeleton/documents-skeleton.vue +0 -64
  73. package/src/components/form-components/reference-skeleton/faq-skeleton.vue +0 -64
  74. package/src/components/form-components/reference-skeleton/form-skeleton.vue +0 -41
  75. package/src/components/form-components/reference-skeleton/index.js +0 -36
  76. package/src/components/form-components/reference-skeleton/infoLine-skeleton.vue +0 -37
  77. package/src/components/form-components/reference-skeleton/news-skeleton.vue +0 -54
  78. package/src/components/form-components/reference-skeleton/slider-skeleton.vue +0 -41
  79. package/src/components/form-components/reference-skeleton/tabs-skeleton.vue +0 -40
  80. package/src/components/form-components/reference-skeleton/team-skeleton.vue +0 -103
  81. package/src/components/form-components/reference-skeleton/usefulLinks-skeleton.vue +0 -52
  82. package/src/components/form-components/reference-skeleton/video-skeleton.vue +0 -36
  83. package/src/components/form-components/testReferenceTypes.js +0 -773
  84. package/src/components/form-components/vs-form-color-picker.vue +0 -29
  85. package/src/components/form-components/vs-form-custom-datatable.vue +0 -214
  86. package/src/components/form-components/vs-form-integer.vue +0 -86
  87. package/src/components/form-components/vs-form-key-value.vue +0 -201
  88. package/src/components/form-components/vs-form-marcdown-md.vue +0 -3
  89. package/src/components/form-components/vs-form-media-select.vue +0 -780
  90. package/src/components/form-components/vs-form-reference-list.vue +0 -97
  91. package/src/components/form-components/vs-form-reference.vue +0 -59
  92. package/src/components/form-components/vs-form-relation.vue +0 -30
  93. package/src/components/form-components/vs-form-reletion-link.vue +0 -34
  94. package/src/components/form-components/vs-form-select-collection.vue +0 -0
  95. package/src/components/form-components/vs-form-slug.vue +0 -72
  96. package/src/components/form-components/vs-form-tiptap.vue +0 -7
  97. package/src/components/form-components/vs-richtext-md.vue +0 -3
  98. package/src/components/icons/BellIcon.vue +0 -17
  99. package/src/components/icons/GlobeIcon.vue +0 -18
  100. package/src/components/icons/KeyIcon.vue +0 -20
  101. package/src/components/icons/PaletteIcon.vue +0 -22
  102. package/src/components/icons/SettingsIcon.vue +0 -19
  103. package/src/components/icons/ShieldIcon.vue +0 -18
  104. package/src/components/icons/UsersIcon.vue +0 -19
  105. package/src/components/icons/icon-chevron-right.vue +0 -16
  106. package/src/components/icons/icon-drag.vue +0 -20
  107. package/src/components/icons/icon-file-text.vue +0 -21
  108. package/src/components/icons/icon-folder.vue +0 -18
  109. package/src/components/icons/icon-grid.vue +0 -17
  110. package/src/components/icons/icon-group.vue +0 -19
  111. package/src/components/icons/icon-home.vue +0 -16
  112. package/src/components/icons/icon-image.vue +0 -18
  113. package/src/components/icons/icon-list.vue +0 -20
  114. package/src/components/icons/icon-more.vue +0 -17
  115. package/src/components/icons/icon-plus.vue +0 -17
  116. package/src/components/icons-types/icon-array.vue +0 -22
  117. package/src/components/icons-types/icon-boolean.vue +0 -18
  118. package/src/components/icons-types/icon-datalist.vue +0 -22
  119. package/src/components/icons-types/icon-date.vue +0 -20
  120. package/src/components/icons-types/icon-datetime.vue +0 -20
  121. package/src/components/icons-types/icon-file.vue +0 -21
  122. package/src/components/icons-types/icon-gallery.vue +0 -18
  123. package/src/components/icons-types/icon-image.vue +0 -19
  124. package/src/components/icons-types/icon-integer.vue +0 -20
  125. package/src/components/icons-types/icon-merkdown.vue +0 -18
  126. package/src/components/icons-types/icon-multiselect.vue +0 -22
  127. package/src/components/icons-types/icon-number.vue +0 -20
  128. package/src/components/icons-types/icon-radio.vue +0 -22
  129. package/src/components/icons-types/icon-reference-list.vue +0 -22
  130. package/src/components/icons-types/icon-reference.vue +0 -20
  131. package/src/components/icons-types/icon-relation.vue +0 -22
  132. package/src/components/icons-types/icon-richtext.vue +0 -18
  133. package/src/components/icons-types/icon-select.vue +0 -22
  134. package/src/components/icons-types/icon-slug.vue +0 -19
  135. package/src/components/icons-types/icon-text.vue +0 -19
  136. package/src/components/icons-types/index.js +0 -43
  137. package/src/components/layout/Layout.vue +0 -67
  138. package/src/components/layout/Sidebar.vue +0 -128
  139. package/src/components/media/FileUploadProgress.vue +0 -29
  140. package/src/components/media/MediaBreadcrumb.vue +0 -42
  141. package/src/components/media/MediaCreateFolder.vue +0 -59
  142. package/src/components/media/MediaFileInfo.vue +0 -148
  143. package/src/components/media/MediaGrid.vue +0 -148
  144. package/src/components/media/MediaList.vue +0 -148
  145. package/src/components/media/MediaViewControls.vue +0 -38
  146. package/src/components/media/TypeTag.vue +0 -23
  147. package/src/components/menu/AddNewItemInTree.vue +0 -75
  148. package/src/components/menu/MenuBody.vue +0 -149
  149. package/src/components/menu/MenuItem.vue +0 -73
  150. package/src/components/menu/MenuList.vue +0 -101
  151. package/src/components/referencec/index.ts +0 -7
  152. package/src/components/referencec/vs-reference-faq.vue +0 -61
  153. package/src/components/referencec/vs-reference-user-card.vue +0 -40
  154. package/src/components/settings/NotificationSettings.vue +0 -32
  155. package/src/components/settings/SettingsTable.vue +0 -50
  156. package/src/components/settings/SettingsTitle.vue +0 -33
  157. package/src/components/settings/SettingsToggleItem.vue +0 -25
  158. package/src/components/sidebar/DropdownMenu.vue +0 -34
  159. package/src/components/sidebar/SettingsSidebar.vue +0 -121
  160. package/src/components/sidebar/SidebarFooter.vue +0 -52
  161. package/src/components/sidebar/SidebarHeader.vue +0 -57
  162. package/src/components/sidebar/SidebarMenu.vue +0 -78
  163. package/src/components/ui/EmptyData.vue +0 -76
  164. package/src/components/ui/UniversalTable.vue +0 -310
  165. package/src/components/ui/UniversalTableFilters.vue +0 -0
  166. package/src/components/ui/UniversalTablePagination.vue +0 -118
  167. package/src/components/ui/VsPreview.vue +0 -75
  168. package/src/composables/useCollectionView.ts +0 -21
  169. package/src/composables/useDebounce.ts +0 -26
  170. package/src/composables/useMonaco.ts +0 -28
  171. package/src/composables/useTheme.ts +0 -40
  172. package/src/content/test-slug/metadata.json +0 -1
  173. package/src/i18n.ts +0 -75
  174. package/src/index.css +0 -3
  175. package/src/index.ts +0 -122
  176. package/src/locales/en.json +0 -778
  177. package/src/locales/uk.json +0 -797
  178. package/src/main.ts +0 -41
  179. package/src/pages/Dashboard.vue +0 -168
  180. package/src/pages/EmailPage.vue +0 -183
  181. package/src/pages/FeedbackPage.vue +0 -232
  182. package/src/pages/MediaPage.vue +0 -372
  183. package/src/pages/TagsPage.vue +0 -207
  184. package/src/pages/builder/BuilderPage.vue +0 -195
  185. package/src/pages/builder/EditCollectionPage.vue +0 -163
  186. package/src/pages/collections/ArticlesPage.vue +0 -385
  187. package/src/pages/collections/CollectionsPage.vue +0 -146
  188. package/src/pages/collections/SingletonsPage.vue +0 -119
  189. package/src/pages/collections/contentForm.vue +0 -484
  190. package/src/pages/collections/schema/seo.ts +0 -27
  191. package/src/pages/menu/MenuAddPage.vue +0 -123
  192. package/src/pages/menu/MenuItemPage.vue +0 -183
  193. package/src/pages/menu/MenuPage.vue +0 -133
  194. package/src/pages/settings/ApiKeys.vue +0 -75
  195. package/src/pages/settings/Appearance.vue +0 -80
  196. package/src/pages/settings/Logs.vue +0 -260
  197. package/src/pages/settings/PermissionsPage.vue +0 -237
  198. package/src/pages/settings/Settings.vue +0 -186
  199. package/src/pages/settings/Users.vue +0 -109
  200. package/src/pages/settings/general.vue +0 -154
  201. package/src/pages/settings/generalScheme.js +0 -132
  202. package/src/pages/users/AddUser.vue +0 -106
  203. package/src/pages/users/UsersPage.vue +0 -98
  204. package/src/props/builder.ts +0 -67
  205. package/src/props/content.ts +0 -56
  206. package/src/props/media.ts +0 -63
  207. package/src/router/index.ts +0 -181
  208. package/src/types/fastify-auth.d.ts +0 -4
  209. package/src/utils/getField.js +0 -270
  210. package/src/utils/translit.js +0 -19
  211. package/src/vite-env.d.ts +0 -1
@@ -1,101 +0,0 @@
1
- <template>
2
- <div
3
- class="absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity flex space-x-1 z-10"
4
- >
5
- <button
6
- @click="isOpen = !isOpen"
7
- class="p-1.5 bg-white dark:bg-gray-800 rounded shadow-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
8
- >
9
- <Edit class="h-4 w-4 text-gray-400" />
10
- </button>
11
- <button
12
- @click="model = {}"
13
- class="p-1.5 bg-white dark:bg-gray-800 rounded shadow-sm hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors"
14
- >
15
- <Trash2 class="h-4 w-4 text-red-500" />
16
- </button>
17
- <VsDrower v-model:visible="isOpen" @close="isOpen = false" :title="title">
18
- <VsForm
19
- v-model:form="form"
20
- v-if="schema"
21
- :schema="schema"
22
- v-model="formValue"
23
- class="-mr-[10px] ml-[10px] mt-[10px]"
24
- />
25
- <template #footer>
26
- <div
27
- class="flex items-center justify-between w-full p-4 border-t border-gray-200 dark:border-gray-700"
28
- >
29
- <button
30
- class="px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-sm font-medium text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600"
31
- >
32
- {{ $t("common.actions.cancel") }}
33
- </button>
34
- <button
35
- @click="handleSave"
36
- class="px-4 py-2 bg-sky-600 text-white rounded-md text-sm font-medium hover:bg-sky-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-sky-500"
37
- >
38
- {{ $t("common.actions.save") }}
39
- </button>
40
- </div>
41
- </template>
42
- </VsDrower>
43
- </div>
44
- </template>
45
-
46
- <script setup>
47
- import { Edit, Trash2 } from "lucide-vue-next";
48
- import { ref, watch } from "vue";
49
- import VsForm from "@opengis/form";
50
- import { notify } from '@opengis/core';
51
- import { useI18n } from "vue-i18n";
52
-
53
- const { t } = useI18n();
54
-
55
- const props = defineProps({
56
- title: {
57
- type: String,
58
- required: true,
59
- },
60
- schema: {
61
- type: Object,
62
- required: true,
63
- },
64
- });
65
-
66
- const model = defineModel({
67
- type: Object,
68
- default: () => ({}),
69
- });
70
-
71
- const isOpen = ref(false);
72
- const formValue = ref({});
73
-
74
- const form = ref({});
75
-
76
- watch(isOpen, (newVal) => {
77
- if (newVal) {
78
- formValue.value = { ...model.value };
79
- }
80
- });
81
-
82
- const handleSave = async () => {
83
- try {
84
- let result = await form.value.validate();
85
- if (result) {
86
- notify({
87
- type: "warning",
88
- title: t("common.actions.warning"),
89
- message: t("builder.editFieldFailed"),
90
- });
91
- return;
92
- }
93
- model.value = { ...formValue.value };
94
- isOpen.value = false;
95
- } catch (error) {
96
- console.log(error);
97
- }
98
- };
99
- </script>
100
-
101
- <style lang="scss" scoped></style>
@@ -1,78 +0,0 @@
1
- export default [
2
- {
3
- text: "reference.faq",
4
- id: "faq",
5
- },
6
- {
7
- text: "reference.banner",
8
- id: "banner",
9
- },
10
- {
11
- text: "reference.slider",
12
- id: "slider",
13
- },
14
- {
15
- text: "reference.photoGrid",
16
- id: "photoGrid",
17
- },
18
- {
19
- text: "reference.video",
20
- id: "video",
21
- },
22
- {
23
- text: "reference.about",
24
- id: "about",
25
- },
26
- {
27
- text: "reference.cards",
28
- id: "cards",
29
- },
30
- {
31
- text: "reference.usefulLinks",
32
- id: "usefulLinks",
33
- },
34
- {
35
- text: "reference.team",
36
- id: "team",
37
- },
38
- {
39
- text: "reference.body",
40
- id: "body",
41
- },
42
- {
43
- text: "reference.news",
44
- id: "news",
45
- },
46
- {
47
- text: "reference.form",
48
- id: "form",
49
- },
50
- {
51
- text: "reference.tabs",
52
- id: "tabs",
53
- },
54
- {
55
- text: "reference.vertical_tabs",
56
- id: "vertical_tabs",
57
- },
58
- {
59
- text: "reference.documents",
60
- id: "documents",
61
- },
62
- {
63
- text: "reference.infoLine",
64
- id: "infoLine",
65
- },
66
- {
67
- text: "reference.interested",
68
- id: "interested",
69
- },
70
- {
71
- text: "reference.contact",
72
- id: "contact",
73
- },
74
- {
75
- text: "reference.iframe",
76
- id: "iframe",
77
- },
78
- ]
@@ -1,145 +0,0 @@
1
- <template>
2
- <div>
3
- <button
4
- type="button"
5
- class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-sky-500"
6
- @click="isOpen = !isOpen"
7
- >
8
- {{ $t("builder.create") }}
9
- </button>
10
- <VsDrawer
11
- v-model:visible="isOpen"
12
- position="right"
13
- :closeClickBackdrop="false"
14
- @close="isOpen = false"
15
- :title="reference_type ? $t('builder.' + reference_type) : $t('builder.selectType')"
16
- :size="'50vw'"
17
- >
18
- <VsFormReferenceChoce
19
- v-if="!reference_type"
20
- v-model="reference_type"
21
- :options="referenceOptionList"
22
- />
23
- <template v-else>
24
- <div class="flex gap-4">
25
- <div
26
- class="text-sm text-gray-500 dark:text-gray-400 border flex items-center h-10 px-4 rounded-lg w-full"
27
- >
28
- <span>
29
- {{ referenceOptionList.find((item) => item.id === reference_type)?.text }}
30
- </span>
31
- </div>
32
- <button
33
- class="py-2.5 px-3 mb-4 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300"
34
- @click="reference_type = null"
35
- >
36
- {{ $t("builder.changeType") }}
37
- </button>
38
- </div>
39
- <VForm
40
- v-if="scheme"
41
- :key="reference_type"
42
- :schema="scheme"
43
- v-model="formValue"
44
- v-model:form="form"
45
- />
46
- </template>
47
- <template #footer>
48
- <div
49
- class="flex items-center justify-between w-full p-4 border-t border-gray-200 dark:border-gray-700"
50
- >
51
- <button
52
- @click="isOpen = false"
53
- class="inline-flex items-center px-3 py-2 text-sm text-black duration-300 border border-gray-200 rounded-lg gap-x-2 whitespace-nowrap hover:bg-gray-100"
54
- >
55
- {{ $t("builder.cancel") }}
56
- </button>
57
- <button
58
- @click="handleCreate"
59
- class="py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300"
60
- >
61
- {{ $t("builder.create") }}
62
- </button>
63
- </div>
64
- </template>
65
- </VsDrawer>
66
- </div>
67
- </template>
68
-
69
- <script setup>
70
- import { ref, computed, watch } from "vue";
71
- import { testReferenceTypes } from "../testReferenceTypes";
72
- import VsFormReferenceChoce from "./vs-form-reference-choce.vue";
73
- import referenceOptionList from "./referenceOptionList";
74
- import { notify } from '@opengis/core';
75
- import VsEditor from "@/components/form-components/vs-form-tiptap.vue";
76
- import {VForm,inputs} from "@opengis/form";
77
- // import {VForm,inputs} from "../../../../../form/src/index";
78
- import { VsDrawer } from "@opengis/core";
79
- import { useI18n } from "vue-i18n";
80
- import VsReference from "../vs-form-reference-list.vue";
81
-
82
- const { t } = useI18n();
83
-
84
- inputs['vs-input-reference'] = VsReference;
85
- inputs['vs-input-tiptap-editor'] = VsEditor;
86
-
87
- const props = defineProps({
88
- title: {
89
- type: String,
90
- required: true,
91
- },
92
- });
93
-
94
- const model = defineModel({
95
- type: Array,
96
- default: () => [],
97
- });
98
-
99
- const isOpen = ref(false);
100
- const form = ref({});
101
- const reference_type = ref(null);
102
- const formValue = ref({});
103
-
104
- const scheme = computed(() => {
105
- return testReferenceTypes[reference_type.value]?.schema || null;
106
- });
107
-
108
- const handleCreate = async () => {
109
- let result = await form.value.validate();
110
- if (result) {
111
- notify({
112
- type: "warning",
113
- title: t("common.actions.warning"),
114
- message: t("builder.editFieldFailed"),
115
- });
116
- return;
117
- }
118
- try {
119
- if (Object.keys(formValue.value).length !== 0) {
120
- model.value = [
121
- ...(model.value || []),
122
- {
123
- ...formValue.value,
124
- id: Math.random().toString(36).substring(2, 15),
125
- reference_type: reference_type.value,
126
- },
127
- ];
128
- }
129
- isOpen.value = false;
130
- reference_type.value = null;
131
- formValue.value = {};
132
- } catch (error) {
133
- console.log(error);
134
- }
135
- };
136
-
137
- watch(isOpen, () => {
138
- if (!isOpen.value) {
139
- reference_type.value = null;
140
- formValue.value = {};
141
- }
142
- });
143
- </script>
144
-
145
- <style lang="scss" scoped></style>
@@ -1,39 +0,0 @@
1
- <template>
2
- <div class="grid grid-cols-1 md:grid-cols-1 lg:grid-cols-2 2xl:grid-cols-3 gap-4">
3
- <div
4
- v-for="item in referenceOptionList"
5
- :key="item.id"
6
- @click="model = item.id"
7
- class="relative"
8
- >
9
- <div
10
- class="wireframe-block h-[240px] !p-4 border-2 border-dashed bg-white relative overflow-hidden transition-all rounded-lg shadow-sm border-gray-300 hover:border-gray-400 cursor-pointer"
11
- >
12
- <component
13
- v-if="referenceSkeleton[item.id]"
14
- :is="referenceSkeleton[item.id]"
15
- :text="item?.text"
16
- :count="item?.data || 0"
17
- />
18
- <img
19
- v-else
20
- :src="icon"
21
- alt="Team collaboration"
22
- class="w-full h-full object-cover"
23
- />
24
- </div>
25
- </div>
26
- </div>
27
- </template>
28
-
29
- <script setup>
30
- import icon from "../../../assets/image.png";
31
- import referenceOptionList from "./referenceOptionList";
32
- import referenceSkeleton from "../reference-skeleton";
33
-
34
- const model = defineModel({
35
- type: String,
36
- required: true,
37
- });
38
-
39
- </script>
@@ -1,110 +0,0 @@
1
- <template>
2
- <div
3
- class="absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity flex space-x-1 z-10"
4
- >
5
- <button
6
- @click="isOpen = !isOpen"
7
- class="p-1.5 bg-white dark:bg-gray-800 rounded shadow-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors border border-gray-200 dark:border-gray-700"
8
- >
9
- <Edit class="h-4 w-4 text-gray-400" />
10
- </button>
11
- <button
12
- @click="parent = parent.filter((item) => item.id !== model.id)"
13
- class="p-1.5 bg-white dark:bg-gray-800 rounded shadow-sm hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors border border-gray-200 dark:border-gray-700"
14
- >
15
- <Trash2 class="h-4 w-4 text-red-500" />
16
- </button>
17
- <VsDrawer v-model:visible="isOpen" @close="isOpen = false" :title="title" :width="'50vw'">
18
- <VForm
19
- v-model:form="form"
20
- v-if="schema"
21
- :schema="schema"
22
- v-model="formValue"
23
- class="-mr-[10px] ml-[10px] mt-[10px]"
24
- />
25
- <template #footer>
26
- <div
27
- class="flex items-center justify-between w-full p-4 border-t border-gray-200 dark:border-gray-700"
28
- >
29
- <button
30
- class="inline-flex items-center px-3 py-2 text-sm text-black duration-300 border border-gray-200 rounded-lg gap-x-2 whitespace-nowrap hover:bg-gray-100"
31
- @click="isOpen = false"
32
- >
33
- {{ $t("common.actions.cancel") }}
34
- </button>
35
- <button
36
- @click="handleSave"
37
- class="py-2 px-3 inline-flex items-center gap-x-2 text-sm whitespace-nowrap text-white bg-blue-500 rounded-lg !border-gray-200 hover:bg-blue-700 duration-300"
38
- >
39
- {{ $t("common.actions.save") }}
40
- </button>
41
- </div>
42
- </template>
43
- </VsDrawer>
44
- </div>
45
- </template>
46
-
47
- <script setup>
48
- import { Edit, Trash2 } from "lucide-vue-next";
49
- import { ref, watch, computed } from "vue";
50
- import { testReferenceTypes } from "../testReferenceTypes";
51
- import { VForm, inputs } from "@opengis/form";
52
-
53
- import { VsDrawer } from "@opengis/core";
54
- import { notify } from '@opengis/core';
55
- import { useI18n } from "vue-i18n";
56
-
57
- const { t } = useI18n();
58
-
59
- const props = defineProps({
60
- title: {
61
- type: String,
62
- required: true,
63
- },
64
- });
65
-
66
- const model = defineModel({
67
- type: Object,
68
- default: () => ({}),
69
- });
70
-
71
- const parent = defineModel("parent", {
72
- type: Array,
73
- default: () => [],
74
- });
75
-
76
- const isOpen = ref(false);
77
- const formValue = ref({});
78
-
79
- const form = ref({});
80
-
81
- const schema = computed(() => {
82
- return testReferenceTypes[model.value.reference_type]?.schema || null;
83
- });
84
-
85
- watch(isOpen, (newVal) => {
86
- if (newVal) {
87
- formValue.value = { ...model.value };
88
- }
89
- });
90
-
91
- const handleSave = async () => {
92
- try {
93
- let result = await form.value.validate();
94
- if (result) {
95
- notify({
96
- type: "warning",
97
- title: t("common.actions.warning"),
98
- message: t("builder.editFieldFailed"),
99
- });
100
- return;
101
- }
102
- model.value = { ...formValue.value };
103
- isOpen.value = false;
104
- } catch (error) {
105
- console.log(error);
106
- }
107
- };
108
- </script>
109
-
110
- <style lang="scss" scoped></style>
@@ -1,37 +0,0 @@
1
- <template>
2
- <div class="h-full w-full flex flex-col">
3
- <div class="flex flex-1">
4
- <div class="flex-1 pr-2">
5
- <div class="h-4 bg-gray-400 rounded mb-2"></div>
6
- <div class="space-y-1.5">
7
- <div class="h-2 bg-gray-300 rounded"></div>
8
- <div class="h-2 bg-gray-300 rounded"></div>
9
- <div class="h-2 bg-gray-300 rounded w-4/5"></div>
10
- <div class="h-2 bg-gray-300 rounded"></div>
11
- <div class="h-2 bg-gray-300 rounded w-3/4"></div>
12
- <div class="h-2 bg-gray-300 rounded"></div>
13
- </div>
14
- </div>
15
- <div class="w-16 h-20 bg-gray-200 rounded flex items-center justify-center">
16
- <div class="w-6 h-6 bg-gray-300 rounded-full"></div>
17
- </div>
18
- </div>
19
- <div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
20
- <div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
21
- <div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script setup>
27
- defineProps({
28
- text: {
29
- type: String,
30
- required: true,
31
- },
32
- count: {
33
- type: Number,
34
- required: true,
35
- },
36
- });
37
- </script>
@@ -1,29 +0,0 @@
1
- <template>
2
- <div class="h-full w-full flex flex-col">
3
- <div class="flex-1 bg-gray-200 rounded relative">
4
- <div class="absolute inset-0 flex items-center justify-center">
5
- <div class="w-16 h-10 bg-gray-300 rounded"></div>
6
- </div>
7
- <div class="absolute bottom-2 left-2">
8
- <div class="h-3 bg-gray-400 rounded w-16"></div>
9
- </div>
10
- </div>
11
- <div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
12
- <div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
13
- <div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
14
- </div>
15
- </div>
16
- </template>
17
-
18
- <script setup>
19
- defineProps({
20
- text: {
21
- type: String,
22
- required: true,
23
- },
24
- count: {
25
- type: Number,
26
- required: true,
27
- },
28
- });
29
- </script>
@@ -1,56 +0,0 @@
1
- <template>
2
- <div class="h-full flex flex-col">
3
- <div class="grid grid-cols-3 gap-2 flex-1">
4
- <div class="flex flex-col">
5
- <div class="h-3 bg-gray-400 rounded mb-2"></div>
6
- <div class="space-y-1.5">
7
- <div class="h-4 bg-gray-200 rounded border border-gray-300 p-1.5">
8
- <div class="h-1.5 bg-gray-300 rounded w-3/4"></div>
9
- </div>
10
- <div class="h-4 bg-gray-200 rounded border border-gray-300 p-1.5">
11
- <div class="h-1.5 bg-gray-300 rounded w-3/4"></div>
12
- </div>
13
- </div>
14
- </div>
15
- <div class="flex flex-col">
16
- <div class="h-3 bg-gray-400 rounded mb-2"></div>
17
- <div class="space-y-1.5">
18
- <div class="h-4 bg-gray-200 rounded border border-gray-300 p-1.5">
19
- <div class="h-1.5 bg-gray-300 rounded w-3/4"></div>
20
- </div>
21
- <div class="h-4 bg-gray-200 rounded border border-gray-300 p-1.5">
22
- <div class="h-1.5 bg-gray-300 rounded w-3/4"></div>
23
- </div>
24
- </div>
25
- </div>
26
- <div class="flex flex-col">
27
- <div class="h-3 bg-gray-400 rounded mb-2"></div>
28
- <div class="space-y-1.5">
29
- <div class="h-4 bg-gray-200 rounded border border-gray-300 p-1.5">
30
- <div class="h-1.5 bg-gray-300 rounded w-3/4"></div>
31
- </div>
32
- <div class="h-4 bg-gray-200 rounded border border-gray-300 p-1.5">
33
- <div class="h-1.5 bg-gray-300 rounded w-3/4"></div>
34
- </div>
35
- </div>
36
- </div>
37
- </div>
38
- <div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
39
- <div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
40
- <div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
41
- </div>
42
- </div>
43
- </template>
44
-
45
- <script setup>
46
- defineProps({
47
- text: {
48
- type: String,
49
- required: true,
50
- },
51
- count: {
52
- type: Number,
53
- required: true,
54
- },
55
- });
56
- </script>
@@ -1,47 +0,0 @@
1
- <template>
2
- <div class="h-full w-full flex flex-col">
3
- <div class="flex-1 grid grid-cols-3 gap-1.5">
4
- <div class="bg-gray-200 rounded p-1.5 flex flex-col">
5
- <div class="flex-1 bg-gray-300 rounded mb-1"></div>
6
- <div class="h-1.5 bg-gray-400 rounded"></div>
7
- </div>
8
- <div class="bg-gray-200 rounded p-1.5 flex flex-col">
9
- <div class="flex-1 bg-gray-300 rounded mb-1"></div>
10
- <div class="h-1.5 bg-gray-400 rounded"></div>
11
- </div>
12
- <div class="bg-gray-200 rounded p-1.5 flex flex-col">
13
- <div class="flex-1 bg-gray-300 rounded mb-1"></div>
14
- <div class="h-1.5 bg-gray-400 rounded"></div>
15
- </div>
16
- <div class="bg-gray-200 rounded p-1.5 flex flex-col">
17
- <div class="flex-1 bg-gray-300 rounded mb-1"></div>
18
- <div class="h-1.5 bg-gray-400 rounded"></div>
19
- </div>
20
- <div class="bg-gray-200 rounded p-1.5 flex flex-col">
21
- <div class="flex-1 bg-gray-300 rounded mb-1"></div>
22
- <div class="h-1.5 bg-gray-400 rounded"></div>
23
- </div>
24
- <div class="bg-gray-200 rounded p-1.5 flex flex-col">
25
- <div class="flex-1 bg-gray-300 rounded mb-1"></div>
26
- <div class="h-1.5 bg-gray-400 rounded"></div>
27
- </div>
28
- </div>
29
- <div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
30
- <div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
31
- <div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
32
- </div>
33
- </div>
34
- </template>
35
-
36
- <script setup>
37
- defineProps({
38
- text: {
39
- type: String,
40
- required: true,
41
- },
42
- count: {
43
- type: Number,
44
- required: true,
45
- },
46
- });
47
- </script>