@elliemae/ds-menu-items-submenu 3.70.0-next.7 → 3.70.0-next.70
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/DSMenuItemsSubmenu.js +10 -6
- package/dist/cjs/DSMenuItemsSubmenu.js.map +2 -2
- package/dist/cjs/package.json +1 -4
- package/dist/cjs/react-desc-prop-types.js.map +2 -2
- package/dist/esm/DSMenuItemsSubmenu.js +11 -7
- package/dist/esm/DSMenuItemsSubmenu.js.map +2 -2
- package/dist/esm/package.json +1 -4
- package/dist/esm/react-desc-prop-types.js.map +2 -2
- package/package.json +13 -13
|
@@ -49,6 +49,7 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
49
49
|
isActive,
|
|
50
50
|
disabled,
|
|
51
51
|
applyAriaDisabled,
|
|
52
|
+
readOnly,
|
|
52
53
|
isSubmenuOpened,
|
|
53
54
|
rightAddon,
|
|
54
55
|
innerRef,
|
|
@@ -68,6 +69,7 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
68
69
|
maxHeight
|
|
69
70
|
}
|
|
70
71
|
} = propsWithDefault;
|
|
72
|
+
const { getOwnerProps } = (0, import_ds_props_helpers.useOwnerProps)(propsWithDefault);
|
|
71
73
|
const [delayedIsOpened, setDelayedIsOpened] = import_react.default.useState(false);
|
|
72
74
|
import_react.default.useEffect(() => {
|
|
73
75
|
setTimeout(() => setDelayedIsOpened(Boolean(isSubmenuOpened)));
|
|
@@ -119,16 +121,17 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
119
121
|
onMouseLeave: onMouseLeaveHandler,
|
|
120
122
|
innerRef,
|
|
121
123
|
disabled,
|
|
122
|
-
"aria-disabled": applyAriaDisabled,
|
|
124
|
+
"aria-disabled": applyAriaDisabled || disabled || readOnly,
|
|
123
125
|
pl: optionsShouldHavePadding ? 40 : 16,
|
|
124
126
|
as: "div",
|
|
125
127
|
"data-type": "submenu",
|
|
128
|
+
getOwnerProps,
|
|
126
129
|
children: [
|
|
127
|
-
Render !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Render, { ...propsWithDefault }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_menu_items_commons.StyledContentWrapper, { cols: gridLayout, gutter: "xxs", alignItems: "center", children: [
|
|
128
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemLabel, { children: label }),
|
|
129
|
-
secondaryLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemSecondaryLabel, { children: secondaryLabel }),
|
|
130
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_menu_items_commons.StyledIconContainer, { children: [
|
|
131
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyledVerticalSeparator, {}),
|
|
130
|
+
Render !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Render, { ...propsWithDefault }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_menu_items_commons.StyledContentWrapper, { cols: gridLayout, gutter: "xxs", alignItems: "center", getOwnerProps, children: [
|
|
131
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemLabel, { getOwnerProps, variant: "b2", component: "span", children: label }),
|
|
132
|
+
secondaryLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyleMenuItemSecondaryLabel, { getOwnerProps, children: secondaryLabel }),
|
|
133
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_menu_items_commons.StyledIconContainer, { getOwnerProps, children: [
|
|
134
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_menu_items_commons.StyledVerticalSeparator, { getOwnerProps }),
|
|
132
135
|
rightAddon === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
133
136
|
import_ds_menu_items_commons.StyledEllipsisButton,
|
|
134
137
|
{
|
|
@@ -136,6 +139,7 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
136
139
|
onClick: onEllipsisClick,
|
|
137
140
|
disabled,
|
|
138
141
|
applyAriaDisabled,
|
|
142
|
+
getOwnerProps,
|
|
139
143
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
140
144
|
import_ds_icons.MoreOptionsVert,
|
|
141
145
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/DSMenuItemsSubmenu.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable complexity */\nimport React from 'react';\nimport { describe, useOwnerProps } from '@elliemae/ds-props-helpers';\nimport { MoreOptionsVert, ChevronRight } from '@elliemae/ds-icons';\nimport {\n StyledGlobalMenuItemWrapper,\n StyledContentWrapper,\n StyleMenuItemLabel,\n StyleMenuItemSecondaryLabel,\n StyledIconContainer,\n StyledVerticalSeparator,\n StyledEllipsisButton,\n} from '@elliemae/ds-menu-items-commons';\nimport { type DSMenuItemsSubmenuT, DSMenuItemsSubmenuPropTypesSchema } from './react-desc-prop-types.js';\nimport { useMenuItemsSubmenu } from './config/useMenuItemsSubmenu.js';\n\nconst DSMenuItemsSubmenu: React.ComponentType<DSMenuItemsSubmenuT.Props> = (props) => {\n const { propsWithDefault, globalProps, xstyledProps, eventHandlers } = useMenuItemsSubmenu(props);\n const {\n dsId,\n label,\n secondaryLabel,\n isActive,\n disabled,\n applyAriaDisabled,\n readOnly,\n isSubmenuOpened,\n rightAddon,\n innerRef,\n wrapperStyles,\n optionsShouldHavePadding,\n render: Render,\n Dropdown,\n dropdownProps: {\n options,\n openedSubmenus,\n onSubmenuToggle,\n selectedOptions,\n onKeyDown,\n onOptionClick,\n onClickOutside,\n minWidth,\n maxHeight,\n },\n } = propsWithDefault;\n\n const { getOwnerProps } = useOwnerProps(propsWithDefault);\n\n // If we don't delay the opening of the poppers, the position will not be placed correctly\n // That why we delay it for the next render using the useEffect hook\n // TODO -- @carusox move this to utilities as a hook\n const [delayedIsOpened, setDelayedIsOpened] = React.useState(false);\n React.useEffect(() => {\n setTimeout(() => setDelayedIsOpened(Boolean(isSubmenuOpened)));\n }, [isSubmenuOpened]);\n\n const gridLayout = React.useMemo(() => {\n const cols = ['auto'];\n if (secondaryLabel !== undefined) cols.push('min-content');\n cols.push('min-content');\n return cols;\n }, [secondaryLabel]);\n\n // We need to exclude minWidth because we have already used it as a key value for the dropdown menu options.\n // i dont think there is a workaround for this at the moment\n // we need a complete refactor in how we build the submenus\n // eslint-disable-next-line no-unused-vars\n const { minWidth: customMinWidth, ...restXStyled } = xstyledProps;\n // eslint-disable-next-line no-unused-vars\n const { onMouseLeave, onMouseEnter, onMouseDown, ...restGlobalAttributes } = globalProps;\n\n const { onMouseEnterHandler, onMouseLeaveHandler, onMouseDownHandler, onEllipsisClick } = eventHandlers;\n\n return (\n <Dropdown\n isOpened={delayedIsOpened}\n options={options ?? []}\n onOptionClick={onOptionClick}\n startPlacementPreference=\"right-start\"\n placementOrderPreference={['right-start', 'right-end', 'left-start', 'left-end']}\n selectedOptions={selectedOptions}\n openedSubmenus={openedSubmenus}\n onSubmenuToggle={onSubmenuToggle}\n onKeyDown={onKeyDown}\n onClickOutside={onClickOutside}\n customOffset={[-4, 1]}\n wrapperStyles={{ ...wrapperStyles, w: '100%' }}\n as=\"li\"\n role=\"option\"\n minWidth={minWidth}\n maxHeight={maxHeight}\n aria-selected={isSubmenuOpened}\n aria-describedby={`dropdownmenu-submenu-${dsId}`}\n data-popover-label={label}\n id={dsId}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onMouseDown={onMouseDownHandler}\n {...restGlobalAttributes}\n {...restXStyled}\n >\n <StyledGlobalMenuItemWrapper\n pr={0}\n isSelected={isSubmenuOpened}\n isActive={isActive}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n innerRef={innerRef}\n disabled={disabled}\n aria-disabled={applyAriaDisabled || disabled || readOnly}\n pl={optionsShouldHavePadding ? 40 : 16}\n as={'div' as keyof React.JSX.IntrinsicElements}\n data-type=\"submenu\"\n getOwnerProps={getOwnerProps}\n >\n {Render !== undefined ? (\n <Render {...propsWithDefault} />\n ) : (\n <StyledContentWrapper cols={gridLayout} gutter=\"xxs\" alignItems=\"center\" getOwnerProps={getOwnerProps}>\n <StyleMenuItemLabel getOwnerProps={getOwnerProps} variant=\"b2\" component=\"span\">\n {label}\n </StyleMenuItemLabel>\n {secondaryLabel !== undefined && (\n <StyleMenuItemSecondaryLabel getOwnerProps={getOwnerProps}>{secondaryLabel}</StyleMenuItemSecondaryLabel>\n )}\n <StyledIconContainer getOwnerProps={getOwnerProps}>\n <StyledVerticalSeparator getOwnerProps={getOwnerProps} />\n {rightAddon === 'ellipsis' ? (\n <StyledEllipsisButton\n tabIndex={-1}\n onClick={onEllipsisClick}\n disabled={disabled}\n applyAriaDisabled={applyAriaDisabled}\n getOwnerProps={getOwnerProps}\n >\n <MoreOptionsVert\n className=\"ds-dropdown-menu-v2-more-options\"\n color={disabled || applyAriaDisabled ? ['neutral', '500'] : ['brand-primary', '600']}\n size=\"s\"\n />\n </StyledEllipsisButton>\n ) : (\n <ChevronRight\n color={disabled || applyAriaDisabled ? ['neutral', '500'] : ['brand-primary', '600']}\n size=\"s\"\n />\n )}\n </StyledIconContainer>\n </StyledContentWrapper>\n )}\n <span id={`dropdownmenu-submenu-${dsId}`} style={{ display: 'none' }}>\n submenu, to open this submenu press the Right Arrow key\n </span>\n </StyledGlobalMenuItemWrapper>\n </Dropdown>\n );\n};\n\nDSMenuItemsSubmenu.displayName = 'DSMenuItemSubmenu';\nconst DSMenuItemsSubmenuWithSchema = describe(DSMenuItemsSubmenu);\nDSMenuItemsSubmenuWithSchema.propTypes = DSMenuItemsSubmenuPropTypesSchema;\n\nexport { DSMenuItemsSubmenu, DSMenuItemsSubmenuWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
package/dist/cjs/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/react-desc-prop-types.ts", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-duplicate-type-constituents */\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,8BAAuE;AAEvE,mCAIO;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-duplicate-type-constituents */\n\nimport type { GlobalAttributesT, XstyledProps, DSPropTypesSchema } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport type { SizingProps } from '@elliemae/ds-system';\nimport {\n type DSMenuItemsCommonsT,\n DSMenuItemsCommonsPropTypes,\n DSMenuItemsCommonsDefaultProps,\n} from '@elliemae/ds-menu-items-commons';\nimport type React from 'react';\nimport type { WeakValidationMap } from 'react';\n\nexport declare namespace DSMenuItemsSubmenuT {\n // typescript inheritance has no syntax support for \"interfaces\", we have to use union types instead...\n export type RequiredProps = DSMenuItemsCommonsT.RequiredProps;\n\n export type DefaultProps = DSMenuItemsCommonsT.DefaultProps & {\n label: string;\n isActive: boolean;\n disabled: boolean;\n applyAriaDisabled: boolean;\n isSubmenuOpened: boolean;\n onSubmenuOpen: React.MouseEventHandler;\n rightAddon: 'ellipsis' | 'chevron';\n optionsShouldHavePadding: boolean;\n Dropdown: React.ComponentType<React.PropsWithChildren<DSMenuItemsSubmenuT.DefaultProps['dropdownProps']>>;\n dropdownProps: {\n options: unknown[];\n onSubmenuToggle: (\n nextOpenedSubmenus: Record<string, boolean>,\n submenu: unknown,\n e: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n openedSubmenus: Record<string, boolean>;\n selectedOptions: Record<string, boolean>;\n onKeyDown: React.KeyboardEventHandler;\n onOptionClick: (\n nextSelectedOptions: Record<string, boolean>,\n clickedOption: unknown,\n e: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n onClickOutside: (e: MouseEvent | React.KeyboardEvent | TouchEvent) => void;\n minWidth: SizingProps['minWidth'];\n maxHeight: SizingProps['maxHeight'];\n [key: string]: unknown;\n };\n };\n\n export type OptionalProps = DSMenuItemsCommonsT.OptionalProps<DSMenuItemsSubmenuT.InternalProps> & {\n secondaryLabel?: string;\n value?: unknown;\n onSubmenuClose?: React.MouseEventHandler;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n onMouseDown?: React.MouseEventHandler;\n };\n\n // each single menu-item is in charge of spreading the GlobalAttributesT & XstyledProps\n // they are NOT inherited from a common element from ds-menu-items-commons\n export interface Props\n extends\n Partial<DefaultProps>,\n OptionalProps,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps | keyof OptionalProps | keyof RequiredProps | keyof XstyledProps\n >,\n XstyledProps,\n RequiredProps {}\n\n export interface InternalProps\n extends\n DefaultProps,\n OptionalProps,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps | keyof OptionalProps | keyof RequiredProps | keyof XstyledProps\n >,\n XstyledProps,\n RequiredProps {}\n}\n\nexport const defaultProps: DSMenuItemsSubmenuT.DefaultProps = {\n ...DSMenuItemsCommonsDefaultProps,\n label: '',\n isActive: false,\n disabled: false,\n applyAriaDisabled: false,\n isSubmenuOpened: false,\n onSubmenuOpen: () => {},\n rightAddon: 'chevron',\n optionsShouldHavePadding: false,\n Dropdown: () => null,\n dropdownProps: {\n options: [],\n onSubmenuToggle: () => {},\n openedSubmenus: {},\n selectedOptions: {},\n onKeyDown: () => {},\n onOptionClick: () => {},\n onClickOutside: () => {},\n minWidth: 'auto',\n maxHeight: 'auto',\n },\n};\n\nexport const DSMenuItemsSubmenuPropTypes: DSPropTypesSchema<DSMenuItemsSubmenuT.InternalProps> = {\n // each single menu-item is in charge of spreading the GlobalAttributesT & XstyledProps\n // they are NOT inherited from a common element from ds-menu-items-commons\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n ...DSMenuItemsCommonsPropTypes,\n\n // TODO - add support to PropTypes.oneOf for typeof number\n // currently PropTypes.oneOf([0, -1]) is not supported\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description(\n 'The tab index of the menu item. for WCAG 2.1 AA compliance only -1 and 0 are allowed.',\n ),\n label: PropTypes.string.description('The label of the menu item.'),\n value: PropTypes.any.description('The value of the menu item.'),\n isActive: PropTypes.bool.description('Whether the menu item is active.').defaultValue(defaultProps.isActive),\n optionsShouldHavePadding: PropTypes.bool\n .description('Whether the menu item should have padding. This is used in the context of a menu with options.')\n .defaultValue(defaultProps.optionsShouldHavePadding),\n secondaryLabel: PropTypes.string.description('The secondary label of the menu item.'),\n isSubmenuOpened: PropTypes.bool\n .description('Whether the submenu is opened or not.')\n .defaultValue(defaultProps.isSubmenuOpened),\n onSubmenuOpen: PropTypes.func.description('Callback fired when the user tries to open the submenu.'),\n onSubmenuClose: PropTypes.func.description('Callback fired when the user tries to close the submenu.'),\n rightAddon: PropTypes.oneOf(['ellipsis', 'chevron']).description(\n 'The visual element to display on the right side of the menu item.',\n ),\n Dropdown: PropTypes.func.description('The Dropdown component to use to render the submenu.'),\n /* TODO - the validation detects \"empty\" even if the object is not empty...\n we need to fix the validator for \"shape\"...\n\n .shape({\n options: PropTypes.arrayOf(PropTypes.any).description('The options to display in the submenu.'),\n onSubmenuToggle: PropTypes.func\n .description(\n 'Callback fired when the user tries to toggle the submenu. It receives the next opened submenus, the submenu and the event.',\n )\n .signature(\n '((nextOpenedSubmenus: Record<string, boolean>, submenu: unknown, e: React.MouseEvent | React.KeyboardEvent) => void)',\n ),\n openedSubmenus: PropTypes.object.description('The opened submenus.'),\n selectedOptions: PropTypes.object.description('The selected options.'),\n onKeyDown: PropTypes.func.description('Callback fired when the user presses a key.'),\n onOptionClick: PropTypes.func\n .description(\n 'Callback fired when the user clicks on an option. It receives the next selected options, the clicked option and the event.',\n )\n .signature(\n '((nextSelectedOptions: Record<string, boolean>, clickedOption: unknown, e: React.MouseEvent | React.KeyboardEvent) => void)',\n ),\n onClickOutside: PropTypes.func\n .description('Callback fired when the user clicks outside the submenu.')\n .signature('((e: MouseEvent | React.KeyboardEvent | TouchEvent) => void)'),\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('The min width of the submenu.'),\n maxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('The max height of the submenu.'),\n })\n */\n dropdownProps: PropTypes.object.description('The props to pass to the Dropdown component.'),\n applyAriaDisabled: PropTypes.bool\n .description(\n 'Whether to apply disabled styling and announce as disabled in SR. CAN STILL RECEIVE FOCUS. PREVENTS ONLY MAIN ACTION.',\n )\n .defaultValue(false),\n};\n\nexport const DSMenuItemsSubmenuPropTypesSchema =\n DSMenuItemsSubmenuPropTypes as unknown as WeakValidationMap<DSMenuItemsSubmenuT.Props>;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,8BAAuE;AAEvE,mCAIO;AA0EA,MAAM,eAAiD;AAAA,EAC5D,GAAG;AAAA,EACH,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,eAAe,MAAM;AAAA,EAAC;AAAA,EACtB,YAAY;AAAA,EACZ,0BAA0B;AAAA,EAC1B,UAAU,MAAM;AAAA,EAChB,eAAe;AAAA,IACb,SAAS,CAAC;AAAA,IACV,iBAAiB,MAAM;AAAA,IAAC;AAAA,IACxB,gBAAgB,CAAC;AAAA,IACjB,iBAAiB,CAAC;AAAA,IAClB,WAAW,MAAM;AAAA,IAAC;AAAA,IAClB,eAAe,MAAM;AAAA,IAAC;AAAA,IACtB,gBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AACF;AAEO,MAAM,8BAAoF;AAAA;AAAA;AAAA,EAG/F,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA;AAAA;AAAA,EAIH,UAAU,kCAAU,UAAU,CAAC,kCAAU,QAAQ,kCAAU,MAAM,CAAC,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EACA,OAAO,kCAAU,OAAO,YAAY,6BAA6B;AAAA,EACjE,OAAO,kCAAU,IAAI,YAAY,6BAA6B;AAAA,EAC9D,UAAU,kCAAU,KAAK,YAAY,kCAAkC,EAAE,aAAa,aAAa,QAAQ;AAAA,EAC3G,0BAA0B,kCAAU,KACjC,YAAY,gGAAgG,EAC5G,aAAa,aAAa,wBAAwB;AAAA,EACrD,gBAAgB,kCAAU,OAAO,YAAY,uCAAuC;AAAA,EACpF,iBAAiB,kCAAU,KACxB,YAAY,uCAAuC,EACnD,aAAa,aAAa,eAAe;AAAA,EAC5C,eAAe,kCAAU,KAAK,YAAY,yDAAyD;AAAA,EACnG,gBAAgB,kCAAU,KAAK,YAAY,0DAA0D;AAAA,EACrG,YAAY,kCAAU,MAAM,CAAC,YAAY,SAAS,CAAC,EAAE;AAAA,IACnD;AAAA,EACF;AAAA,EACA,UAAU,kCAAU,KAAK,YAAY,sDAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8B3F,eAAe,kCAAU,OAAO,YAAY,8CAA8C;AAAA,EAC1F,mBAAmB,kCAAU,KAC1B;AAAA,IACC;AAAA,EACF,EACC,aAAa,KAAK;AACvB;AAEO,MAAM,oCACX;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React2 from "react";
|
|
4
|
-
import { describe } from "@elliemae/ds-props-helpers";
|
|
4
|
+
import { describe, useOwnerProps } from "@elliemae/ds-props-helpers";
|
|
5
5
|
import { MoreOptionsVert, ChevronRight } from "@elliemae/ds-icons";
|
|
6
6
|
import {
|
|
7
7
|
StyledGlobalMenuItemWrapper,
|
|
@@ -23,6 +23,7 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
23
23
|
isActive,
|
|
24
24
|
disabled,
|
|
25
25
|
applyAriaDisabled,
|
|
26
|
+
readOnly,
|
|
26
27
|
isSubmenuOpened,
|
|
27
28
|
rightAddon,
|
|
28
29
|
innerRef,
|
|
@@ -42,6 +43,7 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
42
43
|
maxHeight
|
|
43
44
|
}
|
|
44
45
|
} = propsWithDefault;
|
|
46
|
+
const { getOwnerProps } = useOwnerProps(propsWithDefault);
|
|
45
47
|
const [delayedIsOpened, setDelayedIsOpened] = React2.useState(false);
|
|
46
48
|
React2.useEffect(() => {
|
|
47
49
|
setTimeout(() => setDelayedIsOpened(Boolean(isSubmenuOpened)));
|
|
@@ -93,16 +95,17 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
93
95
|
onMouseLeave: onMouseLeaveHandler,
|
|
94
96
|
innerRef,
|
|
95
97
|
disabled,
|
|
96
|
-
"aria-disabled": applyAriaDisabled,
|
|
98
|
+
"aria-disabled": applyAriaDisabled || disabled || readOnly,
|
|
97
99
|
pl: optionsShouldHavePadding ? 40 : 16,
|
|
98
100
|
as: "div",
|
|
99
101
|
"data-type": "submenu",
|
|
102
|
+
getOwnerProps,
|
|
100
103
|
children: [
|
|
101
|
-
Render !== void 0 ? /* @__PURE__ */ jsx(Render, { ...propsWithDefault }) : /* @__PURE__ */ jsxs(StyledContentWrapper, { cols: gridLayout, gutter: "xxs", alignItems: "center", children: [
|
|
102
|
-
/* @__PURE__ */ jsx(StyleMenuItemLabel, { children: label }),
|
|
103
|
-
secondaryLabel !== void 0 && /* @__PURE__ */ jsx(StyleMenuItemSecondaryLabel, { children: secondaryLabel }),
|
|
104
|
-
/* @__PURE__ */ jsxs(StyledIconContainer, { children: [
|
|
105
|
-
/* @__PURE__ */ jsx(StyledVerticalSeparator, {}),
|
|
104
|
+
Render !== void 0 ? /* @__PURE__ */ jsx(Render, { ...propsWithDefault }) : /* @__PURE__ */ jsxs(StyledContentWrapper, { cols: gridLayout, gutter: "xxs", alignItems: "center", getOwnerProps, children: [
|
|
105
|
+
/* @__PURE__ */ jsx(StyleMenuItemLabel, { getOwnerProps, variant: "b2", component: "span", children: label }),
|
|
106
|
+
secondaryLabel !== void 0 && /* @__PURE__ */ jsx(StyleMenuItemSecondaryLabel, { getOwnerProps, children: secondaryLabel }),
|
|
107
|
+
/* @__PURE__ */ jsxs(StyledIconContainer, { getOwnerProps, children: [
|
|
108
|
+
/* @__PURE__ */ jsx(StyledVerticalSeparator, { getOwnerProps }),
|
|
106
109
|
rightAddon === "ellipsis" ? /* @__PURE__ */ jsx(
|
|
107
110
|
StyledEllipsisButton,
|
|
108
111
|
{
|
|
@@ -110,6 +113,7 @@ const DSMenuItemsSubmenu = (props) => {
|
|
|
110
113
|
onClick: onEllipsisClick,
|
|
111
114
|
disabled,
|
|
112
115
|
applyAriaDisabled,
|
|
116
|
+
getOwnerProps,
|
|
113
117
|
children: /* @__PURE__ */ jsx(
|
|
114
118
|
MoreOptionsVert,
|
|
115
119
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/DSMenuItemsSubmenu.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\nimport React from 'react';\nimport { describe, useOwnerProps } from '@elliemae/ds-props-helpers';\nimport { MoreOptionsVert, ChevronRight } from '@elliemae/ds-icons';\nimport {\n StyledGlobalMenuItemWrapper,\n StyledContentWrapper,\n StyleMenuItemLabel,\n StyleMenuItemSecondaryLabel,\n StyledIconContainer,\n StyledVerticalSeparator,\n StyledEllipsisButton,\n} from '@elliemae/ds-menu-items-commons';\nimport { type DSMenuItemsSubmenuT, DSMenuItemsSubmenuPropTypesSchema } from './react-desc-prop-types.js';\nimport { useMenuItemsSubmenu } from './config/useMenuItemsSubmenu.js';\n\nconst DSMenuItemsSubmenu: React.ComponentType<DSMenuItemsSubmenuT.Props> = (props) => {\n const { propsWithDefault, globalProps, xstyledProps, eventHandlers } = useMenuItemsSubmenu(props);\n const {\n dsId,\n label,\n secondaryLabel,\n isActive,\n disabled,\n applyAriaDisabled,\n readOnly,\n isSubmenuOpened,\n rightAddon,\n innerRef,\n wrapperStyles,\n optionsShouldHavePadding,\n render: Render,\n Dropdown,\n dropdownProps: {\n options,\n openedSubmenus,\n onSubmenuToggle,\n selectedOptions,\n onKeyDown,\n onOptionClick,\n onClickOutside,\n minWidth,\n maxHeight,\n },\n } = propsWithDefault;\n\n const { getOwnerProps } = useOwnerProps(propsWithDefault);\n\n // If we don't delay the opening of the poppers, the position will not be placed correctly\n // That why we delay it for the next render using the useEffect hook\n // TODO -- @carusox move this to utilities as a hook\n const [delayedIsOpened, setDelayedIsOpened] = React.useState(false);\n React.useEffect(() => {\n setTimeout(() => setDelayedIsOpened(Boolean(isSubmenuOpened)));\n }, [isSubmenuOpened]);\n\n const gridLayout = React.useMemo(() => {\n const cols = ['auto'];\n if (secondaryLabel !== undefined) cols.push('min-content');\n cols.push('min-content');\n return cols;\n }, [secondaryLabel]);\n\n // We need to exclude minWidth because we have already used it as a key value for the dropdown menu options.\n // i dont think there is a workaround for this at the moment\n // we need a complete refactor in how we build the submenus\n // eslint-disable-next-line no-unused-vars\n const { minWidth: customMinWidth, ...restXStyled } = xstyledProps;\n // eslint-disable-next-line no-unused-vars\n const { onMouseLeave, onMouseEnter, onMouseDown, ...restGlobalAttributes } = globalProps;\n\n const { onMouseEnterHandler, onMouseLeaveHandler, onMouseDownHandler, onEllipsisClick } = eventHandlers;\n\n return (\n <Dropdown\n isOpened={delayedIsOpened}\n options={options ?? []}\n onOptionClick={onOptionClick}\n startPlacementPreference=\"right-start\"\n placementOrderPreference={['right-start', 'right-end', 'left-start', 'left-end']}\n selectedOptions={selectedOptions}\n openedSubmenus={openedSubmenus}\n onSubmenuToggle={onSubmenuToggle}\n onKeyDown={onKeyDown}\n onClickOutside={onClickOutside}\n customOffset={[-4, 1]}\n wrapperStyles={{ ...wrapperStyles, w: '100%' }}\n as=\"li\"\n role=\"option\"\n minWidth={minWidth}\n maxHeight={maxHeight}\n aria-selected={isSubmenuOpened}\n aria-describedby={`dropdownmenu-submenu-${dsId}`}\n data-popover-label={label}\n id={dsId}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onMouseDown={onMouseDownHandler}\n {...restGlobalAttributes}\n {...restXStyled}\n >\n <StyledGlobalMenuItemWrapper\n pr={0}\n isSelected={isSubmenuOpened}\n isActive={isActive}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n innerRef={innerRef}\n disabled={disabled}\n aria-disabled={applyAriaDisabled || disabled || readOnly}\n pl={optionsShouldHavePadding ? 40 : 16}\n as={'div' as keyof React.JSX.IntrinsicElements}\n data-type=\"submenu\"\n getOwnerProps={getOwnerProps}\n >\n {Render !== undefined ? (\n <Render {...propsWithDefault} />\n ) : (\n <StyledContentWrapper cols={gridLayout} gutter=\"xxs\" alignItems=\"center\" getOwnerProps={getOwnerProps}>\n <StyleMenuItemLabel getOwnerProps={getOwnerProps} variant=\"b2\" component=\"span\">\n {label}\n </StyleMenuItemLabel>\n {secondaryLabel !== undefined && (\n <StyleMenuItemSecondaryLabel getOwnerProps={getOwnerProps}>{secondaryLabel}</StyleMenuItemSecondaryLabel>\n )}\n <StyledIconContainer getOwnerProps={getOwnerProps}>\n <StyledVerticalSeparator getOwnerProps={getOwnerProps} />\n {rightAddon === 'ellipsis' ? (\n <StyledEllipsisButton\n tabIndex={-1}\n onClick={onEllipsisClick}\n disabled={disabled}\n applyAriaDisabled={applyAriaDisabled}\n getOwnerProps={getOwnerProps}\n >\n <MoreOptionsVert\n className=\"ds-dropdown-menu-v2-more-options\"\n color={disabled || applyAriaDisabled ? ['neutral', '500'] : ['brand-primary', '600']}\n size=\"s\"\n />\n </StyledEllipsisButton>\n ) : (\n <ChevronRight\n color={disabled || applyAriaDisabled ? ['neutral', '500'] : ['brand-primary', '600']}\n size=\"s\"\n />\n )}\n </StyledIconContainer>\n </StyledContentWrapper>\n )}\n <span id={`dropdownmenu-submenu-${dsId}`} style={{ display: 'none' }}>\n submenu, to open this submenu press the Right Arrow key\n </span>\n </StyledGlobalMenuItemWrapper>\n </Dropdown>\n );\n};\n\nDSMenuItemsSubmenu.displayName = 'DSMenuItemSubmenu';\nconst DSMenuItemsSubmenuWithSchema = describe(DSMenuItemsSubmenu);\nDSMenuItemsSubmenuWithSchema.propTypes = DSMenuItemsSubmenuPropTypesSchema;\n\nexport { DSMenuItemsSubmenu, DSMenuItemsSubmenuWithSchema };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
package/dist/esm/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/react-desc-prop-types.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-duplicate-type-constituents */\n
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACGvB,SAAS,WAAW,2BAA2B,wBAAwB;AAEvE;AAAA,EAEE;AAAA,EACA;AAAA,OACK;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-duplicate-type-constituents */\n\nimport type { GlobalAttributesT, XstyledProps, DSPropTypesSchema } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport type { SizingProps } from '@elliemae/ds-system';\nimport {\n type DSMenuItemsCommonsT,\n DSMenuItemsCommonsPropTypes,\n DSMenuItemsCommonsDefaultProps,\n} from '@elliemae/ds-menu-items-commons';\nimport type React from 'react';\nimport type { WeakValidationMap } from 'react';\n\nexport declare namespace DSMenuItemsSubmenuT {\n // typescript inheritance has no syntax support for \"interfaces\", we have to use union types instead...\n export type RequiredProps = DSMenuItemsCommonsT.RequiredProps;\n\n export type DefaultProps = DSMenuItemsCommonsT.DefaultProps & {\n label: string;\n isActive: boolean;\n disabled: boolean;\n applyAriaDisabled: boolean;\n isSubmenuOpened: boolean;\n onSubmenuOpen: React.MouseEventHandler;\n rightAddon: 'ellipsis' | 'chevron';\n optionsShouldHavePadding: boolean;\n Dropdown: React.ComponentType<React.PropsWithChildren<DSMenuItemsSubmenuT.DefaultProps['dropdownProps']>>;\n dropdownProps: {\n options: unknown[];\n onSubmenuToggle: (\n nextOpenedSubmenus: Record<string, boolean>,\n submenu: unknown,\n e: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n openedSubmenus: Record<string, boolean>;\n selectedOptions: Record<string, boolean>;\n onKeyDown: React.KeyboardEventHandler;\n onOptionClick: (\n nextSelectedOptions: Record<string, boolean>,\n clickedOption: unknown,\n e: React.MouseEvent | React.KeyboardEvent,\n ) => void;\n onClickOutside: (e: MouseEvent | React.KeyboardEvent | TouchEvent) => void;\n minWidth: SizingProps['minWidth'];\n maxHeight: SizingProps['maxHeight'];\n [key: string]: unknown;\n };\n };\n\n export type OptionalProps = DSMenuItemsCommonsT.OptionalProps<DSMenuItemsSubmenuT.InternalProps> & {\n secondaryLabel?: string;\n value?: unknown;\n onSubmenuClose?: React.MouseEventHandler;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n onMouseDown?: React.MouseEventHandler;\n };\n\n // each single menu-item is in charge of spreading the GlobalAttributesT & XstyledProps\n // they are NOT inherited from a common element from ds-menu-items-commons\n export interface Props\n extends\n Partial<DefaultProps>,\n OptionalProps,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps | keyof OptionalProps | keyof RequiredProps | keyof XstyledProps\n >,\n XstyledProps,\n RequiredProps {}\n\n export interface InternalProps\n extends\n DefaultProps,\n OptionalProps,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n keyof DefaultProps | keyof OptionalProps | keyof RequiredProps | keyof XstyledProps\n >,\n XstyledProps,\n RequiredProps {}\n}\n\nexport const defaultProps: DSMenuItemsSubmenuT.DefaultProps = {\n ...DSMenuItemsCommonsDefaultProps,\n label: '',\n isActive: false,\n disabled: false,\n applyAriaDisabled: false,\n isSubmenuOpened: false,\n onSubmenuOpen: () => {},\n rightAddon: 'chevron',\n optionsShouldHavePadding: false,\n Dropdown: () => null,\n dropdownProps: {\n options: [],\n onSubmenuToggle: () => {},\n openedSubmenus: {},\n selectedOptions: {},\n onKeyDown: () => {},\n onOptionClick: () => {},\n onClickOutside: () => {},\n minWidth: 'auto',\n maxHeight: 'auto',\n },\n};\n\nexport const DSMenuItemsSubmenuPropTypes: DSPropTypesSchema<DSMenuItemsSubmenuT.InternalProps> = {\n // each single menu-item is in charge of spreading the GlobalAttributesT & XstyledProps\n // they are NOT inherited from a common element from ds-menu-items-commons\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n ...DSMenuItemsCommonsPropTypes,\n\n // TODO - add support to PropTypes.oneOf for typeof number\n // currently PropTypes.oneOf([0, -1]) is not supported\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description(\n 'The tab index of the menu item. for WCAG 2.1 AA compliance only -1 and 0 are allowed.',\n ),\n label: PropTypes.string.description('The label of the menu item.'),\n value: PropTypes.any.description('The value of the menu item.'),\n isActive: PropTypes.bool.description('Whether the menu item is active.').defaultValue(defaultProps.isActive),\n optionsShouldHavePadding: PropTypes.bool\n .description('Whether the menu item should have padding. This is used in the context of a menu with options.')\n .defaultValue(defaultProps.optionsShouldHavePadding),\n secondaryLabel: PropTypes.string.description('The secondary label of the menu item.'),\n isSubmenuOpened: PropTypes.bool\n .description('Whether the submenu is opened or not.')\n .defaultValue(defaultProps.isSubmenuOpened),\n onSubmenuOpen: PropTypes.func.description('Callback fired when the user tries to open the submenu.'),\n onSubmenuClose: PropTypes.func.description('Callback fired when the user tries to close the submenu.'),\n rightAddon: PropTypes.oneOf(['ellipsis', 'chevron']).description(\n 'The visual element to display on the right side of the menu item.',\n ),\n Dropdown: PropTypes.func.description('The Dropdown component to use to render the submenu.'),\n /* TODO - the validation detects \"empty\" even if the object is not empty...\n we need to fix the validator for \"shape\"...\n\n .shape({\n options: PropTypes.arrayOf(PropTypes.any).description('The options to display in the submenu.'),\n onSubmenuToggle: PropTypes.func\n .description(\n 'Callback fired when the user tries to toggle the submenu. It receives the next opened submenus, the submenu and the event.',\n )\n .signature(\n '((nextOpenedSubmenus: Record<string, boolean>, submenu: unknown, e: React.MouseEvent | React.KeyboardEvent) => void)',\n ),\n openedSubmenus: PropTypes.object.description('The opened submenus.'),\n selectedOptions: PropTypes.object.description('The selected options.'),\n onKeyDown: PropTypes.func.description('Callback fired when the user presses a key.'),\n onOptionClick: PropTypes.func\n .description(\n 'Callback fired when the user clicks on an option. It receives the next selected options, the clicked option and the event.',\n )\n .signature(\n '((nextSelectedOptions: Record<string, boolean>, clickedOption: unknown, e: React.MouseEvent | React.KeyboardEvent) => void)',\n ),\n onClickOutside: PropTypes.func\n .description('Callback fired when the user clicks outside the submenu.')\n .signature('((e: MouseEvent | React.KeyboardEvent | TouchEvent) => void)'),\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('The min width of the submenu.'),\n maxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).description('The max height of the submenu.'),\n })\n */\n dropdownProps: PropTypes.object.description('The props to pass to the Dropdown component.'),\n applyAriaDisabled: PropTypes.bool\n .description(\n 'Whether to apply disabled styling and announce as disabled in SR. CAN STILL RECEIVE FOCUS. PREVENTS ONLY MAIN ACTION.',\n )\n .defaultValue(false),\n};\n\nexport const DSMenuItemsSubmenuPropTypesSchema =\n DSMenuItemsSubmenuPropTypes as unknown as WeakValidationMap<DSMenuItemsSubmenuT.Props>;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACGvB,SAAS,WAAW,2BAA2B,wBAAwB;AAEvE;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AA0EA,MAAM,eAAiD;AAAA,EAC5D,GAAG;AAAA,EACH,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,eAAe,MAAM;AAAA,EAAC;AAAA,EACtB,YAAY;AAAA,EACZ,0BAA0B;AAAA,EAC1B,UAAU,MAAM;AAAA,EAChB,eAAe;AAAA,IACb,SAAS,CAAC;AAAA,IACV,iBAAiB,MAAM;AAAA,IAAC;AAAA,IACxB,gBAAgB,CAAC;AAAA,IACjB,iBAAiB,CAAC;AAAA,IAClB,WAAW,MAAM;AAAA,IAAC;AAAA,IAClB,eAAe,MAAM;AAAA,IAAC;AAAA,IACtB,gBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AACF;AAEO,MAAM,8BAAoF;AAAA;AAAA;AAAA,EAG/F,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA;AAAA;AAAA,EAIH,UAAU,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EACA,OAAO,UAAU,OAAO,YAAY,6BAA6B;AAAA,EACjE,OAAO,UAAU,IAAI,YAAY,6BAA6B;AAAA,EAC9D,UAAU,UAAU,KAAK,YAAY,kCAAkC,EAAE,aAAa,aAAa,QAAQ;AAAA,EAC3G,0BAA0B,UAAU,KACjC,YAAY,gGAAgG,EAC5G,aAAa,aAAa,wBAAwB;AAAA,EACrD,gBAAgB,UAAU,OAAO,YAAY,uCAAuC;AAAA,EACpF,iBAAiB,UAAU,KACxB,YAAY,uCAAuC,EACnD,aAAa,aAAa,eAAe;AAAA,EAC5C,eAAe,UAAU,KAAK,YAAY,yDAAyD;AAAA,EACnG,gBAAgB,UAAU,KAAK,YAAY,0DAA0D;AAAA,EACrG,YAAY,UAAU,MAAM,CAAC,YAAY,SAAS,CAAC,EAAE;AAAA,IACnD;AAAA,EACF;AAAA,EACA,UAAU,UAAU,KAAK,YAAY,sDAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8B3F,eAAe,UAAU,OAAO,YAAY,8CAA8C;AAAA,EAC1F,mBAAmB,UAAU,KAC1B;AAAA,IACC;AAAA,EACF,EACC,aAAa,KAAK;AACvB;AAEO,MAAM,oCACX;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-menu-items-submenu",
|
|
3
|
-
"version": "3.70.0-next.
|
|
3
|
+
"version": "3.70.0-next.70",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Menu Items Submenu",
|
|
6
6
|
"files": [
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://
|
|
25
|
+
"url": "https://github.com/intcx/PLATFORM-UI.dimsum.git"
|
|
26
26
|
},
|
|
27
27
|
"engines": {
|
|
28
28
|
"pnpm": ">=9",
|
|
@@ -36,26 +36,26 @@
|
|
|
36
36
|
"indent": 4
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@elliemae/ds-
|
|
40
|
-
"@elliemae/ds-icons": "3.70.0-next.
|
|
41
|
-
"@elliemae/ds-
|
|
42
|
-
"@elliemae/ds-
|
|
43
|
-
"@elliemae/ds-
|
|
39
|
+
"@elliemae/ds-menu-items-commons": "3.70.0-next.70",
|
|
40
|
+
"@elliemae/ds-icons": "3.70.0-next.70",
|
|
41
|
+
"@elliemae/ds-system": "3.70.0-next.70",
|
|
42
|
+
"@elliemae/ds-props-helpers": "3.70.0-next.70",
|
|
43
|
+
"@elliemae/ds-grid": "3.70.0-next.70"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"jest": "^30.0.0",
|
|
47
|
-
"lodash-es": "^4.
|
|
48
|
-
"styled-components": "~5.3.
|
|
49
|
-
"@elliemae/ds-monorepo-devops": "3.70.0-next.
|
|
47
|
+
"lodash-es": "^4.18.1",
|
|
48
|
+
"styled-components": "~5.3.11",
|
|
49
|
+
"@elliemae/ds-monorepo-devops": "3.70.0-next.70"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@testing-library/jest-dom": "^6.6.3",
|
|
53
53
|
"@testing-library/react": "^16.0.1",
|
|
54
54
|
"@testing-library/user-event": "~14.6.1",
|
|
55
|
-
"lodash-es": "^4.
|
|
55
|
+
"lodash-es": "^4.18.1",
|
|
56
56
|
"react": "^18.3.1",
|
|
57
57
|
"react-dom": "^18.3.1",
|
|
58
|
-
"styled-components": "~5.3.
|
|
58
|
+
"styled-components": "~5.3.11"
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public",
|
|
@@ -70,4 +70,4 @@
|
|
|
70
70
|
"build": "cross-env NODE_ENV=production node ../../../scripts/build/build.mjs",
|
|
71
71
|
"checkDeps": "npx -yes ../../util/ds-codemods check-missing-packages --projectFolderPath=\"./\" --ignorePackagesGlobPattern=\"\" --ignoreFilesGlobPattern=\"**/test-ables/*,**/tests/*\""
|
|
72
72
|
}
|
|
73
|
-
}
|
|
73
|
+
}
|