Last active
June 5, 2016 16:49
-
-
Save jcbowyer/5df55d4758a7614ca08d71eaf640fc57 to your computer and use it in GitHub Desktop.
PowerBI mutli select / advanced search custom visual
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** Your CSS code goes here */ | |
.powerbi-sample-table tr { | |
border-top: 1px solid #ddd; | |
border-bottom: 1px solid #ddd; | |
} | |
.powerbi-sample-table th { | |
display: none; | |
} | |
.powerbi-sample-table td { | |
display: block; | |
} | |
.powerbi-sample-table td:first-child { | |
padding-top: .5em; | |
} | |
.powerbi-sample-table td:last-child { | |
padding-bottom: .5em; | |
} | |
.powerbi-sample-table td:before { | |
content: attr(data-th) ": "; | |
font-weight: bold; | |
width: 6.5em; | |
display: inline-block; | |
} | |
.powerbi-sample-table .dynamic td:before { | |
display: none; | |
} | |
.powerbi-sample-table th, .powerbi-sample-table td { | |
text-align: left; | |
} | |
.powerbi-sample-table .dynamic th, .powerbi-sample-table .dynamic td { | |
display: table-cell; | |
padding: .25em .5em; | |
} | |
.powerbi-sample-table .dynamic th:first-child, .powerbi-sample-table .dynamic td:first-child { | |
padding-left: 0; | |
} | |
.powerbi-sample-table .dynamic th:last-child, .powerbi-sample-table .dynamic td:last-child { | |
padding-right: 0; | |
} | |
.powerbi-sample-table { | |
background: #34495E; | |
color: #fff; | |
border-radius: .4em; | |
overflow: hidden; | |
} | |
.powerbi-sample-table tr { | |
border-color: #46627f; | |
} | |
.powerbi-sample-table th, .powerbi-sample-table td { | |
margin: .5em 1em; | |
} | |
.powerbi-sample-table .dynamic th, .powerbi-sample-table .dynamic td { | |
padding: 1em !important; | |
} | |
.powerbi-sample-table th, .powerbi-sample-table td:before { | |
color: #dd5; | |
} | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/.fake{color:red}.k-common-test-class{opacity:0}.k-reset{margin:0;padding:0;border:0;outline:0;text-decoration:none;font-size:100%;list-style:none}.k-floatwrap:after,.k-grid-toolbar:after,.k-slider-items:after{content:"";display:block;clear:both;visibility:hidden;height:0;overflow:hidden}.k-floatwrap,.k-grid-toolbar,.k-slider-items{display:inline-block}.k-floatwrap,.k-grid-toolbar,.k-slider-items{display:block}.k-autocomplete,.k-autocomplete.k-state-hover,.k-block,.k-button,.k-draghandle,.k-dropdown-wrap,.k-dropdown-wrap.k-state-hover,.k-grid-header,.k-grouping-header,.k-header,.k-link.k-state-hover,.k-numeric-wrap,.k-numeric-wrap.k-state-hover,.k-pager-wrap,.k-picker-wrap,.k-picker-wrap.k-state-hover,.k-tabstrip-items .k-item,.k-textbox,.k-textbox:hover,.k-toolbar,.k-tooltip{background-repeat:repeat;background-position:0 center}.k-link:hover{text-decoration:none}.k-state-highlight>.k-link{color:inherit}.k-button,.k-input[type=text],.k-input[type=number],.k-picker-wrap .k-input,.k-textbox,.k-textbox>input{font-size:100%;font-family:inherit;border-style:solid;border-width:1px;-webkit-appearance:none}.k-block,.k-draghandle,.k-inline-block,.k-widget{border-style:solid;border-width:1px;-webkit-appearance:none}.k-block,.k-widget{line-height:normal;outline:0}.k-widget ::-ms-clear{width:0;height:0}.k-block{padding:2px}.k-button{display:inline-block;margin:0;padding:.2em .7em;font-family:inherit;line-height:1.72em;text-align:center;cursor:pointer;text-decoration:none}.k-button.k-state-disabled,.k-button.k-state-disabled:active,.k-button.k-state-disabled:hover,.k-button[disabled],.k-state-disabled .k-button,.k-state-disabled .k-button:active,.k-state-disabled .k-button:hover{cursor:default}a.k-button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none}.k-ff input.k-button{padding-bottom:.37em;padding-top:.37em}button.k-button::-moz-focus-inner,input.k-button::-moz-focus-inner{padding:0;border:0}a.k-button-expand{display:block}button.k-button-expand,input[type=submit].k-button-expand,input[type=button].k-button-expand,input[type=reset].k-button-expand{width:100%}body .k-button-icon,body .k-split-button-arrow{padding-left:.4em;padding-right:.4em}.k-button-icontext{overflow:visible}.k-toolbar .k-button-icontext{padding-right:.8em}.k-button-icontext .k-icon,.k-button-icontext .k-image,.k-button-icontext .k-sprite{margin-right:3px;margin-right:.3rem;margin-left:-3px;margin-left:-.3rem}.k-button.k-button-icontext .k-icon,.k-button.k-button-icontext .k-image{vertical-align:text-top}html body .k-button-bare{background:0 0!important;color:inherit;border-width:0}html body .k-button-bare.k-upload-button:hover{color:inherit}.k-link{cursor:pointer;outline:0;text-decoration:none}.k-grid-header span.k-link{cursor:default}.k-state-disabled,.k-state-disabled .k-button,.k-state-disabled .k-draghandle,.k-state-disabled .k-icon,.k-state-disabled .k-link,.k-state-disabled .k-upload-button input{cursor:default!important;outline:0}@media print{.k-state-disabled,.k-state-disabled .k-input{opacity:1!important}}.k-state-error{border-style:ridge}.k-state-empty{font-style:italic}.k-button-group .k-tool-icon,.k-icon,.k-sprite{display:inline-block;width:16px;height:16px;overflow:hidden;background-repeat:no-repeat;font-size:0;line-height:0;text-align:center;-ms-high-contrast-adjust:none}.k-icon.k-i-none{background-image:none!important}.k-ie8 .k-button-group .k-tool-icon,.k-ie8 .k-icon,.k-ie8 .k-sprite{vertical-align:middle}:root *>.k-button-group .k-tool-icon,:root *>.k-icon,:root *>.k-sprite{vertical-align:middle}.k-icon,.k-sprite{background-color:transparent}.k-numerictextbox .k-select .k-link span.k-i-arrow-n{background-position:0 -3px}.k-numerictextbox .k-select .k-link span.k-i-arrow-s{background-position:0 -35px}.k-state-selected .k-i-arrow-n{background-position:-16px 0}.k-button:active .k-state-selected .k-i-arrow-n,.k-button:not(.k-state-disabled):hover .k-state-selected .k-i-arrow-n,.k-link:not(.k-state-disabled):hover>.k-state-selected .k-i-arrow-n,.k-state-hover>*>.k-state-selected .k-i-arrow-n,.k-state-hover>.k-state-selected .k-i-arrow-n,.k-textbox:hover .k-state-selected .k-i-arrow-n{background-position:-32px 0}.k-numerictextbox .k-link.k-state-selected span.k-i-arrow-n,.k-numerictextbox .k-state-hover .k-link span.k-i-arrow-n{background-position:-16px -3px}.k-state-selected .k-i-arrow-s{background-position:-16px -32px}.k-button:active .k-state-selected .k-i-arrow-s,.k-button:not(.k-state-disabled):hover .k-state-selected .k-i-arrow-s,.k-link:not(.k-state-disabled):hover>.k-state-selected .k-i-arrow-s,.k-state-hover>*>.k-state-selected .k-i-arrow-s,.k-state-hover>.k-state-selected .k-i-arrow-s,.k-textbox:hover .k-state-selected .k-i-arrow-s{background-position:-32px -32px}.k-numerictextbox .k-link.k-state-selected span.k-i-arrow-s,.k-numerictextbox .k-state-hover .k-link span.k-i-arrow-s{background-position:-16px -35px}.k-grid-header th>.k-link:hover span.k-i-arrow-n{background-position:0 0}.k-grid-header th>.k-link:hover span.k-i-arrow-s{background-position:0 -32px}.k-group-indicator .k-link:hover span.k-si-arrow-n{background-position:0 -129px}.k-group-indicator .k-link:hover span.k-si-arrow-s{background-position:0 -159px}.k-group-indicator .k-button:hover span.k-group-delete{background-position:-32px -16px}.k-scheduler .k-scheduler-toolbar .k-nav-current .k-link .k-i-calendar{background-position:-32px -176px}.k-i-arrow-n{background-position:0 0}.k-button:active .k-i-arrow-n,.k-button:not(.k-state-disabled):hover .k-i-arrow-n,.k-link:not(.k-state-disabled):hover>.k-i-arrow-n,.k-state-hover>*>.k-i-arrow-n,.k-state-hover>.k-i-arrow-n,.k-textbox:hover .k-i-arrow-n{background-position:-16px 0}.k-i-arrow-e{background-position:0 -16px}.k-button:active .k-i-arrow-e,.k-button:not(.k-state-disabled):hover .k-i-arrow-e,.k-link:not(.k-state-disabled):hover>.k-i-arrow-e,.k-state-hover>*>.k-i-arrow-e,.k-state-hover>.k-i-arrow-e,.k-textbox:hover .k-i-arrow-e{background-position:-16px -16px}.k-rtl .k-i-arrow-w{background-position:0 -16px}.k-rtl .k-button:active .k-i-arrow-w,.k-rtl .k-button:not(.k-state-disabled):hover .k-i-arrow-w,.k-rtl .k-link:not(.k-state-disabled):hover>.k-i-arrow-w,.k-rtl .k-state-hover>*>.k-i-arrow-w,.k-rtl .k-state-hover>.k-i-arrow-w,.k-rtl .k-textbox:hover .k-i-arrow-w{background-position:-16px -16px}.k-i-arrow-s{background-position:0 -32px}.k-button:active .k-i-arrow-s,.k-button:not(.k-state-disabled):hover .k-i-arrow-s,.k-link:not(.k-state-disabled):hover>.k-i-arrow-s,.k-state-hover>*>.k-i-arrow-s,.k-state-hover>.k-i-arrow-s,.k-textbox:hover .k-i-arrow-s{background-position:-16px -32px}.k-i-arrow-w{background-position:0 -48px}.k-button:active .k-i-arrow-w,.k-button:not(.k-state-disabled):hover .k-i-arrow-w,.k-link:not(.k-state-disabled):hover>.k-i-arrow-w,.k-state-hover>*>.k-i-arrow-w,.k-state-hover>.k-i-arrow-w,.k-textbox:hover .k-i-arrow-w{background-position:-16px -48px}.k-rtl .k-i-arrow-e{background-position:0 -48px}.k-rtl .k-button:active .k-i-arrow-e,.k-rtl .k-button:not(.k-state-disabled):hover .k-i-arrow-e,.k-rtl .k-link:not(.k-state-disabled):hover>.k-i-arrow-e,.k-rtl .k-state-hover>*>.k-i-arrow-e,.k-rtl .k-state-hover>.k-i-arrow-e,.k-rtl .k-textbox:hover .k-i-arrow-e{background-position:-16px -48px}.k-i-seek-n{background-position:0 -64px}.k-button:active .k-i-seek-n,.k-button:not(.k-state-disabled):hover .k-i-seek-n,.k-link:not(.k-state-disabled):hover>.k-i-seek-n,.k-state-hover>*>.k-i-seek-n,.k-state-hover>.k-i-seek-n,.k-textbox:hover .k-i-seek-n{background-position:-16px -64px}.k-i-seek-e{background-position:0 -80px}.k-button:active .k-i-seek-e,.k-button:not(.k-state-disabled):hover .k-i-seek-e,.k-link:not(.k-state-disabled):hover>.k-i-seek-e,.k-state-hover>*>.k-i-seek-e,.k-state-hover>.k-i-seek-e,.k-textbox:hover .k-i-seek-e{background-position:-16px -80px}.k-rtl .k-i-seek-w{background-position:0 -80px}.k-rtl .k-button:active .k-i-seek-w,.k-rtl .k-button:not(.k-state-disabled):hover .k-i-seek-w,.k-rtl .k-link:not(.k-state-disabled):hover>.k-i-seek-w,.k-rtl .k-state-hover>*>.k-i-seek-w,.k-rtl .k-state-hover>.k-i-seek-w,.k-rtl .k-textbox:hover .k-i-seek-w{background-position:-16px -80px}.k-i-seek-s{background-position:0 -96px}.k-button:active .k-i-seek-s,.k-button:not(.k-state-disabled):hover .k-i-seek-s,.k-link:not(.k-state-disabled):hover>.k-i-seek-s,.k-state-hover>*>.k-i-seek-s,.k-state-hover>.k-i-seek-s,.k-textbox:hover .k-i-seek-s{background-position:-16px -96px}.k-i-seek-w{background-position:0 -112px}.k-button:active .k-i-seek-w,.k-button:not(.k-state-disabled):hover .k-i-seek-w,.k-link:not(.k-state-disabled):hover>.k-i-seek-w,.k-state-hover>*>.k-i-seek-w,.k-state-hover>.k-i-seek-w,.k-textbox:hover .k-i-seek-w{background-position:-16px -112px}.k-rtl .k-i-seek-e{background-position:0 -112px}.k-rtl .k-button:active .k-i-seek-e,.k-rtl .k-button:not(.k-state-disabled):hover .k-i-seek-e,.k-rtl .k-link:not(.k-state-disabled):hover>.k-i-seek-e,.k-rtl .k-state-hover>*>.k-i-seek-e,.k-rtl .k-state-hover>.k-i-seek-e,.k-rtl .k-textbox:hover .k-i-seek-e{background-position:-16px -112px}.k-si-arrow-n{background-position:0 -129px}.k-button:active .k-si-arrow-n,.k-button:not(.k-state-disabled):hover .k-si-arrow-n,.k-link:not(.k-state-disabled):hover>.k-si-arrow-n,.k-state-hover>*>.k-si-arrow-n,.k-state-hover>.k-si-arrow-n,.k-textbox:hover .k-si-arrow-n{background-position:-16px -129px}.k-si-arrow-e{background-position:0 -144px}.k-button:active .k-si-arrow-e,.k-button:not(.k-state-disabled):hover .k-si-arrow-e,.k-link:not(.k-state-disabled):hover>.k-si-arrow-e,.k-state-hover>*>.k-si-arrow-e,.k-state-hover>.k-si-arrow-e,.k-textbox:hover .k-si-arrow-e{background-position:-16px -144px}.k-si-arrow-s{background-position:0 -159px}.k-button:active .k-si-arrow-s,.k-button:not(.k-state-disabled):hover .k-si-arrow-s,.k-link:not(.k-state-disabled):hover>.k-si-arrow-s,.k-state-hover>*>.k-si-arrow-s,.k-state-hover>.k-si-arrow-s,.k-textbox:hover .k-si-arrow-s{background-position:-16px -159px}.k-si-arrow-w{background-position:0 -176px}.k-button:active .k-si-arrow-w,.k-button:not(.k-state-disabled):hover .k-si-arrow-w,.k-link:not(.k-state-disabled):hover>.k-si-arrow-w,.k-state-hover>*>.k-si-arrow-w,.k-state-hover>.k-si-arrow-w,.k-textbox:hover .k-si-arrow-w{background-position:-16px -176px}.k-i-arrowhead-n{background-position:0 -256px}.k-button:active .k-i-arrowhead-n,.k-button:not(.k-state-disabled):hover .k-i-arrowhead-n,.k-link:not(.k-state-disabled):hover>.k-i-arrowhead-n,.k-state-hover>*>.k-i-arrowhead-n,.k-state-hover>.k-i-arrowhead-n,.k-textbox:hover .k-i-arrowhead-n{background-position:-16px -256px}.k-i-arrowhead-e{background-position:0 -272px}.k-button:active .k-i-arrowhead-e,.k-button:not(.k-state-disabled):hover .k-i-arrowhead-e,.k-link:not(.k-state-disabled):hover>.k-i-arrowhead-e,.k-state-hover>*>.k-i-arrowhead-e,.k-state-hover>.k-i-arrowhead-e,.k-textbox:hover .k-i-arrowhead-e{background-position:-16px -272px}.k-i-arrowhead-s{background-position:0 -288px}.k-button:active .k-i-arrowhead-s,.k-button:not(.k-state-disabled):hover .k-i-arrowhead-s,.k-link:not(.k-state-disabled):hover>.k-i-arrowhead-s,.k-state-hover>*>.k-i-arrowhead-s,.k-state-hover>.k-i-arrowhead-s,.k-textbox:hover .k-i-arrowhead-s{background-position:-16px -288px}.k-i-arrowhead-w{background-position:0 -304px}.k-button:active .k-i-arrowhead-w,.k-button:not(.k-state-disabled):hover .k-i-arrowhead-w,.k-link:not(.k-state-disabled):hover>.k-i-arrowhead-w,.k-state-hover>*>.k-i-arrowhead-w,.k-state-hover>.k-i-arrowhead-w,.k-textbox:hover .k-i-arrowhead-w{background-position:-16px -304px}.k-i-expand,.k-plus,.k-plus-disabled{background-position:0 -192px}.k-button:active .k-i-expand,.k-button:active .k-plus,.k-button:active .k-plus-disabled,.k-button:not(.k-state-disabled):hover .k-i-expand,.k-button:not(.k-state-disabled):hover .k-plus,.k-button:not(.k-state-disabled):hover .k-plus-disabled,.k-link:not(.k-state-disabled):hover>.k-i-expand,.k-link:not(.k-state-disabled):hover>.k-plus,.k-link:not(.k-state-disabled):hover>.k-plus-disabled,.k-state-hover>*>.k-i-expand,.k-state-hover>*>.k-plus,.k-state-hover>*>.k-plus-disabled,.k-state-hover>.k-i-expand,.k-state-hover>.k-plus,.k-state-hover>.k-plus-disabled,.k-textbox:hover .k-i-expand,.k-textbox:hover .k-plus,.k-textbox:hover .k-plus-disabled{background-position:-16px -192px}.k-i-expand-w,.k-rtl .k-i-expand,.k-rtl .k-plus,.k-rtl .k-plus-disabled{background-position:0 -208px}.k-button:active .k-i-expand-w,.k-button:active .k-rtl .k-i-expand,.k-button:active .k-rtl .k-plus,.k-button:active .k-rtl .k-plus-disabled,.k-button:not(.k-state-disabled):hover .k-i-expand-w,.k-button:not(.k-state-disabled):hover .k-rtl .k-i-expand,.k-button:not(.k-state-disabled):hover .k-rtl .k-plus,.k-button:not(.k-state-disabled):hover .k-rtl .k-plus-disabled,.k-link:not(.k-state-disabled):hover>.k-i-expand-w,.k-link:not(.k-state-disabled):hover>.k-rtl .k-i-expand,.k-link:not(.k-state-disabled):hover>.k-rtl .k-plus,.k-link:not(.k-state-disabled):hover>.k-rtl .k-plus-disabled,.k-state-hover>*>.k-i-expand-w,.k-state-hover>*>.k-rtl .k-i-expand,.k-state-hover>*>.k-rtl .k-plus,.k-state-hover>*>.k-rtl .k-plus-disabled,.k-state-hover>.k-i-expand-w,.k-state-hover>.k-rtl .k-i-expand,.k-state-hover>.k-rtl .k-plus,.k-state-hover>.k-rtl .k-plus-disabled,.k-textbox:hover .k-i-expand-w,.k-textbox:hover .k-rtl .k-i-expand,.k-textbox:hover .k-rtl .k-plus,.k-textbox:hover .k-rtl .k-plus-disabled{background-position:-16px -208px}.k-i-collapse,.k-minus,.k-minus-disabled{background-position:0 -224px}.k-button:active .k-i-collapse,.k-button:active .k-minus,.k-button:active .k-minus-disabled,.k-button:not(.k-state-disabled):hover .k-i-collapse,.k-button:not(.k-state-disabled):hover .k-minus,.k-button:not(.k-state-disabled):hover .k-minus-disabled,.k-link:not(.k-state-disabled):hover>.k-i-collapse,.k-link:not(.k-state-disabled):hover>.k-minus,.k-link:not(.k-state-disabled):hover>.k-minus-disabled,.k-state-hover>*>.k-i-collapse,.k-state-hover>*>.k-minus,.k-state-hover>*>.k-minus-disabled,.k-state-hover>.k-i-collapse,.k-state-hover>.k-minus,.k-state-hover>.k-minus-disabled,.k-textbox:hover .k-i-collapse,.k-textbox:hover .k-minus,.k-textbox:hover .k-minus-disabled{background-position:-16px -224px}.k-i-collapse-w,.k-rtl .k-i-collapse,.k-rtl .k-minus,.k-rtl .k-minus-disabled{background-position:0 -240px}.k-button:active .k-i-collapse-w,.k-button:active .k-rtl .k-i-collapse,.k-button:active .k-rtl .k-minus,.k-button:active .k-rtl .k-minus-disabled,.k-button:not(.k-state-disabled):hover .k-i-collapse-w,.k-button:not(.k-state-disabled):hover .k-rtl .k-i-collapse,.k-button:not(.k-state-disabled):hover .k-rtl .k-minus,.k-button:not(.k-state-disabled):hover .k-rtl .k-minus-disabled,.k-link:not(.k-state-disabled):hover>.k-i-collapse-w,.k-link:not(.k-state-disabled):hover>.k-rtl .k-i-collapse,.k-link:not(.k-state-disabled):hover>.k-rtl .k-minus,.k-link:not(.k-state-disabled):hover>.k-rtl .k-minus-disabled,.k-state-hover>*>.k-i-collapse-w,.k-state-hover>*>.k-rtl .k-i-collapse,.k-state-hover>*>.k-rtl .k-minus,.k-state-hover>*>.k-rtl .k-minus-disabled,.k-state-hover>.k-i-collapse-w,.k-state-hover>.k-rtl .k-i-collapse,.k-state-hover>.k-rtl .k-minus,.k-state-hover>.k-rtl .k-minus-disabled,.k-textbox:hover .k-i-collapse-w,.k-textbox:hover .k-rtl .k-i-collapse,.k-textbox:hover .k-rtl .k-minus,.k-textbox:hover .k-rtl .k-minus-disabled{background-position:-16px -240px}.k-edit,.k-i-pencil{background-position:-32px 0}.k-button:active .k-edit,.k-button:active .k-i-pencil,.k-button:not(.k-state-disabled):hover .k-edit,.k-button:not(.k-state-disabled):hover .k-i-pencil,.k-link:not(.k-state-disabled):hover>.k-edit,.k-link:not(.k-state-disabled):hover>.k-i-pencil,.k-state-hover>*>.k-edit,.k-state-hover>*>.k-i-pencil,.k-state-hover>.k-edit,.k-state-hover>.k-i-pencil,.k-textbox:hover .k-edit,.k-textbox:hover .k-i-pencil{background-position:-48px 0}.k-delete,.k-group-delete,.k-i-close{background-position:-32px -16px; }.k-button:active .k-delete,.k-button:active .k-group-delete,.k-button:active .k-i-close,.k-button:not(.k-state-disabled):hover .k-delete,.k-button:not(.k-state-disabled):hover .k-group-delete,.k-button:not(.k-state-disabled):hover .k-i-close,.k-link:not(.k-state-disabled):hover>.k-delete,.k-link:not(.k-state-disabled):hover>.k-group-delete,.k-link:not(.k-state-disabled):hover>.k-i-close,.k-state-hover>*>.k-delete,.k-state-hover>*>.k-group-delete,.k-state-hover>*>.k-i-close,.k-state-hover>.k-delete,.k-state-hover>.k-group-delete,.k-state-hover>.k-i-close,.k-textbox:hover .k-delete,.k-textbox:hover .k-group-delete,.k-textbox:hover .k-i-close{background-position:-48px -16px}.k-si-close{background-position:-160px -80px}.k-button:active .k-si-close,.k-button:not(.k-state-disabled):hover .k-si-close,.k-link:not(.k-state-disabled):hover>.k-si-close,.k-state-hover>*>.k-si-close,.k-state-hover>.k-si-close,.k-textbox:hover .k-si-close{background-position:-176px -80px}.k-multiselect .k-delete{background-position:-160px -80px}.k-multiselect .k-state-hover .k-delete{background-position:-176px -80px}.k-i-tick,.k-insert,.k-update{background-position:-32px -32px}.k-button:active .k-i-tick,.k-button:active .k-insert,.k-button:active .k-update,.k-button:not(.k-state-disabled):hover .k-i-tick,.k-button:not(.k-state-disabled):hover .k-insert,.k-button:not(.k-state-disabled):hover .k-update,.k-link:not(.k-state-disabled):hover>.k-i-tick,.k-link:not(.k-state-disabled):hover>.k-insert,.k-link:not(.k-state-disabled):hover>.k-update,.k-state-hover>*>.k-i-tick,.k-state-hover>*>.k-insert,.k-state-hover>*>.k-update,.k-state-hover>.k-i-tick,.k-state-hover>.k-insert,.k-state-hover>.k-update,.k-textbox:hover .k-i-tick,.k-textbox:hover .k-insert,.k-textbox:hover .k-update{background-position:-48px -32px}.k-check:checked,.k-mobile-list .k-edit-field [type=checkbox],.k-mobile-list .k-edit-field [type=radio]{background-position:-32px -32px}.k-button:active .k-check:checked,.k-button:active .k-mobile-list .k-edit-field [type=checkbox],.k-button:active .k-mobile-list .k-edit-field [type=radio],.k-button:not(.k-state-disabled):hover .k-check:checked,.k-button:not(.k-state-disabled):hover .k-mobile-list .k-edit-field [type=checkbox],.k-button:not(.k-state-disabled):hover .k-mobile-list .k-edit-field [type=radio],.k-link:not(.k-state-disabled):hover>.k-check:checked,.k-link:not(.k-state-disabled):hover>.k-mobile-list .k-edit-field [type=checkbox],.k-link:not(.k-state-disabled):hover>.k-mobile-list .k-edit-field [type=radio],.k-state-hover>*>.k-check:checked,.k-state-hover>*>.k-mobile-list .k-edit-field [type=checkbox],.k-state-hover>*>.k-mobile-list .k-edit-field [type=radio],.k-state-hover>.k-check:checked,.k-state-hover>.k-mobile-list .k-edit-field [type=checkbox],.k-state-hover>.k-mobile-list .k-edit-field [type=radio],.k-textbox:hover .k-check:checked,.k-textbox:hover .k-mobile-list .k-edit-field [type=checkbox],.k-textbox:hover .k-mobile-list .k-edit-field [type=radio]{background-position:-48px -32px}.k-cancel,.k-denied,.k-i-cancel{background-position:-32px -48px}.k-button:active .k-cancel,.k-button:active .k-denied,.k-button:active .k-i-cancel,.k-button:not(.k-state-disabled):hover .k-cancel,.k-button:not(.k-state-disabled):hover .k-denied,.k-button:not(.k-state-disabled):hover .k-i-cancel,.k-link:not(.k-state-disabled):hover>.k-cancel,.k-link:not(.k-state-disabled):hover>.k-denied,.k-link:not(.k-state-disabled):hover>.k-i-cancel,.k-state-hover>*>.k-cancel,.k-state-hover>*>.k-denied,.k-state-hover>*>.k-i-cancel,.k-state-hover>.k-cancel,.k-state-hover>.k-denied,.k-state-hover>.k-i-cancel,.k-textbox:hover .k-cancel,.k-textbox:hover .k-denied,.k-textbox:hover .k-i-cancel{background-position:-48px -48px}.k-add,.k-i-plus{background-position:-32px -64px}.k-button:active .k-add,.k-button:active .k-i-plus,.k-button:not(.k-state-disabled):hover .k-add,.k-button:not(.k-state-disabled):hover .k-i-plus,.k-link:not(.k-state-disabled):hover>.k-add,.k-link:not(.k-state-disabled):hover>.k-i-plus,.k-state-hover>*>.k-add,.k-state-hover>*>.k-i-plus,.k-state-hover>.k-add,.k-state-hover>.k-i-plus,.k-textbox:hover .k-add,.k-textbox:hover .k-i-plus{background-position:-48px -64px}.k-filter,.k-i-funnel{background-position:-32px -80px}.k-button:active .k-filter,.k-button:active .k-i-funnel,.k-button:not(.k-state-disabled):hover .k-filter,.k-button:not(.k-state-disabled):hover .k-i-funnel,.k-link:not(.k-state-disabled):hover>.k-filter,.k-link:not(.k-state-disabled):hover>.k-i-funnel,.k-state-hover>*>.k-filter,.k-state-hover>*>.k-i-funnel,.k-state-hover>.k-filter,.k-state-hover>.k-i-funnel,.k-textbox:hover .k-filter,.k-textbox:hover .k-i-funnel{background-position:-48px -80px}.k-clear-filter,.k-i-funnel-clear{background-position:-32px -96px}.k-button:active .k-clear-filter,.k-button:active .k-i-funnel-clear,.k-button:not(.k-state-disabled):hover .k-clear-filter,.k-button:not(.k-state-disabled):hover .k-i-funnel-clear,.k-link:not(.k-state-disabled):hover>.k-clear-filter,.k-link:not(.k-state-disabled):hover>.k-i-funnel-clear,.k-state-hover>*>.k-clear-filter,.k-state-hover>*>.k-i-funnel-clear,.k-state-hover>.k-clear-filter,.k-state-hover>.k-i-funnel-clear,.k-textbox:hover .k-clear-filter,.k-textbox:hover .k-i-funnel-clear{background-position:-48px -96px}.k-i-lock{background-position:-64px 0}.k-button:active .k-i-lock,.k-button:not(.k-state-disabled):hover .k-i-lock,.k-link:not(.k-state-disabled):hover>.k-i-lock,.k-state-hover>*>.k-i-lock,.k-state-hover>.k-i-lock,.k-textbox:hover .k-i-lock{background-position:-80px 0}.k-i-unlock{background-position:-64px -16px}.k-button:active .k-i-unlock,.k-button:not(.k-state-disabled):hover .k-i-unlock,.k-link:not(.k-state-disabled):hover>.k-i-unlock,.k-state-hover>*>.k-i-unlock,.k-state-hover>.k-i-unlock,.k-textbox:hover .k-i-unlock{background-position:-80px -16px}.k-i-refresh{background-position:-32px -112px}.k-button:active .k-i-refresh,.k-button:not(.k-state-disabled):hover .k-i-refresh,.k-link:not(.k-state-disabled):hover>.k-i-refresh,.k-state-hover>*>.k-i-refresh,.k-state-hover>.k-i-refresh,.k-textbox:hover .k-i-refresh{background-position:-48px -112px}.k-i-exception{background-position:-160px -304px}.k-button:active .k-i-exception,.k-button:not(.k-state-disabled):hover .k-i-exception,.k-link:not(.k-state-disabled):hover>.k-i-exception,.k-state-hover>*>.k-i-exception,.k-state-hover>.k-i-exception,.k-textbox:hover .k-i-exception{background-position:-176px -304px}.k-i-restore{background-position:-32px -128px}.k-button:active .k-i-restore,.k-button:not(.k-state-disabled):hover .k-i-restore,.k-link:not(.k-state-disabled):hover>.k-i-restore,.k-state-hover>*>.k-i-restore,.k-state-hover>.k-i-restore,.k-textbox:hover .k-i-restore{background-position:-48px -128px}.k-i-maximize{background-position:-32px -144px}.k-button:active .k-i-maximize,.k-button:not(.k-state-disabled):hover .k-i-maximize,.k-link:not(.k-state-disabled):hover>.k-i-maximize,.k-state-hover>*>.k-i-maximize,.k-state-hover>.k-i-maximize,.k-textbox:hover .k-i-maximize{background-position:-48px -144px}.k-i-minimize{background-position:-64px -288px}.k-button:active .k-i-minimize,.k-button:not(.k-state-disabled):hover .k-i-minimize,.k-link:not(.k-state-disabled):hover>.k-i-minimize,.k-state-hover>*>.k-i-minimize,.k-state-hover>.k-i-minimize,.k-textbox:hover .k-i-minimize{background-position:-80px -288px}.k-i-pin{background-position:-160px -256px}.k-button:active .k-i-pin,.k-button:not(.k-state-disabled):hover .k-i-pin,.k-link:not(.k-state-disabled):hover>.k-i-pin,.k-state-hover>*>.k-i-pin,.k-state-hover>.k-i-pin,.k-textbox:hover .k-i-pin{background-position:-176px -256px}.k-i-unpin{background-position:-160px -272px}.k-button:active .k-i-unpin,.k-button:not(.k-state-disabled):hover .k-i-unpin,.k-link:not(.k-state-disabled):hover>.k-i-unpin,.k-state-hover>*>.k-i-unpin,.k-state-hover>.k-i-unpin,.k-textbox:hover .k-i-unpin{background-position:-176px -272px}.k-resize-se{background-position:-32px -160px}.k-button:active .k-resize-se,.k-button:not(.k-state-disabled):hover .k-resize-se,.k-link:not(.k-state-disabled):hover>.k-resize-se,.k-state-hover>*>.k-resize-se,.k-state-hover>.k-resize-se,.k-textbox:hover .k-resize-se{background-position:-48px -160px}.k-i-calendar{background-position:-32px -176px}.k-button:active .k-i-calendar,.k-button:not(.k-state-disabled):hover .k-i-calendar,.k-link:not(.k-state-disabled):hover>.k-i-calendar,.k-state-hover>*>.k-i-calendar,.k-state-hover>.k-i-calendar,.k-textbox:hover .k-i-calendar{background-position:-48px -176px}.k-i-clock{background-position:-32px -192px}.k-button:active .k-i-clock,.k-button:not(.k-state-disabled):hover .k-i-clock,.k-link:not(.k-state-disabled):hover>.k-i-clock,.k-state-hover>*>.k-i-clock,.k-state-hover>.k-i-clock,.k-textbox:hover .k-i-clock{background-position:-48px -192px}.k-si-plus{background-position:-32px -208px}.k-button:active .k-si-plus,.k-button:not(.k-state-disabled):hover .k-si-plus,.k-link:not(.k-state-disabled):hover>.k-si-plus,.k-state-hover>*>.k-si-plus,.k-state-hover>.k-si-plus,.k-textbox:hover .k-si-plus{background-position:-48px -208px}.k-si-minus{background-position:-32px -224px}.k-button:active .k-si-minus,.k-button:not(.k-state-disabled):hover .k-si-minus,.k-link:not(.k-state-disabled):hover>.k-si-minus,.k-state-hover>*>.k-si-minus,.k-state-hover>.k-si-minus,.k-textbox:hover .k-si-minus{background-position:-48px -224px}.k-i-search{background-position:-32px -240px}.k-button:active .k-i-search,.k-button:not(.k-state-disabled):hover .k-i-search,.k-link:not(.k-state-disabled):hover>.k-i-search,.k-state-hover>*>.k-i-search,.k-state-hover>.k-i-search,.k-textbox:hover .k-i-search{background-position:-48px -240px}.k-i-custom{background-position:-115px -113px}.k-button:active .k-i-custom,.k-button:not(.k-state-disabled):hover .k-i-custom,.k-link:not(.k-state-disabled):hover>.k-i-custom,.k-state-hover>*>.k-i-custom,.k-state-hover>.k-i-custom,.k-textbox:hover .k-i-custom{background-position:-141px -113px}.k-editor .k-i-custom{background-position:-111px -109px}.k-viewHtml{background-position:-288px -120px}.k-i-insert-n,.k-insert-top{background-position:-160px -32px}.k-button:active .k-i-insert-n,.k-button:active .k-insert-top,.k-button:not(.k-state-disabled):hover .k-i-insert-n,.k-button:not(.k-state-disabled):hover .k-insert-top,.k-link:not(.k-state-disabled):hover>.k-i-insert-n,.k-link:not(.k-state-disabled):hover>.k-insert-top,.k-state-hover>*>.k-i-insert-n,.k-state-hover>*>.k-insert-top,.k-state-hover>.k-i-insert-n,.k-state-hover>.k-insert-top,.k-textbox:hover .k-i-insert-n,.k-textbox:hover .k-insert-top{background-position:-176px -32px}.k-i-insert-m,.k-insert-middle{background-position:-160px -48px}.k-button:active .k-i-insert-m,.k-button:active .k-insert-middle,.k-button:not(.k-state-disabled):hover .k-i-insert-m,.k-button:not(.k-state-disabled):hover .k-insert-middle,.k-link:not(.k-state-disabled):hover>.k-i-insert-m,.k-link:not(.k-state-disabled):hover>.k-insert-middle,.k-state-hover>*>.k-i-insert-m,.k-state-hover>*>.k-insert-middle,.k-state-hover>.k-i-insert-m,.k-state-hover>.k-insert-middle,.k-textbox:hover .k-i-insert-m,.k-textbox:hover .k-insert-middle{background-position:-176px -48px}.k-i-insert-s,.k-insert-bottom{background-position:-160px -64px}.k-button:active .k-i-insert-s,.k-button:active .k-insert-bottom,.k-button:not(.k-state-disabled):hover .k-i-insert-s,.k-button:not(.k-state-disabled):hover .k-insert-bottom,.k-link:not(.k-state-disabled):hover>.k-i-insert-s,.k-link:not(.k-state-disabled):hover>.k-insert-bottom,.k-state-hover>*>.k-i-insert-s,.k-state-hover>*>.k-insert-bottom,.k-state-hover>.k-i-insert-s,.k-state-hover>.k-insert-bottom,.k-textbox:hover .k-i-insert-s,.k-textbox:hover .k-insert-bottom{background-position:-176px -64px}.k-drop-hint{background-position:0 -326px}.k-i-note,.k-warning{background-position:-160px -240px}.k-button:active .k-i-note,.k-button:active .k-warning,.k-button:not(.k-state-disabled):hover .k-i-note,.k-button:not(.k-state-disabled):hover .k-warning,.k-link:not(.k-state-disabled):hover>.k-i-note,.k-link:not(.k-state-disabled):hover>.k-warning,.k-state-hover>*>.k-i-note,.k-state-hover>*>.k-warning,.k-state-hover>.k-i-note,.k-state-hover>.k-warning,.k-textbox:hover .k-i-note,.k-textbox:hover .k-warning{background-position:-176px -240px}.k-i-sort-asc{background-position:-112px -240px}.k-button:active .k-i-sort-asc,.k-button:not(.k-state-disabled):hover .k-i-sort-asc,.k-link:not(.k-state-disabled):hover>.k-i-sort-asc,.k-state-hover>*>.k-i-sort-asc,.k-state-hover>.k-i-sort-asc,.k-textbox:hover .k-i-sort-asc{background-position:-128px -240px}.k-i-sort-desc{background-position:-112px -256px}.k-button:active .k-i-sort-desc,.k-button:not(.k-state-disabled):hover .k-i-sort-desc,.k-link:not(.k-state-disabled):hover>.k-i-sort-desc,.k-state-hover>*>.k-i-sort-desc,.k-state-hover>.k-i-sort-desc,.k-textbox:hover .k-i-sort-desc{background-position:-128px -256px}.k-i-group{background-position:-112px -272px}.k-button:active .k-i-group,.k-button:not(.k-state-disabled):hover .k-i-group,.k-link:not(.k-state-disabled):hover>.k-i-group,.k-state-hover>*>.k-i-group,.k-state-hover>.k-i-group,.k-textbox:hover .k-i-group{background-position:-128px -272px}.k-i-ungroup{background-position:-112px -288px}.k-button:active .k-i-ungroup,.k-button:not(.k-state-disabled):hover .k-i-ungroup,.k-link:not(.k-state-disabled):hover>.k-i-ungroup,.k-state-hover>*>.k-i-ungroup,.k-state-hover>.k-i-ungroup,.k-textbox:hover .k-i-ungroup{background-position:-128px -288px}.k-i-columns{background-position:-112px -304px}.k-button:active .k-i-columns,.k-button:not(.k-state-disabled):hover .k-i-columns,.k-link:not(.k-state-disabled):hover>.k-i-columns,.k-state-hover>*>.k-i-columns,.k-state-hover>.k-i-columns,.k-textbox:hover .k-i-columns{background-position:-128px -304px}.k-i-hbars{background-position:-64px -32px}.k-button:active .k-i-hbars,.k-button:not(.k-state-disabled):hover .k-i-hbars,.k-link:not(.k-state-disabled):hover>.k-i-hbars,.k-state-hover>*>.k-i-hbars,.k-state-hover>.k-i-hbars,.k-textbox:hover .k-i-hbars{background-position:-80px -32px}.k-i-vbars{background-position:-64px -48px}.k-button:active .k-i-vbars,.k-button:not(.k-state-disabled):hover .k-i-vbars,.k-link:not(.k-state-disabled):hover>.k-i-vbars,.k-state-hover>*>.k-i-vbars,.k-state-hover>.k-i-vbars,.k-textbox:hover .k-i-vbars{background-position:-80px -48px}.k-i-sum{background-position:-64px -64px}.k-button:active .k-i-sum,.k-button:not(.k-state-disabled):hover .k-i-sum,.k-link:not(.k-state-disabled):hover>.k-i-sum,.k-state-hover>*>.k-i-sum,.k-state-hover>.k-i-sum,.k-textbox:hover .k-i-sum{background-position:-80px -64px}.k-i-pdf{background-position:-64px -80px}.k-button:active .k-i-pdf,.k-button:not(.k-state-disabled):hover .k-i-pdf,.k-link:not(.k-state-disabled):hover>.k-i-pdf,.k-state-hover>*>.k-i-pdf,.k-state-hover>.k-i-pdf,.k-textbox:hover .k-i-pdf{background-position:-80px -80px}.k-i-excel{background-position:-64px -96px}.k-button:active .k-i-excel,.k-button:not(.k-state-disabled):hover .k-i-excel,.k-link:not(.k-state-disabled):hover>.k-i-excel,.k-state-hover>*>.k-i-excel,.k-state-hover>.k-i-excel,.k-textbox:hover .k-i-excel{background-position:-80px -96px}.k-i-rotatecw{background-position:-64px -112px}.k-button:active .k-i-rotatecw,.k-button:not(.k-state-disabled):hover .k-i-rotatecw,.k-link:not(.k-state-disabled):hover>.k-i-rotatecw,.k-state-hover>*>.k-i-rotatecw,.k-state-hover>.k-i-rotatecw,.k-textbox:hover .k-i-rotatecw{background-position:-80px -112px}.k-i-rotateccw{background-position:-64px -128px}.k-button:active .k-i-rotateccw,.k-button:not(.k-state-disabled):hover .k-i-rotateccw,.k-link:not(.k-state-disabled):hover>.k-i-rotateccw,.k-state-hover>*>.k-i-rotateccw,.k-state-hover>.k-i-rotateccw,.k-textbox:hover .k-i-rotateccw{background-position:-80px -128px}.k-i-undo{background-position:-64px -160px}.k-button:active .k-i-undo,.k-button:not(.k-state-disabled):hover .k-i-undo,.k-link:not(.k-state-disabled):hover>.k-i-undo,.k-state-hover>*>.k-i-undo,.k-state-hover>.k-i-undo,.k-textbox:hover .k-i-undo{background-position:-80px -160px}.k-i-redo{background-position:-64px -144px}.k-button:active .k-i-redo,.k-button:not(.k-state-disabled):hover .k-i-redo,.k-link:not(.k-state-disabled):hover>.k-i-redo,.k-state-hover>*>.k-i-redo,.k-state-hover>.k-i-redo,.k-textbox:hover .k-i-redo{background-position:-80px -144px}.k-i-shape{background-position:-64px -176px}.k-button:active .k-i-shape,.k-button:not(.k-state-disabled):hover .k-i-shape,.k-link:not(.k-state-disabled):hover>.k-i-shape,.k-state-hover>*>.k-i-shape,.k-state-hover>.k-i-shape,.k-textbox:hover .k-i-shape{background-position:-80px -176px}.k-i-connector{background-position:-64px -192px}.k-button:active .k-i-connector,.k-button:not(.k-state-disabled):hover .k-i-connector,.k-link:not(.k-state-disabled):hover>.k-i-connector,.k-state-hover>*>.k-i-connector,.k-state-hover>.k-i-connector,.k-textbox:hover .k-i-connector{background-position:-80px -192px}.k-i-kpi{background-position:-64px -208px}.k-button:active .k-i-kpi,.k-button:not(.k-state-disabled):hover .k-i-kpi,.k-link:not(.k-state-disabled):hover>.k-i-kpi,.k-state-hover>*>.k-i-kpi,.k-state-hover>.k-i-kpi,.k-textbox:hover .k-i-kpi{background-position:-80px -208px}.k-i-dimension{background-position:-64px -224px}.k-button:active .k-i-dimension,.k-button:not(.k-state-disabled):hover .k-i-dimension,.k-link:not(.k-state-disabled):hover>.k-i-dimension,.k-state-hover>*>.k-i-dimension,.k-state-hover>.k-i-dimension,.k-textbox:hover .k-i-dimension{background-position:-80px -224px}.k-file{background-position:0 0}.k-button:active .k-file,.k-button:not(.k-state-disabled):hover .k-file,.k-link:not(.k-state-disabled):hover>.k-file,.k-state-hover>*>.k-file,.k-state-hover>.k-file,.k-textbox:hover .k-file{background-position:-16px 0}.k-addfolder,.k-i-folder-add{background-position:-32px -272px}.k-button:active .k-addfolder,.k-button:active .k-i-folder-add,.k-button:not(.k-state-disabled):hover .k-addfolder,.k-button:not(.k-state-disabled):hover .k-i-folder-add,.k-link:not(.k-state-disabled):hover>.k-addfolder,.k-link:not(.k-state-disabled):hover>.k-i-folder-add,.k-state-hover>*>.k-addfolder,.k-state-hover>*>.k-i-folder-add,.k-state-hover>.k-addfolder,.k-state-hover>.k-i-folder-add,.k-textbox:hover .k-addfolder,.k-textbox:hover .k-i-folder-add{background-position:-48px -272px}.k-goup,.k-i-folder-up{background-position:-32px -288px}.k-button:active .k-goup,.k-button:active .k-i-folder-up,.k-button:not(.k-state-disabled):hover .k-goup,.k-button:not(.k-state-disabled):hover .k-i-folder-up,.k-link:not(.k-state-disabled):hover>.k-goup,.k-link:not(.k-state-disabled):hover>.k-i-folder-up,.k-state-hover>*>.k-goup,.k-state-hover>*>.k-i-folder-up,.k-state-hover>.k-goup,.k-state-hover>.k-i-folder-up,.k-textbox:hover .k-goup,.k-textbox:hover .k-i-folder-up{background-position:-48px -288px}.k-i-more{background-position:-64px -32px}.k-button:active .k-i-more,.k-button:not(.k-state-disabled):hover .k-i-more,.k-link:not(.k-state-disabled):hover>.k-i-more,.k-state-hover>*>.k-i-more,.k-state-hover>.k-i-more,.k-textbox:hover .k-i-more{background-position:-80px -32px}.k-i-gantt-toggle{background-position:-64px -240px}.k-button:active .k-i-gantt-toggle,.k-button:not(.k-state-disabled):hover .k-i-gantt-toggle,.k-link:not(.k-state-disabled):hover>.k-i-gantt-toggle,.k-state-hover>*>.k-i-gantt-toggle,.k-state-hover>.k-i-gantt-toggle,.k-textbox:hover .k-i-gantt-toggle{background-position:-80px -240px}.k-file>.k-icon{background-position:-115px -91px}.k-image{border:0}.k-breadcrumbs:hover .k-i-arrow-n{background-position:0 0}.k-breadcrumbs:hover .k-i-arrow-e{background-position:0 -16px}.k-gantt-views>.k-current-view>.k-link:after,.k-pager-numbers .k-current-page .k-link:after,.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after{background-position:0 -32px}.k-button:active .k-gantt-views>.k-current-view>.k-link:after,.k-button:active .k-pager-numbers .k-current-page .k-link:after,.k-button:active .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after,.k-button:not(.k-state-disabled):hover .k-gantt-views>.k-current-view>.k-link:after,.k-button:not(.k-state-disabled):hover .k-pager-numbers .k-current-page .k-link:after,.k-button:not(.k-state-disabled):hover .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after,.k-link:not(.k-state-disabled):hover>.k-gantt-views>.k-current-view>.k-link:after,.k-link:not(.k-state-disabled):hover>.k-pager-numbers .k-current-page .k-link:after,.k-link:not(.k-state-disabled):hover>.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after,.k-state-hover>*>.k-gantt-views>.k-current-view>.k-link:after,.k-state-hover>*>.k-pager-numbers .k-current-page .k-link:after,.k-state-hover>*>.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after,.k-state-hover>.k-gantt-views>.k-current-view>.k-link:after,.k-state-hover>.k-pager-numbers .k-current-page .k-link:after,.k-state-hover>.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after,.k-textbox:hover .k-gantt-views>.k-current-view>.k-link:after,.k-textbox:hover .k-pager-numbers .k-current-page .k-link:after,.k-textbox:hover .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view .k-link:after{background-position:-16px -32px}html .k-success-colored{color:#507f50;border-color:#d0dfd0;background-color:#f0fff0}html .k-info-colored{color:#50607f;border-color:#d0d9df;background-color:#f0f9ff}html .k-error-colored{color:#7f5050;border-color:#dfd0d0;background-color:#fff0f0}.k-inline-block{padding:0 2px}.k-loading,.k-loading-image{background-color:transparent;background-repeat:no-repeat;background-position:center center}.k-loading-image,.k-loading-mask,.k-loading-text{position:absolute}.k-loading-mask{z-index:100}.k-loading-mask .k-loading-progress{margin:auto;position:absolute;top:0;bottom:0;left:0;right:0}.k-loading-text{text-indent:-4000px;text-align:center}.k-loading-color,.k-loading-image{width:100%;height:100%}.k-loading-image{top:0;left:0;z-index:2}.k-loading-color{filter:alpha(opacity=30);opacity:.3}.k-content-frame{border:0;width:100%;height:100%}.k-pane>.k-splitter-overlay{filter:alpha(opacity=0);opacity:0;position:absolute}.k-drag-clue{position:absolute;z-index:10003;border-style:solid;border-width:1px;font-size:.9em;padding:.2em .4em;white-space:nowrap;cursor:default}.k-drag-status{margin-top:-3px;margin-right:4px;vertical-align:middle}.k-reorder-cue{position:absolute;width:1px;overflow:visible}.k-reorder-cue .k-icon{position:absolute;left:-4px;width:8px;height:4px}.k-reorder-cue .k-i-arrow-s{top:-4px;background-position:-4px -166px}.k-reorder-cue .k-i-arrow-n{bottom:-4px;background-position:-4px -134px}.k-scrollbar{position:absolute;overflow:scroll}.k-scrollbar-vertical{top:0;right:0;width:17px;height:100%;overflow-x:hidden}.k-touch-scrollbar{display:none;position:absolute;z-index:200000;height:8px;width:8px;border:1px solid #8a8a8a;background-color:#858585}@media only screen and (-webkit-min-device-pixel-ratio:2){body .k-touch-scrollbar{height:12px;width:12px;border-radius:7px}}.k-virtual-scrollable-wrap{overflow-x:auto}.k-current-time{background:red;position:absolute}.k-current-time-arrow-down{width:0;height:0;background:0 0;border-bottom:4px solid transparent;border-top:4px solid red;border-left:4px solid transparent;border-right:4px solid transparent}.k-current-time-arrow-left{width:0;height:0;background:0 0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-left:4px solid transparent;border-right:4px solid red}.k-current-time-arrow-right{width:0;height:0;background:0 0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-left:4px solid red;border-right:4px solid transparent}.k-animation-container,.k-animation-container *,.k-animation-container :after,.k-block .k-header,.k-list-container,.k-widget,.k-widget *,.k-widget :before{-webkit-box-sizing:content-box;box-sizing:content-box}.k-autocomplete,.k-block,.k-button,.k-edit-cell .k-widget,.k-grid-edit-row .k-widget,.k-grid-edit-row .text-box,.k-tabstrip>.k-content>.km-scroll-container,.k-textbox,.km-actionsheet>li,.km-shim,div.k-window-content{-webkit-box-sizing:border-box;box-sizing:border-box}.input-group .form-control{-webkit-box-sizing:border-box;box-sizing:border-box}.form-control.k-widget{padding:0}a.k-button:hover{text-decoration:none}.km-widget,.km-widget *{-webkit-background-clip:border-box;background-clip:border-box}.k-radio,input.k-checkbox{display:inline;opacity:0;width:0;margin:0;-webkit-appearance:none;overflow:hidden}.k-ff .k-radio,.k-ff input.k-checkbox{position:absolute}.k-checkbox-label{position:relative;padding-left:1.5em;vertical-align:middle;line-height:.875em;cursor:pointer}.k-checkbox-label:before{content:"";position:absolute;top:0;left:0;border-width:1px;border-style:solid;width:1em;height:1em;font-size:1em;line-height:1em;text-align:center}.k-checkbox:indeterminate+.k-checkbox-label:after{content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);border-width:1px;border-style:solid;width:8px;height:8px;font-size:1em;text-align:center;content:" ";margin-left:-2px}.k-checkbox:checked+.k-checkbox-label:before{content:"\2713"}.k-checkbox:disabled+.k-checkbox-label{cursor:auto}.k-radio-label{position:relative;padding-left:1.5em;vertical-align:middle;line-height:.875em;cursor:pointer}.k-radio-label:before{content:"";position:absolute;top:0;left:0;width:14px;height:14px;border-style:solid}.k-radio:checked+.k-radio-label:after{content:"";width:10px;height:10px;position:absolute;top:3px;left:3px}.k-radio:disabled+.k-radio-label{cursor:auto}.k-ie8 .k-radio,.k-ie8 input.k-checkbox{display:inline-block;width:auto}.k-ie8 .k-checkbox-label,.k-ie8 .k-radio-label{padding-left:0}.k-ie8 .k-checkbox-label:before,.k-ie8 .k-radio-label:after,.k-ie8 .k-radio-label:before{display:none}.k-rtl .k-checkbox-label,.k-rtl .k-radio-label{padding-right:1.5em}.k-rtl .k-checkbox-label:before,.k-rtl .k-radio-label:before{right:0}.k-rtl .k-radio:checked+.k-radio-label:after{right:3px}input.k-checkbox+label{-webkit-user-select:none}.k-pdf-export-shadow{position:absolute;overflow:hidden;left:-15000px;width:14400px}.km-native-scroller{overflow:auto;-webkit-overflow-scrolling:touch;-ms-touch-action:pan-x pan-y;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-scroll-snap-type:proximity}.k-rpanel-left{-webkit-transform:translateX(-100%) translateZ(0);-ms-transform:translateX(-100%) translateZ(0);transform:translateX(-100%) translateZ(0);left:0}.k-rpanel-right{-webkit-transform:translateX(100%) translateZ(0);-ms-transform:translateX(100%) translateZ(0);transform:translateX(100%) translateZ(0);right:0}.k-rpanel-left,.k-rpanel-right{position:fixed;display:block;overflow:auto;min-width:320px;height:100%;top:0}.k-rpanel-left.k-rpanel-expanded,.k-rpanel-right.k-rpanel-expanded{-webkit-transform:translateX(0) translateZ(0);-ms-transform:translateX(0) translateZ(0);transform:translateX(0) translateZ(0)}.k-rpanel-left+*,.k-rpanel-right+*{overflow:auto}.k-rpanel-top{position:static;max-height:0}.k-rpanel-top.k-rpanel-expanded{max-height:568px;overflow:visible!important}.k-edit-form{margin:0;padding:0}.k-window>div.k-popup-edit-form{padding:1em 0}.k-grid-edit-row .k-edit-form td{border-bottom-width:0}.k-edit-form-container{position:relative;width:400px}.k-edit-form-container .editor-label,.k-edit-label{float:left;clear:both;width:30%;padding:.4em 0 1em;margin-left:2%;text-align:right}.k-edit-field,.k-edit-form-container .editor-field{float:right;clear:right;width:60%;margin-right:2%;padding:0 0 .6em}.k-edit-field>input[type=checkbox],.k-edit-field>input[type=radio]{margin-top:.4em}.k-edit-form-container .k-button{margin:0 .16em}.k-edit-field>.k-button:first-child,.k-edit-field>input[type=checkbox]:first-child,.k-edit-field>input[type=radio]:first-child,.k-edit-field>label:first-child>input[type=checkbox]{margin-left:0}.k-edit-form-container .k-edit-buttons{clear:both;text-align:right;border-width:1px 0 0;border-style:solid;position:relative;bottom:-1em;padding:.6em}div.k-window{display:inline-block;position:absolute;z-index:10001;border-style:solid;border-width:1px;padding-top:2em}.k-block>.k-header,.k-window-titlebar{position:absolute;width:100%;height:1.1em;border-bottom-style:solid;border-bottom-width:1px;margin-top:-2em;padding:.4em 0;font-size:1.2em;white-space:nowrap;min-height:16px}.k-block>.k-header{position:relative;margin:-2px 0 10px -2px;padding:.3em 2px}.k-window-title{position:absolute;left:.44em;right:.44em;overflow:hidden;cursor:default;text-overflow:ellipsis}.k-window-title .k-image{margin:0 5px 0 0;vertical-align:middle}div.k-window-titleless{padding-top:0}div.k-window-content{position:relative;height:100%;padding:.58em;overflow:auto;outline:0}div.k-window-iframecontent{padding:0;overflow:visible}.k-window-content>.km-scroll-container{height:100%}.k-window-titlebar .k-window-actions{position:absolute;top:0;right:.3em;padding-top:.3em;white-space:nowrap}.k-window-titlebar .k-window-action{display:inline-block;width:16px;height:16px;padding:2px;text-decoration:none;vertical-align:middle;opacity:.7}.k-window-titlebar .k-state-hover{border-style:solid;border-width:1px;padding:1px;opacity:1}.k-window-action .k-icon{margin:0;vertical-align:top}.k-window>.k-resize-handle{position:absolute;z-index:1;background-color:#fff;font-size:0;line-height:6px;filter:alpha(opacity=0);opacity:0;zoom:1}.k-resize-n{top:-3px;left:0;width:100%;height:6px;cursor:n-resize}.k-resize-e{top:0;right:-3px;width:6px;height:100%;cursor:e-resize}.k-resize-s{bottom:-3px;left:0;width:100%;height:6px;cursor:s-resize}.k-resize-w{top:0;left:-3px;width:6px;height:100%;cursor:w-resize}.k-resize-se{bottom:-3px;right:-3px;width:16px;height:16px;cursor:se-resize}.k-resize-sw{bottom:-3px;left:-3px;width:6px;height:6px;cursor:sw-resize}.k-resize-ne{top:-3px;right:-3px;width:6px;height:6px;cursor:ne-resize}.k-resize-nw{top:-3px;left:-3px;width:6px;height:6px;cursor:nw-resize}.k-overlay{position:fixed;top:0;left:0;z-index:10001;width:100%;height:100%;background-color:#000;filter:alpha(opacity=50);opacity:.5}.k-window .k-overlay{position:absolute;width:100%;height:100%;background-color:#fff;filter:alpha(opacity=0);opacity:0}.k-action-buttons{clear:both;text-align:right;border-width:1px 0 0;border-style:solid;position:relative;bottom:-1em;padding:.6em;margin:0 -1em}.k-action-buttons .k-button{display:inline-block;margin:0 0 0 6px;min-width:75px}.k-tabstrip{margin:0;padding:0;zoom:1;position:relative}.k-tabstrip-items{padding:.3em .3em 0}.k-tabstrip-scrollable .k-tabstrip-items{white-space:nowrap;overflow:hidden}.k-tabstrip>.k-button{position:absolute;top:.4em;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-tabstrip-bottom>.k-button{top:auto;bottom:.4em}.k-tabstrip-prev{left:.4em}.k-tabstrip-next{right:.4em}.k-panelbar .k-tabstrip-items .k-item,.k-tabstrip-items .k-item{list-style-type:none;display:inline-block;position:relative;border-style:solid;border-width:1px 1px 0;margin:0 -1px 0 0;padding:0;vertical-align:top}.k-panelbar .k-tabstrip-items .k-state-active,.k-tabstrip-items .k-state-active,.k-tabstrip-items .k-tab-on-top{margin-bottom:-1px;padding-bottom:1px}.k-tabstrip-items .k-tab-on-top{z-index:1}.k-panelbar .k-tabstrip-items .k-link,.k-tabstrip-items .k-link{display:inline-block;border-bottom-width:0;padding:.5em .92em}.k-panelbar .k-tabstrip-items .k-icon,.k-tabstrip-items .k-icon{margin:-1px 4px 0 -3px;vertical-align:top}.k-panelbar .k-tabstrip-items .k-item .k-image,.k-panelbar .k-tabstrip-items .k-item .k-sprite,.k-tabstrip-items .k-item .k-image,.k-tabstrip-items .k-item .k-sprite{margin:-3px 3px 0 -6px;vertical-align:middle}.k-tabstrip-items .k-loading{top:0;left:0;height:0;width:20%;position:absolute;background:0 0;border-top:1px solid transparent;border-color:inherit;-webkit-transition:width .2s linear;transition:width .2s linear;-webkit-transition:"width 200ms linear";transition:"width 200ms linear";-webkit-animation:k-tab-loader 1s ease-in-out infinite;animation:k-tab-loader 1s ease-in-out infinite}.k-tabstrip-items .k-progress{-webkit-animation:none;animation:none}.k-tabstrip-items .k-loading.k-complete{width:100%;-webkit-animation:none;animation:none}.k-panelbar .k-tabstrip>.k-content,.k-tabstrip>.k-content{position:static;border-style:solid;border-width:1px;margin:0 .286em .3em;padding:.3em .92em;zoom:1}.k-tabstrip>.k-content{display:none;overflow:auto}.k-tabstrip>.k-content.km-scroll-wrapper{padding:0}.k-tabstrip>.k-content>.km-scroll-container{padding:.3em .92em}@-webkit-keyframes k-tab-loader{0%{left:0}50%{left:80%}100%{left:0}}@keyframes k-tab-loader{0%{left:0}50%{left:80%}100%{left:0}}.k-tabstrip-left>div.k-content,.k-tabstrip-right>div.k-content{margin:.286em .3em}.k-tabstrip-left>.k-tabstrip-items .k-item,.k-tabstrip-right>.k-tabstrip-items .k-item{display:block;margin-bottom:-1px}.k-tabstrip-left>.k-tabstrip-items .k-link,.k-tabstrip-right>.k-tabstrip-items .k-link{display:block}.k-panelbar .k-tabstrip-left>.k-tabstrip-items .k-state-active,.k-panelbar .k-tabstrip-right>.k-tabstrip-items .k-state-active,.k-tabstrip-left>.k-tabstrip-items .k-state-active,.k-tabstrip-left>.k-tabstrip-items .k-tab-on-top,.k-tabstrip-right>.k-tabstrip-items .k-state-active,.k-tabstrip-right>.k-tabstrip-items .k-tab-on-top{margin-bottom:-1px;padding-bottom:0}.k-tabstrip-left>.k-tabstrip-items{float:left;padding:.25em 0 .3em .3em}.k-tabstrip-left>.k-tabstrip-items .k-item{border-width:1px 0 1px 1px;border-radius:3px 0 0 3px}.k-tabstrip-left>.k-tabstrip-items .k-state-active{border-width:1px 0 1px 1px}.k-panelbar .k-tabstrip-left>.k-tabstrip-items .k-state-active,.k-tabstrip-left>.k-tabstrip-items .k-state-active,.k-tabstrip-left>.k-tabstrip-items .k-tab-on-top{margin-right:-2px;padding-right:1px}.k-tabstrip-right>.k-tabstrip-items{float:right;padding:.25em .3em .3em 0}.k-tabstrip-right>.k-tabstrip-items .k-item{border-width:1px 1px 1px 0;border-radius:0 3px 3px 0}.k-tabstrip-right>.k-tabstrip-items .k-state-active{border-width:1px 1px 1px 0}.k-panelbar .k-tabstrip-right>.k-tabstrip-items .k-state-active,.k-tabstrip-right>.k-tabstrip-items .k-state-active,.k-tabstrip-right>.k-tabstrip-items .k-tab-on-top{margin-left:-1px;padding-left:1px}.k-tabstrip-bottom>.k-tabstrip-items{margin-top:-1px;padding:0 .3em .3em}.k-panelbar .k-tabstrip-bottom>.k-content,.k-tabstrip-bottom>.k-content{margin:.3em .286em 0;z-index:1;position:relative}.k-tabstrip-bottom>.k-tabstrip-items .k-item{border-width:0 1px 1px;border-radius:0 0 4px 4px}.k-tabstrip-bottom>.k-tabstrip-items .k-state-active{margin-bottom:0;padding-bottom:0}.k-tabstrip-bottom>.k-content{min-height:100px}.k-tabstrip-bottom>.k-tabstrip-items .k-loading{top:auto;bottom:0}.k-panelbar{zoom:1}.k-panel>.k-item,.k-panelbar>.k-item{list-style-type:none;display:block;border-width:0;margin:0;zoom:1;border-radius:0}.k-panelbar .k-link>.k-image,.k-panelbar .k-link>.k-sprite{float:left;margin-top:4px;margin-right:5px;vertical-align:middle}.k-panel>.k-item>.k-link,.k-panelbar>.k-item>.k-link{display:block;position:relative;border-bottom-style:solid;border-bottom-width:1px;padding:0 1em;line-height:2.34em;text-decoration:none;zoom:1}.k-panelbar-collapse,.k-panelbar-expand{position:absolute;top:50%;right:4px;margin-top:-8px}.k-panelbar .k-content,.k-panelbar .k-panel{position:relative;border-bottom-style:solid;border-bottom-width:1px;margin:0;padding:0;zoom:1}.k-panel>.k-item>.k-link{border-bottom:0;font-size:.95em;line-height:2.2}.k-panel .k-panel>.k-item>.k-link{padding-left:2em}.k-panelbar .k-i-seek-e .k-link{border-bottom:0}.k-panel .k-panel{border-bottom:0}.k-menu{cursor:default}.k-menu,.k-menu .k-menu-group{list-style:none;margin:0;padding:0;zoom:1}.k-menu:after{content:'';display:block;width:99%;height:0;float:inherit;clear:both}.k-menu .k-item{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}.k-menu .k-item div{-webkit-user-select:default;-moz-user-select:default;-ms-user-select:default;user-select:default}.k-menu .k-item .k-item,ul.k-menu-vertical>.k-item{display:block;float:none;border-width:0}.k-menu .k-image,.k-menu .k-item>.k-link>.k-icon,.k-menu .k-sprite{margin:-2px 4px 0 -4px;vertical-align:middle}.k-menu .k-item>.k-link>.k-icon{margin:-2px 0 0}.k-menu .k-item>.k-link{display:block;padding:.5em 1.1em .4em;line-height:1.34em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-menu .k-menu-group{display:none;border-style:solid;border-width:1px;overflow:visible;white-space:nowrap}.k-menu .k-menu-group>.k-item{display:block;border-width:0}.k-menu .k-item,.k-widget.k-menu-horizontal>.k-item{position:relative;float:left;border-style:solid;border-width:0 1px 0 0;vertical-align:top;zoom:1;-webkit-box-sizing:content-box;box-sizing:content-box}.k-context-menu.k-menu-vertical>.k-item>.k-link,.k-menu .k-menu-group .k-item>.k-link{padding:.28em 1.8em .38em .9em}.k-context-menu.k-menu-horizontal>.k-separator{display:none}.k-context-menu.k-menu-horizontal>.k-item{-webkit-box-sizing:border-box;box-sizing:border-box}.k-context-menu.k-menu-horizontal>.k-last{border:0}.k-menu .k-item>.k-link>.k-i-arrow-s{margin-right:-8px}.k-menu .k-item>.k-link>.k-i-arrow-e{position:absolute;top:50%;margin-top:-8px;right:2px;right:.2rem}.k-menu .k-animation-container{border:0}.k-menu .k-animation-container,.k-menu .k-menu-group{position:absolute;left:0}.k-menu .k-animation-container .k-animation-container,.k-menu .k-menu-group .k-menu-group,.k-menu-vertical .k-animation-container,.k-menu-vertical .k-menu-group{top:0;left:0}.k-menu .k-animation-container .k-menu-group{top:auto;left:auto;margin-left:-1px}.k-menu .k-animation-container,.k-popup .k-animation-container{margin-top:-1px;padding-left:1px}.k-ie .k-menu .k-animation-container,.k-ie .k-popup .k-animation-container{margin-top:-2px}.k-popup .k-animation-container .k-popup{margin-left:-1px}ul.k-menu .k-separator{padding:.25em 0;height:100%;width:1px;font-size:0;line-height:0;border-width:0 1px 0 0}.k-menu .k-menu-group .k-separator,ul.k-menu-vertical .k-separator{padding:0;height:1px;width:100%;border-width:1px 0 0}.k-context-menu{border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-calendar{position:relative;display:inline-block;width:16.917em;overflow:hidden}.k-calendar .k-link,.k-calendar td{text-decoration:none}.k-calendar .k-action-link{text-decoration:underline}.k-calendar .k-footer,.k-calendar .k-header{position:relative;text-align:center;zoom:1}.k-widget.k-calendar .k-nav-next,.k-widget.k-calendar .k-nav-prev{position:absolute;top:.16666em;line-height:1.8333em;height:1.8333em}.k-widget.k-calendar .k-nav-prev{left:1%}.k-widget.k-calendar .k-nav-next{right:1%}.k-calendar .k-content{float:left;border-spacing:0;width:100%;height:14.167em;border-width:0;margin:0;table-layout:fixed;outline:0}.k-calendar .k-content,.k-calendar .k-content th{text-align:right}.k-calendar .k-animation-container .k-content{height:100%}.k-widget.k-calendar .k-nav-fast{display:inline-block;width:75%;height:1.8333em;line-height:1.8333em;margin:.16666em -.08333em .3333em 0}.k-calendar .k-header .k-icon{vertical-align:middle}.k-calendar .k-header .k-link.k-nav-next,.k-calendar .k-header .k-link.k-nav-prev{height:1.8333em;width:1.8333em}.k-calendar th{border-bottom-style:solid;border-bottom-width:1px;padding:.4em .45em .4em .1em;font-weight:400;cursor:default}.k-calendar td{padding:.08333em;cursor:pointer}.k-calendar .k-state-focus{border-style:dotted;border-width:.08333em;padding:0}.k-calendar .k-content .k-link{display:block;overflow:hidden;min-height:1.8333em;line-height:1.8333em;padding:0 .45em 0 .1em}.k-calendar .k-meta-view .k-link{padding:.25em 0 .3em;text-align:center}.k-calendar .k-footer{clear:both}.k-calendar .k-footer .k-nav-today,.k-calendar .k-footer>.k-state-disabled{display:block;height:100%;padding:.5em 0}.k-calendar .k-nav-today:hover{text-decoration:underline}.k-toolbar .k-split-button,span.k-colorpicker,span.k-combobox,span.k-datepicker,span.k-datetimepicker,span.k-dropdown,span.k-numerictextbox,span.k-timepicker{background-image:none}.k-autocomplete,.k-colorpicker,.k-combobox,.k-datepicker,.k-datetimepicker,.k-dropdown,.k-numerictextbox,.k-selectbox,.k-textbox,.k-timepicker,.k-toolbar .k-split-button{position:relative;display:inline-block;width:12.4em;overflow:visible;border-width:0;vertical-align:middle}.k-filter-menu .k-combobox,.k-filter-menu .k-datepicker,.k-filter-menu .k-datetimepicker,.k-filter-menu .k-dropdown,.k-filter-menu .k-numerictextbox,.k-filter-menu .k-textbox,.k-filter-menu .k-timepicker{width:13.2em}.k-autocomplete,.k-colorpicker,.k-combobox,.k-datepicker,.k-datetimepicker,.k-dropdown,.k-numerictextbox,.k-selectbox,.k-timepicker,.k-toolbar .k-split-button{white-space:nowrap}.k-colorpicker,.k-toolbar .k-split-button{width:auto}.k-datetimepicker{width:15em}.k-autocomplete,.k-numeric-wrap,.k-picker-wrap{position:relative;cursor:default}.k-dropdown-wrap{position:relative}.k-dropdown-wrap,.k-numeric-wrap,.k-picker-wrap{display:block}.k-block,.k-content,.k-grid,.k-header-column-menu,.k-panelbar,.k-slider,.k-splitter,.k-treeview,.k-widget{outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.k-block,.k-calendar,.k-grid-header .k-link,.k-header-column-menu,.k-pager-wrap,.k-slider,.k-splitbar,.k-treeview{-webkit-touch-callout:none}.k-list-scroller{position:relative;overflow:auto}.k-popup.k-calendar-container,.k-popup.k-list-container{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);padding:2px;border-width:1px;border-style:solid}.k-autocomplete.k-state-border-down,.k-dropdown-wrap.k-state-border-down,.k-list-container.k-state-border-down,.k-numeric-wrap.k-state-border-down,.k-picker-wrap.k-state-border-down{border-bottom-width:0;padding-bottom:1px}.k-list-container .km-scroll-container{padding-bottom:6px}.k-autocomplete,.k-dropdown-wrap,.k-numeric-wrap,.k-picker-wrap,.k-textbox{border-width:1px;border-style:solid;padding:0 1.9em 0 0}.k-numeric-wrap.k-expand-padding{padding-right:0}.k-autocomplete,.k-textbox{padding:0}.k-textbox.k-space-left{padding-left:1.9em}.k-textbox.k-space-right{padding-right:1.9em}.k-textbox .k-icon{top:50%;margin:-8px 0 0;position:absolute}.k-space-left .k-icon{left:3px}.k-space-right .k-icon{right:3px}span.k-textbox:after{content:"\a0";display:block;height:.4px;overflow:hidden}.k-autocomplete,.k-dropdown-wrap.k-state-focused,.k-dropdown-wrap.k-state-hover,.k-numeric-wrap.k-state-focused,.k-numeric-wrap.k-state-hover,.k-picker-wrap.k-state-focused,.k-picker-wrap.k-state-hover{-webkit-transition:-webkit-box-shadow .15s ease-out;transition:box-shadow .15s ease-out;-webkit-transition:"box-shadow .15s ease-out";transition:"box-shadow .15s ease-out"}.k-combobox .k-input,.k-numeric-wrap .k-input,.k-picker-wrap .k-input,.k-textbox>input{width:100%;vertical-align:top}.k-dropdown-wrap .k-input,.k-numeric-wrap .k-input,.k-picker-wrap .k-input,.k-selectbox .k-input{font-family:inherit;border-width:0;outline:0}.k-dropdown .k-input,.k-selectbox .k-input{background:0 0}.k-dropdown-wrap .k-select,.k-numeric-wrap .k-select,.k-picker-wrap .k-select{position:absolute;top:0;right:0;display:inline-block;vertical-align:top;text-decoration:none}.k-combobox .k-select,.k-numeric-wrap .k-select,.k-picker-wrap .k-select{border-style:solid;border-width:0 0 0 1px;border-color:inherit}span.k-datetimepicker .k-select,span.k-datetimepicker .k-select+.k-select{right:0}.k-autocomplete .k-input,.k-textbox>input{display:block}.k-dropdown .k-select,.k-selectbox .k-select{overflow:hidden;border:0;text-decoration:none;font:inherit;color:inherit}.k-dropdown .k-input,.k-selectbox .k-input{display:block;overflow:hidden;text-overflow:ellipsis}.k-autocomplete .k-input,.k-dropdown-wrap .k-input,.k-numeric-wrap .k-input,.k-picker-wrap .k-input,.k-selectbox .k-input,.k-textbox>input{height:1.65em;line-height:1.65em;padding:.177em 0;text-indent:.33em;border:0;margin:0}.k-combobox .k-dropdown-wrap:before,.k-numeric-wrap:before,.k-picker-wrap:before{content:"\a0";display:inline-block;width:0;height:1.65em;padding-bottom:.3em}.k-webkit .k-combobox .k-dropdown-wrap:before,.k-webkit .k-numeric-wrap:before,.k-webkit .k-picker-wrap:before{padding-bottom:.38em}.km.root .k-combobox .k-dropdown-wrap:before,.km.root .k-numeric-wrap:before,.km.root .k-picker-wrap:before{content:none}.k-combobox .k-input,.k-numeric-wrap .k-input,.k-picker-wrap .k-input{display:inline}.k-dropdown-wrap .k-select,.k-numeric-wrap .k-select,.k-picker-wrap .k-select{min-height:1.65em;line-height:2em;vertical-align:middle;-moz-box-sizing:border-box;text-align:center;width:1.9em;height:100%}.k-numeric-wrap .k-select{padding:0}body .k-datetimepicker .k-select{border-radius:0}.k-combobox .k-icon,.k-dropdown,.k-selectbox .k-icon{cursor:pointer}.k-popup{border-style:solid;border-width:1px}.k-list-optionlabel,.k-popup .k-item{cursor:default}.k-popup .k-calendar{border:0}.k-list{height:auto}.k-fieldselector .k-list .k-item,.k-list-optionlabel,.k-popup .k-list .k-item,.k-popup>.k-group-header,.k-popup>.k-virtual-wrap>.k-group-header{padding:1px 5px 1px 5px;line-height:1.8em;min-height:1.8em}.k-popup .k-list .k-item{border-width:1px;border-style:solid;border-color:transparent;padding:0 4px}.k-popup .k-list .k-item>.k-group{top:-1px}.k-group-header+div>.k-list>.k-item.k-first:before{content:" ";display:block;border-top-width:1px;border-top-style:solid;position:absolute;top:-1px;left:0;right:0}.k-popup>.k-group-header,.k-popup>.k-virtual-wrap>.k-group-header{padding-right:22px}.k-overflow-container .k-item{padding:1px}.k-overflow-container .k-button.k-state-disabled,.k-overflow-container .k-button.k-state-disabled:hover,.k-overflow-container>.k-state-disabled .k-button{border:0;background:0 0}.k-fieldselector .k-list .k-item,.k-list-optionlabel.k-state-focused,.k-list-optionlabel.k-state-selected,.k-overflow-container .k-state-focused,.k-overflow-container .k-state-hover,.k-overflow-container .k-state-selected,.k-popup .k-list .k-state-focused,.k-popup .k-list .k-state-hover,.k-popup .k-list .k-state-selected{padding:0 4px;border-width:1px;border-style:solid}.k-list-filter{position:relative;margin-bottom:2px}.k-list-filter>.k-textbox{padding-right:20px;width:100%}.k-list-filter>.k-icon{position:absolute;right:6px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.km-root .k-list-filter>.k-textbox{padding-left:0;padding-right:0;border-left-width:0;border-right-width:0}.k-multiselect-wrap{position:relative;border-width:0;border-style:solid;border-radius:4px;border-color:#C5C5C5;background-color:#FFF;min-height:2.04em}.k-multiselect-wrap .k-input{background-color:transparent;height:1.31em;line-height:1.31em;padding:.18em 0;text-indent:.33em;border:0;margin:1px 0 0;float:left}.k-multiselect-wrap .k-input::-ms-clear{display:none}.k-multiselect-wrap li{margin:1px 0 1px 1px;padding:.1em 1.6em .1em .4em;line-height:1.5em;float:left;position:relative}.k-autocomplete .k-loading,.k-multiselect .k-loading{position:absolute;right:3px;bottom:4px}.k-multiselect .k-loading-hidden{visibility:hidden}.k-multiselect-wrap .k-select{position:absolute;top:0;bottom:0;right:0;padding:.1em .2em}.k-datetimepicker .k-picker-wrap{padding-right:3.8em}.k-datetimepicker .k-select{width:3.8em}.k-datetimepicker .k-picker-wrap .k-icon{margin:0 2px}.k-picker-wrap .k-icon{cursor:pointer}.k-button,.k-datepicker,.k-datetimepicker,.k-textbox,.k-timepicker{display:inline-block;vertical-align:middle}.k-picker-wrap .k-input{margin:0}.k-time-popup .k-item{padding:1px 3px}.k-input{padding:.25em 0}.k-input,.k-textbox>input{outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.k-textbox{outline:0}input.k-textbox,textarea.k-textbox{padding:2px .3em}input.k-textbox{height:2.13em;text-indent:.33em;line-height:1.6em}.k-ie input.k-textbox{text-indent:.165em}.k-ff input.k-textbox{height:2.17em}textarea.k-textbox{height:auto}span.k-numerictextbox{background-color:transparent}.k-numerictextbox .k-input{margin:0}.k-numerictextbox .k-link{display:block;height:1em;line-height:1em;vertical-align:middle;border-width:0;padding:0}.k-numerictextbox .k-icon{height:11px}.k-numeric-wrap .k-input::-webkit-inner-spin-button{-webkit-appearance:none}.k-colorpicker .k-picker-wrap{line-height:2em}.k-colorpicker .k-selected-color{vertical-align:top;line-height:0;display:inline-block;height:2em;width:2em}.k-colorpicker .k-tool-icon{position:relative;top:-2px;display:inline-block;padding:3px 3px 2px;font-size:0;line-height:0;margin-right:3px;margin-left:2px;margin-bottom:3px;background-repeat:no-repeat;vertical-align:middle;width:16px;height:16px;-ms-high-contrast-adjust:none}.k-colorpicker .k-tool-icon .k-selected-color{display:block;height:3px;width:16px;position:absolute;left:3px;bottom:-3px;border-radius:0!important}.k-colorpicker .k-select{cursor:pointer}.k-disabled-overlay{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#fff;opacity:.5;filter:alpha(opacity=50)}.k-colorpalette{position:relative;line-height:0;border-width:0;display:inline-block}.k-colorpalette .k-palette{border-collapse:collapse;position:relative;width:100%;height:100%}.k-colorpalette .k-item{width:14px;height:14px;overflow:hidden;-ms-high-contrast-adjust:none}.k-colorpalette .k-item.k-state-selected,.k-colorpalette .k-item.k-state-selected:hover{z-index:100;background:0 0;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.45);box-shadow:0 1px 3px 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.45);position:relative}.k-colorpalette .k-item:hover{z-index:101;position:relative;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.3);box-shadow:0 1px 3px 1px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.3)}.k-flatcolorpicker{position:relative;display:inline-block;width:250px;padding-bottom:5px}div.k-flatcolorpicker{background-color:transparent;background-image:none}.k-flatcolorpicker .k-selected-color{background-image:url(textures/transtexture.png);background-position:50% 50%;text-align:right}.k-flatcolorpicker .k-selected-color input.k-color-value{font-family:Consolas,"Ubuntu Mono","Lucida Console","Courier New",monospace;padding:.75em .3em .65em 1em;border:0;margin:0;width:70%}.k-flatcolorpicker .k-hsv-rectangle{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pinch-zoom double-tap-zoom}.k-flatcolorpicker .k-hsv-rectangle .k-draghandle{cursor:pointer;position:absolute;z-index:10;left:50%;top:50%;width:8px;height:8px;border:1px solid #eee;margin-left:-5px;margin-top:-5px;border-radius:6px;-webkit-box-shadow:0 1px 2px #444;box-shadow:0 1px 2px #444;background:0 0}.k-flatcolorpicker .k-hsv-rectangle .k-draghandle:focus,.k-flatcolorpicker .k-hsv-rectangle .k-draghandle:hover{background:0 0;border-color:#fff;-webkit-box-shadow:0 1px 5px #000;box-shadow:0 1px 5px #000}.k-flatcolorpicker .k-hsv-rectangle.k-dragging,.k-flatcolorpicker .k-hsv-rectangle.k-dragging *{cursor:none}.k-flatcolorpicker .k-slider-horizontal{height:20px;width:90%;margin:0 5%}.k-flatcolorpicker .k-slider-horizontal .k-slider-track{-webkit-box-shadow:0 1px 0 #fff,0 -1px 0 #999;box-shadow:0 1px 0 #fff,0 -1px 0 #999}.k-flatcolorpicker .k-hue-slider,.k-flatcolorpicker .k-transparency-slider{display:block}.k-flatcolorpicker .k-hue-slider .k-slider-selection,.k-flatcolorpicker .k-transparency-slider .k-slider-selection{background:0 0}.k-flatcolorpicker .k-hue-slider .k-draghandle,.k-flatcolorpicker .k-transparency-slider .k-draghandle{background:0 0;border:3px solid #eee;margin-top:1px;height:8px;width:8px;-webkit-box-shadow:0 1px 4px #444;box-shadow:0 1px 4px #444}.k-flatcolorpicker .k-hue-slider .k-draghandle:focus,.k-flatcolorpicker .k-hue-slider .k-draghandle:hover,.k-flatcolorpicker .k-transparency-slider .k-draghandle:focus,.k-flatcolorpicker .k-transparency-slider .k-draghandle:hover{background:0 0;border-color:#fff;-webkit-box-shadow:0 1px 5px #000;box-shadow:0 1px 5px #000;border-width:2px;padding:1px}.k-flatcolorpicker .k-hue-slider .k-slider-track{background:-webkit-gradient(linear,left top,right top,from(red),color-stop(16%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(84%,#f0f),to(#ff0004));background:-webkit-linear-gradient(left,red 0,#ff0 16%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 84%,#ff0004 100%);background:linear-gradient(to right,red 0,#ff0 16%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 84%,#ff0004 100%)}.k-flatcolorpicker .k-transparency-slider .k-slider-track{background-image:url(textures/transparency.png);-webkit-background-size:100% auto;background-size:100% auto;background-position:100% 50%;background-repeat:no-repeat}.k-flatcolorpicker .k-controls{margin-top:10px;margin-bottom:5px;text-align:center;font-size:90%}.k-flatcolorpicker .k-controls .k-button{width:6em}.k-flatcolorpicker .k-hsv-gradient{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(#000)),-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,#000 100%),-webkit-linear-gradient(left,#fff 0,rgba(255,255,255,0) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,#000 100%),linear-gradient(to right,#fff 0,rgba(255,255,255,0) 100%);height:180px;margin-bottom:5px}.k-ie9 .k-flatcolorpicker .k-hue-slider .k-slider-track{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmMDAwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjE2JSIgc3RvcC1jb2xvcj0iI2ZmZmYwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjMzJSIgc3RvcC1jb2xvcj0iIzAwZmYwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iIzAwZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjY3JSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9Ijg0JSIgc3RvcC1jb2xvcj0iI2ZmMDBmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+)}.k-ie9 .k-flatcolorpicker .k-hsv-gradient{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+),url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMCIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+)}.k-ie8 .k-flatcolorpicker .k-hue-slider .k-slider-track{background:url(textures/hue.png) repeat 0 50%}.k-ie8 .k-flatcolorpicker .k-transparency-slider .k-slider-track{background:url(textures/transparency.png) repeat 0 50%}.k-ie8 .k-flatcolorpicker .k-hsv-gradient{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#00ffffff', GradientType=1) progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#ff000000',GradientType=0)}.k-notification-wrap{padding:.6em .5em;cursor:default;position:relative;white-space:nowrap}.k-notification-button .k-notification-wrap{padding-right:20px}.k-notification-wrap>.k-i-note{vertical-align:text-bottom;margin-right:4px}.k-notification-wrap>.k-i-close{position:absolute;top:7px;right:4px;display:none}.k-notification-button .k-notification-wrap>.k-i-close{display:block}.k-progressbar{display:inline-block;position:relative;vertical-align:middle}.k-progressbar{border-radius:4px}.k-progressbar-horizontal{width:27em;height:1.9em}.k-progressbar-vertical{width:1.9em;height:27em}.k-progressbar>.k-state-selected{position:absolute;border-style:solid;border-width:1px;overflow:hidden}.k-progressbar-horizontal>.k-state-selected,.k-rtl .k-progressbar-horizontal.k-progressbar-reverse>.k-state-selected{left:-1px;right:auto;top:-1px;height:100%;border-radius:4px 0 0 4px}.k-progressbar-horizontal.k-progressbar-reverse>.k-state-selected,.k-rtl .k-progressbar-horizontal>.k-state-selected{left:auto;right:-1px;border-radius:0 4px 4px 0}.k-progressbar-vertical>.k-state-selected{left:-1px;bottom:-1px;width:100%;border-radius:0 0 4px 4px}.k-progressbar-vertical.k-progressbar-reverse>.k-state-selected{bottom:auto;top:-1px;border-radius:4px 4px 0 0}.k-progressbar>.k-state-selected.k-complete,.k-rtl .k-progressbar>.k-state-selected.k-complete{border-radius:4px}.k-progressbar>.k-reset{list-style:none;margin:0;padding:0;position:absolute;left:-1px;top:-1px;width:100%;height:100%;border-radius:4px;white-space:nowrap}.k-progressbar-horizontal .k-item{display:inline-block;height:100%;border-style:solid;margin-left:-1px}.k-progressbar-horizontal .k-item.k-first{margin-left:0}.k-progressbar-horizontal .k-item.k-last{border-right-width:0}.k-progressbar-horizontal .k-item,.k-rtl .k-progressbar-horizontal.k-progressbar-reverse .k-item{border-width:1px 0 1px 1px}.k-progressbar-horizontal.k-progressbar-reverse .k-item,.k-rtl .k-progressbar-horizontal .k-item{border-width:1px 0 1px 1px}.k-progressbar-horizontal .k-first,.k-rtl .k-progressbar-horizontal .k-last,.k-rtl .k-progressbar-horizontal.k-progressbar-reverse .k-last{border-top-left-radius:4px;border-bottom-left-radius:4px;border-left-width:1px}.k-progressbar-horizontal .k-last,.k-rtl .k-progressbar-horizontal .k-first{border-top-right-radius:4px;border-bottom-right-radius:4px}.k-progressbar-horizontal.k-progressbar-reverse .k-last,.k-rtl .k-progressbar-horizontal .k-first{border-right-width:1px}.k-progressbar-horizontal .k-last.k-state-selected{border-right-width:1px}.k-progressbar-vertical .k-item{width:100%;border-style:solid;border-width:1px 1px 0 1px;margin-top:-1px}.k-progressbar-vertical .k-item.k-first{margin-top:0}.k-progressbar-vertical li.k-item.k-last{border-bottom-width:0}.k-progressbar-vertical .k-first{border-top-left-radius:4px;border-top-right-radius:4px}.k-progressbar-vertical .k-last{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom-width:1px}.k-progressbar-vertical.k-progressbar-reverse .k-item{border-width:0 1px 1px 1px}.k-progressbar-vertical.k-progressbar-reverse .k-first{border-top-width:1px}.k-progress-status-wrap{position:absolute;top:-1px;border:1px solid transparent;line-height:2em;width:100%;height:100%}.k-progress-status-wrap,.k-rtl .k-progressbar-horizontal.k-progressbar-reverse .k-progress-status-wrap{left:-1px;right:auto;text-align:right}.k-progressbar-horizontal.k-progressbar-reverse .k-progress-status-wrap,.k-rtl .k-progressbar-horizontal .k-progress-status-wrap{left:auto;right:-1px;text-align:left}.k-progressbar-vertical .k-progress-status-wrap{top:auto;bottom:-1px}.k-progressbar-vertical.k-progressbar-reverse .k-progress-status-wrap{bottom:auto;top:-1px}.k-progress-status{display:inline-block;padding:0 .5em;min-width:10px;white-space:nowrap}.k-progressbar-vertical.k-progressbar-reverse .k-progress-status{position:absolute;bottom:0;left:0}.k-progressbar-vertical .k-progress-status{-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.k-progressbar-vertical.k-progressbar-reverse .k-progress-status{-webkit-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translateX(-100%);-webkit-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%}.k-ie8 .k-progressbar-vertical .k-progress-status{-webkit-writing-mode:bt-lr;-ms-writing-mode:bt-lr;writing-mode:bt-lr;padding:.5em 0}div.k-slider{position:relative;border-width:0;background-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-slider-vertical{width:26px;height:200px}.k-slider-horizontal{display:inline-block;width:200px;height:26px}.k-slider-wrap{width:100%;height:100%}.k-grid .k-slider .k-button,.k-slider .k-button{position:absolute;top:0;width:24px;min-width:0;height:24px;margin:0;padding:0;outline:0}.k-slider .k-button .k-icon{margin-top:3px;vertical-align:top}.k-state-disabled .k-slider-wrap{filter:alpha(opacity=60);opacity:.6}.k-state-disabled .k-slider-wrap .k-slider-items{color:#333}.k-slider .k-button-decrease{left:0}.k-grid .k-slider-vertical .k-button-decrease,.k-slider-vertical .k-button-decrease{top:auto;bottom:0}.k-slider .k-button-increase{right:0}.k-slider .k-icon,.k-slider .k-tick,.k-slider-track{cursor:pointer}.k-slider-selection,.k-slider-track{position:absolute;margin:0;padding:0}.k-slider-horizontal .k-slider-selection,.k-slider-horizontal .k-slider-track{top:50%;left:0;height:8px;margin-top:-4px;background-repeat:repeat-x}.k-slider-horizontal .k-slider-buttons .k-slider-track{left:34px}.k-slider-vertical .k-slider-selection,.k-slider-vertical .k-slider-track{left:50%;bottom:0;width:8px;margin-left:-4px;background-repeat:repeat-y}.k-slider-vertical .k-slider-buttons .k-slider-track{bottom:34px}.k-draghandle{position:absolute;background-repeat:no-repeat;background-color:transparent;text-indent:-3333px;overflow:hidden;text-decoration:none;text-align:center;outline:0}.k-slider-horizontal .k-draghandle{top:-4px;width:13px;height:14px}.k-slider-vertical .k-draghandle{left:-4px;width:14px;height:13px}.k-slider-buttons .k-slider-items{margin-left:34px}.k-slider-horizontal .k-slider-items{height:100%}.k-slider-vertical .k-slider-items{padding-top:1px}.k-slider-vertical .k-slider-buttons .k-slider-items{padding-top:0}.k-slider-vertical .k-slider-buttons .k-slider-items{margin:0;padding-top:35px}.k-slider .k-tick{position:relative;margin:0;padding:0;background-color:transparent;background-repeat:no-repeat;background-position:center center}.k-slider-horizontal .k-tick{float:left;height:100%;text-align:center}.k-slider-horizontal .k-tick{background-position:center -92px}.k-slider-horizontal .k-slider-topleft .k-tick{background-position:center -122px}.k-slider-horizontal .k-slider-bottomright .k-tick{background-position:center -152px}.k-slider-horizontal .k-tick-large{background-position:center -2px}.k-slider-horizontal .k-slider-topleft .k-tick-large{background-position:center -32px}.k-slider-horizontal .k-slider-bottomright .k-tick-large{background-position:center -62px}.k-slider-vertical .k-tick{background-position:-92px center}.k-slider-vertical .k-slider-topleft .k-tick{background-position:-122px center}.k-slider-vertical .k-slider-bottomright .k-tick{background-position:-152px center}.k-slider-vertical .k-tick-large{background-position:-2px center}.k-slider-vertical .k-slider-topleft .k-tick-large{background-position:-32px center}.k-slider-vertical .k-slider-bottomright .k-tick-large{background-position:-62px center}.k-slider-horizontal .k-first{background-position:0 -92px}.k-slider-horizontal .k-tick-large.k-first{background-position:0 -2px}.k-slider-horizontal .k-slider-topleft .k-first{background-position:0 -122px}.k-slider-horizontal .k-slider-topleft .k-tick-large.k-first{background-position:0 -32px}.k-slider-horizontal .k-slider-bottomright .k-first{background-position:0 -152px}.k-slider-horizontal .k-slider-bottomright .k-tick-large.k-first{background-position:0 -62px}.k-slider-horizontal .k-last{background-position:100% -92px}.k-slider-horizontal .k-tick-large.k-last{background-position:100% -2px}.k-slider-horizontal .k-slider-topleft .k-last{background-position:100% -122px}.k-slider-horizontal .k-slider-topleft .k-tick-large.k-last{background-position:100% -32px}.k-slider-horizontal .k-slider-bottomright .k-last{background-position:100% -152px}.k-slider-horizontal .k-slider-bottomright .k-tick-large.k-last{background-position:100% -62px}.k-slider-vertical .k-first{background-position:-92px 100%}.k-slider-vertical .k-tick-large.k-first{background-position:-2px 100%}.k-slider-vertical .k-slider-topleft .k-first{background-position:-122px 100%}.k-slider-vertical .k-slider-topleft .k-tick-large.k-first{background-position:-32px 100%}.k-slider-vertical .k-slider-bottomright .k-first{background-position:-152px 100%}.k-slider-vertical .k-slider-bottomright .k-tick-large.k-first{background-position:-62px 100%}.k-slider-vertical .k-last{background-position:-92px 0}.k-slider-vertical .k-tick-large.k-last{background-position:-2px 0}.k-slider-vertical .k-slider-topleft .k-last{background-position:-122px 0}.k-slider-vertical .k-slider-topleft .k-tick-large.k-last{background-position:-32px 0}.k-slider-vertical .k-slider-bottomright .k-last{background-position:-152px 0}.k-slider-vertical .k-slider-bottomright .k-tick-large.k-last{background-position:-62px 0}.k-slider-vertical .k-tick{text-align:right}.k-slider-vertical .k-slider-topleft .k-tick{text-align:left}.k-slider .k-label{position:absolute;white-space:nowrap;font-size:.92em}.k-slider-horizontal .k-label{left:0;width:100%;line-height:1}.k-slider-horizontal .k-first .k-label{left:-50%}.k-slider-horizontal .k-last .k-label{left:auto;right:-50%}.k-slider-horizontal .k-label{bottom:-1.2em}.k-slider-horizontal .k-slider-topleft .k-label{top:-1.2em}.k-slider-vertical .k-label{left:120%;display:block;text-align:left}.k-slider-vertical .k-last .k-label{top:-.5em}.k-slider-vertical .k-first .k-label{bottom:-.5em}.k-slider-vertical .k-slider-topleft .k-label{left:auto;right:120%}.k-slider-tooltip{top:-4444px}.k-tooltip{position:absolute;z-index:12000;border-style:solid;border-width:0;padding:5px 5px 5px 6px;background-repeat:repeat-x;min-width:20px;text-align:center}.k-tooltip-button{text-align:right;height:0}.k-tooltip-content{height:100%}.k-tooltip-closable .k-tooltip-content{padding-right:20px}span.k-tooltip{position:static;display:inline-block;border-width:1px;padding:2px 5px 1px 6px}.k-invalid-msg{display:none}.k-callout{position:absolute;width:0;height:0;border-style:solid;border-width:6px;border-color:transparent}.k-callout-n{top:-12px;left:50%}.k-callout-w{top:50%;left:-12px}.k-callout-s{left:50%;bottom:-12px}.k-callout-e{top:50%;right:-12px}.k-slider-tooltip .k-callout-n,.k-slider-tooltip .k-callout-s{margin-left:-6px}.k-slider-tooltip .k-callout-e,.k-slider-tooltip .k-callout-w{margin-top:-6px}.k-tooltip-validation .k-warning{vertical-align:text-top;margin-right:3px}.k-tooltip-validation{z-index:9999}.k-toolbar{position:relative;display:block;vertical-align:middle;line-height:2.9em}.k-overflow-container .k-button .k-icon,.k-overflow-container .k-button .k-sprite,.k-toolbar .k-button .k-icon,.k-toolbar .k-button .k-sprite{vertical-align:middle;margin-top:-7px;margin-bottom:-5px}.k-toolbar .k-input{line-height:inherit;height:inherit;padding-top:2px;padding-bottom:2px}.k-toolbar .k-input:before{content:"\a0";display:inline-block;width:0}.k-ie .k-toolbar .k-input{height:1.65em}.k-toolbar .k-combobox .k-dropdown-wrap:before,.k-toolbar .k-numeric-wrap:before,.k-toolbar .k-picker-wrap:before{display:none}.k-overflow-container .k-sprite{margin-left:-4px}.k-toolbar-resizable{overflow:hidden;white-space:nowrap}.k-toolbar>.k-align-left{float:none}.k-toolbar>.k-align-right{float:right}.k-toolbar .k-button,.k-toolbar>*{display:inline-block;vertical-align:middle;line-height:1.72em}.k-toolbar .k-separator{border-width:0 0 0 1px;border-style:solid;width:1px;line-height:inherit}.k-toolbar .k-button-group{list-style-type:none}.k-toolbar .k-button-group>li{display:inline-block}.k-toolbar .k-button-group .k-button{margin:0 0 0 -1px;border-radius:0}.k-toolbar .k-button,.k-toolbar .k-button-group,.k-toolbar .k-separator,.k-toolbar .k-split-button,.k-toolbar .k-textbox,.k-toolbar .k-widget,.k-toolbar label{margin:0 .2em;line-height:1.72em;vertical-align:middle}.k-toolbar .k-split-button{padding-left:0}.k-toolbar .k-button-group .k-group-start,.k-toolbar .k-split-button .k-button{margin:0}.k-toolbar .k-split-button .k-split-button-arrow{margin:0 0 0 -1px}.k-toolbar .k-overflow-anchor{border-width:0 0 0 1px;border-style:solid;height:3em;width:3em;line-height:inherit;padding:0 .5em;margin:0;position:relative;float:right;border-radius:0}.k-overflow-container .k-item{float:none;border:0}.k-overflow-container .k-separator{border-width:0 0 1px;border-style:solid;height:1px;line-height:0;font-size:0;padding:0}.k-overflow-container .k-overflow-button,.k-split-container .k-button{text-align:left;display:block;background:0 0;border-color:transparent;white-space:nowrap}.k-split-container{margin-top:-1px}.k-overflow-container .k-button-group{padding:0}.k-overflow-container .k-button-group>li{display:block}.k-overflow-container .k-overflow-group{border-width:1px 0;border-style:solid;border-radius:0;padding:2px 0;margin:1px 0}.k-overflow-container .k-overflow-hidden{display:none}.k-overflow-container .k-overflow-group+.k-overflow-group,.k-overflow-container .k-separator+.k-overflow-group,.k-overflow-container .k-toolbar-first-visible{border-top:0;margin-top:0;padding-top:1px}.k-overflow-container .k-overflow-group+.k-separator{display:none}.k-overflow-container .k-toolbar-last-visible{border-bottom:0;margin-bottom:0;padding-bottom:1px}.k-splitter{position:relative;height:300px}.k-pane>.k-splitter{border-width:0;overflow:hidden}.k-splitter .k-pane{overflow:hidden}.k-splitter .k-scrollable{overflow:auto}.k-splitter .k-pane-loading{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.k-ghost-splitbar,.k-splitbar{position:absolute;border-style:solid;font-size:0;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.k-splitter .k-ghost-splitbar-horizontal,.k-splitter .k-splitbar-horizontal{top:0;width:5px;border-width:0 1px;background-repeat:repeat-y}.k-ghost-splitbar-vertical,.k-splitbar-vertical{left:0;height:5px;border-width:1px 0;background-repeat:repeat-x}.k-splitbar-draggable-horizontal{cursor:w-resize}.k-splitbar-draggable-vertical{cursor:n-resize}.k-splitbar .k-resize-handle{display:none}.k-restricted-size-horizontal,.k-restricted-size-vertical{background-color:red}.k-splitbar-horizontal .k-icon{position:absolute;top:50%;width:5px;height:20px;margin-top:-10px}.k-collapse-next,.k-collapse-prev,.k-expand-next,.k-expand-prev{cursor:pointer}.k-splitbar-horizontal .k-collapse-prev{margin-top:-31px}.k-splitbar-horizontal .k-collapse-next{margin-top:11px}.k-splitbar-static-horizontal{width:1px}.k-splitbar-static-vertical{height:1px}.k-splitbar-vertical .k-icon{position:absolute;left:50%;width:20px;height:5px;margin-left:-10px}.k-splitbar-vertical .k-collapse-prev{margin-left:-31px}.k-splitbar-vertical .k-collapse-next{margin-left:11px}.k-splitbar-draggable-horizontal .k-resize-handle,.k-splitbar-draggable-vertical .k-resize-handle{display:inline-block}.k-splitbar-horizontal .k-resize-handle{background-position:-165px -6px}.k-splitbar-horizontal-hover>.k-resize-handle{background-position:-181px -6px}.k-splitbar-horizontal .k-collapse-prev,.k-splitbar-horizontal .k-expand-next{background-position:-6px -174px}.k-splitbar-horizontal-hover>.k-collapse-prev,.k-splitbar-horizontal-hover>.k-expand-next{background-position:-22px -174px}.k-splitbar-horizontal .k-collapse-next,.k-splitbar-horizontal .k-expand-prev{background-position:-5px -142px}.k-splitbar-horizontal-hover>.k-collapse-next,.k-splitbar-horizontal-hover>.k-expand-prev{background-position:-21px -142px}.k-splitbar-vertical .k-resize-handle{background-position:-38px -309px}.k-splitbar-vertical-hover>.k-resize-handle{background-position:-70px -309px}.k-splitbar-vertical .k-collapse-prev,.k-splitbar-vertical .k-expand-next{background-position:2px -134px}.k-splitbar-vertical-hover>.k-collapse-prev,.k-splitbar-vertical-hover>.k-expand-next{background-position:-14px -134px}.k-splitbar-vertical .k-collapse-next,.k-splitbar-vertical .k-expand-prev{background-position:2px -165px}.k-splitbar-vertical-hover>.k-collapse-next,.k-splitbar-vertical-hover>.k-expand-prev{background-position:-14px -165px}.k-splitter-resizing{overflow:hidden}.k-virtual-wrap{position:relative}.k-virtual-wrap .k-list.k-virtual-list{height:auto}.k-virtual-content{overflow-y:scroll;-webkit-overflow-scrolling:touch;position:relative}.k-virtual-list>.k-virtual-content{position:absolute;top:0;width:100%;margin:0;padding:0;list-style-type:none}.k-virtual-option-label{width:100%;margin:0;padding:0;list-style-type:none}.k-virtual-wrap>.k-virtual-header{text-align:right}.k-popup .k-item.k-first{position:relative}.k-virtual-content>.k-virtual-list>.k-virtual-item{position:absolute;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;white-space:nowrap}.k-popup .k-list .k-item>.k-group,.k-popup>.k-group-header,.k-popup>.k-virtual-wrap>.k-group-header{text-transform:uppercase;font-size:.857em}.k-popup .k-list .k-item>.k-group{position:absolute;top:0;right:0;padding:0 .5em;line-height:1.8}.k-popup .k-state-hover>.k-group{right:-1px}.k-group-header+.k-list>.k-item.k-first,.k-static-header+.k-list>.k-item.k-first,.k-virtual-item.k-first{border-top-style:solid;border-top-width:1px;padding-top:0}.k-popup>.k-group-header,.k-popup>.k-virtual-wrap>.k-group-header{text-align:right}.k-fx-end .k-fx-current,.k-fx-end .k-fx-next{-webkit-transition:all 350ms ease-out;transition:all 350ms ease-out}.k-fx{position:relative}.k-fx .k-fx-current{z-index:0}.k-fx .k-fx-next{z-index:1}.k-fx-hidden,.k-fx-hidden *{visibility:hidden!important}.k-fx-reverse .k-fx-current{z-index:1}.k-fx-reverse .k-fx-next{z-index:0}.k-fx-zoom.k-fx-start .k-fx-next{-webkit-transform:scale(0)!important;-ms-transform:scale(0)!important;transform:scale(0)!important}.k-fx-zoom.k-fx-end .k-fx-next{-webkit-transform:scale(1)!important;-ms-transform:scale(1)!important;transform:scale(1)!important}.k-fx-zoom.k-fx-reverse.k-fx-end .k-fx-next,.k-fx-zoom.k-fx-reverse.k-fx-start .k-fx-next{-webkit-transform:scale(1)!important;-ms-transform:scale(1)!important;transform:scale(1)!important}.k-fx-zoom.k-fx-reverse.k-fx-start .k-fx-current{-webkit-transform:scale(1)!important;-ms-transform:scale(1)!important;transform:scale(1)!important}.k-fx-zoom.k-fx-reverse.k-fx-end .k-fx-current{-webkit-transform:scale(0)!important;-ms-transform:scale(0)!important;transform:scale(0)!important}.k-fx-fade.k-fx-start .k-fx-next{will-change:opacity;opacity:0}.k-fx-fade.k-fx-end .k-fx-next{opacity:1}.k-fx-fade.k-fx-reverse.k-fx-start .k-fx-current{will-change:opacity;opacity:1}.k-fx-fade.k-fx-reverse.k-fx-end .k-fx-current{opacity:0}.k-fx-slide.k-fx-end .k-fx-current .km-content,.k-fx-slide.k-fx-end .k-fx-current .km-footer,.k-fx-slide.k-fx-end .k-fx-current .km-header,.k-fx-slide.k-fx-end .k-fx-next .km-content,.k-fx-slide.k-fx-end .k-fx-next .km-footer,.k-fx-slide.k-fx-end .k-fx-next .km-header{-webkit-transition:all 350ms ease-out;transition:all 350ms ease-out}.k-fx-slide.k-fx-start .k-fx-next .km-content{will-change:transform;-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-slide.k-fx-start .k-fx-next .km-footer,.k-fx-slide.k-fx-start .k-fx-next .km-header{will-change:opacity;opacity:0}.k-fx-slide.k-fx-end .k-fx-current .km-content{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-slide.k-fx-end .k-fx-next .km-footer,.k-fx-slide.k-fx-end .k-fx-next .km-header{opacity:1}.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-current .km-content{will-change:transform;-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-current .km-content{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-next .km-content{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-next .km-content{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-current .km-footer,.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-current .km-header{will-change:opacity;opacity:1}.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-next .km-footer,.k-fx-slide.k-fx-reverse.k-fx-start .k-fx-next .km-header{opacity:1}.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-current .km-footer,.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-current .km-header{opacity:0}.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-next .km-footer,.k-fx-slide.k-fx-reverse.k-fx-end .k-fx-next .km-header{opacity:1}.k-fx-slide.k-fx-right.k-fx-start .k-fx-next .km-content{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-slide.k-fx-right.k-fx-end .k-fx-current .km-content{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-start .k-fx-current .km-content{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-end .k-fx-current .km-content{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-start .k-fx-next .km-content{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-slide.k-fx-right.k-fx-reverse.k-fx-end .k-fx-next .km-content{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-start .k-fx-next{will-change:transform;-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-end .k-fx-current{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-current{will-change:transform;-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-current{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-next{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-next{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-right.k-fx-start .k-fx-next{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-right.k-fx-end .k-fx-current{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-current{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-current{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-next{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-next{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-start .k-fx-next{will-change:transform;-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-end .k-fx-current{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-current{will-change:transform;-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-current{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-reverse.k-fx-start .k-fx-next{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-reverse.k-fx-end .k-fx-next{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-right.k-fx-start .k-fx-next{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-right.k-fx-end .k-fx-current{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-current{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-current{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-start .k-fx-next{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx-tile.k-fx-right.k-fx-reverse.k-fx-end .k-fx-next{-webkit-transform:translatex(0);-ms-transform:translatex(0);transform:translatex(0)}.k-fx.k-fx-overlay.k-fx-left.k-fx-start .k-fx-next,.k-fx.k-fx-overlay.k-fx-start .k-fx-next{will-change:transform;-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx.k-fx-overlay.k-fx-right.k-fx-start .k-fx-next{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx.k-fx-overlay.k-fx-up.k-fx-start .k-fx-next{-webkit-transform:translatey(100%);-ms-transform:translatey(100%);transform:translatey(100%)}.k-fx.k-fx-overlay.k-fx-down.k-fx-start .k-fx-next{-webkit-transform:translatey(-100%);-ms-transform:translatey(-100%);transform:translatey(-100%)}.k-fx.k-fx-overlay.k-fx-reverse.k-fx-start .k-fx-next{-webkit-transform:none;-ms-transform:none;transform:none}.k-fx.k-fx-overlay.k-fx-reverse.k-fx-start .k-fx-current{will-change:transform;-webkit-transform:none;-ms-transform:none;transform:none}.k-fx.k-fx-overlay.k-fx-reverse.k-fx-end .k-fx-current,.k-fx.k-fx-overlay.k-fx-reverse.k-fx-left.k-fx-end .k-fx-current{-webkit-transform:translatex(100%);-ms-transform:translatex(100%);transform:translatex(100%)}.k-fx.k-fx-overlay.k-fx-reverse.k-fx-right.k-fx-end .k-fx-current{-webkit-transform:translatex(-100%);-ms-transform:translatex(-100%);transform:translatex(-100%)}.k-fx.k-fx-overlay.k-fx-reverse.k-fx-up.k-fx-end .k-fx-current{-webkit-transform:translatey(100%);-ms-transform:translatey(100%);transform:translatey(100%)}.k-fx.k-fx-overlay.k-fx-reverse.k-fx-down.k-fx-end .k-fx-current{-webkit-transform:translatey(-100%);-ms-transform:translatey(-100%);transform:translatey(-100%)} | |
/*# sourceMappingURL=kendo.common.core.min.css.map */ | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/.k-theme-test-class,.ktb-theme-id-office365{opacity:0}.ktb-var-accent{color:#cde6f7}.ktb-var-base{color:#0072c6}.ktb-var-background{color:#fff}.ktb-var-border-radius{border-radius:0}.ktb-var-normal-background{color:#fff}.ktb-var-normal-gradient{background-image:none}.ktb-var-normal-text-color{color:#333}.ktb-var-hover-background{color:#f4f4f4}.ktb-var-hover-gradient{background-image:none}.ktb-var-hover-text-color{color:#000}.ktb-var-selected-background{color:#cde6f7}.ktb-var-selected-gradient{background-image:none}.ktb-var-selected-text-color{color:#333}.ktb-var-error{color:#ffcdd2}.ktb-var-warning{color:#fff19d}.ktb-var-success{color:#c8e6c9}.ktb-var-info{color:#bbdefb}.ktb-var-series-a{color:#0072c6}.ktb-var-series-b{color:#5db2ff}.ktb-var-series-c{color:#008a17}.ktb-var-series-d{color:#82ba00}.ktb-var-series-e{color:#ff8f32}.ktb-var-series-f{color:#ac193d}.k-grid-norecords-template{background-color:#fff;border:1px solid #c9c9c9}.k-in,.k-item,.k-window-action{border-color:transparent}.k-block,.k-widget{background-color:#fff}.k-autocomplete,.k-block,.k-button-group .k-tool,.k-calendar th,.k-colorpicker .k-i-arrow-s,.k-content,.k-dropdown-wrap,.k-dropzone-active,.k-editable-area,.k-filter-row>th,.k-footer-template td,.k-grid td,.k-grid td.k-state-selected,.k-grid-content-locked,.k-grid-footer,.k-grid-footer-locked,.k-grid-footer-wrap,.k-grid-header,.k-grid-header-locked,.k-grid-header-wrap,.k-group,.k-group-footer td,.k-grouping-header,.k-grouping-header .k-group-indicator,.k-header,.k-input,.k-pager-refresh,.k-pager-wrap,.k-pager-wrap .k-link,.k-panel>.k-item>.k-link,.k-panelbar .k-content,.k-panelbar .k-panel,.k-panelbar>.k-item>.k-link,.k-separator,.k-slider-track,.k-splitbar,.k-state-default,.k-state-default .k-select,.k-state-disabled,.k-textbox,.k-textbox>input,.k-tiles,.k-toolbar,.k-tooltip,.k-treemap-tile,.k-upload-files,.k-widget{border-color:#c9c9c9}.k-calendar th,.k-dropzone-hovered,.k-footer-template td,.k-grid-footer,.k-group,.k-group-footer td,.k-grouping-header,.k-pager-wrap,.k-toolbar,.k-widget .k-status,.k-widget.k-popup{background-color:#fff}.k-grouping-row td,.k-resize-handle-inner,td.k-group-cell{background-color:#fff}.k-list-container{border-color:#c9c9c9;background-color:#fff}.k-content,.k-editable-area,.k-panel>li.k-item,.k-panelbar>li.k-item,.k-tiles{background-color:#fff}.k-alt,.k-pivot-layout>tbody>tr:first-child>td:first-child,.k-resource.k-alt,.k-separator{background-color:#fff}.k-header.k-alt,.k-pivot-rowheaders .k-alt .k-alt{background-color:#ebebeb}.k-autocomplete.k-header,.k-dropdown-wrap.k-state-active,.k-numeric-wrap.k-state-active,.k-picker-wrap.k-state-active,.k-textbox{border-color:#c9c9c9;background-color:#0072c6}.k-autocomplete .k-input,.k-autocomplete.k-state-focused .k-input,.k-dropdown-wrap .k-input,.k-dropdown-wrap.k-state-focused .k-input,.k-numeric-wrap.k-state-focused .k-input,.k-picker-wrap.k-state-focused .k-input,.k-textbox>input{border-color:#c9c9c9}.k-textbox>input,input.k-textbox,input.k-textbox:hover,textarea.k-textbox,textarea.k-textbox:hover{background:0 0}.k-input,.k-multiselect-wrap,.k-textbox>input,input.k-textbox,input.k-textbox:hover,textarea.k-textbox,textarea.k-textbox:hover{background-color:#fff;color:#333}.k-input[readonly]{background-color:#fff;color:#333}.k-block,.k-content,.k-dropdown .k-input,.k-popup,.k-toolbar,.k-widget{color:#333}.k-inverse{color:#fff}.k-block{color:#333}.k-link:link,.k-link:visited,.k-nav-current.k-state-hover .k-link{color:#0072c6}.k-panelbar>li>.k-link,.k-tabstrip-items .k-link{color:#333}.k-grid-header .k-header>.k-link,.k-header,.k-treemap-title{color:#333}.k-autocomplete,.k-button,.k-draghandle,.k-dropdown-wrap,.k-grid-header,.k-grouping-header,.k-header,.k-numeric-wrap,.k-pager-wrap,.k-panelbar .k-tabstrip-items .k-item,.k-picker-wrap,.k-progressbar,.k-state-highlight,.k-tabstrip-items .k-item,.k-textbox,.k-toolbar,.km-pane-wrapper>.km-pane>.km-view>.km-content{background-image:none;background-position:50% 50%;background-color:#fff}.k-widget.k-tooltip{background-image:none}.k-block,.k-button,.k-draghandle,.k-grid-header,.k-grouping-header,.k-header,.k-pager-wrap,.k-toolbar,.k-treemap-tile,html .km-pane-wrapper .k-header{background-color:#fff}.k-column-menu .k-state-active .k-sprite,.k-column-menu .k-state-hover .k-sprite,.k-icon:hover,.k-pager-numbers .k-current-page .k-link:hover:after,.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view.k-state-hover>.k-link:after,.k-state-focused .k-icon,.k-state-hover .k-icon,.k-state-selected .k-icon{opacity:1}.k-column-menu .k-sprite,.k-icon,.k-pager-numbers .k-current-page .k-link:after,.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link:after,.k-state-disabled .k-icon{opacity:.6}.k-mobile-list .k-check:checked,.k-mobile-list .k-edit-field [type=checkbox]:checked,.k-mobile-list .k-edit-field [type=radio]:checked{opacity:.6}.k-tool{border-color:transparent}.k-column-menu .k-sprite,.k-drop-hint,.k-gantt-views>.k-current-view>.k-link:after,.k-grid-mobile .k-resize-handle-inner:after,.k-grid-mobile .k-resize-handle-inner:before,.k-grouping-dropclue,.k-icon,.k-pager-numbers .k-current-page .k-link:after,.k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link:after,.k-tool-icon{background-image:url(Office365/sprite.png);border-color:transparent}.k-mobile-list .k-check:checked,.k-mobile-list .k-edit-field [type=checkbox]:checked,.k-mobile-list .k-edit-field [type=radio]:checked{background-image:url(Office365/sprite.png);border-color:transparent}.k-loading,.k-state-hover .k-loading{background-image:url(Office365/loading.gif);background-position:50% 50%}.k-loading-image{background-image:url(Office365/loading-image.gif)}.k-loading-color{background-color:#fff}.k-button{color:#333;border-color:#f4f4f4;background-color:#f4f4f4}.k-draghandle{border-color:#0072c6;background-color:#0072c6;-webkit-box-shadow:none;box-shadow:none}.k-draghandle:hover{border-color:#0072c6;background-color:#0072c6;-webkit-box-shadow:none;box-shadow:none}.k-scheduler{color:#333;background-color:#fff}.k-scheduler-layout{color:#333}.k-scheduler-datecolumn,.k-scheduler-groupcolumn{background-color:#fff;color:#333}.k-scheduler-header th,.k-scheduler-header-wrap,.k-scheduler-table td,.k-scheduler-times,.k-scheduler-times th,.k-scheduler-times tr{border-color:#c9c9c9}.k-nonwork-hour{background-color:#fff}.k-gantt .k-nonwork-hour{background-color:rgba(0,0,0,.02)}.k-gantt .k-header.k-nonwork-hour{background-color:rgba(0,0,0,.2)}.k-scheduler-table .k-today,.k-today>.k-scheduler-datecolumn,.k-today>.k-scheduler-groupcolumn{background-color:#fff}.k-scheduler-now-arrow{border-left-color:#dbdbdb}.k-scheduler-now-line{background-color:#dbdbdb}.k-event,.k-task-complete{border-color:#5fb2f6;background:#5fb2f6 0 -257px none repeat-x;color:#333}.k-event-inverse{color:#333}.k-scheduler-content .k-event.k-state-selected{background-position:0 0;-webkit-box-shadow:0 0 0 2px #333,inset 4px 0 0 0 rgba(255,255,255,.5);box-shadow:0 0 0 2px #333,inset 4px 0 0 0 rgba(255,255,255,.5)}.k-event .k-resize-handle:after,.k-task-single .k-resize-handle:after{background-color:#fff}.k-scheduler-marquee:after,.k-scheduler-marquee:before{border-color:#cde6f7}.k-panelbar .k-content,.k-panelbar .k-item,.k-panelbar .k-panel{background-color:#fff;color:#333;border-color:#c9c9c9}.k-panelbar>li>.k-link{color:#333}.k-panelbar>.k-item>.k-link{border-color:#c9c9c9}.k-panel>li.k-item{background-color:#fff}.k-active-filter,.k-state-active,.k-state-active:hover,.k-tabstrip .k-state-active{background-color:#fff;border-color:#0072c6;color:#333}.k-fieldselector .k-list-container{background-color:#fff}.k-button.k-state-focused,.k-button:focus{border-color:#0072c6}.k-button.k-state-hover,.k-button:hover{color:#333;border-color:#eaeaea;background-color:#eaeaea}.k-button.k-state-active,.k-button:active{color:#333;background-color:#0072c6;border-color:#0072c6}.k-button.k-state-active:hover,.k-button:active:hover{color:#fff;border-color:#005b9d;background-color:#005b9d}.k-button:focus:not(.k-state-disabled):not([disabled]){-webkit-box-shadow:none;box-shadow:none}.k-button:focus:active:not(.k-state-disabled):not([disabled]){-webkit-box-shadow:none;box-shadow:none}.k-menu .k-state-hover>.k-state-active{background-color:transparent}.k-state-highlight{background:#fff;color:#333}.k-grouping-row .k-state-focused,.k-state-focused{border-color:#0072c6}.k-calendar .k-link{color:#333}.k-calendar .k-footer{padding:0}.k-calendar .k-footer .k-nav-today{color:#333;text-decoration:none;background-color:#fff}.k-calendar .k-footer .k-nav-today.k-state-hover,.k-calendar .k-footer .k-nav-today:hover{background-color:#fff;text-decoration:underline}.k-calendar .k-footer .k-nav-today:active{background-color:#fff}.k-calendar .k-link.k-nav-fast{color:#333}.k-calendar .k-nav-fast.k-state-hover{text-decoration:none;background-color:#f4f4f4;color:#000}.k-calendar .k-link.k-state-hover,.k-window-titlebar .k-link{border-radius:0}.k-calendar .k-footer .k-link{border-radius:0}.k-calendar th{background-color:#fff}.k-calendar-container.k-group{border-color:#c9c9c9}.k-draghandle.k-state-selected:hover,.k-ghost-splitbar-horizontal,.k-ghost-splitbar-vertical,.k-list>.k-state-highlight,.k-list>.k-state-selected,.k-marquee-color,.k-panel>.k-state-selected,.k-scheduler .k-scheduler-toolbar .k-state-selected,.k-scheduler .k-today.k-state-selected,.k-state-selected,.k-state-selected:link,.k-state-selected:visited{color:#333;background-color:#cde6f7;border-color:#cde6f7}.k-group-header+.k-list>.k-item.k-first,.k-static-header+.k-list>.k-item.k-first,.k-virtual-item.k-first{border-top-color:#8f8f8f}.k-group-header+div>.k-list>.k-item.k-first:before{border-top-color:#8f8f8f}.k-popup>.k-group-header,.k-popup>.k-virtual-wrap>.k-group-header{background:#8f8f8f;color:#333}.k-popup .k-list .k-item>.k-group{background:#8f8f8f;color:#fff;border-bottom-left-radius:0}.k-marquee-text{color:#333}.k-button.k-state-focused,.k-list>.k-state-focused,.k-state-focused,td.k-state-focused{-webkit-box-shadow:none;box-shadow:none}.k-listview>.k-state-focused,.k-listview>.k-state-focused.k-state-selected{-webkit-box-shadow:inset 0 0 0 1px #0072c6;box-shadow:inset 0 0 0 1px #0072c6}.k-list>.k-state-focused.k-state-selected,.k-state-focused.k-state-selected,td.k-state-focused.k-state-selected{-webkit-box-shadow:none;box-shadow:none}.k-ie8 .k-button.k-state-focused,.k-ie8 .k-button:focus,.k-ie8 .k-grid-header th.k-state-focused,.k-ie8 .k-listview>.k-state-focused,.k-ie8 .k-menu li.k-state-focused,.k-ie8 .k-panelbar span.k-state-focused,.k-ie8 .k-tool.k-state-hover,.k-ie8 td.k-state-focused,.k-list-optionlabel.k-state-selected.k-state-focused,.k-list>.k-state-selected.k-state-focused{-webkit-box-shadow:none;box-shadow:none}.k-panelbar>li.k-state-default>.k-link.k-state-selected,.k-panelbar>li>.k-state-selected,.k-state-selected>.k-link{color:#333}.k-dropdown .k-state-focused,.k-filebrowser-dropzone,.k-list>.k-state-hover,.k-mobile-list .k-edit-label.k-check:active,.k-mobile-list .k-item>.k-label:active,.k-mobile-list .k-item>.k-link:active,.k-mobile-list .k-recur-view .k-check:active,.k-pager-wrap .k-link:hover,.k-scheduler .k-scheduler-toolbar ul li.k-state-hover,.k-splitbar-horizontal-hover:hover,.k-splitbar-vertical-hover:hover,.k-state-hover,.k-state-hover:hover{color:#000;background-color:#f4f4f4;border-color:#8f8f8f}.k-mobile-list .k-scheduler-timezones .k-edit-field:nth-child(2):active{color:#000;background-color:#f4f4f4;border-color:#8f8f8f}.k-ie8 .k-window-titlebar .k-state-hover{border-color:#8f8f8f}.k-state-focused>.k-select,.k-state-hover>.k-select{border-color:#8f8f8f}.k-button.k-state-focused,.k-button.k-state-hover,.k-button:focus,.k-button:hover,.k-draghandle:hover,.k-other-month.k-state-hover .k-link,.k-pager-wrap .k-link:hover,.k-state-hover,.k-state-hover:hover,.k-textbox:hover,div.k-filebrowser-dropzone em{background-image:none}.k-pager-wrap{background-color:#fff;color:#333}.k-autocomplete.k-state-active,.k-button:active,.k-dropdown-wrap.k-state-active,.k-numeric-wrap.k-state-active,.k-panelbar>.k-item>.k-state-focused,.k-picker-wrap.k-state-active,.k-state-active,.k-state-active:hover,.k-state-active>.k-link{background-image:none}.k-button.k-state-active,.k-button:active,.k-draghandle.k-state-selected:hover,.k-state-selected{background-image:none}.k-button.k-state-active,.k-button:active,.k-draghandle.k-state-selected:hover{background-position:50% 50%}.k-tool-icon{background-image:url(Office365/sprite.png)}.k-other-month.k-state-hover .k-link,.k-state-hover>.k-link,div.k-filebrowser-dropzone em{color:#000}.k-autocomplete.k-state-focused,.k-autocomplete.k-state-hover,.k-dropdown-wrap.k-state-focused,.k-dropdown-wrap.k-state-hover,.k-numeric-wrap.k-state-focused,.k-numeric-wrap.k-state-hover,.k-picker-wrap.k-state-focused,.k-picker-wrap.k-state-hover{background-color:#eaeaea;background-image:none;background-position:50% 50%;border-color:#0072c6}.k-dropdown .k-state-focused .k-input,.km-pane-wrapper .k-mobile-list input:not([type=checkbox]):not([type=radio]),.km-pane-wrapper .k-mobile-list textarea,.km-pane-wrapper .km-pane .k-mobile-list select:not([multiple]){color:#333}.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right{background:#fff;border-color:#c9c9c9}.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right>input{background-color:#fff;border-color:#c9c9c9}.km-pane-wrapper .km-pane .k-mobile-list.k-filter-menu .k-space-right>input:focus{border-color:#0072c6}.k-dropdown .k-state-hover .k-input{color:#000}.k-state-error{border-color:#dbdbdb;background-color:#ffd7db;color:#6b6b6b}.k-state-disabled{opacity:.7}.k-ie8 .k-state-disabled{filter:alpha(opacity=70)}.k-loading-mask.k-state-selected,.k-tile-empty.k-state-selected{border-width:0;background-image:none;background-color:transparent}.k-dropzone .k-upload-status,.k-dropzone em,.k-other-month,.k-other-month .k-link,.k-slider .k-draghandle,.k-state-disabled,.k-state-disabled .k-button,.k-state-disabled .k-link,.k-tile-empty strong{color:#aaa}.k-progressbar-indeterminate{background:url(Office365/indeterminate.gif)}.k-progressbar-indeterminate .k-progress-status-wrap,.k-progressbar-indeterminate .k-state-selected{display:none}.k-slider-track{background-color:#c9c9c9}.k-slider-selection{background-color:#cde6f7}.k-slider-horizontal .k-tick{background-image:url(Office365/slider-h.gif)}.k-slider-vertical .k-tick{background-image:url(Office365/slider-v.gif)}.k-widget.k-tooltip{border-color:#c9c9c9;background-color:#fff;color:#333}.k-widget.k-tooltip-validation{border-color:#fff19d;background-color:#fff19d;color:#6a5b00}.input-append .k-tooltip-validation,.input-prepend .k-tooltip-validation{font-size:12px;position:relative;top:3px}.k-callout-n{border-bottom-color:#c9c9c9}.k-callout-w{border-right-color:#c9c9c9}.k-callout-s{border-top-color:#c9c9c9}.k-callout-e{border-left-color:#c9c9c9}.k-tooltip-validation .k-callout-n{border-bottom-color:#fff19d}.k-tooltip-validation .k-callout-w{border-right-color:#fff19d}.k-tooltip-validation .k-callout-s{border-top-color:#fff19d}.k-tooltip-validation .k-callout-e{border-left-color:#fff19d}.k-splitbar{background-color:#f4f4f4}.k-restricted-size-horizontal,.k-restricted-size-vertical{background-color:#6b6b6b}.k-file{background-color:#fff;border-color:#c9c9c9}.k-file-progress{color:#333}.k-file-progress .k-progress{background-color:#bbdefb}.k-file-success{color:#333}.k-file-success .k-progress{background-color:#c8e6c9}.k-file-error{color:#333}.k-file-error .k-progress{background-color:#ffcdd2}.k-tile{border-color:#fff}.k-textbox:hover,.k-tiles li.k-state-hover{border-color:#8f8f8f}.k-tiles li.k-state-selected{border-color:#cde6f7}.k-filebrowser .k-tile .k-file,.k-filebrowser .k-tile .k-folder{background-image:url(Office365/imagebrowser.png);-webkit-background-size:auto auto;background-size:auto auto}.k-leaf,.k-leaf.k-state-hover:hover{color:#fff}.k-leaf.k-inverse,.k-leaf.k-inverse.k-state-hover:hover{color:#000}.k-button,.k-widget{-webkit-box-shadow:none;box-shadow:none}.k-slider,.k-treeview,.k-upload{-webkit-box-shadow:none;box-shadow:none}.k-state-hover{-webkit-box-shadow:none;box-shadow:none}.k-autocomplete.k-state-focused,.k-dropdown-wrap.k-state-focused,.k-numeric-wrap.k-state-focused,.k-picker-wrap.k-state-focused,.k-textbox:focus{-webkit-box-shadow:none;box-shadow:none}.k-state-selected{-webkit-box-shadow:none;box-shadow:none}.k-state-active{-webkit-box-shadow:none;box-shadow:none}.k-grid td.k-state-selected.k-state-focused{background-color:#daedf9}.k-autocomplete.k-state-border-down,.k-autocomplete.k-state-border-up,.k-datepicker-calendar,.k-dropdown-wrap.k-state-active,.k-filebrowser .k-image,.k-grid .k-filter-options,.k-menu .k-menu-group,.k-multiselect.k-state-focused,.k-picker-wrap.k-state-active,.k-popup,.k-time-popup,.k-tooltip{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.18);box-shadow:0 2px 2px 0 rgba(0,0,0,.18)}.k-treemap-tile.k-state-hover{-webkit-box-shadow:inset 0 0 0 3px #c9c9c9;box-shadow:inset 0 0 0 3px #c9c9c9}.k-window{border-color:rgba(0,0,0,.18);-webkit-box-shadow:1px 1px 7px 1px rgba(128,128,128,.18);box-shadow:1px 1px 7px 1px rgba(128,128,128,.18);background-color:#fff}.k-window.k-state-focused{border-color:rgba(0,0,0,.18);-webkit-box-shadow:1px 1px 7px 1px rgba(0,0,0,.18);box-shadow:1px 1px 7px 1px rgba(0,0,0,.18)}.k-window-maximized .k-window-content,.k-window-maximized .k-window-titlebar,.k-window.k-window-maximized{border-radius:0}.k-shadow{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.18);box-shadow:0 1px 2px 0 rgba(0,0,0,.18)}.k-inset{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.18);box-shadow:inset 0 1px 1px rgba(0,0,0,.18)}.k-editor-inline ::-moz-selection{background-color:#cde6f7;text-shadow:none;color:#fff}.k-editor-inline ::selection{background-color:#cde6f7;text-shadow:none;color:#fff}.k-editor-inline ::-moz-selection{background-color:#cde6f7;text-shadow:none;color:#fff}.k-widget.k-notification.k-notification-info{background-color:#bbdefb;color:#4d4d4d;border-color:#bbdefb}.k-widget.k-notification.k-notification-success{background-color:#c8e6c9;color:#4d4d4d;border-color:#c8e6c9}.k-widget.k-notification.k-notification-warning{background-color:#fff19d;color:#4d4d4d;border-color:#fff19d}.k-widget.k-notification.k-notification-error{background-color:#ffcdd2;color:#4d4d4d;border-color:#ffcdd2}.k-gantt .k-treelist{background:#fff}.k-gantt .k-treelist .k-alt{background-color:#e6e6e6}.k-gantt .k-treelist .k-alt.k-state-selected,.k-gantt .k-treelist .k-alt.k-state-selected>td,.k-gantt .k-treelist .k-state-selected,.k-gantt .k-treelist .k-state-selected td{background-color:#cde6f7}.k-gantt .k-treelist .k-state-selected:hover,.k-gantt .k-treelist .k-state-selected:hover td{background-color:#d7e4ed}.k-task-dot:after{background-color:#333;border-color:#333}.k-task-dot:hover:after{background-color:#fff}.k-task-summary{border-color:#d1d1d1;background:#d1d1d1}.k-task-milestone,.k-task-summary-complete{border-color:#333;background:#333}.k-state-selected.k-task-summary{border-color:#000;background:#000}.k-state-selected .k-task-summary-complete,.k-state-selected.k-task-milestone{border-color:#cde6f7;background:#cde6f7}.k-task-single{background-color:#81c2f8;border-color:#5fb2f6;color:#333}.k-state-selected.k-task-single{border-color:#cde6f7}.k-line{background-color:#333;color:#333}.k-state-selected.k-line{background-color:#cde6f7;color:#cde6f7}.k-resource{background-color:#fff}.k-i-kpi-decrease,.k-i-kpi-denied,.k-i-kpi-equal,.k-i-kpi-hold,.k-i-kpi-increase,.k-i-kpi-open{background-image:url(Office365/sprite_kpi.png)}.k-autocomplete,.k-block,.k-button,.k-calendar .k-link,.k-calendar td,.k-calendar-container,.k-colorpicker,.k-combobox,.k-datepicker,.k-datetimepicker,.k-drag-clue,.k-dropdown,.k-dropdown-wrap,.k-editor-inline,.k-grid .k-filter-options,.k-grouping-header .k-group-indicator,.k-inline-block,.k-list-container,.k-multiselect,.k-notification,.k-numeric-wrap,.k-numerictextbox,.k-picker-wrap,.k-slider-selection,.k-slider-track,.k-textbox,.k-tile,.k-timepicker,.k-tooltip,.k-touch-scrollbar,.k-treeview .k-in,.k-upload,.k-window,.k-window-action,.k-window-titleless .k-window-content{border-radius:0}.k-tool{text-align:center;vertical-align:middle}.k-tool.k-group-start,.k-toolbar .k-button-group .k-group-start,.k-toolbar .k-split-button .k-button{border-radius:0}.k-rtl .k-tool.k-group-start,.k-rtl .k-toolbar .k-button-group .k-group-start,.k-rtl .k-toolbar .k-split-button .k-button{border-radius:0}.k-tool.k-group-end,.k-toolbar .k-button-group .k-group-end,.k-toolbar .k-split-button .k-split-button-arrow{border-radius:0}.k-rtl .k-tool.k-group-end,.k-rtl .k-toolbar .k-button-group .k-group-end,.k-rtl .k-toolbar .k-split-button .k-split-button-arrow{border-radius:0}.k-group-start.k-group-end.k-tool{border-radius:0}.k-autocomplete.k-state-border-up,.k-calendar-container.k-state-border-up,.k-dropdown-wrap.k-state-border-up,.k-filter-menu,.k-list-container.k-state-border-up,.k-multiselect.k-state-border-up,.k-numeric-wrap.k-state-border-up,.k-picker-wrap.k-state-border-up,.k-window-content{border-radius:0}.k-autocomplete.k-state-border-up .k-input,.k-dropdown-wrap.k-state-border-up .k-input,.k-numeric-wrap.k-state-border-up .k-input,.k-picker-wrap.k-state-border-up .k-input,.k-picker-wrap.k-state-border-up .k-selected-color{border-radius:0}.k-multiselect.k-state-border-up .k-multiselect-wrap{border-radius:0}.k-autocomplete.k-state-border-down,.k-block>.k-header,.k-calendar-container.k-state-border-down,.k-dropdown-wrap.k-state-border-down,.k-list-container.k-state-border-down,.k-multiselect.k-state-border-down,.k-numeric-wrap.k-state-border-down,.k-panelbar .k-tabstrip-items .k-item,.k-picker-wrap.k-state-border-down,.k-tabstrip-items .k-item,.k-tabstrip-items .k-link,.k-window-titlebar{border-radius:0}.k-split-button.k-state-border-down>.k-button{border-radius:0}.k-split-button.k-state-border-up>.k-button{border-radius:0}.k-split-button.k-state-border-down>.k-split-button-arrow{border-radius:0}.k-split-button.k-state-border-up>.k-split-button-arrow{border-radius:0}.k-dropdown-wrap .k-input,.k-numeric-wrap .k-input,.k-picker-wrap .k-input{border-radius:0}.k-rtl .k-dropdown-wrap .k-input,.k-rtl .k-numeric-wrap .k-input,.k-rtl .k-picker-wrap .k-input{border-radius:0}.k-numeric-wrap .k-link{border-radius:0}.k-numeric-wrap .k-link+.k-link{border-radius:0}.k-colorpicker .k-selected-color{border-radius:0}.k-rtl .k-colorpicker .k-selected-color{border-radius:0}.k-autocomplete.k-state-border-down .k-input{border-radius:0}.k-dropdown-wrap.k-state-border-down .k-input,.k-numeric-wrap.k-state-border-down .k-input,.k-picker-wrap.k-state-border-down .k-input,.k-picker-wrap.k-state-border-down .k-selected-color{border-radius:0}.k-numeric-wrap .k-link.k-state-selected{background-color:#0072c6}.k-multiselect.k-state-border-down .k-multiselect-wrap{border-radius:0}.k-datetimepicker .k-select+.k-select,.k-dropdown-wrap .k-select,.k-list-container.k-state-border-right,.k-numeric-wrap .k-select,.k-picker-wrap .k-select{border-radius:0}.k-rtl .k-datetimepicker .k-select+.k-select,.k-rtl .k-dropdown-wrap .k-select,.k-rtl .k-list-container.k-state-border-right,.k-rtl .k-numeric-wrap .k-select,.k-rtl .k-picker-wrap .k-select{border-radius:0}.k-numeric-wrap.k-expand-padding .k-input{border-radius:0}.k-autocomplete .k-input,.k-multiselect-wrap,.k-textbox>input{border-radius:0}.k-dropzone,.k-fieldselector .k-list .k-item,.k-list .k-state-focused,.k-list .k-state-highlight,.k-list .k-state-hover,.k-list .k-state-selected,.k-list-optionlabel{border-radius:0}.k-grid .k-slider .k-button,.k-slider .k-button{border-radius:0}.k-draghandle{border-radius:0}.k-scheduler-toolbar>ul li:first-child,.k-scheduler-toolbar>ul li:first-child .k-link,.k-scheduler-toolbar>ul.k-scheduler-views li:first-child+li,.k-scheduler-toolbar>ul.k-scheduler-views li:first-child+li .k-link{border-radius:0}.k-rtl .k-scheduler-toolbar>ul li:first-child,.k-rtl .k-scheduler-toolbar>ul li:first-child .k-link,.k-rtl .k-scheduler-toolbar>ul.k-scheduler-views li:first-child+li,.k-rtl .k-scheduler-toolbar>ul.k-scheduler-views li:first-child+li .k-link,.km-view.k-popup-edit-form .k-scheduler-toolbar>ul li:last-child,.km-view.k-popup-edit-form .k-scheduler-toolbar>ul li:last-child .k-link{border-radius:0}.k-edit-field>.k-scheduler-navigation,.k-scheduler-phone .k-scheduler-toolbar>ul li.k-nav-today,.k-scheduler-phone .k-scheduler-toolbar>ul li.k-nav-today .k-link{border-radius:0}.k-scheduler-toolbar .k-nav-next,.k-scheduler-toolbar .k-nav-next .k-link,.k-scheduler-toolbar ul+ul li:last-child,.k-scheduler-toolbar ul+ul li:last-child .k-link{border-top-right-radius:0;border-bottom-right-radius:0}.k-rtl .k-scheduler-toolbar .k-nav-next,.k-rtl .k-scheduler-toolbar .k-nav-next .k-link,.k-rtl .k-scheduler-toolbar ul+ul li:last-child,.k-rtl .k-scheduler-toolbar ul+ul li:last-child .k-link{border-radius:0}.k-scheduler div.k-scheduler-footer .k-link,.k-scheduler div.k-scheduler-footer ul li{border-radius:0}.k-event,.k-event .k-link,.k-more-events,.k-task-complete,.k-task-single{border-radius:0}.k-scheduler-mobile .k-event{border-radius:-1}.k-grid-mobile .k-column-active+th.k-header{border-left-color:#333}.k-ie .km-pane-wrapper .k-content,.k-ie .km-pane-wrapper .k-group,.k-ie .km-pane-wrapper .k-header,.k-ie .km-pane-wrapper .k-popup-edit-form .k-edit-field .k-button,.k-ie .km-pane-wrapper .k-widget,.km-pane-wrapper .k-mobile-list .k-edit-field,.km-pane-wrapper .k-mobile-list .k-edit-label,.km-pane-wrapper .k-mobile-list .k-item,html .km-pane-wrapper .km-widget{color:#333}@media screen and (-ms-high-contrast:active) and (-ms-high-contrast:none){div.km-pane-wrapper a{color:#333}}.km-pane-wrapper .k-mobile-list .k-edit-field,.km-pane-wrapper .k-mobile-list .k-item,.km-pane-wrapper .k-mobile-list .k-recur-view>.k-edit-field .k-check{background-color:#fff;border-top:1px solid #c9c9c9}.km-pane-wrapper .k-mobile-list .k-edit-field textarea{outline-width:0}.km-pane-wrapper .k-mobile-list .k-item.k-state-selected{background-color:#cde6f7;border-top-color:#cde6f7}.km-pane-wrapper .k-mobile-list .k-recur-view>.k-edit-field .k-check:first-child{border-top-color:transparent}.km-pane-wrapper .k-mobile-list .k-item:last-child{-webkit-box-shadow:inset 0 -1px 0 #c9c9c9;box-shadow:inset 0 -1px 0 #c9c9c9}.km-pane-wrapper #recurrence .km-scroll-container>.k-edit-label:first-child,.km-pane-wrapper .k-mobile-list .k-recur-view>.k-edit-label:nth-child(3),.km-pane-wrapper .k-mobile-list>ul>li>.k-link{color:#7d7d7d}.km-pane-wrapper .k-mobile-list>ul>li>.k-link{border-bottom:1px solid #c9c9c9}.km-pane-wrapper .k-mobile-list .k-edit-field{-webkit-box-shadow:0 1px 1px #c9c9c9;box-shadow:0 1px 1px #c9c9c9}.km-actionsheet .k-grid-delete,.km-actionsheet .k-scheduler-delete,.km-pane-wrapper .k-filter-menu .k-button[type=reset],.km-pane-wrapper .k-scheduler-delete{color:#fff;border-color:#dbdbdb;background-color:red;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.3)),to(rgba(255,255,255,.15)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.3),rgba(255,255,255,.15));background-image:linear-gradient(to bottom,rgba(255,255,255,.3),rgba(255,255,255,.15))}.km-actionsheet .k-grid-delete:active,.km-actionsheet .k-scheduler-delete:active,.km-pane-wrapper .k-filter-menu .k-button[type=reset]:active,.km-pane-wrapper .k-scheduler-delete:active{background-color:#900}.k-autocomplete.k-state-default,.k-dropdown-wrap.k-state-default,.k-numeric-wrap.k-state-default,.k-picker-wrap.k-state-default{background-image:none;background-position:50% 50%;background-color:#fff;border-color:#bababa}.k-autocomplete.k-state-hover,.k-dropdown-wrap.k-state-hover,.k-numeric-wrap.k-state-hover,.k-picker-wrap.k-state-hover{background-color:#eaeaea;background-image:none;background-position:50% 50%;border-color:#8b8b8b}.k-multiselect.k-header{border-color:#bababa}.k-multiselect.k-header.k-state-hover{border-color:#8b8b8b}.k-autocomplete.k-state-focused,.k-dropdown-wrap.k-state-focused,.k-multiselect.k-header.k-state-focused,.k-numeric-wrap.k-state-focused,.k-picker-wrap.k-state-focused{background-color:#eaeaea;background-image:none;background-position:50% 50%;border-color:#0072c6;-webkit-box-shadow:none;box-shadow:none}.k-list-container{color:#333}.k-dropdown .k-input,.k-dropdown .k-state-focused .k-input,.k-menu .k-popup{color:#333}.k-state-default>.k-select{border-color:#bababa}.k-state-hover>.k-select{border-color:#8b8b8b}.k-state-focused>.k-select{border-color:#0072c6}.k-tabstrip:focus{-webkit-box-shadow:none;box-shadow:none}.k-panelbar>li.k-state-default>.k-link,.k-tabstrip-items .k-state-default .k-link{color:#333}.k-tabstrip-items .k-state-active .k-link,.k-tabstrip-items .k-state-hover .k-link{color:#0072c6}.k-panelbar>li.k-state-default>.k-link.k-state-hover,.k-panelbar>li.k-state-hover>.k-link{color:#000}.k-panelbar>li>.k-state-focused.k-state-hover{background:#f4f4f4;-webkit-box-shadow:none;box-shadow:none}.k-tabstrip-items .k-state-default{border-color:transparent}.k-tabstrip-items .k-state-hover{border-color:#8f8f8f}.k-panelbar .k-tabstrip-items .k-state-active,.k-tabstrip-items .k-state-active{background-color:#fff;background-image:none;border-color:#0072c6}.k-tabstrip .k-content.k-state-active{background-color:#fff;color:#333}.k-menu .k-item,.k-menu.k-header{border-color:#fff}.k-column-menu,.k-column-menu .k-item,.k-overflow-container .k-overflow-group{border-color:#c9c9c9}.k-overflow-container .k-overflow-group{-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff,0 1px 0 #fff}.k-overflow-container .k-overflow-group+.k-overflow-group,.k-toolbar-first-visible.k-overflow-group{-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.k-toolbar-last-visible.k-overflow-group{-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.k-column-menu .k-separator{border-color:#c9c9c9;background-color:transparent}.k-menu .k-group{border-color:#c9c9c9}.k-menu .k-link.k-state-active{background-color:#0072c6;color:#fff}.k-menu .k-state-hover .k-state-active{background-color:#005b9d}.k-grid-filter.k-state-active{background-color:#fff}.k-grid-filter.k-state-active .k-icon{opacity:1}.k-grid-footer td,.k-group-footer td,.k-grouping-row td{color:#333;border-color:#c9c9c9;font-weight:700}.k-grouping-header{color:#333}.k-gantt-toolbar .k-state-default,.k-grid .k-grouping-header,.k-grid-header,.k-grid-header-wrap,.k-grouping-header .k-group-indicator,.k-header,.k-pager-wrap,.k-pager-wrap .k-link,.k-pager-wrap .k-textbox{border-color:#c9c9c9}.k-overflow-container .k-primary,.k-primary{color:#fff;border-color:#0072c6;background-image:none;background-position:50% 50%;background-color:#0072c6;-webkit-box-shadow:none;box-shadow:none}.k-primary.k-state-focused,.k-primary:focus{color:#fff;border-color:#00467a;background-image:none;-webkit-box-shadow:none;box-shadow:none}.k-primary:hover{color:#fff;border-color:#005b9d;background-image:none;background-color:#005b9d;-webkit-box-shadow:none;box-shadow:none}.k-primary:focus:active:not(.k-state-disabled):not([disabled]),.k-primary:focus:not(.k-state-disabled):not([disabled]){-webkit-box-shadow:none;box-shadow:none}.k-primary:active{color:#fff;border-color:#004c84;background-image:none;background-color:#004c84;-webkit-box-shadow:none;box-shadow:none}.k-primary.k-state-disabled,.k-primary.k-state-disabled:active,.k-primary.k-state-disabled:hover,.k-state-disabled .k-primary,.k-state-disabled .k-primary:active,.k-state-disabled .k-primary:hover{color:#7d7d7d;border-color:#e5e5e5;background-color:#e5e5e5;background-image:none;-webkit-box-shadow:none;box-shadow:none}.k-pager-numbers .k-link,.k-treeview .k-in{border-color:transparent}.k-grid .k-hierarchy-cell .k-icon,.k-scheduler-table .k-icon,.k-treeview .k-icon{background-color:transparent;border-radius:0}.k-scheduler-table .k-state-hover .k-icon{background-color:transparent}.k-button:focus,.k-split-button:focus{outline:0}.k-split-button:focus{-webkit-box-shadow:0 0 0 1px #0072c6;box-shadow:0 0 0 1px #0072c6}.k-split-button:focus>.k-button{background:0 0;border-color:transparent}.k-split-button:focus>.k-button.k-split-button-arrow{border-left-color:#0072c6}.k-editor .k-tool:focus{outline:0;border-color:#0072c6;-webkit-box-shadow:none;box-shadow:none}.k-checkbox-label:before{border-color:#666;background:#fff;border-radius:1px}.k-checkbox-label:hover:before,.k-checkbox:checked+.k-checkbox-label:hover:before{border-color:#212121;-webkit-box-shadow:none;box-shadow:none}.k-checkbox:checked+.k-checkbox-label:before{background-color:#fff;border-color:#666;color:#333}.k-checkbox-label:active:before{-webkit-box-shadow:none;box-shadow:none;border-color:#0072c6}.k-checkbox:checked+.k-checkbox-label:active:before{-webkit-box-shadow:none;box-shadow:none;border-color:#0072c6}.k-checkbox:disabled+.k-checkbox-label{color:#aaa}.k-checkbox:disabled+.k-checkbox-label:hover:before{-webkit-box-shadow:none;box-shadow:none}.k-checkbox:checked:disabled+.k-checkbox-label:active:before,.k-checkbox:checked:disabled+.k-checkbox-label:before,.k-checkbox:checked:disabled+.k-checkbox-label:hover:before,.k-checkbox:disabled+.k-checkbox-label:before{color:#aaa;background:#fff;border-color:#aaa;border-radius:1px}.k-checkbox:focus+.k-checkbox-label:before{border-color:#0072c6;-webkit-box-shadow:none;box-shadow:none}.k-checkbox:indeterminate+.k-checkbox-label:after{background-color:#666;background-image:none;border-color:#666;border-radius:0}.k-checkbox:indeterminate:hover+.k-checkbox-label:after{border-color:#212121;background-color:#212121}.k-radio-label:before{border-color:#666;border-radius:50%;background-color:#fff;border-width:1px}.k-radio-label:hover:before,.k-radio:checked+.k-radio-label:hover:before{border-color:#212121;-webkit-box-shadow:none;box-shadow:none}.k-radio:checked+.k-radio-label:after{background-color:#212121;border-radius:50%}.k-radio-label:active:before{border-color:#666;-webkit-box-shadow:none;box-shadow:none}.k-radio:checked+.k-radio-label:active:before{-webkit-box-shadow:none;box-shadow:none;border-color:#666}.k-radio:disabled+.k-radio-label{color:#aaa}.k-radio:disabled+.k-radio-label:active:before,.k-radio:disabled+.k-radio-label:before,.k-radio:disabled+.k-radio-label:hover:after,.k-radio:disabled+.k-radio-label:hover:before{background:#fff;border-color:#bfbfbf;-webkit-box-shadow:none;box-shadow:none}.k-radio:focus+.k-radio-label:before{border-color:#666;-webkit-box-shadow:none;box-shadow:none}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.k-callout,.k-column-menu .k-sprite,.k-drop-hint,.k-grouping-dropclue,.k-icon:not(.k-loading),.k-mobile-list .k-check:checked,.k-mobile-list .k-edit-field [type=checkbox]:checked,.k-mobile-list .k-edit-field [type=radio]:checked,.k-state-active .k-tool-icon,.k-state-active.k-state-hover .k-tool-icon,.k-state-hover .k-tool-icon,.k-state-selected .k-tool-icon,.k-state-selected.k-state-hover .k-tool-icon,.k-tool-icon{background-image:url('data:image/png;base64,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');-webkit-background-size:340px 336px;background-size:340px 336px}.k-dropdown-wrap .k-input,.k-numeric-wrap .k-input,.k-picker-wrap .k-input{border-radius:0}.k-i-kpi-decrease,.k-i-kpi-denied,.k-i-kpi-equal,.k-i-kpi-hold,.k-i-kpi-increase,.k-i-kpi-open{background-image:url(Office365/sprite_kpi_2x.png);-webkit-background-size:96px 16px;background-size:96px 16px}}@media screen and (-ms-high-contrast:active){.k-editor-toolbar-wrap .k-button-group .k-tool:focus,.k-editor-toolbar-wrap .k-dropdown-wrap.k-state-focused{border-color:#fff}}@media only screen and (max-width:1024px){.k-ff .k-pager-numbers .k-current-page .k-link,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-ie11 .k-pager-numbers .k-current-page .k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-safari .k-pager-numbers .k-current-page .k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-webkit .k-pager-numbers .k-current-page .k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view{background-image:none;background-position:50% 50%;background-color:#fff;border-color:#c9c9c9}.k-ff .k-pager-numbers .k-current-page .k-link,.k-ie11 .k-pager-numbers .k-current-page .k-link,.k-safari .k-pager-numbers .k-current-page .k-link,.k-webkit .k-pager-numbers .k-current-page .k-link{border-color:#c9c9c9}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view{border-radius:0}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li{border-radius:0}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view{border-radius:0}.k-ff .k-scheduler-toolbar>ul li:first-child,.k-ff .k-scheduler-toolbar>ul li:first-child .k-link,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li .k-link,.k-ie11 .k-scheduler-toolbar>ul li:first-child,.k-ie11 .k-scheduler-toolbar>ul li:first-child .k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li .k-link,.k-safari .k-scheduler-toolbar>ul li:first-child,.k-safari .k-scheduler-toolbar>ul li:first-child .k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li .k-link,.k-webkit .k-scheduler-toolbar>ul li:first-child,.k-webkit .k-scheduler-toolbar>ul li:first-child .k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li .k-link{border-radius:0}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link{border-radius:0}.k-ff .k-pager-numbers .k-current-page .k-link:hover,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-ie11 .k-pager-numbers .k-current-page .k-link:hover,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-safari .k-pager-numbers .k-current-page .k-link:hover,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-webkit .k-pager-numbers .k-current-page .k-link:hover,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover{border-color:#8f8f8f;background-image:none;background-color:#f4f4f4}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link{color:#333;min-width:75px}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link{color:#000}.k-ff .k-pager-numbers .k-current-page .k-link:after,.k-ff .k-scheduler-views>li.k-state-selected>.k-link:after,.k-ie11 .k-pager-numbers .k-current-page .k-link:after,.k-ie11 .k-scheduler-views>li.k-state-selected>.k-link:after,.k-safari .k-pager-numbers .k-current-page .k-link:after,.k-safari .k-scheduler-views>li.k-state-selected>.k-link:after,.k-webkit .k-pager-numbers .k-current-page .k-link:after,.k-webkit .k-scheduler-views>li.k-state-selected>.k-link:after{display:block;content:"";position:absolute;top:50%;margin-top:-.5em;right:.333em;width:1.333em;height:1.333em}.k-ff .k-pager-numbers.k-state-expanded,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-ie11 .k-pager-numbers.k-state-expanded,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-safari .k-pager-numbers.k-state-expanded,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-webkit .k-pager-numbers.k-state-expanded,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded{border-width:1px 1px 0 1px;border-style:solid;border-color:#c9c9c9;background-color:#fff;border-radius:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.18);box-shadow:0 2px 2px 0 rgba(0,0,0,.18)}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded{border-width:1px;background-image:none;border-radius:0}.k-ff .k-pager-numbers .k-link,.k-ff .k-pager-numbers .k-state-selected,.k-ie11 .k-pager-numbers .k-link,.k-ie11 .k-pager-numbers .k-state-selected,.k-safari .k-pager-numbers .k-link,.k-safari .k-pager-numbers .k-state-selected,.k-webkit .k-pager-numbers .k-link,.k-webkit .k-pager-numbers .k-state-selected{border-radius:0}.k-ff .k-widget.k-grid .k-pager-nav+.k-pager-numbers,.k-ie11 .k-widget.k-grid .k-pager-nav+.k-pager-numbers,.k-safari .k-widget.k-grid .k-pager-nav+.k-pager-numbers,.k-webkit .k-widget.k-grid .k-pager-nav+.k-pager-numbers{position:absolute}}.k-button:hover .k-icon,.k-button:hover .k-tool-icon,.k-field-actions .k-icon,.k-gantt-toolbar .k-icon,.k-grid-toolbar .k-button:hover>.k-i-excel,.k-grid-toolbar .k-button:hover>.k-i-pdf,.k-grid-toolbar .k-i-excel,.k-grid-toolbar .k-i-pdf,.k-grid-toolbar .k-icon,.k-grouping-header .k-button-icon:hover>.k-icon.k-group-delete,.k-grouping-header .k-group-delete,.k-grouping-header .k-link:hover>.k-icon.k-si-arrow-n,.k-grouping-header .k-link:hover>.k-icon.k-si-arrow-s,.k-grouping-header .k-si-arrow-n,.k-grouping-header .k-si-arrow-s,.k-notification .k-icon,.k-pivot-configurator-settings .k-icon:hover,.k-scheduler-content .k-icon,.k-scheduler-footer .k-icon,.k-scheduler-toolbar .k-icon,.k-splitbar.k-splitbar-horizontal-hover .k-icon,.k-splitbar.k-splitbar-vertical-hover .k-icon,.k-state-focused .k-tool-icon,.k-state-hover .k-tool-icon,.k-state-selected .k-tool-icon,.k-textbox:hover>.k-icon,.k-tool-icon:hover,div.k-splitbar.k-state-focused .k-icon{opacity:.8}.k-button.k-state-disabled .k-icon,.k-state-disabled .k-icon{opacity:.3}.k-button.k-state-active,.k-button:active{color:#fff}.k-button.k-state-active:hover,.k-button:active:hover{color:#fff;border-color:#0072c6;background-color:#0072c6}.k-button.k-state-focused,.k-button:focus{background-color:#eaeaea}.k-button.k-state-focused:hover,.k-button:focus:hover{border-color:#0072c6}.k-primary.k-grid-update{color:#fff}.k-primary.k-state-active:hover,.k-primary.k-state-focused,.k-primary.k-state-focused:hover,.k-primary:active,.k-primary:active:hover,.k-primary:focus,.k-primary:focus:hover{background-color:#005b9d;border-color:#00467a}.k-button.k-state-disabled,.k-button.k-state-disabled:active,.k-button.k-state-disabled:hover,.k-button[disabled],.k-state-disabled .k-button,.k-state-disabled .k-button:active,.k-state-disabled .k-button:hover{color:#aaa;border-color:#f4f4f4;background-color:#f4f4f4;background-image:none}.k-primary.k-state-disabled,.k-primary.k-state-disabled:active,.k-primary.k-state-disabled:hover,.k-state-disabled .k-primary,.k-state-disabled .k-primary:active,.k-state-disabled .k-primary:hover{color:#7d7d7d;background-color:#e5e5e5}.k-combobox .k-select,.k-numerictextbox .k-select,.k-picker-wrap .k-select{border-color:#fff}.k-autocomplete.k-state-focused,.k-dropdown-wrap.k-state-focused,.k-multiselect.k-header.k-state-focused,.k-numeric-wrap.k-state-focused,.k-picker-wrap.k-state-focused{background-color:#fff}.k-autocomplete.k-state-disabled,.k-dropdown-wrap.k-state-disabled,.k-multiselect.k-state-disabled,.k-numeric-wrap.k-state-disabled,.k-picker-wrap.k-state-disabled,.k-state-disabled .k-picker-wrap,.k-textbox.k-state-disabled{border-color:#e5e5e5}.k-autocomplete.k-state-border-down{border-bottom-width:1px;border-bottom-style:solid;padding-bottom:0}input.k-textbox:focus{border-color:#0072c6}.k-multiselect.k-header.k-state-focused .k-button,.k-multiselect.k-header.k-state-hover .k-button{background-color:#eaeaea}.k-multiselect .k-button.k-state-hover,.k-multiselect .k-button:hover{color:#333;border-color:#eaeaea;background-color:#eaeaea}.k-multiselect.k-header.k-state-focused .k-button{border-color:#0072c6}.k-multiselect.k-state-focused.k-state-border-down .k-button,.k-multiselect.k-state-focused.k-state-border-up .k-button{color:#fff;background-color:#0072c6;border-color:#0072c6}.k-dropdown-wrap.k-state-default.k-state-active,.k-picker-wrap.k-state-default.k-state-active{background-color:#0072c6;border-color:#0072c6}.k-dropdown-wrap.k-state-default.k-state-active .k-select,.k-picker-wrap.k-state-default.k-state-active .k-select{border-color:#0072c6}.k-dropdown .k-state-default.k-state-active .k-input,.k-state-selected .k-progress-status{color:#fff}.k-list>.k-state-hover{border-color:#f4f4f4}.k-list>.k-state-selected{background-color:#cde6f7;border-color:#cde6f7}.k-popup{-webkit-box-shadow:0 0 5px 2px rgba(0,0,0,.18);box-shadow:0 0 5px 2px rgba(0,0,0,.18)}.k-calendar .k-state-focused,.k-calendar .k-state-selected.k-state-focused{-webkit-box-shadow:inset 0 0 0 1px #0072c6;box-shadow:inset 0 0 0 1px #0072c6}.k-calendar .k-state-selected{background-color:#cde6f7}.k-calendar .k-state-selected.k-state-hover,.k-calendar td:active{background-color:#c2dbec}.k-calendar .k-nav-fast.k-state-hover,.k-calendar .k-nav-next.k-state-hover,.k-calendar .k-nav-prev.k-state-hover{background-color:#fff}.k-calendar .k-today{background-color:#0072c6}.k-calendar .k-today .k-link{color:#fff}.k-calendar .k-today.k-state-hover{background-color:#005b9d}.k-calendar .k-today.k-state-focused,.k-calendar .k-today.k-state-selected:active,.k-calendar .k-today:active{-webkit-box-shadow:inset 0 0 0 1px #00467a;box-shadow:inset 0 0 0 1px #00467a}.k-calendar .k-footer .k-nav-today{color:#0072c6}.k-calendar .k-footer{border-color:#c9c9c9}.k-popup.k-context-menu.k-group .k-state-hover{color:#0072c6;background-color:#fff}.k-splitbar{border-color:#f4f4f4}.k-splitbar-horizontal-hover:hover,.k-splitbar-vertical-hover:hover{background-color:#eaeaea;border-color:#eaeaea}.k-splitbar.k-state-focused{background-color:#0072c6;border-color:#0072c6}.k-marquee-color{background-color:#0072c6}.k-grid .k-state-selected,.k-grid td.k-state-selected.k-state-focused{background-color:#cde6f7}.k-gantt .k-treelist tr:hover,.k-grid tr:hover{background-color:#f4f4f4}.k-pivot-rowheaders .k-grid tr:hover{background:0 0}.k-grid td.k-state-selected:hover,.k-grid tr.k-state-selected:hover{background-color:#d7e4ed}.k-gantt .k-header.k-nonwork-hour,.k-gantt .k-treelist .k-alt{background-color:#fff}.k-grid td.k-state-focused,.k-grid-header th.k-state-focused{-webkit-box-shadow:inset 0 0 0 1px #0072c6;box-shadow:inset 0 0 0 1px #0072c6}.k-grid .k-grouping-header,.k-grid td,.k-grid-header-wrap,.k-header.k-grid-toolbar{border-color:transparent}.k-grid tr th{border-left-color:transparent}.k-pivot .k-grid-header th.k-header,.k-pivot-layout>tbody>tr:first-child>td:first-child{border-color:#c9c9c9}.k-group-footer td{border-top-color:#c9c9c9}.k-grouping-header,.k-pager-info{color:#aaa}.k-grouping-header .k-group-indicator{background-color:#f4f4f4;border-color:#f4f4f4}.k-grouping-header .k-group-indicator .k-link{color:#333}.k-pager-numbers .k-link,.k-pager-numbers .k-link:hover,.k-pager-numbers .k-state-selected,.k-pager-wrap>.k-link{background:0 0;border-radius:0}.k-pager-numbers .k-link:hover,.k-pager-wrap>.k-link,.k-pager-wrap>.k-link.k-state-disabled:hover,.k-pager-wrap>.k-link:hover{border-radius:0;border-color:transparent;background:0 0}.k-pager-numbers .k-link{border-color:transparent;color:#333}.k-pager-numbers .k-state-selected{color:#0072c6;border-color:#0072c6}.k-progressbar{background-color:#e5e5e5;border-color:#e5e5e5}.k-progressbar .k-state-default{border-color:#e5e5e5 #fff #e5e5e5}.k-progressbar .k-state-selected{background-color:#0072c6;border-color:#0072c6}.k-progressbar.k-progressbar-vertical .k-state-selected{border-color:#0072c6}.k-toolbar .k-toggle-button{background-color:#fff;border-color:#fff}.k-toolbar .k-toggle-button:hover{background-color:#f4f4f4;border-color:#f4f4f4}.k-toolbar .k-toggle-button.k-state-active,.k-toolbar .k-toggle-button:active,.k-toolbar .k-toggle-button:active:hover{background-color:#cde6f7;border-color:#cde6f7}.k-toolbar .k-toggle-button.k-state-active,.k-toolbar .k-toggle-button.k-state-active:hover,.k-toolbar .k-toggle-button:active,.k-toolbar .k-toggle-button:active:hover{color:#333}.k-toolbar .k-toggle-button.k-state-disabled,.k-toolbar .k-toggle-button.k-state-disabled:active,.k-toolbar .k-toggle-button.k-state-disabled:active:hover{color:#aaa;border-color:#f4f4f4;background-color:#f4f4f4;background-image:none}.k-toolbar .k-overflow-anchor{background-color:#fff;border-color:#c9c9c9}.k-toolbar .k-overflow-anchor:hover{background-color:#eaeaea;border-color:#eaeaea}.k-toolbar .k-overflow-anchor.k-state-active{border-color:#eaeaea}.k-toolbar .k-overflow-anchor.k-state-border-down,.k-toolbar .k-overflow-anchor.k-state-border-up{background-color:#0072c6;border-color:#0072c6}.k-tabstrip.k-header{background-color:#f4f4f4}.k-tabstrip .k-item{background-color:#f4f4f4;border-color:#f4f4f4}.k-tabstrip .k-item.k-state-active{background-color:#fff;border-color:#fff}.k-tabstrip .k-content{border-color:transparent}.k-slider-track{background-color:#bababa}.k-slider-selection{background-color:#0072c6}.k-draghandle{background-color:#0072c6;border-color:#0072c6}.k-draghandle.k-state-selected,.k-draghandle.k-state-selected:hover,.k-draghandle:hover{background-color:#005b9d;border-color:#005b9d}.k-flatcolorpicker .k-hsv-rectangle,.k-flatcolorpicker .k-selected-color input.k-color-value{border-color:#c9c9c9}.k-flatcolorpicker .k-hue-slider .k-draghandle,.k-flatcolorpicker .k-hue-slider .k-draghandle:focus,.k-flatcolorpicker .k-hue-slider .k-draghandle:hover,.k-flatcolorpicker .k-transparency-slider .k-draghandle,.k-flatcolorpicker .k-transparency-slider .k-draghandle:focus,.k-flatcolorpicker .k-transparency-slider .k-draghandle:hover{background-color:#666;border-color:#666}.k-flatcolorpicker .k-slider-horizontal .k-slider-track{-webkit-box-shadow:none;box-shadow:none}.k-treeview .k-state-selected{color:#0072c6;background-color:#fff}.k-gantt-toolbar .k-link,.k-scheduler-toolbar .k-link{color:#333}.k-gantt-toolbar .k-state-selected .k-link,.k-scheduler-toolbar .k-state-selected .k-link{color:#0072c6}.k-gantt-toolbar .k-nav-current .k-link,.k-scheduler-toolbar .k-nav-current .k-link{color:#0072c6}.k-gantt .k-gantt-toolbar ul li,.k-gantt .k-gantt-toolbar ul li.k-state-hover,.k-gantt .k-gantt-toolbar ul li.k-state-selected,.k-scheduler .k-scheduler-toolbar ul li,.k-scheduler .k-scheduler-toolbar ul li.k-state-hover,.k-scheduler .k-scheduler-toolbar ul li.k-state-selected{background-color:#fff;border-color:transparent}.k-fieldselector .k-item.k-header{border-color:#f4f4f4;background-color:#f4f4f4}.k-fieldselector .k-item.k-header.k-state-hover{border-color:#eaeaea;background-color:#eaeaea}.k-scheduler-footer ul li{border-color:transparent}.k-scheduler .k-event-inverse,.k-scheduler .k-event-template{color:#fff}.k-scheduler .k-nonwork-hour{background-color:#e3f1fb}.k-scheduler-content .k-event{-webkit-box-shadow:inset 4px 0 0 0 rgba(255,255,255,.5);box-shadow:inset 4px 0 0 0 rgba(255,255,255,.5)}.k-scheduler-header th,.k-scheduler-header-wrap,.k-scheduler-table td,.k-scheduler-times,.k-scheduler-times th,.k-scheduler-times tr{border-left-color:transparent;border-right-color:transparent}.k-gantt .k-gantt-timeline tr:first-child th{border-color:#c9c9c9}.k-gantt .k-treelist .k-alt{background-color:#fff}.k-panelbar .k-state-selected.k-state-hover{background-color:#cde6f7}.k-panelbar>li.k-state-default>.k-link.k-state-selected,.k-panelbar>li>.k-state-focused.k-state-hover,.k-panelbar>li>.k-state-selected,.k-panelbar>li>.k-state-selected.k-state-hover{color:#fff;background-color:#0072c6}.k-panelbar .k-content,.k-panelbar .k-item,.k-panelbar .k-panel,.k-panelbar.k-header,.k-panelbar>.k-item>.k-link{border-color:#fff}.k-window>.k-header{border-color:transparent}.k-window-titlebar .k-state-hover{background-color:transparent;border-color:transparent}.k-notification,.k-tooltip-validation{-webkit-box-shadow:none;box-shadow:none}.k-editor .k-tool{border-color:#fff}.k-editor .k-tool.k-state-selected{border-color:#cde6f7}.k-editor .k-tool.k-state-hover{border-color:#f4f4f4}.k-ff .k-nav-current>.k-link span+span,.k-ie11 .k-nav-current>.k-link span+span,.k-safari .k-nav-current>.k-link span+span,.k-webkit .k-nav-current>.k-link span+span{max-width:400px}@media only screen and (max-width:1420px){.k-ff .k-nav-current>.k-link span+span,.k-ie11 .k-nav-current>.k-link span+span,.k-safari .k-nav-current>.k-link span+span,.k-webkit .k-nav-current>.k-link span+span{max-width:200px}}@media only screen and (max-width:1024px){.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover{background-image:none;background-position:50% 50%;background-color:transparent;border-color:#c9c9c9;border-radius:0;text-align:right}.k-ff .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-ie11 .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-safari .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view,.k-webkit .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view{text-align:left}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li{border-radius:0}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded>li.k-current-view{border-radius:0}.k-ff .k-scheduler-toolbar>ul li:first-child,.k-ff .k-scheduler-toolbar>ul li:first-child .k-link,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li .k-link,.k-ie11 .k-scheduler-toolbar>ul li:first-child,.k-ie11 .k-scheduler-toolbar>ul li:first-child .k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li .k-link,.k-safari .k-scheduler-toolbar>ul li:first-child,.k-safari .k-scheduler-toolbar>ul li:first-child .k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li .k-link,.k-webkit .k-scheduler-toolbar>ul li:first-child,.k-webkit .k-scheduler-toolbar>ul li:first-child .k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li .k-link{border-radius:0;padding-top:0}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li:last-child,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views li:last-child .k-link{border-radius:0}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover{border-color:#8f8f8f;background-image:none;background-color:#f4f4f4}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-ff .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view:hover>.k-link,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views>li.k-current-view>.k-link{color:#333;min-width:20px}.k-ff .k-scheduler-views>li.k-state-selected>.k-link:after,.k-ie11 .k-scheduler-views>li.k-state-selected>.k-link:after,.k-safari .k-scheduler-views>li.k-state-selected>.k-link:after,.k-webkit .k-scheduler-views>li.k-state-selected>.k-link:after{display:block;content:"";position:absolute;top:50%;margin-top:-.5em;right:.333em;width:16px;height:16px}.k-ff .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-ie11 .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-safari .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-webkit .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded{border-width:1px 1px 0 1px;border-style:solid;border-color:#c9c9c9;background-color:#fff;border-radius:0;border-width:1px;background-image:none;-webkit-box-shadow:0 0 5px 2px rgba(0,0,0,.18);box-shadow:0 0 5px 2px rgba(0,0,0,.18)}.k-ff .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-ie11 .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-safari .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded,.k-webkit .k-rtl .k-scheduler-toolbar>ul.k-scheduler-views.k-state-expanded{text-align:left}.k-ff .k-pager-input,.k-ff .k-pager-wrap .k-pager-nav,.k-ie11 .k-pager-input,.k-ie11 .k-pager-wrap .k-pager-nav,.k-safari .k-pager-input,.k-safari .k-pager-wrap .k-pager-nav,.k-webkit .k-pager-input,.k-webkit .k-pager-wrap .k-pager-nav{display:inline-block;vertical-align:top}.k-ff .k-grid .k-pager-numbers,.k-ff .k-pager-numbers,.k-ie11 .k-grid .k-pager-numbers,.k-ie11 .k-pager-numbers,.k-safari .k-grid .k-pager-numbers,.k-safari .k-pager-numbers,.k-webkit .k-grid .k-pager-numbers,.k-webkit .k-pager-numbers{position:absolute;left:5em;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;overflow:visible;height:auto;-webkit-transform:translatey(-100%);-ms-transform:translatey(-100%);transform:translatey(-100%)}.k-ff .km-pane-wrapper .k-pager-numbers .k-link,.k-ff .km-pane-wrapper .k-pager-numbers .k-state-selected,.k-ff .km-pane-wrapper .k-pager-wrap>.k-link,.k-ff .km-pane-wrapper .k-pager-wrap>.k-pager-info,.k-ie11 .km-pane-wrapper .k-pager-numbers .k-link,.k-ie11 .km-pane-wrapper .k-pager-numbers .k-state-selected,.k-ie11 .km-pane-wrapper .k-pager-wrap>.k-link,.k-ie11 .km-pane-wrapper .k-pager-wrap>.k-pager-info,.k-safari .km-pane-wrapper .k-pager-numbers .k-link,.k-safari .km-pane-wrapper .k-pager-numbers .k-state-selected,.k-safari .km-pane-wrapper .k-pager-wrap>.k-link,.k-safari .km-pane-wrapper .k-pager-wrap>.k-pager-info,.k-webkit .km-pane-wrapper .k-pager-numbers .k-link,.k-webkit .km-pane-wrapper .k-pager-numbers .k-state-selected,.k-webkit .km-pane-wrapper .k-pager-wrap>.k-link,.k-webkit .km-pane-wrapper .k-pager-wrap>.k-pager-info{padding-top:0;padding-bottom:0}.k-ff .k-rtl .k-grid .k-pager-numbers,.k-ff .k-rtl .k-pager-numbers,.k-ie11 .k-rtl .k-grid .k-pager-numbers,.k-ie11 .k-rtl .k-pager-numbers,.k-safari .k-rtl .k-grid .k-pager-numbers,.k-safari .k-rtl .k-pager-numbers,.k-webkit .k-rtl .k-grid .k-pager-numbers,.k-webkit .k-rtl .k-pager-numbers{right:5em;width:5.15em}.k-ff .k-grid .k-pager-numbers .k-current-page,.k-ff .k-pager-numbers .k-current-page,.k-ie11 .k-grid .k-pager-numbers .k-current-page,.k-ie11 .k-pager-numbers .k-current-page,.k-safari .k-grid .k-pager-numbers .k-current-page,.k-safari .k-pager-numbers .k-current-page,.k-webkit .k-grid .k-pager-numbers .k-current-page,.k-webkit .k-pager-numbers .k-current-page{display:block;border-left:0;-webkit-transform:translatey(100%);-ms-transform:translatey(100%);transform:translatey(100%)}.k-ff .k-pager-numbers li:not(.k-current-page),.k-ie11 .k-pager-numbers li:not(.k-current-page),.k-safari .k-pager-numbers li:not(.k-current-page),.k-webkit .k-pager-numbers li:not(.k-current-page){display:none}.k-ff .k-pager-wrap .k-pager-numbers .k-current-page .k-link,.k-ie11 .k-pager-wrap .k-pager-numbers .k-current-page .k-link,.k-safari .k-pager-wrap .k-pager-numbers .k-current-page .k-link,.k-webkit .k-pager-wrap .k-pager-numbers .k-current-page .k-link{width:3.8em;line-height:1.429em;padding:.3em .429em .3em .8em;border-radius:0;background-image:none;background-position:50% 50%;background-color:#fff;border:1px solid #c9c9c9}.k-ff .k-pager-numbers .k-current-page:hover .k-link,.k-ie11 .k-pager-numbers .k-current-page:hover .k-link,.k-safari .k-pager-numbers .k-current-page:hover .k-link,.k-webkit .k-pager-numbers .k-current-page:hover .k-link{border-radius:0;background-color:#f4f4f4;border:1px solid #8f8f8f}.k-ff .k-pager-numbers .k-current-page .k-link:after,.k-ie11 .k-pager-numbers .k-current-page .k-link:after,.k-safari .k-pager-numbers .k-current-page .k-link:after,.k-webkit .k-pager-numbers .k-current-page .k-link:after{display:block;content:"";position:absolute;top:50%;margin-top:-.6em;right:.6em;width:16px;height:16px}.k-ff .k-pager-numbers+.k-link,.k-ie11 .k-pager-numbers+.k-link,.k-safari .k-pager-numbers+.k-link,.k-webkit .k-pager-numbers+.k-link{margin-left:5.7em}.k-ff .k-rtl .k-pager-numbers+.k-link,.k-ie11 .k-rtl .k-pager-numbers+.k-link,.k-safari .k-rtl .k-pager-numbers+.k-link,.k-webkit .k-rtl .k-pager-numbers+.k-link{margin-right:6em;margin-left:0}.k-ff .k-pager-wrap .k-pager-numbers .k-link,.k-ff .k-pager-wrap .k-pager-numbers .k-state-selected,.k-ie11 .k-pager-wrap .k-pager-numbers .k-link,.k-ie11 .k-pager-wrap .k-pager-numbers .k-state-selected,.k-safari .k-pager-wrap .k-pager-numbers .k-link,.k-safari .k-pager-wrap .k-pager-numbers .k-state-selected,.k-webkit .k-pager-wrap .k-pager-numbers .k-link,.k-webkit .k-pager-wrap .k-pager-numbers .k-state-selected{display:block;margin-top:0;margin-right:0;padding:1px 5px 1px .8em;text-align:left;border-width:0}.k-ff .k-pager-wrap .k-pager-numbers .k-state-selected,.k-ie11 .k-pager-wrap .k-pager-numbers .k-state-selected,.k-safari .k-pager-wrap .k-pager-numbers .k-state-selected,.k-webkit .k-pager-wrap .k-pager-numbers .k-state-selected{background-color:#cde6f7}.k-ff .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,.k-ie11 .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,.k-safari .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover,.k-webkit .k-pager-wrap .k-pager-numbers li:not(.k-current-page) .k-link:hover{background-color:#f4f4f4}.k-ff .k-pager-numbers.k-state-expanded,.k-ie11 .k-pager-numbers.k-state-expanded,.k-safari .k-pager-numbers.k-state-expanded,.k-webkit .k-pager-numbers.k-state-expanded{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;border-style:solid;border-color:#c9c9c9;background-color:#fff;border-radius:0;-webkit-box-shadow:0 0 5px 2px rgba(0,0,0,.18);box-shadow:0 0 5px 2px rgba(0,0,0,.18)}.k-ff .k-pager-numbers.k-state-expanded .k-current-page,.k-ie11 .k-pager-numbers.k-state-expanded .k-current-page,.k-safari .k-pager-numbers.k-state-expanded .k-current-page,.k-webkit .k-pager-numbers.k-state-expanded .k-current-page{margin:-2.2em -1px 0;padding:0}.k-ff .k-pager-numbers.k-state-expanded .k-current-page .k-link,.k-ie11 .k-pager-numbers.k-state-expanded .k-current-page .k-link,.k-safari .k-pager-numbers.k-state-expanded .k-current-page .k-link,.k-webkit .k-pager-numbers.k-state-expanded .k-current-page .k-link{border-radius:0;background-color:#0072c6;border:1px solid #0072c6;border-top-color:#c9c9c9;color:#fff}.k-ff .k-pager-numbers.k-state-expanded .k-current-page .k-link:after,.k-ie11 .k-pager-numbers.k-state-expanded .k-current-page .k-link:after,.k-safari .k-pager-numbers.k-state-expanded .k-current-page .k-link:after,.k-webkit .k-pager-numbers.k-state-expanded .k-current-page .k-link:after{background-position:0 0;opacity:1}.k-ff .k-pager-numbers.k-state-expanded li,.k-ie11 .k-pager-numbers.k-state-expanded li,.k-safari .k-pager-numbers.k-state-expanded li,.k-webkit .k-pager-numbers.k-state-expanded li{display:inline-block}}@media only screen and (max-width:640px){.k-ff .k-pager-info,.k-ie11 .k-pager-info,.k-safari .k-pager-info,.k-webkit .k-pager-info{display:none}}@media only screen and (max-width:480px){.k-ff .k-pager-sizes,.k-ie11 .k-pager-sizes,.k-safari .k-pager-sizes,.k-webkit .k-pager-sizes{display:none}.k-ff .k-scheduler-toolbar .k-i-calendar,.k-ie11 .k-scheduler-toolbar .k-i-calendar,.k-safari .k-scheduler-toolbar .k-i-calendar,.k-webkit .k-scheduler-toolbar .k-i-calendar{display:inline-block}}.k-chart .k-mask{background-color:#fff;filter:alpha(opacity=68);opacity:.68}.k-chart .k-selection{border-color:#e5e5e5}.k-chart .k-handle{width:15px;height:15px;background-color:#00b0ff;border-radius:10px}.k-chart .k-leftHandle{left:-8px}.k-chart .k-rightHandle{right:-8px}.k-chart .k-handle:hover{background-color:#00b0ff;border-color:#00b0ff}.k-chart .k-navigator-hint .k-tooltip{border:3px solid #fff;-webkit-box-shadow:0 0 0 3px rgba(0,0,0,.2);box-shadow:0 0 0 3px rgba(0,0,0,.2);background:#fff;color:#242424}.k-chart .k-navigator-hint .k-scroll{background:#0072c6;height:4px}.k-chart-tooltip{background-image:none}.k-map .k-marker{background-image:url(Office365/markers.png)}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.k-map .k-marker{background-image:url(Office365/markers_2x.png)}}.k-map .k-attribution{color:#666}.k-spreadsheet-column-header,.k-spreadsheet-row-header{background-color:#fff}.k-spreadsheet-column-header,.k-spreadsheet-row-header,.k-spreadsheet-top-corner{background-color:#fff;background-image:none;color:#000;border-color:#dadada}.k-spreadsheet-top-corner{border-color:#dadada}.k-spreadsheet-top-corner:after{border-color:transparent #dadada #dadada transparent}.k-spreadsheet-pane{border-color:#c8c8c8}.k-spreadsheet-pane .k-spreadsheet-haxis,.k-spreadsheet-pane .k-spreadsheet-vaxis{border-color:#c8c8c8}.k-spreadsheet-pane .k-spreadsheet-column-header,.k-spreadsheet-pane .k-spreadsheet-row-header{border-color:#dadada}.k-spreadsheet-pane .k-spreadsheet-merged-cell{background-color:#fff}.k-spreadsheet-pane .k-selection-full,.k-spreadsheet-pane .k-selection-partial{border-color:rgba(0,114,198,.2);background-color:rgba(0,114,198,.2)}.k-spreadsheet-pane .k-filter-range{border-color:#0072c6}.k-spreadsheet-pane .k-spreadsheet-column-header .k-selection-full,.k-spreadsheet-pane .k-spreadsheet-column-header .k-selection-partial{border-bottom-color:#0072c6}.k-spreadsheet-pane .k-spreadsheet-row-header .k-selection-full,.k-spreadsheet-pane .k-spreadsheet-row-header .k-selection-partial{border-right-color:#0072c6}.k-auto-fill,.k-spreadsheet-selection{border-color:#0072c6;-webkit-box-shadow:inset 0 0 0 1px #fff,0 0 0 1px #0072c6;box-shadow:inset 0 0 0 1px #fff,0 0 0 1px #0072c6}.k-spreadsheet-selection{background-color:rgba(0,114,198,.2)}.k-spreadsheet-active-cell{border-color:#0072c6!important;background-color:#fff}.k-spreadsheet-active-cell.k-single{background-color:#fff}.k-spreadsheet>.k-spreadsheet-formula-bar{background-color:#fff;border-color:#fff #fff #dadada}.k-spreadsheet>.k-spreadsheet-formula-bar:before{border-color:#dadada}.k-spreadsheet>.k-spreadsheet-formula-bar:after{border-color:#fff}.k-spreadsheet .k-spreadsheet-formula-input{background-color:#fff;color:#333}.k-spreadsheet .k-resize-handle,.k-spreadsheet .k-resize-hint-handle,.k-spreadsheet .k-resize-hint-marker{background-color:#cde6f7}.k-spreadsheet .k-resize-hint-vertical .k-resize-hint-handle,.k-spreadsheet .k-resize-hint-vertical .k-resize-hint-marker{background-color:#cde6f7}.k-spreadsheet .k-single-selection::after{background-color:#0072c6;border-color:#fff}.k-spreadsheet .k-auto-fill-punch{background-color:rgba(255,255,255,.5)}.k-spreadsheet .k-single-selection.k-dim-auto-fill-handle::after{background-color:rgba(0,114,198,.5)}.k-spreadsheet-format-cells .k-spreadsheet-preview{border-color:#c9c9c9}.k-spreadsheet-filter{border-radius:0;background-color:#fff;-webkit-box-shadow:inset 0 0 0 1px #c8c8c8;box-shadow:inset 0 0 0 1px #c8c8c8}.k-spreadsheet-filter.k-state-active{color:#333;background-color:#cde6f7}.k-spreadsheet-filter:hover{color:#000;background:#f4f4f4;border-color:#e0e0e0}.k-action-window .k-action-buttons{border-color:#c9c9c9}.k-spreadsheet-sample{color:grey}.k-state-selected .k-spreadsheet-sample{color:inherit}.k-spreadsheet-window .k-list,.k-spreadsheet-window .k-list-wrapper{border-color:#c9c9c9;border-radius:0}.k-spreadsheet-window .export-config,.k-spreadsheet-window .k-edit-field>.k-orientation-label{border-color:#c9c9c9}.k-spreadsheet-window .k-edit-field>input[type=radio]:checked+.k-orientation-label{background-image:none;background-color:#cde6f7;color:#525252}.k-spreadsheet-window .k-page-orientation{border-color:#0075cb;-webkit-box-shadow:0 5px 5px 0 rgba(0,0,0,.1);box-shadow:0 5px 5px 0 rgba(0,0,0,.1)}.k-spreadsheet-window .k-page-orientation:before{background:#fff;border-color:transparent;border-bottom-color:#0075cb;border-left-color:#0075cb}.k-spreadsheet-window .k-margins-horizontal,.k-spreadsheet-window .k-margins-vertical{background:0 0;border-color:#c9c9c9}.k-spreadsheet-toolbar.k-toolbar .k-button-group .k-button{border-radius:0}.k-spreadsheet-toolbar>.k-button,.k-spreadsheet-toolbar>.k-button-group,.k-spreadsheet-toolbar>.k-widget{border-radius:0}.k-spreadsheet-toolbar>.k-separator{border-color:#c9c9c9}.k-spreadsheet-toolbar .k-overflow-anchor{border-radius:0}.k-spreadsheet-popup{border-radius:0}.k-spreadsheet-popup .k-separator{background-color:#c9c9c9}.k-spreadsheet-popup .k-button{background-color:transparent}.k-spreadsheet-popup .k-button:hover{background-color:#f4f4f4}.k-spreadsheet-popup .k-state-active{background-color:#cde6f7;color:#fff}.k-spreadsheet-popup .k-state-active:hover{background-color:#a1d0f0}.k-spreadsheet-filter-menu .k-details{border-color:#c9c9c9}.k-spreadsheet-filter-menu .k-details-content .k-space-right{background-color:#fff}.k-spreadsheet-filter-menu .k-spreadsheet-value-treeview-wrapper{background-color:#fff;border-color:#c9c9c9;border-radius:0}.k-syntax-ref{color:#f82}.k-syntax-num{color:#09f}.k-syntax-func{font-weight:700}.k-syntax-str{color:#38b714}.k-syntax-error{color:red}.k-syntax-bool{color:#a9169c}.k-syntax-startexp{font-weight:700}.k-syntax-paren-match{background-color:#caf200}.k-series-a{border-color:#0072c6;background-color:rgba(0,114,198,.15)}.k-series-b{border-color:#5db2ff;background-color:rgba(93,178,255,.15)}.k-series-c{border-color:#008a17;background-color:rgba(0,138,23,.15)}.k-series-d{border-color:#82ba00;background-color:rgba(130,186,0,.15)}.k-series-e{border-color:#ff8f32;background-color:rgba(255,143,50,.15)}.k-series-f{border-color:#ac193d;background-color:rgba(172,25,61,.15)}.k-spreadsheet-sheets-remove:hover .k-icon{color:#c22}.k-spreadsheet-formula-list .k-state-focused{background-color:#cde6f7;color:#333}@media only screen and (-webkit-min-device-pixel-ratio:2){.k-icon.k-font-icon{background-image:none}}.k-spreadsheet-sheets-bar{background-color:#f4f4f4}.k-spreadsheet-sheets-bar .k-item,.k-spreadsheet-sheets-bar .k-item.k-state-active{border-color:#dadada} | |
/*# sourceMappingURL=kendo.office365.min.css.map */ |
This file has been truncated, but you can view the full file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module powerbi.visuals { | |
import SelectionManager = utility.SelectionManager; | |
import DataViewTransform = powerbi.data.DataViewTransform; | |
export interface CategoryViewModel { | |
id: string; | |
value: string; | |
identity: any; | |
selectionId: SelectionId; | |
key: string; | |
categories: CategoryViewModel[]; | |
parentPath: string; | |
path: string; | |
level: number; | |
} | |
export interface ViewModel { | |
categories: CategoryViewModel[]; | |
} | |
export class MultiSelectDropDown implements IVisual { | |
public static capabilities: VisualCapabilities = { | |
// This is what will appear in the 'Field Wells' in reports | |
dataRoles: [ | |
{ | |
displayName: 'Category', | |
name: 'Category', | |
kind: powerbi.VisualDataRoleKind.Grouping, | |
cartesianKind: 0 //CartesianRoleKind.X | |
} | |
], | |
// This tells power bi how to map your roles above into the dataview you will receive | |
dataViewMappings: [{ | |
categorical: { | |
categories: { | |
for: { in: 'Category' }, | |
dataReductionAlgorithm: { top: {} } | |
}, | |
values: { | |
group: { | |
by: 'Category', | |
select: [ | |
{ for: { in: 'Category' } } | |
], | |
dataReductionAlgorithm: { top: {} } | |
} | |
} | |
} | |
}], | |
// Objects light up the formatting pane | |
objects: { | |
general: { | |
displayName: data.createDisplayNameGetter('Visual_General'), | |
properties: { | |
formatString: { | |
type: { formatting: { formatString: true } }, | |
}, | |
}, | |
}, | |
} | |
}; | |
public static converter(dataView: DataView): ViewModel { | |
var viewModel: ViewModel = { | |
categories: [] | |
} | |
if (dataView) { | |
var categorical = dataView.categorical; | |
if (categorical) { | |
var categories = categorical.categories; | |
if (categories && categories.length > 0 ) { | |
for ( var h= 0; h < categories.length; h++) | |
{ | |
var categoryValsFlat = new Array(); | |
for (var i = 0, catLength = categories[h].values.length; i < catLength; i++) { | |
//var identity = SelectionIdBuilder.builder().withCategory(dataView.categorical.categories[h], i).createSelectionId(); | |
var selectionId =dataView.categorical.categories[h].identity | |
? SelectionId.createWithId(dataView.categorical.categories[h].identity[i]) | |
: SelectionId.createNull(); | |
var identity = dataView.categorical.categories[h].identity[i] | |
; | |
var path; | |
var parentPath = ""; | |
var level = 1; | |
// Set parent path | |
if (typeof(dataView.categorical.categories[h].identity[i].expr.left) != 'undefined') | |
{ | |
var x = dataView.categorical.categories[h].identity[i].expr; | |
while (typeof(x.left) != 'undefined') | |
{ | |
if (typeof(x.left.ref) == 'undefined') | |
{ | |
parentPath += ":" + x.right.left.ref + '|' + x.right.right.valueEncoded; | |
} | |
else | |
{ | |
parentPath += ":" + x.left.ref + '|' + x.right.valueEncoded; | |
} | |
level ++; | |
x = x.left; | |
} | |
} | |
// Set path | |
if (typeof(dataView.categorical.categories[h].identity[i].expr.right.left) != 'undefined') | |
{ | |
path = parentPath + '>' + dataView.categorical.categories[h].identity[i].expr.right.left.ref + '|' + dataView.categorical.categories[h].identity[i].expr.right.right.valueEncoded; | |
} | |
else | |
{ | |
path = parentPath; | |
} | |
categoryValsFlat.push({ | |
value: categories[h].values[i], | |
identity: identity, | |
selectionId: selectionId, | |
key: selectionId.getKey(), | |
parentPath: parentPath, | |
path : path , | |
level: level | |
}) | |
} | |
var dataSourceGroup = new kendo.data.HierarchicalDataSource({data: categoryValsFlat}); | |
dataSourceGroup.group({ field: "value" }); | |
// Load child items | |
var topCategories = new Array; | |
for (i = 0; i < dataSourceGroup.view().length; i++) | |
{ | |
var categoryItems = new Array(); | |
var categoryIdentities = new Array(); | |
var categoryIdentitiesExpr = new Array(); | |
for (var j = 0 ; j < dataSourceGroup.view()[i].items.length; j++) | |
{ | |
var d = dataSourceGroup.view()[i].items[j]; | |
categoryItems.push({id: j.toString(), categories: [] , value: d.value,selectionId: d.selectionId, identity: d.identity, key: d.key, parentPath: d.parentPath, path: d.path , level: 2}); | |
categoryIdentities.push(d.identity); | |
categoryIdentitiesExpr.push(d.identity.expr); | |
} | |
var SQExpr = data.SQExprBuilder.or.apply(data, categoryIdentitiesExpr); | |
var identityExpr = data.createDataViewScopeIdentity(SQExpr); | |
var selectionIdExpr = SelectionId.createWithId(identityExpr); | |
var selectionId = SelectionId.createWithIds.apply(SelectionId, categoryIdentities); | |
topCategories.push({id: i.toString(), categories: categoryItems , value: dataSourceGroup.view()[i].value, selectionId: selectionIdExpr, identity: null, key: null, parentPath: null, path: null , level: 1 }); | |
} | |
viewModel.categories.push({id: h.toString(), categories: topCategories, value: categories[h].source.displayName,selectionId: null, identity: null, key: null, parentPath: null, path: null , level: 0 }); | |
} | |
} | |
} | |
} | |
//dataView.categorical.categories = []; | |
return viewModel; | |
} | |
private hostContainer: JQuery; | |
private div: D3.Selection; | |
private colorPalette: IDataColorPalette; | |
private selectionManager: SelectionManager; | |
private multiSelects: any[]; | |
/** This is called once when the visual is initialially created */ | |
public init(options: VisualInitOptions): void { | |
this.colorPalette = options.style.colorPalette.dataColors; | |
// element is the element in which your visual will be hosted. | |
this.hostContainer = options.element.css('overflow-x', 'hidden'); | |
this.div = d3.select(options.element.get(0)) | |
.append("div") | |
.attr("id","myDiv") | |
.attr("class","container"); | |
this.selectionManager = new SelectionManager({ hostServices: options.host }); | |
this.multiSelects = new Array(); | |
} | |
/** Update is called for data updates, resizes & formatting changes */ | |
public update(options: VisualUpdateOptions) { | |
var dataViews = options.dataViews; | |
if (!dataViews) return; | |
this.updateContainerViewports(options.viewport); | |
var viewModel = MultiSelectDropDown.converter(dataViews[0]); | |
var dataSource= null; | |
for (var i = 0 ; i < viewModel.categories.length; i++) | |
{ | |
var multiSelect = <kendo.ui.MultiSelect>$("#myMultiSelect" + viewModel.categories[i].id).data("kendoMultiSelect"); | |
if (typeof(multiSelect) != 'undefined') | |
{ | |
multiSelect.destroy(); | |
} | |
} | |
$("#myDiv").html("<span id='myListView'></span>"); | |
for (var i = 0 ; i < viewModel.categories.length; i++) | |
{ | |
var multiSelect = <kendo.ui.MultiSelect>$("#myMultiSelect" + viewModel.categories[i].id).data("kendoMultiSelect"); | |
dataSource = new kendo.data.HierarchicalDataSource({data: viewModel.categories[i].categories, | |
schema: { model: { | |
"path": { type: "string"}, | |
"parentPath": { type: "string"}, | |
"selector": { type: "string"}, | |
children: "categories", | |
hasChildren: true } | |
}}); | |
dataSource.read(); | |
//dataSource.group({ field: "value" }); | |
var selected = ""; | |
if (typeof(multiSelect) == 'undefined') | |
{ | |
$("#myDiv").append("<div id='myMulitiSelectHeader'></div><div class='row'><label for='myMultiSelect" + viewModel.categories[i].id + "'>" + viewModel.categories[i].value + ": </label><select data-placeholder='Select ...' id='myMultiSelect" + viewModel.categories[i].id + "'><option></option></select></div>"); | |
var selectionManager = this.selectionManager; | |
var multiSelects = this.multiSelects; | |
multiSelect = $("#myMultiSelect" + viewModel.categories[i].id).kendoMultiSelect({ | |
dataTextField: "value", | |
dataValueField: "value", | |
dataSource: dataSource.view(), | |
filter: "contains", | |
select: function(e) | |
{ | |
}, | |
change: function(e) { | |
kendo.ui.progress($("#myDiv"), true); | |
var mutltiSelected= this; | |
var selectionIds = new Array; | |
var selectionIdsSimple; | |
var deferredClear = selectionManager.clear(); | |
$.when.apply(null, deferredClear); | |
var selected = ""; | |
// for each multiSelect | |
for (var m = 0; m < multiSelects.length; m++) | |
{ | |
var multiSelect = multiSelects[m]; | |
// for all rows in datasource | |
for (var g = 0 ; g < multiSelect.dataSource.data().length; g++) | |
{ | |
// For items in selected category | |
for ( var h = 0; h < mutltiSelected.value().length; h++ ) | |
{ | |
var item = multiSelect.dataSource.at(g); | |
var firstentity = ""; | |
//$("#myListView").text (' of ' + this.dataSource.data().length); | |
if (item.value == mutltiSelected.value()[h]) | |
{ | |
item.load(); | |
var s= ''; | |
for (var i = 0; i < item.children.data().length ; i++) | |
{ | |
s = s + item.children.data()[i].path + "<br>"; | |
if (selectionIds.indexOf(item.children.data()[i].selectionId) == -1) | |
{ | |
selectionIds.push(item.children.data()[i].selectionId); | |
} | |
} | |
selectionIdsSimple = item.selectionId; | |
$("#myListView").text(); | |
} | |
} | |
} | |
} | |
// $("#myListView").text(JSON.stringify(selectionIdsSimple) + "------------------------------------" + JSON.stringify(selectionIds)); | |
//$("#myMulitiSelectHeader").text(JSON.stringify(selectionIds); | |
if (typeof(selectionIdsSimple) != 'undefined') | |
var selectionDeffered = selectionManager.select(selectionIdsSimple, true); | |
//var selectionDeffered = selectionIds.map(function (id) { return selectionManager.select(id, true); }); | |
//$.when.apply(null, selectionDeffered); | |
kendo.ui.progress($("#myDiv"), false); | |
} | |
}).data("kendoMultiSelect"); | |
} | |
else | |
{ | |
multiSelect.dataSource.data(dataSource.view()); | |
} | |
this.multiSelects.push(multiSelect); | |
multiSelects = this.multiSelects; | |
// $("#myListView").text (JSON.stringify(viewModel)); | |
} | |
} | |
private updateContainerViewports(viewport: IViewport) { | |
var width = viewport.width; | |
var height = viewport.height; | |
this.hostContainer.css({ | |
'height': height, | |
'width': width | |
}); | |
this.div.attr('width', width); | |
} | |
private format(d: number){ | |
var prefix = d3.formatPrefix(d); | |
return d3.round(prefix.scale(d),2) + ' ' +prefix.symbol | |
} | |
} | |
} | |
// type definitions for Kendo UI | |
declare module kendo { | |
function culture(): { | |
name: string; | |
calendar: { | |
AM: string[]; | |
PM: string[]; | |
days: { | |
names: string[]; | |
namesAbbr: string[]; | |
namesShort: string[]; | |
firstDay: number; | |
}; | |
months: { | |
names: string[]; | |
namesAbbr: string[]; | |
}; | |
patterns: { | |
D: string; | |
F: string; | |
G: string; | |
M: string; | |
T: string; | |
Y: string; | |
d: string; | |
g: string; | |
m: string; | |
s: string; | |
t: string; | |
u: string; | |
y: string; | |
}; | |
twoDigitYearMax: number; | |
}; | |
calendars: { | |
standard: { | |
AM: string[]; | |
PM: string[]; | |
days: { | |
names: string[]; | |
namesAbbr: string[]; | |
namesShort: string[]; | |
firstDay: number; | |
}; | |
months: { | |
names: string[]; | |
namesAbbr: string[]; | |
}; | |
patterns: { | |
D: string; | |
F: string; | |
G: string; | |
M: string; | |
T: string; | |
Y: string; | |
d: string; | |
g: string; | |
m: string; | |
s: string; | |
t: string; | |
u: string; | |
y: string; | |
}; | |
twoDigitYearMax: number; | |
}; | |
}; | |
numberFormat: { | |
currency: { | |
decimals: number; | |
groupSize: number[]; | |
pattern: string[]; | |
symbol: string; | |
}; | |
decimals: number; | |
groupSize: number[]; | |
pattern: string[]; | |
percent: { | |
decimals: number; | |
groupSize: number[]; | |
pattern: string[]; | |
symbol: string; | |
}; | |
}; | |
}; | |
var cultures: {[culture: string] : { | |
name?: string; | |
calendar?: { | |
AM: string[]; | |
PM: string[]; | |
days: { | |
names: string[]; | |
namesAbbr: string[]; | |
namesShort: string[]; | |
firstDay: number; | |
}; | |
months: { | |
names: string[]; | |
namesAbbr: string[]; | |
}; | |
patterns: { | |
D: string; | |
F: string; | |
G: string; | |
M: string; | |
T: string; | |
Y: string; | |
d: string; | |
g: string; | |
m: string; | |
s: string; | |
t: string; | |
u: string; | |
y: string; | |
}; | |
twoDigitYearMax: number; | |
}; | |
calendars?: { | |
standard: { | |
AM: string[]; | |
PM: string[]; | |
days: { | |
names: string[]; | |
namesAbbr: string[]; | |
namesShort: string[]; | |
firstDay: number; | |
}; | |
months: { | |
names: string[]; | |
namesAbbr: string[]; | |
}; | |
patterns: { | |
D: string; | |
F: string; | |
G: string; | |
M: string; | |
T: string; | |
Y: string; | |
d: string; | |
g: string; | |
m: string; | |
s: string; | |
t: string; | |
u: string; | |
y: string; | |
}; | |
twoDigitYearMax: number; | |
}; | |
}; | |
numberFormat?: { | |
currency: { | |
decimals: number; | |
groupSize: number[]; | |
pattern: string[]; | |
symbol: string; | |
}; | |
decimals: number; | |
groupSize: number[]; | |
pattern: string[]; | |
percent: { | |
decimals: number; | |
groupSize: number[]; | |
pattern: string[]; | |
symbol: string; | |
}; | |
}; | |
}}; | |
function format(format: string, ...values: any[]): string; | |
function fx(selector: string): effects.Element; | |
function fx(element: Element): effects.Element; | |
function fx(element: JQuery): effects.Element; | |
function init(selector: string, ...namespaces: any[]): void; | |
function init(element: JQuery, ...namespaces: any[]): void; | |
function init(element: Element, ...namespaces: any[]): void; | |
function observable(data: any): kendo.data.ObservableObject; | |
function observableHierarchy(array: any[]): kendo.data.ObservableArray; | |
function render(template: (data: any) => string, data: any[]): string; | |
function template(template: string, options?: TemplateOptions): (data: any) => string; | |
function guid(): string; | |
function widgetInstance(element: JQuery, suite: typeof kendo.ui): kendo.ui.Widget; | |
var ns: string; | |
var keys: { | |
INSERT: number; | |
DELETE: number; | |
BACKSPACE: number; | |
TAB: number; | |
ENTER: number; | |
ESC: number; | |
LEFT: number; | |
UP: number; | |
RIGHT: number; | |
DOWN: number; | |
END: number; | |
HOME: number; | |
SPACEBAR: number; | |
PAGEUP: number; | |
PAGEDOWN: number; | |
F2: number; | |
F10: number; | |
F12: number; | |
}; | |
var support: { | |
touch: boolean; | |
pointers: boolean; | |
scrollbar(): number; | |
hasHW3D: boolean; | |
hasNativeScrolling: boolean; | |
devicePixelRatio: number; | |
placeHolder: boolean; | |
zoomLevel: number; | |
mobileOS: { | |
device: string; | |
tablet: any; | |
browser: string; | |
name: string; | |
majorVersion: string; | |
minorVersion: string; | |
flatVersion: number; | |
appMode: boolean; | |
}; | |
browser: { | |
msie: boolean; | |
webkit: boolean; | |
safari: boolean; | |
opera: boolean; | |
version: string; | |
}; | |
}; | |
var version: string; | |
interface TemplateOptions { | |
paramName?: string; | |
useWithBlock?: boolean; | |
} | |
class Class { | |
static fn: Class; | |
static extend(prototype: Object): Class; | |
} | |
class Observable extends Class { | |
static fn: Observable; | |
static extend(prototype: Object): Observable; | |
bind(eventName: string, handler: Function): Observable; | |
one(eventName: string, handler: Function): Observable; | |
trigger(eventName: string, e?: any): boolean; | |
unbind(eventName: string, handler?: any): Observable; | |
} | |
interface ViewOptions { | |
tagName?: string; | |
wrap?: boolean; | |
model?: Object; | |
evalTemplate?: boolean; | |
init?: (e: ViewEvent) => void; | |
show?: (e: ViewEvent) => void; | |
hide?: (e: ViewEvent) => void; | |
} | |
interface ViewEvent { | |
sender: View; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class View extends Observable { | |
constructor(element: Element, options?: ViewOptions); | |
constructor(element: string, options?: ViewOptions); | |
element: JQuery; | |
content: any; | |
tagName: string; | |
model: Object; | |
init(element: Element, options?: ViewOptions): void; | |
init(element: string, options?: ViewOptions): void; | |
render(container?: any): JQuery; | |
destroy(): void; | |
} | |
class ViewContainer extends Observable { | |
view: View; | |
} | |
class Layout extends View { | |
containers: { [selector: string]: ViewContainer; }; | |
showIn(selector: string, view: View, transitionClass?: string): void; | |
} | |
class History extends Observable { | |
current: string; | |
root: string; | |
start(options: Object): void; | |
stop(): void; | |
change(callback: Function): void; | |
navigate(location: string, silent?: boolean): void; | |
} | |
var history: History; | |
interface RouterOptions { | |
init?: (e: RouterEvent) => void; | |
pushState?: boolean; | |
hashBang?: boolean; | |
root?: string; | |
ignoreCase?: boolean; | |
change?(e: RouterChangeEvent): void; | |
routeMissing?(e: RouterRouteMissingEvent): void; | |
same?(e: RouterEvent): void; | |
} | |
interface RouterEvent { | |
sender: Router; | |
url: string; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface RouterChangeEvent extends RouterEvent { | |
params: any; | |
backButtonPressed: boolean; | |
} | |
interface RouterRouteMissingEvent extends RouterEvent { | |
params: any; | |
} | |
class Route extends Class { | |
route: RegExp; | |
callback(url: string): void; | |
worksWith(url: string): void; | |
} | |
class Router extends Observable { | |
constructor(options?: RouterOptions); | |
routes: Route[]; | |
init(options?: RouterOptions): void; | |
start(): void; | |
destroy(): void; | |
route(route: string, callback: Function): void; | |
navigate(location: string, silent?: boolean): void; | |
replace(location: string, silent?: boolean): void; | |
} | |
} | |
declare module kendo.effects { | |
function enable(): void; | |
function disable(): void; | |
interface Element { | |
expand(direction: string): effects.Expand; | |
expandHorizontal(): effects.Expand; | |
expandVertical(): effects.Expand; | |
fade(direction: string): effects.Fade; | |
fadeIn(): effects.Fade; | |
fadeOut(): effects.Fade; | |
flip(axis: string, face: JQuery, back: JQuery): effects.Flip; | |
flipHorizontal(face: JQuery, back: JQuery): effects.Flip; | |
flipVertical(face: JQuery, back: JQuery): effects.Flip; | |
pageturn(axis: string, face: JQuery, back: JQuery): effects.PageTurn; | |
pageturnHorizontal(face: JQuery, back: JQuery): effects.PageTurn; | |
pageturnVertical(face: JQuery, back: JQuery): effects.PageTurn; | |
slideIn(direction: string): effects.SlideIn; | |
slideInDown(): effects.SlideIn; | |
slideInLeft(): effects.SlideIn; | |
slideInRight(): effects.SlideIn; | |
slideInUp(): effects.SlideIn; | |
tile(direction: string, previous: JQuery): effects.Tile; | |
tileDown(previous: JQuery): effects.Tile; | |
tileLeft(previous: JQuery): effects.Tile; | |
tileRight(previous: JQuery): effects.Tile; | |
tileUp(previous: JQuery): effects.Tile; | |
transfer(target: JQuery): effects.Transfer; | |
zoom(direction: string): effects.Zoom; | |
zoomIn(): effects.Zoom; | |
zoomOut(): effects.Zoom; | |
} | |
interface Effect { | |
play(): JQueryPromise<any>; | |
reverse(): JQueryPromise<any>; | |
duration(value: number): Effect; | |
add(effect: Effect): Effect; | |
stop(): Effect; | |
} | |
interface Expand extends Effect { | |
duration(value: number): Expand; | |
direction(value: string): Expand; | |
stop(): Expand; | |
add(effect: Effect): Expand; | |
} | |
interface Fade extends Effect { | |
duration(value: number): Fade; | |
direction(value: string): Fade; | |
stop(): Fade; | |
add(effect: Effect): Fade; | |
startValue(value: number): Fade; | |
endValue(value: number): Fade; | |
} | |
interface Flip extends Effect { | |
duration(value: number): Flip; | |
direction(value: string): Flip; | |
stop(): Flip; | |
add(effect: Effect): Flip; | |
} | |
interface PageTurn extends Effect { | |
duration(value: number): PageTurn; | |
direction(value: string): PageTurn; | |
stop(): PageTurn; | |
add(effect: Effect): PageTurn; | |
} | |
interface SlideIn extends Effect { | |
duration(value: number): SlideIn; | |
direction(value: string): SlideIn; | |
stop(): SlideIn; | |
add(effect: Effect): SlideIn; | |
} | |
interface Tile extends Effect { | |
duration(value: number): Tile; | |
direction(value: string): Tile; | |
stop(): Tile; | |
add(effect: Effect): Tile; | |
} | |
interface Transfer extends Effect { | |
duration(value: number): Transfer; | |
stop(): Transfer; | |
add(effect: Effect): Transfer; | |
} | |
interface Zoom extends Effect { | |
duration(value: number): Zoom; | |
direction(value: string): Zoom; | |
stop(): Zoom; | |
add(effect: Effect): Zoom; | |
startValue(value: number): Zoom; | |
endValue(value: number): Zoom; | |
} | |
} | |
declare module kendo.data { | |
interface ObservableObjectEvent { | |
sender?: ObservableObject; | |
field?: string; | |
} | |
interface ObservableObjectSetEvent extends ObservableObjectEvent { | |
value?: any; | |
preventDefault?: Function; | |
} | |
class Binding extends Observable { | |
source: any; | |
parents: any[]; | |
path: string; | |
observable: boolean; | |
dependencies: { [path: string]: boolean; }; | |
constructor(parents: any[], path: string); | |
change(e: Object): void; | |
start(source: kendo.Observable): void; | |
stop(source: kendo.Observable): void; | |
get (): any; | |
set (value: any): void; | |
destroy(): void; | |
} | |
class BindingTarget { | |
target: any; | |
options: any; | |
source: any; | |
} | |
class EventBinding extends Binding { | |
get (): void; | |
} | |
class TemplateBinding extends Binding { | |
constructor(source: kendo.Observable, path: string, template: Function); | |
render(value: Object): string; | |
} | |
module binders { } | |
interface Bindings { | |
[key: string]: Binding; | |
} | |
class Binder extends Class { | |
static fn: Binder; | |
element: any; | |
bindings: Bindings; | |
options: BinderOptions; | |
constructor(element: any, bindings: Bindings, options?: BinderOptions); | |
static extend(prototype: Object): Binder; | |
init(element: any, bindings: Bindings, options?: BinderOptions): void; | |
bind(binding: Binding, attribute: string): void; | |
destroy(): void; | |
refresh(): void; | |
refresh(attribute: string): void; | |
} | |
interface BinderOptions { | |
} | |
class ObservableObject extends Observable{ | |
constructor(value?: any); | |
uid: string; | |
init(value?: any): void; | |
get(name: string): any; | |
parent(): ObservableObject; | |
set(name: string, value: any): void; | |
toJSON(): Object; | |
} | |
class Model extends ObservableObject { | |
static idField: string; | |
static fields: DataSourceSchemaModelFields; | |
idField: string; | |
_defaultId: any; | |
fields: DataSourceSchemaModelFields; | |
defaults: { | |
[field: string]: any; | |
}; | |
id: any; | |
dirty: boolean; | |
static define(options: DataSourceSchemaModelWithFieldsObject): typeof Model; | |
static define(options: DataSourceSchemaModelWithFieldsArray): typeof Model; | |
constructor(data?: any); | |
init(data?: any): void; | |
accept(data?: any): void; | |
editable(field: string): boolean; | |
isNew(): boolean; | |
} | |
interface SchedulerEventData { | |
description?: string; | |
end?: Date; | |
endTimezone?: string; | |
isAllDay?: boolean; | |
id?: any; | |
start?: Date; | |
startTimezone?: string; | |
recurrenceId?: any; | |
recurrenceRule?: string; | |
recurrenceException?: string; | |
title?: string; | |
} | |
class SchedulerEvent extends Model { | |
static idField: string; | |
static fields: DataSourceSchemaModelFields; | |
constructor(data?: SchedulerEventData); | |
description: string; | |
end: Date; | |
endTimezone: string; | |
isAllDay: boolean; | |
id: any; | |
start: Date; | |
startTimezone: string; | |
recurrenceId: any; | |
recurrenceRule: string; | |
recurrenceException: string; | |
title: string; | |
static define(options: DataSourceSchemaModelWithFieldsObject): typeof SchedulerEvent; | |
static define(options: DataSourceSchemaModelWithFieldsArray): typeof SchedulerEvent; | |
init(data?: SchedulerEventData): void; | |
clone(options: any, updateUid: boolean): SchedulerEvent; | |
duration(): number; | |
expand(start: Date, end: Date, zone: any): SchedulerEvent[]; | |
update(eventInfo: SchedulerEventData): void; | |
isMultiDay(): boolean; | |
isException(): boolean; | |
isOccurrence(): boolean; | |
isRecurring(): boolean; | |
isRecurrenceHead(): boolean; | |
toOccurrence(options: any): SchedulerEvent; | |
} | |
class TreeListModel extends Model { | |
static idField: string; | |
static fields: DataSourceSchemaModelFields; | |
id: any; | |
parentId: any; | |
static define(options: DataSourceSchemaModelWithFieldsObject): typeof TreeListModel; | |
static define(options: DataSourceSchemaModelWithFieldsArray): typeof TreeListModel; | |
constructor(data?: any); | |
init(data?: any): void; | |
loaded(value: boolean): void; | |
loaded(): boolean; | |
} | |
class TreeListDataSource extends DataSource { | |
load(model: kendo.data.TreeListModel): JQueryPromise<any>; | |
childNodes(model: kendo.data.TreeListModel): kendo.data.TreeListModel[]; | |
rootNodes(): kendo.data.TreeListModel[]; | |
parentNode(model: kendo.data.TreeListModel): kendo.data.TreeListModel; | |
level(model: kendo.data.TreeListModel): number; | |
level(model: any): number; | |
add(model: Object): kendo.data.TreeListModel; | |
add(model: kendo.data.TreeListModel): kendo.data.TreeListModel; | |
at(index: number): kendo.data.TreeListModel; | |
cancelChanges(model?: kendo.data.TreeListModel): void; | |
get(id: any): kendo.data.TreeListModel; | |
getByUid(uid: string): kendo.data.TreeListModel; | |
indexOf(value: kendo.data.TreeListModel): number; | |
insert(index: number, model: kendo.data.TreeListModel): kendo.data.TreeListModel; | |
insert(index: number, model: Object): kendo.data.TreeListModel; | |
remove(model: kendo.data.TreeListModel): void; | |
} | |
class GanttTask extends Model { | |
static idField: string; | |
static fields: DataSourceSchemaModelFields; | |
id: any; | |
parentId: number; | |
orderId: number; | |
title: string; | |
start: Date; | |
end: Date; | |
percentComplete: number; | |
summary: boolean; | |
expanded: boolean; | |
static define(options: DataSourceSchemaModelWithFieldsObject): typeof GanttTask; | |
static define(options: DataSourceSchemaModelWithFieldsArray): typeof GanttTask; | |
constructor(data?: any); | |
init(data?: any): void; | |
} | |
class GanttDependency extends Model { | |
static idField: string; | |
static fields: DataSourceSchemaModelFields; | |
id: any; | |
predecessorId: number; | |
successorId: number; | |
type: number; | |
static define(options: DataSourceSchemaModelWithFieldsObject): typeof GanttDependency; | |
static define(options: DataSourceSchemaModelWithFieldsArray): typeof GanttDependency; | |
constructor(data?: any); | |
init(data?: any): void; | |
} | |
class Node extends Model { | |
children: HierarchicalDataSource; | |
append(model: any): void; | |
level(): number; | |
load(id: any): void; | |
loaded(value: boolean): void; | |
loaded(): boolean; | |
parentNode(): Node; | |
} | |
class SchedulerDataSource extends DataSource { | |
add(model: Object): kendo.data.SchedulerEvent; | |
add(model: kendo.data.SchedulerEvent): kendo.data.SchedulerEvent; | |
at(index: number): kendo.data.SchedulerEvent; | |
cancelChanges(model?: kendo.data.SchedulerEvent): void; | |
get(id: any): kendo.data.SchedulerEvent; | |
getByUid(uid: string): kendo.data.SchedulerEvent; | |
indexOf(value: kendo.data.SchedulerEvent): number; | |
insert(index: number, model: kendo.data.SchedulerEvent): kendo.data.SchedulerEvent; | |
insert(index: number, model: Object): kendo.data.SchedulerEvent; | |
remove(model: kendo.data.SchedulerEvent): void; | |
} | |
class GanttDataSource extends DataSource { | |
add(model: Object): kendo.data.GanttTask; | |
add(model: kendo.data.GanttTask): kendo.data.GanttTask; | |
at(index: number): kendo.data.GanttTask; | |
cancelChanges(model?: kendo.data.GanttTask): void; | |
get(id: any): kendo.data.GanttTask; | |
getByUid(uid: string): kendo.data.GanttTask; | |
indexOf(value: kendo.data.GanttTask): number; | |
insert(index: number, model: Object): kendo.data.GanttTask; | |
insert(index: number, model: kendo.data.GanttTask): kendo.data.GanttTask; | |
remove(model: kendo.data.GanttTask): void; | |
} | |
class GanttDependencyDataSource extends DataSource { | |
add(model: Object): kendo.data.GanttDependency; | |
add(model: kendo.data.GanttDependency): kendo.data.GanttDependency; | |
at(index: number): kendo.data.GanttDependency; | |
cancelChanges(model?: kendo.data.GanttDependency): void; | |
get(id: any): kendo.data.GanttDependency; | |
getByUid(uid: string): kendo.data.GanttDependency; | |
indexOf(value: kendo.data.GanttDependency): number; | |
insert(index: number, model: Object): kendo.data.GanttDependency; | |
insert(index: number, model: kendo.data.GanttDependency): kendo.data.GanttDependency; | |
remove(model: kendo.data.GanttDependency): void; | |
} | |
class HierarchicalDataSource extends DataSource { | |
constructor(options?: HierarchicalDataSourceOptions); | |
init(options?: HierarchicalDataSourceOptions): void; | |
} | |
interface HierarchicalDataSourceOptions extends DataSourceOptions { | |
schema?: HierarchicalDataSourceSchema; | |
} | |
interface HierarchicalDataSourceSchema extends DataSourceSchemaWithOptionsModel { | |
model?: HierarchicalDataSourceSchemaModel; | |
} | |
interface HierarchicalDataSourceSchemaModel extends DataSourceSchemaModel { | |
hasChildren?: any; | |
children?: any; | |
} | |
interface PivotDiscoverRequestRestrictionOptions { | |
catalogName: string; | |
cubeName: string; | |
} | |
interface PivotDiscoverRequestDataOptions { | |
command: string; | |
restrictions: PivotDiscoverRequestRestrictionOptions; | |
} | |
interface PivotDiscoverRequestOptions { | |
data: PivotDiscoverRequestDataOptions; | |
} | |
interface PivotTransportConnection { | |
catalog?: string; | |
cube?: string; | |
} | |
interface PivotTransportDiscover { | |
cache?: boolean; | |
contentType?: string; | |
data?: any; | |
dataType?: string; | |
type?: string; | |
url?: any; | |
} | |
interface PivotTransport { | |
discover?: any; | |
read?: any; | |
} | |
interface PivotTransportWithObjectOperations extends PivotTransport { | |
connection: PivotTransportConnection; | |
discover?: PivotTransportDiscover; | |
read?: DataSourceTransportRead; | |
} | |
interface PivotTransportWithFunctionOperations extends PivotTransport { | |
discover?: (options: DataSourceTransportOptions) => void; | |
read?: (options: DataSourceTransportOptions) => void; | |
} | |
interface PivotDataSourceAxisOptions { | |
name: string; | |
expand?: boolean; | |
} | |
interface PivotDataSourceMeasureOptions { | |
values: string[]; | |
axis?: string; | |
} | |
interface PivotDataSourceOptions extends DataSourceOptions { | |
columns?: PivotDataSourceAxisOptions[]; | |
measures?: PivotDataSourceMeasureOptions[]; | |
rows?: PivotDataSourceAxisOptions[]; | |
transport?: PivotTransport; | |
schema?: PivotSchema; | |
} | |
interface PivotTupleModel { | |
children: PivotTupleModel[]; | |
caption?: string; | |
name: string; | |
levelName?: string; | |
levelNum: number; | |
hasChildren?: boolean; | |
hierarchy?: string; | |
} | |
interface PivotSchemaRowAxis { | |
tuples: PivotTupleModel[]; | |
} | |
interface PivotSchemaColumnAxis { | |
tuples: PivotTupleModel[]; | |
} | |
interface PivotSchemaAxes { | |
rows: PivotSchemaRowAxis; | |
columns: PivotSchemaColumnAxis; | |
} | |
interface PivotSchema extends DataSourceSchema{ | |
axes?: any; | |
catalogs?: any; | |
cubes?: any; | |
data?: any; | |
dimensions?: any; | |
hierarchies?: any; | |
levels?: any; | |
measures?: any; | |
} | |
class PivotDataSource extends DataSource { | |
axes(): PivotSchemaAxes; | |
constructor(options?: PivotDataSourceOptions); | |
init(options?: PivotDataSourceOptions): void; | |
catalog(val: string): void; | |
columns(val: string[]): string[]; | |
cube(val: string): void; | |
discover(options: PivotDiscoverRequestOptions): JQueryPromise<any>; | |
measures(val: string[]): string[]; | |
measuresAxis(): string; | |
rows(val: string[]): string[]; | |
schemaCatalogs(): JQueryPromise<any>; | |
schemaCubes(): JQueryPromise<any>; | |
schemaDimensions(): JQueryPromise<any>; | |
schemaHierarchies(): JQueryPromise<any>; | |
schemaLevels(): JQueryPromise<any>; | |
schemaMeasures(): JQueryPromise<any>; | |
} | |
interface DataSourceTransport { | |
create?: DataSourceTransportCreate; | |
destroy?: DataSourceTransportDestroy; | |
push?: Function; | |
read?: DataSourceTransportRead; | |
signalr?: DataSourceTransportSignalr; | |
update?: DataSourceTransportUpdate; | |
parameterMap?(data: DataSourceTransportParameterMapData, type: string): any; | |
} | |
interface DataSourceTransportSignalrClient { | |
create?: string; | |
destroy?: string; | |
read?: string; | |
update?: string; | |
} | |
interface DataSourceTransportSignalrServer { | |
create?: string; | |
destroy?: string; | |
read?: string; | |
update?: string; | |
} | |
interface DataSourceTransportSignalr { | |
client?: DataSourceTransportSignalrClient; | |
hub?: any; | |
promise?: any; | |
server?: DataSourceTransportSignalrServer; | |
} | |
interface DataSourceParameterMapDataAggregate { | |
field?: string; | |
aggregate?: string; | |
} | |
interface DataSourceParameterMapDataGroup { | |
aggregate?: DataSourceParameterMapDataAggregate[]; | |
field?: string; | |
dir?: string; | |
} | |
interface DataSourceParameterMapDataFilter { | |
field?: string; | |
filters?: DataSourceParameterMapDataFilter[]; | |
logic?: string; | |
operator?: string; | |
value?: any; | |
} | |
interface DataSourceParameterMapDataSort { | |
field?: string; | |
dir?: string; | |
} | |
interface DataSourceTransportParameterMapData { | |
aggregate?: DataSourceParameterMapDataAggregate[]; | |
group?: DataSourceParameterMapDataGroup[]; | |
filter?: DataSourceParameterMapDataFilter; | |
models?: Model[]; | |
page?: number; | |
pageSize?: number; | |
skip?: number; | |
sort?: DataSourceParameterMapDataSort[]; | |
take?: number; | |
} | |
interface DataSourceSchema { | |
model?: any; | |
} | |
interface DataSourceSchemaWithOptionsModel extends DataSourceSchema { | |
model?: DataSourceSchemaModel; | |
} | |
interface DataSourceSchemaWithConstructorModel extends DataSourceSchema { | |
model?: typeof Model; | |
} | |
interface DataSourceSchemaModel { | |
id?: string; | |
fields?: any; | |
[index: string]: any; | |
} | |
interface DataSourceSchemaModelWithFieldsArray extends DataSourceSchemaModel { | |
fields?: DataSourceSchemaModelField[]; | |
} | |
interface DataSourceSchemaModelWithFieldsObject extends DataSourceSchemaModel { | |
fields?: DataSourceSchemaModelFields; | |
} | |
interface DataSourceSchemaModelFields { | |
[index: string]: DataSourceSchemaModelField; | |
} | |
interface DataSourceSchemaModelField { | |
field?: string; | |
from?: string; | |
defaultValue?: any; | |
editable?: boolean; | |
nullable?: boolean; | |
parse?: Function; | |
type?: string; | |
validation?: DataSourceSchemaModelFieldValidation; | |
} | |
interface DataSourceSchemaModelFieldValidation { | |
required?: boolean; | |
min?: any; | |
max?: any; | |
} | |
class ObservableArray extends Observable { | |
length: number; | |
[index: number]: any; | |
constructor(array: any[]); | |
init(array: any[]): void; | |
empty(): void; | |
every(callback: (item: Object, index: number, source: ObservableArray) => boolean): boolean; | |
filter(callback: (item: Object, index: number, source: ObservableArray) => boolean): any[]; | |
find(callback: (item: Object, index: number, source: ObservableArray) => boolean): any; | |
forEach(callback: (item: Object, index: number, source: ObservableArray) => void ): void; | |
indexOf(item: any): number; | |
join(separator: string): string; | |
map(callback: (item: Object, index: number, source: ObservableArray) => any): any[]; | |
parent(): ObservableObject; | |
pop(): ObservableObject; | |
push(...items: any[]): number; | |
remove(item: Object): void; | |
shift(): any; | |
slice(begin: number, end?: number): any[]; | |
some(callback: (item: Object, index: number, source: ObservableArray) => boolean): boolean; | |
splice(start: number): any[]; | |
splice(start: number, deleteCount: number, ...items: any[]): any[]; | |
toJSON(): any[]; | |
unshift(...items: any[]): number; | |
wrap(object: Object, parent: Object): any; | |
wrapAll(source: Object, target: Object): any; | |
} | |
interface ObservableArrayEvent { | |
field?: string; | |
action?: string; | |
index?: number; | |
items?: kendo.data.Model[]; | |
} | |
class DataSource extends Observable{ | |
options: DataSourceOptions; | |
static create(options?: DataSourceOptions): DataSource; | |
constructor(options?: DataSourceOptions); | |
init(options?: DataSourceOptions): void; | |
add(model: Object): kendo.data.Model; | |
add(model: kendo.data.Model): kendo.data.Model; | |
aggregate(val: any): void; | |
aggregate(): any; | |
aggregates(): any; | |
at(index: number): kendo.data.ObservableObject; | |
cancelChanges(model?: kendo.data.Model): void; | |
data(): kendo.data.ObservableArray; | |
data(value: any): void; | |
fetch(callback?: Function): JQueryPromise<any>; | |
filter(filters: DataSourceFilterItem): void; | |
filter(filters: DataSourceFilterItem[]): void; | |
filter(filters: DataSourceFilters): void; | |
filter(): DataSourceFilters; | |
get(id: any): kendo.data.Model; | |
getByUid(uid: string): kendo.data.Model; | |
group(groups: any): void; | |
group(): any; | |
hasChanges(): boolean; | |
indexOf(value: kendo.data.ObservableObject): number; | |
insert(index: number, model: kendo.data.Model): kendo.data.Model; | |
insert(index: number, model: Object): kendo.data.Model; | |
online(value: boolean): void; | |
online(): boolean; | |
offlineData(data: any[]): void; | |
offlineData(): any[]; | |
page(): number; | |
page(page: number): void; | |
pageSize(): number; | |
pageSize(size: number): void; | |
pushCreate(model: Object): void; | |
pushCreate(models: any[]): void; | |
pushDestroy(model: Object): void; | |
pushDestroy(models: any[]): void; | |
pushUpdate(model: Object): void; | |
pushUpdate(models: any[]): void; | |
query(options?: any): JQueryPromise<any>; | |
read(data?: any): JQueryPromise<any>; | |
remove(model: kendo.data.ObservableObject): void; | |
sort(sort: DataSourceSortItem): void; | |
sort(sort: DataSourceSortItem[]): void; | |
sort(): DataSourceSortItem[]; | |
sync(): JQueryPromise<any>; | |
total(): number; | |
totalPages(): number; | |
view(): kendo.data.ObservableArray; | |
} | |
class Query { | |
data: any[]; | |
static process(data: any[], options: DataSourceTransportReadOptionsData): QueryResult; | |
constructor(data: any[]); | |
toArray(): any[]; | |
range(intex: number, count: number): kendo.data.Query; | |
skip(count: number): kendo.data.Query; | |
take(count: number): kendo.data.Query; | |
select(selector: Function): kendo.data.Query; | |
order(selector: string, dir?: string): kendo.data.Query; | |
order(selector: Function, dir?: string): kendo.data.Query; | |
filter(filters: DataSourceFilterItem): kendo.data.Query; | |
filter(filters: DataSourceFilterItem[]): kendo.data.Query; | |
filter(filters: DataSourceFilters): kendo.data.Query; | |
group(descriptors: DataSourceGroupItem): kendo.data.Query; | |
group(descriptors: DataSourceGroupItem[]): kendo.data.Query; | |
} | |
interface QueryResult { | |
total?: number; | |
data?: any[]; | |
} | |
interface DataSourceAggregateItem { | |
field?: string; | |
aggregate?: string; | |
} | |
interface DataSourceFilter { | |
} | |
interface DataSourceFilterItem extends DataSourceFilter { | |
operator?: string; | |
field?: string; | |
value?: any; | |
} | |
interface DataSourceFilters extends DataSourceFilter { | |
logic?: string; | |
filters?: DataSourceFilter[]; | |
} | |
interface DataSourceGroupItemAggregate { | |
field?: string; | |
aggregate?: string; | |
} | |
interface DataSourceGroupItem { | |
field?: string; | |
dir?: string; | |
aggregates?: DataSourceGroupItemAggregate[]; | |
} | |
interface DataSourceSchema { | |
aggregates?: any; | |
data?: any; | |
errors?: any; | |
groups?: any; | |
parse?: Function; | |
total?: any; | |
type?: string; | |
} | |
interface DataSourceSortItem { | |
field?: string; | |
dir?: string; | |
} | |
interface DataSourceTransportCreate extends JQueryAjaxSettings { | |
cache?: boolean; | |
contentType?: string; | |
data?: any; | |
dataType?: string; | |
type?: string; | |
url?: any; | |
} | |
interface DataSourceTransportDestroy extends JQueryAjaxSettings { | |
cache?: boolean; | |
contentType?: string; | |
data?: any; | |
dataType?: string; | |
type?: string; | |
url?: any; | |
} | |
interface DataSourceTransportRead extends JQueryAjaxSettings { | |
cache?: boolean; | |
contentType?: string; | |
data?: any; | |
dataType?: string; | |
type?: string; | |
url?: any; | |
} | |
interface DataSourceTransportUpdate extends JQueryAjaxSettings { | |
cache?: boolean; | |
contentType?: string; | |
data?: any; | |
dataType?: string; | |
type?: string; | |
url?: any; | |
} | |
interface DataSourceTransportWithObjectOperations extends DataSourceTransport { | |
create?: DataSourceTransportCreate; | |
destroy?: DataSourceTransportDestroy; | |
read?: DataSourceTransportRead; | |
update?: DataSourceTransportUpdate; | |
} | |
interface DataSourceTransportWithFunctionOperations extends DataSourceTransport { | |
create?: (options: DataSourceTransportOptions) => void; | |
destroy?: (options: DataSourceTransportOptions) => void; | |
read?: (options: DataSourceTransportReadOptions) => void; | |
update?: (options: DataSourceTransportOptions) => void; | |
} | |
interface DataSourceTransportOptions { | |
success: (data?: any) => void; | |
error: (error?: any) => void; | |
data: any; | |
} | |
interface DataSourceTransportReadOptionsData { | |
sort?: DataSourceSortItem[]; | |
filter?: DataSourceFilters; | |
group?: DataSourceGroupItem[]; | |
take?: number; | |
skip?: number; | |
} | |
interface DataSourceTransportReadOptions extends DataSourceTransportOptions { | |
data: DataSourceTransportReadOptionsData; | |
} | |
interface DataSourceTransportBatchOptionsData { | |
models: any[]; | |
} | |
interface DataSourceTransportBatchOptions extends DataSourceTransportOptions { | |
data: DataSourceTransportBatchOptionsData; | |
} | |
interface DataSourceOptions { | |
aggregate?: DataSourceAggregateItem[]; | |
autoSync?: boolean; | |
batch?: boolean; | |
data?: any; | |
filter?: any; | |
group?: DataSourceGroupItem[]; | |
offlineStorage?: any; | |
page?: number; | |
pageSize?: number; | |
schema?: DataSourceSchema; | |
serverAggregates?: boolean; | |
serverFiltering?: boolean; | |
serverGrouping?: boolean; | |
serverPaging?: boolean; | |
serverSorting?: boolean; | |
sort?: any; | |
transport?: DataSourceTransport; | |
type?: string; | |
change? (e: DataSourceChangeEvent): void; | |
error?(e: DataSourceErrorEvent): void; | |
sync?(e: DataSourceEvent): void; | |
requestStart?(e: DataSourceRequestStartEvent): void; | |
requestEnd?(e: DataSourceRequestEndEvent): void; | |
} | |
interface DataSourceEvent { | |
sender?: DataSource; | |
} | |
interface DataSourceItemOrGroup { | |
} | |
interface DataSourceGroup extends DataSourceItemOrGroup { | |
aggregates: any[]; | |
field: string; | |
hasSubgroups: boolean; | |
items: DataSourceItemOrGroup[]; | |
value: any; | |
} | |
interface DataSourceChangeEvent extends DataSourceEvent { | |
field?: string; | |
value?: Model; | |
action?: string; | |
index?: number; | |
items?: DataSourceItemOrGroup[]; | |
node?: any; | |
} | |
interface DataSourceErrorEvent extends DataSourceEvent { | |
xhr: JQueryXHR; | |
status: string; | |
errorThrown: any; | |
errors?: any; | |
} | |
interface DataSourceRequestStartEvent extends DataSourceEvent { | |
type?: string; | |
} | |
interface DataSourceRequestEndEvent extends DataSourceEvent { | |
response?: any; | |
type?: string; | |
} | |
} | |
declare module kendo.data.transports { | |
var odata: DataSourceTransport; | |
} | |
declare module kendo.ui { | |
function progress(container: JQuery, toggle: boolean): void; | |
class Widget extends Observable { | |
static fn: Widget; | |
element: JQuery; | |
options: Object; | |
events: string[]; | |
static extend(prototype: Object): Widget; | |
constructor(element: Element, options?: Object); | |
constructor(element: JQuery, options?: Object); | |
constructor(selector: String, options?: Object); | |
init(element: Element, options?: Object): void; | |
init(element: JQuery, options?: Object): void; | |
init(selector: String, options?: Object): void; | |
destroy(): void; | |
setOptions(options: Object): void; | |
resize(force?: boolean): void; | |
} | |
function plugin(widget: typeof kendo.ui.Widget, register?: typeof kendo.ui, prefix?: String): void; | |
function plugin(widget: any, register?: typeof kendo.ui, prefix?: String): void; | |
class Draggable extends kendo.ui.Widget{ | |
element: JQuery; | |
currentTarget: JQuery; | |
constructor(element: Element, options?: DraggableOptions); | |
options: DraggableOptions; | |
} | |
interface DraggableEvent { | |
sender?: Draggable; | |
} | |
class DropTarget extends kendo.ui.Widget{ | |
element: JQuery; | |
constructor(element: Element, options?: DropTargetOptions); | |
options: DropTargetOptions; | |
static destroyGroup(groupName: string): void; | |
} | |
interface DropTargetOptions { | |
group?: string; | |
dragenter?(e: DropTargetDragenterEvent): void; | |
dragleave?(e: DropTargetDragleaveEvent): void; | |
drop?(e: DropTargetDropEvent): void; | |
} | |
interface DropTargetEvent { | |
sender?: DropTarget; | |
} | |
interface DropTargetDragenterEvent extends DropTargetEvent { | |
draggable?: kendo.ui.Draggable; | |
} | |
interface DropTargetDragleaveEvent extends DropTargetEvent { | |
draggable?: kendo.ui.Draggable; | |
} | |
interface DropTargetDropEvent extends DropTargetEvent { | |
draggable?: kendo.ui.Draggable; | |
} | |
class DropTargetArea extends kendo.ui.Widget{ | |
element: JQuery; | |
constructor(element: Element, options?: DropTargetAreaOptions); | |
options: DropTargetAreaOptions; | |
} | |
interface DropTargetAreaOptions { | |
group?: string; | |
filter?: string; | |
dragenter?(e: DropTargetAreaDragenterEvent): void; | |
dragleave?(e: DropTargetAreaDragleaveEvent): void; | |
drop?(e: DropTargetAreaDropEvent): void; | |
} | |
interface DropTargetAreaEvent { | |
sender: DropTargetArea; | |
} | |
interface DropTargetAreaDragenterEvent extends DropTargetAreaEvent { | |
draggable?: JQuery; | |
dropTarget?: JQuery; | |
} | |
interface DropTargetAreaDragleaveEvent extends DropTargetAreaEvent { | |
draggable?: JQuery; | |
dropTarget?: JQuery; | |
} | |
interface DropTargetAreaDropEvent extends DropTargetAreaEvent { | |
draggable?: kendo.ui.Draggable; | |
dropTarget?: JQuery; | |
} | |
interface DraggableOptions { | |
axis?: string; | |
container?: JQuery; | |
cursorOffset?: any; | |
distance?: number; | |
filter?: string; | |
group?: string; | |
hint?: Function; | |
ignore?: string; | |
drag?(e: DraggableEvent): void; | |
dragcancel?(e: DraggableEvent): void; | |
dragend?(e: DraggableEvent): void; | |
dragstart?(e: DraggableEvent): void; | |
} | |
interface GridColumnEditorOptions { | |
field?: string; | |
format?: string; | |
model?: kendo.data.Model; | |
values?: any[]; | |
} | |
interface GridColumn { | |
editor?(container: JQuery, options: GridColumnEditorOptions): void; | |
} | |
interface TreeListEditorOptions { | |
field?: string; | |
format?: string; | |
model?: kendo.data.Model; | |
values?: any[]; | |
} | |
interface TreeListColumn { | |
editor?(container: JQuery, options: TreeListEditorOptions): void; | |
} | |
} | |
declare module kendo.geometry { | |
class Arc extends Observable { | |
options: ArcOptions; | |
anticlockwise: boolean; | |
center: kendo.geometry.Point; | |
endAngle: number; | |
radiusX: number; | |
radiusY: number; | |
startAngle: number; | |
bbox(matrix: kendo.geometry.Matrix): kendo.geometry.Rect; | |
getAnticlockwise(): boolean; | |
getCenter(): kendo.geometry.Point; | |
getEndAngle(): number; | |
getRadiusX(): number; | |
getRadiusY(): number; | |
getStartAngle(): number; | |
pointAt(angle: number): kendo.geometry.Point; | |
setAnticlockwise(value: boolean): kendo.geometry.Arc; | |
setCenter(value: kendo.geometry.Point): kendo.geometry.Arc; | |
setEndAngle(value: number): kendo.geometry.Arc; | |
setRadiusX(value: number): kendo.geometry.Arc; | |
setRadiusY(value: number): kendo.geometry.Arc; | |
setStartAngle(value: number): kendo.geometry.Arc; | |
} | |
interface ArcOptions { | |
name?: string; | |
} | |
interface ArcEvent { | |
sender: Arc; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Circle extends Observable { | |
options: CircleOptions; | |
center: kendo.geometry.Point; | |
radius: number; | |
bbox(matrix: kendo.geometry.Matrix): kendo.geometry.Rect; | |
clone(): kendo.geometry.Circle; | |
equals(other: kendo.geometry.Circle): boolean; | |
getCenter(): kendo.geometry.Point; | |
getRadius(): number; | |
pointAt(angle: number): kendo.geometry.Point; | |
setCenter(value: kendo.geometry.Point): kendo.geometry.Point; | |
setCenter(value: any): kendo.geometry.Point; | |
setRadius(value: number): kendo.geometry.Circle; | |
} | |
interface CircleOptions { | |
name?: string; | |
} | |
interface CircleEvent { | |
sender: Circle; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Matrix extends Observable { | |
options: MatrixOptions; | |
a: number; | |
b: number; | |
c: number; | |
d: number; | |
e: number; | |
f: number; | |
static rotate(angle: number, x: number, y: number): kendo.geometry.Matrix; | |
static scale(scaleX: number, scaleY: number): kendo.geometry.Matrix; | |
static translate(x: number, y: number): kendo.geometry.Matrix; | |
static unit(): kendo.geometry.Matrix; | |
clone(): kendo.geometry.Matrix; | |
equals(other: kendo.geometry.Matrix): boolean; | |
round(digits: number): kendo.geometry.Matrix; | |
multiplyCopy(matrix: kendo.geometry.Matrix): kendo.geometry.Matrix; | |
toArray(digits: number): any; | |
toString(digits: number, separator: string): string; | |
} | |
interface MatrixOptions { | |
name?: string; | |
} | |
interface MatrixEvent { | |
sender: Matrix; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Point extends Observable { | |
options: PointOptions; | |
x: number; | |
y: number; | |
constructor(x: number, y: number); | |
static create(x: number, y: number): kendo.geometry.Point; | |
static create(x: any, y: number): kendo.geometry.Point; | |
static create(x: kendo.geometry.Point, y: number): kendo.geometry.Point; | |
static min(): kendo.geometry.Point; | |
static max(): kendo.geometry.Point; | |
static minPoint(): kendo.geometry.Point; | |
static maxPoint(): kendo.geometry.Point; | |
clone(): kendo.geometry.Point; | |
distanceTo(point: kendo.geometry.Point): number; | |
equals(other: kendo.geometry.Point): boolean; | |
getX(): number; | |
getY(): number; | |
move(x: number, y: number): kendo.geometry.Point; | |
rotate(angle: number, center: kendo.geometry.Point): kendo.geometry.Point; | |
rotate(angle: number, center: any): kendo.geometry.Point; | |
round(digits: number): kendo.geometry.Point; | |
scale(scaleX: number, scaleY: number): kendo.geometry.Point; | |
scaleCopy(scaleX: number, scaleY: number): kendo.geometry.Point; | |
setX(value: number): kendo.geometry.Point; | |
setY(value: number): kendo.geometry.Point; | |
toArray(digits: number): any; | |
toString(digits: number, separator: string): string; | |
transform(tansformation: kendo.geometry.Transformation): kendo.geometry.Point; | |
transformCopy(tansformation: kendo.geometry.Transformation): kendo.geometry.Point; | |
translate(dx: number, dy: number): kendo.geometry.Point; | |
translateWith(vector: kendo.geometry.Point): kendo.geometry.Point; | |
translateWith(vector: any): kendo.geometry.Point; | |
} | |
interface PointOptions { | |
name?: string; | |
} | |
interface PointEvent { | |
sender: Point; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Rect extends Observable { | |
options: RectOptions; | |
origin: kendo.geometry.Point; | |
size: kendo.geometry.Size; | |
constructor(origin: kendo.geometry.Point, size: kendo.geometry.Size); | |
static fromPoints(pointA: kendo.geometry.Point, pointB: kendo.geometry.Point): kendo.geometry.Rect; | |
static union(rectA: kendo.geometry.Rect, rectB: kendo.geometry.Rect): kendo.geometry.Rect; | |
bbox(matrix: kendo.geometry.Matrix): kendo.geometry.Rect; | |
bottomLeft(): kendo.geometry.Point; | |
bottomRight(): kendo.geometry.Point; | |
center(): kendo.geometry.Point; | |
clone(): kendo.geometry.Rect; | |
equals(other: kendo.geometry.Rect): boolean; | |
getOrigin(): kendo.geometry.Point; | |
getSize(): kendo.geometry.Size; | |
height(): number; | |
setOrigin(value: kendo.geometry.Point): kendo.geometry.Rect; | |
setOrigin(value: any): kendo.geometry.Rect; | |
setSize(value: kendo.geometry.Size): kendo.geometry.Rect; | |
setSize(value: any): kendo.geometry.Rect; | |
topLeft(): kendo.geometry.Point; | |
topRight(): kendo.geometry.Point; | |
width(): number; | |
} | |
interface RectOptions { | |
name?: string; | |
} | |
interface RectEvent { | |
sender: Rect; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Size extends Observable { | |
options: SizeOptions; | |
width: number; | |
height: number; | |
static create(width: number, height: number): kendo.geometry.Size; | |
static create(width: any, height: number): kendo.geometry.Size; | |
static create(width: kendo.geometry.Size, height: number): kendo.geometry.Size; | |
clone(): kendo.geometry.Size; | |
equals(other: kendo.geometry.Size): boolean; | |
getWidth(): number; | |
getHeight(): number; | |
setWidth(value: number): kendo.geometry.Size; | |
setHeight(value: number): kendo.geometry.Size; | |
} | |
interface SizeOptions { | |
name?: string; | |
} | |
interface SizeEvent { | |
sender: Size; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Transformation extends Observable { | |
options: TransformationOptions; | |
clone(): kendo.geometry.Transformation; | |
equals(other: kendo.geometry.Transformation): boolean; | |
matrix(): kendo.geometry.Matrix; | |
multiply(transformation: kendo.geometry.Transformation): kendo.geometry.Transformation; | |
rotate(angle: number, center: any): kendo.geometry.Transformation; | |
rotate(angle: number, center: kendo.geometry.Point): kendo.geometry.Transformation; | |
scale(scaleX: number, scaleY: number): kendo.geometry.Transformation; | |
translate(x: number, y: number): kendo.geometry.Transformation; | |
} | |
interface TransformationOptions { | |
name?: string; | |
} | |
interface TransformationEvent { | |
sender: Transformation; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
} | |
declare module kendo.drawing { | |
class Arc extends kendo.drawing.Element { | |
options: ArcOptions; | |
constructor(geometry: kendo.geometry.Arc, options?: ArcOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
geometry(): kendo.geometry.Arc; | |
geometry(value: kendo.geometry.Arc): void; | |
fill(color: string, opacity?: number): kendo.drawing.Arc; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Arc; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface ArcOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface ArcEvent { | |
sender: Arc; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Circle extends kendo.drawing.Element { | |
options: CircleOptions; | |
constructor(geometry: kendo.geometry.Circle, options?: CircleOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
geometry(): kendo.geometry.Circle; | |
geometry(value: kendo.geometry.Circle): void; | |
fill(color: string, opacity?: number): kendo.drawing.Circle; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Circle; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface CircleOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface CircleEvent { | |
sender: Circle; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Element extends kendo.Class { | |
options: ElementOptions; | |
constructor(options?: ElementOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
opacity(): number; | |
opacity(opacity: number): void; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface ElementOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
opacity?: number; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface ElementEvent { | |
sender: Element; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface FillOptions { | |
color?: string; | |
opacity?: number; | |
} | |
class Gradient extends kendo.Class { | |
options: GradientOptions; | |
stops: any; | |
constructor(options?: GradientOptions); | |
addStop(offset: number, color: string, opacity: number): kendo.drawing.GradientStop; | |
removeStop(stop: kendo.drawing.GradientStop): void; | |
} | |
interface GradientOptions { | |
name?: string; | |
stops?: any; | |
} | |
interface GradientEvent { | |
sender: Gradient; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class GradientStop extends kendo.Class { | |
options: GradientStopOptions; | |
constructor(options?: GradientStopOptions); | |
} | |
interface GradientStopOptions { | |
name?: string; | |
offset?: number; | |
color?: string; | |
opacity?: number; | |
} | |
interface GradientStopEvent { | |
sender: GradientStop; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Group extends kendo.drawing.Element { | |
options: GroupOptions; | |
children: any; | |
constructor(options?: GroupOptions); | |
append(element: kendo.drawing.Element): void; | |
clear(): void; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
insert(position: number, element: kendo.drawing.Element): void; | |
opacity(): number; | |
opacity(opacity: number): void; | |
remove(element: kendo.drawing.Element): void; | |
removeAt(index: number): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface GroupOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
opacity?: number; | |
pdf?: kendo.drawing.PDFOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface GroupEvent { | |
sender: Group; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Image extends kendo.drawing.Element { | |
options: ImageOptions; | |
constructor(src: string, rect: kendo.geometry.Rect); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
opacity(): number; | |
opacity(opacity: number): void; | |
src(): string; | |
src(value: string): void; | |
rect(): kendo.geometry.Rect; | |
rect(value: kendo.geometry.Rect): void; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface ImageOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
opacity?: number; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface ImageEvent { | |
sender: Image; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Layout extends kendo.drawing.Group { | |
options: LayoutOptions; | |
constructor(rect: kendo.geometry.Rect, options?: LayoutOptions); | |
rect(): kendo.geometry.Rect; | |
rect(rect: kendo.geometry.Rect): void; | |
reflow(): void; | |
} | |
interface LayoutOptions { | |
name?: string; | |
alignContent?: string; | |
alignItems?: string; | |
justifyContent?: string; | |
lineSpacing?: number; | |
spacing?: number; | |
orientation?: string; | |
wrap?: boolean; | |
} | |
interface LayoutEvent { | |
sender: Layout; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class LinearGradient extends kendo.drawing.Gradient { | |
options: LinearGradientOptions; | |
stops: any; | |
constructor(options?: LinearGradientOptions); | |
addStop(offset: number, color: string, opacity: number): kendo.drawing.GradientStop; | |
end(): kendo.geometry.Point; | |
end(end: any): void; | |
end(end: kendo.geometry.Point): void; | |
start(): kendo.geometry.Point; | |
start(start: any): void; | |
start(start: kendo.geometry.Point): void; | |
removeStop(stop: kendo.drawing.GradientStop): void; | |
} | |
interface LinearGradientOptions { | |
name?: string; | |
stops?: any; | |
} | |
interface LinearGradientEvent { | |
sender: LinearGradient; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class MultiPath extends kendo.drawing.Element { | |
options: MultiPathOptions; | |
paths: any; | |
constructor(options?: MultiPathOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
close(): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: any, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
fill(color: string, opacity?: number): kendo.drawing.MultiPath; | |
lineTo(x: number, y?: number): kendo.drawing.MultiPath; | |
lineTo(x: any, y?: number): kendo.drawing.MultiPath; | |
lineTo(x: kendo.geometry.Point, y?: number): kendo.drawing.MultiPath; | |
moveTo(x: number, y?: number): kendo.drawing.MultiPath; | |
moveTo(x: any, y?: number): kendo.drawing.MultiPath; | |
moveTo(x: kendo.geometry.Point, y?: number): kendo.drawing.MultiPath; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.MultiPath; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface MultiPathOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface MultiPathEvent { | |
sender: MultiPath; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class OptionsStore extends kendo.Class { | |
options: OptionsStoreOptions; | |
observer: any; | |
constructor(options?: OptionsStoreOptions); | |
get(field: string): any; | |
set(field: string, value: any): void; | |
} | |
interface OptionsStoreOptions { | |
name?: string; | |
} | |
interface OptionsStoreEvent { | |
sender: OptionsStore; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface PDFOptions { | |
creator?: string; | |
date?: Date; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: any; | |
paperSize?: any; | |
subject?: string; | |
title?: string; | |
} | |
class Path extends kendo.drawing.Element { | |
options: PathOptions; | |
segments: any; | |
constructor(options?: PathOptions); | |
static fromPoints(points: any): kendo.drawing.Path; | |
static fromRect(rect: kendo.geometry.Rect): kendo.drawing.Path; | |
static parse(svgPath: string, options?: any): kendo.drawing.Path; | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
close(): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: any, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
fill(color: string, opacity?: number): kendo.drawing.Path; | |
lineTo(x: number, y?: number): kendo.drawing.Path; | |
lineTo(x: any, y?: number): kendo.drawing.Path; | |
lineTo(x: kendo.geometry.Point, y?: number): kendo.drawing.Path; | |
moveTo(x: number, y?: number): kendo.drawing.Path; | |
moveTo(x: any, y?: number): kendo.drawing.Path; | |
moveTo(x: kendo.geometry.Point, y?: number): kendo.drawing.Path; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Path; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface PathOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface PathEvent { | |
sender: Path; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class RadialGradient extends kendo.drawing.Gradient { | |
options: RadialGradientOptions; | |
stops: any; | |
constructor(options?: RadialGradientOptions); | |
addStop(offset: number, color: string, opacity: number): kendo.drawing.GradientStop; | |
center(): kendo.geometry.Point; | |
center(center: any): void; | |
center(center: kendo.geometry.Point): void; | |
radius(): number; | |
radius(value: number): void; | |
removeStop(stop: kendo.drawing.GradientStop): void; | |
} | |
interface RadialGradientOptions { | |
name?: string; | |
center?: any|kendo.geometry.Point; | |
radius?: number; | |
stops?: any; | |
} | |
interface RadialGradientEvent { | |
sender: RadialGradient; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Rect extends kendo.drawing.Element { | |
options: RectOptions; | |
constructor(geometry: kendo.geometry.Rect, options?: RectOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
geometry(): kendo.geometry.Rect; | |
geometry(value: kendo.geometry.Rect): void; | |
fill(color: string, opacity?: number): kendo.drawing.Rect; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Rect; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface RectOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface RectEvent { | |
sender: Rect; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Segment extends kendo.Class { | |
options: SegmentOptions; | |
constructor(anchor: kendo.geometry.Point, controlIn: kendo.geometry.Point, controlOut: kendo.geometry.Point); | |
anchor(): kendo.geometry.Point; | |
anchor(value: kendo.geometry.Point): void; | |
controlIn(): kendo.geometry.Point; | |
controlIn(value: kendo.geometry.Point): void; | |
controlOut(): kendo.geometry.Point; | |
controlOut(value: kendo.geometry.Point): void; | |
} | |
interface SegmentOptions { | |
name?: string; | |
} | |
interface SegmentEvent { | |
sender: Segment; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface StrokeOptions { | |
color?: string; | |
dashType?: string; | |
lineCap?: string; | |
lineJoin?: string; | |
opacity?: number; | |
width?: number; | |
} | |
class Surface extends kendo.Observable { | |
options: SurfaceOptions; | |
constructor(options?: SurfaceOptions); | |
static create(element: JQuery, options?: any): kendo.drawing.Surface; | |
static create(element: Element, options?: any): kendo.drawing.Surface; | |
clear(): void; | |
draw(element: kendo.drawing.Element): void; | |
eventTarget(e: any): kendo.drawing.Element; | |
resize(force?: boolean): void; | |
} | |
interface SurfaceOptions { | |
name?: string; | |
type?: string; | |
height?: string; | |
width?: string; | |
click?(e: SurfaceClickEvent): void; | |
mouseenter?(e: SurfaceMouseenterEvent): void; | |
mouseleave?(e: SurfaceMouseleaveEvent): void; | |
} | |
interface SurfaceEvent { | |
sender: Surface; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SurfaceClickEvent extends SurfaceEvent { | |
element?: kendo.drawing.Element; | |
originalEvent?: any; | |
} | |
interface SurfaceMouseenterEvent extends SurfaceEvent { | |
element?: kendo.drawing.Element; | |
originalEvent?: any; | |
} | |
interface SurfaceMouseleaveEvent extends SurfaceEvent { | |
element?: kendo.drawing.Element; | |
originalEvent?: any; | |
} | |
class Text extends kendo.drawing.Element { | |
options: TextOptions; | |
constructor(content: string, position: kendo.geometry.Point, options?: TextOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
content(): string; | |
content(value: string): void; | |
fill(color: string, opacity?: number): kendo.drawing.Text; | |
opacity(): number; | |
opacity(opacity: number): void; | |
position(): kendo.geometry.Point; | |
position(value: kendo.geometry.Point): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Text; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface TextOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
font?: string; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface TextEvent { | |
sender: Text; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
} | |
declare module kendo.ui { | |
class AutoComplete extends kendo.ui.Widget { | |
static fn: AutoComplete; | |
options: AutoCompleteOptions; | |
dataSource: kendo.data.DataSource; | |
list: JQuery; | |
ul: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): AutoComplete; | |
constructor(element: Element, options?: AutoCompleteOptions); | |
close(): void; | |
dataItem(index: number): any; | |
destroy(): void; | |
enable(enable: boolean): void; | |
focus(): void; | |
items(): any; | |
readonly(readonly: boolean): void; | |
refresh(): void; | |
search(word: string): void; | |
select(item: string): void; | |
select(item: Element): void; | |
select(item: JQuery): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
suggest(value: string): void; | |
value(): string; | |
value(value: string): void; | |
} | |
interface AutoCompleteAnimationClose { | |
duration?: number; | |
effects?: string; | |
} | |
interface AutoCompleteAnimationOpen { | |
duration?: number; | |
effects?: string; | |
} | |
interface AutoCompleteAnimation { | |
close?: AutoCompleteAnimationClose; | |
open?: AutoCompleteAnimationOpen; | |
} | |
interface AutoCompleteVirtual { | |
itemHeight?: number; | |
valueMapper?: Function; | |
} | |
interface AutoCompleteOptions { | |
name?: string; | |
animation?: AutoCompleteAnimation; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataTextField?: string; | |
delay?: number; | |
enable?: boolean; | |
filter?: string; | |
fixedGroupTemplate?: string|Function; | |
groupTemplate?: string|Function; | |
height?: number; | |
highlightFirst?: boolean; | |
ignoreCase?: boolean; | |
minLength?: number; | |
placeholder?: string; | |
popup?: any; | |
separator?: string; | |
suggest?: boolean; | |
headerTemplate?: string|Function; | |
template?: string|Function; | |
valuePrimitive?: boolean; | |
virtual?: AutoCompleteVirtual; | |
change?(e: AutoCompleteChangeEvent): void; | |
close?(e: AutoCompleteCloseEvent): void; | |
dataBound?(e: AutoCompleteDataBoundEvent): void; | |
filtering?(e: AutoCompleteFilteringEvent): void; | |
open?(e: AutoCompleteOpenEvent): void; | |
select?(e: AutoCompleteSelectEvent): void; | |
} | |
interface AutoCompleteEvent { | |
sender: AutoComplete; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface AutoCompleteChangeEvent extends AutoCompleteEvent { | |
} | |
interface AutoCompleteCloseEvent extends AutoCompleteEvent { | |
} | |
interface AutoCompleteDataBoundEvent extends AutoCompleteEvent { | |
} | |
interface AutoCompleteFilteringEvent extends AutoCompleteEvent { | |
filter?: any; | |
} | |
interface AutoCompleteOpenEvent extends AutoCompleteEvent { | |
} | |
interface AutoCompleteSelectEvent extends AutoCompleteEvent { | |
item?: JQuery; | |
} | |
class Button extends kendo.ui.Widget { | |
static fn: Button; | |
options: ButtonOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Button; | |
constructor(element: Element, options?: ButtonOptions); | |
enable(toggle: boolean): void; | |
} | |
interface ButtonOptions { | |
name?: string; | |
enable?: boolean; | |
icon?: string; | |
imageUrl?: string; | |
spriteCssClass?: string; | |
click?(e: ButtonClickEvent): void; | |
} | |
interface ButtonEvent { | |
sender: Button; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ButtonClickEvent extends ButtonEvent { | |
event?: any; | |
} | |
class Calendar extends kendo.ui.Widget { | |
static fn: Calendar; | |
options: CalendarOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Calendar; | |
constructor(element: Element, options?: CalendarOptions); | |
current(): Date; | |
destroy(): void; | |
max(): Date; | |
max(value: Date): void; | |
max(value: string): void; | |
min(): Date; | |
min(value: Date): void; | |
min(value: string): void; | |
navigate(value: Date, view: string): void; | |
navigateDown(value: Date): void; | |
navigateToFuture(): void; | |
navigateToPast(): void; | |
navigateUp(): void; | |
value(): Date; | |
value(value: Date): void; | |
value(value: string): void; | |
view(): any; | |
} | |
interface CalendarMonth { | |
content?: string; | |
empty?: string; | |
} | |
interface CalendarOptions { | |
name?: string; | |
culture?: string; | |
dates?: any; | |
depth?: string; | |
disableDates?: any|Function; | |
footer?: string|Function; | |
format?: string; | |
max?: Date; | |
min?: Date; | |
month?: CalendarMonth; | |
start?: string; | |
value?: Date; | |
change?(e: CalendarEvent): void; | |
navigate?(e: CalendarEvent): void; | |
} | |
interface CalendarEvent { | |
sender: Calendar; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class ColorPalette extends kendo.ui.Widget { | |
static fn: ColorPalette; | |
options: ColorPaletteOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ColorPalette; | |
constructor(element: Element, options?: ColorPaletteOptions); | |
value(): string; | |
value(color?: string): void; | |
color(): kendo.Color; | |
color(color?: kendo.Color): void; | |
enable(enable?: boolean): void; | |
} | |
interface ColorPaletteTileSize { | |
width?: number; | |
height?: number; | |
} | |
interface ColorPaletteOptions { | |
name?: string; | |
palette?: string|any; | |
columns?: number; | |
tileSize?: ColorPaletteTileSize; | |
value?: string; | |
change?(e: ColorPaletteEvent): void; | |
} | |
interface ColorPaletteEvent { | |
sender: ColorPalette; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class ColorPicker extends kendo.ui.Widget { | |
static fn: ColorPicker; | |
options: ColorPickerOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ColorPicker; | |
constructor(element: Element, options?: ColorPickerOptions); | |
close(): void; | |
open(): void; | |
toggle(): void; | |
value(): string; | |
value(color?: string): void; | |
color(): kendo.Color; | |
color(color?: kendo.Color): void; | |
enable(enable?: boolean): void; | |
} | |
interface ColorPickerMessages { | |
apply?: string; | |
cancel?: string; | |
} | |
interface ColorPickerTileSize { | |
width?: number; | |
height?: number; | |
} | |
interface ColorPickerOptions { | |
name?: string; | |
buttons?: boolean; | |
columns?: number; | |
tileSize?: ColorPickerTileSize; | |
messages?: ColorPickerMessages; | |
palette?: string|any; | |
opacity?: boolean; | |
preview?: boolean; | |
toolIcon?: string; | |
value?: string; | |
change?(e: ColorPickerChangeEvent): void; | |
select?(e: ColorPickerSelectEvent): void; | |
open?(e: ColorPickerEvent): void; | |
close?(e: ColorPickerEvent): void; | |
} | |
interface ColorPickerEvent { | |
sender: ColorPicker; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ColorPickerChangeEvent extends ColorPickerEvent { | |
value?: string; | |
} | |
interface ColorPickerSelectEvent extends ColorPickerEvent { | |
value?: string; | |
} | |
class ComboBox extends kendo.ui.Widget { | |
static fn: ComboBox; | |
options: ComboBoxOptions; | |
dataSource: kendo.data.DataSource; | |
input: JQuery; | |
list: JQuery; | |
ul: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ComboBox; | |
constructor(element: Element, options?: ComboBoxOptions); | |
close(): void; | |
dataItem(index?: number): any; | |
destroy(): void; | |
enable(enable: boolean): void; | |
focus(): void; | |
items(): any; | |
open(): void; | |
readonly(readonly: boolean): void; | |
refresh(): void; | |
search(word: string): void; | |
select(): number; | |
select(li: JQuery): void; | |
select(li: number): void; | |
select(li: Function): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
suggest(value: string): void; | |
text(): string; | |
text(text: string): void; | |
toggle(toggle: boolean): void; | |
value(): string; | |
value(value: string): void; | |
} | |
interface ComboBoxAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface ComboBoxAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface ComboBoxAnimation { | |
close?: ComboBoxAnimationClose; | |
open?: ComboBoxAnimationOpen; | |
} | |
interface ComboBoxPopup { | |
appendTo?: string; | |
origin?: string; | |
position?: string; | |
} | |
interface ComboBoxVirtual { | |
itemHeight?: number; | |
valueMapper?: Function; | |
} | |
interface ComboBoxOptions { | |
name?: string; | |
animation?: ComboBoxAnimation; | |
autoBind?: boolean; | |
cascadeFrom?: string; | |
cascadeFromField?: string; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataTextField?: string; | |
dataValueField?: string; | |
delay?: number; | |
enable?: boolean; | |
filter?: string; | |
fixedGroupTemplate?: string|Function; | |
groupTemplate?: string|Function; | |
height?: number; | |
highlightFirst?: boolean; | |
ignoreCase?: boolean; | |
index?: number; | |
minLength?: number; | |
placeholder?: string; | |
popup?: ComboBoxPopup; | |
suggest?: boolean; | |
headerTemplate?: string|Function; | |
template?: string|Function; | |
text?: string; | |
value?: string; | |
valuePrimitive?: boolean; | |
virtual?: ComboBoxVirtual; | |
change?(e: ComboBoxChangeEvent): void; | |
close?(e: ComboBoxCloseEvent): void; | |
dataBound?(e: ComboBoxDataBoundEvent): void; | |
filtering?(e: ComboBoxFilteringEvent): void; | |
open?(e: ComboBoxOpenEvent): void; | |
select?(e: ComboBoxSelectEvent): void; | |
cascade?(e: ComboBoxCascadeEvent): void; | |
} | |
interface ComboBoxEvent { | |
sender: ComboBox; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ComboBoxChangeEvent extends ComboBoxEvent { | |
} | |
interface ComboBoxCloseEvent extends ComboBoxEvent { | |
} | |
interface ComboBoxDataBoundEvent extends ComboBoxEvent { | |
} | |
interface ComboBoxFilteringEvent extends ComboBoxEvent { | |
filter?: any; | |
} | |
interface ComboBoxOpenEvent extends ComboBoxEvent { | |
} | |
interface ComboBoxSelectEvent extends ComboBoxEvent { | |
item?: JQuery; | |
} | |
interface ComboBoxCascadeEvent extends ComboBoxEvent { | |
} | |
class ContextMenu extends kendo.ui.Widget { | |
static fn: ContextMenu; | |
options: ContextMenuOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ContextMenu; | |
constructor(element: Element, options?: ContextMenuOptions); | |
append(item: any, referenceItem: string): kendo.ui.ContextMenu; | |
append(item: any, referenceItem: JQuery): kendo.ui.ContextMenu; | |
close(element: Element): kendo.ui.ContextMenu; | |
close(element: JQuery): kendo.ui.ContextMenu; | |
destroy(): void; | |
enable(element: string, enable: boolean): kendo.ui.ContextMenu; | |
enable(element: Element, enable: boolean): kendo.ui.ContextMenu; | |
enable(element: JQuery, enable: boolean): kendo.ui.ContextMenu; | |
insertAfter(item: any, referenceItem: string): kendo.ui.ContextMenu; | |
insertAfter(item: any, referenceItem: Element): kendo.ui.ContextMenu; | |
insertAfter(item: any, referenceItem: JQuery): kendo.ui.ContextMenu; | |
insertBefore(item: any, referenceItem: string): kendo.ui.ContextMenu; | |
insertBefore(item: any, referenceItem: Element): kendo.ui.ContextMenu; | |
insertBefore(item: any, referenceItem: JQuery): kendo.ui.ContextMenu; | |
open(x: number, y?: number): kendo.ui.ContextMenu; | |
open(x: Element, y?: number): kendo.ui.ContextMenu; | |
open(x: JQuery, y?: number): kendo.ui.ContextMenu; | |
remove(element: string): kendo.ui.ContextMenu; | |
remove(element: Element): kendo.ui.ContextMenu; | |
remove(element: JQuery): kendo.ui.ContextMenu; | |
} | |
interface ContextMenuAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface ContextMenuAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface ContextMenuAnimation { | |
close?: ContextMenuAnimationClose; | |
open?: ContextMenuAnimationOpen; | |
} | |
interface ContextMenuOptions { | |
name?: string; | |
alignToAnchor?: boolean; | |
animation?: ContextMenuAnimation; | |
closeOnClick?: boolean; | |
dataSource?: any|any; | |
direction?: string; | |
filter?: string; | |
hoverDelay?: number; | |
orientation?: string; | |
popupCollision?: string; | |
showOn?: string; | |
target?: string|JQuery; | |
close?(e: ContextMenuCloseEvent): void; | |
open?(e: ContextMenuOpenEvent): void; | |
activate?(e: ContextMenuActivateEvent): void; | |
deactivate?(e: ContextMenuDeactivateEvent): void; | |
select?(e: ContextMenuSelectEvent): void; | |
} | |
interface ContextMenuEvent { | |
sender: ContextMenu; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ContextMenuCloseEvent extends ContextMenuEvent { | |
item?: Element; | |
type?: string; | |
target?: Element; | |
event?: JQueryEventObject; | |
} | |
interface ContextMenuOpenEvent extends ContextMenuEvent { | |
item?: Element; | |
type?: string; | |
target?: Element; | |
event?: JQueryEventObject; | |
} | |
interface ContextMenuActivateEvent extends ContextMenuEvent { | |
item?: Element; | |
type?: string; | |
target?: Element; | |
} | |
interface ContextMenuDeactivateEvent extends ContextMenuEvent { | |
item?: Element; | |
type?: string; | |
target?: Element; | |
} | |
interface ContextMenuSelectEvent extends ContextMenuEvent { | |
item?: Element; | |
type?: string; | |
target?: Element; | |
} | |
class DatePicker extends kendo.ui.Widget { | |
static fn: DatePicker; | |
options: DatePickerOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): DatePicker; | |
constructor(element: Element, options?: DatePickerOptions); | |
close(): void; | |
destroy(): void; | |
enable(enable: boolean): void; | |
readonly(readonly: boolean): void; | |
max(): Date; | |
max(value: Date): void; | |
max(value: string): void; | |
min(): Date; | |
min(value: Date): void; | |
min(value: string): void; | |
open(): void; | |
setOptions(options: any): void; | |
value(): Date; | |
value(value: Date): void; | |
value(value: string): void; | |
} | |
interface DatePickerAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface DatePickerAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface DatePickerAnimation { | |
close?: DatePickerAnimationClose; | |
open?: DatePickerAnimationOpen; | |
} | |
interface DatePickerMonth { | |
content?: string; | |
empty?: string; | |
} | |
interface DatePickerOptions { | |
name?: string; | |
animation?: DatePickerAnimation; | |
ARIATemplate?: string; | |
culture?: string; | |
dates?: any; | |
depth?: string; | |
disableDates?: any|Function; | |
footer?: string|Function; | |
format?: string; | |
max?: Date; | |
min?: Date; | |
month?: DatePickerMonth; | |
parseFormats?: any; | |
start?: string; | |
value?: Date; | |
change?(e: DatePickerChangeEvent): void; | |
close?(e: DatePickerCloseEvent): void; | |
open?(e: DatePickerOpenEvent): void; | |
} | |
interface DatePickerEvent { | |
sender: DatePicker; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface DatePickerChangeEvent extends DatePickerEvent { | |
} | |
interface DatePickerCloseEvent extends DatePickerEvent { | |
} | |
interface DatePickerOpenEvent extends DatePickerEvent { | |
} | |
class DateTimePicker extends kendo.ui.Widget { | |
static fn: DateTimePicker; | |
options: DateTimePickerOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): DateTimePicker; | |
constructor(element: Element, options?: DateTimePickerOptions); | |
close(view: string): void; | |
destroy(): void; | |
enable(enable: boolean): void; | |
readonly(readonly: boolean): void; | |
max(): Date; | |
max(value: Date): void; | |
max(value: string): void; | |
min(): Date; | |
min(value: Date): void; | |
min(value: string): void; | |
open(view: string): void; | |
setOptions(options: any): void; | |
toggle(view: string): void; | |
value(): Date; | |
value(value: Date): void; | |
value(value: string): void; | |
} | |
interface DateTimePickerAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface DateTimePickerAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface DateTimePickerAnimation { | |
close?: DateTimePickerAnimationClose; | |
open?: DateTimePickerAnimationOpen; | |
} | |
interface DateTimePickerMonth { | |
content?: string; | |
empty?: string; | |
} | |
interface DateTimePickerOptions { | |
name?: string; | |
animation?: DateTimePickerAnimation; | |
ARIATemplate?: string; | |
culture?: string; | |
dates?: any; | |
depth?: string; | |
disableDates?: any|Function; | |
footer?: string; | |
format?: string; | |
interval?: number; | |
max?: Date; | |
min?: Date; | |
month?: DateTimePickerMonth; | |
parseFormats?: any; | |
start?: string; | |
timeFormat?: string; | |
value?: Date; | |
change?(e: DateTimePickerChangeEvent): void; | |
close?(e: DateTimePickerCloseEvent): void; | |
open?(e: DateTimePickerOpenEvent): void; | |
} | |
interface DateTimePickerEvent { | |
sender: DateTimePicker; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface DateTimePickerChangeEvent extends DateTimePickerEvent { | |
} | |
interface DateTimePickerCloseEvent extends DateTimePickerEvent { | |
view?: string; | |
} | |
interface DateTimePickerOpenEvent extends DateTimePickerEvent { | |
view?: string; | |
} | |
class DropDownList extends kendo.ui.Widget { | |
static fn: DropDownList; | |
options: DropDownListOptions; | |
dataSource: kendo.data.DataSource; | |
span: JQuery; | |
filterInput: JQuery; | |
list: JQuery; | |
ul: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): DropDownList; | |
constructor(element: Element, options?: DropDownListOptions); | |
close(): void; | |
dataItem(index?: JQuery): any; | |
dataItem(index?: number): any; | |
destroy(): void; | |
focus(): void; | |
items(): any; | |
enable(enable: boolean): void; | |
open(): void; | |
readonly(readonly: boolean): void; | |
refresh(): void; | |
search(word: string): void; | |
select(): number; | |
select(li: JQuery): void; | |
select(li: number): void; | |
select(li: Function): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
text(): string; | |
text(text: string): void; | |
toggle(toggle: boolean): void; | |
value(): string; | |
value(value: string): void; | |
} | |
interface DropDownListAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface DropDownListAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface DropDownListAnimation { | |
close?: DropDownListAnimationClose; | |
open?: DropDownListAnimationOpen; | |
} | |
interface DropDownListPopup { | |
appendTo?: string; | |
origin?: string; | |
position?: string; | |
} | |
interface DropDownListVirtual { | |
itemHeight?: number; | |
valueMapper?: Function; | |
} | |
interface DropDownListOptions { | |
name?: string; | |
animation?: DropDownListAnimation; | |
autoBind?: boolean; | |
cascadeFrom?: string; | |
cascadeFromField?: string; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataTextField?: string; | |
dataValueField?: string; | |
delay?: number; | |
enable?: boolean; | |
filter?: string; | |
fixedGroupTemplate?: string|Function; | |
groupTemplate?: string|Function; | |
height?: number; | |
ignoreCase?: boolean; | |
index?: number; | |
minLength?: number; | |
popup?: DropDownListPopup; | |
optionLabel?: string|any; | |
optionLabelTemplate?: string|Function; | |
headerTemplate?: string|Function; | |
template?: string|Function; | |
valueTemplate?: string|Function; | |
text?: string; | |
value?: string; | |
valuePrimitive?: boolean; | |
virtual?: DropDownListVirtual; | |
change?(e: DropDownListChangeEvent): void; | |
close?(e: DropDownListCloseEvent): void; | |
dataBound?(e: DropDownListDataBoundEvent): void; | |
filtering?(e: DropDownListFilteringEvent): void; | |
open?(e: DropDownListOpenEvent): void; | |
select?(e: DropDownListSelectEvent): void; | |
cascade?(e: DropDownListCascadeEvent): void; | |
} | |
interface DropDownListEvent { | |
sender: DropDownList; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface DropDownListChangeEvent extends DropDownListEvent { | |
} | |
interface DropDownListCloseEvent extends DropDownListEvent { | |
} | |
interface DropDownListDataBoundEvent extends DropDownListEvent { | |
} | |
interface DropDownListFilteringEvent extends DropDownListEvent { | |
filter?: any; | |
} | |
interface DropDownListOpenEvent extends DropDownListEvent { | |
} | |
interface DropDownListSelectEvent extends DropDownListEvent { | |
item?: JQuery; | |
} | |
interface DropDownListCascadeEvent extends DropDownListEvent { | |
} | |
class Editor extends kendo.ui.Widget { | |
static fn: Editor; | |
options: EditorOptions; | |
body: Element; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Editor; | |
constructor(element: Element, options?: EditorOptions); | |
createRange(document?: Document): Range; | |
destroy(): void; | |
encodedValue(): void; | |
exec(name: string, params: any): void; | |
focus(): void; | |
getRange(): Range; | |
getSelection(): Selection; | |
paste(html: string, options: any): void; | |
selectedHtml(): string; | |
refresh(): void; | |
saveAsPDF(): JQueryPromise<any>; | |
selectRange(range: Range): void; | |
update(): void; | |
state(toolName: string): boolean; | |
value(): string; | |
value(value: string): void; | |
} | |
interface EditorFileBrowserMessages { | |
uploadFile?: string; | |
orderBy?: string; | |
orderByName?: string; | |
orderBySize?: string; | |
directoryNotFound?: string; | |
emptyFolder?: string; | |
deleteFile?: string; | |
invalidFileType?: string; | |
overwriteFile?: string; | |
search?: string; | |
} | |
interface EditorFileBrowserSchemaModelFieldsName { | |
field?: string; | |
parse?: Function; | |
} | |
interface EditorFileBrowserSchemaModelFieldsSize { | |
field?: string; | |
parse?: Function; | |
} | |
interface EditorFileBrowserSchemaModelFieldsType { | |
parse?: Function; | |
field?: string; | |
} | |
interface EditorFileBrowserSchemaModelFields { | |
name?: EditorFileBrowserSchemaModelFieldsName; | |
type?: EditorFileBrowserSchemaModelFieldsType; | |
size?: EditorFileBrowserSchemaModelFieldsSize; | |
} | |
interface EditorFileBrowserSchemaModel { | |
id?: string; | |
fields?: EditorFileBrowserSchemaModelFields; | |
} | |
interface EditorFileBrowserSchema { | |
} | |
interface EditorFileBrowserTransportCreate { | |
contentType?: string; | |
data?: any|string|Function; | |
dataType?: string; | |
type?: string; | |
url?: string|Function; | |
} | |
interface EditorFileBrowserTransportDestroy { | |
contentType?: string; | |
data?: any|string|Function; | |
dataType?: string; | |
type?: string; | |
url?: string|Function; | |
} | |
interface EditorFileBrowserTransportRead { | |
contentType?: string; | |
data?: any|string|Function; | |
dataType?: string; | |
type?: string; | |
url?: string|Function; | |
} | |
interface EditorFileBrowserTransport { | |
read?: EditorFileBrowserTransportRead; | |
uploadUrl?: string; | |
fileUrl?: string|Function; | |
destroy?: EditorFileBrowserTransportDestroy; | |
create?: EditorFileBrowserTransportCreate; | |
} | |
interface EditorFileBrowser { | |
fileTypes?: string; | |
path?: string; | |
transport?: EditorFileBrowserTransport; | |
schema?: EditorFileBrowserSchema; | |
messages?: EditorFileBrowserMessages; | |
} | |
interface EditorImageBrowserMessages { | |
uploadFile?: string; | |
orderBy?: string; | |
orderByName?: string; | |
orderBySize?: string; | |
directoryNotFound?: string; | |
emptyFolder?: string; | |
deleteFile?: string; | |
invalidFileType?: string; | |
overwriteFile?: string; | |
search?: string; | |
} | |
interface EditorImageBrowserSchemaModelFieldsName { | |
field?: string; | |
parse?: Function; | |
} | |
interface EditorImageBrowserSchemaModelFieldsSize { | |
field?: string; | |
parse?: Function; | |
} | |
interface EditorImageBrowserSchemaModelFieldsType { | |
parse?: Function; | |
field?: string; | |
} | |
interface EditorImageBrowserSchemaModelFields { | |
name?: EditorImageBrowserSchemaModelFieldsName; | |
type?: EditorImageBrowserSchemaModelFieldsType; | |
size?: EditorImageBrowserSchemaModelFieldsSize; | |
} | |
interface EditorImageBrowserSchemaModel { | |
id?: string; | |
fields?: EditorImageBrowserSchemaModelFields; | |
} | |
interface EditorImageBrowserSchema { | |
} | |
interface EditorImageBrowserTransportCreate { | |
contentType?: string; | |
data?: any|string|Function; | |
dataType?: string; | |
type?: string; | |
url?: string|Function; | |
} | |
interface EditorImageBrowserTransportDestroy { | |
contentType?: string; | |
data?: any|string|Function; | |
dataType?: string; | |
type?: string; | |
url?: string|Function; | |
} | |
interface EditorImageBrowserTransportRead { | |
contentType?: string; | |
data?: any|string|Function; | |
dataType?: string; | |
type?: string; | |
url?: string|Function; | |
} | |
interface EditorImageBrowserTransport { | |
read?: EditorImageBrowserTransportRead; | |
thumbnailUrl?: string|Function; | |
uploadUrl?: string; | |
imageUrl?: string|Function; | |
destroy?: EditorImageBrowserTransportDestroy; | |
create?: EditorImageBrowserTransportCreate; | |
} | |
interface EditorImageBrowser { | |
fileTypes?: string; | |
path?: string; | |
transport?: EditorImageBrowserTransport; | |
schema?: EditorImageBrowserSchema; | |
messages?: EditorImageBrowserMessages; | |
} | |
interface EditorMessages { | |
bold?: string; | |
italic?: string; | |
underline?: string; | |
strikethrough?: string; | |
superscript?: string; | |
subscript?: string; | |
justifyCenter?: string; | |
justifyLeft?: string; | |
justifyRight?: string; | |
justifyFull?: string; | |
insertUnorderedList?: string; | |
insertOrderedList?: string; | |
indent?: string; | |
outdent?: string; | |
createLink?: string; | |
unlink?: string; | |
insertImage?: string; | |
insertFile?: string; | |
insertHtml?: string; | |
viewHtml?: string; | |
fontName?: string; | |
fontNameInherit?: string; | |
fontSize?: string; | |
fontSizeInherit?: string; | |
formatBlock?: string; | |
formatting?: string; | |
foreColor?: string; | |
backColor?: string; | |
style?: string; | |
emptyFolder?: string; | |
uploadFile?: string; | |
editAreaTitle?: string; | |
orderBy?: string; | |
orderBySize?: string; | |
orderByName?: string; | |
invalidFileType?: string; | |
deleteFile?: string; | |
overwriteFile?: string; | |
directoryNotFound?: string; | |
imageWebAddress?: string; | |
imageAltText?: string; | |
imageWidth?: string; | |
imageHeight?: string; | |
fileWebAddress?: string; | |
fileTitle?: string; | |
linkWebAddress?: string; | |
linkText?: string; | |
linkToolTip?: string; | |
linkOpenInNewWindow?: string; | |
dialogUpdate?: string; | |
dialogInsert?: string; | |
dialogCancel?: string; | |
createTable?: string; | |
createTableHint?: string; | |
addColumnLeft?: string; | |
addColumnRight?: string; | |
addRowAbove?: string; | |
addRowBelow?: string; | |
deleteRow?: string; | |
deleteColumn?: string; | |
} | |
interface EditorPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface EditorPdf { | |
author?: string; | |
avoidLinks?: boolean|string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
forceProxy?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: EditorPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
} | |
interface EditorResizable { | |
content?: boolean; | |
min?: number; | |
max?: number; | |
toolbar?: boolean; | |
} | |
interface EditorSerialization { | |
entities?: boolean; | |
scripts?: boolean; | |
semantic?: boolean; | |
} | |
interface EditorToolItem { | |
text?: string; | |
value?: string; | |
context?: string; | |
} | |
interface EditorTool { | |
name?: string; | |
tooltip?: string; | |
exec?: Function; | |
items?: EditorToolItem[]; | |
template?: string; | |
} | |
interface EditorExecParams { | |
value?: any; | |
} | |
interface EditorPasteOptions { | |
split?: boolean; | |
} | |
interface EditorOptions { | |
name?: string; | |
domain?: string; | |
encoded?: boolean; | |
messages?: EditorMessages; | |
pdf?: EditorPdf; | |
resizable?: EditorResizable; | |
serialization?: EditorSerialization; | |
stylesheets?: any; | |
tools?: EditorTool[]; | |
imageBrowser?: EditorImageBrowser; | |
fileBrowser?: EditorFileBrowser; | |
change?(e: EditorEvent): void; | |
execute?(e: EditorExecuteEvent): void; | |
keydown?(e: EditorEvent): void; | |
keyup?(e: EditorEvent): void; | |
paste?(e: EditorPasteEvent): void; | |
pdfExport?(e: EditorPdfExportEvent): void; | |
select?(e: EditorEvent): void; | |
} | |
interface EditorEvent { | |
sender: Editor; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface EditorExecuteEvent extends EditorEvent { | |
name?: string; | |
command?: any; | |
} | |
interface EditorPasteEvent extends EditorEvent { | |
html?: any; | |
} | |
interface EditorPdfExportEvent extends EditorEvent { | |
promise?: JQueryPromise<any>; | |
} | |
class FlatColorPicker extends kendo.ui.Widget { | |
static fn: FlatColorPicker; | |
options: FlatColorPickerOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): FlatColorPicker; | |
constructor(element: Element, options?: FlatColorPickerOptions); | |
focus(): void; | |
value(): string; | |
value(color?: string): void; | |
color(): kendo.Color; | |
color(color?: kendo.Color): void; | |
enable(enable?: boolean): void; | |
} | |
interface FlatColorPickerMessages { | |
apply?: string; | |
cancel?: string; | |
} | |
interface FlatColorPickerOptions { | |
name?: string; | |
opacity?: boolean; | |
buttons?: boolean; | |
value?: string; | |
preview?: boolean; | |
autoupdate?: boolean; | |
messages?: FlatColorPickerMessages; | |
change?(e: FlatColorPickerChangeEvent): void; | |
} | |
interface FlatColorPickerEvent { | |
sender: FlatColorPicker; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface FlatColorPickerChangeEvent extends FlatColorPickerEvent { | |
value?: string; | |
} | |
class Gantt extends kendo.ui.Widget { | |
static fn: Gantt; | |
options: GanttOptions; | |
dataSource: kendo.data.DataSource; | |
dependencies: kendo.data.GanttDependencyDataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Gantt; | |
constructor(element: Element, options?: GanttOptions); | |
clearSelection(): void; | |
dataItem(row: string): kendo.data.GanttTask; | |
dataItem(row: Element): kendo.data.GanttTask; | |
dataItem(row: JQuery): kendo.data.GanttTask; | |
destroy(): void; | |
refresh(): void; | |
refreshDependencies(): void; | |
removeDependency(dependency: string): void; | |
removeDependency(dependency: kendo.data.GanttDependency): void; | |
removeTask(task: string): void; | |
removeTask(task: kendo.data.GanttTask): void; | |
saveAsPDF(): JQueryPromise<any>; | |
select(): JQuery; | |
select(row: string): void; | |
select(row: Element): void; | |
select(row: JQuery): void; | |
setDataSource(dataSource: kendo.data.GanttDataSource): void; | |
setDependenciesDataSource(dataSource: kendo.data.GanttDependencyDataSource): void; | |
view(): kendo.ui.GanttView; | |
view(type?: string): void; | |
} | |
interface GanttAssignments { | |
dataSource?: any|any|kendo.data.DataSource; | |
dataResourceIdField?: string; | |
dataTaskIdField?: string; | |
dataValueField?: string; | |
} | |
interface GanttColumn { | |
field?: string; | |
title?: string; | |
format?: string; | |
width?: string|number; | |
editable?: boolean; | |
sortable?: boolean; | |
} | |
interface GanttCurrentTimeMarker { | |
updateInterval?: number; | |
} | |
interface GanttEditable { | |
confirmation?: boolean; | |
template?: string|Function; | |
} | |
interface GanttMessagesActions { | |
addChild?: string; | |
append?: string; | |
insertAfter?: string; | |
insertBefore?: string; | |
pdf?: string; | |
} | |
interface GanttMessagesEditor { | |
assignButton?: string; | |
editorTitle?: string; | |
end?: string; | |
percentComplete?: string; | |
resources?: string; | |
resourcesEditorTitle?: string; | |
resourcesHeader?: string; | |
start?: string; | |
title?: string; | |
unitsHeader?: string; | |
} | |
interface GanttMessagesViews { | |
day?: string; | |
end?: string; | |
month?: string; | |
start?: string; | |
week?: string; | |
year?: string; | |
} | |
interface GanttMessages { | |
actions?: GanttMessagesActions; | |
cancel?: string; | |
deleteDependencyConfirmation?: string; | |
deleteDependencyWindowTitle?: string; | |
deleteTaskConfirmation?: string; | |
deleteTaskWindowTitle?: string; | |
destroy?: string; | |
editor?: GanttMessagesEditor; | |
save?: string; | |
views?: GanttMessagesViews; | |
} | |
interface GanttPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface GanttPdf { | |
author?: string; | |
avoidLinks?: boolean|string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
forceProxy?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: GanttPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
} | |
interface GanttResources { | |
dataFormatField?: string; | |
dataColorField?: string; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataTextField?: string; | |
field?: string; | |
} | |
interface GanttToolbarItem { | |
name?: string; | |
template?: string|Function; | |
text?: string; | |
} | |
interface GanttTooltip { | |
template?: string|Function; | |
visible?: boolean; | |
} | |
interface GanttView { | |
type?: string; | |
selected?: boolean; | |
slotSize?: number|string; | |
timeHeaderTemplate?: string|Function; | |
dayHeaderTemplate?: string|Function; | |
weekHeaderTemplate?: string|Function; | |
monthHeaderTemplate?: string|Function; | |
yearHeaderTemplate?: string|Function; | |
resizeTooltipFormat?: string; | |
} | |
interface GanttOptions { | |
name?: string; | |
assignments?: GanttAssignments; | |
autoBind?: boolean; | |
columnResizeHandleWidth?: number; | |
columns?: GanttColumn[]; | |
currentTimeMarker?: GanttCurrentTimeMarker; | |
dataSource?: any|any|kendo.data.GanttDataSource; | |
dependencies?: any|any|kendo.data.GanttDependencyDataSource; | |
editable?: GanttEditable; | |
navigatable?: boolean; | |
workDayStart?: Date; | |
workDayEnd?: Date; | |
workWeekStart?: number; | |
workWeekEnd?: number; | |
hourSpan?: number; | |
snap?: boolean; | |
height?: number|string; | |
listWidth?: string|number; | |
messages?: GanttMessages; | |
pdf?: GanttPdf; | |
resizable?: boolean; | |
selectable?: boolean; | |
showWorkDays?: boolean; | |
showWorkHours?: boolean; | |
taskTemplate?: string|Function; | |
toolbar?: GanttToolbarItem[]; | |
tooltip?: GanttTooltip; | |
views?: GanttView[]; | |
resources?: GanttResources; | |
rowHeight?: number|string; | |
dataBinding?(e: GanttDataBindingEvent): void; | |
dataBound?(e: GanttDataBoundEvent): void; | |
add?(e: GanttAddEvent): void; | |
edit?(e: GanttEditEvent): void; | |
remove?(e: GanttRemoveEvent): void; | |
cancel?(e: GanttCancelEvent): void; | |
save?(e: GanttSaveEvent): void; | |
change?(e: GanttChangeEvent): void; | |
columnResize?(e: GanttColumnResizeEvent): void; | |
navigate?(e: GanttNavigateEvent): void; | |
moveStart?(e: GanttMoveStartEvent): void; | |
move?(e: GanttMoveEvent): void; | |
moveEnd?(e: GanttMoveEndEvent): void; | |
pdfExport?(e: GanttPdfExportEvent): void; | |
resizeStart?(e: GanttResizeStartEvent): void; | |
resize?(e: GanttResizeEvent): void; | |
resizeEnd?(e: GanttResizeEndEvent): void; | |
} | |
interface GanttEvent { | |
sender: Gantt; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface GanttDataBindingEvent extends GanttEvent { | |
} | |
interface GanttDataBoundEvent extends GanttEvent { | |
} | |
interface GanttAddEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
dependency?: kendo.data.GanttDependency; | |
} | |
interface GanttEditEvent extends GanttEvent { | |
container?: JQuery; | |
task?: kendo.data.GanttTask; | |
} | |
interface GanttRemoveEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
dependencies?: any; | |
} | |
interface GanttCancelEvent extends GanttEvent { | |
container?: JQuery; | |
task?: kendo.data.GanttTask; | |
} | |
interface GanttSaveEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
values?: any; | |
} | |
interface GanttChangeEvent extends GanttEvent { | |
} | |
interface GanttColumnResizeEvent extends GanttEvent { | |
column?: any; | |
newWidth?: number; | |
oldWidth?: number; | |
} | |
interface GanttNavigateEvent extends GanttEvent { | |
view?: string; | |
} | |
interface GanttMoveStartEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
} | |
interface GanttMoveEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
start?: Date; | |
end?: Date; | |
} | |
interface GanttMoveEndEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
start?: Date; | |
end?: Date; | |
} | |
interface GanttPdfExportEvent extends GanttEvent { | |
promise?: JQueryPromise<any>; | |
} | |
interface GanttResizeStartEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
} | |
interface GanttResizeEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
start?: Date; | |
end?: Date; | |
} | |
interface GanttResizeEndEvent extends GanttEvent { | |
task?: kendo.data.GanttTask; | |
start?: Date; | |
end?: Date; | |
} | |
class Grid extends kendo.ui.Widget { | |
static fn: Grid; | |
options: GridOptions; | |
dataSource: kendo.data.DataSource; | |
columns: GridColumn[]; | |
footer: JQuery; | |
pager: kendo.ui.Pager; | |
table: JQuery; | |
tbody: JQuery; | |
thead: JQuery; | |
content: JQuery; | |
lockedHeader: JQuery; | |
lockedTable: JQuery; | |
lockedContent: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Grid; | |
constructor(element: Element, options?: GridOptions); | |
addRow(): void; | |
autoFitColumn(column: number): void; | |
autoFitColumn(column: string): void; | |
autoFitColumn(column: any): void; | |
cancelChanges(): void; | |
cancelRow(): void; | |
cellIndex(cell: string): number; | |
cellIndex(cell: Element): number; | |
cellIndex(cell: JQuery): number; | |
clearSelection(): void; | |
closeCell(isCancel?: boolean): void; | |
collapseGroup(row: string): void; | |
collapseGroup(row: Element): void; | |
collapseGroup(row: JQuery): void; | |
collapseRow(row: string): void; | |
collapseRow(row: Element): void; | |
collapseRow(row: JQuery): void; | |
current(): JQuery; | |
current(cell: JQuery): void; | |
dataItem(row: string): kendo.data.ObservableObject; | |
dataItem(row: Element): kendo.data.ObservableObject; | |
dataItem(row: JQuery): kendo.data.ObservableObject; | |
destroy(): void; | |
editCell(cell: JQuery): void; | |
editRow(row: JQuery): void; | |
expandGroup(row: string): void; | |
expandGroup(row: Element): void; | |
expandGroup(row: JQuery): void; | |
expandRow(row: string): void; | |
expandRow(row: Element): void; | |
expandRow(row: JQuery): void; | |
getOptions(): GridOptions; | |
hideColumn(column: number): void; | |
hideColumn(column: string): void; | |
hideColumn(column: any): void; | |
items(): any; | |
lockColumn(column: number): void; | |
lockColumn(column: string): void; | |
refresh(): void; | |
removeRow(row: string): void; | |
removeRow(row: Element): void; | |
removeRow(row: JQuery): void; | |
reorderColumn(destIndex: number, column: any): void; | |
saveAsExcel(): void; | |
saveAsPDF(): JQueryPromise<any>; | |
saveChanges(): void; | |
saveRow(): void; | |
select(): JQuery; | |
select(rows: string): void; | |
select(rows: Element): void; | |
select(rows: JQuery): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
setOptions(options: any): void; | |
showColumn(column: number): void; | |
showColumn(column: string): void; | |
showColumn(column: any): void; | |
unlockColumn(column: number): void; | |
unlockColumn(column: string): void; | |
} | |
interface GridAllowCopy { | |
delimeter?: string|any; | |
} | |
interface GridColumnMenuMessages { | |
columns?: string; | |
filter?: string; | |
sortAscending?: string; | |
sortDescending?: string; | |
settings?: string; | |
done?: string; | |
lock?: string; | |
unlock?: string; | |
} | |
interface GridColumnMenu { | |
columns?: boolean; | |
filterable?: boolean; | |
sortable?: boolean; | |
messages?: GridColumnMenuMessages; | |
} | |
interface GridColumnCommandItemText { | |
edit?: string; | |
cancel?: string; | |
update?: string; | |
} | |
interface GridColumnCommandItem { | |
name?: string; | |
text?: GridColumnCommandItemText; | |
className?: string; | |
click?: Function; | |
} | |
interface GridColumnFilterableCell { | |
dataSource?: any|kendo.data.DataSource; | |
dataTextField?: string; | |
delay?: number; | |
inputWidth?: number; | |
suggestionOperator?: string; | |
minLength?: number; | |
enabled?: boolean; | |
operator?: string; | |
showOperators?: boolean; | |
template?: Function; | |
} | |
interface GridColumnFilterable { | |
cell?: GridColumnFilterableCell; | |
multi?: boolean; | |
dataSource?: any|any|kendo.data.DataSource; | |
checkAll?: boolean; | |
itemTemplate?: Function; | |
operators?: any; | |
search?: boolean; | |
ignoreCase?: boolean; | |
ui?: string|Function; | |
} | |
interface GridColumnSortable { | |
compare?: Function; | |
} | |
interface GridColumn { | |
aggregates?: any; | |
attributes?: any; | |
columns?: any; | |
command?: GridColumnCommandItem[]; | |
encoded?: boolean; | |
field?: string; | |
filterable?: GridColumnFilterable; | |
footerTemplate?: string|Function; | |
format?: string; | |
groupable?: boolean; | |
groupHeaderTemplate?: string|Function; | |
groupFooterTemplate?: string|Function; | |
headerAttributes?: any; | |
headerTemplate?: string|Function; | |
hidden?: boolean; | |
locked?: boolean; | |
lockable?: boolean; | |
minScreenWidth?: number; | |
sortable?: GridColumnSortable; | |
template?: string|Function; | |
title?: string; | |
width?: string|number; | |
values?: any; | |
menu?: boolean; | |
} | |
interface GridEditable { | |
confirmation?: boolean|string|Function; | |
cancelDelete?: string; | |
confirmDelete?: string; | |
createAt?: string; | |
destroy?: boolean; | |
mode?: string; | |
template?: string|Function; | |
update?: boolean; | |
window?: any; | |
} | |
interface GridExcel { | |
allPages?: boolean; | |
fileName?: string; | |
filterable?: boolean; | |
forceProxy?: boolean; | |
proxyURL?: string; | |
} | |
interface GridFilterableMessages { | |
and?: string; | |
clear?: string; | |
filter?: string; | |
info?: string; | |
isFalse?: string; | |
isTrue?: string; | |
or?: string; | |
search?: string; | |
selectValue?: string; | |
cancel?: string; | |
operator?: string; | |
value?: string; | |
checkAll?: string; | |
} | |
interface GridFilterableOperatorsDate { | |
eq?: string; | |
neq?: string; | |
isnull?: string; | |
isnotnull?: string; | |
gte?: string; | |
gt?: string; | |
lte?: string; | |
lt?: string; | |
} | |
interface GridFilterableOperatorsEnums { | |
eq?: string; | |
neq?: string; | |
isnull?: string; | |
isnotnull?: string; | |
} | |
interface GridFilterableOperatorsNumber { | |
eq?: string; | |
neq?: string; | |
isnull?: string; | |
isnotnull?: string; | |
gte?: string; | |
gt?: string; | |
lte?: string; | |
lt?: string; | |
} | |
interface GridFilterableOperatorsString { | |
eq?: string; | |
neq?: string; | |
isnull?: string; | |
isnotnull?: string; | |
isempty?: string; | |
isnotempty?: string; | |
startswith?: string; | |
contains?: string; | |
doesnotcontain?: string; | |
endswith?: string; | |
} | |
interface GridFilterableOperators { | |
string?: GridFilterableOperatorsString; | |
number?: GridFilterableOperatorsNumber; | |
date?: GridFilterableOperatorsDate; | |
enums?: GridFilterableOperatorsEnums; | |
} | |
interface GridFilterable { | |
extra?: boolean; | |
messages?: GridFilterableMessages; | |
operators?: GridFilterableOperators; | |
mode?: string; | |
} | |
interface GridGroupableMessages { | |
empty?: string; | |
} | |
interface GridGroupable { | |
enabled?: boolean; | |
showFooter?: boolean; | |
messages?: GridGroupableMessages; | |
} | |
interface GridMessagesCommands { | |
cancel?: string; | |
canceledit?: string; | |
create?: string; | |
destroy?: string; | |
edit?: string; | |
excel?: string; | |
save?: string; | |
update?: string; | |
} | |
interface GridMessages { | |
commands?: GridMessagesCommands; | |
noRecords?: string; | |
} | |
interface GridNoRecords { | |
template?: string|Function; | |
} | |
interface GridPageableMessages { | |
display?: string; | |
empty?: string; | |
page?: string; | |
of?: string; | |
itemsPerPage?: string; | |
first?: string; | |
last?: string; | |
next?: string; | |
previous?: string; | |
refresh?: string; | |
morePages?: string; | |
} | |
interface GridPageable { | |
pageSize?: number; | |
previousNext?: boolean; | |
numeric?: boolean; | |
buttonCount?: number; | |
input?: boolean; | |
pageSizes?: boolean|any; | |
refresh?: boolean; | |
info?: boolean; | |
messages?: GridPageableMessages; | |
} | |
interface GridPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface GridPdf { | |
allPages?: boolean; | |
author?: string; | |
avoidLinks?: boolean|string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
forceProxy?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: GridPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
} | |
interface GridScrollable { | |
virtual?: boolean; | |
} | |
interface GridSortable { | |
allowUnsort?: boolean; | |
mode?: string; | |
} | |
interface GridToolbarItem { | |
name?: string; | |
template?: string|Function; | |
text?: string; | |
} | |
interface GridOptions { | |
name?: string; | |
allowCopy?: GridAllowCopy; | |
altRowTemplate?: string|Function; | |
autoBind?: boolean; | |
columnResizeHandleWidth?: number; | |
columns?: GridColumn[]; | |
columnMenu?: GridColumnMenu; | |
dataSource?: any|any|kendo.data.DataSource; | |
detailTemplate?: string|Function; | |
editable?: GridEditable; | |
excel?: GridExcel; | |
filterable?: GridFilterable; | |
groupable?: GridGroupable; | |
height?: number|string; | |
messages?: GridMessages; | |
mobile?: boolean|string; | |
navigatable?: boolean; | |
noRecords?: GridNoRecords; | |
pageable?: GridPageable; | |
pdf?: GridPdf; | |
reorderable?: boolean; | |
resizable?: boolean; | |
rowTemplate?: string|Function; | |
scrollable?: GridScrollable; | |
selectable?: boolean|string; | |
sortable?: GridSortable; | |
toolbar?: GridToolbarItem[] | any; | |
cancel?(e: GridCancelEvent): void; | |
change?(e: GridChangeEvent): void; | |
columnHide?(e: GridColumnHideEvent): void; | |
columnMenuInit?(e: GridColumnMenuInitEvent): void; | |
columnReorder?(e: GridColumnReorderEvent): void; | |
columnResize?(e: GridColumnResizeEvent): void; | |
columnShow?(e: GridColumnShowEvent): void; | |
dataBinding?(e: GridDataBindingEvent): void; | |
dataBound?(e: GridDataBoundEvent): void; | |
detailCollapse?(e: GridDetailCollapseEvent): void; | |
detailExpand?(e: GridDetailExpandEvent): void; | |
detailInit?(e: GridDetailInitEvent): void; | |
edit?(e: GridEditEvent): void; | |
excelExport?(e: GridExcelExportEvent): void; | |
pdfExport?(e: GridPdfExportEvent): void; | |
filterMenuInit?(e: GridFilterMenuInitEvent): void; | |
remove?(e: GridRemoveEvent): void; | |
save?(e: GridSaveEvent): void; | |
saveChanges?(e: GridSaveChangesEvent): void; | |
columnLock?(e: GridColumnLockEvent): void; | |
columnUnlock?(e: GridColumnUnlockEvent): void; | |
navigate?(e: GridNavigateEvent): void; | |
} | |
interface GridEvent { | |
sender: Grid; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface GridCancelEvent extends GridEvent { | |
container?: JQuery; | |
model?: kendo.data.Model; | |
} | |
interface GridChangeEvent extends GridEvent { | |
} | |
interface GridColumnHideEvent extends GridEvent { | |
column?: any; | |
} | |
interface GridColumnMenuInitEvent extends GridEvent { | |
container?: JQuery; | |
field?: string; | |
} | |
interface GridColumnReorderEvent extends GridEvent { | |
column?: any; | |
newIndex?: number; | |
oldIndex?: number; | |
} | |
interface GridColumnResizeEvent extends GridEvent { | |
column?: any; | |
newWidth?: number; | |
oldWidth?: number; | |
} | |
interface GridColumnShowEvent extends GridEvent { | |
column?: any; | |
} | |
interface GridDataBindingEvent extends GridEvent { | |
action?: string; | |
index?: number; | |
items?: any; | |
} | |
interface GridDataBoundEvent extends GridEvent { | |
} | |
interface GridDetailCollapseEvent extends GridEvent { | |
detailRow?: JQuery; | |
masterRow?: JQuery; | |
} | |
interface GridDetailExpandEvent extends GridEvent { | |
detailRow?: JQuery; | |
masterRow?: JQuery; | |
} | |
interface GridDetailInitEvent extends GridEvent { | |
data?: kendo.data.ObservableObject; | |
detailCell?: JQuery; | |
detailRow?: JQuery; | |
masterRow?: JQuery; | |
} | |
interface GridEditEvent extends GridEvent { | |
container?: JQuery; | |
model?: kendo.data.Model; | |
} | |
interface GridExcelExportEvent extends GridEvent { | |
data?: any; | |
workbook?: kendo.ooxml.Workbook; | |
} | |
interface GridPdfExportEvent extends GridEvent { | |
promise?: JQueryPromise<any>; | |
} | |
interface GridFilterMenuInitEvent extends GridEvent { | |
container?: JQuery; | |
field?: string; | |
} | |
interface GridRemoveEvent extends GridEvent { | |
model?: kendo.data.Model; | |
row?: JQuery; | |
} | |
interface GridSaveEvent extends GridEvent { | |
model?: kendo.data.Model; | |
container?: JQuery; | |
values?: any; | |
} | |
interface GridSaveChangesEvent extends GridEvent { | |
} | |
interface GridColumnLockEvent extends GridEvent { | |
column?: any; | |
} | |
interface GridColumnUnlockEvent extends GridEvent { | |
column?: any; | |
} | |
interface GridNavigateEvent extends GridEvent { | |
element?: JQuery; | |
} | |
class ListView extends kendo.ui.Widget { | |
static fn: ListView; | |
options: ListViewOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ListView; | |
constructor(element: Element, options?: ListViewOptions); | |
add(): void; | |
cancel(): void; | |
clearSelection(): void; | |
dataItem(row: string): kendo.data.ObservableObject; | |
dataItem(row: Element): kendo.data.ObservableObject; | |
dataItem(row: JQuery): kendo.data.ObservableObject; | |
dataItems(): void; | |
destroy(): void; | |
edit(item: JQuery): void; | |
items(): any; | |
refresh(): void; | |
remove(item: any): void; | |
save(): void; | |
select(): JQuery; | |
select(items: JQuery): void; | |
select(items: any): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
} | |
interface ListViewOptions { | |
name?: string; | |
autoBind?: boolean; | |
dataSource?: any|any|kendo.data.DataSource; | |
editTemplate?: Function; | |
navigatable?: boolean; | |
selectable?: boolean|string; | |
template?: Function; | |
altTemplate?: Function; | |
cancel?(e: ListViewCancelEvent): void; | |
change?(e: ListViewEvent): void; | |
dataBound?(e: ListViewEvent): void; | |
dataBinding?(e: ListViewEvent): void; | |
edit?(e: ListViewEditEvent): void; | |
remove?(e: ListViewRemoveEvent): void; | |
save?(e: ListViewSaveEvent): void; | |
} | |
interface ListViewEvent { | |
sender: ListView; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ListViewCancelEvent extends ListViewEvent { | |
container?: JQuery; | |
model?: kendo.data.Model; | |
} | |
interface ListViewEditEvent extends ListViewEvent { | |
item?: JQuery; | |
model?: kendo.data.Model; | |
} | |
interface ListViewRemoveEvent extends ListViewEvent { | |
item?: JQuery; | |
model?: kendo.data.Model; | |
} | |
interface ListViewSaveEvent extends ListViewEvent { | |
model?: kendo.data.Model; | |
item?: JQuery; | |
} | |
class MaskedTextBox extends kendo.ui.Widget { | |
static fn: MaskedTextBox; | |
options: MaskedTextBoxOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): MaskedTextBox; | |
constructor(element: Element, options?: MaskedTextBoxOptions); | |
destroy(): void; | |
enable(enable: boolean): void; | |
readonly(readonly: boolean): void; | |
raw(): string; | |
value(): string; | |
value(value: string): void; | |
} | |
interface MaskedTextBoxOptions { | |
name?: string; | |
clearPromptChar?: boolean; | |
culture?: string; | |
mask?: string; | |
promptChar?: string; | |
rules?: any; | |
unmaskOnPost?: boolean; | |
value?: string; | |
change?(e: MaskedTextBoxChangeEvent): void; | |
} | |
interface MaskedTextBoxEvent { | |
sender: MaskedTextBox; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface MaskedTextBoxChangeEvent extends MaskedTextBoxEvent { | |
} | |
class Menu extends kendo.ui.Widget { | |
static fn: Menu; | |
options: MenuOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Menu; | |
constructor(element: Element, options?: MenuOptions); | |
append(item: any, referenceItem: string): kendo.ui.Menu; | |
append(item: any, referenceItem: JQuery): kendo.ui.Menu; | |
close(element: string): kendo.ui.Menu; | |
close(element: Element): kendo.ui.Menu; | |
close(element: JQuery): kendo.ui.Menu; | |
destroy(): void; | |
enable(element: string, enable: boolean): kendo.ui.Menu; | |
enable(element: Element, enable: boolean): kendo.ui.Menu; | |
enable(element: JQuery, enable: boolean): kendo.ui.Menu; | |
insertAfter(item: any, referenceItem: string): kendo.ui.Menu; | |
insertAfter(item: any, referenceItem: Element): kendo.ui.Menu; | |
insertAfter(item: any, referenceItem: JQuery): kendo.ui.Menu; | |
insertBefore(item: any, referenceItem: string): kendo.ui.Menu; | |
insertBefore(item: any, referenceItem: Element): kendo.ui.Menu; | |
insertBefore(item: any, referenceItem: JQuery): kendo.ui.Menu; | |
open(element: string): kendo.ui.Menu; | |
open(element: Element): kendo.ui.Menu; | |
open(element: JQuery): kendo.ui.Menu; | |
remove(element: string): kendo.ui.Menu; | |
remove(element: Element): kendo.ui.Menu; | |
remove(element: JQuery): kendo.ui.Menu; | |
} | |
interface MenuAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface MenuAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface MenuAnimation { | |
close?: MenuAnimationClose; | |
open?: MenuAnimationOpen; | |
} | |
interface MenuOptions { | |
name?: string; | |
animation?: MenuAnimation; | |
closeOnClick?: boolean; | |
dataSource?: any|any; | |
direction?: string; | |
hoverDelay?: number; | |
openOnClick?: boolean; | |
orientation?: string; | |
popupCollision?: string; | |
close?(e: MenuCloseEvent): void; | |
open?(e: MenuOpenEvent): void; | |
activate?(e: MenuActivateEvent): void; | |
deactivate?(e: MenuDeactivateEvent): void; | |
select?(e: MenuSelectEvent): void; | |
} | |
interface MenuEvent { | |
sender: Menu; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface MenuCloseEvent extends MenuEvent { | |
item?: HTMLElement; | |
} | |
interface MenuOpenEvent extends MenuEvent { | |
item?: HTMLElement; | |
} | |
interface MenuActivateEvent extends MenuEvent { | |
item?: HTMLElement; | |
} | |
interface MenuDeactivateEvent extends MenuEvent { | |
item?: HTMLElement; | |
} | |
interface MenuSelectEvent extends MenuEvent { | |
item?: HTMLElement; | |
} | |
class MultiSelect extends kendo.ui.Widget { | |
static fn: MultiSelect; | |
options: MultiSelectOptions; | |
dataSource: kendo.data.DataSource; | |
input: JQuery; | |
list: JQuery; | |
ul: JQuery; | |
tagList: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): MultiSelect; | |
constructor(element: Element, options?: MultiSelectOptions); | |
close(): void; | |
dataItems(): any; | |
destroy(): void; | |
enable(enable: boolean): void; | |
focus(): void; | |
items(): any; | |
open(): void; | |
readonly(readonly: boolean): void; | |
refresh(): void; | |
search(word: string): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
toggle(toggle: boolean): void; | |
value(): any; | |
value(value: any): void; | |
value(value: string): void; | |
} | |
interface MultiSelectAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface MultiSelectAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface MultiSelectAnimation { | |
close?: MultiSelectAnimationClose; | |
open?: MultiSelectAnimationOpen; | |
} | |
interface MultiSelectPopup { | |
appendTo?: string; | |
origin?: string; | |
position?: string; | |
} | |
interface MultiSelectVirtual { | |
itemHeight?: number; | |
valueMapper?: Function; | |
} | |
interface MultiSelectOptions { | |
name?: string; | |
animation?: MultiSelectAnimation; | |
autoBind?: boolean; | |
autoClose?: boolean; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataTextField?: string; | |
dataValueField?: string; | |
delay?: number; | |
enable?: boolean; | |
filter?: string; | |
fixedGroupTemplate?: string|Function; | |
groupTemplate?: string|Function; | |
height?: number; | |
highlightFirst?: boolean; | |
ignoreCase?: boolean; | |
minLength?: number; | |
maxSelectedItems?: number; | |
placeholder?: string; | |
popup?: MultiSelectPopup; | |
headerTemplate?: string|Function; | |
itemTemplate?: string|Function; | |
tagTemplate?: string; | |
tagMode?: string; | |
value?: any; | |
valuePrimitive?: boolean; | |
virtual?: MultiSelectVirtual; | |
change?(e: MultiSelectChangeEvent): void; | |
close?(e: MultiSelectCloseEvent): void; | |
dataBound?(e: MultiSelectDataBoundEvent): void; | |
filtering?(e: MultiSelectFilteringEvent): void; | |
open?(e: MultiSelectOpenEvent): void; | |
select?(e: MultiSelectSelectEvent): void; | |
} | |
interface MultiSelectEvent { | |
sender: MultiSelect; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface MultiSelectChangeEvent extends MultiSelectEvent { | |
} | |
interface MultiSelectCloseEvent extends MultiSelectEvent { | |
} | |
interface MultiSelectDataBoundEvent extends MultiSelectEvent { | |
} | |
interface MultiSelectFilteringEvent extends MultiSelectEvent { | |
filter?: any; | |
} | |
interface MultiSelectOpenEvent extends MultiSelectEvent { | |
} | |
interface MultiSelectSelectEvent extends MultiSelectEvent { | |
item?: JQuery; | |
} | |
class Notification extends kendo.ui.Widget { | |
static fn: Notification; | |
options: NotificationOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Notification; | |
constructor(element: Element, options?: NotificationOptions); | |
error(data: any): void; | |
error(data: string): void; | |
error(data: Function): void; | |
getNotifications(): JQuery; | |
hide(): void; | |
info(data: any): void; | |
info(data: string): void; | |
info(data: Function): void; | |
show(data: any, type: string): void; | |
show(data: string, type: string): void; | |
show(data: Function, type: string): void; | |
showText(data: any, type: string): void; | |
showText(data: string, type: string): void; | |
showText(data: Function, type: string): void; | |
success(data: any): void; | |
success(data: string): void; | |
success(data: Function): void; | |
warning(data: any): void; | |
warning(data: string): void; | |
warning(data: Function): void; | |
} | |
interface NotificationPosition { | |
bottom?: number; | |
left?: number; | |
pinned?: boolean; | |
right?: number; | |
top?: number; | |
} | |
interface NotificationTemplate { | |
type?: string; | |
template?: string; | |
} | |
interface NotificationOptions { | |
name?: string; | |
allowHideAfter?: number; | |
animation?: any|boolean; | |
appendTo?: string|JQuery; | |
autoHideAfter?: number; | |
button?: boolean; | |
height?: number|string; | |
hideOnClick?: boolean; | |
position?: NotificationPosition; | |
stacking?: string; | |
templates?: NotificationTemplate[]; | |
width?: number|string; | |
hide?(e: NotificationHideEvent): void; | |
show?(e: NotificationShowEvent): void; | |
} | |
interface NotificationEvent { | |
sender: Notification; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface NotificationHideEvent extends NotificationEvent { | |
element?: JQuery; | |
} | |
interface NotificationShowEvent extends NotificationEvent { | |
element?: JQuery; | |
} | |
class NumericTextBox extends kendo.ui.Widget { | |
static fn: NumericTextBox; | |
options: NumericTextBoxOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): NumericTextBox; | |
constructor(element: Element, options?: NumericTextBoxOptions); | |
destroy(): void; | |
enable(enable: boolean): void; | |
readonly(readonly: boolean): void; | |
focus(): void; | |
max(): number; | |
max(value: number): void; | |
max(value: string): void; | |
min(): number; | |
min(value: number): void; | |
min(value: string): void; | |
step(): number; | |
step(value: number): void; | |
step(value: string): void; | |
value(): number; | |
value(value: number): void; | |
value(value: string): void; | |
} | |
interface NumericTextBoxOptions { | |
name?: string; | |
culture?: string; | |
decimals?: number; | |
downArrowText?: string; | |
format?: string; | |
max?: number; | |
min?: number; | |
placeholder?: string; | |
spinners?: boolean; | |
step?: number; | |
upArrowText?: string; | |
value?: number; | |
change?(e: NumericTextBoxChangeEvent): void; | |
spin?(e: NumericTextBoxSpinEvent): void; | |
} | |
interface NumericTextBoxEvent { | |
sender: NumericTextBox; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface NumericTextBoxChangeEvent extends NumericTextBoxEvent { | |
} | |
interface NumericTextBoxSpinEvent extends NumericTextBoxEvent { | |
} | |
class Pager extends kendo.ui.Widget { | |
static fn: Pager; | |
options: PagerOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Pager; | |
constructor(element: Element, options?: PagerOptions); | |
totalPages(): number; | |
pageSize(): number; | |
page(): number; | |
page(page: number): void; | |
refresh(): void; | |
destroy(): void; | |
} | |
interface PagerMessages { | |
display?: string; | |
empty?: string; | |
allPages?: string; | |
page?: string; | |
of?: string; | |
itemsPerPage?: string; | |
first?: string; | |
previous?: string; | |
next?: string; | |
last?: string; | |
refresh?: string; | |
} | |
interface PagerOptions { | |
name?: string; | |
autoBind?: boolean; | |
buttonCount?: number; | |
dataSource?: any|kendo.data.DataSource; | |
selectTemplate?: string; | |
linkTemplate?: string; | |
info?: boolean; | |
input?: boolean; | |
numeric?: boolean; | |
pageSizes?: boolean|any; | |
previousNext?: boolean; | |
refresh?: boolean; | |
messages?: PagerMessages; | |
change?(e: PagerChangeEvent): void; | |
} | |
interface PagerEvent { | |
sender: Pager; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface PagerChangeEvent extends PagerEvent { | |
} | |
class PanelBar extends kendo.ui.Widget { | |
static fn: PanelBar; | |
options: PanelBarOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): PanelBar; | |
constructor(element: Element, options?: PanelBarOptions); | |
append(item: string, referenceItem: string): kendo.ui.PanelBar; | |
append(item: string, referenceItem: Element): kendo.ui.PanelBar; | |
append(item: string, referenceItem: JQuery): kendo.ui.PanelBar; | |
append(item: Element, referenceItem: string): kendo.ui.PanelBar; | |
append(item: Element, referenceItem: Element): kendo.ui.PanelBar; | |
append(item: Element, referenceItem: JQuery): kendo.ui.PanelBar; | |
append(item: JQuery, referenceItem: string): kendo.ui.PanelBar; | |
append(item: JQuery, referenceItem: Element): kendo.ui.PanelBar; | |
append(item: JQuery, referenceItem: JQuery): kendo.ui.PanelBar; | |
append(item: any, referenceItem: string): kendo.ui.PanelBar; | |
append(item: any, referenceItem: Element): kendo.ui.PanelBar; | |
append(item: any, referenceItem: JQuery): kendo.ui.PanelBar; | |
clearSelection(): void; | |
collapse(element: string, useAnimation: boolean): kendo.ui.PanelBar; | |
collapse(element: Element, useAnimation: boolean): kendo.ui.PanelBar; | |
collapse(element: JQuery, useAnimation: boolean): kendo.ui.PanelBar; | |
destroy(): void; | |
enable(element: string, enable: boolean): void; | |
enable(element: Element, enable: boolean): void; | |
enable(element: JQuery, enable: boolean): void; | |
expand(element: string, useAnimation: boolean): kendo.ui.PanelBar; | |
expand(element: Element, useAnimation: boolean): kendo.ui.PanelBar; | |
expand(element: JQuery, useAnimation: boolean): kendo.ui.PanelBar; | |
insertAfter(item: string, referenceItem: string): void; | |
insertAfter(item: string, referenceItem: Element): void; | |
insertAfter(item: string, referenceItem: JQuery): void; | |
insertAfter(item: Element, referenceItem: string): void; | |
insertAfter(item: Element, referenceItem: Element): void; | |
insertAfter(item: Element, referenceItem: JQuery): void; | |
insertAfter(item: JQuery, referenceItem: string): void; | |
insertAfter(item: JQuery, referenceItem: Element): void; | |
insertAfter(item: JQuery, referenceItem: JQuery): void; | |
insertAfter(item: any, referenceItem: string): void; | |
insertAfter(item: any, referenceItem: Element): void; | |
insertAfter(item: any, referenceItem: JQuery): void; | |
insertBefore(item: string, referenceItem: string): kendo.ui.PanelBar; | |
insertBefore(item: string, referenceItem: Element): kendo.ui.PanelBar; | |
insertBefore(item: string, referenceItem: JQuery): kendo.ui.PanelBar; | |
insertBefore(item: Element, referenceItem: string): kendo.ui.PanelBar; | |
insertBefore(item: Element, referenceItem: Element): kendo.ui.PanelBar; | |
insertBefore(item: Element, referenceItem: JQuery): kendo.ui.PanelBar; | |
insertBefore(item: JQuery, referenceItem: string): kendo.ui.PanelBar; | |
insertBefore(item: JQuery, referenceItem: Element): kendo.ui.PanelBar; | |
insertBefore(item: JQuery, referenceItem: JQuery): kendo.ui.PanelBar; | |
insertBefore(item: any, referenceItem: string): kendo.ui.PanelBar; | |
insertBefore(item: any, referenceItem: Element): kendo.ui.PanelBar; | |
insertBefore(item: any, referenceItem: JQuery): kendo.ui.PanelBar; | |
reload(element: string): void; | |
reload(element: Element): void; | |
reload(element: JQuery): void; | |
remove(element: string): void; | |
remove(element: Element): void; | |
remove(element: JQuery): void; | |
select(): JQuery; | |
select(element?: string): void; | |
select(element?: Element): void; | |
select(element?: JQuery): void; | |
} | |
interface PanelBarAnimationCollapse { | |
duration?: number; | |
effects?: string; | |
} | |
interface PanelBarAnimationExpand { | |
duration?: number; | |
effects?: string; | |
} | |
interface PanelBarAnimation { | |
collapse?: PanelBarAnimationCollapse; | |
expand?: PanelBarAnimationExpand; | |
} | |
interface PanelBarOptions { | |
name?: string; | |
animation?: PanelBarAnimation; | |
contentUrls?: any; | |
dataSource?: any|any; | |
expandMode?: string; | |
activate?(e: PanelBarActivateEvent): void; | |
collapse?(e: PanelBarCollapseEvent): void; | |
contentLoad?(e: PanelBarContentLoadEvent): void; | |
error?(e: PanelBarErrorEvent): void; | |
expand?(e: PanelBarExpandEvent): void; | |
select?(e: PanelBarSelectEvent): void; | |
} | |
interface PanelBarEvent { | |
sender: PanelBar; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface PanelBarActivateEvent extends PanelBarEvent { | |
item?: Element; | |
} | |
interface PanelBarCollapseEvent extends PanelBarEvent { | |
item?: Element; | |
} | |
interface PanelBarContentLoadEvent extends PanelBarEvent { | |
item?: Element; | |
contentElement?: Element; | |
} | |
interface PanelBarErrorEvent extends PanelBarEvent { | |
xhr?: JQueryXHR; | |
status?: string; | |
} | |
interface PanelBarExpandEvent extends PanelBarEvent { | |
item?: Element; | |
} | |
interface PanelBarSelectEvent extends PanelBarEvent { | |
item?: Element; | |
} | |
class PivotConfigurator extends kendo.ui.Widget { | |
static fn: PivotConfigurator; | |
options: PivotConfiguratorOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): PivotConfigurator; | |
constructor(element: Element, options?: PivotConfiguratorOptions); | |
destroy(): void; | |
refresh(): void; | |
setDataSource(dataSource: kendo.data.PivotDataSource): void; | |
} | |
interface PivotConfiguratorMessagesFieldMenuOperators { | |
contains?: string; | |
doesnotcontain?: string; | |
startswith?: string; | |
endswith?: string; | |
eq?: string; | |
neq?: string; | |
} | |
interface PivotConfiguratorMessagesFieldMenu { | |
info?: string; | |
sortAscending?: string; | |
sortDescending?: string; | |
filterFields?: string; | |
filter?: string; | |
include?: string; | |
title?: string; | |
clear?: string; | |
ok?: string; | |
cancel?: string; | |
operators?: PivotConfiguratorMessagesFieldMenuOperators; | |
} | |
interface PivotConfiguratorMessages { | |
measures?: string; | |
columns?: string; | |
rows?: string; | |
measuresLabel?: string; | |
rowsLabel?: string; | |
columnsLabel?: string; | |
fieldsLabel?: string; | |
fieldMenu?: PivotConfiguratorMessagesFieldMenu; | |
} | |
interface PivotConfiguratorSortable { | |
allowUnsort?: boolean; | |
} | |
interface PivotConfiguratorOptions { | |
name?: string; | |
dataSource?: any|kendo.data.PivotDataSource; | |
filterable?: boolean; | |
sortable?: PivotConfiguratorSortable; | |
height?: number|string; | |
messages?: PivotConfiguratorMessages; | |
} | |
interface PivotConfiguratorEvent { | |
sender: PivotConfigurator; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class PivotGrid extends kendo.ui.Widget { | |
static fn: PivotGrid; | |
options: PivotGridOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): PivotGrid; | |
constructor(element: Element, options?: PivotGridOptions); | |
cellInfo(columnIndex: number, rowIndex: number): any; | |
cellInfoByElement(cell: string): any; | |
cellInfoByElement(cell: Element): any; | |
cellInfoByElement(cell: JQuery): any; | |
destroy(): void; | |
refresh(): void; | |
setDataSource(dataSource: kendo.data.PivotDataSource): void; | |
saveAsExcel(): void; | |
saveAsPDF(): JQueryPromise<any>; | |
} | |
interface PivotGridExcel { | |
fileName?: string; | |
filterable?: boolean; | |
forceProxy?: boolean; | |
proxyURL?: string; | |
} | |
interface PivotGridMessagesFieldMenuOperators { | |
contains?: string; | |
doesnotcontain?: string; | |
startswith?: string; | |
endswith?: string; | |
eq?: string; | |
neq?: string; | |
} | |
interface PivotGridMessagesFieldMenu { | |
info?: string; | |
sortAscending?: string; | |
sortDescending?: string; | |
filterFields?: string; | |
filter?: string; | |
include?: string; | |
title?: string; | |
clear?: string; | |
ok?: string; | |
cancel?: string; | |
operators?: PivotGridMessagesFieldMenuOperators; | |
} | |
interface PivotGridMessages { | |
measureFields?: string; | |
columnFields?: string; | |
rowFields?: string; | |
fieldMenu?: PivotGridMessagesFieldMenu; | |
} | |
interface PivotGridPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface PivotGridPdf { | |
author?: string; | |
avoidLinks?: boolean|string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
forceProxy?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: PivotGridPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
} | |
interface PivotGridSortable { | |
allowUnsort?: boolean; | |
} | |
interface PivotGridOptions { | |
name?: string; | |
dataSource?: any|kendo.data.PivotDataSource; | |
autoBind?: boolean; | |
reorderable?: boolean; | |
excel?: PivotGridExcel; | |
pdf?: PivotGridPdf; | |
filterable?: boolean; | |
sortable?: PivotGridSortable; | |
columnWidth?: number; | |
height?: number|string; | |
columnHeaderTemplate?: string|Function; | |
dataCellTemplate?: string|Function; | |
kpiStatusTemplate?: string|Function; | |
kpiTrendTemplate?: string|Function; | |
rowHeaderTemplate?: string|Function; | |
messages?: PivotGridMessages; | |
dataBinding?(e: PivotGridDataBindingEvent): void; | |
dataBound?(e: PivotGridDataBoundEvent): void; | |
expandMember?(e: PivotGridExpandMemberEvent): void; | |
collapseMember?(e: PivotGridCollapseMemberEvent): void; | |
excelExport?(e: PivotGridExcelExportEvent): void; | |
pdfExport?(e: PivotGridPdfExportEvent): void; | |
} | |
interface PivotGridEvent { | |
sender: PivotGrid; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface PivotGridDataBindingEvent extends PivotGridEvent { | |
} | |
interface PivotGridDataBoundEvent extends PivotGridEvent { | |
} | |
interface PivotGridExpandMemberEvent extends PivotGridEvent { | |
axis?: string; | |
path?: string; | |
} | |
interface PivotGridCollapseMemberEvent extends PivotGridEvent { | |
axis?: string; | |
path?: string; | |
} | |
interface PivotGridExcelExportEvent extends PivotGridEvent { | |
data?: any; | |
workbook?: any; | |
} | |
interface PivotGridPdfExportEvent extends PivotGridEvent { | |
promise?: JQueryPromise<any>; | |
} | |
class Popup extends kendo.ui.Widget { | |
static fn: Popup; | |
options: PopupOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Popup; | |
constructor(element: Element, options?: PopupOptions); | |
close(): void; | |
open(): void; | |
position(): void; | |
setOptions(options: any): void; | |
visible(): boolean; | |
} | |
interface PopupAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface PopupAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface PopupAnimation { | |
close?: PopupAnimationClose; | |
open?: PopupAnimationOpen; | |
} | |
interface PopupOptions { | |
name?: string; | |
adjustSize?: any; | |
animation?: PopupAnimation; | |
anchor?: string|JQuery; | |
appendTo?: string|JQuery; | |
collision?: string; | |
origin?: string; | |
position?: string; | |
activate?(e: PopupActivateEvent): void; | |
close?(e: PopupCloseEvent): void; | |
deactivate?(e: PopupDeactivateEvent): void; | |
open?(e: PopupOpenEvent): void; | |
} | |
interface PopupEvent { | |
sender: Popup; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface PopupActivateEvent extends PopupEvent { | |
} | |
interface PopupCloseEvent extends PopupEvent { | |
} | |
interface PopupDeactivateEvent extends PopupEvent { | |
} | |
interface PopupOpenEvent extends PopupEvent { | |
} | |
class ProgressBar extends kendo.ui.Widget { | |
static fn: ProgressBar; | |
options: ProgressBarOptions; | |
progressStatus: JQuery; | |
progressWrapper: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ProgressBar; | |
constructor(element: Element, options?: ProgressBarOptions); | |
enable(enable: boolean): void; | |
value(): number; | |
value(value: number): void; | |
} | |
interface ProgressBarAnimation { | |
duration?: number; | |
} | |
interface ProgressBarOptions { | |
name?: string; | |
animation?: ProgressBarAnimation; | |
chunkCount?: number; | |
enable?: boolean; | |
max?: number; | |
min?: number; | |
orientation?: string; | |
reverse?: boolean; | |
showStatus?: boolean; | |
type?: string; | |
value?: number; | |
change?(e: ProgressBarChangeEvent): void; | |
complete?(e: ProgressBarCompleteEvent): void; | |
} | |
interface ProgressBarEvent { | |
sender: ProgressBar; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ProgressBarChangeEvent extends ProgressBarEvent { | |
value?: number; | |
} | |
interface ProgressBarCompleteEvent extends ProgressBarEvent { | |
value?: number; | |
} | |
class RangeSlider extends kendo.ui.Widget { | |
static fn: RangeSlider; | |
options: RangeSliderOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): RangeSlider; | |
constructor(element: Element, options?: RangeSliderOptions); | |
destroy(): void; | |
enable(enable: boolean): void; | |
value(): any; | |
value(selectionStart: number, selectionEnd: number): void; | |
resize(): void; | |
} | |
interface RangeSliderTooltip { | |
enabled?: boolean; | |
format?: string; | |
template?: string; | |
} | |
interface RangeSliderOptions { | |
name?: string; | |
largeStep?: number; | |
max?: number; | |
min?: number; | |
orientation?: string; | |
selectionEnd?: number; | |
selectionStart?: number; | |
smallStep?: number; | |
tickPlacement?: string; | |
tooltip?: RangeSliderTooltip; | |
change?(e: RangeSliderChangeEvent): void; | |
slide?(e: RangeSliderSlideEvent): void; | |
} | |
interface RangeSliderEvent { | |
sender: RangeSlider; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface RangeSliderChangeEvent extends RangeSliderEvent { | |
value?: any; | |
} | |
interface RangeSliderSlideEvent extends RangeSliderEvent { | |
value?: any; | |
} | |
class ResponsivePanel extends kendo.ui.Widget { | |
static fn: ResponsivePanel; | |
options: ResponsivePanelOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ResponsivePanel; | |
constructor(element: Element, options?: ResponsivePanelOptions); | |
close(): void; | |
destroy(): void; | |
open(): void; | |
} | |
interface ResponsivePanelOptions { | |
name?: string; | |
autoClose?: boolean; | |
breakpoint?: number; | |
orientation?: string; | |
toggleButton?: string; | |
close?(e: ResponsivePanelEvent): void; | |
open?(e: ResponsivePanelEvent): void; | |
} | |
interface ResponsivePanelEvent { | |
sender: ResponsivePanel; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Scheduler extends kendo.ui.Widget { | |
static fn: Scheduler; | |
options: SchedulerOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Scheduler; | |
constructor(element: Element, options?: SchedulerOptions); | |
addEvent(data: any): void; | |
cancelEvent(): void; | |
data(): void; | |
date(): Date; | |
date(value?: Date): void; | |
destroy(): void; | |
editEvent(event: string): void; | |
editEvent(event: kendo.data.SchedulerEvent): void; | |
items(): any; | |
occurrenceByUid(uid: string): kendo.data.SchedulerEvent; | |
occurrencesInRange(start: Date, end: Date): any; | |
refresh(): void; | |
removeEvent(event: string): void; | |
removeEvent(event: kendo.data.SchedulerEvent): void; | |
resourcesBySlot(slot: any): any; | |
saveAsPDF(): JQueryPromise<any>; | |
saveEvent(): void; | |
select(): void; | |
select(events: any, options: any): void; | |
setDataSource(dataSource: kendo.data.SchedulerDataSource): void; | |
slotByPosition(xPosition: number, yPosition: number): any; | |
slotByElement(element: Element): any; | |
slotByElement(element: JQuery): any; | |
view(): kendo.ui.SchedulerView; | |
view(type?: string): void; | |
viewName(): string; | |
} | |
interface SchedulerCurrentTimeMarker { | |
updateInterval?: number; | |
useLocalTimezone?: boolean; | |
} | |
interface SchedulerEditable { | |
confirmation?: boolean|string; | |
create?: boolean; | |
destroy?: boolean; | |
editRecurringMode?: string; | |
move?: boolean; | |
resize?: boolean; | |
template?: string|Function; | |
update?: boolean; | |
window?: any; | |
} | |
interface SchedulerFooter { | |
command?: string|boolean; | |
} | |
interface SchedulerGroup { | |
resources?: any; | |
orientation?: string; | |
} | |
interface SchedulerMessagesEditable { | |
confirmation?: string; | |
} | |
interface SchedulerMessagesEditor { | |
allDayEvent?: string; | |
description?: string; | |
editorTitle?: string; | |
end?: string; | |
endTimezone?: string; | |
repeat?: string; | |
separateTimezones?: string; | |
start?: string; | |
startTimezone?: string; | |
timezone?: string; | |
timezoneEditorButton?: string; | |
timezoneEditorTitle?: string; | |
title?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorDaily { | |
interval?: string; | |
repeatEvery?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorEnd { | |
after?: string; | |
occurrence?: string; | |
label?: string; | |
never?: string; | |
mobileLabel?: string; | |
on?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorFrequencies { | |
daily?: string; | |
monthly?: string; | |
never?: string; | |
weekly?: string; | |
yearly?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorMonthly { | |
day?: string; | |
interval?: string; | |
repeatEvery?: string; | |
repeatOn?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorOffsetPositions { | |
first?: string; | |
second?: string; | |
third?: string; | |
fourth?: string; | |
last?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorWeekdays { | |
day?: string; | |
weekday?: string; | |
weekend?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorWeekly { | |
interval?: string; | |
repeatEvery?: string; | |
repeatOn?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditorYearly { | |
of?: string; | |
repeatEvery?: string; | |
repeatOn?: string; | |
interval?: string; | |
} | |
interface SchedulerMessagesRecurrenceEditor { | |
daily?: SchedulerMessagesRecurrenceEditorDaily; | |
end?: SchedulerMessagesRecurrenceEditorEnd; | |
frequencies?: SchedulerMessagesRecurrenceEditorFrequencies; | |
monthly?: SchedulerMessagesRecurrenceEditorMonthly; | |
offsetPositions?: SchedulerMessagesRecurrenceEditorOffsetPositions; | |
weekly?: SchedulerMessagesRecurrenceEditorWeekly; | |
weekdays?: SchedulerMessagesRecurrenceEditorWeekdays; | |
yearly?: SchedulerMessagesRecurrenceEditorYearly; | |
} | |
interface SchedulerMessagesRecurrenceMessages { | |
deleteRecurring?: string; | |
deleteWindowOccurrence?: string; | |
deleteWindowSeries?: string; | |
deleteWindowTitle?: string; | |
editRecurring?: string; | |
editWindowOccurrence?: string; | |
editWindowSeries?: string; | |
editWindowTitle?: string; | |
} | |
interface SchedulerMessagesViews { | |
day?: string; | |
week?: string; | |
month?: string; | |
agenda?: string; | |
} | |
interface SchedulerMessages { | |
allDay?: string; | |
ariaEventLabel?: string; | |
ariaSlotLabel?: string; | |
cancel?: string; | |
date?: string; | |
deleteWindowTitle?: string; | |
destroy?: string; | |
event?: string; | |
defaultRowText?: string; | |
pdf?: string; | |
save?: string; | |
showFullDay?: string; | |
showWorkDay?: string; | |
time?: string; | |
today?: string; | |
editable?: SchedulerMessagesEditable; | |
editor?: SchedulerMessagesEditor; | |
recurrenceEditor?: SchedulerMessagesRecurrenceEditor; | |
recurrenceMessages?: SchedulerMessagesRecurrenceMessages; | |
views?: SchedulerMessagesViews; | |
} | |
interface SchedulerPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface SchedulerPdf { | |
author?: string; | |
avoidLinks?: boolean|string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
forceProxy?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: SchedulerPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
} | |
interface SchedulerResource { | |
dataColorField?: string; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataTextField?: string; | |
dataValueField?: string; | |
field?: string; | |
multiple?: boolean; | |
name?: string; | |
title?: string; | |
valuePrimitive?: boolean; | |
} | |
interface SchedulerToolbarItem { | |
name?: string; | |
} | |
interface SchedulerViewEditable { | |
create?: boolean; | |
destroy?: boolean; | |
update?: boolean; | |
} | |
interface SchedulerViewGroup { | |
orientation?: string; | |
} | |
interface SchedulerView { | |
allDayEventTemplate?: string|Function; | |
allDaySlot?: boolean; | |
allDaySlotTemplate?: string|Function; | |
columnWidth?: number; | |
dateHeaderTemplate?: string|Function; | |
dayTemplate?: string|Function; | |
editable?: SchedulerViewEditable; | |
endTime?: Date; | |
eventHeight?: number; | |
eventTemplate?: string|Function; | |
eventTimeTemplate?: string|Function; | |
group?: SchedulerViewGroup; | |
majorTick?: number; | |
majorTimeHeaderTemplate?: string|Function; | |
minorTickCount?: number; | |
minorTimeHeaderTemplate?: string|Function; | |
selected?: boolean; | |
selectedDateFormat?: string; | |
showWorkHours?: boolean; | |
slotTemplate?: string|Function; | |
startTime?: Date; | |
title?: string; | |
type?: string; | |
workWeekStart?: number; | |
workWeekEnd?: number; | |
} | |
interface SchedulerSelectOptions { | |
events?: any; | |
resources?: any; | |
start?: Date; | |
end?: Date; | |
isAllDay?: boolean; | |
} | |
interface SchedulerOptions { | |
name?: string; | |
allDayEventTemplate?: string|Function; | |
allDaySlot?: boolean; | |
autoBind?: boolean; | |
currentTimeMarker?: SchedulerCurrentTimeMarker; | |
dataSource?: any|any|kendo.data.SchedulerDataSource; | |
date?: Date; | |
dateHeaderTemplate?: string|Function; | |
editable?: SchedulerEditable; | |
endTime?: Date; | |
eventTemplate?: string|Function; | |
footer?: SchedulerFooter; | |
group?: SchedulerGroup; | |
height?: number|string; | |
majorTick?: number; | |
majorTimeHeaderTemplate?: string|Function; | |
max?: Date; | |
messages?: SchedulerMessages; | |
min?: Date; | |
minorTickCount?: number; | |
minorTimeHeaderTemplate?: string|Function; | |
mobile?: boolean|string; | |
pdf?: SchedulerPdf; | |
resources?: SchedulerResource[]; | |
selectable?: boolean; | |
showWorkHours?: boolean; | |
snap?: boolean; | |
startTime?: Date; | |
timezone?: string; | |
toolbar?: SchedulerToolbarItem[]; | |
views?: SchedulerView[]; | |
groupHeaderTemplate?: string|Function; | |
width?: number|string; | |
workDayStart?: Date; | |
workDayEnd?: Date; | |
workWeekStart?: number; | |
workWeekEnd?: number; | |
add?(e: SchedulerAddEvent): void; | |
cancel?(e: SchedulerCancelEvent): void; | |
change?(e: SchedulerChangeEvent): void; | |
dataBinding?(e: SchedulerDataBindingEvent): void; | |
dataBound?(e: SchedulerDataBoundEvent): void; | |
edit?(e: SchedulerEditEvent): void; | |
moveStart?(e: SchedulerMoveStartEvent): void; | |
move?(e: SchedulerMoveEvent): void; | |
moveEnd?(e: SchedulerMoveEndEvent): void; | |
navigate?(e: SchedulerNavigateEvent): void; | |
pdfExport?(e: SchedulerPdfExportEvent): void; | |
remove?(e: SchedulerRemoveEvent): void; | |
resizeStart?(e: SchedulerResizeStartEvent): void; | |
resize?(e: SchedulerResizeEvent): void; | |
resizeEnd?(e: SchedulerResizeEndEvent): void; | |
save?(e: SchedulerSaveEvent): void; | |
} | |
interface SchedulerEvent { | |
sender: Scheduler; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SchedulerAddEvent extends SchedulerEvent { | |
event?: any; | |
} | |
interface SchedulerCancelEvent extends SchedulerEvent { | |
container?: JQuery; | |
event?: kendo.data.SchedulerEvent; | |
} | |
interface SchedulerChangeEvent extends SchedulerEvent { | |
start?: Date; | |
end?: Date; | |
events?: any; | |
slots?: any; | |
resources?: any; | |
} | |
interface SchedulerDataBindingEvent extends SchedulerEvent { | |
} | |
interface SchedulerDataBoundEvent extends SchedulerEvent { | |
} | |
interface SchedulerEditEvent extends SchedulerEvent { | |
container?: JQuery; | |
event?: kendo.data.SchedulerEvent; | |
} | |
interface SchedulerMoveStartEvent extends SchedulerEvent { | |
event?: kendo.data.SchedulerEvent; | |
} | |
interface SchedulerMoveEvent extends SchedulerEvent { | |
event?: kendo.data.SchedulerEvent; | |
slot?: any; | |
} | |
interface SchedulerMoveEndEvent extends SchedulerEvent { | |
start?: Date; | |
end?: Date; | |
event?: kendo.data.SchedulerEvent; | |
slot?: any; | |
resources?: any; | |
} | |
interface SchedulerNavigateEvent extends SchedulerEvent { | |
action?: string; | |
date?: Date; | |
view?: string; | |
} | |
interface SchedulerPdfExportEvent extends SchedulerEvent { | |
promise?: JQueryPromise<any>; | |
} | |
interface SchedulerRemoveEvent extends SchedulerEvent { | |
event?: kendo.data.SchedulerEvent; | |
} | |
interface SchedulerResizeStartEvent extends SchedulerEvent { | |
event?: kendo.data.SchedulerEvent; | |
} | |
interface SchedulerResizeEvent extends SchedulerEvent { | |
event?: kendo.data.SchedulerEvent; | |
slot?: any; | |
} | |
interface SchedulerResizeEndEvent extends SchedulerEvent { | |
event?: kendo.data.SchedulerEvent; | |
slot?: any; | |
} | |
interface SchedulerSaveEvent extends SchedulerEvent { | |
container?: JQuery; | |
event?: kendo.data.SchedulerEvent; | |
} | |
class Slider extends kendo.ui.Widget { | |
static fn: Slider; | |
options: SliderOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Slider; | |
constructor(element: Element, options?: SliderOptions); | |
destroy(): void; | |
enable(enable: boolean): void; | |
value(): number; | |
value(value: number): void; | |
resize(): void; | |
} | |
interface SliderTooltip { | |
enabled?: boolean; | |
format?: string; | |
template?: string; | |
} | |
interface SliderOptions { | |
name?: string; | |
decreaseButtonTitle?: string; | |
increaseButtonTitle?: string; | |
largeStep?: number; | |
max?: number; | |
min?: number; | |
orientation?: string; | |
showButtons?: boolean; | |
smallStep?: number; | |
tickPlacement?: string; | |
tooltip?: SliderTooltip; | |
value?: number; | |
change?(e: SliderChangeEvent): void; | |
slide?(e: SliderSlideEvent): void; | |
} | |
interface SliderEvent { | |
sender: Slider; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SliderChangeEvent extends SliderEvent { | |
value?: number; | |
} | |
interface SliderSlideEvent extends SliderEvent { | |
value?: number; | |
} | |
class Sortable extends kendo.ui.Widget { | |
static fn: Sortable; | |
options: SortableOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Sortable; | |
constructor(element: Element, options?: SortableOptions); | |
indexOf(element: JQuery): number; | |
items(): JQuery; | |
} | |
interface SortableCursorOffset { | |
left?: number; | |
top?: number; | |
} | |
interface SortableOptions { | |
name?: string; | |
axis?: string; | |
autoScroll?: boolean; | |
container?: string|JQuery; | |
connectWith?: string; | |
cursor?: string; | |
cursorOffset?: SortableCursorOffset; | |
disabled?: string; | |
filter?: string; | |
handler?: string; | |
hint?: Function|string|JQuery; | |
holdToDrag?: boolean; | |
ignore?: string; | |
placeholder?: Function|string|JQuery; | |
start?(e: SortableStartEvent): void; | |
move?(e: SortableMoveEvent): void; | |
end?(e: SortableEndEvent): void; | |
change?(e: SortableChangeEvent): void; | |
cancel?(e: SortableCancelEvent): void; | |
} | |
interface SortableEvent { | |
sender: Sortable; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SortableStartEvent extends SortableEvent { | |
draggableEvent?: any; | |
item?: JQuery; | |
} | |
interface SortableMoveEvent extends SortableEvent { | |
item?: JQuery; | |
target?: JQuery; | |
list?: kendo.ui.Sortable; | |
draggableEvent?: any; | |
} | |
interface SortableEndEvent extends SortableEvent { | |
action?: string; | |
item?: JQuery; | |
oldIndex?: number; | |
newIndex?: number; | |
draggableEvent?: any; | |
} | |
interface SortableChangeEvent extends SortableEvent { | |
action?: string; | |
item?: JQuery; | |
oldIndex?: number; | |
newIndex?: number; | |
draggableEvent?: any; | |
} | |
interface SortableCancelEvent extends SortableEvent { | |
item?: JQuery; | |
} | |
class Splitter extends kendo.ui.Widget { | |
static fn: Splitter; | |
options: SplitterOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Splitter; | |
constructor(element: Element, options?: SplitterOptions); | |
ajaxRequest(pane: string, url: string, data: any): void; | |
ajaxRequest(pane: string, url: string, data: string): void; | |
ajaxRequest(pane: Element, url: string, data: any): void; | |
ajaxRequest(pane: Element, url: string, data: string): void; | |
ajaxRequest(pane: JQuery, url: string, data: any): void; | |
ajaxRequest(pane: JQuery, url: string, data: string): void; | |
append(config?: any): JQuery; | |
collapse(pane: string): void; | |
collapse(pane: Element): void; | |
collapse(pane: JQuery): void; | |
destroy(): void; | |
expand(pane: string): void; | |
expand(pane: Element): void; | |
expand(pane: JQuery): void; | |
insertAfter(config: any, referencePane: string): JQuery; | |
insertAfter(config: any, referencePane: Element): JQuery; | |
insertAfter(config: any, referencePane: JQuery): JQuery; | |
insertBefore(config: any, referencePane: string): JQuery; | |
insertBefore(config: any, referencePane: Element): JQuery; | |
insertBefore(config: any, referencePane: JQuery): JQuery; | |
max(pane: string, value: string): void; | |
max(pane: Element, value: string): void; | |
max(pane: JQuery, value: string): void; | |
min(pane: string, value: string): void; | |
min(pane: Element, value: string): void; | |
min(pane: JQuery, value: string): void; | |
remove(pane: string): void; | |
remove(pane: Element): void; | |
remove(pane: JQuery): void; | |
size(pane: string, value: string): void; | |
size(pane: Element, value: string): void; | |
size(pane: JQuery, value: string): void; | |
toggle(pane: string, expand?: boolean): void; | |
toggle(pane: Element, expand?: boolean): void; | |
toggle(pane: JQuery, expand?: boolean): void; | |
} | |
interface SplitterPane { | |
collapsed?: boolean; | |
collapsedSize?: string; | |
collapsible?: boolean; | |
contentUrl?: string; | |
max?: string; | |
min?: string; | |
resizable?: boolean; | |
scrollable?: boolean; | |
size?: string; | |
} | |
interface SplitterOptions { | |
name?: string; | |
orientation?: string; | |
panes?: SplitterPane[]; | |
collapse?(e: SplitterCollapseEvent): void; | |
contentLoad?(e: SplitterContentLoadEvent): void; | |
error?(e: SplitterErrorEvent): void; | |
expand?(e: SplitterExpandEvent): void; | |
layoutChange?(e: SplitterEvent): void; | |
resize?(e: SplitterEvent): void; | |
} | |
interface SplitterEvent { | |
sender: Splitter; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SplitterCollapseEvent extends SplitterEvent { | |
pane?: Element; | |
} | |
interface SplitterContentLoadEvent extends SplitterEvent { | |
pane?: Element; | |
} | |
interface SplitterErrorEvent extends SplitterEvent { | |
xhr?: JQueryXHR; | |
status?: string; | |
} | |
interface SplitterExpandEvent extends SplitterEvent { | |
pane?: Element; | |
} | |
class Spreadsheet extends kendo.ui.Widget { | |
static fn: Spreadsheet; | |
options: SpreadsheetOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Spreadsheet; | |
constructor(element: Element, options?: SpreadsheetOptions); | |
activeSheet(): kendo.spreadsheet.Sheet; | |
activeSheet(sheet?: kendo.spreadsheet.Sheet): void; | |
sheets(): any; | |
fromFile(blob: Blob): JQueryPromise<any>; | |
fromFile(blob: File): JQueryPromise<any>; | |
saveAsExcel(): void; | |
saveAsPDF(): JQueryPromise<any>; | |
sheetByName(name: string): kendo.spreadsheet.Sheet; | |
sheetIndex(sheet: kendo.spreadsheet.Sheet): number; | |
sheetByIndex(index: number): kendo.spreadsheet.Sheet; | |
insertSheet(options: any): kendo.spreadsheet.Sheet; | |
moveSheetToIndex(sheet: kendo.spreadsheet.Sheet, index: number): void; | |
removeSheet(sheet: kendo.spreadsheet.Sheet): void; | |
renameSheet(sheet: kendo.spreadsheet.Sheet, newSheetName: string): kendo.spreadsheet.Sheet; | |
toJSON(): any; | |
fromJSON(data: any): void; | |
} | |
interface SpreadsheetExcel { | |
fileName?: string; | |
forceProxy?: boolean; | |
proxyURL?: string; | |
} | |
interface SpreadsheetPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface SpreadsheetPdf { | |
area?: string; | |
author?: string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
fitWidth?: boolean; | |
forceProxy?: boolean; | |
guidelines?: boolean; | |
hCenter?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: SpreadsheetPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
vCenter?: boolean; | |
} | |
interface SpreadsheetSheetColumn { | |
index?: number; | |
width?: number; | |
} | |
interface SpreadsheetSheetFilterColumnCriteriaItem { | |
operator?: string; | |
value?: string; | |
} | |
interface SpreadsheetSheetFilterColumn { | |
criteria?: SpreadsheetSheetFilterColumnCriteriaItem[]; | |
filter?: string; | |
index?: number; | |
logic?: string; | |
type?: string; | |
value?: number|string|Date; | |
values?: any; | |
} | |
interface SpreadsheetSheetFilter { | |
columns?: SpreadsheetSheetFilterColumn[]; | |
ref?: string; | |
} | |
interface SpreadsheetSheetRowCellBorderBottom { | |
color?: string; | |
size?: string; | |
} | |
interface SpreadsheetSheetRowCellBorderLeft { | |
color?: string; | |
size?: string; | |
} | |
interface SpreadsheetSheetRowCellBorderRight { | |
color?: string; | |
size?: string; | |
} | |
interface SpreadsheetSheetRowCellBorderTop { | |
color?: string; | |
size?: string; | |
} | |
interface SpreadsheetSheetRowCellValidation { | |
type?: string; | |
comparerType?: string; | |
dataType?: string; | |
from?: string; | |
to?: string; | |
allowNulls?: boolean; | |
messageTemplate?: string; | |
titleTemplate?: string; | |
} | |
interface SpreadsheetSheetRowCell { | |
background?: string; | |
borderBottom?: SpreadsheetSheetRowCellBorderBottom; | |
borderLeft?: SpreadsheetSheetRowCellBorderLeft; | |
borderTop?: SpreadsheetSheetRowCellBorderTop; | |
borderRight?: SpreadsheetSheetRowCellBorderRight; | |
color?: string; | |
fontFamily?: string; | |
fontSize?: number; | |
italic?: boolean; | |
bold?: boolean; | |
enable?: boolean; | |
format?: string; | |
formula?: string; | |
index?: number; | |
textAlign?: string; | |
underline?: boolean; | |
value?: number|string|boolean|Date; | |
validation?: SpreadsheetSheetRowCellValidation; | |
verticalAlign?: string; | |
wrap?: boolean; | |
} | |
interface SpreadsheetSheetRow { | |
cells?: SpreadsheetSheetRowCell[]; | |
height?: number; | |
index?: number; | |
} | |
interface SpreadsheetSheetSortColumn { | |
ascending?: boolean; | |
index?: number; | |
} | |
interface SpreadsheetSheetSort { | |
columns?: SpreadsheetSheetSortColumn[]; | |
ref?: string; | |
} | |
interface SpreadsheetSheet { | |
activeCell?: string; | |
name?: string; | |
columns?: SpreadsheetSheetColumn[]; | |
dataSource?: kendo.data.DataSource; | |
filter?: SpreadsheetSheetFilter; | |
frozenColumns?: number; | |
frozenRows?: number; | |
mergedCells?: any; | |
rows?: SpreadsheetSheetRow[]; | |
selection?: string; | |
showGridLines?: boolean; | |
sort?: SpreadsheetSheetSort; | |
} | |
interface SpreadsheetToolbar { | |
home?: boolean|any; | |
insert?: boolean|any; | |
data?: boolean|any; | |
} | |
interface SpreadsheetInsertSheetOptions { | |
rows?: number; | |
columns?: number; | |
rowHeight?: number; | |
columnWidth?: number; | |
headerHeight?: number; | |
headerWidth?: number; | |
dataSource?: kendo.data.DataSource; | |
data?: any; | |
} | |
interface SpreadsheetOptions { | |
name?: string; | |
activeSheet?: string; | |
columnWidth?: number; | |
columns?: number; | |
headerHeight?: number; | |
headerWidth?: number; | |
excel?: SpreadsheetExcel; | |
pdf?: SpreadsheetPdf; | |
rowHeight?: number; | |
rows?: number; | |
sheets?: SpreadsheetSheet[]; | |
sheetsbar?: boolean; | |
toolbar?: SpreadsheetToolbar; | |
change?(e: SpreadsheetChangeEvent): void; | |
render?(e: SpreadsheetRenderEvent): void; | |
excelExport?(e: SpreadsheetExcelExportEvent): void; | |
excelImport?(e: SpreadsheetExcelImportEvent): void; | |
pdfExport?(e: SpreadsheetPdfExportEvent): void; | |
} | |
interface SpreadsheetEvent { | |
sender: Spreadsheet; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SpreadsheetChangeEvent extends SpreadsheetEvent { | |
range?: kendo.spreadsheet.Range; | |
} | |
interface SpreadsheetRenderEvent extends SpreadsheetEvent { | |
} | |
interface SpreadsheetExcelExportEvent extends SpreadsheetEvent { | |
data?: any; | |
workbook?: kendo.ooxml.Workbook; | |
} | |
interface SpreadsheetExcelImportEvent extends SpreadsheetEvent { | |
file?: Blob|File; | |
progress?: JQueryPromise<any>; | |
} | |
interface SpreadsheetPdfExportEvent extends SpreadsheetEvent { | |
promise?: JQueryPromise<any>; | |
} | |
class TabStrip extends kendo.ui.Widget { | |
static fn: TabStrip; | |
options: TabStripOptions; | |
dataSource: kendo.data.DataSource; | |
tabGroup: JQuery; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): TabStrip; | |
constructor(element: Element, options?: TabStripOptions); | |
activateTab(item: JQuery): void; | |
append(tab: any): kendo.ui.TabStrip; | |
contentElement(itemIndex: number): Element; | |
contentHolder(itemIndex: number): Element; | |
deactivateTab(item: JQuery): void; | |
destroy(): void; | |
disable(element: string): kendo.ui.TabStrip; | |
disable(element: Element): kendo.ui.TabStrip; | |
disable(element: JQuery): kendo.ui.TabStrip; | |
enable(element: string, enable?: boolean): kendo.ui.TabStrip; | |
enable(element: Element, enable?: boolean): kendo.ui.TabStrip; | |
enable(element: JQuery, enable?: boolean): kendo.ui.TabStrip; | |
insertAfter(item: any, referenceTab: string): kendo.ui.TabStrip; | |
insertAfter(item: any, referenceTab: Element): kendo.ui.TabStrip; | |
insertAfter(item: any, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertAfter(item: string, referenceTab: string): kendo.ui.TabStrip; | |
insertAfter(item: string, referenceTab: Element): kendo.ui.TabStrip; | |
insertAfter(item: string, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertAfter(item: Element, referenceTab: string): kendo.ui.TabStrip; | |
insertAfter(item: Element, referenceTab: Element): kendo.ui.TabStrip; | |
insertAfter(item: Element, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertAfter(item: JQuery, referenceTab: string): kendo.ui.TabStrip; | |
insertAfter(item: JQuery, referenceTab: Element): kendo.ui.TabStrip; | |
insertAfter(item: JQuery, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertBefore(item: any, referenceTab: string): kendo.ui.TabStrip; | |
insertBefore(item: any, referenceTab: Element): kendo.ui.TabStrip; | |
insertBefore(item: any, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertBefore(item: string, referenceTab: string): kendo.ui.TabStrip; | |
insertBefore(item: string, referenceTab: Element): kendo.ui.TabStrip; | |
insertBefore(item: string, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertBefore(item: Element, referenceTab: string): kendo.ui.TabStrip; | |
insertBefore(item: Element, referenceTab: Element): kendo.ui.TabStrip; | |
insertBefore(item: Element, referenceTab: JQuery): kendo.ui.TabStrip; | |
insertBefore(item: JQuery, referenceTab: string): kendo.ui.TabStrip; | |
insertBefore(item: JQuery, referenceTab: Element): kendo.ui.TabStrip; | |
insertBefore(item: JQuery, referenceTab: JQuery): kendo.ui.TabStrip; | |
items(): HTMLCollection; | |
reload(element: string): kendo.ui.TabStrip; | |
reload(element: Element): kendo.ui.TabStrip; | |
reload(element: JQuery): kendo.ui.TabStrip; | |
remove(element: string): kendo.ui.TabStrip; | |
remove(element: number): kendo.ui.TabStrip; | |
remove(element: JQuery): kendo.ui.TabStrip; | |
select(): JQuery; | |
select(element: string): void; | |
select(element: Element): void; | |
select(element: JQuery): void; | |
select(element: number): void; | |
setDataSource(dataSource: any): void; | |
setDataSource(dataSource: kendo.data.DataSource): void; | |
} | |
interface TabStripAnimationClose { | |
duration?: number; | |
effects?: string; | |
} | |
interface TabStripAnimationOpen { | |
duration?: number; | |
effects?: string; | |
} | |
interface TabStripAnimation { | |
close?: TabStripAnimationClose; | |
open?: TabStripAnimationOpen; | |
} | |
interface TabStripScrollable { | |
distance?: number; | |
} | |
interface TabStripOptions { | |
name?: string; | |
animation?: TabStripAnimation; | |
collapsible?: boolean; | |
contentUrls?: any; | |
dataContentField?: string; | |
dataContentUrlField?: string; | |
dataImageUrlField?: string; | |
dataSource?: any|any|kendo.data.DataSource; | |
dataSpriteCssClass?: string; | |
dataTextField?: string; | |
dataUrlField?: string; | |
navigatable?: boolean; | |
scrollable?: TabStripScrollable; | |
tabPosition?: string; | |
value?: string; | |
activate?(e: TabStripActivateEvent): void; | |
contentLoad?(e: TabStripContentLoadEvent): void; | |
error?(e: TabStripErrorEvent): void; | |
select?(e: TabStripSelectEvent): void; | |
show?(e: TabStripShowEvent): void; | |
} | |
interface TabStripEvent { | |
sender: TabStrip; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface TabStripActivateEvent extends TabStripEvent { | |
item?: Element; | |
contentElement?: Element; | |
} | |
interface TabStripContentLoadEvent extends TabStripEvent { | |
item?: Element; | |
contentElement?: Element; | |
} | |
interface TabStripErrorEvent extends TabStripEvent { | |
xhr?: JQueryXHR; | |
status?: string; | |
} | |
interface TabStripSelectEvent extends TabStripEvent { | |
item?: Element; | |
contentElement?: Element; | |
} | |
interface TabStripShowEvent extends TabStripEvent { | |
item?: Element; | |
contentElement?: Element; | |
} | |
class TimePicker extends kendo.ui.Widget { | |
static fn: TimePicker; | |
options: TimePickerOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): TimePicker; | |
constructor(element: Element, options?: TimePickerOptions); | |
close(): void; | |
destroy(): void; | |
enable(enable: boolean): void; | |
readonly(readonly: boolean): void; | |
max(): Date; | |
max(value: Date): void; | |
max(value: string): void; | |
min(): Date; | |
min(value: Date): void; | |
min(value: string): void; | |
open(): void; | |
setOptions(options: any): void; | |
value(): Date; | |
value(value: Date): void; | |
value(value: string): void; | |
} | |
interface TimePickerAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface TimePickerAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface TimePickerAnimation { | |
close?: TimePickerAnimationClose; | |
open?: TimePickerAnimationOpen; | |
} | |
interface TimePickerOptions { | |
name?: string; | |
animation?: TimePickerAnimation; | |
culture?: string; | |
dates?: any; | |
format?: string; | |
interval?: number; | |
max?: Date; | |
min?: Date; | |
parseFormats?: any; | |
value?: Date; | |
change?(e: TimePickerChangeEvent): void; | |
close?(e: TimePickerCloseEvent): void; | |
open?(e: TimePickerOpenEvent): void; | |
} | |
interface TimePickerEvent { | |
sender: TimePicker; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface TimePickerChangeEvent extends TimePickerEvent { | |
} | |
interface TimePickerCloseEvent extends TimePickerEvent { | |
} | |
interface TimePickerOpenEvent extends TimePickerEvent { | |
} | |
class ToolBar extends kendo.ui.Widget { | |
static fn: ToolBar; | |
options: ToolBarOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): ToolBar; | |
constructor(element: Element, options?: ToolBarOptions); | |
add(command: any): void; | |
destroy(): void; | |
enable(command: string, enable: boolean): void; | |
enable(command: Element, enable: boolean): void; | |
enable(command: JQuery, enable: boolean): void; | |
getSelectedFromGroup(groupName: string): void; | |
hide(command: string): void; | |
hide(command: Element): void; | |
hide(command: JQuery): void; | |
remove(command: string): void; | |
remove(command: Element): void; | |
remove(command: JQuery): void; | |
show(command: string): void; | |
show(command: Element): void; | |
show(command: JQuery): void; | |
toggle(): void; | |
} | |
interface ToolBarItemButton { | |
attributes?: any; | |
click?: Function; | |
enable?: boolean; | |
group?: string; | |
hidden?: boolean; | |
icon?: string; | |
id?: string; | |
imageUrl?: string; | |
selected?: boolean; | |
showIcon?: string; | |
showText?: string; | |
spriteCssClass?: string; | |
toggle?: Function; | |
togglable?: boolean; | |
text?: string; | |
url?: string; | |
} | |
interface ToolBarItemMenuButton { | |
attributes?: any; | |
enable?: boolean; | |
hidden?: boolean; | |
icon?: string; | |
id?: string; | |
imageUrl?: string; | |
spriteCssClass?: string; | |
text?: string; | |
url?: string; | |
} | |
interface ToolBarItem { | |
attributes?: any; | |
buttons?: ToolBarItemButton[]; | |
click?: Function; | |
enable?: boolean; | |
group?: string; | |
hidden?: boolean; | |
icon?: string; | |
id?: string; | |
imageUrl?: string; | |
menuButtons?: ToolBarItemMenuButton[]; | |
overflow?: string; | |
overflowTemplate?: string|Function; | |
primary?: boolean; | |
selected?: boolean; | |
showIcon?: string; | |
showText?: string; | |
spriteCssClass?: string; | |
template?: string|Function; | |
text?: string; | |
togglable?: boolean; | |
toggle?: Function; | |
type?: string; | |
url?: string; | |
} | |
interface ToolBarOptions { | |
name?: string; | |
resizable?: boolean; | |
items?: ToolBarItem[]; | |
click?(e: ToolBarClickEvent): void; | |
close?(e: ToolBarCloseEvent): void; | |
open?(e: ToolBarOpenEvent): void; | |
toggle?(e: ToolBarToggleEvent): void; | |
overflowClose?(e: ToolBarOverflowCloseEvent): void; | |
overflowOpen?(e: ToolBarOverflowOpenEvent): void; | |
} | |
interface ToolBarEvent { | |
sender: ToolBar; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ToolBarClickEvent extends ToolBarEvent { | |
target?: JQuery; | |
id?: string; | |
} | |
interface ToolBarCloseEvent extends ToolBarEvent { | |
SplitButton?: JQuery; | |
} | |
interface ToolBarOpenEvent extends ToolBarEvent { | |
SplitButton?: JQuery; | |
} | |
interface ToolBarToggleEvent extends ToolBarEvent { | |
target?: JQuery; | |
checked?: boolean; | |
id?: string; | |
} | |
interface ToolBarOverflowCloseEvent extends ToolBarEvent { | |
} | |
interface ToolBarOverflowOpenEvent extends ToolBarEvent { | |
} | |
class Tooltip extends kendo.ui.Widget { | |
static fn: Tooltip; | |
options: TooltipOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Tooltip; | |
constructor(element: Element, options?: TooltipOptions); | |
show(element: JQuery): void; | |
hide(): void; | |
refresh(): void; | |
target(): JQuery; | |
} | |
interface TooltipAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface TooltipAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface TooltipAnimation { | |
close?: TooltipAnimationClose; | |
open?: TooltipAnimationOpen; | |
} | |
interface TooltipContent { | |
url?: string; | |
} | |
interface TooltipOptions { | |
name?: string; | |
autoHide?: boolean; | |
animation?: TooltipAnimation; | |
content?: TooltipContent; | |
callout?: boolean; | |
filter?: string; | |
iframe?: boolean; | |
height?: number; | |
width?: number; | |
position?: string; | |
showAfter?: number; | |
showOn?: string; | |
contentLoad?(e: TooltipEvent): void; | |
show?(e: TooltipEvent): void; | |
hide?(e: TooltipEvent): void; | |
requestStart?(e: TooltipRequestStartEvent): void; | |
error?(e: TooltipErrorEvent): void; | |
} | |
interface TooltipEvent { | |
sender: Tooltip; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface TooltipRequestStartEvent extends TooltipEvent { | |
target?: JQuery; | |
options?: any; | |
} | |
interface TooltipErrorEvent extends TooltipEvent { | |
xhr?: JQueryXHR; | |
status?: string; | |
} | |
class TreeList extends kendo.ui.Widget { | |
static fn: TreeList; | |
options: TreeListOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): TreeList; | |
constructor(element: Element, options?: TreeListOptions); | |
addRow(parentRow: string): void; | |
addRow(parentRow: Element): void; | |
addRow(parentRow: JQuery): void; | |
autoFitColumn(column: number): void; | |
autoFitColumn(column: string): void; | |
autoFitColumn(column: any): void; | |
cancelRow(): void; | |
clearSelection(): void; | |
collapse(): void; | |
dataItem(row: string): kendo.data.TreeListModel; | |
dataItem(row: Element): kendo.data.TreeListModel; | |
dataItem(row: JQuery): kendo.data.TreeListModel; | |
destroy(): void; | |
editRow(row: JQuery): void; | |
expand(row: string): void; | |
expand(row: Element): void; | |
expand(row: JQuery): void; | |
itemFor(model: kendo.data.TreeListModel): JQuery; | |
itemFor(model: any): JQuery; | |
items(): any; | |
refresh(): void; | |
removeRow(row: string): void; | |
removeRow(row: Element): void; | |
removeRow(row: JQuery): void; | |
saveAsExcel(): void; | |
saveAsPDF(): JQueryPromise<any>; | |
saveRow(): void; | |
select(): JQuery; | |
select(rows: Element): void; | |
select(rows: JQuery): void; | |
setDataSource(dataSource: kendo.data.TreeListDataSource): void; | |
showColumn(column: number): void; | |
showColumn(column: string): void; | |
hideColumn(column: number): void; | |
hideColumn(column: string): void; | |
lockColumn(column: number): void; | |
lockColumn(column: string): void; | |
unlockColumn(column: number): void; | |
unlockColumn(column: string): void; | |
reorderColumn(destIndex: number, column: any): void; | |
} | |
interface TreeListColumnMenuMessages { | |
columns?: string; | |
filter?: string; | |
sortAscending?: string; | |
sortDescending?: string; | |
} | |
interface TreeListColumnMenu { | |
columns?: boolean; | |
filterable?: boolean; | |
sortable?: boolean; | |
messages?: TreeListColumnMenuMessages; | |
} | |
interface TreeListColumnCommandItem { | |
className?: string; | |
click?: Function; | |
name?: string; | |
text?: string; | |
} | |
interface TreeListColumnFilterable { | |
ui?: string|Function; | |
} | |
interface TreeListColumnSortable { | |
compare?: Function; | |
} | |
interface TreeListColumn { | |
attributes?: any; | |
command?: TreeListColumnCommandItem[]; | |
encoded?: boolean; | |
expandable?: boolean; | |
field?: string; | |
filterable?: TreeListColumnFilterable; | |
footerTemplate?: string|Function; | |
format?: string; | |
headerAttributes?: any; | |
headerTemplate?: string|Function; | |
minScreenWidth?: number; | |
sortable?: TreeListColumnSortable; | |
template?: string|Function; | |
title?: string; | |
width?: string|number; | |
hidden?: boolean; | |
menu?: boolean; | |
locked?: boolean; | |
lockable?: boolean; | |
} | |
interface TreeListEditable { | |
mode?: string; | |
move?: boolean; | |
template?: string|Function; | |
window?: any; | |
} | |
interface TreeListExcel { | |
fileName?: string; | |
filterable?: boolean; | |
forceProxy?: boolean; | |
proxyURL?: string; | |
} | |
interface TreeListFilterableMessages { | |
and?: string; | |
clear?: string; | |
filter?: string; | |
info?: string; | |
isFalse?: string; | |
isTrue?: string; | |
or?: string; | |
selectValue?: string; | |
cancel?: string; | |
operator?: string; | |
} | |
interface TreeListFilterable { | |
extra?: boolean; | |
messages?: TreeListFilterableMessages; | |
} | |
interface TreeListMessagesCommands { | |
canceledit?: string; | |
create?: string; | |
createchild?: string; | |
destroy?: string; | |
edit?: string; | |
excel?: string; | |
pdf?: string; | |
update?: string; | |
} | |
interface TreeListMessages { | |
commands?: TreeListMessagesCommands; | |
loading?: string; | |
noRows?: string; | |
requestFailed?: string; | |
retry?: string; | |
} | |
interface TreeListPdfMargin { | |
bottom?: number|string; | |
left?: number|string; | |
right?: number|string; | |
top?: number|string; | |
} | |
interface TreeListPdf { | |
author?: string; | |
avoidLinks?: boolean|string; | |
creator?: string; | |
date?: Date; | |
fileName?: string; | |
forceProxy?: boolean; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: TreeListPdfMargin; | |
paperSize?: string|any; | |
proxyURL?: string; | |
proxyTarget?: string; | |
subject?: string; | |
title?: string; | |
} | |
interface TreeListSortable { | |
allowUnsort?: boolean; | |
mode?: string; | |
} | |
interface TreeListToolbarItem { | |
name?: string; | |
text?: string; | |
} | |
interface TreeListOptions { | |
name?: string; | |
autoBind?: boolean; | |
columns?: TreeListColumn[]; | |
resizable?: boolean; | |
reorderable?: boolean; | |
columnMenu?: TreeListColumnMenu; | |
dataSource?: any|any|kendo.data.TreeListDataSource; | |
editable?: TreeListEditable; | |
excel?: TreeListExcel; | |
filterable?: TreeListFilterable; | |
height?: number|string; | |
messages?: TreeListMessages; | |
pdf?: TreeListPdf; | |
scrollable?: boolean|any; | |
selectable?: boolean|string; | |
sortable?: TreeListSortable; | |
toolbar?: TreeListToolbarItem[]; | |
cancel?(e: TreeListCancelEvent): void; | |
change?(e: TreeListChangeEvent): void; | |
collapse?(e: TreeListCollapseEvent): void; | |
dataBinding?(e: TreeListDataBindingEvent): void; | |
dataBound?(e: TreeListDataBoundEvent): void; | |
dragstart?(e: TreeListDragstartEvent): void; | |
drag?(e: TreeListDragEvent): void; | |
dragend?(e: TreeListDragendEvent): void; | |
drop?(e: TreeListDropEvent): void; | |
edit?(e: TreeListEditEvent): void; | |
excelExport?(e: TreeListExcelExportEvent): void; | |
expand?(e: TreeListExpandEvent): void; | |
filterMenuInit?(e: TreeListFilterMenuInitEvent): void; | |
pdfExport?(e: TreeListPdfExportEvent): void; | |
remove?(e: TreeListRemoveEvent): void; | |
save?(e: TreeListSaveEvent): void; | |
columnShow?(e: TreeListColumnShowEvent): void; | |
columnHide?(e: TreeListColumnHideEvent): void; | |
columnReorder?(e: TreeListColumnReorderEvent): void; | |
columnResize?(e: TreeListColumnResizeEvent): void; | |
columnMenuInit?(e: TreeListColumnMenuInitEvent): void; | |
columnLock?(e: TreeListColumnLockEvent): void; | |
columnUnlock?(e: TreeListColumnUnlockEvent): void; | |
} | |
interface TreeListEvent { | |
sender: TreeList; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface TreeListCancelEvent extends TreeListEvent { | |
container?: JQuery; | |
model?: kendo.data.TreeListModel; | |
} | |
interface TreeListChangeEvent extends TreeListEvent { | |
} | |
interface TreeListCollapseEvent extends TreeListEvent { | |
model?: kendo.data.TreeListModel; | |
} | |
interface TreeListDataBindingEvent extends TreeListEvent { | |
} | |
interface TreeListDataBoundEvent extends TreeListEvent { | |
} | |
interface TreeListDragstartEvent extends TreeListEvent { | |
source?: kendo.data.TreeListModel; | |
} | |
interface TreeListDragEvent extends TreeListEvent { | |
source?: kendo.data.TreeListModel; | |
target?: JQuery; | |
} | |
interface TreeListDragendEvent extends TreeListEvent { | |
source?: kendo.data.TreeListModel; | |
destination?: kendo.data.TreeListModel; | |
} | |
interface TreeListDropEvent extends TreeListEvent { | |
source?: kendo.data.TreeListModel; | |
destination?: kendo.data.TreeListModel; | |
valid?: boolean; | |
setValid?: boolean; | |
} | |
interface TreeListEditEvent extends TreeListEvent { | |
container?: JQuery; | |
model?: kendo.data.TreeListModel; | |
} | |
interface TreeListExcelExportEvent extends TreeListEvent { | |
data?: any; | |
workbook?: any; | |
} | |
interface TreeListExpandEvent extends TreeListEvent { | |
model?: kendo.data.TreeListModel; | |
} | |
interface TreeListFilterMenuInitEvent extends TreeListEvent { | |
container?: JQuery; | |
field?: string; | |
} | |
interface TreeListPdfExportEvent extends TreeListEvent { | |
promise?: JQueryPromise<any>; | |
} | |
interface TreeListRemoveEvent extends TreeListEvent { | |
model?: kendo.data.TreeListModel; | |
row?: JQuery; | |
} | |
interface TreeListSaveEvent extends TreeListEvent { | |
model?: kendo.data.TreeListModel; | |
container?: JQuery; | |
} | |
interface TreeListColumnShowEvent extends TreeListEvent { | |
column?: any; | |
} | |
interface TreeListColumnHideEvent extends TreeListEvent { | |
column?: any; | |
} | |
interface TreeListColumnReorderEvent extends TreeListEvent { | |
column?: any; | |
newIndex?: number; | |
oldIndex?: number; | |
} | |
interface TreeListColumnResizeEvent extends TreeListEvent { | |
column?: any; | |
newWidth?: number; | |
oldWidth?: number; | |
} | |
interface TreeListColumnMenuInitEvent extends TreeListEvent { | |
container?: JQuery; | |
field?: string; | |
} | |
interface TreeListColumnLockEvent extends TreeListEvent { | |
column?: any; | |
} | |
interface TreeListColumnUnlockEvent extends TreeListEvent { | |
column?: any; | |
} | |
class TreeView extends kendo.ui.Widget { | |
static fn: TreeView; | |
options: TreeViewOptions; | |
dataSource: kendo.data.DataSource; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): TreeView; | |
constructor(element: Element, options?: TreeViewOptions); | |
append(nodeData: any, parentNode?: JQuery, success?: Function): JQuery; | |
append(nodeData: JQuery, parentNode?: JQuery, success?: Function): JQuery; | |
collapse(nodes: JQuery): void; | |
collapse(nodes: Element): void; | |
collapse(nodes: string): void; | |
dataItem(node: JQuery): kendo.data.Node; | |
dataItem(node: Element): kendo.data.Node; | |
dataItem(node: string): kendo.data.Node; | |
destroy(): void; | |
detach(node: JQuery): JQuery; | |
detach(node: Element): JQuery; | |
detach(node: string): JQuery; | |
enable(nodes: JQuery, enable?: boolean): void; | |
enable(nodes: Element, enable?: boolean): void; | |
enable(nodes: string, enable?: boolean): void; | |
expand(nodes: JQuery): void; | |
expand(nodes: Element): void; | |
expand(nodes: string): void; | |
expandPath(path: any, complete: Function): void; | |
expandTo(targetNode: kendo.data.Node): void; | |
expandTo(targetNode: any): void; | |
findByText(text: string): JQuery; | |
findByUid(text: string): JQuery; | |
insertAfter(nodeData: any, referenceNode: JQuery): void; | |
insertBefore(nodeData: any, referenceNode: JQuery): void; | |
items(): any; | |
parent(node: JQuery): JQuery; | |
parent(node: Element): JQuery; | |
parent(node: string): JQuery; | |
remove(node: JQuery): void; | |
remove(node: Element): void; | |
remove(node: string): void; | |
select(): JQuery; | |
select(node?: JQuery): void; | |
select(node?: Element): void; | |
select(node?: string): void; | |
setDataSource(dataSource: kendo.data.HierarchicalDataSource): void; | |
text(node: JQuery): string; | |
text(node: Element): string; | |
text(node: string): string; | |
text(node: JQuery, newText: string): void; | |
text(node: Element, newText: string): void; | |
text(node: string, newText: string): void; | |
toggle(node: JQuery): void; | |
toggle(node: Element): void; | |
toggle(node: string): void; | |
updateIndeterminate(node: JQuery): void; | |
} | |
interface TreeViewAnimationCollapse { | |
duration?: number; | |
effects?: string; | |
} | |
interface TreeViewAnimationExpand { | |
duration?: number; | |
effects?: string; | |
} | |
interface TreeViewAnimation { | |
collapse?: TreeViewAnimationCollapse; | |
expand?: TreeViewAnimationExpand; | |
} | |
interface TreeViewCheckboxes { | |
checkChildren?: boolean; | |
name?: string; | |
template?: string|Function; | |
} | |
interface TreeViewMessages { | |
loading?: string; | |
requestFailed?: string; | |
retry?: string; | |
} | |
interface TreeViewOptions { | |
name?: string; | |
animation?: TreeViewAnimation; | |
autoBind?: boolean; | |
autoScroll?: boolean; | |
checkboxes?: TreeViewCheckboxes; | |
dataImageUrlField?: string; | |
dataSource?: any|any|kendo.data.HierarchicalDataSource; | |
dataSpriteCssClassField?: string; | |
dataTextField?: string|any; | |
dataUrlField?: string; | |
dragAndDrop?: boolean; | |
loadOnDemand?: boolean; | |
messages?: TreeViewMessages; | |
template?: string|Function; | |
change?(e: TreeViewEvent): void; | |
check?(e: TreeViewCheckEvent): void; | |
collapse?(e: TreeViewCollapseEvent): void; | |
dataBound?(e: TreeViewDataBoundEvent): void; | |
drag?(e: TreeViewDragEvent): void; | |
dragend?(e: TreeViewDragendEvent): void; | |
dragstart?(e: TreeViewDragstartEvent): void; | |
drop?(e: TreeViewDropEvent): void; | |
expand?(e: TreeViewExpandEvent): void; | |
navigate?(e: TreeViewNavigateEvent): void; | |
select?(e: TreeViewSelectEvent): void; | |
} | |
interface TreeViewEvent { | |
sender: TreeView; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface TreeViewCheckEvent extends TreeViewEvent { | |
node?: Element; | |
} | |
interface TreeViewCollapseEvent extends TreeViewEvent { | |
node?: Element; | |
} | |
interface TreeViewDataBoundEvent extends TreeViewEvent { | |
node?: JQuery; | |
} | |
interface TreeViewDragEvent extends TreeViewEvent { | |
sourceNode?: Element; | |
dropTarget?: Element; | |
pageX?: number; | |
pageY?: number; | |
statusClass?: string; | |
setStatusClass?: Function; | |
} | |
interface TreeViewDragendEvent extends TreeViewEvent { | |
sourceNode?: Element; | |
destinationNode?: Element; | |
dropPosition?: string; | |
} | |
interface TreeViewDragstartEvent extends TreeViewEvent { | |
sourceNode?: Element; | |
} | |
interface TreeViewDropEvent extends TreeViewEvent { | |
sourceNode?: Element; | |
destinationNode?: Element; | |
valid?: boolean; | |
setValid?: Function; | |
dropTarget?: Element; | |
dropPosition?: string; | |
} | |
interface TreeViewExpandEvent extends TreeViewEvent { | |
node?: Element; | |
} | |
interface TreeViewNavigateEvent extends TreeViewEvent { | |
node?: Element; | |
} | |
interface TreeViewSelectEvent extends TreeViewEvent { | |
node?: Element; | |
} | |
class Upload extends kendo.ui.Widget { | |
static fn: Upload; | |
options: UploadOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Upload; | |
constructor(element: Element, options?: UploadOptions); | |
destroy(): void; | |
disable(): void; | |
enable(enable?: boolean): void; | |
toggle(enable: boolean): void; | |
} | |
interface UploadAsync { | |
autoUpload?: boolean; | |
batch?: boolean; | |
removeField?: string; | |
removeUrl?: string; | |
removeVerb?: string; | |
saveField?: string; | |
saveUrl?: string; | |
withCredentials?: boolean; | |
} | |
interface UploadFile { | |
extension?: string; | |
name?: string; | |
size?: number; | |
} | |
interface UploadLocalization { | |
cancel?: string; | |
dropFilesHere?: string; | |
headerStatusUploaded?: string; | |
headerStatusUploading?: string; | |
remove?: string; | |
retry?: string; | |
select?: string; | |
statusFailed?: string; | |
statusUploaded?: string; | |
statusUploading?: string; | |
uploadSelectedFiles?: string; | |
} | |
interface UploadOptions { | |
name?: string; | |
async?: UploadAsync; | |
enabled?: boolean; | |
files?: UploadFile[]; | |
localization?: UploadLocalization; | |
multiple?: boolean; | |
showFileList?: boolean; | |
template?: string|Function; | |
cancel?(e: UploadCancelEvent): void; | |
complete?(e: UploadEvent): void; | |
error?(e: UploadErrorEvent): void; | |
progress?(e: UploadProgressEvent): void; | |
remove?(e: UploadRemoveEvent): void; | |
select?(e: UploadSelectEvent): void; | |
success?(e: UploadSuccessEvent): void; | |
upload?(e: UploadUploadEvent): void; | |
} | |
interface UploadEvent { | |
sender: Upload; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface UploadCancelEvent extends UploadEvent { | |
files?: UploadFile[]; | |
} | |
interface UploadErrorEvent extends UploadEvent { | |
files?: UploadFile[]; | |
operation?: string; | |
XMLHttpRequest?: any; | |
} | |
interface UploadProgressEvent extends UploadEvent { | |
files?: UploadFile[]; | |
percentComplete?: number; | |
} | |
interface UploadRemoveEvent extends UploadEvent { | |
files?: UploadFile[]; | |
data?: any; | |
} | |
interface UploadSelectEvent extends UploadEvent { | |
e?: any; | |
files?: UploadFile[]; | |
} | |
interface UploadSuccessEvent extends UploadEvent { | |
files?: UploadFile[]; | |
operation?: string; | |
response?: any; | |
XMLHttpRequest?: any; | |
} | |
interface UploadUploadEvent extends UploadEvent { | |
files?: UploadFile[]; | |
data?: any; | |
formData?: any; | |
XMLHttpRequest?: any; | |
} | |
class Validator extends kendo.ui.Widget { | |
static fn: Validator; | |
options: ValidatorOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Validator; | |
constructor(element: Element, options?: ValidatorOptions); | |
errors(): any; | |
hideMessages(): void; | |
validate(): boolean; | |
validateInput(input: Element): boolean; | |
validateInput(input: JQuery): boolean; | |
} | |
interface ValidatorOptions { | |
name?: string; | |
errorTemplate?: string; | |
messages?: any; | |
rules?: any; | |
validateOnBlur?: boolean; | |
validate?(e: ValidatorValidateEvent): void; | |
} | |
interface ValidatorEvent { | |
sender: Validator; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface ValidatorValidateEvent extends ValidatorEvent { | |
valid?: boolean; | |
} | |
class Window extends kendo.ui.Widget { | |
static fn: Window; | |
options: WindowOptions; | |
element: JQuery; | |
wrapper: JQuery; | |
static extend(proto: Object): Window; | |
constructor(element: Element, options?: WindowOptions); | |
center(): kendo.ui.Window; | |
close(): kendo.ui.Window; | |
content(): string; | |
content(content?: string): kendo.ui.Window; | |
content(content?: JQuery): kendo.ui.Window; | |
destroy(): void; | |
maximize(): kendo.ui.Window; | |
minimize(): kendo.ui.Window; | |
open(): kendo.ui.Window; | |
pin(): void; | |
refresh(options: any): kendo.ui.Window; | |
restore(): kendo.ui.Window; | |
setOptions(options: any): void; | |
title(): string; | |
title(text?: string): kendo.ui.Window; | |
toFront(): kendo.ui.Window; | |
toggleMaximization(): kendo.ui.Window; | |
unpin(): void; | |
} | |
interface WindowAnimationClose { | |
effects?: string; | |
duration?: number; | |
} | |
interface WindowAnimationOpen { | |
effects?: string; | |
duration?: number; | |
} | |
interface WindowAnimation { | |
close?: WindowAnimationClose; | |
open?: WindowAnimationOpen; | |
} | |
interface WindowContent { | |
template?: string; | |
} | |
interface WindowPosition { | |
top?: number|string; | |
left?: number|string; | |
} | |
interface WindowRefreshOptions { | |
url?: string; | |
cache?: boolean; | |
data?: any; | |
type?: string; | |
template?: string; | |
iframe?: boolean; | |
} | |
interface WindowOptions { | |
name?: string; | |
actions?: any; | |
animation?: WindowAnimation; | |
appendTo?: any|string; | |
autoFocus?: boolean; | |
content?: WindowContent; | |
draggable?: boolean; | |
iframe?: boolean; | |
height?: number|string; | |
maxHeight?: number; | |
maxWidth?: number; | |
minHeight?: number; | |
minWidth?: number; | |
modal?: boolean; | |
pinned?: boolean; | |
position?: WindowPosition; | |
resizable?: boolean; | |
scrollable?: boolean; | |
title?: string|boolean; | |
visible?: boolean; | |
width?: number|string; | |
activate?(e: WindowEvent): void; | |
close?(e: WindowCloseEvent): void; | |
deactivate?(e: WindowEvent): void; | |
dragend?(e: WindowEvent): void; | |
dragstart?(e: WindowEvent): void; | |
error?(e: WindowErrorEvent): void; | |
maximize?(e: WindowEvent): void; | |
minimize?(e: WindowEvent): void; | |
open?(e: WindowEvent): void; | |
refresh?(e: WindowEvent): void; | |
resize?(e: WindowEvent): void; | |
} | |
interface WindowEvent { | |
sender: Window; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface WindowCloseEvent extends WindowEvent { | |
userTriggered?: boolean; | |
} | |
interface WindowErrorEvent extends WindowEvent { | |
xhr?: JQueryXHR; | |
status?: string; | |
} | |
} | |
declare module kendo { | |
class Color extends Observable { | |
options: ColorOptions; | |
diff(): number; | |
equals(): boolean; | |
toHSV(): any; | |
toRGB(): any; | |
toBytes(): any; | |
toHex(): string; | |
toCss(): string; | |
toCssRgba(): string; | |
toDisplay(): string; | |
} | |
interface ColorOptions { | |
name?: string; | |
} | |
interface ColorEvent { | |
sender: Color; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
module drawing { | |
function align(elements: any, rect: kendo.geometry.Rect, alignment: string): void; | |
function drawDOM(element: JQuery, options: any): JQueryPromise<any>; | |
function exportImage(group: kendo.drawing.Group, options: any): JQueryPromise<any>; | |
function exportPDF(group: kendo.drawing.Group, options: kendo.drawing.PDFOptions): JQueryPromise<any>; | |
function exportSVG(group: kendo.drawing.Group, options: any): JQueryPromise<any>; | |
function fit(element: kendo.drawing.Element, rect: kendo.geometry.Rect): void; | |
function stack(elements: any): void; | |
function vAlign(elements: any, rect: kendo.geometry.Rect, alignment: string): void; | |
function vStack(elements: any): void; | |
function vWrap(elements: any, rect: kendo.geometry.Rect): any; | |
function wrap(elements: any, rect: kendo.geometry.Rect): any; | |
} | |
module effects { | |
function box(element: HTMLElement): any; | |
function fillScale(firstElement: HTMLElement, secondElement: HTMLElement): number; | |
function fitScale(firstElement: HTMLElement, secondElement: HTMLElement): number; | |
function transformOrigin(firstElement: HTMLElement, secondElement: HTMLElement): any; | |
} | |
function antiForgeryTokens(): any; | |
function bind(element: string, viewModel: any, namespace?: any): void; | |
function bind(element: string, viewModel: kendo.data.ObservableObject, namespace?: any): void; | |
function bind(element: JQuery, viewModel: any, namespace?: any): void; | |
function bind(element: JQuery, viewModel: kendo.data.ObservableObject, namespace?: any): void; | |
function bind(element: Element, viewModel: any, namespace?: any): void; | |
function bind(element: Element, viewModel: kendo.data.ObservableObject, namespace?: any): void; | |
function observableHierarchy(array: any): void; | |
function culture(culture: string): void; | |
function destroy(element: string): void; | |
function destroy(element: JQuery): void; | |
function destroy(element: Element): void; | |
function htmlEncode(value: string): string; | |
function parseDate(value: string, formats?: string, culture?: string): Date; | |
function parseDate(value: string, formats?: any, culture?: string): Date; | |
function parseFloat(value: string, culture?: string): number; | |
function parseInt(value: string, culture?: string): number; | |
function parseColor(color: string, noerror: boolean): kendo.Color; | |
function proxyModelSetters(): void; | |
function proxyModelSetters(data: kendo.data.Model): void; | |
function resize(element: string, force: boolean): void; | |
function resize(element: JQuery, force: boolean): void; | |
function resize(element: Element, force: boolean): void; | |
function saveAs(options: any): void; | |
function stringify(value: any): string; | |
function throttle(fn: Function, timeout: number): void; | |
function touchScroller(element: string): void; | |
function touchScroller(element: JQuery): void; | |
function touchScroller(element: Element): void; | |
function toString(value: Date, format: string, culture?: string): string; | |
function toString(value: number, format: string, culture?: string): string; | |
function unbind(element: string): void; | |
function unbind(element: JQuery): void; | |
function unbind(element: Element): void; | |
module pdf { | |
function defineFont(map: any): void; | |
} | |
} | |
declare module kendo.spreadsheet { | |
class CustomFilter extends Observable { | |
options: CustomFilterOptions; | |
init(options: any): void; | |
} | |
interface CustomFilterOptions { | |
name?: string; | |
} | |
interface CustomFilterEvent { | |
sender: CustomFilter; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class DynamicFilter extends Observable { | |
options: DynamicFilterOptions; | |
init(options: any): void; | |
} | |
interface DynamicFilterOptions { | |
name?: string; | |
} | |
interface DynamicFilterEvent { | |
sender: DynamicFilter; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Range extends Observable { | |
options: RangeOptions; | |
background(): string; | |
background(value?: string): void; | |
bold(): boolean; | |
bold(value?: boolean): void; | |
borderBottom(): any; | |
borderBottom(value?: any): void; | |
borderLeft(): any; | |
borderLeft(value?: any): void; | |
borderRight(): any; | |
borderRight(value?: any): void; | |
borderTop(): any; | |
borderTop(value?: any): void; | |
color(): string; | |
color(value?: string): void; | |
clear(options?: any): void; | |
clearFilter(indices: any): void; | |
clearFilter(indices: number): void; | |
enable(): boolean; | |
enable(value?: boolean): void; | |
fillFrom(srcRange: Range, direction?: number): void; | |
fillFrom(srcRange: string, direction?: number): void; | |
filter(filter: boolean): void; | |
filter(filter: any): void; | |
fontFamily(): string; | |
fontFamily(value?: string): void; | |
fontSize(): number; | |
fontSize(value?: number): void; | |
forEachCell(callback: Function): void; | |
format(): string; | |
format(format?: string): void; | |
formula(): string; | |
formula(formula?: string): void; | |
hasFilter(): boolean; | |
input(): any; | |
input(value?: string): void; | |
input(value?: number): void; | |
input(value?: Date): void; | |
isSortable(): boolean; | |
isFilterable(): boolean; | |
italic(): boolean; | |
italic(value?: boolean): void; | |
merge(): void; | |
select(): void; | |
sort(sort: number): void; | |
sort(sort: any): void; | |
textAlign(): string; | |
textAlign(value?: string): void; | |
unmerge(): void; | |
values(values: any): void; | |
validation(): any; | |
validation(value?: any): void; | |
value(): any; | |
value(value?: string): void; | |
value(value?: number): void; | |
value(value?: Date): void; | |
verticalAlign(): string; | |
verticalAlign(value?: string): void; | |
wrap(): boolean; | |
wrap(value?: boolean): void; | |
} | |
interface RangeOptions { | |
name?: string; | |
} | |
interface RangeEvent { | |
sender: Range; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Sheet extends Observable { | |
options: SheetOptions; | |
clearFilter(indexes: number): void; | |
clearFilter(indexes: any): void; | |
columnWidth(): void; | |
columnWidth(index: number, width?: number): void; | |
batch(callback: Function, changeEventArgs: any): void; | |
deleteColumn(index: number): void; | |
fromJSON(data: any): void; | |
frozenColumns(): number; | |
frozenColumns(count?: number): void; | |
frozenRows(): number; | |
frozenRows(count?: number): void; | |
hideColumn(index: number): void; | |
hideRow(index: number): void; | |
insertColumn(index: number): void; | |
insertRow(index: number): void; | |
range(ref: string): kendo.spreadsheet.Range; | |
rowHeight(): void; | |
rowHeight(index: number, width?: number): void; | |
selection(): kendo.spreadsheet.Range; | |
setDataSource(dataSource: kendo.data.DataSource, columns?: any): void; | |
unhideColumn(index: number): void; | |
unhideRow(index: number): void; | |
} | |
interface SheetOptions { | |
name?: string; | |
change?(e: SheetChangeEvent): void; | |
} | |
interface SheetEvent { | |
sender: Sheet; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SheetChangeEvent extends SheetEvent { | |
} | |
class TopFilter extends Observable { | |
options: TopFilterOptions; | |
init(options: any): void; | |
} | |
interface TopFilterOptions { | |
name?: string; | |
} | |
interface TopFilterEvent { | |
sender: TopFilter; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class ValueFilter extends Observable { | |
options: ValueFilterOptions; | |
init(options: any): void; | |
} | |
interface ValueFilterOptions { | |
name?: string; | |
} | |
interface ValueFilterEvent { | |
sender: ValueFilter; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
} | |
declare module kendo.ooxml { | |
class Workbook extends Observable { | |
options: WorkbookOptions; | |
sheets: WorkbookSheet[]; | |
constructor(options?: WorkbookOptions); | |
toDataURL(): string; | |
} | |
interface WorkbookSheetColumn { | |
autoWidth?: boolean; | |
index?: number; | |
width?: number; | |
} | |
interface WorkbookSheetFilter { | |
from?: number; | |
to?: number; | |
} | |
interface WorkbookSheetFreezePane { | |
colSplit?: number; | |
rowSplit?: number; | |
} | |
interface WorkbookSheetRowCellBorderBottom { | |
color?: string; | |
size?: number; | |
} | |
interface WorkbookSheetRowCellBorderLeft { | |
color?: string; | |
size?: number; | |
} | |
interface WorkbookSheetRowCellBorderRight { | |
color?: string; | |
size?: number; | |
} | |
interface WorkbookSheetRowCellBorderTop { | |
color?: string; | |
size?: number; | |
} | |
interface WorkbookSheetRowCell { | |
background?: string; | |
borderBottom?: WorkbookSheetRowCellBorderBottom; | |
borderLeft?: WorkbookSheetRowCellBorderLeft; | |
borderTop?: WorkbookSheetRowCellBorderTop; | |
borderRight?: WorkbookSheetRowCellBorderRight; | |
bold?: boolean; | |
color?: string; | |
colSpan?: number; | |
fontFamily?: string; | |
fontName?: string; | |
fontSize?: number; | |
format?: string; | |
formula?: string; | |
hAlign?: string; | |
index?: any; | |
italic?: boolean; | |
rowSpan?: number; | |
textAlign?: string; | |
underline?: boolean; | |
wrap?: boolean; | |
vAlign?: string; | |
verticalAlign?: string; | |
value?: Date|number|string|boolean; | |
} | |
interface WorkbookSheetRow { | |
cells?: WorkbookSheetRowCell[]; | |
index?: number; | |
height?: number; | |
} | |
interface WorkbookSheet { | |
columns?: WorkbookSheetColumn[]; | |
freezePane?: WorkbookSheetFreezePane; | |
frozenColumns?: number; | |
frozenRows?: number; | |
filter?: WorkbookSheetFilter; | |
name?: string; | |
rows?: WorkbookSheetRow[]; | |
title?: string; | |
} | |
interface WorkbookOptions { | |
name?: string; | |
creator?: string; | |
date?: Date; | |
sheets?: WorkbookSheet[]; | |
} | |
interface WorkbookEvent { | |
sender: Workbook; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
} | |
declare module kendo.dataviz.geometry { | |
class Arc extends Observable { | |
options: ArcOptions; | |
anticlockwise: boolean; | |
center: kendo.geometry.Point; | |
endAngle: number; | |
radiusX: number; | |
radiusY: number; | |
startAngle: number; | |
bbox(matrix: kendo.geometry.Matrix): kendo.geometry.Rect; | |
getAnticlockwise(): boolean; | |
getCenter(): kendo.geometry.Point; | |
getEndAngle(): number; | |
getRadiusX(): number; | |
getRadiusY(): number; | |
getStartAngle(): number; | |
pointAt(angle: number): kendo.geometry.Point; | |
setAnticlockwise(value: boolean): kendo.geometry.Arc; | |
setCenter(value: kendo.geometry.Point): kendo.geometry.Arc; | |
setEndAngle(value: number): kendo.geometry.Arc; | |
setRadiusX(value: number): kendo.geometry.Arc; | |
setRadiusY(value: number): kendo.geometry.Arc; | |
setStartAngle(value: number): kendo.geometry.Arc; | |
} | |
interface ArcOptions { | |
name?: string; | |
} | |
interface ArcEvent { | |
sender: Arc; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Circle extends Observable { | |
options: CircleOptions; | |
center: kendo.geometry.Point; | |
radius: number; | |
bbox(matrix: kendo.geometry.Matrix): kendo.geometry.Rect; | |
clone(): kendo.geometry.Circle; | |
equals(other: kendo.geometry.Circle): boolean; | |
getCenter(): kendo.geometry.Point; | |
getRadius(): number; | |
pointAt(angle: number): kendo.geometry.Point; | |
setCenter(value: kendo.geometry.Point): kendo.geometry.Point; | |
setCenter(value: any): kendo.geometry.Point; | |
setRadius(value: number): kendo.geometry.Circle; | |
} | |
interface CircleOptions { | |
name?: string; | |
} | |
interface CircleEvent { | |
sender: Circle; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Matrix extends Observable { | |
options: MatrixOptions; | |
a: number; | |
b: number; | |
c: number; | |
d: number; | |
e: number; | |
f: number; | |
static rotate(angle: number, x: number, y: number): kendo.geometry.Matrix; | |
static scale(scaleX: number, scaleY: number): kendo.geometry.Matrix; | |
static translate(x: number, y: number): kendo.geometry.Matrix; | |
static unit(): kendo.geometry.Matrix; | |
clone(): kendo.geometry.Matrix; | |
equals(other: kendo.geometry.Matrix): boolean; | |
round(digits: number): kendo.geometry.Matrix; | |
multiplyCopy(matrix: kendo.geometry.Matrix): kendo.geometry.Matrix; | |
toArray(digits: number): any; | |
toString(digits: number, separator: string): string; | |
} | |
interface MatrixOptions { | |
name?: string; | |
} | |
interface MatrixEvent { | |
sender: Matrix; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Point extends Observable { | |
options: PointOptions; | |
x: number; | |
y: number; | |
constructor(x: number, y: number); | |
static create(x: number, y: number): kendo.geometry.Point; | |
static create(x: any, y: number): kendo.geometry.Point; | |
static create(x: kendo.geometry.Point, y: number): kendo.geometry.Point; | |
static min(): kendo.geometry.Point; | |
static max(): kendo.geometry.Point; | |
static minPoint(): kendo.geometry.Point; | |
static maxPoint(): kendo.geometry.Point; | |
clone(): kendo.geometry.Point; | |
distanceTo(point: kendo.geometry.Point): number; | |
equals(other: kendo.geometry.Point): boolean; | |
getX(): number; | |
getY(): number; | |
move(x: number, y: number): kendo.geometry.Point; | |
rotate(angle: number, center: kendo.geometry.Point): kendo.geometry.Point; | |
rotate(angle: number, center: any): kendo.geometry.Point; | |
round(digits: number): kendo.geometry.Point; | |
scale(scaleX: number, scaleY: number): kendo.geometry.Point; | |
scaleCopy(scaleX: number, scaleY: number): kendo.geometry.Point; | |
setX(value: number): kendo.geometry.Point; | |
setY(value: number): kendo.geometry.Point; | |
toArray(digits: number): any; | |
toString(digits: number, separator: string): string; | |
transform(tansformation: kendo.geometry.Transformation): kendo.geometry.Point; | |
transformCopy(tansformation: kendo.geometry.Transformation): kendo.geometry.Point; | |
translate(dx: number, dy: number): kendo.geometry.Point; | |
translateWith(vector: kendo.geometry.Point): kendo.geometry.Point; | |
translateWith(vector: any): kendo.geometry.Point; | |
} | |
interface PointOptions { | |
name?: string; | |
} | |
interface PointEvent { | |
sender: Point; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Rect extends Observable { | |
options: RectOptions; | |
origin: kendo.geometry.Point; | |
size: kendo.geometry.Size; | |
constructor(origin: kendo.geometry.Point, size: kendo.geometry.Size); | |
static fromPoints(pointA: kendo.geometry.Point, pointB: kendo.geometry.Point): kendo.geometry.Rect; | |
static union(rectA: kendo.geometry.Rect, rectB: kendo.geometry.Rect): kendo.geometry.Rect; | |
bbox(matrix: kendo.geometry.Matrix): kendo.geometry.Rect; | |
bottomLeft(): kendo.geometry.Point; | |
bottomRight(): kendo.geometry.Point; | |
center(): kendo.geometry.Point; | |
clone(): kendo.geometry.Rect; | |
equals(other: kendo.geometry.Rect): boolean; | |
getOrigin(): kendo.geometry.Point; | |
getSize(): kendo.geometry.Size; | |
height(): number; | |
setOrigin(value: kendo.geometry.Point): kendo.geometry.Rect; | |
setOrigin(value: any): kendo.geometry.Rect; | |
setSize(value: kendo.geometry.Size): kendo.geometry.Rect; | |
setSize(value: any): kendo.geometry.Rect; | |
topLeft(): kendo.geometry.Point; | |
topRight(): kendo.geometry.Point; | |
width(): number; | |
} | |
interface RectOptions { | |
name?: string; | |
} | |
interface RectEvent { | |
sender: Rect; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Size extends Observable { | |
options: SizeOptions; | |
width: number; | |
height: number; | |
static create(width: number, height: number): kendo.geometry.Size; | |
static create(width: any, height: number): kendo.geometry.Size; | |
static create(width: kendo.geometry.Size, height: number): kendo.geometry.Size; | |
clone(): kendo.geometry.Size; | |
equals(other: kendo.geometry.Size): boolean; | |
getWidth(): number; | |
getHeight(): number; | |
setWidth(value: number): kendo.geometry.Size; | |
setHeight(value: number): kendo.geometry.Size; | |
} | |
interface SizeOptions { | |
name?: string; | |
} | |
interface SizeEvent { | |
sender: Size; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Transformation extends Observable { | |
options: TransformationOptions; | |
clone(): kendo.geometry.Transformation; | |
equals(other: kendo.geometry.Transformation): boolean; | |
matrix(): kendo.geometry.Matrix; | |
multiply(transformation: kendo.geometry.Transformation): kendo.geometry.Transformation; | |
rotate(angle: number, center: any): kendo.geometry.Transformation; | |
rotate(angle: number, center: kendo.geometry.Point): kendo.geometry.Transformation; | |
scale(scaleX: number, scaleY: number): kendo.geometry.Transformation; | |
translate(x: number, y: number): kendo.geometry.Transformation; | |
} | |
interface TransformationOptions { | |
name?: string; | |
} | |
interface TransformationEvent { | |
sender: Transformation; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
} | |
declare module kendo.dataviz.drawing { | |
class Arc extends kendo.drawing.Element { | |
options: ArcOptions; | |
constructor(geometry: kendo.geometry.Arc, options?: ArcOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
geometry(): kendo.geometry.Arc; | |
geometry(value: kendo.geometry.Arc): void; | |
fill(color: string, opacity?: number): kendo.drawing.Arc; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Arc; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface ArcOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface ArcEvent { | |
sender: Arc; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Circle extends kendo.drawing.Element { | |
options: CircleOptions; | |
constructor(geometry: kendo.geometry.Circle, options?: CircleOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
geometry(): kendo.geometry.Circle; | |
geometry(value: kendo.geometry.Circle): void; | |
fill(color: string, opacity?: number): kendo.drawing.Circle; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Circle; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface CircleOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface CircleEvent { | |
sender: Circle; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Element extends kendo.Class { | |
options: ElementOptions; | |
constructor(options?: ElementOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
opacity(): number; | |
opacity(opacity: number): void; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface ElementOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
opacity?: number; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface ElementEvent { | |
sender: Element; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface FillOptions { | |
color?: string; | |
opacity?: number; | |
} | |
class Gradient extends kendo.Class { | |
options: GradientOptions; | |
stops: any; | |
constructor(options?: GradientOptions); | |
addStop(offset: number, color: string, opacity: number): kendo.drawing.GradientStop; | |
removeStop(stop: kendo.drawing.GradientStop): void; | |
} | |
interface GradientOptions { | |
name?: string; | |
stops?: any; | |
} | |
interface GradientEvent { | |
sender: Gradient; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class GradientStop extends kendo.Class { | |
options: GradientStopOptions; | |
constructor(options?: GradientStopOptions); | |
} | |
interface GradientStopOptions { | |
name?: string; | |
offset?: number; | |
color?: string; | |
opacity?: number; | |
} | |
interface GradientStopEvent { | |
sender: GradientStop; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Group extends kendo.drawing.Element { | |
options: GroupOptions; | |
children: any; | |
constructor(options?: GroupOptions); | |
append(element: kendo.drawing.Element): void; | |
clear(): void; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
insert(position: number, element: kendo.drawing.Element): void; | |
opacity(): number; | |
opacity(opacity: number): void; | |
remove(element: kendo.drawing.Element): void; | |
removeAt(index: number): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface GroupOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
opacity?: number; | |
pdf?: kendo.drawing.PDFOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface GroupEvent { | |
sender: Group; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Image extends kendo.drawing.Element { | |
options: ImageOptions; | |
constructor(src: string, rect: kendo.geometry.Rect); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
opacity(): number; | |
opacity(opacity: number): void; | |
src(): string; | |
src(value: string): void; | |
rect(): kendo.geometry.Rect; | |
rect(value: kendo.geometry.Rect): void; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface ImageOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
opacity?: number; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface ImageEvent { | |
sender: Image; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Layout extends kendo.drawing.Group { | |
options: LayoutOptions; | |
constructor(rect: kendo.geometry.Rect, options?: LayoutOptions); | |
rect(): kendo.geometry.Rect; | |
rect(rect: kendo.geometry.Rect): void; | |
reflow(): void; | |
} | |
interface LayoutOptions { | |
name?: string; | |
alignContent?: string; | |
alignItems?: string; | |
justifyContent?: string; | |
lineSpacing?: number; | |
spacing?: number; | |
orientation?: string; | |
wrap?: boolean; | |
} | |
interface LayoutEvent { | |
sender: Layout; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class LinearGradient extends kendo.drawing.Gradient { | |
options: LinearGradientOptions; | |
stops: any; | |
constructor(options?: LinearGradientOptions); | |
addStop(offset: number, color: string, opacity: number): kendo.drawing.GradientStop; | |
end(): kendo.geometry.Point; | |
end(end: any): void; | |
end(end: kendo.geometry.Point): void; | |
start(): kendo.geometry.Point; | |
start(start: any): void; | |
start(start: kendo.geometry.Point): void; | |
removeStop(stop: kendo.drawing.GradientStop): void; | |
} | |
interface LinearGradientOptions { | |
name?: string; | |
stops?: any; | |
} | |
interface LinearGradientEvent { | |
sender: LinearGradient; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class MultiPath extends kendo.drawing.Element { | |
options: MultiPathOptions; | |
paths: any; | |
constructor(options?: MultiPathOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
close(): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: any, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.MultiPath; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.MultiPath; | |
fill(color: string, opacity?: number): kendo.drawing.MultiPath; | |
lineTo(x: number, y?: number): kendo.drawing.MultiPath; | |
lineTo(x: any, y?: number): kendo.drawing.MultiPath; | |
lineTo(x: kendo.geometry.Point, y?: number): kendo.drawing.MultiPath; | |
moveTo(x: number, y?: number): kendo.drawing.MultiPath; | |
moveTo(x: any, y?: number): kendo.drawing.MultiPath; | |
moveTo(x: kendo.geometry.Point, y?: number): kendo.drawing.MultiPath; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.MultiPath; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface MultiPathOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface MultiPathEvent { | |
sender: MultiPath; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class OptionsStore extends kendo.Class { | |
options: OptionsStoreOptions; | |
observer: any; | |
constructor(options?: OptionsStoreOptions); | |
get(field: string): any; | |
set(field: string, value: any): void; | |
} | |
interface OptionsStoreOptions { | |
name?: string; | |
} | |
interface OptionsStoreEvent { | |
sender: OptionsStore; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface PDFOptions { | |
creator?: string; | |
date?: Date; | |
keywords?: string; | |
landscape?: boolean; | |
margin?: any; | |
paperSize?: any; | |
subject?: string; | |
title?: string; | |
} | |
class Path extends kendo.drawing.Element { | |
options: PathOptions; | |
segments: any; | |
constructor(options?: PathOptions); | |
static fromPoints(points: any): kendo.drawing.Path; | |
static fromRect(rect: kendo.geometry.Rect): kendo.drawing.Path; | |
static parse(svgPath: string, options?: any): kendo.drawing.Path; | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
close(): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: any, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: any, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: any, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: any): kendo.drawing.Path; | |
curveTo(controlOut: kendo.geometry.Point, controlIn: kendo.geometry.Point, endPoint: kendo.geometry.Point): kendo.drawing.Path; | |
fill(color: string, opacity?: number): kendo.drawing.Path; | |
lineTo(x: number, y?: number): kendo.drawing.Path; | |
lineTo(x: any, y?: number): kendo.drawing.Path; | |
lineTo(x: kendo.geometry.Point, y?: number): kendo.drawing.Path; | |
moveTo(x: number, y?: number): kendo.drawing.Path; | |
moveTo(x: any, y?: number): kendo.drawing.Path; | |
moveTo(x: kendo.geometry.Point, y?: number): kendo.drawing.Path; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Path; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface PathOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface PathEvent { | |
sender: Path; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class RadialGradient extends kendo.drawing.Gradient { | |
options: RadialGradientOptions; | |
stops: any; | |
constructor(options?: RadialGradientOptions); | |
addStop(offset: number, color: string, opacity: number): kendo.drawing.GradientStop; | |
center(): kendo.geometry.Point; | |
center(center: any): void; | |
center(center: kendo.geometry.Point): void; | |
radius(): number; | |
radius(value: number): void; | |
removeStop(stop: kendo.drawing.GradientStop): void; | |
} | |
interface RadialGradientOptions { | |
name?: string; | |
center?: any|kendo.geometry.Point; | |
radius?: number; | |
stops?: any; | |
} | |
interface RadialGradientEvent { | |
sender: RadialGradient; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Rect extends kendo.drawing.Element { | |
options: RectOptions; | |
constructor(geometry: kendo.geometry.Rect, options?: RectOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
geometry(): kendo.geometry.Rect; | |
geometry(value: kendo.geometry.Rect): void; | |
fill(color: string, opacity?: number): kendo.drawing.Rect; | |
opacity(): number; | |
opacity(opacity: number): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Rect; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface RectOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface RectEvent { | |
sender: Rect; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
class Segment extends kendo.Class { | |
options: SegmentOptions; | |
constructor(anchor: kendo.geometry.Point, controlIn: kendo.geometry.Point, controlOut: kendo.geometry.Point); | |
anchor(): kendo.geometry.Point; | |
anchor(value: kendo.geometry.Point): void; | |
controlIn(): kendo.geometry.Point; | |
controlIn(value: kendo.geometry.Point): void; | |
controlOut(): kendo.geometry.Point; | |
controlOut(value: kendo.geometry.Point): void; | |
} | |
interface SegmentOptions { | |
name?: string; | |
} | |
interface SegmentEvent { | |
sender: Segment; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface StrokeOptions { | |
color?: string; | |
dashType?: string; | |
lineCap?: string; | |
lineJoin?: string; | |
opacity?: number; | |
width?: number; | |
} | |
class Surface extends kendo.Observable { | |
options: SurfaceOptions; | |
constructor(options?: SurfaceOptions); | |
static create(element: JQuery, options?: any): kendo.drawing.Surface; | |
static create(element: Element, options?: any): kendo.drawing.Surface; | |
clear(): void; | |
draw(element: kendo.drawing.Element): void; | |
eventTarget(e: any): kendo.drawing.Element; | |
resize(force?: boolean): void; | |
} | |
interface SurfaceOptions { | |
name?: string; | |
type?: string; | |
height?: string; | |
width?: string; | |
click?(e: SurfaceClickEvent): void; | |
mouseenter?(e: SurfaceMouseenterEvent): void; | |
mouseleave?(e: SurfaceMouseleaveEvent): void; | |
} | |
interface SurfaceEvent { | |
sender: Surface; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
interface SurfaceClickEvent extends SurfaceEvent { | |
element?: kendo.drawing.Element; | |
originalEvent?: any; | |
} | |
interface SurfaceMouseenterEvent extends SurfaceEvent { | |
element?: kendo.drawing.Element; | |
originalEvent?: any; | |
} | |
interface SurfaceMouseleaveEvent extends SurfaceEvent { | |
element?: kendo.drawing.Element; | |
originalEvent?: any; | |
} | |
class Text extends kendo.drawing.Element { | |
options: TextOptions; | |
constructor(content: string, position: kendo.geometry.Point, options?: TextOptions); | |
bbox(): kendo.geometry.Rect; | |
clip(): kendo.drawing.Path; | |
clip(clip: kendo.drawing.Path): void; | |
clippedBBox(): kendo.geometry.Rect; | |
content(): string; | |
content(value: string): void; | |
fill(color: string, opacity?: number): kendo.drawing.Text; | |
opacity(): number; | |
opacity(opacity: number): void; | |
position(): kendo.geometry.Point; | |
position(value: kendo.geometry.Point): void; | |
stroke(color: string, width?: number, opacity?: number): kendo.drawing.Text; | |
transform(): kendo.geometry.Transformation; | |
transform(transform: kendo.geometry.Transformation): void; | |
visible(): boolean; | |
visible(visible: boolean): void; | |
} | |
interface TextOptions { | |
name?: string; | |
clip?: kendo.drawing.Path; | |
cursor?: string; | |
fill?: kendo.drawing.FillOptions; | |
font?: string; | |
opacity?: number; | |
stroke?: kendo.drawing.StrokeOptions; | |
transform?: kendo.geometry.Transformation; | |
visible?: boolean; | |
} | |
interface TextEvent { | |
sender: Text; | |
preventDefault: Function; | |
isDefaultPrevented(): boolean; | |
} | |
} | |
interface HTMLElement { | |
kendoBindingTarget: kendo.data.BindingTarget; | |
} | |
interface JQueryXHR { | |
} | |
interface JQueryEventObject { | |
} | |
interface JQueryPromise<T> { | |
} | |
interface JQuery { | |
kendoDraggable(): JQuery; | |
kendoDraggable(options: kendo.ui.DraggableOptions): JQuery; | |
kendoDropTarget(): JQuery; | |
kendoDropTarget(options: kendo.ui.DropTargetOptions): JQuery; | |
kendoDropTargetArea(): JQuery; | |
kendoDropTargetArea(options: kendo.ui.DropTargetAreaOptions): JQuery; | |
data(key: any): any; | |
kendoAutoComplete(): JQuery; | |
kendoAutoComplete(options: kendo.ui.AutoCompleteOptions): JQuery; | |
data(key: "kendoAutoComplete"): kendo.ui.AutoComplete; | |
kendoButton(): JQuery; | |
kendoButton(options: kendo.ui.ButtonOptions): JQuery; | |
data(key: "kendoButton"): kendo.ui.Button; | |
kendoCalendar(): JQuery; | |
kendoCalendar(options: kendo.ui.CalendarOptions): JQuery; | |
data(key: "kendoCalendar"): kendo.ui.Calendar; | |
kendoColorPalette(): JQuery; | |
kendoColorPalette(options: kendo.ui.ColorPaletteOptions): JQuery; | |
data(key: "kendoColorPalette"): kendo.ui.ColorPalette; | |
kendoColorPicker(): JQuery; | |
kendoColorPicker(options: kendo.ui.ColorPickerOptions): JQuery; | |
data(key: "kendoColorPicker"): kendo.ui.ColorPicker; | |
kendoComboBox(): JQuery; | |
kendoComboBox(options: kendo.ui.ComboBoxOptions): JQuery; | |
data(key: "kendoComboBox"): kendo.ui.ComboBox; | |
kendoContextMenu(): JQuery; | |
kendoContextMenu(options: kendo.ui.ContextMenuOptions): JQuery; | |
data(key: "kendoContextMenu"): kendo.ui.ContextMenu; | |
kendoDatePicker(): JQuery; | |
kendoDatePicker(options: kendo.ui.DatePickerOptions): JQuery; | |
data(key: "kendoDatePicker"): kendo.ui.DatePicker; | |
kendoDateTimePicker(): JQuery; | |
kendoDateTimePicker(options: kendo.ui.DateTimePickerOptions): JQuery; | |
data(key: "kendoDateTimePicker"): kendo.ui.DateTimePicker; | |
kendoDropDownList(): JQuery; | |
kendoDropDownList(options: kendo.ui.DropDownListOptions): JQuery; | |
data(key: "kendoDropDownList"): kendo.ui.DropDownList; | |
kendoEditor(): JQuery; | |
kendoEditor(options: kendo.ui.EditorOptions): JQuery; | |
data(key: "kendoEditor"): kendo.ui.Editor; | |
kendoFlatColorPicker(): JQuery; | |
kendoFlatColorPicker(options: kendo.ui.FlatColorPickerOptions): JQuery; | |
data(key: "kendoFlatColorPicker"): kendo.ui.FlatColorPicker; | |
kendoGantt(): JQuery; | |
kendoGantt(options: kendo.ui.GanttOptions): JQuery; | |
data(key: "kendoGantt"): kendo.ui.Gantt; | |
kendoGrid(): JQuery; | |
kendoGrid(options: kendo.ui.GridOptions): JQuery; | |
data(key: "kendoGrid"): kendo.ui.Grid; | |
kendoListView(): JQuery; | |
kendoListView(options: kendo.ui.ListViewOptions): JQuery; | |
data(key: "kendoListView"): kendo.ui.ListView; | |
kendoMaskedTextBox(): JQuery; | |
kendoMaskedTextBox(options: kendo.ui.MaskedTextBoxOptions): JQuery; | |
data(key: "kendoMaskedTextBox"): kendo.ui.MaskedTextBox; | |
kendoMenu(): JQuery; | |
kendoMenu(options: kendo.ui.MenuOptions): JQuery; | |
data(key: "kendoMenu"): kendo.ui.Menu; | |
kendoMultiSelect(): JQuery; | |
kendoMultiSelect(options: kendo.ui.MultiSelectOptions): JQuery; | |
data(key: "kendoMultiSelect"): kendo.ui.MultiSelect; | |
kendoNotification(): JQuery; | |
kendoNotification(options: kendo.ui.NotificationOptions): JQuery; | |
data(key: "kendoNotification"): kendo.ui.Notification; | |
kendoNumericTextBox(): JQuery; | |
kendoNumericTextBox(options: kendo.ui.NumericTextBoxOptions): JQuery; | |
data(key: "kendoNumericTextBox"): kendo.ui.NumericTextBox; | |
kendoPager(): JQuery; | |
kendoPager(options: kendo.ui.PagerOptions): JQuery; | |
data(key: "kendoPager"): kendo.ui.Pager; | |
kendoPanelBar(): JQuery; | |
kendoPanelBar(options: kendo.ui.PanelBarOptions): JQuery; | |
data(key: "kendoPanelBar"): kendo.ui.PanelBar; | |
kendoPivotConfigurator(): JQuery; | |
kendoPivotConfigurator(options: kendo.ui.PivotConfiguratorOptions): JQuery; | |
data(key: "kendoPivotConfigurator"): kendo.ui.PivotConfigurator; | |
kendoPivotGrid(): JQuery; | |
kendoPivotGrid(options: kendo.ui.PivotGridOptions): JQuery; | |
data(key: "kendoPivotGrid"): kendo.ui.PivotGrid; | |
kendoPopup(): JQuery; | |
kendoPopup(options: kendo.ui.PopupOptions): JQuery; | |
data(key: "kendoPopup"): kendo.ui.Popup; | |
kendoProgressBar(): JQuery; | |
kendoProgressBar(options: kendo.ui.ProgressBarOptions): JQuery; | |
data(key: "kendoProgressBar"): kendo.ui.ProgressBar; | |
kendoRangeSlider(): JQuery; | |
kendoRangeSlider(options: kendo.ui.RangeSliderOptions): JQuery; | |
data(key: "kendoRangeSlider"): kendo.ui.RangeSlider; | |
kendoResponsivePanel(): JQuery; | |
kendoResponsivePanel(options: kendo.ui.ResponsivePanelOptions): JQuery; | |
data(key: "kendoResponsivePanel"): kendo.ui.ResponsivePanel; | |
kendoScheduler(): JQuery; | |
kendoScheduler(options: kendo.ui.SchedulerOptions): JQuery; | |
data(key: "kendoScheduler"): kendo.ui.Scheduler; | |
kendoSlider(): JQuery; | |
kendoSlider(options: kendo.ui.SliderOptions): JQuery; | |
data(key: "kendoSlider"): kendo.ui.Slider; | |
kendoSortable(): JQuery; | |
kendoSortable(options: kendo.ui.SortableOptions): JQuery; | |
data(key: "kendoSortable"): kendo.ui.Sortable; | |
kendoSplitter(): JQuery; | |
kendoSplitter(options: kendo.ui.SplitterOptions): JQuery; | |
data(key: "kendoSplitter"): kendo.ui.Splitter; | |
kendoSpreadsheet(): JQuery; | |
kendoSpreadsheet(options: kendo.ui.SpreadsheetOptions): JQuery; | |
data(key: "kendoSpreadsheet"): kendo.ui.Spreadsheet; | |
kendoTabStrip(): JQuery; | |
kendoTabStrip(options: kendo.ui.TabStripOptions): JQuery; | |
data(key: "kendoTabStrip"): kendo.ui.TabStrip; | |
kendoTimePicker(): JQuery; | |
kendoTimePicker(options: kendo.ui.TimePickerOptions): JQuery; | |
data(key: "kendoTimePicker"): kendo.ui.TimePicker; | |
kendoToolBar(): JQuery; | |
kendoToolBar(options: kendo.ui.ToolBarOptions): JQuery; | |
data(key: "kendoToolBar"): kendo.ui.ToolBar; | |
kendoTooltip(): JQuery; | |
kendoTooltip(options: kendo.ui.TooltipOptions): JQuery; | |
data(key: "kendoTooltip"): kendo.ui.Tooltip; | |
kendoTreeList(): JQuery; | |
kendoTreeList(options: kendo.ui.TreeListOptions): JQuery; | |
data(key: "kendoTreeList"): kendo.ui.TreeList; | |
kendoTreeView(): JQuery; | |
kendoTreeView(options: kendo.ui.TreeViewOptions): JQuery; | |
data(key: "kendoTreeView"): kendo.ui.TreeView; | |
kendoUpload(): JQuery; | |
kendoUpload(options: kendo.ui.UploadOptions): JQuery; | |
data(key: "kendoUpload"): kendo.ui.Upload; | |
kendoValidator(): JQuery; | |
kendoValidator(options: kendo.ui.ValidatorOptions): JQuery; | |
data(key: "kendoValidator"): kendo.ui.Validator; | |
kendoWindow(): JQuery; | |
kendoWindow(options: kendo.ui.WindowOptions): JQuery; | |
data(key: "kendoWindow"): kendo.ui.Window; | |
} | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.core', f); | |
}(function () { | |
var __meta__ = { | |
id: 'core', | |
name: 'Core', | |
category: 'framework', | |
description: 'The core of the Kendo framework.' | |
}; | |
(function ($, window, undefined) { | |
var kendo = window.kendo = window.kendo || { cultures: {} }, extend = $.extend, each = $.each, isArray = $.isArray, proxy = $.proxy, noop = $.noop, math = Math, Template, JSON = window.JSON || {}, support = {}, percentRegExp = /%/, formatRegExp = /\{(\d+)(:[^\}]+)?\}/g, boxShadowRegExp = /(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+)?/i, numberRegExp = /^(\+|-?)\d+(\.?)\d*$/, FUNCTION = 'function', STRING = 'string', NUMBER = 'number', OBJECT = 'object', NULL = 'null', BOOLEAN = 'boolean', UNDEFINED = 'undefined', getterCache = {}, setterCache = {}, slice = [].slice; | |
kendo.version = '2016.2.504'.replace(/^\s+|\s+$/g, ''); | |
function Class() { | |
} | |
Class.extend = function (proto) { | |
var base = function () { | |
}, member, that = this, subclass = proto && proto.init ? proto.init : function () { | |
that.apply(this, arguments); | |
}, fn; | |
base.prototype = that.prototype; | |
fn = subclass.fn = subclass.prototype = new base(); | |
for (member in proto) { | |
if (proto[member] != null && proto[member].constructor === Object) { | |
fn[member] = extend(true, {}, base.prototype[member], proto[member]); | |
} else { | |
fn[member] = proto[member]; | |
} | |
} | |
fn.constructor = subclass; | |
subclass.extend = that.extend; | |
return subclass; | |
}; | |
Class.prototype._initOptions = function (options) { | |
this.options = deepExtend({}, this.options, options); | |
}; | |
var isFunction = kendo.isFunction = function (fn) { | |
return typeof fn === 'function'; | |
}; | |
var preventDefault = function () { | |
this._defaultPrevented = true; | |
}; | |
var isDefaultPrevented = function () { | |
return this._defaultPrevented === true; | |
}; | |
var Observable = Class.extend({ | |
init: function () { | |
this._events = {}; | |
}, | |
bind: function (eventName, handlers, one) { | |
var that = this, idx, eventNames = typeof eventName === STRING ? [eventName] : eventName, length, original, handler, handlersIsFunction = typeof handlers === FUNCTION, events; | |
if (handlers === undefined) { | |
for (idx in eventName) { | |
that.bind(idx, eventName[idx]); | |
} | |
return that; | |
} | |
for (idx = 0, length = eventNames.length; idx < length; idx++) { | |
eventName = eventNames[idx]; | |
handler = handlersIsFunction ? handlers : handlers[eventName]; | |
if (handler) { | |
if (one) { | |
original = handler; | |
handler = function () { | |
that.unbind(eventName, handler); | |
original.apply(that, arguments); | |
}; | |
handler.original = original; | |
} | |
events = that._events[eventName] = that._events[eventName] || []; | |
events.push(handler); | |
} | |
} | |
return that; | |
}, | |
one: function (eventNames, handlers) { | |
return this.bind(eventNames, handlers, true); | |
}, | |
first: function (eventName, handlers) { | |
var that = this, idx, eventNames = typeof eventName === STRING ? [eventName] : eventName, length, handler, handlersIsFunction = typeof handlers === FUNCTION, events; | |
for (idx = 0, length = eventNames.length; idx < length; idx++) { | |
eventName = eventNames[idx]; | |
handler = handlersIsFunction ? handlers : handlers[eventName]; | |
if (handler) { | |
events = that._events[eventName] = that._events[eventName] || []; | |
events.unshift(handler); | |
} | |
} | |
return that; | |
}, | |
trigger: function (eventName, e) { | |
var that = this, events = that._events[eventName], idx, length; | |
if (events) { | |
e = e || {}; | |
e.sender = that; | |
e._defaultPrevented = false; | |
e.preventDefault = preventDefault; | |
e.isDefaultPrevented = isDefaultPrevented; | |
events = events.slice(); | |
for (idx = 0, length = events.length; idx < length; idx++) { | |
events[idx].call(that, e); | |
} | |
return e._defaultPrevented === true; | |
} | |
return false; | |
}, | |
unbind: function (eventName, handler) { | |
var that = this, events = that._events[eventName], idx; | |
if (eventName === undefined) { | |
that._events = {}; | |
} else if (events) { | |
if (handler) { | |
for (idx = events.length - 1; idx >= 0; idx--) { | |
if (events[idx] === handler || events[idx].original === handler) { | |
events.splice(idx, 1); | |
} | |
} | |
} else { | |
that._events[eventName] = []; | |
} | |
} | |
return that; | |
} | |
}); | |
function compilePart(part, stringPart) { | |
if (stringPart) { | |
return '\'' + part.split('\'').join('\\\'').split('\\"').join('\\\\\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\t/g, '\\t') + '\''; | |
} else { | |
var first = part.charAt(0), rest = part.substring(1); | |
if (first === '=') { | |
return '+(' + rest + ')+'; | |
} else if (first === ':') { | |
return '+$kendoHtmlEncode(' + rest + ')+'; | |
} else { | |
return ';' + part + ';$kendoOutput+='; | |
} | |
} | |
} | |
var argumentNameRegExp = /^\w+/, encodeRegExp = /\$\{([^}]*)\}/g, escapedCurlyRegExp = /\\\}/g, curlyRegExp = /__CURLY__/g, escapedSharpRegExp = /\\#/g, sharpRegExp = /__SHARP__/g, zeros = [ | |
'', | |
'0', | |
'00', | |
'000', | |
'0000' | |
]; | |
Template = { | |
paramName: 'data', | |
useWithBlock: true, | |
render: function (template, data) { | |
var idx, length, html = ''; | |
for (idx = 0, length = data.length; idx < length; idx++) { | |
html += template(data[idx]); | |
} | |
return html; | |
}, | |
compile: function (template, options) { | |
var settings = extend({}, this, options), paramName = settings.paramName, argumentName = paramName.match(argumentNameRegExp)[0], useWithBlock = settings.useWithBlock, functionBody = 'var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;', fn, parts, idx; | |
if (isFunction(template)) { | |
return template; | |
} | |
functionBody += useWithBlock ? 'with(' + paramName + '){' : ''; | |
functionBody += '$kendoOutput='; | |
parts = template.replace(escapedCurlyRegExp, '__CURLY__').replace(encodeRegExp, '#=$kendoHtmlEncode($1)#').replace(curlyRegExp, '}').replace(escapedSharpRegExp, '__SHARP__').split('#'); | |
for (idx = 0; idx < parts.length; idx++) { | |
functionBody += compilePart(parts[idx], idx % 2 === 0); | |
} | |
functionBody += useWithBlock ? ';}' : ';'; | |
functionBody += 'return $kendoOutput;'; | |
functionBody = functionBody.replace(sharpRegExp, '#'); | |
try { | |
fn = new Function(argumentName, functionBody); | |
fn._slotCount = Math.floor(parts.length / 2); | |
return fn; | |
} catch (e) { | |
throw new Error(kendo.format('Invalid template:\'{0}\' Generated code:\'{1}\'', template, functionBody)); | |
} | |
} | |
}; | |
function pad(number, digits, end) { | |
number = number + ''; | |
digits = digits || 2; | |
end = digits - number.length; | |
if (end) { | |
return zeros[digits].substring(0, end) + number; | |
} | |
return number; | |
} | |
(function () { | |
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { | |
'\b': '\\b', | |
'\t': '\\t', | |
'\n': '\\n', | |
'\f': '\\f', | |
'\r': '\\r', | |
'"': '\\"', | |
'\\': '\\\\' | |
}, rep, toString = {}.toString; | |
if (typeof Date.prototype.toJSON !== FUNCTION) { | |
Date.prototype.toJSON = function () { | |
var that = this; | |
return isFinite(that.valueOf()) ? pad(that.getUTCFullYear(), 4) + '-' + pad(that.getUTCMonth() + 1) + '-' + pad(that.getUTCDate()) + 'T' + pad(that.getUTCHours()) + ':' + pad(that.getUTCMinutes()) + ':' + pad(that.getUTCSeconds()) + 'Z' : null; | |
}; | |
String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () { | |
return this.valueOf(); | |
}; | |
} | |
function quote(string) { | |
escapable.lastIndex = 0; | |
return escapable.test(string) ? '"' + string.replace(escapable, function (a) { | |
var c = meta[a]; | |
return typeof c === STRING ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); | |
}) + '"' : '"' + string + '"'; | |
} | |
function str(key, holder) { | |
var i, k, v, length, mind = gap, partial, value = holder[key], type; | |
if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) { | |
value = value.toJSON(key); | |
} | |
if (typeof rep === FUNCTION) { | |
value = rep.call(holder, key, value); | |
} | |
type = typeof value; | |
if (type === STRING) { | |
return quote(value); | |
} else if (type === NUMBER) { | |
return isFinite(value) ? String(value) : NULL; | |
} else if (type === BOOLEAN || type === NULL) { | |
return String(value); | |
} else if (type === OBJECT) { | |
if (!value) { | |
return NULL; | |
} | |
gap += indent; | |
partial = []; | |
if (toString.apply(value) === '[object Array]') { | |
length = value.length; | |
for (i = 0; i < length; i++) { | |
partial[i] = str(i, value) || NULL; | |
} | |
v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; | |
gap = mind; | |
return v; | |
} | |
if (rep && typeof rep === OBJECT) { | |
length = rep.length; | |
for (i = 0; i < length; i++) { | |
if (typeof rep[i] === STRING) { | |
k = rep[i]; | |
v = str(k, value); | |
if (v) { | |
partial.push(quote(k) + (gap ? ': ' : ':') + v); | |
} | |
} | |
} | |
} else { | |
for (k in value) { | |
if (Object.hasOwnProperty.call(value, k)) { | |
v = str(k, value); | |
if (v) { | |
partial.push(quote(k) + (gap ? ': ' : ':') + v); | |
} | |
} | |
} | |
} | |
v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; | |
gap = mind; | |
return v; | |
} | |
} | |
if (typeof JSON.stringify !== FUNCTION) { | |
JSON.stringify = function (value, replacer, space) { | |
var i; | |
gap = ''; | |
indent = ''; | |
if (typeof space === NUMBER) { | |
for (i = 0; i < space; i += 1) { | |
indent += ' '; | |
} | |
} else if (typeof space === STRING) { | |
indent = space; | |
} | |
rep = replacer; | |
if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) { | |
throw new Error('JSON.stringify'); | |
} | |
return str('', { '': value }); | |
}; | |
} | |
}()); | |
(function () { | |
var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|"[^"]*"|'[^']*'/g, standardFormatRegExp = /^(n|c|p|e)(\d*)$/i, literalRegExp = /(\\.)|(['][^']*[']?)|(["][^"]*["]?)/g, commaRegExp = /\,/g, EMPTY = '', POINT = '.', COMMA = ',', SHARP = '#', ZERO = '0', PLACEHOLDER = '??', EN = 'en-US', objectToString = {}.toString; | |
kendo.cultures['en-US'] = { | |
name: EN, | |
numberFormat: { | |
pattern: ['-n'], | |
decimals: 2, | |
',': ',', | |
'.': '.', | |
groupSize: [3], | |
percent: { | |
pattern: [ | |
'-n %', | |
'n %' | |
], | |
decimals: 2, | |
',': ',', | |
'.': '.', | |
groupSize: [3], | |
symbol: '%' | |
}, | |
currency: { | |
name: 'US Dollar', | |
abbr: 'USD', | |
pattern: [ | |
'($n)', | |
'$n' | |
], | |
decimals: 2, | |
',': ',', | |
'.': '.', | |
groupSize: [3], | |
symbol: '$' | |
} | |
}, | |
calendars: { | |
standard: { | |
days: { | |
names: [ | |
'Sunday', | |
'Monday', | |
'Tuesday', | |
'Wednesday', | |
'Thursday', | |
'Friday', | |
'Saturday' | |
], | |
namesAbbr: [ | |
'Sun', | |
'Mon', | |
'Tue', | |
'Wed', | |
'Thu', | |
'Fri', | |
'Sat' | |
], | |
namesShort: [ | |
'Su', | |
'Mo', | |
'Tu', | |
'We', | |
'Th', | |
'Fr', | |
'Sa' | |
] | |
}, | |
months: { | |
names: [ | |
'January', | |
'February', | |
'March', | |
'April', | |
'May', | |
'June', | |
'July', | |
'August', | |
'September', | |
'October', | |
'November', | |
'December' | |
], | |
namesAbbr: [ | |
'Jan', | |
'Feb', | |
'Mar', | |
'Apr', | |
'May', | |
'Jun', | |
'Jul', | |
'Aug', | |
'Sep', | |
'Oct', | |
'Nov', | |
'Dec' | |
] | |
}, | |
AM: [ | |
'AM', | |
'am', | |
'AM' | |
], | |
PM: [ | |
'PM', | |
'pm', | |
'PM' | |
], | |
patterns: { | |
d: 'M/d/yyyy', | |
D: 'dddd, MMMM dd, yyyy', | |
F: 'dddd, MMMM dd, yyyy h:mm:ss tt', | |
g: 'M/d/yyyy h:mm tt', | |
G: 'M/d/yyyy h:mm:ss tt', | |
m: 'MMMM dd', | |
M: 'MMMM dd', | |
s: 'yyyy\'-\'MM\'-\'ddTHH\':\'mm\':\'ss', | |
t: 'h:mm tt', | |
T: 'h:mm:ss tt', | |
u: 'yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'', | |
y: 'MMMM, yyyy', | |
Y: 'MMMM, yyyy' | |
}, | |
'/': '/', | |
':': ':', | |
firstDay: 0, | |
twoDigitYearMax: 2029 | |
} | |
} | |
}; | |
function findCulture(culture) { | |
if (culture) { | |
if (culture.numberFormat) { | |
return culture; | |
} | |
if (typeof culture === STRING) { | |
var cultures = kendo.cultures; | |
return cultures[culture] || cultures[culture.split('-')[0]] || null; | |
} | |
return null; | |
} | |
return null; | |
} | |
function getCulture(culture) { | |
if (culture) { | |
culture = findCulture(culture); | |
} | |
return culture || kendo.cultures.current; | |
} | |
kendo.culture = function (cultureName) { | |
var cultures = kendo.cultures, culture; | |
if (cultureName !== undefined) { | |
culture = findCulture(cultureName) || cultures[EN]; | |
culture.calendar = culture.calendars.standard; | |
cultures.current = culture; | |
} else { | |
return cultures.current; | |
} | |
}; | |
kendo.findCulture = findCulture; | |
kendo.getCulture = getCulture; | |
kendo.culture(EN); | |
function formatDate(date, format, culture) { | |
culture = getCulture(culture); | |
var calendar = culture.calendars.standard, days = calendar.days, months = calendar.months; | |
format = calendar.patterns[format] || format; | |
return format.replace(dateFormatRegExp, function (match) { | |
var minutes; | |
var result; | |
var sign; | |
if (match === 'd') { | |
result = date.getDate(); | |
} else if (match === 'dd') { | |
result = pad(date.getDate()); | |
} else if (match === 'ddd') { | |
result = days.namesAbbr[date.getDay()]; | |
} else if (match === 'dddd') { | |
result = days.names[date.getDay()]; | |
} else if (match === 'M') { | |
result = date.getMonth() + 1; | |
} else if (match === 'MM') { | |
result = pad(date.getMonth() + 1); | |
} else if (match === 'MMM') { | |
result = months.namesAbbr[date.getMonth()]; | |
} else if (match === 'MMMM') { | |
result = months.names[date.getMonth()]; | |
} else if (match === 'yy') { | |
result = pad(date.getFullYear() % 100); | |
} else if (match === 'yyyy') { | |
result = pad(date.getFullYear(), 4); | |
} else if (match === 'h') { | |
result = date.getHours() % 12 || 12; | |
} else if (match === 'hh') { | |
result = pad(date.getHours() % 12 || 12); | |
} else if (match === 'H') { | |
result = date.getHours(); | |
} else if (match === 'HH') { | |
result = pad(date.getHours()); | |
} else if (match === 'm') { | |
result = date.getMinutes(); | |
} else if (match === 'mm') { | |
result = pad(date.getMinutes()); | |
} else if (match === 's') { | |
result = date.getSeconds(); | |
} else if (match === 'ss') { | |
result = pad(date.getSeconds()); | |
} else if (match === 'f') { | |
result = math.floor(date.getMilliseconds() / 100); | |
} else if (match === 'ff') { | |
result = date.getMilliseconds(); | |
if (result > 99) { | |
result = math.floor(result / 10); | |
} | |
result = pad(result); | |
} else if (match === 'fff') { | |
result = pad(date.getMilliseconds(), 3); | |
} else if (match === 'tt') { | |
result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0]; | |
} else if (match === 'zzz') { | |
minutes = date.getTimezoneOffset(); | |
sign = minutes < 0; | |
result = math.abs(minutes / 60).toString().split('.')[0]; | |
minutes = math.abs(minutes) - result * 60; | |
result = (sign ? '+' : '-') + pad(result); | |
result += ':' + pad(minutes); | |
} else if (match === 'zz' || match === 'z') { | |
result = date.getTimezoneOffset() / 60; | |
sign = result < 0; | |
result = math.abs(result).toString().split('.')[0]; | |
result = (sign ? '+' : '-') + (match === 'zz' ? pad(result) : result); | |
} | |
return result !== undefined ? result : match.slice(1, match.length - 1); | |
}); | |
} | |
function formatNumber(number, format, culture) { | |
culture = getCulture(culture); | |
var numberFormat = culture.numberFormat, decimal = numberFormat[POINT], precision = numberFormat.decimals, pattern = numberFormat.pattern[0], literals = [], symbol, isCurrency, isPercent, customPrecision, formatAndPrecision, negative = number < 0, integer, fraction, integerLength, fractionLength, replacement = EMPTY, value = EMPTY, idx, length, ch, hasGroup, hasNegativeFormat, decimalIndex, sharpIndex, zeroIndex, hasZero, hasSharp, percentIndex, currencyIndex, startZeroIndex, start = -1, end; | |
if (number === undefined) { | |
return EMPTY; | |
} | |
if (!isFinite(number)) { | |
return number; | |
} | |
if (!format) { | |
return culture.name.length ? number.toLocaleString() : number.toString(); | |
} | |
formatAndPrecision = standardFormatRegExp.exec(format); | |
if (formatAndPrecision) { | |
format = formatAndPrecision[1].toLowerCase(); | |
isCurrency = format === 'c'; | |
isPercent = format === 'p'; | |
if (isCurrency || isPercent) { | |
numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent; | |
decimal = numberFormat[POINT]; | |
precision = numberFormat.decimals; | |
symbol = numberFormat.symbol; | |
pattern = numberFormat.pattern[negative ? 0 : 1]; | |
} | |
customPrecision = formatAndPrecision[2]; | |
if (customPrecision) { | |
precision = +customPrecision; | |
} | |
if (format === 'e') { | |
return customPrecision ? number.toExponential(precision) : number.toExponential(); | |
} | |
if (isPercent) { | |
number *= 100; | |
} | |
number = round(number, precision); | |
negative = number < 0; | |
number = number.split(POINT); | |
integer = number[0]; | |
fraction = number[1]; | |
if (negative) { | |
integer = integer.substring(1); | |
} | |
value = groupInteger(integer, 0, integer.length, numberFormat); | |
if (fraction) { | |
value += decimal + fraction; | |
} | |
if (format === 'n' && !negative) { | |
return value; | |
} | |
number = EMPTY; | |
for (idx = 0, length = pattern.length; idx < length; idx++) { | |
ch = pattern.charAt(idx); | |
if (ch === 'n') { | |
number += value; | |
} else if (ch === '$' || ch === '%') { | |
number += symbol; | |
} else { | |
number += ch; | |
} | |
} | |
return number; | |
} | |
if (negative) { | |
number = -number; | |
} | |
if (format.indexOf('\'') > -1 || format.indexOf('"') > -1 || format.indexOf('\\') > -1) { | |
format = format.replace(literalRegExp, function (match) { | |
var quoteChar = match.charAt(0).replace('\\', ''), literal = match.slice(1).replace(quoteChar, ''); | |
literals.push(literal); | |
return PLACEHOLDER; | |
}); | |
} | |
format = format.split(';'); | |
if (negative && format[1]) { | |
format = format[1]; | |
hasNegativeFormat = true; | |
} else if (number === 0) { | |
format = format[2] || format[0]; | |
if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) { | |
return format; | |
} | |
} else { | |
format = format[0]; | |
} | |
percentIndex = format.indexOf('%'); | |
currencyIndex = format.indexOf('$'); | |
isPercent = percentIndex != -1; | |
isCurrency = currencyIndex != -1; | |
if (isPercent) { | |
number *= 100; | |
} | |
if (isCurrency && format[currencyIndex - 1] === '\\') { | |
format = format.split('\\').join(''); | |
isCurrency = false; | |
} | |
if (isCurrency || isPercent) { | |
numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent; | |
decimal = numberFormat[POINT]; | |
precision = numberFormat.decimals; | |
symbol = numberFormat.symbol; | |
} | |
hasGroup = format.indexOf(COMMA) > -1; | |
if (hasGroup) { | |
format = format.replace(commaRegExp, EMPTY); | |
} | |
decimalIndex = format.indexOf(POINT); | |
length = format.length; | |
if (decimalIndex != -1) { | |
fraction = number.toString().split('e'); | |
if (fraction[1]) { | |
fraction = round(number, Math.abs(fraction[1])); | |
} else { | |
fraction = fraction[0]; | |
} | |
fraction = fraction.split(POINT)[1] || EMPTY; | |
zeroIndex = format.lastIndexOf(ZERO) - decimalIndex; | |
sharpIndex = format.lastIndexOf(SHARP) - decimalIndex; | |
hasZero = zeroIndex > -1; | |
hasSharp = sharpIndex > -1; | |
idx = fraction.length; | |
if (!hasZero && !hasSharp) { | |
format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1); | |
length = format.length; | |
decimalIndex = -1; | |
idx = 0; | |
} | |
if (hasZero && zeroIndex > sharpIndex) { | |
idx = zeroIndex; | |
} else if (sharpIndex > zeroIndex) { | |
if (hasSharp && idx > sharpIndex) { | |
idx = sharpIndex; | |
} else if (hasZero && idx < zeroIndex) { | |
idx = zeroIndex; | |
} | |
} | |
if (idx > -1) { | |
number = round(number, idx); | |
} | |
} else { | |
number = round(number); | |
} | |
sharpIndex = format.indexOf(SHARP); | |
startZeroIndex = zeroIndex = format.indexOf(ZERO); | |
if (sharpIndex == -1 && zeroIndex != -1) { | |
start = zeroIndex; | |
} else if (sharpIndex != -1 && zeroIndex == -1) { | |
start = sharpIndex; | |
} else { | |
start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex; | |
} | |
sharpIndex = format.lastIndexOf(SHARP); | |
zeroIndex = format.lastIndexOf(ZERO); | |
if (sharpIndex == -1 && zeroIndex != -1) { | |
end = zeroIndex; | |
} else if (sharpIndex != -1 && zeroIndex == -1) { | |
end = sharpIndex; | |
} else { | |
end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex; | |
} | |
if (start == length) { | |
end = start; | |
} | |
if (start != -1) { | |
value = number.toString().split(POINT); | |
integer = value[0]; | |
fraction = value[1] || EMPTY; | |
integerLength = integer.length; | |
fractionLength = fraction.length; | |
if (negative && number * -1 >= 0) { | |
negative = false; | |
} | |
number = format.substring(0, start); | |
if (negative && !hasNegativeFormat) { | |
number += '-'; | |
} | |
for (idx = start; idx < length; idx++) { | |
ch = format.charAt(idx); | |
if (decimalIndex == -1) { | |
if (end - idx < integerLength) { | |
number += integer; | |
break; | |
} | |
} else { | |
if (zeroIndex != -1 && zeroIndex < idx) { | |
replacement = EMPTY; | |
} | |
if (decimalIndex - idx <= integerLength && decimalIndex - idx > -1) { | |
number += integer; | |
idx = decimalIndex; | |
} | |
if (decimalIndex === idx) { | |
number += (fraction ? decimal : EMPTY) + fraction; | |
idx += end - decimalIndex + 1; | |
continue; | |
} | |
} | |
if (ch === ZERO) { | |
number += ch; | |
replacement = ch; | |
} else if (ch === SHARP) { | |
number += replacement; | |
} | |
} | |
if (hasGroup) { | |
number = groupInteger(number, start, Math.max(end, integerLength + start - 1), numberFormat); | |
} | |
if (end >= start) { | |
number += format.substring(end + 1); | |
} | |
if (isCurrency || isPercent) { | |
value = EMPTY; | |
for (idx = 0, length = number.length; idx < length; idx++) { | |
ch = number.charAt(idx); | |
value += ch === '$' || ch === '%' ? symbol : ch; | |
} | |
number = value; | |
} | |
length = literals.length; | |
if (length) { | |
for (idx = 0; idx < length; idx++) { | |
number = number.replace(PLACEHOLDER, literals[idx]); | |
} | |
} | |
} | |
return number; | |
} | |
var groupInteger = function (number, start, end, numberFormat) { | |
var decimalIndex = number.indexOf(numberFormat[POINT]); | |
var groupSizes = numberFormat.groupSize.slice(); | |
var groupSize = groupSizes.shift(); | |
var integer, integerLength; | |
var idx, parts, value; | |
var newGroupSize; | |
end = decimalIndex !== -1 ? decimalIndex : end + 1; | |
integer = number.substring(start, end); | |
integerLength = integer.length; | |
if (integerLength >= groupSize) { | |
idx = integerLength; | |
parts = []; | |
while (idx > -1) { | |
value = integer.substring(idx - groupSize, idx); | |
if (value) { | |
parts.push(value); | |
} | |
idx -= groupSize; | |
newGroupSize = groupSizes.shift(); | |
groupSize = newGroupSize !== undefined ? newGroupSize : groupSize; | |
if (groupSize === 0) { | |
parts.push(integer.substring(0, idx)); | |
break; | |
} | |
} | |
integer = parts.reverse().join(numberFormat[COMMA]); | |
number = number.substring(0, start) + integer + number.substring(end); | |
} | |
return number; | |
}; | |
var round = function (value, precision) { | |
precision = precision || 0; | |
value = value.toString().split('e'); | |
value = Math.round(+(value[0] + 'e' + (value[1] ? +value[1] + precision : precision))); | |
value = value.toString().split('e'); | |
value = +(value[0] + 'e' + (value[1] ? +value[1] - precision : -precision)); | |
return value.toFixed(precision); | |
}; | |
var toString = function (value, fmt, culture) { | |
if (fmt) { | |
if (objectToString.call(value) === '[object Date]') { | |
return formatDate(value, fmt, culture); | |
} else if (typeof value === NUMBER) { | |
return formatNumber(value, fmt, culture); | |
} | |
} | |
return value !== undefined ? value : ''; | |
}; | |
kendo.format = function (fmt) { | |
var values = arguments; | |
return fmt.replace(formatRegExp, function (match, index, placeholderFormat) { | |
var value = values[parseInt(index, 10) + 1]; | |
return toString(value, placeholderFormat ? placeholderFormat.substring(1) : ''); | |
}); | |
}; | |
kendo._extractFormat = function (format) { | |
if (format.slice(0, 3) === '{0:') { | |
format = format.slice(3, format.length - 1); | |
} | |
return format; | |
}; | |
kendo._activeElement = function () { | |
try { | |
return document.activeElement; | |
} catch (e) { | |
return document.documentElement.activeElement; | |
} | |
}; | |
kendo._round = round; | |
kendo.toString = toString; | |
}()); | |
(function () { | |
var nonBreakingSpaceRegExp = /\u00A0/g, exponentRegExp = /[eE][\-+]?[0-9]+/, shortTimeZoneRegExp = /[+|\-]\d{1,2}/, longTimeZoneRegExp = /[+|\-]\d{1,2}:?\d{2}/, dateRegExp = /^\/Date\((.*?)\)\/$/, offsetRegExp = /[+-]\d*/, formatsSequence = [ | |
'G', | |
'g', | |
'd', | |
'F', | |
'D', | |
'y', | |
'm', | |
'T', | |
't' | |
], numberRegExp = { | |
2: /^\d{1,2}/, | |
3: /^\d{1,3}/, | |
4: /^\d{4}/ | |
}, objectToString = {}.toString; | |
function outOfRange(value, start, end) { | |
return !(value >= start && value <= end); | |
} | |
function designatorPredicate(designator) { | |
return designator.charAt(0); | |
} | |
function mapDesignators(designators) { | |
return $.map(designators, designatorPredicate); | |
} | |
function adjustDST(date, hours) { | |
if (!hours && date.getHours() === 23) { | |
date.setHours(date.getHours() + 2); | |
} | |
} | |
function lowerArray(data) { | |
var idx = 0, length = data.length, array = []; | |
for (; idx < length; idx++) { | |
array[idx] = (data[idx] + '').toLowerCase(); | |
} | |
return array; | |
} | |
function lowerLocalInfo(localInfo) { | |
var newLocalInfo = {}, property; | |
for (property in localInfo) { | |
newLocalInfo[property] = lowerArray(localInfo[property]); | |
} | |
return newLocalInfo; | |
} | |
function parseExact(value, format, culture) { | |
if (!value) { | |
return null; | |
} | |
var lookAhead = function (match) { | |
var i = 0; | |
while (format[idx] === match) { | |
i++; | |
idx++; | |
} | |
if (i > 0) { | |
idx -= 1; | |
} | |
return i; | |
}, getNumber = function (size) { | |
var rg = numberRegExp[size] || new RegExp('^\\d{1,' + size + '}'), match = value.substr(valueIdx, size).match(rg); | |
if (match) { | |
match = match[0]; | |
valueIdx += match.length; | |
return parseInt(match, 10); | |
} | |
return null; | |
}, getIndexByName = function (names, lower) { | |
var i = 0, length = names.length, name, nameLength, matchLength = 0, matchIdx = 0, subValue; | |
for (; i < length; i++) { | |
name = names[i]; | |
nameLength = name.length; | |
subValue = value.substr(valueIdx, nameLength); | |
if (lower) { | |
subValue = subValue.toLowerCase(); | |
} | |
if (subValue == name && nameLength > matchLength) { | |
matchLength = nameLength; | |
matchIdx = i; | |
} | |
} | |
if (matchLength) { | |
valueIdx += matchLength; | |
return matchIdx + 1; | |
} | |
return null; | |
}, checkLiteral = function () { | |
var result = false; | |
if (value.charAt(valueIdx) === format[idx]) { | |
valueIdx++; | |
result = true; | |
} | |
return result; | |
}, calendar = culture.calendars.standard, year = null, month = null, day = null, hours = null, minutes = null, seconds = null, milliseconds = null, idx = 0, valueIdx = 0, literal = false, date = new Date(), twoDigitYearMax = calendar.twoDigitYearMax || 2029, defaultYear = date.getFullYear(), ch, count, length, pattern, pmHour, UTC, matches, amDesignators, pmDesignators, hoursOffset, minutesOffset, hasTime, match; | |
if (!format) { | |
format = 'd'; | |
} | |
pattern = calendar.patterns[format]; | |
if (pattern) { | |
format = pattern; | |
} | |
format = format.split(''); | |
length = format.length; | |
for (; idx < length; idx++) { | |
ch = format[idx]; | |
if (literal) { | |
if (ch === '\'') { | |
literal = false; | |
} else { | |
checkLiteral(); | |
} | |
} else { | |
if (ch === 'd') { | |
count = lookAhead('d'); | |
if (!calendar._lowerDays) { | |
calendar._lowerDays = lowerLocalInfo(calendar.days); | |
} | |
if (day !== null && count > 2) { | |
continue; | |
} | |
day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? 'namesAbbr' : 'names'], true); | |
if (day === null || outOfRange(day, 1, 31)) { | |
return null; | |
} | |
} else if (ch === 'M') { | |
count = lookAhead('M'); | |
if (!calendar._lowerMonths) { | |
calendar._lowerMonths = lowerLocalInfo(calendar.months); | |
} | |
month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true); | |
if (month === null || outOfRange(month, 1, 12)) { | |
return null; | |
} | |
month -= 1; | |
} else if (ch === 'y') { | |
count = lookAhead('y'); | |
year = getNumber(count); | |
if (year === null) { | |
return null; | |
} | |
if (count == 2) { | |
if (typeof twoDigitYearMax === 'string') { | |
twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10); | |
} | |
year = defaultYear - defaultYear % 100 + year; | |
if (year > twoDigitYearMax) { | |
year -= 100; | |
} | |
} | |
} else if (ch === 'h') { | |
lookAhead('h'); | |
hours = getNumber(2); | |
if (hours == 12) { | |
hours = 0; | |
} | |
if (hours === null || outOfRange(hours, 0, 11)) { | |
return null; | |
} | |
} else if (ch === 'H') { | |
lookAhead('H'); | |
hours = getNumber(2); | |
if (hours === null || outOfRange(hours, 0, 23)) { | |
return null; | |
} | |
} else if (ch === 'm') { | |
lookAhead('m'); | |
minutes = getNumber(2); | |
if (minutes === null || outOfRange(minutes, 0, 59)) { | |
return null; | |
} | |
} else if (ch === 's') { | |
lookAhead('s'); | |
seconds = getNumber(2); | |
if (seconds === null || outOfRange(seconds, 0, 59)) { | |
return null; | |
} | |
} else if (ch === 'f') { | |
count = lookAhead('f'); | |
match = value.substr(valueIdx, count).match(numberRegExp[3]); | |
milliseconds = getNumber(count); | |
if (milliseconds !== null) { | |
milliseconds = parseFloat('0.' + match[0], 10); | |
milliseconds = kendo._round(milliseconds, 3); | |
milliseconds *= 1000; | |
} | |
if (milliseconds === null || outOfRange(milliseconds, 0, 999)) { | |
return null; | |
} | |
} else if (ch === 't') { | |
count = lookAhead('t'); | |
amDesignators = calendar.AM; | |
pmDesignators = calendar.PM; | |
if (count === 1) { | |
amDesignators = mapDesignators(amDesignators); | |
pmDesignators = mapDesignators(pmDesignators); | |
} | |
pmHour = getIndexByName(pmDesignators); | |
if (!pmHour && !getIndexByName(amDesignators)) { | |
return null; | |
} | |
} else if (ch === 'z') { | |
UTC = true; | |
count = lookAhead('z'); | |
if (value.substr(valueIdx, 1) === 'Z') { | |
checkLiteral(); | |
continue; | |
} | |
matches = value.substr(valueIdx, 6).match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp); | |
if (!matches) { | |
return null; | |
} | |
matches = matches[0].split(':'); | |
hoursOffset = matches[0]; | |
minutesOffset = matches[1]; | |
if (!minutesOffset && hoursOffset.length > 3) { | |
valueIdx = hoursOffset.length - 2; | |
minutesOffset = hoursOffset.substring(valueIdx); | |
hoursOffset = hoursOffset.substring(0, valueIdx); | |
} | |
hoursOffset = parseInt(hoursOffset, 10); | |
if (outOfRange(hoursOffset, -12, 13)) { | |
return null; | |
} | |
if (count > 2) { | |
minutesOffset = parseInt(minutesOffset, 10); | |
if (isNaN(minutesOffset) || outOfRange(minutesOffset, 0, 59)) { | |
return null; | |
} | |
} | |
} else if (ch === '\'') { | |
literal = true; | |
checkLiteral(); | |
} else if (!checkLiteral()) { | |
return null; | |
} | |
} | |
} | |
hasTime = hours !== null || minutes !== null || seconds || null; | |
if (year === null && month === null && day === null && hasTime) { | |
year = defaultYear; | |
month = date.getMonth(); | |
day = date.getDate(); | |
} else { | |
if (year === null) { | |
year = defaultYear; | |
} | |
if (day === null) { | |
day = 1; | |
} | |
} | |
if (pmHour && hours < 12) { | |
hours += 12; | |
} | |
if (UTC) { | |
if (hoursOffset) { | |
hours += -hoursOffset; | |
} | |
if (minutesOffset) { | |
minutes += -minutesOffset; | |
} | |
value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds)); | |
} else { | |
value = new Date(year, month, day, hours, minutes, seconds, milliseconds); | |
adjustDST(value, hours); | |
} | |
if (year < 100) { | |
value.setFullYear(year); | |
} | |
if (value.getDate() !== day && UTC === undefined) { | |
return null; | |
} | |
return value; | |
} | |
function parseMicrosoftFormatOffset(offset) { | |
var sign = offset.substr(0, 1) === '-' ? -1 : 1; | |
offset = offset.substring(1); | |
offset = parseInt(offset.substr(0, 2), 10) * 60 + parseInt(offset.substring(2), 10); | |
return sign * offset; | |
} | |
kendo.parseDate = function (value, formats, culture) { | |
if (objectToString.call(value) === '[object Date]') { | |
return value; | |
} | |
var idx = 0; | |
var date = null; | |
var length, patterns; | |
var tzoffset; | |
if (value && value.indexOf('/D') === 0) { | |
date = dateRegExp.exec(value); | |
if (date) { | |
date = date[1]; | |
tzoffset = offsetRegExp.exec(date.substring(1)); | |
date = new Date(parseInt(date, 10)); | |
if (tzoffset) { | |
tzoffset = parseMicrosoftFormatOffset(tzoffset[0]); | |
date = kendo.timezone.apply(date, 0); | |
date = kendo.timezone.convert(date, 0, -1 * tzoffset); | |
} | |
return date; | |
} | |
} | |
culture = kendo.getCulture(culture); | |
if (!formats) { | |
formats = []; | |
patterns = culture.calendar.patterns; | |
length = formatsSequence.length; | |
for (; idx < length; idx++) { | |
formats[idx] = patterns[formatsSequence[idx]]; | |
} | |
idx = 0; | |
formats = [ | |
'yyyy/MM/dd HH:mm:ss', | |
'yyyy/MM/dd HH:mm', | |
'yyyy/MM/dd', | |
'ddd MMM dd yyyy HH:mm:ss', | |
'yyyy-MM-ddTHH:mm:ss.fffffffzzz', | |
'yyyy-MM-ddTHH:mm:ss.fffzzz', | |
'yyyy-MM-ddTHH:mm:sszzz', | |
'yyyy-MM-ddTHH:mm:ss.fffffff', | |
'yyyy-MM-ddTHH:mm:ss.fff', | |
'yyyy-MM-ddTHH:mmzzz', | |
'yyyy-MM-ddTHH:mmzz', | |
'yyyy-MM-ddTHH:mm:ss', | |
'yyyy-MM-ddTHH:mm', | |
'yyyy-MM-dd HH:mm:ss', | |
'yyyy-MM-dd HH:mm', | |
'yyyy-MM-dd', | |
'HH:mm:ss', | |
'HH:mm' | |
].concat(formats); | |
} | |
formats = isArray(formats) ? formats : [formats]; | |
length = formats.length; | |
for (; idx < length; idx++) { | |
date = parseExact(value, formats[idx], culture); | |
if (date) { | |
return date; | |
} | |
} | |
return date; | |
}; | |
kendo.parseInt = function (value, culture) { | |
var result = kendo.parseFloat(value, culture); | |
if (result) { | |
result = result | 0; | |
} | |
return result; | |
}; | |
kendo.parseFloat = function (value, culture, format) { | |
if (!value && value !== 0) { | |
return null; | |
} | |
if (typeof value === NUMBER) { | |
return value; | |
} | |
value = value.toString(); | |
culture = kendo.getCulture(culture); | |
var number = culture.numberFormat, percent = number.percent, currency = number.currency, symbol = currency.symbol, percentSymbol = percent.symbol, negative = value.indexOf('-'), parts, isPercent; | |
if (exponentRegExp.test(value)) { | |
value = parseFloat(value.replace(number['.'], '.')); | |
if (isNaN(value)) { | |
value = null; | |
} | |
return value; | |
} | |
if (negative > 0) { | |
return null; | |
} else { | |
negative = negative > -1; | |
} | |
if (value.indexOf(symbol) > -1 || format && format.toLowerCase().indexOf('c') > -1) { | |
number = currency; | |
parts = number.pattern[0].replace('$', symbol).split('n'); | |
if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) { | |
value = value.replace(parts[0], '').replace(parts[1], ''); | |
negative = true; | |
} | |
} else if (value.indexOf(percentSymbol) > -1) { | |
isPercent = true; | |
number = percent; | |
symbol = percentSymbol; | |
} | |
value = value.replace('-', '').replace(symbol, '').replace(nonBreakingSpaceRegExp, ' ').split(number[','].replace(nonBreakingSpaceRegExp, ' ')).join('').replace(number['.'], '.'); | |
value = parseFloat(value); | |
if (isNaN(value)) { | |
value = null; | |
} else if (negative) { | |
value *= -1; | |
} | |
if (value && isPercent) { | |
value /= 100; | |
} | |
return value; | |
}; | |
}()); | |
function getShadows(element) { | |
var shadow = element.css(kendo.support.transitions.css + 'box-shadow') || element.css('box-shadow'), radius = shadow ? shadow.match(boxShadowRegExp) || [ | |
0, | |
0, | |
0, | |
0, | |
0 | |
] : [ | |
0, | |
0, | |
0, | |
0, | |
0 | |
], blur = math.max(+radius[3], +(radius[4] || 0)); | |
return { | |
left: -radius[1] + blur, | |
right: +radius[1] + blur, | |
bottom: +radius[2] + blur | |
}; | |
} | |
function wrap(element, autosize) { | |
var browser = support.browser, percentage, isRtl = element.css('direction') == 'rtl'; | |
if (!element.parent().hasClass('k-animation-container')) { | |
var shadows = getShadows(element), width = element[0].style.width, height = element[0].style.height, percentWidth = percentRegExp.test(width), percentHeight = percentRegExp.test(height); | |
if (browser.opera) { | |
shadows.left = shadows.right = shadows.bottom = 5; | |
} | |
percentage = percentWidth || percentHeight; | |
if (!percentWidth && (!autosize || autosize && width)) { | |
width = element.outerWidth(); | |
} | |
if (!percentHeight && (!autosize || autosize && height)) { | |
height = element.outerHeight(); | |
} | |
element.wrap($('<div/>').addClass('k-animation-container').css({ | |
width: width, | |
height: height, | |
marginLeft: shadows.left * (isRtl ? 1 : -1), | |
paddingLeft: shadows.left, | |
paddingRight: shadows.right, | |
paddingBottom: shadows.bottom | |
})); | |
if (percentage) { | |
element.css({ | |
width: '100%', | |
height: '100%', | |
boxSizing: 'border-box', | |
mozBoxSizing: 'border-box', | |
webkitBoxSizing: 'border-box' | |
}); | |
} | |
} else { | |
var wrapper = element.parent('.k-animation-container'), wrapperStyle = wrapper[0].style; | |
if (wrapper.is(':hidden')) { | |
wrapper.show(); | |
} | |
percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height); | |
if (!percentage) { | |
wrapper.css({ | |
width: element.outerWidth(), | |
height: element.outerHeight(), | |
boxSizing: 'content-box', | |
mozBoxSizing: 'content-box', | |
webkitBoxSizing: 'content-box' | |
}); | |
} | |
} | |
if (browser.msie && math.floor(browser.version) <= 7) { | |
element.css({ zoom: 1 }); | |
element.children('.k-menu').width(element.width()); | |
} | |
return element.parent(); | |
} | |
function deepExtend(destination) { | |
var i = 1, length = arguments.length; | |
for (i = 1; i < length; i++) { | |
deepExtendOne(destination, arguments[i]); | |
} | |
return destination; | |
} | |
function deepExtendOne(destination, source) { | |
var ObservableArray = kendo.data.ObservableArray, LazyObservableArray = kendo.data.LazyObservableArray, DataSource = kendo.data.DataSource, HierarchicalDataSource = kendo.data.HierarchicalDataSource, property, propValue, propType, propInit, destProp; | |
for (property in source) { | |
propValue = source[property]; | |
propType = typeof propValue; | |
if (propType === OBJECT && propValue !== null) { | |
propInit = propValue.constructor; | |
} else { | |
propInit = null; | |
} | |
if (propInit && propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray && propInit !== DataSource && propInit !== HierarchicalDataSource) { | |
if (propValue instanceof Date) { | |
destination[property] = new Date(propValue.getTime()); | |
} else if (isFunction(propValue.clone)) { | |
destination[property] = propValue.clone(); | |
} else { | |
destProp = destination[property]; | |
if (typeof destProp === OBJECT) { | |
destination[property] = destProp || {}; | |
} else { | |
destination[property] = {}; | |
} | |
deepExtendOne(destination[property], propValue); | |
} | |
} else if (propType !== UNDEFINED) { | |
destination[property] = propValue; | |
} | |
} | |
return destination; | |
} | |
function testRx(agent, rxs, dflt) { | |
for (var rx in rxs) { | |
if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) { | |
return rx; | |
} | |
} | |
return dflt !== undefined ? dflt : agent; | |
} | |
function toHyphens(str) { | |
return str.replace(/([a-z][A-Z])/g, function (g) { | |
return g.charAt(0) + '-' + g.charAt(1).toLowerCase(); | |
}); | |
} | |
function toCamelCase(str) { | |
return str.replace(/\-(\w)/g, function (strMatch, g1) { | |
return g1.toUpperCase(); | |
}); | |
} | |
function getComputedStyles(element, properties) { | |
var styles = {}, computedStyle; | |
if (document.defaultView && document.defaultView.getComputedStyle) { | |
computedStyle = document.defaultView.getComputedStyle(element, ''); | |
if (properties) { | |
$.each(properties, function (idx, value) { | |
styles[value] = computedStyle.getPropertyValue(value); | |
}); | |
} | |
} else { | |
computedStyle = element.currentStyle; | |
if (properties) { | |
$.each(properties, function (idx, value) { | |
styles[value] = computedStyle[toCamelCase(value)]; | |
}); | |
} | |
} | |
if (!kendo.size(styles)) { | |
styles = computedStyle; | |
} | |
return styles; | |
} | |
function isScrollable(element) { | |
if (element && element.className && typeof element.className === 'string' && element.className.indexOf('k-auto-scrollable') > -1) { | |
return true; | |
} | |
var overflow = getComputedStyles(element, ['overflow']).overflow; | |
return overflow == 'auto' || overflow == 'scroll'; | |
} | |
function scrollLeft(element, value) { | |
var webkit = support.browser.webkit; | |
var mozila = support.browser.mozilla; | |
var el = element instanceof $ ? element[0] : element; | |
var isRtl; | |
if (!element) { | |
return; | |
} | |
isRtl = support.isRtl(element); | |
if (value !== undefined) { | |
if (isRtl && webkit) { | |
el.scrollLeft = el.scrollWidth - el.clientWidth - value; | |
} else if (isRtl && mozila) { | |
el.scrollLeft = -value; | |
} else { | |
el.scrollLeft = value; | |
} | |
} else { | |
if (isRtl && webkit) { | |
return el.scrollWidth - el.clientWidth - el.scrollLeft; | |
} else { | |
return Math.abs(el.scrollLeft); | |
} | |
} | |
} | |
(function () { | |
support._scrollbar = undefined; | |
support.scrollbar = function (refresh) { | |
if (!isNaN(support._scrollbar) && !refresh) { | |
return support._scrollbar; | |
} else { | |
var div = document.createElement('div'), result; | |
div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block'; | |
div.innerHTML = ' '; | |
document.body.appendChild(div); | |
support._scrollbar = result = div.offsetWidth - div.scrollWidth; | |
document.body.removeChild(div); | |
return result; | |
} | |
}; | |
support.isRtl = function (element) { | |
return $(element).closest('.k-rtl').length > 0; | |
}; | |
var table = document.createElement('table'); | |
try { | |
table.innerHTML = '<tr><td></td></tr>'; | |
support.tbodyInnerHtml = true; | |
} catch (e) { | |
support.tbodyInnerHtml = false; | |
} | |
support.touch = 'ontouchstart' in window; | |
support.msPointers = window.MSPointerEvent; | |
support.pointers = window.PointerEvent; | |
var transitions = support.transitions = false, transforms = support.transforms = false, elementProto = 'HTMLElement' in window ? HTMLElement.prototype : []; | |
support.hasHW3D = 'WebKitCSSMatrix' in window && 'm11' in new window.WebKitCSSMatrix() || 'MozPerspective' in document.documentElement.style || 'msPerspective' in document.documentElement.style; | |
each([ | |
'Moz', | |
'webkit', | |
'O', | |
'ms' | |
], function () { | |
var prefix = this.toString(), hasTransitions = typeof table.style[prefix + 'Transition'] === STRING; | |
if (hasTransitions || typeof table.style[prefix + 'Transform'] === STRING) { | |
var lowPrefix = prefix.toLowerCase(); | |
transforms = { | |
css: lowPrefix != 'ms' ? '-' + lowPrefix + '-' : '', | |
prefix: prefix, | |
event: lowPrefix === 'o' || lowPrefix === 'webkit' ? lowPrefix : '' | |
}; | |
if (hasTransitions) { | |
transitions = transforms; | |
transitions.event = transitions.event ? transitions.event + 'TransitionEnd' : 'transitionend'; | |
} | |
return false; | |
} | |
}); | |
table = null; | |
support.transforms = transforms; | |
support.transitions = transitions; | |
support.devicePixelRatio = window.devicePixelRatio === undefined ? 1 : window.devicePixelRatio; | |
try { | |
support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth; | |
support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight; | |
} catch (e) { | |
support.screenWidth = window.screen.availWidth; | |
support.screenHeight = window.screen.availHeight; | |
} | |
support.detectOS = function (ua) { | |
var os = false, minorVersion, match = [], notAndroidPhone = !/mobile safari/i.test(ua), agentRxs = { | |
wp: /(Windows Phone(?: OS)?)\s(\d+)\.(\d+(\.\d+)?)/, | |
fire: /(Silk)\/(\d+)\.(\d+(\.\d+)?)/, | |
android: /(Android|Android.*(?:Opera|Firefox).*?\/)\s*(\d+)\.(\d+(\.\d+)?)/, | |
iphone: /(iPhone|iPod).*OS\s+(\d+)[\._]([\d\._]+)/, | |
ipad: /(iPad).*OS\s+(\d+)[\._]([\d_]+)/, | |
meego: /(MeeGo).+NokiaBrowser\/(\d+)\.([\d\._]+)/, | |
webos: /(webOS)\/(\d+)\.(\d+(\.\d+)?)/, | |
blackberry: /(BlackBerry|BB10).*?Version\/(\d+)\.(\d+(\.\d+)?)/, | |
playbook: /(PlayBook).*?Tablet\s*OS\s*(\d+)\.(\d+(\.\d+)?)/, | |
windows: /(MSIE)\s+(\d+)\.(\d+(\.\d+)?)/, | |
tizen: /(tizen).*?Version\/(\d+)\.(\d+(\.\d+)?)/i, | |
sailfish: /(sailfish).*rv:(\d+)\.(\d+(\.\d+)?).*firefox/i, | |
ffos: /(Mobile).*rv:(\d+)\.(\d+(\.\d+)?).*Firefox/ | |
}, osRxs = { | |
ios: /^i(phone|pad|pod)$/i, | |
android: /^android|fire$/i, | |
blackberry: /^blackberry|playbook/i, | |
windows: /windows/, | |
wp: /wp/, | |
flat: /sailfish|ffos|tizen/i, | |
meego: /meego/ | |
}, formFactorRxs = { tablet: /playbook|ipad|fire/i }, browserRxs = { | |
omini: /Opera\sMini/i, | |
omobile: /Opera\sMobi/i, | |
firefox: /Firefox|Fennec/i, | |
mobilesafari: /version\/.*safari/i, | |
ie: /MSIE|Windows\sPhone/i, | |
chrome: /chrome|crios/i, | |
webkit: /webkit/i | |
}; | |
for (var agent in agentRxs) { | |
if (agentRxs.hasOwnProperty(agent)) { | |
match = ua.match(agentRxs[agent]); | |
if (match) { | |
if (agent == 'windows' && 'plugins' in navigator) { | |
return false; | |
} | |
os = {}; | |
os.device = agent; | |
os.tablet = testRx(agent, formFactorRxs, false); | |
os.browser = testRx(ua, browserRxs, 'default'); | |
os.name = testRx(agent, osRxs); | |
os[os.name] = true; | |
os.majorVersion = match[2]; | |
os.minorVersion = match[3].replace('_', '.'); | |
minorVersion = os.minorVersion.replace('.', '').substr(0, 2); | |
os.flatVersion = os.majorVersion + minorVersion + new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'); | |
os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; | |
os.appMode = window.navigator.standalone || /file|local|wmapp/.test(window.location.protocol) || os.cordova; | |
if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) { | |
os.tablet = agent; | |
} | |
break; | |
} | |
} | |
} | |
return os; | |
}; | |
var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent); | |
support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0; | |
support.kineticScrollNeeded = mobileOS && (support.touch || support.msPointers || support.pointers); | |
support.hasNativeScrolling = false; | |
if (mobileOS.ios || mobileOS.android && mobileOS.majorVersion > 2 || mobileOS.wp) { | |
support.hasNativeScrolling = mobileOS; | |
} | |
support.delayedClick = function () { | |
if (support.touch) { | |
if (mobileOS.ios) { | |
return true; | |
} | |
if (mobileOS.android) { | |
if (!support.browser.chrome) { | |
return true; | |
} | |
if (support.browser.version < 32) { | |
return false; | |
} | |
return !($('meta[name=viewport]').attr('content') || '').match(/user-scalable=no/i); | |
} | |
} | |
return false; | |
}; | |
support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android); | |
support.detectBrowser = function (ua) { | |
var browser = false, match = [], browserRxs = { | |
edge: /(edge)[ \/]([\w.]+)/i, | |
webkit: /(chrome)[ \/]([\w.]+)/i, | |
safari: /(webkit)[ \/]([\w.]+)/i, | |
opera: /(opera)(?:.*version|)[ \/]([\w.]+)/i, | |
msie: /(msie\s|trident.*? rv:)([\w.]+)/i, | |
mozilla: /(mozilla)(?:.*? rv:([\w.]+)|)/i | |
}; | |
for (var agent in browserRxs) { | |
if (browserRxs.hasOwnProperty(agent)) { | |
match = ua.match(browserRxs[agent]); | |
if (match) { | |
browser = {}; | |
browser[agent] = true; | |
browser[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true; | |
browser.version = parseInt(document.documentMode || match[2], 10); | |
break; | |
} | |
} | |
} | |
return browser; | |
}; | |
support.browser = support.detectBrowser(navigator.userAgent); | |
support.detectClipboardAccess = function () { | |
var commands = { | |
copy: document.queryCommandSupported ? document.queryCommandSupported('copy') : false, | |
cut: document.queryCommandSupported ? document.queryCommandSupported('cut') : false, | |
paste: document.queryCommandSupported ? document.queryCommandSupported('paste') : false | |
}; | |
if (support.browser.chrome) { | |
commands.paste = false; | |
if (support.browser.version >= 43) { | |
commands.copy = true; | |
commands.cut = true; | |
} | |
} | |
return commands; | |
}; | |
support.clipboard = support.detectClipboardAccess(); | |
support.zoomLevel = function () { | |
try { | |
var browser = support.browser; | |
var ie11WidthCorrection = 0; | |
var docEl = document.documentElement; | |
if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) { | |
ie11WidthCorrection = support.scrollbar(); | |
} | |
return support.touch ? docEl.clientWidth / window.innerWidth : browser.msie && browser.version >= 10 ? ((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth : 1; | |
} catch (e) { | |
return 1; | |
} | |
}; | |
support.cssBorderSpacing = typeof document.documentElement.style.borderSpacing != 'undefined' && !(support.browser.msie && support.browser.version < 8); | |
(function (browser) { | |
var cssClass = '', docElement = $(document.documentElement), majorVersion = parseInt(browser.version, 10); | |
if (browser.msie) { | |
cssClass = 'ie'; | |
} else if (browser.mozilla) { | |
cssClass = 'ff'; | |
} else if (browser.safari) { | |
cssClass = 'safari'; | |
} else if (browser.webkit) { | |
cssClass = 'webkit'; | |
} else if (browser.opera) { | |
cssClass = 'opera'; | |
} else if (browser.edge) { | |
cssClass = 'edge'; | |
} | |
if (cssClass) { | |
cssClass = 'k-' + cssClass + ' k-' + cssClass + majorVersion; | |
} | |
if (support.mobileOS) { | |
cssClass += ' k-mobile'; | |
} | |
docElement.addClass(cssClass); | |
}(support.browser)); | |
support.eventCapture = document.documentElement.addEventListener; | |
var input = document.createElement('input'); | |
support.placeholder = 'placeholder' in input; | |
support.propertyChangeEvent = 'onpropertychange' in input; | |
support.input = function () { | |
var types = [ | |
'number', | |
'date', | |
'time', | |
'month', | |
'week', | |
'datetime', | |
'datetime-local' | |
]; | |
var length = types.length; | |
var value = 'test'; | |
var result = {}; | |
var idx = 0; | |
var type; | |
for (; idx < length; idx++) { | |
type = types[idx]; | |
input.setAttribute('type', type); | |
input.value = value; | |
result[type.replace('-', '')] = input.type !== 'text' && input.value !== value; | |
} | |
return result; | |
}(); | |
input.style.cssText = 'float:left;'; | |
support.cssFloat = !!input.style.cssFloat; | |
input = null; | |
support.stableSort = function () { | |
var threshold = 513; | |
var sorted = [{ | |
index: 0, | |
field: 'b' | |
}]; | |
for (var i = 1; i < threshold; i++) { | |
sorted.push({ | |
index: i, | |
field: 'a' | |
}); | |
} | |
sorted.sort(function (a, b) { | |
return a.field > b.field ? 1 : a.field < b.field ? -1 : 0; | |
}); | |
return sorted[0].index === 1; | |
}(); | |
support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector || elementProto.oMatchesSelector || elementProto.matchesSelector || elementProto.matches || function (selector) { | |
var nodeList = document.querySelectorAll ? (this.parentNode || document).querySelectorAll(selector) || [] : $(selector), i = nodeList.length; | |
while (i--) { | |
if (nodeList[i] == this) { | |
return true; | |
} | |
} | |
return false; | |
}; | |
support.pushState = window.history && window.history.pushState; | |
var documentMode = document.documentMode; | |
support.hashChange = 'onhashchange' in window && !(support.browser.msie && (!documentMode || documentMode <= 8)); | |
support.customElements = 'registerElement' in window.document; | |
}()); | |
function size(obj) { | |
var result = 0, key; | |
for (key in obj) { | |
if (obj.hasOwnProperty(key) && key != 'toJSON') { | |
result++; | |
} | |
} | |
return result; | |
} | |
function getOffset(element, type, positioned) { | |
if (!type) { | |
type = 'offset'; | |
} | |
var result = element[type](); | |
if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) { | |
result.top -= window.pageYOffset - document.documentElement.scrollTop; | |
result.left -= window.pageXOffset - document.documentElement.scrollLeft; | |
} | |
return result; | |
} | |
var directions = { | |
left: { reverse: 'right' }, | |
right: { reverse: 'left' }, | |
down: { reverse: 'up' }, | |
up: { reverse: 'down' }, | |
top: { reverse: 'bottom' }, | |
bottom: { reverse: 'top' }, | |
'in': { reverse: 'out' }, | |
out: { reverse: 'in' } | |
}; | |
function parseEffects(input) { | |
var effects = {}; | |
each(typeof input === 'string' ? input.split(' ') : input, function (idx) { | |
effects[idx] = this; | |
}); | |
return effects; | |
} | |
function fx(element) { | |
return new kendo.effects.Element(element); | |
} | |
var effects = {}; | |
$.extend(effects, { | |
enabled: true, | |
Element: function (element) { | |
this.element = $(element); | |
}, | |
promise: function (element, options) { | |
if (!element.is(':visible')) { | |
element.css({ display: element.data('olddisplay') || 'block' }).css('display'); | |
} | |
if (options.hide) { | |
element.data('olddisplay', element.css('display')).hide(); | |
} | |
if (options.init) { | |
options.init(); | |
} | |
if (options.completeCallback) { | |
options.completeCallback(element); | |
} | |
element.dequeue(); | |
}, | |
disable: function () { | |
this.enabled = false; | |
this.promise = this.promiseShim; | |
}, | |
enable: function () { | |
this.enabled = true; | |
this.promise = this.animatedPromise; | |
} | |
}); | |
effects.promiseShim = effects.promise; | |
function prepareAnimationOptions(options, duration, reverse, complete) { | |
if (typeof options === STRING) { | |
if (isFunction(duration)) { | |
complete = duration; | |
duration = 400; | |
reverse = false; | |
} | |
if (isFunction(reverse)) { | |
complete = reverse; | |
reverse = false; | |
} | |
if (typeof duration === BOOLEAN) { | |
reverse = duration; | |
duration = 400; | |
} | |
options = { | |
effects: options, | |
duration: duration, | |
reverse: reverse, | |
complete: complete | |
}; | |
} | |
return extend({ | |
effects: {}, | |
duration: 400, | |
reverse: false, | |
init: noop, | |
teardown: noop, | |
hide: false | |
}, options, { | |
completeCallback: options.complete, | |
complete: noop | |
}); | |
} | |
function animate(element, options, duration, reverse, complete) { | |
var idx = 0, length = element.length, instance; | |
for (; idx < length; idx++) { | |
instance = $(element[idx]); | |
instance.queue(function () { | |
effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete)); | |
}); | |
} | |
return element; | |
} | |
function toggleClass(element, classes, options, add) { | |
if (classes) { | |
classes = classes.split(' '); | |
each(classes, function (idx, value) { | |
element.toggleClass(value, add); | |
}); | |
} | |
return element; | |
} | |
if (!('kendoAnimate' in $.fn)) { | |
extend($.fn, { | |
kendoStop: function (clearQueue, gotoEnd) { | |
return this.stop(clearQueue, gotoEnd); | |
}, | |
kendoAnimate: function (options, duration, reverse, complete) { | |
return animate(this, options, duration, reverse, complete); | |
}, | |
kendoAddClass: function (classes, options) { | |
return kendo.toggleClass(this, classes, options, true); | |
}, | |
kendoRemoveClass: function (classes, options) { | |
return kendo.toggleClass(this, classes, options, false); | |
}, | |
kendoToggleClass: function (classes, options, toggle) { | |
return kendo.toggleClass(this, classes, options, toggle); | |
} | |
}); | |
} | |
var ampRegExp = /&/g, ltRegExp = /</g, quoteRegExp = /"/g, aposRegExp = /'/g, gtRegExp = />/g; | |
function htmlEncode(value) { | |
return ('' + value).replace(ampRegExp, '&').replace(ltRegExp, '<').replace(gtRegExp, '>').replace(quoteRegExp, '"').replace(aposRegExp, '''); | |
} | |
var eventTarget = function (e) { | |
return e.target; | |
}; | |
if (support.touch) { | |
eventTarget = function (e) { | |
var touches = 'originalEvent' in e ? e.originalEvent.changedTouches : 'changedTouches' in e ? e.changedTouches : null; | |
return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target; | |
}; | |
each([ | |
'swipe', | |
'swipeLeft', | |
'swipeRight', | |
'swipeUp', | |
'swipeDown', | |
'doubleTap', | |
'tap' | |
], function (m, value) { | |
$.fn[value] = function (callback) { | |
return this.bind(value, callback); | |
}; | |
}); | |
} | |
if (support.touch) { | |
if (!support.mobileOS) { | |
support.mousedown = 'mousedown touchstart'; | |
support.mouseup = 'mouseup touchend'; | |
support.mousemove = 'mousemove touchmove'; | |
support.mousecancel = 'mouseleave touchcancel'; | |
support.click = 'click'; | |
support.resize = 'resize'; | |
} else { | |
support.mousedown = 'touchstart'; | |
support.mouseup = 'touchend'; | |
support.mousemove = 'touchmove'; | |
support.mousecancel = 'touchcancel'; | |
support.click = 'touchend'; | |
support.resize = 'orientationchange'; | |
} | |
} else if (support.pointers) { | |
support.mousemove = 'pointermove'; | |
support.mousedown = 'pointerdown'; | |
support.mouseup = 'pointerup'; | |
support.mousecancel = 'pointercancel'; | |
support.click = 'pointerup'; | |
support.resize = 'orientationchange resize'; | |
} else if (support.msPointers) { | |
support.mousemove = 'MSPointerMove'; | |
support.mousedown = 'MSPointerDown'; | |
support.mouseup = 'MSPointerUp'; | |
support.mousecancel = 'MSPointerCancel'; | |
support.click = 'MSPointerUp'; | |
support.resize = 'orientationchange resize'; | |
} else { | |
support.mousemove = 'mousemove'; | |
support.mousedown = 'mousedown'; | |
support.mouseup = 'mouseup'; | |
support.mousecancel = 'mouseleave'; | |
support.click = 'click'; | |
support.resize = 'resize'; | |
} | |
var wrapExpression = function (members, paramName) { | |
var result = paramName || 'd', index, idx, length, member, count = 1; | |
for (idx = 0, length = members.length; idx < length; idx++) { | |
member = members[idx]; | |
if (member !== '') { | |
index = member.indexOf('['); | |
if (index !== 0) { | |
if (index == -1) { | |
member = '.' + member; | |
} else { | |
count++; | |
member = '.' + member.substring(0, index) + ' || {})' + member.substring(index); | |
} | |
} | |
count++; | |
result += member + (idx < length - 1 ? ' || {})' : ')'); | |
} | |
} | |
return new Array(count).join('(') + result; | |
}, localUrlRe = /^([a-z]+:)?\/\//i; | |
extend(kendo, { | |
widgets: [], | |
_widgetRegisteredCallbacks: [], | |
ui: kendo.ui || {}, | |
fx: kendo.fx || fx, | |
effects: kendo.effects || effects, | |
mobile: kendo.mobile || {}, | |
data: kendo.data || {}, | |
dataviz: kendo.dataviz || {}, | |
drawing: kendo.drawing || {}, | |
spreadsheet: { messages: {} }, | |
keys: { | |
INSERT: 45, | |
DELETE: 46, | |
BACKSPACE: 8, | |
TAB: 9, | |
ENTER: 13, | |
ESC: 27, | |
LEFT: 37, | |
UP: 38, | |
RIGHT: 39, | |
DOWN: 40, | |
END: 35, | |
HOME: 36, | |
SPACEBAR: 32, | |
PAGEUP: 33, | |
PAGEDOWN: 34, | |
F2: 113, | |
F10: 121, | |
F12: 123, | |
NUMPAD_PLUS: 107, | |
NUMPAD_MINUS: 109, | |
NUMPAD_DOT: 110 | |
}, | |
support: kendo.support || support, | |
animate: kendo.animate || animate, | |
ns: '', | |
attr: function (value) { | |
return 'data-' + kendo.ns + value; | |
}, | |
getShadows: getShadows, | |
wrap: wrap, | |
deepExtend: deepExtend, | |
getComputedStyles: getComputedStyles, | |
webComponents: kendo.webComponents || [], | |
isScrollable: isScrollable, | |
scrollLeft: scrollLeft, | |
size: size, | |
toCamelCase: toCamelCase, | |
toHyphens: toHyphens, | |
getOffset: kendo.getOffset || getOffset, | |
parseEffects: kendo.parseEffects || parseEffects, | |
toggleClass: kendo.toggleClass || toggleClass, | |
directions: kendo.directions || directions, | |
Observable: Observable, | |
Class: Class, | |
Template: Template, | |
template: proxy(Template.compile, Template), | |
render: proxy(Template.render, Template), | |
stringify: proxy(JSON.stringify, JSON), | |
eventTarget: eventTarget, | |
htmlEncode: htmlEncode, | |
isLocalUrl: function (url) { | |
return url && !localUrlRe.test(url); | |
}, | |
expr: function (expression, safe, paramName) { | |
expression = expression || ''; | |
if (typeof safe == STRING) { | |
paramName = safe; | |
safe = false; | |
} | |
paramName = paramName || 'd'; | |
if (expression && expression.charAt(0) !== '[') { | |
expression = '.' + expression; | |
} | |
if (safe) { | |
expression = expression.replace(/"([^.]*)\.([^"]*)"/g, '"$1_$DOT$_$2"'); | |
expression = expression.replace(/'([^.]*)\.([^']*)'/g, '\'$1_$DOT$_$2\''); | |
expression = wrapExpression(expression.split('.'), paramName); | |
expression = expression.replace(/_\$DOT\$_/g, '.'); | |
} else { | |
expression = paramName + expression; | |
} | |
return expression; | |
}, | |
getter: function (expression, safe) { | |
var key = expression + safe; | |
return getterCache[key] = getterCache[key] || new Function('d', 'return ' + kendo.expr(expression, safe)); | |
}, | |
setter: function (expression) { | |
return setterCache[expression] = setterCache[expression] || new Function('d,value', kendo.expr(expression) + '=value'); | |
}, | |
accessor: function (expression) { | |
return { | |
get: kendo.getter(expression), | |
set: kendo.setter(expression) | |
}; | |
}, | |
guid: function () { | |
var id = '', i, random; | |
for (i = 0; i < 32; i++) { | |
random = math.random() * 16 | 0; | |
if (i == 8 || i == 12 || i == 16 || i == 20) { | |
id += '-'; | |
} | |
id += (i == 12 ? 4 : i == 16 ? random & 3 | 8 : random).toString(16); | |
} | |
return id; | |
}, | |
roleSelector: function (role) { | |
return role.replace(/(\S+)/g, '[' + kendo.attr('role') + '=$1],').slice(0, -1); | |
}, | |
directiveSelector: function (directives) { | |
var selectors = directives.split(' '); | |
if (selectors) { | |
for (var i = 0; i < selectors.length; i++) { | |
if (selectors[i] != 'view') { | |
selectors[i] = selectors[i].replace(/(\w*)(view|bar|strip|over)$/, '$1-$2'); | |
} | |
} | |
} | |
return selectors.join(' ').replace(/(\S+)/g, 'kendo-mobile-$1,').slice(0, -1); | |
}, | |
triggeredByInput: function (e) { | |
return /^(label|input|textarea|select)$/i.test(e.target.tagName); | |
}, | |
onWidgetRegistered: function (callback) { | |
for (var i = 0, len = kendo.widgets.length; i < len; i++) { | |
callback(kendo.widgets[i]); | |
} | |
kendo._widgetRegisteredCallbacks.push(callback); | |
}, | |
logToConsole: function (message, type) { | |
var console = window.console; | |
if (!kendo.suppressLog && typeof console != 'undefined' && console.log) { | |
console[type || 'log'](message); | |
} | |
} | |
}); | |
var Widget = Observable.extend({ | |
init: function (element, options) { | |
var that = this; | |
that.element = kendo.jQuery(element).handler(that); | |
that.angular('init', options); | |
Observable.fn.init.call(that); | |
var dataSource = options ? options.dataSource : null; | |
if (dataSource) { | |
options = extend({}, options, { dataSource: {} }); | |
} | |
options = that.options = extend(true, {}, that.options, options); | |
if (dataSource) { | |
options.dataSource = dataSource; | |
} | |
if (!that.element.attr(kendo.attr('role'))) { | |
that.element.attr(kendo.attr('role'), (options.name || '').toLowerCase()); | |
} | |
that.element.data('kendo' + options.prefix + options.name, that); | |
that.bind(that.events, options); | |
}, | |
events: [], | |
options: { prefix: '' }, | |
_hasBindingTarget: function () { | |
return !!this.element[0].kendoBindingTarget; | |
}, | |
_tabindex: function (target) { | |
target = target || this.wrapper; | |
var element = this.element, TABINDEX = 'tabindex', tabindex = target.attr(TABINDEX) || element.attr(TABINDEX); | |
element.removeAttr(TABINDEX); | |
target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0); | |
}, | |
setOptions: function (options) { | |
this._setEvents(options); | |
$.extend(this.options, options); | |
}, | |
_setEvents: function (options) { | |
var that = this, idx = 0, length = that.events.length, e; | |
for (; idx < length; idx++) { | |
e = that.events[idx]; | |
if (that.options[e] && options[e]) { | |
that.unbind(e, that.options[e]); | |
} | |
} | |
that.bind(that.events, options); | |
}, | |
resize: function (force) { | |
var size = this.getSize(), currentSize = this._size; | |
if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) { | |
this._size = size; | |
this._resize(size, force); | |
this.trigger('resize', size); | |
} | |
}, | |
getSize: function () { | |
return kendo.dimensions(this.element); | |
}, | |
size: function (size) { | |
if (!size) { | |
return this.getSize(); | |
} else { | |
this.setSize(size); | |
} | |
}, | |
setSize: $.noop, | |
_resize: $.noop, | |
destroy: function () { | |
var that = this; | |
that.element.removeData('kendo' + that.options.prefix + that.options.name); | |
that.element.removeData('handler'); | |
that.unbind(); | |
}, | |
_destroy: function () { | |
this.destroy(); | |
}, | |
angular: function () { | |
}, | |
_muteAngularRebind: function (callback) { | |
this._muteRebind = true; | |
callback.call(this); | |
this._muteRebind = false; | |
} | |
}); | |
var DataBoundWidget = Widget.extend({ | |
dataItems: function () { | |
return this.dataSource.flatView(); | |
}, | |
_angularItems: function (cmd) { | |
var that = this; | |
that.angular(cmd, function () { | |
return { | |
elements: that.items(), | |
data: $.map(that.dataItems(), function (dataItem) { | |
return { dataItem: dataItem }; | |
}) | |
}; | |
}); | |
} | |
}); | |
kendo.dimensions = function (element, dimensions) { | |
var domElement = element[0]; | |
if (dimensions) { | |
element.css(dimensions); | |
} | |
return { | |
width: domElement.offsetWidth, | |
height: domElement.offsetHeight | |
}; | |
}; | |
kendo.notify = noop; | |
var templateRegExp = /template$/i, jsonRegExp = /^\s*(?:\{(?:.|\r\n|\n)*\}|\[(?:.|\r\n|\n)*\])\s*$/, jsonFormatRegExp = /^\{(\d+)(:[^\}]+)?\}|^\[[A-Za-z_]*\]$/, dashRegExp = /([A-Z])/g; | |
function parseOption(element, option) { | |
var value; | |
if (option.indexOf('data') === 0) { | |
option = option.substring(4); | |
option = option.charAt(0).toLowerCase() + option.substring(1); | |
} | |
option = option.replace(dashRegExp, '-$1'); | |
value = element.getAttribute('data-' + kendo.ns + option); | |
if (value === null) { | |
value = undefined; | |
} else if (value === 'null') { | |
value = null; | |
} else if (value === 'true') { | |
value = true; | |
} else if (value === 'false') { | |
value = false; | |
} else if (numberRegExp.test(value)) { | |
value = parseFloat(value); | |
} else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) { | |
value = new Function('return (' + value + ')')(); | |
} | |
return value; | |
} | |
function parseOptions(element, options) { | |
var result = {}, option, value; | |
for (option in options) { | |
value = parseOption(element, option); | |
if (value !== undefined) { | |
if (templateRegExp.test(option)) { | |
value = kendo.template($('#' + value).html()); | |
} | |
result[option] = value; | |
} | |
} | |
return result; | |
} | |
kendo.initWidget = function (element, options, roles) { | |
var result, option, widget, idx, length, role, value, dataSource, fullPath, widgetKeyRegExp; | |
if (!roles) { | |
roles = kendo.ui.roles; | |
} else if (roles.roles) { | |
roles = roles.roles; | |
} | |
element = element.nodeType ? element : element[0]; | |
role = element.getAttribute('data-' + kendo.ns + 'role'); | |
if (!role) { | |
return; | |
} | |
fullPath = role.indexOf('.') === -1; | |
if (fullPath) { | |
widget = roles[role]; | |
} else { | |
widget = kendo.getter(role)(window); | |
} | |
var data = $(element).data(), widgetKey = widget ? 'kendo' + widget.fn.options.prefix + widget.fn.options.name : ''; | |
if (fullPath) { | |
widgetKeyRegExp = new RegExp('^kendo.*' + role + '$', 'i'); | |
} else { | |
widgetKeyRegExp = new RegExp('^' + widgetKey + '$', 'i'); | |
} | |
for (var key in data) { | |
if (key.match(widgetKeyRegExp)) { | |
if (key === widgetKey) { | |
result = data[key]; | |
} else { | |
return data[key]; | |
} | |
} | |
} | |
if (!widget) { | |
return; | |
} | |
dataSource = parseOption(element, 'dataSource'); | |
options = $.extend({}, parseOptions(element, widget.fn.options), options); | |
if (dataSource) { | |
if (typeof dataSource === STRING) { | |
options.dataSource = kendo.getter(dataSource)(window); | |
} else { | |
options.dataSource = dataSource; | |
} | |
} | |
for (idx = 0, length = widget.fn.events.length; idx < length; idx++) { | |
option = widget.fn.events[idx]; | |
value = parseOption(element, option); | |
if (value !== undefined) { | |
options[option] = kendo.getter(value)(window); | |
} | |
} | |
if (!result) { | |
result = new widget(element, options); | |
} else if (!$.isEmptyObject(options)) { | |
result.setOptions(options); | |
} | |
return result; | |
}; | |
kendo.rolesFromNamespaces = function (namespaces) { | |
var roles = [], idx, length; | |
if (!namespaces[0]) { | |
namespaces = [ | |
kendo.ui, | |
kendo.dataviz.ui | |
]; | |
} | |
for (idx = 0, length = namespaces.length; idx < length; idx++) { | |
roles[idx] = namespaces[idx].roles; | |
} | |
return extend.apply(null, [{}].concat(roles.reverse())); | |
}; | |
kendo.init = function (element) { | |
var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1)); | |
$(element).find('[data-' + kendo.ns + 'role]').addBack().each(function () { | |
kendo.initWidget(this, {}, roles); | |
}); | |
}; | |
kendo.destroy = function (element) { | |
$(element).find('[data-' + kendo.ns + 'role]').addBack().each(function () { | |
var data = $(this).data(); | |
for (var key in data) { | |
if (key.indexOf('kendo') === 0 && typeof data[key].destroy === FUNCTION) { | |
data[key].destroy(); | |
} | |
} | |
}); | |
}; | |
function containmentComparer(a, b) { | |
return $.contains(a, b) ? -1 : 1; | |
} | |
function resizableWidget() { | |
var widget = $(this); | |
return $.inArray(widget.attr('data-' + kendo.ns + 'role'), [ | |
'slider', | |
'rangeslider' | |
]) > -1 || widget.is(':visible'); | |
} | |
kendo.resize = function (element, force) { | |
var widgets = $(element).find('[data-' + kendo.ns + 'role]').addBack().filter(resizableWidget); | |
if (!widgets.length) { | |
return; | |
} | |
var widgetsArray = $.makeArray(widgets); | |
widgetsArray.sort(containmentComparer); | |
$.each(widgetsArray, function () { | |
var widget = kendo.widgetInstance($(this)); | |
if (widget) { | |
widget.resize(force); | |
} | |
}); | |
}; | |
kendo.parseOptions = parseOptions; | |
extend(kendo.ui, { | |
Widget: Widget, | |
DataBoundWidget: DataBoundWidget, | |
roles: {}, | |
progress: function (container, toggle) { | |
var mask = container.find('.k-loading-mask'), support = kendo.support, browser = support.browser, isRtl, leftRight, webkitCorrection, containerScrollLeft; | |
if (toggle) { | |
if (!mask.length) { | |
isRtl = support.isRtl(container); | |
leftRight = isRtl ? 'right' : 'left'; | |
containerScrollLeft = container.scrollLeft(); | |
webkitCorrection = browser.webkit ? !isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft : 0; | |
mask = $('<div class=\'k-loading-mask\'><span class=\'k-loading-text\'>Loading...</span><div class=\'k-loading-image\'/><div class=\'k-loading-color\'/></div>').width('100%').height('100%').css('top', container.scrollTop()).css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection).prependTo(container); | |
} | |
} else if (mask) { | |
mask.remove(); | |
} | |
}, | |
plugin: function (widget, register, prefix) { | |
var name = widget.fn.options.name, getter; | |
register = register || kendo.ui; | |
prefix = prefix || ''; | |
register[name] = widget; | |
register.roles[name.toLowerCase()] = widget; | |
getter = 'getKendo' + prefix + name; | |
name = 'kendo' + prefix + name; | |
var widgetEntry = { | |
name: name, | |
widget: widget, | |
prefix: prefix || '' | |
}; | |
kendo.widgets.push(widgetEntry); | |
for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) { | |
kendo._widgetRegisteredCallbacks[i](widgetEntry); | |
} | |
$.fn[name] = function (options) { | |
var value = this, args; | |
if (typeof options === STRING) { | |
args = slice.call(arguments, 1); | |
this.each(function () { | |
var widget = $.data(this, name), method, result; | |
if (!widget) { | |
throw new Error(kendo.format('Cannot call method \'{0}\' of {1} before it is initialized', options, name)); | |
} | |
method = widget[options]; | |
if (typeof method !== FUNCTION) { | |
throw new Error(kendo.format('Cannot find method \'{0}\' of {1}', options, name)); | |
} | |
result = method.apply(widget, args); | |
if (result !== undefined) { | |
value = result; | |
return false; | |
} | |
}); | |
} else { | |
this.each(function () { | |
return new widget(this, options); | |
}); | |
} | |
return value; | |
}; | |
$.fn[name].widget = widget; | |
$.fn[getter] = function () { | |
return this.data(name); | |
}; | |
} | |
}); | |
var ContainerNullObject = { | |
bind: function () { | |
return this; | |
}, | |
nullObject: true, | |
options: {} | |
}; | |
var MobileWidget = Widget.extend({ | |
init: function (element, options) { | |
Widget.fn.init.call(this, element, options); | |
this.element.autoApplyNS(); | |
this.wrapper = this.element; | |
this.element.addClass('km-widget'); | |
}, | |
destroy: function () { | |
Widget.fn.destroy.call(this); | |
this.element.kendoDestroy(); | |
}, | |
options: { prefix: 'Mobile' }, | |
events: [], | |
view: function () { | |
var viewElement = this.element.closest(kendo.roleSelector('view splitview modalview drawer')); | |
return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject; | |
}, | |
viewHasNativeScrolling: function () { | |
var view = this.view(); | |
return view && view.options.useNativeScrolling; | |
}, | |
container: function () { | |
var element = this.element.closest(kendo.roleSelector('view layout modalview drawer splitview')); | |
return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject; | |
} | |
}); | |
extend(kendo.mobile, { | |
init: function (element) { | |
kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui); | |
}, | |
appLevelNativeScrolling: function () { | |
return kendo.mobile.application && kendo.mobile.application.options && kendo.mobile.application.options.useNativeScrolling; | |
}, | |
roles: {}, | |
ui: { | |
Widget: MobileWidget, | |
DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype), | |
roles: {}, | |
plugin: function (widget) { | |
kendo.ui.plugin(widget, kendo.mobile.ui, 'Mobile'); | |
} | |
} | |
}); | |
deepExtend(kendo.dataviz, { | |
init: function (element) { | |
kendo.init(element, kendo.dataviz.ui); | |
}, | |
ui: { | |
roles: {}, | |
themes: {}, | |
views: [], | |
plugin: function (widget) { | |
kendo.ui.plugin(widget, kendo.dataviz.ui); | |
} | |
}, | |
roles: {} | |
}); | |
kendo.touchScroller = function (elements, options) { | |
if (!options) { | |
options = {}; | |
} | |
options.useNative = true; | |
return $(elements).map(function (idx, element) { | |
element = $(element); | |
if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data('kendoMobileScroller')) { | |
element.kendoMobileScroller(options); | |
return element.data('kendoMobileScroller'); | |
} else { | |
return false; | |
} | |
})[0]; | |
}; | |
kendo.preventDefault = function (e) { | |
e.preventDefault(); | |
}; | |
kendo.widgetInstance = function (element, suites) { | |
var role = element.data(kendo.ns + 'role'), widgets = [], i, length; | |
if (role) { | |
if (role === 'content') { | |
role = 'scroller'; | |
} | |
if (suites) { | |
if (suites[0]) { | |
for (i = 0, length = suites.length; i < length; i++) { | |
widgets.push(suites[i].roles[role]); | |
} | |
} else { | |
widgets.push(suites.roles[role]); | |
} | |
} else { | |
widgets = [ | |
kendo.ui.roles[role], | |
kendo.dataviz.ui.roles[role], | |
kendo.mobile.ui.roles[role] | |
]; | |
} | |
if (role.indexOf('.') >= 0) { | |
widgets = [kendo.getter(role)(window)]; | |
} | |
for (i = 0, length = widgets.length; i < length; i++) { | |
var widget = widgets[i]; | |
if (widget) { | |
var instance = element.data('kendo' + widget.fn.options.prefix + widget.fn.options.name); | |
if (instance) { | |
return instance; | |
} | |
} | |
} | |
} | |
}; | |
kendo.onResize = function (callback) { | |
var handler = callback; | |
if (support.mobileOS.android) { | |
handler = function () { | |
setTimeout(callback, 600); | |
}; | |
} | |
$(window).on(support.resize, handler); | |
return handler; | |
}; | |
kendo.unbindResize = function (callback) { | |
$(window).off(support.resize, callback); | |
}; | |
kendo.attrValue = function (element, key) { | |
return element.data(kendo.ns + key); | |
}; | |
kendo.days = { | |
Sunday: 0, | |
Monday: 1, | |
Tuesday: 2, | |
Wednesday: 3, | |
Thursday: 4, | |
Friday: 5, | |
Saturday: 6 | |
}; | |
function focusable(element, isTabIndexNotNaN) { | |
var nodeName = element.nodeName.toLowerCase(); | |
return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : 'a' === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && visible(element); | |
} | |
function visible(element) { | |
return $.expr.filters.visible(element) && !$(element).parents().addBack().filter(function () { | |
return $.css(this, 'visibility') === 'hidden'; | |
}).length; | |
} | |
$.extend($.expr[':'], { | |
kendoFocusable: function (element) { | |
var idx = $.attr(element, 'tabindex'); | |
return focusable(element, !isNaN(idx) && idx > -1); | |
} | |
}); | |
var MOUSE_EVENTS = [ | |
'mousedown', | |
'mousemove', | |
'mouseenter', | |
'mouseleave', | |
'mouseover', | |
'mouseout', | |
'mouseup', | |
'click' | |
]; | |
var EXCLUDE_BUST_CLICK_SELECTOR = 'label, input, [data-rel=external]'; | |
var MouseEventNormalizer = { | |
setupMouseMute: function () { | |
var idx = 0, length = MOUSE_EVENTS.length, element = document.documentElement; | |
if (MouseEventNormalizer.mouseTrap || !support.eventCapture) { | |
return; | |
} | |
MouseEventNormalizer.mouseTrap = true; | |
MouseEventNormalizer.bustClick = false; | |
MouseEventNormalizer.captureMouse = false; | |
var handler = function (e) { | |
if (MouseEventNormalizer.captureMouse) { | |
if (e.type === 'click') { | |
if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) { | |
e.preventDefault(); | |
e.stopPropagation(); | |
} | |
} else { | |
e.stopPropagation(); | |
} | |
} | |
}; | |
for (; idx < length; idx++) { | |
element.addEventListener(MOUSE_EVENTS[idx], handler, true); | |
} | |
}, | |
muteMouse: function (e) { | |
MouseEventNormalizer.captureMouse = true; | |
if (e.data.bustClick) { | |
MouseEventNormalizer.bustClick = true; | |
} | |
clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID); | |
}, | |
unMuteMouse: function () { | |
clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID); | |
MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function () { | |
MouseEventNormalizer.captureMouse = false; | |
MouseEventNormalizer.bustClick = false; | |
}, 400); | |
} | |
}; | |
var eventMap = { | |
down: 'touchstart mousedown', | |
move: 'mousemove touchmove', | |
up: 'mouseup touchend touchcancel', | |
cancel: 'mouseleave touchcancel' | |
}; | |
if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) { | |
eventMap = { | |
down: 'touchstart', | |
move: 'touchmove', | |
up: 'touchend touchcancel', | |
cancel: 'touchcancel' | |
}; | |
} else if (support.pointers) { | |
eventMap = { | |
down: 'pointerdown', | |
move: 'pointermove', | |
up: 'pointerup', | |
cancel: 'pointercancel pointerleave' | |
}; | |
} else if (support.msPointers) { | |
eventMap = { | |
down: 'MSPointerDown', | |
move: 'MSPointerMove', | |
up: 'MSPointerUp', | |
cancel: 'MSPointerCancel MSPointerLeave' | |
}; | |
} | |
if (support.msPointers && !('onmspointerenter' in window)) { | |
$.each({ | |
MSPointerEnter: 'MSPointerOver', | |
MSPointerLeave: 'MSPointerOut' | |
}, function (orig, fix) { | |
$.event.special[orig] = { | |
delegateType: fix, | |
bindType: fix, | |
handle: function (event) { | |
var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; | |
if (!related || related !== target && !$.contains(target, related)) { | |
event.type = handleObj.origType; | |
ret = handleObj.handler.apply(this, arguments); | |
event.type = fix; | |
} | |
return ret; | |
} | |
}; | |
}); | |
} | |
var getEventMap = function (e) { | |
return eventMap[e] || e; | |
}, eventRegEx = /([^ ]+)/g; | |
kendo.applyEventMap = function (events, ns) { | |
events = events.replace(eventRegEx, getEventMap); | |
if (ns) { | |
events = events.replace(eventRegEx, '$1.' + ns); | |
} | |
return events; | |
}; | |
var on = $.fn.on; | |
function kendoJQuery(selector, context) { | |
return new kendoJQuery.fn.init(selector, context); | |
} | |
extend(true, kendoJQuery, $); | |
kendoJQuery.fn = kendoJQuery.prototype = new $(); | |
kendoJQuery.fn.constructor = kendoJQuery; | |
kendoJQuery.fn.init = function (selector, context) { | |
if (context && context instanceof $ && !(context instanceof kendoJQuery)) { | |
context = kendoJQuery(context); | |
} | |
return $.fn.init.call(this, selector, context, rootjQuery); | |
}; | |
kendoJQuery.fn.init.prototype = kendoJQuery.fn; | |
var rootjQuery = kendoJQuery(document); | |
extend(kendoJQuery.fn, { | |
handler: function (handler) { | |
this.data('handler', handler); | |
return this; | |
}, | |
autoApplyNS: function (ns) { | |
this.data('kendoNS', ns || kendo.guid()); | |
return this; | |
}, | |
on: function () { | |
var that = this, ns = that.data('kendoNS'); | |
if (arguments.length === 1) { | |
return on.call(that, arguments[0]); | |
} | |
var context = that, args = slice.call(arguments); | |
if (typeof args[args.length - 1] === UNDEFINED) { | |
args.pop(); | |
} | |
var callback = args[args.length - 1], events = kendo.applyEventMap(args[0], ns); | |
if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) { | |
MouseEventNormalizer.setupMouseMute(); | |
var selector = args.length === 2 ? null : args[1], bustClick = events.indexOf('click') > -1 && events.indexOf('touchend') > -1; | |
on.call(this, { | |
touchstart: MouseEventNormalizer.muteMouse, | |
touchend: MouseEventNormalizer.unMuteMouse | |
}, selector, { bustClick: bustClick }); | |
} | |
if (typeof callback === STRING) { | |
context = that.data('handler'); | |
callback = context[callback]; | |
args[args.length - 1] = function (e) { | |
callback.call(context, e); | |
}; | |
} | |
args[0] = events; | |
on.apply(that, args); | |
return that; | |
}, | |
kendoDestroy: function (ns) { | |
ns = ns || this.data('kendoNS'); | |
if (ns) { | |
this.off('.' + ns); | |
} | |
return this; | |
} | |
}); | |
kendo.jQuery = kendoJQuery; | |
kendo.eventMap = eventMap; | |
kendo.timezone = function () { | |
var months = { | |
Jan: 0, | |
Feb: 1, | |
Mar: 2, | |
Apr: 3, | |
May: 4, | |
Jun: 5, | |
Jul: 6, | |
Aug: 7, | |
Sep: 8, | |
Oct: 9, | |
Nov: 10, | |
Dec: 11 | |
}; | |
var days = { | |
Sun: 0, | |
Mon: 1, | |
Tue: 2, | |
Wed: 3, | |
Thu: 4, | |
Fri: 5, | |
Sat: 6 | |
}; | |
function ruleToDate(year, rule) { | |
var date; | |
var targetDay; | |
var ourDay; | |
var month = rule[3]; | |
var on = rule[4]; | |
var time = rule[5]; | |
var cache = rule[8]; | |
if (!cache) { | |
rule[8] = cache = {}; | |
} | |
if (cache[year]) { | |
return cache[year]; | |
} | |
if (!isNaN(on)) { | |
date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0)); | |
} else if (on.indexOf('last') === 0) { | |
date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0)); | |
targetDay = days[on.substr(4, 3)]; | |
ourDay = date.getUTCDay(); | |
date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0)); | |
} else if (on.indexOf('>=') >= 0) { | |
date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0)); | |
targetDay = days[on.substr(0, 3)]; | |
ourDay = date.getUTCDay(); | |
date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0)); | |
} | |
return cache[year] = date; | |
} | |
function findRule(utcTime, rules, zone) { | |
rules = rules[zone]; | |
if (!rules) { | |
var time = zone.split(':'); | |
var offset = 0; | |
if (time.length > 1) { | |
offset = time[0] * 60 + Number(time[1]); | |
} | |
return [ | |
-1000000, | |
'max', | |
'-', | |
'Jan', | |
1, | |
[ | |
0, | |
0, | |
0 | |
], | |
offset, | |
'-' | |
]; | |
} | |
var year = new Date(utcTime).getUTCFullYear(); | |
rules = jQuery.grep(rules, function (rule) { | |
var from = rule[0]; | |
var to = rule[1]; | |
return from <= year && (to >= year || from == year && to == 'only' || to == 'max'); | |
}); | |
rules.push(utcTime); | |
rules.sort(function (a, b) { | |
if (typeof a != 'number') { | |
a = Number(ruleToDate(year, a)); | |
} | |
if (typeof b != 'number') { | |
b = Number(ruleToDate(year, b)); | |
} | |
return a - b; | |
}); | |
var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1]; | |
return isNaN(rule) ? rule : null; | |
} | |
function findZone(utcTime, zones, timezone) { | |
var zoneRules = zones[timezone]; | |
if (typeof zoneRules === 'string') { | |
zoneRules = zones[zoneRules]; | |
} | |
if (!zoneRules) { | |
throw new Error('Timezone "' + timezone + '" is either incorrect, or kendo.timezones.min.js is not included.'); | |
} | |
for (var idx = zoneRules.length - 1; idx >= 0; idx--) { | |
var until = zoneRules[idx][3]; | |
if (until && utcTime > until) { | |
break; | |
} | |
} | |
var zone = zoneRules[idx + 1]; | |
if (!zone) { | |
throw new Error('Timezone "' + timezone + '" not found on ' + utcTime + '.'); | |
} | |
return zone; | |
} | |
function zoneAndRule(utcTime, zones, rules, timezone) { | |
if (typeof utcTime != NUMBER) { | |
utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(), utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(), utcTime.getSeconds(), utcTime.getMilliseconds()); | |
} | |
var zone = findZone(utcTime, zones, timezone); | |
return { | |
zone: zone, | |
rule: findRule(utcTime, rules, zone[1]) | |
}; | |
} | |
function offset(utcTime, timezone) { | |
if (timezone == 'Etc/UTC' || timezone == 'Etc/GMT') { | |
return 0; | |
} | |
var info = zoneAndRule(utcTime, this.zones, this.rules, timezone); | |
var zone = info.zone; | |
var rule = info.rule; | |
return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]); | |
} | |
function abbr(utcTime, timezone) { | |
var info = zoneAndRule(utcTime, this.zones, this.rules, timezone); | |
var zone = info.zone; | |
var rule = info.rule; | |
var base = zone[2]; | |
if (base.indexOf('/') >= 0) { | |
return base.split('/')[rule && +rule[6] ? 1 : 0]; | |
} else if (base.indexOf('%s') >= 0) { | |
return base.replace('%s', !rule || rule[7] == '-' ? '' : rule[7]); | |
} | |
return base; | |
} | |
function convert(date, fromOffset, toOffset) { | |
if (typeof fromOffset == STRING) { | |
fromOffset = this.offset(date, fromOffset); | |
} | |
if (typeof toOffset == STRING) { | |
toOffset = this.offset(date, toOffset); | |
} | |
var fromLocalOffset = date.getTimezoneOffset(); | |
date = new Date(date.getTime() + (fromOffset - toOffset) * 60000); | |
var toLocalOffset = date.getTimezoneOffset(); | |
return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000); | |
} | |
function apply(date, timezone) { | |
return this.convert(date, date.getTimezoneOffset(), timezone); | |
} | |
function remove(date, timezone) { | |
return this.convert(date, timezone, date.getTimezoneOffset()); | |
} | |
function toLocalDate(time) { | |
return this.apply(new Date(time), 'Etc/UTC'); | |
} | |
return { | |
zones: {}, | |
rules: {}, | |
offset: offset, | |
convert: convert, | |
apply: apply, | |
remove: remove, | |
abbr: abbr, | |
toLocalDate: toLocalDate | |
}; | |
}(); | |
kendo.date = function () { | |
var MS_PER_MINUTE = 60000, MS_PER_DAY = 86400000; | |
function adjustDST(date, hours) { | |
if (hours === 0 && date.getHours() === 23) { | |
date.setHours(date.getHours() + 2); | |
return true; | |
} | |
return false; | |
} | |
function setDayOfWeek(date, day, dir) { | |
var hours = date.getHours(); | |
dir = dir || 1; | |
day = (day - date.getDay() + 7 * dir) % 7; | |
date.setDate(date.getDate() + day); | |
adjustDST(date, hours); | |
} | |
function dayOfWeek(date, day, dir) { | |
date = new Date(date); | |
setDayOfWeek(date, day, dir); | |
return date; | |
} | |
function firstDayOfMonth(date) { | |
return new Date(date.getFullYear(), date.getMonth(), 1); | |
} | |
function lastDayOfMonth(date) { | |
var last = new Date(date.getFullYear(), date.getMonth() + 1, 0), first = firstDayOfMonth(date), timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset()); | |
if (timeOffset) { | |
last.setHours(first.getHours() + timeOffset / 60); | |
} | |
return last; | |
} | |
function getDate(date) { | |
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); | |
adjustDST(date, 0); | |
return date; | |
} | |
function toUtcTime(date) { | |
return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()); | |
} | |
function getMilliseconds(date) { | |
return date.getTime() - getDate(date); | |
} | |
function isInTimeRange(value, min, max) { | |
var msMin = getMilliseconds(min), msMax = getMilliseconds(max), msValue; | |
if (!value || msMin == msMax) { | |
return true; | |
} | |
if (min >= max) { | |
max += MS_PER_DAY; | |
} | |
msValue = getMilliseconds(value); | |
if (msMin > msValue) { | |
msValue += MS_PER_DAY; | |
} | |
if (msMax < msMin) { | |
msMax += MS_PER_DAY; | |
} | |
return msValue >= msMin && msValue <= msMax; | |
} | |
function isInDateRange(value, min, max) { | |
var msMin = min.getTime(), msMax = max.getTime(), msValue; | |
if (msMin >= msMax) { | |
msMax += MS_PER_DAY; | |
} | |
msValue = value.getTime(); | |
return msValue >= msMin && msValue <= msMax; | |
} | |
function addDays(date, offset) { | |
var hours = date.getHours(); | |
date = new Date(date); | |
setTime(date, offset * MS_PER_DAY); | |
adjustDST(date, hours); | |
return date; | |
} | |
function setTime(date, milliseconds, ignoreDST) { | |
var offset = date.getTimezoneOffset(); | |
var difference; | |
date.setTime(date.getTime() + milliseconds); | |
if (!ignoreDST) { | |
difference = date.getTimezoneOffset() - offset; | |
date.setTime(date.getTime() + difference * MS_PER_MINUTE); | |
} | |
} | |
function setHours(date, time) { | |
date = new Date(kendo.date.getDate(date).getTime() + kendo.date.getMilliseconds(time)); | |
adjustDST(date, time.getHours()); | |
return date; | |
} | |
function today() { | |
return getDate(new Date()); | |
} | |
function isToday(date) { | |
return getDate(date).getTime() == today().getTime(); | |
} | |
function toInvariantTime(date) { | |
var staticDate = new Date(1980, 1, 1, 0, 0, 0); | |
if (date) { | |
staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()); | |
} | |
return staticDate; | |
} | |
return { | |
adjustDST: adjustDST, | |
dayOfWeek: dayOfWeek, | |
setDayOfWeek: setDayOfWeek, | |
getDate: getDate, | |
isInDateRange: isInDateRange, | |
isInTimeRange: isInTimeRange, | |
isToday: isToday, | |
nextDay: function (date) { | |
return addDays(date, 1); | |
}, | |
previousDay: function (date) { | |
return addDays(date, -1); | |
}, | |
toUtcTime: toUtcTime, | |
MS_PER_DAY: MS_PER_DAY, | |
MS_PER_HOUR: 60 * MS_PER_MINUTE, | |
MS_PER_MINUTE: MS_PER_MINUTE, | |
setTime: setTime, | |
setHours: setHours, | |
addDays: addDays, | |
today: today, | |
toInvariantTime: toInvariantTime, | |
firstDayOfMonth: firstDayOfMonth, | |
lastDayOfMonth: lastDayOfMonth, | |
getMilliseconds: getMilliseconds | |
}; | |
}(); | |
kendo.stripWhitespace = function (element) { | |
if (document.createNodeIterator) { | |
var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function (node) { | |
return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; | |
}, false); | |
while (iterator.nextNode()) { | |
if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) { | |
iterator.referenceNode.parentNode.removeChild(iterator.referenceNode); | |
} | |
} | |
} else { | |
for (var i = 0; i < element.childNodes.length; i++) { | |
var child = element.childNodes[i]; | |
if (child.nodeType == 3 && !/\S/.test(child.nodeValue)) { | |
element.removeChild(child); | |
i--; | |
} | |
if (child.nodeType == 1) { | |
kendo.stripWhitespace(child); | |
} | |
} | |
} | |
}; | |
var animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { | |
setTimeout(callback, 1000 / 60); | |
}; | |
kendo.animationFrame = function (callback) { | |
animationFrame.call(window, callback); | |
}; | |
var animationQueue = []; | |
kendo.queueAnimation = function (callback) { | |
animationQueue[animationQueue.length] = callback; | |
if (animationQueue.length === 1) { | |
kendo.runNextAnimation(); | |
} | |
}; | |
kendo.runNextAnimation = function () { | |
kendo.animationFrame(function () { | |
if (animationQueue[0]) { | |
animationQueue.shift()(); | |
if (animationQueue[0]) { | |
kendo.runNextAnimation(); | |
} | |
} | |
}); | |
}; | |
kendo.parseQueryStringParams = function (url) { | |
var queryString = url.split('?')[1] || '', params = {}, paramParts = queryString.split(/&|=/), length = paramParts.length, idx = 0; | |
for (; idx < length; idx += 2) { | |
if (paramParts[idx] !== '') { | |
params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]); | |
} | |
} | |
return params; | |
}; | |
kendo.elementUnderCursor = function (e) { | |
if (typeof e.x.client != 'undefined') { | |
return document.elementFromPoint(e.x.client, e.y.client); | |
} | |
}; | |
kendo.wheelDeltaY = function (jQueryEvent) { | |
var e = jQueryEvent.originalEvent, deltaY = e.wheelDeltaY, delta; | |
if (e.wheelDelta) { | |
if (deltaY === undefined || deltaY) { | |
delta = e.wheelDelta; | |
} | |
} else if (e.detail && e.axis === e.VERTICAL_AXIS) { | |
delta = -e.detail * 10; | |
} | |
return delta; | |
}; | |
kendo.throttle = function (fn, delay) { | |
var timeout; | |
var lastExecTime = 0; | |
if (!delay || delay <= 0) { | |
return fn; | |
} | |
var throttled = function () { | |
var that = this; | |
var elapsed = +new Date() - lastExecTime; | |
var args = arguments; | |
function exec() { | |
fn.apply(that, args); | |
lastExecTime = +new Date(); | |
} | |
if (!lastExecTime) { | |
return exec(); | |
} | |
if (timeout) { | |
clearTimeout(timeout); | |
} | |
if (elapsed > delay) { | |
exec(); | |
} else { | |
timeout = setTimeout(exec, delay - elapsed); | |
} | |
}; | |
throttled.cancel = function () { | |
clearTimeout(timeout); | |
}; | |
return throttled; | |
}; | |
kendo.caret = function (element, start, end) { | |
var rangeElement; | |
var isPosition = start !== undefined; | |
if (end === undefined) { | |
end = start; | |
} | |
if (element[0]) { | |
element = element[0]; | |
} | |
if (isPosition && element.disabled) { | |
return; | |
} | |
try { | |
if (element.selectionStart !== undefined) { | |
if (isPosition) { | |
element.focus(); | |
element.setSelectionRange(start, end); | |
} else { | |
start = [ | |
element.selectionStart, | |
element.selectionEnd | |
]; | |
} | |
} else if (document.selection) { | |
if ($(element).is(':visible')) { | |
element.focus(); | |
} | |
rangeElement = element.createTextRange(); | |
if (isPosition) { | |
rangeElement.collapse(true); | |
rangeElement.moveStart('character', start); | |
rangeElement.moveEnd('character', end - start); | |
rangeElement.select(); | |
} else { | |
var rangeDuplicated = rangeElement.duplicate(), selectionStart, selectionEnd; | |
rangeElement.moveToBookmark(document.selection.createRange().getBookmark()); | |
rangeDuplicated.setEndPoint('EndToStart', rangeElement); | |
selectionStart = rangeDuplicated.text.length; | |
selectionEnd = selectionStart + rangeElement.text.length; | |
start = [ | |
selectionStart, | |
selectionEnd | |
]; | |
} | |
} | |
} catch (e) { | |
start = []; | |
} | |
return start; | |
}; | |
kendo.compileMobileDirective = function (element, scope) { | |
var angular = window.angular; | |
element.attr('data-' + kendo.ns + 'role', element[0].tagName.toLowerCase().replace('kendo-mobile-', '').replace('-', '')); | |
angular.element(element).injector().invoke([ | |
'$compile', | |
function ($compile) { | |
$compile(element)(scope); | |
if (!/^\$(digest|apply)$/.test(scope.$$phase)) { | |
scope.$digest(); | |
} | |
} | |
]); | |
return kendo.widgetInstance(element, kendo.mobile.ui); | |
}; | |
kendo.antiForgeryTokens = function () { | |
var tokens = {}, csrf_token = $('meta[name=csrf-token],meta[name=_csrf]').attr('content'), csrf_param = $('meta[name=csrf-param],meta[name=_csrf_header]').attr('content'); | |
$('input[name^=\'__RequestVerificationToken\']').each(function () { | |
tokens[this.name] = this.value; | |
}); | |
if (csrf_param !== undefined && csrf_token !== undefined) { | |
tokens[csrf_param] = csrf_token; | |
} | |
return tokens; | |
}; | |
kendo.cycleForm = function (form) { | |
var firstElement = form.find('input, .k-widget').first(); | |
var lastElement = form.find('button, .k-button').last(); | |
function focus(el) { | |
var widget = kendo.widgetInstance(el); | |
if (widget && widget.focus) { | |
widget.focus(); | |
} else { | |
el.focus(); | |
} | |
} | |
lastElement.on('keydown', function (e) { | |
if (e.keyCode == kendo.keys.TAB && !e.shiftKey) { | |
e.preventDefault(); | |
focus(firstElement); | |
} | |
}); | |
firstElement.on('keydown', function (e) { | |
if (e.keyCode == kendo.keys.TAB && e.shiftKey) { | |
e.preventDefault(); | |
focus(lastElement); | |
} | |
}); | |
}; | |
(function () { | |
function postToProxy(dataURI, fileName, proxyURL, proxyTarget) { | |
var form = $('<form>').attr({ | |
action: proxyURL, | |
method: 'POST', | |
target: proxyTarget | |
}); | |
var data = kendo.antiForgeryTokens(); | |
data.fileName = fileName; | |
var parts = dataURI.split(';base64,'); | |
data.contentType = parts[0].replace('data:', ''); | |
data.base64 = parts[1]; | |
for (var name in data) { | |
if (data.hasOwnProperty(name)) { | |
$('<input>').attr({ | |
value: data[name], | |
name: name, | |
type: 'hidden' | |
}).appendTo(form); | |
} | |
} | |
form.appendTo('body').submit().remove(); | |
} | |
var fileSaver = document.createElement('a'); | |
var downloadAttribute = 'download' in fileSaver && !kendo.support.browser.edge; | |
function saveAsBlob(dataURI, fileName) { | |
var blob = dataURI; | |
if (typeof dataURI == 'string') { | |
var parts = dataURI.split(';base64,'); | |
var contentType = parts[0]; | |
var base64 = atob(parts[1]); | |
var array = new Uint8Array(base64.length); | |
for (var idx = 0; idx < base64.length; idx++) { | |
array[idx] = base64.charCodeAt(idx); | |
} | |
blob = new Blob([array.buffer], { type: contentType }); | |
} | |
navigator.msSaveBlob(blob, fileName); | |
} | |
function saveAsDataURI(dataURI, fileName) { | |
if (window.Blob && dataURI instanceof Blob) { | |
dataURI = URL.createObjectURL(dataURI); | |
} | |
fileSaver.download = fileName; | |
fileSaver.href = dataURI; | |
var e = document.createEvent('MouseEvents'); | |
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); | |
fileSaver.dispatchEvent(e); | |
URL.revokeObjectURL(dataURI); | |
} | |
kendo.saveAs = function (options) { | |
var save = postToProxy; | |
if (!options.forceProxy) { | |
if (downloadAttribute) { | |
save = saveAsDataURI; | |
} else if (navigator.msSaveBlob) { | |
save = saveAsBlob; | |
} | |
} | |
save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget); | |
}; | |
}()); | |
kendo.proxyModelSetters = function proxyModelSetters(data) { | |
var observable = {}; | |
Object.keys(data || {}).forEach(function (property) { | |
Object.defineProperty(observable, property, { | |
get: function () { | |
return data[property]; | |
}, | |
set: function (value) { | |
data[property] = value; | |
data.dirty = true; | |
} | |
}); | |
}); | |
return observable; | |
}; | |
}(jQuery, window)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.fx', ['kendo.core'], f); | |
}(function () { | |
var __meta__ = { | |
id: 'fx', | |
name: 'Effects', | |
category: 'framework', | |
description: 'Required for animation effects in all Kendo UI widgets.', | |
depends: ['core'] | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, fx = kendo.effects, each = $.each, extend = $.extend, proxy = $.proxy, support = kendo.support, browser = support.browser, transforms = support.transforms, transitions = support.transitions, scaleProperties = { | |
scale: 0, | |
scalex: 0, | |
scaley: 0, | |
scale3d: 0 | |
}, translateProperties = { | |
translate: 0, | |
translatex: 0, | |
translatey: 0, | |
translate3d: 0 | |
}, hasZoom = typeof document.documentElement.style.zoom !== 'undefined' && !transforms, matrix3dRegExp = /matrix3?d?\s*\(.*,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?/i, cssParamsRegExp = /^(-?[\d\.\-]+)?[\w\s]*,?\s*(-?[\d\.\-]+)?[\w\s]*/i, translateXRegExp = /translatex?$/i, oldEffectsRegExp = /(zoom|fade|expand)(\w+)/, singleEffectRegExp = /(zoom|fade|expand)/, unitRegExp = /[xy]$/i, transformProps = [ | |
'perspective', | |
'rotate', | |
'rotatex', | |
'rotatey', | |
'rotatez', | |
'rotate3d', | |
'scale', | |
'scalex', | |
'scaley', | |
'scalez', | |
'scale3d', | |
'skew', | |
'skewx', | |
'skewy', | |
'translate', | |
'translatex', | |
'translatey', | |
'translatez', | |
'translate3d', | |
'matrix', | |
'matrix3d' | |
], transform2d = [ | |
'rotate', | |
'scale', | |
'scalex', | |
'scaley', | |
'skew', | |
'skewx', | |
'skewy', | |
'translate', | |
'translatex', | |
'translatey', | |
'matrix' | |
], transform2units = { | |
'rotate': 'deg', | |
scale: '', | |
skew: 'px', | |
translate: 'px' | |
}, cssPrefix = transforms.css, round = Math.round, BLANK = '', PX = 'px', NONE = 'none', AUTO = 'auto', WIDTH = 'width', HEIGHT = 'height', HIDDEN = 'hidden', ORIGIN = 'origin', ABORT_ID = 'abortId', OVERFLOW = 'overflow', TRANSLATE = 'translate', POSITION = 'position', COMPLETE_CALLBACK = 'completeCallback', TRANSITION = cssPrefix + 'transition', TRANSFORM = cssPrefix + 'transform', BACKFACE = cssPrefix + 'backface-visibility', PERSPECTIVE = cssPrefix + 'perspective', DEFAULT_PERSPECTIVE = '1500px', TRANSFORM_PERSPECTIVE = 'perspective(' + DEFAULT_PERSPECTIVE + ')', directions = { | |
left: { | |
reverse: 'right', | |
property: 'left', | |
transition: 'translatex', | |
vertical: false, | |
modifier: -1 | |
}, | |
right: { | |
reverse: 'left', | |
property: 'left', | |
transition: 'translatex', | |
vertical: false, | |
modifier: 1 | |
}, | |
down: { | |
reverse: 'up', | |
property: 'top', | |
transition: 'translatey', | |
vertical: true, | |
modifier: 1 | |
}, | |
up: { | |
reverse: 'down', | |
property: 'top', | |
transition: 'translatey', | |
vertical: true, | |
modifier: -1 | |
}, | |
top: { reverse: 'bottom' }, | |
bottom: { reverse: 'top' }, | |
'in': { | |
reverse: 'out', | |
modifier: -1 | |
}, | |
out: { | |
reverse: 'in', | |
modifier: 1 | |
}, | |
vertical: { reverse: 'vertical' }, | |
horizontal: { reverse: 'horizontal' } | |
}; | |
kendo.directions = directions; | |
extend($.fn, { | |
kendoStop: function (clearQueue, gotoEnd) { | |
if (transitions) { | |
return fx.stopQueue(this, clearQueue || false, gotoEnd || false); | |
} else { | |
return this.stop(clearQueue, gotoEnd); | |
} | |
} | |
}); | |
if (transforms && !transitions) { | |
each(transform2d, function (idx, value) { | |
$.fn[value] = function (val) { | |
if (typeof val == 'undefined') { | |
return animationProperty(this, value); | |
} else { | |
var that = $(this)[0], transformValue = value + '(' + val + transform2units[value.replace(unitRegExp, '')] + ')'; | |
if (that.style.cssText.indexOf(TRANSFORM) == -1) { | |
$(this).css(TRANSFORM, transformValue); | |
} else { | |
that.style.cssText = that.style.cssText.replace(new RegExp(value + '\\(.*?\\)', 'i'), transformValue); | |
} | |
} | |
return this; | |
}; | |
$.fx.step[value] = function (fx) { | |
$(fx.elem)[value](fx.now); | |
}; | |
}); | |
var curProxy = $.fx.prototype.cur; | |
$.fx.prototype.cur = function () { | |
if (transform2d.indexOf(this.prop) != -1) { | |
return parseFloat($(this.elem)[this.prop]()); | |
} | |
return curProxy.apply(this, arguments); | |
}; | |
} | |
kendo.toggleClass = function (element, classes, options, add) { | |
if (classes) { | |
classes = classes.split(' '); | |
if (transitions) { | |
options = extend({ | |
exclusive: 'all', | |
duration: 400, | |
ease: 'ease-out' | |
}, options); | |
element.css(TRANSITION, options.exclusive + ' ' + options.duration + 'ms ' + options.ease); | |
setTimeout(function () { | |
element.css(TRANSITION, '').css(HEIGHT); | |
}, options.duration); | |
} | |
each(classes, function (idx, value) { | |
element.toggleClass(value, add); | |
}); | |
} | |
return element; | |
}; | |
kendo.parseEffects = function (input, mirror) { | |
var effects = {}; | |
if (typeof input === 'string') { | |
each(input.split(' '), function (idx, value) { | |
var redirectedEffect = !singleEffectRegExp.test(value), resolved = value.replace(oldEffectsRegExp, function (match, $1, $2) { | |
return $1 + ':' + $2.toLowerCase(); | |
}), effect = resolved.split(':'), direction = effect[1], effectBody = {}; | |
if (effect.length > 1) { | |
effectBody.direction = mirror && redirectedEffect ? directions[direction].reverse : direction; | |
} | |
effects[effect[0]] = effectBody; | |
}); | |
} else { | |
each(input, function (idx) { | |
var direction = this.direction; | |
if (direction && mirror && !singleEffectRegExp.test(idx)) { | |
this.direction = directions[direction].reverse; | |
} | |
effects[idx] = this; | |
}); | |
} | |
return effects; | |
}; | |
function parseInteger(value) { | |
return parseInt(value, 10); | |
} | |
function parseCSS(element, property) { | |
return parseInteger(element.css(property)); | |
} | |
function keys(obj) { | |
var acc = []; | |
for (var propertyName in obj) { | |
acc.push(propertyName); | |
} | |
return acc; | |
} | |
function strip3DTransforms(properties) { | |
for (var key in properties) { | |
if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) { | |
delete properties[key]; | |
} | |
} | |
return properties; | |
} | |
function normalizeCSS(element, properties) { | |
var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed; | |
for (key in properties) { | |
lowerKey = key.toLowerCase(); | |
isTransformed = transforms && transformProps.indexOf(lowerKey) != -1; | |
if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) { | |
delete properties[key]; | |
} else { | |
value = properties[key]; | |
if (isTransformed) { | |
transformation.push(key + '(' + value + ')'); | |
} else { | |
cssValues[key] = value; | |
} | |
} | |
} | |
if (transformation.length) { | |
cssValues[TRANSFORM] = transformation.join(' '); | |
} | |
return cssValues; | |
} | |
if (transitions) { | |
extend(fx, { | |
transition: function (element, properties, options) { | |
var css, delay = 0, oldKeys = element.data('keys') || [], timeoutID; | |
options = extend({ | |
duration: 200, | |
ease: 'ease-out', | |
complete: null, | |
exclusive: 'all' | |
}, options); | |
var stopTransitionCalled = false; | |
var stopTransition = function () { | |
if (!stopTransitionCalled) { | |
stopTransitionCalled = true; | |
if (timeoutID) { | |
clearTimeout(timeoutID); | |
timeoutID = null; | |
} | |
element.removeData(ABORT_ID).dequeue().css(TRANSITION, '').css(TRANSITION); | |
options.complete.call(element); | |
} | |
}; | |
options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration; | |
css = normalizeCSS(element, properties); | |
$.merge(oldKeys, keys(css)); | |
element.data('keys', $.unique(oldKeys)).height(); | |
element.css(TRANSITION, options.exclusive + ' ' + options.duration + 'ms ' + options.ease).css(TRANSITION); | |
element.css(css).css(TRANSFORM); | |
if (transitions.event) { | |
element.one(transitions.event, stopTransition); | |
if (options.duration !== 0) { | |
delay = 500; | |
} | |
} | |
timeoutID = setTimeout(stopTransition, options.duration + delay); | |
element.data(ABORT_ID, timeoutID); | |
element.data(COMPLETE_CALLBACK, stopTransition); | |
}, | |
stopQueue: function (element, clearQueue, gotoEnd) { | |
var cssValues, taskKeys = element.data('keys'), retainPosition = !gotoEnd && taskKeys, completeCallback = element.data(COMPLETE_CALLBACK); | |
if (retainPosition) { | |
cssValues = kendo.getComputedStyles(element[0], taskKeys); | |
} | |
if (completeCallback) { | |
completeCallback(); | |
} | |
if (retainPosition) { | |
element.css(cssValues); | |
} | |
return element.removeData('keys').stop(clearQueue); | |
} | |
}); | |
} | |
function animationProperty(element, property) { | |
if (transforms) { | |
var transform = element.css(TRANSFORM); | |
if (transform == NONE) { | |
return property == 'scale' ? 1 : 0; | |
} | |
var match = transform.match(new RegExp(property + '\\s*\\(([\\d\\w\\.]+)')), computed = 0; | |
if (match) { | |
computed = parseInteger(match[1]); | |
} else { | |
match = transform.match(matrix3dRegExp) || [ | |
0, | |
0, | |
0, | |
0, | |
0 | |
]; | |
property = property.toLowerCase(); | |
if (translateXRegExp.test(property)) { | |
computed = parseFloat(match[3] / match[2]); | |
} else if (property == 'translatey') { | |
computed = parseFloat(match[4] / match[2]); | |
} else if (property == 'scale') { | |
computed = parseFloat(match[2]); | |
} else if (property == 'rotate') { | |
computed = parseFloat(Math.atan2(match[2], match[1])); | |
} | |
} | |
return computed; | |
} else { | |
return parseFloat(element.css(property)); | |
} | |
} | |
var EffectSet = kendo.Class.extend({ | |
init: function (element, options) { | |
var that = this; | |
that.element = element; | |
that.effects = []; | |
that.options = options; | |
that.restore = []; | |
}, | |
run: function (effects) { | |
var that = this, effect, idx, jdx, length = effects.length, element = that.element, options = that.options, deferred = $.Deferred(), start = {}, end = {}, target, children, childrenLength; | |
that.effects = effects; | |
deferred.then($.proxy(that, 'complete')); | |
element.data('animating', true); | |
for (idx = 0; idx < length; idx++) { | |
effect = effects[idx]; | |
effect.setReverse(options.reverse); | |
effect.setOptions(options); | |
that.addRestoreProperties(effect.restore); | |
effect.prepare(start, end); | |
children = effect.children(); | |
for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx++) { | |
children[jdx].duration(options.duration).run(); | |
} | |
} | |
for (var effectName in options.effects) { | |
extend(end, options.effects[effectName].properties); | |
} | |
if (!element.is(':visible')) { | |
extend(start, { display: element.data('olddisplay') || 'block' }); | |
} | |
if (transforms && !options.reset) { | |
target = element.data('targetTransform'); | |
if (target) { | |
start = extend(target, start); | |
} | |
} | |
start = normalizeCSS(element, start); | |
if (transforms && !transitions) { | |
start = strip3DTransforms(start); | |
} | |
element.css(start).css(TRANSFORM); | |
for (idx = 0; idx < length; idx++) { | |
effects[idx].setup(); | |
} | |
if (options.init) { | |
options.init(); | |
} | |
element.data('targetTransform', end); | |
fx.animate(element, end, extend({}, options, { complete: deferred.resolve })); | |
return deferred.promise(); | |
}, | |
stop: function () { | |
$(this.element).kendoStop(true, true); | |
}, | |
addRestoreProperties: function (restore) { | |
var element = this.element, value, i = 0, length = restore.length; | |
for (; i < length; i++) { | |
value = restore[i]; | |
this.restore.push(value); | |
if (!element.data(value)) { | |
element.data(value, element.css(value)); | |
} | |
} | |
}, | |
restoreCallback: function () { | |
var element = this.element; | |
for (var i = 0, length = this.restore.length; i < length; i++) { | |
var value = this.restore[i]; | |
element.css(value, element.data(value)); | |
} | |
}, | |
complete: function () { | |
var that = this, idx = 0, element = that.element, options = that.options, effects = that.effects, length = effects.length; | |
element.removeData('animating').dequeue(); | |
if (options.hide) { | |
element.data('olddisplay', element.css('display')).hide(); | |
} | |
this.restoreCallback(); | |
if (hasZoom && !transforms) { | |
setTimeout($.proxy(this, 'restoreCallback'), 0); | |
} | |
for (; idx < length; idx++) { | |
effects[idx].teardown(); | |
} | |
if (options.completeCallback) { | |
options.completeCallback(element); | |
} | |
} | |
}); | |
fx.promise = function (element, options) { | |
var effects = [], effectClass, effectSet = new EffectSet(element, options), parsedEffects = kendo.parseEffects(options.effects), effect; | |
options.effects = parsedEffects; | |
for (var effectName in parsedEffects) { | |
effectClass = fx[capitalize(effectName)]; | |
if (effectClass) { | |
effect = new effectClass(element, parsedEffects[effectName].direction); | |
effects.push(effect); | |
} | |
} | |
if (effects[0]) { | |
effectSet.run(effects); | |
} else { | |
if (!element.is(':visible')) { | |
element.css({ display: element.data('olddisplay') || 'block' }).css('display'); | |
} | |
if (options.init) { | |
options.init(); | |
} | |
element.dequeue(); | |
effectSet.complete(); | |
} | |
}; | |
extend(fx, { | |
animate: function (elements, properties, options) { | |
var useTransition = options.transition !== false; | |
delete options.transition; | |
if (transitions && 'transition' in fx && useTransition) { | |
fx.transition(elements, properties, options); | |
} else { | |
if (transforms) { | |
elements.animate(strip3DTransforms(properties), { | |
queue: false, | |
show: false, | |
hide: false, | |
duration: options.duration, | |
complete: options.complete | |
}); | |
} else { | |
elements.each(function () { | |
var element = $(this), multiple = {}; | |
each(transformProps, function (idx, value) { | |
var params, currentValue = properties ? properties[value] + ' ' : null; | |
if (currentValue) { | |
var single = properties; | |
if (value in scaleProperties && properties[value] !== undefined) { | |
params = currentValue.match(cssParamsRegExp); | |
if (transforms) { | |
extend(single, { scale: +params[0] }); | |
} | |
} else { | |
if (value in translateProperties && properties[value] !== undefined) { | |
var position = element.css(POSITION), isFixed = position == 'absolute' || position == 'fixed'; | |
if (!element.data(TRANSLATE)) { | |
if (isFixed) { | |
element.data(TRANSLATE, { | |
top: parseCSS(element, 'top') || 0, | |
left: parseCSS(element, 'left') || 0, | |
bottom: parseCSS(element, 'bottom'), | |
right: parseCSS(element, 'right') | |
}); | |
} else { | |
element.data(TRANSLATE, { | |
top: parseCSS(element, 'marginTop') || 0, | |
left: parseCSS(element, 'marginLeft') || 0 | |
}); | |
} | |
} | |
var originalPosition = element.data(TRANSLATE); | |
params = currentValue.match(cssParamsRegExp); | |
if (params) { | |
var dX = value == TRANSLATE + 'y' ? +null : +params[1], dY = value == TRANSLATE + 'y' ? +params[1] : +params[2]; | |
if (isFixed) { | |
if (!isNaN(originalPosition.right)) { | |
if (!isNaN(dX)) { | |
extend(single, { right: originalPosition.right - dX }); | |
} | |
} else { | |
if (!isNaN(dX)) { | |
extend(single, { left: originalPosition.left + dX }); | |
} | |
} | |
if (!isNaN(originalPosition.bottom)) { | |
if (!isNaN(dY)) { | |
extend(single, { bottom: originalPosition.bottom - dY }); | |
} | |
} else { | |
if (!isNaN(dY)) { | |
extend(single, { top: originalPosition.top + dY }); | |
} | |
} | |
} else { | |
if (!isNaN(dX)) { | |
extend(single, { marginLeft: originalPosition.left + dX }); | |
} | |
if (!isNaN(dY)) { | |
extend(single, { marginTop: originalPosition.top + dY }); | |
} | |
} | |
} | |
} | |
} | |
if (!transforms && value != 'scale' && value in single) { | |
delete single[value]; | |
} | |
if (single) { | |
extend(multiple, single); | |
} | |
} | |
}); | |
if (browser.msie) { | |
delete multiple.scale; | |
} | |
element.animate(multiple, { | |
queue: false, | |
show: false, | |
hide: false, | |
duration: options.duration, | |
complete: options.complete | |
}); | |
}); | |
} | |
} | |
} | |
}); | |
fx.animatedPromise = fx.promise; | |
var Effect = kendo.Class.extend({ | |
init: function (element, direction) { | |
var that = this; | |
that.element = element; | |
that._direction = direction; | |
that.options = {}; | |
that._additionalEffects = []; | |
if (!that.restore) { | |
that.restore = []; | |
} | |
}, | |
reverse: function () { | |
this._reverse = true; | |
return this.run(); | |
}, | |
play: function () { | |
this._reverse = false; | |
return this.run(); | |
}, | |
add: function (additional) { | |
this._additionalEffects.push(additional); | |
return this; | |
}, | |
direction: function (value) { | |
this._direction = value; | |
return this; | |
}, | |
duration: function (duration) { | |
this._duration = duration; | |
return this; | |
}, | |
compositeRun: function () { | |
var that = this, effectSet = new EffectSet(that.element, { | |
reverse: that._reverse, | |
duration: that._duration | |
}), effects = that._additionalEffects.concat([that]); | |
return effectSet.run(effects); | |
}, | |
run: function () { | |
if (this._additionalEffects && this._additionalEffects[0]) { | |
return this.compositeRun(); | |
} | |
var that = this, element = that.element, idx = 0, restore = that.restore, length = restore.length, value, deferred = $.Deferred(), start = {}, end = {}, target, children = that.children(), childrenLength = children.length; | |
deferred.then($.proxy(that, '_complete')); | |
element.data('animating', true); | |
for (idx = 0; idx < length; idx++) { | |
value = restore[idx]; | |
if (!element.data(value)) { | |
element.data(value, element.css(value)); | |
} | |
} | |
for (idx = 0; idx < childrenLength; idx++) { | |
children[idx].duration(that._duration).run(); | |
} | |
that.prepare(start, end); | |
if (!element.is(':visible')) { | |
extend(start, { display: element.data('olddisplay') || 'block' }); | |
} | |
if (transforms) { | |
target = element.data('targetTransform'); | |
if (target) { | |
start = extend(target, start); | |
} | |
} | |
start = normalizeCSS(element, start); | |
if (transforms && !transitions) { | |
start = strip3DTransforms(start); | |
} | |
element.css(start).css(TRANSFORM); | |
that.setup(); | |
element.data('targetTransform', end); | |
fx.animate(element, end, { | |
duration: that._duration, | |
complete: deferred.resolve | |
}); | |
return deferred.promise(); | |
}, | |
stop: function () { | |
var idx = 0, children = this.children(), childrenLength = children.length; | |
for (idx = 0; idx < childrenLength; idx++) { | |
children[idx].stop(); | |
} | |
$(this.element).kendoStop(true, true); | |
return this; | |
}, | |
restoreCallback: function () { | |
var element = this.element; | |
for (var i = 0, length = this.restore.length; i < length; i++) { | |
var value = this.restore[i]; | |
element.css(value, element.data(value)); | |
} | |
}, | |
_complete: function () { | |
var that = this, element = that.element; | |
element.removeData('animating').dequeue(); | |
that.restoreCallback(); | |
if (that.shouldHide()) { | |
element.data('olddisplay', element.css('display')).hide(); | |
} | |
if (hasZoom && !transforms) { | |
setTimeout($.proxy(that, 'restoreCallback'), 0); | |
} | |
that.teardown(); | |
}, | |
setOptions: function (options) { | |
extend(true, this.options, options); | |
}, | |
children: function () { | |
return []; | |
}, | |
shouldHide: $.noop, | |
setup: $.noop, | |
prepare: $.noop, | |
teardown: $.noop, | |
directions: [], | |
setReverse: function (reverse) { | |
this._reverse = reverse; | |
return this; | |
} | |
}); | |
function capitalize(word) { | |
return word.charAt(0).toUpperCase() + word.substring(1); | |
} | |
function createEffect(name, definition) { | |
var effectClass = Effect.extend(definition), directions = effectClass.prototype.directions; | |
fx[capitalize(name)] = effectClass; | |
fx.Element.prototype[name] = function (direction, opt1, opt2, opt3) { | |
return new effectClass(this.element, direction, opt1, opt2, opt3); | |
}; | |
each(directions, function (idx, theDirection) { | |
fx.Element.prototype[name + capitalize(theDirection)] = function (opt1, opt2, opt3) { | |
return new effectClass(this.element, theDirection, opt1, opt2, opt3); | |
}; | |
}); | |
} | |
var FOUR_DIRECTIONS = [ | |
'left', | |
'right', | |
'up', | |
'down' | |
], IN_OUT = [ | |
'in', | |
'out' | |
]; | |
createEffect('slideIn', { | |
directions: FOUR_DIRECTIONS, | |
divisor: function (value) { | |
this.options.divisor = value; | |
return this; | |
}, | |
prepare: function (start, end) { | |
var that = this, tmp, element = that.element, direction = directions[that._direction], offset = -direction.modifier * (direction.vertical ? element.outerHeight() : element.outerWidth()), startValue = offset / (that.options && that.options.divisor || 1) + PX, endValue = '0px'; | |
if (that._reverse) { | |
tmp = start; | |
start = end; | |
end = tmp; | |
} | |
if (transforms) { | |
start[direction.transition] = startValue; | |
end[direction.transition] = endValue; | |
} else { | |
start[direction.property] = startValue; | |
end[direction.property] = endValue; | |
} | |
} | |
}); | |
createEffect('tile', { | |
directions: FOUR_DIRECTIONS, | |
init: function (element, direction, previous) { | |
Effect.prototype.init.call(this, element, direction); | |
this.options = { previous: previous }; | |
}, | |
previousDivisor: function (value) { | |
this.options.previousDivisor = value; | |
return this; | |
}, | |
children: function () { | |
var that = this, reverse = that._reverse, previous = that.options.previous, divisor = that.options.previousDivisor || 1, dir = that._direction; | |
var children = [kendo.fx(that.element).slideIn(dir).setReverse(reverse)]; | |
if (previous) { | |
children.push(kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse)); | |
} | |
return children; | |
} | |
}); | |
function createToggleEffect(name, property, defaultStart, defaultEnd) { | |
createEffect(name, { | |
directions: IN_OUT, | |
startValue: function (value) { | |
this._startValue = value; | |
return this; | |
}, | |
endValue: function (value) { | |
this._endValue = value; | |
return this; | |
}, | |
shouldHide: function () { | |
return this._shouldHide; | |
}, | |
prepare: function (start, end) { | |
var that = this, startValue, endValue, out = this._direction === 'out', startDataValue = that.element.data(property), startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart); | |
if (startDataValueIsSet) { | |
startValue = startDataValue; | |
} else if (typeof this._startValue !== 'undefined') { | |
startValue = this._startValue; | |
} else { | |
startValue = out ? defaultStart : defaultEnd; | |
} | |
if (typeof this._endValue !== 'undefined') { | |
endValue = this._endValue; | |
} else { | |
endValue = out ? defaultEnd : defaultStart; | |
} | |
if (this._reverse) { | |
start[property] = endValue; | |
end[property] = startValue; | |
} else { | |
start[property] = startValue; | |
end[property] = endValue; | |
} | |
that._shouldHide = end[property] === defaultEnd; | |
} | |
}); | |
} | |
createToggleEffect('fade', 'opacity', 1, 0); | |
createToggleEffect('zoom', 'scale', 1, 0.01); | |
createEffect('slideMargin', { | |
prepare: function (start, end) { | |
var that = this, element = that.element, options = that.options, origin = element.data(ORIGIN), offset = options.offset, margin, reverse = that._reverse; | |
if (!reverse && origin === null) { | |
element.data(ORIGIN, parseFloat(element.css('margin-' + options.axis))); | |
} | |
margin = element.data(ORIGIN) || 0; | |
end['margin-' + options.axis] = !reverse ? margin + offset : margin; | |
} | |
}); | |
createEffect('slideTo', { | |
prepare: function (start, end) { | |
var that = this, element = that.element, options = that.options, offset = options.offset.split(','), reverse = that._reverse; | |
if (transforms) { | |
end.translatex = !reverse ? offset[0] : 0; | |
end.translatey = !reverse ? offset[1] : 0; | |
} else { | |
end.left = !reverse ? offset[0] : 0; | |
end.top = !reverse ? offset[1] : 0; | |
} | |
element.css('left'); | |
} | |
}); | |
createEffect('expand', { | |
directions: [ | |
'horizontal', | |
'vertical' | |
], | |
restore: [OVERFLOW], | |
prepare: function (start, end) { | |
var that = this, element = that.element, options = that.options, reverse = that._reverse, property = that._direction === 'vertical' ? HEIGHT : WIDTH, setLength = element[0].style[property], oldLength = element.data(property), length = parseFloat(oldLength || setLength), realLength = round(element.css(property, AUTO)[property]()); | |
start.overflow = HIDDEN; | |
length = options && options.reset ? realLength || length : length || realLength; | |
end[property] = (reverse ? 0 : length) + PX; | |
start[property] = (reverse ? length : 0) + PX; | |
if (oldLength === undefined) { | |
element.data(property, setLength); | |
} | |
}, | |
shouldHide: function () { | |
return this._reverse; | |
}, | |
teardown: function () { | |
var that = this, element = that.element, property = that._direction === 'vertical' ? HEIGHT : WIDTH, length = element.data(property); | |
if (length == AUTO || length === BLANK) { | |
setTimeout(function () { | |
element.css(property, AUTO).css(property); | |
}, 0); | |
} | |
} | |
}); | |
var TRANSFER_START_STATE = { | |
position: 'absolute', | |
marginLeft: 0, | |
marginTop: 0, | |
scale: 1 | |
}; | |
createEffect('transfer', { | |
init: function (element, target) { | |
this.element = element; | |
this.options = { target: target }; | |
this.restore = []; | |
}, | |
setup: function () { | |
this.element.appendTo(document.body); | |
}, | |
prepare: function (start, end) { | |
var that = this, element = that.element, outerBox = fx.box(element), innerBox = fx.box(that.options.target), currentScale = animationProperty(element, 'scale'), scale = fx.fillScale(innerBox, outerBox), transformOrigin = fx.transformOrigin(innerBox, outerBox); | |
extend(start, TRANSFER_START_STATE); | |
end.scale = 1; | |
element.css(TRANSFORM, 'scale(1)').css(TRANSFORM); | |
element.css(TRANSFORM, 'scale(' + currentScale + ')'); | |
start.top = outerBox.top; | |
start.left = outerBox.left; | |
start.transformOrigin = transformOrigin.x + PX + ' ' + transformOrigin.y + PX; | |
if (that._reverse) { | |
start.scale = scale; | |
} else { | |
end.scale = scale; | |
} | |
} | |
}); | |
var CLIPS = { | |
top: 'rect(auto auto $size auto)', | |
bottom: 'rect($size auto auto auto)', | |
left: 'rect(auto $size auto auto)', | |
right: 'rect(auto auto auto $size)' | |
}; | |
var ROTATIONS = { | |
top: { | |
start: 'rotatex(0deg)', | |
end: 'rotatex(180deg)' | |
}, | |
bottom: { | |
start: 'rotatex(-180deg)', | |
end: 'rotatex(0deg)' | |
}, | |
left: { | |
start: 'rotatey(0deg)', | |
end: 'rotatey(-180deg)' | |
}, | |
right: { | |
start: 'rotatey(180deg)', | |
end: 'rotatey(0deg)' | |
} | |
}; | |
function clipInHalf(container, direction) { | |
var vertical = kendo.directions[direction].vertical, size = container[vertical ? HEIGHT : WIDTH]() / 2 + 'px'; | |
return CLIPS[direction].replace('$size', size); | |
} | |
createEffect('turningPage', { | |
directions: FOUR_DIRECTIONS, | |
init: function (element, direction, container) { | |
Effect.prototype.init.call(this, element, direction); | |
this._container = container; | |
}, | |
prepare: function (start, end) { | |
var that = this, reverse = that._reverse, direction = reverse ? directions[that._direction].reverse : that._direction, rotation = ROTATIONS[direction]; | |
start.zIndex = 1; | |
if (that._clipInHalf) { | |
start.clip = clipInHalf(that._container, kendo.directions[direction].reverse); | |
} | |
start[BACKFACE] = HIDDEN; | |
end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end); | |
start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start); | |
}, | |
setup: function () { | |
this._container.append(this.element); | |
}, | |
face: function (value) { | |
this._face = value; | |
return this; | |
}, | |
shouldHide: function () { | |
var that = this, reverse = that._reverse, face = that._face; | |
return reverse && !face || !reverse && face; | |
}, | |
clipInHalf: function (value) { | |
this._clipInHalf = value; | |
return this; | |
}, | |
temporary: function () { | |
this.element.addClass('temp-page'); | |
return this; | |
} | |
}); | |
createEffect('staticPage', { | |
directions: FOUR_DIRECTIONS, | |
init: function (element, direction, container) { | |
Effect.prototype.init.call(this, element, direction); | |
this._container = container; | |
}, | |
restore: ['clip'], | |
prepare: function (start, end) { | |
var that = this, direction = that._reverse ? directions[that._direction].reverse : that._direction; | |
start.clip = clipInHalf(that._container, direction); | |
start.opacity = 0.999; | |
end.opacity = 1; | |
}, | |
shouldHide: function () { | |
var that = this, reverse = that._reverse, face = that._face; | |
return reverse && !face || !reverse && face; | |
}, | |
face: function (value) { | |
this._face = value; | |
return this; | |
} | |
}); | |
createEffect('pageturn', { | |
directions: [ | |
'horizontal', | |
'vertical' | |
], | |
init: function (element, direction, face, back) { | |
Effect.prototype.init.call(this, element, direction); | |
this.options = {}; | |
this.options.face = face; | |
this.options.back = back; | |
}, | |
children: function () { | |
var that = this, options = that.options, direction = that._direction === 'horizontal' ? 'left' : 'top', reverseDirection = kendo.directions[direction].reverse, reverse = that._reverse, temp, faceClone = options.face.clone(true).removeAttr('id'), backClone = options.back.clone(true).removeAttr('id'), element = that.element; | |
if (reverse) { | |
temp = direction; | |
direction = reverseDirection; | |
reverseDirection = temp; | |
} | |
return [ | |
kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse), | |
kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse), | |
kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse), | |
kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse) | |
]; | |
}, | |
prepare: function (start, end) { | |
start[PERSPECTIVE] = DEFAULT_PERSPECTIVE; | |
start.transformStyle = 'preserve-3d'; | |
start.opacity = 0.999; | |
end.opacity = 1; | |
}, | |
teardown: function () { | |
this.element.find('.temp-page').remove(); | |
} | |
}); | |
createEffect('flip', { | |
directions: [ | |
'horizontal', | |
'vertical' | |
], | |
init: function (element, direction, face, back) { | |
Effect.prototype.init.call(this, element, direction); | |
this.options = {}; | |
this.options.face = face; | |
this.options.back = back; | |
}, | |
children: function () { | |
var that = this, options = that.options, direction = that._direction === 'horizontal' ? 'left' : 'top', reverseDirection = kendo.directions[direction].reverse, reverse = that._reverse, temp, element = that.element; | |
if (reverse) { | |
temp = direction; | |
direction = reverseDirection; | |
reverseDirection = temp; | |
} | |
return [ | |
kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse), | |
kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse) | |
]; | |
}, | |
prepare: function (start) { | |
start[PERSPECTIVE] = DEFAULT_PERSPECTIVE; | |
start.transformStyle = 'preserve-3d'; | |
} | |
}); | |
var RESTORE_OVERFLOW = !support.mobileOS.android; | |
var IGNORE_TRANSITION_EVENT_SELECTOR = '.km-touch-scrollbar, .km-actionsheet-wrapper'; | |
createEffect('replace', { | |
_before: $.noop, | |
_after: $.noop, | |
init: function (element, previous, transitionClass) { | |
Effect.prototype.init.call(this, element); | |
this._previous = $(previous); | |
this._transitionClass = transitionClass; | |
}, | |
duration: function () { | |
throw new Error('The replace effect does not support duration setting; the effect duration may be customized through the transition class rule'); | |
}, | |
beforeTransition: function (callback) { | |
this._before = callback; | |
return this; | |
}, | |
afterTransition: function (callback) { | |
this._after = callback; | |
return this; | |
}, | |
_both: function () { | |
return $().add(this._element).add(this._previous); | |
}, | |
_containerClass: function () { | |
var direction = this._direction, containerClass = 'k-fx k-fx-start k-fx-' + this._transitionClass; | |
if (direction) { | |
containerClass += ' k-fx-' + direction; | |
} | |
if (this._reverse) { | |
containerClass += ' k-fx-reverse'; | |
} | |
return containerClass; | |
}, | |
complete: function (e) { | |
if (!this.deferred || e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR)) { | |
return; | |
} | |
var container = this.container; | |
container.removeClass('k-fx-end').removeClass(this._containerClass()).off(transitions.event, this.completeProxy); | |
this._previous.hide().removeClass('k-fx-current'); | |
this.element.removeClass('k-fx-next'); | |
if (RESTORE_OVERFLOW) { | |
container.css(OVERFLOW, ''); | |
} | |
if (!this.isAbsolute) { | |
this._both().css(POSITION, ''); | |
} | |
this.deferred.resolve(); | |
delete this.deferred; | |
}, | |
run: function () { | |
if (this._additionalEffects && this._additionalEffects[0]) { | |
return this.compositeRun(); | |
} | |
var that = this, element = that.element, previous = that._previous, container = element.parents().filter(previous.parents()).first(), both = that._both(), deferred = $.Deferred(), originalPosition = element.css(POSITION), originalOverflow; | |
if (!container.length) { | |
container = element.parent(); | |
} | |
this.container = container; | |
this.deferred = deferred; | |
this.isAbsolute = originalPosition == 'absolute'; | |
if (!this.isAbsolute) { | |
both.css(POSITION, 'absolute'); | |
} | |
if (RESTORE_OVERFLOW) { | |
originalOverflow = container.css(OVERFLOW); | |
container.css(OVERFLOW, 'hidden'); | |
} | |
if (!transitions) { | |
this.complete(); | |
} else { | |
element.addClass('k-fx-hidden'); | |
container.addClass(this._containerClass()); | |
this.completeProxy = $.proxy(this, 'complete'); | |
container.on(transitions.event, this.completeProxy); | |
kendo.animationFrame(function () { | |
element.removeClass('k-fx-hidden').addClass('k-fx-next'); | |
previous.css('display', '').addClass('k-fx-current'); | |
that._before(previous, element); | |
kendo.animationFrame(function () { | |
container.removeClass('k-fx-start').addClass('k-fx-end'); | |
that._after(previous, element); | |
}); | |
}); | |
} | |
return deferred.promise(); | |
}, | |
stop: function () { | |
this.complete(); | |
} | |
}); | |
var Animation = kendo.Class.extend({ | |
init: function () { | |
var that = this; | |
that._tickProxy = proxy(that._tick, that); | |
that._started = false; | |
}, | |
tick: $.noop, | |
done: $.noop, | |
onEnd: $.noop, | |
onCancel: $.noop, | |
start: function () { | |
if (!this.enabled()) { | |
return; | |
} | |
if (!this.done()) { | |
this._started = true; | |
kendo.animationFrame(this._tickProxy); | |
} else { | |
this.onEnd(); | |
} | |
}, | |
enabled: function () { | |
return true; | |
}, | |
cancel: function () { | |
this._started = false; | |
this.onCancel(); | |
}, | |
_tick: function () { | |
var that = this; | |
if (!that._started) { | |
return; | |
} | |
that.tick(); | |
if (!that.done()) { | |
kendo.animationFrame(that._tickProxy); | |
} else { | |
that._started = false; | |
that.onEnd(); | |
} | |
} | |
}); | |
var Transition = Animation.extend({ | |
init: function (options) { | |
var that = this; | |
extend(that, options); | |
Animation.fn.init.call(that); | |
}, | |
done: function () { | |
return this.timePassed() >= this.duration; | |
}, | |
timePassed: function () { | |
return Math.min(this.duration, new Date() - this.startDate); | |
}, | |
moveTo: function (options) { | |
var that = this, movable = that.movable; | |
that.initial = movable[that.axis]; | |
that.delta = options.location - that.initial; | |
that.duration = typeof options.duration == 'number' ? options.duration : 300; | |
that.tick = that._easeProxy(options.ease); | |
that.startDate = new Date(); | |
that.start(); | |
}, | |
_easeProxy: function (ease) { | |
var that = this; | |
return function () { | |
that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration)); | |
}; | |
} | |
}); | |
extend(Transition, { | |
easeOutExpo: function (t, b, c, d) { | |
return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; | |
}, | |
easeOutBack: function (t, b, c, d, s) { | |
s = 1.70158; | |
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; | |
} | |
}); | |
fx.Animation = Animation; | |
fx.Transition = Transition; | |
fx.createEffect = createEffect; | |
fx.box = function (element) { | |
element = $(element); | |
var result = element.offset(); | |
result.width = element.outerWidth(); | |
result.height = element.outerHeight(); | |
return result; | |
}; | |
fx.transformOrigin = function (inner, outer) { | |
var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width), y = (inner.top - outer.top) * outer.height / (outer.height - inner.height); | |
return { | |
x: isNaN(x) ? 0 : x, | |
y: isNaN(y) ? 0 : y | |
}; | |
}; | |
fx.fillScale = function (inner, outer) { | |
return Math.min(inner.width / outer.width, inner.height / outer.height); | |
}; | |
fx.fitScale = function (inner, outer) { | |
return Math.max(inner.width / outer.width, inner.height / outer.height); | |
}; | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.userevents', ['kendo.core'], f); | |
}(function () { | |
var __meta__ = { | |
id: 'userevents', | |
name: 'User Events', | |
category: 'framework', | |
depends: ['core'], | |
hidden: true | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, support = kendo.support, document = window.document, Class = kendo.Class, Observable = kendo.Observable, now = $.now, extend = $.extend, OS = support.mobileOS, invalidZeroEvents = OS && OS.android, DEFAULT_MIN_HOLD = 800, DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, PRESS = 'press', HOLD = 'hold', SELECT = 'select', START = 'start', MOVE = 'move', END = 'end', CANCEL = 'cancel', TAP = 'tap', RELEASE = 'release', GESTURESTART = 'gesturestart', GESTURECHANGE = 'gesturechange', GESTUREEND = 'gestureend', GESTURETAP = 'gesturetap'; | |
var THRESHOLD = { | |
'api': 0, | |
'touch': 0, | |
'mouse': 9, | |
'pointer': 9 | |
}; | |
var ENABLE_GLOBAL_SURFACE = !support.touch || support.mouseAndTouchPresent; | |
function touchDelta(touch1, touch2) { | |
var x1 = touch1.x.location, y1 = touch1.y.location, x2 = touch2.x.location, y2 = touch2.y.location, dx = x1 - x2, dy = y1 - y2; | |
return { | |
center: { | |
x: (x1 + x2) / 2, | |
y: (y1 + y2) / 2 | |
}, | |
distance: Math.sqrt(dx * dx + dy * dy) | |
}; | |
} | |
function getTouches(e) { | |
var touches = [], originalEvent = e.originalEvent, currentTarget = e.currentTarget, idx = 0, length, changedTouches, touch; | |
if (e.api) { | |
touches.push({ | |
id: 2, | |
event: e, | |
target: e.target, | |
currentTarget: e.target, | |
location: e, | |
type: 'api' | |
}); | |
} else if (e.type.match(/touch/)) { | |
changedTouches = originalEvent ? originalEvent.changedTouches : []; | |
for (length = changedTouches.length; idx < length; idx++) { | |
touch = changedTouches[idx]; | |
touches.push({ | |
location: touch, | |
event: e, | |
target: touch.target, | |
currentTarget: currentTarget, | |
id: touch.identifier, | |
type: 'touch' | |
}); | |
} | |
} else if (support.pointers || support.msPointers) { | |
touches.push({ | |
location: originalEvent, | |
event: e, | |
target: e.target, | |
currentTarget: currentTarget, | |
id: originalEvent.pointerId, | |
type: 'pointer' | |
}); | |
} else { | |
touches.push({ | |
id: 1, | |
event: e, | |
target: e.target, | |
currentTarget: currentTarget, | |
location: e, | |
type: 'mouse' | |
}); | |
} | |
return touches; | |
} | |
var TouchAxis = Class.extend({ | |
init: function (axis, location) { | |
var that = this; | |
that.axis = axis; | |
that._updateLocationData(location); | |
that.startLocation = that.location; | |
that.velocity = that.delta = 0; | |
that.timeStamp = now(); | |
}, | |
move: function (location) { | |
var that = this, offset = location['page' + that.axis], timeStamp = now(), timeDelta = timeStamp - that.timeStamp || 1; | |
if (!offset && invalidZeroEvents) { | |
return; | |
} | |
that.delta = offset - that.location; | |
that._updateLocationData(location); | |
that.initialDelta = offset - that.startLocation; | |
that.velocity = that.delta / timeDelta; | |
that.timeStamp = timeStamp; | |
}, | |
_updateLocationData: function (location) { | |
var that = this, axis = that.axis; | |
that.location = location['page' + axis]; | |
that.client = location['client' + axis]; | |
that.screen = location['screen' + axis]; | |
} | |
}); | |
var Touch = Class.extend({ | |
init: function (userEvents, target, touchInfo) { | |
extend(this, { | |
x: new TouchAxis('X', touchInfo.location), | |
y: new TouchAxis('Y', touchInfo.location), | |
type: touchInfo.type, | |
useClickAsTap: userEvents.useClickAsTap, | |
threshold: userEvents.threshold || THRESHOLD[touchInfo.type], | |
userEvents: userEvents, | |
target: target, | |
currentTarget: touchInfo.currentTarget, | |
initialTouch: touchInfo.target, | |
id: touchInfo.id, | |
pressEvent: touchInfo, | |
_moved: false, | |
_finished: false | |
}); | |
}, | |
press: function () { | |
this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold); | |
this._trigger(PRESS, this.pressEvent); | |
}, | |
_hold: function () { | |
this._trigger(HOLD, this.pressEvent); | |
}, | |
move: function (touchInfo) { | |
var that = this; | |
if (that._finished) { | |
return; | |
} | |
that.x.move(touchInfo.location); | |
that.y.move(touchInfo.location); | |
if (!that._moved) { | |
if (that._withinIgnoreThreshold()) { | |
return; | |
} | |
if (!UserEvents.current || UserEvents.current === that.userEvents) { | |
that._start(touchInfo); | |
} else { | |
return that.dispose(); | |
} | |
} | |
if (!that._finished) { | |
that._trigger(MOVE, touchInfo); | |
} | |
}, | |
end: function (touchInfo) { | |
this.endTime = now(); | |
if (this._finished) { | |
return; | |
} | |
this._finished = true; | |
this._trigger(RELEASE, touchInfo); | |
if (this._moved) { | |
this._trigger(END, touchInfo); | |
} else { | |
if (!this.useClickAsTap) { | |
this._trigger(TAP, touchInfo); | |
} | |
} | |
clearTimeout(this._holdTimeout); | |
this.dispose(); | |
}, | |
dispose: function () { | |
var userEvents = this.userEvents, activeTouches = userEvents.touches; | |
this._finished = true; | |
this.pressEvent = null; | |
clearTimeout(this._holdTimeout); | |
activeTouches.splice($.inArray(this, activeTouches), 1); | |
}, | |
skip: function () { | |
this.dispose(); | |
}, | |
cancel: function () { | |
this.dispose(); | |
}, | |
isMoved: function () { | |
return this._moved; | |
}, | |
_start: function (touchInfo) { | |
clearTimeout(this._holdTimeout); | |
this.startTime = now(); | |
this._moved = true; | |
this._trigger(START, touchInfo); | |
}, | |
_trigger: function (name, touchInfo) { | |
var that = this, jQueryEvent = touchInfo.event, data = { | |
touch: that, | |
x: that.x, | |
y: that.y, | |
target: that.target, | |
event: jQueryEvent | |
}; | |
if (that.userEvents.notify(name, data)) { | |
jQueryEvent.preventDefault(); | |
} | |
}, | |
_withinIgnoreThreshold: function () { | |
var xDelta = this.x.initialDelta, yDelta = this.y.initialDelta; | |
return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold; | |
} | |
}); | |
function withEachUpEvent(callback) { | |
var downEvents = kendo.eventMap.up.split(' '), idx = 0, length = downEvents.length; | |
for (; idx < length; idx++) { | |
callback(downEvents[idx]); | |
} | |
} | |
var UserEvents = Observable.extend({ | |
init: function (element, options) { | |
var that = this, filter, ns = kendo.guid(); | |
options = options || {}; | |
filter = that.filter = options.filter; | |
that.threshold = options.threshold || DEFAULT_THRESHOLD; | |
that.minHold = options.minHold || DEFAULT_MIN_HOLD; | |
that.touches = []; | |
that._maxTouches = options.multiTouch ? 2 : 1; | |
that.allowSelection = options.allowSelection; | |
that.captureUpIfMoved = options.captureUpIfMoved; | |
that.useClickAsTap = !options.fastTap && !support.delayedClick(); | |
that.eventNS = ns; | |
element = $(element).handler(that); | |
Observable.fn.init.call(that); | |
extend(that, { | |
element: element, | |
surface: options.global && ENABLE_GLOBAL_SURFACE ? $(document.documentElement) : $(options.surface || element), | |
stopPropagation: options.stopPropagation, | |
pressed: false | |
}); | |
that.surface.handler(that).on(kendo.applyEventMap('move', ns), '_move').on(kendo.applyEventMap('up cancel', ns), '_end'); | |
element.on(kendo.applyEventMap('down', ns), filter, '_start'); | |
if (that.useClickAsTap) { | |
element.on(kendo.applyEventMap('click', ns), filter, '_click'); | |
} | |
if (support.pointers || support.msPointers) { | |
if (support.browser.version < 11) { | |
element.css('-ms-touch-action', 'pinch-zoom double-tap-zoom'); | |
} else { | |
element.css('touch-action', 'pan-y'); | |
} | |
} | |
if (options.preventDragEvent) { | |
element.on(kendo.applyEventMap('dragstart', ns), kendo.preventDefault); | |
} | |
element.on(kendo.applyEventMap('mousedown', ns), filter, { root: element }, '_select'); | |
if (that.captureUpIfMoved && support.eventCapture) { | |
var surfaceElement = that.surface[0], preventIfMovingProxy = $.proxy(that.preventIfMoving, that); | |
withEachUpEvent(function (eventName) { | |
surfaceElement.addEventListener(eventName, preventIfMovingProxy, true); | |
}); | |
} | |
that.bind([ | |
PRESS, | |
HOLD, | |
TAP, | |
START, | |
MOVE, | |
END, | |
RELEASE, | |
CANCEL, | |
GESTURESTART, | |
GESTURECHANGE, | |
GESTUREEND, | |
GESTURETAP, | |
SELECT | |
], options); | |
}, | |
preventIfMoving: function (e) { | |
if (this._isMoved()) { | |
e.preventDefault(); | |
} | |
}, | |
destroy: function () { | |
var that = this; | |
if (that._destroyed) { | |
return; | |
} | |
that._destroyed = true; | |
if (that.captureUpIfMoved && support.eventCapture) { | |
var surfaceElement = that.surface[0]; | |
withEachUpEvent(function (eventName) { | |
surfaceElement.removeEventListener(eventName, that.preventIfMoving); | |
}); | |
} | |
that.element.kendoDestroy(that.eventNS); | |
that.surface.kendoDestroy(that.eventNS); | |
that.element.removeData('handler'); | |
that.surface.removeData('handler'); | |
that._disposeAll(); | |
that.unbind(); | |
delete that.surface; | |
delete that.element; | |
delete that.currentTarget; | |
}, | |
capture: function () { | |
UserEvents.current = this; | |
}, | |
cancel: function () { | |
this._disposeAll(); | |
this.trigger(CANCEL); | |
}, | |
notify: function (eventName, data) { | |
var that = this, touches = that.touches; | |
if (this._isMultiTouch()) { | |
switch (eventName) { | |
case MOVE: | |
eventName = GESTURECHANGE; | |
break; | |
case END: | |
eventName = GESTUREEND; | |
break; | |
case TAP: | |
eventName = GESTURETAP; | |
break; | |
} | |
extend(data, { touches: touches }, touchDelta(touches[0], touches[1])); | |
} | |
return this.trigger(eventName, extend(data, { type: eventName })); | |
}, | |
press: function (x, y, target) { | |
this._apiCall('_start', x, y, target); | |
}, | |
move: function (x, y) { | |
this._apiCall('_move', x, y); | |
}, | |
end: function (x, y) { | |
this._apiCall('_end', x, y); | |
}, | |
_isMultiTouch: function () { | |
return this.touches.length > 1; | |
}, | |
_maxTouchesReached: function () { | |
return this.touches.length >= this._maxTouches; | |
}, | |
_disposeAll: function () { | |
var touches = this.touches; | |
while (touches.length > 0) { | |
touches.pop().dispose(); | |
} | |
}, | |
_isMoved: function () { | |
return $.grep(this.touches, function (touch) { | |
return touch.isMoved(); | |
}).length; | |
}, | |
_select: function (e) { | |
if (!this.allowSelection || this.trigger(SELECT, { event: e })) { | |
e.preventDefault(); | |
} | |
}, | |
_start: function (e) { | |
var that = this, idx = 0, filter = that.filter, target, touches = getTouches(e), length = touches.length, touch, which = e.which; | |
if (which && which > 1 || that._maxTouchesReached()) { | |
return; | |
} | |
UserEvents.current = null; | |
that.currentTarget = e.currentTarget; | |
if (that.stopPropagation) { | |
e.stopPropagation(); | |
} | |
for (; idx < length; idx++) { | |
if (that._maxTouchesReached()) { | |
break; | |
} | |
touch = touches[idx]; | |
if (filter) { | |
target = $(touch.currentTarget); | |
} else { | |
target = that.element; | |
} | |
if (!target.length) { | |
continue; | |
} | |
touch = new Touch(that, target, touch); | |
that.touches.push(touch); | |
touch.press(); | |
if (that._isMultiTouch()) { | |
that.notify('gesturestart', {}); | |
} | |
} | |
}, | |
_move: function (e) { | |
this._eachTouch('move', e); | |
}, | |
_end: function (e) { | |
this._eachTouch('end', e); | |
}, | |
_click: function (e) { | |
var data = { | |
touch: { | |
initialTouch: e.target, | |
target: $(e.currentTarget), | |
endTime: now(), | |
x: { | |
location: e.pageX, | |
client: e.clientX | |
}, | |
y: { | |
location: e.pageY, | |
client: e.clientY | |
} | |
}, | |
x: e.pageX, | |
y: e.pageY, | |
target: $(e.currentTarget), | |
event: e, | |
type: 'tap' | |
}; | |
if (this.trigger('tap', data)) { | |
e.preventDefault(); | |
} | |
}, | |
_eachTouch: function (methodName, e) { | |
var that = this, dict = {}, touches = getTouches(e), activeTouches = that.touches, idx, touch, touchInfo, matchingTouch; | |
for (idx = 0; idx < activeTouches.length; idx++) { | |
touch = activeTouches[idx]; | |
dict[touch.id] = touch; | |
} | |
for (idx = 0; idx < touches.length; idx++) { | |
touchInfo = touches[idx]; | |
matchingTouch = dict[touchInfo.id]; | |
if (matchingTouch) { | |
matchingTouch[methodName](touchInfo); | |
} | |
} | |
}, | |
_apiCall: function (type, x, y, target) { | |
this[type]({ | |
api: true, | |
pageX: x, | |
pageY: y, | |
clientX: x, | |
clientY: y, | |
target: $(target || this.element)[0], | |
stopPropagation: $.noop, | |
preventDefault: $.noop | |
}); | |
} | |
}); | |
UserEvents.defaultThreshold = function (value) { | |
DEFAULT_THRESHOLD = value; | |
}; | |
UserEvents.minHold = function (value) { | |
DEFAULT_MIN_HOLD = value; | |
}; | |
kendo.getTouches = getTouches; | |
kendo.touchDelta = touchDelta; | |
kendo.UserEvents = UserEvents; | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.draganddrop', [ | |
'kendo.core', | |
'kendo.userevents' | |
], f); | |
}(function () { | |
var __meta__ = { | |
id: 'draganddrop', | |
name: 'Drag & drop', | |
category: 'framework', | |
description: 'Drag & drop functionality for any DOM element.', | |
depends: [ | |
'core', | |
'userevents' | |
] | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, support = kendo.support, document = window.document, $window = $(window), Class = kendo.Class, Widget = kendo.ui.Widget, Observable = kendo.Observable, UserEvents = kendo.UserEvents, proxy = $.proxy, extend = $.extend, getOffset = kendo.getOffset, draggables = {}, dropTargets = {}, dropAreas = {}, lastDropTarget, elementUnderCursor = kendo.elementUnderCursor, KEYUP = 'keyup', CHANGE = 'change', DRAGSTART = 'dragstart', HOLD = 'hold', DRAG = 'drag', DRAGEND = 'dragend', DRAGCANCEL = 'dragcancel', HINTDESTROYED = 'hintDestroyed', DRAGENTER = 'dragenter', DRAGLEAVE = 'dragleave', DROP = 'drop'; | |
function contains(parent, child) { | |
try { | |
return $.contains(parent, child) || parent == child; | |
} catch (e) { | |
return false; | |
} | |
} | |
function numericCssPropery(element, property) { | |
return parseInt(element.css(property), 10) || 0; | |
} | |
function within(value, range) { | |
return Math.min(Math.max(value, range.min), range.max); | |
} | |
function containerBoundaries(container, element) { | |
var offset = getOffset(container), minX = offset.left + numericCssPropery(container, 'borderLeftWidth') + numericCssPropery(container, 'paddingLeft'), minY = offset.top + numericCssPropery(container, 'borderTopWidth') + numericCssPropery(container, 'paddingTop'), maxX = minX + container.width() - element.outerWidth(true), maxY = minY + container.height() - element.outerHeight(true); | |
return { | |
x: { | |
min: minX, | |
max: maxX | |
}, | |
y: { | |
min: minY, | |
max: maxY | |
} | |
}; | |
} | |
function checkTarget(target, targets, areas) { | |
var theTarget, theFilter, i = 0, targetLen = targets && targets.length, areaLen = areas && areas.length; | |
while (target && target.parentNode) { | |
for (i = 0; i < targetLen; i++) { | |
theTarget = targets[i]; | |
if (theTarget.element[0] === target) { | |
return { | |
target: theTarget, | |
targetElement: target | |
}; | |
} | |
} | |
for (i = 0; i < areaLen; i++) { | |
theFilter = areas[i]; | |
if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) { | |
return { | |
target: theFilter, | |
targetElement: target | |
}; | |
} | |
} | |
target = target.parentNode; | |
} | |
return undefined; | |
} | |
var TapCapture = Observable.extend({ | |
init: function (element, options) { | |
var that = this, domElement = element[0]; | |
that.capture = false; | |
if (domElement.addEventListener) { | |
$.each(kendo.eventMap.down.split(' '), function () { | |
domElement.addEventListener(this, proxy(that._press, that), true); | |
}); | |
$.each(kendo.eventMap.up.split(' '), function () { | |
domElement.addEventListener(this, proxy(that._release, that), true); | |
}); | |
} else { | |
$.each(kendo.eventMap.down.split(' '), function () { | |
domElement.attachEvent(this, proxy(that._press, that)); | |
}); | |
$.each(kendo.eventMap.up.split(' '), function () { | |
domElement.attachEvent(this, proxy(that._release, that)); | |
}); | |
} | |
Observable.fn.init.call(that); | |
that.bind([ | |
'press', | |
'release' | |
], options || {}); | |
}, | |
captureNext: function () { | |
this.capture = true; | |
}, | |
cancelCapture: function () { | |
this.capture = false; | |
}, | |
_press: function (e) { | |
var that = this; | |
that.trigger('press'); | |
if (that.capture) { | |
e.preventDefault(); | |
} | |
}, | |
_release: function (e) { | |
var that = this; | |
that.trigger('release'); | |
if (that.capture) { | |
e.preventDefault(); | |
that.cancelCapture(); | |
} | |
} | |
}); | |
var PaneDimension = Observable.extend({ | |
init: function (options) { | |
var that = this; | |
Observable.fn.init.call(that); | |
that.forcedEnabled = false; | |
$.extend(that, options); | |
that.scale = 1; | |
if (that.horizontal) { | |
that.measure = 'offsetWidth'; | |
that.scrollSize = 'scrollWidth'; | |
that.axis = 'x'; | |
} else { | |
that.measure = 'offsetHeight'; | |
that.scrollSize = 'scrollHeight'; | |
that.axis = 'y'; | |
} | |
}, | |
makeVirtual: function () { | |
$.extend(this, { | |
virtual: true, | |
forcedEnabled: true, | |
_virtualMin: 0, | |
_virtualMax: 0 | |
}); | |
}, | |
virtualSize: function (min, max) { | |
if (this._virtualMin !== min || this._virtualMax !== max) { | |
this._virtualMin = min; | |
this._virtualMax = max; | |
this.update(); | |
} | |
}, | |
outOfBounds: function (offset) { | |
return offset > this.max || offset < this.min; | |
}, | |
forceEnabled: function () { | |
this.forcedEnabled = true; | |
}, | |
getSize: function () { | |
return this.container[0][this.measure]; | |
}, | |
getTotal: function () { | |
return this.element[0][this.scrollSize]; | |
}, | |
rescale: function (scale) { | |
this.scale = scale; | |
}, | |
update: function (silent) { | |
var that = this, total = that.virtual ? that._virtualMax : that.getTotal(), scaledTotal = total * that.scale, size = that.getSize(); | |
if (total === 0 && !that.forcedEnabled) { | |
return; | |
} | |
that.max = that.virtual ? -that._virtualMin : 0; | |
that.size = size; | |
that.total = scaledTotal; | |
that.min = Math.min(that.max, size - scaledTotal); | |
that.minScale = size / total; | |
that.centerOffset = (scaledTotal - size) / 2; | |
that.enabled = that.forcedEnabled || scaledTotal > size; | |
if (!silent) { | |
that.trigger(CHANGE, that); | |
} | |
} | |
}); | |
var PaneDimensions = Observable.extend({ | |
init: function (options) { | |
var that = this; | |
Observable.fn.init.call(that); | |
that.x = new PaneDimension(extend({ horizontal: true }, options)); | |
that.y = new PaneDimension(extend({ horizontal: false }, options)); | |
that.container = options.container; | |
that.forcedMinScale = options.minScale; | |
that.maxScale = options.maxScale || 100; | |
that.bind(CHANGE, options); | |
}, | |
rescale: function (newScale) { | |
this.x.rescale(newScale); | |
this.y.rescale(newScale); | |
this.refresh(); | |
}, | |
centerCoordinates: function () { | |
return { | |
x: Math.min(0, -this.x.centerOffset), | |
y: Math.min(0, -this.y.centerOffset) | |
}; | |
}, | |
refresh: function () { | |
var that = this; | |
that.x.update(); | |
that.y.update(); | |
that.enabled = that.x.enabled || that.y.enabled; | |
that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale); | |
that.fitScale = Math.max(that.x.minScale, that.y.minScale); | |
that.trigger(CHANGE); | |
} | |
}); | |
var PaneAxis = Observable.extend({ | |
init: function (options) { | |
var that = this; | |
extend(that, options); | |
Observable.fn.init.call(that); | |
}, | |
outOfBounds: function () { | |
return this.dimension.outOfBounds(this.movable[this.axis]); | |
}, | |
dragMove: function (delta) { | |
var that = this, dimension = that.dimension, axis = that.axis, movable = that.movable, position = movable[axis] + delta; | |
if (!dimension.enabled) { | |
return; | |
} | |
if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) { | |
delta *= that.resistance; | |
} | |
movable.translateAxis(axis, delta); | |
that.trigger(CHANGE, that); | |
} | |
}); | |
var Pane = Class.extend({ | |
init: function (options) { | |
var that = this, x, y, resistance, movable; | |
extend(that, { elastic: true }, options); | |
resistance = that.elastic ? 0.5 : 0; | |
movable = that.movable; | |
that.x = x = new PaneAxis({ | |
axis: 'x', | |
dimension: that.dimensions.x, | |
resistance: resistance, | |
movable: movable | |
}); | |
that.y = y = new PaneAxis({ | |
axis: 'y', | |
dimension: that.dimensions.y, | |
resistance: resistance, | |
movable: movable | |
}); | |
that.userEvents.bind([ | |
'press', | |
'move', | |
'end', | |
'gesturestart', | |
'gesturechange' | |
], { | |
gesturestart: function (e) { | |
that.gesture = e; | |
that.offset = that.dimensions.container.offset(); | |
}, | |
press: function (e) { | |
if ($(e.event.target).closest('a').is('[data-navigate-on-press=true]')) { | |
e.sender.cancel(); | |
} | |
}, | |
gesturechange: function (e) { | |
var previousGesture = that.gesture, previousCenter = previousGesture.center, center = e.center, scaleDelta = e.distance / previousGesture.distance, minScale = that.dimensions.minScale, maxScale = that.dimensions.maxScale, coordinates; | |
if (movable.scale <= minScale && scaleDelta < 1) { | |
scaleDelta += (1 - scaleDelta) * 0.8; | |
} | |
if (movable.scale * scaleDelta >= maxScale) { | |
scaleDelta = maxScale / movable.scale; | |
} | |
var offsetX = movable.x + that.offset.left, offsetY = movable.y + that.offset.top; | |
coordinates = { | |
x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX, | |
y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY | |
}; | |
movable.scaleWith(scaleDelta); | |
x.dragMove(coordinates.x); | |
y.dragMove(coordinates.y); | |
that.dimensions.rescale(movable.scale); | |
that.gesture = e; | |
e.preventDefault(); | |
}, | |
move: function (e) { | |
if (e.event.target.tagName.match(/textarea|input/i)) { | |
return; | |
} | |
if (x.dimension.enabled || y.dimension.enabled) { | |
x.dragMove(e.x.delta); | |
y.dragMove(e.y.delta); | |
e.preventDefault(); | |
} else { | |
e.touch.skip(); | |
} | |
}, | |
end: function (e) { | |
e.preventDefault(); | |
} | |
}); | |
} | |
}); | |
var TRANSFORM_STYLE = support.transitions.prefix + 'Transform', translate; | |
if (support.hasHW3D) { | |
translate = function (x, y, scale) { | |
return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')'; | |
}; | |
} else { | |
translate = function (x, y, scale) { | |
return 'translate(' + x + 'px,' + y + 'px) scale(' + scale + ')'; | |
}; | |
} | |
var Movable = Observable.extend({ | |
init: function (element) { | |
var that = this; | |
Observable.fn.init.call(that); | |
that.element = $(element); | |
that.element[0].style.webkitTransformOrigin = 'left top'; | |
that.x = 0; | |
that.y = 0; | |
that.scale = 1; | |
that._saveCoordinates(translate(that.x, that.y, that.scale)); | |
}, | |
translateAxis: function (axis, by) { | |
this[axis] += by; | |
this.refresh(); | |
}, | |
scaleTo: function (scale) { | |
this.scale = scale; | |
this.refresh(); | |
}, | |
scaleWith: function (scaleDelta) { | |
this.scale *= scaleDelta; | |
this.refresh(); | |
}, | |
translate: function (coordinates) { | |
this.x += coordinates.x; | |
this.y += coordinates.y; | |
this.refresh(); | |
}, | |
moveAxis: function (axis, value) { | |
this[axis] = value; | |
this.refresh(); | |
}, | |
moveTo: function (coordinates) { | |
extend(this, coordinates); | |
this.refresh(); | |
}, | |
refresh: function () { | |
var that = this, x = that.x, y = that.y, newCoordinates; | |
if (that.round) { | |
x = Math.round(x); | |
y = Math.round(y); | |
} | |
newCoordinates = translate(x, y, that.scale); | |
if (newCoordinates != that.coordinates) { | |
if (kendo.support.browser.msie && kendo.support.browser.version < 10) { | |
that.element[0].style.position = 'absolute'; | |
that.element[0].style.left = that.x + 'px'; | |
that.element[0].style.top = that.y + 'px'; | |
} else { | |
that.element[0].style[TRANSFORM_STYLE] = newCoordinates; | |
} | |
that._saveCoordinates(newCoordinates); | |
that.trigger(CHANGE); | |
} | |
}, | |
_saveCoordinates: function (coordinates) { | |
this.coordinates = coordinates; | |
} | |
}); | |
function destroyDroppable(collection, widget) { | |
var groupName = widget.options.group, droppables = collection[groupName], i; | |
Widget.fn.destroy.call(widget); | |
if (droppables.length > 1) { | |
for (i = 0; i < droppables.length; i++) { | |
if (droppables[i] == widget) { | |
droppables.splice(i, 1); | |
break; | |
} | |
} | |
} else { | |
droppables.length = 0; | |
delete collection[groupName]; | |
} | |
} | |
var DropTarget = Widget.extend({ | |
init: function (element, options) { | |
var that = this; | |
Widget.fn.init.call(that, element, options); | |
var group = that.options.group; | |
if (!(group in dropTargets)) { | |
dropTargets[group] = [that]; | |
} else { | |
dropTargets[group].push(that); | |
} | |
}, | |
events: [ | |
DRAGENTER, | |
DRAGLEAVE, | |
DROP | |
], | |
options: { | |
name: 'DropTarget', | |
group: 'default' | |
}, | |
destroy: function () { | |
destroyDroppable(dropTargets, this); | |
}, | |
_trigger: function (eventName, e) { | |
var that = this, draggable = draggables[that.options.group]; | |
if (draggable) { | |
return that.trigger(eventName, extend({}, e.event, { | |
draggable: draggable, | |
dropTarget: e.dropTarget | |
})); | |
} | |
}, | |
_over: function (e) { | |
this._trigger(DRAGENTER, e); | |
}, | |
_out: function (e) { | |
this._trigger(DRAGLEAVE, e); | |
}, | |
_drop: function (e) { | |
var that = this, draggable = draggables[that.options.group]; | |
if (draggable) { | |
draggable.dropped = !that._trigger(DROP, e); | |
} | |
} | |
}); | |
DropTarget.destroyGroup = function (groupName) { | |
var group = dropTargets[groupName] || dropAreas[groupName], i; | |
if (group) { | |
for (i = 0; i < group.length; i++) { | |
Widget.fn.destroy.call(group[i]); | |
} | |
group.length = 0; | |
delete dropTargets[groupName]; | |
delete dropAreas[groupName]; | |
} | |
}; | |
DropTarget._cache = dropTargets; | |
var DropTargetArea = DropTarget.extend({ | |
init: function (element, options) { | |
var that = this; | |
Widget.fn.init.call(that, element, options); | |
var group = that.options.group; | |
if (!(group in dropAreas)) { | |
dropAreas[group] = [that]; | |
} else { | |
dropAreas[group].push(that); | |
} | |
}, | |
destroy: function () { | |
destroyDroppable(dropAreas, this); | |
}, | |
options: { | |
name: 'DropTargetArea', | |
group: 'default', | |
filter: null | |
} | |
}); | |
var Draggable = Widget.extend({ | |
init: function (element, options) { | |
var that = this; | |
Widget.fn.init.call(that, element, options); | |
that._activated = false; | |
that.userEvents = new UserEvents(that.element, { | |
global: true, | |
allowSelection: true, | |
filter: that.options.filter, | |
threshold: that.options.distance, | |
start: proxy(that._start, that), | |
hold: proxy(that._hold, that), | |
move: proxy(that._drag, that), | |
end: proxy(that._end, that), | |
cancel: proxy(that._cancel, that), | |
select: proxy(that._select, that) | |
}); | |
that._afterEndHandler = proxy(that._afterEnd, that); | |
that._captureEscape = proxy(that._captureEscape, that); | |
}, | |
events: [ | |
HOLD, | |
DRAGSTART, | |
DRAG, | |
DRAGEND, | |
DRAGCANCEL, | |
HINTDESTROYED | |
], | |
options: { | |
name: 'Draggable', | |
distance: kendo.support.touch ? 0 : 5, | |
group: 'default', | |
cursorOffset: null, | |
axis: null, | |
container: null, | |
filter: null, | |
ignore: null, | |
holdToDrag: false, | |
autoScroll: false, | |
dropped: false | |
}, | |
cancelHold: function () { | |
this._activated = false; | |
}, | |
_captureEscape: function (e) { | |
var that = this; | |
if (e.keyCode === kendo.keys.ESC) { | |
that._trigger(DRAGCANCEL, { event: e }); | |
that.userEvents.cancel(); | |
} | |
}, | |
_updateHint: function (e) { | |
var that = this, coordinates, options = that.options, boundaries = that.boundaries, axis = options.axis, cursorOffset = that.options.cursorOffset; | |
if (cursorOffset) { | |
coordinates = { | |
left: e.x.location + cursorOffset.left, | |
top: e.y.location + cursorOffset.top | |
}; | |
} else { | |
that.hintOffset.left += e.x.delta; | |
that.hintOffset.top += e.y.delta; | |
coordinates = $.extend({}, that.hintOffset); | |
} | |
if (boundaries) { | |
coordinates.top = within(coordinates.top, boundaries.y); | |
coordinates.left = within(coordinates.left, boundaries.x); | |
} | |
if (axis === 'x') { | |
delete coordinates.top; | |
} else if (axis === 'y') { | |
delete coordinates.left; | |
} | |
that.hint.css(coordinates); | |
}, | |
_shouldIgnoreTarget: function (target) { | |
var ignoreSelector = this.options.ignore; | |
return ignoreSelector && $(target).is(ignoreSelector); | |
}, | |
_select: function (e) { | |
if (!this._shouldIgnoreTarget(e.event.target)) { | |
e.preventDefault(); | |
} | |
}, | |
_start: function (e) { | |
var that = this, options = that.options, container = options.container, hint = options.hint; | |
if (this._shouldIgnoreTarget(e.touch.initialTouch) || options.holdToDrag && !that._activated) { | |
that.userEvents.cancel(); | |
return; | |
} | |
that.currentTarget = e.target; | |
that.currentTargetOffset = getOffset(that.currentTarget); | |
if (hint) { | |
if (that.hint) { | |
that.hint.stop(true, true).remove(); | |
} | |
that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint; | |
var offset = getOffset(that.currentTarget); | |
that.hintOffset = offset; | |
that.hint.css({ | |
position: 'absolute', | |
zIndex: 20000, | |
left: offset.left, | |
top: offset.top | |
}).appendTo(document.body); | |
that.angular('compile', function () { | |
that.hint.removeAttr('ng-repeat'); | |
var scopeTarget = $(e.target); | |
while (!scopeTarget.data('$$kendoScope') && scopeTarget.length) { | |
scopeTarget = scopeTarget.parent(); | |
} | |
return { | |
elements: that.hint.get(), | |
scopeFrom: scopeTarget.data('$$kendoScope') | |
}; | |
}); | |
} | |
draggables[options.group] = that; | |
that.dropped = false; | |
if (container) { | |
that.boundaries = containerBoundaries(container, that.hint); | |
} | |
$(document).on(KEYUP, that._captureEscape); | |
if (that._trigger(DRAGSTART, e)) { | |
that.userEvents.cancel(); | |
that._afterEnd(); | |
} | |
that.userEvents.capture(); | |
}, | |
_hold: function (e) { | |
this.currentTarget = e.target; | |
if (this._trigger(HOLD, e)) { | |
this.userEvents.cancel(); | |
} else { | |
this._activated = true; | |
} | |
}, | |
_drag: function (e) { | |
e.preventDefault(); | |
var cursorElement = this._elementUnderCursor(e); | |
this._lastEvent = e; | |
this._processMovement(e, cursorElement); | |
if (this.options.autoScroll) { | |
if (this._cursorElement !== cursorElement) { | |
this._scrollableParent = findScrollableParent(cursorElement); | |
this._cursorElement = cursorElement; | |
} | |
if (this._scrollableParent[0]) { | |
var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent)); | |
this._scrollCompenstation = $.extend({}, this.hintOffset); | |
this._scrollVelocity = velocity; | |
if (velocity.y === 0 && velocity.x === 0) { | |
clearInterval(this._scrollInterval); | |
this._scrollInterval = null; | |
} else if (!this._scrollInterval) { | |
this._scrollInterval = setInterval($.proxy(this, '_autoScroll'), 50); | |
} | |
} | |
} | |
if (this.hint) { | |
this._updateHint(e); | |
} | |
}, | |
_processMovement: function (e, cursorElement) { | |
this._withDropTarget(cursorElement, function (target, targetElement) { | |
if (!target) { | |
if (lastDropTarget) { | |
lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) })); | |
lastDropTarget = null; | |
} | |
return; | |
} | |
if (lastDropTarget) { | |
if (targetElement === lastDropTarget.targetElement) { | |
return; | |
} | |
lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) })); | |
} | |
target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) })); | |
lastDropTarget = extend(target, { targetElement: targetElement }); | |
}); | |
this._trigger(DRAG, extend(e, { | |
dropTarget: lastDropTarget, | |
elementUnderCursor: cursorElement | |
})); | |
}, | |
_autoScroll: function () { | |
var parent = this._scrollableParent[0], velocity = this._scrollVelocity, compensation = this._scrollCompenstation; | |
if (!parent) { | |
return; | |
} | |
var cursorElement = this._elementUnderCursor(this._lastEvent); | |
this._processMovement(this._lastEvent, cursorElement); | |
var yIsScrollable, xIsScrollable; | |
var isRootNode = parent === scrollableRoot()[0]; | |
if (isRootNode) { | |
yIsScrollable = document.body.scrollHeight > $window.height(); | |
xIsScrollable = document.body.scrollWidth > $window.width(); | |
} else { | |
yIsScrollable = parent.offsetHeight <= parent.scrollHeight; | |
xIsScrollable = parent.offsetWidth <= parent.scrollWidth; | |
} | |
var yDelta = parent.scrollTop + velocity.y; | |
var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight; | |
var xDelta = parent.scrollLeft + velocity.x; | |
var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth; | |
if (yInBounds) { | |
parent.scrollTop += velocity.y; | |
} | |
if (xInBounds) { | |
parent.scrollLeft += velocity.x; | |
} | |
if (isRootNode && (xInBounds || yInBounds)) { | |
if (yInBounds) { | |
compensation.top += velocity.y; | |
} | |
if (xInBounds) { | |
compensation.left += velocity.x; | |
} | |
this.hint.css(compensation); | |
} | |
}, | |
_end: function (e) { | |
this._withDropTarget(this._elementUnderCursor(e), function (target, targetElement) { | |
if (target) { | |
target._drop(extend({}, e, { dropTarget: $(targetElement) })); | |
lastDropTarget = null; | |
} | |
}); | |
this._cancel(this._trigger(DRAGEND, e)); | |
}, | |
_cancel: function (isDefaultPrevented) { | |
var that = this; | |
that._scrollableParent = null; | |
this._cursorElement = null; | |
clearInterval(this._scrollInterval); | |
that._activated = false; | |
if (that.hint && !that.dropped) { | |
setTimeout(function () { | |
that.hint.stop(true, true); | |
if (isDefaultPrevented) { | |
that._afterEndHandler(); | |
} else { | |
that.hint.animate(that.currentTargetOffset, 'fast', that._afterEndHandler); | |
} | |
}, 0); | |
} else { | |
that._afterEnd(); | |
} | |
}, | |
_trigger: function (eventName, e) { | |
var that = this; | |
return that.trigger(eventName, extend({}, e.event, { | |
x: e.x, | |
y: e.y, | |
currentTarget: that.currentTarget, | |
initialTarget: e.touch ? e.touch.initialTouch : null, | |
dropTarget: e.dropTarget, | |
elementUnderCursor: e.elementUnderCursor | |
})); | |
}, | |
_elementUnderCursor: function (e) { | |
var target = elementUnderCursor(e), hint = this.hint; | |
if (hint && contains(hint[0], target)) { | |
hint.hide(); | |
target = elementUnderCursor(e); | |
if (!target) { | |
target = elementUnderCursor(e); | |
} | |
hint.show(); | |
} | |
return target; | |
}, | |
_withDropTarget: function (element, callback) { | |
var result, group = this.options.group, targets = dropTargets[group], areas = dropAreas[group]; | |
if (targets && targets.length || areas && areas.length) { | |
result = checkTarget(element, targets, areas); | |
if (result) { | |
callback(result.target, result.targetElement); | |
} else { | |
callback(); | |
} | |
} | |
}, | |
destroy: function () { | |
var that = this; | |
Widget.fn.destroy.call(that); | |
that._afterEnd(); | |
that.userEvents.destroy(); | |
this._scrollableParent = null; | |
this._cursorElement = null; | |
clearInterval(this._scrollInterval); | |
that.currentTarget = null; | |
}, | |
_afterEnd: function () { | |
var that = this; | |
if (that.hint) { | |
that.hint.remove(); | |
} | |
delete draggables[that.options.group]; | |
that.trigger('destroy'); | |
that.trigger(HINTDESTROYED); | |
$(document).off(KEYUP, that._captureEscape); | |
} | |
}); | |
kendo.ui.plugin(DropTarget); | |
kendo.ui.plugin(DropTargetArea); | |
kendo.ui.plugin(Draggable); | |
kendo.TapCapture = TapCapture; | |
kendo.containerBoundaries = containerBoundaries; | |
extend(kendo.ui, { | |
Pane: Pane, | |
PaneDimensions: PaneDimensions, | |
Movable: Movable | |
}); | |
function scrollableViewPort(element) { | |
var root = scrollableRoot()[0], offset, top, left; | |
if (element[0] === root) { | |
top = root.scrollTop; | |
left = root.scrollLeft; | |
return { | |
top: top, | |
left: left, | |
bottom: top + $window.height(), | |
right: left + $window.width() | |
}; | |
} else { | |
offset = element.offset(); | |
offset.bottom = offset.top + element.height(); | |
offset.right = offset.left + element.width(); | |
return offset; | |
} | |
} | |
function scrollableRoot() { | |
return $(kendo.support.browser.chrome ? document.body : document.documentElement); | |
} | |
function findScrollableParent(element) { | |
var root = scrollableRoot(); | |
if (!element || element === document.body || element === document.documentElement) { | |
return root; | |
} | |
var parent = $(element)[0]; | |
while (parent && !kendo.isScrollable(parent) && parent !== document.body) { | |
parent = parent.parentNode; | |
} | |
if (parent === document.body) { | |
return root; | |
} | |
return $(parent); | |
} | |
function autoScrollVelocity(mouseX, mouseY, rect) { | |
var velocity = { | |
x: 0, | |
y: 0 | |
}; | |
var AUTO_SCROLL_AREA = 50; | |
if (mouseX - rect.left < AUTO_SCROLL_AREA) { | |
velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left)); | |
} else if (rect.right - mouseX < AUTO_SCROLL_AREA) { | |
velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX); | |
} | |
if (mouseY - rect.top < AUTO_SCROLL_AREA) { | |
velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top)); | |
} else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) { | |
velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY); | |
} | |
return velocity; | |
} | |
kendo.ui.Draggable.utils = { | |
autoScrollVelocity: autoScrollVelocity, | |
scrollableViewPort: scrollableViewPort, | |
findScrollableParent: findScrollableParent | |
}; | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.mobile.scroller', [ | |
'kendo.fx', | |
'kendo.draganddrop' | |
], f); | |
}(function () { | |
var __meta__ = { | |
id: 'mobile.scroller', | |
name: 'Scroller', | |
category: 'mobile', | |
description: 'The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.', | |
depends: [ | |
'fx', | |
'draganddrop' | |
] | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, mobile = kendo.mobile, fx = kendo.effects, ui = mobile.ui, proxy = $.proxy, extend = $.extend, Widget = ui.Widget, Class = kendo.Class, Movable = kendo.ui.Movable, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Transition = fx.Transition, Animation = fx.Animation, abs = Math.abs, SNAPBACK_DURATION = 500, SCROLLBAR_OPACITY = 0.7, FRICTION = 0.96, VELOCITY_MULTIPLIER = 10, MAX_VELOCITY = 55, OUT_OF_BOUNDS_FRICTION = 0.5, ANIMATED_SCROLLER_PRECISION = 5, RELEASECLASS = 'km-scroller-release', REFRESHCLASS = 'km-scroller-refresh', PULL = 'pull', CHANGE = 'change', RESIZE = 'resize', SCROLL = 'scroll', MOUSE_WHEEL_ID = 2; | |
var ZoomSnapBack = Animation.extend({ | |
init: function (options) { | |
var that = this; | |
Animation.fn.init.call(that); | |
extend(that, options); | |
that.userEvents.bind('gestureend', proxy(that.start, that)); | |
that.tapCapture.bind('press', proxy(that.cancel, that)); | |
}, | |
enabled: function () { | |
return this.movable.scale < this.dimensions.minScale; | |
}, | |
done: function () { | |
return this.dimensions.minScale - this.movable.scale < 0.01; | |
}, | |
tick: function () { | |
var movable = this.movable; | |
movable.scaleWith(1.1); | |
this.dimensions.rescale(movable.scale); | |
}, | |
onEnd: function () { | |
var movable = this.movable; | |
movable.scaleTo(this.dimensions.minScale); | |
this.dimensions.rescale(movable.scale); | |
} | |
}); | |
var DragInertia = Animation.extend({ | |
init: function (options) { | |
var that = this; | |
Animation.fn.init.call(that); | |
extend(that, options, { | |
transition: new Transition({ | |
axis: options.axis, | |
movable: options.movable, | |
onEnd: function () { | |
that._end(); | |
} | |
}) | |
}); | |
that.tapCapture.bind('press', function () { | |
that.cancel(); | |
}); | |
that.userEvents.bind('end', proxy(that.start, that)); | |
that.userEvents.bind('gestureend', proxy(that.start, that)); | |
that.userEvents.bind('tap', proxy(that.onEnd, that)); | |
}, | |
onCancel: function () { | |
this.transition.cancel(); | |
}, | |
freeze: function (location) { | |
var that = this; | |
that.cancel(); | |
that._moveTo(location); | |
}, | |
onEnd: function () { | |
var that = this; | |
if (that.paneAxis.outOfBounds()) { | |
that._snapBack(); | |
} else { | |
that._end(); | |
} | |
}, | |
done: function () { | |
return abs(this.velocity) < 1; | |
}, | |
start: function (e) { | |
var that = this, velocity; | |
if (!that.dimension.enabled) { | |
return; | |
} | |
if (that.paneAxis.outOfBounds()) { | |
that._snapBack(); | |
} else { | |
velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity; | |
that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY); | |
that.tapCapture.captureNext(); | |
Animation.fn.start.call(that); | |
} | |
}, | |
tick: function () { | |
var that = this, dimension = that.dimension, friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction, delta = that.velocity *= friction, location = that.movable[that.axis] + delta; | |
if (!that.elastic && dimension.outOfBounds(location)) { | |
location = Math.max(Math.min(location, dimension.max), dimension.min); | |
that.velocity = 0; | |
} | |
that.movable.moveAxis(that.axis, location); | |
}, | |
_end: function () { | |
this.tapCapture.cancelCapture(); | |
this.end(); | |
}, | |
_snapBack: function () { | |
var that = this, dimension = that.dimension, snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min; | |
that._moveTo(snapBack); | |
}, | |
_moveTo: function (location) { | |
this.transition.moveTo({ | |
location: location, | |
duration: SNAPBACK_DURATION, | |
ease: Transition.easeOutExpo | |
}); | |
} | |
}); | |
var AnimatedScroller = Animation.extend({ | |
init: function (options) { | |
var that = this; | |
kendo.effects.Animation.fn.init.call(this); | |
extend(that, options, { | |
origin: {}, | |
destination: {}, | |
offset: {} | |
}); | |
}, | |
tick: function () { | |
this._updateCoordinates(); | |
this.moveTo(this.origin); | |
}, | |
done: function () { | |
return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION; | |
}, | |
onEnd: function () { | |
this.moveTo(this.destination); | |
if (this.callback) { | |
this.callback.call(); | |
} | |
}, | |
setCoordinates: function (from, to) { | |
this.offset = {}; | |
this.origin = from; | |
this.destination = to; | |
}, | |
setCallback: function (callback) { | |
if (callback && kendo.isFunction(callback)) { | |
this.callback = callback; | |
} else { | |
callback = undefined; | |
} | |
}, | |
_updateCoordinates: function () { | |
this.offset = { | |
x: (this.destination.x - this.origin.x) / 4, | |
y: (this.destination.y - this.origin.y) / 4 | |
}; | |
this.origin = { | |
y: this.origin.y + this.offset.y, | |
x: this.origin.x + this.offset.x | |
}; | |
} | |
}); | |
var ScrollBar = Class.extend({ | |
init: function (options) { | |
var that = this, horizontal = options.axis === 'x', element = $('<div class="km-touch-scrollbar km-' + (horizontal ? 'horizontal' : 'vertical') + '-scrollbar" />'); | |
extend(that, options, { | |
element: element, | |
elementSize: 0, | |
movable: new Movable(element), | |
scrollMovable: options.movable, | |
alwaysVisible: options.alwaysVisible, | |
size: horizontal ? 'width' : 'height' | |
}); | |
that.scrollMovable.bind(CHANGE, proxy(that.refresh, that)); | |
that.container.append(element); | |
if (options.alwaysVisible) { | |
that.show(); | |
} | |
}, | |
refresh: function () { | |
var that = this, axis = that.axis, dimension = that.dimension, paneSize = dimension.size, scrollMovable = that.scrollMovable, sizeRatio = paneSize / dimension.total, position = Math.round(-scrollMovable[axis] * sizeRatio), size = Math.round(paneSize * sizeRatio); | |
if (sizeRatio >= 1) { | |
this.element.css('display', 'none'); | |
} else { | |
this.element.css('display', ''); | |
} | |
if (position + size > paneSize) { | |
size = paneSize - position; | |
} else if (position < 0) { | |
size += position; | |
position = 0; | |
} | |
if (that.elementSize != size) { | |
that.element.css(that.size, size + 'px'); | |
that.elementSize = size; | |
} | |
that.movable.moveAxis(axis, position); | |
}, | |
show: function () { | |
this.element.css({ | |
opacity: SCROLLBAR_OPACITY, | |
visibility: 'visible' | |
}); | |
}, | |
hide: function () { | |
if (!this.alwaysVisible) { | |
this.element.css({ opacity: 0 }); | |
} | |
} | |
}); | |
var Scroller = Widget.extend({ | |
init: function (element, options) { | |
var that = this; | |
Widget.fn.init.call(that, element, options); | |
element = that.element; | |
that._native = that.options.useNative && kendo.support.hasNativeScrolling; | |
if (that._native) { | |
element.addClass('km-native-scroller').prepend('<div class="km-scroll-header"/>'); | |
extend(that, { | |
scrollElement: element, | |
fixedContainer: element.children().first() | |
}); | |
return; | |
} | |
element.css('overflow', 'hidden').addClass('km-scroll-wrapper').wrapInner('<div class="km-scroll-container"/>').prepend('<div class="km-scroll-header"/>'); | |
var inner = element.children().eq(1), tapCapture = new kendo.TapCapture(element), movable = new Movable(inner), dimensions = new PaneDimensions({ | |
element: inner, | |
container: element, | |
forcedEnabled: that.options.zoom | |
}), avoidScrolling = this.options.avoidScrolling, userEvents = new kendo.UserEvents(element, { | |
fastTap: true, | |
allowSelection: true, | |
preventDragEvent: true, | |
captureUpIfMoved: true, | |
multiTouch: that.options.zoom, | |
start: function (e) { | |
dimensions.refresh(); | |
var velocityX = abs(e.x.velocity), velocityY = abs(e.y.velocity), horizontalSwipe = velocityX * 2 >= velocityY, originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target), verticalSwipe = velocityY * 2 >= velocityX; | |
if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) { | |
userEvents.capture(); | |
} else { | |
userEvents.cancel(); | |
} | |
} | |
}), pane = new Pane({ | |
movable: movable, | |
dimensions: dimensions, | |
userEvents: userEvents, | |
elastic: that.options.elastic | |
}), zoomSnapBack = new ZoomSnapBack({ | |
movable: movable, | |
dimensions: dimensions, | |
userEvents: userEvents, | |
tapCapture: tapCapture | |
}), animatedScroller = new AnimatedScroller({ | |
moveTo: function (coordinates) { | |
that.scrollTo(coordinates.x, coordinates.y); | |
} | |
}); | |
movable.bind(CHANGE, function () { | |
that.scrollTop = -movable.y; | |
that.scrollLeft = -movable.x; | |
that.trigger(SCROLL, { | |
scrollTop: that.scrollTop, | |
scrollLeft: that.scrollLeft | |
}); | |
}); | |
if (that.options.mousewheelScrolling) { | |
element.on('DOMMouseScroll mousewheel', proxy(this, '_wheelScroll')); | |
} | |
extend(that, { | |
movable: movable, | |
dimensions: dimensions, | |
zoomSnapBack: zoomSnapBack, | |
animatedScroller: animatedScroller, | |
userEvents: userEvents, | |
pane: pane, | |
tapCapture: tapCapture, | |
pulled: false, | |
enabled: true, | |
scrollElement: inner, | |
scrollTop: 0, | |
scrollLeft: 0, | |
fixedContainer: element.children().first() | |
}); | |
that._initAxis('x'); | |
that._initAxis('y'); | |
that._wheelEnd = function () { | |
that._wheel = false; | |
that.userEvents.end(0, that._wheelY); | |
}; | |
dimensions.refresh(); | |
if (that.options.pullToRefresh) { | |
that._initPullToRefresh(); | |
} | |
}, | |
_wheelScroll: function (e) { | |
if (!this._wheel) { | |
this._wheel = true; | |
this._wheelY = 0; | |
this.userEvents.press(0, this._wheelY); | |
} | |
clearTimeout(this._wheelTimeout); | |
this._wheelTimeout = setTimeout(this._wheelEnd, 50); | |
var delta = kendo.wheelDeltaY(e); | |
if (delta) { | |
this._wheelY += delta; | |
this.userEvents.move(0, this._wheelY); | |
} | |
e.preventDefault(); | |
}, | |
makeVirtual: function () { | |
this.dimensions.y.makeVirtual(); | |
}, | |
virtualSize: function (min, max) { | |
this.dimensions.y.virtualSize(min, max); | |
}, | |
height: function () { | |
return this.dimensions.y.size; | |
}, | |
scrollHeight: function () { | |
return this.scrollElement[0].scrollHeight; | |
}, | |
scrollWidth: function () { | |
return this.scrollElement[0].scrollWidth; | |
}, | |
options: { | |
name: 'Scroller', | |
zoom: false, | |
pullOffset: 140, | |
visibleScrollHints: false, | |
elastic: true, | |
useNative: false, | |
mousewheelScrolling: true, | |
avoidScrolling: function () { | |
return false; | |
}, | |
pullToRefresh: false, | |
messages: { | |
pullTemplate: 'Pull to refresh', | |
releaseTemplate: 'Release to refresh', | |
refreshTemplate: 'Refreshing' | |
} | |
}, | |
events: [ | |
PULL, | |
SCROLL, | |
RESIZE | |
], | |
_resize: function () { | |
if (!this._native) { | |
this.contentResized(); | |
} | |
}, | |
setOptions: function (options) { | |
var that = this; | |
Widget.fn.setOptions.call(that, options); | |
if (options.pullToRefresh) { | |
that._initPullToRefresh(); | |
} | |
}, | |
reset: function () { | |
if (this._native) { | |
this.scrollElement.scrollTop(0); | |
} else { | |
this.movable.moveTo({ | |
x: 0, | |
y: 0 | |
}); | |
this._scale(1); | |
} | |
}, | |
contentResized: function () { | |
this.dimensions.refresh(); | |
if (this.pane.x.outOfBounds()) { | |
this.movable.moveAxis('x', this.dimensions.x.min); | |
} | |
if (this.pane.y.outOfBounds()) { | |
this.movable.moveAxis('y', this.dimensions.y.min); | |
} | |
}, | |
zoomOut: function () { | |
var dimensions = this.dimensions; | |
dimensions.refresh(); | |
this._scale(dimensions.fitScale); | |
this.movable.moveTo(dimensions.centerCoordinates()); | |
}, | |
enable: function () { | |
this.enabled = true; | |
}, | |
disable: function () { | |
this.enabled = false; | |
}, | |
scrollTo: function (x, y) { | |
if (this._native) { | |
this.scrollElement.scrollLeft(abs(x)); | |
this.scrollElement.scrollTop(abs(y)); | |
} else { | |
this.dimensions.refresh(); | |
this.movable.moveTo({ | |
x: x, | |
y: y | |
}); | |
} | |
}, | |
animatedScrollTo: function (x, y, callback) { | |
var from, to; | |
if (this._native) { | |
this.scrollTo(x, y); | |
} else { | |
from = { | |
x: this.movable.x, | |
y: this.movable.y | |
}; | |
to = { | |
x: x, | |
y: y | |
}; | |
this.animatedScroller.setCoordinates(from, to); | |
this.animatedScroller.setCallback(callback); | |
this.animatedScroller.start(); | |
} | |
}, | |
pullHandled: function () { | |
var that = this; | |
that.refreshHint.removeClass(REFRESHCLASS); | |
that.hintContainer.html(that.pullTemplate({})); | |
that.yinertia.onEnd(); | |
that.xinertia.onEnd(); | |
that.userEvents.cancel(); | |
}, | |
destroy: function () { | |
Widget.fn.destroy.call(this); | |
if (this.userEvents) { | |
this.userEvents.destroy(); | |
} | |
}, | |
_scale: function (scale) { | |
this.dimensions.rescale(scale); | |
this.movable.scaleTo(scale); | |
}, | |
_initPullToRefresh: function () { | |
var that = this; | |
that.dimensions.y.forceEnabled(); | |
that.pullTemplate = kendo.template(that.options.messages.pullTemplate); | |
that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate); | |
that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate); | |
that.scrollElement.prepend('<span class="km-scroller-pull"><span class="km-icon"></span><span class="km-loading-left"></span><span class="km-loading-right"></span><span class="km-template">' + that.pullTemplate({}) + '</span></span>'); | |
that.refreshHint = that.scrollElement.children().first(); | |
that.hintContainer = that.refreshHint.children('.km-template'); | |
that.pane.y.bind('change', proxy(that._paneChange, that)); | |
that.userEvents.bind('end', proxy(that._dragEnd, that)); | |
}, | |
_dragEnd: function () { | |
var that = this; | |
if (!that.pulled) { | |
return; | |
} | |
that.pulled = false; | |
that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS); | |
that.hintContainer.html(that.refreshTemplate({})); | |
that.yinertia.freeze(that.options.pullOffset / 2); | |
that.trigger('pull'); | |
}, | |
_paneChange: function () { | |
var that = this; | |
if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) { | |
if (!that.pulled) { | |
that.pulled = true; | |
that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS); | |
that.hintContainer.html(that.releaseTemplate({})); | |
} | |
} else if (that.pulled) { | |
that.pulled = false; | |
that.refreshHint.removeClass(RELEASECLASS); | |
that.hintContainer.html(that.pullTemplate({})); | |
} | |
}, | |
_initAxis: function (axis) { | |
var that = this, movable = that.movable, dimension = that.dimensions[axis], tapCapture = that.tapCapture, paneAxis = that.pane[axis], scrollBar = new ScrollBar({ | |
axis: axis, | |
movable: movable, | |
dimension: dimension, | |
container: that.element, | |
alwaysVisible: that.options.visibleScrollHints | |
}); | |
dimension.bind(CHANGE, function () { | |
scrollBar.refresh(); | |
}); | |
paneAxis.bind(CHANGE, function () { | |
scrollBar.show(); | |
}); | |
that[axis + 'inertia'] = new DragInertia({ | |
axis: axis, | |
paneAxis: paneAxis, | |
movable: movable, | |
tapCapture: tapCapture, | |
userEvents: that.userEvents, | |
dimension: dimension, | |
elastic: that.options.elastic, | |
friction: that.options.friction || FRICTION, | |
velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER, | |
end: function () { | |
scrollBar.hide(); | |
that.trigger('scrollEnd', { | |
axis: axis, | |
scrollTop: that.scrollTop, | |
scrollLeft: that.scrollLeft | |
}); | |
} | |
}); | |
} | |
}); | |
ui.plugin(Scroller); | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.popup', ['kendo.core'], f); | |
}(function () { | |
var __meta__ = { | |
id: 'popup', | |
name: 'Pop-up', | |
category: 'framework', | |
depends: ['core'], | |
advanced: true | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, support = kendo.support, getOffset = kendo.getOffset, OPEN = 'open', CLOSE = 'close', DEACTIVATE = 'deactivate', ACTIVATE = 'activate', CENTER = 'center', LEFT = 'left', RIGHT = 'right', TOP = 'top', BOTTOM = 'bottom', ABSOLUTE = 'absolute', HIDDEN = 'hidden', BODY = 'body', LOCATION = 'location', POSITION = 'position', VISIBLE = 'visible', EFFECTS = 'effects', ACTIVE = 'k-state-active', ACTIVEBORDER = 'k-state-border', ACTIVEBORDERREGEXP = /k-state-border-(\w+)/, ACTIVECHILDREN = '.k-picker-wrap, .k-dropdown-wrap, .k-link', MOUSEDOWN = 'down', DOCUMENT_ELEMENT = $(document.documentElement), WINDOW = $(window), SCROLL = 'scroll', cssPrefix = support.transitions.css, TRANSFORM = cssPrefix + 'transform', extend = $.extend, NS = '.kendoPopup', styles = [ | |
'font-size', | |
'font-family', | |
'font-stretch', | |
'font-style', | |
'font-weight', | |
'line-height' | |
]; | |
function contains(container, target) { | |
return container === target || $.contains(container, target); | |
} | |
var Popup = Widget.extend({ | |
init: function (element, options) { | |
var that = this, parentPopup; | |
options = options || {}; | |
if (options.isRtl) { | |
options.origin = options.origin || BOTTOM + ' ' + RIGHT; | |
options.position = options.position || TOP + ' ' + RIGHT; | |
} | |
Widget.fn.init.call(that, element, options); | |
element = that.element; | |
options = that.options; | |
that.collisions = options.collision ? options.collision.split(' ') : []; | |
that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid()); | |
if (that.collisions.length === 1) { | |
that.collisions.push(that.collisions[0]); | |
} | |
parentPopup = $(that.options.anchor).closest('.k-popup,.k-group').filter(':not([class^=km-])'); | |
options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || BODY); | |
that.element.hide().addClass('k-popup k-group k-reset').toggleClass('k-rtl', !!options.isRtl).css({ position: ABSOLUTE }).appendTo(options.appendTo).on('mouseenter' + NS, function () { | |
that._hovered = true; | |
}).on('mouseleave' + NS, function () { | |
that._hovered = false; | |
}); | |
that.wrapper = $(); | |
if (options.animation === false) { | |
options.animation = { | |
open: { effects: {} }, | |
close: { | |
hide: true, | |
effects: {} | |
} | |
}; | |
} | |
extend(options.animation.open, { | |
complete: function () { | |
that.wrapper.css({ overflow: VISIBLE }); | |
that._activated = true; | |
that._trigger(ACTIVATE); | |
} | |
}); | |
extend(options.animation.close, { | |
complete: function () { | |
that._animationClose(); | |
} | |
}); | |
that._mousedownProxy = function (e) { | |
that._mousedown(e); | |
}; | |
if (support.mobileOS.android) { | |
that._resizeProxy = function (e) { | |
setTimeout(function () { | |
that._resize(e); | |
}, 600); | |
}; | |
} else { | |
that._resizeProxy = function (e) { | |
that._resize(e); | |
}; | |
} | |
if (options.toggleTarget) { | |
$(options.toggleTarget).on(options.toggleEvent + NS, $.proxy(that.toggle, that)); | |
} | |
}, | |
events: [ | |
OPEN, | |
ACTIVATE, | |
CLOSE, | |
DEACTIVATE | |
], | |
options: { | |
name: 'Popup', | |
toggleEvent: 'click', | |
origin: BOTTOM + ' ' + LEFT, | |
position: TOP + ' ' + LEFT, | |
anchor: BODY, | |
appendTo: null, | |
collision: 'flip fit', | |
viewport: window, | |
copyAnchorStyles: true, | |
autosize: false, | |
modal: false, | |
adjustSize: { | |
width: 0, | |
height: 0 | |
}, | |
animation: { | |
open: { | |
effects: 'slideIn:down', | |
transition: true, | |
duration: 200 | |
}, | |
close: { | |
duration: 100, | |
hide: true | |
} | |
} | |
}, | |
_animationClose: function () { | |
var that = this; | |
var location = that.wrapper.data(LOCATION); | |
that.wrapper.hide(); | |
if (location) { | |
that.wrapper.css(location); | |
} | |
if (that.options.anchor != BODY) { | |
that._hideDirClass(); | |
} | |
that._closing = false; | |
that._trigger(DEACTIVATE); | |
}, | |
destroy: function () { | |
var that = this, options = that.options, element = that.element.off(NS), parent; | |
Widget.fn.destroy.call(that); | |
if (options.toggleTarget) { | |
$(options.toggleTarget).off(NS); | |
} | |
if (!options.modal) { | |
DOCUMENT_ELEMENT.unbind(that.downEvent, that._mousedownProxy); | |
that._toggleResize(false); | |
} | |
kendo.destroy(that.element.children()); | |
element.removeData(); | |
if (options.appendTo[0] === document.body) { | |
parent = element.parent('.k-animation-container'); | |
if (parent[0]) { | |
parent.remove(); | |
} else { | |
element.remove(); | |
} | |
} | |
}, | |
open: function (x, y) { | |
var that = this, fixed = { | |
isFixed: !isNaN(parseInt(y, 10)), | |
x: x, | |
y: y | |
}, element = that.element, options = that.options, animation, wrapper, anchor = $(options.anchor), mobile = element[0] && element.hasClass('km-widget'); | |
if (!that.visible()) { | |
if (options.copyAnchorStyles) { | |
if (mobile && styles[0] == 'font-size') { | |
styles.shift(); | |
} | |
element.css(kendo.getComputedStyles(anchor[0], styles)); | |
} | |
if (element.data('animating') || that._trigger(OPEN)) { | |
return; | |
} | |
that._activated = false; | |
if (!options.modal) { | |
DOCUMENT_ELEMENT.unbind(that.downEvent, that._mousedownProxy).bind(that.downEvent, that._mousedownProxy); | |
that._toggleResize(false); | |
that._toggleResize(true); | |
} | |
that.wrapper = wrapper = kendo.wrap(element, options.autosize).css({ | |
overflow: HIDDEN, | |
display: 'block', | |
position: ABSOLUTE | |
}); | |
if (support.mobileOS.android) { | |
wrapper.css(TRANSFORM, 'translatez(0)'); | |
} | |
wrapper.css(POSITION); | |
if ($(options.appendTo)[0] == document.body) { | |
wrapper.css(TOP, '-10000px'); | |
} | |
that.flipped = that._position(fixed); | |
animation = that._openAnimation(); | |
if (options.anchor != BODY) { | |
that._showDirClass(animation); | |
} | |
element.data(EFFECTS, animation.effects).kendoStop(true).kendoAnimate(animation); | |
} | |
}, | |
_openAnimation: function () { | |
var animation = extend(true, {}, this.options.animation.open); | |
animation.effects = kendo.parseEffects(animation.effects, this.flipped); | |
return animation; | |
}, | |
_hideDirClass: function () { | |
var anchor = $(this.options.anchor); | |
var direction = ((anchor.attr('class') || '').match(ACTIVEBORDERREGEXP) || [ | |
'', | |
'down' | |
])[1]; | |
var dirClass = ACTIVEBORDER + '-' + direction; | |
anchor.removeClass(dirClass).children(ACTIVECHILDREN).removeClass(ACTIVE).removeClass(dirClass); | |
this.element.removeClass(ACTIVEBORDER + '-' + kendo.directions[direction].reverse); | |
}, | |
_showDirClass: function (animation) { | |
var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : 'down'; | |
var dirClass = ACTIVEBORDER + '-' + direction; | |
$(this.options.anchor).addClass(dirClass).children(ACTIVECHILDREN).addClass(ACTIVE).addClass(dirClass); | |
this.element.addClass(ACTIVEBORDER + '-' + kendo.directions[direction].reverse); | |
}, | |
position: function () { | |
if (this.visible()) { | |
this.flipped = this._position(); | |
} | |
}, | |
toggle: function () { | |
var that = this; | |
that[that.visible() ? CLOSE : OPEN](); | |
}, | |
visible: function () { | |
return this.element.is(':' + VISIBLE); | |
}, | |
close: function (skipEffects) { | |
var that = this, options = that.options, wrap, animation, openEffects, closeEffects; | |
if (that.visible()) { | |
wrap = that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide(); | |
that._toggleResize(false); | |
if (that._closing || that._trigger(CLOSE)) { | |
that._toggleResize(true); | |
return; | |
} | |
that.element.find('.k-popup').each(function () { | |
var that = $(this), popup = that.data('kendoPopup'); | |
if (popup) { | |
popup.close(skipEffects); | |
} | |
}); | |
DOCUMENT_ELEMENT.unbind(that.downEvent, that._mousedownProxy); | |
if (skipEffects) { | |
animation = { | |
hide: true, | |
effects: {} | |
}; | |
} else { | |
animation = extend(true, {}, options.animation.close); | |
openEffects = that.element.data(EFFECTS); | |
closeEffects = animation.effects; | |
if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) { | |
animation.effects = openEffects; | |
animation.reverse = true; | |
} | |
that._closing = true; | |
} | |
that.element.kendoStop(true); | |
wrap.css({ overflow: HIDDEN }); | |
that.element.kendoAnimate(animation); | |
} | |
}, | |
_trigger: function (ev) { | |
return this.trigger(ev, { type: ev }); | |
}, | |
_resize: function (e) { | |
var that = this; | |
if (support.resize.indexOf(e.type) !== -1) { | |
clearTimeout(that._resizeTimeout); | |
that._resizeTimeout = setTimeout(function () { | |
that._position(); | |
that._resizeTimeout = null; | |
}, 50); | |
} else { | |
if (!that._hovered || that._activated && that.element.hasClass('k-list-container')) { | |
that.close(); | |
} | |
} | |
}, | |
_toggleResize: function (toggle) { | |
var method = toggle ? 'on' : 'off'; | |
var eventNames = support.resize; | |
if (!(support.mobileOS.ios || support.mobileOS.android)) { | |
eventNames += ' ' + SCROLL; | |
} | |
this._scrollableParents()[method](SCROLL, this._resizeProxy); | |
WINDOW[method](eventNames, this._resizeProxy); | |
}, | |
_mousedown: function (e) { | |
var that = this, container = that.element[0], options = that.options, anchor = $(options.anchor)[0], toggleTarget = options.toggleTarget, target = kendo.eventTarget(e), popup = $(target).closest('.k-popup'), mobile = popup.parent().parent('.km-shim').length; | |
popup = popup[0]; | |
if (!mobile && popup && popup !== that.element[0]) { | |
return; | |
} | |
if ($(e.target).closest('a').data('rel') === 'popover') { | |
return; | |
} | |
if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) { | |
that.close(); | |
} | |
}, | |
_fit: function (position, size, viewPortSize) { | |
var output = 0; | |
if (position + size > viewPortSize) { | |
output = viewPortSize - (position + size); | |
} | |
if (position < 0) { | |
output = -position; | |
} | |
return output; | |
}, | |
_flip: function (offset, size, anchorSize, viewPortSize, origin, position, boxSize) { | |
var output = 0; | |
boxSize = boxSize || size; | |
if (position !== origin && position !== CENTER && origin !== CENTER) { | |
if (offset + boxSize > viewPortSize) { | |
output += -(anchorSize + size); | |
} | |
if (offset + output < 0) { | |
output += anchorSize + size; | |
} | |
} | |
return output; | |
}, | |
_scrollableParents: function () { | |
return $(this.options.anchor).parentsUntil('body').filter(function (index, element) { | |
return kendo.isScrollable(element); | |
}); | |
}, | |
_position: function (fixed) { | |
var that = this, element = that.element, wrapper = that.wrapper, options = that.options, viewport = $(options.viewport), viewportOffset = viewport.offset(), anchor = $(options.anchor), origins = options.origin.toLowerCase().split(' '), positions = options.position.toLowerCase().split(' '), collisions = that.collisions, zoomLevel = support.zoomLevel(), siblingContainer, parents, parentZIndex, zIndex = 10002, isWindow = !!(viewport[0] == window && window.innerWidth && zoomLevel <= 1.02), idx = 0, docEl = document.documentElement, length, viewportWidth, viewportHeight; | |
viewportWidth = isWindow ? window.innerWidth : viewport.width(); | |
viewportHeight = isWindow ? window.innerHeight : viewport.height(); | |
if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) { | |
viewportWidth -= kendo.support.scrollbar(); | |
} | |
siblingContainer = anchor.parents().filter(wrapper.siblings()); | |
if (siblingContainer[0]) { | |
parentZIndex = Math.max(Number(siblingContainer.css('zIndex')), 0); | |
if (parentZIndex) { | |
zIndex = parentZIndex + 10; | |
} else { | |
parents = anchor.parentsUntil(siblingContainer); | |
for (length = parents.length; idx < length; idx++) { | |
parentZIndex = Number($(parents[idx]).css('zIndex')); | |
if (parentZIndex && zIndex < parentZIndex) { | |
zIndex = parentZIndex + 10; | |
} | |
} | |
} | |
} | |
wrapper.css('zIndex', zIndex); | |
if (fixed && fixed.isFixed) { | |
wrapper.css({ | |
left: fixed.x, | |
top: fixed.y | |
}); | |
} else { | |
wrapper.css(that._align(origins, positions)); | |
} | |
var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]), offset = getOffset(wrapper), anchorParent = anchor.offsetParent().parent('.k-animation-container,.k-popup,.k-group'); | |
if (anchorParent.length) { | |
pos = getOffset(wrapper, POSITION, true); | |
offset = getOffset(wrapper); | |
} | |
if (viewport[0] === window) { | |
offset.top -= window.pageYOffset || document.documentElement.scrollTop || 0; | |
offset.left -= window.pageXOffset || document.documentElement.scrollLeft || 0; | |
} else { | |
offset.top -= viewportOffset.top; | |
offset.left -= viewportOffset.left; | |
} | |
if (!that.wrapper.data(LOCATION)) { | |
wrapper.data(LOCATION, extend({}, pos)); | |
} | |
var offsets = extend({}, offset), location = extend({}, pos), adjustSize = options.adjustSize; | |
if (collisions[0] === 'fit') { | |
location.top += that._fit(offsets.top, wrapper.outerHeight() + adjustSize.height, viewportHeight / zoomLevel); | |
} | |
if (collisions[1] === 'fit') { | |
location.left += that._fit(offsets.left, wrapper.outerWidth() + adjustSize.width, viewportWidth / zoomLevel); | |
} | |
var flipPos = extend({}, location); | |
var elementHeight = element.outerHeight(); | |
var wrapperHeight = wrapper.outerHeight(); | |
if (!wrapper.height() && elementHeight) { | |
wrapperHeight = wrapperHeight + elementHeight; | |
} | |
if (collisions[0] === 'flip') { | |
location.top += that._flip(offsets.top, elementHeight, anchor.outerHeight(), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight); | |
} | |
if (collisions[1] === 'flip') { | |
location.left += that._flip(offsets.left, element.outerWidth(), anchor.outerWidth(), viewportWidth / zoomLevel, origins[1], positions[1], wrapper.outerWidth()); | |
} | |
element.css(POSITION, ABSOLUTE); | |
wrapper.css(location); | |
return location.left != flipPos.left || location.top != flipPos.top; | |
}, | |
_align: function (origin, position) { | |
var that = this, element = that.wrapper, anchor = $(that.options.anchor), verticalOrigin = origin[0], horizontalOrigin = origin[1], verticalPosition = position[0], horizontalPosition = position[1], anchorOffset = getOffset(anchor), appendTo = $(that.options.appendTo), appendToOffset, width = element.outerWidth(), height = element.outerHeight(), anchorWidth = anchor.outerWidth(), anchorHeight = anchor.outerHeight(), top = anchorOffset.top, left = anchorOffset.left, round = Math.round; | |
if (appendTo[0] != document.body) { | |
appendToOffset = getOffset(appendTo); | |
top -= appendToOffset.top; | |
left -= appendToOffset.left; | |
} | |
if (verticalOrigin === BOTTOM) { | |
top += anchorHeight; | |
} | |
if (verticalOrigin === CENTER) { | |
top += round(anchorHeight / 2); | |
} | |
if (verticalPosition === BOTTOM) { | |
top -= height; | |
} | |
if (verticalPosition === CENTER) { | |
top -= round(height / 2); | |
} | |
if (horizontalOrigin === RIGHT) { | |
left += anchorWidth; | |
} | |
if (horizontalOrigin === CENTER) { | |
left += round(anchorWidth / 2); | |
} | |
if (horizontalPosition === RIGHT) { | |
left -= width; | |
} | |
if (horizontalPosition === CENTER) { | |
left -= round(width / 2); | |
} | |
return { | |
top: top, | |
left: left | |
}; | |
} | |
}); | |
ui.plugin(Popup); | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.data.odata', ['kendo.core'], f); | |
}(function () { | |
var __meta__ = { | |
id: 'data.odata', | |
name: 'OData', | |
category: 'framework', | |
depends: ['core'], | |
hidden: true | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, extend = $.extend, odataFilters = { | |
eq: 'eq', | |
neq: 'ne', | |
gt: 'gt', | |
gte: 'ge', | |
lt: 'lt', | |
lte: 'le', | |
contains: 'substringof', | |
doesnotcontain: 'substringof', | |
endswith: 'endswith', | |
startswith: 'startswith', | |
isnull: 'eq', | |
isnotnull: 'ne', | |
isempty: 'eq', | |
isnotempty: 'ne' | |
}, odataFiltersVersionFour = extend({}, odataFilters, { contains: 'contains' }), mappers = { | |
pageSize: $.noop, | |
page: $.noop, | |
filter: function (params, filter, useVersionFour) { | |
if (filter) { | |
filter = toOdataFilter(filter, useVersionFour); | |
if (filter) { | |
params.$filter = filter; | |
} | |
} | |
}, | |
sort: function (params, orderby) { | |
var expr = $.map(orderby, function (value) { | |
var order = value.field.replace(/\./g, '/'); | |
if (value.dir === 'desc') { | |
order += ' desc'; | |
} | |
return order; | |
}).join(','); | |
if (expr) { | |
params.$orderby = expr; | |
} | |
}, | |
skip: function (params, skip) { | |
if (skip) { | |
params.$skip = skip; | |
} | |
}, | |
take: function (params, take) { | |
if (take) { | |
params.$top = take; | |
} | |
} | |
}, defaultDataType = { read: { dataType: 'jsonp' } }; | |
function toOdataFilter(filter, useOdataFour) { | |
var result = [], logic = filter.logic || 'and', idx, length, field, type, format, operator, value, ignoreCase, filters = filter.filters; | |
for (idx = 0, length = filters.length; idx < length; idx++) { | |
filter = filters[idx]; | |
field = filter.field; | |
value = filter.value; | |
operator = filter.operator; | |
if (filter.filters) { | |
filter = toOdataFilter(filter, useOdataFour); | |
} else { | |
ignoreCase = filter.ignoreCase; | |
field = field.replace(/\./g, '/'); | |
filter = odataFilters[operator]; | |
if (useOdataFour) { | |
filter = odataFiltersVersionFour[operator]; | |
} | |
if (operator === 'isnull' || operator === 'isnotnull') { | |
filter = kendo.format('{0} {1} null', field, filter); | |
} else if (operator === 'isempty' || operator === 'isnotempty') { | |
filter = kendo.format('{0} {1} \'\'', field, filter); | |
} else if (filter && value !== undefined) { | |
type = $.type(value); | |
if (type === 'string') { | |
format = '\'{1}\''; | |
value = value.replace(/'/g, '\'\''); | |
if (ignoreCase === true) { | |
field = 'tolower(' + field + ')'; | |
} | |
} else if (type === 'date') { | |
if (useOdataFour) { | |
format = '{1:yyyy-MM-ddTHH:mm:ss+00:00}'; | |
} else { | |
format = 'datetime\'{1:yyyy-MM-ddTHH:mm:ss}\''; | |
} | |
} else { | |
format = '{1}'; | |
} | |
if (filter.length > 3) { | |
if (filter !== 'substringof') { | |
format = '{0}({2},' + format + ')'; | |
} else { | |
format = '{0}(' + format + ',{2})'; | |
if (operator === 'doesnotcontain') { | |
if (useOdataFour) { | |
format = '{0}({2},\'{1}\') eq -1'; | |
filter = 'indexof'; | |
} else { | |
format += ' eq false'; | |
} | |
} | |
} | |
} else { | |
format = '{2} {0} ' + format; | |
} | |
filter = kendo.format(format, filter, value, field); | |
} | |
} | |
result.push(filter); | |
} | |
filter = result.join(' ' + logic + ' '); | |
if (result.length > 1) { | |
filter = '(' + filter + ')'; | |
} | |
return filter; | |
} | |
function stripMetadata(obj) { | |
for (var name in obj) { | |
if (name.indexOf('@odata') === 0) { | |
delete obj[name]; | |
} | |
} | |
} | |
extend(true, kendo.data, { | |
schemas: { | |
odata: { | |
type: 'json', | |
data: function (data) { | |
return data.d.results || [data.d]; | |
}, | |
total: 'd.__count' | |
} | |
}, | |
transports: { | |
odata: { | |
read: { | |
cache: true, | |
dataType: 'jsonp', | |
jsonp: '$callback' | |
}, | |
update: { | |
cache: true, | |
dataType: 'json', | |
contentType: 'application/json', | |
type: 'PUT' | |
}, | |
create: { | |
cache: true, | |
dataType: 'json', | |
contentType: 'application/json', | |
type: 'POST' | |
}, | |
destroy: { | |
cache: true, | |
dataType: 'json', | |
type: 'DELETE' | |
}, | |
parameterMap: function (options, type, useVersionFour) { | |
var params, value, option, dataType; | |
options = options || {}; | |
type = type || 'read'; | |
dataType = (this.options || defaultDataType)[type]; | |
dataType = dataType ? dataType.dataType : 'json'; | |
if (type === 'read') { | |
params = { $inlinecount: 'allpages' }; | |
if (dataType != 'json') { | |
params.$format = 'json'; | |
} | |
for (option in options) { | |
if (mappers[option]) { | |
mappers[option](params, options[option], useVersionFour); | |
} else { | |
params[option] = options[option]; | |
} | |
} | |
} else { | |
if (dataType !== 'json') { | |
throw new Error('Only json dataType can be used for ' + type + ' operation.'); | |
} | |
if (type !== 'destroy') { | |
for (option in options) { | |
value = options[option]; | |
if (typeof value === 'number') { | |
options[option] = value + ''; | |
} | |
} | |
params = kendo.stringify(options); | |
} | |
} | |
return params; | |
} | |
} | |
} | |
}); | |
extend(true, kendo.data, { | |
schemas: { | |
'odata-v4': { | |
type: 'json', | |
data: function (data) { | |
data = $.extend({}, data); | |
stripMetadata(data); | |
if (data.value) { | |
return data.value; | |
} | |
return [data]; | |
}, | |
total: function (data) { | |
return data['@odata.count']; | |
} | |
} | |
}, | |
transports: { | |
'odata-v4': { | |
read: { | |
cache: true, | |
dataType: 'json' | |
}, | |
update: { | |
cache: true, | |
dataType: 'json', | |
contentType: 'application/json;IEEE754Compatible=true', | |
type: 'PUT' | |
}, | |
create: { | |
cache: true, | |
dataType: 'json', | |
contentType: 'application/json;IEEE754Compatible=true', | |
type: 'POST' | |
}, | |
destroy: { | |
cache: true, | |
dataType: 'json', | |
type: 'DELETE' | |
}, | |
parameterMap: function (options, type) { | |
var result = kendo.data.transports.odata.parameterMap(options, type, true); | |
if (type == 'read') { | |
result.$count = true; | |
delete result.$inlinecount; | |
} | |
return result; | |
} | |
} | |
} | |
}); | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.data.xml', ['kendo.core'], f); | |
}(function () { | |
var __meta__ = { | |
id: 'data.xml', | |
name: 'XML', | |
category: 'framework', | |
depends: ['core'], | |
hidden: true | |
}; | |
(function ($, undefined) { | |
var kendo = window.kendo, isArray = $.isArray, isPlainObject = $.isPlainObject, map = $.map, each = $.each, extend = $.extend, getter = kendo.getter, Class = kendo.Class; | |
var XmlDataReader = Class.extend({ | |
init: function (options) { | |
var that = this, total = options.total, model = options.model, parse = options.parse, errors = options.errors, serialize = options.serialize, data = options.data; | |
if (model) { | |
if (isPlainObject(model)) { | |
var base = options.modelBase || kendo.data.Model; | |
if (model.fields) { | |
each(model.fields, function (field, value) { | |
if (isPlainObject(value) && value.field) { | |
if (!$.isFunction(value.field)) { | |
value = extend(value, { field: that.getter(value.field) }); | |
} | |
} else { | |
value = { field: that.getter(value) }; | |
} | |
model.fields[field] = value; | |
}); | |
} | |
var id = model.id; | |
if (id) { | |
var idField = {}; | |
idField[that.xpathToMember(id, true)] = { field: that.getter(id) }; | |
model.fields = extend(idField, model.fields); | |
model.id = that.xpathToMember(id); | |
} | |
model = base.define(model); | |
} | |
that.model = model; | |
} | |
if (total) { | |
if (typeof total == 'string') { | |
total = that.getter(total); | |
that.total = function (data) { | |
return parseInt(total(data), 10); | |
}; | |
} else if (typeof total == 'function') { | |
that.total = total; | |
} | |
} | |
if (errors) { | |
if (typeof errors == 'string') { | |
errors = that.getter(errors); | |
that.errors = function (data) { | |
return errors(data) || null; | |
}; | |
} else if (typeof errors == 'function') { | |
that.errors = errors; | |
} | |
} | |
if (data) { | |
if (typeof data == 'string') { | |
data = that.xpathToMember(data); | |
that.data = function (value) { | |
var result = that.evaluate(value, data), modelInstance; | |
result = isArray(result) ? result : [result]; | |
if (that.model && model.fields) { | |
modelInstance = new that.model(); | |
return map(result, function (value) { | |
if (value) { | |
var record = {}, field; | |
for (field in model.fields) { | |
record[field] = modelInstance._parse(field, model.fields[field].field(value)); | |
} | |
return record; | |
} | |
}); | |
} | |
return result; | |
}; | |
} else if (typeof data == 'function') { | |
that.data = data; | |
} | |
} | |
if (typeof parse == 'function') { | |
var xmlParse = that.parse; | |
that.parse = function (data) { | |
var xml = parse.call(that, data); | |
return xmlParse.call(that, xml); | |
}; | |
} | |
if (typeof serialize == 'function') { | |
that.serialize = serialize; | |
} | |
}, | |
total: function (result) { | |
return this.data(result).length; | |
}, | |
errors: function (data) { | |
return data ? data.errors : null; | |
}, | |
serialize: function (data) { | |
return data; | |
}, | |
parseDOM: function (element) { | |
var result = {}, parsedNode, node, nodeType, nodeName, member, attribute, attributes = element.attributes, attributeCount = attributes.length, idx; | |
for (idx = 0; idx < attributeCount; idx++) { | |
attribute = attributes[idx]; | |
result['@' + attribute.nodeName] = attribute.nodeValue; | |
} | |
for (node = element.firstChild; node; node = node.nextSibling) { | |
nodeType = node.nodeType; | |
if (nodeType === 3 || nodeType === 4) { | |
result['#text'] = node.nodeValue; | |
} else if (nodeType === 1) { | |
parsedNode = this.parseDOM(node); | |
nodeName = node.nodeName; | |
member = result[nodeName]; | |
if (isArray(member)) { | |
member.push(parsedNode); | |
} else if (member !== undefined) { | |
member = [ | |
member, | |
parsedNode | |
]; | |
} else { | |
member = parsedNode; | |
} | |
result[nodeName] = member; | |
} | |
} | |
return result; | |
}, | |
evaluate: function (value, expression) { | |
var members = expression.split('.'), member, result, length, intermediateResult, idx; | |
while (member = members.shift()) { | |
value = value[member]; | |
if (isArray(value)) { | |
result = []; | |
expression = members.join('.'); | |
for (idx = 0, length = value.length; idx < length; idx++) { | |
intermediateResult = this.evaluate(value[idx], expression); | |
intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult]; | |
result.push.apply(result, intermediateResult); | |
} | |
return result; | |
} | |
} | |
return value; | |
}, | |
parse: function (xml) { | |
var documentElement, tree, result = {}; | |
documentElement = xml.documentElement || $.parseXML(xml).documentElement; | |
tree = this.parseDOM(documentElement); | |
result[documentElement.nodeName] = tree; | |
return result; | |
}, | |
xpathToMember: function (member, raw) { | |
if (!member) { | |
return ''; | |
} | |
member = member.replace(/^\//, '').replace(/\//g, '.'); | |
if (member.indexOf('@') >= 0) { | |
return member.replace(/\.?(@.*)/, raw ? '$1' : '["$1"]'); | |
} | |
if (member.indexOf('text()') >= 0) { | |
return member.replace(/(\.?text\(\))/, raw ? '#text' : '["#text"]'); | |
} | |
return member; | |
}, | |
getter: function (member) { | |
return getter(this.xpathToMember(member), true); | |
} | |
}); | |
$.extend(true, kendo.data, { | |
XmlDataReader: XmlDataReader, | |
readers: { xml: XmlDataReader } | |
}); | |
}(window.kendo.jQuery)); | |
return window.kendo; | |
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) { | |
(a3 || a2)(); | |
})); | |
/** | |
* Copyright 2016 Telerik AD | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
(function (f, define) { | |
define('kendo.data', [ | |
'kendo.core', | |
'kendo.data.odata', | |
'kendo.data.xml' | |
], f); | |
}(function () { | |
var __meta__ = { | |
id: 'data', | |
name: 'Data source', | |
category: 'framework', | |
description: 'Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.', | |
depends: ['core'], | |
features: [ | |
{ | |
id: 'data-odata', | |
name: 'OData', | |
description: 'Support for accessing Open Data Protocol (OData) services.', | |
depends: ['data.odata'] | |
}, | |
{ | |
id: 'data-signalr', | |
name: 'SignalR', | |
description: 'Support for binding to SignalR hubs.', | |
depends: ['data.signalr'] | |
}, | |
{ | |
id: 'data-XML', | |
name: 'XML', | |
description: 'Support for binding to XML.', | |
depends: ['data.xml'] | |
} | |
] | |
}; | |
(function ($, undefined) { | |
var extend = $.extend, proxy = $.proxy, isPlainObject = $.isPlainObject, isEmptyObject = $.isEmptyObject, isArray = $.isArray, grep = $.grep, ajax = $.ajax, map, each = $.each, noop = $.noop, kendo = window.kendo, isFunction = kendo.isFunction, Observable = kendo.Observable, Class = kendo.Class, STRING = 'string', FUNCTION = 'function', CREATE = 'create', READ = 'read', UPDATE = 'update', DESTROY = 'destroy', CHANGE = 'change', SYNC = 'sync', GET = 'get', ERROR = 'error', REQUESTSTART = 'requestStart', PROGRESS = 'progress', REQUESTEND = 'requestEnd', crud = [ | |
CREATE, | |
READ, | |
UPDATE, | |
DESTROY | |
], identity = function (o) { | |
return o; | |
}, getter = kendo.getter, stringify = kendo.stringify, math = Math, push = [].push, join = [].join, pop = [].pop, splice = [].splice, shift = [].shift, slice = [].slice, unshift = [].unshift, toString = {}.toString, stableSort = kendo.support.stableSort, dateRegExp = /^\/Date\((.*?)\)\/$/, newLineRegExp = /(\r+|\n+)/g, quoteRegExp = /(?=['\\])/g; | |
var ObservableArray = Observable.extend({ | |
init: function (array, type) { | |
var that = this; | |
that.type = type || ObservableObject; | |
Observable.fn.init.call(that); | |
that.length = array.length; | |
that.wrapAll(array, that); | |
}, | |
at: function (index) { | |
return this[index]; | |
}, | |
toJSON: function () { | |
var idx, length = this.length, value, json = new Array(length); | |
for (idx = 0; idx < length; idx++) { | |
value = this[idx]; | |
if (value instanceof ObservableObject) { | |
value = value.toJSON(); | |
} | |
json[idx] = value; | |
} | |
return json; | |
}, | |
parent: noop, | |
wrapAll: function (source, target) { | |
var that = this, idx, length, parent = function () { | |
return that; | |
}; | |
target = target || []; | |
for (idx = 0, length = source.length; idx < length; idx++) { | |
target[idx] = that.wrap(source[idx], parent); | |
} | |
return target; | |
}, | |
wrap: function (object, parent) { | |
var that = this, observable; | |
if (object !== null && toString.call(object) === '[object Object]') { | |
observable = object instanceof that.type || object instanceof Model; | |
if (!observable) { | |
object = object instanceof ObservableObject ? object.toJSON() : object; | |
object = new that.type(object); | |
} | |
object.parent = parent; | |
object.bind(CHANGE, function (e) { | |
that.trigger(CHANGE, { | |
field: e.field, | |
node: e.node, | |
index: e.index, | |
items: e.items || [this], | |
action: e.node ? e.action || 'itemloaded' : 'itemchange' | |
}); | |
}); | |
} | |
return object; | |
}, | |
push: function () { | |
var index = this.length, items = this.wrapAll(arguments), result; | |
result = push.apply(this, items); | |
this.trigger(CHANGE, { | |
action: 'add', | |
index: index, | |
items: items | |
}); | |
return result; | |
}, | |
slice: slice, | |
sort: [].sort, | |
join: join, | |
pop: function () { | |
var length = this.length, result = pop.apply(this); | |
if (length) { | |
this.trigger(CHANGE, { | |
action: 'remove', | |
index: length - 1, | |
items: [result] | |
}); | |
} | |
return result; | |
}, | |
splice: function (index, howMany, item) { | |
var items = this.wrapAll(slice.call(arguments, 2)), result, i, len; | |
result = splice.apply(this, [ | |
index, | |
howMany | |
].concat(items)); | |
if (result.length) { | |
this.trigger(CHANGE, { | |
action: 'remove', | |
index: index, | |
items: result | |
}); | |
for (i = 0, len = result.length; i < len; i++) { | |
if (result[i] && result[i].children) { | |
result[i].unbind(CHANGE); | |
} | |
} | |
} | |
if (item) { | |
this.trigger(CHANGE, { | |
action: 'add', | |
index: index, | |
items: items | |
}); | |
} | |
return result; | |
}, | |
shift: function () { | |
var length = this.length, result = shift.apply(this); | |
if (length) { | |
this.trigger(CHANGE, { | |
action: 'remove', | |
index: 0, | |
items: [result] | |
}); | |
} | |
return result; | |
}, | |
unshift: function () { | |
var items = this.wrapAll(arguments), result; | |
result = unshift.apply(this, items); | |
this.trigger(CHANGE, { | |
action: 'add', | |
index: 0, | |
items: items | |
}); | |
return result; | |
}, | |
indexOf: function (item) { | |
var that = this, idx, length; | |
for (idx = 0, length = that.length; idx < length; idx++) { | |
if (that[idx] === item) { | |
return idx; | |
} | |
} | |
return -1; | |
}, | |
forEach: function (callback) { | |
var idx = 0, length = this.length; | |
for (; idx < length; idx++) { | |
callback(this[idx], idx, this); | |
} | |
}, | |
map: function (callback) { | |
var idx = 0, result = [], length = this.length; | |
for (; idx < length; idx++) { | |
result[idx] = callback(this[idx], idx, this); | |
} | |
return result; | |
}, | |
reduce: function (callback) { | |
var idx = 0, result, length = this.length; | |
if (arguments.length == 2) { | |
result = arguments[1]; | |
} else if (idx < length) { | |
result = this[idx++]; | |
} | |
for (; idx < length; idx++) { | |
result = callback(result, this[idx], idx, this); | |
} | |
return result; | |
}, | |
reduceRight: function (callback) { | |
var idx = this.length - 1, result; | |
if (arguments.length == 2) { | |
result = arguments[1]; | |
} else if (idx > 0) { | |
result = this[idx--]; | |
} | |
for (; idx >= 0; idx--) { | |
result = callback(result, this[idx], idx, this); | |
} | |
return result; | |
}, | |
filter: function (callback) { | |
var idx = 0, result = [], item, length = this.length; | |
for (; idx < length; idx++) { | |
item = this[idx]; | |
if (callback(item, idx, this)) { | |
result[result.length] = item; | |
} | |
} | |
return result; | |
}, | |
find: function (callback) { | |
var idx = 0, item, length = this.length; | |
for (; idx < length; idx++) { | |
item = this[idx]; | |
if (callback(item, idx, this)) { | |
return item; | |
} | |
} | |
}, | |
every: function (callback) { | |
var idx = 0, item, length = this.length; | |
for (; idx < length; idx++) { | |
item = this[idx]; | |
if (!callback(item, idx, this)) { | |
return false; | |
} | |
} | |
return true; | |
}, | |
some: function (callback) { | |
var idx = 0, item, length = this.length; | |
for (; idx < length; idx++) { | |
item = this[idx]; | |
if (callback(item, idx, this)) { | |
return true; | |
} | |
} | |
return false; | |
}, | |
remove: function (item) { | |
var idx = this.indexOf(item); | |
if (idx !== -1) { | |
this.splice(idx, 1); | |
} | |
}, | |
empty: function () { | |
this.splice(0, this.length); | |
} | |
}); | |
var LazyObservableArray = ObservableArray.extend({ | |
init: function (data, type) { | |
Observable.fn.init.call(this); | |
this.type = type || ObservableObject; | |
for (var idx = 0; idx < data.length; idx++) { | |
this[idx] = data[idx]; | |
} | |
this.length = idx; | |
this._parent = proxy(function () { | |
return this; | |
}, this); | |
}, | |
at: function (index) { | |
var item = this[index]; | |
if (!(item instanceof this.type)) { | |
item = this[index] = this.wrap(item, this._parent); | |
} else { | |
item.parent = this._parent; | |
} | |
return item; | |
} | |
}); | |
function eventHandler(context, type, field, prefix) { | |
return function (e) { | |
var event = {}, key; | |
for (key in e) { | |
event[key] = e[key]; | |
} | |
if (prefix) { | |
event.field = field + '.' + e.field; | |
} else { | |
event.field = field; | |
} | |
if (type == CHANGE && context._notifyChange) { | |
context._notifyChange(event); | |
} | |
context.trigger(type, event); | |
}; | |
} | |
var ObservableObject = Observable.extend({ | |
init: function (value) { | |
var that = this, member, field, parent = function () { | |
return that; | |
}; | |
Observable.fn.init.call(this); | |
this._handlers = {}; | |
for (field in value) { | |
member = value[field]; | |
if (typeof member === 'object' && member && !member.getTime && field.charAt(0) != '_') { | |
member = that.wrap(member, field, parent); | |
} | |
that[field] = member; | |
} | |
that.uid = kendo.guid(); | |
}, | |
shouldSerialize: function (field) { | |
return this.hasOwnProperty(field) && field !== '_handlers' && field !== '_events' && typeof this[field] !== FUNCTION && field !== 'uid'; | |
}, | |
forEach: function (f) { | |
for (var i in this) { | |
if (this.shouldSerialize(i)) { | |
f(this[i], i); | |
} | |
} | |
}, | |
toJSON: function () { | |
var result = {}, value, field; | |
for (field in this) { | |
if (this.shouldSerialize(field)) { | |
value = this[field]; | |
if (value instanceof ObservableObject || value instanceof ObservableArray) { | |
value = value.toJSON(); | |
} | |
result[field] = value; | |
} | |
} | |
return result; | |
}, | |
get: function (field) { | |
var that = this, result; | |
that.trigger(GET, { field: field }); | |
if (field === 'this') { | |
result = that; | |
} else { | |
result = kendo.getter(field, true)(that); | |
} | |
return result; | |
}, | |
_set: function (field, value) { | |
var that = this; | |
var composite = field.indexOf('.') >= 0; | |
if (composite) { | |
var paths = field.split('.'), path = ''; | |
while (paths.length > 1) { | |
path += paths.shift(); | |
var obj = kendo.getter(path, true)(that); | |
if (obj instanceof ObservableObject) { | |
obj.set(paths.join('.'), value); | |
return composite; | |
} | |
path += '.'; | |
} | |
} | |
kendo.setter(field)(that, value); | |
return composite; | |
}, | |
set: function (field, value) { | |
var that = this, isSetPrevented = false, composite = field.indexOf('.') >= 0, current = kendo.getter(field, true)(that); | |
if (current !== value) { | |
if (current instanceof Observable && this._handlers[field]) { | |
if (this._handlers[field].get) { | |
current.unbind(GET, this._handlers[field].get); | |
} | |
current.unbind(CHANGE, this._handlers[field].change); | |
} | |
isSetPrevented = that.trigger('set', { | |
field: field, | |
value: value | |
}); | |
if (!isSetPrevented) { | |
if (!composite) { | |
value = that.wrap(value, field, function () { | |
return that; | |
}); | |
} | |
if (!that._set(field, value) || field.indexOf('(') >= 0 || field.indexOf('[') >= 0) { | |
that.trigger(CHANGE, { field: field }); | |
} | |
} | |
} | |
return isSetPrevented; | |
}, | |
parent: noop, | |
wrap: function (object, field, parent) { | |
var that = this; | |
var get; | |
var change; | |
var type = toString.call(object); | |
if (object != null && (type === '[object Object]' || type === '[object Array]')) { | |
var isObservableArray = object instanceof ObservableArray; | |
var isDataSource = object instanceof DataSource; | |
if (type === '[object Object]' && !isDataSource && !isObservableArray) { | |
if (!(object instanceof ObservableObject)) { | |
object = new ObservableObject(object); | |
} | |
get = eventHandler(that, GET, field, true); | |
object.bind(GET, get); | |
change = eventHandler(that, CHANGE, field, true); | |
object.bind(CHANGE, change); | |
that._handlers[field] = { | |
get: get, | |
change: change | |
}; | |
} else if (type === '[object Array]' || isObservableArray || isDataSource) { | |
if (!isObservableArray && !isDataSource) { | |
object = new ObservableArray(object); | |
} | |
change = eventHandler(that, CHANGE, field, false); | |
object.bind(CHANGE, change); | |
that._handlers[field] = { change: change }; | |
} | |
object.parent = parent; | |
} | |
return object; | |
} | |
}); | |
function equal(x, y) { | |
if (x === y) { | |
return true; | |
} | |
var xtype = $.type(x), ytype = $.type(y), field; | |
if (xtype !== ytype) { | |
return false; | |
} | |
if (xtype === 'date') { | |
return x.getTime() === y.getTime(); | |
} | |
if (xtype !== 'object' && xtype !== 'array') { | |
return false; | |
} | |
for (field in x) { | |
if (!equal(x[field], y[field])) { | |
return false; | |
} | |
} | |
return true; | |
} | |
var parsers = { | |
'number': function (value) { | |
return kendo.parseFloat(value); | |
}, | |
'date': function (value) { | |
return kendo.parseDate(value); | |
}, | |
'boolean': function (value) { | |
if (typeof value === STRING) { | |
return value.toLowerCase() === 'true'; | |
} | |
return value != null ? !!value : value; | |
}, | |
'string': function (value) { | |
return value != null ? value + '' : value; | |
}, | |
'default': function (value) { | |
return value; | |
} | |
}; | |
var defaultValues = { | |
'string': '', | |
'number': 0, | |
'date': new Date(), | |
'boolean': false, | |
'default': '' | |
}; | |
function getFieldByName(obj, name) { | |
var field, fieldName; | |
for (fieldName in obj) { | |
field = obj[fieldName]; | |
if (isPlainObject(field) && field.field && field.field === name) { | |
return field; | |
} else if (field === name) { | |
return field; | |
} | |
} | |
return null; | |
} | |
var Model = ObservableObject.extend({ | |
init: function (data) { | |
var that = this; | |
if (!data || $.isEmptyObject(data)) { | |
data = $.extend({}, that.defaults, data); | |
if (that._initializers) { | |
for (var idx = 0; idx < that._initializers.length; idx++) { | |
var name = that._initializers[idx]; | |
data[name] = that.defaults[name](); | |
} | |
} | |
} | |
ObservableObject.fn.init.call(that, data); | |
that.dirty = false; | |
if (that.idField) { | |
that.id = that.get(that.idField); | |
if (that.id === undefined) { | |
that.id = that._defaultId; | |
} | |
} | |
}, | |
shouldSerialize: function (field) { | |
return ObservableObject.fn.shouldSerialize.call(this, field) && field !== 'uid' && !(this.idField !== 'id' && field === 'id') && field !== 'dirty' && field !== '_accessors'; | |
}, | |
_parse: function (field, value) { | |
var that = this, fieldName = field, fields = that.fields || {}, parse; | |
field = fields[field]; | |
if (!field) { | |
field = getFieldByName(fields, fieldName); | |
} | |
if (field) { | |
parse = field.parse; | |
if (!parse && field.type) { | |
parse = parsers[field.type.toLowerCase()]; | |
} | |
} | |
return parse ? parse(value) : value; | |
}, | |
_notifyChange: function (e) { | |
var action = e.action; | |
if (action == 'add' || action == 'remove') { | |
this.dirty = true; | |
} | |
}, | |
editable: function (field) { | |
field = (this.fields || {})[field]; | |
return field ? field.editable !== false : true; | |
}, | |
set: function (field, value, initiator) { | |
var that = this; | |
var dirty = that.dirty; | |
if (that.editable(field)) { | |
value = that._parse(field, value); | |
if (!equal(value, that.get(field))) { | |
that.dirty = true; | |
if (ObservableObject.fn.set.call(that, field, value, initiator) && !dirty) { | |
that.dirty = dirty; | |
} | |
} | |
} | |
}, | |
accept: function (data) { | |
var that = this, parent = function () { | |
return that; | |
}, field; | |
for (field in data) { | |
var value = data[field]; | |
if (field.charAt(0) != '_') { | |
value = that.wrap(data[field], field, parent); | |
} | |
that._set(field, value); | |
} | |
if (that.idField) { | |
that.id = that.get(that.idField); | |
} | |
that.dirty = false; | |
}, | |
isNew: function () { | |
return this.id === this._defaultId; | |
} | |
}); | |
Model.define = function (base, options) { | |
if (options === undefined) { | |
options = base; | |
base = Model; | |
} | |
var model, proto = extend({ defaults: {} }, options), name, field, type, value, idx, length, fields = {}, originalName, id = proto.id, functionFields = []; | |
if (id) { | |
proto.idField = id; | |
} | |
if (proto.id) { | |
delete proto.id; | |
} | |
if (id) { | |
proto.defaults[id] = proto._defaultId = ''; | |
} | |
if (toString.call(proto.fields) === '[object Array]') { | |
for (idx = 0, length = proto.fields.length; idx < length; idx++) { | |
field = proto.fields[idx]; | |
if (typeof field === STRING) { | |
fields[field] = {}; | |
} else if (field.field) { | |
fields[field.field] = field; | |
} | |
} | |
proto.fields = fields; | |
} | |
for (name in proto.fields) { | |
field = proto.fields[name]; | |
type = field.type || 'default'; | |
value = null; | |
originalName = name; | |
name = typeof field.field === STRING ? field.field : name; | |
if (!field.nullable) { | |
value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined ? field.defaultValue : defaultValues[type.toLowerCase()]; | |
if (typeof value === 'function') { | |
functionFields.push(name); | |
} | |
} | |
if (options.id === name) { | |
proto._defaultId = value; | |
} | |
proto.defaults[originalName !== name ? originalName : name] = value; | |
field.parse = field.parse || parsers[type]; | |
} | |
if (functionFields.length > 0) { | |
proto._initializers = functionFields; | |
} | |
model = base.extend(proto); | |
model.define = function (options) { | |
return Model.define(model, options); | |
}; | |
if (proto.fields) { | |
model.fields = proto.fields; | |
model.idField = proto.idField; | |
} | |
return model; | |
}; | |
var Comparer = { | |
selector: function (field) { | |
return isFunction(field) ? field : getter(field); | |
}, | |
compare: function (field) { | |
var selector = this.selector(field); | |
return function (a, b) { | |
a = selector(a); | |
b = selector(b); | |
if (a == null && b == null) { | |
return 0; | |
} | |
if (a == null) { | |
return -1; | |
} | |
if (b == null) { | |
return 1; | |
} | |
if (a.localeCompare) { | |
return a.localeCompare(b); | |
} | |
return a > b ? 1 : a < b ? -1 : 0; | |
}; | |
}, | |
create: function (sort) { | |
var compare = sort.compare || this.compare(sort.field); | |
if (sort.dir == 'desc') { | |
return function (a, b) { | |
return compare(b, a, true); | |
}; | |
} | |
return compare; | |
}, | |
combine: function (comparers) { | |
return function (a, b) { | |
var result = comparers[0](a, b), idx, length; | |
for (idx = 1, length = comparers.length; idx < length; idx++) { | |
result = result || comparers[idx](a, b); | |
} | |
return result; | |
}; | |
} | |
}; | |
var StableComparer = extend({}, Comparer, { | |
asc: function (field) { | |
var selector = this.selector(field); | |
return function (a, b) { | |
var valueA = selector(a); | |
var valueB = selector(b); | |
if (valueA && valueA.getTime && valueB && valueB.getTime) { | |
valueA = valueA.getTime(); | |
valueB = valueB.getTime(); | |
} | |
if (valueA === valueB) { | |
return a.__position - b.__position; | |
} | |
if (valueA == null) { | |
return -1; | |
} | |
if (valueB == null) { | |
return 1; | |
} | |
if (valueA.localeCompare) { | |
return valueA.localeCompare(valueB); | |
} | |
return valueA > valueB ? 1 : -1; | |
}; | |
}, | |
desc: function (field) { | |
var selector = this.selector(field); | |
return function (a, b) { | |
var valueA = selector(a); | |
var valueB = selector(b); | |
if (valueA && valueA.getTime && valueB && valueB.getTime) { | |
valueA = valueA.getTime(); | |
valueB = valueB.getTime(); | |
} | |
if (valueA === valueB) { | |
return a.__position - b.__position; | |
} | |
if (valueA == null) { | |
return 1; | |
} | |
if (valueB == null) { | |
return -1; | |
} | |
if (valueB.localeCompare) { | |
return valueB.localeCompare(valueA); | |
} | |
return valueA < valueB ? 1 : -1; | |
}; | |
}, | |
create: function (sort) { | |
return this[sort.dir](sort.field); | |
} | |
}); | |
map = function (array, callback) { | |
var idx, length = array.length, result = new Array(length); | |
for (idx = 0; idx < length; idx++) { | |
result[idx] = callback(array[idx], idx, array); | |
} | |
return result; | |
}; | |
var operators = function () { | |
function quote(value) { | |
return value.replace(quoteRegExp, '\\').replace(newLineRegExp, ''); | |
} | |
function operator(op, a, b, ignore) { | |
var date; | |
if (b != null) { | |
if (typeof b === STRING) { | |
b = quote(b); | |
date = dateRegExp.exec(b); | |
if (date) { | |
b = new Date(+date[1]); | |
} else if (ignore) { | |
b = '\'' + b.toLowerCase() + '\''; | |
a = '((' + a + ' || \'\')+\'\').toLowerCase()'; | |
} else { | |
b = '\'' + b + '\''; | |
} | |
} | |
if (b.getTime) { | |
a = '(' + a + '&&' + a + '.getTime?' + a + '.getTime():' + a + ')'; | |
b = b.getTime(); | |
} | |
} | |
return a + ' ' + op + ' ' + b; | |
} | |
return { | |
quote: function (value) { | |
if (value && value.getTime) { | |
return 'new Date(' + value.getTime() + ')'; | |
} | |
if (typeof value == 'string') { | |
return '\'' + quote(value) + '\''; | |
} | |
return '' + value; | |
}, | |
eq: function (a, b, ignore) { | |
return operator('==', a, b, ignore); | |
}, | |
neq: function (a, b, ignore) { | |
return operator('!=', a, b, ignore); | |
}, | |
gt: function (a, b, ignore) { | |
return operator('>', a, b, ignore); | |
}, | |
gte: function (a, b, ignore) { | |
return operator('>=', a, b, ignore); | |
}, | |
lt: function (a, b, ignore) { | |
return operator('<', a, b, ignore); | |
}, | |
lte: function (a, b, ignore) { | |
return operator('<=', a, b, ignore); | |
}, | |
startswith: function (a, b, ignore) { | |
if (ignore) { | |
a = '(' + a + ' || \'\').toLowerCase()'; | |
if (b) { | |
b = b.toLowerCase(); | |
} | |
} | |
if (b) { | |
b = quote(b); | |
} | |
return a + '.lastIndexOf(\'' + b + '\', 0) == 0'; | |
}, | |
doesnotstartwith: function (a, b, ignore) { | |
if (ignore) { | |
a = '(' + a + ' || \'\').toLowerCase()'; | |
if (b) { | |
b = b.toLowerCase(); | |
} | |
} | |
if (b) { | |
b = quote(b); | |
} | |
return a + '.lastIndexOf(\'' + b + '\', 0) == -1'; | |
}, | |
endswith: function (a, b, ignore) { | |
if (ignore) { | |
a = '(' + a + ' || \'\').toLowerCase()'; | |
if (b) { | |
b = b.toLowerCase(); | |
} | |
} | |
if (b) { | |
b = quote(b); | |
} | |
return a + '.indexOf(\'' + b + '\', ' + a + '.length - ' + (b || '').length + ') >= 0'; | |
}, | |
doesnotendwith: function (a, b, ignore) { | |
if (ignore) { | |
a = '(' + a + ' || \'\').toLowerCase()'; | |
if (b) { | |
b = b.toLowerCase(); | |
} | |
} | |
if (b) { | |
b = quote(b); | |
} | |
return a + '.indexOf(\'' + b + '\', ' + a + '.length - ' + (b || '').length + ') < 0'; | |
}, | |
contains: function (a, b, ignore) { | |
if (ignore) { | |
a = '(' + a + ' || \'\').toLowerCase()'; | |
if (b) { | |
b = b.toLowerCase(); | |
} | |
} | |
if (b) { | |
b = quote(b); | |
} | |
return a + '.indexOf(\'' + b + '\') >= 0'; | |
}, | |
doesnotcontain: function (a, b, ignore) { | |
if (ignore) { | |
a = '(' + a + ' || \'\').toLowerCase()'; | |
if (b) { | |
b = b.toLowerCase(); | |
} | |
} | |
if (b) { | |
b = quote(b); | |
} | |
return a + '.indexOf(\'' + b + '\') == -1'; | |
}, | |
isempty: function (a) { | |
return a + ' === \'\''; | |
}, | |
isnotempty: function (a) { | |
return a + ' !== \'\''; | |
}, | |
isnull: function (a) { | |
return '(' + a + ' === null || ' + a + ' === undefined)'; | |
}, | |
isnotnull: function (a) { | |
return '(' + a + ' !== null && ' + a + ' !== undefined)'; | |
} | |
}; | |
}(); | |
function Query(data) { | |
this.data = data || []; | |
} | |
Query.filterExpr = function (expression) { | |
var expressions = [], logic = { | |
and: ' && ', | |
or: ' || ' | |
}, idx, length, filter, expr, fieldFunctions = [], operatorFunctions = [], field, operator, filters = expression.filters; | |
for (idx = 0, length = filters.length; idx < length; idx++) { | |
filter = filters[idx]; | |
field = filter.field; | |
operator = filter.operator; | |
if (filter.filters) { | |
expr = Query.filterExpr(filter); | |
filter = expr.expression.replace(/__o\[(\d+)\]/g, function (match, index) { | |
index = +index; | |
return '__o[' + (operatorFunctions.length + index) + ']'; | |
}).replace(/__f\[(\d+)\]/g, function (match, index) { | |
index = +index; | |
return '__f[' + (fieldFunctions.length + index) + ']'; | |
}); | |
operatorFunctions.push.apply(operatorFunctions, expr.operators); | |
fieldFunctions.push.apply(fieldFunctions, expr.fields); | |
} else { | |
if (typeof field === FUNCTION) { | |
expr = '__f[' + fieldFunctions.length + '](d)'; | |
fieldFunctions.push(field); | |
} else { | |
expr = kendo.expr(field); | |
} | |
if (typeof operator === FUNCTION) { | |
filter = '__o[' + operatorFunctions.length + '](' + expr + ', ' + operators.quote(filter.value) + ')'; | |
operatorFunctions.push(operator); | |
} else { | |
filter = operators[(operator || 'eq').toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined ? filter.ignoreCase : true); | |
} | |
} | |
expressions.push(filter); | |
} | |
return { | |
expression: '(' + expressions.join(logic[expression.logic]) + ')', | |
fields: fieldFunctions, | |
operators: operatorFunctions | |
}; | |
}; | |
function normalizeSort(field, dir) { | |
if (field) { | |
var descriptor = typeof field === STRING ? { | |
field: field, | |
dir: dir | |
} : field, descriptors = isArray(descriptor) ? descriptor : descriptor !== undefined ? [descriptor] : []; | |
return grep(descriptors, function (d) { | |
return !!d.dir; | |
}); | |
} | |
} | |
var operatorMap = { | |
'==': 'eq', | |
equals: 'eq', | |
isequalto: 'eq', | |
equalto: 'eq', | |
equal: 'eq', | |
'!=': 'neq', | |
ne: 'neq', | |
notequals: 'neq', | |
isnotequalto: 'neq', | |
notequalto: 'neq', | |
notequal: 'neq', | |
'<': 'lt', | |
islessthan: 'lt', | |
lessthan: 'lt', | |
less: 'lt', | |
'<=': 'lte', | |
le: 'lte', | |
islessthanorequalto: 'lte', | |
lessthanequal: 'lte', | |
'>': 'gt', | |
isgreaterthan: 'gt', | |
greaterthan: 'gt', | |
greater: 'gt', | |
'>=': 'gte', | |
isgreaterthanorequalto: 'gte', | |
greaterthanequal: 'gte', | |
ge: 'gte', | |
notsubstringof: 'doesnotcontain', | |
isnull: 'isnull', | |
isempty: 'isempty', | |
isnotempty: 'isnotempty' | |
}; | |
function normalizeOperator(expression) { | |
var idx, length, filter, operator, filters = expression.filters; | |
if (filters) { | |
for (idx = 0, length = filters.length; idx < length; idx++) { | |
filter = filters[idx]; | |
operator = filter.operator; | |
if (operator && typeof operator === STRING) { | |
filter.operator = operatorMap[operator.toLowerCase()] || operator; | |
} | |
normalizeOperator(filter); | |
} | |
} | |
} | |
function normalizeFilter(expression) { | |
if (expression && !isEmptyObject(expression)) { | |
if (isArray(expression) || !expression.filters) { | |
expression = { | |
logic: 'and', | |
filters: isArray(expression) ? expression : [expression] | |
}; | |
} | |
normalizeOperator(expression); | |
return expression; | |
} | |
} | |
Query.normalizeFilter = normalizeFilter; | |
function compareDescriptor(f1, f2) { | |
if (f1.logic || f2.logic) { | |
return false; | |
} | |
return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator; | |
} | |
function normalizeDescriptor(filter) { | |
filter = filter || {}; | |
if (isEmptyObject(filter)) { | |
return { | |
logic: 'and', | |
filters: [] | |
}; | |
} | |
return normalizeFilter(filter); | |
} | |
function fieldComparer(a, b) { | |
if (b.logic || a.field > b.field) { | |
return 1; | |
} else if (a.field < b.field) { | |
return -1; | |
} else { | |
return 0; | |
} | |
} | |
function compareFilters(expr1, expr2) { | |
expr1 = normalizeDescriptor(expr1); | |
expr2 = normalizeDescriptor(expr2); | |
if (expr1.logic !== expr2.logic) { | |
return false; | |
} | |
var f1, f2; | |
var filters1 = (expr1.filters || []).slice(); | |
var filters2 = (expr2.filters || []).slice(); | |
if (filters1.length !== filters2.length) { | |
return false; | |
} | |
filters1 = filters1.sort(fieldComparer); | |
filters2 = filters2.sort(fieldComparer); | |
for (var idx = 0; idx < filters1.length; idx++) { | |
f1 = filters1[idx]; | |
f2 = filters2[idx]; | |
if (f1.logic && f2.logic) { | |
if (!compareFilters(f1, f2)) { | |
return false; | |
} | |
} else if (!compareDescriptor(f1, f2)) { | |
return false; | |
} | |
} | |
return true; | |
} | |
Query.compareFilters = compareFilters; | |
function normalizeAggregate(expressions) { | |
return isArray(expressions) ? expressions : [expressions]; | |
} | |
function normalizeGroup(field, dir) { | |
var descriptor = typeof field === STRING ? { | |
field: field, | |
dir: dir | |
} : field, descriptors = isArray(descriptor) ? descriptor : descriptor !== undefined ? [descriptor] : []; | |
return map(descriptors, function (d) { | |
return { | |
field: d.field, | |
dir: d.dir || 'asc', | |
aggregates: d.aggregates | |
}; | |
}); | |
} | |
Query.prototype = { | |
toArray: function () { | |
return this.data; | |
}, | |
range: function (index, count) { | |
return new Query(this.data.slice(index, index + count)); | |
}, | |
skip: function (count) { | |
return new Query(this.data.slice(count)); | |
}, | |
take: function (count) { | |
return new Query(this.data.slice(0, count)); | |
}, | |
select: function (selector) { | |
return new Query(map(this.data, selector)); | |
}, | |
order: function (selector, dir) { | |
var sort = { dir: dir }; | |
if (selector) { | |
if (selector.compare) { | |
sort.compare = selector.compare; | |
} else { | |
sort.field = selector; | |
} | |
} | |
return new Query(this.data.slice(0).sort(Comparer.create(sort))); | |
}, | |
orderBy: function (selector) { | |
return this.order(selector, 'asc'); | |
}, | |
orderByDescending: function (selector) { | |
return this.order(selector, 'desc'); | |
}, | |
sort: function (field, dir, comparer) { | |
var idx, length, descriptors = normalizeSort(field, dir), comparers = []; | |
comparer = comparer || Comparer; | |
if (descriptors.length) { | |
for (idx = 0, length = descriptors.length; idx < length; idx++) { | |
comparers.push(comparer.create(descriptors[idx])); | |
} | |
return this.orderBy({ compare: comparer.combine(comparers) }); | |
} | |
return this; | |
}, | |
filter: function (expressions) { | |
var idx, current, length, compiled, predicate, data = this.data, fields, operators, result = [], filter; | |
expressions = normalizeFilter(expressions); | |
if (!expressions || expressions.filters.length === 0) { | |
return this; | |
} | |
compiled = Query.filterExpr(expressions); | |
fields = compiled.fields; | |
operators = compiled.operators; | |
predicate = filter = new Function('d, __f, __o', 'return ' + compiled.expression); | |
if (fields.length || operators.length) { | |
filter = function (d) { | |
return predicate(d, fields, operators); | |
}; | |
} | |
for (idx = 0, length = data.length; idx < length; idx++) { | |
current = data[idx]; | |
if (filter(current)) { | |
result.push(current); | |
} | |
} | |
return new Query(result); | |
}, | |
group: function (descriptors, allData) { | |
descriptors = normalizeGroup(descriptors || []); | |
allData = allData || this.data; | |
var that = this, result = new Query(that.data), descriptor; | |
if (descriptors.length > 0) { | |
descriptor = descriptors[0]; | |
result = result.groupBy(descriptor).select(function (group) { | |
var data = new Query(allData).filter([{ | |
field: group.field, | |
operator: 'eq', | |
value: group.value, | |
ignoreCase: false | |
}]); | |
return { | |
field: group.field, | |
value: group.value, | |
items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items, | |
hasSubgroups: descriptors.length > 1, | |
aggregates: data.aggregate(descriptor.aggregates) | |
}; | |
}); | |
} | |
return result; | |
}, | |
groupBy: function (descriptor) { | |
if (isEmptyObject(descriptor) || !this.data.length) { | |
return new Query([]); | |
} | |
var field = descriptor.field, sorted = this._sortForGrouping(field, descriptor.dir || 'asc'), accessor = kendo.accessor(field), item, groupValue = accessor.get(sorted[0], field), group = { | |
field: field, | |
value: groupValue, | |
items: [] | |
}, currentValue, idx, len, result = [group]; | |
for (idx = 0, len = sorted.length; idx < len; idx++) { | |
item = sorted[idx]; | |
currentValue = accessor.get(item, field); | |
if (!groupValueComparer(groupValue, currentValue)) { | |
groupValue = currentValue; | |
group = { | |
field: field, | |
value: groupValue, | |
items: [] | |
}; | |
result.push(group); | |
} | |
group.items.push(item); | |
} | |
return new Query(result); | |
}, | |
_sortForGrouping: function (field, dir) { | |
var idx, length, data = this.data; | |
if (!stableSort) { | |
for (idx = 0, length = data.length; idx < length; idx++) { | |
data[idx].__position = idx; | |
} | |
data = new Query(data).sort(field, dir, StableComparer).toArray(); | |
for (idx = 0, length = data.length; idx < length; idx++) { | |
delete data[idx].__position; | |
} | |
return data; | |
} | |
return this.sort(field, dir).toArray(); | |
}, | |
aggregate: function (aggregates) { | |
var idx, len, result = {}, state = {}; | |
if (aggregates && aggregates.length) { | |
for (idx = 0, len = this.data.length; idx < len; idx++) { | |
calculateAggregate(result, aggregates, this.data[idx], idx, len, state); | |
} | |
} | |
return result; | |
} | |
}; | |
function groupValueComparer(a, b) { | |
if (a && a.getTime && b && b.getTime) { | |
return a.getTime() === b.getTime(); | |
} | |
return a === b; | |
} | |
function calculateAggregate(accumulator, aggregates, item, index, length, state) { | |
aggregates = aggregates || []; | |
var idx, aggr, functionName, len = aggregates.length; | |
for (idx = 0; idx < len; idx++) { | |
aggr = aggregates[idx]; | |
functionName = aggr.aggregate; | |
var field = aggr.field; | |
accumulator[field] = accumulator[field] || {}; | |
state[field] = state[field] || {}; | |
state[field][functionName] = state[field][functionName] || {}; | |
accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]); | |
} | |
} | |
var functions = { | |
sum: function (accumulator, item, accessor) { | |
var value = accessor.get(item); | |
if (!isNumber(accumulator)) { | |
accumulator = value; | |
} else if (isNumber(value)) { | |
accumulator += value; | |
} | |
return accumulator; | |
}, | |
count: function (accumulator) { | |
return (accumulator || 0) + 1; | |
}, | |
average: function (accumulator, item, accessor, index, length, state) { | |
var value = accessor.get(item); | |
if (state.count === undefined) { | |
state.count = 0; | |
} | |
if (!isNumber(accumulator)) { | |
accumulator = value; | |
} else if (isNumber(value)) { | |
accumulator += value; | |
} | |
if (isNumber(value)) { | |
state.count++; | |
} | |
if (index == length - 1 && isNumber(accumulator)) { | |
accumulator = accumulator / state.count; | |
} | |
return accumulator; | |
}, | |
max: function (accumulator, item, accessor) { | |
var value = accessor.get(item); | |
if (!isNumber(accumulator) && !isDate(accumulator)) { | |
accumulator = value; | |
} | |
if (accumulator < value && (isNumber(value) || isDate(value))) { | |
accumulator = value; | |
} | |
return accumulator; | |
}, | |
min: function (accumulator, item, accessor) { | |
var value = accessor.get(item); | |
if (!isNumber(accumulator) && !isDate(accumulator)) { | |
accumulator = value; | |
} | |
if (accumulator > value && (isNumber(value) || isDate(value))) { | |
accumulator = value; | |
} | |
return accumulator; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment