99 onBeforeMount , 
1010 Teleport , 
1111 withModifiers , 
12+  onMounted , 
13+  nextTick , 
1214}  from  'vue' ; 
1315import  type  {  SetupContext  }  from  'vue' ; 
1416import  useSelect  from  './use-select' ; 
@@ -27,7 +29,7 @@ import { FlexibleOverlay } from '../../overlay';
2729export  default  defineComponent ( { 
2830 name : 'DSelect' , 
2931 props : selectProps , 
30-  emits : [ 'toggle-change' ,  'value-change' ,  'update:modelValue' ,  'focus' ,  'blur' ,  'remove-tag' ,  'clear' ] , 
32+  emits : [ 'toggle-change' ,  'value-change' ,  'update:modelValue' ,  'focus' ,  'blur' ,  'remove-tag' ,  'clear' ,   'load-more' ] , 
3133 setup ( props : SelectProps ,  ctx : SetupContext )  { 
3234 const  app  =  getCurrentInstance ( ) ; 
3335 const  t  =  createI18nTranslate ( 'DSelect' ,  app ) ; 
@@ -57,6 +59,7 @@ export default defineComponent({
5759 toggleChange, 
5860 isShowCreateOption, 
5961 }  =  useSelect ( props ,  selectRef ,  ctx ,  focus ,  blur ,  isSelectFocus ,  t ) ; 
62+  const  dropdownContainer  =  ref ( ) ; 
6063 const  {  originRef,  dropdownWidth }  =  useSelectMenuSize ( selectRef ,  dropdownRef ,  isOpen ) ; 
6164
6265 const  scrollbarNs  =  useNamespace ( 'scrollbar' ) ; 
@@ -77,6 +80,20 @@ export default defineComponent({
7780 isRender . value  =  true ; 
7881 } ) ; 
7982
83+  const  scrollToBottom  =  ( )  =>  { 
84+  const  compareHeight  =  dropdownContainer . value . scrollHeight  -  dropdownContainer . value . clientHeight ; 
85+  const  scrollTop  =  dropdownContainer . value . scrollTop ; 
86+  if  ( scrollTop  ===  compareHeight )  { 
87+  ctx . emit ( 'load-more' ) ; 
88+  } 
89+  } ; 
90+ 
91+  onMounted ( ( )  =>  { 
92+  nextTick ( ( )  =>  { 
93+  dropdownContainer . value . addEventListener ( 'scroll' ,  scrollToBottom ) ; 
94+  } ) ; 
95+  } ) ; 
96+ 
8097 provide ( 
8198 SELECT_TOKEN , 
8299 reactive ( { 
@@ -119,7 +136,11 @@ export default defineComponent({
119136 'z-index' : isOpen . value  ? 'var(--devui-z-index-dropdown, 1052)'  : - 1 , 
120137 } } > 
121138 < div  class = { dropdownCls }  style = { {  width : `${ dropdownWidth . value }  ,  visibility : isOpen . value  ? 'visible'  : 'hidden'  } } > 
122-  < ul  class = { listCls }  v-show = { ! isLoading . value }  style = { {  padding : isShowEmptyText . value  ? '0'  : '12px'  } } > 
139+  < ul 
140+  class = { listCls } 
141+  v-show = { ! isLoading . value } 
142+  style = { {  padding : isShowEmptyText . value  ? '0'  : '12px'  } } 
143+  ref = { dropdownContainer } > 
123144 { isShowCreateOption . value  &&  ( 
124145 < Option  value = { filterQuery . value }  name = { filterQuery . value }  create > 
125146 { props . multiple  ? < Checkbox  modelValue = { false }  label = { filterQuery . value }  />  : filterQuery . value } 
0 commit comments