@tager/admin-banners 0.3.7 → 1.0.0

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 (70) hide show
  1. package/dist/constants/paths.d.ts +5 -10
  2. package/dist/constants/routes.d.ts +4 -4
  3. package/dist/dev/App.vue.d.ts +5 -0
  4. package/dist/dev/config.d.ts +2 -0
  5. package/dist/dev/env.d.ts +1 -0
  6. package/dist/dev/main.d.ts +3 -0
  7. package/dist/hooks/index.d.ts +2 -2
  8. package/dist/hooks/useFetchBanner.d.ts +7 -8
  9. package/dist/hooks/useFetchBanners.d.ts +3 -6
  10. package/dist/hooks/useFetchZoneFields.d.ts +7 -8
  11. package/dist/hooks/useFetchZones.d.ts +3 -6
  12. package/dist/index.mjs +993 -0
  13. package/dist/locales/apply.d.ts +1 -0
  14. package/dist/locales/en.d.ts +41 -41
  15. package/dist/locales/ru.d.ts +2 -3
  16. package/dist/main.d.ts +3 -4
  17. package/dist/services/requests.d.ts +25 -25
  18. package/dist/style.css +1 -0
  19. package/dist/typings/banners.d.ts +47 -47
  20. package/dist/typings/common.d.ts +1 -1
  21. package/dist/typings/model.d.ts +104 -104
  22. package/dist/typings/zones.d.ts +9 -9
  23. package/dist/utils/common.d.ts +2 -2
  24. package/dist/utils/paths.d.ts +5 -0
  25. package/dist/views/Banners/BannerForm/BannerForm.helpers.d.ts +5 -5
  26. package/dist/views/Banners/BannerForm/BannerForm.vue.d.ts +2694 -9251
  27. package/dist/views/Banners/BannerForm/index.d.ts +1 -1
  28. package/dist/views/Banners/BannerList/BannerList.helpers.d.ts +6 -6
  29. package/dist/views/Banners/BannerList/BannerList.vue.d.ts +25 -55
  30. package/dist/views/Banners/BannerList/hooks/index.d.ts +1 -1
  31. package/dist/views/Banners/BannerList/hooks/useAdvancedSearch.d.ts +23 -21
  32. package/dist/views/Banners/BannerList/index.d.ts +1 -1
  33. package/dist/views/Zones/ZoneList/ZoneList.helpers.d.ts +5 -5
  34. package/dist/views/Zones/ZoneList/ZoneList.vue.d.ts +11 -28
  35. package/dist/views/Zones/ZoneList/index.d.ts +1 -1
  36. package/package.json +51 -49
  37. package/src/constants/paths.ts +1 -15
  38. package/src/constants/routes.ts +7 -7
  39. package/src/dev/App.vue +46 -0
  40. package/src/dev/config.ts +23 -0
  41. package/src/dev/env.ts +17 -0
  42. package/src/dev/main.ts +47 -0
  43. package/src/hooks/useFetchBanner.ts +3 -6
  44. package/src/hooks/useFetchBanners.ts +2 -5
  45. package/src/hooks/useFetchZoneFields.ts +1 -10
  46. package/src/hooks/useFetchZones.ts +2 -5
  47. package/src/locales/apply.ts +9 -0
  48. package/src/locales/en.ts +1 -1
  49. package/src/locales/ru.ts +40 -42
  50. package/src/main.ts +3 -8
  51. package/src/utils/paths.ts +15 -0
  52. package/src/views/Banners/BannerForm/BannerForm.vue +97 -80
  53. package/src/views/Banners/BannerList/BannerList.vue +60 -47
  54. package/src/views/Banners/BannerList/hooks/useAdvancedSearch.ts +14 -14
  55. package/src/views/Zones/ZoneList/ZoneList.helpers.ts +1 -1
  56. package/src/views/Zones/ZoneList/ZoneList.vue +18 -19
  57. package/CHANGELOG.md +0 -13
  58. package/dist/constants/menu.d.ts +0 -5
  59. package/dist/dev.d.ts +0 -1
  60. package/dist/index.esm.js +0 -3709
  61. package/dist/index.umd.js +0 -3728
  62. package/dist/router/index.d.ts +0 -4
  63. package/src/constants/menu.ts +0 -26
  64. package/src/dev.ts +0 -34
  65. package/src/router/index.ts +0 -38
  66. package/src/typings/sfc.d.ts +0 -12
  67. package/src/typings/shims-tsx.d.ts +0 -13
  68. package/src/typings/shims-vue.d.ts +0 -11
  69. package/src/views/App.vue +0 -22
  70. package/src/views/Home.vue +0 -37
