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/admin/deploy_keys/components/table.vue')
-rw-r--r--app/assets/javascripts/admin/deploy_keys/components/table.vue176
1 files changed, 105 insertions, 71 deletions
diff --git a/app/assets/javascripts/admin/deploy_keys/components/table.vue b/app/assets/javascripts/admin/deploy_keys/components/table.vue
index 134498af348..6610a0caec5 100644
--- a/app/assets/javascripts/admin/deploy_keys/components/table.vue
+++ b/app/assets/javascripts/admin/deploy_keys/components/table.vue
@@ -1,5 +1,14 @@
<script>
-import { GlTable, GlButton, GlPagination, GlLoadingIcon, GlEmptyState, GlModal } from '@gitlab/ui';
+import {
+ GlCard,
+ GlTable,
+ GlButton,
+ GlPagination,
+ GlIcon,
+ GlLoadingIcon,
+ GlEmptyState,
+ GlModal,
+} from '@gitlab/ui';
import { __ } from '~/locale';
import Api, { DEFAULT_PER_PAGE } from '~/api';
@@ -15,7 +24,7 @@ export default {
newDeployKeyButtonText: __('New deploy key'),
emptyStateTitle: __('No public deploy keys'),
emptyStateDescription: __(
- 'Deploy keys grant read/write access to all repositories in your instance',
+ 'Deploy keys grant read/write access to all repositories in your instance, start by creating a new one above.',
),
delete: __('Delete deploy key'),
edit: __('Edit deploy key'),
@@ -37,10 +46,12 @@ export default {
{
key: 'fingerprint_sha256',
label: __('Fingerprint (SHA256)'),
+ tdClass: 'gl-md-max-w-26',
},
{
key: 'fingerprint',
label: __('Fingerprint (MD5)'),
+ tdClass: 'gl-md-max-w-26',
},
{
key: 'projects',
@@ -75,10 +86,12 @@ export default {
csrf,
DEFAULT_PER_PAGE,
components: {
+ GlCard,
GlTable,
GlButton,
GlPagination,
TimeAgoTooltip,
+ GlIcon,
GlLoadingIcon,
GlEmptyState,
GlModal,
@@ -177,85 +190,106 @@ export default {
</script>
<template>
- <div>
- <div class="gl-display-flex gl-justify-content-space-between gl-align-items-center gl-py-5">
- <h4 class="gl-m-0">
- {{ $options.i18n.pageTitle }}
- </h4>
- <gl-button variant="confirm" :href="createPath" data-testid="new-deploy-key-button">{{
- $options.i18n.newDeployKeyButtonText
- }}</gl-button>
- </div>
- <template v-if="shouldShowTable">
- <gl-table
- :busy="loading"
- :items="items"
- :fields="$options.fields"
- stacked="lg"
- data-testid="deploy-keys-list"
- >
- <template #table-busy>
- <gl-loading-icon size="lg" class="gl-my-5" />
- </template>
+ <gl-card
+ class="gl-new-card gl-overflow-hidden"
+ header-class="gl-new-card-header"
+ body-class="gl-new-card-body gl-overflow-hidden gl-px-0"
+ >
+ <template #header>
+ <div class="gl-new-card-title-wrapper">
+ <h3 class="gl-new-card-title">{{ $options.i18n.pageTitle }}</h3>
+ <span class="gl-new-card-count">
+ <gl-icon name="key" class="gl-mr-2" />
+ {{ totalItems }}
+ </span>
+ </div>
+ <div class="gl-new-card-actions">
+ <gl-button size="small" :href="createPath" data-testid="new-deploy-key-button">{{
+ $options.i18n.newDeployKeyButtonText
+ }}</gl-button>
+ </div>
+ </template>
- <template #cell(projects)="{ item: { projects } }">
- <a
- v-for="project in projects"
- :key="project.id"
- :href="projectHref(project)"
- class="gl-display-block"
- >{{ project.name_with_namespace }}</a
- >
- </template>
+ <gl-table
+ v-if="shouldShowTable"
+ :busy="loading"
+ :items="items"
+ :fields="$options.fields"
+ stacked="md"
+ data-testid="deploy-keys-list"
+ class="gl-mt-n1 gl-mb-n2"
+ >
+ <template #table-busy>
+ <gl-loading-icon size="sm" class="gl-my-5" />
+ </template>
- <template #cell(fingerprint_sha256)="{ item: { fingerprint_sha256 } }">
- <span v-if="fingerprint_sha256" class="monospace">{{ fingerprint_sha256 }}</span>
- </template>
+ <template #cell(projects)="{ item: { projects } }">
+ <a
+ v-for="project in projects"
+ :key="project.id"
+ :href="projectHref(project)"
+ class="gl-display-block"
+ >{{ project.name_with_namespace }}</a
+ >
+ </template>
+ <template #cell(fingerprint_sha256)="{ item: { fingerprint_sha256 } }">
+ <div
+ v-if="fingerprint_sha256"
+ class="gl-font-monospace gl-text-truncate"
+ :title="fingerprint_sha256"
+ >
+ {{ fingerprint_sha256 }}
+ </div>
+ </template>
- <template #cell(fingerprint)="{ item: { fingerprint } }">
- <span v-if="fingerprint" class="monospace">{{ fingerprint }}</span>
- </template>
+ <template #cell(fingerprint)="{ item: { fingerprint } }">
+ <div v-if="fingerprint" class="gl-font-monospace gl-text-truncate" :title="fingerprint">
+ {{ fingerprint }}
+ </div>
+ </template>
- <template #cell(created)="{ item: { created } }">
- <time-ago-tooltip :time="created" />
- </template>
+ <template #cell(created)="{ item: { created } }">
+ <time-ago-tooltip :time="created" />
+ </template>
- <template #head(actions)="{ label }">
- <span class="gl-sr-only">{{ label }}</span>
- </template>
+ <template #head(actions)="{ label }">
+ <span class="gl-sr-only">{{ label }}</span>
+ </template>
- <template #cell(actions)="{ item: { id } }">
- <gl-button
- icon="pencil"
- :aria-label="$options.i18n.edit"
- :href="editHref(id)"
- class="gl-mr-2"
- />
- <gl-button
- variant="danger"
- icon="remove"
- :aria-label="$options.i18n.delete"
- @click="handleDeleteClick(id)"
- />
- </template>
- </gl-table>
- <gl-pagination
- v-if="!loading"
- v-model="page"
- :per-page="$options.DEFAULT_PER_PAGE"
- :total-items="totalItems"
- :next-text="$options.i18n.pagination.next"
- :prev-text="$options.i18n.pagination.prev"
- align="center"
- />
- </template>
+ <template #cell(actions)="{ item: { id } }">
+ <gl-button
+ icon="pencil"
+ size="small"
+ :aria-label="$options.i18n.edit"
+ :href="editHref(id)"
+ class="gl-mr-2"
+ />
+ <gl-button
+ variant="danger"
+ category="secondary"
+ icon="remove"
+ size="small"
+ :aria-label="$options.i18n.delete"
+ @click="handleDeleteClick(id)"
+ />
+ </template>
+ </gl-table>
<gl-empty-state
v-else
:svg-path="emptyStateSvgPath"
+ :svg-height="150"
:title="$options.i18n.emptyStateTitle"
:description="$options.i18n.emptyStateDescription"
- :primary-button-text="$options.i18n.newDeployKeyButtonText"
- :primary-button-link="createPath"
+ />
+ <gl-pagination
+ v-if="!loading"
+ v-model="page"
+ :per-page="$options.DEFAULT_PER_PAGE"
+ :total-items="totalItems"
+ :next-text="$options.i18n.pagination.next"
+ :prev-text="$options.i18n.pagination.prev"
+ align="center"
+ class="gl-mt-5"
/>
<gl-modal
:modal-id="$options.modal.id"
@@ -273,5 +307,5 @@ export default {
</form>
{{ $options.i18n.modal.body }}
</gl-modal>
- </div>
+ </gl-card>
</template>