Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/vue_shared/components/header_ci_component.vue')
-rw-r--r--app/assets/javascripts/vue_shared/components/header_ci_component.vue172
1 files changed, 0 insertions, 172 deletions
diff --git a/app/assets/javascripts/vue_shared/components/header_ci_component.vue b/app/assets/javascripts/vue_shared/components/header_ci_component.vue
deleted file mode 100644
index 1adda905006..00000000000
--- a/app/assets/javascripts/vue_shared/components/header_ci_component.vue
+++ /dev/null
@@ -1,172 +0,0 @@
-<script>
-import { GlTooltipDirective, GlButton, GlAvatarLink, GlAvatarLabeled, GlTooltip } from '@gitlab/ui';
-import SafeHtml from '~/vue_shared/directives/safe_html';
-import { isGid, getIdFromGraphQLId } from '~/graphql_shared/utils';
-import { glEmojiTag } from '~/emoji';
-import { __, sprintf } from '~/locale';
-import CiBadgeLink from './ci_badge_link.vue';
-import TimeagoTooltip from './time_ago_tooltip.vue';
-
-/**
- * Renders header component for job and pipeline page based on UI mockups
- *
- * Used in:
- * - job show page
- * - pipeline show page
- */
-export default {
- components: {
- CiBadgeLink,
- TimeagoTooltip,
- GlButton,
- GlAvatarLink,
- GlAvatarLabeled,
- GlTooltip,
- },
- directives: {
- GlTooltip: GlTooltipDirective,
- SafeHtml,
- },
- EMOJI_REF: 'EMOJI_REF',
- props: {
- status: {
- type: Object,
- required: true,
- },
- itemName: {
- type: String,
- required: true,
- },
- itemId: {
- type: String,
- required: false,
- default: '',
- },
- time: {
- type: String,
- required: true,
- },
- user: {
- type: Object,
- required: false,
- default: () => ({}),
- },
- hasSidebarButton: {
- type: Boolean,
- required: false,
- default: false,
- },
- shouldRenderTriggeredLabel: {
- type: Boolean,
- required: false,
- default: true,
- },
- },
-
- computed: {
- userAvatarAltText() {
- return sprintf(__(`%{username}'s avatar`), { username: this.user.name });
- },
- userPath() {
- // GraphQL returns `webPath` and Rest `path`
- return this.user?.webPath || this.user?.path;
- },
- avatarUrl() {
- // GraphQL returns `avatarUrl` and Rest `avatar_url`
- return this.user?.avatarUrl || this.user?.avatar_url;
- },
- webUrl() {
- // GraphQL returns `webUrl` and Rest `web_url`
- return this.user?.webUrl || this.user?.web_url;
- },
- statusTooltipHTML() {
- // Rest `status_tooltip_html` which is a ready to work
- // html for the emoji and the status text inside a tooltip.
- // GraphQL returns `status.emoji` and `status.message` which
- // needs to be combined to make the html we want.
- const { emoji } = this.user?.status || {};
- const emojiHtml = emoji ? glEmojiTag(emoji) : '';
-
- return emojiHtml || this.user?.status_tooltip_html;
- },
- message() {
- return this.user?.status?.message;
- },
- item() {
- if (this.itemId) {
- return `${this.itemName} #${this.itemId}`;
- }
-
- return this.itemName;
- },
- userId() {
- return isGid(this.user?.id) ? getIdFromGraphQLId(this.user?.id) : this.user?.id;
- },
- },
-
- methods: {
- onClickSidebarButton() {
- this.$emit('clickedSidebarButton');
- },
- },
- safeHtmlConfig: { ADD_TAGS: ['gl-emoji'] },
-};
-</script>
-
-<template>
- <header class="page-content-header gl-md-display-flex gl-min-h-7" data-testid="ci-header-content">
- <section class="header-main-content gl-mr-3">
- <ci-badge-link class="gl-mr-3" :status="status" />
-
- <strong data-testid="ci-header-item-text">{{ item }}</strong>
-
- <template v-if="shouldRenderTriggeredLabel">{{ __('triggered') }}</template>
- <template v-else>{{ __('created') }}</template>
-
- <timeago-tooltip :time="time" />
-
- {{ __('by') }}
-
- <template v-if="user">
- <gl-avatar-link
- :data-user-id="userId"
- :data-username="user.username"
- :data-name="user.name"
- :href="webUrl"
- target="_blank"
- class="js-user-link gl-vertical-align-middle gl-mx-2 gl-align-items-center"
- >
- <gl-avatar-labeled
- :size="24"
- :src="avatarUrl"
- :label="user.name"
- class="gl-display-none gl-sm-display-inline-flex gl-mx-1"
- />
- <strong class="author gl-display-inline gl-sm-display-none!">@{{ user.username }}</strong>
- <gl-tooltip v-if="message" :target="() => $refs[$options.EMOJI_REF]">
- {{ message }}
- </gl-tooltip>
- <span
- v-if="statusTooltipHTML"
- :ref="$options.EMOJI_REF"
- v-safe-html:[$options.safeHtmlConfig]="statusTooltipHTML"
- class="gl-ml-2"
- :data-testid="message"
- ></span>
- </gl-avatar-link>
- </template>
- </section>
-
- <!-- eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots -->
- <section v-if="$slots.default" data-testid="ci-header-action-buttons" class="gl-display-flex">
- <slot></slot>
- </section>
- <gl-button
- v-if="hasSidebarButton"
- class="gl-md-display-none gl-ml-auto gl-align-self-start js-sidebar-build-toggle"
- icon="chevron-double-lg-left"
- :aria-label="__('Toggle sidebar')"
- @click="onClickSidebarButton"
- />
- </header>
-</template>