@itcase/ui 1.8.132 → 1.8.134
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/components/MenuItem.js +3 -3
- package/dist/cjs/components/Modal.js +2 -2
- package/dist/components/MenuItem.js +3 -3
- package/dist/components/Modal.js +2 -2
- package/dist/css/components/MenuItem/MenuItem.css +17 -7
- package/dist/css/components/Modal/Modal.css +24 -17
- package/dist/css/styles/alignment/alignment.css +2 -0
- package/dist/css/styles/bundle.css +2 -0
- package/package.json +3 -3
|
@@ -219,7 +219,7 @@ const menuItemConfig = {
|
|
|
219
219
|
},
|
|
220
220
|
};
|
|
221
221
|
function MenuItem(props) {
|
|
222
|
-
const { appearance, className, label, href, link, LinkComponent, rel, showTooltip, target,
|
|
222
|
+
const { appearance, className, label, easing, href, link, LinkComponent, rel, showTooltip, target, tooltipAppearance, underline, before, after, isActive, isDisabled, onClick, children, } = props;
|
|
223
223
|
const tooltipRef = React.useRef(null);
|
|
224
224
|
const onMouseEnter = React.useCallback(() => {
|
|
225
225
|
if (showTooltip) {
|
|
@@ -233,7 +233,7 @@ function MenuItem(props) {
|
|
|
233
233
|
}, [showTooltip]);
|
|
234
234
|
const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, menuItemConfig, isDisabled);
|
|
235
235
|
const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
|
|
236
|
-
const { directionClass, justifyContentClass, alignClass, alignDirectionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillHoverClass, labelTextActiveColor, labelTextActiveColorHover, labelTextColor, labelTextColorDisabled, labelTextColorHover, labelTextSize, labelWeight, labelWrap, borderColorClass, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc,
|
|
236
|
+
const { directionClass, justifyContentClass, alignClass, alignDirectionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillHoverClass, labelTextActiveColor, labelTextActiveColorHover, labelTextColor, labelTextColorDisabled, labelTextColorHover, labelTextSize, labelWeight, labelWrap, borderColorClass, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, shapeStrengthClass, sizeClass, tooltipFill, tooltipShape, tooltipShapeStrength, tooltipSize, tooltipText, tooltipTextColor, tooltipTextSize, tooltipTitle, tooltipTitleTextColor, typeClass, widthClass, isSkeleton, } = propsGenerator;
|
|
237
237
|
// @ts-expect-error
|
|
238
238
|
const { styles: menuItem } = useStyles.useStyles(props);
|
|
239
239
|
return (jsxRuntime.jsxs("div", { className: clsx('menu-item', easing && `easing_${easing}`, isActive && 'menu-item_state_active', isDisabled && `menu-item_state_disabled`, directionClass && `menu-item_direction_${directionClass}`, className, (iconBefore || iconBeforeSrc || iconAfter || iconAfterSrc) &&
|
|
@@ -244,7 +244,7 @@ function MenuItem(props) {
|
|
|
244
244
|
: fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass
|
|
245
245
|
? `shape-strength_${shapeStrengthClass}`
|
|
246
246
|
: shapeClass === 'rounded' && 'shape-strength_default', typeClass && `menu-item_type_${typeClass}`, widthClass && `width_${widthClass}`, justifyContentClass &&
|
|
247
|
-
`menu-item_justify-content_${justifyContentClass}`, isSkeleton && `menu-item_skeleton`), style: menuItem, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: [jsxRuntime.jsxs(Link.Link, { className: clsx('menu-item__wrapper', alignDirectionClass && `align_${alignDirectionClass}`, alignClass && `align_${alignClass}`), href: link || href, LinkComponent: LinkComponent, rel: rel, target: target, underline: underline, children: [before, children || (jsxRuntime.jsxs(React.Fragment, { children: [(iconBefore || iconBeforeSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('menu-item__icon_before', iconBadgeValue && 'menu-item__icon_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'menu-item__icon_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), label && (jsxRuntime.jsx(Text.Text, { className: "menu-item__label", size: labelTextSize, textColor: labelTextColor, textColorActive: labelTextActiveColor, textColorActiveHover: labelTextActiveColorHover, textColorDisabled: labelTextColorDisabled, textColorHover: labelTextColorHover, textWeight: labelWeight, textWrap: labelWrap, isActive: isActive, isDisabled: isDisabled, children: label })), (iconAfter || iconAfterSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('menu-item__icon_after', iconBadgeValue && 'menu-item__icon_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: "menu-item__icon_after_badge", badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] })), after] }), showTooltip && (jsxRuntime.jsx(Icon.Tooltip, { appearance: tooltipAppearance, className: "menu-item__tooltip", ref: tooltipRef, minWidth: "auto", size: tooltipSize, fill: tooltipFill,
|
|
247
|
+
`menu-item_justify-content_${justifyContentClass}`, isSkeleton && `menu-item_skeleton`), style: menuItem, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: [jsxRuntime.jsxs(Link.Link, { className: clsx('menu-item__wrapper', alignDirectionClass && `align_${alignDirectionClass}`, alignClass && `align_${alignClass}`), href: link || href, LinkComponent: LinkComponent, rel: rel, target: target, underline: underline, children: [before, children || (jsxRuntime.jsxs(React.Fragment, { children: [(iconBefore || iconBeforeSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('menu-item__icon_before', iconBadgeValue && 'menu-item__icon_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'menu-item__icon_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), label && (jsxRuntime.jsx(Text.Text, { className: "menu-item__label", size: labelTextSize, textColor: labelTextColor, textColorActive: labelTextActiveColor, textColorActiveHover: labelTextActiveColorHover, textColorDisabled: labelTextColorDisabled, textColorHover: labelTextColorHover, textWeight: labelWeight, textWrap: labelWrap, isActive: isActive, isDisabled: isDisabled, children: label })), (iconAfter || iconAfterSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('menu-item__icon_after', iconBadgeValue && 'menu-item__icon_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: "menu-item__icon_after_badge", badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] })), after] }), showTooltip && (jsxRuntime.jsx(Icon.Tooltip, { appearance: tooltipAppearance, className: "menu-item__tooltip", ref: tooltipRef, minWidth: "auto", alignment: "right-center", size: tooltipSize, fill: tooltipFill, zIndex: "100", title: tooltipTitle, titleColor: tooltipTitleTextColor, paddingLeft: "2m", text: tooltipText, textColor: tooltipTextColor, textSize: tooltipTextSize,
|
|
248
248
|
// centering="vertical"
|
|
249
249
|
shape: tooltipShape, shapeStrength: tooltipShapeStrength, isTooltipDisableState: true }))] }));
|
|
250
250
|
}
|
|
@@ -137,7 +137,7 @@ const getOrCreateModalElement = (modalQuerySelector, className = '') => {
|
|
|
137
137
|
};
|
|
138
138
|
// Modal component that is an abstraction around the portal API.
|
|
139
139
|
const Modal = React.forwardRef(function Modal(props, ref) {
|
|
140
|
-
const { id, appearance, className, dataTestId, dataTour, title,
|
|
140
|
+
const { id, appearance, className, dataTestId, dataTour, title, modalQuerySelector = '#modal-global', scroll = false, stickyHeader = false, closeIcon, isDisabled, isSkeleton, isCloseOnBlur = true, isOpen: initialIsOpen = false, isOverlay = true, isScrollOnOpen = true, isSetFocusOnOpen = true, onClickOverlay, onCloseModal, onOpenModal, children, } = props;
|
|
141
141
|
// Query DOM element
|
|
142
142
|
const [modalElement, setModalElement] = React.useState(null);
|
|
143
143
|
const [isOpen, setIsOpen] = React.useState(initialIsOpen);
|
|
@@ -228,7 +228,7 @@ const Modal = React.forwardRef(function Modal(props, ref) {
|
|
|
228
228
|
return (modalElement &&
|
|
229
229
|
ReactDOM.createPortal(
|
|
230
230
|
// Any valid React child: JSX, strings, arrays, etc.
|
|
231
|
-
isOpen ? (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsxs("div", { id: id, className: clsx('modal__content',
|
|
231
|
+
isOpen ? (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsxs("div", { id: id, className: clsx('modal__content', !title && !closeIcon && 'modal__content-no-header', fillClass && `fill_${fillClass}`, borderWidthClass && `border-width_${borderWidthClass}`, borderColorClass && `border-color_${borderColorClass}`, borderTypeClass && `border_type_${borderTypeClass}`, shapeClass && `shape_${shapeClass}`, sizeClass && `modal_size_${sizeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, borderColorClass && `border-color_${borderColorClass}`, borderWidthClass && `border-width_${borderWidthClass}`, borderTypeClass && `border_type_${borderTypeClass}`, elevationClass && `elevation_${elevationClass}`, scroll && `modal-scroll_${scroll}`, stickyHeader && 'modal-scroll_header_sticky', isSkeleton && 'modal_skeleton'), ref: modalContentRef, "data-test-id": dataTestId, "data-tour": dataTour, style: modalStyles, tabIndex: 0, onBlur: isCloseOnBlur ? closeModal : undefined, children: [(title || closeIcon) && (jsxRuntime.jsxs("div", { className: clsx('modal__header', fillClass && `fill_${fillClass}`), children: [title && (jsxRuntime.jsx(Icon.Title, { className: "modal__title", width: titleTextWidth, size: titleTextSize, textColor: titleTextColor, textColorHover: titleTextColorHover, textTruncate: titleTextTruncate, textWeight: titleTextWeight, textWrap: titleTextWrap, children: title })), closeIcon && (jsxRuntime.jsx("div", { className: "modal__close", onClick: closeModal, children: jsxRuntime.jsx(Icon.Icon, { appearance: `${closeIconAppearance} ${closeIconAppearanceSize}`, fillSize: closeIconFillSize, iconSize: closeIconSize, shape: closeIconShape, SvgImage: closeIconImage ?? _default.icons24.Action.Close }) }))] })), jsxRuntime.jsx("div", { className: "modal__content-wrapper", children: children })] }), jsxRuntime.jsx(Overlay.Overlay, { className: "modal__overlay",
|
|
232
232
|
// ref={modalOverlayRef}
|
|
233
233
|
fill: overlayFill, opacity: overlayOpacity, isOverlay: isOverlay, onClick: onClickOverlay })] })) : null,
|
|
234
234
|
// A DOM element
|
|
@@ -217,7 +217,7 @@ const menuItemConfig = {
|
|
|
217
217
|
},
|
|
218
218
|
};
|
|
219
219
|
function MenuItem(props) {
|
|
220
|
-
const { appearance, className, label, href, link, LinkComponent, rel, showTooltip, target,
|
|
220
|
+
const { appearance, className, label, easing, href, link, LinkComponent, rel, showTooltip, target, tooltipAppearance, underline, before, after, isActive, isDisabled, onClick, children, } = props;
|
|
221
221
|
const tooltipRef = useRef(null);
|
|
222
222
|
const onMouseEnter = useCallback(() => {
|
|
223
223
|
if (showTooltip) {
|
|
@@ -231,7 +231,7 @@ function MenuItem(props) {
|
|
|
231
231
|
}, [showTooltip]);
|
|
232
232
|
const appearanceConfig = useAppearanceConfig(appearance, menuItemConfig, isDisabled);
|
|
233
233
|
const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
|
|
234
|
-
const { directionClass, justifyContentClass, alignClass, alignDirectionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillHoverClass, labelTextActiveColor, labelTextActiveColorHover, labelTextColor, labelTextColorDisabled, labelTextColorHover, labelTextSize, labelWeight, labelWrap, borderColorClass, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc,
|
|
234
|
+
const { directionClass, justifyContentClass, alignClass, alignDirectionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillHoverClass, labelTextActiveColor, labelTextActiveColorHover, labelTextColor, labelTextColorDisabled, labelTextColorHover, labelTextSize, labelWeight, labelWrap, borderColorClass, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, shapeStrengthClass, sizeClass, tooltipFill, tooltipShape, tooltipShapeStrength, tooltipSize, tooltipText, tooltipTextColor, tooltipTextSize, tooltipTitle, tooltipTitleTextColor, typeClass, widthClass, isSkeleton, } = propsGenerator;
|
|
235
235
|
// @ts-expect-error
|
|
236
236
|
const { styles: menuItem } = useStyles(props);
|
|
237
237
|
return (jsxs("div", { className: clsx('menu-item', easing && `easing_${easing}`, isActive && 'menu-item_state_active', isDisabled && `menu-item_state_disabled`, directionClass && `menu-item_direction_${directionClass}`, className, (iconBefore || iconBeforeSrc || iconAfter || iconAfterSrc) &&
|
|
@@ -242,7 +242,7 @@ function MenuItem(props) {
|
|
|
242
242
|
: fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass
|
|
243
243
|
? `shape-strength_${shapeStrengthClass}`
|
|
244
244
|
: shapeClass === 'rounded' && 'shape-strength_default', typeClass && `menu-item_type_${typeClass}`, widthClass && `width_${widthClass}`, justifyContentClass &&
|
|
245
|
-
`menu-item_justify-content_${justifyContentClass}`, isSkeleton && `menu-item_skeleton`), style: menuItem, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: [jsxs(Link, { className: clsx('menu-item__wrapper', alignDirectionClass && `align_${alignDirectionClass}`, alignClass && `align_${alignClass}`), href: link || href, LinkComponent: LinkComponent, rel: rel, target: target, underline: underline, children: [before, children || (jsxs(React.Fragment, { children: [(iconBefore || iconBeforeSrc) && (jsx(Icon, { className: clsx('menu-item__icon_before', iconBadgeValue && 'menu-item__icon_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'menu-item__icon_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), label && (jsx(Text, { className: "menu-item__label", size: labelTextSize, textColor: labelTextColor, textColorActive: labelTextActiveColor, textColorActiveHover: labelTextActiveColorHover, textColorDisabled: labelTextColorDisabled, textColorHover: labelTextColorHover, textWeight: labelWeight, textWrap: labelWrap, isActive: isActive, isDisabled: isDisabled, children: label })), (iconAfter || iconAfterSrc) && (jsx(Icon, { className: clsx('menu-item__icon_after', iconBadgeValue && 'menu-item__icon_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: "menu-item__icon_after_badge", badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] })), after] }), showTooltip && (jsx(Tooltip, { appearance: tooltipAppearance, className: "menu-item__tooltip", ref: tooltipRef, minWidth: "auto", size: tooltipSize, fill: tooltipFill,
|
|
245
|
+
`menu-item_justify-content_${justifyContentClass}`, isSkeleton && `menu-item_skeleton`), style: menuItem, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: [jsxs(Link, { className: clsx('menu-item__wrapper', alignDirectionClass && `align_${alignDirectionClass}`, alignClass && `align_${alignClass}`), href: link || href, LinkComponent: LinkComponent, rel: rel, target: target, underline: underline, children: [before, children || (jsxs(React.Fragment, { children: [(iconBefore || iconBeforeSrc) && (jsx(Icon, { className: clsx('menu-item__icon_before', iconBadgeValue && 'menu-item__icon_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'menu-item__icon_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), label && (jsx(Text, { className: "menu-item__label", size: labelTextSize, textColor: labelTextColor, textColorActive: labelTextActiveColor, textColorActiveHover: labelTextActiveColorHover, textColorDisabled: labelTextColorDisabled, textColorHover: labelTextColorHover, textWeight: labelWeight, textWrap: labelWrap, isActive: isActive, isDisabled: isDisabled, children: label })), (iconAfter || iconAfterSrc) && (jsx(Icon, { className: clsx('menu-item__icon_after', iconBadgeValue && 'menu-item__icon_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: "menu-item__icon_after_badge", badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] })), after] }), showTooltip && (jsx(Tooltip, { appearance: tooltipAppearance, className: "menu-item__tooltip", ref: tooltipRef, minWidth: "auto", alignment: "right-center", size: tooltipSize, fill: tooltipFill, zIndex: "100", title: tooltipTitle, titleColor: tooltipTitleTextColor, paddingLeft: "2m", text: tooltipText, textColor: tooltipTextColor, textSize: tooltipTextSize,
|
|
246
246
|
// centering="vertical"
|
|
247
247
|
shape: tooltipShape, shapeStrength: tooltipShapeStrength, isTooltipDisableState: true }))] }));
|
|
248
248
|
}
|
package/dist/components/Modal.js
CHANGED
|
@@ -135,7 +135,7 @@ const getOrCreateModalElement = (modalQuerySelector, className = '') => {
|
|
|
135
135
|
};
|
|
136
136
|
// Modal component that is an abstraction around the portal API.
|
|
137
137
|
const Modal = React.forwardRef(function Modal(props, ref) {
|
|
138
|
-
const { id, appearance, className, dataTestId, dataTour, title,
|
|
138
|
+
const { id, appearance, className, dataTestId, dataTour, title, modalQuerySelector = '#modal-global', scroll = false, stickyHeader = false, closeIcon, isDisabled, isSkeleton, isCloseOnBlur = true, isOpen: initialIsOpen = false, isOverlay = true, isScrollOnOpen = true, isSetFocusOnOpen = true, onClickOverlay, onCloseModal, onOpenModal, children, } = props;
|
|
139
139
|
// Query DOM element
|
|
140
140
|
const [modalElement, setModalElement] = useState(null);
|
|
141
141
|
const [isOpen, setIsOpen] = useState(initialIsOpen);
|
|
@@ -226,7 +226,7 @@ const Modal = React.forwardRef(function Modal(props, ref) {
|
|
|
226
226
|
return (modalElement &&
|
|
227
227
|
ReactDOM.createPortal(
|
|
228
228
|
// Any valid React child: JSX, strings, arrays, etc.
|
|
229
|
-
isOpen ? (jsxs(React.Fragment, { children: [jsxs("div", { id: id, className: clsx('modal__content',
|
|
229
|
+
isOpen ? (jsxs(React.Fragment, { children: [jsxs("div", { id: id, className: clsx('modal__content', !title && !closeIcon && 'modal__content-no-header', fillClass && `fill_${fillClass}`, borderWidthClass && `border-width_${borderWidthClass}`, borderColorClass && `border-color_${borderColorClass}`, borderTypeClass && `border_type_${borderTypeClass}`, shapeClass && `shape_${shapeClass}`, sizeClass && `modal_size_${sizeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, borderColorClass && `border-color_${borderColorClass}`, borderWidthClass && `border-width_${borderWidthClass}`, borderTypeClass && `border_type_${borderTypeClass}`, elevationClass && `elevation_${elevationClass}`, scroll && `modal-scroll_${scroll}`, stickyHeader && 'modal-scroll_header_sticky', isSkeleton && 'modal_skeleton'), ref: modalContentRef, "data-test-id": dataTestId, "data-tour": dataTour, style: modalStyles, tabIndex: 0, onBlur: isCloseOnBlur ? closeModal : undefined, children: [(title || closeIcon) && (jsxs("div", { className: clsx('modal__header', fillClass && `fill_${fillClass}`), children: [title && (jsx(Title, { className: "modal__title", width: titleTextWidth, size: titleTextSize, textColor: titleTextColor, textColorHover: titleTextColorHover, textTruncate: titleTextTruncate, textWeight: titleTextWeight, textWrap: titleTextWrap, children: title })), closeIcon && (jsx("div", { className: "modal__close", onClick: closeModal, children: jsx(Icon, { appearance: `${closeIconAppearance} ${closeIconAppearanceSize}`, fillSize: closeIconFillSize, iconSize: closeIconSize, shape: closeIconShape, SvgImage: closeIconImage ?? icons24.Action.Close }) }))] })), jsx("div", { className: "modal__content-wrapper", children: children })] }), jsx(Overlay, { className: "modal__overlay",
|
|
230
230
|
// ref={modalOverlayRef}
|
|
231
231
|
fill: overlayFill, opacity: overlayOpacity, isOverlay: isOverlay, onClick: onClickOverlay })] })) : null,
|
|
232
232
|
// A DOM element
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
.menu-item {
|
|
2
2
|
position: relative;
|
|
3
3
|
display: flex;
|
|
4
|
-
align-items: center;
|
|
5
4
|
&:hover {
|
|
6
5
|
^&__tooltip {
|
|
7
6
|
visibility: visible;
|
|
@@ -16,6 +15,9 @@
|
|
|
16
15
|
display: flex;
|
|
17
16
|
align-items: center;
|
|
18
17
|
align-content: center;
|
|
18
|
+
^&__icon_before {
|
|
19
|
+
height: 100%;
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
22
|
&__label {
|
|
21
23
|
display: flex;
|
|
@@ -23,8 +25,8 @@
|
|
|
23
25
|
flex-grow: 1;
|
|
24
26
|
}
|
|
25
27
|
&__tooltip {
|
|
26
|
-
visibility: hidden;
|
|
27
28
|
position: absolute !important;
|
|
29
|
+
visibility: hidden;
|
|
28
30
|
animation-duration: 0.1s;
|
|
29
31
|
animation-name: menuTooltipHideAnimation;
|
|
30
32
|
}
|
|
@@ -76,8 +78,8 @@
|
|
|
76
78
|
&_$(size) {
|
|
77
79
|
min-height: var(--menu-item-size-$(size)-min-height);
|
|
78
80
|
padding: var(--menu-item-size-$(size)-padding);
|
|
79
|
-
^^&
|
|
80
|
-
|
|
81
|
+
^^&__icon_before {
|
|
82
|
+
padding: var(--menu-item-size-$(size)-icon-padding);
|
|
81
83
|
}
|
|
82
84
|
}
|
|
83
85
|
}
|
|
@@ -125,9 +127,9 @@
|
|
|
125
127
|
}
|
|
126
128
|
|
|
127
129
|
:root {
|
|
128
|
-
--menu-item-size-xxl-padding:
|
|
129
|
-
--menu-item-size-xl-padding:
|
|
130
|
-
--menu-item-size-l-padding:
|
|
130
|
+
--menu-item-size-xxl-padding: 4px 14px;
|
|
131
|
+
--menu-item-size-xl-padding: 4px 10px;
|
|
132
|
+
--menu-item-size-l-padding: 2px 8px;
|
|
131
133
|
--menu-item-size-m-padding: 0 6px;
|
|
132
134
|
--menu-item-size-s-padding: 0 6px;
|
|
133
135
|
--menu-item-size-xs-padding: 0 4px;
|
|
@@ -148,4 +150,12 @@
|
|
|
148
150
|
--menu-item-size-s-min-height: 24px;
|
|
149
151
|
--menu-item-size-xs-min-height: 20px;
|
|
150
152
|
--menu-item-size-xxs-min-height: 16px;
|
|
153
|
+
|
|
154
|
+
--menu-item-size-xxl-icon-padding: 4px 0;
|
|
155
|
+
--menu-item-size-xl-icon-padding: 4px 0;
|
|
156
|
+
--menu-item-size-l-icon-padding: 4px 0;
|
|
157
|
+
--menu-item-size-m-icon-padding: 4px 0;
|
|
158
|
+
--menu-item-size-s-icon-padding: 4px 0;
|
|
159
|
+
--menu-item-size-xs-icon-padding: 4px 0;
|
|
160
|
+
--menu-item-size-xxs-icon-padding: 4px 0;
|
|
151
161
|
}
|
|
@@ -46,14 +46,16 @@
|
|
|
46
46
|
&_size_$(size) {
|
|
47
47
|
min-width: var(--modal-$(size)-min-width);
|
|
48
48
|
min-height: var(--modal-$(size)-min-height);
|
|
49
|
-
padding: var(--modal-$(size)-padding) 0;
|
|
50
49
|
^&__header {
|
|
51
|
-
padding: 0 var(--modal-$(size)-padding);
|
|
52
50
|
gap: var(--modal-$(size)-gap);
|
|
51
|
+
padding: var(--modal-$(size)-header-padding);
|
|
53
52
|
}
|
|
54
|
-
^&__content {
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
^&__content-wrapper {
|
|
54
|
+
padding: var(--modal-$(size)-content-padding);
|
|
55
|
+
}
|
|
56
|
+
&^&__content-no-header {
|
|
57
|
+
^^&__content-wrapper {
|
|
58
|
+
padding: var(--modal-$(size)-content-no-header-padding);
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
}
|
|
@@ -62,26 +64,22 @@
|
|
|
62
64
|
.modal {
|
|
63
65
|
&-scroll {
|
|
64
66
|
&_header_sticky {
|
|
67
|
+
max-height: 80vh;
|
|
68
|
+
overflow: hidden auto;
|
|
65
69
|
^^&__header {
|
|
66
70
|
position: sticky;
|
|
67
71
|
top: 0;
|
|
72
|
+
z-index: 1;
|
|
68
73
|
}
|
|
69
74
|
^^&__content {
|
|
70
75
|
&-wrapper {
|
|
71
76
|
position: relative;
|
|
72
|
-
overflow: hidden auto;
|
|
73
77
|
display: flex;
|
|
74
78
|
flex-direction: column;
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
|
-
&_true
|
|
79
|
-
max-height: 80vh;
|
|
80
|
-
position: relative;
|
|
81
|
-
overflow: hidden auto;
|
|
82
|
-
display: flex;
|
|
83
|
-
flex-direction: column;
|
|
84
|
-
}
|
|
82
|
+
&_true,
|
|
85
83
|
&_vertical {
|
|
86
84
|
max-height: 80vh;
|
|
87
85
|
position: relative;
|
|
@@ -99,23 +97,32 @@
|
|
|
99
97
|
}
|
|
100
98
|
:root {
|
|
101
99
|
--modal-max-width: 500px;
|
|
102
|
-
|
|
100
|
+
|
|
103
101
|
--modal-xl-gap: 24px;
|
|
102
|
+
--modal-xl-header-padding: 24px 24px 0 24px;
|
|
103
|
+
--modal-xl-content-padding: 0 24px 24px 24px;
|
|
104
|
+
--modal-xl-content-no-header-padding: 24px;
|
|
104
105
|
--modal-xl-min-width: 500px;
|
|
105
106
|
--modal-xl-min-height: 240px;
|
|
106
107
|
|
|
107
|
-
--modal-l-padding: 24px;
|
|
108
108
|
--modal-l-gap: 24px;
|
|
109
|
+
--modal-l-header-padding: 24px 24px 0 24px;
|
|
110
|
+
--modal-l-content-padding: 0 24px 24px 24px;
|
|
111
|
+
--modal-l-content-no-header-padding: 24px;
|
|
109
112
|
--modal-l-min-width: 500px;
|
|
110
113
|
--modal-l-min-height: 240px;
|
|
111
114
|
|
|
112
|
-
--modal-m-padding: 24px;
|
|
113
115
|
--modal-m-gap: 24px;
|
|
116
|
+
--modal-m-header-padding: 24px 24px 0 24px;
|
|
117
|
+
--modal-m-content-padding: 0 24px 24px 24px;
|
|
118
|
+
--modal-m-content-no-header-padding: 24px;
|
|
114
119
|
--modal-m-min-width: 500px;
|
|
115
120
|
--modal-m-min-height: 240px;
|
|
116
121
|
|
|
117
|
-
--modal-s-padding: 24px;
|
|
118
122
|
--modal-s-gap: 24px;
|
|
123
|
+
--modal-s-header-padding: 24px 24px 0 24px;
|
|
124
|
+
--modal-s-content-padding: 0 24px 24px 24px;
|
|
125
|
+
--modal-s-content-no-header-padding: 24px;
|
|
119
126
|
--modal-s-min-width: 320px;
|
|
120
127
|
--modal-s-min-height: 240px;
|
|
121
128
|
}
|
|
@@ -322,11 +322,13 @@ div.alignment {
|
|
|
322
322
|
position: absolute;
|
|
323
323
|
top: 50%;
|
|
324
324
|
right: 100%;
|
|
325
|
+
transform: translateY(-50%);
|
|
325
326
|
}
|
|
326
327
|
&_right-center {
|
|
327
328
|
position: absolute;
|
|
328
329
|
left: 100%;
|
|
329
330
|
top: 50%;
|
|
331
|
+
transform: translateY(-50%);
|
|
330
332
|
}
|
|
331
333
|
}
|
|
332
334
|
.blur {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itcase/ui",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.134",
|
|
4
4
|
"description": "UI components (Modal, Loader, Popup, etc)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Modal",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"dependencies": {
|
|
103
103
|
"@emotion/is-prop-valid": "^1.4.0",
|
|
104
104
|
"@itcase/common": "^1.2.32",
|
|
105
|
-
"@itcase/icons": "^1.2.
|
|
105
|
+
"@itcase/icons": "^1.2.23",
|
|
106
106
|
"@itcase/storybook-config": "^1.2.11",
|
|
107
107
|
"@itcase/tokens-am": "^1.1.19",
|
|
108
108
|
"@itcase/tokens-baikal": "^1.1.17",
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"@commitlint/cli": "^19.8.1",
|
|
141
141
|
"@commitlint/config-conventional": "^19.8.1",
|
|
142
142
|
"@itcase/config": "^1.0.57",
|
|
143
|
-
"@itcase/lint": "^1.1.
|
|
143
|
+
"@itcase/lint": "^1.1.62",
|
|
144
144
|
"@itcase/types": "^1.0.45",
|
|
145
145
|
"@rollup/plugin-alias": "^5.1.1",
|
|
146
146
|
"@rollup/plugin-babel": "^6.0.4",
|