@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) • 5.24 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.chip.min","kendo.html.chiplist.min"],e):e()}((function(){var e,t,i,n,l,s,o,r,a,m,c,d,u,h;e=window.kendo.jQuery,t=window.kendo,i=t.ui,n=i.Widget,l=t.keys,s=e.isPlainObject,o=e.isEmptyObject,r=".kendoChipList",a=".",m="select",c="remove",d=t.html,u={widget:"k-chip-list",item:"k-chip",selected:"k-selected",disabled:"k-disabled",enabledItemSelector:"k-chip:not(.k-disabled)"},h=n.extend({init:function(t,i){var l=this;i=i||{},n.fn.init.call(l,t,i),d.renderChipList(t,e.extend({},i)),l._selectable=l.options.selectable,l._applyAriaAttributes(),l._bindEvents(),l._items()},options:{name:"ChipList",selectable:"none",items:[],fillMode:"solid",rounded:"medium",size:"medium",itemSize:"medium"},events:[m,c],destroy:function(){var e=this;e._keydownProxy&&(e.unbind(e._keydownProxy),e._keydownProxy=null),e._selectProxy&&(e.unbind(e._selectProxy),e._selectProxy=null),e._removeProxy&&(e.unbind(e._removeProxy),e._removeProxy=null),e.element.off(r),e.element.find("[data-role='chip']").each((function(){e._getChipFromElement(this).destroy()})),n.fn.destroy.call(this)},_applyAriaAttributes:function(){var e=this;"none"!==e._selectable&&e.element.attr({"aria-multiselectable":"multiple"===e._selectable,role:"listbox","aria-label":e.element.attr("id")+" listbox","aria-orientation":"horizontal"})},_updateCssClasses:function(){var e=this,i=e.options,n=u;e.element.removeClass((function(t,i){0===i.indexOf("k-")&&e.element.removeClass(i)})),e.element.addClass(n.widget),e.element.addClass(t.getValidCssClass("k-chip-list-","size",i.size))},_getInitializeChipOptions:function(t){var i=this,n=i.options,l=e.extend(t.attributes||{},{tabindex:"-1"});return"none"!==n.selectable&&(l.role="option",l["aria-selected"]=t.selected),t.removable&&(l["aria-keyshortcuts"]="Enter Delete"),e.extend({fillMode:n.fillMode,size:n.itemSize,rounded:n.rounded,selectable:"none"!==n.selectable,removable:n.removable,remove:i._removeProxy,select:i._selectProxy},t,{attributes:l})},_getChipFromElement:function(t){return e(t).getKendoChip()||e(t).find("[data-role='chip']").getKendoChip()},_items:function(){for(var t,i,n,l,s=this,o=s.options.items,r=0;r<o.length;r++)t=s._getInitializeChipOptions(o[r]),n=e("<span></span>"),s.element.append(n),s._createChip(n,t);(l=s._getFirstNavigatableItem())&&s._applyTabIndex(s.items().index(l)),"single"===s._selectable&&(i=s.items().filter(a+u.selected)).each((function(e,t){if(e!==i.length-1){var n=s._getChipFromElement(t);n&&n.select(!1)}}))},_isItem:function(t){return(t=e(t)).is(a+u.item)&&!!this.element.find(t).length},_applyTabIndex:function(t){var i=this.item(+t?+t:0);this.items().each((function(t,i){e(i).attr("tabindex","-1")})),i.attr("tabindex","0")},_createChip:function(e,t){return e.kendoChip(t)},_bindEvents:function(){var e=this;e._keydownProxy=e._keydown.bind(e),e._selectProxy=e._select.bind(e),e._removeProxy=e._remove.bind(e),e.element.on("keydown"+r,a+u.item,e._keydownProxy)},_select:function(e){var t=e.sender;"none"!=this._selectable?this._triggerSelect(t,e):e.preventDefault()},_triggerSelect:function(e,t){var i,n=this;n.element.is(a+u.disabled)||n.trigger(m,{originalEvent:t,item:e})||"single"===n._selectable&&(i=n.select()).length>0&&i.each((function(t,i){var l=n._getChipFromElement(i);l&&l!==e&&l.select(!1)}))},_remove:function(e){var t=e.sender;this.trigger(c,{originalEvent:e,item:e.sender})||this._removeItem(t)},_removeItem:function(e){if(e){var t=e.wrapper;e.destroy(),t.remove(),this._focusNavigatableItem()}},_keydown:function(t){var i=e(t.target).closest(a+u.item),n=t.keyCode;n!==l.LEFT&&n!==l.RIGHT||this._focusNavigatableItem(n,i)},_focusNavigatableItem:function(e,t){var i=this,n=i._getNavigatableItem(e,t);n&&(i._applyTabIndex(i.items().index(n)),n.focus())},_getFirstNavigatableItem:function(){return this.items().filter(a+u.enabledItemSelector).first()},_getLastNavigatableItem:function(){return this.items().filter(a+u.enabledItemSelector).last()},_getNavigatableItem:function(e,t){var i;return i=t||this._getFirstNavigatableItem(),e===l.LEFT&&t&&(i=t.prevAll(a+u.enabledItemSelector).first()),e===l.RIGHT&&t&&(i=t.nextAll(a+u.enabledItemSelector).first()),i.length?i:null},items:function(){return this.element.children()},select:function(e,t){var i,n=this,l=n.items().filter(a+u.selected);if(!e)return l;t=!1!==t,(i=n._getChipFromElement(e))&&("single"===n._selectable&&(l=n.select()).length>0&&l.each((function(t,i){var l=n._getChipFromElement(i);l&&l!==e&&l.select(!1)})),i.select(t))},enable:function(e,t){var i=this._getChipFromElement(e);t=!1!==t,i&&i.enable(t)},item:function(e){return isNaN(e)?null:this.items().eq(e)},itemById:function(e){return this.element.find("#"+e)},add:function(t,i){var n,l,r=this,a="append",m=r.element;i&&r._isItem(i)&&(a="before",m=e(i)),(n=r._getChipFromElement(t))?m[a](n.wrapper):t&&s(t)&&!o(t)&&(l=e("<span></span>"),m[a](l),r._createChip(l,r._getInitializeChipOptions(t)))},remove:function(e){e&&this._isItem(e)&&(t.destroy(e),e.remove(),this._focusNavigatableItem())},setOptions:function(e){var t=this;n.fn.setOptions.call(this,e),t._updateCssClasses(),e.items&&(t.element.empty(),t._items())}}),i.plugin(h)}));
//# sourceMappingURL=kendo.chiplist.min.js.map