vxe-pc-ui 4.20.16 → 4.20.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/all.esm.js +201 -33
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/icon/style.css +1 -1
  5. package/es/language/ar-EG.js +4 -0
  6. package/es/language/de-DE.js +4 -0
  7. package/es/language/en-US.js +4 -0
  8. package/es/language/es-ES.js +4 -0
  9. package/es/language/fr-FR.js +7 -3
  10. package/es/language/hu-HU.js +4 -0
  11. package/es/language/hy-AM.js +4 -0
  12. package/es/language/id-ID.js +4 -0
  13. package/es/language/it-IT.js +4 -0
  14. package/es/language/ja-JP.js +4 -0
  15. package/es/language/ko-KR.js +4 -0
  16. package/es/language/ms-MY.js +4 -0
  17. package/es/language/nb-NO.js +4 -0
  18. package/es/language/pt-BR.js +4 -0
  19. package/es/language/ru-RU.js +4 -0
  20. package/es/language/th-TH.js +4 -0
  21. package/es/language/ug-CN.js +4 -0
  22. package/es/language/uk-UA.js +4 -0
  23. package/es/language/uz-UZ.js +4 -0
  24. package/es/language/vi-VN.js +4 -0
  25. package/es/language/zh-CHT.js +4 -0
  26. package/es/language/zh-CN.js +4 -0
  27. package/es/select/src/select.js +13 -2
  28. package/es/style.css +1 -1
  29. package/es/style.min.css +1 -1
  30. package/es/table-select/src/table-select.js +174 -29
  31. package/es/table-select/style.css +43 -16
  32. package/es/table-select/style.min.css +1 -1
  33. package/es/tree-select/src/tree-select.js +1 -1
  34. package/es/ui/index.js +9 -1
  35. package/es/ui/src/log.js +1 -1
  36. package/es/vxe-table-select/style.css +43 -16
  37. package/es/vxe-table-select/style.min.css +1 -1
  38. package/lib/icon/style/style.css +1 -1
  39. package/lib/icon/style/style.min.css +1 -1
  40. package/lib/index.umd.js +220 -43
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/language/ar-EG.js +4 -0
  43. package/lib/language/ar-EG.min.js +1 -1
  44. package/lib/language/ar-EG.umd.js +4 -0
  45. package/lib/language/de-DE.js +4 -0
  46. package/lib/language/de-DE.min.js +1 -1
  47. package/lib/language/de-DE.umd.js +4 -0
  48. package/lib/language/en-US.js +4 -0
  49. package/lib/language/en-US.min.js +1 -1
  50. package/lib/language/en-US.umd.js +4 -0
  51. package/lib/language/es-ES.js +4 -0
  52. package/lib/language/es-ES.min.js +1 -1
  53. package/lib/language/es-ES.umd.js +4 -0
  54. package/lib/language/fr-FR.js +4 -0
  55. package/lib/language/fr-FR.min.js +1 -1
  56. package/lib/language/fr-FR.umd.js +4 -0
  57. package/lib/language/hu-HU.js +4 -0
  58. package/lib/language/hu-HU.min.js +1 -1
  59. package/lib/language/hu-HU.umd.js +4 -0
  60. package/lib/language/hy-AM.js +4 -0
  61. package/lib/language/hy-AM.min.js +1 -1
  62. package/lib/language/hy-AM.umd.js +4 -0
  63. package/lib/language/id-ID.js +4 -0
  64. package/lib/language/id-ID.min.js +1 -1
  65. package/lib/language/id-ID.umd.js +4 -0
  66. package/lib/language/it-IT.js +4 -0
  67. package/lib/language/it-IT.min.js +1 -1
  68. package/lib/language/it-IT.umd.js +4 -0
  69. package/lib/language/ja-JP.js +4 -0
  70. package/lib/language/ja-JP.min.js +1 -1
  71. package/lib/language/ja-JP.umd.js +4 -0
  72. package/lib/language/ko-KR.js +4 -0
  73. package/lib/language/ko-KR.min.js +1 -1
  74. package/lib/language/ko-KR.umd.js +4 -0
  75. package/lib/language/ms-MY.js +4 -0
  76. package/lib/language/ms-MY.min.js +1 -1
  77. package/lib/language/ms-MY.umd.js +4 -0
  78. package/lib/language/nb-NO.js +4 -0
  79. package/lib/language/nb-NO.min.js +1 -1
  80. package/lib/language/nb-NO.umd.js +4 -0
  81. package/lib/language/pt-BR.js +4 -0
  82. package/lib/language/pt-BR.min.js +1 -1
  83. package/lib/language/pt-BR.umd.js +4 -0
  84. package/lib/language/ru-RU.js +4 -0
  85. package/lib/language/ru-RU.min.js +1 -1
  86. package/lib/language/ru-RU.umd.js +4 -0
  87. package/lib/language/th-TH.js +4 -0
  88. package/lib/language/th-TH.min.js +1 -1
  89. package/lib/language/th-TH.umd.js +4 -0
  90. package/lib/language/ug-CN.js +4 -0
  91. package/lib/language/ug-CN.min.js +1 -1
  92. package/lib/language/ug-CN.umd.js +4 -0
  93. package/lib/language/uk-UA.js +4 -0
  94. package/lib/language/uk-UA.min.js +1 -1
  95. package/lib/language/uk-UA.umd.js +4 -0
  96. package/lib/language/uz-UZ.js +4 -0
  97. package/lib/language/uz-UZ.min.js +1 -1
  98. package/lib/language/uz-UZ.umd.js +4 -0
  99. package/lib/language/vi-VN.js +4 -0
  100. package/lib/language/vi-VN.min.js +1 -1
  101. package/lib/language/vi-VN.umd.js +4 -0
  102. package/lib/language/zh-CHT.js +4 -0
  103. package/lib/language/zh-CHT.min.js +1 -1
  104. package/lib/language/zh-CHT.umd.js +4 -0
  105. package/lib/language/zh-CN.js +4 -0
  106. package/lib/language/zh-CN.min.js +1 -1
  107. package/lib/language/zh-CN.umd.js +4 -0
  108. package/lib/select/src/select.js +11 -8
  109. package/lib/select/src/select.min.js +1 -1
  110. package/lib/style.css +1 -1
  111. package/lib/style.min.css +1 -1
  112. package/lib/table-select/src/table-select.js +193 -32
  113. package/lib/table-select/src/table-select.min.js +1 -1
  114. package/lib/table-select/style/style.css +43 -16
  115. package/lib/table-select/style/style.min.css +1 -1
  116. package/lib/tree-select/src/tree-select.js +1 -1
  117. package/lib/tree-select/src/tree-select.min.js +1 -1
  118. package/lib/ui/index.js +9 -1
  119. package/lib/ui/index.min.js +1 -1
  120. package/lib/ui/src/log.js +1 -1
  121. package/lib/ui/src/log.min.js +1 -1
  122. package/lib/vxe-table-select/style/style.css +43 -16
  123. package/lib/vxe-table-select/style/style.min.css +1 -1
  124. package/package.json +1 -1
  125. package/packages/language/ar-EG.ts +4 -0
  126. package/packages/language/de-DE.ts +4 -0
  127. package/packages/language/en-US.ts +4 -0
  128. package/packages/language/es-ES.ts +4 -0
  129. package/packages/language/fr-FR.ts +907 -903
  130. package/packages/language/hu-HU.ts +4 -0
  131. package/packages/language/hy-AM.ts +4 -0
  132. package/packages/language/id-ID.ts +4 -0
  133. package/packages/language/it-IT.ts +4 -0
  134. package/packages/language/ja-JP.ts +4 -0
  135. package/packages/language/ko-KR.ts +4 -0
  136. package/packages/language/ms-MY.ts +4 -0
  137. package/packages/language/nb-NO.ts +4 -0
  138. package/packages/language/pt-BR.ts +4 -0
  139. package/packages/language/ru-RU.ts +4 -0
  140. package/packages/language/th-TH.ts +4 -0
  141. package/packages/language/ug-CN.ts +4 -0
  142. package/packages/language/uk-UA.ts +4 -0
  143. package/packages/language/uz-UZ.ts +4 -0
  144. package/packages/language/vi-VN.ts +4 -0
  145. package/packages/language/zh-CHT.ts +4 -0
  146. package/packages/language/zh-CN.ts +4 -0
  147. package/packages/select/src/select.ts +13 -2
  148. package/packages/table-select/src/table-select.ts +185 -30
  149. package/packages/tree-select/src/tree-select.ts +1 -1
  150. package/packages/ui/index.ts +8 -0
  151. package/styles/components/table-select.scss +39 -13
  152. package/types/components/select.d.ts +12 -2
  153. package/types/components/table-select.d.ts +53 -3
  154. /package/es/icon/{iconfont.1792671792434.ttf → iconfont.1792723048769.ttf} +0 -0
  155. /package/es/icon/{iconfont.1792671792434.woff → iconfont.1792723048769.woff} +0 -0
  156. /package/es/icon/{iconfont.1792671792434.woff2 → iconfont.1792723048769.woff2} +0 -0
  157. /package/es/{iconfont.1792671792434.ttf → iconfont.1792723048769.ttf} +0 -0
  158. /package/es/{iconfont.1792671792434.woff → iconfont.1792723048769.woff} +0 -0
  159. /package/es/{iconfont.1792671792434.woff2 → iconfont.1792723048769.woff2} +0 -0
  160. /package/lib/icon/style/{iconfont.1792671792434.ttf → iconfont.1792723048769.ttf} +0 -0
  161. /package/lib/icon/style/{iconfont.1792671792434.woff → iconfont.1792723048769.woff} +0 -0
  162. /package/lib/icon/style/{iconfont.1792671792434.woff2 → iconfont.1792723048769.woff2} +0 -0
  163. /package/lib/{iconfont.1792671792434.ttf → iconfont.1792723048769.ttf} +0 -0
  164. /package/lib/{iconfont.1792671792434.woff → iconfont.1792723048769.woff} +0 -0
  165. /package/lib/{iconfont.1792671792434.woff2 → iconfont.1792723048769.woff2} +0 -0
