Условные контекстные меню для расширений Azure DevOps? - PullRequest
0 голосов
/ 02 апреля 2019

Кто-нибудь нашел способ сделать свои элементы контекстного меню условными?(идентификаторы взносов, такие как ms.vss-work-web.work-item-context-menu)

Я хочу добавить элемент контекстного меню рабочего элемента, но хочу показать его только для некоторых типов рабочих элементов.

1 Ответ

0 голосов
/ 10 апреля 2019

В качестве вклада вы используете действие, подобное этому:

{
    "id": "action-id",
    "type": "ms.vss-web.action",
    "description": "Context menu action",
    "targets": [
        "ms.vss-work-web.work-item-context-menu",
        "ms.vss-work-web.query-result-work-item-menu",
        "ms.vss-work-web.work-item-toolbar-menu",
        "ms.vss-work-web.backlog-item-menu"
    ],
    "properties": {
        "uri": "yourpagehere.html"
    }
}

Ваш поставщик действий должен просто вернуть пустой пункт меню для рабочих элементов, которые не имеют отношения к делу:

function getTypesFromContext(context: any): string[] {
    // Not all areas use the same format for passing work item type names.
    // "workItemTypeName" for Query preview
    // "workItemTypeNames" for backlogs
    // "workItemType" for boards
    let types = context.workItemTypeNames;
    if (!types && context.workItemType) {
        // Boards only support a single work item
        types = [context.workItemType];
    }

    if (!types && context.workItemTypeName) {
        // Query wi preview
        types = [context.workItemTypeName];
    }

    return types;
}

const action = {
    getMenuItems: (context) => {
        const mi = {
            text: "sometext",
            title: "sometitle",
            groupId: "modify",
            icon: "someicon.png",
            action: (actionContext) => {
                // someaction
            }
        } as IContributedMenuItem;

        const types = getTypesFromContext(context);

        if (types.every((type) => [ <<Your relevant types here>> ].indexOf(type) >= 0)) {
            return [mi];
        }
        return [] as IContributedMenuItem[];
    }
} as IContributedMenuSource;

VSS.register(VSS.getContribution().id, action);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...