Fix busted grids

This commit is contained in:
Bill 2022-02-16 12:09:38 -05:00
parent 8f20bf5299
commit 95596b6a9a
9 changed files with 19 additions and 15 deletions

View File

@ -86,3 +86,7 @@ ul {
.flex-basis-fit-content { .flex-basis-fit-content {
flex-basis: fit-content; flex-basis: fit-content;
} }
.flex-basis-max-content {
flex-basis: max-content;
}

View File

@ -9,7 +9,7 @@ export interface AutoGridProps extends GridProps
export const AutoGrid: FC<AutoGridProps> = props => export const AutoGrid: FC<AutoGridProps> = props =>
{ {
const { columnMinWidth = 40, columnMinHeight = 40, columnCount = 0, fullHeight = false, overflow = 'auto', style = {}, ...rest } = props; const { columnMinWidth = 40, columnMinHeight = 40, columnCount = 0, fullHeight = false, maxContent = true, overflow = 'auto', style = {}, ...rest } = props;
const getStyle = useMemo(() => const getStyle = useMemo(() =>
{ {

View File

@ -26,10 +26,12 @@ export const Grid: FC<GridProps> = props =>
if(gap) newClassNames.push('gap-' + gap); if(gap) newClassNames.push('gap-' + gap);
else if(gap === 0) newClassNames.push('gap-0'); else if(gap === 0) newClassNames.push('gap-0');
if(maxContent) newClassNames.push('flex-basis-max-content');
if(classNames.length) newClassNames.push(...classNames); if(classNames.length) newClassNames.push(...classNames);
return newClassNames; return newClassNames;
}, [ inline, gap, classNames ]); }, [ inline, gap, maxContent, classNames ]);
const getStyle = useMemo(() => const getStyle = useMemo(() =>
{ {
@ -37,12 +39,10 @@ export const Grid: FC<GridProps> = props =>
if(columnCount) newStyle['--bs-columns'] = columnCount.toString(); if(columnCount) newStyle['--bs-columns'] = columnCount.toString();
if(maxContent) newStyle.gridTemplateRows = 'max-content';
if(Object.keys(style).length) newStyle = { ...newStyle, ...style }; if(Object.keys(style).length) newStyle = { ...newStyle, ...style };
return newStyle; return newStyle;
}, [ columnCount, maxContent, style ]); }, [ columnCount, style ]);
return ( return (
<GridContextProvider value={ { isCssGrid: true } }> <GridContextProvider value={ { isCssGrid: true } }>

View File

@ -30,7 +30,7 @@ export const AvatarEditorFigureSetView: FC<AvatarEditorFigureSetViewProps> = pro
}, [ model, category, setMaxPaletteCount ]); }, [ model, category, setMaxPaletteCount ]);
return ( return (
<AutoGrid grow columnCount={ 3 } columnMinHeight={ 50 } overflow="auto"> <AutoGrid columnCount={ 3 } columnMinHeight={ 50 }>
{ (category.parts.length > 0) && category.parts.map((item, index) => { (category.parts.length > 0) && category.parts.map((item, index) =>
<AvatarEditorFigureSetItemView key={ index } partItem={ item } onClick={ event => selectPart(item) } />) } <AvatarEditorFigureSetItemView key={ index } partItem={ item } onClick={ event => selectPart(item) } />) }
</AutoGrid> </AutoGrid>

View File

@ -27,7 +27,7 @@ export const AvatarEditorPaletteSetView: FC<AvatarEditorPaletteSetViewProps> = p
}, [ model, category, paletteSet, paletteIndex ]); }, [ model, category, paletteSet, paletteIndex ]);
return ( return (
<AutoGrid grow columnCount={ 4 } columnMinWidth={ 30 } overflow="auto"> <AutoGrid columnCount={ 4 } columnMinWidth={ 30 }>
{ (paletteSet.length > 0) && paletteSet.map((item, index) => { (paletteSet.length > 0) && paletteSet.map((item, index) =>
<AvatarEditorPaletteSetItem key={ index } colorItem={ item } onClick={ event => selectColor(item) } />) } <AvatarEditorPaletteSetItem key={ index } colorItem={ item } onClick={ event => selectColor(item) } />) }
</AutoGrid> </AutoGrid>

View File

@ -1,6 +1,6 @@
import { FC } from 'react'; import { FC } from 'react';
import { AutoGrid } from '../../../../common/AutoGrid';
import { Column } from '../../../../common/Column'; import { Column } from '../../../../common/Column';
import { Grid } from '../../../../common/Grid';
import { useCatalogContext } from '../../CatalogContext'; import { useCatalogContext } from '../../CatalogContext';
import { ICatalogNode } from '../../common/ICatalogNode'; import { ICatalogNode } from '../../common/ICatalogNode';
import { CatalogSearchView } from '../page/common/CatalogSearchView'; import { CatalogSearchView } from '../page/common/CatalogSearchView';
@ -21,14 +21,14 @@ export const CatalogNavigationView: FC<CatalogNavigationViewProps> = props =>
<> <>
<CatalogSearchView /> <CatalogSearchView />
<Column fullHeight className="nitro-catalog-navigation-grid-container p-1" overflow="hidden"> <Column fullHeight className="nitro-catalog-navigation-grid-container p-1" overflow="hidden">
<Grid gap={ 1 } columnCount={ 1 } overflow="auto"> <AutoGrid gap={ 1 } columnCount={ 1 }>
{ searchResult && (searchResult.filteredNodes.length > 0) && searchResult.filteredNodes.map((n, index) => { searchResult && (searchResult.filteredNodes.length > 0) && searchResult.filteredNodes.map((n, index) =>
{ {
return <CatalogNavigationItemView key={ index } node={ n } />; return <CatalogNavigationItemView key={ index } node={ n } />;
})} })}
{ !searchResult && { !searchResult &&
<CatalogNavigationSetView node={ node } /> } <CatalogNavigationSetView node={ node } /> }
</Grid> </AutoGrid>
</Column> </Column>
</> </>
); );

