UNPKG

@senx/discovery-widgets

Version:

Discovery Widgets Elements

159 lines (158 loc) 4.64 kB
/* * Copyright 2025 SenX S.A.S. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // alternate jquery function (subset) export class JQ { addClassSub(el, classes) { const classsList = classes.split(' '); for (const item of classsList) { el.classList.add(item.trim()); } } addClass(el, classes) { if (!el) { return; } if (typeof el.length === 'number') { for (const item of el) { this.addClassSub(item, classes); } } else { this.addClassSub(el, classes); } } findLast(el) { if (!el) { return null; } if (typeof el.length === 'number') { if (el.length > 0) { return el[el.length - 1]; } else { return null; } } else { return el; } } findSelectedOption(el) { if (!el || !el.options || !el.options.length) { return null; } for (const opt of el.options) { if (opt.selected) { return opt; } } return null; } getSelectorFromElement(el) { if (!el || !(el instanceof Element)) { return null; } let selector = el.nodeName.toLowerCase(); if (el.id) { return selector + '#' + el.id; } for (const clazz of el.classList) { selector += `.${clazz}`; } return selector; } html(el, html) { if (el) { el.innerHTML = html; } } offset(el) { if (!el) { return { top: 0, left: 0 }; } // Return zeros for disconnected and hidden (display: none) elements (gh-2310) // Support: IE <=11 only // Running getBoundingClientRect on a // disconnected node in IE throws an error if (!el.getClientRects().length) { return { top: 0, left: 0 }; } // Get document-relative position by adding viewport scroll to viewport-relative gBCR const rect = el.getBoundingClientRect(); const win = el.ownerDocument.defaultView; return { top: rect.top + win.pageYOffset, left: rect.left + win.pageXOffset, }; } offSub(el, event, listener) { if (typeof el.length === 'number') { for (const item of el) { item.removeEventListener(event, listener); } } else { el.removeEventListener(event, listener); } } off(el, event, param1, param2) { if (!el) { return; } if (typeof param1 === 'function') { // param is listener this.offSub(el, event, param1); } else { // param is selector if (typeof el.length === 'number') { for (const item of el) { this.offSub(item.querySelectorAll(param1), event, param2); } } else { this.offSub(el.querySelectorAll(param1), event, param2); } } } onSub(el, event, listener) { if (typeof el.length === 'number') { for (const item of el) { item.addEventListener(event, listener); } } else { el.addEventListener(event, listener); } } on(el, event, param1, param2) { if (!el) { return; } if (typeof param1 === 'function') { // param1 is listener this.onSub(el, event, param1); } else { // param1 is selector if (typeof el.length === 'number') { for (const item of el) { this.onSub(item.querySelectorAll(param1), event, param2); } } else { this.onSub(el.querySelectorAll(param1), event, param2); } } } } //# sourceMappingURL=jq.js.map