{"version":3,"file":"showMore.js","sources":["../../sources/utils/function.js","../../sources/utils/regex.js","../../sources/utils/defaults.js","../../sources/index.js"],"sourcesContent":["/**\r\n * Get hidden element\r\n *\r\n * @param {object} object\r\n * @param {String} type - type of element table | div\r\n * @returns\r\n */\r\nconst getNumber = ({ rows, children }, type) => {\r\n const elementType = type === \"table\" ? rows : children;\r\n\r\n const numbersElementHidden = [].slice\r\n .call(elementType)\r\n .filter((el) => el.classList.contains(\"hidden\")).length;\r\n return numbersElementHidden !== 0 ? ` ${numbersElementHidden}` : \"\";\r\n};\r\n\r\n// https://stackoverflow.com/questions/6003271/substring-text-with-html-tags-in-javascript\r\n/**\r\n * Substring text width html tags\r\n *\r\n * @param {String} originalText - text with html tags\r\n * @param {String} count - limit of characters\r\n * @returns\r\n */\r\nconst htmlSubstr = (originalText, count) => {\r\n let div = createElement(\"div\");\r\n div.insertAdjacentHTML(\"afterbegin\", originalText);\r\n\r\n walk(div, track);\r\n\r\n function track(el) {\r\n if (count > 0) {\r\n let len = el.data.length;\r\n count -= len;\r\n if (count <= 0) {\r\n el.data = el.substringData(0, el.data.length + count);\r\n }\r\n } else {\r\n el.data = \"\";\r\n }\r\n }\r\n\r\n function walk(el, fn) {\r\n let node = el.firstChild;\r\n do {\r\n if (node.nodeType === 3) {\r\n fn(node);\r\n } else if (node.nodeType === 1 && node.childNodes && node.childNodes[0]) {\r\n walk(node, fn);\r\n }\r\n } while ((node = node.nextSibling));\r\n }\r\n return div.innerHTML;\r\n};\r\n\r\n/**\r\n * Add/remove class 'hidden' to element\r\n *\r\n * @param {HTMLElement} element\r\n * @param {String} type - type of element add or remove\r\n */\r\nconst addRemoveClass = (element, type = false) => {\r\n return element.classList[type ? \"add\" : \"remove\"](\"hidden\");\r\n};\r\n\r\n/**\r\n * Set attributes to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {Object} object\r\n */\r\nconst setAttributes = (el, object) => {\r\n for (let key in object) {\r\n el.setAttribute(key, object[key]);\r\n }\r\n};\r\n\r\n/**\r\n * Create element\r\n *\r\n * @param {String} type - type of element\r\n * @returns {HTMLElement}\r\n */\r\nconst createElement = (type) => document.createElement(type);\r\n\r\nexport { addRemoveClass, createElement, getNumber, htmlSubstr, setAttributes };\r\n","/**\r\n * Default regexes for validation\r\n */\r\nconst defaultRegex = {\r\n newLine: {\r\n match: /(\\r\\n|\\n|\\r)/gm,\r\n replace: \"\",\r\n },\r\n space: {\r\n match: /\\s\\s+/gm,\r\n replace: \" \",\r\n },\r\n br: {\r\n match: //gim,\r\n replace: \"\",\r\n },\r\n html: {\r\n match: /(<((?!b|\\/b|!strong|\\/strong)[^>]+)>)/gi,\r\n replace: \"\",\r\n },\r\n};\r\n\r\nexport default defaultRegex;\r\n","const defaultOptions = {\r\n typeElement: \"span\",\r\n more: false,\r\n less: false,\r\n number: false,\r\n nobutton: false,\r\n after: 0,\r\n btnClass: \"show-more-btn\",\r\n btnClassAppend: null,\r\n};\r\n\r\nexport default defaultOptions;\r\n","import {\r\n addRemoveClass,\r\n createElement,\r\n getNumber,\r\n htmlSubstr,\r\n setAttributes,\r\n} from \"./utils/function\";\r\nimport defaultRegex from \"./utils/regex\";\r\nimport defaultOptions from \"./utils/defaults\";\r\n\r\n/**\r\n * @class ShowMore\r\n */\r\nexport default class ShowMore {\r\n /**\r\n * Constructor\r\n *\r\n * @param {HTMLElement} className\r\n * @param {Object} object\r\n */\r\n constructor(className, { onMoreLess = () => {}, regex = {}, config } = {}) {\r\n // all html elements\r\n const elements = [].slice.call(document.querySelectorAll(className));\r\n\r\n // colback function\r\n this._onMoreLess = onMoreLess;\r\n\r\n // global regex\r\n this._regex = { ...defaultRegex, ...regex };\r\n\r\n elements.map((item, index) => {\r\n const configData = JSON.parse(item.getAttribute(\"data-config\"));\r\n const configGlobal = config;\r\n\r\n const configDataAndGlobal = { ...configGlobal, ...configData };\r\n\r\n this._object = {\r\n index,\r\n classArray: item.classList,\r\n ...defaultOptions,\r\n ...configDataAndGlobal,\r\n typeElement: configDataAndGlobal.element || \"span\",\r\n element: item,\r\n };\r\n\r\n this._initial();\r\n });\r\n }\r\n\r\n /**\r\n * Initail function\r\n *\r\n * @param {Object} object\r\n */\r\n _initial = () => {\r\n const { element, after, ellipsis, nobutton, limit, type } = this._object;\r\n // set default aria-expande to false\r\n setAttributes(element, { \"aria-expanded\": \"false\" });\r\n\r\n const limitCounts = limit + after;\r\n const ellips = ellipsis === false ? \"\" : \"...\";\r\n\r\n // console.log(nobutton);\r\n\r\n // text\r\n if (type === \"text\") {\r\n const originalText = element.innerHTML.trim();\r\n const elementText = element.textContent.trim();\r\n\r\n if (elementText.length > limitCounts) {\r\n let orgTexReg = originalText;\r\n\r\n for (let key in this._regex) {\r\n const { match, replace } = this._regex[key];\r\n if (key && match) orgTexReg = orgTexReg.replace(match, replace);\r\n }\r\n\r\n const truncatedText = htmlSubstr(orgTexReg, limit - 1).concat(ellips);\r\n\r\n element.textContent = \"\";\r\n element.insertAdjacentHTML(\"beforeend\", truncatedText);\r\n\r\n this._clickEvent(element, {\r\n ...this._object,\r\n originalText,\r\n truncatedText,\r\n });\r\n\r\n if (nobutton) return;\r\n this._addBtn(this._object);\r\n }\r\n }\r\n\r\n // list and table\r\n if (type === \"list\" || type === \"table\") {\r\n const items = this._getNumberCount(element, type);\r\n\r\n if (items.length > limitCounts) {\r\n for (let i = limit; i < items.length; i++) {\r\n addRemoveClass(items[i], true);\r\n }\r\n\r\n if (!nobutton) {\r\n // add button to the list and table\r\n this._addBtn(this._object);\r\n }\r\n\r\n // add event click\r\n this._clickEvent(\r\n type === \"list\" ? element : element.nextElementSibling,\r\n this._object\r\n );\r\n\r\n if (nobutton) return;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Event click\r\n *\r\n * @param {HTMLElement} element\r\n * @param {Object} object\r\n */\r\n _clickEvent = (element, object) =>\r\n element.addEventListener(\"click\", this._handleEvent.bind(this, object));\r\n\r\n /**\r\n * Create button\r\n *\r\n * @param {Object} object\r\n * @returns HTMLElement\r\n */\r\n _createBtn = ({\r\n element,\r\n number,\r\n less,\r\n more,\r\n type,\r\n btnClass,\r\n btnClassAppend,\r\n }) => {\r\n const typeAria = this._checkExp ? less || \"\" : more || \"\";\r\n const label = this._checkExp ? \"collapse\" : \"expand\";\r\n const expanded = this._checkExp ? true : false;\r\n\r\n const button = createElement(\"button\");\r\n button.className =\r\n btnClassAppend == null ? btnClass : btnClass + \" \" + btnClassAppend;\r\n setAttributes(button, {\r\n \"aria-expanded\": expanded,\r\n \"aria-label\": label,\r\n tabindex: 0,\r\n });\r\n\r\n button.insertAdjacentHTML(\r\n \"beforeend\",\r\n number ? typeAria + getNumber(element, type) : typeAria\r\n );\r\n\r\n return button;\r\n };\r\n\r\n /**\r\n * Event handler\r\n *\r\n * @param {Object} object\r\n * @param {Event} event\r\n */\r\n _handleEvent = (object, { target }) => {\r\n const {\r\n element,\r\n type,\r\n limit,\r\n less,\r\n typeElement,\r\n originalText,\r\n truncatedText,\r\n btnClass,\r\n } = object;\r\n\r\n // check if the button is clicked\r\n const checkContainsClass = target.classList.contains(btnClass);\r\n\r\n if (!checkContainsClass) return;\r\n\r\n const ariaExpanded = element.getAttribute(\"aria-expanded\");\r\n this._checkExp = ariaExpanded === \"false\";\r\n\r\n // --------------------------------------------------\r\n // text\r\n if (type === \"text\" && checkContainsClass) {\r\n element.textContent = \"\";\r\n\r\n element.insertAdjacentHTML(\r\n \"beforeend\",\r\n this._checkExp ? originalText : truncatedText\r\n );\r\n\r\n if (less) {\r\n const el = createElement(typeElement);\r\n el.classList.add(\"show-more-wrapper\");\r\n el.insertAdjacentElement(\"beforeend\", this._createBtn(object));\r\n element.appendChild(el);\r\n }\r\n }\r\n\r\n // --------------------------------------------------\r\n // list and table\r\n if (type === \"list\" || type === \"table\") {\r\n const items = this._getNumberCount(element, type);\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n const typeRemove =\r\n type === \"list\" ? i >= limit && i < items.length - 1 : i >= limit;\r\n\r\n if (ariaExpanded === \"false\") {\r\n addRemoveClass(items[i]);\r\n } else if (typeRemove) {\r\n addRemoveClass(items[i], true);\r\n }\r\n }\r\n }\r\n\r\n // set aria-expanded\r\n if (type) {\r\n this._setExpand({ ...object, target });\r\n }\r\n };\r\n\r\n _getNumberCount = (element, type) => {\r\n return type === \"list\" ? [].slice.call(element.children) : element.rows;\r\n };\r\n\r\n /**\r\n * Add button\r\n *\r\n * @param {Object} object\r\n */\r\n _addBtn = (object) => {\r\n const { type, element, more, typeElement } = object;\r\n\r\n if (!more) return;\r\n\r\n if (type === \"table\") {\r\n element.insertAdjacentElement(\"afterend\", this._createBtn(object));\r\n } else {\r\n const el = createElement(typeElement);\r\n el.classList.add(\"show-more-wrapper\");\r\n el.appendChild(this._createBtn(object));\r\n element.appendChild(el);\r\n }\r\n };\r\n\r\n /**\r\n * Set aria-expanded\r\n *\r\n * @param {Object} object\r\n */\r\n _setExpand = (object) => {\r\n const { element, type, less, more, number, target } = object;\r\n\r\n const typeAria = this._checkExp ? less : more;\r\n const aria = this._checkExp ? \"expand\" : \"collapse\";\r\n const ariaText = type === \"table\" ? type : `the ${type}`;\r\n const lastChild = element.lastElementChild;\r\n\r\n setAttributes(element, { \"aria-expanded\": this._checkExp });\r\n setAttributes(target, {\r\n \"aria-expanded\": this._checkExp,\r\n \"aria-label\": `${aria} ${ariaText}`,\r\n });\r\n\r\n // callback function on more/less\r\n this._onMoreLess(aria, object);\r\n\r\n if (typeAria) {\r\n target.innerHTML = number\r\n ? typeAria + getNumber(element, type)\r\n : typeAria;\r\n } else if (type === \"table\") {\r\n target.parentNode.removeChild(target);\r\n } else if (type === \"list\") {\r\n lastChild.parentNode.removeChild(lastChild);\r\n }\r\n };\r\n}\r\n"],"names":["getNumber","type","rows","children","elementType","numbersElementHidden","slice","call","filter","el","classList","contains","length","htmlSubstr","originalText","count","div","createElement","insertAdjacentHTML","walk","track","len","data","substringData","fn","node","firstChild","nodeType","childNodes","nextSibling","innerHTML","addRemoveClass","element","setAttributes","object","key","setAttribute","document","defaultRegex","newLine","match","replace","space","br","html","defaultOptions","typeElement","more","less","number","nobutton","after","btnClass","btnClassAppend","ShowMore","constructor","className","onMoreLess","regex","config","_initial","ellipsis","limit","_object","limitCounts","ellips","trim","elementText","textContent","orgTexReg","_regex","truncatedText","concat","_clickEvent","_addBtn","items","_getNumberCount","i","nextElementSibling","addEventListener","_handleEvent","bind","_createBtn","typeAria","_checkExp","label","expanded","button","tabindex","target","checkContainsClass","ariaExpanded","getAttribute","add","insertAdjacentElement","appendChild","typeRemove","_setExpand","aria","ariaText","lastChild","lastElementChild","_onMoreLess","parentNode","removeChild","elements","querySelectorAll","map","item","index","configData","JSON","parse","configGlobal","configDataAndGlobal","classArray"],"mappings":"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"}