View File

@ -17,7 +17,7 @@ interface CatalogBadgeSelectorWidgetViewProps extends AutoGridProps
export const CatalogBadgeSelectorWidgetView: FC<CatalogBadgeSelectorWidgetViewProps> = props => export const CatalogBadgeSelectorWidgetView: FC<CatalogBadgeSelectorWidgetViewProps> = props =>
{ {
const { grow = true, columnCount = 5, overflow = 'auto', ...rest } = props; const { columnCount = 5, ...rest } = props;
const [ badges, setBadges ] = useState<string[]>([]); const [ badges, setBadges ] = useState<string[]>([]);
const [ currentBadge, setCurrentBadge ] = useState<string>(null); const [ currentBadge, setCurrentBadge ] = useState<string>(null);
const { currentOffer = null, setPurchaseOptions = null } = useCatalogContext(); const { currentOffer = null, setPurchaseOptions = null } = useCatalogContext();
@ -59,7 +59,7 @@ export const CatalogBadgeSelectorWidgetView: FC<CatalogBadgeSelectorWidgetViewPr
}, []); }, []);
return ( return (
<AutoGrid grow={ grow } columnCount={ columnCount } overflow={ overflow } { ...rest }> <AutoGrid columnCount={ columnCount } { ...rest }>
{ badges && (badges.length > 0) && badges.map(code => { badges && (badges.length > 0) && badges.map(code =>
{ {
return ( return (

View File

@ -10,13 +10,13 @@ interface CatalogBundleGridWidgetViewProps extends AutoGridProps
export const CatalogBundleGridWidgetView: FC<CatalogBundleGridWidgetViewProps> = props => export const CatalogBundleGridWidgetView: FC<CatalogBundleGridWidgetViewProps> = props =>
{ {
const { children = null, ...rest } = props; const { columnCount = 5, children = null, ...rest } = props;
const { currentOffer = null } = useCatalogContext(); const { currentOffer = null } = useCatalogContext();
if(!currentOffer) return null; if(!currentOffer) return null;
return ( return (
<AutoGrid grow columnCount={ 5 } overflow="auto" { ...rest }> <AutoGrid columnCount={ 5 } { ...rest }>
{ currentOffer.products && (currentOffer.products.length > 0) && currentOffer.products.map((product, index) => <LayoutGridItem key={ index } itemImage={ product.getIconUrl() } itemCount={ product.productCount } />) } { currentOffer.products && (currentOffer.products.length > 0) && currentOffer.products.map((product, index) => <LayoutGridItem key={ index } itemImage={ product.getIconUrl() } itemCount={ product.productCount } />) }
{ children } { children }
</AutoGrid> </AutoGrid>

View File

@ -92,7 +92,7 @@ export const CatalogViewProductWidgetView: FC<{}> = props =>
{ {
return ( return (
<Column fit overflow="hidden" className="bg-muted p-2 rounded"> <Column fit overflow="hidden" className="bg-muted p-2 rounded">
<AutoGrid fullWidth grow columnCount={ 4 } overflow="auto" className="nitro-catalog-layout-bundle-grid"> <AutoGrid fullWidth columnCount={ 4 } className="nitro-catalog-layout-bundle-grid">
{ (currentOffer.products.length > 0) && currentOffer.products.map((product, index) => { (currentOffer.products.length > 0) && currentOffer.products.map((product, index) =>
{ {
return <LayoutGridItem key={ index } itemImage={ product.getIconUrl(currentOffer) } itemCount={ product.productCount } />; return <LayoutGridItem key={ index } itemImage={ product.getIconUrl(currentOffer) } itemCount={ product.productCount } />;