@@ -64,6 +64,7 @@ var __meta__ = { // jshint ignore:line
6464 var TRANSFER_ALL_FROM = "transferAllFrom" ;
6565 var DRAGGEDCLASS = "k-ghost" ;
6666 var UNIQUE_ID = "uid" ;
67+ var ID = "id" ;
6768 var TABINDEX = "tabindex" ;
6869 var COMMAND = "command" ;
6970
@@ -116,6 +117,7 @@ var __meta__ = { // jshint ignore:line
116117
117118 that . _wrapper ( ) ;
118119 that . _list ( ) ;
120+ that . _ariaLabel ( ) ;
119121 element = that . element . attr ( "multiple" , "multiple" ) . hide ( ) ;
120122
121123 if ( element [ 0 ] && ! that . options . dataSource ) {
@@ -218,9 +220,11 @@ var __meta__ = { // jshint ignore:line
218220
219221 _addItem : function ( dataItem , list ) {
220222 var that = this ;
221- var item = that . templates . itemTemplate ( { item : dataItem , r : that . templates . itemContent } ) ;
223+ var item = $ ( that . templates . itemTemplate ( { item : dataItem , r : that . templates . itemContent } ) ) ;
222224
223- $ ( item ) . attr ( kendoAttr ( UNIQUE_ID ) , dataItem . uid ) . appendTo ( list ) ;
225+ that . _setItemId ( item , dataItem . uid ) ;
226+
227+ item . appendTo ( list ) ;
224228
225229 if ( typeof dataItem === typeof "" ) {
226230 that . dataSource . _data . push ( dataItem ) ;
@@ -231,13 +235,14 @@ var __meta__ = { // jshint ignore:line
231235
232236 _addItemAt : function ( dataItem , index ) {
233237 var that = this ;
234- var item = that . templates . itemTemplate ( { item : dataItem , r : that . templates . itemContent } ) ;
238+ var item = $ ( that . templates . itemTemplate ( { item : dataItem , r : that . templates . itemContent } ) ) ;
235239 that . _unbindDataSource ( ) ;
236240 if ( typeof dataItem === typeof "" ) {
237241 that . _insertElementAt ( item , index ) ;
238242 that . dataSource . _data . push ( dataItem ) ;
239243 } else {
240- that . _insertElementAt ( $ ( item ) . attr ( kendoAttr ( UNIQUE_ID ) , dataItem . uid ) , index ) ;
244+ that . _setItemId ( item , dataItem . uid ) ;
245+ that . _insertElementAt ( item , index ) ;
241246 that . dataSource . add ( dataItem ) ;
242247 }
243248 that . _bindDataSource ( ) ;
@@ -303,7 +308,7 @@ var __meta__ = { // jshint ignore:line
303308
304309 that . _target = target ;
305310 target . addClass ( FOCUSED_CLASS ) ;
306- that . _getList ( ) . attr ( "aria-activedescendant" , target . attr ( "id" ) ) ;
311+ that . _getList ( ) . attr ( "aria-activedescendant" , target . attr ( ID ) ) ;
307312
308313 if ( that . _getList ( ) [ 0 ] !== kendo . _activeElement ( ) && ! isInput ) {
309314 that . focus ( ) ;
@@ -411,7 +416,7 @@ var __meta__ = { // jshint ignore:line
411416 if ( that . _target ) {
412417 that . _target . addClass ( FOCUSED_CLASS ) ;
413418 that . _scrollIntoView ( that . _target ) ;
414- that . _getList ( ) . attr ( "aria-activedescendant" , that . _target . attr ( "id" ) ) ;
419+ that . _getList ( ) . attr ( "aria-activedescendant" , that . _target . attr ( ID ) ) ;
415420 } else {
416421 that . _getList ( ) . removeAttr ( "aria-activedescendant" ) ;
417422 }
@@ -950,6 +955,32 @@ var __meta__ = { // jshint ignore:line
950955 }
951956 } ,
952957
958+ _ariaLabel : function ( ) {
959+ var that = this ;
960+ var inputElm = that . element ;
961+ var ul = that . _getList ( ) ;
962+ var id = inputElm . attr ( "id" ) ;
963+ var labelElm = $ ( "label[for=\'" + id + "\']" ) ;
964+ var ariaLabel = inputElm . attr ( "aria-label" ) ;
965+ var ariaLabelledBy = inputElm . attr ( "aria-labelledby" ) ;
966+ var labelId ;
967+
968+ if ( ariaLabel ) {
969+ ul . attr ( "aria-label" , ariaLabel ) ;
970+ } else if ( ariaLabelledBy ) {
971+ ul . attr ( "aria-labelledby" , ariaLabelledBy ) ;
972+ } else if ( labelElm . length ) {
973+ labelId = labelElm . attr ( "id" ) ;
974+ if ( labelId ) {
975+ ul . attr ( "aria-labelledby" , labelId ) ;
976+ } else {
977+ labelId = kendo . guid ( ) ;
978+ labelElm . attr ( "id" , labelId ) ;
979+ ul . attr ( "aria-labelledby" , labelId ) ;
980+ }
981+ }
982+ } ,
983+
953984 _templates : function ( ) {
954985 var that = this ;
955986 var options = this . options ;
@@ -1018,6 +1049,14 @@ var __meta__ = { // jshint ignore:line
10181049 return option += "</option>" ;
10191050 } ,
10201051
1052+ _setItemId : function ( item , id ) {
1053+ if ( ! item . length ) {
1054+ return ;
1055+ }
1056+
1057+ item . attr ( kendoAttr ( UNIQUE_ID ) , id ) . attr ( ID , id ) ;
1058+ } ,
1059+
10211060 _setItemIds : function ( ) {
10221061 var that = this ;
10231062 var items = that . items ( ) ;
@@ -1026,7 +1065,7 @@ var __meta__ = { // jshint ignore:line
10261065 var i ;
10271066
10281067 for ( i = 0 ; i < viewLength ; i ++ ) {
1029- items . eq ( i ) . attr ( kendoAttr ( UNIQUE_ID ) , view [ i ] . uid ) . attr ( "id" , view [ i ] . uid ) ;
1068+ that . _setItemId ( items . eq ( i ) , view [ i ] . uid ) ;
10301069 }
10311070 } ,
10321071
@@ -1318,7 +1357,6 @@ var __meta__ = { // jshint ignore:line
13181357 if ( items . length !== 1 ) {
13191358 return null ;
13201359 }
1321-
13221360 var that = this ;
13231361 var itemFilter = that . options . filter ;
13241362 var sourceListBox = that . getSourceListBox ( ) ;
0 commit comments