@redneckz/wildless-cms-uni-blocks 0.14.261 → 0.14.263
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/bundle/bundle.umd.js +6 -4
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
- package/bundle/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
- package/bundle/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
- package/bundle/data/StickyMobileData.d.ts +2 -2
- package/dist/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
- package/dist/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
- package/dist/components/StickyBottomMenu/StickyBottomMenu.mobile.js +22 -42
- package/dist/components/StickyBottomMenu/StickyBottomMenu.mobile.js.map +1 -1
- package/dist/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
- package/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js +17 -0
- package/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
- package/dist/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
- package/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js +15 -0
- package/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
- package/dist/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
- package/dist/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
- package/dist/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
- package/dist/data/StickyMobileData.d.ts +2 -2
- package/lib/common.css +1 -1
- package/lib/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
- package/lib/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
- package/lib/components/StickyBottomMenu/StickyBottomMenu.mobile.js +23 -43
- package/lib/components/StickyBottomMenu/StickyBottomMenu.mobile.js.map +1 -1
- package/lib/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
- package/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js +15 -0
- package/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
- package/lib/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
- package/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js +12 -0
- package/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
- package/lib/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
- package/lib/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
- package/lib/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
- package/lib/data/StickyMobileData.d.ts +2 -2
- package/mobile/bundle/bundle.umd.js +54 -52
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
- package/mobile/bundle/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
- package/mobile/bundle/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
- package/mobile/bundle/data/StickyMobileData.d.ts +2 -2
- package/mobile/dist/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
- package/mobile/dist/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
- package/mobile/dist/components/StickyBottomMenu/StickyBottomMenu.js +22 -42
- package/mobile/dist/components/StickyBottomMenu/StickyBottomMenu.js.map +1 -1
- package/mobile/dist/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
- package/mobile/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js +17 -0
- package/mobile/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
- package/mobile/dist/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
- package/mobile/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js +15 -0
- package/mobile/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
- package/mobile/dist/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
- package/mobile/dist/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
- package/mobile/dist/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
- package/mobile/dist/data/StickyMobileData.d.ts +2 -2
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
- package/mobile/lib/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
- package/mobile/lib/components/StickyBottomMenu/StickyBottomMenu.js +23 -43
- package/mobile/lib/components/StickyBottomMenu/StickyBottomMenu.js.map +1 -1
- package/mobile/lib/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
- package/mobile/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js +15 -0
- package/mobile/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
- package/mobile/lib/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
- package/mobile/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js +12 -0
- package/mobile/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
- package/mobile/lib/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
- package/mobile/lib/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
- package/mobile/lib/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
- package/mobile/lib/data/StickyMobileData.d.ts +2 -2
- package/mobile/src/components/OfficesAtmsMap/renderWorkSchedule.tsx +12 -5
- package/mobile/src/components/StickyBottomMenu/StickyBottomMenu.tsx +27 -67
- package/mobile/src/components/StickyBottomMenu/StickyBottomMenuDialog.tsx +39 -0
- package/mobile/src/components/StickyBottomMenu/useBottomMenuItemDialog.tsx +54 -0
- package/mobile/src/components/StickyBottomMenu/useBurgerMenuDialog.tsx +1 -2
- package/mobile/src/data/StickyMobileData.ts +2 -2
- package/package.json +1 -1
- package/src/components/OfficesAtmsMap/renderWorkSchedule.tsx +12 -5
- package/src/components/StickyBottomMenu/StickyBottomMenu.mobile.tsx +27 -67
- package/src/components/StickyBottomMenu/StickyBottomMenuDialog.tsx +39 -0
- package/src/components/StickyBottomMenu/useBottomMenuItemDialog.tsx +54 -0
- package/src/components/StickyBottomMenu/useBurgerMenuDialog.tsx +1 -2
- package/src/data/StickyMobileData.ts +2 -2
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { useCallback,
|
|
2
|
-
import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
|
|
1
|
+
import { useCallback, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
2
|
import { useOutsideClick } from '@redneckz/uni-jsx/lib/hooks/useOutsideClick';
|
|
4
3
|
import { type StickyMenuItem } from '../../data/StickyMobileData';
|
|
5
4
|
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
6
|
-
import {
|
|
7
|
-
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
5
|
+
import { type PreventableEvent } from '../../ui-kit/PreventableEvent';
|
|
8
6
|
import { UniBlock } from '../../UniBlock/UniBlock';
|
|
9
7
|
import { StickyBottomMenuBurger } from './StickyBottomMenuBurger';
|
|
10
8
|
import { StickyBottomMenuItem } from './StickyBottomMenuItem';
|
|
11
9
|
import { type StickyBottomMenuProps } from './StickyBottomMenuProps';
|
|
10
|
+
import { useBottomMenuItemDialog } from './useBottomMenuItemDialog';
|
|
12
11
|
import { useBurgerMenuDialog } from './useBurgerMenuDialog';
|
|
13
12
|
|
|
14
13
|
const EMPTY_MENU = [];
|
|
@@ -18,7 +17,6 @@ interface CurrentActiveItem {
|
|
|
18
17
|
currentItemPosition: string;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
|
-
// eslint-disable-next-line max-lines-per-function
|
|
22
20
|
export const StickyBottomMenu = UniBlock<StickyBottomMenuProps>(({ sticky, ...rest }) => {
|
|
23
21
|
const { menuItems = EMPTY_MENU } = sticky ?? {};
|
|
24
22
|
const [isBurgerMenuDialogOpen, { toggle, close, openDialog }] = useBurgerMenuDialog(
|
|
@@ -31,78 +29,44 @@ export const StickyBottomMenu = UniBlock<StickyBottomMenuProps>(({ sticky, ...re
|
|
|
31
29
|
|
|
32
30
|
const [activeIndex, setActiveIndex] = useState(-1);
|
|
33
31
|
const [currentItemPosition, setCurrentItemPosition] = useState<string>('');
|
|
34
|
-
const [popupDialogState, { setFalse: setPopupDialogClosed, setTrue: setPopupDialogOpened }] =
|
|
35
|
-
useBool();
|
|
36
32
|
|
|
37
|
-
const
|
|
38
|
-
setPopupDialogClosed();
|
|
33
|
+
const closeDialog = useCallback(() => {
|
|
39
34
|
setActiveIndex(-1);
|
|
40
35
|
setCurrentItemPosition('');
|
|
41
36
|
close();
|
|
42
37
|
}, [close]);
|
|
43
38
|
|
|
44
39
|
const menuRef = useRef<HTMLDivElement | null>(null);
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
title={itemsPosition === 'left' ? leftItems[index].title : rightItems[index].title}
|
|
62
|
-
/>
|
|
63
|
-
</div>
|
|
64
|
-
}
|
|
65
|
-
>
|
|
66
|
-
<div className="bg-white pb-24 pt-1 text-l" ref={popupDialogRef}></div>
|
|
67
|
-
</Dialog>,
|
|
68
|
-
{
|
|
69
|
-
id: itemsPosition === 'left' ? leftItems[index].title : rightItems[index].title,
|
|
70
|
-
},
|
|
71
|
-
);
|
|
40
|
+
const dialogRef = useOutsideClick<HTMLDivElement>(closeDialog);
|
|
41
|
+
|
|
42
|
+
const [{ openBottomMenuItemDialog }] = useBottomMenuItemDialog({
|
|
43
|
+
menuRef,
|
|
44
|
+
dialogRef,
|
|
45
|
+
closeDialog,
|
|
46
|
+
openDialog,
|
|
47
|
+
leftItems,
|
|
48
|
+
rightItems,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
const handleMenuBurgerClick = useCallback(
|
|
52
|
+
(e: PreventableEvent) => {
|
|
53
|
+
closeDialog();
|
|
54
|
+
e.stopPropagation();
|
|
55
|
+
toggle();
|
|
72
56
|
},
|
|
73
|
-
[
|
|
57
|
+
[closeDialog, toggle],
|
|
74
58
|
);
|
|
75
59
|
|
|
76
60
|
const handleMenuItemClick = useCallback(
|
|
77
61
|
(index: number, itemsPosition: string) => {
|
|
78
62
|
setCurrentItemPosition(itemsPosition);
|
|
79
63
|
setActiveIndex(index);
|
|
80
|
-
|
|
64
|
+
close();
|
|
65
|
+
openBottomMenuItemDialog(index, itemsPosition);
|
|
81
66
|
},
|
|
82
|
-
[
|
|
67
|
+
[close, openBottomMenuItemDialog],
|
|
83
68
|
);
|
|
84
69
|
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
if (!popupDialogRef.current) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (!popupDialogRef.current.shadowRoot) {
|
|
91
|
-
popupDialogRef.current?.attachShadow({ mode: 'open' });
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const shadowRoot = popupDialogRef.current.shadowRoot;
|
|
95
|
-
if (!shadowRoot) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (currentItemPosition === 'left') {
|
|
100
|
-
shadowRoot.innerHTML = leftItems[activeIndex]?.__html || '';
|
|
101
|
-
} else {
|
|
102
|
-
shadowRoot.innerHTML = rightItems[activeIndex]?.__html || '';
|
|
103
|
-
}
|
|
104
|
-
}, [activeIndex, currentItemPosition, popupDialogState]);
|
|
105
|
-
|
|
106
70
|
return (
|
|
107
71
|
<BlockWrapper className="h-[74px] z-[100] relative" defaultPadding="p-0" {...rest}>
|
|
108
72
|
<div
|
|
@@ -114,11 +78,7 @@ export const StickyBottomMenu = UniBlock<StickyBottomMenuProps>(({ sticky, ...re
|
|
|
114
78
|
)}
|
|
115
79
|
<StickyBottomMenuBurger
|
|
116
80
|
isActive={isBurgerMenuDialogOpen}
|
|
117
|
-
onClick={(e) =>
|
|
118
|
-
closePopupDialog();
|
|
119
|
-
e.stopPropagation();
|
|
120
|
-
toggle();
|
|
121
|
-
}}
|
|
81
|
+
onClick={(e) => handleMenuBurgerClick(e)}
|
|
122
82
|
/>
|
|
123
83
|
{rightItems.map(
|
|
124
84
|
renderMenuItem(handleMenuItemClick, 'right', { activeIndex, currentItemPosition }),
|
|
@@ -130,7 +90,7 @@ export const StickyBottomMenu = UniBlock<StickyBottomMenuProps>(({ sticky, ...re
|
|
|
130
90
|
|
|
131
91
|
const renderMenuItem =
|
|
132
92
|
(
|
|
133
|
-
|
|
93
|
+
onClick: (index: number, itemsPosition: string) => void,
|
|
134
94
|
itemsPosition: string,
|
|
135
95
|
currentActiveItem: CurrentActiveItem,
|
|
136
96
|
) =>
|
|
@@ -145,7 +105,7 @@ const renderMenuItem =
|
|
|
145
105
|
}
|
|
146
106
|
onClick={(e) => {
|
|
147
107
|
e.stopPropagation();
|
|
148
|
-
|
|
108
|
+
onClick(i, itemsPosition);
|
|
149
109
|
}}
|
|
150
110
|
/>
|
|
151
111
|
);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { type VNode } from '../../model/VNode';
|
|
4
|
+
import { CloseButton } from '../../ui-kit/DialogManager/CloseButton';
|
|
5
|
+
import { useDialogManager } from '../../ui-kit/DialogManager/useDialogManager';
|
|
6
|
+
import { type PreventableEvent } from '../../ui-kit/PreventableEvent';
|
|
7
|
+
import { style } from '../../utils/style';
|
|
8
|
+
|
|
9
|
+
export interface StickyBottomMenuDialogProps {
|
|
10
|
+
className?: string;
|
|
11
|
+
head?: VNode;
|
|
12
|
+
onClose?: () => void;
|
|
13
|
+
onClick?: (e: PreventableEvent) => void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const StickyBottomMenuDialog = JSX<StickyBottomMenuDialogProps>(
|
|
17
|
+
({ className, head, children, onClose, onClick }) => {
|
|
18
|
+
const { close } = useDialogManager();
|
|
19
|
+
|
|
20
|
+
const handleClose = useCallback(() => {
|
|
21
|
+
close();
|
|
22
|
+
onClose && onClose();
|
|
23
|
+
}, [onClose]);
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div
|
|
27
|
+
onClick={onClick}
|
|
28
|
+
className={style('relative min-h-full bg-white p-0 rounded-xl mt-[20%]', className)}
|
|
29
|
+
role="dialog"
|
|
30
|
+
>
|
|
31
|
+
<div className="sticky py-xl top-0 rounded-xl bg-white z-10">
|
|
32
|
+
<CloseButton className="absolute top-1.5 right-0" onClose={handleClose} />
|
|
33
|
+
<div className="container">{head}</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div className="container pb-6xl">{children}</div>
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
},
|
|
39
|
+
);
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type StickyMenuItem } from '../../data/StickyMobileData';
|
|
2
|
+
import { type VNode } from '../../model/VNode';
|
|
3
|
+
import { type DialogOptions } from '../../ui-kit/DialogManager/useDialogManager';
|
|
4
|
+
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
5
|
+
import { StickyBottomMenuDialog } from './StickyBottomMenuDialog';
|
|
6
|
+
|
|
7
|
+
interface BottomMenuItemDialog {
|
|
8
|
+
menuRef?: {
|
|
9
|
+
current: HTMLDivElement | null;
|
|
10
|
+
};
|
|
11
|
+
dialogRef?: {
|
|
12
|
+
current: HTMLDivElement | null;
|
|
13
|
+
};
|
|
14
|
+
closeDialog: () => void;
|
|
15
|
+
openDialog: (dialog: VNode, options: DialogOptions) => void;
|
|
16
|
+
leftItems: StickyMenuItem[];
|
|
17
|
+
rightItems: StickyMenuItem[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const useBottomMenuItemDialog = ({
|
|
21
|
+
menuRef,
|
|
22
|
+
dialogRef,
|
|
23
|
+
closeDialog,
|
|
24
|
+
openDialog,
|
|
25
|
+
leftItems,
|
|
26
|
+
rightItems,
|
|
27
|
+
}: BottomMenuItemDialog) => {
|
|
28
|
+
const openBottomMenuItemDialog = (index: number, itemsPosition: string) => {
|
|
29
|
+
const requiredArray = itemsPosition === 'left' ? leftItems : rightItems;
|
|
30
|
+
const menuDimensions = menuRef?.current?.getBoundingClientRect();
|
|
31
|
+
openDialog(
|
|
32
|
+
<StickyBottomMenuDialog
|
|
33
|
+
onClick={(e) => e.stopPropagation()}
|
|
34
|
+
onClose={closeDialog}
|
|
35
|
+
head={
|
|
36
|
+
<div className="flex items-center px-xl">
|
|
37
|
+
<Heading as="h4" title={requiredArray[index].title} />
|
|
38
|
+
</div>
|
|
39
|
+
}
|
|
40
|
+
>
|
|
41
|
+
<div className="bg-white pb-20 pt-1 text-l" ref={dialogRef}>
|
|
42
|
+
<iframe
|
|
43
|
+
src={requiredArray[index]?.src}
|
|
44
|
+
className="min-h-[90vh]"
|
|
45
|
+
width={menuDimensions?.width || 0}
|
|
46
|
+
/>
|
|
47
|
+
</div>
|
|
48
|
+
</StickyBottomMenuDialog>,
|
|
49
|
+
{ id: itemsPosition === 'left' ? leftItems[index].title : rightItems[index].title },
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return [{ openBottomMenuItemDialog }];
|
|
54
|
+
};
|
|
@@ -11,7 +11,6 @@ export const useBurgerMenuDialog = (
|
|
|
11
11
|
): [
|
|
12
12
|
boolean,
|
|
13
13
|
{
|
|
14
|
-
open: () => void;
|
|
15
14
|
close: () => void;
|
|
16
15
|
toggle: () => void;
|
|
17
16
|
openDialog: (dialog: VNode, options: DialogOptions) => void;
|
|
@@ -31,5 +30,5 @@ export const useBurgerMenuDialog = (
|
|
|
31
30
|
}
|
|
32
31
|
};
|
|
33
32
|
|
|
34
|
-
return [isBurgerMenuOpen, {
|
|
33
|
+
return [isBurgerMenuOpen, { close, toggle, openDialog }];
|
|
35
34
|
};
|
|
@@ -6,8 +6,8 @@ import { type Picture } from '../model/Picture';
|
|
|
6
6
|
export interface StickyMenuItem {
|
|
7
7
|
/** @title Название */
|
|
8
8
|
title?: string;
|
|
9
|
-
/** @title
|
|
10
|
-
|
|
9
|
+
/** @title Адрес страницы меню */
|
|
10
|
+
src?: string;
|
|
11
11
|
/** @title Иконка */
|
|
12
12
|
icon?: Picture;
|
|
13
13
|
}
|