|
@@ -0,0 +1,107 @@
|
|
|
|
|
+<!--
|
|
|
|
|
+ Licensed to Cloudera, Inc. under one
|
|
|
|
|
+ or more contributor license agreements. See the NOTICE file
|
|
|
|
|
+ distributed with this work for additional information
|
|
|
|
|
+ regarding copyright ownership. Cloudera, Inc. licenses this file
|
|
|
|
|
+ to you under the Apache License, Version 2.0 (the
|
|
|
|
|
+ "License"); you may not use this file except in compliance
|
|
|
|
|
+ with the License. You may obtain a copy of the License at
|
|
|
|
|
+
|
|
|
|
|
+ http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
+
|
|
|
|
|
+ Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
+ distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
+ See the License for the specific language governing permissions and
|
|
|
|
|
+ limitations under the License.
|
|
|
|
|
+-->
|
|
|
|
|
+
|
|
|
|
|
+<template>
|
|
|
|
|
+ <transition name="modal">
|
|
|
|
|
+ <div class="modal-mask">
|
|
|
|
|
+ <div class="modal-wrapper">
|
|
|
|
|
+ <div class="modal-container">
|
|
|
|
|
+ <div class="modal-header">
|
|
|
|
|
+ <slot name="header"></slot>
|
|
|
|
|
+ <i class="fa fa-times" aria-hidden="true" @click="$emit('close')"></i>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="modal-body">
|
|
|
|
|
+ <slot name="body"></slot>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="modal-footer">
|
|
|
|
|
+ <slot name="footer">
|
|
|
|
|
+ <button class="modal-default-button" @click="$emit('close')">CLOSE</button>
|
|
|
|
|
+ </slot>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </transition>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script lang="ts">
|
|
|
|
|
+ import Vue from 'vue';
|
|
|
|
|
+ import Component from 'vue-class-component';
|
|
|
|
|
+
|
|
|
|
|
+ // Based on https://vuejs.org/v2/examples/modal.html
|
|
|
|
|
+
|
|
|
|
|
+ @Component
|
|
|
|
|
+ export default class Modal extends Vue {}
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
|
+ .modal-mask {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ z-index: 9998;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ background-color: rgba(0, 0, 0, 0.5);
|
|
|
|
|
+ display: table;
|
|
|
|
|
+ transition: opacity 0.3s ease;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-wrapper {
|
|
|
|
|
+ display: table-cell;
|
|
|
|
|
+ vertical-align: middle;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-container {
|
|
|
|
|
+ width: 300px;
|
|
|
|
|
+ margin: 0px auto;
|
|
|
|
|
+ padding: 20px 30px;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ border-radius: 2px;
|
|
|
|
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.33);
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ font-family: Helvetica, Arial, sans-serif;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-header h3 {
|
|
|
|
|
+ margin-top: 0;
|
|
|
|
|
+ color: #42b983;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-body {
|
|
|
|
|
+ margin: 20px 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-default-button {
|
|
|
|
|
+ float: right;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-enter {
|
|
|
|
|
+ opacity: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-leave-active {
|
|
|
|
|
+ opacity: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .modal-enter .modal-container,
|
|
|
|
|
+ .modal-leave-active .modal-container {
|
|
|
|
|
+ -webkit-transform: scale(1.1);
|
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
|
+ }
|
|
|
|
|
+</style>
|