@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 12.8 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.core.min.js`),require(`kendo.userevents.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.core.min`,`kendo.userevents.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Selectable={}),e.kendo._globals.Core,e.kendo._globals.Userevents))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let r={id:`selectable`,name:`Selectable`,category:`framework`,depends:[`core`,`userevents`],advanced:!0};(function(e,t){let n=window.kendo,r=n.ui.Widget,i=n.support,a=Math.abs,o=`aria-selected`,s=`k-selected`,c=`k-selecting`,l=`change`,u=`changing`,d=`unselect`,f=`k-unselecting`,p=`k-hover`,m=`k-range-mid`,h=`start`,g=`span.k-icon.k-i-caret-alt-down,span.k-icon.k-i-caret-alt-up,.k-icon.k-i-caret-alt-down,.k-icon.k-i-caret-alt-right,.k-icon.k-i-caret-alt-left`,_=g.replaceAll(`k-i`,`k-svg-i`),v=`input,a,textarea,.k-multiselect-wrap,select,button,${g},${_},${_.split(`,`).map(e=>e+` *`).join(`,`)},.k-button>span,.k-button>span *,.k-button>img,label.k-checkbox-label.k-no-text,span.k-numeric-wrap,.k-focusable`,y=n.support.browser.msie,b=!1,x=e.extend;(function(e){(function(){e(`<div class="parent"><span></span></div>`).on(`click`,`>*`,function(){b=!0}).find(`span`).trigger(`click`).end().off()})()})(e);let S=r.extend({init:function(t,i){let a=this,o,s,c;r.fn.init.call(a,t,i),c=a.selectableClass=a.options.selectableClass||`k-selectable`,a._marquee=e(`<div class='k-marquee'><div class='k-marquee-color'></div></div>`),a._lastActive=null,a.element.addClass(c),a.relatedTarget=a.options.relatedTarget,o=a.options.multiple,s=a.options.dragToSelect,a.userEvents=new n.UserEvents(a.element,{global:!0,allowSelection:!0,filter:(b?``:`.`+c+` `)+a.options.filter,tap:a._tap.bind(a),touchAction:o?`none`:`pan-x pan-y`}),o&&(s&&a.userEvents.bind(`hold`,a._hold.bind(a)).bind(`start`,a._start.bind(a)).bind(`move`,a._move.bind(a)).bind(`end`,a._end.bind(a)),a.userEvents.bind(`select`,a._select.bind(a)))},events:[l,u,d],options:{name:`Selectable`,filter:`>*`,inputSelectors:v,multiple:!1,holdToDrag:!1,dragToSelect:!0,relatedTarget:e.noop,ignoreOverlapped:!1,addIdToRanges:!1,toggleable:!1,selectableClass:``},_isElement:function(e){var t=this.element,n,r=t.length,i=!1;for(e=e[0],n=0;n<r;n++)if(t[n]===e){i=!0;break}return i},_tap:function(t){let n=e(t.target),r=this,i=r.options,a=t.event.ctrlKey||t.event.metaKey,o=r.options.multiple,c=o&&t.event.shiftKey,d=r.options.selectedClass||s,f,p=t.event.which,m=t.event.button;!r._isElement(n.closest(`.`+r.selectableClass))||p&&p==3||m&&m==2||this._allowSelection(t.event.target)&&(r.trigger(u,{target:n,originalEvent:t.event})||(f=n.hasClass(d),n=n.add(r.relatedTarget(n)),o?c?((!r._lastRange||!w(r._lastRange,n))&&(r.selectRange(r._firstSelectee(),n,t),r._notify(l,t)),r._lastRange=n):(r._lastRange=null,f&&(a||i.toggleable)?(r._unselect(n),r._notify(l,t)):a||i.toggleable?(r.value(n,t),r._notify(l,t)):(!f||r.value().length>1)&&(r.clear(),r.value(n,t),r._notify(l,t)),r._lastActive=r._downTarget=n):f&&a?(r._unselect(n),r._notify(l,t)):f||(r.clear(),r.value(n,t),r._notify(l,t))))},_hold:function(e){this.options.holdToDrag&&this._tap(e),this._activated=!0},_isActivated:function(){return this.options.holdToDrag?this._activated:!0},_start:function(t){let n=this,r=e(t.target),i=n.options.selectedClass||s,a=r.hasClass(i),o,c=t.event.ctrlKey||t.event.metaKey;if(!(!n._isActivated()||!this._allowSelection(t.event.target))){if(n.trigger(u,{target:r,originalEvent:t.event})){n.userEvents.cancel();return}if(n._downTarget=r,!n._isElement(r.closest(`.`+n.selectableClass))){n.userEvents.cancel();return}n.options.useAllItems?n._items=n.element.find(n.options.filter):(o=r.closest(n.element),n._items=o.find(n.options.filter)),t.sender.capture(),n._marquee.appendTo(document.body).css({left:t.x.client+1,top:t.y.client+1,width:0,height:0}),c||n.clear(),r=r.add(n.relatedTarget(r)),a&&(n._selectElement(r,!0),c&&r.addClass(f))}},_move:function(e){var t=this,n={left:e.x.startLocation>e.x.location?e.x.location:e.x.startLocation,top:e.y.startLocation>e.y.location?e.y.location:e.y.startLocation,width:a(e.x.initialDelta),height:a(e.y.initialDelta)};t._isActivated()&&(t._marquee.css(n),t._invalidateSelectables(n,e.event.ctrlKey||e.event.metaKey),e.preventDefault())},_end:function(t){var r=this,i=n.attr(`range-selected`),a=n.guid();if(r._isActivated()){r._activated=!1,r._marquee.remove(),r._unselect(r.element.find(r.options.filter+`.k-unselecting`)).removeClass(f);var o=r.element.find(r.options.filter+`.k-selecting`);if(o=o.add(r.relatedTarget(o)),r.options.addIdToRanges)for(var s=0;s<r._currentlyActive.length;s++)e(r._currentlyActive[s]).attr(i,a);(!r._lastRange||!w(r._lastRange,o))&&(r.value(o,t),r._notify(l,t)),r._lastRange=o,r._lastActive=r._downTarget,r._items=null}},_invalidateSelectables:function(e,t){var n,r,i=this._downTarget[0],a=this._items,o=this.options.selectedClass||s,l,u;for(this._currentlyActive=[],n=0,r=a.length;n<r;n++)u=a.eq(n),l=u.add(this.relatedTarget(u)),T(u,e)?(u.hasClass(o)?t&&i!==u[0]&&l.removeClass(o).addClass(f):!u.hasClass(c)&&!u.hasClass(f)&&!this._collidesWithActiveElement(l,e)&&l.addClass(c),this._currentlyActive.push(l[0])):u.hasClass(c)?l.removeClass(c):t&&u.hasClass(f)&&l.removeClass(f).addClass(o)},_collidesWithActiveElement:function(e,t){if(!this.options.ignoreOverlapped)return!1;var r=this._currentlyActive,i=e[0].getBoundingClientRect(),a,o=!1,s=n.support.isRtl(e)?`right`:`left`,c={};t.right=t.left+t.width,t.bottom=t.top+t.height;for(var l=0;l<r.length;l++)if(a=r[l].getBoundingClientRect(),E(i,a)){if(c[s]=s===`left`?a.right:a.left,i=x({},i,c),i.left>i.right)return!0;o=!E(i,t)}return o},value:function(e){var t=this,n=t._selectElement.bind(t);if(e){e.each(function(){n(this)});return}return t.element.find(t.options.filter+`.`+(t.options.selectedClass||s))},selectedRanges:function(){var t=this,r=n.attr(`range-selected`),i={};return t.element.find(`[`+r+`]`).each(function(t,n){var a=e(n).attr(r),o=i[a];o||=i[a]=[],o.push(e(n))}),i},selectedSingleItems:function(){var t=this,r=n.attr(`range-selected`);return t.element.find(t.options.filter+`.`+(t.options.selectedClass||s)+`:not([`+r+`])`).toArray().map(function(t){return e(t)})},_firstSelectee:function(){var e=this,t;return e._lastActive===null?(t=e.value(),t.length>0?t[0]:e.element.find(e.options.filter)[0]):e._lastActive},_selectElement:function(t,n){var r=e(t),i=this.options.selectedClass||s,a=!n&&this._notify(`select`,{element:t});r.removeClass(c),a||(r.addClass(i),this.options.aria&&r.attr(o,!0))},_notify:function(e,t){return t||={},this.trigger(e,t)},_unselect:function(e){if(!this.trigger(d,{element:e})){var t=n.attr(`range-selected`);return e.removeClass(this.options.selectedClass||s).removeAttr(t),this.options.aria&&e.attr(o,!1),e}},_select:function(t){this._allowSelection(t.event.target)&&(!y||y&&!e(n._activeElement()).is(this.options.inputSelectors))&&this._allowPreventDefault(t.event.target)&&t.preventDefault()},_allowPreventDefault:function(t){return!e(t).is(`.k-table-td`)||!this.options.allowPaste},_allowSelection:function(t){return e(t).is(this.options.inputSelectors)?(this.userEvents.cancel(),this._downTarget=null,!1):!0},resetTouchEvents:function(){this.userEvents.cancel()},clear:function(){var e=this.element.find(this.options.filter+`.`+(this.options.selectedClass||s));this._unselect(e)},selectRange:function(t,n){var r=this,i,a,o;for(r.clear(),r.element.length>1&&(o=r.options.continuousItems()),(!o||!o.length)&&(o=r.element.find(r.options.filter)),t=e.inArray(e(t)[0],o),n=e.inArray(e(n)[0],o),t>n&&(a=t,t=n,n=a),r.options.useAllItems||(n+=r.element.length-1),i=t;i<=n;i++)r._selectElement(o[i],!0)},destroy:function(){var e=this;r.fn.destroy.call(e),e.element.off(`.kendoSelectable`),e.userEvents.destroy(),e._marquee=e._lastActive=e.element=e.userEvents=null}}),C=r.extend({init:function(e,t){let a=this,o,s;r.fn.init.call(a,e,t),a.widget=t.widget,o=t.ns,s=t.filter,a.userEvents=new n.UserEvents(a.element,{global:!0,allowSelection:!0,filter:a.options.filter,tap:a._tap.bind(a),touchAction:`none`}),i.touch?e.on(`touchstart`+o,s,a._mouseEnter.bind(a)).on(`touchend`+o+` touchmove`+o,s,a._mouseLeave.bind(a)):e.on(`mouseenter`+o,s,a._mouseEnter.bind(a)).on(`mouseleave`+o,s,a._mouseLeave.bind(a))},events:[l],options:{name:`RangeSelectable`,filter:`>*`,inputSelectors:v,resetOnStart:!1,multiple:!1,dragToSelect:!0,cellSelector:`*`,ns:``,reverse:!1,relatedTarget:e.noop},destroy:function(){let e=this;r.fn.destroy.call(e),e.userEvents.destroy(),e.widget=null,e._lastActive=e.element=e.userEvents=e._start=e._end=null},_allowSelection:function(t){return e(t).is(this.options.inputSelectors)?(this.userEvents.cancel(),!1):!0},_mouseEnter:function(t){let n=this,r=e(t.currentTarget),i;r.addClass(p),i=n.widget?.selectRange(),i&&(n.options.resetOnStart&&i.end||(i.target===h&&n._end&&n.range(r,n._end,!0,n.options.reverse),i.target===`end`&&n.range(n._start,r,!0,n.options.reverse)))},_mouseLeave:function(t){e(t.currentTarget).removeClass(p)},start:function(e,n){if(e===t||e===null)return this._start;e.addClass(s+` k-range-start`).attr(o,!0),n||(this._start=e)},end:function(e,n){if(e===t||e===null)return this._start;e.addClass(s+` k-range-end`).attr(o,!0),n||(this._end=e)},mid:function(t){let n=this.element.find(`table`),r=this.options;t.addClass(m).attr(o,!0),n.each(function(){let t=e(this),n=t.find(r.cellSelectorValid).last(),i=t.find(r.cellSelectorValid).first();n.hasClass(m)&&n.addClass(`k-range-split-end`),i.hasClass(m)&&i.addClass(`k-range-split-start`)})},clear:function(e){let t=this.options;this.element.find(t.cellSelector).removeClass(m+` k-range-split-end k-range-split-start`),this.clearStartEnd(),e&&(this._start=this._end=null)},clearStartEnd:function(){let e=this,t=e.options;e.element.find(t.cellSelector).removeClass(`k-range-start k-selected k-range-end`).removeAttr(o)},selectFrom:function(t){let n=this,r=this.options,i,a;i=n.element.find(r.cellSelector),a=e.inArray(e(t)[0],i),n.clear(),n.start(t),i=i.filter(function(e){return e>a}),n.mid(i)},selectTo:function(t){let n=this,r=this.options,i,a;i=n.element.find(r.cellSelector),a=e.inArray(e(t)[0],i),n.clear(),i=i.filter(function(e){return e<a}),n.mid(i),n.end(e(t))},range:function(n,r,i,a){let o=this,s=this.options,c,l,u;if(n===t)return{start:o._start,end:o._end};o._clearFlags(),c=o.element.find(s.cellSelector),l=e.inArray(e(n)[0],c),u=e.inArray(e(r)[0],c),(!n||n&&!n.length)&&(o._useStart=!0),o.clear(),n&&o.start(e(n),i),c=c.filter(function(e){if(!(u<0||!n&&l<0))return e>l&&e<u||s.reverse&&e<l&&e>u}),o.mid(c),r?o.end(e(r),i):o._useEnd=!0,l>u&&a&&(o.clearStartEnd(),o.start(e(r),!0),o.end(e(n),!0))},change:function(){this.trigger(l)},_clearFlags:function(){this._useStart=this._useEnd=!1},_tap:function(t){let r=e(t.target),i=this,a=i.widget.selectRange()||{},o=a.start,s=a.end,c=n.calendar.toDateObject(e(r).find(`span`)),u=i.options,d=u.resetOnStart;if(i._lastActive=r,!o&&!s){i.clear(!0),a.target===h&&i.start(r),a.target===`end`&&i.end(r),i._clearFlags(),i.trigger(l);return}if(!o&&s){a.target===`end`?i.end(r):+c>+a.end&&!u.reverse?(i.clear(!0),i.start(r)):i.range(r,i._end,!1,!0),i.trigger(l),i._clearFlags();return}if(o&&!s){a.target===`end`&&!u.reverse&&+o>+c?(i.clear(!0),d?i.start(r):i.end(r)):a.target===h?i.start(r):i.range(i._start,r,!1,!0),i.trigger(l),i._clearFlags();return}if(o&&s){if(!u.reverse){if(+o>+c&&a.target===`end`){i.clear(!0),d?(i.start(r),i.end(null),a.target=h):(i.start(null),i.end(r)),i.trigger(l);return}if(+o<+c&&a.target===h){+c>+a.end?(i.clear(!0),i.start(r),i.end(null)):i.range(r,i._end),i.trigger(l);return}a.target===h&&i.range(r,i._end),a.target===`end`&&i.range(i._start,r),i.trigger(l);return}d?a.target===h?i.range(r,i._end,!1,!0):i.range(i._start,r,!1,!0):a.target===h?i.start(r):i.end(r),i.trigger(l)}}});S.parseOptions=function(e){var t=e.mode||e,n=typeof t==`string`&&t.toLowerCase();return{multiple:n&&n.indexOf(`multiple`)>-1,cell:n&&n.indexOf(`cell`)>-1,range:n&&n.indexOf(`range`)>-1,single:n&&n.indexOf(`single`)>-1}};function w(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function T(e,t){if(!e.is(`:visible`))return!1;var r=n.getOffset(e),i=t.left+t.width,a=t.top+t.height;return r.right=r.left+n._outerWidth(e),r.bottom=r.top+n._outerHeight(e),!(r.left>i||r.right<t.left||r.top>a||r.bottom<t.top)}function E(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}n.ui.plugin(S),n.ui.plugin(C)})(window.kendo.jQuery);var i=kendo;e.__meta__=r,e.default=i});
//# sourceMappingURL=kendo.selectable.min.js.map