1
1
/*!
2
2
* ui-select
3
3
* http://github.com/angular-ui/ui-select
4
- * Version: 0.14.5 - 2016-02-18T20:39:22.471Z
4
+ * Version: 0.14.6 - 2016-02-18T21:01:36.893Z
5
5
* License: MIT
6
6
*/
7
7
@@ -268,6 +268,7 @@ uis.controller('uiSelectCtrl',
268
268
ctrl . searchEnabled = uiSelectConfig . searchEnabled ;
269
269
ctrl . sortable = uiSelectConfig . sortable ;
270
270
ctrl . refreshDelay = uiSelectConfig . refreshDelay ;
271
+ ctrl . paste = uiSelectConfig . paste ;
271
272
272
273
ctrl . removeSelected = false ; //If selected item(s) should be removed from dropdown list
273
274
ctrl . closeOnSelect = true ; //Initialized inside uiSelect directive link function
@@ -592,7 +593,7 @@ uis.controller('uiSelectCtrl',
592
593
// create new item on the fly if we don't already have one;
593
594
// use tagging function if we have one
594
595
if ( ctrl . tagging . fct !== undefined && typeof item === 'string' ) {
595
- item = ctrl . tagging . fct ( ctrl . search ) ;
596
+ item = ctrl . tagging . fct ( item ) ;
596
597
if ( ! item ) return ;
597
598
// if item type is 'string', apply the tagging label
598
599
} else if ( typeof item === 'string' ) {
@@ -788,20 +789,38 @@ uis.controller('uiSelectCtrl',
788
789
789
790
} ) ;
790
791
791
- // If tagging try to split by tokens and add items
792
792
ctrl . searchInput . on ( 'paste' , function ( e ) {
793
- var data = e . originalEvent . clipboardData . getData ( 'text/plain' ) ;
794
- if ( data && data . length > 0 && ctrl . taggingTokens . isActivated ) {
795
- // split by first token only
796
- var separator = KEY . toSeparator ( ctrl . taggingTokens . tokens [ 0 ] ) ;
797
- var items = data . split ( separator ) ;
798
- if ( items && items . length > 0 ) {
793
+ var data ;
794
+
795
+ if ( window . clipboardData && window . clipboardData . getData ) { // IE
796
+ data = window . clipboardData . getData ( 'Text' ) ;
797
+ } else {
798
+ data = ( e . originalEvent || e ) . clipboardData . getData ( 'text/plain' ) ;
799
+ }
800
+
801
+ // Prepend the current input field text to the paste buffer.
802
+ data = ctrl . search + data ;
803
+
804
+ if ( data && data . length > 0 ) {
805
+ // If tagging try to split by tokens and add items
806
+ if ( ctrl . taggingTokens . isActivated ) {
807
+ var separator = KEY . toSeparator ( ctrl . taggingTokens . tokens [ 0 ] ) ;
808
+ var items = data . split ( separator || ctrl . taggingTokens . tokens [ 0 ] ) ; // split by first token only
809
+ if ( items && items . length > 0 ) {
799
810
var oldsearch = ctrl . search ;
800
- angular . forEach ( items , function ( item ) {
801
- ctrl . search = item ;
802
- ctrl . select ( item , true ) ;
803
- } ) ;
804
- ctrl . search = oldsearch ;
811
+ angular . forEach ( items , function ( item ) {
812
+ var newItem = ctrl . tagging . fct ? ctrl . tagging . fct ( item ) : item ;
813
+ if ( newItem ) {
814
+ ctrl . select ( newItem , true ) ;
815
+ }
816
+ } ) ;
817
+ ctrl . search = oldsearch || EMPTY_SEARCH ;
818
+ e . preventDefault ( ) ;
819
+ e . stopPropagation ( ) ;
820
+ }
821
+ } else if ( ctrl . paste ) {
822
+ ctrl . paste ( data ) ;
823
+ ctrl . search = EMPTY_SEARCH ;
805
824
e . preventDefault ( ) ;
806
825
e . stopPropagation ( ) ;
807
826
}
@@ -941,6 +960,10 @@ uis.directive('uiSelect',
941
960
$select . resetSearchInput = resetSearchInput !== undefined ? resetSearchInput : true ;
942
961
} ) ;
943
962
963
+ attrs . $observe ( 'paste' , function ( ) {
964
+ $select . paste = scope . $eval ( attrs . paste ) ;
965
+ } ) ;
966
+
944
967
attrs . $observe ( 'tagging' , function ( ) {
945
968
if ( attrs . tagging !== undefined )
946
969
{
@@ -1778,37 +1801,37 @@ uis.directive('uiSelectSingle', ['$timeout','$compile', function($timeout, $comp
1778
1801
// Make multiple matches sortable
1779
1802
uis . directive ( 'uiSelectSort' , [ '$timeout' , 'uiSelectConfig' , 'uiSelectMinErr' , function ( $timeout , uiSelectConfig , uiSelectMinErr ) {
1780
1803
return {
1781
- require : '^uiSelect' ,
1804
+ require : '^^ uiSelect' ,
1782
1805
link : function ( scope , element , attrs , $select ) {
1783
1806
if ( scope [ attrs . uiSelectSort ] === null ) {
1784
- throw uiSelectMinErr ( 'sort' , " Expected a list to sort" ) ;
1807
+ throw uiSelectMinErr ( 'sort' , ' Expected a list to sort' ) ;
1785
1808
}
1786
1809
1787
1810
var options = angular . extend ( {
1788
1811
axis : 'horizontal'
1789
1812
} ,
1790
1813
scope . $eval ( attrs . uiSelectSortOptions ) ) ;
1791
1814
1792
- var axis = options . axis ,
1793
- draggingClassName = 'dragging' ,
1794
- droppingClassName = 'dropping' ,
1795
- droppingBeforeClassName = 'dropping-before' ,
1796
- droppingAfterClassName = 'dropping-after' ;
1815
+ var axis = options . axis ;
1816
+ var draggingClassName = 'dragging' ;
1817
+ var droppingClassName = 'dropping' ;
1818
+ var droppingBeforeClassName = 'dropping-before' ;
1819
+ var droppingAfterClassName = 'dropping-after' ;
1797
1820
1798
1821
scope . $watch ( function ( ) {
1799
1822
return $select . sortable ;
1800
- } , function ( n ) {
1801
- if ( n ) {
1823
+ } , function ( newValue ) {
1824
+ if ( newValue ) {
1802
1825
element . attr ( 'draggable' , true ) ;
1803
1826
} else {
1804
1827
element . removeAttr ( 'draggable' ) ;
1805
1828
}
1806
1829
} ) ;
1807
1830
1808
- element . on ( 'dragstart' , function ( e ) {
1831
+ element . on ( 'dragstart' , function ( event ) {
1809
1832
element . addClass ( draggingClassName ) ;
1810
1833
1811
- ( e . dataTransfer || e . originalEvent . dataTransfer ) . setData ( 'text/plain' , scope . $index ) ;
1834
+ ( event . dataTransfer || event . originalEvent . dataTransfer ) . setData ( 'text/plain' , scope . $index ) ;
1812
1835
} ) ;
1813
1836
1814
1837
element . on ( 'dragend' , function ( ) {
@@ -1820,10 +1843,10 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
1820
1843
this . splice ( to , 0 , this . splice ( from , 1 ) [ 0 ] ) ;
1821
1844
} ;
1822
1845
1823
- var dragOverHandler = function ( e ) {
1824
- e . preventDefault ( ) ;
1846
+ var dragOverHandler = function ( event ) {
1847
+ event . preventDefault ( ) ;
1825
1848
1826
- var offset = axis === 'vertical' ? e . offsetY || e . layerY || ( e . originalEvent ? e . originalEvent . offsetY : 0 ) : e . offsetX || e . layerX || ( e . originalEvent ? e . originalEvent . offsetX : 0 ) ;
1849
+ var offset = axis === 'vertical' ? event . offsetY || event . layerY || ( event . originalEvent ? event . originalEvent . offsetY : 0 ) : event . offsetX || event . layerX || ( event . originalEvent ? event . originalEvent . offsetX : 0 ) ;
1827
1850
1828
1851
if ( offset < ( this [ axis === 'vertical' ? 'offsetHeight' : 'offsetWidth' ] / 2 ) ) {
1829
1852
element . removeClass ( droppingAfterClassName ) ;
@@ -1837,10 +1860,10 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
1837
1860
1838
1861
var dropTimeout ;
1839
1862
1840
- var dropHandler = function ( e ) {
1841
- e . preventDefault ( ) ;
1863
+ var dropHandler = function ( event ) {
1864
+ event . preventDefault ( ) ;
1842
1865
1843
- var droppedItemIndex = parseInt ( ( e . dataTransfer || e . originalEvent . dataTransfer ) . getData ( 'text/plain' ) , 10 ) ;
1866
+ var droppedItemIndex = parseInt ( ( event . dataTransfer || event . originalEvent . dataTransfer ) . getData ( 'text/plain' ) , 10 ) ;
1844
1867
1845
1868
// prevent event firing multiple times in firefox
1846
1869
$timeout . cancel ( dropTimeout ) ;
@@ -1850,9 +1873,9 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
1850
1873
} ;
1851
1874
1852
1875
var _dropHandler = function ( droppedItemIndex ) {
1853
- var theList = scope . $eval ( attrs . uiSelectSort ) ,
1854
- itemToMove = theList [ droppedItemIndex ] ,
1855
- newIndex = null ;
1876
+ var theList = scope . $eval ( attrs . uiSelectSort ) ;
1877
+ var itemToMove = theList [ droppedItemIndex ] ;
1878
+ var newIndex = null ;
1856
1879
1857
1880
if ( element . hasClass ( droppingBeforeClassName ) ) {
1858
1881
if ( droppedItemIndex < scope . $index ) {
@@ -1897,8 +1920,8 @@ uis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', f
1897
1920
element . on ( 'drop' , dropHandler ) ;
1898
1921
} ) ;
1899
1922
1900
- element . on ( 'dragleave' , function ( e ) {
1901
- if ( e . target != element ) {
1923
+ element . on ( 'dragleave' , function ( event ) {
1924
+ if ( event . target != element ) {
1902
1925
return ;
1903
1926
}
1904
1927
element . removeClass ( droppingClassName ) ;
0 commit comments