@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.
Files changed (83) hide show
  1. package/bundle/bundle.umd.js +6 -4
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
  4. package/bundle/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
  5. package/bundle/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
  6. package/bundle/data/StickyMobileData.d.ts +2 -2
  7. package/dist/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
  8. package/dist/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
  9. package/dist/components/StickyBottomMenu/StickyBottomMenu.mobile.js +22 -42
  10. package/dist/components/StickyBottomMenu/StickyBottomMenu.mobile.js.map +1 -1
  11. package/dist/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
  12. package/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js +17 -0
  13. package/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
  14. package/dist/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
  15. package/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js +15 -0
  16. package/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
  17. package/dist/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
  18. package/dist/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
  19. package/dist/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
  20. package/dist/data/StickyMobileData.d.ts +2 -2
  21. package/lib/common.css +1 -1
  22. package/lib/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
  23. package/lib/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
  24. package/lib/components/StickyBottomMenu/StickyBottomMenu.mobile.js +23 -43
  25. package/lib/components/StickyBottomMenu/StickyBottomMenu.mobile.js.map +1 -1
  26. package/lib/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
  27. package/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js +15 -0
  28. package/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
  29. package/lib/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
  30. package/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js +12 -0
  31. package/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
  32. package/lib/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
  33. package/lib/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
  34. package/lib/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
  35. package/lib/data/StickyMobileData.d.ts +2 -2
  36. package/mobile/bundle/bundle.umd.js +54 -52
  37. package/mobile/bundle/bundle.umd.min.js +1 -1
  38. package/mobile/bundle/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
  39. package/mobile/bundle/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
  40. package/mobile/bundle/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
  41. package/mobile/bundle/data/StickyMobileData.d.ts +2 -2
  42. package/mobile/dist/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
  43. package/mobile/dist/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
  44. package/mobile/dist/components/StickyBottomMenu/StickyBottomMenu.js +22 -42
  45. package/mobile/dist/components/StickyBottomMenu/StickyBottomMenu.js.map +1 -1
  46. package/mobile/dist/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
  47. package/mobile/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js +17 -0
  48. package/mobile/dist/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
  49. package/mobile/dist/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
  50. package/mobile/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js +15 -0
  51. package/mobile/dist/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
  52. package/mobile/dist/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
  53. package/mobile/dist/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
  54. package/mobile/dist/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
  55. package/mobile/dist/data/StickyMobileData.d.ts +2 -2
  56. package/mobile/lib/common.css +1 -1
  57. package/mobile/lib/components/OfficesAtmsMap/renderWorkSchedule.js +5 -3
  58. package/mobile/lib/components/OfficesAtmsMap/renderWorkSchedule.js.map +1 -1
  59. package/mobile/lib/components/StickyBottomMenu/StickyBottomMenu.js +23 -43
  60. package/mobile/lib/components/StickyBottomMenu/StickyBottomMenu.js.map +1 -1
  61. package/mobile/lib/components/StickyBottomMenu/StickyBottomMenuDialog.d.ts +9 -0
  62. package/mobile/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js +15 -0
  63. package/mobile/lib/components/StickyBottomMenu/StickyBottomMenuDialog.js.map +1 -0
  64. package/mobile/lib/components/StickyBottomMenu/useBottomMenuItemDialog.d.ts +19 -0
  65. package/mobile/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js +12 -0
  66. package/mobile/lib/components/StickyBottomMenu/useBottomMenuItemDialog.js.map +1 -0
  67. package/mobile/lib/components/StickyBottomMenu/useBurgerMenuDialog.d.ts +0 -1
  68. package/mobile/lib/components/StickyBottomMenu/useBurgerMenuDialog.js +1 -1
  69. package/mobile/lib/components/StickyBottomMenu/useBurgerMenuDialog.js.map +1 -1
  70. package/mobile/lib/data/StickyMobileData.d.ts +2 -2
  71. package/mobile/src/components/OfficesAtmsMap/renderWorkSchedule.tsx +12 -5
  72. package/mobile/src/components/StickyBottomMenu/StickyBottomMenu.tsx +27 -67
  73. package/mobile/src/components/StickyBottomMenu/StickyBottomMenuDialog.tsx +39 -0
  74. package/mobile/src/components/StickyBottomMenu/useBottomMenuItemDialog.tsx +54 -0
  75. package/mobile/src/components/StickyBottomMenu/useBurgerMenuDialog.tsx +1 -2
  76. package/mobile/src/data/StickyMobileData.ts +2 -2
  77. package/package.json +1 -1
  78. package/src/components/OfficesAtmsMap/renderWorkSchedule.tsx +12 -5
  79. package/src/components/StickyBottomMenu/StickyBottomMenu.mobile.tsx +27 -67
  80. package/src/components/StickyBottomMenu/StickyBottomMenuDialog.tsx +39 -0
  81. package/src/components/StickyBottomMenu/useBottomMenuItemDialog.tsx +54 -0
  82. package/src/components/StickyBottomMenu/useBurgerMenuDialog.tsx +1 -2
  83. package/src/data/StickyMobileData.ts +2 -2
@@ -1,14 +1,13 @@
1
- import { useCallback, useEffect, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
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 { Dialog } from '../../ui-kit/DialogManager/Dialog';
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 closePopupDialog = useCallback(() => {
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 popupDialogRef = useOutsideClick<HTMLDivElement>(closePopupDialog);
46
-
47
- const openPopupDialog = useCallback(
48
- (index: number, itemsPosition: string) => {
49
- setPopupDialogOpened();
50
- close();
51
-
52
- openDialog(
53
- <Dialog
54
- onClick={(e) => e.stopPropagation()}
55
- className="mt-[20%]"
56
- onClose={closePopupDialog}
57
- head={
58
- <div className="flex items-center">
59
- <Heading
60
- as="h4"
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
- [close, closePopupDialog],
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
- openPopupDialog(index, itemsPosition);
64
+ close();
65
+ openBottomMenuItemDialog(index, itemsPosition);
81
66
  },
82
- [openPopupDialog],
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
- handleMenuItemClick: (index: number, itemsPosition: string) => void,
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
- handleMenuItemClick(i, itemsPosition);
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, { open, close, toggle, openDialog }];
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 Html */
10
- __html?: string;
9
+ /** @title Адрес страницы меню */
10
+ src?: string;
11
11
  /** @title Иконка */
12
12
  icon?: Picture;
13
13
  }