Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
6e2dde590e
commit
27d1ed4ddf
|
@ -165,7 +165,7 @@ export default {
|
|||
:title="$options.i18n.proceedButton"
|
||||
variant="confirm"
|
||||
data-qa-selector="proceed_button"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
:data-track-label="`${$options.trackingLabelPrefix}proceed_button`"
|
||||
>{{ $options.i18n.proceedButton }}</gl-button
|
||||
>
|
||||
|
|
|
@ -124,7 +124,7 @@ export default {
|
|||
:href="goToMergeRequestPath"
|
||||
:data-track-property="humanAccess"
|
||||
:data-track-value="$options.goToTrackValueMergeRequest"
|
||||
:data-track-event="$options.trackEvent"
|
||||
:data-track-action="$options.trackEvent"
|
||||
:data-track-label="trackLabel"
|
||||
>
|
||||
{{ $options.i18n.mergeRequestButton }}
|
||||
|
@ -135,7 +135,7 @@ export default {
|
|||
variant="success"
|
||||
:data-track-property="humanAccess"
|
||||
:data-track-value="$options.goToTrackValuePipelines"
|
||||
:data-track-event="$options.trackEvent"
|
||||
:data-track-action="$options.trackEvent"
|
||||
:data-track-label="trackLabel"
|
||||
>
|
||||
{{ $options.i18n.pipelinesButton }}
|
||||
|
|
|
@ -121,7 +121,7 @@ export default {
|
|||
icon="close"
|
||||
:data-track-property="humanAccess"
|
||||
:data-track-value="$options.dismissTrackValue"
|
||||
:data-track-event="$options.clickTrackValue"
|
||||
:data-track-action="$options.clickTrackValue"
|
||||
:data-track-label="trackLabel"
|
||||
@click="onDismiss"
|
||||
/>
|
||||
|
|
|
@ -107,7 +107,7 @@ function createLink(data, selected, options, index) {
|
|||
}
|
||||
|
||||
if (options.trackSuggestionClickedLabel) {
|
||||
link.setAttribute('data-track-event', 'click_text');
|
||||
link.setAttribute('data-track-action', 'click_text');
|
||||
link.setAttribute('data-track-label', options.trackSuggestionClickedLabel);
|
||||
link.setAttribute('data-track-value', index);
|
||||
link.setAttribute('data-track-property', slugify(data.category || 'no-category'));
|
||||
|
|
|
@ -123,7 +123,7 @@ export default {
|
|||
category="primary"
|
||||
variant="confirm"
|
||||
type="submit"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
data-qa-selector="save_comment_button"
|
||||
@click="$emit('submit-form')"
|
||||
>
|
||||
|
|
|
@ -341,7 +341,7 @@ export default {
|
|||
:gfm="gfmCopyText"
|
||||
data-testid="diff-file-copy-clipboard"
|
||||
category="tertiary"
|
||||
data-track-event="click_copy_file_button"
|
||||
data-track-action="click_copy_file_button"
|
||||
data-track-label="diff_copy_file_path_button"
|
||||
data-track-property="diff_copy_file"
|
||||
/>
|
||||
|
@ -382,7 +382,7 @@ export default {
|
|||
:title="externalUrlLabel"
|
||||
:aria-label="externalUrlLabel"
|
||||
target="_blank"
|
||||
data-track-event="click_toggle_external_button"
|
||||
data-track-action="click_toggle_external_button"
|
||||
data-track-label="diff_toggle_external_button"
|
||||
data-track-property="diff_toggle_external"
|
||||
icon="external-link"
|
||||
|
|
|
@ -48,7 +48,7 @@ export default {
|
|||
<gl-toggle
|
||||
:value="active"
|
||||
data-testid="feature-flag-status-toggle"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
data-track-label="feature_flag_toggle"
|
||||
class="gl-mr-4"
|
||||
:label="__('Feature flag status')"
|
||||
|
|
|
@ -115,7 +115,7 @@ export default {
|
|||
:label="$options.i18n.toggleLabel"
|
||||
label-position="hidden"
|
||||
data-testid="feature-flag-status-toggle"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
data-track-label="feature_flag_toggle"
|
||||
@change="toggleFeatureFlag(featureFlag)"
|
||||
/>
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
<script>
|
||||
import { GlSearchBoxByType, GlOutsideDirective as Outside } from '@gitlab/ui';
|
||||
import { mapState, mapActions, mapGetters } from 'vuex';
|
||||
import { visitUrl } from '~/lib/utils/url_utility';
|
||||
import { __ } from '~/locale';
|
||||
import HeaderSearchDefaultItems from './header_search_default_items.vue';
|
||||
import HeaderSearchScopedItems from './header_search_scoped_items.vue';
|
||||
|
||||
export default {
|
||||
name: 'HeaderSearchApp',
|
||||
|
@ -12,6 +15,7 @@ export default {
|
|||
components: {
|
||||
GlSearchBoxByType,
|
||||
HeaderSearchDefaultItems,
|
||||
HeaderSearchScopedItems,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -19,17 +23,34 @@ export default {
|
|||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState(['search']),
|
||||
...mapGetters(['searchQuery']),
|
||||
searchText: {
|
||||
get() {
|
||||
return this.search;
|
||||
},
|
||||
set(value) {
|
||||
this.setSearch(value);
|
||||
},
|
||||
},
|
||||
showSearchDropdown() {
|
||||
return this.showDropdown && gon?.current_username;
|
||||
},
|
||||
showDefaultItems() {
|
||||
return !this.searchText;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['setSearch']),
|
||||
openDropdown() {
|
||||
this.showDropdown = true;
|
||||
},
|
||||
closeDropdown() {
|
||||
this.showDropdown = false;
|
||||
},
|
||||
submitSearch() {
|
||||
return visitUrl(this.searchQuery);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
@ -37,10 +58,13 @@ export default {
|
|||
<template>
|
||||
<section v-outside="closeDropdown" class="header-search gl-relative">
|
||||
<gl-search-box-by-type
|
||||
v-model="searchText"
|
||||
:debounce="500"
|
||||
autocomplete="off"
|
||||
:placeholder="$options.i18n.searchPlaceholder"
|
||||
@focus="openDropdown"
|
||||
@click="openDropdown"
|
||||
@keydown.enter="submitSearch"
|
||||
@keydown.esc="closeDropdown"
|
||||
/>
|
||||
<div
|
||||
|
@ -49,7 +73,10 @@ export default {
|
|||
class="header-search-dropdown-menu gl-overflow-y-auto gl-absolute gl-left-0 gl-z-index-1 gl-w-full gl-bg-white gl-border-1 gl-rounded-base gl-border-solid gl-border-gray-200 gl-shadow-x0-y2-b4-s0"
|
||||
>
|
||||
<div class="header-search-dropdown-content gl-overflow-y-auto gl-py-2">
|
||||
<header-search-default-items />
|
||||
<header-search-default-items v-if="showDefaultItems" />
|
||||
<template v-else>
|
||||
<header-search-scoped-items />
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
<script>
|
||||
import { GlDropdownItem } from '@gitlab/ui';
|
||||
import { mapState, mapGetters } from 'vuex';
|
||||
|
||||
export default {
|
||||
name: 'HeaderSearchScopedItems',
|
||||
components: {
|
||||
GlDropdownItem,
|
||||
},
|
||||
computed: {
|
||||
...mapState(['search']),
|
||||
...mapGetters(['scopedSearchOptions']),
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<gl-dropdown-item
|
||||
v-for="(option, index) in scopedSearchOptions"
|
||||
:id="`scoped-${index}`"
|
||||
:key="index"
|
||||
tabindex="-1"
|
||||
:href="option.url"
|
||||
>
|
||||
"<span class="gl-font-weight-bold">{{ search }}</span
|
||||
>" {{ option.description }}
|
||||
<span v-if="option.scope" class="gl-font-style-italic">{{ option.scope }}</span>
|
||||
</gl-dropdown-item>
|
||||
</div>
|
||||
</template>
|
|
@ -9,3 +9,9 @@ export const MSG_MR_ASSIGNED_TO_ME = __('Merge requests assigned to me');
|
|||
export const MSG_MR_IM_REVIEWER = __("Merge requests that I'm a reviewer");
|
||||
|
||||
export const MSG_MR_IVE_CREATED = __("Merge requests I've created");
|
||||
|
||||
export const MSG_IN_ALL_GITLAB = __('in all GitLab');
|
||||
|
||||
export const MSG_IN_GROUP = __('in group');
|
||||
|
||||
export const MSG_IN_PROJECT = __('in project');
|
||||
|
|
|
@ -12,13 +12,13 @@ export const initHeaderSearchApp = () => {
|
|||
return false;
|
||||
}
|
||||
|
||||
const { issuesPath, mrPath } = el.dataset;
|
||||
const { searchPath, issuesPath, mrPath } = el.dataset;
|
||||
let { searchContext } = el.dataset;
|
||||
searchContext = JSON.parse(searchContext);
|
||||
|
||||
return new Vue({
|
||||
el,
|
||||
store: createStore({ issuesPath, mrPath, searchContext }),
|
||||
store: createStore({ searchPath, issuesPath, mrPath, searchContext }),
|
||||
render(createElement) {
|
||||
return createElement(HeaderSearchApp);
|
||||
},
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
import * as types from './mutation_types';
|
||||
|
||||
export const setSearch = ({ commit }, value) => {
|
||||
commit(types.SET_SEARCH, value);
|
||||
};
|
|
@ -1,11 +1,28 @@
|
|||
import { objectToQuery } from '~/lib/utils/url_utility';
|
||||
|
||||
import {
|
||||
MSG_ISSUES_ASSIGNED_TO_ME,
|
||||
MSG_ISSUES_IVE_CREATED,
|
||||
MSG_MR_ASSIGNED_TO_ME,
|
||||
MSG_MR_IM_REVIEWER,
|
||||
MSG_MR_IVE_CREATED,
|
||||
MSG_IN_PROJECT,
|
||||
MSG_IN_GROUP,
|
||||
MSG_IN_ALL_GITLAB,
|
||||
} from '../constants';
|
||||
|
||||
export const searchQuery = (state) => {
|
||||
const query = {
|
||||
search: state.search,
|
||||
nav_source: 'navbar',
|
||||
project_id: state.searchContext.project?.id,
|
||||
group_id: state.searchContext.group?.id,
|
||||
scope: state.searchContext.scope,
|
||||
};
|
||||
|
||||
return `${state.searchPath}?${objectToQuery(query)}`;
|
||||
};
|
||||
|
||||
export const scopedIssuesPath = (state) => {
|
||||
return (
|
||||
state.searchContext.project_metadata?.issues_path ||
|
||||
|
@ -48,3 +65,71 @@ export const defaultSearchOptions = (state, getters) => {
|
|||
},
|
||||
];
|
||||
};
|
||||
|
||||
export const projectUrl = (state) => {
|
||||
if (!state.searchContext.project || !state.searchContext.group) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const query = {
|
||||
search: state.search,
|
||||
nav_source: 'navbar',
|
||||
project_id: state.searchContext.project.id,
|
||||
group_id: state.searchContext.group.id,
|
||||
scope: state.searchContext.scope,
|
||||
};
|
||||
|
||||
return `${state.searchPath}?${objectToQuery(query)}`;
|
||||
};
|
||||
|
||||
export const groupUrl = (state) => {
|
||||
if (!state.searchContext.group) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const query = {
|
||||
search: state.search,
|
||||
nav_source: 'navbar',
|
||||
group_id: state.searchContext.group.id,
|
||||
scope: state.searchContext.scope,
|
||||
};
|
||||
|
||||
return `${state.searchPath}?${objectToQuery(query)}`;
|
||||
};
|
||||
|
||||
export const allUrl = (state) => {
|
||||
const query = {
|
||||
search: state.search,
|
||||
nav_source: 'navbar',
|
||||
scope: state.searchContext.scope,
|
||||
};
|
||||
|
||||
return `${state.searchPath}?${objectToQuery(query)}`;
|
||||
};
|
||||
|
||||
export const scopedSearchOptions = (state, getters) => {
|
||||
const options = [];
|
||||
|
||||
if (state.searchContext.project) {
|
||||
options.push({
|
||||
scope: state.searchContext.project.name,
|
||||
description: MSG_IN_PROJECT,
|
||||
url: getters.projectUrl,
|
||||
});
|
||||
}
|
||||
|
||||
if (state.searchContext.group) {
|
||||
options.push({
|
||||
scope: state.searchContext.group.name,
|
||||
description: MSG_IN_GROUP,
|
||||
url: getters.groupUrl,
|
||||
});
|
||||
}
|
||||
|
||||
options.push({
|
||||
description: MSG_IN_ALL_GITLAB,
|
||||
url: getters.allUrl,
|
||||
});
|
||||
|
||||
return options;
|
||||
};
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
import Vue from 'vue';
|
||||
import Vuex from 'vuex';
|
||||
import * as actions from './actions';
|
||||
import * as getters from './getters';
|
||||
import mutations from './mutations';
|
||||
import createState from './state';
|
||||
|
||||
Vue.use(Vuex);
|
||||
|
||||
export const getStoreConfig = ({ issuesPath, mrPath, searchContext }) => ({
|
||||
export const getStoreConfig = ({ searchPath, issuesPath, mrPath, searchContext }) => ({
|
||||
actions,
|
||||
getters,
|
||||
state: createState({ issuesPath, mrPath, searchContext }),
|
||||
mutations,
|
||||
state: createState({ searchPath, issuesPath, mrPath, searchContext }),
|
||||
});
|
||||
|
||||
const createStore = (config) => new Vuex.Store(getStoreConfig(config));
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
export const SET_SEARCH = 'SET_SEARCH';
|
|
@ -0,0 +1,7 @@
|
|||
import * as types from './mutation_types';
|
||||
|
||||
export default {
|
||||
[types.SET_SEARCH](state, value) {
|
||||
state.search = value;
|
||||
},
|
||||
};
|
|
@ -1,6 +1,8 @@
|
|||
const createState = ({ issuesPath, mrPath, searchContext }) => ({
|
||||
const createState = ({ searchPath, issuesPath, mrPath, searchContext }) => ({
|
||||
searchPath,
|
||||
issuesPath,
|
||||
mrPath,
|
||||
searchContext,
|
||||
search: '',
|
||||
});
|
||||
export default createState;
|
||||
|
|
|
@ -65,7 +65,7 @@ export default {
|
|||
if (this.event && this.label) {
|
||||
return {
|
||||
...baseAttributes,
|
||||
'data-track-event': this.event,
|
||||
'data-track-action': this.event,
|
||||
'data-track-label': this.label,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ export default {
|
|||
:href="exportCsvPath"
|
||||
data-method="post"
|
||||
:data-qa-selector="`export_${issuableType}_button`"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
:data-track-label="`export_${issuableType}_csv`"
|
||||
>
|
||||
<gl-sprintf :message="__('Export %{name}')">
|
||||
|
|
|
@ -93,7 +93,7 @@ export default {
|
|||
data-testid="comment-button"
|
||||
data-qa-selector="comment_button"
|
||||
:data-track-label="trackingLabel"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
@click="$emit('click')"
|
||||
>
|
||||
<gl-dropdown-item is-check-item :is-checked="isNoteTypeComment" @click="setNoteTypeToComment">
|
||||
|
|
|
@ -89,7 +89,7 @@ export default {
|
|||
:title="__('Jump to next unresolved thread')"
|
||||
:aria-label="__('Jump to next unresolved thread')"
|
||||
class="discussion-next-btn"
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
data-track-label="mr_next_unresolved_thread"
|
||||
data-track-property="click_next_unresolved_thread_top"
|
||||
icon="comment-next"
|
||||
|
|
|
@ -19,7 +19,7 @@ export default {
|
|||
<template>
|
||||
<gl-button
|
||||
v-gl-tooltip
|
||||
data-track-event="click_button"
|
||||
data-track-action="click_button"
|
||||
data-track-label="reply_comment_button"
|
||||
category="tertiary"
|
||||
icon="comment"
|
||||
|
|
|
@ -77,7 +77,7 @@ export default {
|
|||
);
|
||||
|
||||
if (button) {
|
||||
button.setAttribute('data-track-event', 'click_go_to_preferences');
|
||||
button.setAttribute('data-track-action', 'click_go_to_preferences');
|
||||
button.setAttribute('data-track-label', this.trackLabel);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -175,7 +175,7 @@ export default {
|
|||
<gl-sprintf
|
||||
:message="
|
||||
__(
|
||||
'Please set up a Service Desk email address in order to add a custom suffix. %{linkStart}Learn more%{linkEnd}.',
|
||||
'To add a custom suffix, set up a Service Desk email address. %{linkStart}Learn more.%{linkEnd}',
|
||||
)
|
||||
"
|
||||
>
|
||||
|
|
|
@ -53,7 +53,7 @@ export default {
|
|||
class="js-sidebar-dropdown-toggle edit-link btn gl-text-gray-900! gl-ml-auto hide-collapsed btn-default btn-sm gl-button btn-default-tertiary float-right"
|
||||
href="#"
|
||||
data-test-id="edit-link"
|
||||
data-track-event="click_edit_button"
|
||||
data-track-action="click_edit_button"
|
||||
data-track-label="right_sidebar"
|
||||
data-track-property="assignee"
|
||||
>
|
||||
|
|
|
@ -93,7 +93,7 @@ export default {
|
|||
class="float-right lock-edit btn gl-text-gray-900! gl-ml-auto hide-collapsed btn-default btn-sm gl-button btn-default-tertiary gl-mr-n2"
|
||||
href="#"
|
||||
data-testid="edit-link"
|
||||
data-track-event="click_edit_button"
|
||||
data-track-action="click_edit_button"
|
||||
data-track-label="right_sidebar"
|
||||
data-track-property="lock_issue"
|
||||
@click.prevent="toggleForm"
|
||||
|
|
|
@ -40,7 +40,7 @@ export default {
|
|||
v-if="editable"
|
||||
class="js-sidebar-dropdown-toggle edit-link btn gl-text-gray-900! gl-ml-auto hide-collapsed btn-default btn-sm gl-button btn-default-tertiary float-right"
|
||||
href="#"
|
||||
data-track-event="click_edit_button"
|
||||
data-track-action="click_edit_button"
|
||||
data-track-label="right_sidebar"
|
||||
data-track-property="reviewer"
|
||||
>
|
||||
|
|
|
@ -136,7 +136,7 @@ export default {
|
|||
size="small"
|
||||
class="gl-text-gray-900! gl-ml-auto hide-collapsed gl-mr-n2"
|
||||
data-testid="edit-button"
|
||||
:data-track-event="tracking.event"
|
||||
:data-track-action="tracking.event"
|
||||
:data-track-label="tracking.label"
|
||||
:data-track-property="tracking.property"
|
||||
data-qa-selector="edit_link"
|
||||
|
|
|
@ -2,10 +2,12 @@ import $ from 'jquery';
|
|||
import Tracking from '~/tracking';
|
||||
|
||||
export default function initTrackInviteMembers(userDropdown) {
|
||||
const { trackEvent, trackLabel } = userDropdown.querySelector('.js-invite-members-track').dataset;
|
||||
const { trackAction, trackLabel } = userDropdown.querySelector(
|
||||
'.js-invite-members-track',
|
||||
).dataset;
|
||||
|
||||
$(userDropdown).on('shown.bs.dropdown', () => {
|
||||
Tracking.event(undefined, trackEvent, {
|
||||
Tracking.event(undefined, trackAction, {
|
||||
label: trackLabel,
|
||||
});
|
||||
});
|
||||
|
|
|
@ -98,7 +98,7 @@ export default {
|
|||
data-testid="add-pipeline-link"
|
||||
:data-track-property="humanAccess"
|
||||
:data-track-value="$options.SP_LINK_TRACK_VALUE"
|
||||
:data-track-event="$options.SP_LINK_TRACK_EVENT"
|
||||
:data-track-action="$options.SP_LINK_TRACK_EVENT"
|
||||
:data-track-label="$options.SP_TRACK_LABEL"
|
||||
>
|
||||
{{ content }}
|
||||
|
@ -139,7 +139,7 @@ export default {
|
|||
:href="pipelinePath"
|
||||
:data-track-property="humanAccess"
|
||||
:data-track-value="$options.SP_SHOW_TRACK_VALUE"
|
||||
:data-track-event="$options.SP_SHOW_TRACK_EVENT"
|
||||
:data-track-action="$options.SP_SHOW_TRACK_EVENT"
|
||||
:data-track-label="$options.SP_TRACK_LABEL"
|
||||
>
|
||||
{{ __('Show me how to add a pipeline') }}
|
||||
|
|
|
@ -39,7 +39,7 @@ export default {
|
|||
target="_blank"
|
||||
rel="noopener noreferrer nofollow"
|
||||
:class="cssClass"
|
||||
data-track-event="open_review_app"
|
||||
data-track-action="open_review_app"
|
||||
data-track-label="review_app"
|
||||
>
|
||||
{{ display.text }} <gl-icon class="fgray" name="external-link" />
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
<script>
|
||||
import { GlButton } from '@gitlab/ui';
|
||||
import { s__ } from '~/locale';
|
||||
import notesEventHub from '~/notes/event_hub';
|
||||
import StatusIcon from '../mr_widget_status_icon.vue';
|
||||
|
||||
export default {
|
||||
i18n: {
|
||||
pipelineFailed: s__(
|
||||
'mrWidget|The pipeline for this merge request did not complete. Push a new commit to fix the failure.',
|
||||
),
|
||||
approvalNeeded: s__('mrWidget|You can only merge once this merge request is approved.'),
|
||||
unresolvedDiscussions: s__('mrWidget|Merge blocked: all threads must be resolved.'),
|
||||
},
|
||||
components: {
|
||||
StatusIcon,
|
||||
GlButton,
|
||||
},
|
||||
props: {
|
||||
mr: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
failedText() {
|
||||
if (this.mr.isPipelineFailed) {
|
||||
return this.$options.i18n.pipelineFailed;
|
||||
} else if (this.mr.approvals && !this.mr.isApproved) {
|
||||
return this.$options.i18n.approvalNeeded;
|
||||
} else if (this.mr.hasMergeableDiscussionsState) {
|
||||
return this.$options.i18n.unresolvedDiscussions;
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
jumpToFirstUnresolvedDiscussion() {
|
||||
notesEventHub.$emit('jumpToFirstUnresolvedDiscussion');
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="mr-widget-body media gl-flex-wrap">
|
||||
<status-icon status="warning" />
|
||||
<p class="media-body gl-m-0! gl-font-weight-bold gl-text-black-normal!">
|
||||
{{ failedText }}
|
||||
<template v-if="failedText == $options.i18n.unresolvedDiscussions">
|
||||
<gl-button
|
||||
class="gl-ml-3"
|
||||
size="small"
|
||||
variant="confirm"
|
||||
data-testid="jumpToUnresolved"
|
||||
@click="jumpToFirstUnresolvedDiscussion"
|
||||
>
|
||||
{{ s__('mrWidget|Jump to first unresolved thread') }}
|
||||
</gl-button>
|
||||
<gl-button
|
||||
v-if="mr.createIssueToResolveDiscussionsPath"
|
||||
:href="mr.createIssueToResolveDiscussionsPath"
|
||||
class="gl-ml-3"
|
||||
size="small"
|
||||
variant="confirm"
|
||||
category="secondary"
|
||||
data-testid="resolveIssue"
|
||||
>
|
||||
{{ s__('mrWidget|Create issue to resolve all threads') }}
|
||||
</gl-button>
|
||||
</template>
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
|
@ -104,7 +104,7 @@ export default {
|
|||
:href="plan.job_path"
|
||||
target="_blank"
|
||||
data-testid="terraform-report-link"
|
||||
data-track-event="click_terraform_mr_plan_button"
|
||||
data-track-action="click_terraform_mr_plan_button"
|
||||
data-track-label="mr_widget_terraform_mr_plan_button"
|
||||
data-track-property="terraform_mr_plan_button"
|
||||
class="btn btn-sm"
|
||||
|
|
|
@ -89,6 +89,7 @@ export default {
|
|||
import('../reports/accessibility_report/grouped_accessibility_reports_app.vue'),
|
||||
MrWidgetApprovals,
|
||||
SecurityReportsApp: () => import('~/vue_shared/security_reports/security_reports_app.vue'),
|
||||
MergeChecksFailed: () => import('./components/states/merge_checks_failed.vue'),
|
||||
},
|
||||
apollo: {
|
||||
state: {
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { stateKey } from './state_maps';
|
||||
|
||||
export default function deviseState() {
|
||||
if (this.projectArchived) {
|
||||
if (this.hasMergeChecksFailed) {
|
||||
return stateKey.mergeChecksFailed;
|
||||
} else if (this.projectArchived) {
|
||||
return stateKey.archived;
|
||||
} else if (this.branchMissing) {
|
||||
return stateKey.missingBranch;
|
||||
|
|
|
@ -347,4 +347,13 @@ export default class MergeRequestStore {
|
|||
this.approvals = data;
|
||||
this.isApproved = data.approved || false;
|
||||
}
|
||||
|
||||
get hasMergeChecksFailed() {
|
||||
if (!window.gon?.features?.restructuredMrWidget) return false;
|
||||
|
||||
return (
|
||||
this.hasMergeableDiscussionsState ||
|
||||
(this.onlyAllowMergeIfPipelineSucceeds && this.isPipelineFailed)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ const stateToComponentMap = {
|
|||
autoMergeFailed: 'mr-widget-auto-merge-failed',
|
||||
shaMismatch: 'sha-mismatch',
|
||||
rebase: 'mr-widget-rebase',
|
||||
mergeChecksFailed: 'mergeChecksFailed',
|
||||
};
|
||||
|
||||
const statesToShowHelpWidget = [
|
||||
|
@ -50,6 +51,7 @@ export const stateKey = {
|
|||
readyToMerge: 'readyToMerge',
|
||||
rebase: 'rebase',
|
||||
merged: 'merged',
|
||||
mergeChecksFailed: 'mergeChecksFailed',
|
||||
};
|
||||
|
||||
export default {
|
||||
|
|
|
@ -75,7 +75,7 @@ export default {
|
|||
variant="link"
|
||||
:track-experiment="$options.inviteMembersInComment"
|
||||
:trigger-source="$options.inviteMembersInComment"
|
||||
data-track-event="comment_invite_click"
|
||||
data-track-action="comment_invite_click"
|
||||
/>
|
||||
<span class="uploading-progress-container hide">
|
||||
<gl-icon name="media" />
|
||||
|
|
|
@ -40,7 +40,7 @@ export default {
|
|||
:href="feature.url"
|
||||
target="_blank"
|
||||
class="gl-display-block"
|
||||
data-track-event="click_whats_new_item"
|
||||
data-track-action="click_whats_new_item"
|
||||
:data-track-label="feature.title"
|
||||
:data-track-property="feature.url"
|
||||
>
|
||||
|
@ -55,7 +55,7 @@ export default {
|
|||
:href="feature.url"
|
||||
target="_blank"
|
||||
class="whats-new-item-title-link gl-display-block gl-mt-4 gl-mb-1"
|
||||
data-track-event="click_whats_new_item"
|
||||
data-track-action="click_whats_new_item"
|
||||
:data-track-label="feature.title"
|
||||
:data-track-property="feature.url"
|
||||
>
|
||||
|
@ -79,7 +79,7 @@ export default {
|
|||
<gl-button
|
||||
:href="feature.url"
|
||||
target="_blank"
|
||||
data-track-event="click_whats_new_item"
|
||||
data-track-action="click_whats_new_item"
|
||||
:data-track-label="feature.title"
|
||||
:data-track-property="feature.url"
|
||||
>
|
||||
|
|
|
@ -26,6 +26,7 @@ class Explore::ProjectsController < Explore::ApplicationController
|
|||
feature_category :projects
|
||||
|
||||
def index
|
||||
show_alert_if_search_is_disabled
|
||||
@projects = load_projects
|
||||
|
||||
respond_to do |format|
|
||||
|
@ -120,6 +121,12 @@ class Explore::ProjectsController < Explore::ApplicationController
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
def show_alert_if_search_is_disabled
|
||||
return if current_user || params[:name].blank? && params[:search].blank? || !html_request? || Feature.disabled?(:disable_anonymous_search, type: :ops)
|
||||
|
||||
flash[:notice] = _('You must sign in to search for specific projects.')
|
||||
end
|
||||
end
|
||||
|
||||
Explore::ProjectsController.prepend_mod_with('Explore::ProjectsController')
|
||||
|
|
|
@ -193,6 +193,7 @@ class ProjectsFinder < UnionFinder
|
|||
def by_search(items)
|
||||
params[:search] ||= params[:name]
|
||||
|
||||
return items if Feature.enabled?(:disable_anonymous_search, type: :ops) && current_user.nil?
|
||||
return items.none if params[:search].present? && params[:minimum_search_length].present? && params[:search].length < params[:minimum_search_length].to_i
|
||||
|
||||
items.optionally_search(params[:search], include_namespace: params[:search_namespaces].present?)
|
||||
|
|
|
@ -373,7 +373,7 @@ module IssuablesHelper
|
|||
is_collapsed: is_collapsed,
|
||||
track_label: "right_sidebar",
|
||||
track_property: "update_todo",
|
||||
track_event: "click_button",
|
||||
track_action: "click_button",
|
||||
track_value: ""
|
||||
}
|
||||
end
|
||||
|
|
|
@ -32,7 +32,7 @@ module Nav
|
|||
id: 'new_project',
|
||||
title: _('New project/repository'),
|
||||
href: new_project_path(namespace_id: group.id),
|
||||
data: { track_event: 'click_link_new_project_group', track_label: 'plus_menu_dropdown' }
|
||||
data: { track_action: 'click_link_new_project_group', track_label: 'plus_menu_dropdown' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -43,7 +43,7 @@ module Nav
|
|||
id: 'new_subgroup',
|
||||
title: _('New subgroup'),
|
||||
href: new_group_path(parent_id: group.id),
|
||||
data: { track_event: 'click_link_new_subgroup', track_label: 'plus_menu_dropdown' }
|
||||
data: { track_action: 'click_link_new_subgroup', track_label: 'plus_menu_dropdown' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -74,7 +74,7 @@ module Nav
|
|||
id: 'new_issue',
|
||||
title: _('New issue'),
|
||||
href: new_project_issue_path(project),
|
||||
data: { track_event: 'click_link_new_issue', track_label: 'plus_menu_dropdown', qa_selector: 'new_issue_link' }
|
||||
data: { track_action: 'click_link_new_issue', track_label: 'plus_menu_dropdown', qa_selector: 'new_issue_link' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -85,7 +85,7 @@ module Nav
|
|||
id: 'new_mr',
|
||||
title: _('New merge request'),
|
||||
href: project_new_merge_request_path(merge_project),
|
||||
data: { track_event: 'click_link_new_mr', track_label: 'plus_menu_dropdown' }
|
||||
data: { track_action: 'click_link_new_mr', track_label: 'plus_menu_dropdown' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -96,7 +96,7 @@ module Nav
|
|||
id: 'new_snippet',
|
||||
title: _('New snippet'),
|
||||
href: new_project_snippet_path(project),
|
||||
data: { track_event: 'click_link_new_snippet_project', track_label: 'plus_menu_dropdown' }
|
||||
data: { track_action: 'click_link_new_snippet_project', track_label: 'plus_menu_dropdown' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -124,7 +124,7 @@ module Nav
|
|||
id: 'general_new_project',
|
||||
title: _('New project/repository'),
|
||||
href: new_project_path,
|
||||
data: { track_event: 'click_link_new_project', track_label: 'plus_menu_dropdown', qa_selector: 'global_new_project_link' }
|
||||
data: { track_action: 'click_link_new_project', track_label: 'plus_menu_dropdown', qa_selector: 'global_new_project_link' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -135,7 +135,7 @@ module Nav
|
|||
id: 'general_new_group',
|
||||
title: _('New group'),
|
||||
href: new_group_path,
|
||||
data: { track_event: 'click_link_new_group', track_label: 'plus_menu_dropdown' }
|
||||
data: { track_action: 'click_link_new_group', track_label: 'plus_menu_dropdown' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -146,7 +146,7 @@ module Nav
|
|||
id: 'general_new_snippet',
|
||||
title: _('New snippet'),
|
||||
href: new_snippet_path,
|
||||
data: { track_event: 'click_link_new_snippet_parent', track_label: 'plus_menu_dropdown', qa_selector: 'global_new_snippet_link' }
|
||||
data: { track_action: 'click_link_new_snippet_parent', track_label: 'plus_menu_dropdown', qa_selector: 'global_new_snippet_link' }
|
||||
)
|
||||
)
|
||||
end
|
||||
|
@ -164,7 +164,7 @@ module Nav
|
|||
emoji: ('shaking_hands' if experiment_enabled?(:invite_members_new_dropdown)),
|
||||
href: href,
|
||||
data: {
|
||||
track_event: 'click_link',
|
||||
track_action: 'click_link',
|
||||
track_label: tracking_label,
|
||||
track_property: experiment_tracking_category_and_group(:invite_members_new_dropdown)
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ module Nav
|
|||
builder.add_primary_menu_item_with_shortcut(
|
||||
active: nav == 'project' || active_nav_link?(path: %w[root#index projects#trending projects#starred dashboard/projects#index]),
|
||||
css_class: 'qa-projects-dropdown',
|
||||
data: { track_label: "projects_dropdown", track_event: "click_dropdown" },
|
||||
data: { track_label: "projects_dropdown", track_action: "click_dropdown" },
|
||||
view: PROJECTS_VIEW,
|
||||
shortcut_href: dashboard_projects_path,
|
||||
**projects_menu_item_attrs
|
||||
|
@ -112,7 +112,7 @@ module Nav
|
|||
builder.add_primary_menu_item_with_shortcut(
|
||||
active: nav == 'group' || active_nav_link?(path: %w[dashboard/groups explore/groups]),
|
||||
css_class: 'qa-groups-dropdown',
|
||||
data: { track_label: "groups_dropdown", track_event: "click_dropdown" },
|
||||
data: { track_label: "groups_dropdown", track_action: "click_dropdown" },
|
||||
view: GROUPS_VIEW,
|
||||
shortcut_href: dashboard_groups_path,
|
||||
**groups_menu_item_attrs
|
||||
|
|
|
@ -147,7 +147,6 @@ class Member < ApplicationRecord
|
|||
scope :owners, -> { active.where(access_level: OWNER) }
|
||||
scope :owners_and_maintainers, -> { active.where(access_level: [OWNER, MAINTAINER]) }
|
||||
scope :with_user, -> (user) { where(user: user) }
|
||||
scope :with_user_by_email, -> (email) { left_join_users.where(users: { email: email } ) }
|
||||
|
||||
scope :preload_user_and_notification_settings, -> { preload(user: :notification_settings) }
|
||||
|
||||
|
|
|
@ -6,4 +6,4 @@
|
|||
%a.nav-link.active{ href: '#login-pane', data: { toggle: 'tab', qa_selector: 'sign_in_tab' }, role: 'tab' }= tab_title
|
||||
- if render_signup_link && allow_signup?
|
||||
%li.nav-item{ role: 'presentation' }
|
||||
%a.nav-link{ href: '#register-pane', data: { track_label: 'sign_in_register', track_property: '', track_event: 'click_button', track_value: '', toggle: 'tab', qa_selector: 'register_tab' }, role: 'tab' } Register
|
||||
%a.nav-link{ href: '#register-pane', data: { track_label: 'sign_in_register', track_property: '', track_action: 'click_button', track_value: '', toggle: 'tab', qa_selector: 'register_tab' }, role: 'tab' } Register
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.search.search-form{ data: { track_label: "navbar_search", track_event: "activate_form_input", track_value: "" } }
|
||||
.search.search-form{ data: { track_label: "navbar_search", track_action: "activate_form_input", track_value: "" } }
|
||||
= form_tag search_path, method: :get, class: 'form-inline form-control' do |_f|
|
||||
.search-input-container
|
||||
.search-input-wrap
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
- unless current_controller?(:search)
|
||||
- if Feature.enabled?(:new_header_search)
|
||||
#js-header-search.header-search{ data: { 'search-context' => search_context.to_json,
|
||||
'search-path' => search_path,
|
||||
'issues-path' => issues_dashboard_path,
|
||||
'mr-path' => merge_requests_dashboard_path } }
|
||||
%input{ type: "text", placeholder: _('Search or jump to...'), class: 'form-control gl-form-input' }
|
||||
|
@ -45,7 +46,7 @@
|
|||
= link_to assigned_issues_dashboard_path, title: _('Issues'), class: 'dashboard-shortcuts-issues', aria: { label: _('Issues') },
|
||||
data: { qa_selector: 'issues_shortcut_button', toggle: 'tooltip', placement: 'bottom',
|
||||
track_label: 'main_navigation',
|
||||
track_event: 'click_issues_link',
|
||||
track_action: 'click_issues_link',
|
||||
track_property: 'navigation',
|
||||
container: 'body' } do
|
||||
= sprite_icon('issues')
|
||||
|
@ -59,7 +60,7 @@
|
|||
toggle: "dropdown",
|
||||
placement: 'bottom',
|
||||
track_label: 'main_navigation',
|
||||
track_event: 'click_merge_link',
|
||||
track_action: 'click_merge_link',
|
||||
track_property: 'navigation',
|
||||
container: 'body' } do
|
||||
= sprite_icon('git-merge')
|
||||
|
@ -85,7 +86,7 @@
|
|||
= link_to dashboard_todos_path, title: _('To-Do List'), aria: { label: _('To-Do List') }, class: 'shortcuts-todos',
|
||||
data: { qa_selector: 'todos_shortcut_button', toggle: 'tooltip', placement: 'bottom',
|
||||
track_label: 'main_navigation',
|
||||
track_event: 'click_to_do_link',
|
||||
track_action: 'click_to_do_link',
|
||||
track_property: 'navigation',
|
||||
container: 'body' } do
|
||||
= sprite_icon('todo-done')
|
||||
|
@ -101,7 +102,7 @@
|
|||
.dropdown-menu.dropdown-menu-right
|
||||
= render 'layouts/header/help_dropdown'
|
||||
- if header_link?(:user_dropdown)
|
||||
%li.nav-item.header-user.js-nav-user-dropdown.dropdown{ data: { track_label: "profile_dropdown", track_event: "click_dropdown", track_value: "", qa_selector: 'user_menu' }, class: ('mr-0' if has_impersonation_link) }
|
||||
%li.nav-item.header-user.js-nav-user-dropdown.dropdown{ data: { track_label: "profile_dropdown", track_action: "click_dropdown", track_value: "", qa_selector: 'user_menu' }, class: ('mr-0' if has_impersonation_link) }
|
||||
= link_to current_user, class: user_dropdown_class, data: { toggle: "dropdown" } do
|
||||
= image_tag avatar_icon_for_user(current_user, 23), width: 23, height: 23, class: "header-user-avatar qa-user-avatar", alt: current_user.name
|
||||
= render_if_exists 'layouts/header/user_notification_dot', project: project, namespace: group
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
- return if menu_sections.empty?
|
||||
|
||||
%li.header-new.dropdown{ class: top_class, data: { track_label: "new_dropdown", track_event: "click_dropdown" } }
|
||||
%li.header-new.dropdown{ class: top_class, data: { track_label: "new_dropdown", track_action: "click_dropdown" } }
|
||||
= link_to new_project_path, class: "header-new-dropdown-toggle has-tooltip", id: "js-onboarding-new-project-link", title: title, ref: 'tooltip', aria: { label: title }, data: { toggle: 'dropdown', placement: 'bottom', container: 'body', display: 'static', qa_selector: 'new_menu_toggle' } do
|
||||
= sprite_icon('plus-square')
|
||||
= sprite_icon('chevron-down', css_class: 'caret-down')
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
- if phabricator_import_enabled?
|
||||
%div
|
||||
= link_to new_import_phabricator_path, class: 'gl-button btn-default btn import_phabricator', data: { track_label: "#{track_label}", track_event: "click_button", track_property: "phabricator" } do
|
||||
= link_to new_import_phabricator_path, class: 'gl-button btn-default btn import_phabricator', data: { track_label: "#{track_label}", track_action: "click_button", track_property: "phabricator" } do
|
||||
.gl-button-icon
|
||||
= custom_icon('issues')
|
||||
= _("Phabricator Tasks")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%h4.gl-mt-0.gl-mb-3{ data: { testid: 'invite-member-section',
|
||||
track_label: 'invite_members_empty_project',
|
||||
track_event: 'render' } }
|
||||
track_action: 'render' } }
|
||||
= s_('InviteMember|Invite your team')
|
||||
%p= s_('InviteMember|Add members to this project and start collaborating with your team.')
|
||||
.js-invite-members-trigger{ data: { variant: 'confirm',
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
.form-group.project-name.col-sm-12
|
||||
= f.label :name, class: 'label-bold' do
|
||||
%span= _("Project name")
|
||||
= f.text_field :name, placeholder: "My awesome project", class: "form-control gl-form-input input-lg", data: { track_label: "#{track_label}", track_event: "activate_form_input", track_property: "project_name", track_value: "" }, required: true, aria: { required: true }
|
||||
= f.text_field :name, placeholder: "My awesome project", class: "form-control gl-form-input input-lg", data: { track_label: "#{track_label}", track_action: "activate_form_input", track_property: "project_name", track_value: "" }, required: true, aria: { required: true }
|
||||
.form-group.project-path.col-sm-6
|
||||
= f.label :namespace_id, class: 'label-bold' do
|
||||
%span= _('Project URL')
|
||||
|
@ -26,7 +26,7 @@
|
|||
display_path: true,
|
||||
extra_group: namespace_id),
|
||||
{},
|
||||
{ class: 'select2 js-select-namespace qa-project-namespace-select block-truncated', data: { track_label: "#{track_label}", track_event: "activate_form_input", track_property: "project_path", track_value: "", qa_selector: "select_namespace_dropdown" }})
|
||||
{ class: 'select2 js-select-namespace qa-project-namespace-select block-truncated', data: { track_label: "#{track_label}", track_action: "activate_form_input", track_property: "project_path", track_value: "", qa_selector: "select_namespace_dropdown" }})
|
||||
- else
|
||||
.input-group-prepend.static-namespace.flex-shrink-0.has-tooltip{ title: user_url(current_user.username) + '/' }
|
||||
.input-group-text.border-0
|
||||
|
@ -45,7 +45,7 @@
|
|||
.form-group
|
||||
= f.label :description, class: 'label-bold' do
|
||||
= s_('ProjectsNew|Project description %{tag_start}(optional)%{tag_end}').html_safe % { tag_start: '<span>'.html_safe, tag_end: '</span>'.html_safe }
|
||||
= f.text_area :description, placeholder: s_('ProjectsNew|Description format'), class: "form-control gl-form-input", rows: 3, maxlength: 250, data: { track_label: "#{track_label}", track_event: "activate_form_input", track_property: "project_description", track_value: "" }
|
||||
= f.text_area :description, placeholder: s_('ProjectsNew|Description format'), class: "form-control gl-form-input", rows: 3, maxlength: 250, data: { track_label: "#{track_label}", track_action: "activate_form_input", track_property: "project_description", track_value: "" }
|
||||
|
||||
= f.label :visibility_level, class: 'label-bold' do
|
||||
= s_('ProjectsNew|Visibility Level')
|
||||
|
@ -56,12 +56,12 @@
|
|||
.form-group.row.initialize-with-readme-setting
|
||||
%div{ :class => "col-sm-12" }
|
||||
.form-check
|
||||
= check_box_tag 'project[initialize_with_readme]', '1', true, class: 'form-check-input', data: { qa_selector: "initialize_with_readme_checkbox", track_label: "#{track_label}", track_event: "activate_form_input", track_property: "init_with_readme", track_value: "" }
|
||||
= check_box_tag 'project[initialize_with_readme]', '1', true, class: 'form-check-input', data: { qa_selector: "initialize_with_readme_checkbox", track_label: "#{track_label}", track_action: "activate_form_input", track_property: "init_with_readme", track_value: "" }
|
||||
= label_tag 'project[initialize_with_readme]', class: 'form-check-label' do
|
||||
.option-title
|
||||
%strong= s_('ProjectsNew|Initialize repository with a README')
|
||||
.option-description
|
||||
= s_('ProjectsNew|Allows you to immediately clone this project’s repository. Skip this if you plan to push up an existing repository.')
|
||||
|
||||
= f.submit _('Create project'), class: "btn gl-button btn-confirm", data: { track_label: "#{track_label}", track_event: "click_button", track_property: "create_project", track_value: "" }
|
||||
= link_to _('Cancel'), dashboard_projects_path, class: 'btn gl-button btn-default btn-cancel', data: { track_label: "#{track_label}", track_event: "click_button", track_property: "cancel", track_value: "" }
|
||||
= f.submit _('Create project'), class: "btn gl-button btn-confirm", data: { track_label: "#{track_label}", track_action: "click_button", track_property: "create_project", track_value: "" }
|
||||
= link_to _('Cancel'), dashboard_projects_path, class: 'btn gl-button btn-default btn-cancel', data: { track_label: "#{track_label}", track_action: "click_button", track_property: "cancel", track_value: "" }
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
.text-muted
|
||||
= template.description
|
||||
.controls.d-flex.align-items-center
|
||||
%a.btn.gl-button.btn-default.gl-mr-3{ href: template.preview, rel: 'noopener noreferrer', target: '_blank', data: { track_label: "template_preview", track_property: template.name, track_event: "click_button", track_value: "" } }
|
||||
%a.btn.gl-button.btn-default.gl-mr-3{ href: template.preview, rel: 'noopener noreferrer', target: '_blank', data: { track_label: "template_preview", track_property: template.name, track_action: "click_button", track_value: "" } }
|
||||
= _("Preview")
|
||||
%label.btn.gl-button.btn-confirm.template-button.choose-template.gl-mb-0{ for: template.name }
|
||||
%input{ type: "radio", autocomplete: "off", name: "project[template_name]", id: template.name, value: template.name, data: { track_label: "template_use", track_property: template.name, track_event: "click_button", track_value: "" } }
|
||||
%input{ type: "radio", autocomplete: "off", name: "project[template_name]", id: template.name, value: template.name, data: { track_label: "template_use", track_property: template.name, track_action: "click_button", track_value: "" } }
|
||||
%span{ data: { qa_selector: 'use_template_button' } }
|
||||
= _("Use template")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.js-blob-result.gl-mt-3.gl-mb-5{ data: { qa_selector: 'result_item_content' } }
|
||||
.file-holder.file-holder-top-border
|
||||
.js-file-title.file-title{ data: { qa_selector: 'file_title_content' } }
|
||||
= link_to blob_link, data: {track_event: 'click_text', track_label: 'blob_path', track_property: 'search_result'} do
|
||||
= link_to blob_link, data: {track_action: 'click_text', track_label: 'blob_path', track_property: 'search_result'} do
|
||||
= sprite_icon('document')
|
||||
%strong
|
||||
= search_blob_title(project, path)
|
||||
|
|
|
@ -1 +1 @@
|
|||
= render 'projects/commits/commit', project: commit.project, commit: commit, ref: nil, show_project_name: @project.nil?, link_data_attrs: {track_event: 'click_text', track_label: 'commit_title', track_property: 'search_result'}
|
||||
= render 'projects/commits/commit', project: commit.project, commit: commit, ref: nil, show_project_name: @project.nil?, link_data_attrs: {track_action: 'click_text', track_label: 'commit_title', track_property: 'search_result'}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
%span.gl-display-flex.gl-align-items-center
|
||||
%span.badge.badge-pill.gl-badge.sm{ class: "badge-#{issuable_state_to_badge_class(issuable)}" }= issuable_state_text(issuable)
|
||||
= sprite_icon('eye-slash', css_class: 'gl-text-gray-500 gl-ml-2') if issuable.respond_to?(:confidential?) && issuable.confidential?
|
||||
= link_to issuable_path(issuable), data: { track_event: 'click_text', track_label: "#{issuable.class.name.downcase}_title", track_property: 'search_result' }, class: 'gl-w-full' do
|
||||
= link_to issuable_path(issuable), data: { track_action: 'click_text', track_label: "#{issuable.class.name.downcase}_title", track_property: 'search_result' }, class: 'gl-w-full' do
|
||||
%span.term.str-truncated.gl-font-weight-bold.gl-ml-2= issuable.title
|
||||
.gl-text-gray-500.gl-my-3
|
||||
= issuable_project_reference(issuable)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.search-result-row
|
||||
%h4
|
||||
= link_to project_milestone_path(milestone.project, milestone), data: {track_event: 'click_text', track_label: 'milestone_title', track_property: 'search_result'} do
|
||||
= link_to project_milestone_path(milestone.project, milestone), data: {track_action: 'click_text', track_label: 'milestone_title', track_property: 'search_result'} do
|
||||
%span.term.str-truncated= milestone.title
|
||||
|
||||
- if milestone.description.present?
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
- else
|
||||
%span #{note.noteable_type.titleize} ##{noteable_identifier}
|
||||
·
|
||||
= link_to note.noteable.title, note_url, data: {track_event: 'click_text', track_label: 'noteable_title', track_property: 'search_result'}
|
||||
= link_to note.noteable.title, note_url, data: {track_action: 'click_text', track_label: 'noteable_title', track_property: 'search_result'}
|
||||
|
||||
%span.note-headline-light.note-headline-meta
|
||||
%span.system-note-separator
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
%div{ class: 'search-result-row gl-pb-3! gl-mt-5 gl-mb-0!' }
|
||||
%span.gl-display-flex.gl-align-items-center
|
||||
= link_to wiki_blob_link, data: { track_event: 'click_text', track_label: "wiki_title", track_property: 'search_result' }, class: 'gl-w-full' do
|
||||
= link_to wiki_blob_link, data: { track_action: 'click_text', track_label: "wiki_title", track_property: 'search_result' }, class: 'gl-w-full' do
|
||||
%span.term.str-truncated.gl-font-weight-bold= ::Gitlab::Git::Wiki::GollumSlug.canonicalize_filename(wiki_blob.path)
|
||||
.description.term.col-sm-10.gl-px-0
|
||||
= simple_search_highlight_and_truncate(wiki_blob.data, @search_term)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
= link_to _("Community forum"), "https://forum.gitlab.com/", target: '_blank', class: 'text-nowrap',
|
||||
rel: 'noopener noreferrer', data: { 'track_event': 'click_forum', 'track_property': 'question_menu' }
|
||||
rel: 'noopener noreferrer', data: { 'track_action': 'click_forum', 'track_property': 'question_menu' }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
- available_visibility_levels.each do |level|
|
||||
.form-check
|
||||
= form.radio_button model_method, level, checked: (selected_level == level), class: 'form-check-input', data: { track_label: "blank_project", track_event: "activate_form_input", track_property: "#{model_method}_#{level}", track_value: "", qa_selector: "#{visibility_level_label(level).downcase}_radio" }
|
||||
= form.radio_button model_method, level, checked: (selected_level == level), class: 'form-check-input', data: { track_label: "blank_project", track_action: "activate_form_input", track_property: "#{model_method}_#{level}", track_value: "", qa_selector: "#{visibility_level_label(level).downcase}_radio" }
|
||||
= form.label "#{model_method}_#{level}", class: 'form-check-label' do
|
||||
= visibility_level_icon(level)
|
||||
.option-title
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
= _('Expired')
|
||||
- else
|
||||
%span{ class: ('text-warning' if token.expires_soon?) }
|
||||
= _('In %{time_to_now}') % { time_to_now: distance_of_time_in_words_to_now(token.expires_at) }
|
||||
= time_ago_with_tooltip(token.expires_at)
|
||||
- else
|
||||
%span.token-never-expires-label= _('Never')
|
||||
- if project
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
%td
|
||||
- if token.expires?
|
||||
%span{ class: ('text-warning' if token.expires_soon?) }
|
||||
In #{distance_of_time_in_words_to_now(token.expires_at)}
|
||||
= time_ago_with_tooltip(token.expires_at)
|
||||
- else
|
||||
%span.token-never-expires-label= _('Never')
|
||||
%td= token.scopes.present? ? token.scopes.join(', ') : _('no scopes selected')
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
= custom_icon('icon_arrow_right')
|
||||
.dropdown.sidebar-move-issue-dropdown.hide-collapsed
|
||||
%button.gl-button.btn.btn-default.btn-block.js-sidebar-dropdown-toggle.js-move-issue{ type: 'button',
|
||||
data: { toggle: 'dropdown', display: 'static', track_label: "right_sidebar", track_property: "move_issue", track_event: "click_button", track_value: "" } }
|
||||
data: { toggle: 'dropdown', display: 'static', track_label: "right_sidebar", track_property: "move_issue", track_action: "click_button", track_value: "" } }
|
||||
= _('Move issue')
|
||||
.dropdown-menu.dropdown-menu-selectable.dropdown-extended-height
|
||||
= dropdown_title(_('Move issue'))
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
- options[:footer_content] = true
|
||||
- options[:wrapper_class] = local_assigns.fetch(:wrapper_class)
|
||||
- options[:toggle_class] += ' js-invite-members-track'
|
||||
- data['track-event'] = 'show_invite_members'
|
||||
- data['track-action'] = 'show_invite_members'
|
||||
- data['track-label'] = local_assigns.fetch(:track_label)
|
||||
|
||||
= dropdown_tag(data['dropdown-title'], options: options) do
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
%li.js-filter-issuable-type
|
||||
= link_to new_project_issue_path(@project), class: ("is-active" if issuable.issue?) do
|
||||
#{sprite_icon(work_item_type_icon(:issue), css_class: 'gl-icon')} #{_("Issue")}
|
||||
%li.js-filter-issuable-type{ data: { track: { event: "select_issue_type_incident", label: "select_issue_type_incident_dropdown_option" } } }
|
||||
%li.js-filter-issuable-type{ data: { track: { action: "select_issue_type_incident", label: "select_issue_type_incident_dropdown_option" } } }
|
||||
= link_to new_project_issue_path(@project, { issuable_template: 'incident', issue: { issue_type: 'incident' } }), class: ("is-active" if issuable.incident?) do
|
||||
#{sprite_icon(work_item_type_icon(:incident), css_class: 'gl-icon')} #{_("Incident")}
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show alert integrations list"
|
||||
category: "Alert Integrations"
|
||||
action: view_alert_integrations_list
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
product_group: group::monitor
|
||||
product_category:
|
||||
milestone: "13.5"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/44549
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Commit CI file dismissed"
|
||||
category: "code_quality_walkthrough"
|
||||
action: commit_ci_file_dismissed
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Commit CI file displayed"
|
||||
category: "code_quality_walkthrough"
|
||||
action: commit_ci_file_displayed
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Commit created"
|
||||
category: "code_quality_walkthrough"
|
||||
action: commit_created
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Click empty state CTA"
|
||||
category: "code_quality_walkthrough"
|
||||
action: cta_clicked
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show failed pipeline"
|
||||
category: "code_quality_walkthrough"
|
||||
action: failed_pipeline_displayed
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show failed pipeline logs"
|
||||
category: "code_quality_walkthrough"
|
||||
action: failed_pipeline_view_logs
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Dismiss running pipeline"
|
||||
category: "code_quality_walkthrough"
|
||||
action: running_pipeline_dismissed
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show running pipeline"
|
||||
category: "code_quality_walkthrough"
|
||||
action: running_pipeline_displayed
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show succeeded pipeline"
|
||||
category: "code_quality_walkthrough"
|
||||
action: success_pipeline_displayed
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show succeeded pipeline logs"
|
||||
category: "code_quality_walkthrough"
|
||||
action: success_pipeline_view_logs
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::activation
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58900
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Click 2FA codes related buttons: copy, download, print..."
|
||||
category: default
|
||||
action: click_button
|
||||
label_description: "Action button name"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
product_group: group::compliance
|
||||
product_category:
|
||||
milestone: "13.7"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49510
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy 2FA codes with keyboard shortcut"
|
||||
category: default
|
||||
action: copy_keyboard_shortcut
|
||||
label_description: "Action button name"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
product_group: group::compliance
|
||||
product_category:
|
||||
milestone: "13.7"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49510
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Click Epic's board switcher"
|
||||
category: default
|
||||
action: click_dropdown
|
||||
label_description: "`board_switcher`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
product_group: group::product_planning
|
||||
product_category:
|
||||
milestone: "14.0"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63765
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Cancel registry tag deletion"
|
||||
category: default
|
||||
action: cancel_delete
|
||||
label_description: "`[bulk_registry_tag_delete | registry_tag_delete]`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "12.8"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23154
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Click registry tag delete button"
|
||||
category: default
|
||||
action: click_button
|
||||
label_description: "`[bulk_registry_tag_delete | registry_tag_delete]`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "12.8"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23154
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Confirm registry tag deletion"
|
||||
category: default
|
||||
action: confirm_delete
|
||||
label_description: "`[bulk_registry_tag_delete | registry_tag_delete]`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "12.8"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23154
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Change discussion sort direction"
|
||||
category: default
|
||||
action: change_discussion_sort_direction
|
||||
label_description: ""
|
||||
property_description: "`[asc | desc]`"
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
product_group: group::product_planning
|
||||
product_category:
|
||||
milestone: "12.10"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28717
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Dismiss home page banner"
|
||||
category: default
|
||||
action: click_dismiss
|
||||
label_description: ""
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::expansion
|
||||
product_category:
|
||||
milestone: "13.4"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39752
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy Composer package include command"
|
||||
category: default
|
||||
action: copy_composer_package_include_command
|
||||
label_description: "`code_instruction`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "13.3"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/38779
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy Composer registry include command"
|
||||
category: default
|
||||
action: copy_composer_registry_include_command
|
||||
label_description: "`code_instruction`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "13.3"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/38779
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy Gradle add to source command"
|
||||
category: default
|
||||
action: copy_gradle_add_to_source_command
|
||||
label_description: "`code_instruction`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "13.10"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55738
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy Gradle install command"
|
||||
category: default
|
||||
action: copy_gradle_install_command
|
||||
label_description: "`code_instruction`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "13.10"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55738
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy Kotlin add to source command"
|
||||
category: default
|
||||
action: copy_kotlin_add_to_source_command
|
||||
label_description: "`code_instruction`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60097
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Copy Kotlin install command"
|
||||
category: default
|
||||
action: copy_kotlin_install_command
|
||||
label_description: "`code_instruction`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60097
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Show a congratulation on first pipeline"
|
||||
category: default
|
||||
action: generic
|
||||
label_description: "`congratulate_first_pipeline`"
|
||||
property_description: "`[admin | maintainer | developer | owner]`"
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: growth
|
||||
product_stage: growth
|
||||
product_group: group::expansion
|
||||
product_category:
|
||||
milestone: "12.10"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28378
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Execute bubble menu control"
|
||||
category: default
|
||||
action: execute_bubble_menu_control
|
||||
label_description: "`content_editor`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
product_group: group::editor
|
||||
product_category:
|
||||
milestone: "14.2"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67363
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Execute input rule"
|
||||
category: default
|
||||
action: execute_input_rule
|
||||
label_description: "`content_editor`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
product_group: group::editor
|
||||
product_category:
|
||||
milestone: "14.0"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61248
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Execute keyboard shortcut"
|
||||
category: default
|
||||
action: execute_keyboard_shortcut
|
||||
label_description: "`content_editor`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
product_group: group::editor
|
||||
product_category:
|
||||
milestone: "14.0"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61248
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Execute toolbar control"
|
||||
category: default
|
||||
action: execute_toolbar_control
|
||||
label_description: "`content_editor`"
|
||||
property_description: "Content type"
|
||||
value_description: "Context data: [heading] 3, [heading] 2"
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
product_group: group::editor
|
||||
product_category:
|
||||
milestone: "13.12"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61065
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Reset Docker form"
|
||||
category: default
|
||||
action: reset_form
|
||||
label_description: "`docker_container_retention_and_expiration_policies`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "12.8"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23844
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Submit Docker form"
|
||||
category: default
|
||||
action: submit_form
|
||||
label_description: "`docker_container_retention_and_expiration_policies`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: ops
|
||||
product_stage: package
|
||||
product_group: group::package
|
||||
product_category:
|
||||
milestone: "12.8"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23844
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
|
@ -0,0 +1,21 @@
|
|||
description: "Open frequent items dropdown"
|
||||
category: default
|
||||
action: click_link
|
||||
label_description: "`[dropdown_type]_dropdown_frequent_items_list_item`"
|
||||
property_description: ""
|
||||
value_description: ""
|
||||
extra_properties:
|
||||
identifiers:
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
product_group: group::editor
|
||||
product_category:
|
||||
milestone: "13.7"
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/47589
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue