@joist/element
Version:
Intelligently apply styles to WebComponents
188 lines • 8.37 kB
JavaScript
import { __esDecorate, __runInitializers } from "tslib";
import { expect } from "chai";
import { element } from "./element.js";
import { query } from "./query.js";
import { html } from "./tags.js";
it("should work", () => {
let MyElement = (() => {
let _classDecorators = [element({
tagName: "query-test-1",
shadowDom: [
html `
<form>
<input id="fname" name="fname" />
<input id="lname" name="lname" />
</form>
`,
],
})];
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);
}
fname = query("#fname");
lname = query("#lname");
};
return MyElement = _classThis;
})();
const el = new MyElement();
expect(el.fname()).to.equal(el.shadowRoot?.querySelector("#fname"));
expect(el.lname()).to.equal(el.shadowRoot?.querySelector("#lname"));
});
it("should patch the selected item", () => {
let MyElement = (() => {
let _classDecorators = [element({
tagName: "query-test-2",
shadowDom: [
html `
<form>
<input id="fname" name="fname" />
<input id="lname" name="lname" />
</form>
`,
],
})];
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);
}
fname = query("#fname");
lname = query("#lname");
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.fname({ value: "Foo" });
el.lname({ value: "Bar" });
expect(el.shadowRoot?.querySelector("#fname")?.value).to.equal("Foo");
expect(el.shadowRoot?.querySelector("#lname")?.value).to.equal("Bar");
});
it("should patch the selected item when cached", () => {
let MyElement = (() => {
let _classDecorators = [element({
tagName: "query-test-3",
shadowDom: [
html `
<form>
<input id="fname" name="fname" />
<input id="lname" name="lname" />
</form>
`,
],
})];
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);
}
fname = query("#fname");
lname = query("#lname");
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.fname();
el.lname();
el.fname({ value: "Foo" });
el.lname({ value: "Bar" });
expect(el.shadowRoot?.querySelector("#fname")?.value).to.equal("Foo");
expect(el.shadowRoot?.querySelector("#lname")?.value).to.equal("Bar");
});
it("should use function to update", () => {
let MyElement = (() => {
let _classDecorators = [element({
tagName: "query-test-4",
shadowDom: [
html `
<form>
<input id="fname" name="fname" />
<input id="lname" name="lname" />
</form>
`,
],
})];
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);
}
fname = query("#fname");
lname = query("#lname");
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.fname(() => ({ value: "Foo" }));
el.lname(() => ({ value: "Bar" }));
expect(el.shadowRoot?.querySelector("#fname")?.value).to.equal("Foo");
expect(el.shadowRoot?.querySelector("#lname")?.value).to.equal("Bar");
});
it("should use passed in root", () => {
let MyElement = (() => {
let _classDecorators = [element({
tagName: "query-test-5",
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);
}
fname = query("#fname", this);
lname = query("#lname", this);
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.innerHTML = `
<form>
<input id="fname" name="fname" />
<input id="lname" name="lname" />
</form>
`;
expect(el.fname()).to.equal(el.querySelector("#fname"));
expect(el.lname()).to.equal(el.querySelector("#lname"));
});
//# sourceMappingURL=query.test.js.map