PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.31
Booking for Appointments and Events Calendar – Amelia v1.2.31
2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / v3 / src / views / admin / parts / PageWrapper.vue
ameliabooking / v3 / src / views / admin / parts Last commit date
PageHeader.vue 1 year ago PageSidebar.vue 4 years ago PageWrapper.vue 3 years ago
PageWrapper.vue
143 lines
1 <template>
2 <div
3 ref="pageWrapperRef"
4 class="am-wrap"
5 :style="cssVars"
6 >
7 <div :id="pageId" class="am-body">
8 <el-affix class="am-page-header__fixed" :offset="wpAdminBarHeight">
9 <div id="am-page-header">
10 <slot name="header"></slot>
11 </div>
12 </el-affix>
13 <div class="am-wrapper">
14 <div class="am-wrapper-main">
15 <div id="am-page-filter">
16 <slot name="filter"></slot>
17 </div>
18 <slot></slot>
19 </div>
20
21 <el-affix v-if="customizePageWidth > 1124" :offset="(wpAdminBarHeight + 85)">
22 <div v-if="pageSlots.sidebar()[0].type.hasOwnProperty('name') && pageSlots.sidebar()[0].type.name.includes('Sidebar')" class="am-wrapper-sidebar">
23 <slot name="sidebar"></slot>
24 </div>
25 </el-affix>
26
27 <el-drawer v-if="customizePageWidth <= 1124" v-model="amDrawer" modal-class="am-dialog-cs" size="auto">
28 <div class="am-wrapper-sidebar">
29 <slot name="menu"></slot>
30 </div>
31 </el-drawer>
32 </div>
33 </div>
34 </div>
35 </template>
36
37 <script setup>
38 import {provide, useSlots, ref, computed, onMounted} from "vue";
39
40 defineProps({
41 pageId: {
42 type: String,
43 default: ''
44 },
45 pageClass: {
46 type: String,
47 default: ''
48 }
49 })
50
51 let pageWrapperRef = ref(null)
52
53 let customizePageWidth = ref(null)
54
55 provide('customizePageWidth', customizePageWidth)
56
57 onMounted(() => {
58 customizePageWidth.value = pageWrapperRef.value.offsetWidth
59 })
60
61 let pageSlots = useSlots()
62
63 let amDrawer = ref(false)
64
65 let wpPageWidth = ref(document.getElementById('wpcontent').offsetWidth)
66 let wpAdminBarHeight = ref(document.getElementById('wpadminbar').offsetHeight)
67 provide('wpAdminBarHeight', wpAdminBarHeight)
68
69 let cssVars = computed(() => {
70 let sidebarSlot = pageSlots.sidebar()[0].type
71 let sidebarExistence = Object.prototype.hasOwnProperty.call(sidebarSlot, 'name') && pageSlots.sidebar()[0].type.name.includes('Sidebar') && customizePageWidth.value > 1124
72
73 // am - amelia
74 // ph - page header
75 // w - width
76 // h - height
77 // psb - page sidebar
78 // p - page
79 return {
80 '--am-top-ph': `${wpAdminBarHeight.value}px`,
81 '--am-w-ph': `${wpPageWidth.value - 2}px`,
82 '--am-top-psb': `${wpAdminBarHeight.value + 85}px`,
83 '--am-h-psb': `calc(100vh - ${wpAdminBarHeight.value + 85}px)`,
84 '--am-w-p': sidebarExistence ? 'calc(100% - 398px)' : '100%'
85 }
86 })
87
88 window.addEventListener('resize', resize);
89 // * resize function
90 function resize() {
91 customizePageWidth.value = pageWrapperRef.value.offsetWidth
92 wpPageWidth.value = document.getElementById('wpcontent').offsetWidth
93 wpAdminBarHeight.value = document.getElementById('wpadminbar').offsetHeight
94 }
95
96 function openSidebarMenu () {
97 amDrawer.value = true
98 }
99
100 provide('pageVisual', {openSidebarMenu})
101 </script>
102
103 <script>
104 export default {
105 name: "PageWrapper"
106 }
107 </script>
108
109 <style lang="scss">
110 :root {
111 --am-page-width: calc(100% - 398px)
112 }
113
114 .am-wrap {
115 margin: 0 0 0 -18px;
116 @include media-breakpoint-down($am-small-max) {
117 margin: 0;
118 }
119 }
120
121 .am-wrapper {
122 display: flex;
123 flex-direction: row;
124 //margin-top: var(--am-top-psb);
125
126 * {
127 box-sizing: border-box;
128 }
129
130 &-main {
131 width: var(--am-w-p);
132 }
133
134 &-sidebar {
135 width: 398px;
136 height: var(--am-h-psb);
137 background-color: $am-white;
138 border-left: 1px solid $shade-250;
139 overflow-x: hidden;
140 z-index: 100;
141 }
142 }
143 </style>