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 @@