@joist/element
Version:
Intelligently apply styles to WebComponents
195 lines • 8.45 kB
JavaScript
import { __esDecorate, __runInitializers } from "tslib";
import { expect } from "chai";
import { element } from "./element.js";
import { queryAll } from "./query-all.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);
}
inputs = queryAll("input");
};
return MyElement = _classThis;
})();
const el = new MyElement();
expect(el.inputs()[0]).to.equal(el.shadowRoot?.querySelector("#fname"));
expect(el.inputs()[1]).to.equal(el.shadowRoot?.querySelector("#lname"));
});
it("should patch items when patch is returned", () => {
let MyElement = (() => {
let _classDecorators = [element({
tagName: "query-test-2",
shadowDom: [
html `
<form>
<input id="fname" name="fname" value="Danny" />
<input id="lname" name="lname" value="Blue" />
</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);
}
inputs = queryAll("input");
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.inputs((node) => {
if (node.id === "fname") {
return {
value: "Foo",
};
}
return null;
});
expect(el.shadowRoot?.querySelector("#fname")?.value).to.equal("Foo");
expect(el.shadowRoot?.querySelector("#lname")?.value).to.equal("Blue");
});
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);
}
inputs = queryAll("input");
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.inputs();
el.inputs((node) => {
if (node.id === "fname") {
return {
value: "Foo",
};
}
return {
value: "Bar",
};
});
expect(el.shadowRoot?.querySelector("#fname")?.value).to.equal("Foo");
expect(el.shadowRoot?.querySelector("#lname")?.value).to.equal("Bar");
});
it("should apply the same patch to all elements", () => {
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);
}
inputs = queryAll("input");
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.inputs({ value: "TEST" });
expect(el.shadowRoot?.querySelector("#fname")?.value).to.equal("TEST");
expect(el.shadowRoot?.querySelector("#lname")?.value).to.equal("TEST");
});
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);
}
inputs = queryAll("input", this);
};
return MyElement = _classThis;
})();
const el = new MyElement();
el.innerHTML = `
<form>
<input id="fname" name="fname" />
<input id="lname" name="lname" />
</form>
`;
expect(el.inputs()[0]).to.equal(el.querySelector("#fname"));
expect(el.inputs()[1]).to.equal(el.querySelector("#lname"));
});
//# sourceMappingURL=query-all.test.js.map