@nuralyui/dropdown 0.0.9 → 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.
Files changed (50) hide show
  1. package/bundle.js +868 -0
  2. package/dropdown.component.d.ts +118 -0
  3. package/dropdown.component.js +376 -0
  4. package/dropdown.component.js.map +1 -0
  5. package/{hy-dropdown.style.d.ts → dropdown.style.d.ts} +1 -1
  6. package/dropdown.style.js +438 -0
  7. package/dropdown.style.js.map +1 -0
  8. package/dropdown.types.d.ts +83 -1
  9. package/dropdown.types.js.map +1 -1
  10. package/index.d.ts +2 -1
  11. package/index.js +2 -1
  12. package/index.js.map +1 -1
  13. package/package.json +17 -6
  14. package/react.d.ts +6 -2
  15. package/react.js +9 -5
  16. package/react.js.map +1 -1
  17. package/demo/hy-dropdowns-demo.d.ts +0 -19
  18. package/demo/hy-dropdowns-demo.d.ts.map +0 -1
  19. package/demo/hy-dropdowns-demo.js +0 -205
  20. package/demo/hy-dropdowns-demo.js.map +0 -1
  21. package/dropdown.types.d.ts.map +0 -1
  22. package/hy-dropdown.component.d.ts +0 -30
  23. package/hy-dropdown.component.d.ts.map +0 -1
  24. package/hy-dropdown.component.js +0 -183
  25. package/hy-dropdown.component.js.map +0 -1
  26. package/hy-dropdown.style.d.ts.map +0 -1
  27. package/hy-dropdown.style.js +0 -47
  28. package/hy-dropdown.style.js.map +0 -1
  29. package/index.d.ts.map +0 -1
  30. package/react.d.ts.map +0 -1
  31. package/templates/hy-dropdown-item.d.ts +0 -12
  32. package/templates/hy-dropdown-item.d.ts.map +0 -1
  33. package/templates/hy-dropdown-item.js +0 -55
  34. package/templates/hy-dropdown-item.js.map +0 -1
  35. package/templates/hy-dropdown-item.style.d.ts +0 -2
  36. package/templates/hy-dropdown-item.style.d.ts.map +0 -1
  37. package/templates/hy-dropdown-item.style.js +0 -34
  38. package/templates/hy-dropdown-item.style.js.map +0 -1
  39. package/templates/hy-dropdown-menu.d.ts +0 -18
  40. package/templates/hy-dropdown-menu.d.ts.map +0 -1
  41. package/templates/hy-dropdown-menu.js +0 -70
  42. package/templates/hy-dropdown-menu.js.map +0 -1
  43. package/templates/hy-dropdown-menu.style.d.ts +0 -2
  44. package/templates/hy-dropdown-menu.style.d.ts.map +0 -1
  45. package/templates/hy-dropdown-menu.style.js +0 -49
  46. package/templates/hy-dropdown-menu.style.js.map +0 -1
  47. package/test/hy-dropdown_test.d.ts +0 -4
  48. package/test/hy-dropdown_test.d.ts.map +0 -1
  49. package/test/hy-dropdown_test.js +0 -132
  50. 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,2 +0,0 @@
1
- export declare const styles: import("lit").CSSResult[];
2
- //# sourceMappingURL=hy-dropdown-menu.style.d.ts.map
@@ -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,4 +0,0 @@
1
- import '../hy-dropdown.component';
2
- import '../templates/hy-dropdown-item';
3
- import '../templates/hy-dropdown-menu';
4
- //# sourceMappingURL=hy-dropdown_test.d.ts.map
@@ -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"}
@@ -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"]}