廓形仪rn版本-技术调研
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

66 lines
1.6 KiB

import React from 'react';
import { gridStyle, gridItemStyle } from './styles';
import type { VariantProps } from '@gluestack-ui/nativewind-utils';
type IGridProps = React.ComponentPropsWithoutRef<'div'> &
VariantProps<typeof gridStyle> & {
gap?: number;
rowGap?: number;
columnGap?: number;
flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
padding?: number;
paddingLeft?: number;
paddingRight?: number;
paddingStart?: number;
paddingEnd?: number;
_extra: {
className: string;
};
};
const Grid = React.forwardRef<HTMLDivElement, IGridProps>(function Grid(
{ className, _extra, ...props },
ref
) {
const gridClass = _extra?.className;
const finalGridClass = gridClass ?? '';
return (
<div
ref={ref}
className={gridStyle({
class: className + ' ' + finalGridClass,
})}
{...props}
/>
);
});
type IGridItemProps = React.ComponentPropsWithoutRef<'div'> &
VariantProps<typeof gridItemStyle> & {
index?: number;
_extra: {
className: string;
};
};
const GridItem = React.forwardRef<HTMLDivElement, IGridItemProps>(
function GridItem({ className, _extra, ...props }, ref) {
const gridItemClass = _extra?.className;
const finalGridItemClass = gridItemClass ?? '';
return (
<div
ref={ref}
className={gridItemStyle({
class: className + ' ' + finalGridItemClass,
})}
{...props}
/>
);
}
);
Grid.displayName = 'Grid';
GridItem.displayName = 'GridItem';
export { Grid, GridItem };