@tager/admin-administrators 1.0.0 → 1.0.2

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.
@@ -1,7 +1,9 @@
1
- import { ColumnDefinition } from '@tager/admin-ui';
2
- import { AdminType } from '../../typings/model';
1
+ import { type ColumnDefinition } from '@tager/admin-ui';
2
+ import { type AdminType } from '../../typings/model';
3
3
  import { getAdminFormUrl } from '../../utils/paths';
4
- declare const _default: import("vue").DefineComponent<{}, {
4
+ declare const _default: typeof __VLS_export;
5
+ export default _default;
6
+ declare const __VLS_export: import("vue").DefineComponent<{}, {
5
7
  t: import("i18next").TFunction;
6
8
  columnDefs: ColumnDefinition<AdminType>[];
7
9
  rowData: import("vue").Ref<AdminType[]>;
@@ -11,4 +13,3 @@ declare const _default: import("vue").DefineComponent<{}, {
11
13
  handleAdminDelete: (entityId: string | number) => void;
12
14
  getAdminFormUrl: typeof getAdminFormUrl;
13
15
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
14
- export default _default;
@@ -1,8 +1,8 @@
1
- import { Nullable } from '@tager/admin-services';
2
- import { OptionType } from '@tager/admin-ui';
3
- import { RoleType, ScopeGroupsData } from '../../typings/model';
4
- import { RoleCreationPayload, RoleUpdatePayload } from '../../services/requests';
5
- export declare type FormValues = {
1
+ import { type Nullable } from '@tager/admin-services';
2
+ import { type OptionType } from '@tager/admin-ui';
3
+ import { type RoleType, type ScopeGroupsData } from '../../typings/model';
4
+ import { type RoleCreationPayload, type RoleUpdatePayload } from '../../services/requests';
5
+ export type FormValues = {
6
6
  name: string;
7
7
  scopes: Array<OptionType>;
8
8
  isSuperAdmin: boolean;
@@ -1,7 +1,9 @@
1
- import { Nullable } from '@tager/admin-services';
2
- import { OptionType, TagerFormSubmitEvent } from '@tager/admin-ui';
3
- import { RoleType } from '../../typings/model';
4
- declare const _default: import("vue").DefineComponent<{}, {
1
+ import { type Nullable } from '@tager/admin-services';
2
+ import { type OptionType, type TagerFormSubmitEvent } from '@tager/admin-ui';
3
+ import { type RoleType } from '../../typings/model';
4
+ declare const _default: typeof __VLS_export;
5
+ export default _default;
6
+ declare const __VLS_export: import("vue").DefineComponent<{}, {
5
7
  backButtonUrl: "/roles";
6
8
  values: import("vue").Ref<{
7
9
  name: string;
@@ -21,4 +23,3 @@ declare const _default: import("vue").DefineComponent<{}, {
21
23
  isCreation: import("vue").ComputedRef<boolean>;
22
24
  scopeOptionList: import("vue").ComputedRef<OptionType<string>[]>;
23
25
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
24
- export default _default;
@@ -1,8 +1,9 @@
1
- /// <reference types="webpack-env" />
2
1
  import { type ColumnDefinition } from "@tager/admin-ui";
3
- import { RoleType, ScopeType } from '../../typings/model';
2
+ import { type RoleType, type ScopeType } from '../../typings/model';
4
3
  import { getRoleFormUrl } from '../../utils/paths';
5
- declare const _default: import("vue").DefineComponent<{}, {
4
+ declare const _default: typeof __VLS_export;
5
+ export default _default;
6
+ declare const __VLS_export: import("vue").DefineComponent<{}, {
6
7
  columnDefs: ColumnDefinition<RoleType>[];
7
8
  rowData: import("vue").Ref<RoleType[]>;
8
9
  isRowDataLoading: import("vue").ComputedRef<boolean>;
@@ -10,11 +11,10 @@ declare const _default: import("vue").DefineComponent<{}, {
10
11
  isBusy: (roleId: number) => boolean;
11
12
  handleRoleDelete: (entityId: string | number) => void;
12
13
  getRoleFormUrl: typeof getRoleFormUrl;
13
- getScopeGroupList: (scopes: Array<ScopeType>) => {
14
+ getScopeGroupList: (scopes: Array<ScopeType>) => Array<{
14
15
  module: string;
15
- scopes: ScopeType;
16
- }[];
16
+ scopes: Array<ScopeType>;
17
+ }>;
17
18
  getRestScopesText: (restPrivilegesCount: number) => string;
18
19
  scopesPerModuleCount: number;
19
20
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
20
- export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tager/admin-administrators",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.umd.js",
6
6
  "module": "dist/index.esm.js",
@@ -16,11 +16,13 @@
16
16
  },
17
17
  "scripts": {
18
18
  "build:js": "vite build",
19
- "build:package": "concurrently --success first \"yarn build:js\" \"yarn emit-declarations\"",
19
+ "build:package": "yarn build:js && (yarn emit-declarations || echo 'vue-tsc: type errors found, declarations emitted anyway')",
20
20
  "emit-declarations": "vue-tsc --project tsconfig.json --emitDeclarationOnly",
21
- "start": "vue-cli-service serve",
21
+ "start": "vite",
22
22
  "prepare": "yarn build:package",
23
- "tager:update": "yarn upgrade --latest --scope @tager"
23
+ "tager:update": "yarn upgrade --latest --scope @tager",
24
+ "lint": "eslint .",
25
+ "format": "prettier --write src"
24
26
  },
25
27
  "dependencies": {
26
28
  "lodash.isequal": "^4.5.0",
@@ -29,38 +31,33 @@
29
31
  "path-to-regexp": "^6.1.0"
30
32
  },
31
33
  "devDependencies": {
32
- "@babel/core": "^7.17.9",
33
- "@babel/eslint-parser": "^7.17.0",
34
- "@rushstack/eslint-patch": "^1.1.2",
34
+ "@eslint/js": "^9.39.5",
35
35
  "@tager/admin-dynamic-field": "^1.0.0",
36
- "@tager/admin-layout": "^1.0.0",
37
- "@tager/admin-services": "^1.0.0",
38
- "@tager/admin-ui": "^1.0.1",
36
+ "@tager/admin-layout": "^1.0.6",
37
+ "@tager/admin-services": "^1.1.3",
38
+ "@tager/admin-ui": "^1.0.7",
39
39
  "@types/lodash.isequal": "^4.5.6",
40
40
  "@types/lodash.pick": "^4.4.7",
41
41
  "@types/node": "16.x",
42
- "@typescript-eslint/eslint-plugin": "^5.21.0",
43
- "@typescript-eslint/parser": "^5.21.0",
44
- "@vitejs/plugin-vue": "^2.3.1",
45
- "@vue/cli-plugin-babel": "^5.0.4",
46
- "@vue/cli-plugin-typescript": "^5.0.4",
47
- "@vue/cli-service": "~5.0.0",
48
- "@vue/eslint-config-prettier": "^7.0.0",
49
- "@vue/eslint-config-typescript": "^10.0.0",
50
- "concurrently": "^7.1.0",
42
+ "@vitejs/plugin-vue": "^5.2.4",
43
+ "@vue/eslint-config-typescript": "^14.9.0",
51
44
  "core-js": "^3.22.3",
52
- "eslint": "^8.14.0",
53
- "eslint-config-prettier": "^8.5.0",
54
- "eslint-plugin-import": "^2.26.0",
55
- "eslint-plugin-prettier": "^4.0.0",
56
- "eslint-plugin-vue": "^8.7.1",
45
+ "eslint": "^9.39.5",
46
+ "eslint-config-prettier": "^10.1.8",
47
+ "eslint-import-resolver-typescript": "^4.4.5",
48
+ "eslint-plugin-import": "^2.32.0",
49
+ "eslint-plugin-vue": "^10.12.0",
50
+ "globals": "^16.5.0",
51
+ "pinia": "^2.0.18",
52
+ "prettier": "^3.9.10",
57
53
  "sass": "^1.51.0",
58
54
  "sass-loader": "^12.6.0",
59
- "typescript": "^4.6.3",
60
- "vite": "^2.9.6",
55
+ "typescript": "^5.9.3",
56
+ "vite": "^6.4.5",
61
57
  "vue": "^3.2.31",
58
+ "vue-eslint-parser": "^10.4.1",
62
59
  "vue-router": "^4.0.14",
63
- "vue-tsc": "^0.34.10"
60
+ "vue-tsc": "^3.3.14"
64
61
  },
65
62
  "peerDependencies": {
66
63
  "@tager/admin-layout": "^1.0.0",
package/src/dev/App.vue CHANGED
@@ -7,9 +7,9 @@
7
7
  <script lang="ts">
8
8
  import {defineComponent} from 'vue';
9
9
 
10
- import {MenuItemType, PageLayout} from "@tager/admin-layout";
11
-
10
+ import {type MenuItemType, PageLayout} from "@tager/admin-layout";
12
11
  import {ViewListIcon} from "@tager/admin-ui";
12
+ import {useI18n} from "@tager/admin-services";
13
13
 
14
14
  import {
15
15
  getAdminFormUrl,
@@ -17,7 +17,6 @@ import {
17
17
  getRoleFormUrl,
18
18
  getRoleListUrl,
19
19
  } from '../utils/paths';
20
- import {useI18n} from "@tager/admin-services";
21
20
 
22
21
  export default defineComponent({
23
22
  name: 'App',
package/src/dev/env.ts CHANGED
@@ -2,16 +2,16 @@ import { initializeEnvironment } from "@tager/admin-services";
2
2
 
3
3
  export function populateEnvironment() {
4
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,
5
+ publicPath: import.meta.env.VUE_APP_PUBLIC_PATH,
6
+ appEnv: import.meta.env.VUE_APP_ENV,
7
+ apiUrl: import.meta.env.VUE_APP_API_URL,
8
+ accessToken: import.meta.env.VUE_APP_ACCESS_TOKEN,
9
+ websiteUrl: import.meta.env.VUE_APP_WEBSITE_URL,
10
+ websiteButtonUrl: import.meta.env.VUE_APP_WEBSITE_BUTTON_URL,
11
+ sentryDsn: import.meta.env.VUE_APP_SENTRY_DSN,
12
+ sentryEnv: import.meta.env.VUE_APP_SENTRY_ENVIRONMENT,
13
+ baseUrl: import.meta.env.BASE_URL,
14
+ nodeEnv: import.meta.env.MODE,
15
+ version: import.meta.env.VUE_APP_VERSION,
16
16
  });
17
17
  }
package/src/dev/main.ts CHANGED
@@ -1,22 +1,24 @@
1
- import { createApp } from "vue";
1
+ import { createApp } from 'vue';
2
2
 
3
- import { configStore, i18n, i18nPlugin } from "@tager/admin-services";
4
- import { createRouter } from "@tager/admin-layout";
5
- import "@tager/admin-ui/css";
6
- import "@tager/admin-layout/css";
7
- import "@tager/admin-dynamic-field/css";
3
+ import { configStore, i18n, i18nPlugin } from '@tager/admin-services';
4
+ import { createRouter } from '@tager/admin-layout';
5
+ import '@tager/admin-ui/css';
6
+ import '@tager/admin-layout/css';
7
+ import '@tager/admin-dynamic-field/css';
8
8
 
9
- import { applyTranslations } from "../locales/apply";
9
+ import { applyTranslations } from '../locales/apply';
10
10
  import {
11
- ADMIN_FORM_ROUTE,
12
- ADMIN_LIST_ROUTE,
13
- ROLE_FORM_ROUTE,
14
- ROLE_LIST_ROUTE
15
- } from "../constants/routes";
11
+ ADMIN_FORM_ROUTE,
12
+ ADMIN_LIST_ROUTE,
13
+ ROLE_FORM_ROUTE,
14
+ ROLE_LIST_ROUTE,
15
+ } from '../constants/routes';
16
16
 
17
- import { OZITAG_CONFIG } from "./config";
18
- import App from "./App.vue";
19
- import { populateEnvironment } from "./env";
17
+ import { OZITAG_CONFIG } from './config';
18
+ import App from './App.vue';
19
+ import { populateEnvironment } from './env';
20
+
21
+ import { createPinia } from 'pinia';
20
22
 
21
23
  populateEnvironment();
22
24
 
@@ -25,22 +27,24 @@ configStore.setConfig(OZITAG_CONFIG);
25
27
  const router = createRouter(
26
28
  {
27
29
  routes: [
28
- ADMIN_LIST_ROUTE,
29
- ADMIN_FORM_ROUTE,
30
- ROLE_LIST_ROUTE,
31
- ROLE_FORM_ROUTE,
30
+ ADMIN_LIST_ROUTE,
31
+ ADMIN_FORM_ROUTE,
32
+ ROLE_LIST_ROUTE,
33
+ ROLE_FORM_ROUTE,
32
34
  ],
33
35
  },
34
36
  { useTitleSync: false }
35
37
  );
36
38
 
37
39
  const app = createApp(App);
40
+ const pinia = createPinia();
38
41
 
39
42
  app.use(router);
40
43
  app.use(i18nPlugin);
44
+ app.use(pinia);
41
45
 
42
46
  applyTranslations();
43
47
 
44
- i18n.init({ debug: true, lng: "ru" }).then(() => {
45
- app.mount("#app");
48
+ i18n.init({ debug: true, lng: 'ru' }).then(() => {
49
+ app.mount('#app');
46
50
  });
package/src/locales/en.ts CHANGED
@@ -37,4 +37,9 @@ export const EN = {
37
37
  roleList: 'Role List',
38
38
  roleForm: 'Role form',
39
39
  andMorePrivilege: 'and more {{count}} privilege...',
40
+
41
+ tabs: {
42
+ general: 'General',
43
+ params: 'Template',
44
+ },
40
45
  };
package/src/locales/ru.ts CHANGED
@@ -1,42 +1,46 @@
1
- import {EN} from './en';
1
+ import { EN } from './en';
2
2
 
3
3
  export const RU: typeof EN = {
4
- home: 'Главная',
5
- administrators: 'Администраторы',
6
- role: 'Роль',
7
- roles: 'Роли',
8
- admin: 'Админ',
9
- admins: 'Админы',
10
- createRole: 'Создать роль',
11
- createAdmin: 'Создать админа',
12
- createAdministrator: 'Создать администратора',
13
- edit: 'Редактировать',
14
- delete: 'Удалить',
15
- email: 'Электронная почта',
16
- actions: 'Действия',
17
- updateRole: 'Обновить роль',
18
- updateAdmin: 'Обновить администратора',
19
- password: 'Пароль',
20
- newPassword: 'Новый пароль',
21
- name: 'Имя',
22
- success: 'Успех',
23
- adminSuccessfullyCreated: 'Админ успешно создан',
24
- adminSuccessfullyUpdated: 'Админ успешно обновлен',
25
- error: 'Ошибка',
26
- adminCreationError: 'Ошибка создания администратора',
27
- adminUpdateError: 'Ошибка обновления администратора',
28
- listOfRoles: 'Список ролей',
29
- addRole: 'Добавить роль',
30
- noPrivileges: 'Без привилегий',
31
- privileges: 'Привилегии',
32
- all: 'Все',
33
- roleSuccessfullyCreated: 'Роль успешно создана',
34
- roleSuccessfullyUpdate: 'Роль успешно обновлена',
35
- roleCreationError: 'Ошибка создания роли',
36
- roleUpdateError: 'Ошибка обновления роли',
37
- adminList: 'Список администраторов',
38
- adminForm: 'Форма администратора',
39
- roleList: 'Список ролей',
40
- roleForm: 'Форма роли',
41
- andMorePrivilege: 'и еще {{count}} привилегий...',
4
+ home: 'Главная',
5
+ administrators: 'Администраторы',
6
+ role: 'Роль',
7
+ roles: 'Роли',
8
+ admin: 'Админ',
9
+ admins: 'Админы',
10
+ createRole: 'Создать роль',
11
+ createAdmin: 'Создать админа',
12
+ createAdministrator: 'Создать администратора',
13
+ edit: 'Редактировать',
14
+ delete: 'Удалить',
15
+ email: 'Электронная почта',
16
+ actions: 'Действия',
17
+ updateRole: 'Обновить роль',
18
+ updateAdmin: 'Обновить администратора',
19
+ password: 'Пароль',
20
+ newPassword: 'Новый пароль',
21
+ name: 'Имя',
22
+ success: 'Успех',
23
+ adminSuccessfullyCreated: 'Админ успешно создан',
24
+ adminSuccessfullyUpdated: 'Админ успешно обновлен',
25
+ error: 'Ошибка',
26
+ adminCreationError: 'Ошибка создания администратора',
27
+ adminUpdateError: 'Ошибка обновления администратора',
28
+ listOfRoles: 'Список ролей',
29
+ addRole: 'Добавить роль',
30
+ noPrivileges: 'Без привилегий',
31
+ privileges: 'Привилегии',
32
+ all: 'Все',
33
+ roleSuccessfullyCreated: 'Роль успешно создана',
34
+ roleSuccessfullyUpdate: 'Роль успешно обновлена',
35
+ roleCreationError: 'Ошибка создания роли',
36
+ roleUpdateError: 'Ошибка обновления роли',
37
+ adminList: 'Список администраторов',
38
+ adminForm: 'Форма администратора',
39
+ roleList: 'Список ролей',
40
+ roleForm: 'Форма роли',
41
+ andMorePrivilege: 'и еще {{count}} привилегий...',
42
+ tabs: {
43
+ general: 'Основное',
44
+ params: 'Параметры',
45
+ },
42
46
  };
@@ -1,9 +1,20 @@
1
- import { request, ResponseBody } from '@tager/admin-services';
1
+ import { request, type ResponseBody } from '@tager/admin-services';
2
+ import {
3
+ type FieldConfigUnion,
4
+ type FieldShortType,
5
+ type OutgoingValueUnion,
6
+ } from '@tager/admin-dynamic-field';
2
7
 
3
- import { AdminType, RoleType, ScopeGroupsData } from '../typings/model';
8
+ import { type AdminType, type RoleType, type ScopeGroupsData } from '../typings/model';
4
9
 
5
10
  type SuccessData = { success: boolean };
6
11
 
12
+ /** Fields */
13
+
14
+ export function getFieldList(): Promise<ResponseBody<Array<FieldConfigUnion>>> {
15
+ return request.get({ path: '/admin/admins/fields' });
16
+ }
17
+
7
18
  /** Roles */
8
19
 
9
20
  export function getRoleList(): Promise<ResponseBody<Array<RoleType>>> {
@@ -63,6 +74,8 @@ export type AdminUpdatePayload = {
63
74
  email: string;
64
75
  roles: Array<number>;
65
76
  password: string;
77
+
78
+ params: Array<FieldShortType<OutgoingValueUnion>>;
66
79
  };
67
80
 
68
81
  export type AdminCreationPayload = AdminUpdatePayload;
@@ -1,3 +1,5 @@
1
+ import { type FieldShortType, type IncomingValueUnion } from '@tager/admin-dynamic-field';
2
+
1
3
  export type ScopeType = {
2
4
  readonly value: string;
3
5
  readonly label: string;
@@ -25,4 +27,5 @@ export type AdminType = {
25
27
  readonly roles: Array<RoleType>;
26
28
  readonly isSelf: boolean;
27
29
  readonly isSuperAdmin: boolean;
30
+ readonly params: Array<FieldShortType<IncomingValueUnion>>;
28
31
  };
@@ -1,10 +1,11 @@
1
- import { Nullable, createId } from '@tager/admin-services';
2
- import { OptionType } from '@tager/admin-ui';
1
+ import { type Nullable, createId } from '@tager/admin-services';
2
+ import { type OptionType } from '@tager/admin-ui';
3
+ import { type FieldUnion, universalFieldUtils } from '@tager/admin-dynamic-field';
3
4
 
4
- import { AdminType, RoleType } from '../../typings/model';
5
+ import { type AdminType, type RoleType } from '../../typings/model';
5
6
  import {
6
- AdminCreationPayload,
7
- AdminUpdatePayload,
7
+ type AdminCreationPayload,
8
+ type AdminUpdatePayload,
8
9
  } from '../../services/requests';
9
10
 
10
11
  export type FormValues = {
@@ -39,21 +40,27 @@ export function convertAdminToFormValues(
39
40
  }
40
41
 
41
42
  export function convertFormValuesToAdminUpdatePayload(
42
- values: FormValues
43
+ values: FormValues,
44
+ paramsValues: Array<FieldUnion> = []
43
45
  ): AdminUpdatePayload {
44
46
  return {
45
47
  name: values.name,
46
48
  email: values.email,
47
49
  roles: values.roles.map((role) => role.value),
48
50
  password: values.password,
51
+ params: paramsValues.map((field) => ({
52
+ value: universalFieldUtils.getOutgoingValue(field),
53
+ name: field.config.name,
54
+ })),
49
55
  };
50
56
  }
51
57
 
52
58
  export function convertFormValuesToAdminCreationPayload(
53
- values: FormValues
59
+ values: FormValues,
60
+ paramsValues: Array<FieldUnion> = []
54
61
  ): AdminCreationPayload {
55
62
  return {
56
- ...convertFormValuesToAdminUpdatePayload(values),
63
+ ...convertFormValuesToAdminUpdatePayload(values, paramsValues),
57
64
  };
58
65
  }
59
66