|
|
@@ -17,20 +17,27 @@
|
|
|
-->
|
|
|
|
|
|
<template>
|
|
|
- <transition name="modal">
|
|
|
- <div class="modal-mask">
|
|
|
- <div class="modal-wrapper">
|
|
|
- <div class="modal-container">
|
|
|
- <div class="modal-header">
|
|
|
- <slot name="header" />
|
|
|
- <i class="fa fa-times" aria-hidden="true" @click="$emit('close')" />
|
|
|
+ <transition name="hue-modal">
|
|
|
+ <div class="hue-modal-mask">
|
|
|
+ <div class="hue-modal-wrapper">
|
|
|
+ <div class="hue-modal-container">
|
|
|
+ <div class="hue-modal-header">
|
|
|
+ <h3>{{ header }}</h3>
|
|
|
+ <button
|
|
|
+ class="hue-modal-close-button"
|
|
|
+ type="button"
|
|
|
+ aria-label="{{ I18n('Close') }}"
|
|
|
+ @click="$emit('close')"
|
|
|
+ >
|
|
|
+ <span aria-hidden="true">×</span>
|
|
|
+ </button>
|
|
|
</div>
|
|
|
- <div class="modal-body">
|
|
|
+ <div class="hue-modal-body">
|
|
|
<slot name="body" />
|
|
|
</div>
|
|
|
- <div class="modal-footer">
|
|
|
+ <div class="hue-modal-footer">
|
|
|
<slot name="footer">
|
|
|
- <button class="modal-default-button" @click="$emit('close')">CLOSE</button>
|
|
|
+ <button class="hue-modal-default-button" @click="$emit('close')">CLOSE</button>
|
|
|
</slot>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -42,67 +49,18 @@
|
|
|
<script lang="ts">
|
|
|
import { defineComponent } from 'vue';
|
|
|
|
|
|
- // Based on https://vuejs.org/v2/examples/modal.html
|
|
|
+ import './Modal.scss';
|
|
|
+ import I18n from 'utils/i18n';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'Modal',
|
|
|
- emits: ['close']
|
|
|
+ props: {
|
|
|
+ header: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ emits: ['close'],
|
|
|
+ methods: { I18n }
|
|
|
});
|
|
|
</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>
|