Skip to content

Commit f95f4f9

Browse files
sghoweribmuenzenmeyerJosefBredereck
authored
UIKit Nav Cleanup (#1102)
* feat: upgrade to Preact v10 * refactor: break apart Nav into smaller more maintainable pieces; significantly reduce UI logic required under the hood * refactor: minor tweaks to Pattern State UI * fix: fix the drag offset of the drawer resizer * chore: update yarn.lock * refactor: rename root Nav component files * #1102 After merge fixes * fix: yarn lock after merge * fix: review findings in css and js * fix: remove unused code and reimplement utility func Co-authored-by: Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com> Co-authored-by: Josef Bredreck <slime.games@outlook.de> Co-authored-by: Josef Bredreck <13408112+JosefBredereck@users.noreply.github.com>
1 parent 31891cb commit f95f4f9

31 files changed

+3503
-3560
lines changed

packages/docs/src/_data/global.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module.exports = {
22
random() {
33
const segment = () => {
4+
// eslint-disable-next-line no-bitwise
45
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
56
};
67
return `${segment()}-${segment()}-${segment()}`;

packages/docs/src/filters/date-filter.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Stolen from https://stackoverflow.com/a/31615643
22
const appendSuffix = (n) => {
3-
var s = ['th', 'st', 'nd', 'rd'],
4-
v = n % 100;
3+
const s = ['th', 'st', 'nd', 'rd'];
4+
const v = n % 100;
55
return n + (s[(v - 20) % 10] || s[v] || s[0]);
66
};
77

packages/docs/src/js/components/theme-toggle.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class ThemeToggle extends HTMLElement {
2626
}
2727

2828
applySetting(passedSetting) {
29-
let currentSetting = passedSetting || localStorage.getItem(this.STORAGE_KEY);
29+
const currentSetting = passedSetting || localStorage.getItem(this.STORAGE_KEY);
3030

3131
if (currentSetting) {
3232
document.documentElement.setAttribute('data-user-color-scheme', currentSetting);

packages/docs/src/transforms/html-min-transform.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const htmlmin = require('html-minifier');
22

33
module.exports = function htmlMinTransform(value, outputPath) {
44
if (outputPath.indexOf('.html') > -1) {
5-
let minified = htmlmin.minify(value, {
5+
const minified = htmlmin.minify(value, {
66
useShortDoctype: true,
77
removeComments: true,
88
collapseWhitespace: true,

packages/uikit-workshop/package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,8 @@
7474
"mousetrap": "^1.6.5",
7575
"portfinder": "^1.0.28",
7676
"postcss-loader": "^3.0.0",
77-
"preact": "8.3.1",
78-
"preact-compat": "3.18.4",
79-
"preact-context": "1.1.2",
80-
"preact-render-to-string": "^4.1.0",
77+
"preact-render-to-string": "^5.1.1",
78+
"preact": "^10.0.5",
8179
"preload-webpack-plugin": "^3.0.0-beta.3",
8280
"pretty": "^2.0.0",
8381
"prismjs": "^1.25.0",

packages/uikit-workshop/src/sass/pattern-lab.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
/*------------------------------------*\
4444
#COMPONENTS
4545
\*------------------------------------*/
46-
@import '../scripts/components/pl-nav/pl-nav.scss';
46+
@import '../scripts/components/pl-nav/index.scss';
4747
@import '../scripts/components/pl-search/pl-search.scss';
4848
@import 'scss/04-components/annotations';
4949
@import 'scss/04-components/annotations-inside-modal';

packages/uikit-workshop/src/sass/scss/04-components/_pattern-states.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
.pl-c-pattern-state {
1010
width: 0.5em;
1111
height: 0.5em;
12-
margin-bottom: 0.25em;
1312
margin-left: 0.5em;
1413
border-radius: 50%;
14+
display: inline-block;
1515
background-color: $pl-color-state-info;
1616

1717
&--complete {

packages/uikit-workshop/src/sass/scss/05-themes/_sidebar-theme.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
flex-direction: column; /* 3 */
2323
border-bottom: 0; /* 4 */
2424
justify-content: space-between;
25+
--nav-item-height: 2.5rem;
2526
}
2627

2728
/**

packages/uikit-workshop/src/scripts/components/base-skate-preact-element.js

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,7 @@ import { SkateElement } from './base-skate-element';
1616

1717
/** @jsx h */
1818

19-
import preact, { h, render } from 'preact';
20-
21-
// TODO make this a Symbol() when it's supported.
22-
const preactNodeName = '__preactNodeName';
23-
24-
let oldVnode;
25-
26-
function newVnode(vnode) {
27-
const fn = vnode.nodeName;
28-
if (fn && fn.prototype instanceof HTMLElement) {
29-
if (!fn[preactNodeName]) {
30-
const prefix = fn.name;
31-
customElements.define(
32-
(fn[preactNodeName] = name(prefix)),
33-
class extends fn {}
34-
);
35-
}
36-
vnode.nodeName = fn[preactNodeName];
37-
}
38-
return vnode;
39-
}
40-
41-
function setupPreact() {
42-
oldVnode = preact.options.vnode;
43-
preact.options.vnode = newVnode;
44-
}
45-
46-
function teardownPreact() {
47-
preact.options.vnode = oldVnode;
48-
}
19+
import { h, render } from 'preact';
4920

5021
export class SkatePreactElement extends SkateElement {
5122
get props() {
@@ -55,23 +26,16 @@ export class SkatePreactElement extends SkateElement {
5526
}
5627

5728
renderer(root, call) {
58-
setupPreact();
5929
this._renderRoot = root;
60-
this._preactDom = render(
61-
call(),
62-
root,
63-
this._preactDom || root.childNodes[0]
64-
);
65-
teardownPreact();
30+
render(call(), root);
6631
}
6732

6833
disconnectedCallback() {
6934
this.disconnecting && this.disconnecting();
7035
super.disconnectedCallback && super.disconnectedCallback();
7136
this.disconnected && this.disconnected();
7237
// Render null to unmount. See https://github.com/skatejs/skatejs/pull/1432#discussion_r183381359
73-
this._preactDom = render(null, this._renderRoot, this._preactDom);
74-
this._renderRoot = null;
38+
render(null, this._renderRoot);
7539

7640
this.__storeUnsubscribe && this.__storeUnsubscribe();
7741

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*------------------------------------*\
2+
#NAVIGATION
3+
\*------------------------------------*/
4+
5+
@import './nav.scss';
6+
@import './nav-link.scss';
7+
@import './nav-list.scss';
8+
@import './nav-dropdown.scss';
9+
@import './nav-accordion.scss';

0 commit comments

Comments
 (0)