1 line
3.5 KiB
JavaScript
1 line
3.5 KiB
JavaScript
(()=>{(function(){"use strict";function h(t){if(t._tui)return;t._tui=!0;let e=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");e?.set&&Object.defineProperty(t,"value",{get:e.get,set(a){let n=this.value;e.set.call(this,a),n!==a&&this.dispatchEvent(new Event("input",{bubbles:!0}))},configurable:!0})}function o(t){return{value:parseFloat(t.getAttribute("data-tui-rating-initial-value"))||0,precision:parseFloat(t.getAttribute("data-tui-rating-precision"))||1,readonly:t.getAttribute("data-tui-rating-readonly")==="true",name:t.getAttribute("data-tui-rating-name")||"",onlyInteger:t.getAttribute("data-tui-rating-onlyinteger")==="true"}}function f(t){return parseFloat(t.getAttribute("data-tui-rating-current"))||parseFloat(t.getAttribute("data-tui-rating-initial-value"))||0}function d(t,e){t.setAttribute("data-tui-rating-current",e);let a=t.querySelector("[data-tui-rating-hidden-input]");a&&(a.value=e.toFixed(2),a.dispatchEvent(new Event("input",{bubbles:!0})),a.dispatchEvent(new Event("change",{bubbles:!0})))}function c(t,e){let a=f(t),n=e>0?e:a;t.querySelectorAll("[data-tui-rating-item]").forEach(u=>{let r=parseInt(u.getAttribute("data-tui-rating-value"),10);if(isNaN(r))return;let s=u.querySelector("[data-tui-rating-item-foreground]");if(!s)return;let i=r<=Math.floor(n),p=!i&&r-1<n&&n<r,m=p?(n-Math.floor(n))*100:0;s.style.width=i?"100%":p?`${m}%`:"0%"})}function l(t){let e=0;return t.querySelectorAll("[data-tui-rating-item]").forEach(a=>{let n=parseInt(a.getAttribute("data-tui-rating-value"),10);!isNaN(n)&&n>e&&(e=n)}),Math.max(1,e)}document.addEventListener("click",t=>{let e=t.target.closest("[data-tui-rating-item]");if(!e)return;let a=e.closest("[data-tui-rating-component]");if(!a)return;let n=o(a);if(n.readonly)return;let u=parseInt(e.getAttribute("data-tui-rating-value"),10);if(isNaN(u))return;let r=f(a),s=l(a),i=u;n.onlyInteger?i=Math.round(i):r===i&&i%1===0?i=Math.max(0,i-n.precision):i=Math.round(i/n.precision)*n.precision,i=Math.max(0,Math.min(s,i)),d(a,i),c(a,0),a.dispatchEvent(new CustomEvent("rating-change",{bubbles:!0,detail:{name:n.name,value:i,maxValue:s}}))}),document.addEventListener("mouseover",t=>{let e=t.target.closest("[data-tui-rating-item]");if(!e)return;let a=e.closest("[data-tui-rating-component]");if(!a||o(a).readonly)return;let n=parseInt(e.getAttribute("data-tui-rating-value"),10);isNaN(n)||c(a,n)}),document.addEventListener("mouseout",t=>{let e=t.target.closest("[data-tui-rating-component]");!e||o(e).readonly||e.contains(t.relatedTarget)||c(e,0)}),document.addEventListener("input",t=>{if(!t.target.matches("[data-tui-rating-hidden-input]"))return;let e=t.target.closest("[data-tui-rating-component]");if(e){let a=parseFloat(t.target.value)||0,n=o(e),u=l(e),r=Math.max(0,Math.min(u,a));e.setAttribute("data-tui-rating-current",r),c(e,0)}}),document.addEventListener("reset",t=>{t.target.matches("form")&&t.target.querySelectorAll("[data-tui-rating-component]").forEach(e=>{let a=o(e);d(e,a.value),c(e,0)})});function g(){document.querySelectorAll("[data-tui-rating-component]").forEach(t=>{let e=t.querySelector("[data-tui-rating-hidden-input]");if(e&&!e._tui&&h(e),!t.hasAttribute("data-tui-rating-current")){let n=o(t),u=l(t),r=Math.max(0,Math.min(u,n.value));d(t,Math.round(r/n.precision)*n.precision)}c(t,0),o(t).readonly&&(t.style.cursor="default",t.querySelectorAll("[data-tui-rating-item]").forEach(n=>{n.style.cursor="default"}))})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",g):g(),new MutationObserver(g).observe(document.body,{childList:!0,subtree:!0})})();})();
|