@nuralyui/dropdown 0.0.10 → 0.0.15
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/bundle.js +868 -0
- package/dropdown.component.d.ts +118 -0
- package/dropdown.component.js +376 -0
- package/dropdown.component.js.map +1 -0
- package/{hy-dropdown.style.d.ts → dropdown.style.d.ts} +1 -1
- package/dropdown.style.js +438 -0
- package/dropdown.style.js.map +1 -0
- package/dropdown.types.d.ts +83 -1
- package/dropdown.types.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +17 -6
- package/react.d.ts +6 -2
- package/react.js +9 -5
- package/react.js.map +1 -1
- package/demo/hy-dropdowns-demo.d.ts +0 -19
- package/demo/hy-dropdowns-demo.d.ts.map +0 -1
- package/demo/hy-dropdowns-demo.js +0 -205
- package/demo/hy-dropdowns-demo.js.map +0 -1
- package/dropdown.types.d.ts.map +0 -1
- package/hy-dropdown.component.d.ts +0 -30
- package/hy-dropdown.component.d.ts.map +0 -1
- package/hy-dropdown.component.js +0 -183
- package/hy-dropdown.component.js.map +0 -1
- package/hy-dropdown.style.d.ts.map +0 -1
- package/hy-dropdown.style.js +0 -47
- package/hy-dropdown.style.js.map +0 -1
- package/index.d.ts.map +0 -1
- package/react.d.ts.map +0 -1
- package/templates/hy-dropdown-item.d.ts +0 -12
- package/templates/hy-dropdown-item.d.ts.map +0 -1
- package/templates/hy-dropdown-item.js +0 -55
- package/templates/hy-dropdown-item.js.map +0 -1
- package/templates/hy-dropdown-item.style.d.ts +0 -2
- package/templates/hy-dropdown-item.style.d.ts.map +0 -1
- package/templates/hy-dropdown-item.style.js +0 -34
- package/templates/hy-dropdown-item.style.js.map +0 -1
- package/templates/hy-dropdown-menu.d.ts +0 -18
- package/templates/hy-dropdown-menu.d.ts.map +0 -1
- package/templates/hy-dropdown-menu.js +0 -70
- package/templates/hy-dropdown-menu.js.map +0 -1
- package/templates/hy-dropdown-menu.style.d.ts +0 -2
- package/templates/hy-dropdown-menu.style.d.ts.map +0 -1
- package/templates/hy-dropdown-menu.style.js +0 -49
- package/templates/hy-dropdown-menu.style.js.map +0 -1
- package/test/hy-dropdown_test.d.ts +0 -4
- package/test/hy-dropdown_test.d.ts.map +0 -1
- package/test/hy-dropdown_test.js +0 -132
- package/test/hy-dropdown_test.js.map +0 -1
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { css } from 'lit';
|
|
2
|
-
const dropdownItemStyle = css `
|
|
3
|
-
div {
|
|
4
|
-
padding: var(--hybrid-dropdown-padding);
|
|
5
|
-
cursor: pointer;
|
|
6
|
-
background-color: var(--hybrid-dropdown-background-color);
|
|
7
|
-
display: flex;
|
|
8
|
-
align-items: center;
|
|
9
|
-
color: var(--hybrid-dropdown-text-color);
|
|
10
|
-
font-size: var(--hybrid-dropdown-font-size, var(--hybrid-dropdown-font-size-local)); /* Default value added */
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
hy-icon {
|
|
14
|
-
display: flex;
|
|
15
|
-
}
|
|
16
|
-
:host(:not([disabled])) div:hover {
|
|
17
|
-
background-color: var(--hybrid-dropdown-hovered-background-color);
|
|
18
|
-
margin-left: -1px;
|
|
19
|
-
}
|
|
20
|
-
:host([disabled]) div {
|
|
21
|
-
background-color: var(--hybrid-dropdown-disabled-background-color);
|
|
22
|
-
cursor: not-allowed;
|
|
23
|
-
color: var(--hybrid-dropdown-disabled-text-color);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
:host(:not([icon])) .option-label {
|
|
27
|
-
padding-left: var(--hybrid-dropdown-only-text-padding-left);
|
|
28
|
-
}
|
|
29
|
-
:host([icon]) .option-label {
|
|
30
|
-
padding-left: var(--hybrid-dropdown-icon-and-text-padding-left);
|
|
31
|
-
}
|
|
32
|
-
`;
|
|
33
|
-
export const styles = [dropdownItemStyle];
|
|
34
|
-
//# sourceMappingURL=hy-dropdown-item.style.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown-item.style.js","sourceRoot":"","sources":["../../../../src/components/dropdown/templates/hy-dropdown-item.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B5B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst dropdownItemStyle = css`\n div {\n padding: var(--hybrid-dropdown-padding);\n cursor: pointer;\n background-color: var(--hybrid-dropdown-background-color);\n display: flex;\n align-items: center;\n color: var(--hybrid-dropdown-text-color);\n font-size: var(--hybrid-dropdown-font-size, var(--hybrid-dropdown-font-size-local)); /* Default value added */\n\n }\n hy-icon {\n display: flex;\n }\n :host(:not([disabled])) div:hover {\n background-color: var(--hybrid-dropdown-hovered-background-color);\n margin-left: -1px;\n }\n :host([disabled]) div {\n background-color: var(--hybrid-dropdown-disabled-background-color);\n cursor: not-allowed;\n color: var(--hybrid-dropdown-disabled-text-color);\n }\n\n :host(:not([icon])) .option-label {\n padding-left: var(--hybrid-dropdown-only-text-padding-left);\n }\n :host([icon]) .option-label {\n padding-left: var(--hybrid-dropdown-icon-and-text-padding-left);\n }\n`;\n\nexport const styles = [dropdownItemStyle];"]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
import { DropDownDirection } from '../dropdown.types';
|
|
3
|
-
export declare class HyDropdownMenu extends LitElement {
|
|
4
|
-
static styles: import("lit").CSSResult[];
|
|
5
|
-
menuOption: HTMLElement;
|
|
6
|
-
disabled: boolean;
|
|
7
|
-
icon: string;
|
|
8
|
-
label: string;
|
|
9
|
-
direction: DropDownDirection;
|
|
10
|
-
showChildren: boolean;
|
|
11
|
-
firstUpdated(): void;
|
|
12
|
-
onMouseEnterMenu: () => void;
|
|
13
|
-
onMouseLeaveMenu: () => void;
|
|
14
|
-
onClickMenu(menuClickEvent: Event): void;
|
|
15
|
-
disconnectedCallback(): void;
|
|
16
|
-
render(): import("lit").TemplateResult<1>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=hy-dropdown-menu.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown-menu.d.ts","sourceRoot":"","sources":["../../../../src/components/dropdown/templates/hy-dropdown-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,4BAAU;IAEhC,UAAU,EAAG,WAAW,CAAC;IAEzB,QAAQ,UAAS;IAEjB,IAAI,EAAG,MAAM,CAAC;IAEd,KAAK,EAAG,MAAM,CAAC;IAEf,SAAS,EAAG,iBAAiB,CAAC;IAE9B,YAAY,UAAS;IAEZ,YAAY,IAAI,IAAI;IAK7B,gBAAgB,aAEd;IACF,gBAAgB,aAEd;IACF,WAAW,CAAC,cAAc,EAAE,KAAK;IAIxB,oBAAoB,IAAI,IAAI;IAK5B,MAAM;CAWhB"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { LitElement, html, nothing } from 'lit';
|
|
8
|
-
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
9
|
-
import { styles } from './hy-dropdown-menu.style.js';
|
|
10
|
-
let HyDropdownMenu = class HyDropdownMenu extends LitElement {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments);
|
|
13
|
-
this.disabled = false;
|
|
14
|
-
this.showChildren = false;
|
|
15
|
-
this.onMouseEnterMenu = () => {
|
|
16
|
-
if (!this.disabled)
|
|
17
|
-
this.showChildren = true;
|
|
18
|
-
};
|
|
19
|
-
this.onMouseLeaveMenu = () => {
|
|
20
|
-
if (!this.disabled)
|
|
21
|
-
this.showChildren = false;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
firstUpdated() {
|
|
25
|
-
this.menuOption.addEventListener('mouseenter', this.onMouseEnterMenu);
|
|
26
|
-
this.menuOption.addEventListener('mouseleave', this.onMouseLeaveMenu);
|
|
27
|
-
}
|
|
28
|
-
onClickMenu(menuClickEvent) {
|
|
29
|
-
menuClickEvent.stopPropagation();
|
|
30
|
-
}
|
|
31
|
-
disconnectedCallback() {
|
|
32
|
-
this.menuOption.removeEventListener('mouseenter', this.onMouseEnterMenu);
|
|
33
|
-
this.menuOption.removeEventListener('mouseleave', this.onMouseLeaveMenu);
|
|
34
|
-
}
|
|
35
|
-
render() {
|
|
36
|
-
return html `<div @mousedown=${this.onClickMenu}>
|
|
37
|
-
${this.icon ? html `<hy-icon name=${this.icon}></hy-icon>` : nothing}
|
|
38
|
-
<hy-label class="menu-label"> ${this.label}</hy-label>
|
|
39
|
-
<hy-icon
|
|
40
|
-
name="${this.direction == "right" /* DropDownDirection.Right */ ? 'caret-right' : 'caret-left'}"
|
|
41
|
-
id="caret-icon"
|
|
42
|
-
></hy-icon>
|
|
43
|
-
<slot style="display:${this.showChildren ? 'block' : 'none'}"></slot>
|
|
44
|
-
</div>`;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
HyDropdownMenu.styles = styles;
|
|
48
|
-
__decorate([
|
|
49
|
-
query('div')
|
|
50
|
-
], HyDropdownMenu.prototype, "menuOption", void 0);
|
|
51
|
-
__decorate([
|
|
52
|
-
property({ reflect: true, type: Boolean })
|
|
53
|
-
], HyDropdownMenu.prototype, "disabled", void 0);
|
|
54
|
-
__decorate([
|
|
55
|
-
property({ reflect: true, type: String })
|
|
56
|
-
], HyDropdownMenu.prototype, "icon", void 0);
|
|
57
|
-
__decorate([
|
|
58
|
-
property()
|
|
59
|
-
], HyDropdownMenu.prototype, "label", void 0);
|
|
60
|
-
__decorate([
|
|
61
|
-
property({ reflect: true })
|
|
62
|
-
], HyDropdownMenu.prototype, "direction", void 0);
|
|
63
|
-
__decorate([
|
|
64
|
-
state()
|
|
65
|
-
], HyDropdownMenu.prototype, "showChildren", void 0);
|
|
66
|
-
HyDropdownMenu = __decorate([
|
|
67
|
-
customElement('hy-dropdown-menu')
|
|
68
|
-
], HyDropdownMenu);
|
|
69
|
-
export { HyDropdownMenu };
|
|
70
|
-
//# sourceMappingURL=hy-dropdown-menu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown-menu.js","sourceRoot":"","sources":["../../../../src/components/dropdown/templates/hy-dropdown-menu.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAA9C;;QAKE,aAAQ,GAAG,KAAK,CAAC;QAQjB,iBAAY,GAAG,KAAK,CAAC;QAOrB,qBAAgB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC/C,CAAC,CAAC;QACF,qBAAgB,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAChD,CAAC,CAAC;IAqBJ,CAAC;IA/BU,YAAY;QACnB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAQD,WAAW,CAAC,cAAqB;QAC/B,cAAc,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC;IAEQ,oBAAoB;QAC3B,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA,mBAAmB,IAAI,CAAC,WAAW;QAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,iBAAiB,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO;sCACnC,IAAI,CAAC,KAAK;;gBAEhC,IAAI,CAAC,SAAS,yCAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;;;6BAG3D,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;WACtD,CAAC;IACV,CAAC;CACF,CAAA;AA7CiB,qBAAM,GAAG,MAAO,CAAA;AAEhC;IADC,KAAK,CAAC,KAAK,CAAC;kDACY;AAEzB;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;gDACxB;AAEjB;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;4CAC1B;AAEd;IADC,QAAQ,EAAE;6CACI;AAEf;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;iDACI;AAE9B;IADC,KAAK,EAAE;oDACa;AAbV,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CA8C1B;SA9CY,cAAc","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './hy-dropdown-menu.style.js';\nimport { DropDownDirection } from '../dropdown.types';\n@customElement('hy-dropdown-menu')\nexport class HyDropdownMenu extends LitElement {\n static override styles = styles;\n @query('div')\n menuOption!: HTMLElement;\n @property({reflect: true, type: Boolean})\n disabled = false;\n @property({reflect: true, type: String})\n icon!: string;\n @property()\n label!: string;\n @property({reflect: true})\n direction!: DropDownDirection;\n @state()\n showChildren = false;\n\n override firstUpdated(): void {\n this.menuOption.addEventListener('mouseenter', this.onMouseEnterMenu);\n this.menuOption.addEventListener('mouseleave', this.onMouseLeaveMenu);\n }\n\n onMouseEnterMenu = () => {\n if (!this.disabled) this.showChildren = true;\n };\n onMouseLeaveMenu = () => {\n if (!this.disabled) this.showChildren = false;\n };\n onClickMenu(menuClickEvent: Event) {\n menuClickEvent.stopPropagation();\n }\n\n override disconnectedCallback(): void {\n this.menuOption.removeEventListener('mouseenter', this.onMouseEnterMenu);\n this.menuOption.removeEventListener('mouseleave', this.onMouseLeaveMenu);\n }\n\n override render() {\n return html`<div @mousedown=${this.onClickMenu}>\n ${this.icon ? html`<hy-icon name=${this.icon}></hy-icon>` : nothing}\n <hy-label class=\"menu-label\"> ${this.label}</hy-label>\n <hy-icon\n name=\"${this.direction == DropDownDirection.Right ? 'caret-right' : 'caret-left'}\"\n id=\"caret-icon\"\n ></hy-icon>\n <slot style=\"display:${this.showChildren ? 'block' : 'none'}\"></slot>\n </div>`;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown-menu.style.d.ts","sourceRoot":"","sources":["../../../../src/components/dropdown/templates/hy-dropdown-menu.style.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,MAAM,2BAAsB,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { css } from 'lit';
|
|
2
|
-
const dropdownMenuStyle = css `
|
|
3
|
-
div {
|
|
4
|
-
padding: var(--hybrid-dropdown-padding);
|
|
5
|
-
position: relative;
|
|
6
|
-
cursor: pointer;
|
|
7
|
-
background-color: var(--hybrid-dropdown-background-color);
|
|
8
|
-
display: flex;
|
|
9
|
-
align-items: center;
|
|
10
|
-
}
|
|
11
|
-
hy-icon {
|
|
12
|
-
display: flex;
|
|
13
|
-
}
|
|
14
|
-
#caret-icon {
|
|
15
|
-
flex-grow: 1;
|
|
16
|
-
justify-content: flex-end;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
:host(:not([disabled])) div:hover {
|
|
20
|
-
background-color: var(--hybrid-dropdown-hovered-background-color);
|
|
21
|
-
}
|
|
22
|
-
:host([disabled]) div {
|
|
23
|
-
cursor: not-allowed;
|
|
24
|
-
background-color: var(--hybrid-dropdown-disabled-background-color);
|
|
25
|
-
color: var(--hybrid-dropdown-disabled-text-color);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
::slotted(*) {
|
|
29
|
-
z-index: var(--hybrid-dropdown-menu-children-z-index);
|
|
30
|
-
top: var(--hybrid-dropdown-menu-children-top);
|
|
31
|
-
cursor: pointer;
|
|
32
|
-
}
|
|
33
|
-
:host([direction='left']) ::slotted(*) {
|
|
34
|
-
right: calc(var(--hybrid-dropdown-width) - var(--hybrid-dropdown-menu-children-offset));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
:host([direction='right']) ::slotted(*) {
|
|
38
|
-
left: calc(var(--hybrid-dropdown-width) - var(--hybrid-dropdown-menu-children-offset));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
:host(:not([icon])) .menu-label {
|
|
42
|
-
padding-left: var(--hybrid-dropdown-only-text-padding-left);
|
|
43
|
-
}
|
|
44
|
-
:host([icon]) .menu-label {
|
|
45
|
-
padding-left: var(--hybrid-dropdown-icon-and-text-padding-left);
|
|
46
|
-
}
|
|
47
|
-
`;
|
|
48
|
-
export const styles = [dropdownMenuStyle];
|
|
49
|
-
//# sourceMappingURL=hy-dropdown-menu.style.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown-menu.style.js","sourceRoot":"","sources":["../../../../src/components/dropdown/templates/hy-dropdown-menu.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C5B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["import {css} from 'lit';\n\nconst dropdownMenuStyle = css`\n div {\n padding: var(--hybrid-dropdown-padding);\n position: relative;\n cursor: pointer;\n background-color: var(--hybrid-dropdown-background-color);\n display: flex;\n align-items: center;\n }\n hy-icon {\n display: flex;\n }\n #caret-icon {\n flex-grow: 1;\n justify-content: flex-end;\n }\n\n :host(:not([disabled])) div:hover {\n background-color: var(--hybrid-dropdown-hovered-background-color);\n }\n :host([disabled]) div {\n cursor: not-allowed;\n background-color: var(--hybrid-dropdown-disabled-background-color);\n color: var(--hybrid-dropdown-disabled-text-color);\n }\n\n ::slotted(*) {\n z-index: var(--hybrid-dropdown-menu-children-z-index);\n top: var(--hybrid-dropdown-menu-children-top);\n cursor: pointer;\n }\n :host([direction='left']) ::slotted(*) {\n right: calc(var(--hybrid-dropdown-width) - var(--hybrid-dropdown-menu-children-offset));\n }\n\n :host([direction='right']) ::slotted(*) {\n left: calc(var(--hybrid-dropdown-width) - var(--hybrid-dropdown-menu-children-offset));\n }\n\n :host(:not([icon])) .menu-label {\n padding-left: var(--hybrid-dropdown-only-text-padding-left);\n }\n :host([icon]) .menu-label {\n padding-left: var(--hybrid-dropdown-icon-and-text-padding-left);\n }\n`;\n\nexport const styles = [dropdownMenuStyle];\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown_test.d.ts","sourceRoot":"","sources":["../../../../src/components/dropdown/test/hy-dropdown_test.ts"],"names":[],"mappings":"AACA,OAAO,0BAA0B,CAAC;AAIlC,OAAO,+BAA+B,CAAC;AAEvC,OAAO,+BAA+B,CAAC"}
|
package/test/hy-dropdown_test.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
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 '../hy-dropdown.component';
|
|
12
|
-
import '../templates/hy-dropdown-item';
|
|
13
|
-
import '../templates/hy-dropdown-menu';
|
|
14
|
-
const options = [
|
|
15
|
-
{ label: 'option1', value: 'value1' },
|
|
16
|
-
{ label: 'option4', value: 'value4', icon: 'bomb', disabled: true },
|
|
17
|
-
{
|
|
18
|
-
label: 'option8',
|
|
19
|
-
value: 'value8',
|
|
20
|
-
children: [
|
|
21
|
-
{
|
|
22
|
-
label: 'option9',
|
|
23
|
-
value: 'value9',
|
|
24
|
-
icon: 'bolt',
|
|
25
|
-
children: [{ label: 'option10', value: 'value10' }],
|
|
26
|
-
},
|
|
27
|
-
],
|
|
28
|
-
},
|
|
29
|
-
];
|
|
30
|
-
suite('HyDropdownComponent', () => {
|
|
31
|
-
test('should show dropdown on click when trigger is click', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
-
const el = yield fixture(html `<hy-dropdown .trigger=${"click" /* TriggerMode.Click */} .options=${options}></hy-dropdown>`);
|
|
33
|
-
const slot = el.shadowRoot.querySelector('slot');
|
|
34
|
-
slot.click();
|
|
35
|
-
expect(el.show).to.be.true;
|
|
36
|
-
slot.click();
|
|
37
|
-
expect(el.show).to.be.false;
|
|
38
|
-
}));
|
|
39
|
-
test('should show dropdown on hover when trigger is hover', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
const el = yield fixture(html `<hy-dropdown .trigger=${"hover" /* TriggerMode.Hover */} .options=${options}></hy-dropdown>`);
|
|
41
|
-
const slot = el.shadowRoot.querySelector('slot');
|
|
42
|
-
expect(el.show).to.be.false;
|
|
43
|
-
slot.dispatchEvent(new Event('mouseenter'));
|
|
44
|
-
expect(el.show).to.be.true;
|
|
45
|
-
}));
|
|
46
|
-
test('should hide dropdown on click outside when trigger is click', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
-
const el = yield fixture(html `<hy-dropdown .show=${true} .trigger=${"click" /* TriggerMode.Click */} .options=${options}></hy-dropdown>`);
|
|
48
|
-
expect(el.show).to.be.true;
|
|
49
|
-
window.dispatchEvent(new Event('click'));
|
|
50
|
-
expect(el.show).to.be.false;
|
|
51
|
-
}));
|
|
52
|
-
test('should hide dropdown on mouseleave dropdown', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
-
const el = yield fixture(html `<hy-dropdown .show=${true} .options=${options}></hy-dropdown>`);
|
|
54
|
-
const dropDownContainer = el.shadowRoot.querySelector('.dropdown-container');
|
|
55
|
-
expect(el.show).to.be.true;
|
|
56
|
-
dropDownContainer.dispatchEvent(new Event('mouseleave'));
|
|
57
|
-
expect(el.show).to.be.false;
|
|
58
|
-
}));
|
|
59
|
-
test('should hide dropdown on option click event', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
-
const el = yield fixture(html `
|
|
61
|
-
<hy-dropdown .show=${true} .options=${options}></hy-dropdown>
|
|
62
|
-
`);
|
|
63
|
-
const dropDownContainer = el.shadowRoot.querySelector('.dropdown-container');
|
|
64
|
-
expect(el.show).to.be.true;
|
|
65
|
-
dropDownContainer.dispatchEvent(new Event('click-item'));
|
|
66
|
-
expect(el.show).to.be.false;
|
|
67
|
-
}));
|
|
68
|
-
suite('hy-dropdown-item', () => {
|
|
69
|
-
test('dropdown item with icon and label', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
-
const iconName = 'bomb';
|
|
71
|
-
const labelText = 'label';
|
|
72
|
-
const el = yield fixture(html `<hy-dropdown-item icon="${iconName}" label="${labelText}"></hy-dropdown-item>`);
|
|
73
|
-
const icon = el.shadowRoot.querySelector('hy-icon');
|
|
74
|
-
const label = el.shadowRoot.querySelector('.option-label');
|
|
75
|
-
expect(icon).to.exist;
|
|
76
|
-
expect(icon.getAttribute('name')).to.equal(iconName);
|
|
77
|
-
expect(label).to.exist;
|
|
78
|
-
expect(label.textContent).to.equal(labelText);
|
|
79
|
-
}));
|
|
80
|
-
test('should dispatch click-item ', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
-
const el = yield fixture(html `<hy-dropdown-item label="Test Label" value="test-value"></hy-dropdown-item>`);
|
|
82
|
-
let clickItemDispatched = false;
|
|
83
|
-
el.addEventListener('click-item', () => {
|
|
84
|
-
clickItemDispatched = true;
|
|
85
|
-
});
|
|
86
|
-
el.shadowRoot.querySelector('div').click();
|
|
87
|
-
expect(clickItemDispatched).to.be.true;
|
|
88
|
-
}));
|
|
89
|
-
test('should not dispatch click-item event when disabled', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
-
const el = yield fixture(html `<hy-dropdown-item label="Test Label" value="test-value" disabled></hy-dropdown-item>`);
|
|
91
|
-
let clickItemDispatched = false;
|
|
92
|
-
el.addEventListener('click-item', () => {
|
|
93
|
-
clickItemDispatched = true;
|
|
94
|
-
});
|
|
95
|
-
el.shadowRoot.querySelector('div').click();
|
|
96
|
-
expect(clickItemDispatched).to.be.false;
|
|
97
|
-
}));
|
|
98
|
-
});
|
|
99
|
-
suite('hy-dropdown-menu', () => {
|
|
100
|
-
test('should show menu children on mouse enter and hide on mouse leave', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
-
const el = yield fixture(html `<hy-dropdown-menu label="Test Label"><div>Child Item</div></hy-dropdown-menu>`);
|
|
102
|
-
const div = el.shadowRoot.querySelector('div');
|
|
103
|
-
expect(el.showChildren).to.be.false;
|
|
104
|
-
expect(el.shadowRoot.querySelector('slot')).to.have.style('display', 'none');
|
|
105
|
-
div.dispatchEvent(new Event('mouseenter'));
|
|
106
|
-
yield el.updateComplete;
|
|
107
|
-
expect(el.showChildren).to.be.true;
|
|
108
|
-
expect(el.shadowRoot.querySelector('slot')).to.have.style('display', 'block');
|
|
109
|
-
div.dispatchEvent(new Event('mouseleave'));
|
|
110
|
-
expect(el.showChildren).to.be.false;
|
|
111
|
-
}));
|
|
112
|
-
test('should not show children if disabled', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
113
|
-
const el = yield fixture(html `<hy-dropdown-menu label="Test Label" disabled></hy-dropdown-menu>`);
|
|
114
|
-
const div = el.shadowRoot.querySelector('div');
|
|
115
|
-
expect(el.shadowRoot.querySelector('slot')).to.have.style('display', 'none');
|
|
116
|
-
div.dispatchEvent(new Event('mouseenter'));
|
|
117
|
-
expect(el.showChildren).to.be.false;
|
|
118
|
-
expect(el.shadowRoot.querySelector('slot')).to.not.have.style('display', 'block');
|
|
119
|
-
}));
|
|
120
|
-
test('should stop event propagation on click', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
121
|
-
const el = yield fixture(html `<hy-dropdown-menu label="Test Label"></hy-dropdown-menu>`);
|
|
122
|
-
const div = el.shadowRoot.querySelector('div');
|
|
123
|
-
let eventStopped = true;
|
|
124
|
-
window.addEventListener('click', () => {
|
|
125
|
-
eventStopped = false;
|
|
126
|
-
});
|
|
127
|
-
div.click();
|
|
128
|
-
expect(eventStopped).to.be.true;
|
|
129
|
-
}));
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
//# sourceMappingURL=hy-dropdown_test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hy-dropdown_test.js","sourceRoot":"","sources":["../../../../src/components/dropdown/test/hy-dropdown_test.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, fixture, expect} from '@open-wc/testing';\nimport '../hy-dropdown.component';\nimport {HyDropdownComponent} from '../hy-dropdown.component';\nimport {TriggerMode} from '../dropdown.types';\nimport {HyDropdownItem} from '../templates/hy-dropdown-item';\nimport '../templates/hy-dropdown-item';\nimport {HyDropdownMenu} from '../templates/hy-dropdown-menu';\nimport '../templates/hy-dropdown-menu';\n\nconst options = [\n {label: 'option1', value: 'value1'},\n {label: 'option4', value: 'value4', icon: 'bomb', disabled: true},\n {\n label: 'option8',\n value: 'value8',\n children: [\n {\n label: 'option9',\n value: 'value9',\n icon: 'bolt',\n children: [{label: 'option10', value: 'value10'}],\n },\n ],\n },\n];\nsuite('HyDropdownComponent', () => {\n test('should show dropdown on click when trigger is click', async () => {\n const el: HyDropdownComponent = await fixture(\n html`<hy-dropdown .trigger=${TriggerMode.Click} .options=${options}></hy-dropdown>`\n );\n const slot = el.shadowRoot!.querySelector('slot')!;\n slot.click();\n expect(el.show).to.be.true;\n slot.click();\n expect(el.show).to.be.false;\n });\n\n test('should show dropdown on hover when trigger is hover', async () => {\n const el: HyDropdownComponent = await fixture(\n html`<hy-dropdown .trigger=${TriggerMode.Hover} .options=${options}></hy-dropdown>`\n );\n const slot = el.shadowRoot!.querySelector('slot')!;\n expect(el.show).to.be.false;\n slot.dispatchEvent(new Event('mouseenter'));\n expect(el.show).to.be.true;\n });\n\n test('should hide dropdown on click outside when trigger is click', async () => {\n const el: HyDropdownComponent = await fixture(\n html`<hy-dropdown .show=${true} .trigger=${TriggerMode.Click} .options=${options}></hy-dropdown>`\n );\n expect(el.show).to.be.true;\n window.dispatchEvent(new Event('click'));\n expect(el.show).to.be.false;\n });\n test('should hide dropdown on mouseleave dropdown', async () => {\n const el: HyDropdownComponent = await fixture(html`<hy-dropdown .show=${true} .options=${options}></hy-dropdown>`);\n const dropDownContainer = el.shadowRoot!.querySelector('.dropdown-container') as HTMLElement;\n expect(el.show).to.be.true;\n dropDownContainer.dispatchEvent(new Event('mouseleave'));\n expect(el.show).to.be.false;\n });\n\n test('should hide dropdown on option click event', async () => {\n const el: HyDropdownComponent = await fixture(html`\n <hy-dropdown .show=${true} .options=${options}></hy-dropdown>\n `);\n const dropDownContainer: HTMLElement = el.shadowRoot!.querySelector('.dropdown-container')!;\n expect(el.show).to.be.true;\n dropDownContainer.dispatchEvent(new Event('click-item'));\n expect(el.show).to.be.false;\n });\n\n suite('hy-dropdown-item', () => {\n test('dropdown item with icon and label', async () => {\n const iconName = 'bomb';\n const labelText = 'label';\n const el: HyDropdownItem = await fixture(\n html`<hy-dropdown-item icon=\"${iconName}\" label=\"${labelText}\"></hy-dropdown-item>`\n );\n const icon = el.shadowRoot!.querySelector('hy-icon');\n const label = el.shadowRoot!.querySelector('.option-label');\n expect(icon).to.exist;\n expect(icon!.getAttribute('name')).to.equal(iconName);\n expect(label).to.exist;\n expect(label!.textContent).to.equal(labelText);\n });\n\n test('should dispatch click-item ', async () => {\n const el: HyDropdownItem = await fixture(\n html`<hy-dropdown-item label=\"Test Label\" value=\"test-value\"></hy-dropdown-item>`\n );\n let clickItemDispatched = false;\n el.addEventListener('click-item', () => {\n clickItemDispatched = true;\n });\n el.shadowRoot!.querySelector('div')!.click();\n expect(clickItemDispatched).to.be.true;\n });\n test('should not dispatch click-item event when disabled', async () => {\n const el: HyDropdownItem = await fixture(\n html`<hy-dropdown-item label=\"Test Label\" value=\"test-value\" disabled></hy-dropdown-item>`\n );\n let clickItemDispatched = false;\n el.addEventListener('click-item', () => {\n clickItemDispatched = true;\n });\n el.shadowRoot!.querySelector('div')!.click();\n expect(clickItemDispatched).to.be.false;\n });\n });\n suite('hy-dropdown-menu', () => {\n test('should show menu children on mouse enter and hide on mouse leave', async () => {\n const el: HyDropdownMenu = await fixture(\n html`<hy-dropdown-menu label=\"Test Label\"><div>Child Item</div></hy-dropdown-menu>`\n );\n const div = el.shadowRoot!.querySelector('div')!;\n expect(el.showChildren).to.be.false;\n expect(el.shadowRoot!.querySelector('slot')).to.have.style('display', 'none');\n div.dispatchEvent(new Event('mouseenter'));\n await el.updateComplete;\n expect(el.showChildren).to.be.true;\n expect(el.shadowRoot!.querySelector('slot')).to.have.style('display', 'block');\n div.dispatchEvent(new Event('mouseleave'));\n expect(el.showChildren).to.be.false;\n });\n\n test('should not show children if disabled', async () => {\n const el: HyDropdownMenu = await fixture(html`<hy-dropdown-menu label=\"Test Label\" disabled></hy-dropdown-menu>`);\n const div = el.shadowRoot!.querySelector('div')!;\n expect(el.shadowRoot!.querySelector('slot')).to.have.style('display', 'none');\n div.dispatchEvent(new Event('mouseenter'));\n expect(el.showChildren).to.be.false;\n expect(el.shadowRoot!.querySelector('slot')).to.not.have.style('display', 'block');\n });\n\n test('should stop event propagation on click', async () => {\n const el: HyDropdownMenu = await fixture(html`<hy-dropdown-menu label=\"Test Label\"></hy-dropdown-menu>`);\n const div = el.shadowRoot!.querySelector('div')!;\n let eventStopped = true;\n window.addEventListener('click', () => {\n eventStopped = false;\n });\n div.click();\n expect(eventStopped).to.be.true;\n });\n });\n});\n"]}
|