ks-web-comp-nav 1.3.1 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/commands/template/v3/index.js +4 -0
- package/bin/commands/template/v4/composeNavigationStory.js +54 -0
- package/bin/commands/template/v4/createBrandTitle.js +11 -0
- package/bin/commands/template/v4/createMenuList.js +10 -0
- package/bin/commands/template/v4/createMenuToggleButton.js +14 -0
- package/bin/commands/template/v4/createNavigationBar.js +9 -0
- package/bin/commands/template/v4/createNavigationRow.js +9 -0
- package/bin/commands/template/v4/createNavigationWrapper.js +9 -0
- package/bin/commands/template/v4/index.js +37 -0
- package/bin/commands/template/v4/navDefaults.js +15 -0
- package/bin/commands/template/v4/navUsage.js +45 -0
- package/bin/commands/template/v4/readAttributeOrDefault.js +9 -0
- package/bin/commands/template/v4/readNavStoryFromElement.js +42 -0
- package/package.json +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import createBrandTitle from "./createBrandTitle.js";
|
|
2
|
+
import createMenuList from "./createMenuList.js";
|
|
3
|
+
import createMenuToggleButton from "./createMenuToggleButton.js";
|
|
4
|
+
import createNavigationBar from "./createNavigationBar.js";
|
|
5
|
+
import createNavigationRow from "./createNavigationRow.js";
|
|
6
|
+
import createNavigationWrapper from "./createNavigationWrapper.js";
|
|
7
|
+
import readNavStoryFromElement from "./readNavStoryFromElement.js";
|
|
8
|
+
|
|
9
|
+
const composeNavigationStory = ({ inElement }) => {
|
|
10
|
+
const story = readNavStoryFromElement({
|
|
11
|
+
inElement
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const nav = createNavigationBar({
|
|
15
|
+
inClassName: story.navClass
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const wrapper = createNavigationWrapper({
|
|
19
|
+
inClassName: story.outerClass
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const row = createNavigationRow({
|
|
23
|
+
inClassName: story.innerClass
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const brand = createBrandTitle({
|
|
27
|
+
inTitleId: story.titleId,
|
|
28
|
+
inTitle: story.title,
|
|
29
|
+
inClassName: story.brandClass
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const menu = createMenuList({
|
|
33
|
+
inClassName: story.menuClass,
|
|
34
|
+
inExtraClass: story.menuExtraClass
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const toggleButton = createMenuToggleButton({
|
|
38
|
+
inMenu: menu,
|
|
39
|
+
inClassName: story.buttonClass
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
row.append(
|
|
43
|
+
brand,
|
|
44
|
+
toggleButton,
|
|
45
|
+
menu
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
wrapper.appendChild(row);
|
|
49
|
+
nav.appendChild(wrapper);
|
|
50
|
+
|
|
51
|
+
return nav;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export default composeNavigationStory;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const createBrandTitle = ({ inTitleId, inTitle, inClassName }) => {
|
|
2
|
+
const brand = document.createElement("div");
|
|
3
|
+
|
|
4
|
+
brand.className = inClassName;
|
|
5
|
+
brand.id = inTitleId || "titlehtmlId";
|
|
6
|
+
brand.innerText = inTitle || "KeshavSoft";
|
|
7
|
+
|
|
8
|
+
return brand;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export default createBrandTitle;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const createMenuToggleButton = ({ inMenu, inClassName }) => {
|
|
2
|
+
const button = document.createElement("button");
|
|
3
|
+
|
|
4
|
+
button.className = inClassName;
|
|
5
|
+
button.innerText = "☰";
|
|
6
|
+
|
|
7
|
+
button.addEventListener("click", () => {
|
|
8
|
+
inMenu.classList.toggle("hidden");
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
return button;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default createMenuToggleButton;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import composeNavigationStory from "./composeNavigationStory.js";
|
|
2
|
+
import navDefaults from "./navDefaults.js";
|
|
3
|
+
import navUsage from "./navUsage.js";
|
|
4
|
+
|
|
5
|
+
class KSNav extends HTMLElement {
|
|
6
|
+
connectedCallback() {
|
|
7
|
+
if (this.dataset.rendered === "true") return;
|
|
8
|
+
|
|
9
|
+
this.dataset.rendered = "true";
|
|
10
|
+
|
|
11
|
+
this.appendChild(
|
|
12
|
+
composeNavigationStory({
|
|
13
|
+
inElement: this
|
|
14
|
+
})
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
KSNav.defaults = navDefaults;
|
|
20
|
+
KSNav.usage = navUsage;
|
|
21
|
+
|
|
22
|
+
customElements.define(
|
|
23
|
+
"ks-nav",
|
|
24
|
+
KSNav
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
window.KSNav = KSNav;
|
|
28
|
+
|
|
29
|
+
console.log("KSNav v3 loaded to DOM");
|
|
30
|
+
|
|
31
|
+
// export default KSNav;
|
|
32
|
+
// export {
|
|
33
|
+
// navDefaults,
|
|
34
|
+
// navUsage
|
|
35
|
+
// };
|
|
36
|
+
|
|
37
|
+
export default {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const navDefaults = {
|
|
2
|
+
navClass: "bg-gray-800 text-white",
|
|
3
|
+
outerClass: `mx-auto px-3 py-3
|
|
4
|
+
max-w-3xl
|
|
5
|
+
lg:max-w-5xl
|
|
6
|
+
xl:max-w-full xl:px-10`,
|
|
7
|
+
innerClass: "flex flex-wrap items-center justify-between",
|
|
8
|
+
brandClass: "text-xl font-semibold",
|
|
9
|
+
menuClass: `w-full hidden flex flex-col space-y-2 mt-4
|
|
10
|
+
md:flex md:flex-row md:space-y-0 md:gap-4
|
|
11
|
+
md:mt-0 md:w-auto md:flex-wrap`,
|
|
12
|
+
buttonClass: "text-xl px-4 py-1 md:hidden"
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default navDefaults;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import navDefaults from "./navDefaults.js";
|
|
2
|
+
|
|
3
|
+
const navUsage = {
|
|
4
|
+
tagName: "ks-nav",
|
|
5
|
+
attributes: {
|
|
6
|
+
title: {
|
|
7
|
+
name: "ks-title",
|
|
8
|
+
defaultValue: "KeshavSoft"
|
|
9
|
+
},
|
|
10
|
+
titleId: {
|
|
11
|
+
name: "ks-title-id",
|
|
12
|
+
defaultValue: "titlehtmlId"
|
|
13
|
+
},
|
|
14
|
+
navClass: {
|
|
15
|
+
name: "ks-nav-class",
|
|
16
|
+
defaultValue: navDefaults.navClass
|
|
17
|
+
},
|
|
18
|
+
outerClass: {
|
|
19
|
+
name: "ks-outer-class",
|
|
20
|
+
defaultValue: navDefaults.outerClass
|
|
21
|
+
},
|
|
22
|
+
innerClass: {
|
|
23
|
+
name: "ks-inner-class",
|
|
24
|
+
defaultValue: navDefaults.innerClass
|
|
25
|
+
},
|
|
26
|
+
brandClass: {
|
|
27
|
+
name: "ks-brand-class",
|
|
28
|
+
defaultValue: navDefaults.brandClass
|
|
29
|
+
},
|
|
30
|
+
menuClass: {
|
|
31
|
+
name: "ks-menu-class",
|
|
32
|
+
defaultValue: navDefaults.menuClass
|
|
33
|
+
},
|
|
34
|
+
menuExtraClass: {
|
|
35
|
+
name: "ks-ul-class",
|
|
36
|
+
defaultValue: ""
|
|
37
|
+
},
|
|
38
|
+
buttonClass: {
|
|
39
|
+
name: "ks-button-class",
|
|
40
|
+
defaultValue: navDefaults.buttonClass
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default navUsage;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import navDefaults from "./navDefaults.js";
|
|
2
|
+
import readAttributeOrDefault from "./readAttributeOrDefault.js";
|
|
3
|
+
|
|
4
|
+
const readNavStoryFromElement = ({ inElement }) => {
|
|
5
|
+
return {
|
|
6
|
+
navClass: readAttributeOrDefault({
|
|
7
|
+
inElement,
|
|
8
|
+
inName: "ks-nav-class",
|
|
9
|
+
inDefaultValue: navDefaults.navClass
|
|
10
|
+
}),
|
|
11
|
+
outerClass: readAttributeOrDefault({
|
|
12
|
+
inElement,
|
|
13
|
+
inName: "ks-outer-class",
|
|
14
|
+
inDefaultValue: navDefaults.outerClass
|
|
15
|
+
}),
|
|
16
|
+
innerClass: readAttributeOrDefault({
|
|
17
|
+
inElement,
|
|
18
|
+
inName: "ks-inner-class",
|
|
19
|
+
inDefaultValue: navDefaults.innerClass
|
|
20
|
+
}),
|
|
21
|
+
titleId: inElement.getAttribute("ks-title-id"),
|
|
22
|
+
title: inElement.getAttribute("ks-title"),
|
|
23
|
+
brandClass: readAttributeOrDefault({
|
|
24
|
+
inElement,
|
|
25
|
+
inName: "ks-brand-class",
|
|
26
|
+
inDefaultValue: navDefaults.brandClass
|
|
27
|
+
}),
|
|
28
|
+
menuClass: readAttributeOrDefault({
|
|
29
|
+
inElement,
|
|
30
|
+
inName: "ks-menu-class",
|
|
31
|
+
inDefaultValue: navDefaults.menuClass
|
|
32
|
+
}),
|
|
33
|
+
menuExtraClass: inElement.getAttribute("ks-ul-class"),
|
|
34
|
+
buttonClass: readAttributeOrDefault({
|
|
35
|
+
inElement,
|
|
36
|
+
inName: "ks-button-class",
|
|
37
|
+
inDefaultValue: navDefaults.buttonClass
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default readNavStoryFromElement;
|