@livenetworks/ashlar 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -177
- package/js/COMPONENTS.md +55 -49
- package/js/index.js +22 -5
- package/js/ln-accordion/README.md +186 -137
- package/js/ln-accordion/ln-accordion.js +1 -1
- package/js/ln-ajax/README.md +73 -4
- package/js/ln-ajax/ln-ajax.js +1 -1
- package/js/ln-ajax/src/ln-ajax.js +13 -13
- package/js/ln-api-connector/README.md +261 -150
- package/js/ln-api-connector/ln-api-connector.js +1 -1
- package/js/ln-api-connector/src/ln-api-connector.js +368 -265
- package/js/ln-api-queue/README.md +219 -0
- package/js/ln-api-queue/ln-api-queue.js +1 -0
- package/js/ln-api-queue/src/ln-api-queue.js +320 -0
- package/js/ln-api-queue/src/queue-storage.js +455 -0
- package/js/ln-autoresize/README.md +47 -0
- package/js/ln-autoresize/ln-autoresize.js +1 -1
- package/js/ln-autosave/README.md +33 -1
- package/js/ln-autosave/ln-autosave.js +1 -1
- package/js/ln-autosave/src/ln-autosave.js +4 -4
- package/js/ln-circular-progress/README.md +27 -13
- package/js/ln-circular-progress/ln-circular-progress.js +1 -1
- package/js/ln-circular-progress/src/ln-circular-progress.js +18 -5
- package/js/ln-confirm/README.md +162 -86
- package/js/ln-confirm/_ln-confirm.scss +11 -0
- package/js/ln-confirm/ln-confirm.js +1 -1
- package/js/ln-confirm/src/ln-confirm.js +77 -41
- package/js/ln-core/README.md +896 -0
- package/js/ln-core/hash.js +92 -0
- package/js/ln-core/helpers.js +337 -8
- package/js/ln-core/index.js +4 -2
- package/js/ln-core/persist.js +29 -3
- package/js/ln-core/positioning.js +1 -35
- package/js/ln-core/window-cache.js +213 -0
- package/js/ln-couchdb-connector/README.md +177 -156
- package/js/ln-couchdb-connector/ln-couchdb-connector.js +1 -1
- package/js/ln-couchdb-connector/src/ln-couchdb-connector.js +398 -348
- package/js/ln-data-coordinator/README.md +536 -165
- package/js/ln-data-coordinator/ln-data-coordinator.js +1 -1
- package/js/ln-data-coordinator/src/data-read-policy.js +18 -0
- package/js/ln-data-coordinator/src/ln-data-coordinator.js +1042 -249
- package/js/ln-data-coordinator/src/mutation-receipts.js +46 -0
- package/js/ln-data-store/README.md +241 -94
- package/js/ln-data-store/ln-data-store.js +1 -1
- package/js/ln-data-store/src/ln-data-store.js +694 -699
- package/js/ln-date/README.md +39 -1
- package/js/ln-date/ln-date-dev.scss +14 -0
- package/js/ln-date/ln-date.js +1 -1
- package/js/ln-date/src/ln-date.js +236 -178
- package/js/ln-debug/README.md +58 -0
- package/js/ln-debug/ln-debug.js +1 -0
- package/js/ln-debug/src/ln-debug.js +19 -0
- package/js/ln-dropdown/README.md +31 -8
- package/js/ln-dropdown/ln-dropdown.js +1 -1
- package/js/ln-dropdown/src/ln-dropdown.js +30 -13
- package/js/ln-editor/README.md +274 -0
- package/js/ln-editor/ln-editor.js +1 -0
- package/js/ln-editor/ln-editor.scss +43 -0
- package/js/ln-editor/src/ln-editor.js +619 -0
- package/js/ln-external-links/README.md +44 -5
- package/js/ln-external-links/ln-external-links.js +1 -1
- package/js/ln-fill/README.md +199 -0
- package/js/ln-fill/ln-fill.js +1 -0
- package/js/ln-fill/src/ln-fill.js +87 -0
- package/js/ln-filter/README.md +92 -2
- package/js/ln-filter/ln-filter-dev.scss +8 -0
- package/js/ln-filter/ln-filter.js +1 -1
- package/js/ln-filter/src/ln-filter.js +22 -7
- package/js/ln-form/README.md +212 -49
- package/js/ln-form/ln-form.js +1 -1
- package/js/ln-form/src/ln-form.js +99 -199
- package/js/ln-http/README.md +125 -89
- package/js/ln-http/ln-http.js +1 -1
- package/js/ln-http/src/ln-http.js +32 -13
- package/js/ln-icon/README.md +130 -0
- package/js/ln-icon/ln-icon.js +1 -0
- package/js/{ln-icons/src/ln-icons.js → ln-icon/src/ln-icon.js} +20 -15
- package/js/ln-link/README.md +47 -9
- package/js/ln-link/ln-link.js +1 -1
- package/js/ln-link/src/ln-link.js +22 -6
- package/js/ln-list/README.md +129 -0
- package/js/ln-list/ln-list.js +1 -0
- package/js/ln-list/ln-list.scss +28 -0
- package/js/ln-list/src/ln-list.js +1216 -0
- package/js/ln-modal/README.md +185 -154
- package/js/ln-modal/ln-modal-dev.scss +13 -0
- package/js/ln-modal/ln-modal.js +1 -1
- package/js/ln-modal/ln-modal.scss +28 -4
- package/js/ln-modal/src/ln-modal.js +137 -201
- package/js/ln-modal-coordinator/README.md +99 -0
- package/js/ln-modal-coordinator/ln-modal-coordinator-dev.scss +8 -0
- package/js/ln-modal-coordinator/ln-modal-coordinator.js +1 -0
- package/js/ln-modal-coordinator/src/ln-modal-coordinator.js +345 -0
- package/js/ln-nav/README.md +46 -3
- package/js/ln-nav/ln-nav.js +1 -1
- package/js/ln-nav/src/ln-nav.js +92 -127
- package/js/ln-number/README.md +28 -1
- package/js/ln-number/ln-number-dev.scss +13 -0
- package/js/ln-number/ln-number.js +1 -1
- package/js/ln-number/src/ln-number.js +443 -350
- package/js/ln-options/README.md +66 -0
- package/js/ln-options/ln-options.js +1 -0
- package/js/ln-options/src/ln-options.js +74 -0
- package/js/ln-popover/README.md +40 -5
- package/js/ln-popover/ln-popover.js +1 -1
- package/js/ln-popover/src/ln-popover.js +38 -11
- package/js/ln-progress/README.md +413 -442
- package/js/ln-progress/ln-progress.js +1 -1
- package/js/ln-progress/src/ln-progress.js +98 -150
- package/js/ln-router/README.md +432 -0
- package/js/ln-router/ln-router.js +1 -0
- package/js/ln-router/src/ln-router.js +539 -0
- package/js/ln-search/README.md +158 -83
- package/js/ln-search/ln-search-dev.scss +8 -0
- package/js/ln-search/ln-search.js +1 -1
- package/js/ln-search/src/ln-search.js +12 -9
- package/js/ln-slug/README.md +110 -0
- package/js/ln-slug/ln-slug.js +1 -0
- package/js/ln-slug/src/ln-slug.js +74 -0
- package/js/ln-sort/README.md +170 -0
- package/js/ln-sort/ln-sort-dev.scss +8 -0
- package/js/ln-sort/ln-sort.js +1 -0
- package/js/ln-sort/src/ln-sort.js +178 -0
- package/js/ln-sortable/README.md +133 -95
- package/js/ln-sortable/ln-sortable.js +1 -1
- package/js/ln-stat/README.md +55 -0
- package/js/ln-stat/ln-stat.js +1 -0
- package/js/ln-stat/src/ln-stat.js +55 -0
- package/js/ln-table/README.md +285 -101
- package/js/ln-table/ln-table-dev.scss +17 -0
- package/js/ln-table/ln-table.js +1 -1
- package/js/ln-table/ln-table.scss +1 -1
- package/js/ln-table/src/ln-table.js +1493 -473
- package/js/ln-table-coordinator/README.md +73 -0
- package/js/ln-table-coordinator/ln-table-coordinator.js +1 -0
- package/js/ln-table-coordinator/src/ln-table-coordinator.js +160 -0
- package/js/ln-tabs/README.md +221 -137
- package/js/ln-tabs/ln-tabs-dev.scss +18 -0
- package/js/ln-tabs/ln-tabs.js +1 -1
- package/js/ln-tabs/src/ln-tabs.js +41 -24
- package/js/ln-time/README.md +14 -0
- package/js/ln-time/ln-time.js +1 -1
- package/js/ln-time/src/ln-time.js +223 -192
- package/js/ln-toast/README.md +178 -122
- package/js/ln-toast/ln-toast.js +1 -15
- package/js/ln-toast/src/ln-toast.js +232 -210
- package/js/ln-toast/template.html +16 -12
- package/js/ln-toggle/README.md +61 -2
- package/js/ln-toggle/ln-toggle-dev.scss +13 -0
- package/js/ln-toggle/ln-toggle.js +1 -1
- package/js/ln-toggle/src/ln-toggle.js +56 -43
- package/js/ln-tooltip/README.md +95 -58
- package/js/ln-tooltip/ln-tooltip-dev.scss +9 -0
- package/js/ln-tooltip/ln-tooltip.js +1 -1
- package/js/ln-tooltip/src/ln-tooltip.js +45 -6
- package/js/ln-translations/README.md +118 -96
- package/js/ln-translations/ln-translations.js +1 -1
- package/js/ln-translations/src/ln-translations.js +10 -5
- package/js/ln-upload/README.md +85 -10
- package/js/ln-upload/ln-upload.js +1 -1
- package/js/ln-upload/src/ln-upload.js +26 -10
- package/js/ln-validate/README.md +72 -0
- package/js/ln-validate/ln-validate-dev.scss +15 -0
- package/js/ln-validate/ln-validate.js +1 -1
- package/js/ln-validate/src/ln-validate.js +64 -0
- package/package.json +61 -56
- package/scss/base/_global.scss +2 -2
- package/scss/base/_typography.scss +1 -2
- package/scss/components/_date.scss +1 -0
- package/scss/components/_dropdown.scss +0 -5
- package/scss/components/_editor.scss +5 -0
- package/scss/components/_filter.scss +26 -25
- package/scss/components/_form.scss +7 -0
- package/scss/components/_ln-table.scss +13 -3
- package/scss/components/_sort.scss +10 -0
- package/scss/components/_table.scss +36 -23
- package/scss/components/_toast.scss +68 -41
- package/scss/components/_toggle.scss +16 -0
- package/scss/config/_density.scss +205 -117
- package/scss/config/_icons.scss +10 -9
- package/scss/config/_tokens.scss +69 -47
- package/scss/config/mixins/_accordion.scss +2 -7
- package/scss/config/mixins/_alert.scss +4 -4
- package/scss/config/mixins/_breadcrumbs.scss +2 -2
- package/scss/config/mixins/_btn.scss +1 -1
- package/scss/config/mixins/_card.scss +89 -14
- package/scss/config/mixins/_collapsible.scss +3 -0
- package/scss/config/mixins/_colors.scss +1 -1
- package/scss/config/mixins/_diagnostics.scss +11 -0
- package/scss/config/mixins/_display.scss +1 -0
- package/scss/config/mixins/_dropdown.scss +3 -5
- package/scss/config/mixins/_editor.scss +124 -0
- package/scss/config/mixins/_empty-state.scss +7 -0
- package/scss/config/mixins/_filter.scss +3 -5
- package/scss/config/mixins/_footer.scss +1 -2
- package/scss/config/mixins/_form.scss +207 -21
- package/scss/config/mixins/_index.scss +2 -0
- package/scss/config/mixins/_ln-table.scss +41 -2
- package/scss/config/mixins/_modal.scss +149 -66
- package/scss/config/mixins/_nav.scss +3 -4
- package/scss/config/mixins/_popover.scss +39 -0
- package/scss/config/mixins/_sidebar.scss +1 -1
- package/scss/config/mixins/_sort.scss +42 -0
- package/scss/config/mixins/_table.scss +85 -60
- package/scss/config/mixins/_toast.scss +179 -152
- package/scss/config/mixins/_tooltip.scss +17 -7
- package/scss/config/mixins/_typography.scss +4 -2
- package/scss/ln-ashlar-dev.scss +27 -9
- package/scss/ln-ashlar.scss +7 -1
- package/js/ln-data-table/README.md +0 -110
- package/js/ln-data-table/ln-data-table.js +0 -1
- package/js/ln-data-table/ln-data-table.scss +0 -10
- package/js/ln-data-table/src/ln-data-table.js +0 -1087
- package/js/ln-icons/README.md +0 -88
- package/js/ln-icons/ln-icons.js +0 -1
- package/js/ln-table/ln-table-sort.js +0 -1
- package/js/ln-table/src/ln-table-sort.js +0 -156
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";function
|
|
1
|
+
(function(){"use strict";if(typeof window<"u"){const t=console.warn;console.warn=function(...e){typeof e[0]=="string"&&(e[0].startsWith("[ln-")||e[0].startsWith("[lnCore"))&&!(document.documentElement.hasAttribute("data-ln-debug")||document.body&&document.body.hasAttribute("data-ln-debug"))||t.apply(console,e)}}const g={};function T(t,e){g[t]||(g[t]=document.querySelector('[data-ln-template="'+t+'"]'));const o=g[t];return o?o.content.cloneNode(!0):(console.warn("["+(e||"ln-core")+'] Template "'+t+'" not found'),null)}function q(t,e,o){t.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:o||{}}))}function v(t,e){if(!t||!e)return t;const o=t.querySelectorAll("[data-ln-field]");for(let n=0;n<o.length;n++){const r=o[n],i=r.getAttribute("data-ln-field");e[i]!=null&&(r.textContent=e[i])}const u=t.querySelectorAll("[data-ln-attr]");for(let n=0;n<u.length;n++){const r=u[n],i=r.getAttribute("data-ln-attr").split(",");for(let s=0;s<i.length;s++){const a=i[s].trim().split(":");if(a.length!==2)continue;const d=a[0].trim(),f=a[1].trim();e[f]!=null&&r.setAttribute(d,e[f])}}const c=t.querySelectorAll("[data-ln-show]");for(let n=0;n<c.length;n++){const r=c[n],i=r.getAttribute("data-ln-show");i in e&&r.classList.toggle("hidden",!e[i])}const l=t.querySelectorAll("[data-ln-class]");for(let n=0;n<l.length;n++){const r=l[n],i=r.getAttribute("data-ln-class").split(",");for(let s=0;s<i.length;s++){const a=i[s].trim().split(":");if(a.length!==2)continue;const d=a[0].trim(),f=a[1].trim();f in e&&r.classList.toggle(d,!!e[f])}}return t}function D(t,e){t.matches&&t.matches("[data-ln-form], [data-ln-fillable]")&&t.dispatchEvent(new CustomEvent("ln-fill",{detail:e??null,bubbles:!0}));const o=t.querySelectorAll("[data-ln-form], [data-ln-fillable]");for(let u=0;u<o.length;u++)o[u].dispatchEvent(new CustomEvent("ln-fill",{detail:e??null,bubbles:!0}));return t}typeof window<"u"&&(window.lnCore=window.lnCore||{},window.lnCore._fillBound||(window.lnCore._fillBound=!0,document.addEventListener("ln-fill",function(t){if(!(!t.target.matches||!t.target.matches("[data-ln-fillable]")))if(t.detail)v(t.target,t.detail);else{const e=t.target.querySelectorAll("[data-ln-field]");for(let o=0;o<e.length;o++)e[o].textContent=""}})));function A(t,e){if(!t||!e)return t;const o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);for(;o.nextNode();){const l=o.currentNode;l.textContent.indexOf("{{")!==-1&&(l.textContent=l.textContent.replace(/\{\{\s*(\w+)\s*\}\}/g,function(n,r){return e[r]!==void 0?e[r]:""}))}const u=function(l,n){return e[n]!==void 0?e[n]:""},c=Array.from(t.querySelectorAll("*"));t.nodeType===1&&c.push(t);for(let l=0;l<c.length;l++){const n=c[l],r=n.attributes;for(let i=0;i<r.length;i++){const s=r[i];s.value.indexOf("{{")!==-1&&n.setAttribute(s.name,s.value.replace(/\{\{\s*(\w+)\s*\}\}/g,u))}}return t}function N(t,e,o,u,c,l){const n={};for(let i=0;i<t.children.length;i++){const s=t.children[i],a=s.getAttribute("data-ln-key");a&&(n[a]=s)}const r=document.createDocumentFragment();for(let i=0;i<e.length;i++){const s=e[i],a=String(u(s));let d=n[a];if(d)c(d,s,i);else{const f=T(o,l);if(!f||(A(f,s),d=f.firstElementChild,!d))continue;d.setAttribute("data-ln-key",a),c(d,s,i)}r.appendChild(d)}t.textContent="",t.appendChild(r)}function O(t,e){if(!document.body){document.addEventListener("DOMContentLoaded",function(){O(t,e)}),console.warn("["+e+'] Script loaded before <body> — add "defer" to your <script> tag');return}t()}function b(t,e,o,u){if(t.nodeType!==1)return;const l=e.indexOf("[")!==-1||e.indexOf(".")!==-1||e.indexOf("#")!==-1?e:"["+e+"]",n=Array.from(t.querySelectorAll(l));t.matches&&t.matches(l)&&n.push(t);for(const r of n)r[o]||(r[o]=new u(r))}function F(t,e,o,u,c={}){const l=c.extraAttributes||[],n=c.onAttributeChange||null,r=c.onInit||null;function i(s){const a=s||document.body;b(a,t,e,o),r&&r(a)}return O(function(){const s=new MutationObserver(function(d){for(let f=0;f<d.length;f++){const h=d[f];if(h.type==="childList"){for(let m=0;m<h.addedNodes.length;m++){const p=h.addedNodes[m];p.nodeType===1&&(b(p,t,e,o),r&&r(p))}for(let m=0;m<h.removedNodes.length;m++){const p=h.removedNodes[m];if(p.nodeType===1){const k=t.indexOf("[")!==-1||t.indexOf(".")!==-1||t.indexOf("#")!==-1?t:"["+t+"]",y=Array.from(p.querySelectorAll(k));p.matches&&p.matches(k)&&y.push(p);for(let C=0;C<y.length;C++){const M=y[C];if(!document.contains(M)){const x=M[e];x&&typeof x.destroy=="function"&&x.destroy()}}}}}else h.type==="attributes"&&(n&&h.target[e]?n(h.target,h.attributeName):(b(h.target,t,e,o),r&&r(h.target)))}});let a=[];if(t.indexOf("[")!==-1){const d=/\[([\w-]+)/g;let f;for(;(f=d.exec(t))!==null;)a.push(f[1])}else a.push(t);s.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:a.concat(l)})},u),window[e]=i,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){i(document.body)}):i(document.body),i}const L={};function j(t,e){L[t]=e}function W(t){return L[t]||{ingress:e=>e,egress:e=>e}}const _={};function S(t,e){if(!t||typeof e!="object")return;const o=t.toLowerCase().split("-")[0];_[o]=e}function B(t){if(!t)return null;const e=t.toLowerCase().split("-")[0];return _[e]||null}S("mk",{monthsLong:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],monthsShort:["јан","фев","мар","апр","мај","јун","јул","авг","септ","окт","ноем","дек"],daysLong:["недела","понеделник","вторник","среда","четврток","петок","сабота"],daysShort:["нед","пон","вт","ср","чет","пет","саб"]}),typeof window<"u"&&(window.lnCore=window.lnCore||{},window.lnCore.registerDataMapper=j,window.lnCore.getDataMapper=W,window.lnCore.registerLocaleFallback=S,window.lnCore.getLocaleFallback=B,window.lnCore.fillTemplate=A,window.lnCore.fill=v,window.lnCore.lnFill=D,window.lnCore.renderList=N);function E(t){return(t||"").replace(/^#/,"")}function w(t){const e=t===void 0?location.hash:t,o={},u=E(e);if(!u)return o;const c=u.split("&");for(let l=0;l<c.length;l++){const n=c[l];if(!n)continue;const r=n.indexOf(":"),i=r>-1?n.slice(0,r):n,s=r>-1?n.slice(r+1):"";if(i)try{o[i]=decodeURIComponent(s)}catch{o[i]=s}}return o}function I(t){if(!t)return null;const e=w();return t in e?e[t]:null}function K(t,e){if(!t)return;const o=w();e==null?delete o[t]:o[t]=String(e);const c=Object.keys(o).map(function(l){const n=o[l];return n===""?l:l+":"+encodeURIComponent(n)}).join("&");E(location.hash)!==c&&(location.hash=c)}function R(t){return t.button===1||t.ctrlKey||t.metaKey||t.shiftKey?!1:(t.preventDefault(),!0)}typeof window<"u"&&(window.lnCore=window.lnCore||{},window.lnCore.hashParse=w,window.lnCore.hashGet=I,window.lnCore.hashSet=K,window.lnCore.hashLinkClick=R),(function(){const t="[data-ln-progress]",e="lnProgress";if(window[e]!==void 0)return;function o(n){return this.dom=n,this._attrObserver=null,this._parentObserver=null,l.call(this),u.call(this),c.call(this),this}o.prototype.destroy=function(){this.dom[e]&&(this._attrObserver&&this._attrObserver.disconnect(),this._parentObserver&&this._parentObserver.disconnect(),delete this.dom[e])};function u(){const n=this,r=new MutationObserver(function(i){for(const s of i)(s.attributeName==="data-ln-progress"||s.attributeName==="data-ln-progress-max")&&l.call(n)});r.observe(this.dom,{attributes:!0,attributeFilter:["data-ln-progress","data-ln-progress-max"]}),this._attrObserver=r}function c(){const n=this,r=this.dom.parentElement;if(!r)return;const i=new MutationObserver(function(s){for(const a of s)a.attributeName==="data-ln-progress-max"&&l.call(n)});i.observe(r,{attributes:!0,attributeFilter:["data-ln-progress-max"]}),this._parentObserver=i}function l(){const n=parseFloat(this.dom.getAttribute("data-ln-progress"))||0,r=this.dom.parentElement,s=(r&&r.hasAttribute("data-ln-progress-max")?parseFloat(r.getAttribute("data-ln-progress-max")):null)||parseFloat(this.dom.getAttribute("data-ln-progress-max"))||100;let a=s>0?n/s*100:0;a<0&&(a=0),a>100&&(a=100),this.dom.style.width=a+"%";const d=Math.max(0,Math.min(n,s));this.dom.setAttribute("role","progressbar"),this.dom.setAttribute("aria-valuemin","0"),this.dom.setAttribute("aria-valuemax",String(s)),this.dom.setAttribute("aria-valuenow",String(d)),q(this.dom,"ln-progress:change",{target:this.dom,value:n,max:s,percentage:a})}F(t,e,o,"ln-progress")})()})();
|
|
@@ -1,150 +1,98 @@
|
|
|
1
|
-
import { dispatch,
|
|
2
|
-
|
|
3
|
-
(function () {
|
|
4
|
-
const DOM_SELECTOR = '[data-ln-progress]';
|
|
5
|
-
const DOM_ATTRIBUTE = 'lnProgress';
|
|
6
|
-
|
|
7
|
-
if (window[DOM_ATTRIBUTE] !== undefined) return;
|
|
8
|
-
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const parent = this.dom.parentElement;
|
|
100
|
-
if (!parent || !parent.hasAttribute('data-ln-progress-max')) return;
|
|
101
|
-
|
|
102
|
-
const observer = new MutationObserver(function (mutations) {
|
|
103
|
-
for (const mutation of mutations) {
|
|
104
|
-
if (mutation.attributeName === 'data-ln-progress-max') {
|
|
105
|
-
_render.call(self);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
observer.observe(parent, {
|
|
111
|
-
attributes: true,
|
|
112
|
-
attributeFilter: ['data-ln-progress-max']
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
this._parentObserver = observer;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function _render() {
|
|
119
|
-
const value = parseFloat(this.dom.getAttribute('data-ln-progress')) || 0;
|
|
120
|
-
const parent = this.dom.parentElement;
|
|
121
|
-
const parentMax = parent && parent.hasAttribute('data-ln-progress-max')
|
|
122
|
-
? parseFloat(parent.getAttribute('data-ln-progress-max'))
|
|
123
|
-
: null;
|
|
124
|
-
const max = parentMax || parseFloat(this.dom.getAttribute('data-ln-progress-max')) || 100;
|
|
125
|
-
let percentage = (max > 0) ? (value / max) * 100 : 0;
|
|
126
|
-
|
|
127
|
-
if (percentage < 0) percentage = 0;
|
|
128
|
-
if (percentage > 100) percentage = 100;
|
|
129
|
-
|
|
130
|
-
this.dom.style.width = percentage + '%';
|
|
131
|
-
|
|
132
|
-
const clampedValue = Math.max(0, Math.min(value, max));
|
|
133
|
-
this.dom.setAttribute('role', 'progressbar');
|
|
134
|
-
this.dom.setAttribute('aria-valuemin', '0');
|
|
135
|
-
this.dom.setAttribute('aria-valuemax', String(max));
|
|
136
|
-
this.dom.setAttribute('aria-valuenow', String(clampedValue));
|
|
137
|
-
|
|
138
|
-
dispatch(this.dom, 'ln-progress:change', { target: this.dom, value: value, max: max, percentage: percentage });
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
window[DOM_ATTRIBUTE] = constructor;
|
|
142
|
-
|
|
143
|
-
if (document.readyState === 'loading') {
|
|
144
|
-
document.addEventListener('DOMContentLoaded', function () {
|
|
145
|
-
constructor(document.body);
|
|
146
|
-
});
|
|
147
|
-
} else {
|
|
148
|
-
constructor(document.body);
|
|
149
|
-
}
|
|
150
|
-
})();
|
|
1
|
+
import { dispatch, registerComponent } from '../../ln-core';
|
|
2
|
+
|
|
3
|
+
(function () {
|
|
4
|
+
const DOM_SELECTOR = '[data-ln-progress]';
|
|
5
|
+
const DOM_ATTRIBUTE = 'lnProgress';
|
|
6
|
+
|
|
7
|
+
if (window[DOM_ATTRIBUTE] !== undefined) return;
|
|
8
|
+
|
|
9
|
+
function _constructor(dom) {
|
|
10
|
+
this.dom = dom;
|
|
11
|
+
this._attrObserver = null;
|
|
12
|
+
this._parentObserver = null;
|
|
13
|
+
_render.call(this);
|
|
14
|
+
_listenValues.call(this);
|
|
15
|
+
_listenParent.call(this);
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
_constructor.prototype.destroy = function () {
|
|
20
|
+
if (!this.dom[DOM_ATTRIBUTE]) return;
|
|
21
|
+
if (this._attrObserver) {
|
|
22
|
+
this._attrObserver.disconnect();
|
|
23
|
+
}
|
|
24
|
+
if (this._parentObserver) {
|
|
25
|
+
this._parentObserver.disconnect();
|
|
26
|
+
}
|
|
27
|
+
delete this.dom[DOM_ATTRIBUTE];
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
function _listenValues() {
|
|
31
|
+
const self = this;
|
|
32
|
+
const observer = new MutationObserver(function (mutations) {
|
|
33
|
+
for (const mutation of mutations) {
|
|
34
|
+
if (mutation.attributeName === 'data-ln-progress' || mutation.attributeName === 'data-ln-progress-max') {
|
|
35
|
+
_render.call(self);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
observer.observe(this.dom, {
|
|
41
|
+
attributes: true,
|
|
42
|
+
attributeFilter: ['data-ln-progress', 'data-ln-progress-max']
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
this._attrObserver = observer;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function _listenParent() {
|
|
49
|
+
const self = this;
|
|
50
|
+
const parent = this.dom.parentElement;
|
|
51
|
+
if (!parent) return;
|
|
52
|
+
|
|
53
|
+
const observer = new MutationObserver(function (mutations) {
|
|
54
|
+
for (const mutation of mutations) {
|
|
55
|
+
if (mutation.attributeName === 'data-ln-progress-max') {
|
|
56
|
+
_render.call(self);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
observer.observe(parent, {
|
|
62
|
+
attributes: true,
|
|
63
|
+
attributeFilter: ['data-ln-progress-max']
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
this._parentObserver = observer;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function _render() {
|
|
70
|
+
const value = parseFloat(this.dom.getAttribute('data-ln-progress')) || 0;
|
|
71
|
+
const parent = this.dom.parentElement;
|
|
72
|
+
const parentMax = parent && parent.hasAttribute('data-ln-progress-max')
|
|
73
|
+
? parseFloat(parent.getAttribute('data-ln-progress-max'))
|
|
74
|
+
: null;
|
|
75
|
+
const max = parentMax || parseFloat(this.dom.getAttribute('data-ln-progress-max')) || 100;
|
|
76
|
+
let percentage = (max > 0) ? (value / max) * 100 : 0;
|
|
77
|
+
|
|
78
|
+
if (percentage < 0) percentage = 0;
|
|
79
|
+
if (percentage > 100) percentage = 100;
|
|
80
|
+
|
|
81
|
+
this.dom.style.width = percentage + '%';
|
|
82
|
+
|
|
83
|
+
const clampedValue = Math.max(0, Math.min(value, max));
|
|
84
|
+
this.dom.setAttribute('role', 'progressbar');
|
|
85
|
+
this.dom.setAttribute('aria-valuemin', '0');
|
|
86
|
+
this.dom.setAttribute('aria-valuemax', String(max));
|
|
87
|
+
this.dom.setAttribute('aria-valuenow', String(clampedValue));
|
|
88
|
+
|
|
89
|
+
dispatch(this.dom, 'ln-progress:change', { target: this.dom, value: value, max: max, percentage: percentage });
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
registerComponent(
|
|
93
|
+
DOM_SELECTOR,
|
|
94
|
+
DOM_ATTRIBUTE,
|
|
95
|
+
_constructor,
|
|
96
|
+
'ln-progress'
|
|
97
|
+
);
|
|
98
|
+
})();
|