mirror of
https://github.com/smartxworks/sunmao-ui.git
synced 2025-02-23 17:49:49 +08:00
Merge pull request #168 from webzard-io/editor-ex
improve the Slot component
This commit is contained in:
commit
4c3d75daa3
@ -1,17 +1,21 @@
|
||||
import React from 'react';
|
||||
import { SlotsMap } from '../../types/RuntimeSchema';
|
||||
|
||||
export function getSlots(slotsMap: SlotsMap | undefined, slot: string) {
|
||||
export function getSlots<T>(slotsMap: SlotsMap | undefined, slot: string, rest: T) {
|
||||
return (slotsMap?.get(slot) || []).map(({ component: ImplWrapper, id }) => (
|
||||
<ImplWrapper key={id} />
|
||||
<ImplWrapper key={id} {...rest} />
|
||||
));
|
||||
}
|
||||
|
||||
const Slot: React.FC<{ slotsMap: SlotsMap | undefined; slot: string }> = ({
|
||||
slotsMap,
|
||||
slot,
|
||||
...rest
|
||||
}) => {
|
||||
return <>{getSlots(slotsMap, slot)}</>;
|
||||
if (!slotsMap?.has(slot)) {
|
||||
return null;
|
||||
}
|
||||
return <>{getSlots(slotsMap, slot, rest)}</>;
|
||||
};
|
||||
|
||||
export default Slot;
|
||||
|
@ -36,7 +36,7 @@ const Tabs: ComponentImplementation<Static<typeof PropsSchema>> = ({
|
||||
))}
|
||||
</TabList>
|
||||
<TabPanels>
|
||||
{getSlots(slotsMap, 'content').map((content, idx) => {
|
||||
{getSlots(slotsMap, 'content', {}).map((content, idx) => {
|
||||
return (
|
||||
<TabPanel
|
||||
key={idx}
|
||||
|
@ -30,9 +30,11 @@ const GridLayout: ComponentImplementation<Static<typeof PropsSchema>> = ({
|
||||
onDragStop={onDragStop}
|
||||
onDrop={onDrop}
|
||||
layout={layout}
|
||||
css={css`${customStyle?.content}`}
|
||||
css={css`
|
||||
${customStyle?.content}
|
||||
`}
|
||||
>
|
||||
{getSlots(slotsMap, 'content')}
|
||||
{getSlots(slotsMap, 'content', {})}
|
||||
</BaseGridLayout>
|
||||
</Suspense>
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user