package/dist/all.esm.js CHANGED
@@ -101,7 +101,7 @@ function checkDynamic() {
101
101
  }
102
102
 
103
103
  const { log } = VxeUI;
104
- const uiVersion = `ui v${"4.20.16"}`;
104
+ const uiVersion = `ui v${"4.20.17"}`;
105
105
  function createComponentLog(name) {
106
106
  const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
107
107
  const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
@@ -115,7 +115,7 @@ function createComponentLog(name) {
115
115
  const warnLog$j = log.create('warn', uiVersion);
116
116
  log.create('error', uiVersion);
117
117
 
118
- const version = "4.20.16";
118
+ const version = "4.20.17";
119
119
  VxeUI.uiVersion = version;
120
120
  VxeUI.dynamicApp = dynamicApp;
121
121
  function config(options) {
@@ -521,6 +521,10 @@ setConfig$1({
521
521
  switch: {},
522
522
  tabPane: {},
523
523
  tableSelect: {
524
+ remoteConfig: {
525
+ enabled: true,
526
+ autoLoad: true
527
+ },
524
528
  gridConfig: {
525
529
  showOverflow: true,
526
530
  showHeaderOverflow: true,
@@ -600,6 +604,10 @@ setConfig$1({
600
604
  gt: 0,
601
605
  oSize: 2
602
606
  },
607
+ remoteConfig: {
608
+ enabled: true,
609
+ autoLoad: true
610
+ },
603
611
  treeConfig: {
604
612
  maxHeight: 300,
605
613
  radioConfig: {},
@@ -976,10 +984,14 @@ var zhCN = {
976
984
  allExpand: '全部展开',
977
985
  clearExpand: '全部收起',
978
986
  total: '已选 {0} 项',
987
+ filterCount: '共找到 {0} 条记录',
979
988
  close: '关闭',
980
989
  search: '搜索',
981
990
  emptyText: '暂无数据'
982
991
  },
992
+ tableSelect: {
993
+ filterCount: '共找到 {0} 条记录'
994
+ },
983
995
  pager: {
984
996
  goto: '前往',
985
997
  gotoTitle: '页数',
@@ -33798,10 +33810,21 @@ var VxeSelectComponent = defineVxeComponent({
33798
33810
  }
33799
33811
  else {
33800
33812
  if (filterable && frMethod) {
33801
- avList = fullData.filter(option => isOptionVisible(option) && frMethod({ $select: $xeSelect, group: null, option, searchValue, value: modelValue }));
33813
+ avList = searchValue
33814
+ ? fullData.filter(option => {
33815
+ return isOptionVisible(option) && frMethod({
33816
+ $select: $xeSelect,
33817
+ group: null,
33818
+ option,
33819
+ filterValue: searchValue,
33820
+ searchValue: searchValue,
33821
+ value: modelValue
33822
+ });
33823
+ })
33824
+ : fullData;
33802
33825
  }
33803
33826
  else if (filterable) {
33804
- avList = fullData.filter(option => isOptionVisible(option) && (!searchStr || `${option[labelField] || option[valueField]}`.toLowerCase().indexOf(searchStr) > -1));
33827
+ avList = searchStr ? fullData.filter(option => isOptionVisible(option) && (`${option[labelField] || option[valueField]}`.toLowerCase().indexOf(searchStr) > -1)) : fullData;
33805
33828
  }
33806
33829
  else {
33807
33830
  avList = fullData.filter(isOptionVisible);
@@ -40846,8 +40869,10 @@ function getRowUniqueId() {
40846
40869
  function createReactData$5() {
40847
40870
  return {
40848
40871
  initialized: false,
40872
+ searchValue: '',
40873
+ searchLoading: false,
40874
+ tableData: [],
40849
40875
  tableColumns: [],
40850
- fullOptionList: [],
40851
40876
  panelIndex: 0,
40852
40877
  panelStyle: {},
40853
40878
  panelPlacement: null,
@@ -40861,7 +40886,9 @@ function createInternalData$5() {
40861
40886
  return {
40862
40887
  // hpTimeout: undefined,
40863
40888
  // vpTimeout: undefined,
40864
- fullRowMaps: {}
40889
+ fullData: [],
40890
+ afterVisibleList: [],
40891
+ fullValMaps: {}
40865
40892
  };
40866
40893
  }
40867
40894
  var VxeTableSelectComponent = defineVxeComponent({
@@ -40893,6 +40920,13 @@ var VxeTableSelectComponent = defineVxeComponent({
40893
40920
  options: Array,
40894
40921
  optionProps: Object,
40895
40922
  lazyOptions: Array,
40923
+ filterable: {
40924
+ type: Boolean,
40925
+ default: () => getConfig$2().tableSelect.filterable
40926
+ },
40927
+ filterConfig: Object,
40928
+ remote: Boolean,
40929
+ remoteConfig: Object,
40896
40930
  /**
40897
40931
  * 已废弃,请使用 popupConfig.zIndex
40898
40932
  * @deprecated
@@ -40935,6 +40969,7 @@ var VxeTableSelectComponent = defineVxeComponent({
40935
40969
  const refInput = ref();
40936
40970
  const refGridWrapper = ref();
40937
40971
  const refOptionPanel = ref();
40972
+ const refInpSearch = ref();
40938
40973
  const refGrid = ref();
40939
40974
  const reactData = reactive(createReactData$5());
40940
40975
  const internalData = createInternalData$5();
@@ -41017,6 +41052,12 @@ var VxeTableSelectComponent = defineVxeComponent({
41017
41052
  data: undefined
41018
41053
  });
41019
41054
  });
41055
+ const computeRemoteOpts = computed(() => {
41056
+ return Object.assign({}, getConfig$2().tableSelect.remoteConfig, props.remoteConfig);
41057
+ });
41058
+ const computeFilterOpts = computed(() => {
41059
+ return Object.assign({}, getConfig$2().tableSelect.filterConfig, props.filterConfig);
41060
+ });
41020
41061
  const computeSelectGridOpts = computed(() => {
41021
41062
  const gridOpts = computeGridOpts.value;
41022
41063
  const checkboxOpts = computeCheckboxOpts.value;
@@ -41031,16 +41072,16 @@ var VxeTableSelectComponent = defineVxeComponent({
41031
41072
  Object.assign(newProxyConfig.ajax, {
41032
41073
  query(params, ...args) {
41033
41074
  return Promise.resolve(ajaxMethods(params, ...args)).then(rest => {
41034
- let tableData = [];
41075
+ let currData = [];
41035
41076
  if (pagerConfig) {
41036
41077
  const resultProp = resConfigs.result;
41037
- tableData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $table: null, $grid: null, $gantt: null }) : XEUtils.get(rest, resultProp || 'result')) || [];
41078
+ currData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $table: null, $grid: null, $gantt: null }) : XEUtils.get(rest, resultProp || 'result')) || [];
41038
41079
  }
41039
41080
  else {
41040
41081
  const listProp = resConfigs.list;
41041
- tableData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $table: null, $grid: null, $gantt: null }) : XEUtils.get(rest, listProp)) : rest) || [];
41082
+ currData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $table: null, $grid: null, $gantt: null }) : XEUtils.get(rest, listProp)) : rest) || [];
41042
41083
  }
41043
- cacheDataMap(tableData || []);
41084
+ cacheDataMap(currData || []);
41044
41085
  return rest;
41045
41086
  });
41046
41087
  }
@@ -41053,15 +41094,14 @@ var VxeTableSelectComponent = defineVxeComponent({
41053
41094
  });
41054
41095
  const computeSelectLabel = computed(() => {
41055
41096
  const { modelValue, lazyOptions } = props;
41056
- const { fullOptionList } = reactData;
41057
- const { fullRowMaps } = internalData;
41097
+ const { fullValMaps, fullData } = internalData;
41058
41098
  const valueField = computeValueField.value;
41059
41099
  const labelField = computeLabelField.value;
41060
- if (!fullOptionList) {
41100
+ if (!fullData) {
41061
41101
  return '';
41062
41102
  }
41063
41103
  return (XEUtils.isArray(modelValue) ? modelValue : [modelValue]).map(val => {
41064
- const cacheItem = fullRowMaps[val];
41104
+ const cacheItem = fullValMaps[val];
41065
41105
  if (cacheItem) {
41066
41106
  return cacheItem.item[labelField];
41067
41107
  }
@@ -41123,7 +41163,7 @@ var VxeTableSelectComponent = defineVxeComponent({
41123
41163
  return rowid ? encodeURIComponent(rowid) : '';
41124
41164
  };
41125
41165
  const getRowsByValue = (modelValue) => {
41126
- const { fullRowMaps } = internalData;
41166
+ const { fullValMaps } = internalData;
41127
41167
  const checkboxOpts = computeCheckboxOpts.value;
41128
41168
  const rowKeyField = computeRowKeyField.value;
41129
41169
  const valueField = computeValueField.value;
@@ -41132,7 +41172,7 @@ var VxeTableSelectComponent = defineVxeComponent({
41132
41172
  const vals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue]);
41133
41173
  if (checkboxOpts.reserve) {
41134
41174
  vals.forEach(val => {
41135
- const cacheItem = fullRowMaps[val];
41175
+ const cacheItem = fullValMaps[val];
41136
41176
  rows.push(cacheItem
41137
41177
  ? cacheItem.item
41138
41178
  : {
@@ -41144,7 +41184,7 @@ var VxeTableSelectComponent = defineVxeComponent({
41144
41184
  }
41145
41185
  else {
41146
41186
  vals.forEach(val => {
41147
- const cacheItem = fullRowMaps[val];
41187
+ const cacheItem = fullValMaps[val];
41148
41188
  if (cacheItem) {
41149
41189
  rows.push(cacheItem.item);
41150
41190
  }
@@ -41169,7 +41209,11 @@ var VxeTableSelectComponent = defineVxeComponent({
41169
41209
  }
41170
41210
  });
41171
41211
  };
41172
- const loadTableColumn = (columns) => {
41212
+ const loadData = (data) => {
41213
+ cacheDataMap(data);
41214
+ handleData();
41215
+ };
41216
+ const loadColumn = (columns) => {
41173
41217
  if (!columns || !columns.length) {
41174
41218
  return;
41175
41219
  }
@@ -41227,13 +41271,54 @@ var VxeTableSelectComponent = defineVxeComponent({
41227
41271
  if (rowMaps[value]) {
41228
41272
  errLog$4('vxe.error.repeatKey', [valueField, value]);
41229
41273
  }
41230
- rowMaps[value] = { item, index, items, parent: null, nodes: [] };
41274
+ rowMaps[value] = { item, index, _index: index, items, parent: null, nodes: [] };
41231
41275
  });
41232
41276
  }
41233
- reactData.fullOptionList = dataList || options || [];
41234
- internalData.fullRowMaps = pagerConfig ? Object.assign({}, internalData.fullRowMaps, rowMaps) : rowMaps;
41277
+ internalData.fullData = dataList || options || [];
41278
+ internalData.fullValMaps = pagerConfig ? Object.assign({}, internalData.fullValMaps, rowMaps) : rowMaps;
41279
+ handleOptList();
41235
41280
  updateModel(props.modelValue);
41236
41281
  };
41282
+ const handleOptList = () => {
41283
+ const { remote, modelValue, filterable } = props;
41284
+ const { searchValue } = reactData;
41285
+ const { fullData, fullValMaps } = internalData;
41286
+ const valueField = computeValueField.value;
41287
+ const labelField = computeLabelField.value;
41288
+ const filterOpts = computeFilterOpts.value;
41289
+ const frMethod = filterOpts.filterMethod;
41290
+ const searchStr = `${searchValue || ''}`.toLowerCase();
41291
+ let avList = [];
41292
+ if (remote) {
41293
+ avList = fullData;
41294
+ }
41295
+ else {
41296
+ if (filterable && frMethod) {
41297
+ avList = searchStr
41298
+ ? fullData.filter(row => frMethod({
41299
+ $tableSelect: $xeTableSelect,
41300
+ row,
41301
+ filterValue: searchValue,
41302
+ value: modelValue
41303
+ }))
41304
+ : fullData;
41305
+ }
41306
+ else if (filterable) {
41307
+ avList = searchStr ? fullData.filter(row => (`${row[labelField] || row[valueField]}`.toLowerCase().indexOf(searchStr) > -1)) : fullData;
41308
+ }
41309
+ else {
41310
+ avList = fullData;
41311
+ }
41312
+ }
41313
+ avList.forEach((item, index) => {
41314
+ const cacheItem = fullValMaps[item[valueField]];
41315
+ if (cacheItem) {
41316
+ cacheItem._index = index;
41317
+ }
41318
+ });
41319
+ internalData.afterVisibleList = avList;
41320
+ return nextTick();
41321
+ };
41237
41322
  const updateZindex = () => {
41238
41323
  const popupOpts = computePopupOpts.value;
41239
41324
  const customZIndex = popupOpts.zIndex || props.zIndex;
@@ -41268,8 +41353,10 @@ var VxeTableSelectComponent = defineVxeComponent({
41268
41353
  return nextTick().then(handleStyle);
41269
41354
  };
41270
41355
  const showOptionPanel = () => {
41271
- const { loading } = props;
41356
+ const { loading, remote, filterable } = props;
41357
+ const { fullData } = internalData;
41272
41358
  const isDisabled = computeIsDisabled.value;
41359
+ const remoteOpts = computeRemoteOpts.value;
41273
41360
  if (!loading && !isDisabled) {
41274
41361
  if (internalData.vpTimeout) {
41275
41362
  clearTimeout(internalData.vpTimeout);
@@ -41280,12 +41367,18 @@ var VxeTableSelectComponent = defineVxeComponent({
41280
41367
  if (!reactData.initialized) {
41281
41368
  reactData.initialized = true;
41282
41369
  }
41370
+ if (filterable) {
41371
+ if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullData.length) {
41372
+ handleSearchEvent();
41373
+ }
41374
+ }
41283
41375
  reactData.isActivated = true;
41284
41376
  reactData.isAniVisible = true;
41285
41377
  internalData.vpTimeout = setTimeout(() => {
41286
41378
  reactData.visiblePanel = true;
41287
41379
  updateModel(props.modelValue);
41288
41380
  internalData.vpTimeout = undefined;
41381
+ handleFocusSearch();
41289
41382
  updatePlacement();
41290
41383
  }, 10);
41291
41384
  updateZindex();
@@ -41293,7 +41386,14 @@ var VxeTableSelectComponent = defineVxeComponent({
41293
41386
  }
41294
41387
  };
41295
41388
  const hideOptionPanel = () => {
41389
+ const { filterable } = props;
41390
+ const filterOpts = computeFilterOpts.value;
41296
41391
  reactData.visiblePanel = false;
41392
+ if (filterable) {
41393
+ if (filterOpts.clearOnClose) {
41394
+ reactData.searchValue = '';
41395
+ }
41396
+ }
41297
41397
  if (internalData.vpTimeout) {
41298
41398
  clearTimeout(internalData.vpTimeout);
41299
41399
  }
@@ -41305,6 +41405,36 @@ var VxeTableSelectComponent = defineVxeComponent({
41305
41405
  internalData.hpTimeout = undefined;
41306
41406
  }, 350);
41307
41407
  };
41408
+ const handleData = () => {
41409
+ const { afterVisibleList } = internalData;
41410
+ reactData.tableData = afterVisibleList;
41411
+ return nextTick();
41412
+ };
41413
+ const modelSearchEvent = (value) => {
41414
+ reactData.searchValue = value;
41415
+ };
41416
+ const focusSearchEvent = () => {
41417
+ reactData.isActivated = true;
41418
+ };
41419
+ const handleSearchEvent = () => {
41420
+ const { modelValue, remote } = props;
41421
+ const { searchValue } = reactData;
41422
+ const remoteOpts = computeRemoteOpts.value;
41423
+ const queryMethod = remoteOpts.queryMethod;
41424
+ if (remote && queryMethod && remoteOpts.enabled) {
41425
+ reactData.searchLoading = true;
41426
+ Promise.resolve(queryMethod({ $tableSelect: $xeTableSelect, searchValue, value: modelValue })).then(() => nextTick())
41427
+ .catch(() => nextTick())
41428
+ .finally(() => {
41429
+ reactData.searchLoading = false;
41430
+ });
41431
+ }
41432
+ else {
41433
+ handleOptList();
41434
+ handleData();
41435
+ }
41436
+ };
41437
+ const triggerSearchEvent = XEUtils.debounce(handleSearchEvent, 350, { trailing: true });
41308
41438
  const changeEvent = (evnt, selectValue, row) => {
41309
41439
  emitModel(selectValue);
41310
41440
  if (selectValue !== props.modelValue) {
@@ -41367,6 +41497,16 @@ var VxeTableSelectComponent = defineVxeComponent({
41367
41497
  updatePlacement();
41368
41498
  }
41369
41499
  };
41500
+ const handleFocusSearch = () => {
41501
+ if (props.filterable) {
41502
+ nextTick(() => {
41503
+ const inpSearch = refInpSearch.value;
41504
+ if (inpSearch) {
41505
+ inpSearch.focus();
41506
+ }
41507
+ });
41508
+ }
41509
+ };
41370
41510
  const focusEvent = (evnt) => {
41371
41511
  const isDisabled = computeIsDisabled.value;
41372
41512
  if (!isDisabled) {
@@ -41430,8 +41570,8 @@ var VxeTableSelectComponent = defineVxeComponent({
41430
41570
  };
41431
41571
  Object.assign($xeTableSelect, tableSelectMethods, tableSelectPrivateMethods);
41432
41572
  const renderVN = () => {
41433
- const { className, options, loading } = props;
41434
- const { initialized, isActivated, isAniVisible, visiblePanel, tableColumns } = reactData;
41573
+ const { className, loading, filterable, remote } = props;
41574
+ const { initialized, isActivated, isAniVisible, visiblePanel, tableColumns, searchValue, tableData, searchLoading } = reactData;
41435
41575
  const vSize = computeSize.value;
41436
41576
  const isDisabled = computeIsDisabled.value;
41437
41577
  const selectLabel = computeSelectLabel.value;
@@ -41440,6 +41580,7 @@ var VxeTableSelectComponent = defineVxeComponent({
41440
41580
  const popupOpts = computePopupOpts.value;
41441
41581
  const selectGridOpts = computeSelectGridOpts.value;
41442
41582
  const rowOpts = computeRowOpts.value;
41583
+ const filterOpts = computeFilterOpts.value;
41443
41584
  const popupWrapperStyle = computePopupWrapperStyle.value;
41444
41585
  const { appendTo } = popupOpts;
41445
41586
  const headerSlot = slots.header;
@@ -41460,6 +41601,7 @@ var VxeTableSelectComponent = defineVxeComponent({
41460
41601
  ref: refElem,
41461
41602
  class: ['vxe-table-select', className ? (XEUtils.isFunction(className) ? className({ $tableSelect: $xeTableSelect }) : className) : '', {
41462
41603
  [`size--${vSize}`]: vSize,
41604
+ 'is--filterable': filterable,
41463
41605
  'is--visible': visiblePanel,
41464
41606
  'is--disabled': isDisabled,
41465
41607
  'is--loading': loading,
@@ -41505,6 +41647,26 @@ var VxeTableSelectComponent = defineVxeComponent({
41505
41647
  h('div', {
41506
41648
  class: 'vxe-table-select--panel-wrapper'
41507
41649
  }, [
41650
+ filterable
41651
+ ? h('div', {
41652
+ class: 'vxe-table-select--panel-search'
41653
+ }, [
41654
+ h(VxeInputComponent, {
41655
+ ref: refInpSearch,
41656
+ class: 'vxe-table-select-search--input',
41657
+ modelValue: searchValue,
41658
+ clearable: true,
41659
+ disabled: false,
41660
+ readonly: false,
41661
+ placeholder: getI18n$1('vxe.treeSelect.search'),
41662
+ prefixIcon: getIcon$2().INPUT_SEARCH,
41663
+ 'onUpdate:modelValue': modelSearchEvent,
41664
+ onFocus: focusSearchEvent,
41665
+ onChange: triggerSearchEvent,
41666
+ onSearch: triggerSearchEvent
41667
+ })
41668
+ ])
41669
+ : renderEmptyElement$2($xeTableSelect),
41508
41670
  headerSlot
41509
41671
  ? h('div', {
41510
41672
  class: 'vxe-table-select--panel-header'
@@ -41519,7 +41681,7 @@ var VxeTableSelectComponent = defineVxeComponent({
41519
41681
  style: popupWrapperStyle
41520
41682
  }, [
41521
41683
  VxeTableGridComponent
41522
- ? h(VxeTableGridComponent, Object.assign(Object.assign(Object.assign({}, selectGridOpts), gridEvents), { class: 'vxe-table-select--grid', ref: refGrid, rowConfig: rowOpts, data: options, columns: tableColumns.length ? tableColumns : selectGridOpts.columns, height: '100%', autoResize: true, onRadioChange: radioChangeEvent, onCheckboxChange: checkboxChangeEvent, onCheckboxAll: checkboxAllEvent }), Object.assign({}, slots, {
41684
+ ? h(VxeTableGridComponent, Object.assign(Object.assign(Object.assign({}, selectGridOpts), gridEvents), { class: 'vxe-table-select--grid', ref: refGrid, loading: remote && searchLoading, rowConfig: rowOpts, data: tableData, columns: tableColumns.length ? tableColumns : selectGridOpts.columns, height: '100%', autoResize: true, onRadioChange: radioChangeEvent, onCheckboxChange: checkboxChangeEvent, onCheckboxAll: checkboxAllEvent }), Object.assign({}, slots, {
41523
41685
  header: undefined,
41524
41686
  footer: undefined,
41525
41687
  prefixSlot: undefined
@@ -41527,10 +41689,16 @@ var VxeTableSelectComponent = defineVxeComponent({
41527
41689
  : renderEmptyElement$2($xeTableSelect)
41528
41690
  ])
41529
41691
  ]),
41530
- footerSlot
41692
+ footerSlot || (filterable && searchValue && !remote && filterOpts.showResultCount)
41531
41693
  ? h('div', {
41532
41694
  class: 'vxe-table-select--panel-footer'
41533
- }, footerSlot({}))
41695
+ }, footerSlot
41696
+ ? footerSlot({})
41697
+ : [
41698
+ h('div', {
41699
+ class: 'vxe-table-select--search-count'
41700
+ }, searchLoading ? '' : getI18n$1('vxe.tableSelect.filterCount', [tableData.length]))
41701
+ ])
41534
41702
  : renderEmptyElement$2($xeTableSelect)
41535
41703
  ])
41536
41704
  ]
@@ -41538,17 +41706,17 @@ var VxeTableSelectComponent = defineVxeComponent({
41538
41706
  ])
41539
41707
  ]);
41540
41708
  };
41541
- watch(() => props.options, () => {
41542
- cacheDataMap();
41709
+ watch(() => props.options, (val) => {
41710
+ loadData(val || []);
41543
41711
  });
41544
41712
  watch(() => props.columns, (val) => {
41545
- loadTableColumn(val);
41713
+ loadColumn(val);
41546
41714
  });
41547
41715
  watch(() => props.modelValue, (val) => {
41548
41716
  updateModel(val);
41549
41717
  });
41550
- loadTableColumn(props.columns);
41551
- cacheDataMap();
41718
+ loadColumn(props.columns);
41719
+ loadData(props.options || []);
41552
41720
  onMounted(() => {
41553
41721
  const { gridConfig } = props;
41554
41722
  if (gridConfig && gridConfig.proxyConfig) {
@@ -47639,7 +47807,7 @@ var VxeTreeSelectComponent = defineVxeComponent({
47639
47807
  default: () => getConfig$g().treeSelect.size || getConfig$g().size
47640
47808
  },
47641
47809
  remote: Boolean,
47642
- remoteConfig: Function,
47810
+ remoteConfig: Object,
47643
47811
  showRadio: {
47644
47812
  type: Boolean,
47645
47813
  default: () => getConfig$g().treeSelect.showRadio