@sima-land/ui-nucleons 45.0.0-alpha.34 → 45.0.0-alpha.36
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/autocomplete/autocomplete.d.ts +9 -0
- package/autocomplete/autocomplete.js +38 -4
- package/autocomplete/autocomplete.js.map +1 -1
- package/dropdown/dropdown.m.scss +2 -1
- package/dropdown/utils.d.ts +10 -2
- package/dropdown/utils.js.map +1 -1
- package/file-icon/file-icon.d.ts +3 -2
- package/file-icon/file-icon.js +15 -5
- package/file-icon/file-icon.js.map +1 -1
- package/file-icon/file-icon.m.scss +12 -0
- package/file-icon/types.d.ts +2 -2
- package/package.json +3 -3
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { AutocompleteProps } from './types';
|
|
2
|
+
import { Elements } from '@floating-ui/react';
|
|
2
3
|
/**
|
|
3
4
|
* Поле ввода с подсказками.
|
|
4
5
|
* @param props Свойства.
|
|
5
6
|
* @return Элемент.
|
|
6
7
|
*/
|
|
7
8
|
export declare function Autocomplete({ children, loading, filterOption, dropdownProps, onMenuOpen, onMenuClose, optionsStub, autoComplete, autoFocus, defaultValue, disabled, id, name, onBlur, onChange, onFocus, onInput, placeholder, readOnly, required, type, value, adornmentEnd, baseInputProps, ...restProps }: AutocompleteProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
/**
|
|
10
|
+
* Функция для расчёта высоты выпадающего списка и применения вычисленного значения к элементу.
|
|
11
|
+
* @param input Входящие параметры floating-ui для расчёта.
|
|
12
|
+
*/
|
|
13
|
+
export declare function setDropdownHeight({ availableHeight, elements, }: {
|
|
14
|
+
elements: Elements;
|
|
15
|
+
availableHeight: number;
|
|
16
|
+
}): void;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Autocomplete = Autocomplete;
|
|
7
|
+
exports.setDropdownHeight = setDropdownHeight;
|
|
7
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
9
|
const react_1 = require("react");
|
|
9
10
|
const menu_1 = require("./menu");
|
|
@@ -33,11 +34,10 @@ autoComplete, autoFocus, defaultValue, disabled, id, name, onBlur, onChange, onF
|
|
|
33
34
|
const inputRef = (0, react_1.useRef)(null);
|
|
34
35
|
const viewportRef = (0, react_1.useRef)(null);
|
|
35
36
|
const [needMenu, setNeedMenu] = (0, react_1.useState)(false);
|
|
36
|
-
const { refs, ...floating } = (0, react_2.useFloating)({ open: needMenu, ...(0, dropdown_1.dropdownFloatingConfig)() });
|
|
37
|
-
const floatingStyle = (0, dropdown_1.useDropdownFloatingStyle)({ refs, ...floating });
|
|
38
|
-
const [activeIndex, setActiveIndex] = (0, react_1.useState)(-1);
|
|
39
37
|
const [currentValue, setCurrentValue] = (0, react_1.useState)(() => `${value ?? defaultValue ?? ''}`);
|
|
38
|
+
const [activeIndex, setActiveIndex] = (0, react_1.useState)(-1);
|
|
40
39
|
const items = react_1.Children.toArray(children).filter((item) => utils_1.DropdownItemUtils.is(item) && filterOption(item, currentValue));
|
|
40
|
+
const { floatingStyle, refs } = useFloatingStyle(needMenu, items.length);
|
|
41
41
|
const hasItems = items.length > 0;
|
|
42
42
|
const hasItemsStub = Boolean(optionsStub);
|
|
43
43
|
const hasValue = currentValue.length > 0;
|
|
@@ -153,7 +153,7 @@ autoComplete, autoFocus, defaultValue, disabled, id, name, onBlur, onChange, onF
|
|
|
153
153
|
}, baseInputProps: {
|
|
154
154
|
...baseInputProps,
|
|
155
155
|
onKeyDown: handleKeyDown,
|
|
156
|
-
}, adornmentEnd: typeof adornmentEnd === 'function' ? adornmentEnd({ menuShown }) : adornmentEnd }), menuShown && ((0, jsx_runtime_1.jsx)(portal_1.Portal, { children: (0, jsx_runtime_1.jsx)(lifecycle_1.Lifecycle, { onMount: onMenuOpen, onUnmount: onMenuClose, children: (0, jsx_runtime_1.jsxs)(menu_1.AutocompleteMenu, { ...dropdownProps, rootRef: refs.setFloating, viewportRef: viewportRef, style: { ...floatingStyle, ...dropdownProps?.style }, onDismiss: () => setNeedMenu(false), onMouseDown: event => {
|
|
156
|
+
}, adornmentEnd: typeof adornmentEnd === 'function' ? adornmentEnd({ menuShown }) : adornmentEnd }), menuShown && ((0, jsx_runtime_1.jsx)(portal_1.Portal, { children: (0, jsx_runtime_1.jsx)(lifecycle_1.Lifecycle, { onMount: onMenuOpen, onUnmount: onMenuClose, children: (0, jsx_runtime_1.jsxs)(menu_1.AutocompleteMenu, { ...dropdownProps, className: dropdownProps?.className, rootRef: refs.setFloating, viewportRef: viewportRef, style: { ...floatingStyle, ...dropdownProps?.style }, onDismiss: () => setNeedMenu(false), onMouseDown: event => {
|
|
157
157
|
// предотвращение расфокусировки поля при клике внутри меню
|
|
158
158
|
// необходимо чтобы можно было взяться мышкой за полосу прокрутки
|
|
159
159
|
if (document.activeElement &&
|
|
@@ -173,6 +173,40 @@ autoComplete, autoFocus, defaultValue, disabled, id, name, onBlur, onChange, onF
|
|
|
173
173
|
}
|
|
174
174
|
} }, index))), !loading && items.length === 0 && optionsStub, loading && (0, jsx_runtime_1.jsx)(dropdown_1.DropdownLoading, {})] }) }) }))] }));
|
|
175
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Формирует стили и создаёт ref-ы для меню.
|
|
178
|
+
* @param open Нужно ли выводить меню.
|
|
179
|
+
* @param itemsCount Количество элементов в выпадающем списке.
|
|
180
|
+
* @return Объект со стилями и ref-ами необходимыми для выпадающего меню.
|
|
181
|
+
*/
|
|
182
|
+
function useFloatingStyle(open, itemsCount) {
|
|
183
|
+
const floatingConfig = (0, dropdown_1.dropdownFloatingConfig)();
|
|
184
|
+
const { refs, ...floating } = (0, react_2.useFloating)({
|
|
185
|
+
open,
|
|
186
|
+
...floatingConfig,
|
|
187
|
+
middleware: [...floatingConfig.middleware, (0, react_2.size)(getFloatingSizeOptions, [itemsCount])],
|
|
188
|
+
});
|
|
189
|
+
return { refs, floatingStyle: (0, dropdown_1.useDropdownFloatingStyle)({ refs, ...floating }) };
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Функция для формирования настроек middleware size библиотеки floating-ui.
|
|
193
|
+
* @return Настройки middleware size библиотеки floating-ui.
|
|
194
|
+
*/
|
|
195
|
+
const getFloatingSizeOptions = () => ({
|
|
196
|
+
rootBoundary: 'viewport',
|
|
197
|
+
apply: setDropdownHeight,
|
|
198
|
+
padding: 16,
|
|
199
|
+
});
|
|
200
|
+
/**
|
|
201
|
+
* Функция для расчёта высоты выпадающего списка и применения вычисленного значения к элементу.
|
|
202
|
+
* @param input Входящие параметры floating-ui для расчёта.
|
|
203
|
+
*/
|
|
204
|
+
function setDropdownHeight({ availableHeight, elements, }) {
|
|
205
|
+
elements.floating.style.height = 'auto';
|
|
206
|
+
if (elements.floating.scrollHeight >= availableHeight) {
|
|
207
|
+
elements.floating.style.height = `${availableHeight}px`;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
176
210
|
/**
|
|
177
211
|
* Фильтр вариантов выбора по умолчанию.
|
|
178
212
|
* @param item Вариант из меню.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/autocomplete/autocomplete.tsx"],"names":[],"mappings":";;;;;AA+BA,
|
|
1
|
+
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/autocomplete/autocomplete.tsx"],"names":[],"mappings":"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"}
|
package/dropdown/dropdown.m.scss
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
// задавать можно только максимальную высоту через --dropdown-max-height
|
|
11
11
|
max-height: var(--dropdown-max-height, 376px) !important;
|
|
12
|
-
height: auto
|
|
12
|
+
height: auto;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.inner {
|
|
16
|
+
height: 100%;
|
|
16
17
|
max-height: calc(var(--dropdown-max-height, 376px) - 16px); // вычитаем padding корневого элемента
|
|
17
18
|
}
|
package/dropdown/utils.d.ts
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { RefObject } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { autoUpdate, UseFloatingReturn } from '@floating-ui/react';
|
|
3
3
|
/**
|
|
4
4
|
* Возвращает конфигурацию для `useFloating` по дизайн-гайдам.
|
|
5
5
|
* @return Конфигурация для `useFloating` по дизайн-гайдам.
|
|
6
6
|
*/
|
|
7
|
-
export declare function dropdownFloatingConfig():
|
|
7
|
+
export declare function dropdownFloatingConfig(): {
|
|
8
|
+
whileElementsMounted: typeof autoUpdate;
|
|
9
|
+
placement: "bottom-start";
|
|
10
|
+
middleware: {
|
|
11
|
+
name: string;
|
|
12
|
+
options?: any;
|
|
13
|
+
fn: (state: import("@floating-ui/dom").MiddlewareState) => import("@floating-ui/core").MiddlewareReturn | Promise<import("@floating-ui/core").MiddlewareReturn>;
|
|
14
|
+
}[];
|
|
15
|
+
};
|
|
8
16
|
/**
|
|
9
17
|
* Возвращает стили для элемента с учетом "слоя".
|
|
10
18
|
* @param floating Результат вызова useFloating.
|
package/dropdown/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/dropdown/utils.ts"],"names":[],"mappings":";;AAUA,wDAeC;AAOD,4DAwDC;AAMD,8CAyBC;AAvHD,iCAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/dropdown/utils.ts"],"names":[],"mappings":"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"}
|
package/file-icon/file-icon.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { FileIconProps } from './types';
|
|
1
|
+
import type { FileIconProps } from './types';
|
|
2
|
+
export declare const KNOWN_TYPES: Set<string>;
|
|
2
3
|
/**
|
|
3
4
|
* Иконка файла.
|
|
4
5
|
* @param props Свойства. Поддерживаются свойства <svg />.
|
|
5
6
|
* @return Элемент.
|
|
6
7
|
*/
|
|
7
|
-
export declare function FileIcon({ type,
|
|
8
|
+
export declare function FileIcon({ type, isTypeVisible, ...svgProps }: FileIconProps): import("react/jsx-runtime").JSX.Element;
|
package/file-icon/file-icon.js
CHANGED
|
@@ -3,17 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.KNOWN_TYPES = void 0;
|
|
6
7
|
exports.FileIcon = FileIcon;
|
|
7
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const
|
|
9
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
9
10
|
const file_icon_m_scss_1 = __importDefault(require("./file-icon.m.scss"));
|
|
10
|
-
const
|
|
11
|
-
|
|
11
|
+
const react_1 = require("react");
|
|
12
|
+
exports.KNOWN_TYPES = new Set([
|
|
13
|
+
'avi',
|
|
12
14
|
'doc',
|
|
13
15
|
'docx',
|
|
14
16
|
'heic',
|
|
15
17
|
'jpg',
|
|
16
18
|
'mov',
|
|
19
|
+
'mp3',
|
|
17
20
|
'mp4',
|
|
18
21
|
'pdf',
|
|
19
22
|
'png',
|
|
@@ -29,7 +32,14 @@ const KNOWN_TYPES = new Set([
|
|
|
29
32
|
* @param props Свойства. Поддерживаются свойства <svg />.
|
|
30
33
|
* @return Элемент.
|
|
31
34
|
*/
|
|
32
|
-
function FileIcon({ type,
|
|
33
|
-
|
|
35
|
+
function FileIcon({ type = '', isTypeVisible = typeof type === 'string' && exports.KNOWN_TYPES.has(type.toLowerCase()), ...svgProps }) {
|
|
36
|
+
const placeholder = (0, react_1.useMemo)(() => type === null ? (
|
|
37
|
+
/* иконка Stroked/Cross без обертки в виде <svg /> */
|
|
38
|
+
(0, jsx_runtime_1.jsx)("path", { d: 'M12.7071 4.70711C13.0976 4.31658 13.0976 3.68342 12.7071 3.29289C12.3166 2.90237 11.6834 2.90237 11.2929 3.29289L8 6.58579L4.70711 3.29289C4.31658 2.90237 3.68342 2.90237 3.29289 3.29289C2.90237 3.68342 2.90237 4.31658 3.29289 4.70711L6.58579 8L3.29289 11.2929C2.90237 11.6834 2.90237 12.3166 3.29289 12.7071C3.68342 13.0976 4.31658 13.0976 4.70711 12.7071L8 9.41421L11.2929 12.7071C11.6834 13.0976 12.3166 13.0976 12.7071 12.7071C13.0976 12.3166 13.0976 11.6834 12.7071 11.2929L9.41421 8L12.7071 4.70711Z', fill: '#9e9e9e', transform: 'translate(8,12)' })) : (
|
|
39
|
+
/* заглушка текста */
|
|
40
|
+
(0, jsx_runtime_1.jsxs)("g", { opacity: '0.8', children: [(0, jsx_runtime_1.jsx)("path", { d: 'M9 22H23V24H9V22Z', fill: '#fff' }), (0, jsx_runtime_1.jsx)("path", { d: 'M9 18H19V20H9V18Z', fill: '#fff' })] })), [type]);
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)("svg", { width: '32', height: '32', viewBox: '0 0 32 32', ...svgProps, children: [(0, jsx_runtime_1.jsx)("path", { className: (0, classnames_1.default)(file_icon_m_scss_1.default.main, type === null ? file_icon_m_scss_1.default.broken : file_icon_m_scss_1.default[type.toLowerCase()]), opacity: '0.88', d: 'M6 5C6 3.89543 6.89543 3 8 3H20L26 9V27C26 28.1046 25.1046 29 24 29H8C6.89543 29 6 28.1046 6 27V5Z' }), (0, jsx_runtime_1.jsx)("path", { opacity: '0.32', d: 'M21 9L26 9L20 3L20 8C20 8.55229 20.4477 9 21 9Z', fill: '#fff' }), (0, jsx_runtime_1.jsx)("path", { opacity: '0.24', d: 'M25.1667 9L21 9L26 15L26 9C25.5833 9 25.6269 9 25.1667 9Z', fill: 'black' }), type && isTypeVisible ? (
|
|
42
|
+
/* текст */
|
|
43
|
+
(0, jsx_runtime_1.jsx)("text", { x: '16', y: '23', textAnchor: 'middle', fontSize: '6.5', fontWeight: '700', fill: '#fff', children: type.toUpperCase() })) : (placeholder)] }));
|
|
34
44
|
}
|
|
35
45
|
//# sourceMappingURL=file-icon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-icon.js","sourceRoot":"","sources":["../../src/file-icon/file-icon.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-icon.js","sourceRoot":"","sources":["../../src/file-icon/file-icon.tsx"],"names":[],"mappings":";;;;;;AA6BA,4BAmDC;;AA/ED,4DAA4B;AAC5B,0EAAwC;AACxC,iCAAgC;AAEnB,QAAA,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,EACvB,IAAI,GAAG,EAAE,EACT,aAAa,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,mBAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAC/E,GAAG,QAAQ,EACG;IACd,MAAM,WAAW,GAAG,IAAA,eAAO,EACzB,GAAG,EAAE,CACH,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACd,qDAAqD;IACrD,iCACE,CAAC,EAAC,2fAA2f,EAC7f,IAAI,EAAC,SAAS,EACd,SAAS,EAAC,iBAAiB,GAC3B,CACH,CAAC,CAAC,CAAC;IACF,qBAAqB;IACrB,+BAAG,OAAO,EAAC,KAAK,aACd,iCAAM,CAAC,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,GAAG,EAC1C,iCAAM,CAAC,EAAC,mBAAmB,EAAC,IAAI,EAAC,MAAM,GAAG,IACxC,CACL,EACH,CAAC,IAAI,CAAC,CACP,CAAC;IAEF,OAAO,CACL,iCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,KAAK,QAAQ,aAE1D,iCACE,SAAS,EAAE,IAAA,oBAAE,EAAC,0BAAM,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,0BAAM,CAAC,MAAM,CAAC,CAAC,CAAC,0BAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EACtF,OAAO,EAAC,MAAM,EACd,CAAC,EAAC,oGAAoG,GACtG,EAGF,iCAAM,OAAO,EAAC,MAAM,EAAC,CAAC,EAAC,iDAAiD,EAAC,IAAI,EAAC,MAAM,GAAG,EACvF,iCACE,OAAO,EAAC,MAAM,EACd,CAAC,EAAC,2DAA2D,EAC7D,IAAI,EAAC,OAAO,GACZ,EAED,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC;YACvB,WAAW;YACX,iCAAM,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,QAAQ,EAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,YAChF,IAAI,CAAC,WAAW,EAAE,GACd,CACR,CAAC,CAAC,CAAC,CACF,WAAW,CACZ,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
// ВАЖНО: далее используем цвет именно как резервное значение чтобы иметь возможность переопределения
|
|
8
|
+
.avi {
|
|
9
|
+
fill: var(--file-icon-primary-color, #{colors.$additional-blue-gray});
|
|
10
|
+
}
|
|
11
|
+
|
|
8
12
|
.doc {
|
|
9
13
|
fill: var(--file-icon-primary-color, #{colors.$additional-electric-blue});
|
|
10
14
|
}
|
|
@@ -25,6 +29,10 @@
|
|
|
25
29
|
fill: var(--file-icon-primary-color, #{colors.$additional-blue-gray});
|
|
26
30
|
}
|
|
27
31
|
|
|
32
|
+
.mp3 {
|
|
33
|
+
fill: var(--file-icon-primary-color, #{colors.$additional-blue-gray});
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
.mp4 {
|
|
29
37
|
fill: var(--file-icon-primary-color, #{colors.$additional-blue-gray});
|
|
30
38
|
}
|
|
@@ -60,3 +68,7 @@
|
|
|
60
68
|
.zip {
|
|
61
69
|
fill: var(--file-icon-primary-color, #{colors.$additional-teal});
|
|
62
70
|
}
|
|
71
|
+
|
|
72
|
+
.broken {
|
|
73
|
+
fill: var(--file-icon-primary-color, #{colors.$basic-gray12});
|
|
74
|
+
}
|
package/file-icon/types.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ export interface FileIconStyle extends CSSProperties {
|
|
|
4
4
|
}
|
|
5
5
|
export interface FileIconProps extends Omit<SVGAttributes<SVGSVGElement>, 'type'> {
|
|
6
6
|
/** Тип файла. */
|
|
7
|
-
type?: string;
|
|
7
|
+
type?: string | null;
|
|
8
8
|
/** Нужно ли выводить название типа. */
|
|
9
|
-
|
|
9
|
+
isTypeVisible?: boolean;
|
|
10
10
|
/** Стили. */
|
|
11
11
|
style?: FileIconStyle;
|
|
12
12
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sima-land/ui-nucleons",
|
|
3
3
|
"type": "commonjs",
|
|
4
|
-
"version": "45.0.0-alpha.
|
|
4
|
+
"version": "45.0.0-alpha.36",
|
|
5
5
|
"repository": "ssh://git@github.com:sima-land/ui-nucleons.git",
|
|
6
6
|
"author": "www.sima-land.ru team",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"private": false,
|
|
9
9
|
"engines": {
|
|
10
|
-
"node": ">=
|
|
10
|
+
"node": ">=20.0.0"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"export:colors": "node .template/build.mjs",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"prettier:check": "prettier --check \"./src/**/*.{js,jsx,ts,tsx,css,scss}\""
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@floating-ui/react": "^0.
|
|
29
|
+
"@floating-ui/react": "^0.27.8",
|
|
30
30
|
"@krutoo/input-mask": "^0.1.0",
|
|
31
31
|
"body-scroll-lock": "3.1.5",
|
|
32
32
|
"classnames": "^2.3.2",
|