@nuralyui/menu 0.0.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/demo/menus-demo.d.ts +22 -0
- package/demo/menus-demo.d.ts.map +1 -0
- package/demo/menus-demo.js +147 -0
- package/demo/menus-demo.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -0
- package/index.js +2 -0
- package/index.js.map +1 -0
- package/menu.component.d.ts +19 -0
- package/menu.component.d.ts.map +1 -0
- package/menu.component.js +109 -0
- package/menu.component.js.map +1 -0
- package/menu.constants.d.ts +12 -0
- package/menu.constants.d.ts.map +1 -0
- package/menu.constants.js +14 -0
- package/menu.constants.js.map +1 -0
- package/menu.style.d.ts +2 -0
- package/menu.style.d.ts.map +1 -0
- package/menu.style.js +86 -0
- package/menu.style.js.map +1 -0
- package/menu.types.d.ts +22 -0
- package/menu.types.d.ts.map +1 -0
- package/menu.types.js +2 -0
- package/menu.types.js.map +1 -0
- package/package.json +15 -0
- package/react.d.ts +3 -0
- package/react.d.ts.map +1 -0
- package/react.js +10 -0
- package/react.js.map +1 -0
- package/templates/hy-menu-link.d.ts +30 -0
- package/templates/hy-menu-link.d.ts.map +1 -0
- package/templates/hy-menu-link.js +123 -0
- package/templates/hy-menu-link.js.map +1 -0
- package/templates/hy-sub-menu.d.ts +26 -0
- package/templates/hy-sub-menu.d.ts.map +1 -0
- package/templates/hy-sub-menu.js +96 -0
- package/templates/hy-sub-menu.js.map +1 -0
- package/templates/menu-link.contants.d.ts +5 -0
- package/templates/menu-link.contants.d.ts.map +1 -0
- package/templates/menu-link.contants.js +6 -0
- package/templates/menu-link.contants.js.map +1 -0
- package/templates/menu-link.style.d.ts +2 -0
- package/templates/menu-link.style.d.ts.map +1 -0
- package/templates/menu-link.style.js +96 -0
- package/templates/menu-link.style.js.map +1 -0
- package/templates/sub-menu.style.d.ts +2 -0
- package/templates/sub-menu.style.d.ts.map +1 -0
- package/templates/sub-menu.style.js +81 -0
- package/templates/sub-menu.style.js.map +1 -0
- package/test/menu-link_test.d.ts +2 -0
- package/test/menu-link_test.d.ts.map +1 -0
- package/test/menu-link_test.js +85 -0
- package/test/menu-link_test.js.map +1 -0
- package/test/menu_test.d.ts +2 -0
- package/test/menu_test.d.ts.map +1 -0
- package/test/menu_test.js +81 -0
- package/test/menu_test.js.map +1 -0
- package/test/sub-menu_test.d.ts +2 -0
- package/test/sub-menu_test.d.ts.map +1 -0
- package/test/sub-menu_test.js +72 -0
- package/test/sub-menu_test.js.map +1 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { expect, fixture, html } from '@open-wc/testing';
|
|
11
|
+
import '../menu.component';
|
|
12
|
+
suite('HyMenuComponent', () => {
|
|
13
|
+
const mockMenuItems = [
|
|
14
|
+
{ text: ' link', link: 'menu.html', icon: 'user' },
|
|
15
|
+
{
|
|
16
|
+
text: 'first menu',
|
|
17
|
+
children: [
|
|
18
|
+
{ text: 'under the first menu', link: '', icon: 'user', iconPosition: 'right' },
|
|
19
|
+
{ text: 'selected menu', link: '', icon: 'user', selected: true },
|
|
20
|
+
{
|
|
21
|
+
text: 'under the first menu',
|
|
22
|
+
link: '',
|
|
23
|
+
icon: 'bomb',
|
|
24
|
+
children: [{ text: 'child of under the link', link: '', icon: 'user' }],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
disabled: false,
|
|
28
|
+
link: '',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
text: 'second menu',
|
|
32
|
+
children: [
|
|
33
|
+
{ text: 'under second menu', link: '', icon: 'warning' },
|
|
34
|
+
{ text: 'under second menu', link: '', icon: 'pencil' },
|
|
35
|
+
{
|
|
36
|
+
text: 'menu under second menu',
|
|
37
|
+
link: '',
|
|
38
|
+
icon: 'bomb',
|
|
39
|
+
children: [
|
|
40
|
+
{
|
|
41
|
+
text: 'children of menu under second menu',
|
|
42
|
+
link: '',
|
|
43
|
+
icon: 'book',
|
|
44
|
+
children: [
|
|
45
|
+
{ text: 'children of children of menu unser second menu', link: '', icon: 'book', iconPosition: 'right' },
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
disabled: false,
|
|
52
|
+
link: '',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
test('select the correct number of menu links and sub menus', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
const el = yield fixture(html `<hy-menu .items=${mockMenuItems}></hy-menu>`);
|
|
57
|
+
expect(el._menuLinks).to.have.length(7);
|
|
58
|
+
expect(el._subMenues).to.have.length(5);
|
|
59
|
+
}));
|
|
60
|
+
test('update the selected link', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
const el = yield fixture(html `<hy-menu .items=${mockMenuItems}></hy-menu>`);
|
|
62
|
+
const previousSelectedIndex = 2;
|
|
63
|
+
const newSelectedIndex = 1;
|
|
64
|
+
const event = new CustomEvent('selected-link', {
|
|
65
|
+
detail: { index: newSelectedIndex },
|
|
66
|
+
});
|
|
67
|
+
el._updateSelectedLink(event);
|
|
68
|
+
const selectedLink = el.shadowRoot.querySelectorAll('hy-menu-link')[newSelectedIndex];
|
|
69
|
+
expect(selectedLink).to.have.attribute('selected');
|
|
70
|
+
const previouslySelectedLink = el.shadowRoot.querySelectorAll('hy-menu-link')[previousSelectedIndex];
|
|
71
|
+
expect(previouslySelectedLink).to.not.have.attribute('selected');
|
|
72
|
+
}));
|
|
73
|
+
test('init highlighted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
+
const el = yield fixture(html `<hy-menu .items=${mockMenuItems}></hy-menu>`);
|
|
75
|
+
const subMenu = el.shadowRoot.querySelector('hy-sub-menu');
|
|
76
|
+
subMenu.setAttribute('highlighted', 'true');
|
|
77
|
+
el._handleInitHighlighted();
|
|
78
|
+
expect(subMenu).to.not.have.attribute('highlighted');
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=menu_test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu_test.js","sourceRoot":"","sources":["../../../../src/components/menu/test/menu_test.ts"],"names":[],"mappings":"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","sourcesContent":["import {expect, fixture, html} from '@open-wc/testing';\nimport '../menu.component';\nimport {HyMenuComponent} from '../menu.component';\nimport {IMenu} from '../menu.types';\n\nsuite('HyMenuComponent', () => {\n const mockMenuItems: IMenu[] = [\n {text: ' link', link: 'menu.html', icon: 'user'},\n {\n text: 'first menu',\n children: [\n {text: 'under the first menu', link: '', icon: 'user', iconPosition: 'right'},\n {text: 'selected menu', link: '', icon: 'user', selected: true},\n {\n text: 'under the first menu',\n link: '',\n icon: 'bomb',\n children: [{text: 'child of under the link', link: '', icon: 'user'}],\n },\n ],\n disabled: false,\n link: '',\n },\n {\n text: 'second menu',\n children: [\n {text: 'under second menu', link: '', icon: 'warning'},\n {text: 'under second menu', link: '', icon: 'pencil'},\n {\n text: 'menu under second menu',\n link: '',\n icon: 'bomb',\n children: [\n {\n text: 'children of menu under second menu',\n link: '',\n icon: 'book',\n children: [\n {text: 'children of children of menu unser second menu', link: '', icon: 'book', iconPosition: 'right'},\n ],\n },\n ],\n },\n ],\n disabled: false,\n link: '',\n },\n ];\n\n test('select the correct number of menu links and sub menus', async () => {\n const el: HyMenuComponent = await fixture(html`<hy-menu .items=${mockMenuItems}></hy-menu>`);\n\n expect(el._menuLinks).to.have.length(7);\n expect(el._subMenues).to.have.length(5);\n });\n\n test('update the selected link', async () => {\n const el: HyMenuComponent = await fixture(html`<hy-menu .items=${mockMenuItems}></hy-menu>`);\n const previousSelectedIndex = 2;\n const newSelectedIndex = 1;\n const event = new CustomEvent('selected-link', {\n detail: {index: newSelectedIndex},\n });\n el._updateSelectedLink(event);\n\n const selectedLink = el.shadowRoot!.querySelectorAll('hy-menu-link')[newSelectedIndex];\n expect(selectedLink).to.have.attribute('selected');\n const previouslySelectedLink = el.shadowRoot!.querySelectorAll('hy-menu-link')[previousSelectedIndex];\n expect(previouslySelectedLink).to.not.have.attribute('selected');\n });\n\n test('init highlighted', async () => {\n const el: HyMenuComponent = await fixture(html`<hy-menu .items=${mockMenuItems}></hy-menu>`);\n const subMenu = el.shadowRoot!.querySelector('hy-sub-menu')!;\n subMenu.setAttribute('highlighted', 'true');\n el._handleInitHighlighted();\n expect(subMenu).to.not.have.attribute('highlighted');\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-menu_test.d.ts","sourceRoot":"","sources":["../../../../src/components/menu/test/sub-menu_test.ts"],"names":[],"mappings":"AAEA,OAAO,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { html, fixture, expect } from '@open-wc/testing';
|
|
11
|
+
import '../templates/hy-sub-menu';
|
|
12
|
+
suite('HySubMenuComponent', () => {
|
|
13
|
+
test('init sub menu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const text = 'link';
|
|
16
|
+
const icon = 'bomb';
|
|
17
|
+
const el = yield fixture(html `<hy-sub-menu text=${text} icon=${icon}></hy-sub-menu>`);
|
|
18
|
+
const toggleIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#toggle-icon');
|
|
19
|
+
const textContainer = el.shadowRoot.querySelector('span');
|
|
20
|
+
const textIcon = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#text-icon');
|
|
21
|
+
expect(el.disabled).to.be.false;
|
|
22
|
+
expect(el.highlighted).to.be.false;
|
|
23
|
+
expect(el.text).to.equal(text);
|
|
24
|
+
expect(el.icon).to.equal(icon);
|
|
25
|
+
expect(el.isOpen).to.be.false;
|
|
26
|
+
expect(toggleIcon).to.have.attribute('name', 'angle-down');
|
|
27
|
+
expect(textContainer.textContent).to.equal(text);
|
|
28
|
+
expect(textIcon).to.have.attribute('name', icon);
|
|
29
|
+
}));
|
|
30
|
+
test('toggle sub menu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
var _c;
|
|
32
|
+
const el = yield fixture(html `<hy-sub-menu></hy-sub-menu>`);
|
|
33
|
+
const container = el.shadowRoot.querySelector('div');
|
|
34
|
+
const toggleIcon = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#toggle-icon');
|
|
35
|
+
container.click();
|
|
36
|
+
yield el.updateComplete;
|
|
37
|
+
expect(el.isOpen).to.be.true;
|
|
38
|
+
expect(toggleIcon).to.have.attribute('name', 'angle-up');
|
|
39
|
+
container.click();
|
|
40
|
+
yield el.updateComplete;
|
|
41
|
+
expect(el.isOpen).to.be.false;
|
|
42
|
+
expect(toggleIcon).to.have.attribute('name', 'angle-down');
|
|
43
|
+
}));
|
|
44
|
+
test('disabled sub menu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
const el = yield fixture(html `<hy-sub-menu disabled=${true}></hy-sub-menu>`);
|
|
46
|
+
const container = el.shadowRoot.querySelector('div');
|
|
47
|
+
expect(el.disabled).to.be.true;
|
|
48
|
+
container.click();
|
|
49
|
+
yield el.updateComplete;
|
|
50
|
+
expect(el.isOpen).to.be.false;
|
|
51
|
+
}));
|
|
52
|
+
test('sub menu with text only', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
const text = 'sub menu text';
|
|
54
|
+
const el = yield fixture(html `<hy-sub-menu text="${text}"></hy-sub-menu>`);
|
|
55
|
+
const icon = el.shadowRoot.querySelector('#text-icon');
|
|
56
|
+
const textContainer = el.shadowRoot.querySelector('span');
|
|
57
|
+
expect(icon).to.not.exist;
|
|
58
|
+
expect(textContainer.textContent).to.equal(text);
|
|
59
|
+
}));
|
|
60
|
+
test('highlight sub menu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
const el = yield fixture(html `<hy-sub-menu></hy-sub-menu>`);
|
|
62
|
+
let eventDispatched = false;
|
|
63
|
+
el.addEventListener('init-highlighted', () => {
|
|
64
|
+
eventDispatched = true;
|
|
65
|
+
});
|
|
66
|
+
expect(el.highlighted).to.be.false;
|
|
67
|
+
el._handleSelectedChild();
|
|
68
|
+
expect(eventDispatched).to.be.true;
|
|
69
|
+
expect(el.highlighted).to.be.true;
|
|
70
|
+
}));
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=sub-menu_test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-menu_test.js","sourceRoot":"","sources":["../../../../src/components/menu/test/sub-menu_test.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, fixture, expect} from '@open-wc/testing';\nimport {HySubMenu} from '../templates/hy-sub-menu';\nimport '../templates/hy-sub-menu';\n\nsuite('HySubMenuComponent', () => {\n test('init sub menu', async () => {\n const text = 'link';\n const icon = 'bomb';\n const el: HySubMenu = await fixture(html`<hy-sub-menu text=${text} icon=${icon}></hy-sub-menu>`);\n const toggleIcon = el.shadowRoot?.querySelector('#toggle-icon');\n const textContainer = el.shadowRoot!.querySelector('span')!;\n const textIcon = el.shadowRoot?.querySelector('#text-icon');\n expect(el.disabled).to.be.false;\n expect(el.highlighted).to.be.false;\n expect(el.text).to.equal(text);\n expect(el.icon).to.equal(icon);\n expect(el.isOpen).to.be.false;\n expect(toggleIcon).to.have.attribute('name', 'angle-down');\n expect(textContainer.textContent).to.equal(text);\n expect(textIcon).to.have.attribute('name', icon);\n });\n\n test('toggle sub menu', async () => {\n const el: HySubMenu = await fixture(html`<hy-sub-menu></hy-sub-menu>`);\n const container = el.shadowRoot!.querySelector('div')!;\n const toggleIcon = el.shadowRoot?.querySelector('#toggle-icon');\n container.click();\n await el.updateComplete;\n expect(el.isOpen).to.be.true;\n expect(toggleIcon).to.have.attribute('name', 'angle-up');\n container.click();\n await el.updateComplete;\n expect(el.isOpen).to.be.false;\n expect(toggleIcon).to.have.attribute('name', 'angle-down');\n });\n\n test('disabled sub menu', async () => {\n const el: HySubMenu = await fixture(html`<hy-sub-menu disabled=${true}></hy-sub-menu>`);\n const container = el.shadowRoot!.querySelector('div')!;\n expect(el.disabled).to.be.true;\n container.click();\n await el.updateComplete;\n expect(el.isOpen).to.be.false;\n });\n\n test('sub menu with text only', async () => {\n const text = 'sub menu text';\n const el: HySubMenu = await fixture(html`<hy-sub-menu text=\"${text}\"></hy-sub-menu>`);\n const icon = el.shadowRoot!.querySelector('#text-icon');\n const textContainer = el.shadowRoot!.querySelector('span')!;\n expect(icon).to.not.exist;\n expect(textContainer.textContent).to.equal(text);\n });\n\n test('highlight sub menu', async () => {\n const el: HySubMenu = await fixture(html`<hy-sub-menu></hy-sub-menu>`);\n let eventDispatched = false;\n el.addEventListener('init-highlighted', () => {\n eventDispatched = true;\n });\n expect(el.highlighted).to.be.false;\n\n el._handleSelectedChild();\n\n expect(eventDispatched).to.be.true;\n expect(el.highlighted).to.be.true;\n });\n});\n"]}
|