@tager/admin-banners 0.1.6 → 0.3.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 (77) hide show
  1. package/dist/constants/menu.d.ts +4 -1
  2. package/dist/constants/paths.d.ts +8 -15
  3. package/dist/constants/routes.d.ts +3 -4
  4. package/dist/hooks/index.d.ts +2 -0
  5. package/dist/hooks/useFetchBanner.d.ts +8 -0
  6. package/dist/hooks/useFetchBanners.d.ts +6 -0
  7. package/dist/hooks/useFetchZones.d.ts +6 -0
  8. package/dist/index.esm.js +3202 -875
  9. package/dist/index.umd.js +3216 -886
  10. package/dist/locales/en.d.ts +39 -0
  11. package/dist/locales/ru.d.ts +3 -0
  12. package/dist/{index.d.ts → main.d.ts} +1 -0
  13. package/dist/router/index.d.ts +4 -0
  14. package/dist/services/requests.d.ts +22 -35
  15. package/dist/typings/banners.d.ts +40 -0
  16. package/dist/typings/common.d.ts +1 -0
  17. package/dist/typings/model.d.ts +103 -15
  18. package/dist/typings/zones.d.ts +5 -0
  19. package/dist/utils/common.d.ts +2 -0
  20. package/dist/views/Banners/BannerForm/BannerForm.helpers.d.ts +5 -0
  21. package/dist/views/Banners/BannerForm/BannerForm.vue.d.ts +81 -0
  22. package/dist/views/Banners/BannerForm/index.d.ts +1 -0
  23. package/dist/views/Banners/BannerList/BannerList.helpers.d.ts +5 -0
  24. package/dist/views/Banners/BannerList/BannerList.vue.d.ts +55 -0
  25. package/dist/views/Banners/BannerList/hooks/index.d.ts +1 -0
  26. package/dist/views/Banners/BannerList/hooks/useAdvancedSearch.d.ts +21 -0
  27. package/dist/views/Banners/BannerList/index.d.ts +1 -0
  28. package/dist/views/Zones/ZoneList/ZoneList.helpers.d.ts +5 -0
  29. package/dist/views/Zones/ZoneList/ZoneList.vue.d.ts +28 -0
  30. package/dist/views/Zones/ZoneList/index.d.ts +1 -0
  31. package/package.json +32 -23
  32. package/src/config/config.json +1 -1
  33. package/src/constants/menu.ts +24 -10
  34. package/src/constants/paths.ts +10 -27
  35. package/src/constants/routes.ts +27 -49
  36. package/src/dev.ts +22 -34
  37. package/src/hooks/index.ts +2 -0
  38. package/src/hooks/useFetchBanner.ts +41 -0
  39. package/src/hooks/useFetchBanners.ts +23 -0
  40. package/src/hooks/useFetchZones.ts +23 -0
  41. package/src/locales/en.ts +43 -0
  42. package/src/locales/ru.ts +45 -0
  43. package/src/main.ts +12 -0
  44. package/src/router/index.ts +38 -0
  45. package/src/services/requests.ts +35 -86
  46. package/src/typings/banners.ts +44 -0
  47. package/src/typings/common.ts +1 -0
  48. package/src/typings/model.ts +119 -16
  49. package/src/typings/shims-vue.d.ts +1 -0
  50. package/src/typings/translate.d.ts +10 -0
  51. package/src/typings/zones.ts +5 -0
  52. package/src/utils/common.ts +13 -0
  53. package/src/views/App.vue +7 -7
  54. package/src/views/Banners/BannerForm/BannerForm.helpers.ts +38 -0
  55. package/src/views/Banners/BannerForm/BannerForm.vue +236 -0
  56. package/src/views/Banners/BannerForm/index.ts +1 -0
  57. package/src/views/Banners/BannerList/BannerList.helpers.ts +93 -0
  58. package/src/views/Banners/BannerList/BannerList.vue +233 -0
  59. package/src/views/Banners/BannerList/hooks/index.ts +1 -0
  60. package/src/views/Banners/BannerList/hooks/useAdvancedSearch.ts +152 -0
  61. package/src/views/Banners/BannerList/index.ts +1 -0
  62. package/src/views/Home.vue +37 -0
  63. package/src/views/Zones/ZoneList/ZoneList.helpers.ts +34 -0
  64. package/src/views/Zones/ZoneList/ZoneList.vue +75 -0
  65. package/src/views/Zones/ZoneList/index.ts +1 -0
  66. package/dist/views/BannerAreaForm.vue.d.ts +0 -22
  67. package/dist/views/BannerAreaList.vue.d.ts +0 -17
  68. package/dist/views/BannerItemForm.vue.d.ts +0 -27
  69. package/dist/views/BannerItemList.vue.d.ts +0 -22
  70. package/src/index.ts +0 -3
  71. package/src/locales/en.js +0 -3
  72. package/src/locales/ru.js +0 -3
  73. package/src/views/BannerAreaForm.vue +0 -173
  74. package/src/views/BannerAreaList.vue +0 -176
  75. package/src/views/BannerItemForm.vue +0 -231
  76. package/src/views/BannerItemList.vue +0 -221
  77. package/typings/index.d.ts +0 -15
