| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import window from "./global/window";
- import Inputmask from "./inputmask";
- const document = window.document;
- // add check if it is supported by the browser
- // integrate shadowroot into maskcope
- if (
- document &&
- document.head &&
- document.head.attachShadow &&
- window.customElements &&
- window.customElements.get("input-mask") === undefined
- ) {
- class InputmaskElement extends HTMLElement {
- constructor() {
- super();
- const attributeNames = this.getAttributeNames(),
- shadow = this.attachShadow({ mode: "closed" });
- this.input = document.createElement("input");
- this.input.type = "text";
- shadow.appendChild(this.input);
- for (const attr in attributeNames) {
- if (Object.prototype.hasOwnProperty.call(attributeNames, attr)) {
- this.input.setAttribute(
- attributeNames[attr],
- this.getAttribute(attributeNames[attr])
- );
- }
- }
- const im = new Inputmask();
- im.dataAttribute = "";
- im.mask(this.input);
- this.input.inputmask.shadowRoot = shadow; // make the shadowRoot available
- }
- attributeChangedCallback(attrName, oldVal, newVal) {
- this.input.setAttribute(attrName, newVal);
- }
- // bind value
- get value() {
- return this.input.value;
- }
- set value(value) {
- this.input.value = value;
- }
- }
- window.customElements.define("input-mask", InputmaskElement);
- }
|