diff --git a/packages/ui-vue/components/button-edit/button-edit.scss b/packages/ui-vue/components/button-edit/button-edit.scss
index ddd04c8c735dc28fdaa53146f511f215c5055a7e..0c4202aee64d4768a61e6a8011feb2d92b9dd1d6 100644
--- a/packages/ui-vue/components/button-edit/button-edit.scss
+++ b/packages/ui-vue/components/button-edit/button-edit.scss
@@ -1,7 +1,10 @@
.f-button-edit {
+ .farris-tags {
+ min-height: 24px;
+ }
&:hover {
.farris-tags{
- // height: auto;
+ height: auto;
}
.more-tags{
visibility: hidden;
diff --git a/packages/ui-vue/components/combo-tree/src/combo-tree.component.tsx b/packages/ui-vue/components/combo-tree/src/combo-tree.component.tsx
index 22c83afa22e02b998c6cfe3384302feb194575f5..a7602046c1cabf7cfb5451a687768da9c870d29b 100644
--- a/packages/ui-vue/components/combo-tree/src/combo-tree.component.tsx
+++ b/packages/ui-vue/components/combo-tree/src/combo-tree.component.tsx
@@ -4,6 +4,7 @@ import { ComboTreeProps, comboTreeProps, Option } from "./combo-tree.props";
import ComboTreeContainer from './components/tree-container.component';
import { useDataSource } from "./composition/use-data-source";
import { cloneDeep, debounce } from "lodash-es";
+import { useComboTreeSearch } from "./composition/use-search";
export default defineComponent({
name: 'FComboTree',
@@ -19,6 +20,7 @@ export default defineComponent({
const originalValue = ref();
const comboTreeRef = ref();
+
const { dataSource, displayText, editable, modelValue, getSelectedItemsByDisplayText } = useDataSource(props);
const isMultiSelect = computed(() => props.multiSelect);
@@ -35,6 +37,8 @@ export default defineComponent({
return false;
});
+ const { onValueChange, resetDataSource } = useComboTreeSearch({ comboEditorRef, dataSource, searchFields, originalValue, showPopover });
+
function tryHidePopupOnSelect() {
const shouldHidePopupOnSelect = !isMultiSelect.value;
if (shouldHidePopupOnSelect && comboEditorRef.value) {
@@ -60,69 +64,6 @@ export default defineComponent({
context.emit('clear');
}
-
- function searchTree(node: any, keyword: string): any {
- // 先处理子节点(深度优先)
- const filteredChildren = node.children
- .map(child => searchTree(child, keyword))
- .filter(child => child !== null) as any[];
-
- // 判断当前节点是否匹配
- const isMatch = searchFields.value.some((field: string) => {
- return node.data[field]?.toString().toLowerCase().includes(keyword.toLowerCase());
- });
-
- // 构造返回条件
- if (isMatch) {
- // 当前节点匹配时,保留完整子结构
- return {
- data: { ...node.data },
- children: node.children // 注意这里保留原始子节点
- };
- } else if (filteredChildren.length > 0) {
- // 子节点有匹配时,返回过滤后的子结构
- return {
- data: { ...node.data },
- children: filteredChildren
- };
- }
-
- return null;
- }
-
-
- function searchDataSource(searchValue: string) {
- if (!showPopover.value) {
- comboEditorRef.value?.showPopup();
- }
-
- if (!searchValue) {
- originalValue.value = cloneDeep(dataSource.value);
- return;
- }
-
- const searchResult = dataSource.value.map(root => searchTree(root, searchValue))
- .filter(node => node !== null) as any[];
-
- originalValue.value = cloneDeep(searchResult);
- }
-
- const handleChangeDebounce = debounce(($event) => {
- const searchText = ($event.target as HTMLInputElement)?.value;
- searchDataSource(searchText);
- }, 200);
-
- function onValueChange($event: any) {
- let searchText = ($event.target as HTMLInputElement)?.value;
- if (searchText !== '') {
- searchText = searchText.trim();
- }
-
- if ($event.target['_value'] !== searchText) {
- handleChangeDebounce($event);
- }
- }
-
function onDisplayTextChange(displayText: string) {
const selectedItems = getSelectedItemsByDisplayText(displayText);
onSelectionChange(selectedItems);
@@ -150,7 +91,7 @@ export default defineComponent({
disable={disable.value}
readonly={readonly.value}
forcePlaceholder={props.forcePlaceholder}
- editable={editable.value}
+ editable={editable.value && !props.multiSelect}
buttonContent={props.dropDownIcon}
placeholder={props.placeholder}
enableClear={enableClear.value}
@@ -171,6 +112,7 @@ export default defineComponent({
ref={comboTreeRef}
maxHeight={props.maxHeight}
multiSelect={props.multiSelect}
+ enableSearch={props.enableSearch}
idField={props.idField}
valueField={props.valueField}
textField={props.textField}
@@ -182,6 +124,8 @@ export default defineComponent({
editorParams={props.editorParams}
repositoryToken={props.repositoryToken}
customRowStatus={props.customRowStatus}
+ searchHandler={onValueChange}
+ onClearSearch={resetDataSource}
>}
;
};
diff --git a/packages/ui-vue/components/combo-tree/src/components/tree-container.component.tsx b/packages/ui-vue/components/combo-tree/src/components/tree-container.component.tsx
index 0725f72caa84de9f3b458a91c1176d28e70fa510..6a0325bc057660e7130ad7d2727c1399616ae77d 100644
--- a/packages/ui-vue/components/combo-tree/src/components/tree-container.component.tsx
+++ b/packages/ui-vue/components/combo-tree/src/components/tree-container.component.tsx
@@ -1,5 +1,6 @@
import { SetupContext, computed, defineComponent, inject, onMounted, ref, watch } from "vue";
import FTreeView from '@farris/ui-vue/components/tree-view';
+import { FInputGroup } from "@farris/ui-vue/components/input-group";
import { ComboTreeHttpService } from "../combo-tree.props";
import { TreeContainerProps, treeContainerProps } from "./tree-container.props";
@@ -64,13 +65,13 @@ export default defineComponent({
if (dataSource.value.length === 0) {
styleObject.height = '200px';
}
-
+ styleObject.position = 'relative';
return styleObject;
});
- function onSelectionChange(seletedItems: any[]) {
- selections.value = seletedItems.map((item: any) => Object.assign({}, item));
- selectionValues.value = seletedItems.map((item: any) => item[props.idField]);
+ function onSelectionChange(items: any[]) {
+ selections.value = [...selections.value, ...items.map((item: any) => Object.assign({}, item))];
+ selectionValues.value = selections.value.map((item: any) => item[props.idField]);
context.emit('selectionChange', selections.value);
}
@@ -91,6 +92,15 @@ export default defineComponent({
return () => {
return (
+ {props.multiSelect && props.enableSearch &&
$event.stopPropagation()}>
+ '}
+ enableClear={true}
+ placeholder={'请输入搜索内容'}
+ onClear={() => context.emit('clearSearch')}
+ onInput={(value, payload) => props.searchHandler(payload)}
+ >
+
}
{} }
};
export type TreeContainerProps = ExtractPropTypes;
diff --git a/packages/ui-vue/components/combo-tree/src/composition/use-search.ts b/packages/ui-vue/components/combo-tree/src/composition/use-search.ts
new file mode 100644
index 0000000000000000000000000000000000000000..29f267721d1a494b49e5c68821b116e8c232612b
--- /dev/null
+++ b/packages/ui-vue/components/combo-tree/src/composition/use-search.ts
@@ -0,0 +1,77 @@
+import { cloneDeep, debounce } from "lodash-es";
+import { Ref } from "vue";
+
+export function useComboTreeSearch(options: { comboEditorRef: any, dataSource: any, searchFields: Ref, originalValue: any, showPopover: any }) {
+
+ const { comboEditorRef, dataSource, searchFields, originalValue, showPopover } = options;
+
+ function searchTree(node: any, keyword: string): any {
+ // 先处理子节点(深度优先)
+ const filteredChildren = (node.children || [])
+ .map(child => searchTree(child, keyword))
+ .filter(child => child !== null) as any[];
+
+ // 判断当前节点是否匹配
+ const isMatch = searchFields.value.some((field: string) => {
+ return node.data[field]?.toString().toLowerCase().includes(keyword.toLowerCase());
+ });
+
+ // 构造返回条件
+ if (isMatch) {
+ // 当前节点匹配时,保留完整子结构
+ return {
+ data: { ...node.data },
+ children: node.children // 注意这里保留原始子节点
+ };
+ } else if (filteredChildren.length > 0) {
+ // 子节点有匹配时,返回过滤后的子结构
+ return {
+ data: { ...node.data },
+ children: filteredChildren
+ };
+ }
+
+ return null;
+ }
+
+ function resetDataSource() {
+ originalValue.value = cloneDeep(dataSource.value);
+ }
+
+ function searchDataSource(searchValue: string) {
+ if (!showPopover.value) {
+ comboEditorRef.value?.showPopup();
+ }
+
+ if (!searchValue) {
+ resetDataSource();
+ return;
+ }
+
+ const searchResult = dataSource.value.map(root => searchTree(root, searchValue))
+ .filter(node => node !== null) as any[];
+
+ originalValue.value = cloneDeep(searchResult);
+ }
+
+ const handleChangeDebounce = debounce(($event) => {
+ const searchText = ($event.target as HTMLInputElement)?.value;
+ searchDataSource(searchText);
+ }, 200);
+
+ function onValueChange($event: any) {
+ let searchText = ($event.target as HTMLInputElement)?.value;
+ if (searchText !== '') {
+ searchText = searchText.trim();
+ }
+
+ if ($event.target['_value'] !== searchText) {
+ handleChangeDebounce($event);
+ }
+ }
+
+ return {
+ onValueChange,
+ resetDataSource
+ };
+}
diff --git a/packages/ui-vue/components/combo-tree/src/schema/combo-tree.schema.json b/packages/ui-vue/components/combo-tree/src/schema/combo-tree.schema.json
index 26ff02e8b7a16427736bf52394abab49417a6c68..90a2ace4289973a54ee86e3327fb42cf763f9f04 100644
--- a/packages/ui-vue/components/combo-tree/src/schema/combo-tree.schema.json
+++ b/packages/ui-vue/components/combo-tree/src/schema/combo-tree.schema.json
@@ -147,6 +147,11 @@
"description": "",
"type": "array",
"default": []
+ },
+ "enableSearch": {
+ "description": "",
+ "type": "boolean",
+ "default": false
}
},
"required": [
diff --git a/packages/ui-vue/components/common/text-box/composition/use-text-box.ts b/packages/ui-vue/components/common/text-box/composition/use-text-box.ts
index e26e0d6f4321ba148babf754617c914d21f47abd..520e0156bf060cd0b663da2567ecc12fbb21cf28 100644
--- a/packages/ui-vue/components/common/text-box/composition/use-text-box.ts
+++ b/packages/ui-vue/components/common/text-box/composition/use-text-box.ts
@@ -141,7 +141,7 @@ export function useTextBox(
}
function onInput(payload: Event) {
- context.emit('input', (payload.target as HTMLInputElement).value);
+ context.emit('input', (payload.target as HTMLInputElement).value, payload);
const newValue = (payload.target as HTMLInputElement).value;
displayText.value = newValue;
if (updateOn.value === 'change') {
diff --git a/packages/ui-vue/components/data-grid/src/property-config/data-grid-column.property-config.ts b/packages/ui-vue/components/data-grid/src/property-config/data-grid-column.property-config.ts
index 6c8958a95f5233e0a7d7ca88673d9a7075ca2724..8cb8303508f8c2cab401feff166a9bf780f54f15 100644
--- a/packages/ui-vue/components/data-grid/src/property-config/data-grid-column.property-config.ts
+++ b/packages/ui-vue/components/data-grid/src/property-config/data-grid-column.property-config.ts
@@ -11,6 +11,7 @@ import { ComboListProperty } from '../../../combo-list/src/property-config/combo
import { TextareaProperty } from '../../../textarea/src/property-config/textarea.property-config';
import { DatePickerProperty } from '../../../date-picker/src/property-config/date-picker.property-config';
import { LookupPropertyConfig } from '../../../lookup/src/property-config/lookup.property-config';
+import { LookupEvents } from '../../../lookup/src/property-config/lookup-events';
import { NumberRangeProperty } from '../../../number-range/src/property-config/number-range.property-config';
import { NumberSpinnerProperty } from '../../../number-spinner/src/property-config/number-spinner.property-config';
import { RadioGroupProperty } from '../../../radio-group/src/property-config/radio-group.property-config';
@@ -51,6 +52,16 @@ export class DataGriColumnProperty extends BaseControlProperty {
"name": "超链接事件"
}
];
+
+ /* 待运行时支持后放开
+ if (propertyData.editor.type === 'lookup') {
+ events = [...events, ...LookupEvents];
+ if (propertyData.editor.openType === 'Popup') {
+ events = events.filter(item => item.label !== 'beforeSelectData');
+ }
+ }
+ */
+
const self = this;
const initialData = self.eventsEditorUtils['formProperties'](propertyData, self.viewModelId, events);
const properties = self.createBaseEventProperty(initialData);
diff --git a/packages/ui-vue/components/locale/src/lib/locales/en-us/lookup.ts b/packages/ui-vue/components/locale/src/lib/locales/en-us/lookup.ts
index edc2d0b422bbef47c5abb28cb5e830934b449766..81dc65c234297d422d0464d241132be23609764a 100644
--- a/packages/ui-vue/components/locale/src/lib/locales/en-us/lookup.ts
+++ b/packages/ui-vue/components/locale/src/lib/locales/en-us/lookup.ts
@@ -1,48 +1,53 @@
export const LOOKUP_LOCALE = {
- placeholder: 'Please choose',
+ placeholder: 'Please select',
favorites: 'Favorites',
- selected: 'Selected items',
+ selected: 'Selected Items',
okText: 'OK',
cancelText: 'Cancel',
allColumns: 'All Columns',
- datalist: 'Data items',
- mustWriteSomething: 'Please write a key words.',
- mustChoosAdatarow: 'Please choose a data row!',
+ datalist: 'Data Items',
+ mustWriteSomething: 'Please enter a keyword to search.',
+ mustChoosAdatarow: 'Please select a record!',
tipText: 'Are these what you are looking for?',
cascade: {
- enable: 'Enable cascade selection',
- disable: 'Disable cascade selection',
- up: 'Cascade up selection only',
- down: 'Cascade selection only'
+ enable: 'Bidirectional Cascading',
+ disable: 'Disable Cascading',
+ up: 'Upward Cascading',
+ down: 'Downward Cascading'
},
+ includechildren: 'Include Children',
favoriteInfo: {
- addFav: 'Collection success.',
- cancelFav: 'Unfavorite successfully. '
+ addFav: 'Collection Success.',
+ cancelFav: 'Unfavorite Successfully. '
},
- getAllChilds: 'Get all children',
+ getAllChilds: 'Get All Children',
contextMenu: {
- expandall: 'Expand all',
- collapseall: 'Collapse all',
- expandByLayer: 'Expand by level',
- expand1: 'Expand to level 1',
- expand2: 'Expand to level 2',
- expand3: 'Expand to level 3',
- expand4: 'Expand to level 4',
- expand5: 'Expand to level 5',
- expand6: 'Expand to level 6',
- expand7: 'Expand to level 7',
- expand8: 'Expand to level 8',
- expand9: 'Expand to level 9'
+ checkChildNodes: 'Check Subordinate Nodes',
+ uncheckChildNodes: 'Uncheck Subordinate Nodes',
+ expandall: 'Expand All',
+ collapseall: 'Collapse All',
+ expandByLayer: 'Expand by Level',
+ expand1: 'Expand to Level 1',
+ expand2: 'Expand to Level 2',
+ expand3: 'Expand to Level 3',
+ expand4: 'Expand to Level 4',
+ expand5: 'Expand to Level 5',
+ expand6: 'Expand to Level 6',
+ expand7: 'Expand to Level 7',
+ expand8: 'Expand to Level 8',
+ expand9: 'Expand to Level 9'
},
quick: {
- notfind: 'Search content not found.',
- more: 'Show more'
+ notfind: 'Search Content Not Found.',
+ more: 'Show More'
},
configError: 'The help display column is not configured. Please check whether the help data source is configured correctly.',
selectedInfo: {
- total: 'Selected items {0}',
- clear: 'Cancel selected',
+ total: 'Selected Items {0}',
+ clear: 'Cancel Selected',
remove: 'Delete ({0})',
confirm: 'Are you sure you want to cancel all selected records?'
- }
+ },
+ clearAllConditions: 'Clear All Conditions',
+ anyFields: 'All'
};
diff --git a/packages/ui-vue/components/locale/src/lib/locales/en-us/messager.ts b/packages/ui-vue/components/locale/src/lib/locales/en-us/messager.ts
index a4be98c1694b0526a8a0c2f204767b02654ed76a..e3b8c696a220bd8fe4ee1b00d32d14d7e06693ff 100644
--- a/packages/ui-vue/components/locale/src/lib/locales/en-us/messager.ts
+++ b/packages/ui-vue/components/locale/src/lib/locales/en-us/messager.ts
@@ -13,6 +13,10 @@ export const MESSAGER_LOCALE = {
big: 'Large',
large: 'Extra Large',
huge: 'Huge'
+ },
+ tips: {
+ surplus: 'You can also input {0} characters',
+ length: '{0} characters have been entered'
}
},
exception: {
@@ -20,9 +24,9 @@ export const MESSAGER_LOCALE = {
collapse: 'Collapse',
happend: 'Happened Time',
detail: 'Detail',
- copy: 'Copy details',
- copySuccess: 'Copy succeeded!',
- copyFailed: 'Replication failed!',
- roger: 'Got it.',
+ copy: 'Copy Details',
+ copySuccess: 'Copy Succeeded!',
+ copyFailed: 'Replication Failed!',
+ roger: 'Got It.',
}
};
diff --git a/packages/ui-vue/components/locale/src/lib/locales/zh-CHT/lookup.ts b/packages/ui-vue/components/locale/src/lib/locales/zh-CHT/lookup.ts
index 87a9a70611369329d6f078bc0f56f2843eb71671..f0cb53cb54a5e8824ef04bf781e8d10552590ec7 100644
--- a/packages/ui-vue/components/locale/src/lib/locales/zh-CHT/lookup.ts
+++ b/packages/ui-vue/components/locale/src/lib/locales/zh-CHT/lookup.ts
@@ -15,12 +15,15 @@ export const LOOKUP_LOCALE_ZHCHT = {
up: '包含上級',
down: '包含下級'
},
+ includechildren: '包含下級',
favoriteInfo: {
addFav: '收藏成功。',
cancelFav: '取消收藏成功。 '
},
getAllChilds: '獲取所有子級數據',
contextMenu: {
+ checkChildNodes: '勾選下級數據',
+ uncheckChildNodes: '取消勾選下級數據',
expandall: '全部展開',
collapseall: '全部收起',
expandByLayer: '按層級展開',
@@ -42,7 +45,9 @@ export const LOOKUP_LOCALE_ZHCHT = {
selectedInfo: {
total: '已選 {0} 條',
clear: '取消已選',
- remove: '刪除已選({0})',
- confirm: '您確認要取消所有已選中的記錄嗎?'
- }
+ remove: '移除 ({0})',
+ confirm: '您確認要取消所有選中記錄嗎?'
+ },
+ clearAllConditions: '清除所有查詢條件',
+ anyFields: '全部'
};
diff --git a/packages/ui-vue/components/locale/src/lib/locales/zh-cn/lookup.ts b/packages/ui-vue/components/locale/src/lib/locales/zh-cn/lookup.ts
index b6b57ea35c36f75e3d0d4b8d9701717e14654011..cfb72b8ef3fc172bd26767b61cf30e75f9a26404 100644
--- a/packages/ui-vue/components/locale/src/lib/locales/zh-cn/lookup.ts
+++ b/packages/ui-vue/components/locale/src/lib/locales/zh-cn/lookup.ts
@@ -15,12 +15,15 @@ export const LOOKUP_LOCALE_ZHCHS = {
up: '包含上级',
down: '包含下级'
},
+ includechildren:'包含下级',
favoriteInfo: {
addFav: '收藏成功。',
cancelFav: '取消收藏成功。 '
},
getAllChilds: '获取所有子级数据',
contextMenu: {
+ checkChildNodes: '勾选下级数据',
+ uncheckChildNodes: '取消勾选下级数据',
expandall: '全部展开',
collapseall: '全部收起',
expandByLayer: '按层级展开',
@@ -42,7 +45,9 @@ export const LOOKUP_LOCALE_ZHCHS = {
selectedInfo: {
total: '已选 {0} 条',
clear: '取消已选',
- remove: '删除已选({0})',
- confirm: '您确认要取消所有已选中的记录吗?'
- }
+ remove: '移除 ({0})',
+ confirm: '您确认要取消所有选中记录吗?'
+ },
+ clearAllConditions: '清除所有查询条件',
+ anyFields: '全部'
};
diff --git a/packages/ui-vue/components/lookup/src/composition/use-http.ts b/packages/ui-vue/components/lookup/src/composition/use-http.ts
index 70f6a77ea12d5fd19a760d00bfa5f7da07d46992..100e81acaa95c47ce592a4b031bc364935e443fa 100644
--- a/packages/ui-vue/components/lookup/src/composition/use-http.ts
+++ b/packages/ui-vue/components/lookup/src/composition/use-http.ts
@@ -41,7 +41,7 @@ export function useHttp(props: LookupProps, context: any): UseHttpComposition {
const loadingService: any | null = inject('FLoadingService');
const httpService = inject(F_LOOKUP_HTTP_SERVICE_TOKEN);
const lookupStates = useLookupState(props);
- const { pageInfoState, lookupState, navigationState, lookupOptions } = lookupStates;
+ const { pageInfoState, lookupState, navigationState, lookupOptions, searchValueChanged } = lookupStates;
// lookupOptions.loadTreeDataType = 'all';
@@ -296,6 +296,7 @@ export function useHttp(props: LookupProps, context: any): UseHttpComposition {
if (loader) {
return loader(lookupOptions.uri, params).then(res => {
initColumnsInfo(res);
+ searchValueChanged.value = false;
return res;
});
}
diff --git a/packages/ui-vue/components/lookup/src/composition/use-input-change.ts b/packages/ui-vue/components/lookup/src/composition/use-input-change.ts
index 14801f702ae09172411fa7d553a51a5d2a5e4f86..015d3dea72109da4cbba68d0b282481ea266ce3d 100644
--- a/packages/ui-vue/components/lookup/src/composition/use-input-change.ts
+++ b/packages/ui-vue/components/lookup/src/composition/use-input-change.ts
@@ -19,13 +19,13 @@ export type LookupInputChangeOptions = {
};
export function useInputChange(props: LookupProps, context: any, options: LookupInputChangeOptions) {
- const searchValueChanged = ref(true);
const changeOnBlur = computed(() => props.textChangeType === 'blur' || props.textChangeType === 'any');
const changeOnEnter = computed(() => props.textChangeType === 'enter' || props.textChangeType === 'any');
const {beforeOpenDialog, updateModelValue, selectedItems, openDialog, lookupOptions, useHttpComposition, isPopuped} = options;
const {updateSearchFieldTitle} = useHttpComposition;
- const { lookupState, queryState } = useHttpComposition.lookupStates;
+ const { lookupState, queryState, searchValueChanged } = useHttpComposition.lookupStates;
+
const isClear = ref(false);
function isTextChange(text: string) {
@@ -133,7 +133,6 @@ export function useInputChange(props: LookupProps, context: any, options: Lookup
changeOnEnter,
onInputBlur,
onEnterKeyDown,
- isClear,
- searchValueChanged
+ isClear
};
}
diff --git a/packages/ui-vue/components/lookup/src/composition/use-state.ts b/packages/ui-vue/components/lookup/src/composition/use-state.ts
index 9b16c49a71a8944372e9c324eff352a9ed00aec7..fda562b8db930e613b41b58458c698880b0ac25a 100644
--- a/packages/ui-vue/components/lookup/src/composition/use-state.ts
+++ b/packages/ui-vue/components/lookup/src/composition/use-state.ts
@@ -10,7 +10,8 @@ export interface LookupStates {
searchState: Reactive;
selectionState: Ref;
unSelectDataId: Ref;
- lookupOptions: Reactive>
+ lookupOptions: Reactive>,
+ searchValueChanged: Ref;
}
@@ -24,6 +25,8 @@ export function useLookupState(props: LookupProps): LookupStates {
const unSelectDataId = ref();
const lookupOptions = reactive>({});
+ const searchValueChanged = ref(false);
+
const canUpdateKeys = [
'displayType',
'treeToList',
@@ -65,6 +68,7 @@ export function useLookupState(props: LookupProps): LookupStates {
searchState,
selectionState,
unSelectDataId,
- lookupOptions
+ lookupOptions,
+ searchValueChanged
};
}
diff --git a/packages/ui-vue/components/lookup/src/lookup.component.tsx b/packages/ui-vue/components/lookup/src/lookup.component.tsx
index 99f317f9b74a3289a72bd057048384cc0e5dca94..9dad0b39f188e22813201f6820ff6dd2215b6f1a 100644
--- a/packages/ui-vue/components/lookup/src/lookup.component.tsx
+++ b/packages/ui-vue/components/lookup/src/lookup.component.tsx
@@ -61,7 +61,7 @@ export default defineComponent({
});
const useHttpComposition = useHttp(props, context);
- const { lookupOptions, selectionState } = useHttpComposition.lookupStates;
+ const { lookupOptions, selectionState, searchValueChanged } = useHttpComposition.lookupStates;
const userDataService = useUserData(props, useHttpComposition);
const showSelections = computed(() => {
@@ -95,7 +95,7 @@ export default defineComponent({
elementRef.value && !elementRef.value.getModal() && elementRef.value.openDialog();
}
- const { onInputBlur, onEnterKeyDown, isClear, searchValueChanged } = useInputChange(props, context,
+ const { onInputBlur, onEnterKeyDown, isClear } = useInputChange(props, context,
{
beforeOpenDialog, updateModelValue, selectedItems: selectionState, openDialog,
modelValue, useHttpComposition, lookupOptions, usePopupComposition, isPopuped
diff --git a/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts b/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts
index 0cd6bddc1f999556c0aa05aacba75ac23af2f98a..84fe60ee6c9ad3f1c43fb777ba3de56ccd83c8b8 100644
--- a/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts
+++ b/packages/ui-vue/components/lookup/src/property-config/lookup.property-config.ts
@@ -849,7 +849,11 @@ export class LookupPropertyConfig extends InputBaseProperty {
private getEventPropConfig(propertyData: any) {
const self = this;
- const events = LookupEvents;
+ let events = LookupEvents;
+
+ if (propertyData.editor.openType === 'Popup') {
+ events = events.filter(item => item.label !== 'beforeSelectData');
+ }
const initialData = self.eventsEditorUtils['formProperties'](propertyData, self.viewModelId, events);
const properties = self.createBaseEventProperty(initialData);
diff --git a/packages/ui-vue/components/mapping-editor/src/mapping-editor.component.tsx b/packages/ui-vue/components/mapping-editor/src/mapping-editor.component.tsx
index 8b32dca26c5c1e5e94f00a7ebe8af880ef0c1255..8f9bf50a44e8e10c32f7d1a4c2cc4e45e96a3c7c 100644
--- a/packages/ui-vue/components/mapping-editor/src/mapping-editor.component.tsx
+++ b/packages/ui-vue/components/mapping-editor/src/mapping-editor.component.tsx
@@ -79,8 +79,9 @@ export default defineComponent({
valueField: props.toData.valueField || 'id',
formatter: props.toData.formatter,
editorParams: props.toData.editorParams,
- multiSelect: true,
- editable: props.toData.editable || false,
+ multiSelect: true,
+ enableSearch: true,
+ editable: false,
searchFields: props.toData.searchFields || [],
customRowStatus: treeNodeStatus
}, formatter: (cell, row) => {
diff --git a/packages/ui-vue/demos/combo-tree/basic.vue b/packages/ui-vue/demos/combo-tree/basic.vue
index 9ae61cec49bbd8d1a092c99b663cbf02f84a94aa..ec93e6e85ae855d58e011679c9f9f16d94bffa3f 100644
--- a/packages/ui-vue/demos/combo-tree/basic.vue
+++ b/packages/ui-vue/demos/combo-tree/basic.vue
@@ -1,7 +1,7 @@