diff --git a/packages/web/src/appobj/AppObjectList.js b/packages/web/src/appobj/AppObjectList.js index 1930518b7..517e43d2b 100644 --- a/packages/web/src/appobj/AppObjectList.js +++ b/packages/web/src/appobj/AppObjectList.js @@ -29,7 +29,15 @@ const GroupDiv = styled.div` font-weight: bold; `; -function AppObjectListItem({ AppObjectComponent, data, filter, onObjectClick, isExpandable, SubItems }) { +function AppObjectListItem({ + AppObjectComponent, + data, + filter, + onObjectClick, + isExpandable, + SubItems, + getCommonProps, +}) { const [isExpanded, setIsExpanded] = React.useState(false); const expandable = data && isExpandable && isExpandable(data); @@ -44,7 +52,7 @@ function AppObjectListItem({ AppObjectComponent, data, filter, onObjectClick, is // const { matcher } = appobj; // if (matcher && !matcher(filter)) return null; - const commonProps = { + let commonProps = { prefix: SubItems ? ( {expandable ? : } @@ -59,6 +67,10 @@ function AppObjectListItem({ AppObjectComponent, data, filter, onObjectClick, is commonProps.onClick3 = onObjectClick; } + if (getCommonProps) { + commonProps = { ...commonProps, ...getCommonProps(data) }; + } + let res = ; if (SubItems && isExpanded) { res = ( @@ -98,6 +110,7 @@ export function AppObjectList({ groupFunc = undefined, groupOrdered = undefined, isExpandable = undefined, + getCommonProps = undefined, }) { const createComponent = (data) => ( ); diff --git a/packages/web/src/appobj/MacroAppObject.js b/packages/web/src/appobj/MacroAppObject.js index 314ff1589..c60147852 100644 --- a/packages/web/src/appobj/MacroAppObject.js +++ b/packages/web/src/appobj/MacroAppObject.js @@ -1,13 +1,15 @@ import _ from 'lodash'; +import React from 'react'; import { filterName } from 'dbgate-datalib'; +import { AppObjectCore } from './AppObjectCore'; -const macroAppObject = () => ({ name, type, title, group }, { setOpenedTabs }) => { - const key = name; - const icon = 'img macro'; - const matcher = (filter) => filterName(filter, name, title); - const groupTitle = group; +function MacroAppObject({ data, commonProps }) { + const { name, type, title, group } = data; - return { title, key, icon, groupTitle, matcher }; -}; + return ; +} -export default macroAppObject; +MacroAppObject.extractKey = (data) => data.name; +MacroAppObject.createMatcher = ({ name, title }) => (filter) => filterName(filter, name, title); + +export default MacroAppObject; diff --git a/packages/web/src/freetable/MacroManager.js b/packages/web/src/freetable/MacroManager.js index f6910c6fd..c123e4ae5 100644 --- a/packages/web/src/freetable/MacroManager.js +++ b/packages/web/src/freetable/MacroManager.js @@ -6,7 +6,7 @@ import SearchInput from '../widgets/SearchInput'; import { WidgetTitle } from '../widgets/WidgetStyles'; import macros from './macros'; import { AppObjectList } from '../appobj/AppObjectList'; -import macroAppObject from '../appobj/MacroAppObject'; +import MacroAppObject from '../appobj/MacroAppObject'; const SearchBoxWrapper = styled.div` display: flex; @@ -24,10 +24,13 @@ export default function MacroManager({ managerSize, selectedMacro, setSelectedMa setSelectedMacro(macro)} + getCommonProps={(data) => ({ + isBold: selectedMacro && selectedMacro.name == data.name, + })} filter={filter} - groupFunc={(appobj) => appobj.groupTitle} + groupFunc={(data) => data.group} /> {/* {macros.map((macro) => (