@@ -1 +1 @@
1
- export { default } from './BannerForm.vue';
1
+ export { default } from './BannerForm.vue';
@@ -1,6 +1,6 @@
1
- import { TFunction } from 'i18next';
2
- import { ColumnDefinition } from '@tager/admin-ui';
3
- import { Banner, Status } from '../../../typings/banners';
4
- import { Zone } from '../../../typings/zones';
5
- export declare function getStatus(type: Status, t: TFunction): string;
6
- export declare function getColumnDefs(zoneList: Zone[], t: TFunction): ColumnDefinition<Banner>[];
1
+ import { TFunction } from 'i18next';
2
+ import { ColumnDefinition } from '@tager/admin-ui';
3
+ import { Banner, Status } from '../../../typings/banners';
4
+ import { Zone } from '../../../typings/zones';
5
+ export declare function getStatus(type: Status, t: TFunction): string;
6
+ export declare function getColumnDefs(zoneList: Zone[], t: TFunction): ColumnDefinition<Banner>[];
@@ -1,55 +1,25 @@
1
- import { ColumnDefinition } from '@tager/admin-ui';
2
- import { Banner } from '../../../typings/banners';
3
- import { getBannersBannerFormUrl } from '../../../constants/paths';
4
- declare const _default: import("vue").ComponentOptions<import("vue").default, import("@vue/composition-api").ShallowUnwrapRef<{
5
- columnDefs: import("@vue/composition-api").ComputedRef<ColumnDefinition<Banner>[]>;
6
- isRowDataLoading: import("@vue/composition-api").ComputedRef<boolean>;
7
- rowData: import("@vue/composition-api").Ref<Banner[]>;
8
- errorMessage: import("@vue/composition-api").Ref<import("@tager/admin-services").Nullable<string>>;
9
- handleChange: (event: import("@tager/admin-ui").TableChangeEvent) => void;
10
- getBannersBannerFormUrl: typeof getBannersBannerFormUrl;
11
- searchQuery: import("@vue/composition-api").Ref<string>;
12
- pageNumber: import("@vue/composition-api").Ref<number>;
13
- pageCount: import("@vue/composition-api").ComputedRef<number>;
14
- pageSize: import("@vue/composition-api").Ref<number>;
15
- isBusy: (bannerId: number) => boolean;
16
- handleResourceDelete: (entityId: string | number) => void;
17
- zoneFilter: import("@vue/composition-api").Ref<import("@tager/admin-ui").OptionType<string>[]>;
18
- zonesOptionList: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").OptionType<string>[]>;
19
- dateFilter: import("@vue/composition-api").Ref<string>;
20
- statusFilter: import("@vue/composition-api").Ref<import("@tager/admin-ui").OptionType<string>[]>;
21
- statusesOptionList: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").OptionType<string>[]>;
22
- tags: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").FilterTagType[]>;
23
- tagRemovalHandler: (event: import("@tager/admin-ui").FilterTagType) => void;
24
- }> & {
25
- [key: string]: unknown;
26
- }, {}, {}, unknown, {
27
- [x: string]: any;
28
- }> & import("vue").VueConstructor<import("vue").default> & (new (...args: any[]) => import("@vue/composition-api").ComponentRenderProxy<{
29
- [x: string]: any;
30
- }, import("@vue/composition-api").ShallowUnwrapRef<{
31
- columnDefs: import("@vue/composition-api").ComputedRef<ColumnDefinition<Banner>[]>;
32
- isRowDataLoading: import("@vue/composition-api").ComputedRef<boolean>;
33
- rowData: import("@vue/composition-api").Ref<Banner[]>;
34
- errorMessage: import("@vue/composition-api").Ref<import("@tager/admin-services").Nullable<string>>;
35
- handleChange: (event: import("@tager/admin-ui").TableChangeEvent) => void;
36
- getBannersBannerFormUrl: typeof getBannersBannerFormUrl;
37
- searchQuery: import("@vue/composition-api").Ref<string>;
38
- pageNumber: import("@vue/composition-api").Ref<number>;
39
- pageCount: import("@vue/composition-api").ComputedRef<number>;
40
- pageSize: import("@vue/composition-api").Ref<number>;
41
- isBusy: (bannerId: number) => boolean;
42
- handleResourceDelete: (entityId: string | number) => void;
43
- zoneFilter: import("@vue/composition-api").Ref<import("@tager/admin-ui").OptionType<string>[]>;
44
- zonesOptionList: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").OptionType<string>[]>;
45
- dateFilter: import("@vue/composition-api").Ref<string>;
46
- statusFilter: import("@vue/composition-api").Ref<import("@tager/admin-ui").OptionType<string>[]>;
47
- statusesOptionList: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").OptionType<string>[]>;
48
- tags: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").FilterTagType[]>;
49
- tagRemovalHandler: (event: import("@tager/admin-ui").FilterTagType) => void;
50
- }>, {
51
- [x: string]: any;
52
- }, {}, {}, {
53
- [x: string]: any;
54
- }>);
55
- export default _default;
1
+ import { ColumnDefinition } from '@tager/admin-ui';
2
+ import { Banner } from '../../../typings/banners';
3
+ import { getBannersBannerFormUrl } from '../../../utils/paths';
4
+ declare const _default: import("vue").DefineComponent<{}, {
5
+ columnDefs: import("vue").ComputedRef<ColumnDefinition<Banner>[]>;
6
+ isRowDataLoading: import("vue").ComputedRef<boolean>;
7
+ rowData: import("vue").Ref<Banner[]>;
8
+ errorMessage: import("vue").Ref<import("@tager/admin-services").Nullable<string>>;
9
+ handleChange: (event: import("@tager/admin-ui/dist/components/DataTable/DataTable.types").TableChangeEvent) => void;
10
+ getBannersBannerFormUrl: typeof getBannersBannerFormUrl;
11
+ searchQuery: import("vue").Ref<string>;
12
+ pageNumber: import("vue").Ref<number>;
13
+ pageCount: import("vue").ComputedRef<number>;
14
+ pageSize: import("vue").Ref<number>;
15
+ isBusy: (bannerId: number) => boolean;
16
+ handleResourceDelete: (entityId: string | number) => void;
17
+ zoneFilter: import("vue").Ref<import("@tager/admin-ui").OptionType<string>[]>;
18
+ zonesOptionList: import("vue").ComputedRef<import("@tager/admin-ui").OptionType<string>[]>;
19
+ dateFilter: import("vue").Ref<string>;
20
+ statusFilter: import("vue").Ref<import("@tager/admin-ui").OptionType<string>[]>;
21
+ statusesOptionList: import("vue").ComputedRef<import("@tager/admin-ui").OptionType<string>[]>;
22
+ tags: import("vue").ComputedRef<import("@tager/admin-ui").FilterTagType[]>;
23
+ tagRemovalHandler: (event: import("@tager/admin-ui").FilterTagType) => void;
24
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
25
+ export default _default;
@@ -1 +1 @@
1
- export { useAdvancedSearch } from './useAdvancedSearch';
1
+ export { useAdvancedSearch } from './useAdvancedSearch';
@@ -1,21 +1,23 @@
1
- import { ComputedRef, Ref, SetupContext } from '@vue/composition-api';
2
- import { TFunction } from 'i18next';
3
- import { FilterTagType, OptionType } from '@tager/admin-ui';
4
- import { Zone } from '../../../../typings/zones';
5
- interface Params {
6
- context: SetupContext;
7
- t: TFunction;
8
- zoneList: ComputedRef<Zone[]>;
9
- }
10
- interface State {
11
- zoneFilter: Ref<OptionType[]>;
12
- zonesOptionList: ComputedRef<OptionType[]>;
13
- dateFilter: Ref<string>;
14
- statusFilter: Ref<OptionType[]>;
15
- statusesOptionList: ComputedRef<OptionType[]>;
16
- filterParams: ComputedRef<Record<string, string | string[]>>;
17
- tags: ComputedRef<FilterTagType[]>;
18
- tagRemovalHandler(event: FilterTagType): void;
19
- }
20
- export declare function useAdvancedSearch({ context, t, zoneList }: Params): State;
21
- export {};
1
+ import { ComputedRef, Ref, SetupContext } from 'vue';
2
+ import { TFunction } from 'i18next';
3
+ import { RouteLocationNormalizedLoaded } from 'vue-router';
4
+ import { FilterTagType, OptionType } from '@tager/admin-ui';
5
+ import { Zone } from '../../../../typings/zones';
6
+ interface Params {
7
+ context: SetupContext;
8
+ t: TFunction;
9
+ zoneList: Ref<Zone[]>;
10
+ route: RouteLocationNormalizedLoaded;
11
+ }
12
+ interface State {
13
+ zoneFilter: Ref<OptionType[]>;
14
+ zonesOptionList: ComputedRef<OptionType[]>;
15
+ dateFilter: Ref<string>;
16
+ statusFilter: Ref<OptionType[]>;
17
+ statusesOptionList: ComputedRef<OptionType[]>;
18
+ filterParams: ComputedRef<Record<string, string | string[]>>;
19
+ tags: ComputedRef<FilterTagType[]>;
20
+ tagRemovalHandler(event: FilterTagType): void;
21
+ }
22
+ export declare function useAdvancedSearch({ context, t, zoneList, route, }: Params): State;
23
+ export {};
@@ -1 +1 @@
1
- export { default } from './BannerList.vue';
1
+ export { default } from './BannerList.vue';
@@ -1,5 +1,5 @@
1
- import { TFunction } from 'i18next';
2
- import { ColumnDefinition } from '@tager/admin-ui';
3
- import { Zone } from '../../../typings/zones';
4
- export declare function getColumnDefs(t: TFunction): ColumnDefinition<Zone>[];
5
- export declare function getLinkToBannersByZone(zoneId: number): string;
1
+ import { TFunction } from 'i18next';
2
+ import { ColumnDefinition } from '@tager/admin-ui';
3
+ import { Zone } from '../../../typings/zones';
4
+ export declare function getColumnDefs(t: TFunction): ColumnDefinition<Zone>[];
5
+ export declare function getLinkToBannersByZone(zoneId: number): string;
@@ -1,28 +1,11 @@
1
- import { Zone } from '../../../typings/zones';
2
- import { getLinkToBannersByZone } from './ZoneList.helpers';
3
- declare const _default: import("vue").ComponentOptions<import("vue").default, import("@vue/composition-api").ShallowUnwrapRef<{
4
- columnDefs: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").ColumnDefinition<Zone>[]>;
5
- isRowDataLoading: import("@vue/composition-api").ComputedRef<boolean>;
6
- rowData: import("@vue/composition-api").Ref<Zone[]>;
7
- errorMessage: import("@vue/composition-api").Ref<import("@tager/admin-services").Nullable<string>>;
8
- handleChange: (event: import("@tager/admin-ui").TableChangeEvent) => void;
9
- getLinkToBannersByZone: typeof getLinkToBannersByZone;
10
- }> & {
11
- [key: string]: unknown;
12
- }, {}, {}, unknown, {
13
- [x: string]: any;
14
- }> & import("vue").VueConstructor<import("vue").default> & (new (...args: any[]) => import("@vue/composition-api").ComponentRenderProxy<{
15
- [x: string]: any;
16
- }, import("@vue/composition-api").ShallowUnwrapRef<{
17
- columnDefs: import("@vue/composition-api").ComputedRef<import("@tager/admin-ui").ColumnDefinition<Zone>[]>;
18
- isRowDataLoading: import("@vue/composition-api").ComputedRef<boolean>;
19
- rowData: import("@vue/composition-api").Ref<Zone[]>;
20
- errorMessage: import("@vue/composition-api").Ref<import("@tager/admin-services").Nullable<string>>;
21
- handleChange: (event: import("@tager/admin-ui").TableChangeEvent) => void;
22
- getLinkToBannersByZone: typeof getLinkToBannersByZone;
23
- }>, {
24
- [x: string]: any;
25
- }, {}, {}, {
26
- [x: string]: any;
27
- }>);
28
- export default _default;
1
+ import { Zone } from '../../../typings/zones';
2
+ import { getLinkToBannersByZone } from './ZoneList.helpers';
3
+ declare const _default: import("vue").DefineComponent<{}, {
4
+ columnDefs: import("vue").ComputedRef<import("@tager/admin-ui").ColumnDefinition<Zone>[]>;
5
+ isRowDataLoading: import("vue").ComputedRef<boolean>;
6
+ rowData: import("vue").Ref<Zone[]>;
7
+ errorMessage: import("vue").Ref<import("@tager/admin-services").Nullable<string>>;
8
+ handleChange: (event: import("@tager/admin-ui/dist/components/DataTable/DataTable.types").TableChangeEvent) => void;
9
+ getLinkToBannersByZone: typeof getLinkToBannersByZone;
10
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
11
+ export default _default;
@@ -1 +1 @@
1
- export { default } from './ZoneList.vue';
1
+ export { default } from './ZoneList.vue';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tager/admin-banners",
3
- "version": "0.3.7",
3
+ "version": "1.0.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.umd.js",
6
6
  "module": "dist/index.esm.js",
@@ -10,65 +10,67 @@
10
10
  "typings",
11
11
  "src"
12
12
  ],
13
+ "exports": {
14
+ "./css": "./dist/style.css",
15
+ ".": "./dist/index.mjs"
16
+ },
13
17
  "scripts": {
18
+ "build:js": "vite build",
19
+ "build:package": "concurrently --success first \"yarn build:js\" \"yarn emit-declarations\"",
20
+ "emit-declarations": "vue-tsc --project tsconfig.json --emitDeclarationOnly",
14
21
  "start": "vue-cli-service serve",
15
- "lint": "vue-cli-service lint",
16
- "build": "rollup --config",
17
- "prepare": "yarn build",
18
- "tager:update": "node scripts/tager-update.js",
19
- "yalc:clean": "yalc remove --all"
22
+ "prepare": "yarn build:package",
23
+ "tager:update": "yarn upgrade --latest --scope @tager"
20
24
  },
21
25
  "dependencies": {
26
+ "filesize": "^9.0.11",
22
27
  "lodash.isequal": "^4.5.0",
28
+ "lodash.kebabcase": "^4.1.1",
23
29
  "lodash.pick": "^4.4.0",
24
30
  "path-to-regexp": "^6.1.0"
25
31
  },
26
32
  "devDependencies": {
27
- "@rollup/plugin-commonjs": "^15.0.0",
28
- "@rollup/plugin-node-resolve": "^9.0.0",
29
- "@tager/admin-dynamic-field": "^0.1.18",
30
- "@tager/admin-layout": "^0.5.4",
31
- "@tager/admin-services": "^0.2.26",
32
- "@tager/admin-ui": "^0.8.96",
33
- "@types/lodash.isequal": "^4.5.5",
34
- "@types/lodash.pick": "^4.4.6",
35
- "@types/node": "12.x",
36
- "@typescript-eslint/eslint-plugin": "^2.26.0",
37
- "@typescript-eslint/parser": "^2.26.0",
38
- "@vue/cli-plugin-babel": "~4.5.6",
39
- "@vue/cli-plugin-eslint": "~4.5.6",
40
- "@vue/cli-plugin-router": "~4.5.6",
41
- "@vue/cli-plugin-typescript": "~4.5.6",
42
- "@vue/cli-service": "~4.5.6",
43
- "@vue/composition-api": "^1.0.0-beta.14",
44
- "@vue/eslint-config-prettier": "^6.0.0",
45
- "@vue/eslint-config-typescript": "^5.1.0",
46
- "babel-eslint": "^10.1.0",
47
- "core-js": "^3.6.5",
48
- "eslint": "^6.7.2",
49
- "eslint-plugin-import": "^2.22.0",
50
- "eslint-plugin-prettier": "^3.1.4",
51
- "eslint-plugin-vue": "^6.2.2",
52
- "prettier": "^2.1.2",
53
- "rollup": "^2.27.1",
54
- "rollup-plugin-typescript2": "^0.27.2",
55
- "rollup-plugin-vue": "^5.1.9",
56
- "sass-loader": "^10.0.2",
57
- "typescript": "~3.9.10",
58
- "vue": "2.6.x",
59
- "vue-router": "^3.5.1",
60
- "vue-template-compiler": "^2.6.11"
33
+ "@babel/core": "^7.17.9",
34
+ "@babel/eslint-parser": "^7.17.0",
35
+ "@rushstack/eslint-patch": "^1.1.2",
36
+ "@tager/admin-dynamic-field": "^1.0.0",
37
+ "@tager/admin-layout": "^1.0.0",
38
+ "@tager/admin-services": "^1.0.0",
39
+ "@tager/admin-ui": "^1.0.1",
40
+ "@types/filesize": "^5.0.0",
41
+ "@types/lodash.isequal": "^4.5.6",
42
+ "@types/lodash.pick": "^4.4.7",
43
+ "@types/node": "16.x",
44
+ "@typescript-eslint/eslint-plugin": "^5.21.0",
45
+ "@typescript-eslint/parser": "^5.21.0",
46
+ "@vitejs/plugin-vue": "^2.3.1",
47
+ "@vue/cli-plugin-babel": "^5.0.4",
48
+ "@vue/cli-plugin-typescript": "^5.0.4",
49
+ "@vue/cli-service": "~5.0.0",
50
+ "@vue/eslint-config-prettier": "^7.0.0",
51
+ "@vue/eslint-config-typescript": "^10.0.0",
52
+ "concurrently": "^7.1.0",
53
+ "core-js": "^3.22.3",
54
+ "eslint": "^8.14.0",
55
+ "eslint-config-prettier": "^8.5.0",
56
+ "eslint-plugin-import": "^2.26.0",
57
+ "eslint-plugin-prettier": "^4.0.0",
58
+ "eslint-plugin-vue": "^8.7.1",
59
+ "pinia": "^2.0.21",
60
+ "sass": "^1.51.0",
61
+ "sass-loader": "^12.6.0",
62
+ "typescript": "^4.6.3",
63
+ "vite": "^2.9.6",
64
+ "vue": "^3.2.31",
65
+ "vue-router": "^4.0.14",
66
+ "vue-tsc": "^0.34.10"
61
67
  },
62
68
  "peerDependencies": {
63
- "@tager/admin-dynamic-field": ">=0.1.3",
64
- "@tager/admin-layout": ">=0.4.2",
65
- "@tager/admin-services": ">=0.2.12",
66
- "@tager/admin-ui": ">=0.7.5",
67
- "@vue/composition-api": ">=1.0.0-beta.14",
68
- "vue": "2.6.x"
69
- },
70
- "resolutions": {
71
- "prettier": "2.x"
69
+ "@tager/admin-layout": "^1.0.0",
70
+ "@tager/admin-services": "^1.0.0",
71
+ "@tager/admin-ui": "^1.0.1",
72
+ "vue": "^3.2.31",
73
+ "vue-router": "^4.0.14"
72
74
  },
73
75
  "publishConfig": {
74
76
  "access": "public"
@@ -1,19 +1,5 @@
1
- import { compile } from 'path-to-regexp';
2
-
3
1
  export const BANNERS_ROUTE_PATHS = {
4
2
  ZONE_LIST: '/banners/zones',
5
3
  BANNER_LIST: '/banners',
6
4
  BANNER_FORM: '/banners/:bannerId',
7
- } as const;
8
-
9
- export function getBannersZoneListUrl() {
10
- return BANNERS_ROUTE_PATHS.ZONE_LIST;
11
- }
12
-
13
- export function getBannersBannerListUrl() {
14
- return BANNERS_ROUTE_PATHS.BANNER_LIST;
15
- }
16
-
17
- export function getBannersBannerFormUrl(params: { bannerId: number | string }) {
18
- return compile(BANNERS_ROUTE_PATHS.BANNER_FORM)(params);
19
- }
5
+ } as const;
@@ -1,4 +1,4 @@
1
- import { CustomRouteConfig } from '@tager/admin-layout';
1
+ import { type RouteRecordRaw } from 'vue-router';
2
2
 
3
3
  import ZoneList from '../views/Zones/ZoneList';
4
4
  import BannerList from '../views/Banners/BannerList';
@@ -6,36 +6,36 @@ import BannerForm from '../views/Banners/BannerForm';
6
6
 
7
7
  import { BANNERS_ROUTE_PATHS } from './paths';
8
8
 
9
- export const BANNERS_ZONE_LIST_ROUTE: CustomRouteConfig = {
9
+ export const BANNERS_ZONE_LIST_ROUTE: RouteRecordRaw = {
10
10
  path: BANNERS_ROUTE_PATHS.ZONE_LIST,
11
11
  component: ZoneList,
12
12
  name: 'Zones',
13
13
  meta: {
14
- getBreadcrumbs: (route, t) => [
14
+ getBreadcrumbs: (route, { t }) => [
15
15
  { url: '/', text: t('banners:home') },
16
16
  { url: BANNERS_ROUTE_PATHS.ZONE_LIST, text: t('banners:zones') },
17
17
  ],
18
18
  },
19
19
  };
20
20
 
21
- export const BANNERS_BANNER_LIST_ROUTE: CustomRouteConfig = {
21
+ export const BANNERS_BANNER_LIST_ROUTE: RouteRecordRaw = {
22
22
  path: BANNERS_ROUTE_PATHS.BANNER_LIST,
23
23
  component: BannerList,
24
24
  name: 'Banners',
25
25
  meta: {
26
- getBreadcrumbs: (route, t) => [
26
+ getBreadcrumbs: (route, { t }) => [
27
27
  { url: '/', text: t('banners:home') },
28
28
  { url: BANNERS_ROUTE_PATHS.BANNER_LIST, text: t('banners:banners') },
29
29
  ],
30
30
  },
31
31
  };
32
32
 
33
- export const BANNERS_BANNER_FORM_ROUTE: CustomRouteConfig = {
33
+ export const BANNERS_BANNER_FORM_ROUTE: RouteRecordRaw = {
34
34
  path: BANNERS_ROUTE_PATHS.BANNER_FORM,
35
35
  component: BannerForm,
36
36
  name: 'Banner Form',
37
37
  meta: {
38
- getBreadcrumbs: (route, t) => [
38
+ getBreadcrumbs: (route, { t }) => [
39
39
  { url: '/', text: t('banners:home') },
40
40
  { url: BANNERS_ROUTE_PATHS.BANNER_LIST, text: t('banners:banners') },
41
41
  { url: route.path, text: t('banners:bannerForm') },
@@ -0,0 +1,46 @@
1
+ <template>
2
+ <PageLayout :sidebar-menu-list="sidebarMenuList">
3
+ <router-view />
4
+ </PageLayout>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ import { defineComponent } from 'vue';
9
+
10
+ import { MenuItemType, PageLayout } from '@tager/admin-layout';
11
+ import { ViewListIcon } from '@tager/admin-ui';
12
+ import { useI18n } from '@tager/admin-services';
13
+
14
+ import { getBannersBannerListUrl, getBannersZoneListUrl } from '../utils/paths';
15
+
16
+ export default defineComponent({
17
+ name: 'App',
18
+ components: {
19
+ PageLayout,
20
+ },
21
+ setup() {
22
+ const i18n = useI18n();
23
+
24
+ const sidebarMenuList: Array<MenuItemType> = [
25
+ {
26
+ id: 'banners',
27
+ text: i18n.t('banners:banners'),
28
+ icon: ViewListIcon,
29
+ url: getBannersBannerListUrl(),
30
+ },
31
+ {
32
+ id: 'zones',
33
+ text: i18n.t('banners:zones'),
34
+ icon: ViewListIcon,
35
+ url: getBannersZoneListUrl(),
36
+ },
37
+ ];
38
+
39
+ return {
40
+ sidebarMenuList,
41
+ };
42
+ },
43
+ });
44
+ </script>
45
+
46
+ <style scoped lang="scss"></style>
@@ -0,0 +1,23 @@
1
+ import type { AppConfigType } from '@tager/admin-services';
2
+
3
+ export const OZITAG_CONFIG: AppConfigType = {
4
+ APP_NAME: 'OZiTAG_ADMIN',
5
+ TITLE_TEMPLATE: 'OZiTAG Admin - {{title}}',
6
+ LANGUAGE: 'EN',
7
+ BRAND: {
8
+ small: {
9
+ logo: 'logo-small.svg',
10
+ },
11
+ large: {
12
+ logo: 'logo.svg',
13
+ label: 'OZiTAG',
14
+ 'label-color': '#DD6900',
15
+ },
16
+ subtitle: '',
17
+ },
18
+ SPLASH_SCREEN: {
19
+ enabled: true,
20
+ logo: 'logo-white.svg',
21
+ background: '#1e1e1e',
22
+ },
23
+ };
package/src/dev/env.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { initializeEnvironment } from '@tager/admin-services';
2
+
3
+ export function populateEnvironment() {
4
+ initializeEnvironment({
5
+ publicPath: process.env.VUE_APP_PUBLIC_PATH,
6
+ appEnv: process.env.VUE_APP_ENV,
7
+ apiUrl: process.env.VUE_APP_API_URL,
8
+ accessToken: process.env.VUE_APP_ACCESS_TOKEN,
9
+ websiteUrl: process.env.VUE_APP_WEBSITE_URL,
10
+ websiteButtonUrl: process.env.VUE_APP_WEBSITE_BUTTON_URL,
11
+ sentryDsn: process.env.VUE_APP_SENTRY_DSN,
12
+ sentryEnv: process.env.VUE_APP_SENTRY_ENVIRONMENT,
13
+ baseUrl: process.env.BASE_URL,
14
+ nodeEnv: process.env.NODE_ENV,
15
+ version: process.env.VUE_APP_VERSION,
16
+ });
17
+ }
@@ -0,0 +1,47 @@
1
+ import { createApp } from 'vue';
2
+ import { createPinia } from 'pinia';
3
+
4
+ import { configStore, i18n, i18nPlugin } from '@tager/admin-services';
5
+ import { createRouter } from '@tager/admin-layout';
6
+ import '@tager/admin-ui/css';
7
+ import '@tager/admin-layout/css';
8
+ import '@tager/admin-dynamic-field/css';
9
+
10
+ import { applyTranslations } from '../locales/apply';
11
+ import {
12
+ BANNERS_BANNER_FORM_ROUTE,
13
+ BANNERS_BANNER_LIST_ROUTE,
14
+ BANNERS_ZONE_LIST_ROUTE,
15
+ } from '../constants/routes';
16
+
17
+ import { OZITAG_CONFIG } from './config';
18
+ import App from './App.vue';
19
+ import { populateEnvironment } from './env';
20
+
21
+ populateEnvironment();
22
+
23
+ configStore.setConfig(OZITAG_CONFIG);
24
+
25
+ const router = createRouter(
26
+ {
27
+ routes: [
28
+ BANNERS_BANNER_LIST_ROUTE,
29
+ BANNERS_BANNER_FORM_ROUTE,
30
+ BANNERS_ZONE_LIST_ROUTE,
31
+ ],
32
+ },
33
+ { useTitleSync: false }
34
+ );
35
+
36
+ const app = createApp(App);
37
+ const pinia = createPinia();
38
+
39
+ app.use(router);
40
+ app.use(i18nPlugin);
41
+ app.use(pinia);
42
+
43
+ applyTranslations();
44
+
45
+ i18n.init({ debug: true, lng: 'ru' }).then(() => {
46
+ app.mount('#app');
47
+ });
@@ -1,4 +1,4 @@
1
- import { onMounted, Ref, SetupContext, watch } from '@vue/composition-api';
1
+ import { onMounted, Ref, watch } from 'vue';
2
2
 
3
3
  import { Nullable, ResourceRef, useResource } from '@tager/admin-services';
4
4
 
@@ -6,23 +6,20 @@ import { getBanner } from '../services/requests';
6
6
  import { Banner } from '../typings/banners';
7
7
 
8
8
  export function useFetchBanner({
9
- context,
10
9
  bannerId,
11
10
  isCreation,
12
11
  }: {
13
- context: SetupContext;
14
12
  bannerId: Ref<string>;
15
13
  isCreation: Ref<boolean>;
16
14
  }): ResourceRef<Nullable<Banner>> {
17
15
  const [fetchBanner, resource] = useResource<Nullable<Banner>>({
18
16
  fetchResource: () => getBanner(bannerId.value),
19
17
  initialValue: null,
20
- context,
21
18
  resourceName: 'Banner',
22
19
  });
23
20
 
24
21
  onMounted(() => {
25
- if (isCreation.value) {
22
+ if (isCreation.value || !bannerId.value) {
26
23
  return;
27
24
  }
28
25
 
@@ -30,7 +27,7 @@ export function useFetchBanner({
30
27
  });
31
28
 
32
29
  watch(bannerId, () => {
33
- if (isCreation.value) {
30
+ if (isCreation.value || !bannerId.value) {
34
31
  return;
35
32
  }
36
33
 
@@ -1,17 +1,14 @@
1
- import { onMounted, SetupContext } from '@vue/composition-api';
1
+ import { onMounted, SetupContext } from 'vue';
2
2
 
3
3
  import { ResourceRef, useResource } from '@tager/admin-services';
4
4
 
5
5
  import { getBanners } from '../services/requests';
6
6
  import { Banner } from '../typings/banners';
7
7
 
8
- export function useFetchBanners(params: {
9
- context: SetupContext;
10
- }): ResourceRef<Banner[]> {
8
+ export function useFetchBanners(): ResourceRef<Banner[]> {
11
9
  const [fetchBanners, resource] = useResource<Banner[]>({
12
10
  fetchResource: getBanners,
13
11
  initialValue: [],
14
- context: params.context,
15
12
  resourceName: 'Banners',
16
13
  });
17
14
 
@@ -1,10 +1,4 @@
1
- import {
2
- computed,
3
- onMounted,
4
- Ref,
5
- SetupContext,
6
- watch,
7
- } from '@vue/composition-api';
1
+ import { computed, onMounted, Ref, SetupContext, watch } from 'vue';
8
2
 
9
3
  import { Nullable, ResourceRef, useResource } from '@tager/admin-services';
10
4
 
@@ -13,10 +7,8 @@ import { ZoneFields } from '../typings/zones';
13
7
  import { BannerFormValues } from '../typings/banners';
14
8
 
15
9
  export function useFetchZoneFields({
16
- context,
17
10
  values,
18
11
  }: {
19
- context: SetupContext;
20
12
  values: Ref<BannerFormValues>;
21
13
  }): ResourceRef<Nullable<ZoneFields>> {
22
14
  const zoneId = computed(() => values.value.bannerZone?.value ?? '');
@@ -24,7 +16,6 @@ export function useFetchZoneFields({
24
16
  const [fetchZoneFields, resource] = useResource<Nullable<ZoneFields>>({
25
17
  fetchResource: () => getZoneFields(zoneId.value),
26
18
  initialValue: null,
27
- context,
28
19
  resourceName: 'Zone Fields',
29
20
  });
30
21