@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 37.7 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.data.min.js`),require(`kendo.treelist.min.js`),require(`kendo.core.min.js`),require(`kendo.html.button.min.js`),require(`kendo.menu.min.js`),require(`kendo.dialog.min.js`),require(`kendo.form.min.js`),require(`kendo.upload.min.js`),require(`kendo.window.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.data.min`,`kendo.treelist.min`,`kendo.core.min`,`kendo.html.button.min`,`kendo.menu.min`,`kendo.dialog.min`,`kendo.form.min`,`kendo.upload.min`,`kendo.window.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Orgchart={}),e.kendo._globals.Data,e.kendo._globals.Treelist,e.kendo._globals.Core,e.kendo._globals.HtmlButton,e.kendo._globals.Menu,e.kendo._globals.Dialog,e.kendo._globals.Form,e.kendo._globals.Upload,e.kendo._globals.Window))})(this,function(e,t,n,r,i,a,o,s,c,l){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),(function(e,t){var n=e.extend,r=kendo.data,i=r.Query,a=r.DataSource,o=r.TreeListDataSource,s=r.Model,c=r.ObservableArray,l=s.define({id:`id`,parentId:`parentId`,fields:{id:{type:`number`,editable:!1},parentId:{type:`number`,nullable:!0},name:{type:`string`,validation:{required:!0}},title:{type:`string`},avatar:{type:`string`}},init:function(e){s.fn.init.call(this,e),this._loaded=!1,this.parentIdField||=`parentId`,this.nameField||=`name`,this.titleField||=`title`,this.avatarField||=`avatar`,this.parentId=this.get(this.parentIdField),this.name=this.get(this.nameField),this.title=this.get(this.titleField),this.avatar=this.get(this.avatarField)},accept:function(e){s.fn.accept.call(this,e),this.parentId=this.get(this.parentIdField),this.name=this.get(this.nameField),this.title=this.get(this.titleField),this.avatar=this.get(this.avatarField)},set:function(e,t,n){e==`parentId`&&this.nameField!=`parentId`&&(this[this.parentIdField]=t),e==`name`&&this.nameField!=`name`&&(this[this.nameField]=t),e==`title`&&this.titleField!=`title`&&(this[this.titleField]=t),e==`avatar`&&this.avatarField!=`avatar`&&(this[this.avatarField]=t),s.fn.set.call(this,e,t,n),e==this.parentIdField&&(this.parentId=this.get(this.parentIdField)),e==this.nameField&&(this.name=this.get(this.nameField)),e==this.titleField&&(this.title=this.get(this.titleField)),e==this.avatarField&&(this.avatar=this.get(this.avatarField))},loaded:function(e){if(e!==t)this._loaded=e;else return this._loaded},shouldSerialize:function(e){return s.fn.shouldSerialize.call(this,e)&&e!==`_loaded`&&e!=`_error`&&e!=`_edit`&&!(this.parentIdField!==`parentId`&&e===`parentId`)}});l.parentIdField=`parentId`,l.nameField=`name`,l.titleField=`title`,l.avatarField=`avatar`,l.define=function(e,n){n===t&&(n=e,e=l);var r=n.parentId||`parentId`,i=n.name||`name`,a=n.title||`title`,o=n.avatar||`avatar`;n.parentIdField=r,n.nameField=i,n.titleField=a,n.avatarField=o;var c=s.define(e,n);return r&&(c.parentIdField=r),i&&(c.nameField=i),a&&(c.titleField=a),o&&(c.avatarField=o),c};var u=o.extend({init:function(e){o.fn.init.call(this,n(!0,{},{schema:{modelBase:l,model:l}},e))},groupedItemsTree:function(e){var t=this._childrenMap(this.view()),n=new i(t[this._defaultParentId()]||[]).group({field:e}).toArray();return this._innerGroupedItemsTree(e,n,t)},itemChildren:function(e,n){var r={field:`parentId`,operator:`eq`,value:null},a=this._sort&&this._sort.length?this._sort:{},o,s=n?this.view():this.data();if(e){if(o=e.get(`id`),o===t||o===null||o===``)return[];r.value=o}return s=new i(s).filter(r).sort(a).toArray(),s},itemsTree:function(e,r){var a=[],o,s=this.itemChildren(e,!0),c,l;for(l=0;l<s.length;l++)o=s[l],o.get(`expanded`)&&(c=this.itemsTree(o,r),o=n(!0,{},o),o.children=c),o=n(!0,{},o),a.push(o);return r!==null&&r!==t&&(a=new i(a).group({field:r}).toArray()),a},prospectParents:function(e,t){var n=[],r,i=this.itemChildren(t,!1),a,o;for(o=0;o<i.length;o++)r=i[o],r.get(`id`)!==e.get(`id`)&&(n.push(r),r.get(`hasChildren`)&&(a=this.prospectParents(e,r),n=n.concat(a)));return n},read:function(e){return a.fn.read.call(this,e).then(this._loadExpanded.bind(this,e))},toggleChildren:function(n,r){var i=e.Deferred().resolve().promise(),a=n.loaded();return n._error&&=(n.expanded=!1,t),r===void 0&&(r=!n.expanded),n.expanded=r,a||(i=this.load(n)),i},_innerGroupedItemsTree:function(e,t,n){var r,a,o,s,c,l,u;for(a=0;a<t.length;a++){for(r=t[a],l=[],o=0;o<r.items.length;o++)u=r.items[o],!r.hasChildren&&u.hasChildren&&(r.hasChildren=!0),u.expanded&&(r.expanded=!0),s=r.items[o].get(`id`),l=l.concat(n[s]);r.expanded&&(c=new i(l).group({field:e}).toArray(),r.children=this._innerGroupedItemsTree(e,c,n)),!r.hasChildren&&l.length>0&&(r.hasChildren=!0)}return t},_loadExpanded:function(e){var n,r,i;if(e)for(n=e.id!==null&&e.id!==t?this._byParentId(e.id):this._byParentId(this._defaultParentId()),r=0;r<n.length;r++)i=n[r],i.expanded&&!i.loaded()&&this.toggleChildren(i,!0)}});u.create=function(e){if(Array.isArray(e)?e={data:e}:e instanceof c&&(e={data:e.toJSON()}),!(e instanceof u)&&e instanceof a)throw Error(`Incorrect DataSource type. Only OrgChartDataSource instances are supported`);return e instanceof u?e:new u(e)},n(!0,kendo.data,{OrgChartModel:l,OrgChartDataSource:u})})(window.kendo.jQuery),(function(e,t){var n=window.kendo,r=n.keys,i=n.htmlEncode,a=e.extend,o=`.kendoOrgChartView`,s=`blur`,c=`click`,l=`collapse`,u=`expand`,d=`focus`,f=`keydown`,p=`menu`,m=`select`,h=`.`,g=` `,_=`,`,v=`#`,y=`string`,b=`tabindex`,x=`id`,S=`uid`,C=`px`,w=`plus`,T=`minus`,E=`aria-owns`,D=`aria-selected`,O={wrapper:`k-orgchart`,container:`k-orgchart-container`,line:`k-orgchart-line`,lineVertical:`k-orgchart-line-v`,lineHorizontal:`k-orgchart-line-h`,lineVerticalTop:`k-orgchart-line-v-top`,group:`k-orgchart-group`,groupVertical:`k-orgchart-group-v`,groupHorizontal:`k-orgchart-group-h`,nodesGroup:`k-orgchart-node-group`,nodesGroupContainer:`k-orgchart-node-group-container`,nodeContainer:`k-orgchart-node-container`,node:`k-orgchart-node`,card:`k-orgchart-card`,cardMenu:`k-orgchart-card-menu`,button:`k-orgchart-button`,focused:`k-focus`,plusIconSelector:`.k-i-plus,.k-svg-i-plus`,menuItem:`k-item`,avatarPreview:`k-orgchart-avatar-preview`,update:`k-orgchart-update`,cancel:`k-orgchart-cancel`,vstack:`k-vstack`,hstack:`k-hstack`},k=({label:e})=>`<div role="tree" aria-orientation="horizontal" aria-label="${i(e)}" class="k-orgchart-group k-orgchart-level-1 k-pos-absolute k-hstack k-justify-content-center"></div>`,A=({guid:e,level:t})=>`<div role="group" id="${i(e)}" class="k-orgchart-level-${i(t)} k-orgchart-group k-pos-absolute k-justify-content-around"></div>`,j=({hasChildren:e,guid:t,expanded:n,level:r})=>{var a=`<div role="treeitem" `;return e&&t&&(a+=`aria-owns=${i(t)} `,n?a+=`aria-expanded="true" `:a+=`aria-expanded="false" `),a+=`aria-keyshortcuts="Enter" aria-level="${i(r)}" aria-selected="false" class="k-orgchart-node-group-container">`,a},M=`<div class="k-orgchart-node-container k-justify-content-around"></div>`,N=`<div role="group" class="k-orgchart-node-container k-justify-content-around k-hstack"></div>`,P=`<div class="k-orgchart-node k-vstack k-align-items-center"></div>`,F=({label:e,buttonSign:t})=>n.html.renderButton(`<button aria-label="${i(e)}" tabindex="-1" class="k-orgchart-button"></button>`,{icon:i(t)}),I=({color:e,avatar:t,name:r,title:a,editable:o,menuLabel:s})=>{var c=`<div class="k-card-body k-hstack" ${n.attr(`style-border-color`)}="${i(e)}">`;return t&&(c+=`<div class="k-avatar k-avatar-primary k-avatar-lg"><span class="k-avatar-image"><img alt="${i(r)}" src="${i(t)}"></span></div>`),c+=`<div class="k-vstack k-card-title-wrap"><div class="k-card-title k-text-ellipsis">${i(r)}</div>`,a&&(c+=`<span class="k-spacer"></span><div class="k-card-subtitle k-text-ellipsis">${i(a)}</div>`),c+=`</div>`,o&&(c+=`<span class="k-spacer"></span><div class="k-card-body-actions">`+n.html.renderButton(`<button class="k-orgchart-card-menu" role="button" aria-label="${i(s)}" tabindex="-1"></button>`,{icon:`more-vertical`,fillMode:`flat`})+`</div>`),c+=`</div>`,c},L=({uid:e,guid:t,hasChildren:n,expanded:r,cssClass:a,level:o})=>{var s=`<div role="treeitem" data-uid="${i(e)}" `;return n&&t&&(s+=`aria-owns=${i(t)} `,r?s+=`aria-expanded="true" `:s+=`aria-expanded="false" `),s+=`class="k-orgchart-card k-card `,a&&(s+=`${i(a)}`),s+=`" aria-keyshortcuts="Enter" aria-level="${i(o)}" aria-selected="false"></div>`,s},R=({uid:e,level:t,cssClass:n})=>`<div role="treeitem" data-uid="${i(e)}" aria-level="${i(t)}" aria-selected="false" aria-keyshortcuts="Enter" class="k-orgchart-card k-card ${n?i(n):``}"></div>`,z=n.Observable.extend({init:function(e,t){this.element=e,this.options=t||{},n.Observable.fn.init.call(this),this._attachEvents()},events:[l,u,m,p],destroy:function(){n.ui.Widget.fn.destroy.call(this),this.element.off(o)},collapse:function(){return!1},expand:function(){return!1},jqueryGroupElement:function(e){if(e){var t=this._processItem(e);return t.hasClass(O.nodesGroupContainer)||(t=t.closest(h+O.nodesGroupContainer)),t&&t.length?t:null}},jqueryItemElement:function(e){if(e){var t=this._processItem(e);return t.hasClass(O.card)||(t=t.closest(h+O.card)),t&&t.length?t:null}},refresh:function(){this._cacheFocused(),this._clearContent(),this._generateItemsTree(),this._calculateLevels(),this._render()},select:function(e){var t=this._getToSelect(e),n=this.element.find(`[tabindex=0]`);t&&(n.removeAttr(b).removeClass(O.focused).attr(D,!1),t.attr(b,`0`).addClass(O.focused).trigger(`focus`).attr(D,!0))},_attachEvents:function(){var e=h+O.card+_+h+O.nodesGroupContainer;this.element.on(f+o,e,this._onKeyDown.bind(this)).on(c+o,e,this._onSelect.bind(this)).on(c+o,h+O.button,this._onButtonClick.bind(this)).on(d+o,e,this._onFocus.bind(this)).on(s+o,h+O.focused,this._onBlur.bind(this))},_cacheFocused:function(){var e=this.element.find(`[tabindex='0']`),t=this._dataItems(e);!e.length||!t||!t.length||this._idTabIndex||(this._idTabIndex=t[0].get(x),e.hasClass(O.focused)?this._shouldRestoreSelection=!0:this._shouldRestoreSelection=!1)},_calculateDimensions:function(){var e=this.element.find(h+this._selector).first();this._buttonHeight||=this.element.find(h+O.button).first().outerHeight(),this._spacing||=this.element.find(h+O.lineVertical).first().outerHeight(),this._itemWidth||=this._calculateItemWidth(),this._itemHeight||=e.outerHeight(!0)},_calculateItemWidth:function(){return!1},_calculateLevel:function(){return!1},_calculateLevels:function(){return!1},_clearContent:function(){this.element.empty()},_dataItem:function(e){var t=this.jqueryItemElement(e);if(!(!t||!t.data(S)))return this.dataSource.getByUid(t.data(S))},_dataItems:function(){return!1},_generateItemsTree:function(){return!1},_getToSelect:function(){return!1},_groupIsVertical:function(){return!1},_keyCollapse:function(){return!1},_keyExpand:function(){return!1},_keyNext:function(){return!1},_keyPrev:function(){return!1},_keyEnter:function(){return!1},_keyEscape:function(){return!1},_keyEnd:function(){var e=this.element.find(h+O.card).last();this.element.find(`[tabindex=0]`)[0]!==e[0]&&this.trigger(m,{item:e,dataItems:[this._dataItem(e)]})},_keyHome:function(){var e=this.element.find(h+O.card).first();this.element.find(`[tabindex=0]`)[0]!==e[0]&&this.trigger(m,{item:e,dataItems:[this._dataItem(e)]})},_onBlur:function(){this.element.find(h+O.focused).removeClass(O.focused)},_onKeyDown:function(e){var t=e.keyCode,i=this.element.find(`[tabindex=0]`),a=n.support.isRtl(this.element),o=a?[r.LEFT]:[r.RIGHT],s=a?[r.RIGHT]:[r.LEFT],c=r.DOWN,l=r.UP,u;i&&(u=this._groupIsVertical(i),u&&(o.push(r.DOWN),s.push(r.UP)),t===r.HOME?this._keyHome():t===r.END?this._keyEnd():o.indexOf(t)>-1?(e.preventDefault(),e.stopPropagation(),this._keyNext(i)):s.indexOf(t)>-1?(e.preventDefault(),e.stopPropagation(),this._keyPrev(i)):t===c?(e.preventDefault(),e.stopPropagation(),this._keyExpand(i)):t===l?(e.preventDefault(),e.stopPropagation(),this._keyCollapse(i)):t===r.ENTER?this._keyEnter(i):t===r.ESC&&this._keyEscape(i))},_onButtonClick:function(t){var n=this,r=e(t.currentTarget),i=r.find(O.plusIconSelector).length>0,a=r.siblings(h+this._selector),o=this._dataItems(a),s;if(i){if(n.trigger(u,{item:a,dataItems:o}))return}else if(n.trigger(l,{item:a,dataItems:o}))return;for(s=0;s<o.length;s++)n.dataSource.toggleChildren(o[s],i).then(this.refresh.bind(this))},_onFocus:function(){return!1},_onSelect:function(){return!1},_orientation:function(){return!1},_processItem:function(t){var r;return n.type(t)===y?r=this.element.find(t):n.isElement(t)?r=e(t):t instanceof jQuery&&(r=t),r},_render:function(){var t=this._itemsTree,r=e(n.template(k)({label:this.options.messages.label})),i=this.element,a=this._total,o=i.closest(h+O.wrapper).css(`padding-left`),s;i.append(r),this._renderGroup(r,t,1,this._total,0),s=a*this._itemWidth+(a-1)*this._spacing,r.width(s),i.width(s+Number(o.split(C)[0])),this._setHeight(),this._restoreSelection()},_renderNode:function(t,r,i,o,s){var c=this.options.messages,l=this.options.cardsColors||n.getSeriesColors(),u=e(P),d,f=e(t(a(!0,{},i,{menuLabel:c.menuLabel,level:o,guid:s,editable:!!this.options.editable,color:l[o-1]||l[0]})));return i.attributes&&f.attr(JSON.parse(JSON.stringify(i.attributes))),d=e(r(a(!0,{},i,{menuLabel:c.menuLabel,level:o,guid:s,editable:!!this.options.editable,color:l[o-1]||l[0]}))),f.append(d),u.append(f),n.applyStylesFromKendoAttributes(u,[`border-color`]),u},_renderGroup:function(){return!1},_restoreSelection:function(){var e,t;this._idTabIndex?(e=this.dataSource.get(this._idTabIndex),t=e?this._getToFocus(e):this.element.find(h+this._selector).first(),t.attr(b,`0`),this._idTabIndex=null):(t=this.element.find(h+this._selector).first(),t.attr(b,`0`)),this._shouldRestoreSelection&&(this._shouldRestoreSelection=!1,this._preventTriggerSelect=!0,t.trigger(`focus`),t.addClass(O.focused))},_setHeight:function(){var t=this._selector,n=this.element.find(h+O.button+_+h+t),r=Number.MAX_VALUE,i=0,a;this._calculateDimensions(),a=this._buttonHeight,this.element.find(h+O.lineVerticalTop).height(this._spacing+a/2),n.each(function(t,n){var a=e(n).offset().top,o=a+e(n).outerHeight(!0);a<r&&(r=a),o>i&&(i=o)}),this.element.height(i-r)}});n.orgChart={View:z,SingleView:z.extend({init:function(e,t){z.fn.init.call(this,e,t),this._selector=O.card},collapse:function(e){var t=this.jqueryItemElement(e);t&&this.dataSource.toggleChildren(this._dataItem(t),!1).then(this.refresh.bind(this))},expand:function(e){var t=this.jqueryItemElement(e);t&&this.dataSource.toggleChildren(this._dataItem(t),!0).then(this.refresh.bind(this))},_calculateItemWidth:function(){return this.element.find(h+this._selector).first().outerWidth(!0)},_calculateLevel:function(e,t){var n=e.length,r=this._maxColumnsPerLevel,i=!1,a=!1,o,s,c;for((!r[t]||r[t]<n)&&(o=r[t],a=!0,r[t]=n),s=0;s<n;s++)c=e[s],c.hasChildren&&(i=!0,c.expanded&&this._calculateLevel(c.children,t+1));!i&&a&&t>0&&(a=!1,r[t]=o||1)},_calculateLevels:function(){var e=this._itemsTree,t=this._maxColumnsPerLevel=[],n=1,r;for(this._calculateLevel(e,0),r=0;r<t.length;r++)n*=t[r];this._total=n},_dataItems:function(e){var t=this.dataSource.getByUid(e.data(S));return t?[t]:null},_generateItemsTree:function(){this._itemsTree=this.dataSource.itemsTree()},_getToFocus:function(e){return this.element.find(`[data-uid='`+e.get(S)+`']`)},_getToSelect:function(e){return this.jqueryItemElement(e)},_groupIsVertical:function(e){return e.closest(h+O.group).hasClass(O.groupVertical)},_keyCollapse:function(e){var t=this._dataItem(e),n,r;t.expanded?this.trigger(l,{item:e,dataItems:[t]})||this.collapse(e):t.parentId&&(n=this.dataSource.get(t.parentId).get(S),r=this.element.find(`[data-uid='`+n+`']`),this.trigger(m,{item:r,dataItems:[this._dataItem(r)]}))},_keyEnter:function(e){e.find(h+O.cardMenu).length>0&&this.trigger(p,e)},_keyExpand:function(e){var t=this._dataItem(e),n=this.element.find(v+e.attr(E)),r;t.hasChildren&&(t.expanded?(r=n.find(h+this._selector).first(),this.trigger(m,{item:r,dataItems:[this._dataItem(r)]})):this.trigger(u,{item:e,dataItems:[t]})||this.expand(e))},_keyNext:function(e){var t=this._dataItem(e),n=e.parent().next(h+O.node).find(h+O.card),r=this.element.find(v+e.attr(E));!n.length&&t.hasChildren&&t.expanded&&(n=r.find(h+O.card).first()),!(n.length===0||n.hasClass(O.focused))&&this.trigger(m,{item:n,dataItems:[this._dataItem(n)]})},_keyPrev:function(e){var t=this._dataItem(e),n=e.parent().prev(h+O.node).find(h+O.card),r;!n.length&&t.parentId&&(r=this.dataSource.get(t.parentId).get(S),n=this.element.find(`[data-uid='`+r+`']`)),!(n.length===0||n.hasClass(O.focused))&&this.trigger(m,{item:n,dataItems:[this._dataItem(n)]})},_onFocus:function(t){var n=e(t.currentTarget),r=e(t.target);if(this._preventTriggerSelect){t.stopPropagation(),this._preventTriggerSelect=!1;return}if(r.hasClass(O.cardMenu))if(r.closest(`[tabindex='0']`).length>0){t.stopPropagation();return}else this._preventTriggerSelect=!0;n.hasClass(O.card)||(n=n.closest(h+O.card)),n.hasClass(O.focused)||this.trigger(m,{item:n,dataItems:[this._dataItem(n)]})},_onSelect:function(t){var n=e(t.currentTarget),r=n.hasClass(O.card)?n:n.closest(h+O.card);(e(t.target).hasClass(O.cardMenu)?e(t.target):e(t.target).closest(h+O.cardMenu)).length>0||n.hasClass(O.focused)||this.trigger(m,{item:r,dataItems:[this._dataItem(r)]})},_orientation:function(t,n,r){var i=e(`<div>`).addClass(O.line+g+O.lineVertical);r&&n>1?(t.addClass(O.groupVertical+g+O.vstack),t.find(h+O.nodeContainer).addClass(O.vstack),t.find(h+O.button).length===0||t.find(h+O.card).length===1?(t.find(h+O.card).before(i.clone()),t.find(h+O.node).first().find(h+O.lineVertical).addClass(O.lineVerticalTop)):n>1&&t.find(h+O.card).first().before(i.clone())):(t.addClass(O.groupHorizontal+g+O.hstack),t.find(h+O.nodeContainer).addClass(O.hstack),n>1&&t.find(h+O.card).before(i.clone().addClass(O.lineVerticalTop)))},_renderGroup:function(t,n,r,i,a){var o=!0,s=e(M).css(`width`,`100%`);t.append(s),o=this._renderInner(s,n,r,i,a),this._orientation(t,r,o)},_renderInner:function(t,r,i,a,o){var s=n.template(F),c=n.template(L),l=a/r.length,u=!0,d=e(`<div>`).addClass(O.line+g+O.lineVertical),f=e(`<div>`).addClass(O.line+g+O.lineHorizontal),p=this.options.messages,m,_,v,y,b,x,S,E,D=this.options.template?typeof this.options.template==`function`?this.options.template:n.template(this.options.template):n.template(I);for(m=0;m<r.length;m++)_=r[m],v=n.guid(),y=this._renderNode(c,D,_,i,v),_.hasChildren&&(y.append(d.clone()),b=e(s({buttonSign:_.expanded?T:w,label:_.expanded?p.collapse:p.expand})),y.append(b)),t.append(y),this._calculateDimensions(),S=this._itemWidth,E=this._spacing,_.hasChildren&&(u=!1,_.expanded&&(x=this._renderInnerGroup(_,l,o,m,i,v))),x&&x.hasClass(O.groupHorizontal)&&_.expanded&&_.children&&_.children.length>1&&b.after(f.clone().css({width:(l-l/_.children.length)*(S+E)+C,"margin-top":this._buttonHeight/-2+C}));return l>1&&!u&&t.find(h+O.node).width((l-1)*(E+S)),u},_renderInnerGroup:function(t,r,i,a,o,s){var c=this._itemWidth,l=this._spacing,u=r*c+(r-1)*l,d=a*r*c+i,f=n.template(A),p=n.support.isRtl(this.element)?`right`:`left`,m=o*(this._itemHeight+this._buttonHeight+l)+l*(o-1)-this._buttonHeight/2,h;return a>0&&(d+=a*r*l),h=e(f({guid:s,level:o+1})),h.css({width:u+C,top:m+C}),h.css(p,d+C),this.element.append(h),this._renderGroup(h,t.children,o+1,r,d),h}}),GroupedView:z.extend({init:function(e,t){z.fn.init.call(this,e,t),this._selector=O.nodesGroupContainer},collapse:function(e){var t=this.jqueryGroupElement(e),n,r;if(t)for(n=this._dataItems(t),r=0;r<n.length;r++)this.dataSource.toggleChildren(n[r],!1).then(this.refresh.bind(this))},expand:function(e){var t=this.jqueryGroupElement(e),n,r;if(t)for(n=this._dataItems(t),r=0;r<n.length;r++)this.dataSource.toggleChildren(n[r],!0).then(this.refresh.bind(this))},_dataItems:function(e){var t=this.dataSource,n=[],r,i,a;return e.hasClass(O.card)?(i=t.getByUid(e.data(S)),i&&n.push(i)):e.hasClass(O.nodesGroupContainer)&&(this._groupFocused=!0,r=e.find(h+O.card),r.each(function(e,r){a=t.getByUid(r.getAttribute(`data-uid`)),a&&n.push(a)})),n},_calculateItemWidth:function(){var e=this.element.find(h+this._selector).first(),t=this.element.find(h+O.card).first().outerWidth(!0),n=Number(e.css(`padding-left`).split(C)[0]),r=Number(e.css(`border-left`).split(C)[0]);return t+2*n+2*r},_calculateLevel:function(e,t){var n=e.length,r=!1,i=0,a,o,s;for(this._maxColumnsPerLevel[t]=this._maxColumnsPerLevel[t]||0,this._maxGroups[t]=this._maxGroups[t]||0,o=0;o<n;o++)s=e[o],a=s.items.length,a>i&&(i=a),s=e[o],s.hasChildren&&(r=!0,s.expanded&&this._calculateLevel(s.children,t+1));n>this._maxGroups[t]&&(this._maxGroups[t]=n),r||(i=1),i>this._maxColumnsPerLevel[t]&&(this._maxColumnsPerLevel[t]=i)},_calculateLevels:function(){var e=this._itemsTree,t=this._maxColumnsPerLevel=[],n=this._maxGroups=[],r=1,i,a;for(this._calculateLevel(e,0),i=t.length-1;i>=0;i--)a=t[i]*n[i],r>t[i]?r*=n[i]:r<a&&(r=a);this._total=r},_generateItemsTree:function(){this._itemsTree=this.dataSource.groupedItemsTree(this.options.groupField)},_getToFocus:function(e){return this._groupFocused?(this._groupFocused=!1,this.element.find(`[data-uid='`+e.get(S)+`']`).closest(h+O.nodesGroupContainer)):this.element.find(`[data-uid='`+e.get(S)+`']`)},_getToSelect:function(e){return this.jqueryItemElement(e)||this.jqueryGroupElement(e)},_groupIsVertical:function(e){return e.closest(h+O.nodeContainer).hasClass(O.vstack)},_keyCollapse:function(e){var t=[],n,r;t=this._dataItems(e),r=t.some(function(e){return e.expanded}),r?(e.hasClass(O.card)&&(e=e.closest(h+O.nodesGroupContainer),t=this._dataItems(e)),this.trigger(l,{item:e,dataItems:t})||this.collapse(e)):t[0].parentId&&(n=this.dataSource.get(t[0].parentId).get(S),this.trigger(m,{item:this.element.find(`[data-uid='`+n+`']`).closest(h+this._selector),dataItems:t}))},_keyEnter:function(e){var t,n=[];e.hasClass(O.card)&&e.find(h+O.cardMenu).length>0?this.trigger(p,e):(t=e.find(h+O.card).first(),n=this._dataItems(t),this.trigger(m,{item:t,dataItems:n}))},_keyEscape:function(e){if(e.hasClass(O.card)){var t=e.closest(h+O.nodesGroupContainer),n=this._dataItems(t);this.trigger(m,{item:t,dataItems:n})}},_keyExpand:function(e){var t=e.attr(E)||e.closest(h+this._selector).attr(E),n=this.element.find(v+t),r=this._dataItems(e),i=r.some(function(e){return e.hasChildren}),a,o;i&&(a=r.some(function(e){return e.expanded}),a?(o=n.find(h+this._selector).first(),this.trigger(m,{item:o,dataItems:this._dataItems(o)})):(e.hasClass(O.card)&&(e=e.closest(h+O.nodesGroupContainer),r=this._dataItems(e)),this.trigger(u,{item:e,dataItems:r})||this.expand(e)))},_keyNext:function(e){var t=this.element.find(v+e.attr(E)),n=this._dataItems(e),r=n.some(function(e){return e.hasChildren}),i=n.some(function(e){return e.expanded}),a=e.hasClass(O.card)?e.parent().next(h+O.node).find(h+O.card):e.parent().next(h+O.nodesGroup).find(h+O.nodesGroupContainer);!a.length&&r&&i&&(a=t.find(h+this._selector).first()),a.length!==0&&this.trigger(m,{item:a,dataItems:this._dataItems(a)})},_keyPrev:function(e){var t=this._dataItems(e),n,r=e.hasClass(O.card)?e.parent().prev(h+O.node).find(h+O.card):e.parent().prev(h+O.nodesGroup).find(h+O.nodesGroupContainer);!r.length&&t[0].parentId&&(n=this.dataSource.get(t[0].parentId).get(S),r=this.element.find(`[data-uid='`+n+`']`).closest(h+this._selector)),r.length!==0&&this.trigger(m,{item:r,dataItems:this._dataItems(r)})},_onFocus:function(t){var n=e(t.target),r,i;if(this._preventTriggerSelect){t.stopPropagation(),this._preventTriggerSelect=!1;return}if(n.hasClass(O.cardMenu))if(n.closest(`[tabindex='0']`).length>0){t.stopPropagation();return}else this._preventTriggerSelect=!0;!n.hasClass(O.card)&&!n.hasClass(O.nodesGroupContainer)&&(i=n.closest(h+O.card),i.length||(i=n.closest(h+O.nodesGroupContainer)),n=i),n.length!==0&&(r=this._dataItems(n),n.hasClass(O.focused)||(t.stopPropagation(),this.trigger(m,{item:n,dataItems:r})))},_onSelect:function(t){var n=e(t.target),r=this.element.find(`[tabindex=0]`),i,a;!n.hasClass(O.card)&&!n.hasClass(O.nodesGroupContainer)&&(a=n.closest(h+O.card),a.length||(a=n.closest(h+O.nodesGroupContainer)),n=a),!(n.length===0||r[0]===n[0])&&(i=this._dataItems(n),this.trigger(m,{item:n,dataItems:i}))},_orientation:function(t,n,r){var i=e(`<div>`).addClass(O.line+g+O.lineVertical+g+O.lineVerticalTop);t.addClass(O.hstack),n>1&&t.find(h+O.nodesGroupContainer).before(i.clone()),r&&n>1?(t.find(h+O.nodeContainer).removeClass(O.hstack),t.find(h+O.nodeContainer).addClass(O.vstack)):t.addClass(O.groupHorizontal)},_renderChildren:function(t,r,i,a,o,s,c){var l=n.template(F),u=n.template(A),d=e(`<div>`).addClass(O.line+g+O.lineVertical),f=e(`<div>`).addClass(O.line+g+O.lineHorizontal),p=this.options.messages,m=!0,h=n.support.isRtl(this.element)?`right`:`left`,_,v,y,b,x,S,E;return t.hasChildren&&(m=!1,o.append(d.clone()),v=e(l({buttonSign:t.expanded?T:w,label:t.expanded?p.collapse:p.expand})),o.append(v),this._calculateDimensions(),S=this._itemWidth,E=this._spacing,t.expanded&&(x=S*i+(i-1)*E,y=r*i*S+s,b=a*(this._itemHeight+this._buttonHeight+E)+E*(a-1)-this._buttonHeight/2,r>0&&(y+=r*i*E),_=e(u({guid:c,level:a+1})),_.css({width:x+C,top:b+C}),_.css(h,y+C),this.element.append(_),this._renderGroup(_,t.children,a+1,i,y))),_&&t.expanded&&t.children&&t.children.length>1&&v.after(f.clone().css({width:(i-i/t.children.length)*(S+E)+C,"margin-top":this._buttonHeight/-2+C})),m},_renderGroup:function(e,t,r,i,o){var s=!0,c=i/t.length,l,u,d,f,p,m;for(d=0;d<t.length;d++)f=n.guid(),m=t[d],l=this._renderNodesContainer(e,a(!0,{},m,{guid:f,level:r})),u=l.closest(h+O.nodesGroup),this._renderItems(l,m.items,r,f),p=this._renderChildren(m,d,c,r,u,o,f),s&&=p;var g=this._itemWidth*c+(c-1)*this._spacing;e.find(h+O.nodesGroup).width(g),this._orientation(e,r,s)},_renderItems:function(e,t,r,i){var a=n.template(R),o,s,c,l=this.options.template?typeof this.options.template==`function`?this.options.template:n.template(this.options.template):n.template(I);for(o=0;o<t.length;o++)s=t[o],c=this._renderNode(a,l,s,r,i),e.append(c)},_renderNodesContainer:function(t,r){var i=n.template(j),a=e(`<div class="k-orgchart-node-group k-align-items-center k-vstack">`),o=e(N).css(`width`,`100%`),s=e(i(r)),c=typeof this.options.groupHeaderTemplate==`function`?this.options.groupHeaderTemplate:n.template(this.options.groupHeaderTemplate);return s.append(c({value:r.value,field:r.field})),s.append(o),a.append(s),t.append(a),o}})}})(window.kendo.jQuery);let u={id:`orgchart`,name:`OrgChart`,category:`web`,description:`The OrgChart widget displays hierarchical organizational structure.`,depends:[`core`,`menu`,`dialog`,`form`,`upload`,`window`,`data`,`treelist`,`html.button`]};(function(e,t){var n=window.kendo,r=n.htmlEncode,i=n.ui.DataBoundWidget,a=n.data.OrgChartDataSource,o=n.ui.ContextMenu,s=e.extend,c=Array.isArray,l=`.kendoOrgChart`,u=`cancel`,d=`change`,f=`click`,p=`collapse`,m=`create`,h=`dataBinding`,g=`dataBound`,_=`delete`,v=`destroy`,y=`edit`,b=`error`,x=`expand`,S=`focus`,C=`kendoKeydown`,w=`menu`,T=`progress`,E=`save`,D=`select`,O=`requestStart`,k=`.`,A=` `,j=`,`,M=`id`,N=`uid`,P=`action`,F={wrapper:`k-orgchart`,container:`k-orgchart-container`,line:`k-orgchart-line`,lineVertical:`k-orgchart-line-v`,lineHorizontal:`k-orgchart-line-h`,lineVerticalTop:`k-orgchart-line-v-top`,group:`k-orgchart-group`,groupVertical:`k-orgchart-group-v`,groupHorizontal:`k-orgchart-group-h`,nodesGroup:`k-orgchart-node-group`,nodesGroupContainer:`k-orgchart-node-group-container`,nodeContainer:`k-orgchart-node-container`,node:`k-orgchart-node`,card:`k-orgchart-card`,cardMenu:`k-orgchart-card-menu`,button:`k-orgchart-button`,focused:`k-focus`,plusIcon:`plus`,menuItem:`k-item`,avatarPreview:`k-orgchart-avatar-preview`,update:`k-orgchart-update`,cancel:`k-orgchart-cancel`,vstack:`k-vstack`,hstack:`k-hstack`,closeButton:`x`},I={edit:({edit:e})=>`<li data-action='edit'>${r(e)}</li>`,create:({create:e})=>`<li data-action='create'>${r(e)}</li>`,destroy:({destroy:e})=>`<li data-action='destroy'>${r(e)}</li>`},L=(e,t)=>{var n=`<ul>`;return t===!0?(n+=I.edit(e),n+=I.create(e),n+=I.destroy(e)):((t.fields||t.parent)&&(n+=I.edit(e)),t.create&&(n+=I.create(e)),t.destroy&&(n+=I.destroy(e))),n},R=({value:e,field:t})=>`<div><div class="k-orgchart-node-group-title">${r(e)}</div><div class="k-orgchart-node-group-subtitle">${r(t)}</div></div>`,z=({avatar:e,name:t,destroy:i,fileName:a})=>`<div class="k-orgchart-avatar-preview k-hstack k-align-items-center k-pb-lg"><div class="k-avatar k-avatar-primary k-avatar-lg"><span class="k-avatar-image"><img src="${r(e)}" alt="${r(t)}"></span></div><div class="k-px-md">${r(a)}</div>`+n.html.renderButton(`<button aria-label="${r(i)}"></button>`,{icon:`trash`,fillMode:`flat`})+`</div>`,B=({cancel:e,save:t})=>`<div class="k-edit-buttons">`+n.html.renderButton(`<button class="k-orgchart-update">${r(t)}</button>`,{icon:`save`,themeColor:`primary`})+n.html.renderButton(`<button class="k-orgchart-cancel">${r(e)}</button>`,{icon:`cancel-outline`})+`</div>`,V=i.extend({init:function(e,t,r){c(t)&&(t={dataSource:t}),t||={},i.fn.init.call(this,e,t),r&&(this._events=r),this._wrapper(),this._view(),this._dataSource(),this._contextMenu(),this.options.autoBind&&this.dataSource.fetch(),n.notify(this)},options:{name:`OrgChart`,autoBind:!0,cardsColors:null,dataSource:{},editable:{create:!0,destroy:!0,fields:!0,form:{buttonsTemplate:()=>``,orientation:`vertical`},parent:!0},groupField:null,groupHeaderTemplate:R,template:null,messages:{label:`Org Chart`,edit:`Edit`,create:`Create`,destroy:`Delete`,destroyContent:`Are you sure you want to delete this item and all its children?`,destroyTitle:`Delete item`,cancel:`Cancel`,save:`Save`,menuLabel:`Edit menu`,uploadAvatar:`Upload new avatar`,parent:`Parent`,name:`Name`,title:`Title`,none:`--None--`,expand:`expand`,collapse:`collapse`}},events:[u,d,p,m,h,g,_,y,x,C,E,D],destroy:function(){this._menu&&this._menu.destroy(),this._editWindow&&this._editWindow.destroy(),this._confirmDestroy&&this._confirmDestroy.destroy(),this.view.destroy(),i.fn.destroy.call(this),this.wrapper.off(l)},setDataSource:function(e){this.options.dataSource=e,this._dataSource(),this.options.autoBind&&e.fetch()},setOptions:function(e){var t=this;i.fn.setOptions.call(t,e)},append:function(e,t){var n=this,r=n.view.jqueryItemElement(t),i=n.dataItem(r);!r||!i||(i.loaded()?(n.dataSource.add(s({},e,{parentId:i.id})),n.dataSource.sync()):n.dataSource.read({id:i.id}).then(function(){n.dataSource.add(s({},e,{parentId:i.id})),n.dataSource.sync()}))},cancelChanges:function(){this.dataSource.hasChanges()&&this.dataSource.cancelChanges()},collapse:function(e){return this.view.collapse(e)},dataItem:function(e){var t=this.view.jqueryItemElement(e);if(!(!t||!t.data(N)))return this.dataSource.getByUid(t.data(N))},delete:function(e){var t=this.view.jqueryItemElement(e);t&&(this.dataSource.remove(this.dataItem(t)),this.dataSource.sync())},edit:function(e){var t=this.view.jqueryItemElement(e),n=this.dataItem(t);!t||!n||this._edit(n)},expand:function(e){return this.view.expand(e)},getCollapsedNodes:function(){return this.wrapper.find(`[aria-expanded='false']`)},items:function(){return this.wrapper.find(k+F.card)},parent:function(e){var t=this.view.jqueryItemElement(e),n;if(t)return n=t.closest(k+F.group).attr(M),this.wrapper.find(`[aria-owns='`+n+`']`)},saveChanges:function(){this.dataSource.sync()},select:function(e){var t=this.view._getToSelect(e);if(t)return this.view.select(t)},_avatarPreview:function(e,t){var r=this._form,i=e.avatar,a=function(){o.find(k+F.avatarPreview).remove(),e.set(`avatar`,null)},o,s;r&&(t||(t=i.split(`\\`).pop().split(`/`).pop(),(!t||t.indexOf(`.`)==-1)&&(t=e.name)),s={name:e.name,avatar:i,fileName:t,destroy:this.options.messages.destroy},o=r.wrapper,o.find(k+F.avatarPreview).remove(),o.find(`[type="file"]`).closest(k+`k-form-field`).prepend(n.template(z)(s)),o.find(k+F.avatarPreview+A+k+`k-button`).on(f,a))},_contextMenu:function(){var e=this.options,t=e.editable,n=e.messages,r={target:this.wrapper,filter:k+F.cardMenu,select:this._onMenuItemClick.bind(this),activate:this._onMenuOpen.bind(this),deactivate:this._onMenuClose.bind(this),showOn:`click`,animation:!1},i;(t===!0||t!==!1&&(t.create||t.destroy||t.fields||t.parent))&&(i=L(n,t),this._menu=new o(i,r))},_dataSource:function(){var e=this.dataSource,t=this.options.dataSource;e&&(e.unbind(d,this._dataSourceChangeHandler),e.unbind(b,this._errorHandler),e.unbind(T,this._progressHandler),e.unbind(O,this._requestStartHandler)),this._dataSourceChangeHandler=this._onDataSourceChange.bind(this),this._errorHandler=this._onDataSourceError.bind(this),this._progressHandler=this._progress.bind(this),this._requestStartHandler=this._onDataSourceRequestStart.bind(this),e=this.dataSource=a.create(t),e.bind(d,this._dataSourceChangeHandler),e.bind(b,this._errorHandler),e.bind(T,this._progressHandler),e.bind(O,this._requestStartHandler),this.view.dataSource=e},_destroyItem:function(t){var r=this,i=e(`<div></div>`),a=r.options.messages,o=function(){r.wrapper.find(k+F.card+`[tabindex=0]`+j+k+F.nodesGroup+`[tabindex=0]`).addClass(F.focused).trigger(`focus`)},s=this._confirmDestroy=new n.ui.Confirm(i,{title:a.destroyTitle,content:a.destroyContent,messages:{okText:a.destroy,cancel:a.cancel},show:function(){setTimeout(function(){s.element.trigger(`focus`)})}});s.open(),s.result.done(function(){r.trigger(_,{dataItem:t})||(r.dataSource.remove(t),r.dataSource.sync()),r.view._shouldRestoreSelection=!0,r.view._restoreSelection()}),s.result.fail(o)},_edit:function(t){var r=this,i=e(`<div>`),a=e(`<div>`),o=this.options.messages,s=this._formOptions(t),c;s&&(t.avatar&&r._avatarPreview(t),a.append(i),r._editWindow=new n.ui.Window(a,{title:o.edit,width:`380 px`,modal:!0,close:function(e){c?c=!1:r.trigger(u,{dataItem:t})?e.preventDefault():r.cancelChanges()},deactivate:function(){r._editWindow.wrapper.off(f),r._editWindow.destroy(),r._editWindow=null,r.view._restoreSelection()}}),a.after(n.template(B)({save:o.save,cancel:o.cancel})),r._editWindow.center().open(),r._form=new n.ui.Form(i,s),r._editWindow.wrapper.on(f,k+F.update,function(){r._form.validate()&&(c=!0,r.trigger(E,{dataItem:t})||(r._editWindow.close(),r.saveChanges()))}),r._editWindow.wrapper.on(f,k+F.cancel,function(){r._editWindow.close()}))},_formOptions:function(e){var t=this.options,n=t.messages,r=t.editable.form,i=[],a,o;return r&&(o=r.items),(!o||o.length===0)&&(t.editable===!0||t.editable&&t.editable.parent)&&(a=[{id:null,name:n.none}].concat(this.dataSource.prospectParents(e)),i.push({field:`parentId`,editor:`DropDownList`,label:n.parent,editorOptions:{dataSource:a,dataValueField:`id`,dataTextField:`name`,valuePrimitive:!0}})),(!o||o.length===0)&&(t.editable===!0||t.editable&&t.editable.fields)&&(i=i.concat([{field:`name`,label:n.name,validation:{required:!0}},{field:`title`,label:n.title},{field:`avatar`,label:n.uploadAvatar,editor:this._uploadEditor.bind(this,e)}])),r&&delete r.formData,i.length>0||o&&o.length>0?s(!0,{},{formData:e,items:i},r):!1},_onDataSourceChange:function(e){if(!(e.action===`add`||e.action===`itemchange`&&this._editWindow)){if((!e.action||e.action===`sync`)&&this.trigger(h,e)){this._progress(!1);return}this._progress(!0),this.view.refresh(),(!e.action||e.action===`sync`)&&this.trigger(g),this._progress(!1)}},_onDataSourceError:function(){this._progress(!1)},_onDataSourceRequestStart:function(){this.view._cacheFocused()},_onMenuClose:function(){e(document.activeElement).closest(`[role='alertdialog']`).length===0&&this.wrapper.find(`[tabindex='0']`).addClass(F.focused).trigger(`focus`)},_onMenuItemClick:function(t){var n=this,r=e(t.target).closest(k+F.node).find(k+F.card),i=n.dataItem(r),a=e(t.item).data(P),o;i&&(a===y?n.trigger(y,{dataItem:i})||n._edit(i):a===m?n.trigger(m,{dataItem:i})||(i.loaded()?(o=n.dataSource.add({parentId:i.id}),n._edit(o)):n.dataSource.read({id:i.id}).then(function(){o=n.dataSource.add({parentId:i.id}),n._edit(o)})):a===v&&n._destroyItem(i))},_onMenuOpen:function(){this.view._cacheFocused(),this.wrapper.find(k+F.focused).removeClass(F.focused),this._menu.element.find(k+F.menuItem).first().trigger(S)},_openMenu:function(e){this._menu&&this._menu.open(e.find(k+F.cardMenu))},_progress:function(e){n.ui.progress(this.container,e)},_triggerCollapse:function(e){this.trigger(p,{item:e.item,dataItems:e.dataItems})&&e.preventDefault()},_triggerExpand:function(e){this.trigger(x,{item:e.item,dataItems:e.dataItems})&&e.preventDefault()},_triggerSelect:function(e){this.trigger(D,{item:e.item,dataItems:e.dataItems})||(this.view.select(e.item),this.trigger(d,{item:e.item,dataItems:e.dataItems}))},_uploadEditor:function(t,n){var r=this;e(`<input type="file">`).appendTo(n).kendoUpload({async:!1,multiple:!1,select:function(e){var n=e.files[0],i=n.rawFile,a=new FileReader;n.validationErrors&&n.validationErrors.length>0||i&&(a.onloadend=function(){t.set(`avatar`,this.result),r._avatarPreview(t,i.name)},a.readAsDataURL(i))},validation:{allowedExtensions:[`.gif`,`.jpg`,`.png`],maxFileSize:1048576}})},_view:function(){this.options.groupField!==null&&this.options.groupField!==t?this.view=new n.orgChart.GroupedView(this.container,this.options):this.view=new n.orgChart.SingleView(this.container,this.options),this.view.bind(D,this._triggerSelect.bind(this)),this.view.bind(x,this._triggerExpand.bind(this)),this.view.bind(p,this._triggerCollapse.bind(this)),this.view.bind(w,this._openMenu.bind(this))},_wrapper:function(){var t=e(`<div class='k-orgchart-container'>`);this.wrapper=this.element,this.container=t,this.wrapper.addClass(F.wrapper),this.wrapper.append(t)}});n.ui.plugin(V)})(window.kendo.jQuery);var d=kendo;e.__meta__=u,e.default=d});
//# sourceMappingURL=kendo.orgchart.min.js.map