@itcase/ui 1.8.168 → 1.8.170

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.
@@ -10,7 +10,7 @@ var useDevicePropsGenerator = require('./cjs/hooks/useDevicePropsGenerator/useDe
10
10
  var useStyles = require('./cjs/hooks/useStyles/useStyles.js');
11
11
  var Button = require('./Button_cjs_CYWNdPTJ.js');
12
12
  var Icon = require('./Icon_cjs_Xsu3KUlK.js');
13
- var Input = require('./Input_cjs_IhuIPBIq.js');
13
+ var Input = require('./Input_cjs_CJOik_SP.js');
14
14
  var Label = require('./Label_cjs_RHq5CRw5.js');
15
15
  var Text = require('./Text_cjs_DaH5tVvz.js');
16
16
  var _default = require('@itcase/icons/default');
@@ -8,7 +8,7 @@ import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevi
8
8
  import { useStyles } from './hooks/useStyles/useStyles.js';
9
9
  import { B as Button } from './Button_es_Bns3_lNe.js';
10
10
  import { I as Icon } from './Icon_es_B02tKDTb.js';
11
- import { I as Input } from './Input_es_CifTvE3z.js';
11
+ import { I as Input } from './Input_es_Dboktsxf.js';
12
12
  import { L as Label } from './Label_es_CwhSc0UL.js';
13
13
  import { T as Text } from './Text_es_RDU9GLCV.js';
14
14
  import { icons14 } from '@itcase/icons/default';
@@ -213,7 +213,8 @@ const Input = React.forwardRef(function Input(props, ref) {
213
213
  const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, inputConfig, isDisabled);
214
214
  const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
215
215
  const { fillClass, fillHoverClass, borderColorClass, borderColorHoverClass, borderWidthClass, textColorClass, textSizeClass, textWeightClass, caretClass, placeholderTextColorClass, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
216
- return (jsxRuntime.jsx("input", { id: String(id), className: clsx(className, 'input', type === 'number' && 'input_type_number', isDisabled && 'input_state_disabled', (textSizeClass || textColorClass || textWeightClass) && 'text', borderColorClass && `border-color_${borderColorClass}`, borderColorHoverClass && `border-color_hover_${borderColorHoverClass}`, borderWidthClass && `border-width_${borderWidthClass}`, caretClass && `caret-color_${caretClass}`, fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`, placeholderTextColorClass &&
216
+ const fallbackId = React.useId();
217
+ return (jsxRuntime.jsx("input", { id: String(id ?? fallbackId), className: clsx(className, 'input', type === 'number' && 'input_type_number', isDisabled && 'input_state_disabled', (textSizeClass || textColorClass || textWeightClass) && 'text', borderColorClass && `border-color_${borderColorClass}`, borderColorHoverClass && `border-color_hover_${borderColorHoverClass}`, borderWidthClass && `border-width_${borderWidthClass}`, caretClass && `caret-color_${caretClass}`, fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`, placeholderTextColorClass &&
217
218
  `placeholder-text-color_${placeholderTextColorClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, sizeClass && `input_size_${sizeClass}`, textColorClass && `text-color_${textColorClass}`, textColorClass && `text-color_${textColorClass}`, textSizeClass && `text_size_${textSizeClass}`, textWeightClass && `text-weight_${textWeightClass}`, widthClass && `width_${widthClass}`), type: type, ref: ref, autoComplete: autocomplete, "data-test-id": dataTestId || (name ? `${name}Input` : 'input'), disabled: isDisabled, index: index, placeholder: placeholder, readOnly: isReadOnly, value: value, onClick: onClick, onBlur: onBlur, onChange: onChange, onFocus: onFocus, onKeyDown: onKeyDown }));
218
219
  });
219
220
 
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import React from 'react';
2
+ import React, { useId } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { useAppearanceConfig } from './hooks/useAppearanceConfig/useAppearanceConfig.js';
5
5
  import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
@@ -211,7 +211,8 @@ const Input = React.forwardRef(function Input(props, ref) {
211
211
  const appearanceConfig = useAppearanceConfig(appearance, inputConfig, isDisabled);
212
212
  const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
213
213
  const { fillClass, fillHoverClass, borderColorClass, borderColorHoverClass, borderWidthClass, textColorClass, textSizeClass, textWeightClass, caretClass, placeholderTextColorClass, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
214
- return (jsx("input", { id: String(id), className: clsx(className, 'input', type === 'number' && 'input_type_number', isDisabled && 'input_state_disabled', (textSizeClass || textColorClass || textWeightClass) && 'text', borderColorClass && `border-color_${borderColorClass}`, borderColorHoverClass && `border-color_hover_${borderColorHoverClass}`, borderWidthClass && `border-width_${borderWidthClass}`, caretClass && `caret-color_${caretClass}`, fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`, placeholderTextColorClass &&
214
+ const fallbackId = useId();
215
+ return (jsx("input", { id: String(id ?? fallbackId), className: clsx(className, 'input', type === 'number' && 'input_type_number', isDisabled && 'input_state_disabled', (textSizeClass || textColorClass || textWeightClass) && 'text', borderColorClass && `border-color_${borderColorClass}`, borderColorHoverClass && `border-color_hover_${borderColorHoverClass}`, borderWidthClass && `border-width_${borderWidthClass}`, caretClass && `caret-color_${caretClass}`, fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`, placeholderTextColorClass &&
215
216
  `placeholder-text-color_${placeholderTextColorClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, sizeClass && `input_size_${sizeClass}`, textColorClass && `text-color_${textColorClass}`, textColorClass && `text-color_${textColorClass}`, textSizeClass && `text_size_${textSizeClass}`, textWeightClass && `text-weight_${textWeightClass}`, widthClass && `width_${widthClass}`), type: type, ref: ref, autoComplete: autocomplete, "data-test-id": dataTestId || (name ? `${name}Input` : 'input'), disabled: isDisabled, index: index, placeholder: placeholder, readOnly: isReadOnly, value: value, onClick: onClick, onBlur: onBlur, onChange: onChange, onFocus: onFocus, onKeyDown: onKeyDown }));
216
217
  });
217
218
 
@@ -4,7 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var clsx = require('clsx');
6
6
  var reactDadata = require('react-dadata');
7
- var Input = require('../../Input_cjs_IhuIPBIq.js');
7
+ var Input = require('../../Input_cjs_CJOik_SP.js');
8
8
  require('../hooks/useAppearanceConfig/useAppearanceConfig.js');
9
9
  require('../hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
10
10
  require('lodash/camelCase');
@@ -5,7 +5,7 @@ var React = require('react');
5
5
  var clsx = require('clsx');
6
6
  var luxon = require('luxon');
7
7
  var common = require('@itcase/common');
8
- var DatePicker = require('../../DatePicker_cjs_D4cDD52G.js');
8
+ var DatePicker = require('../../DatePicker_cjs_Jt22mPR8.js');
9
9
  var useAppearanceConfig = require('../hooks/useAppearanceConfig/useAppearanceConfig.js');
10
10
  var useDevicePropsGenerator = require('../hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
11
11
  var ChipsGroup = require('../../ChipsGroup_cjs_B182e4c8.js');
@@ -31,7 +31,7 @@ require('../context/UrlAssetPrefix.js');
31
31
  require('../../Link_cjs_qKXVfU8e.js');
32
32
  require('../../Text_cjs_DaH5tVvz.js');
33
33
  require('../../Loader_cjs_CRiUlTC3.js');
34
- require('../../Input_cjs_IhuIPBIq.js');
34
+ require('../../Input_cjs_CJOik_SP.js');
35
35
  require('../../Label_cjs_RHq5CRw5.js');
36
36
  require('@itcase/icons/default');
37
37
  require('lodash/castArray');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var DatePicker = require('../../DatePicker_cjs_D4cDD52G.js');
3
+ var DatePicker = require('../../DatePicker_cjs_Jt22mPR8.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
6
  require('clsx');
@@ -30,7 +30,7 @@ require('../context/UrlAssetPrefix.js');
30
30
  require('../../Link_cjs_qKXVfU8e.js');
31
31
  require('../../Text_cjs_DaH5tVvz.js');
32
32
  require('../../Loader_cjs_CRiUlTC3.js');
33
- require('../../Input_cjs_IhuIPBIq.js');
33
+ require('../../Input_cjs_CJOik_SP.js');
34
34
  require('../../Label_cjs_RHq5CRw5.js');
35
35
  require('@itcase/icons/default');
36
36
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var Input = require('../../Input_cjs_IhuIPBIq.js');
3
+ var Input = require('../../Input_cjs_CJOik_SP.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
6
  require('clsx');
@@ -170,7 +170,9 @@ const Modal = React.forwardRef(function Modal(props, ref) {
170
170
  }, [isOpen, isScrollOnOpen, isSetFocusOnOpen]);
171
171
  // Show modal with children content
172
172
  const openModal = React.useCallback(() => {
173
- setIsOpen(true);
173
+ React.startTransition(() => {
174
+ setIsOpen(true);
175
+ });
174
176
  // Callback
175
177
  if (typeof onOpenModal === 'function') {
176
178
  onOpenModal();
@@ -204,6 +206,12 @@ const Modal = React.forwardRef(function Modal(props, ref) {
204
206
  // Callback
205
207
  onCloseModal && onCloseModal();
206
208
  }, [modalElement, onCloseModal]);
209
+ const handleClickOverlay = React.useCallback(() => {
210
+ if (isCloseOnBlur) {
211
+ closeModal();
212
+ }
213
+ onClickOverlay && onClickOverlay();
214
+ }, [closeModal, isCloseOnBlur, onClickOverlay]);
207
215
  React.useEffect(() => {
208
216
  if (!modalElement) {
209
217
  return;
@@ -221,6 +229,26 @@ const Modal = React.forwardRef(function Modal(props, ref) {
221
229
  addModalProps(element);
222
230
  }
223
231
  }, [addModalProps, className, modalIdQuerySelector]);
232
+ React.useEffect(() => {
233
+ if (!isCloseOnBlur || !isOpen) {
234
+ return;
235
+ }
236
+ const handleClickOutside = (event) => {
237
+ const target = event.target;
238
+ if (!modalElement || !target || !target.isConnected) {
239
+ return;
240
+ }
241
+ const isOutside = !modalElement.contains(target);
242
+ if (isOutside) {
243
+ setIsOpen(false);
244
+ onCloseModal && onCloseModal();
245
+ }
246
+ };
247
+ window.addEventListener('click', handleClickOutside);
248
+ return () => {
249
+ window.removeEventListener('click', handleClickOutside);
250
+ };
251
+ }, [onCloseModal, isCloseOnBlur, isOpen, modalElement]);
224
252
  // Save ref things
225
253
  React.useImperativeHandle(ref, () => ({ modalElement, openModal, closeModal, isOpen }), [isOpen, openModal, closeModal, modalElement]);
226
254
  const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, modalConfig, isDisabled);
@@ -232,9 +260,9 @@ const Modal = React.forwardRef(function Modal(props, ref) {
232
260
  return (modalElement &&
233
261
  ReactDOM.createPortal(
234
262
  // Any valid React child: JSX, strings, arrays, etc.
235
- isOpen ? (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsxs("div", { id: id, className: clsx('modal__content', absoluteHeader && 'modal__content-absolute-header', !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, { width: titleTextWidth, flex: "1", 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",
263
+ isOpen ? (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsxs("div", { id: id, className: clsx('modal__content', absoluteHeader && 'modal__content-absolute-header', !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, children: [(title || closeIcon) && (jsxRuntime.jsxs("div", { className: clsx('modal__header', fillClass && `fill_${fillClass}`), children: [title && (jsxRuntime.jsx(Icon.Title, { width: titleTextWidth, flex: "1", 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",
236
264
  // ref={modalOverlayRef}
237
- fill: overlayFill, opacity: overlayOpacity, isOverlay: isOverlay, onClick: onClickOverlay })] })) : null,
265
+ fill: overlayFill, opacity: overlayOpacity, isOverlay: isOverlay, onClick: handleClickOverlay })] })) : null,
238
266
  // A DOM element
239
267
  modalElement));
240
268
  });
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { useMemo } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { PartySuggestions } from 'react-dadata';
5
- import { I as Input } from '../Input_es_CifTvE3z.js';
5
+ import { I as Input } from '../Input_es_Dboktsxf.js';
6
6
  import '../hooks/useAppearanceConfig/useAppearanceConfig.js';
7
7
  import '../hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
8
8
  import 'lodash/camelCase';
@@ -3,7 +3,7 @@ import { useCallback } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { DateTime } from 'luxon';
5
5
  import { DATE_PERIOD_INTERVALS } from '@itcase/common';
6
- import { D as DatePickerInput } from '../DatePicker_es_BO71h8AR.js';
6
+ import { D as DatePickerInput } from '../DatePicker_es_CbKQCO3U.js';
7
7
  import { useAppearanceConfig } from '../hooks/useAppearanceConfig/useAppearanceConfig.js';
8
8
  import { useDevicePropsGenerator } from '../hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
9
9
  import { b as ChipsGroup, C as Chips } from '../ChipsGroup_es_BflE-5Q3.js';
@@ -29,7 +29,7 @@ import '../context/UrlAssetPrefix.js';
29
29
  import '../Link_es_P2b6ya7P.js';
30
30
  import '../Text_es_RDU9GLCV.js';
31
31
  import '../Loader_es_Dq2-7sn2.js';
32
- import '../Input_es_CifTvE3z.js';
32
+ import '../Input_es_Dboktsxf.js';
33
33
  import '../Label_es_CwhSc0UL.js';
34
34
  import '@itcase/icons/default';
35
35
  import 'lodash/castArray';
@@ -1,4 +1,4 @@
1
- export { D as DatePickerInput, a as datePickerAppearance, d as datePickerConfig } from '../DatePicker_es_BO71h8AR.js';
1
+ export { D as DatePickerInput, a as datePickerAppearance, d as datePickerConfig } from '../DatePicker_es_CbKQCO3U.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import 'clsx';
@@ -28,6 +28,6 @@ import '../context/UrlAssetPrefix.js';
28
28
  import '../Link_es_P2b6ya7P.js';
29
29
  import '../Text_es_RDU9GLCV.js';
30
30
  import '../Loader_es_Dq2-7sn2.js';
31
- import '../Input_es_CifTvE3z.js';
31
+ import '../Input_es_Dboktsxf.js';
32
32
  import '../Label_es_CwhSc0UL.js';
33
33
  import '@itcase/icons/default';
@@ -1,4 +1,4 @@
1
- export { I as Input, a as inputAppearance, i as inputConfig } from '../Input_es_CifTvE3z.js';
1
+ export { I as Input, a as inputAppearance, i as inputConfig } from '../Input_es_Dboktsxf.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import 'clsx';
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import React, { useState, useRef, useCallback, useEffect, useLayoutEffect, useImperativeHandle } from 'react';
2
+ import React, { useState, useRef, useCallback, startTransition, useEffect, useLayoutEffect, useImperativeHandle } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import ReactDOM from 'react-dom';
5
5
  import { icons24, icons32, icons40 } from '@itcase/icons/default';
@@ -168,7 +168,9 @@ const Modal = React.forwardRef(function Modal(props, ref) {
168
168
  }, [isOpen, isScrollOnOpen, isSetFocusOnOpen]);
169
169
  // Show modal with children content
170
170
  const openModal = useCallback(() => {
171
- setIsOpen(true);
171
+ startTransition(() => {
172
+ setIsOpen(true);
173
+ });
172
174
  // Callback
173
175
  if (typeof onOpenModal === 'function') {
174
176
  onOpenModal();
@@ -202,6 +204,12 @@ const Modal = React.forwardRef(function Modal(props, ref) {
202
204
  // Callback
203
205
  onCloseModal && onCloseModal();
204
206
  }, [modalElement, onCloseModal]);
207
+ const handleClickOverlay = useCallback(() => {
208
+ if (isCloseOnBlur) {
209
+ closeModal();
210
+ }
211
+ onClickOverlay && onClickOverlay();
212
+ }, [closeModal, isCloseOnBlur, onClickOverlay]);
205
213
  useEffect(() => {
206
214
  if (!modalElement) {
207
215
  return;
@@ -219,6 +227,26 @@ const Modal = React.forwardRef(function Modal(props, ref) {
219
227
  addModalProps(element);
220
228
  }
221
229
  }, [addModalProps, className, modalIdQuerySelector]);
230
+ useEffect(() => {
231
+ if (!isCloseOnBlur || !isOpen) {
232
+ return;
233
+ }
234
+ const handleClickOutside = (event) => {
235
+ const target = event.target;
236
+ if (!modalElement || !target || !target.isConnected) {
237
+ return;
238
+ }
239
+ const isOutside = !modalElement.contains(target);
240
+ if (isOutside) {
241
+ setIsOpen(false);
242
+ onCloseModal && onCloseModal();
243
+ }
244
+ };
245
+ window.addEventListener('click', handleClickOutside);
246
+ return () => {
247
+ window.removeEventListener('click', handleClickOutside);
248
+ };
249
+ }, [onCloseModal, isCloseOnBlur, isOpen, modalElement]);
222
250
  // Save ref things
223
251
  useImperativeHandle(ref, () => ({ modalElement, openModal, closeModal, isOpen }), [isOpen, openModal, closeModal, modalElement]);
224
252
  const appearanceConfig = useAppearanceConfig(appearance, modalConfig, isDisabled);
@@ -230,9 +258,9 @@ const Modal = React.forwardRef(function Modal(props, ref) {
230
258
  return (modalElement &&
231
259
  ReactDOM.createPortal(
232
260
  // Any valid React child: JSX, strings, arrays, etc.
233
- isOpen ? (jsxs(React.Fragment, { children: [jsxs("div", { id: id, className: clsx('modal__content', absoluteHeader && 'modal__content-absolute-header', !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, { width: titleTextWidth, flex: "1", 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",
261
+ isOpen ? (jsxs(React.Fragment, { children: [jsxs("div", { id: id, className: clsx('modal__content', absoluteHeader && 'modal__content-absolute-header', !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, children: [(title || closeIcon) && (jsxs("div", { className: clsx('modal__header', fillClass && `fill_${fillClass}`), children: [title && (jsx(Title, { width: titleTextWidth, flex: "1", 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",
234
262
  // ref={modalOverlayRef}
235
- fill: overlayFill, opacity: overlayOpacity, isOverlay: isOverlay, onClick: onClickOverlay })] })) : null,
263
+ fill: overlayFill, opacity: overlayOpacity, isOverlay: isOverlay, onClick: handleClickOverlay })] })) : null,
236
264
  // A DOM element
237
265
  modalElement));
238
266
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/ui",
3
- "version": "1.8.168",
3
+ "version": "1.8.170",
4
4
  "description": "UI components (Modal, Loader, Popup, etc)",
5
5
  "keywords": [
6
6
  "Modal",