jodit-pro
Version:
PRO Version of Jodit Editor
8 lines (7 loc) • 2.64 kB
JavaScript
var v=Object.defineProperty;var d=(r,t)=>v(r,"name",{value:t,configurable:!0});var s,c=function(r,t,e,i){var n=arguments.length,o=n<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(r,t,e,i);else for(var p=r.length-1;p>=0;p--)(h=r[p])&&(o=(n<3?h(o):n>3?h(t,e,o):h(t,e))||o);return n>3&&o&&Object.defineProperty(t,e,o),o};import{KEY_ENTER as m}from"jodit/esm/core/constants.js";import{component as f,debounce as u,watch as _}from"jodit/esm/core/decorators/index.js";import{Dom as g}from"jodit/esm/core/dom/dom.js";import{scrollIntoViewIfNeeded as y}from"jodit/esm/core/helpers/index.js";import{attr as l}from"jodit/esm/core/helpers/utils/attr.js";import{UIElement as C}from"jodit/esm/core/ui/element.js";import{UIInput as E}from"jodit/esm/core/ui/form/inputs/input/input.js";let a=(s=class extends C{className(){return"UITranslateList"}get items(){return this.getElms("item")}render(t){const e=[];return Object.keys(t.list).sort().forEach(i=>{const n=t.list[i];e.push(`<a role='button' tabindex='0' class='&__item' data-lang='${n}'>
<span class='&__item-key'>${n}</span>
<span class='&__item-title'>${this.j.i18n(i)}</span>
</a>`)}),`<div class='&'>
<div class='&__input'></div>
<div class='&__list'>${e.join("")}</div>
</div>`}constructor(t,e){var i;super(t,e),this.options=e,this.state={active:""},this.state.active=e.active;const n=new E(t,{placeholder:t.i18n("Filter"),icon:"search",onChange:this.__onChangeFilter,clearButton:!0});(i=this.getElm("input"))===null||i===void 0||i.appendChild(n.container),this.__onActiveChange()}__onChangeFilter(t){this.items.forEach(e=>{var i,n;const o=(n=(i=e.textContent)===null||i===void 0?void 0:i.toLowerCase())!==null&&n!==void 0?n:"";l(e,"data-hidden",l(e,"data-active")!=="true"&&!o.includes(t.toLowerCase()))})}__scrollToActive(){const t=this.container.querySelector('[data-active="true"]'),e=this.getElm("list");t&&e&&y(t,e,this.j.od)}onClickItem(t){if(t.type==="keydown"&&"key"in t&&t.key!==m)return;const e=t.target;if(g.isHTMLElement(e)&&e.getAttribute("data-lang")){const i=l(e,"data-lang");this.options.onChange(i),this.state.active=i}}__onActiveChange(){this.items.forEach(t=>l(t,"data-active",l(t,"data-lang")===this.state.active)),this.__scrollToActive()}},d(s,"UITranslateList"),s);c([u()],a.prototype,"__onChangeFilter",null),c([_(":afterOpen")],a.prototype,"__scrollToActive",null),c([_(["container:click","container:keydown"])],a.prototype,"onClickItem",null),c([_("state.active"),u()],a.prototype,"__onActiveChange",null),a=c([f],a);export{a as UITranslateList};