UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

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