Skip to content

Commit 7b5b8e1

Browse files
committed
添加全屏显示
1 parent 6419265 commit 7b5b8e1

File tree

5 files changed

+177
-3
lines changed

5 files changed

+177
-3
lines changed

resources/assets/css/index.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
padding-right: 138px;
7777
height: 40px;
7878
border-bottom: 1px solid #e2e2e2;
79+
background: #fff;
7980
}
8081
.lake-admin .lake-admin-top-tabs-box .tab-right {
8182
background: #fff;

resources/assets/js/layui-extend/lake-admin/lakeAdmin.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* lakeAdmin.js v1.0.2
2+
* lakeAdmin.js v1.0.3
33
* https://github.com/deatil/lake-admin
44
*
55
* Apache License 2.0 © Deatil
@@ -330,6 +330,15 @@ layui.define([
330330

331331
$(document).find('div.lake-admin-contextmenu').remove();
332332
});
333+
334+
// 全屏显示
335+
$(document).on("click", ".lake-admin-page-fullscreen", function(e) {
336+
e.preventDefault();
337+
e.stopPropagation();
338+
339+
var el = document.getElementById('body_frame');
340+
screenfull.toggle(el);
341+
});
333342

334343
// 顶部鼠标移上显示
335344
var top_nav_layer_tips;

resources/assets/js/screenfull.js

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
/* eslint-disable promise/prefer-await-to-then */
2+
3+
const methodMap = [
4+
[
5+
'requestFullscreen',
6+
'exitFullscreen',
7+
'fullscreenElement',
8+
'fullscreenEnabled',
9+
'fullscreenchange',
10+
'fullscreenerror',
11+
],
12+
// New WebKit
13+
[
14+
'webkitRequestFullscreen',
15+
'webkitExitFullscreen',
16+
'webkitFullscreenElement',
17+
'webkitFullscreenEnabled',
18+
'webkitfullscreenchange',
19+
'webkitfullscreenerror',
20+
21+
],
22+
// Old WebKit
23+
[
24+
'webkitRequestFullScreen',
25+
'webkitCancelFullScreen',
26+
'webkitCurrentFullScreenElement',
27+
'webkitCancelFullScreen',
28+
'webkitfullscreenchange',
29+
'webkitfullscreenerror',
30+
31+
],
32+
[
33+
'mozRequestFullScreen',
34+
'mozCancelFullScreen',
35+
'mozFullScreenElement',
36+
'mozFullScreenEnabled',
37+
'mozfullscreenchange',
38+
'mozfullscreenerror',
39+
],
40+
[
41+
'msRequestFullscreen',
42+
'msExitFullscreen',
43+
'msFullscreenElement',
44+
'msFullscreenEnabled',
45+
'MSFullscreenChange',
46+
'MSFullscreenError',
47+
],
48+
];
49+
50+
const nativeAPI = (() => {
51+
if (typeof document === 'undefined') {
52+
return false;
53+
}
54+
55+
const unprefixedMethods = methodMap[0];
56+
const returnValue = {};
57+
58+
for (const methodList of methodMap) {
59+
const exitFullscreenMethod = methodList?.[1];
60+
if (exitFullscreenMethod in document) {
61+
for (const [index, method] of methodList.entries()) {
62+
returnValue[unprefixedMethods[index]] = method;
63+
}
64+
65+
return returnValue;
66+
}
67+
}
68+
69+
return false;
70+
})();
71+
72+
const eventNameMap = {
73+
change: nativeAPI.fullscreenchange,
74+
error: nativeAPI.fullscreenerror,
75+
};
76+
77+
// eslint-disable-next-line import/no-mutable-exports
78+
let screenfull = {
79+
// eslint-disable-next-line default-param-last
80+
request(element = document.documentElement, options) {
81+
return new Promise((resolve, reject) => {
82+
const onFullScreenEntered = () => {
83+
screenfull.off('change', onFullScreenEntered);
84+
resolve();
85+
};
86+
87+
screenfull.on('change', onFullScreenEntered);
88+
89+
const returnPromise = element[nativeAPI.requestFullscreen](options);
90+
91+
if (returnPromise instanceof Promise) {
92+
returnPromise.then(onFullScreenEntered).catch(reject);
93+
}
94+
});
95+
},
96+
exit() {
97+
return new Promise((resolve, reject) => {
98+
if (!screenfull.isFullscreen) {
99+
resolve();
100+
return;
101+
}
102+
103+
const onFullScreenExit = () => {
104+
screenfull.off('change', onFullScreenExit);
105+
resolve();
106+
};
107+
108+
screenfull.on('change', onFullScreenExit);
109+
110+
const returnPromise = document[nativeAPI.exitFullscreen]();
111+
112+
if (returnPromise instanceof Promise) {
113+
returnPromise.then(onFullScreenExit).catch(reject);
114+
}
115+
});
116+
},
117+
toggle(element, options) {
118+
return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);
119+
},
120+
onchange(callback) {
121+
screenfull.on('change', callback);
122+
},
123+
onerror(callback) {
124+
screenfull.on('error', callback);
125+
},
126+
on(event, callback) {
127+
const eventName = eventNameMap[event];
128+
if (eventName) {
129+
document.addEventListener(eventName, callback, false);
130+
}
131+
},
132+
off(event, callback) {
133+
const eventName = eventNameMap[event];
134+
if (eventName) {
135+
document.removeEventListener(eventName, callback, false);
136+
}
137+
},
138+
raw: nativeAPI,
139+
};
140+
141+
Object.defineProperties(screenfull, {
142+
isFullscreen: {
143+
get: () => Boolean(document[nativeAPI.fullscreenElement]),
144+
},
145+
element: {
146+
enumerable: true,
147+
get: () => document[nativeAPI.fullscreenElement] ?? undefined,
148+
},
149+
isEnabled: {
150+
enumerable: true,
151+
// Coerce to boolean in case of old WebKit.
152+
get: () => Boolean(document[nativeAPI.fullscreenEnabled]),
153+
},
154+
});
155+
156+
if (!nativeAPI) {
157+
screenfull = {isEnabled: false};
158+
}

resources/views/index/index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,11 @@
190190
<i class="iconfont icon-richangqingli"></i> 关闭全部
191191
</a>
192192
</dd>
193+
<dd>
194+
<a href="javascript:;" class="lake-admin-page-fullscreen" title="全屏显示">
195+
<i class="iconfont icon-fullscreen"></i> 全屏显示
196+
</a>
197+
</dd>
193198

194199
<hr>
195200

@@ -219,6 +224,7 @@
219224
</div>
220225
</div>
221226

227+
<script src="{:laket_assets('js/screenfull.js')}"></script>
222228
<script src="{:laket_assets('js/layui/layui.js')}"></script>
223229
{:do_action('admin_index_script_before')}
224230
<script type="text/javascript">

src/Admin.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ class Admin
1818
/**
1919
* 版本号
2020
*/
21-
const VERSION = "1.6.2";
21+
const VERSION = "1.6.3";
2222

2323
/**
2424
* 发布号
2525
*/
26-
const RELEASE = "20241126";
26+
const RELEASE = "20250110";
2727

2828
/**
2929
* 插件

0 commit comments

Comments
 (0)