@elliemae/ds-grid 3.17.0-next.9 → 3.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Grid.js +14 -1
- package/dist/cjs/Grid.js.map +2 -2
- package/dist/cjs/GridItem.js +14 -3
- package/dist/cjs/GridItem.js.map +2 -2
- package/dist/cjs/react-desc-prop-types.js +1 -0
- package/dist/cjs/react-desc-prop-types.js.map +2 -2
- package/dist/cjs/utils/manageCols.js +122 -0
- package/dist/cjs/utils/manageCols.js.map +7 -0
- package/dist/cjs/utils/manageRows.js +122 -0
- package/dist/cjs/utils/manageRows.js.map +7 -0
- package/dist/cjs/utils/manageSpanParent.js +90 -0
- package/dist/cjs/utils/manageSpanParent.js.map +7 -0
- package/dist/esm/Grid.js +14 -1
- package/dist/esm/Grid.js.map +2 -2
- package/dist/esm/GridItem.js +15 -3
- package/dist/esm/GridItem.js.map +2 -2
- package/dist/esm/react-desc-prop-types.js +1 -0
- package/dist/esm/react-desc-prop-types.js.map +2 -2
- package/dist/esm/utils/manageCols.js +92 -0
- package/dist/esm/utils/manageCols.js.map +7 -0
- package/dist/esm/utils/manageRows.js +92 -0
- package/dist/esm/utils/manageRows.js.map +7 -0
- package/dist/esm/utils/manageSpanParent.js +60 -0
- package/dist/esm/utils/manageSpanParent.js.map +7 -0
- package/dist/types/react-desc-prop-types.d.ts +5 -3
- package/dist/types/utils/manageCols.d.ts +8 -0
- package/dist/types/utils/manageRows.d.ts +8 -0
- package/dist/types/utils/manageSpanParent.d.ts +8 -0
- package/package.json +6 -4
package/dist/cjs/Grid.js
CHANGED
|
@@ -43,7 +43,19 @@ var import_useGrid = require("./config/useGrid.js");
|
|
|
43
43
|
var import_DSGridDefinitions = require("./DSGridDefinitions.js");
|
|
44
44
|
const Grid = import_react.default.forwardRef((props, ref) => {
|
|
45
45
|
const {
|
|
46
|
-
propsWithDefaults: {
|
|
46
|
+
propsWithDefaults: {
|
|
47
|
+
withMaxWidthBreakpoints,
|
|
48
|
+
alignItems,
|
|
49
|
+
cols,
|
|
50
|
+
children,
|
|
51
|
+
rows,
|
|
52
|
+
gutter,
|
|
53
|
+
justify,
|
|
54
|
+
wrap,
|
|
55
|
+
width,
|
|
56
|
+
height,
|
|
57
|
+
...rest
|
|
58
|
+
},
|
|
47
59
|
globalProps,
|
|
48
60
|
xstyledProps,
|
|
49
61
|
isSpanParent,
|
|
@@ -66,6 +78,7 @@ const Grid = import_react.default.forwardRef((props, ref) => {
|
|
|
66
78
|
...xstyledProps,
|
|
67
79
|
w: width,
|
|
68
80
|
h: height,
|
|
81
|
+
withMaxWidthBreakpoints,
|
|
69
82
|
children: renderChildren
|
|
70
83
|
}
|
|
71
84
|
);
|
package/dist/cjs/Grid.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Grid.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React from 'react';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport type { DSGridT } from './react-desc-prop-types.js';\nimport { DSGridPropTypes } from './react-desc-prop-types.js';\nimport { GridItem } from './GridItem.js';\nimport { useGrid } from './config/useGrid.js';\nimport { DSGridName } from './DSGridDefinitions.js';\n\nconst Grid = React.forwardRef<HTMLDivElement, DSGridT.Props>((props, ref) => {\n const {\n propsWithDefaults: {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport type { DSGridT } from './react-desc-prop-types.js';\nimport { DSGridPropTypes } from './react-desc-prop-types.js';\nimport { GridItem } from './GridItem.js';\nimport { useGrid } from './config/useGrid.js';\nimport { DSGridName } from './DSGridDefinitions.js';\n\nconst Grid = React.forwardRef<HTMLDivElement, DSGridT.Props>((props, ref) => {\n const {\n propsWithDefaults: {\n withMaxWidthBreakpoints,\n alignItems,\n cols,\n children,\n rows,\n gutter,\n justify,\n wrap,\n width,\n height,\n ...rest\n },\n globalProps,\n xstyledProps,\n isSpanParent,\n renderChildren,\n } = useGrid(props);\n\n return (\n <GridItem\n alignItems={alignItems}\n cols={cols}\n gutter={gutter}\n isSpanParent={isSpanParent}\n justify={justify}\n rows={rows}\n wrap={wrap}\n childNumber={React.Children.count(children)}\n ref={ref}\n {...rest}\n {...globalProps}\n {...xstyledProps}\n w={width}\n h={height}\n withMaxWidthBreakpoints={withMaxWidthBreakpoints}\n >\n {renderChildren}\n </GridItem>\n );\n});\n\n// Since this component is using ForwardRef, we must provide a displayName to avoid 'undefined' name in propsTable.\nGrid.displayName = DSGridName;\n\nGrid.propTypes = DSGridPropTypes;\nconst DSGridWithSchema = describe(Grid);\nDSGridWithSchema.propTypes = DSGridPropTypes;\n\nexport default Grid;\nexport { DSGridWithSchema, Grid };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD8BnB;AA9BJ,mBAAkB;AAClB,8BAAyB;AAEzB,mCAAgC;AAChC,sBAAyB;AACzB,qBAAwB;AACxB,+BAA2B;AAE3B,MAAM,OAAO,aAAAA,QAAM,WAA0C,CAAC,OAAO,QAAQ;AAC3E,QAAM;AAAA,IACJ,mBAAmB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,wBAAQ,KAAK;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,aAAAA,QAAM,SAAS,MAAM,QAAQ;AAAA,MAC1C;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ,CAAC;AAGD,KAAK,cAAc;AAEnB,KAAK,YAAY;AACjB,MAAM,uBAAmB,kCAAS,IAAI;AACtC,iBAAiB,YAAY;AAE7B,IAAO,eAAQ;",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
package/dist/cjs/GridItem.js
CHANGED
|
@@ -33,7 +33,20 @@ __export(GridItem_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(GridItem_exports);
|
|
34
34
|
var React = __toESM(require("react"));
|
|
35
35
|
var import_ds_system = require("@elliemae/ds-system");
|
|
36
|
+
var import_manageSpanParent = require("./utils/manageSpanParent.js");
|
|
37
|
+
var import_manageCols = require("./utils/manageCols.js");
|
|
38
|
+
var import_manageRows = require("./utils/manageRows.js");
|
|
36
39
|
var import_styles = require("./utils/styles.js");
|
|
40
|
+
const gridV2 = import_ds_system.css`
|
|
41
|
+
${import_manageCols.manageColsV2}
|
|
42
|
+
${import_manageRows.manageRowsV2}
|
|
43
|
+
${import_manageSpanParent.manageSpanParent}
|
|
44
|
+
`;
|
|
45
|
+
const gridV1 = import_ds_system.css`
|
|
46
|
+
${import_styles.manageCols}
|
|
47
|
+
${import_styles.manageRows}
|
|
48
|
+
${import_styles.manageSpan}
|
|
49
|
+
`;
|
|
37
50
|
const GridItem = import_ds_system.styled.div`
|
|
38
51
|
display: grid;
|
|
39
52
|
display: -ms-grid;
|
|
@@ -43,9 +56,7 @@ const GridItem = import_ds_system.styled.div`
|
|
|
43
56
|
${import_ds_system.flexboxes}
|
|
44
57
|
${import_ds_system.sizing}
|
|
45
58
|
${import_ds_system.space}
|
|
46
|
-
${
|
|
47
|
-
${import_styles.manageRows}
|
|
48
|
-
${import_styles.manageSpan}
|
|
59
|
+
${({ withMaxWidthBreakpoints }) => withMaxWidthBreakpoints ? gridV2 : gridV1}
|
|
49
60
|
${import_ds_system.boxShadows}
|
|
50
61
|
${import_ds_system.borders}
|
|
51
62
|
${import_ds_system.background}
|
package/dist/cjs/GridItem.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/GridItem.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport {\n styled,\n mapGap,\n background,\n borders,\n sizing,\n space,\n boxShadows,\n flexboxes,\n grids,\n layout,\n type LayoutProps,\n type SpaceProps,\n type SizingProps,\n} from '@elliemae/ds-system';\nimport { manageCols
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport {\n styled,\n css,\n mapGap,\n background,\n borders,\n sizing,\n space,\n boxShadows,\n flexboxes,\n grids,\n layout,\n type LayoutProps,\n type SpaceProps,\n type SizingProps,\n} from '@elliemae/ds-system';\nimport { manageSpanParent } from './utils/manageSpanParent.js';\nimport { manageColsV2 } from './utils/manageCols.js';\nimport { manageRowsV2 } from './utils/manageRows.js';\nimport { type DSGridT } from './react-desc-prop-types.js';\nimport { manageCols, manageRows, manageSpan } from './utils/styles.js';\n\nconst gridV2 = css<DSGridT.ItemProps & LayoutProps & SpaceProps & SizingProps>`\n ${manageColsV2}\n ${manageRowsV2}\n ${manageSpanParent}\n`;\n\nconst gridV1 = css`\n ${manageCols}\n ${manageRows}\n ${manageSpan}\n`;\nexport const GridItem = styled.div<DSGridT.ItemProps & LayoutProps & SpaceProps & SizingProps>`\n display: grid;\n display: -ms-grid;\n column-gap: ${({ gutter }) => mapGap(gutter)};\n row-gap: ${({ gutter }) => mapGap(gutter)};\n ${grids}\n ${flexboxes}\n ${sizing}\n ${space}\n ${({ withMaxWidthBreakpoints }) => (withMaxWidthBreakpoints ? gridV2 : gridV1)}\n ${boxShadows}\n ${borders}\n ${background}\n ${layout}\n`;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,uBAeO;AACP,8BAAiC;AACjC,wBAA6B;AAC7B,wBAA6B;AAE7B,oBAAmD;AAEnD,MAAM,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA;AAGJ,MAAM,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA;AAEG,MAAM,WAAW,wBAAO;AAAA;AAAA;AAAA,gBAGf,CAAC,EAAE,OAAO,UAAM,yBAAO,MAAM;AAAA,aAChC,CAAC,EAAE,OAAO,UAAM,yBAAO,MAAM;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,EAAE,wBAAwB,MAAO,0BAA0B,SAAS;AAAA,IACrE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -76,6 +76,7 @@ const DSGridPropTypes = {
|
|
|
76
76
|
justifyContent: import_ds_props_helpers.PropTypes.oneOf(import_constants.justifyPlacement).description("flex-like justify prop").defaultValue(import_constants.justifyPlacement[0]),
|
|
77
77
|
gutter: import_ds_props_helpers.PropTypes.oneOfType([import_ds_props_helpers.PropTypes.number, import_ds_props_helpers.PropTypes.string]).description("Space between cells prop").defaultValue(0),
|
|
78
78
|
wrap: import_ds_props_helpers.PropTypes.oneOf(import_constants.wrap).description("Wrap type").defaultValue(import_constants.wrap[0]),
|
|
79
|
+
withMaxWidthBreakpoints: import_ds_props_helpers.PropTypes.bool.description("weather use max width").defaultValue(void 0),
|
|
79
80
|
height: import_ds_props_helpers.PropTypes.oneOfType([import_ds_props_helpers.PropTypes.number, import_ds_props_helpers.PropTypes.string]).description("Grid height."),
|
|
80
81
|
width: import_ds_props_helpers.PropTypes.oneOfType([import_ds_props_helpers.PropTypes.number, import_ds_props_helpers.PropTypes.string]).description("Grid width."),
|
|
81
82
|
backgroundColor: import_ds_props_helpers.PropTypes.string.description("Sets background color."),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/react-desc-prop-types.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import type { WeakValidationMap } from 'react';\nimport type React from 'react';\nimport type {} from '@elliemae/ds-utilities';\nimport type { GlobalAttributesT, XstyledProps } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport { alignItemsPlacement, justifyPlacement, wrap, boxShadow } from './utils/constants.js';\n\nexport declare namespace DSGridT {\n interface RowColBreakpoints {\n small?: string | number[];\n medium?: string | number[];\n large?: string | number[];\n }\n\n interface SpanBreakpoints {\n small?: number;\n medium?: number;\n large?: number;\n }\n\n type JustifyPlacement = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n type AlignItemsPlacement = 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';\n type Wrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n type BoxShadow = 'xs' | 's' | 'm' | 'l' | 'xl';\n\n export interface DefaultProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n span: number;\n }\n\n export interface OptionalProps {\n height?: string | number;\n width?: string | number;\n justifyContent?: JustifyPlacement;\n alignItems?: AlignItemsPlacement;\n children?: React.ReactNode;\n }\n\n export interface Props\n extends Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface InternalProps\n extends DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface ItemProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n alignItems: AlignItemsPlacement;\n children: React.ReactNode;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n childNumber: number;\n isSpanParent: boolean;\n span?: number | SpanBreakpoints;\n ref: React.ForwardedRef<HTMLDivElement>;\n boxShadow?: BoxShadow;\n backgroundColor?: string;\n bg?: string;\n }\n}\n\nexport const defaultProps: DSGridT.DefaultProps = {\n rows: [],\n cols: [],\n className: '',\n justify: 'flex-start',\n gutter: 0,\n wrap: 'wrap',\n span: 1,\n};\n\n// =============================================================================\n// PropTypes\n// =============================================================================\nconst rowColBreakpoints = PropTypes.shape({\n small: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n medium: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n large: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n});\n\nconst spanBreakpoints = PropTypes.shape({\n small: PropTypes.number,\n medium: PropTypes.number,\n large: PropTypes.number,\n});\n\nexport const DSGridPropTypes = {\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n rows: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Row layout cells')\n .defaultValue([]),\n cols: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Column layout cells')\n .defaultValue([]),\n span: PropTypes.oneOfType([PropTypes.number, spanBreakpoints]).description(\n 'Expands the grid element within columns.',\n ),\n alignItems: PropTypes.oneOf(alignItemsPlacement).description('flex-like align items prop'),\n children: PropTypes.node.description('Children node inside grid cell'),\n className: PropTypes.string.description('CSS class').defaultValue(''),\n justifyContent: PropTypes.oneOf(justifyPlacement)\n .description('flex-like justify prop')\n .defaultValue(justifyPlacement[0]),\n gutter: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n .description('Space between cells prop')\n .defaultValue(0),\n wrap: PropTypes.oneOf(wrap).description('Wrap type').defaultValue(wrap[0]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid height.'),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid width.'),\n backgroundColor: PropTypes.string.description('Sets background color.'),\n bg: PropTypes.string.description('Sets background color.'),\n boxShadow: PropTypes.oneOf(boxShadow).description('Sets background color.'),\n border: PropTypes.string.description('Sets border.'),\n borderRadius: PropTypes.string.description('Sets border radius.'),\n borderWidth: PropTypes.string.description('Sets border width.'),\n borderStyle: PropTypes.string.description('Sets border style.'),\n borderColor: PropTypes.string.description('Sets border color.'),\n borderTop: PropTypes.string.description('Sets top border.'),\n borderBottom: PropTypes.string.description('Sets bottom border.'),\n borderLeft: PropTypes.string.description('Sets left border.'),\n borderRight: PropTypes.string.description('Sets right border.'),\n borderTopWidth: PropTypes.string.description('Sets border top width.'),\n borderTopStyle: PropTypes.string.description('Sets border top style.'),\n borderTopColor: PropTypes.string.description('Sets border top color.'),\n borderBottomWidth: PropTypes.string.description('Sets border bottom width.'),\n borderBottomStyle: PropTypes.string.description('Sets border bottom style.'),\n borderBottomColor: PropTypes.string.description('Sets border bottom color.'),\n borderRightWidth: PropTypes.string.description('Sets border right width.'),\n borderRightStyle: PropTypes.string.description('Sets border right style.'),\n borderRightColor: PropTypes.string.description('Sets border right color.'),\n borderLeftWidth: PropTypes.string.description('Sets border left width.'),\n borderLeftStyle: PropTypes.string.description('Sets border left style.'),\n borderLeftColor: PropTypes.string.description('Sets border left color.'),\n} as WeakValidationMap<unknown>;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADIvB,8BAAuE;AACvE,uBAAuE;
|
|
4
|
+
"sourcesContent": ["import type { WeakValidationMap } from 'react';\nimport type React from 'react';\nimport type {} from '@elliemae/ds-utilities';\nimport type { GlobalAttributesT, XstyledProps } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport { alignItemsPlacement, justifyPlacement, wrap, boxShadow } from './utils/constants.js';\n\nexport declare namespace DSGridT {\n interface RowColBreakpoints {\n small?: string | number | (string | number)[];\n medium?: string | number | (string | number)[];\n large?: string | number | (string | number)[];\n }\n\n interface SpanBreakpoints {\n small?: number;\n medium?: number;\n large?: number;\n }\n\n type JustifyPlacement = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n type AlignItemsPlacement = 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';\n type Wrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n type BoxShadow = 'xs' | 's' | 'm' | 'l' | 'xl';\n\n export interface DefaultProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n span: number;\n }\n\n export interface OptionalProps {\n height?: string | number;\n width?: string | number;\n justifyContent?: JustifyPlacement;\n alignItems?: AlignItemsPlacement;\n children?: React.ReactNode;\n withMaxWidthBreakpoints?: boolean;\n }\n\n export interface Props\n extends Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface InternalProps\n extends DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface ItemProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n alignItems: AlignItemsPlacement;\n children: React.ReactNode;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n childNumber: number;\n isSpanParent: boolean;\n span?: number | SpanBreakpoints;\n ref: React.ForwardedRef<HTMLDivElement>;\n boxShadow?: BoxShadow;\n backgroundColor?: string;\n bg?: string;\n withMaxWidthBreakpoints?: boolean;\n }\n}\n\nexport const defaultProps: DSGridT.DefaultProps = {\n rows: [],\n cols: [],\n className: '',\n justify: 'flex-start',\n gutter: 0,\n wrap: 'wrap',\n span: 1,\n};\n\n// =============================================================================\n// PropTypes\n// =============================================================================\nconst rowColBreakpoints = PropTypes.shape({\n small: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n medium: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n large: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n});\n\nconst spanBreakpoints = PropTypes.shape({\n small: PropTypes.number,\n medium: PropTypes.number,\n large: PropTypes.number,\n});\n\nexport const DSGridPropTypes = {\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n rows: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Row layout cells')\n .defaultValue([]),\n cols: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Column layout cells')\n .defaultValue([]),\n span: PropTypes.oneOfType([PropTypes.number, spanBreakpoints]).description(\n 'Expands the grid element within columns.',\n ),\n alignItems: PropTypes.oneOf(alignItemsPlacement).description('flex-like align items prop'),\n children: PropTypes.node.description('Children node inside grid cell'),\n className: PropTypes.string.description('CSS class').defaultValue(''),\n justifyContent: PropTypes.oneOf(justifyPlacement)\n .description('flex-like justify prop')\n .defaultValue(justifyPlacement[0]),\n gutter: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n .description('Space between cells prop')\n .defaultValue(0),\n wrap: PropTypes.oneOf(wrap).description('Wrap type').defaultValue(wrap[0]),\n withMaxWidthBreakpoints: PropTypes.bool.description('weather use max width').defaultValue(undefined),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid height.'),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid width.'),\n backgroundColor: PropTypes.string.description('Sets background color.'),\n bg: PropTypes.string.description('Sets background color.'),\n boxShadow: PropTypes.oneOf(boxShadow).description('Sets background color.'),\n border: PropTypes.string.description('Sets border.'),\n borderRadius: PropTypes.string.description('Sets border radius.'),\n borderWidth: PropTypes.string.description('Sets border width.'),\n borderStyle: PropTypes.string.description('Sets border style.'),\n borderColor: PropTypes.string.description('Sets border color.'),\n borderTop: PropTypes.string.description('Sets top border.'),\n borderBottom: PropTypes.string.description('Sets bottom border.'),\n borderLeft: PropTypes.string.description('Sets left border.'),\n borderRight: PropTypes.string.description('Sets right border.'),\n borderTopWidth: PropTypes.string.description('Sets border top width.'),\n borderTopStyle: PropTypes.string.description('Sets border top style.'),\n borderTopColor: PropTypes.string.description('Sets border top color.'),\n borderBottomWidth: PropTypes.string.description('Sets border bottom width.'),\n borderBottomStyle: PropTypes.string.description('Sets border bottom style.'),\n borderBottomColor: PropTypes.string.description('Sets border bottom color.'),\n borderRightWidth: PropTypes.string.description('Sets border right width.'),\n borderRightStyle: PropTypes.string.description('Sets border right style.'),\n borderRightColor: PropTypes.string.description('Sets border right color.'),\n borderLeftWidth: PropTypes.string.description('Sets border left width.'),\n borderLeftStyle: PropTypes.string.description('Sets border left style.'),\n borderLeftColor: PropTypes.string.description('Sets border left color.'),\n} as WeakValidationMap<unknown>;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var manageCols_exports = {};
|
|
30
|
+
__export(manageCols_exports, {
|
|
31
|
+
manageColsV2: () => manageColsV2
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(manageCols_exports);
|
|
34
|
+
var React = __toESM(require("react"));
|
|
35
|
+
var import_ds_system = require("@elliemae/ds-system");
|
|
36
|
+
const colsIsBreakpointDefinition = (cols) => typeof cols === "object" && !Array.isArray(cols);
|
|
37
|
+
const generateColsCssStringForArray = (colsVal) => {
|
|
38
|
+
const mtg = (0, import_ds_system.mapTemplateGrid)(colsVal).join(" ");
|
|
39
|
+
const mtgs = (0, import_ds_system.mapTemplateGrid)(colsVal).map((c) => `minmax(0, ${c})`).join(" ");
|
|
40
|
+
return `
|
|
41
|
+
-ms-grid-columns: ${mtg || "minmax(0px, 1fr)"};
|
|
42
|
+
grid-template-columns: ${mtg || "auto"};
|
|
43
|
+
-ms-grid-columns: ${mtgs || "minmax(0px, 1fr)"};
|
|
44
|
+
grid-template-columns: ${mtgs || "auto"};
|
|
45
|
+
`;
|
|
46
|
+
};
|
|
47
|
+
const generateColsCssStringForBootstrapLikeishScenario = (colsVal) => `
|
|
48
|
+
-ms-grid-columns: repeat(${colsVal}, 1fr);
|
|
49
|
+
grid-template-columns: repeat(${colsVal}, 1fr);
|
|
50
|
+
`;
|
|
51
|
+
const generateColsWithMediaQueries = (cols, theme, isSpanParent) => {
|
|
52
|
+
const finalMediaDeclaration = [];
|
|
53
|
+
if (cols.large) {
|
|
54
|
+
let cssString = "";
|
|
55
|
+
if (Array.isArray(cols.large)) {
|
|
56
|
+
cssString = generateColsCssStringForArray(cols.large);
|
|
57
|
+
} else if (isSpanParent) {
|
|
58
|
+
cssString = generateColsCssStringForBootstrapLikeishScenario(cols.large);
|
|
59
|
+
}
|
|
60
|
+
finalMediaDeclaration.push(theme.media.large`${cssString}`);
|
|
61
|
+
if (finalMediaDeclaration.length === 0)
|
|
62
|
+
finalMediaDeclaration.push(
|
|
63
|
+
import_ds_system.css`
|
|
64
|
+
${cssString}
|
|
65
|
+
`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
if (cols.medium) {
|
|
69
|
+
let cssString = "";
|
|
70
|
+
if (Array.isArray(cols.medium)) {
|
|
71
|
+
cssString = generateColsCssStringForArray(cols.medium);
|
|
72
|
+
} else if (isSpanParent) {
|
|
73
|
+
cssString = generateColsCssStringForBootstrapLikeishScenario(cols.medium);
|
|
74
|
+
}
|
|
75
|
+
finalMediaDeclaration.push(theme.media.medium`${cssString}`);
|
|
76
|
+
if (finalMediaDeclaration.length === 0)
|
|
77
|
+
finalMediaDeclaration.push(
|
|
78
|
+
import_ds_system.css`
|
|
79
|
+
${cssString}
|
|
80
|
+
`
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
if (cols.small) {
|
|
84
|
+
let cssString = "";
|
|
85
|
+
if (Array.isArray(cols.small)) {
|
|
86
|
+
cssString = generateColsCssStringForArray(cols.small);
|
|
87
|
+
} else if (isSpanParent) {
|
|
88
|
+
cssString = generateColsCssStringForBootstrapLikeishScenario(cols.small);
|
|
89
|
+
}
|
|
90
|
+
finalMediaDeclaration.push(theme.media.small`${cssString}`);
|
|
91
|
+
if (finalMediaDeclaration.length === 0)
|
|
92
|
+
finalMediaDeclaration.push(
|
|
93
|
+
import_ds_system.css`
|
|
94
|
+
${cssString}
|
|
95
|
+
`
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
return finalMediaDeclaration;
|
|
99
|
+
};
|
|
100
|
+
const manageColsV2 = ({ cols, theme, isSpanParent }) => {
|
|
101
|
+
if (colsIsBreakpointDefinition(cols)) {
|
|
102
|
+
return generateColsWithMediaQueries(cols, theme, isSpanParent);
|
|
103
|
+
}
|
|
104
|
+
if (Array.isArray(cols)) {
|
|
105
|
+
const cssString = generateColsCssStringForArray(cols);
|
|
106
|
+
return [
|
|
107
|
+
import_ds_system.css`
|
|
108
|
+
${cssString}
|
|
109
|
+
`
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
if (isSpanParent) {
|
|
113
|
+
const cssString = generateColsCssStringForBootstrapLikeishScenario(cols);
|
|
114
|
+
return [
|
|
115
|
+
import_ds_system.css`
|
|
116
|
+
${cssString}
|
|
117
|
+
`
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
return [import_ds_system.css``];
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=manageCols.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/utils/manageCols.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { css, mapTemplateGrid } from '@elliemae/ds-system';\nimport type { DSGridT } from '../react-desc-prop-types.js';\nimport type { Theme } from '@elliemae/pui-theme';\n\ntype BreakPointObject = {\n large?: string | number | (string | number)[];\n medium?: string | number | (string | number)[];\n small?: string | number | (string | number)[];\n};\n// this typeguard is not extremely accurate but it has historically been like this and we need to avoid breaking changes\nconst colsIsBreakpointDefinition = (cols: unknown): cols is BreakPointObject =>\n typeof cols === 'object' && !Array.isArray(cols);\ntype InterpolatedFunctionProps = {\n theme: Theme;\n} & DSGridT.ItemProps;\n\nconst generateColsCssStringForArray = (colsVal: (string | number)[]): string => {\n // mtg and mtgs are used to support mapping different ways of defining the cols\n // when mtg produces valid css, mtgs will produce invalid css and vice-versa\n // only one of them will be effectively applied by the browser\n const mtg = (mapTemplateGrid(colsVal) as string[]).join(' ');\n const mtgs = (mapTemplateGrid(colsVal) as string[]).map((c) => `minmax(0, ${c})`).join(' ');\n return `\n -ms-grid-columns: ${mtg || 'minmax(0px, 1fr)'};\n grid-template-columns: ${mtg || 'auto'};\n -ms-grid-columns: ${mtgs || 'minmax(0px, 1fr)'};\n grid-template-columns: ${mtgs || 'auto'};\n `;\n};\nconst generateColsCssStringForBootstrapLikeishScenario = (colsVal: string | number): string => `\n -ms-grid-columns: repeat(${colsVal}, 1fr);\n grid-template-columns: repeat(${colsVal}, 1fr);\n `;\nconst generateColsWithMediaQueries = (\n cols: BreakPointObject,\n theme: Theme,\n isSpanParent: boolean,\n): ReturnType<typeof css>[] => {\n const finalMediaDeclaration: ReturnType<typeof css>[] = [];\n // we conditionally push into the array the media queries because grid cols definitions supports partial definitions\n // meaning that you can define cols only for small and medium and not for large\n // in such case we want to avoid generating media queries for large\n // we also need to make sure that the largest definition is used as the default one\n if (cols.large) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(cols.large)) {\n cssString = generateColsCssStringForArray(cols.large);\n } else if (isSpanParent) {\n cssString = generateColsCssStringForBootstrapLikeishScenario(cols.large);\n }\n finalMediaDeclaration.push(theme.media.large`${cssString}`);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n }\n if (cols.medium) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(cols.medium)) {\n cssString = generateColsCssStringForArray(cols.medium);\n } else if (isSpanParent) {\n cssString = generateColsCssStringForBootstrapLikeishScenario(cols.medium);\n }\n finalMediaDeclaration.push(theme.media.medium`${cssString}`);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n }\n if (cols.small) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(cols.small)) {\n cssString = generateColsCssStringForArray(cols.small);\n } else if (isSpanParent) {\n cssString = generateColsCssStringForBootstrapLikeishScenario(cols.small);\n }\n finalMediaDeclaration.push(theme.media.small`${cssString}`);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n }\n return finalMediaDeclaration;\n};\n\nexport const manageColsV2 = ({ cols, theme, isSpanParent }: InterpolatedFunctionProps): ReturnType<typeof css>[] => {\n // we want to be extremely explicit with how we handle the different use-cases\n // the component is quite old and has been tailored to fit the needs of the different use-cases\n // even ones that should have not been supported in the first place (isSpanParent to simulate bootstrap, different kind of cols definitions, etc)\n // support for\n // cols:{small: 1, medium: 2, large: 3}\n // AND\n // cols: {small: ['1fr'], medium: ['160px'], large: ['400px'] }\n if (colsIsBreakpointDefinition(cols)) {\n // there is no way to guarantee dynamic co-relation between pui-theme and the grid component\n // any change in the theme will break the co-relation and we would need to update the component\n // for such reason we are optimizing for maintainability and not scalability\n return generateColsWithMediaQueries(cols, theme, isSpanParent);\n }\n\n // support for cols: ['1fr', '1fr', '1fr'] && cols: [1, 1, 1]\n if (Array.isArray(cols)) {\n const cssString = generateColsCssStringForArray(cols);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // support for parent is span and is like cols: 3\n if (isSpanParent) {\n const cssString = generateColsCssStringForBootstrapLikeishScenario(cols);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // fallback is not doing anything\n return [css``];\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,uBAAqC;AAUrC,MAAM,6BAA6B,CAAC,SAClC,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAKjD,MAAM,gCAAgC,CAAC,YAAyC;AAI9E,QAAM,UAAO,kCAAgB,OAAO,EAAe,KAAK,GAAG;AAC3D,QAAM,WAAQ,kCAAgB,OAAO,EAAe,IAAI,CAAC,MAAM,aAAa,IAAI,EAAE,KAAK,GAAG;AAC1F,SAAO;AAAA,0BACiB,OAAO;AAAA,+BACF,OAAO;AAAA,0BACZ,QAAQ;AAAA,+BACH,QAAQ;AAAA;AAEvC;AACA,MAAM,mDAAmD,CAAC,YAAqC;AAAA,iCAC9D;AAAA,sCACK;AAAA;AAEtC,MAAM,+BAA+B,CACnC,MACA,OACA,iBAC6B;AAC7B,QAAM,wBAAkD,CAAC;AAKzD,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAC1D,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AAAA,EACJ;AACA,MAAI,KAAK,QAAQ;AAIf,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,kBAAY,8BAA8B,KAAK,MAAM;AAAA,IACvD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,MAAM;AAAA,IAC1E;AACA,0BAAsB,KAAK,MAAM,MAAM,SAAS,WAAW;AAC3D,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AAAA,EACJ;AACA,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAC1D,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AAAA,EACJ;AACA,SAAO;AACT;AAEO,MAAM,eAAe,CAAC,EAAE,MAAM,OAAO,aAAa,MAA2D;AAQlH,MAAI,2BAA2B,IAAI,GAAG;AAIpC,WAAO,6BAA6B,MAAM,OAAO,YAAY;AAAA,EAC/D;AAGA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,UAAM,YAAY,8BAA8B,IAAI;AACpD,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,MAAI,cAAc;AAChB,UAAM,YAAY,iDAAiD,IAAI;AACvE,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,SAAO,CAAC,sBAAK;AACf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var manageRows_exports = {};
|
|
30
|
+
__export(manageRows_exports, {
|
|
31
|
+
manageRowsV2: () => manageRowsV2
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(manageRows_exports);
|
|
34
|
+
var React = __toESM(require("react"));
|
|
35
|
+
var import_ds_system = require("@elliemae/ds-system");
|
|
36
|
+
const rowsIsBreakpointDefinition = (rows) => typeof rows === "object" && !Array.isArray(rows);
|
|
37
|
+
const generateRowsCssStringForArray = (rowsVal) => {
|
|
38
|
+
const mtg = (0, import_ds_system.mapTemplateGrid)(rowsVal).join(" ");
|
|
39
|
+
const mtgs = (0, import_ds_system.mapTemplateGrid)(rowsVal).map((c) => `minmax(0, ${c})`).join(" ");
|
|
40
|
+
return `
|
|
41
|
+
-ms-grid-rows: ${mtg || "minmax(0px, 1fr)"};
|
|
42
|
+
grid-template-rows: ${mtg || "auto"};
|
|
43
|
+
-ms-grid-rows: ${mtgs || "minmax(0px, 1fr)"};
|
|
44
|
+
grid-template-rows: ${mtgs || "auto"};
|
|
45
|
+
`;
|
|
46
|
+
};
|
|
47
|
+
const generateRowsCssStringForBootstrapLikeishScenario = (rowsVal) => `
|
|
48
|
+
-ms-grid-rows: repeat(${rowsVal}, 1fr);
|
|
49
|
+
grid-template-rows: repeat(${rowsVal}, 1fr);
|
|
50
|
+
`;
|
|
51
|
+
const generateRowsWithMediaQueries = (rows, theme, isSpanParent) => {
|
|
52
|
+
const finalMediaDeclaration = [];
|
|
53
|
+
if (rows.large) {
|
|
54
|
+
let cssString = "";
|
|
55
|
+
if (Array.isArray(rows.large)) {
|
|
56
|
+
cssString = generateRowsCssStringForArray(rows.large);
|
|
57
|
+
} else if (isSpanParent) {
|
|
58
|
+
cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.large);
|
|
59
|
+
}
|
|
60
|
+
if (finalMediaDeclaration.length === 0)
|
|
61
|
+
finalMediaDeclaration.push(
|
|
62
|
+
import_ds_system.css`
|
|
63
|
+
${cssString}
|
|
64
|
+
`
|
|
65
|
+
);
|
|
66
|
+
finalMediaDeclaration.push(theme.media.large`${cssString}`);
|
|
67
|
+
}
|
|
68
|
+
if (rows.medium) {
|
|
69
|
+
let cssString = "";
|
|
70
|
+
if (Array.isArray(rows.medium)) {
|
|
71
|
+
cssString = generateRowsCssStringForArray(rows.medium);
|
|
72
|
+
} else if (isSpanParent) {
|
|
73
|
+
cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.medium);
|
|
74
|
+
}
|
|
75
|
+
if (finalMediaDeclaration.length === 0)
|
|
76
|
+
finalMediaDeclaration.push(
|
|
77
|
+
import_ds_system.css`
|
|
78
|
+
${cssString}
|
|
79
|
+
`
|
|
80
|
+
);
|
|
81
|
+
finalMediaDeclaration.push(theme.media.medium`${cssString}`);
|
|
82
|
+
}
|
|
83
|
+
if (rows.small) {
|
|
84
|
+
let cssString = "";
|
|
85
|
+
if (Array.isArray(rows.small)) {
|
|
86
|
+
cssString = generateRowsCssStringForArray(rows.small);
|
|
87
|
+
} else if (isSpanParent) {
|
|
88
|
+
cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.small);
|
|
89
|
+
}
|
|
90
|
+
if (finalMediaDeclaration.length === 0)
|
|
91
|
+
finalMediaDeclaration.push(
|
|
92
|
+
import_ds_system.css`
|
|
93
|
+
${cssString}
|
|
94
|
+
`
|
|
95
|
+
);
|
|
96
|
+
finalMediaDeclaration.push(theme.media.small`${cssString}`);
|
|
97
|
+
}
|
|
98
|
+
return finalMediaDeclaration;
|
|
99
|
+
};
|
|
100
|
+
const manageRowsV2 = ({ rows, theme, isSpanParent }) => {
|
|
101
|
+
if (rowsIsBreakpointDefinition(rows)) {
|
|
102
|
+
return generateRowsWithMediaQueries(rows, theme, isSpanParent);
|
|
103
|
+
}
|
|
104
|
+
if (Array.isArray(rows)) {
|
|
105
|
+
const cssString = generateRowsCssStringForArray(rows);
|
|
106
|
+
return [
|
|
107
|
+
import_ds_system.css`
|
|
108
|
+
${cssString}
|
|
109
|
+
`
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
if (isSpanParent) {
|
|
113
|
+
const cssString = generateRowsCssStringForBootstrapLikeishScenario(rows);
|
|
114
|
+
return [
|
|
115
|
+
import_ds_system.css`
|
|
116
|
+
${cssString}
|
|
117
|
+
`
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
return [import_ds_system.css``];
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=manageRows.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/utils/manageRows.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { css, mapTemplateGrid } from '@elliemae/ds-system';\nimport type { DSGridT } from '../react-desc-prop-types.js';\nimport type { Theme } from '@elliemae/pui-theme';\n\ntype BreakPointObject = {\n large?: string | number | (string | number)[];\n medium?: string | number | (string | number)[];\n small?: string | number | (string | number)[];\n};\n// this typeguard is not extremely accurate but it has historically been like this and we need to avoid breaking changes\nconst rowsIsBreakpointDefinition = (rows: unknown): rows is BreakPointObject =>\n typeof rows === 'object' && !Array.isArray(rows);\ntype InterpolatedFunctionProps = {\n theme: Theme;\n} & DSGridT.ItemProps;\n\nconst generateRowsCssStringForArray = (rowsVal: (string | number)[]): string => {\n // mtg and mtgs are used to support mapping different ways of defining the rows\n // when mtg produces valid css, mtgs will produce invalid css and vice-versa\n // only one of them will be effectively applied by the browser\n const mtg = (mapTemplateGrid(rowsVal) as string[]).join(' ');\n const mtgs = (mapTemplateGrid(rowsVal) as string[]).map((c) => `minmax(0, ${c})`).join(' ');\n return `\n -ms-grid-rows: ${mtg || 'minmax(0px, 1fr)'};\n grid-template-rows: ${mtg || 'auto'};\n -ms-grid-rows: ${mtgs || 'minmax(0px, 1fr)'};\n grid-template-rows: ${mtgs || 'auto'};\n `;\n};\nconst generateRowsCssStringForBootstrapLikeishScenario = (rowsVal: string | number): string => `\n -ms-grid-rows: repeat(${rowsVal}, 1fr);\n grid-template-rows: repeat(${rowsVal}, 1fr);\n `;\nconst generateRowsWithMediaQueries = (\n rows: BreakPointObject,\n theme: Theme,\n isSpanParent: boolean,\n): ReturnType<typeof css>[] => {\n const finalMediaDeclaration: ReturnType<typeof css>[] = [];\n // we conditionally push into the array the media queries because grid rows definitions supports partial definitions\n // meaning that you can define rows only for small and medium and not for large\n // in such case we want to avoid generating media queries for large\n // we also need to make sure that the largest definition is used as the default one\n if (rows.large) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(rows.large)) {\n cssString = generateRowsCssStringForArray(rows.large);\n } else if (isSpanParent) {\n cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.large);\n }\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.large`${cssString}`);\n }\n if (rows.medium) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(rows.medium)) {\n cssString = generateRowsCssStringForArray(rows.medium);\n } else if (isSpanParent) {\n cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.medium);\n }\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.medium`${cssString}`);\n }\n if (rows.small) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(rows.small)) {\n cssString = generateRowsCssStringForArray(rows.small);\n } else if (isSpanParent) {\n cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.small);\n }\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.small`${cssString}`);\n }\n return finalMediaDeclaration;\n};\n\nexport const manageRowsV2 = ({ rows, theme, isSpanParent }: InterpolatedFunctionProps): ReturnType<typeof css>[] => {\n // we want to be extremely explicit with how we handle the different use-cases\n // the component is quite old and has been tailored to fit the needs of the different use-cases\n // even ones that should have not been supported in the first place (isSpanParent to simulate bootstrap, different kind of rows definitions, etc)\n // support for\n // rows:{small: 1, medium: 2, large: 3}\n // AND\n // rows: {small: ['1fr'], medium: ['160px'], large: ['400px'] }\n if (rowsIsBreakpointDefinition(rows)) {\n // there is no way to guarantee dynamic co-relation between pui-theme and the grid component\n // any change in the theme will break the co-relation and we would need to update the component\n // for such reason we are optimizing for maintainability and not scalability\n return generateRowsWithMediaQueries(rows, theme, isSpanParent);\n }\n\n // support for rows: ['1fr', '1fr', '1fr'] && rows: [1, 1, 1]\n if (Array.isArray(rows)) {\n const cssString = generateRowsCssStringForArray(rows);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // support for parent is span and is like rows: 3\n if (isSpanParent) {\n const cssString = generateRowsCssStringForBootstrapLikeishScenario(rows);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // fallback is not doing anything\n return [css``];\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,uBAAqC;AAUrC,MAAM,6BAA6B,CAAC,SAClC,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAKjD,MAAM,gCAAgC,CAAC,YAAyC;AAI9E,QAAM,UAAO,kCAAgB,OAAO,EAAe,KAAK,GAAG;AAC3D,QAAM,WAAQ,kCAAgB,OAAO,EAAe,IAAI,CAAC,MAAM,aAAa,IAAI,EAAE,KAAK,GAAG;AAC1F,SAAO;AAAA,uBACc,OAAO;AAAA,4BACF,OAAO;AAAA,uBACZ,QAAQ;AAAA,4BACH,QAAQ;AAAA;AAEpC;AACA,MAAM,mDAAmD,CAAC,YAAqC;AAAA,8BACjE;AAAA,mCACK;AAAA;AAEnC,MAAM,+BAA+B,CACnC,MACA,OACA,iBAC6B;AAC7B,QAAM,wBAAkD,CAAC;AAKzD,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,MAAI,KAAK,QAAQ;AAIf,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,kBAAY,8BAA8B,KAAK,MAAM;AAAA,IACvD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,MAAM;AAAA,IAC1E;AACA,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,SAAS,WAAW;AAAA,EAC7D;AACA,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,SAAO;AACT;AAEO,MAAM,eAAe,CAAC,EAAE,MAAM,OAAO,aAAa,MAA2D;AAQlH,MAAI,2BAA2B,IAAI,GAAG;AAIpC,WAAO,6BAA6B,MAAM,OAAO,YAAY;AAAA,EAC/D;AAGA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,UAAM,YAAY,8BAA8B,IAAI;AACpD,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,MAAI,cAAc;AAChB,UAAM,YAAY,iDAAiD,IAAI;AACvE,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,SAAO,CAAC,sBAAK;AACf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var manageSpanParent_exports = {};
|
|
30
|
+
__export(manageSpanParent_exports, {
|
|
31
|
+
manageSpanParent: () => manageSpanParent
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(manageSpanParent_exports);
|
|
34
|
+
var React = __toESM(require("react"));
|
|
35
|
+
var import_ds_system = require("@elliemae/ds-system");
|
|
36
|
+
const generateCssStringForSpan = (span) => `
|
|
37
|
+
-ms-grid-column: auto / span ${span};
|
|
38
|
+
grid-column: auto / span ${span};
|
|
39
|
+
`;
|
|
40
|
+
const manageSpanParent = ({
|
|
41
|
+
isSpanParent,
|
|
42
|
+
span,
|
|
43
|
+
theme
|
|
44
|
+
}) => {
|
|
45
|
+
if (!isSpanParent)
|
|
46
|
+
return [import_ds_system.css``];
|
|
47
|
+
if (typeof span === "number") {
|
|
48
|
+
return [
|
|
49
|
+
import_ds_system.css`
|
|
50
|
+
-ms-grid-column: auto / span ${span};
|
|
51
|
+
grid-column: auto / span ${span};
|
|
52
|
+
`
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
if (typeof span !== "object")
|
|
56
|
+
return [import_ds_system.css``];
|
|
57
|
+
const finalMediaDeclaration = [];
|
|
58
|
+
if (span.large) {
|
|
59
|
+
const cssString = generateCssStringForSpan(span.large);
|
|
60
|
+
if (finalMediaDeclaration.length === 0)
|
|
61
|
+
finalMediaDeclaration.push(
|
|
62
|
+
import_ds_system.css`
|
|
63
|
+
${cssString}
|
|
64
|
+
`
|
|
65
|
+
);
|
|
66
|
+
finalMediaDeclaration.push(theme.media.large`${cssString}`);
|
|
67
|
+
}
|
|
68
|
+
if (span.medium) {
|
|
69
|
+
const cssString = generateCssStringForSpan(span.medium);
|
|
70
|
+
if (finalMediaDeclaration.length === 0)
|
|
71
|
+
finalMediaDeclaration.push(
|
|
72
|
+
import_ds_system.css`
|
|
73
|
+
${cssString}
|
|
74
|
+
`
|
|
75
|
+
);
|
|
76
|
+
finalMediaDeclaration.push(theme.media.medium`${cssString}`);
|
|
77
|
+
}
|
|
78
|
+
if (span.small) {
|
|
79
|
+
const cssString = generateCssStringForSpan(span.small);
|
|
80
|
+
if (finalMediaDeclaration.length === 0)
|
|
81
|
+
finalMediaDeclaration.push(
|
|
82
|
+
import_ds_system.css`
|
|
83
|
+
${cssString}
|
|
84
|
+
`
|
|
85
|
+
);
|
|
86
|
+
finalMediaDeclaration.push(theme.media.small`${cssString}`);
|
|
87
|
+
}
|
|
88
|
+
return finalMediaDeclaration;
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=manageSpanParent.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/utils/manageSpanParent.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport { css } from '@elliemae/ds-system';\nimport type { Theme } from '@elliemae/pui-theme';\nimport type { DSGridT } from '../react-desc-prop-types.js';\n\ntype InterpolatedFunctionProps = {\n theme: Theme;\n} & DSGridT.ItemProps;\n\nconst generateCssStringForSpan = (span: number): string => `\n -ms-grid-column: auto / span ${span};\n grid-column: auto / span ${span};\n`;\n// This is used to support bootrap like-ish way of using the grid component\nexport const manageSpanParent = ({\n isSpanParent,\n span,\n theme,\n}: InterpolatedFunctionProps): ReturnType<typeof css>[] => {\n // If it's not a span parent, we don't need to do anything\n if (!isSpanParent) return [css``];\n\n // if span is a number we don't add media queries\n if (typeof span === 'number') {\n return [\n css`\n -ms-grid-column: auto / span ${span};\n grid-column: auto / span ${span};\n `,\n ];\n }\n // the only remaining valid definition for our supported types is an object, if it's not an object we fallback to doing nothing\n if (typeof span !== 'object') return [css``];\n\n // Span object\n\n const finalMediaDeclaration: ReturnType<typeof css>[] = [];\n // we conditionally push into the array the media queries because span definitions supports partial definitions\n // meaning that you can define spans only for small and medium and not for large\n // in such case we want to avoid generating media queries for large\n // we also need to make sure that the largest definition is used as the default one\n if (span.large) {\n const cssString = generateCssStringForSpan(span.large);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.large`${cssString}`);\n }\n if (span.medium) {\n const cssString = generateCssStringForSpan(span.medium);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.medium`${cssString}`);\n }\n if (span.small) {\n const cssString = generateCssStringForSpan(span.small);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.small`${cssString}`);\n }\n return finalMediaDeclaration;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,uBAAoB;AAQpB,MAAM,2BAA2B,CAAC,SAAyB;AAAA,iCAC1B;AAAA,6BACJ;AAAA;AAGtB,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAA2D;AAEzD,MAAI,CAAC;AAAc,WAAO,CAAC,sBAAK;AAGhC,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,MACL;AAAA,uCACiC;AAAA,mCACJ;AAAA;AAAA,IAE/B;AAAA,EACF;AAEA,MAAI,OAAO,SAAS;AAAU,WAAO,CAAC,sBAAK;AAI3C,QAAM,wBAAkD,CAAC;AAKzD,MAAI,KAAK,OAAO;AACd,UAAM,YAAY,yBAAyB,KAAK,KAAK;AACrD,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,MAAI,KAAK,QAAQ;AACf,UAAM,YAAY,yBAAyB,KAAK,MAAM;AACtD,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,SAAS,WAAW;AAAA,EAC7D;AACA,MAAI,KAAK,OAAO;AACd,UAAM,YAAY,yBAAyB,KAAK,KAAK;AACrD,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/esm/Grid.js
CHANGED
|
@@ -8,7 +8,19 @@ import { useGrid } from "./config/useGrid.js";
|
|
|
8
8
|
import { DSGridName } from "./DSGridDefinitions.js";
|
|
9
9
|
const Grid = React2.forwardRef((props, ref) => {
|
|
10
10
|
const {
|
|
11
|
-
propsWithDefaults: {
|
|
11
|
+
propsWithDefaults: {
|
|
12
|
+
withMaxWidthBreakpoints,
|
|
13
|
+
alignItems,
|
|
14
|
+
cols,
|
|
15
|
+
children,
|
|
16
|
+
rows,
|
|
17
|
+
gutter,
|
|
18
|
+
justify,
|
|
19
|
+
wrap,
|
|
20
|
+
width,
|
|
21
|
+
height,
|
|
22
|
+
...rest
|
|
23
|
+
},
|
|
12
24
|
globalProps,
|
|
13
25
|
xstyledProps,
|
|
14
26
|
isSpanParent,
|
|
@@ -31,6 +43,7 @@ const Grid = React2.forwardRef((props, ref) => {
|
|
|
31
43
|
...xstyledProps,
|
|
32
44
|
w: width,
|
|
33
45
|
h: height,
|
|
46
|
+
withMaxWidthBreakpoints,
|
|
34
47
|
children: renderChildren
|
|
35
48
|
}
|
|
36
49
|
);
|
package/dist/esm/Grid.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/Grid.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport type { DSGridT } from './react-desc-prop-types.js';\nimport { DSGridPropTypes } from './react-desc-prop-types.js';\nimport { GridItem } from './GridItem.js';\nimport { useGrid } from './config/useGrid.js';\nimport { DSGridName } from './DSGridDefinitions.js';\n\nconst Grid = React.forwardRef<HTMLDivElement, DSGridT.Props>((props, ref) => {\n const {\n propsWithDefaults: {
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport type { DSGridT } from './react-desc-prop-types.js';\nimport { DSGridPropTypes } from './react-desc-prop-types.js';\nimport { GridItem } from './GridItem.js';\nimport { useGrid } from './config/useGrid.js';\nimport { DSGridName } from './DSGridDefinitions.js';\n\nconst Grid = React.forwardRef<HTMLDivElement, DSGridT.Props>((props, ref) => {\n const {\n propsWithDefaults: {\n withMaxWidthBreakpoints,\n alignItems,\n cols,\n children,\n rows,\n gutter,\n justify,\n wrap,\n width,\n height,\n ...rest\n },\n globalProps,\n xstyledProps,\n isSpanParent,\n renderChildren,\n } = useGrid(props);\n\n return (\n <GridItem\n alignItems={alignItems}\n cols={cols}\n gutter={gutter}\n isSpanParent={isSpanParent}\n justify={justify}\n rows={rows}\n wrap={wrap}\n childNumber={React.Children.count(children)}\n ref={ref}\n {...rest}\n {...globalProps}\n {...xstyledProps}\n w={width}\n h={height}\n withMaxWidthBreakpoints={withMaxWidthBreakpoints}\n >\n {renderChildren}\n </GridItem>\n );\n});\n\n// Since this component is using ForwardRef, we must provide a displayName to avoid 'undefined' name in propsTable.\nGrid.displayName = DSGridName;\n\nGrid.propTypes = DSGridPropTypes;\nconst DSGridWithSchema = describe(Grid);\nDSGridWithSchema.propTypes = DSGridPropTypes;\n\nexport default Grid;\nexport { DSGridWithSchema, Grid };\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;AC8BnB;AA9BJ,OAAOA,YAAW;AAClB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAE3B,MAAM,OAAOA,OAAM,WAA0C,CAAC,OAAO,QAAQ;AAC3E,QAAM;AAAA,IACJ,mBAAmB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,QAAQ,KAAK;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAaA,OAAM,SAAS,MAAM,QAAQ;AAAA,MAC1C;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ,CAAC;AAGD,KAAK,cAAc;AAEnB,KAAK,YAAY;AACjB,MAAM,mBAAmB,SAAS,IAAI;AACtC,iBAAiB,YAAY;AAE7B,IAAO,eAAQ;",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
package/dist/esm/GridItem.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import {
|
|
3
3
|
styled,
|
|
4
|
+
css,
|
|
4
5
|
mapGap,
|
|
5
6
|
background,
|
|
6
7
|
borders,
|
|
@@ -11,7 +12,20 @@ import {
|
|
|
11
12
|
grids,
|
|
12
13
|
layout
|
|
13
14
|
} from "@elliemae/ds-system";
|
|
15
|
+
import { manageSpanParent } from "./utils/manageSpanParent.js";
|
|
16
|
+
import { manageColsV2 } from "./utils/manageCols.js";
|
|
17
|
+
import { manageRowsV2 } from "./utils/manageRows.js";
|
|
14
18
|
import { manageCols, manageRows, manageSpan } from "./utils/styles.js";
|
|
19
|
+
const gridV2 = css`
|
|
20
|
+
${manageColsV2}
|
|
21
|
+
${manageRowsV2}
|
|
22
|
+
${manageSpanParent}
|
|
23
|
+
`;
|
|
24
|
+
const gridV1 = css`
|
|
25
|
+
${manageCols}
|
|
26
|
+
${manageRows}
|
|
27
|
+
${manageSpan}
|
|
28
|
+
`;
|
|
15
29
|
const GridItem = styled.div`
|
|
16
30
|
display: grid;
|
|
17
31
|
display: -ms-grid;
|
|
@@ -21,9 +35,7 @@ const GridItem = styled.div`
|
|
|
21
35
|
${flexboxes}
|
|
22
36
|
${sizing}
|
|
23
37
|
${space}
|
|
24
|
-
${
|
|
25
|
-
${manageRows}
|
|
26
|
-
${manageSpan}
|
|
38
|
+
${({ withMaxWidthBreakpoints }) => withMaxWidthBreakpoints ? gridV2 : gridV1}
|
|
27
39
|
${boxShadows}
|
|
28
40
|
${borders}
|
|
29
41
|
${background}
|
package/dist/esm/GridItem.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/GridItem.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport {\n styled,\n mapGap,\n background,\n borders,\n sizing,\n space,\n boxShadows,\n flexboxes,\n grids,\n layout,\n type LayoutProps,\n type SpaceProps,\n type SizingProps,\n} from '@elliemae/ds-system';\nimport { manageCols
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACEvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,YAAY,YAAY,kBAAkB;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport {\n styled,\n css,\n mapGap,\n background,\n borders,\n sizing,\n space,\n boxShadows,\n flexboxes,\n grids,\n layout,\n type LayoutProps,\n type SpaceProps,\n type SizingProps,\n} from '@elliemae/ds-system';\nimport { manageSpanParent } from './utils/manageSpanParent.js';\nimport { manageColsV2 } from './utils/manageCols.js';\nimport { manageRowsV2 } from './utils/manageRows.js';\nimport { type DSGridT } from './react-desc-prop-types.js';\nimport { manageCols, manageRows, manageSpan } from './utils/styles.js';\n\nconst gridV2 = css<DSGridT.ItemProps & LayoutProps & SpaceProps & SizingProps>`\n ${manageColsV2}\n ${manageRowsV2}\n ${manageSpanParent}\n`;\n\nconst gridV1 = css`\n ${manageCols}\n ${manageRows}\n ${manageSpan}\n`;\nexport const GridItem = styled.div<DSGridT.ItemProps & LayoutProps & SpaceProps & SizingProps>`\n display: grid;\n display: -ms-grid;\n column-gap: ${({ gutter }) => mapGap(gutter)};\n row-gap: ${({ gutter }) => mapGap(gutter)};\n ${grids}\n ${flexboxes}\n ${sizing}\n ${space}\n ${({ withMaxWidthBreakpoints }) => (withMaxWidthBreakpoints ? gridV2 : gridV1)}\n ${boxShadows}\n ${borders}\n ${background}\n ${layout}\n`;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACEvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAE7B,SAAS,YAAY,YAAY,kBAAkB;AAEnD,MAAM,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA;AAGJ,MAAM,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA;AAEG,MAAM,WAAW,OAAO;AAAA;AAAA;AAAA,gBAGf,CAAC,EAAE,OAAO,MAAM,OAAO,MAAM;AAAA,aAChC,CAAC,EAAE,OAAO,MAAM,OAAO,MAAM;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,EAAE,wBAAwB,MAAO,0BAA0B,SAAS;AAAA,IACrE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -42,6 +42,7 @@ const DSGridPropTypes = {
|
|
|
42
42
|
justifyContent: PropTypes.oneOf(justifyPlacement).description("flex-like justify prop").defaultValue(justifyPlacement[0]),
|
|
43
43
|
gutter: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description("Space between cells prop").defaultValue(0),
|
|
44
44
|
wrap: PropTypes.oneOf(wrap).description("Wrap type").defaultValue(wrap[0]),
|
|
45
|
+
withMaxWidthBreakpoints: PropTypes.bool.description("weather use max width").defaultValue(void 0),
|
|
45
46
|
height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description("Grid height."),
|
|
46
47
|
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description("Grid width."),
|
|
47
48
|
backgroundColor: PropTypes.string.description("Sets background color."),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/react-desc-prop-types.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type { WeakValidationMap } from 'react';\nimport type React from 'react';\nimport type {} from '@elliemae/ds-utilities';\nimport type { GlobalAttributesT, XstyledProps } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport { alignItemsPlacement, justifyPlacement, wrap, boxShadow } from './utils/constants.js';\n\nexport declare namespace DSGridT {\n interface RowColBreakpoints {\n small?: string | number[];\n medium?: string | number[];\n large?: string | number[];\n }\n\n interface SpanBreakpoints {\n small?: number;\n medium?: number;\n large?: number;\n }\n\n type JustifyPlacement = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n type AlignItemsPlacement = 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';\n type Wrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n type BoxShadow = 'xs' | 's' | 'm' | 'l' | 'xl';\n\n export interface DefaultProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n span: number;\n }\n\n export interface OptionalProps {\n height?: string | number;\n width?: string | number;\n justifyContent?: JustifyPlacement;\n alignItems?: AlignItemsPlacement;\n children?: React.ReactNode;\n }\n\n export interface Props\n extends Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface InternalProps\n extends DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface ItemProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n alignItems: AlignItemsPlacement;\n children: React.ReactNode;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n childNumber: number;\n isSpanParent: boolean;\n span?: number | SpanBreakpoints;\n ref: React.ForwardedRef<HTMLDivElement>;\n boxShadow?: BoxShadow;\n backgroundColor?: string;\n bg?: string;\n }\n}\n\nexport const defaultProps: DSGridT.DefaultProps = {\n rows: [],\n cols: [],\n className: '',\n justify: 'flex-start',\n gutter: 0,\n wrap: 'wrap',\n span: 1,\n};\n\n// =============================================================================\n// PropTypes\n// =============================================================================\nconst rowColBreakpoints = PropTypes.shape({\n small: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n medium: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n large: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n});\n\nconst spanBreakpoints = PropTypes.shape({\n small: PropTypes.number,\n medium: PropTypes.number,\n large: PropTypes.number,\n});\n\nexport const DSGridPropTypes = {\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n rows: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Row layout cells')\n .defaultValue([]),\n cols: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Column layout cells')\n .defaultValue([]),\n span: PropTypes.oneOfType([PropTypes.number, spanBreakpoints]).description(\n 'Expands the grid element within columns.',\n ),\n alignItems: PropTypes.oneOf(alignItemsPlacement).description('flex-like align items prop'),\n children: PropTypes.node.description('Children node inside grid cell'),\n className: PropTypes.string.description('CSS class').defaultValue(''),\n justifyContent: PropTypes.oneOf(justifyPlacement)\n .description('flex-like justify prop')\n .defaultValue(justifyPlacement[0]),\n gutter: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n .description('Space between cells prop')\n .defaultValue(0),\n wrap: PropTypes.oneOf(wrap).description('Wrap type').defaultValue(wrap[0]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid height.'),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid width.'),\n backgroundColor: PropTypes.string.description('Sets background color.'),\n bg: PropTypes.string.description('Sets background color.'),\n boxShadow: PropTypes.oneOf(boxShadow).description('Sets background color.'),\n border: PropTypes.string.description('Sets border.'),\n borderRadius: PropTypes.string.description('Sets border radius.'),\n borderWidth: PropTypes.string.description('Sets border width.'),\n borderStyle: PropTypes.string.description('Sets border style.'),\n borderColor: PropTypes.string.description('Sets border color.'),\n borderTop: PropTypes.string.description('Sets top border.'),\n borderBottom: PropTypes.string.description('Sets bottom border.'),\n borderLeft: PropTypes.string.description('Sets left border.'),\n borderRight: PropTypes.string.description('Sets right border.'),\n borderTopWidth: PropTypes.string.description('Sets border top width.'),\n borderTopStyle: PropTypes.string.description('Sets border top style.'),\n borderTopColor: PropTypes.string.description('Sets border top color.'),\n borderBottomWidth: PropTypes.string.description('Sets border bottom width.'),\n borderBottomStyle: PropTypes.string.description('Sets border bottom style.'),\n borderBottomColor: PropTypes.string.description('Sets border bottom color.'),\n borderRightWidth: PropTypes.string.description('Sets border right width.'),\n borderRightStyle: PropTypes.string.description('Sets border right style.'),\n borderRightColor: PropTypes.string.description('Sets border right color.'),\n borderLeftWidth: PropTypes.string.description('Sets border left width.'),\n borderLeftStyle: PropTypes.string.description('Sets border left style.'),\n borderLeftColor: PropTypes.string.description('Sets border left color.'),\n} as WeakValidationMap<unknown>;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACIvB,SAAS,WAAW,2BAA2B,wBAAwB;AACvE,SAAS,qBAAqB,kBAAkB,MAAM,iBAAiB;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type { WeakValidationMap } from 'react';\nimport type React from 'react';\nimport type {} from '@elliemae/ds-utilities';\nimport type { GlobalAttributesT, XstyledProps } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport { alignItemsPlacement, justifyPlacement, wrap, boxShadow } from './utils/constants.js';\n\nexport declare namespace DSGridT {\n interface RowColBreakpoints {\n small?: string | number | (string | number)[];\n medium?: string | number | (string | number)[];\n large?: string | number | (string | number)[];\n }\n\n interface SpanBreakpoints {\n small?: number;\n medium?: number;\n large?: number;\n }\n\n type JustifyPlacement = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n type AlignItemsPlacement = 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';\n type Wrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n type BoxShadow = 'xs' | 's' | 'm' | 'l' | 'xl';\n\n export interface DefaultProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n span: number;\n }\n\n export interface OptionalProps {\n height?: string | number;\n width?: string | number;\n justifyContent?: JustifyPlacement;\n alignItems?: AlignItemsPlacement;\n children?: React.ReactNode;\n withMaxWidthBreakpoints?: boolean;\n }\n\n export interface Props\n extends Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface InternalProps\n extends DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>,\n XstyledProps {}\n\n export interface ItemProps {\n rows: string[] | string | number[] | RowColBreakpoints;\n cols: string[] | string | number[] | RowColBreakpoints;\n alignItems: AlignItemsPlacement;\n children: React.ReactNode;\n className: string;\n justify: JustifyPlacement;\n gutter: string | number;\n wrap: Wrap;\n childNumber: number;\n isSpanParent: boolean;\n span?: number | SpanBreakpoints;\n ref: React.ForwardedRef<HTMLDivElement>;\n boxShadow?: BoxShadow;\n backgroundColor?: string;\n bg?: string;\n withMaxWidthBreakpoints?: boolean;\n }\n}\n\nexport const defaultProps: DSGridT.DefaultProps = {\n rows: [],\n cols: [],\n className: '',\n justify: 'flex-start',\n gutter: 0,\n wrap: 'wrap',\n span: 1,\n};\n\n// =============================================================================\n// PropTypes\n// =============================================================================\nconst rowColBreakpoints = PropTypes.shape({\n small: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n medium: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n large: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n});\n\nconst spanBreakpoints = PropTypes.shape({\n small: PropTypes.number,\n medium: PropTypes.number,\n large: PropTypes.number,\n});\n\nexport const DSGridPropTypes = {\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n rows: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Row layout cells')\n .defaultValue([]),\n cols: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n PropTypes.number,\n rowColBreakpoints,\n ])\n .description('Column layout cells')\n .defaultValue([]),\n span: PropTypes.oneOfType([PropTypes.number, spanBreakpoints]).description(\n 'Expands the grid element within columns.',\n ),\n alignItems: PropTypes.oneOf(alignItemsPlacement).description('flex-like align items prop'),\n children: PropTypes.node.description('Children node inside grid cell'),\n className: PropTypes.string.description('CSS class').defaultValue(''),\n justifyContent: PropTypes.oneOf(justifyPlacement)\n .description('flex-like justify prop')\n .defaultValue(justifyPlacement[0]),\n gutter: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n .description('Space between cells prop')\n .defaultValue(0),\n wrap: PropTypes.oneOf(wrap).description('Wrap type').defaultValue(wrap[0]),\n withMaxWidthBreakpoints: PropTypes.bool.description('weather use max width').defaultValue(undefined),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid height.'),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('Grid width.'),\n backgroundColor: PropTypes.string.description('Sets background color.'),\n bg: PropTypes.string.description('Sets background color.'),\n boxShadow: PropTypes.oneOf(boxShadow).description('Sets background color.'),\n border: PropTypes.string.description('Sets border.'),\n borderRadius: PropTypes.string.description('Sets border radius.'),\n borderWidth: PropTypes.string.description('Sets border width.'),\n borderStyle: PropTypes.string.description('Sets border style.'),\n borderColor: PropTypes.string.description('Sets border color.'),\n borderTop: PropTypes.string.description('Sets top border.'),\n borderBottom: PropTypes.string.description('Sets bottom border.'),\n borderLeft: PropTypes.string.description('Sets left border.'),\n borderRight: PropTypes.string.description('Sets right border.'),\n borderTopWidth: PropTypes.string.description('Sets border top width.'),\n borderTopStyle: PropTypes.string.description('Sets border top style.'),\n borderTopColor: PropTypes.string.description('Sets border top color.'),\n borderBottomWidth: PropTypes.string.description('Sets border bottom width.'),\n borderBottomStyle: PropTypes.string.description('Sets border bottom style.'),\n borderBottomColor: PropTypes.string.description('Sets border bottom color.'),\n borderRightWidth: PropTypes.string.description('Sets border right width.'),\n borderRightStyle: PropTypes.string.description('Sets border right style.'),\n borderRightColor: PropTypes.string.description('Sets border right color.'),\n borderLeftWidth: PropTypes.string.description('Sets border left width.'),\n borderLeftStyle: PropTypes.string.description('Sets border left style.'),\n borderLeftColor: PropTypes.string.description('Sets border left color.'),\n} as WeakValidationMap<unknown>;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { css, mapTemplateGrid } from "@elliemae/ds-system";
|
|
3
|
+
const colsIsBreakpointDefinition = (cols) => typeof cols === "object" && !Array.isArray(cols);
|
|
4
|
+
const generateColsCssStringForArray = (colsVal) => {
|
|
5
|
+
const mtg = mapTemplateGrid(colsVal).join(" ");
|
|
6
|
+
const mtgs = mapTemplateGrid(colsVal).map((c) => `minmax(0, ${c})`).join(" ");
|
|
7
|
+
return `
|
|
8
|
+
-ms-grid-columns: ${mtg || "minmax(0px, 1fr)"};
|
|
9
|
+
grid-template-columns: ${mtg || "auto"};
|
|
10
|
+
-ms-grid-columns: ${mtgs || "minmax(0px, 1fr)"};
|
|
11
|
+
grid-template-columns: ${mtgs || "auto"};
|
|
12
|
+
`;
|
|
13
|
+
};
|
|
14
|
+
const generateColsCssStringForBootstrapLikeishScenario = (colsVal) => `
|
|
15
|
+
-ms-grid-columns: repeat(${colsVal}, 1fr);
|
|
16
|
+
grid-template-columns: repeat(${colsVal}, 1fr);
|
|
17
|
+
`;
|
|
18
|
+
const generateColsWithMediaQueries = (cols, theme, isSpanParent) => {
|
|
19
|
+
const finalMediaDeclaration = [];
|
|
20
|
+
if (cols.large) {
|
|
21
|
+
let cssString = "";
|
|
22
|
+
if (Array.isArray(cols.large)) {
|
|
23
|
+
cssString = generateColsCssStringForArray(cols.large);
|
|
24
|
+
} else if (isSpanParent) {
|
|
25
|
+
cssString = generateColsCssStringForBootstrapLikeishScenario(cols.large);
|
|
26
|
+
}
|
|
27
|
+
finalMediaDeclaration.push(theme.media.large`${cssString}`);
|
|
28
|
+
if (finalMediaDeclaration.length === 0)
|
|
29
|
+
finalMediaDeclaration.push(
|
|
30
|
+
css`
|
|
31
|
+
${cssString}
|
|
32
|
+
`
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
if (cols.medium) {
|
|
36
|
+
let cssString = "";
|
|
37
|
+
if (Array.isArray(cols.medium)) {
|
|
38
|
+
cssString = generateColsCssStringForArray(cols.medium);
|
|
39
|
+
} else if (isSpanParent) {
|
|
40
|
+
cssString = generateColsCssStringForBootstrapLikeishScenario(cols.medium);
|
|
41
|
+
}
|
|
42
|
+
finalMediaDeclaration.push(theme.media.medium`${cssString}`);
|
|
43
|
+
if (finalMediaDeclaration.length === 0)
|
|
44
|
+
finalMediaDeclaration.push(
|
|
45
|
+
css`
|
|
46
|
+
${cssString}
|
|
47
|
+
`
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
if (cols.small) {
|
|
51
|
+
let cssString = "";
|
|
52
|
+
if (Array.isArray(cols.small)) {
|
|
53
|
+
cssString = generateColsCssStringForArray(cols.small);
|
|
54
|
+
} else if (isSpanParent) {
|
|
55
|
+
cssString = generateColsCssStringForBootstrapLikeishScenario(cols.small);
|
|
56
|
+
}
|
|
57
|
+
finalMediaDeclaration.push(theme.media.small`${cssString}`);
|
|
58
|
+
if (finalMediaDeclaration.length === 0)
|
|
59
|
+
finalMediaDeclaration.push(
|
|
60
|
+
css`
|
|
61
|
+
${cssString}
|
|
62
|
+
`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
return finalMediaDeclaration;
|
|
66
|
+
};
|
|
67
|
+
const manageColsV2 = ({ cols, theme, isSpanParent }) => {
|
|
68
|
+
if (colsIsBreakpointDefinition(cols)) {
|
|
69
|
+
return generateColsWithMediaQueries(cols, theme, isSpanParent);
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(cols)) {
|
|
72
|
+
const cssString = generateColsCssStringForArray(cols);
|
|
73
|
+
return [
|
|
74
|
+
css`
|
|
75
|
+
${cssString}
|
|
76
|
+
`
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
if (isSpanParent) {
|
|
80
|
+
const cssString = generateColsCssStringForBootstrapLikeishScenario(cols);
|
|
81
|
+
return [
|
|
82
|
+
css`
|
|
83
|
+
${cssString}
|
|
84
|
+
`
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
return [css``];
|
|
88
|
+
};
|
|
89
|
+
export {
|
|
90
|
+
manageColsV2
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=manageCols.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/manageCols.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { css, mapTemplateGrid } from '@elliemae/ds-system';\nimport type { DSGridT } from '../react-desc-prop-types.js';\nimport type { Theme } from '@elliemae/pui-theme';\n\ntype BreakPointObject = {\n large?: string | number | (string | number)[];\n medium?: string | number | (string | number)[];\n small?: string | number | (string | number)[];\n};\n// this typeguard is not extremely accurate but it has historically been like this and we need to avoid breaking changes\nconst colsIsBreakpointDefinition = (cols: unknown): cols is BreakPointObject =>\n typeof cols === 'object' && !Array.isArray(cols);\ntype InterpolatedFunctionProps = {\n theme: Theme;\n} & DSGridT.ItemProps;\n\nconst generateColsCssStringForArray = (colsVal: (string | number)[]): string => {\n // mtg and mtgs are used to support mapping different ways of defining the cols\n // when mtg produces valid css, mtgs will produce invalid css and vice-versa\n // only one of them will be effectively applied by the browser\n const mtg = (mapTemplateGrid(colsVal) as string[]).join(' ');\n const mtgs = (mapTemplateGrid(colsVal) as string[]).map((c) => `minmax(0, ${c})`).join(' ');\n return `\n -ms-grid-columns: ${mtg || 'minmax(0px, 1fr)'};\n grid-template-columns: ${mtg || 'auto'};\n -ms-grid-columns: ${mtgs || 'minmax(0px, 1fr)'};\n grid-template-columns: ${mtgs || 'auto'};\n `;\n};\nconst generateColsCssStringForBootstrapLikeishScenario = (colsVal: string | number): string => `\n -ms-grid-columns: repeat(${colsVal}, 1fr);\n grid-template-columns: repeat(${colsVal}, 1fr);\n `;\nconst generateColsWithMediaQueries = (\n cols: BreakPointObject,\n theme: Theme,\n isSpanParent: boolean,\n): ReturnType<typeof css>[] => {\n const finalMediaDeclaration: ReturnType<typeof css>[] = [];\n // we conditionally push into the array the media queries because grid cols definitions supports partial definitions\n // meaning that you can define cols only for small and medium and not for large\n // in such case we want to avoid generating media queries for large\n // we also need to make sure that the largest definition is used as the default one\n if (cols.large) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(cols.large)) {\n cssString = generateColsCssStringForArray(cols.large);\n } else if (isSpanParent) {\n cssString = generateColsCssStringForBootstrapLikeishScenario(cols.large);\n }\n finalMediaDeclaration.push(theme.media.large`${cssString}`);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n }\n if (cols.medium) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(cols.medium)) {\n cssString = generateColsCssStringForArray(cols.medium);\n } else if (isSpanParent) {\n cssString = generateColsCssStringForBootstrapLikeishScenario(cols.medium);\n }\n finalMediaDeclaration.push(theme.media.medium`${cssString}`);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n }\n if (cols.small) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(cols.small)) {\n cssString = generateColsCssStringForArray(cols.small);\n } else if (isSpanParent) {\n cssString = generateColsCssStringForBootstrapLikeishScenario(cols.small);\n }\n finalMediaDeclaration.push(theme.media.small`${cssString}`);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n }\n return finalMediaDeclaration;\n};\n\nexport const manageColsV2 = ({ cols, theme, isSpanParent }: InterpolatedFunctionProps): ReturnType<typeof css>[] => {\n // we want to be extremely explicit with how we handle the different use-cases\n // the component is quite old and has been tailored to fit the needs of the different use-cases\n // even ones that should have not been supported in the first place (isSpanParent to simulate bootstrap, different kind of cols definitions, etc)\n // support for\n // cols:{small: 1, medium: 2, large: 3}\n // AND\n // cols: {small: ['1fr'], medium: ['160px'], large: ['400px'] }\n if (colsIsBreakpointDefinition(cols)) {\n // there is no way to guarantee dynamic co-relation between pui-theme and the grid component\n // any change in the theme will break the co-relation and we would need to update the component\n // for such reason we are optimizing for maintainability and not scalability\n return generateColsWithMediaQueries(cols, theme, isSpanParent);\n }\n\n // support for cols: ['1fr', '1fr', '1fr'] && cols: [1, 1, 1]\n if (Array.isArray(cols)) {\n const cssString = generateColsCssStringForArray(cols);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // support for parent is span and is like cols: 3\n if (isSpanParent) {\n const cssString = generateColsCssStringForBootstrapLikeishScenario(cols);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // fallback is not doing anything\n return [css``];\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACEvB,SAAS,KAAK,uBAAuB;AAUrC,MAAM,6BAA6B,CAAC,SAClC,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAKjD,MAAM,gCAAgC,CAAC,YAAyC;AAI9E,QAAM,MAAO,gBAAgB,OAAO,EAAe,KAAK,GAAG;AAC3D,QAAM,OAAQ,gBAAgB,OAAO,EAAe,IAAI,CAAC,MAAM,aAAa,IAAI,EAAE,KAAK,GAAG;AAC1F,SAAO;AAAA,0BACiB,OAAO;AAAA,+BACF,OAAO;AAAA,0BACZ,QAAQ;AAAA,+BACH,QAAQ;AAAA;AAEvC;AACA,MAAM,mDAAmD,CAAC,YAAqC;AAAA,iCAC9D;AAAA,sCACK;AAAA;AAEtC,MAAM,+BAA+B,CACnC,MACA,OACA,iBAC6B;AAC7B,QAAM,wBAAkD,CAAC;AAKzD,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAC1D,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AAAA,EACJ;AACA,MAAI,KAAK,QAAQ;AAIf,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,kBAAY,8BAA8B,KAAK,MAAM;AAAA,IACvD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,MAAM;AAAA,IAC1E;AACA,0BAAsB,KAAK,MAAM,MAAM,SAAS,WAAW;AAC3D,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AAAA,EACJ;AACA,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAC1D,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AAAA,EACJ;AACA,SAAO;AACT;AAEO,MAAM,eAAe,CAAC,EAAE,MAAM,OAAO,aAAa,MAA2D;AAQlH,MAAI,2BAA2B,IAAI,GAAG;AAIpC,WAAO,6BAA6B,MAAM,OAAO,YAAY;AAAA,EAC/D;AAGA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,UAAM,YAAY,8BAA8B,IAAI;AACpD,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,MAAI,cAAc;AAChB,UAAM,YAAY,iDAAiD,IAAI;AACvE,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,SAAO,CAAC,KAAK;AACf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { css, mapTemplateGrid } from "@elliemae/ds-system";
|
|
3
|
+
const rowsIsBreakpointDefinition = (rows) => typeof rows === "object" && !Array.isArray(rows);
|
|
4
|
+
const generateRowsCssStringForArray = (rowsVal) => {
|
|
5
|
+
const mtg = mapTemplateGrid(rowsVal).join(" ");
|
|
6
|
+
const mtgs = mapTemplateGrid(rowsVal).map((c) => `minmax(0, ${c})`).join(" ");
|
|
7
|
+
return `
|
|
8
|
+
-ms-grid-rows: ${mtg || "minmax(0px, 1fr)"};
|
|
9
|
+
grid-template-rows: ${mtg || "auto"};
|
|
10
|
+
-ms-grid-rows: ${mtgs || "minmax(0px, 1fr)"};
|
|
11
|
+
grid-template-rows: ${mtgs || "auto"};
|
|
12
|
+
`;
|
|
13
|
+
};
|
|
14
|
+
const generateRowsCssStringForBootstrapLikeishScenario = (rowsVal) => `
|
|
15
|
+
-ms-grid-rows: repeat(${rowsVal}, 1fr);
|
|
16
|
+
grid-template-rows: repeat(${rowsVal}, 1fr);
|
|
17
|
+
`;
|
|
18
|
+
const generateRowsWithMediaQueries = (rows, theme, isSpanParent) => {
|
|
19
|
+
const finalMediaDeclaration = [];
|
|
20
|
+
if (rows.large) {
|
|
21
|
+
let cssString = "";
|
|
22
|
+
if (Array.isArray(rows.large)) {
|
|
23
|
+
cssString = generateRowsCssStringForArray(rows.large);
|
|
24
|
+
} else if (isSpanParent) {
|
|
25
|
+
cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.large);
|
|
26
|
+
}
|
|
27
|
+
if (finalMediaDeclaration.length === 0)
|
|
28
|
+
finalMediaDeclaration.push(
|
|
29
|
+
css`
|
|
30
|
+
${cssString}
|
|
31
|
+
`
|
|
32
|
+
);
|
|
33
|
+
finalMediaDeclaration.push(theme.media.large`${cssString}`);
|
|
34
|
+
}
|
|
35
|
+
if (rows.medium) {
|
|
36
|
+
let cssString = "";
|
|
37
|
+
if (Array.isArray(rows.medium)) {
|
|
38
|
+
cssString = generateRowsCssStringForArray(rows.medium);
|
|
39
|
+
} else if (isSpanParent) {
|
|
40
|
+
cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.medium);
|
|
41
|
+
}
|
|
42
|
+
if (finalMediaDeclaration.length === 0)
|
|
43
|
+
finalMediaDeclaration.push(
|
|
44
|
+
css`
|
|
45
|
+
${cssString}
|
|
46
|
+
`
|
|
47
|
+
);
|
|
48
|
+
finalMediaDeclaration.push(theme.media.medium`${cssString}`);
|
|
49
|
+
}
|
|
50
|
+
if (rows.small) {
|
|
51
|
+
let cssString = "";
|
|
52
|
+
if (Array.isArray(rows.small)) {
|
|
53
|
+
cssString = generateRowsCssStringForArray(rows.small);
|
|
54
|
+
} else if (isSpanParent) {
|
|
55
|
+
cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.small);
|
|
56
|
+
}
|
|
57
|
+
if (finalMediaDeclaration.length === 0)
|
|
58
|
+
finalMediaDeclaration.push(
|
|
59
|
+
css`
|
|
60
|
+
${cssString}
|
|
61
|
+
`
|
|
62
|
+
);
|
|
63
|
+
finalMediaDeclaration.push(theme.media.small`${cssString}`);
|
|
64
|
+
}
|
|
65
|
+
return finalMediaDeclaration;
|
|
66
|
+
};
|
|
67
|
+
const manageRowsV2 = ({ rows, theme, isSpanParent }) => {
|
|
68
|
+
if (rowsIsBreakpointDefinition(rows)) {
|
|
69
|
+
return generateRowsWithMediaQueries(rows, theme, isSpanParent);
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(rows)) {
|
|
72
|
+
const cssString = generateRowsCssStringForArray(rows);
|
|
73
|
+
return [
|
|
74
|
+
css`
|
|
75
|
+
${cssString}
|
|
76
|
+
`
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
if (isSpanParent) {
|
|
80
|
+
const cssString = generateRowsCssStringForBootstrapLikeishScenario(rows);
|
|
81
|
+
return [
|
|
82
|
+
css`
|
|
83
|
+
${cssString}
|
|
84
|
+
`
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
return [css``];
|
|
88
|
+
};
|
|
89
|
+
export {
|
|
90
|
+
manageRowsV2
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=manageRows.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/manageRows.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { css, mapTemplateGrid } from '@elliemae/ds-system';\nimport type { DSGridT } from '../react-desc-prop-types.js';\nimport type { Theme } from '@elliemae/pui-theme';\n\ntype BreakPointObject = {\n large?: string | number | (string | number)[];\n medium?: string | number | (string | number)[];\n small?: string | number | (string | number)[];\n};\n// this typeguard is not extremely accurate but it has historically been like this and we need to avoid breaking changes\nconst rowsIsBreakpointDefinition = (rows: unknown): rows is BreakPointObject =>\n typeof rows === 'object' && !Array.isArray(rows);\ntype InterpolatedFunctionProps = {\n theme: Theme;\n} & DSGridT.ItemProps;\n\nconst generateRowsCssStringForArray = (rowsVal: (string | number)[]): string => {\n // mtg and mtgs are used to support mapping different ways of defining the rows\n // when mtg produces valid css, mtgs will produce invalid css and vice-versa\n // only one of them will be effectively applied by the browser\n const mtg = (mapTemplateGrid(rowsVal) as string[]).join(' ');\n const mtgs = (mapTemplateGrid(rowsVal) as string[]).map((c) => `minmax(0, ${c})`).join(' ');\n return `\n -ms-grid-rows: ${mtg || 'minmax(0px, 1fr)'};\n grid-template-rows: ${mtg || 'auto'};\n -ms-grid-rows: ${mtgs || 'minmax(0px, 1fr)'};\n grid-template-rows: ${mtgs || 'auto'};\n `;\n};\nconst generateRowsCssStringForBootstrapLikeishScenario = (rowsVal: string | number): string => `\n -ms-grid-rows: repeat(${rowsVal}, 1fr);\n grid-template-rows: repeat(${rowsVal}, 1fr);\n `;\nconst generateRowsWithMediaQueries = (\n rows: BreakPointObject,\n theme: Theme,\n isSpanParent: boolean,\n): ReturnType<typeof css>[] => {\n const finalMediaDeclaration: ReturnType<typeof css>[] = [];\n // we conditionally push into the array the media queries because grid rows definitions supports partial definitions\n // meaning that you can define rows only for small and medium and not for large\n // in such case we want to avoid generating media queries for large\n // we also need to make sure that the largest definition is used as the default one\n if (rows.large) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(rows.large)) {\n cssString = generateRowsCssStringForArray(rows.large);\n } else if (isSpanParent) {\n cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.large);\n }\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.large`${cssString}`);\n }\n if (rows.medium) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(rows.medium)) {\n cssString = generateRowsCssStringForArray(rows.medium);\n } else if (isSpanParent) {\n cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.medium);\n }\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.medium`${cssString}`);\n }\n if (rows.small) {\n // we apply different styles for defintions that are arrays and definitions that are not\n // specifically when the definition are NOT arrays we check if the parent is a span tag\n // if it is we try to copy bootstrap's behavior and use repeat css grid function\n let cssString = '';\n if (Array.isArray(rows.small)) {\n cssString = generateRowsCssStringForArray(rows.small);\n } else if (isSpanParent) {\n cssString = generateRowsCssStringForBootstrapLikeishScenario(rows.small);\n }\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.small`${cssString}`);\n }\n return finalMediaDeclaration;\n};\n\nexport const manageRowsV2 = ({ rows, theme, isSpanParent }: InterpolatedFunctionProps): ReturnType<typeof css>[] => {\n // we want to be extremely explicit with how we handle the different use-cases\n // the component is quite old and has been tailored to fit the needs of the different use-cases\n // even ones that should have not been supported in the first place (isSpanParent to simulate bootstrap, different kind of rows definitions, etc)\n // support for\n // rows:{small: 1, medium: 2, large: 3}\n // AND\n // rows: {small: ['1fr'], medium: ['160px'], large: ['400px'] }\n if (rowsIsBreakpointDefinition(rows)) {\n // there is no way to guarantee dynamic co-relation between pui-theme and the grid component\n // any change in the theme will break the co-relation and we would need to update the component\n // for such reason we are optimizing for maintainability and not scalability\n return generateRowsWithMediaQueries(rows, theme, isSpanParent);\n }\n\n // support for rows: ['1fr', '1fr', '1fr'] && rows: [1, 1, 1]\n if (Array.isArray(rows)) {\n const cssString = generateRowsCssStringForArray(rows);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // support for parent is span and is like rows: 3\n if (isSpanParent) {\n const cssString = generateRowsCssStringForBootstrapLikeishScenario(rows);\n return [\n css`\n ${cssString}\n `,\n ];\n }\n // fallback is not doing anything\n return [css``];\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACEvB,SAAS,KAAK,uBAAuB;AAUrC,MAAM,6BAA6B,CAAC,SAClC,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAKjD,MAAM,gCAAgC,CAAC,YAAyC;AAI9E,QAAM,MAAO,gBAAgB,OAAO,EAAe,KAAK,GAAG;AAC3D,QAAM,OAAQ,gBAAgB,OAAO,EAAe,IAAI,CAAC,MAAM,aAAa,IAAI,EAAE,KAAK,GAAG;AAC1F,SAAO;AAAA,uBACc,OAAO;AAAA,4BACF,OAAO;AAAA,uBACZ,QAAQ;AAAA,4BACH,QAAQ;AAAA;AAEpC;AACA,MAAM,mDAAmD,CAAC,YAAqC;AAAA,8BACjE;AAAA,mCACK;AAAA;AAEnC,MAAM,+BAA+B,CACnC,MACA,OACA,iBAC6B;AAC7B,QAAM,wBAAkD,CAAC;AAKzD,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,MAAI,KAAK,QAAQ;AAIf,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,kBAAY,8BAA8B,KAAK,MAAM;AAAA,IACvD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,MAAM;AAAA,IAC1E;AACA,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,SAAS,WAAW;AAAA,EAC7D;AACA,MAAI,KAAK,OAAO;AAId,QAAI,YAAY;AAChB,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,kBAAY,8BAA8B,KAAK,KAAK;AAAA,IACtD,WAAW,cAAc;AACvB,kBAAY,iDAAiD,KAAK,KAAK;AAAA,IACzE;AACA,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,SAAO;AACT;AAEO,MAAM,eAAe,CAAC,EAAE,MAAM,OAAO,aAAa,MAA2D;AAQlH,MAAI,2BAA2B,IAAI,GAAG;AAIpC,WAAO,6BAA6B,MAAM,OAAO,YAAY;AAAA,EAC/D;AAGA,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,UAAM,YAAY,8BAA8B,IAAI;AACpD,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,MAAI,cAAc;AAChB,UAAM,YAAY,iDAAiD,IAAI;AACvE,WAAO;AAAA,MACL;AAAA,UACI;AAAA;AAAA,IAEN;AAAA,EACF;AAEA,SAAO,CAAC,KAAK;AACf;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { css } from "@elliemae/ds-system";
|
|
3
|
+
const generateCssStringForSpan = (span) => `
|
|
4
|
+
-ms-grid-column: auto / span ${span};
|
|
5
|
+
grid-column: auto / span ${span};
|
|
6
|
+
`;
|
|
7
|
+
const manageSpanParent = ({
|
|
8
|
+
isSpanParent,
|
|
9
|
+
span,
|
|
10
|
+
theme
|
|
11
|
+
}) => {
|
|
12
|
+
if (!isSpanParent)
|
|
13
|
+
return [css``];
|
|
14
|
+
if (typeof span === "number") {
|
|
15
|
+
return [
|
|
16
|
+
css`
|
|
17
|
+
-ms-grid-column: auto / span ${span};
|
|
18
|
+
grid-column: auto / span ${span};
|
|
19
|
+
`
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
if (typeof span !== "object")
|
|
23
|
+
return [css``];
|
|
24
|
+
const finalMediaDeclaration = [];
|
|
25
|
+
if (span.large) {
|
|
26
|
+
const cssString = generateCssStringForSpan(span.large);
|
|
27
|
+
if (finalMediaDeclaration.length === 0)
|
|
28
|
+
finalMediaDeclaration.push(
|
|
29
|
+
css`
|
|
30
|
+
${cssString}
|
|
31
|
+
`
|
|
32
|
+
);
|
|
33
|
+
finalMediaDeclaration.push(theme.media.large`${cssString}`);
|
|
34
|
+
}
|
|
35
|
+
if (span.medium) {
|
|
36
|
+
const cssString = generateCssStringForSpan(span.medium);
|
|
37
|
+
if (finalMediaDeclaration.length === 0)
|
|
38
|
+
finalMediaDeclaration.push(
|
|
39
|
+
css`
|
|
40
|
+
${cssString}
|
|
41
|
+
`
|
|
42
|
+
);
|
|
43
|
+
finalMediaDeclaration.push(theme.media.medium`${cssString}`);
|
|
44
|
+
}
|
|
45
|
+
if (span.small) {
|
|
46
|
+
const cssString = generateCssStringForSpan(span.small);
|
|
47
|
+
if (finalMediaDeclaration.length === 0)
|
|
48
|
+
finalMediaDeclaration.push(
|
|
49
|
+
css`
|
|
50
|
+
${cssString}
|
|
51
|
+
`
|
|
52
|
+
);
|
|
53
|
+
finalMediaDeclaration.push(theme.media.small`${cssString}`);
|
|
54
|
+
}
|
|
55
|
+
return finalMediaDeclaration;
|
|
56
|
+
};
|
|
57
|
+
export {
|
|
58
|
+
manageSpanParent
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=manageSpanParent.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/manageSpanParent.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport { css } from '@elliemae/ds-system';\nimport type { Theme } from '@elliemae/pui-theme';\nimport type { DSGridT } from '../react-desc-prop-types.js';\n\ntype InterpolatedFunctionProps = {\n theme: Theme;\n} & DSGridT.ItemProps;\n\nconst generateCssStringForSpan = (span: number): string => `\n -ms-grid-column: auto / span ${span};\n grid-column: auto / span ${span};\n`;\n// This is used to support bootrap like-ish way of using the grid component\nexport const manageSpanParent = ({\n isSpanParent,\n span,\n theme,\n}: InterpolatedFunctionProps): ReturnType<typeof css>[] => {\n // If it's not a span parent, we don't need to do anything\n if (!isSpanParent) return [css``];\n\n // if span is a number we don't add media queries\n if (typeof span === 'number') {\n return [\n css`\n -ms-grid-column: auto / span ${span};\n grid-column: auto / span ${span};\n `,\n ];\n }\n // the only remaining valid definition for our supported types is an object, if it's not an object we fallback to doing nothing\n if (typeof span !== 'object') return [css``];\n\n // Span object\n\n const finalMediaDeclaration: ReturnType<typeof css>[] = [];\n // we conditionally push into the array the media queries because span definitions supports partial definitions\n // meaning that you can define spans only for small and medium and not for large\n // in such case we want to avoid generating media queries for large\n // we also need to make sure that the largest definition is used as the default one\n if (span.large) {\n const cssString = generateCssStringForSpan(span.large);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.large`${cssString}`);\n }\n if (span.medium) {\n const cssString = generateCssStringForSpan(span.medium);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.medium`${cssString}`);\n }\n if (span.small) {\n const cssString = generateCssStringForSpan(span.small);\n if (finalMediaDeclaration.length === 0)\n finalMediaDeclaration.push(\n css`\n ${cssString}\n `,\n );\n finalMediaDeclaration.push(theme.media.small`${cssString}`);\n }\n return finalMediaDeclaration;\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACGvB,SAAS,WAAW;AAQpB,MAAM,2BAA2B,CAAC,SAAyB;AAAA,iCAC1B;AAAA,6BACJ;AAAA;AAGtB,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAA2D;AAEzD,MAAI,CAAC;AAAc,WAAO,CAAC,KAAK;AAGhC,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,MACL;AAAA,uCACiC;AAAA,mCACJ;AAAA;AAAA,IAE/B;AAAA,EACF;AAEA,MAAI,OAAO,SAAS;AAAU,WAAO,CAAC,KAAK;AAI3C,QAAM,wBAAkD,CAAC;AAKzD,MAAI,KAAK,OAAO;AACd,UAAM,YAAY,yBAAyB,KAAK,KAAK;AACrD,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,MAAI,KAAK,QAAQ;AACf,UAAM,YAAY,yBAAyB,KAAK,MAAM;AACtD,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,SAAS,WAAW;AAAA,EAC7D;AACA,MAAI,KAAK,OAAO;AACd,UAAM,YAAY,yBAAyB,KAAK,KAAK;AACrD,QAAI,sBAAsB,WAAW;AACnC,4BAAsB;AAAA,QACpB;AAAA,YACI;AAAA;AAAA,MAEN;AACF,0BAAsB,KAAK,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC5D;AACA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,9 +3,9 @@ import type React from 'react';
|
|
|
3
3
|
import type { GlobalAttributesT, XstyledProps } from '@elliemae/ds-props-helpers';
|
|
4
4
|
export declare namespace DSGridT {
|
|
5
5
|
interface RowColBreakpoints {
|
|
6
|
-
small?: string | number[];
|
|
7
|
-
medium?: string | number[];
|
|
8
|
-
large?: string | number[];
|
|
6
|
+
small?: string | number | (string | number)[];
|
|
7
|
+
medium?: string | number | (string | number)[];
|
|
8
|
+
large?: string | number | (string | number)[];
|
|
9
9
|
}
|
|
10
10
|
interface SpanBreakpoints {
|
|
11
11
|
small?: number;
|
|
@@ -31,6 +31,7 @@ export declare namespace DSGridT {
|
|
|
31
31
|
justifyContent?: JustifyPlacement;
|
|
32
32
|
alignItems?: AlignItemsPlacement;
|
|
33
33
|
children?: React.ReactNode;
|
|
34
|
+
withMaxWidthBreakpoints?: boolean;
|
|
34
35
|
}
|
|
35
36
|
interface Props extends Partial<DefaultProps>, OptionalProps, Omit<GlobalAttributesT<HTMLDivElement>, keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>, XstyledProps {
|
|
36
37
|
}
|
|
@@ -52,6 +53,7 @@ export declare namespace DSGridT {
|
|
|
52
53
|
boxShadow?: BoxShadow;
|
|
53
54
|
backgroundColor?: string;
|
|
54
55
|
bg?: string;
|
|
56
|
+
withMaxWidthBreakpoints?: boolean;
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
export declare const defaultProps: DSGridT.DefaultProps;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { css } from '@elliemae/ds-system';
|
|
2
|
+
import type { DSGridT } from '../react-desc-prop-types.js';
|
|
3
|
+
import type { Theme } from '@elliemae/pui-theme';
|
|
4
|
+
type InterpolatedFunctionProps = {
|
|
5
|
+
theme: Theme;
|
|
6
|
+
} & DSGridT.ItemProps;
|
|
7
|
+
export declare const manageColsV2: ({ cols, theme, isSpanParent }: InterpolatedFunctionProps) => ReturnType<typeof css>[];
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { css } from '@elliemae/ds-system';
|
|
2
|
+
import type { DSGridT } from '../react-desc-prop-types.js';
|
|
3
|
+
import type { Theme } from '@elliemae/pui-theme';
|
|
4
|
+
type InterpolatedFunctionProps = {
|
|
5
|
+
theme: Theme;
|
|
6
|
+
} & DSGridT.ItemProps;
|
|
7
|
+
export declare const manageRowsV2: ({ rows, theme, isSpanParent }: InterpolatedFunctionProps) => ReturnType<typeof css>[];
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { css } from '@elliemae/ds-system';
|
|
2
|
+
import type { Theme } from '@elliemae/pui-theme';
|
|
3
|
+
import type { DSGridT } from '../react-desc-prop-types.js';
|
|
4
|
+
type InterpolatedFunctionProps = {
|
|
5
|
+
theme: Theme;
|
|
6
|
+
} & DSGridT.ItemProps;
|
|
7
|
+
export declare const manageSpanParent: ({ isSpanParent, span, theme, }: InterpolatedFunctionProps) => ReturnType<typeof css>[];
|
|
8
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-grid",
|
|
3
|
-
"version": "3.17.0
|
|
3
|
+
"version": "3.17.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Grid",
|
|
6
6
|
"files": [
|
|
@@ -64,11 +64,12 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@xstyled/system": "~3.7.3",
|
|
67
|
-
"@elliemae/ds-props-helpers": "3.17.0
|
|
68
|
-
"@elliemae/ds-system": "3.17.0
|
|
69
|
-
"@elliemae/ds-utilities": "3.17.0
|
|
67
|
+
"@elliemae/ds-props-helpers": "3.17.0",
|
|
68
|
+
"@elliemae/ds-system": "3.17.0",
|
|
69
|
+
"@elliemae/ds-utilities": "3.17.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
+
"@elliemae/pui-theme": "~2.7.0",
|
|
72
73
|
"@testing-library/jest-dom": "~5.16.5",
|
|
73
74
|
"@testing-library/react": "~12.1.3",
|
|
74
75
|
"@testing-library/user-event": "~13.5.0",
|
|
@@ -76,6 +77,7 @@
|
|
|
76
77
|
"styled-components": "~5.3.9"
|
|
77
78
|
},
|
|
78
79
|
"peerDependencies": {
|
|
80
|
+
"@elliemae/pui-theme": "^2.6.0",
|
|
79
81
|
"lodash": "^4.17.21",
|
|
80
82
|
"react": "^17.0.2",
|
|
81
83
|
"react-dom": "^17.0.2",
|