@elliemae/ds-mobile 3.40.0-rc.2 → 3.40.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/MobileContextMenu/MobileContextMenu.js +16 -13
- package/dist/cjs/MobileContextMenu/MobileContextMenu.js.map +2 -2
- package/dist/esm/MobileContextMenu/MobileContextMenu.js +16 -13
- package/dist/esm/MobileContextMenu/MobileContextMenu.js.map +2 -2
- package/dist/types/MobileSelectList/MobileSelectList.d.ts +3 -3
- package/package.json +18 -18
|
@@ -93,7 +93,7 @@ const DSMobileContextMenu = (0, import_ds_system.withTheme)(
|
|
|
93
93
|
backdropZIndex = 1e3,
|
|
94
94
|
zIndex = 1001,
|
|
95
95
|
dataTestid = "mobile-context-menu",
|
|
96
|
-
buttonFooter = null,
|
|
96
|
+
buttonFooter: ButtonFooter = null,
|
|
97
97
|
onApply = import_lodash.noop,
|
|
98
98
|
selecteds: initSelecteds,
|
|
99
99
|
onKeyDown
|
|
@@ -111,12 +111,22 @@ const DSMobileContextMenu = (0, import_ds_system.withTheme)(
|
|
|
111
111
|
else if (singleSelect) setSelectedItems(value);
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
|
-
const handleApply =
|
|
115
|
-
if (
|
|
114
|
+
const handleApply = (e) => {
|
|
115
|
+
if (ButtonFooter?.props?.onClick) ButtonFooter?.props?.onClick?.(e);
|
|
116
116
|
onApply(e, selectedItems);
|
|
117
117
|
};
|
|
118
118
|
const rows = [theme.space.s, 1];
|
|
119
|
-
|
|
119
|
+
const footerProps = {
|
|
120
|
+
containerProps: {
|
|
121
|
+
"data-testid": `${dataTestid}--btn`
|
|
122
|
+
},
|
|
123
|
+
buttonType: "primary",
|
|
124
|
+
size: "l",
|
|
125
|
+
// keeping the binding for legacy code just in case, I have no idea what the intent was here,
|
|
126
|
+
// composition based render-function will have no need for the binding, so only doing the binding for the React.cloneElement scenario
|
|
127
|
+
onClick: (ButtonFooter?.props ?? false) === false ? handleApply : handleApply.bind(ButtonFooter.props)
|
|
128
|
+
};
|
|
129
|
+
if (ButtonFooter) rows.push("56px");
|
|
120
130
|
if (!open) return null;
|
|
121
131
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
122
132
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -149,6 +159,7 @@ const DSMobileContextMenu = (0, import_ds_system.withTheme)(
|
|
|
149
159
|
else if (multiple) isSelected = trueSelected.includes(value);
|
|
150
160
|
return import_react.default.cloneElement(child, {
|
|
151
161
|
value,
|
|
162
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
152
163
|
key: `cm.${ii}`,
|
|
153
164
|
isMulti: multiple,
|
|
154
165
|
singleSelect,
|
|
@@ -157,15 +168,7 @@ const DSMobileContextMenu = (0, import_ds_system.withTheme)(
|
|
|
157
168
|
selectedItems: isGroup ? trueSelected : null
|
|
158
169
|
});
|
|
159
170
|
}) }) }) }),
|
|
160
|
-
|
|
161
|
-
...buttonFooter.props,
|
|
162
|
-
containerProps: {
|
|
163
|
-
"data-testid": `${dataTestid}--btn`
|
|
164
|
-
},
|
|
165
|
-
buttonType: "primary",
|
|
166
|
-
size: "l",
|
|
167
|
-
onClick: handleApply.bind(buttonFooter.props)
|
|
168
|
-
}) })
|
|
171
|
+
ButtonFooter ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_grid.Grid, { pl: "xs", pr: "xs", alignItems: "center", children: import_react.default.isValidElement(ButtonFooter) ? import_react.default.cloneElement(ButtonFooter, footerProps) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonFooter, { ...footerProps }) }) : null
|
|
169
172
|
]
|
|
170
173
|
}
|
|
171
174
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/MobileContextMenu/MobileContextMenu.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-argument, max-params */\n/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines, complexity, @typescript-eslint/no-unsafe-call */\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment */\n/* tslint:disable */\n// @ts-nocheck\n// What's with all the above disables?\n// this is what a legacy 7 year old codebase looks like.\n\nimport React, { useState, useRef, useMemo } from 'react';\nimport { noop } from 'lodash';\nimport { describe, PropTypes } from '@elliemae/ds-props-helpers';\nimport { styled, truncate, withTheme } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSBackdrop } from '@elliemae/ds-backdrop';\nimport { Group } from '@elliemae/ds-shared';\nimport { DSMobileContextMenuGroup as ContextMenuGroup } from './MobileContextMenuGroup.js';\n\nconst StyledContainer = styled(Grid)`\n background: ${(props) => props.theme.colors.neutral['000']};\n z-index: ${(props) => props.zIndex};\n width: ${(props) => `calc(100% - ${props.theme.space.xs})`};\n position: fixed;\n bottom: 0;\n left: ${(props) => props.theme.space.xxs};\n max-height: 90vh;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n box-shadow:\n 0 0px 24px 0 rgba(0, 0, 0, 0.5),\n 0 0px 11px 0 rgba(0, 0, 0, 0.5);\n`;\n\nconst StyledTitle = styled(Grid)`\n font-size: 16px;\n font-weight: ${(props) => props.theme.fontWeights.semibold};\n color: ${(props) => props.theme.colors.neutral['000']};\n ${truncate()}\n\n & > span {\n height: 20px;\n width: 20px;\n }\n\n & > span > svg,\n svg:not([fill]) {\n height: 20px;\n width: 20px;\n fill: ${(props) => props.theme.colors.neutral['000']};\n }\n`;\n\nconst HeaderContainer = styled(Grid)`\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n background: ${(props) => props.theme.colors.brand['600']};\n`;\n\nconst isArr = (prop) => Array.isArray(prop);\n\nconst DSMobileContextMenu = withTheme(\n ({\n open = false,\n title = '',\n multiple = false,\n singleSelect = false,\n onChange = noop,\n onClickOutside = noop,\n children,\n theme,\n backdropZIndex = 1000,\n zIndex = 1001,\n dataTestid = 'mobile-context-menu',\n buttonFooter: ButtonFooter = null,\n onApply = noop,\n selecteds: initSelecteds,\n onKeyDown,\n }) => {\n const [selectedItems, setSelectedItems] = useState([]);\n const trueSelected = useMemo(\n () => (initSelecteds !== undefined ? initSelecteds : [...selectedItems]),\n [initSelecteds, selectedItems],\n );\n const containerRef = useRef(null);\n const handleChange = (value, childProps, event) => {\n onChange(value, childProps, event);\n if (initSelecteds === undefined) {\n if (multiple) setSelectedItems([...value]);\n else if (singleSelect) setSelectedItems(value);\n }\n };\n\n // this function is a mess, it is using \"this\" and invoking the onClick binded,\n // it was somehow working based on handleApply.bind(ButtonFooter.props)\n // which is arguably black magic\n // Converted to arrow function and converted \"this\" to ButtonFooter?.props\n const handleApply = (e) => {\n if (ButtonFooter?.props?.onClick) ButtonFooter?.props?.onClick?.(e);\n onApply(e, selectedItems);\n };\n\n const rows = [theme.space.s, 1];\n\n const footerProps = {\n containerProps: {\n 'data-testid': `${dataTestid}--btn`,\n },\n buttonType: 'primary',\n size: 'l',\n // keeping the binding for legacy code just in case, I have no idea what the intent was here,\n // composition based render-function will have no need for the binding, so only doing the binding for the React.cloneElement scenario\n onClick: (ButtonFooter?.props ?? false) === false ? handleApply : handleApply.bind(ButtonFooter.props),\n };\n if (ButtonFooter) rows.push('56px');\n\n if (!open) return null;\n\n return (\n <>\n <DSBackdrop\n type=\"cover\"\n zIndex={backdropZIndex}\n onClick={(e) => {\n // PUI-4481 prevent click on elements below backdrop\n e.stopPropagation();\n onClickOutside(e);\n }}\n />\n <StyledContainer\n zIndex={zIndex}\n rows={rows}\n innerRef={containerRef}\n data-testid=\"ds-mobile-context-menu\"\n onKeyDown={onKeyDown}\n >\n <HeaderContainer justifyContent=\"center\" alignItems=\"center\" pl=\"xs\" pr=\"xs\">\n <StyledTitle alignItems=\"center\" gutter=\"xxs\" cols={Array(isArr(title) ? title.length : 1).fill('auto')}>\n {title}\n </StyledTitle>\n </HeaderContainer>\n <Grid style={{ overflow: 'hidden' }}>\n <Grid style={{ overflow: 'auto' }}>\n <Group activeValue={trueSelected} multiple={multiple} onChange={handleChange}>\n {React.Children.map(children, (child, ii) => {\n const isGroup =\n child.type === (<ContextMenuGroup />).type ||\n child.type?.name === ContextMenuGroup.componentType ||\n child.type === ContextMenuGroup.type;\n const { onClick = noop } = child.props;\n const value = ii;\n let isSelected;\n if (singleSelect) isSelected = trueSelected === value;\n else if (multiple) isSelected = trueSelected.includes(value);\n return React.cloneElement(child, {\n value,\n // eslint-disable-next-line react/no-array-index-key\n key: `cm.${ii}`,\n isMulti: multiple,\n singleSelect,\n isSelected,\n onClick: !isGroup ? (e) => onClick(e, child.props) : null,\n selectedItems: isGroup ? trueSelected : null,\n });\n })}\n </Group>\n </Grid>\n </Grid>\n {ButtonFooter ? (\n <Grid pl=\"xs\" pr=\"xs\" alignItems=\"center\">\n {React.isValidElement(ButtonFooter) ? (\n React.cloneElement(ButtonFooter, footerProps)\n ) : (\n <ButtonFooter {...footerProps} />\n )}\n </Grid>\n ) : null}\n </StyledContainer>\n </>\n );\n },\n);\n\nconst props = {\n /** toggle open the menu */\n open: PropTypes.bool.description('toggle open the menu'),\n /** context menu title */\n title: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.node])),\n ]).description('context menu title'),\n /** change handler for selectable context menu */\n onChange: PropTypes.func.description('change handler for selectable context menu'),\n /** multi select */\n multiple: PropTypes.bool.description('multi select'),\n /** click outside callback handler */\n onClickOutside: PropTypes.func.description('click outside callback handler'),\n /** array of mobile context menu items */\n children: PropTypes.arrayOf(PropTypes.element).description('array of mobile context menu items'),\n /** z index for overlay div */\n backdropZIndex: PropTypes.number.description('z index for overlay div'),\n /** z index for menu container */\n zIndex: PropTypes.number.description('z index for menu container'),\n /** for e2e tests */\n dataTestid: PropTypes.string.description('for e2e tests'),\n /** bottom button */\n buttonFooter: PropTypes.element.description('bottom button'),\n /** callback */\n onApply: PropTypes.func.description('callback'),\n /** selected elements for multi and single select */\n selecteds: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n PropTypes.number,\n ]).description('selected elements for multi and single select'),\n onKeyDown: PropTypes.func.description('onKeyDown'),\n};\n\nDSMobileContextMenu.displayName = 'DSMobileContextMenu';\nconst DSMobileContextMenuWithSchema = describe(DSMobileContextMenu);\n\nDSMobileContextMenuWithSchema.propTypes = props;\n\nexport { DSMobileContextMenu, DSMobileContextMenuWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["props", "React", "ContextMenuGroup"]
|
|
7
7
|
}
|
|
@@ -59,7 +59,7 @@ const DSMobileContextMenu = withTheme(
|
|
|
59
59
|
backdropZIndex = 1e3,
|
|
60
60
|
zIndex = 1001,
|
|
61
61
|
dataTestid = "mobile-context-menu",
|
|
62
|
-
buttonFooter = null,
|
|
62
|
+
buttonFooter: ButtonFooter = null,
|
|
63
63
|
onApply = noop,
|
|
64
64
|
selecteds: initSelecteds,
|
|
65
65
|
onKeyDown
|
|
@@ -77,12 +77,22 @@ const DSMobileContextMenu = withTheme(
|
|
|
77
77
|
else if (singleSelect) setSelectedItems(value);
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
-
const handleApply =
|
|
81
|
-
if (
|
|
80
|
+
const handleApply = (e) => {
|
|
81
|
+
if (ButtonFooter?.props?.onClick) ButtonFooter?.props?.onClick?.(e);
|
|
82
82
|
onApply(e, selectedItems);
|
|
83
83
|
};
|
|
84
84
|
const rows = [theme.space.s, 1];
|
|
85
|
-
|
|
85
|
+
const footerProps = {
|
|
86
|
+
containerProps: {
|
|
87
|
+
"data-testid": `${dataTestid}--btn`
|
|
88
|
+
},
|
|
89
|
+
buttonType: "primary",
|
|
90
|
+
size: "l",
|
|
91
|
+
// keeping the binding for legacy code just in case, I have no idea what the intent was here,
|
|
92
|
+
// composition based render-function will have no need for the binding, so only doing the binding for the React.cloneElement scenario
|
|
93
|
+
onClick: (ButtonFooter?.props ?? false) === false ? handleApply : handleApply.bind(ButtonFooter.props)
|
|
94
|
+
};
|
|
95
|
+
if (ButtonFooter) rows.push("56px");
|
|
86
96
|
if (!open) return null;
|
|
87
97
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
88
98
|
/* @__PURE__ */ jsx(
|
|
@@ -115,6 +125,7 @@ const DSMobileContextMenu = withTheme(
|
|
|
115
125
|
else if (multiple) isSelected = trueSelected.includes(value);
|
|
116
126
|
return React2.cloneElement(child, {
|
|
117
127
|
value,
|
|
128
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
118
129
|
key: `cm.${ii}`,
|
|
119
130
|
isMulti: multiple,
|
|
120
131
|
singleSelect,
|
|
@@ -123,15 +134,7 @@ const DSMobileContextMenu = withTheme(
|
|
|
123
134
|
selectedItems: isGroup ? trueSelected : null
|
|
124
135
|
});
|
|
125
136
|
}) }) }) }),
|
|
126
|
-
|
|
127
|
-
...buttonFooter.props,
|
|
128
|
-
containerProps: {
|
|
129
|
-
"data-testid": `${dataTestid}--btn`
|
|
130
|
-
},
|
|
131
|
-
buttonType: "primary",
|
|
132
|
-
size: "l",
|
|
133
|
-
onClick: handleApply.bind(buttonFooter.props)
|
|
134
|
-
}) })
|
|
137
|
+
ButtonFooter ? /* @__PURE__ */ jsx(Grid, { pl: "xs", pr: "xs", alignItems: "center", children: React2.isValidElement(ButtonFooter) ? React2.cloneElement(ButtonFooter, footerProps) : /* @__PURE__ */ jsx(ButtonFooter, { ...footerProps }) }) : null
|
|
135
138
|
]
|
|
136
139
|
}
|
|
137
140
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/MobileContextMenu/MobileContextMenu.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-unsafe-argument, max-params */\n/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines, complexity, @typescript-eslint/no-unsafe-call */\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment */\n/* tslint:disable */\n// @ts-nocheck\n// What's with all the above disables?\n// this is what a legacy 7 year old codebase looks like.\n\nimport React, { useState, useRef, useMemo } from 'react';\nimport { noop } from 'lodash';\nimport { describe, PropTypes } from '@elliemae/ds-props-helpers';\nimport { styled, truncate, withTheme } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSBackdrop } from '@elliemae/ds-backdrop';\nimport { Group } from '@elliemae/ds-shared';\nimport { DSMobileContextMenuGroup as ContextMenuGroup } from './MobileContextMenuGroup.js';\n\nconst StyledContainer = styled(Grid)`\n background: ${(props) => props.theme.colors.neutral['000']};\n z-index: ${(props) => props.zIndex};\n width: ${(props) => `calc(100% - ${props.theme.space.xs})`};\n position: fixed;\n bottom: 0;\n left: ${(props) => props.theme.space.xxs};\n max-height: 90vh;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n box-shadow:\n 0 0px 24px 0 rgba(0, 0, 0, 0.5),\n 0 0px 11px 0 rgba(0, 0, 0, 0.5);\n`;\n\nconst StyledTitle = styled(Grid)`\n font-size: 16px;\n font-weight: ${(props) => props.theme.fontWeights.semibold};\n color: ${(props) => props.theme.colors.neutral['000']};\n ${truncate()}\n\n & > span {\n height: 20px;\n width: 20px;\n }\n\n & > span > svg,\n svg:not([fill]) {\n height: 20px;\n width: 20px;\n fill: ${(props) => props.theme.colors.neutral['000']};\n }\n`;\n\nconst HeaderContainer = styled(Grid)`\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n background: ${(props) => props.theme.colors.brand['600']};\n`;\n\nconst isArr = (prop) => Array.isArray(prop);\n\nconst DSMobileContextMenu = withTheme(\n ({\n open = false,\n title = '',\n multiple = false,\n singleSelect = false,\n onChange = noop,\n onClickOutside = noop,\n children,\n theme,\n backdropZIndex = 1000,\n zIndex = 1001,\n dataTestid = 'mobile-context-menu',\n buttonFooter: ButtonFooter = null,\n onApply = noop,\n selecteds: initSelecteds,\n onKeyDown,\n }) => {\n const [selectedItems, setSelectedItems] = useState([]);\n const trueSelected = useMemo(\n () => (initSelecteds !== undefined ? initSelecteds : [...selectedItems]),\n [initSelecteds, selectedItems],\n );\n const containerRef = useRef(null);\n const handleChange = (value, childProps, event) => {\n onChange(value, childProps, event);\n if (initSelecteds === undefined) {\n if (multiple) setSelectedItems([...value]);\n else if (singleSelect) setSelectedItems(value);\n }\n };\n\n // this function is a mess, it is using \"this\" and invoking the onClick binded,\n // it was somehow working based on handleApply.bind(ButtonFooter.props)\n // which is arguably black magic\n // Converted to arrow function and converted \"this\" to ButtonFooter?.props\n const handleApply = (e) => {\n if (ButtonFooter?.props?.onClick) ButtonFooter?.props?.onClick?.(e);\n onApply(e, selectedItems);\n };\n\n const rows = [theme.space.s, 1];\n\n const footerProps = {\n containerProps: {\n 'data-testid': `${dataTestid}--btn`,\n },\n buttonType: 'primary',\n size: 'l',\n // keeping the binding for legacy code just in case, I have no idea what the intent was here,\n // composition based render-function will have no need for the binding, so only doing the binding for the React.cloneElement scenario\n onClick: (ButtonFooter?.props ?? false) === false ? handleApply : handleApply.bind(ButtonFooter.props),\n };\n if (ButtonFooter) rows.push('56px');\n\n if (!open) return null;\n\n return (\n <>\n <DSBackdrop\n type=\"cover\"\n zIndex={backdropZIndex}\n onClick={(e) => {\n // PUI-4481 prevent click on elements below backdrop\n e.stopPropagation();\n onClickOutside(e);\n }}\n />\n <StyledContainer\n zIndex={zIndex}\n rows={rows}\n innerRef={containerRef}\n data-testid=\"ds-mobile-context-menu\"\n onKeyDown={onKeyDown}\n >\n <HeaderContainer justifyContent=\"center\" alignItems=\"center\" pl=\"xs\" pr=\"xs\">\n <StyledTitle alignItems=\"center\" gutter=\"xxs\" cols={Array(isArr(title) ? title.length : 1).fill('auto')}>\n {title}\n </StyledTitle>\n </HeaderContainer>\n <Grid style={{ overflow: 'hidden' }}>\n <Grid style={{ overflow: 'auto' }}>\n <Group activeValue={trueSelected} multiple={multiple} onChange={handleChange}>\n {React.Children.map(children, (child, ii) => {\n const isGroup =\n child.type === (<ContextMenuGroup />).type ||\n child.type?.name === ContextMenuGroup.componentType ||\n child.type === ContextMenuGroup.type;\n const { onClick = noop } = child.props;\n const value = ii;\n let isSelected;\n if (singleSelect) isSelected = trueSelected === value;\n else if (multiple) isSelected = trueSelected.includes(value);\n return React.cloneElement(child, {\n value,\n // eslint-disable-next-line react/no-array-index-key\n key: `cm.${ii}`,\n isMulti: multiple,\n singleSelect,\n isSelected,\n onClick: !isGroup ? (e) => onClick(e, child.props) : null,\n selectedItems: isGroup ? trueSelected : null,\n });\n })}\n </Group>\n </Grid>\n </Grid>\n {ButtonFooter ? (\n <Grid pl=\"xs\" pr=\"xs\" alignItems=\"center\">\n {React.isValidElement(ButtonFooter) ? (\n React.cloneElement(ButtonFooter, footerProps)\n ) : (\n <ButtonFooter {...footerProps} />\n )}\n </Grid>\n ) : null}\n </StyledContainer>\n </>\n );\n },\n);\n\nconst props = {\n /** toggle open the menu */\n open: PropTypes.bool.description('toggle open the menu'),\n /** context menu title */\n title: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.node])),\n ]).description('context menu title'),\n /** change handler for selectable context menu */\n onChange: PropTypes.func.description('change handler for selectable context menu'),\n /** multi select */\n multiple: PropTypes.bool.description('multi select'),\n /** click outside callback handler */\n onClickOutside: PropTypes.func.description('click outside callback handler'),\n /** array of mobile context menu items */\n children: PropTypes.arrayOf(PropTypes.element).description('array of mobile context menu items'),\n /** z index for overlay div */\n backdropZIndex: PropTypes.number.description('z index for overlay div'),\n /** z index for menu container */\n zIndex: PropTypes.number.description('z index for menu container'),\n /** for e2e tests */\n dataTestid: PropTypes.string.description('for e2e tests'),\n /** bottom button */\n buttonFooter: PropTypes.element.description('bottom button'),\n /** callback */\n onApply: PropTypes.func.description('callback'),\n /** selected elements for multi and single select */\n selecteds: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n PropTypes.number,\n ]).description('selected elements for multi and single select'),\n onKeyDown: PropTypes.func.description('onKeyDown'),\n};\n\nDSMobileContextMenu.displayName = 'DSMobileContextMenu';\nconst DSMobileContextMenuWithSchema = describe(DSMobileContextMenu);\n\nDSMobileContextMenuWithSchema.propTypes = props;\n\nexport { DSMobileContextMenu, DSMobileContextMenuWithSchema };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React", "props"]
|
|
7
7
|
}
|
|
@@ -8,12 +8,12 @@ declare const DSMobileSelectList: React.ForwardRefExoticComponent<{
|
|
|
8
8
|
zIndex?: number | undefined;
|
|
9
9
|
header?: null | undefined;
|
|
10
10
|
dataTestid?: string | undefined;
|
|
11
|
-
buttonFooter?: null | undefined;
|
|
12
|
-
onApply?: ((...args: any[]) => void) | undefined;
|
|
13
|
-
selecteds?: never[] | undefined;
|
|
14
11
|
useSearch?: boolean | null | undefined;
|
|
15
12
|
onSearch?: ((...args: any[]) => void) | undefined;
|
|
13
|
+
buttonFooter?: null | undefined;
|
|
16
14
|
ButtonFooter?: ((...args: any[]) => any) | null | undefined;
|
|
15
|
+
onApply?: ((...args: any[]) => void) | undefined;
|
|
16
|
+
selecteds?: never[] | undefined;
|
|
17
17
|
} & {
|
|
18
18
|
theme?: import("styled-components").DefaultTheme | undefined;
|
|
19
19
|
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-mobile",
|
|
3
|
-
"version": "3.40.0
|
|
3
|
+
"version": "3.40.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - System",
|
|
6
6
|
"files": [
|
|
@@ -44,29 +44,29 @@
|
|
|
44
44
|
"prop-types": "~15.8.1",
|
|
45
45
|
"react-window": "~1.8.8",
|
|
46
46
|
"react-window-infinite-loader": "~1.0.8",
|
|
47
|
-
"@elliemae/ds-accordion": "3.40.0
|
|
48
|
-
"@elliemae/ds-backdrop": "3.40.0
|
|
49
|
-
"@elliemae/ds-button
|
|
50
|
-
"@elliemae/ds-
|
|
51
|
-
"@elliemae/ds-
|
|
52
|
-
"@elliemae/ds-form
|
|
53
|
-
"@elliemae/ds-
|
|
54
|
-
"@elliemae/ds-grid": "3.40.0
|
|
55
|
-
"@elliemae/ds-icon": "3.40.0
|
|
56
|
-
"@elliemae/ds-icons": "3.40.0
|
|
57
|
-
"@elliemae/ds-indeterminate-progress-indicator": "3.40.0
|
|
58
|
-
"@elliemae/ds-props-helpers": "3.40.0
|
|
59
|
-
"@elliemae/ds-
|
|
60
|
-
"@elliemae/ds-
|
|
61
|
-
"@elliemae/ds-
|
|
62
|
-
"@elliemae/ds-truncated-expandable-text": "3.40.0
|
|
47
|
+
"@elliemae/ds-accordion": "3.40.0",
|
|
48
|
+
"@elliemae/ds-backdrop": "3.40.0",
|
|
49
|
+
"@elliemae/ds-button": "3.40.0",
|
|
50
|
+
"@elliemae/ds-button-v2": "3.40.0",
|
|
51
|
+
"@elliemae/ds-circular-progress-indicator": "3.40.0",
|
|
52
|
+
"@elliemae/ds-form": "3.40.0",
|
|
53
|
+
"@elliemae/ds-form-checkbox": "3.40.0",
|
|
54
|
+
"@elliemae/ds-grid": "3.40.0",
|
|
55
|
+
"@elliemae/ds-icon": "3.40.0",
|
|
56
|
+
"@elliemae/ds-icons": "3.40.0",
|
|
57
|
+
"@elliemae/ds-indeterminate-progress-indicator": "3.40.0",
|
|
58
|
+
"@elliemae/ds-props-helpers": "3.40.0",
|
|
59
|
+
"@elliemae/ds-shared": "3.40.0",
|
|
60
|
+
"@elliemae/ds-system": "3.40.0",
|
|
61
|
+
"@elliemae/ds-tabs": "3.40.0",
|
|
62
|
+
"@elliemae/ds-truncated-expandable-text": "3.40.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@elliemae/pui-cli": "9.0.0-next.50",
|
|
66
66
|
"@elliemae/pui-theme": "~2.9.3",
|
|
67
67
|
"styled-components": "~5.3.9",
|
|
68
68
|
"styled-system": "~5.1.5",
|
|
69
|
-
"@elliemae/ds-monorepo-devops": "3.40.0
|
|
69
|
+
"@elliemae/ds-monorepo-devops": "3.40.0"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"@elliemae/pui-theme": "~2.9.3",
|