Skip to content

Commit cdb66a2

Browse files
authored
Merge pull request #45 from laravelcm/update-ui
Update UI
2 parents 74804e1 + 2d8e32c commit cdb66a2

File tree

19 files changed

+261
-314
lines changed

19 files changed

+261
-314
lines changed

public/css/app.css

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/js/app.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/js/app.js.LICENSE.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)
2+
* Fuse.js v3.4.6 - Lightweight fuzzy-search (http://fusejs.io)
33
*
44
* Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
55
* All Rights Reserved. Apache Software License 2.0
@@ -22,4 +22,4 @@ See the Apache Version 2.0 License for specific language governing permissions
2222
and limitations under the License.
2323
***************************************************************************** */
2424

25-
/*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
25+
/*! choices.js v9.1.0 | © 2021 Josh Johnson | https://github.com/jshjohnson/Choices#readme */

public/mix-manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"/js/app.js": "/js/app.js?id=1d8832a55a90910e91ad",
3-
"/css/app.css": "/css/app.css?id=543449437fc1da0337d7"
2+
"/js/app.js": "/js/app.js?id=3bd7a17ae8879cea08888521628605ff",
3+
"/css/app.css": "/css/app.css?id=89e4f1f71a090dfd4a24efae763e948f"
44
}

resources/css/app.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
@import "forms.css";
1212
@import "torchlight.css";
1313
@import "toc.css";
14-
@import "media-library.css";
15-
/*@import "rain.css";*/
14+
@import "header.css";
15+
/*@import "media-library.css";*/
1616
/*@import "christmas.css";*/
1717

1818
:root {

resources/css/header.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.header.is-fixed {
2+
@apply fixed inset-x-0 transform duration-300 bg-skin-menu/80 backdrop-blur;
3+
}
4+
5+
.header.is-hidden {
6+
transform: translateY(-100%);
7+
}

resources/css/rain.css

Lines changed: 0 additions & 117 deletions
This file was deleted.

resources/js/app.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import Alpine from 'alpinejs'
22
import intersect from '@alpinejs/intersect'
33

44
import internationalNumber from './plugins/internationalNumber'
5+
import { registerHeader } from './header'
56
import './elements'
67
import './helpers'
78
import './editor'
89
import './scrollspy'
9-
// import './rain'
10+
11+
registerHeader()
1012

1113
// Add Alpine to window object.
1214
window.Alpine = Alpine;

resources/js/header.js

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import { throttle } from '@helpers/timers'
2+
3+
let $header = document.querySelector('.header')
4+
let currentTop = 0
5+
let previousTop = 0
6+
let scrolling = false
7+
const scrollDelta = 20
8+
let scrollOffset = $header ? $header.offsetHeight : 0
9+
10+
// Les différents états possible du header
11+
const FIXED = 0
12+
const HIDDEN = 1
13+
const DEFAULT = 2
14+
let state = DEFAULT
15+
16+
/**
17+
* Fonction de changement d'état du header
18+
*
19+
* @param {number} newState
20+
*/
21+
function setState (newState) {
22+
// Le header n'a pas changé d'état
23+
if (newState === state) {
24+
return
25+
}
26+
27+
if (newState === HIDDEN) {
28+
$header.classList.add('is-hidden')
29+
} else if (newState === FIXED) {
30+
$header.classList.remove('is-hidden')
31+
$header.classList.add('is-fixed')
32+
} else if (newState === DEFAULT) {
33+
$header.classList.remove('is-hidden')
34+
$header.classList.remove('is-fixed')
35+
}
36+
37+
state = newState
38+
}
39+
40+
const autoHideHeader = function () {
41+
if (!$header) {
42+
return
43+
}
44+
currentTop = document.documentElement.scrollTop
45+
// Opacité sur le header
46+
if (currentTop > $header.offsetHeight) {
47+
if (currentTop - previousTop > scrollDelta && currentTop > scrollOffset) {
48+
setState(HIDDEN)
49+
} else if (previousTop - currentTop > scrollDelta) {
50+
setState(FIXED)
51+
}
52+
} else {
53+
setState(DEFAULT)
54+
}
55+
/**
56+
// Masquage / affichage
57+
if (previousTop - currentTop > scrollDelta) {
58+
$header.classList.remove('is-hidden')
59+
} else if (currentTop - previousTop > scrollDelta && currentTop > scrollOffset) {
60+
$header.classList.add('is-hidden')
61+
}
62+
**/
63+
previousTop = currentTop
64+
scrolling = false
65+
}
66+
67+
/**
68+
* Enregistre le comportement du header (fixed au scroll)
69+
* @return {function(): void}
70+
*/
71+
export function registerHeader () {
72+
const scrollListener = throttle(() => {
73+
if (!scrolling) {
74+
scrolling = true
75+
window.requestAnimationFrame(autoHideHeader)
76+
}
77+
}, 100)
78+
window.addEventListener('scroll', scrollListener)
79+
return () => {
80+
window.removeEventListener('scroll', scrollListener)
81+
}
82+
}

resources/js/helpers/timers.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Throttle un callback
3+
*/
4+
export function throttle(callback, delay) {
5+
let last;
6+
let timer;
7+
return function () {
8+
let context = this;
9+
let now = + new Date();
10+
let args = arguments;
11+
if (last && now < last + delay) {
12+
// le délai n'est pas écoulé on reset le timer
13+
clearTimeout(timer);
14+
timer = setTimeout(function () {
15+
last = now;
16+
callback.apply(context, args);
17+
}, delay);
18+
} else {
19+
last = now;
20+
callback.apply(context, args);
21+
}
22+
};
23+
}

0 commit comments

Comments
 (0)