wj-elements
Version:
WebJET Elements is a modern set of user interface tools harnessing the power of web components designed to simplify web application development.
141 lines (140 loc) • 4 kB
JavaScript
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
import WJElement from "./wje-element.js";
const styles = "/*\n[ WJ Breadcrumbs ]\n*/\n\n:host {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n";
class Breadcrumbs extends WJElement {
/**
* Breadcrumbs constructor method.
* @class
*/
constructor() {
super();
/**
* Class name for the Breadcrumbs element.
* @type {string}
*/
__publicField(this, "className", "Breadcrumbs");
this.last = false;
}
/**
* Set variant attribute for the Breadcrumbs element.
* @param value
*/
set variant(value) {
this.setAttribute("variant", value);
}
/**
* Get variant attribute for the Breadcrumbs element.
* @returns {string}
*/
get variant() {
return this.getAttribute("variant") || "button";
}
/**
* Get items before collapse attribute.
* @param {string} value
*/
set maxItems(value) {
this.setAttribute("max-items", value || 0);
}
/**
* Get items before collapse attribute.
* @returns {number}
*/
get maxItems() {
return +this.getAttribute("max-items");
}
/**
* Get items before collapse attribute.
* @param value
*/
set itemsBeforeCollapse(value) {
this.setAttribute("items-before-collapse", value || 1);
}
/**
* Get items before collapse attribute.
* @returns {number}
*/
get itemsBeforeCollapse() {
return +this.getAttribute("items-before-collapse") || 1;
}
/**
* Get items after collapse attribute.
* @param value
*/
set itemsAfterCollapse(value) {
this.setAttribute("items-after-collapse", value || 1);
}
/**
* Get items after collapse attribute.
* @returns {number}
*/
get itemsAfterCollapse() {
return +this.getAttribute("items-after-collapse") || 1;
}
/**
* Get CSS stylesheet for the Breadcrumbs element.
* @static
* @returns {object} styles - The CSS styles
*/
static get cssStyleSheet() {
return styles;
}
/**
* Get observed attributes for the Breadcrumb element.
* @static
* @returns {Array<string>} - The observed attributes array for the Breadcrumb element.
*/
static get observedAttributes() {
return [];
}
/**
* Setup attributes for the Breadcrumbs element.
*/
setupAttributes() {
this.isShadowRoot = "open";
}
/**
* Draw method for the Breadcrumbs element.
* @returns {object} fragment - The document fragment
*/
draw() {
let fragment = document.createDocumentFragment();
let element = document.createElement("slot");
fragment.appendChild(element);
return fragment;
}
/**
* After draw method for the Breadcrumbs element.
*/
afterDraw() {
let breadcrumbs = this.getBreadcrumbs();
if (breadcrumbs.length === 0) return;
let breadcrumb = breadcrumbs.findLast((e) => e);
breadcrumb.setAttribute("last", true);
const shouldCollapse = this.maxItems !== void 0 && breadcrumbs.length > this.maxItems && this.itemsBeforeCollapse + this.itemsAfterCollapse <= this.maxItems;
if (shouldCollapse) {
breadcrumbs.forEach((b, index) => {
if (index === this.itemsBeforeCollapse) {
b.setAttribute("show-collapsed-indicator", true);
}
if (index >= this.itemsBeforeCollapse && index < breadcrumbs.length - this.itemsAfterCollapse) {
b.setAttribute("collapsed", true);
}
});
}
}
/**
* Get breadcrumbs method.
* @returns {Array} - The breadcrumbs array
*/
getBreadcrumbs() {
return Array.from(this.querySelectorAll("wje-breadcrumb")) || [];
}
}
Breadcrumbs.define("wje-breadcrumbs", Breadcrumbs);
export {
Breadcrumbs as default
};
//# sourceMappingURL=wje-breadcrumbs.js.map