Cristiano Magro
2025-01-07 0ff501d4aa28b64a11a3d9a6101e3f997a9e9795
commit | author | age
23ff5f 1 <template>
0ff501 2   <teleport to="body">
CM 3     <div @click="$emit('close')"></div>
4     <dialog open>
5       <header>
6         <slot name="header">
7           <h2>{{ title }}</h2>
8         </slot>
9       </header>
10       <section>
11         <slot></slot>
12       </section>
13       <menu>
14         <slot name="action">
15           <base-button @click="$emit('close')"></base-button>
16         </slot>
17       </menu>
18     </dialog>
19   </teleport>
23ff5f 20 </template>
CM 21
22 <script>
23 export default {
24   //   props: ['title'],
25   props: {
26     title: {
27       type: String,
28       required: false,
29     },
30   },
31   emits: ['close'],
32 };
33 </script>
34
35 <style scoped>
36 div {
37   position: fixed;
38   top: 0;
39   left: 0;
40   height: 100vh;
41   width: 100%;
42   background-color: rgba(0, 0, 0, 0.75);
43   z-index: 10;
44 }
45
46 dialog {
47   position: fixed;
48   top: 20vh;
49   left: 10%;
50   width: 80%;
51   z-index: 100;
52   border-radius: 12px;
53   border: none;
54   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
55   padding: 0;
56   margin: 0;
57   overflow: hidden;
58 }
59
60 header {
61   background-color: #3a0061;
62   color: white;
63   width: 100%;
64   padding: 1rem;
65 }
66
67 header h2 {
68   margin: 0;
69 }
70
71 section {
72   padding: 1rem;
73 }
74
75 menu {
76   padding: 1rem;
77   display: flex;
78   justify-content: flex-end;
79   margin: 0;
80 }
81
82 @media (min-width: 768px) {
83   dialog {
84     left: calc(50% - 20rem);
85     width: 40rem;
86   }
87 }
88 </style>