stone-kit 0.0.1066 → 0.0.1069
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/README.md +88 -88
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/ui/Button.d.ts +2 -2
- package/dist/components/Button/ui/Button.types.d.ts +1 -1
- package/dist/components/CheckBoxNew/CheckBoxNew.js +5 -5
- package/dist/components/CommercialLotCard/CommercialLotCard.js +81 -9
- package/dist/components/CommercialLotCard/components/PaymentLink/PaymentLink.js +4 -4
- package/dist/components/CommercialLotCard/components/Snippets/Snippets.js +98 -27
- package/dist/components/CommercialLotCard/components/Tags/Tags.js +1 -1
- package/dist/components/FilterWithSave/hooks/useFilterWithSave.js +54 -26
- package/dist/components/FilterWithSave/ui/FilterWithSave.js +323 -7
- package/dist/components/FormModal/ui/ModalForm.js +1516 -29
- package/dist/components/Logo/ui/Logo.js +6 -6
- package/dist/components/LotCard/hooks/useLotCard.js +6 -24
- package/dist/components/LotCard/index.js +2 -2
- package/dist/components/LotCard/ui/LotCard.js +222 -11
- package/dist/components/ModalSuccess/ModalSuccess.js +1 -1
- package/dist/components/RoundButton/ui/RoundButton.js +1 -1
- package/dist/components/Select/ui/Category.js +2 -2
- package/dist/components/Select/ui/Option.js +2 -2
- package/dist/components/Select/ui/Select.js +2 -2
- package/dist/components/SliderNavigation/ui/SliderNavigation.js +6 -6
- package/dist/components/SortSelect/index.js +1 -1
- package/dist/components/SortSelect/ui/SortSelect.js +108 -26
- package/dist/components/SummarySelect/ui/SummarySelect.js +1 -1
- package/dist/components/TabSelect/ui/TabSelect.js +4 -4
- package/dist/components/TabSwitcher/index.js +2 -2
- package/dist/components/TabSwitcher/ui/TabSwitcher.js +121 -26
- package/dist/layout/components/Header/Header.js +44 -65
- package/dist/layout/components/Menu.js +15 -37
- package/dist/main.d.ts +1 -0
- package/dist/main.js +70 -65
- package/dist/pages/ButtonsPage/Buttons.js +44 -61
- package/dist/pages/FormsPage/FormsPage.js +22 -42
- package/dist/pages/IconsPage/IconsPage.js +9 -31
- package/dist/pages/InputPage/InputPage.js +10 -32
- package/dist/pages/LogoPage/LogoPage.js +13 -36
- package/dist/pages/LotsPage/LotsPage.js +23 -22
- package/dist/pages/ModalsPage/ModalPage.js +46 -66
- package/dist/pages/SelectPage/SelectPage.js +41 -40
- package/dist/pages/TabsPage/TabsPage.js +1 -1
- package/dist/pages/TagsPage/TagsPage.js +23 -44
- package/dist/shared/useClientWidth.d.ts +3 -1
- package/dist/shared/useClientWidth.js +13 -4
- package/dist/stone-kit.css +1 -1
- package/dist/stories/entities/CommercialLotCard/CommercialLotCard.stories.js +1 -1
- package/dist/stories/shared/ui/Button/Button.stories.js +4 -4
- package/dist/stories/shared/ui/FilterWithSave/FilterWithSave.stories.js +1 -1
- package/dist/stories/shared/ui/FormModal/FormModal.stories.js +7 -7
- package/dist/stories/shared/ui/SortSelect/SortSelect.stories.js +1 -1
- package/dist/stories/shared/ui/TabSwitcher/TabSwitcher.stories.js +1 -1
- package/dist/stories/shared/ui/Tag/Tag.stories.js +4 -4
- package/dist/useLotCard-D-gK4J_o.js +186 -0
- package/package.json +1 -1
- package/dist/FilterWithSave-NYWK9Gpz.js +0 -2676
- package/dist/{Option-DdjBe9yb.js → Option-DmDx_xOt.js} +1 -1
package/README.md
CHANGED
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
# Stone-kit
|
|
2
|
-
|
|
3
|
-
Uikit for stone redesign 2.0
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Package installation:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm i stone-kit@latest
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
For Next.js page router in App.tsx:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
import 'stone-kit/dist/style.css'
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
and then:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
import {Button} from 'stone-kit'
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
For other projects u can immediately:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
import {Button} from 'stone-kit'
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Docs
|
|
34
|
-
|
|
35
|
-
### ButtonProps
|
|
36
|
-
|
|
37
|
-
size: optional, size of button. types : 'large' | 'medium' | 'small' | 'tiny'
|
|
38
|
-
|
|
39
|
-
pre: optional, insert icon/text before button text. type: ReactNode
|
|
40
|
-
|
|
41
|
-
post: optional, insert icon/text after button text. type: ReactNode
|
|
42
|
-
|
|
43
|
-
variant: optional, color variants of button. type:
|
|
44
|
-
'blue',
|
|
45
|
-
'gray',
|
|
46
|
-
'whiteStroke',
|
|
47
|
-
'sokolniki',
|
|
48
|
-
'black',
|
|
49
|
-
'whiteFilled'
|
|
50
|
-
|
|
51
|
-
width: optional, width of button. type: 'auto' | 'full'
|
|
52
|
-
|
|
53
|
-
additionalClass: optional, add your custom class to button. type: 'string'
|
|
54
|
-
|
|
55
|
-
as: optional, u can convert button to link. type: 'button' | 'link'. 'button' by default.
|
|
56
|
-
|
|
57
|
-
### MobileButtonProps
|
|
58
|
-
|
|
59
|
-
### Tag
|
|
60
|
-
|
|
61
|
-
## Storybook в Docker
|
|
62
|
-
|
|
63
|
-
### Запуск production-сборки
|
|
64
|
-
|
|
65
|
-
Чтобы запустить готовую статическую сборку Storybook с помощью Docker и Nginx:
|
|
66
|
-
|
|
67
|
-
1. Убедитесь, что в корне проекта есть файлы `Dockerfile.prod` и `docker-compose.prod.yml`.
|
|
68
|
-
2. Выполните команду:docker system prune
|
|
69
|
-
```sh
|
|
70
|
-
docker compose -f docker-compose.prod.yml up -d --force-recreate
|
|
71
|
-
```
|
|
72
|
-
3. После завершения сборки и запуска, Storybook будет доступен по адресу `http://localhost:8080`.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
openssl req -x509 -nodes -days 365 \
|
|
77
|
-
-newkey rsa:2048 \
|
|
78
|
-
-keyout certs/privkey.key \
|
|
79
|
-
-out certs/fullchain.crt \
|
|
80
|
-
-subj "/CN=storybook.stone.ru"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
openssl req -x509 -nodes -newkey rsa:2048 \
|
|
85
|
-
-days 365 -subj "/CN=storybook.stone.ru" \
|
|
86
|
-
-keyout certs/privkey.key \
|
|
87
|
-
-out certs/fullchain.crt
|
|
88
|
-
|
|
1
|
+
# Stone-kit
|
|
2
|
+
|
|
3
|
+
Uikit for stone redesign 2.0
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Package installation:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm i stone-kit@latest
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
For Next.js page router in App.tsx:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
import 'stone-kit/dist/style.css'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
and then:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
import {Button} from 'stone-kit'
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
For other projects u can immediately:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
import {Button} from 'stone-kit'
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Docs
|
|
34
|
+
|
|
35
|
+
### ButtonProps
|
|
36
|
+
|
|
37
|
+
size: optional, size of button. types : 'large' | 'medium' | 'small' | 'tiny'
|
|
38
|
+
|
|
39
|
+
pre: optional, insert icon/text before button text. type: ReactNode
|
|
40
|
+
|
|
41
|
+
post: optional, insert icon/text after button text. type: ReactNode
|
|
42
|
+
|
|
43
|
+
variant: optional, color variants of button. type:
|
|
44
|
+
'blue',
|
|
45
|
+
'gray',
|
|
46
|
+
'whiteStroke',
|
|
47
|
+
'sokolniki',
|
|
48
|
+
'black',
|
|
49
|
+
'whiteFilled'
|
|
50
|
+
|
|
51
|
+
width: optional, width of button. type: 'auto' | 'full'
|
|
52
|
+
|
|
53
|
+
additionalClass: optional, add your custom class to button. type: 'string'
|
|
54
|
+
|
|
55
|
+
as: optional, u can convert button to link. type: 'button' | 'link'. 'button' by default.
|
|
56
|
+
|
|
57
|
+
### MobileButtonProps
|
|
58
|
+
|
|
59
|
+
### Tag
|
|
60
|
+
|
|
61
|
+
## Storybook в Docker
|
|
62
|
+
|
|
63
|
+
### Запуск production-сборки
|
|
64
|
+
|
|
65
|
+
Чтобы запустить готовую статическую сборку Storybook с помощью Docker и Nginx:
|
|
66
|
+
|
|
67
|
+
1. Убедитесь, что в корне проекта есть файлы `Dockerfile.prod` и `docker-compose.prod.yml`.
|
|
68
|
+
2. Выполните команду:docker system prune
|
|
69
|
+
```sh
|
|
70
|
+
docker compose -f docker-compose.prod.yml up -d --force-recreate
|
|
71
|
+
```
|
|
72
|
+
3. После завершения сборки и запуска, Storybook будет доступен по адресу `http://localhost:8080`.
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
openssl req -x509 -nodes -days 365 \
|
|
77
|
+
-newkey rsa:2048 \
|
|
78
|
+
-keyout certs/privkey.key \
|
|
79
|
+
-out certs/fullchain.crt \
|
|
80
|
+
-subj "/CN=storybook.stone.ru"
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
openssl req -x509 -nodes -newkey rsa:2048 \
|
|
85
|
+
-days 365 -subj "/CN=storybook.stone.ru" \
|
|
86
|
+
-keyout certs/privkey.key \
|
|
87
|
+
-out certs/fullchain.crt
|
|
88
|
+
|
|
89
89
|
```
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Button } from './ui/Button';
|
|
2
|
-
export type {
|
|
2
|
+
export type { ComponentButtonProps, ButtonProps } from './ui/Button.types';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
export declare const Button: ({ size, size_m, size_l, onCLick, pre, children, post, variant, width, additionalClass, isLoading, loaderIconName, ...props }: React.PropsWithChildren<
|
|
2
|
+
import { ComponentButtonProps } from './Button.types';
|
|
3
|
+
export declare const Button: ({ size, size_m, size_l, onCLick, pre, children, post, variant, width, additionalClass, isLoading, loaderIconName, ...props }: React.PropsWithChildren<ComponentButtonProps>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -30,7 +30,7 @@ export interface ButtonProps {
|
|
|
30
30
|
as?: 'button' | 'link' | 'box';
|
|
31
31
|
onCLick?: () => any;
|
|
32
32
|
}
|
|
33
|
-
export type
|
|
33
|
+
export type ComponentButtonProps = ButtonProps & ((React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
34
34
|
as?: 'button';
|
|
35
35
|
}) | (React.AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
36
36
|
as?: 'link';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as _, jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { c as m } from "../../index-YnD2EP-S.js";
|
|
3
|
+
import { forwardRef as h } from "react";
|
|
4
|
+
import { Input as p } from "../Input/ui/Input.js";
|
|
5
5
|
import { NewIcon as d } from "../NewIcon/ui/NewIcon.js";
|
|
6
6
|
const i = "_checkboxLabel_14vcp_1", k = "_labelText_14vcp_36", T = "_labelTextModal_14vcp_44", f = "_error_14vcp_49", v = "_checkIcon_14vcp_58", e = {
|
|
7
7
|
checkboxLabel: i,
|
|
@@ -9,10 +9,10 @@ const i = "_checkboxLabel_14vcp_1", k = "_labelText_14vcp_36", T = "_labelTextMo
|
|
|
9
9
|
labelTextModal: T,
|
|
10
10
|
error: f,
|
|
11
11
|
checkIcon: v
|
|
12
|
-
}, t =
|
|
12
|
+
}, t = m.bind(e), w = h(
|
|
13
13
|
({ text: c, isChecked: l, error: r, children: n, emitIsChecked: a, modalFontSize: s, ...b }, x) => /* @__PURE__ */ _("label", { className: t(e.checkboxLabel, { [e.error]: r }), children: [
|
|
14
14
|
/* @__PURE__ */ o(
|
|
15
|
-
|
|
15
|
+
p,
|
|
16
16
|
{
|
|
17
17
|
type: "checkbox",
|
|
18
18
|
...b,
|
|
@@ -1,11 +1,83 @@
|
|
|
1
|
-
import "react/jsx-runtime";
|
|
2
|
-
import "../../index-YnD2EP-S.js";
|
|
3
|
-
import "../../shared/fmtNumber.js";
|
|
4
|
-
import "./components/Price/Price.js";
|
|
5
|
-
import {
|
|
6
|
-
import "./components/Tags/Tags.js";
|
|
7
|
-
import "../FavoriteIcon/FavoriteIcon.js";
|
|
8
|
-
import "./components/PaymentLink/PaymentLink.js";
|
|
1
|
+
import { jsxs as a, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { c as b } from "../../index-YnD2EP-S.js";
|
|
3
|
+
import { fmtNumber as v } from "../../shared/fmtNumber.js";
|
|
4
|
+
import { Price as y } from "./components/Price/Price.js";
|
|
5
|
+
import { Snippets as I } from "./components/Snippets/Snippets.js";
|
|
6
|
+
import { Tags as s } from "./components/Tags/Tags.js";
|
|
7
|
+
import { FavoriteIcon as L } from "../FavoriteIcon/FavoriteIcon.js";
|
|
8
|
+
import { PaymentLink as P } from "./components/PaymentLink/PaymentLink.js";
|
|
9
|
+
const w = "_root_uzpph_1", C = "_lotImageWrapper_uzpph_17", k = "_lotNameContent_uzpph_24", x = "_lotNameWrapper_uzpph_30", R = "_lotName_uzpph_24", S = "_lotNumber_uzpph_45", j = "_content_uzpph_54", T = "_featuresWrapper_uzpph_60", D = "_tags_uzpph_65", F = "_rootRow_uzpph_70", q = "_price_uzpph_105", A = "_paymentLink_uzpph_108", e = {
|
|
10
|
+
root: w,
|
|
11
|
+
lotImageWrapper: C,
|
|
12
|
+
lotNameContent: k,
|
|
13
|
+
lotNameWrapper: x,
|
|
14
|
+
lotName: R,
|
|
15
|
+
lotNumber: S,
|
|
16
|
+
content: j,
|
|
17
|
+
featuresWrapper: T,
|
|
18
|
+
tags: D,
|
|
19
|
+
rootRow: F,
|
|
20
|
+
price: q,
|
|
21
|
+
paymentLink: A
|
|
22
|
+
}, B = b.bind(e), X = ({
|
|
23
|
+
lot: o,
|
|
24
|
+
hidFinParam: p = !1,
|
|
25
|
+
imgNode: c,
|
|
26
|
+
onPriceClickHandler: l,
|
|
27
|
+
addClassname: i,
|
|
28
|
+
isVertical: n = !1,
|
|
29
|
+
isFavorite: _,
|
|
30
|
+
favoriteClickHandler: r,
|
|
31
|
+
isMoreDetails: u
|
|
32
|
+
}) => {
|
|
33
|
+
const { interiorPlanImg: N, floorPlanImg: h, area: g, subTypeName: f, number: d } = o || {}, z = f + ", " + v(g) + "м²", W = N ?? h ?? "";
|
|
34
|
+
return o ? /* @__PURE__ */ a("div", { className: B(e.root, i, { [e.rootRow]: !n }), children: [
|
|
35
|
+
/* @__PURE__ */ a("div", { className: e.lotImageWrapper, children: [
|
|
36
|
+
c || /* @__PURE__ */ t(
|
|
37
|
+
"img",
|
|
38
|
+
{
|
|
39
|
+
loading: "lazy",
|
|
40
|
+
src: W,
|
|
41
|
+
width: 295,
|
|
42
|
+
height: 213,
|
|
43
|
+
alt: "logo_image"
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
r && /* @__PURE__ */ t(
|
|
47
|
+
L,
|
|
48
|
+
{
|
|
49
|
+
handleClickFavorite: (m) => {
|
|
50
|
+
r && r(o), m.preventDefault(), m.stopPropagation();
|
|
51
|
+
},
|
|
52
|
+
isFavorite: _
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ a("div", { className: e.content, children: [
|
|
57
|
+
/* @__PURE__ */ a("div", { className: e.lotNameWrapper, children: [
|
|
58
|
+
/* @__PURE__ */ a("div", { className: e.lotNameContent, children: [
|
|
59
|
+
/* @__PURE__ */ t("p", { className: e.lotName, children: z }),
|
|
60
|
+
/* @__PURE__ */ t("p", { className: e.lotNumber, children: d }),
|
|
61
|
+
/* @__PURE__ */ t(I, { lot: o }),
|
|
62
|
+
/* @__PURE__ */ t(s, { lot: o, classname: e.tags })
|
|
63
|
+
] }),
|
|
64
|
+
!p && /* @__PURE__ */ t(
|
|
65
|
+
y,
|
|
66
|
+
{
|
|
67
|
+
lot: o,
|
|
68
|
+
isVertical: n,
|
|
69
|
+
onPriceClickHandler: l,
|
|
70
|
+
classname: e.price
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
] }),
|
|
74
|
+
/* @__PURE__ */ a("div", { className: e.featuresWrapper, children: [
|
|
75
|
+
/* @__PURE__ */ t(s, { lot: o, classname: e.tags }),
|
|
76
|
+
/* @__PURE__ */ t(P, { specialProgram: o.specialProgram, classname: e.paymentLink, isMoreDetails: u, hidFinParam: p })
|
|
77
|
+
] })
|
|
78
|
+
] })
|
|
79
|
+
] }) : null;
|
|
80
|
+
};
|
|
9
81
|
export {
|
|
10
|
-
|
|
82
|
+
X as CommercialLotCard
|
|
11
83
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsxs as p, jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { c as m } from "../../../../index-YnD2EP-S.js";
|
|
3
|
+
import { NewIcon as i } from "../../../NewIcon/ui/NewIcon.js";
|
|
4
4
|
const c = "_paymentWrapper_1ywol_1", f = {
|
|
5
5
|
paymentWrapper: c
|
|
6
6
|
}, x = ({ specialProgram: e, classname: n, isMoreDetails: t, hidFinParam: a }) => {
|
|
7
7
|
const s = !!e, o = () => a ? "Подробнее" : s || t ? "Узнать подробности" : "Доступно несколько способов оплаты";
|
|
8
|
-
return /* @__PURE__ */ p("div", { className:
|
|
8
|
+
return /* @__PURE__ */ p("div", { className: m(f.paymentWrapper, n), children: [
|
|
9
9
|
/* @__PURE__ */ r("span", { children: o() }),
|
|
10
10
|
/* @__PURE__ */ r(
|
|
11
|
-
|
|
11
|
+
i,
|
|
12
12
|
{
|
|
13
13
|
name: "arrowRight",
|
|
14
14
|
size: "20"
|
|
@@ -1,29 +1,100 @@
|
|
|
1
|
-
import "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
|
-
import "
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "../../../
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
import { jsxs as f, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useState as A } from "react";
|
|
3
|
+
import { getTagsFeatures as B } from "../../utils/getTagsFeatures.js";
|
|
4
|
+
import { c as I } from "../../../../index-YnD2EP-S.js";
|
|
5
|
+
import { useClientWidth as k } from "../../../../shared/useClientWidth.js";
|
|
6
|
+
import { NewIcon as C } from "../../../NewIcon/ui/NewIcon.js";
|
|
7
|
+
const M = "_snippet_1vgdm_1", W = "_snippetLast_1vgdm_9", j = "_snippets_1vgdm_25", D = "_retailSnippets_1vgdm_30", E = "_shownSnippets_1vgdm_35", F = "_addSnippets_1vgdm_64", T = "_addSnippetsActive_1vgdm_80", V = "_addSnippetsList_1vgdm_85", y = "_closeSnippetBtn_1vgdm_129", t = {
|
|
8
|
+
snippet: M,
|
|
9
|
+
snippetLast: W,
|
|
10
|
+
snippets: j,
|
|
11
|
+
retailSnippets: D,
|
|
12
|
+
shownSnippets: E,
|
|
13
|
+
addSnippets: F,
|
|
14
|
+
addSnippetsActive: T,
|
|
15
|
+
addSnippetsList: V,
|
|
16
|
+
closeSnippetBtn: y
|
|
17
|
+
}, L = I.bind(t), K = ({ lot: g }) => {
|
|
18
|
+
const { type: w, windowViews: c, isCorner: N } = g || {}, [u, h] = A(!1), S = B({ ...g }), { isDesktop: r, isMobile: x } = k();
|
|
19
|
+
if (w === 3) {
|
|
20
|
+
if (x && (!c || c.length === 0))
|
|
21
|
+
return null;
|
|
22
|
+
let l = 0;
|
|
23
|
+
const i = r ? 36 : 28, n = [], d = [];
|
|
24
|
+
if (N) {
|
|
25
|
+
const e = "Угловая";
|
|
26
|
+
if (l + e.length <= i)
|
|
27
|
+
n.push(e), l += e.length;
|
|
28
|
+
else
|
|
29
|
+
return n;
|
|
30
|
+
}
|
|
31
|
+
if (c) {
|
|
32
|
+
const e = c.filter((p) => p && p.trim() !== "");
|
|
33
|
+
let s = 0, a = l;
|
|
34
|
+
for (let p = 0; p < e.length; p++) {
|
|
35
|
+
const m = e[p], _ = s > 0 ? " " + m : m;
|
|
36
|
+
if (a + _.length <= i)
|
|
37
|
+
n.push(m), a += _.length, s++;
|
|
38
|
+
else {
|
|
39
|
+
if (s === 0) {
|
|
40
|
+
const v = i - a;
|
|
41
|
+
if (v > 3) {
|
|
42
|
+
const b = m.substring(0, v - 3) + "...";
|
|
43
|
+
n.push(b), a = i;
|
|
44
|
+
} else
|
|
45
|
+
n.push("..."), a += 3;
|
|
46
|
+
}
|
|
47
|
+
d.push(...e.slice(p));
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
l = a;
|
|
52
|
+
}
|
|
53
|
+
return /* @__PURE__ */ f("div", { className: t.retailSnippets, children: [
|
|
54
|
+
/* @__PURE__ */ o("ul", { className: t.shownSnippets, children: n?.map((e, s) => /* @__PURE__ */ o("li", { className: t.snippets, children: e }, s)) }),
|
|
55
|
+
d?.length > 0 && /* @__PURE__ */ f(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
className: L(t.addSnippets, { [t.addSnippetsActive]: u }),
|
|
59
|
+
onClick: (e) => {
|
|
60
|
+
r || (e.stopPropagation(), e.preventDefault(), h((s) => !s));
|
|
61
|
+
},
|
|
62
|
+
onMouseEnter: () => {
|
|
63
|
+
r && h(!0);
|
|
64
|
+
},
|
|
65
|
+
onMouseLeave: () => {
|
|
66
|
+
r && h(!1);
|
|
67
|
+
},
|
|
68
|
+
children: [
|
|
69
|
+
"+" + d?.length,
|
|
70
|
+
u && /* @__PURE__ */ f("ul", { className: t.addSnippetsList, children: [
|
|
71
|
+
d.map((e, s) => /* @__PURE__ */ o("li", { children: e }, s)),
|
|
72
|
+
/* @__PURE__ */ o("div", { className: t.closeSnippetBtn, children: /* @__PURE__ */ o(
|
|
73
|
+
C,
|
|
74
|
+
{
|
|
75
|
+
name: "close",
|
|
76
|
+
size: "16",
|
|
77
|
+
color: "#ffffff"
|
|
78
|
+
}
|
|
79
|
+
) })
|
|
80
|
+
] })
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
return S.length ? /* @__PURE__ */ o("div", { className: t.snippets, children: S.map((l, i) => {
|
|
87
|
+
const n = i === S.length - 1;
|
|
88
|
+
return /* @__PURE__ */ o(
|
|
89
|
+
"div",
|
|
90
|
+
{
|
|
91
|
+
className: L(t.snippet, n ? "" : t.snippetLast),
|
|
92
|
+
children: l.text
|
|
93
|
+
},
|
|
94
|
+
i
|
|
95
|
+
);
|
|
96
|
+
}) }) : null;
|
|
97
|
+
};
|
|
27
98
|
export {
|
|
28
|
-
|
|
99
|
+
K as Snippets
|
|
29
100
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as p, jsx as i } from "react/jsx-runtime";
|
|
2
|
-
import { Tag as n } from "../../../Tag/ui/Tag.js";
|
|
3
2
|
import { c as u } from "../../../../index-YnD2EP-S.js";
|
|
3
|
+
import { Tag as n } from "../../../Tag/ui/Tag.js";
|
|
4
4
|
const f = "_root_xiuq1_1", x = {
|
|
5
5
|
root: f
|
|
6
6
|
}, b = ({ lot: g, classname: d }) => {
|
|
@@ -1,28 +1,56 @@
|
|
|
1
|
-
import "react";
|
|
2
|
-
import "
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
import { useState as c, useRef as w, useEffect as p } from "react";
|
|
2
|
+
import { useClientWidth as x } from "../../../shared/useClientWidth.js";
|
|
3
|
+
const I = ({
|
|
4
|
+
selectedTabs: n = [],
|
|
5
|
+
selectedValues: v = [],
|
|
6
|
+
onClickItem: m,
|
|
7
|
+
disabledOptions: h = [],
|
|
8
|
+
tabs: a = [],
|
|
9
|
+
onChange: s,
|
|
10
|
+
setSelectedTabs: S,
|
|
11
|
+
onSaveClick: C,
|
|
12
|
+
onClearClick: E
|
|
13
|
+
}) => {
|
|
14
|
+
const { isMobile: L } = x(), [i, u] = c(!1), f = w(null), [M, g] = c(n), [R] = c(v), [O, r] = c(M), [l, o] = c(R), y = (e) => {
|
|
15
|
+
if (m && m(e), h.some((t) => t.value === e.value))
|
|
16
|
+
return;
|
|
17
|
+
const d = l.some((t) => t.value === e.value) ? l.filter((t) => t.value !== e.value) : [...l, e];
|
|
18
|
+
o(d);
|
|
19
|
+
}, J = () => {
|
|
20
|
+
g(a), r(a), o([]), E(), s && (s([]), S?.(a));
|
|
21
|
+
}, N = () => {
|
|
22
|
+
o(v), r(n);
|
|
23
|
+
}, k = () => {
|
|
24
|
+
N(), u(!1);
|
|
25
|
+
}, W = (e) => {
|
|
26
|
+
e.stopPropagation(), C(), s && (S?.(O), s(l)), u(!1);
|
|
27
|
+
};
|
|
28
|
+
return p(() => {
|
|
29
|
+
i || r((e) => JSON.stringify(e) !== JSON.stringify(n) ? n : e);
|
|
30
|
+
}, [i, n]), p(() => {
|
|
31
|
+
const e = (d) => {
|
|
32
|
+
if (!f.current) return;
|
|
33
|
+
const t = d.target;
|
|
34
|
+
f.current.contains(t) || t.closest("svg") || k();
|
|
35
|
+
};
|
|
36
|
+
return i ? document.addEventListener("click", e) : document.removeEventListener("click", e), () => {
|
|
37
|
+
document.removeEventListener("click", e);
|
|
38
|
+
};
|
|
39
|
+
}, [i]), {
|
|
40
|
+
isMobile: L,
|
|
41
|
+
handleClearClick: J,
|
|
42
|
+
handleCloseModal: k,
|
|
43
|
+
handleOptionClick: y,
|
|
44
|
+
handleSaveClick: W,
|
|
45
|
+
localSelectedTabs: O,
|
|
46
|
+
selectedOptions: l,
|
|
47
|
+
setSelectedOptions: o,
|
|
48
|
+
isModalOpen: i,
|
|
49
|
+
setIsModalOpen: u,
|
|
50
|
+
setLocalSelectedTabs: r,
|
|
51
|
+
containerRef: f
|
|
52
|
+
};
|
|
53
|
+
};
|
|
26
54
|
export {
|
|
27
|
-
|
|
55
|
+
I as useFilterWithSave
|
|
28
56
|
};
|