UNPKG

@joist/element

Version:

Intelligently apply styles to WebComponents

165 lines 9.27 kB
import { __esDecorate, __runInitializers } from "tslib"; import { assert, expect } from "chai"; import { attr } from "./attr.js"; import { element } from "./element.js"; import { css, html } from "./tags.js"; it("should write default value to attribute", async () => { let MyElement = (() => { let _classDecorators = [element({ tagName: "element-1", })]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = HTMLElement; let _value1_decorators; let _value1_initializers = []; let _value1_extraInitializers = []; let _value2_decorators; let _value2_initializers = []; let _value2_extraInitializers = []; let _value3_decorators; let _value3_initializers = []; let _value3_extraInitializers = []; let _value4_decorators; let _value4_initializers = []; let _value4_extraInitializers = []; var MyElement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; _value1_decorators = [attr()]; _value2_decorators = [attr()]; _value3_decorators = [attr()]; _value4_decorators = [attr({ reflect: false })]; __esDecorate(this, null, _value1_decorators, { kind: "accessor", name: "value1", static: false, private: false, access: { has: obj => "value1" in obj, get: obj => obj.value1, set: (obj, value) => { obj.value1 = value; } }, metadata: _metadata }, _value1_initializers, _value1_extraInitializers); __esDecorate(this, null, _value2_decorators, { kind: "accessor", name: "value2", static: false, private: false, access: { has: obj => "value2" in obj, get: obj => obj.value2, set: (obj, value) => { obj.value2 = value; } }, metadata: _metadata }, _value2_initializers, _value2_extraInitializers); __esDecorate(this, null, _value3_decorators, { kind: "accessor", name: "value3", static: false, private: false, access: { has: obj => "value3" in obj, get: obj => obj.value3, set: (obj, value) => { obj.value3 = value; } }, metadata: _metadata }, _value3_initializers, _value3_extraInitializers); __esDecorate(this, null, _value4_decorators, { kind: "accessor", name: "value4", static: false, private: false, access: { has: obj => "value4" in obj, get: obj => obj.value4, set: (obj, value) => { obj.value4 = value; } }, metadata: _metadata }, _value4_initializers, _value4_extraInitializers); __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); MyElement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } #value1_accessor_storage = __runInitializers(this, _value1_initializers, "hello"); get value1() { return this.#value1_accessor_storage; } set value1(value) { this.#value1_accessor_storage = value; } #value2_accessor_storage = (__runInitializers(this, _value1_extraInitializers), __runInitializers(this, _value2_initializers, 0)); get value2() { return this.#value2_accessor_storage; } set value2(value) { this.#value2_accessor_storage = value; } #value3_accessor_storage = (__runInitializers(this, _value2_extraInitializers), __runInitializers(this, _value3_initializers, true)); get value3() { return this.#value3_accessor_storage; } set value3(value) { this.#value3_accessor_storage = value; } #value4_accessor_storage = (__runInitializers(this, _value3_extraInitializers), __runInitializers(this, _value4_initializers, "foo")); get value4() { return this.#value4_accessor_storage; } set value4(value) { this.#value4_accessor_storage = value; } constructor() { super(...arguments); __runInitializers(this, _value4_extraInitializers); } }; return MyElement = _classThis; })(); const el = new MyElement(); document.body.append(el); expect(el.getAttribute("value1")).to.equal("hello"); expect(el.getAttribute("value2")).to.equal("0"); expect(el.getAttribute("value3")).to.equal(""); expect(el.getAttribute("value4")).to.equal(null); el.remove(); }); it("should attach shadow root when the shadow property exists", async () => { let MyElement = (() => { let _classDecorators = [element({ tagName: "element-3", shadowDom: [], })]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = HTMLElement; var MyElement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); MyElement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } }; return MyElement = _classThis; })(); const el = new MyElement(); expect(el.shadowRoot).to.be.instanceOf(ShadowRoot); }); it("should apply html and css", async () => { let MyElement = (() => { let _classDecorators = [element({ tagName: "element-4", shadowDom: [ css ` :host { display: contents; } `, html `<slot></slot>`, { apply(el) { const div = document.createElement("div"); div.innerHTML = "hello world"; el.append(div); }, }, ], })]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = HTMLElement; var MyElement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); MyElement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } }; return MyElement = _classThis; })(); const el = new MyElement(); expect(el.shadowRoot?.adoptedStyleSheets.length).to.equal(1); expect(el.shadowRoot?.innerHTML).to.equal("<slot></slot>"); expect(el.innerHTML).to.equal("<div>hello world</div>"); }); it("should the correct shadow dom mode", async () => { let MyElement = (() => { let _classDecorators = [element({ tagName: "element-5", shadowDom: [], shadowDomOpts: { mode: "closed", }, })]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = HTMLElement; var MyElement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); MyElement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } }; return MyElement = _classThis; })(); const el = new MyElement(); assert.equal(el.shadowRoot, null); }); //# sourceMappingURL=element.test.js.map