@@ -1,221 +0,0 @@
1
- <template>
2
- <page
3
- :title="pageTitle"
4
- :header-buttons="[
5
- { text: 'New Banner Item', href: getLinkToBannerItemForm('create') },
6
- ]"
7
- >
8
- <template v-slot:content>
9
- <base-table
10
- :column-defs="columnDefs"
11
- :row-data="rowData"
12
- :loading="isRowDataLoading"
13
- :error-message="errorMessage"
14
- enumerable
15
- >
16
- <template v-slot:cell(actions)="{ row, rowIndex }">
17
- <base-button
18
- variant="icon"
19
- title="Edit"
20
- :disabled="deletingBannerItemIdList.includes(row.id)"
21
- :href="getLinkToBannerItemForm(row.id)"
22
- >
23
- <svg-icon name="edit"></svg-icon>
24
- </base-button>
25
-
26
- <base-button
27
- variant="icon"
28
- title="Move up"
29
- :disabled="rowIndex === 0 || isBannerItemMoving"
30
- @click="moveBannerItem(row.id, 'up')"
31
- >
32
- <svg-icon name="north"></svg-icon>
33
- </base-button>
34
-
35
- <base-button
36
- variant="icon"
37
- title="Move down"
38
- :disabled="rowIndex === rowData.length - 1 || isBannerItemMoving"
39
- @click="moveBannerItem(row.id, 'down')"
40
- >
41
- <svg-icon name="south"></svg-icon>
42
- </base-button>
43
-
44
- <base-button
45
- variant="icon"
46
- title="Remove"
47
- :disabled="deletingBannerItemIdList.includes(row.id)"
48
- @click="handleBannerItemDelete(row)"
49
- >
50
- <svg-icon name="delete"></svg-icon>
51
- </base-button>
52
- </template>
53
- </base-table>
54
- </template>
55
- </page>
56
- </template>
57
-
58
- <script lang="ts">
59
- import Vue from 'vue';
60
- import { ColumnDefinition, formatBoolean } from '@tager/admin-ui';
61
- import { getMessageFromError, Nullable } from '@tager/admin-services';
62
- import { BannerArea, BannerItem } from '../typings/model';
63
- import {
64
- deleteBannerItem,
65
- getBannerAreaByAlias,
66
- getBannerItemList,
67
- moveBannerItem,
68
- } from '../services/requests';
69
- import { getBannerItemFormUrl } from '../constants/paths';
70
-
71
- const COLUMN_DEFS: Array<ColumnDefinition<BannerItem>> = [
72
- {
73
- id: 2,
74
- name: 'Image',
75
- field: 'image',
76
- type: 'image',
77
- },
78
- {
79
- id: 1,
80
- name: 'Title',
81
- field: 'title',
82
- },
83
- { id: 3, name: 'Text', field: 'text', type: 'html' },
84
- { id: 4, name: 'Button: Label', field: 'buttonLabel' },
85
- { id: 5, name: 'Button: Link', field: 'buttonLink' },
86
- {
87
- id: 6,
88
- name: 'Button: Is new tab?',
89
- field: 'buttonIsNewTab',
90
- format: ({ row }) => formatBoolean(row.buttonIsNewTab),
91
- },
92
- {
93
- id: 7,
94
- name: 'Actions',
95
- field: 'actions',
96
- style: { whiteSpace: 'nowrap', width: '205px' },
97
- headStyle: { whiteSpace: 'nowrap', width: '205px' },
98
- },
99
- ];
100
-
101
- export default Vue.extend({
102
- name: 'BannerItemList',
103
- data(): {
104
- columnDefs: Array<ColumnDefinition<BannerItem>>;
105
- rowData: Array<BannerItem>;
106
- deletingBannerItemIdList: Array<number>;
107
- isBannerItemMoving: boolean;
108
- isRowDataLoading: boolean;
109
- errorMessage: Nullable<string>;
110
- bannerArea: Nullable<BannerArea>;
111
- } {
112
- return {
113
- bannerArea: null,
114
- columnDefs: COLUMN_DEFS,
115
- rowData: [],
116
- deletingBannerItemIdList: [],
117
- isBannerItemMoving: false,
118
- isRowDataLoading: false,
119
- errorMessage: null,
120
- };
121
- },
122
- computed: {
123
- areaAlias(): string {
124
- return this.$route.params.areaAlias;
125
- },
126
- pageTitle(): string {
127
- return this.bannerArea ? `"${this.bannerArea.label}" banners` : 'Banners';
128
- },
129
- },
130
- watch: {
131
- areaAlias() {
132
- this.refreshBannerItemList();
133
- },
134
- },
135
- mounted(): void {
136
- this.refreshBannerItemList();
137
- },
138
- methods: {
139
- refreshBannerItemList(): Promise<void> {
140
- this.isRowDataLoading = true;
141
- return getBannerAreaByAlias(this.areaAlias)
142
- .then((response) => {
143
- this.bannerArea = response.data;
144
- return getBannerItemList(this.bannerArea.id);
145
- })
146
- .then((response) => {
147
- this.rowData = response.data;
148
- this.errorMessage = null;
149
- })
150
- .catch((error) => {
151
- console.error(error);
152
- this.rowData = [];
153
- this.errorMessage = getMessageFromError(error);
154
- })
155
- .finally(() => {
156
- this.isRowDataLoading = false;
157
- });
158
- },
159
- moveBannerItem(bannerItemId: number, direction: 'up' | 'down') {
160
- this.isBannerItemMoving = true;
161
-
162
- moveBannerItem(bannerItemId, direction)
163
- .then((response) => {
164
- if (response.success) {
165
- return this.refreshBannerItemList();
166
- }
167
- })
168
- .catch(console.error)
169
- .finally(() => {
170
- this.isBannerItemMoving = false;
171
- });
172
- },
173
- handleBannerItemDelete(bannerItem: BannerItem) {
174
- const shouldDeleteBannerItem = confirm(
175
- `Are you sure you want to delete banner item "${bannerItem.title}"`
176
- );
177
-
178
- if (shouldDeleteBannerItem) {
179
- this.deletingBannerItemIdList.push(bannerItem.id);
180
- deleteBannerItem(bannerItem.id)
181
- .then((response) => {
182
- if (response.success) {
183
- this.refreshBannerItemList().then(() => {
184
- this.deletingBannerItemIdList.filter(
185
- (id) => id !== bannerItem.id
186
- );
187
- });
188
- this.$toast({
189
- variant: 'success',
190
- title: 'Success',
191
- body: 'Banner Item was successfully removed',
192
- });
193
- } else {
194
- this.$toast({
195
- variant: 'danger',
196
- title: 'Error',
197
- body: 'Banner Item deletion was failed',
198
- });
199
- }
200
- })
201
- .catch((error) => {
202
- console.error(error);
203
- this.$toast({
204
- variant: 'danger',
205
- title: 'Error',
206
- body: 'Banner Item deletion was failed',
207
- });
208
- });
209
- }
210
- },
211
- getLinkToBannerItemForm(bannerItemId: number | string) {
212
- return getBannerItemFormUrl({
213
- areaAlias: this.bannerArea?.alias ?? 'unknowm',
214
- itemId: bannerItemId,
215
- });
216
- },
217
- },
218
- });
219
- </script>
220
-
221
- <style scoped lang="scss"></style>
@@ -1,15 +0,0 @@
1
- import { CustomRouteConfig, MenuItemType } from '@tager/admin-layout';
2
-
3
- export declare const BLOG_POST_LIST_ROUTE: CustomRouteConfig;
4
- export declare const BLOG_POST_FORM_ROUTE: CustomRouteConfig;
5
- export declare const BLOG_CATEGORY_LIST_ROUTE: CustomRouteConfig;
6
- export declare const BLOG_CATEGORY_FORM_ROUTE: CustomRouteConfig;
7
-
8
- export declare const BLOG_MENU_ITEM: MenuItemType;
9
-
10
- export declare const BLOG_ROUTE_PATHS: {
11
- POST_LIST: string;
12
- POST_FORM: string;
13
- CATEGORY_LIST: string;
14
- CATEGORY_FORM: string;
15
- };