summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/environments/components/environments_app.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/environments/components/environments_app.vue')
-rw-r--r--app/assets/javascripts/environments/components/environments_app.vue144
1 files changed, 110 insertions, 34 deletions
diff --git a/app/assets/javascripts/environments/components/environments_app.vue b/app/assets/javascripts/environments/components/environments_app.vue
index f0e74d96f09..9bafc7ed153 100644
--- a/app/assets/javascripts/environments/components/environments_app.vue
+++ b/app/assets/javascripts/environments/components/environments_app.vue
@@ -1,28 +1,39 @@
<script>
-import { GlDeprecatedButton } from '@gitlab/ui';
+import { GlBadge, GlButton, GlModalDirective, GlTab, GlTabs } from '@gitlab/ui';
import { deprecatedCreateFlash as Flash } from '~/flash';
import { s__ } from '~/locale';
import emptyState from './empty_state.vue';
import eventHub from '../event_hub';
import environmentsMixin from '../mixins/environments_mixin';
import CIPaginationMixin from '~/vue_shared/mixins/ci_pagination_api_mixin';
-import EnableReviewAppButton from './enable_review_app_button.vue';
+import EnableReviewAppModal from './enable_review_app_modal.vue';
import StopEnvironmentModal from './stop_environment_modal.vue';
import DeleteEnvironmentModal from './delete_environment_modal.vue';
import ConfirmRollbackModal from './confirm_rollback_modal.vue';
export default {
+ i18n: {
+ newEnvironmentButtonLabel: s__('Environments|New environment'),
+ reviewAppButtonLabel: s__('Environments|Enable review app'),
+ },
+ modal: {
+ id: 'enable-review-app-info',
+ },
components: {
ConfirmRollbackModal,
emptyState,
- EnableReviewAppButton,
- GlDeprecatedButton,
+ EnableReviewAppModal,
+ GlBadge,
+ GlButton,
+ GlTab,
+ GlTabs,
StopEnvironmentModal,
DeleteEnvironmentModal,
},
-
+ directives: {
+ 'gl-modal': GlModalDirective,
+ },
mixins: [CIPaginationMixin, environmentsMixin],
-
props: {
endpoint: {
type: String,
@@ -124,43 +135,108 @@ export default {
};
</script>
<template>
- <div>
+ <div class="environments-section">
<stop-environment-modal :environment="environmentInStopModal" />
<delete-environment-modal :environment="environmentInDeleteModal" />
<confirm-rollback-modal :environment="environmentInRollbackModal" />
- <div class="top-area">
- <tabs :tabs="tabs" scope="environments" @onChangeTab="onChangeTab" />
-
- <div class="nav-controls">
- <enable-review-app-button v-if="state.reviewAppDetails.can_setup_review_app" class="mr-2" />
- <gl-deprecated-button
- v-if="canCreateEnvironment && !isLoading"
+ <div class="gl-w-full">
+ <div
+ class="
+ gl-display-flex
+ gl-flex-direction-column
+ gl-mt-3
+ gl-display-md-none!"
+ >
+ <gl-button
+ v-if="state.reviewAppDetails.can_setup_review_app"
+ v-gl-modal="$options.modal.id"
+ data-testid="enable-review-app"
+ variant="info"
+ category="secondary"
+ type="button"
+ class="gl-mb-3 gl-flex-fill-1"
+ >
+ {{ $options.i18n.reviewAppButtonLabel }}
+ </gl-button>
+ <gl-button
+ v-if="canCreateEnvironment"
:href="newEnvironmentPath"
+ data-testid="new-environment"
category="primary"
variant="success"
>
- {{ s__('Environments|New environment') }}
- </gl-deprecated-button>
+ {{ $options.i18n.newEnvironmentButtonLabel }}
+ </gl-button>
</div>
+ <gl-tabs content-class="gl-display-none">
+ <gl-tab
+ v-for="(tab, idx) in tabs"
+ :key="idx"
+ :title-item-class="`js-environments-tab-${tab.scope}`"
+ @click="onChangeTab(tab.scope)"
+ >
+ <template #title>
+ <span>{{ tab.name }}</span>
+ <gl-badge size="sm" class="gl-tab-counter-badge">{{ tab.count }}</gl-badge>
+ </template>
+ </gl-tab>
+ <template #tabs-end>
+ <div
+ class="
+ gl-display-none
+ gl-display-md-flex
+ gl-lg-align-items-center
+ gl-lg-flex-direction-row
+ gl-lg-flex-fill-1
+ gl-lg-justify-content-end
+ gl-lg-mt-0"
+ >
+ <gl-button
+ v-if="state.reviewAppDetails.can_setup_review_app"
+ v-gl-modal="$options.modal.id"
+ data-testid="enable-review-app"
+ variant="info"
+ category="secondary"
+ type="button"
+ class="gl-mb-3 gl-lg-mr-3 gl-lg-mb-0"
+ >
+ {{ $options.i18n.reviewAppButtonLabel }}
+ </gl-button>
+ <gl-button
+ v-if="canCreateEnvironment"
+ :href="newEnvironmentPath"
+ data-testid="new-environment"
+ category="primary"
+ variant="success"
+ >
+ {{ $options.i18n.newEnvironmentButtonLabel }}
+ </gl-button>
+ </div>
+ </template>
+ </gl-tabs>
+ <container
+ :is-loading="isLoading"
+ :environments="state.environments"
+ :pagination="state.paginationInformation"
+ :can-read-environment="canReadEnvironment"
+ :canary-deployment-feature-id="canaryDeploymentFeatureId"
+ :show-canary-deployment-callout="showCanaryDeploymentCallout"
+ :user-callouts-path="userCalloutsPath"
+ :lock-promotion-svg-path="lockPromotionSvgPath"
+ :help-canary-deployments-path="helpCanaryDeploymentsPath"
+ :deploy-boards-help-path="deployBoardsHelpPath"
+ @onChangePage="onChangePage"
+ >
+ <template v-if="!isLoading && state.environments.length === 0" #emptyState>
+ <empty-state :help-path="helpPagePath" />
+ </template>
+ </container>
+ <enable-review-app-modal
+ v-if="state.reviewAppDetails.can_setup_review_app"
+ :modal-id="$options.modal.id"
+ data-testid="enable-review-app-modal"
+ />
</div>
-
- <container
- :is-loading="isLoading"
- :environments="state.environments"
- :pagination="state.paginationInformation"
- :can-read-environment="canReadEnvironment"
- :canary-deployment-feature-id="canaryDeploymentFeatureId"
- :show-canary-deployment-callout="showCanaryDeploymentCallout"
- :user-callouts-path="userCalloutsPath"
- :lock-promotion-svg-path="lockPromotionSvgPath"
- :help-canary-deployments-path="helpCanaryDeploymentsPath"
- :deploy-boards-help-path="deployBoardsHelpPath"
- @onChangePage="onChangePage"
- >
- <template v-if="!isLoading && state.environments.length === 0" #emptyState>
- <empty-state :help-path="helpPagePath" />
- </template>
- </container>
</div>
</template>