Существует список точек расширения, для которых можно создавать собственные декларации. Их можно добавлять как новые или переопределять существующие (системные) декларации. Каждая декларация точки расширения должна реализовывать тип Universe.Platform.UserExit.UserExitDeclaration, со следующими свойствами:
falseРассмотрим создание декларации на примере точки расширения Universe.App.UERightHeaderItem. Декларация точки расширения объявляется во внешнем модуле и передается в приложение через default-экспорт модуля:
import {Universe} from '@universe-dg/sdk';
const userExits: Universe.Platform.UserExit.UserExitDeclaration[] = [];
userExits.push({
moduleId: 'uniqueId',
type: 'RightHeaderItem',
active:true,
system: false,
resolver: () => true,
meta: {
order: 1,
},
component: () => (
<Universe.Platform.Uikit.Button
intent={Universe.Platform.Uikit.INTENT.DANGER}
>
{Universe.Platform.Locale.i18n.t('HeaderButton>text')}
</Universe.Platform.Uikit.Button>
),
});
export default {userExits};
Universe.Platform.UserExit.userExitManager — менеджер точек расширения. Он может быть полезен в случае, если необходимо взаимодействовать с уже объявленными декларациями точек расширения. Менеджер точек расширения предоставляет следующие возможности:
import {Universe} from '@universe-dg/sdk';
// Получить первую найденную отфильтрованную декларацию точки расширения RightHeaderItem
const rightHeaderItemDecl = Universe.Platform.UserExit.userExitManager.findResolvedModuleByType('RightHeaderItem', [
// Аргументы для фильтрации. Для каждой точки расширения они специфичны
]);
// Получить все отфильтрованные декларации точки расширения RightHeaderItem
const rightHeaderItemDecls = Universe.Platform.UserExit.userExitManager.getResolvedModulesByType('RightHeaderItem', [
// Аргументы для фильтрации. Для каждой точки расширения они специфичны
]);
Когда необходимо удостовериться в существовании той или иной декларации, можно воспользоваться методом Universe.Platform.UserExit.UserExitManager.hasModuleById
import {Universe} from '@universe-dg/sdk';
const userExits: Universe.Platform.UserExit.UserExitDeclaration[] = [];
// Существует ли декларация с идентификатором 'uniqueId'
if (!Universe.Platform.UserExit.userExitManager.hasModuleById('uniqueId')) {
// Если не существует, то добавить свою декларацию
userExits.push({
moduleId: 'uniqueId',
// ...
});
}
export default {userExits};
Возможно отключать уже объявленные декларации с помощью метода Universe.Platform.UserExit.UserExitManager.disableModuleById. Это удобно в ситуациях, когда необходимо переопределить ту или иную декларацию точки расширения:
import {Universe} from '@universe-dg/sdk';
const userExits: Universe.Platform.UserExit.UserExitDeclaration[] = [];
// Принудительно отключить декларацию с идентификатором 'uniqueId'
Universe.Platform.UserExit.userExitManager.disableModuleById('uniqueId')
// Добавить свою декларацию тем же идентификатором
userExits.push({
moduleId: 'uniqueId',
// ...
});
export default {userExits};