jcore-ui
Version:
jcore-ui - components for building an interface
195 lines • 5.58 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JDom = exports.$ = void 0;
const createElement_1 = __importDefault(require("../utils/createElement"));
function $(element) {
const dom = new JDom(element);
if (dom.element) {
return dom;
}
return undefined;
}
exports.$ = $;
;
class JDom {
constructor(element) {
if (typeof element === 'string') {
if (element.indexOf('<') >= 0 && element.indexOf('>') >= 0) {
this.element = [createElement_1.default(element)];
}
else {
this.element = Array.from(document.querySelectorAll(element));
}
}
else if (element instanceof HTMLElement) {
this.element = [element];
}
else if (element instanceof NodeList) {
this.element = Array.from(element);
}
else if (Array.isArray(element)) {
this.element = element;
}
else if (element instanceof JDom && element.get()) {
this.element = [element.get()];
}
}
get(index = 0) {
return this.element[index];
}
getAll() {
return this.element;
}
find(element) {
if (typeof element !== 'string') {
return element;
}
return new JDom(this.get().querySelectorAll(element));
}
addClass(...classes) {
this.each(el => {
el.classList.add(...classes);
});
return this;
}
removeClass(...classes) {
this.each(el => {
el.classList.remove(...classes);
});
return this;
}
attr(attrs, value) {
if (value === null) {
if (typeof attrs === 'string') {
this.each(el => {
el.removeAttribute(attrs);
});
}
else if (Array.isArray(attrs)) {
for (let i = 0; i < attrs.length; i++) {
this.each(el => {
el.removeAttribute(attrs[i]);
});
}
}
}
else {
if (value === undefined) {
if (typeof attrs === 'string') {
return this.element[0].getAttribute(attrs);
}
else if (Array.isArray(attrs)) {
const needAttrs = {};
for (let i = 0; i < attrs.length; i++) {
needAttrs[attrs[i]] = this.element[0].getAttribute(attrs[i]);
}
return needAttrs;
}
else if (typeof attrs === 'object') {
for (const key in attrs) {
this.each(el => {
el.setAttribute(key, attrs[key]);
});
}
}
}
else {
if (typeof attrs === 'string') {
this.each(el => {
el.setAttribute(attrs, value);
});
}
else if (Array.isArray(attrs)) {
for (let i = 0; i < attrs.length; i++) {
this.each(el => {
el.setAttribute(attrs[i], value);
});
}
}
}
}
return this;
}
hasAttr(attrs) {
return this.element[0].hasAttribute(attrs);
}
on(type, listener, options) {
this.each(el => {
el.addEventListener(type, listener, options);
});
return this;
}
off(type, listener, options) {
this.each(el => {
el.removeEventListener(type, listener, options);
});
return this;
}
closest(selector) {
return new JDom(this.get().closest(selector));
}
each(callbackfn) {
this.element.forEach(callbackfn);
return this;
}
toggleAttribute(attr) {
this.each((el) => {
el.toggleAttribute(attr);
});
return this;
}
append(element) {
this.get().appendChild(element);
return this;
}
remove() {
this.each((el) => {
el.remove();
});
return this;
}
set text(text) {
this.each((el) => {
el.innerText = text;
});
}
get text() {
return this.get().innerText;
}
set html(html) {
this.each((el) => {
el.innerHTML = html;
});
}
get html() {
return this.get().innerHTML;
}
set value(val) {
this.each((el) => {
if (el instanceof HTMLInputElement) {
el.value = val;
}
});
}
get value() {
return this.get().value;
}
get dataset() {
return this.get().dataset;
}
get scrollHeight() {
return this.get().scrollHeight;
}
get style() {
return this.get().style;
}
get classList() {
return this.get().classList;
}
}
exports.JDom = JDom;
JDom.fn = JDom.prototype;
//# sourceMappingURL=JDom.js.map