@redneckz/wildless-cms-uni-blocks 0.14.875 → 0.14.876

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 (115) hide show
  1. package/bundle/bundle.umd.js +78 -46
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/components/Header/DropdownButton.d.ts +2 -0
  4. package/bundle/components/Header/DropdownMenu.d.ts +5 -2
  5. package/bundle/components/Header/HeaderMoreMenuItem.d.ts +9 -0
  6. package/bundle/components/Header/HeaderSubMenuItem.d.ts +3 -0
  7. package/bundle/components/Header/useDropdownSubMenu.d.ts +11 -0
  8. package/bundle/data/NavigationData.d.ts +1 -0
  9. package/dist/components/Header/DropdownButton.d.ts +2 -0
  10. package/dist/components/Header/DropdownButton.js +11 -0
  11. package/dist/components/Header/DropdownButton.js.map +1 -0
  12. package/dist/components/Header/DropdownMenu.d.ts +5 -2
  13. package/dist/components/Header/DropdownMenu.js +2 -36
  14. package/dist/components/Header/DropdownMenu.js.map +1 -1
  15. package/dist/components/Header/HeaderMoreMenuItem.d.ts +9 -0
  16. package/dist/components/Header/HeaderMoreMenuItem.js +27 -0
  17. package/dist/components/Header/HeaderMoreMenuItem.js.map +1 -0
  18. package/dist/components/Header/HeaderSubMenu.js +2 -2
  19. package/dist/components/Header/HeaderSubMenu.js.map +1 -1
  20. package/dist/components/Header/HeaderSubMenuItem.d.ts +3 -0
  21. package/dist/components/Header/HeaderSubMenuItem.js +19 -2
  22. package/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
  23. package/dist/components/Header/HeaderTopMenu.js +2 -2
  24. package/dist/components/Header/HeaderTopMenu.js.map +1 -1
  25. package/dist/components/Header/useDropdownSubMenu.d.ts +11 -0
  26. package/dist/components/Header/useDropdownSubMenu.js +37 -0
  27. package/dist/components/Header/useDropdownSubMenu.js.map +1 -0
  28. package/dist/data/NavigationData.d.ts +1 -0
  29. package/lib/components/Header/DropdownButton.d.ts +2 -0
  30. package/lib/components/Header/DropdownButton.js +9 -0
  31. package/lib/components/Header/DropdownButton.js.map +1 -0
  32. package/lib/components/Header/DropdownMenu.d.ts +5 -2
  33. package/lib/components/Header/DropdownMenu.js +2 -37
  34. package/lib/components/Header/DropdownMenu.js.map +1 -1
  35. package/lib/components/Header/HeaderMoreMenuItem.d.ts +9 -0
  36. package/lib/components/Header/HeaderMoreMenuItem.js +25 -0
  37. package/lib/components/Header/HeaderMoreMenuItem.js.map +1 -0
  38. package/lib/components/Header/HeaderSubMenu.js +2 -2
  39. package/lib/components/Header/HeaderSubMenu.js.map +1 -1
  40. package/lib/components/Header/HeaderSubMenuItem.d.ts +3 -0
  41. package/lib/components/Header/HeaderSubMenuItem.js +20 -3
  42. package/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
  43. package/lib/components/Header/HeaderTopMenu.js +2 -2
  44. package/lib/components/Header/HeaderTopMenu.js.map +1 -1
  45. package/lib/components/Header/useDropdownSubMenu.d.ts +11 -0
  46. package/lib/components/Header/useDropdownSubMenu.js +34 -0
  47. package/lib/components/Header/useDropdownSubMenu.js.map +1 -0
  48. package/lib/data/NavigationData.d.ts +1 -0
  49. package/mobile/bundle/bundle.umd.js +1 -1
  50. package/mobile/bundle/bundle.umd.min.js +1 -1
  51. package/mobile/bundle/components/Header/DropdownButton.d.ts +2 -0
  52. package/mobile/bundle/components/Header/DropdownMenu.d.ts +5 -2
  53. package/mobile/bundle/components/Header/HeaderMoreMenuItem.d.ts +9 -0
  54. package/mobile/bundle/components/Header/HeaderSubMenuItem.d.ts +3 -0
  55. package/mobile/bundle/components/Header/useDropdownSubMenu.d.ts +11 -0
  56. package/mobile/bundle/data/NavigationData.d.ts +1 -0
  57. package/mobile/dist/components/Header/DropdownButton.d.ts +2 -0
  58. package/mobile/dist/components/Header/DropdownButton.js +11 -0
  59. package/mobile/dist/components/Header/DropdownButton.js.map +1 -0
  60. package/mobile/dist/components/Header/DropdownMenu.d.ts +5 -2
  61. package/mobile/dist/components/Header/DropdownMenu.js +2 -36
  62. package/mobile/dist/components/Header/DropdownMenu.js.map +1 -1
  63. package/mobile/dist/components/Header/HeaderMoreMenuItem.d.ts +9 -0
  64. package/mobile/dist/components/Header/HeaderMoreMenuItem.js +27 -0
  65. package/mobile/dist/components/Header/HeaderMoreMenuItem.js.map +1 -0
  66. package/mobile/dist/components/Header/HeaderSubMenu.js +2 -2
  67. package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
  68. package/mobile/dist/components/Header/HeaderSubMenuItem.d.ts +3 -0
  69. package/mobile/dist/components/Header/HeaderSubMenuItem.js +19 -2
  70. package/mobile/dist/components/Header/HeaderSubMenuItem.js.map +1 -1
  71. package/mobile/dist/components/Header/HeaderTopMenu.js +2 -2
  72. package/mobile/dist/components/Header/HeaderTopMenu.js.map +1 -1
  73. package/mobile/dist/components/Header/useDropdownSubMenu.d.ts +11 -0
  74. package/mobile/dist/components/Header/useDropdownSubMenu.js +37 -0
  75. package/mobile/dist/components/Header/useDropdownSubMenu.js.map +1 -0
  76. package/mobile/dist/data/NavigationData.d.ts +1 -0
  77. package/mobile/lib/components/Header/DropdownButton.d.ts +2 -0
  78. package/mobile/lib/components/Header/DropdownButton.js +9 -0
  79. package/mobile/lib/components/Header/DropdownButton.js.map +1 -0
  80. package/mobile/lib/components/Header/DropdownMenu.d.ts +5 -2
  81. package/mobile/lib/components/Header/DropdownMenu.js +2 -37
  82. package/mobile/lib/components/Header/DropdownMenu.js.map +1 -1
  83. package/mobile/lib/components/Header/HeaderMoreMenuItem.d.ts +9 -0
  84. package/mobile/lib/components/Header/HeaderMoreMenuItem.js +25 -0
  85. package/mobile/lib/components/Header/HeaderMoreMenuItem.js.map +1 -0
  86. package/mobile/lib/components/Header/HeaderSubMenu.js +2 -2
  87. package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
  88. package/mobile/lib/components/Header/HeaderSubMenuItem.d.ts +3 -0
  89. package/mobile/lib/components/Header/HeaderSubMenuItem.js +20 -3
  90. package/mobile/lib/components/Header/HeaderSubMenuItem.js.map +1 -1
  91. package/mobile/lib/components/Header/HeaderTopMenu.js +2 -2
  92. package/mobile/lib/components/Header/HeaderTopMenu.js.map +1 -1
  93. package/mobile/lib/components/Header/useDropdownSubMenu.d.ts +11 -0
  94. package/mobile/lib/components/Header/useDropdownSubMenu.js +34 -0
  95. package/mobile/lib/components/Header/useDropdownSubMenu.js.map +1 -0
  96. package/mobile/lib/data/NavigationData.d.ts +1 -0
  97. package/mobile/src/components/Header/DropdownButton.tsx +26 -0
  98. package/mobile/src/components/Header/DropdownMenu.tsx +15 -85
  99. package/mobile/src/components/Header/HeaderMoreMenuItem.tsx +60 -0
  100. package/mobile/src/components/Header/HeaderSubMenu.tsx +3 -2
  101. package/mobile/src/components/Header/HeaderSubMenuItem.tsx +31 -5
  102. package/mobile/src/components/Header/HeaderTopMenu.tsx +3 -3
  103. package/mobile/src/components/Header/useDropdownSubMenu.tsx +48 -0
  104. package/mobile/src/data/NavigationData.ts +1 -0
  105. package/package.json +1 -1
  106. package/src/components/Header/DropdownButton.tsx +26 -0
  107. package/src/components/Header/DropdownMenu.tsx +15 -85
  108. package/src/components/Header/Header.fixture.tsx +4 -0
  109. package/src/components/Header/HeaderMoreMenuItem.tsx +60 -0
  110. package/src/components/Header/HeaderSubMenu.tsx +3 -2
  111. package/src/components/Header/HeaderSubMenuItem.tsx +31 -5
  112. package/src/components/Header/HeaderTopMenu.tsx +3 -3
  113. package/src/components/Header/useDropdownSubMenu.tsx +48 -0
  114. package/src/data/NavigationData.ts +1 -0
  115. package/src/icons/IconName.ts +4 -4
@@ -10068,47 +10068,6 @@
10068
10068
  return isURL(href) ? globalThis?.location?.href : joinPath(basePath, router.pathname);
10069
10069
  };
10070
10070
 
10071
- const DropdownMenu = JSX(({ className = '', items, activeItem, ariaLabel = 'Меню' }) => {
10072
- const [isVisible, { setFalse, toggle }] = useBool(false);
10073
- const ref = useOutsideClick(setFalse);
10074
- const dropdownRef = useRef(null);
10075
- const changeDropdownPosition = useCallback(({ isOpened, buttonRef, menuRef }) => {
10076
- if (isOpened && buttonRef.current && menuRef.current) {
10077
- const dropdownRect = menuRef.current.getBoundingClientRect();
10078
- const dropdownButtonRect = buttonRef.current.getBoundingClientRect();
10079
- const newDropdownPosition = globalThis.innerWidth - dropdownRect.width;
10080
- if (dropdownRect.right >= globalThis.innerWidth) {
10081
- menuRef.current.style.left = `${newDropdownPosition}px`;
10082
- }
10083
- else if (dropdownButtonRect.left > dropdownRect.left) {
10084
- if (newDropdownPosition > dropdownButtonRect.left) {
10085
- menuRef.current.style.left = '';
10086
- }
10087
- else {
10088
- menuRef.current.style.left = `${newDropdownPosition}px`;
10089
- }
10090
- }
10091
- }
10092
- }, [isVisible]);
10093
- useEventListener(globalThis, 'resize', () => changeDropdownPosition({ isOpened: isVisible, buttonRef: ref, menuRef: dropdownRef }));
10094
- useEffect(() => {
10095
- changeDropdownPosition({ isOpened: isVisible, buttonRef: ref, menuRef: dropdownRef });
10096
- }, [isVisible]);
10097
- return (jsxs("div", { className: style(isVisible ? 'rounded-md shadow-blue-gray' : '', className), ref: ref, role: "navigation", children: [jsx("button", { type: "button", className: "group/btn flex justify-between items-center h-6", "aria-label": ariaLabel, onClick: toggle, role: "button", "aria-labelledby": "labeldiv", children: Array(3)
10098
- .fill(null)
10099
- .map((_, i) => (jsx("div", { className: "w-[3px] h-[3px] rounded mr-2xs bg-primary-text group-hover/btn:bg-primary-hover group-data-transparent:bg-white" }, String(i)))) }), jsx("div", { ref: dropdownRef, className: style('absolute flex flex-col rounded-md bg-white p-xl pb-xs w-56 z-40', {
10100
- hidden: !isVisible,
10101
- }), "aria-hidden": !isVisible, children: renderDropdownItems(items, activeItem) })] }));
10102
- });
10103
- const DropdownMenuItem = JSX(({ isActive, ...rest }) => {
10104
- const link = useLink();
10105
- const { text, href, target, onClick } = link(rest);
10106
- return (jsx("a", { className: style('text-l font-light pb-m hover:text-primary-main', {
10107
- 'text-primary-main': isActive,
10108
- }), href: href, target: target, onClick: onClick, role: "link", ...getAspectsAttributes(rest?.data), children: text }));
10109
- });
10110
- const renderDropdownItems = (items, activeItem) => items?.map((item, i) => (jsx(DropdownMenuItem, { isActive: item === activeItem, ...item }, item?.text ?? String(i))));
10111
-
10112
10071
  const BUTTON_SIZE_STYLE = {
10113
10072
  default: 'w-6 h-6',
10114
10073
  medium: 'w-10 h-10',
@@ -10139,6 +10098,64 @@
10139
10098
  return (jsx(HeaderSecondaryMenuButton, { className: className, image: { icon: 'ChatBotIcon', iconVersion }, ariaLabel: ariaLabel, onClick: handleClick, buttonSize: buttonSize, isGrayBg: true, version: version, isLoading: isLoading, disabled: isLoading, dataTestId: "chat icon" }));
10140
10099
  });
10141
10100
 
10101
+ const DropdownMenu = ({ dropdownRef, items = [], activeItem, ariaLabel, }) => (jsx("div", { ref: dropdownRef, className: "absolute flex flex-col rounded-md bg-white p-xl pb-xs w-56 z-40", "aria-label": ariaLabel, children: renderDropdownItems(items, activeItem) }));
10102
+ const DropdownMenuItem = JSX(({ isActive, ...rest }) => {
10103
+ const link = useLink();
10104
+ const { text, href, target, onClick } = link(rest);
10105
+ return (jsx("a", { className: style('text-l font-light pb-m hover:text-primary-main', {
10106
+ 'text-primary-main': isActive,
10107
+ }), href: href, target: target, onClick: onClick, role: "link", ...getAspectsAttributes(rest?.data), children: text }));
10108
+ });
10109
+ const renderDropdownItems = (items, activeItem) => items?.map((item, i) => (jsx(DropdownMenuItem, { isActive: item === activeItem, ...item }, item?.text ?? String(i))));
10110
+
10111
+ function useDropdownSubMenu({ items, activeItem, onClose, isOpen }) {
10112
+ const popup = usePopupManager();
10113
+ useEffect(() => {
10114
+ if (isOpen) {
10115
+ popup.close();
10116
+ }
10117
+ }, [isOpen]);
10118
+ const close = useCallback(() => {
10119
+ popup.close();
10120
+ onClose?.();
10121
+ }, [onClose]);
10122
+ const parentRef = useRef(null);
10123
+ const popupRef = useOutsideClick(close);
10124
+ useEffect(() => {
10125
+ if (!isOpen || !parentRef.current || !items?.length) {
10126
+ return;
10127
+ }
10128
+ const parentElement = parentRef.current;
10129
+ const { top, left, width, height } = parentElement.getBoundingClientRect();
10130
+ popup.open({
10131
+ popup: jsx(DropdownMenu, { dropdownRef: popupRef, items: items, activeItem: activeItem }),
10132
+ top: top + window.scrollY + height,
10133
+ left,
10134
+ width,
10135
+ });
10136
+ }, [isOpen, items, close]);
10137
+ return parentRef;
10138
+ }
10139
+
10140
+ const HeaderMoreMenuItem = JSX(({ className = '', items, activeItem, ariaLabel = 'Меню' }) => {
10141
+ const [isOpenDropdown, { setFalse, toggle }] = useBool(false);
10142
+ const dropdownMenu = useDropdownSubMenu({
10143
+ items,
10144
+ onClose: setFalse,
10145
+ isOpen: isOpenDropdown,
10146
+ activeItem,
10147
+ });
10148
+ useEffect(() => {
10149
+ dropdownMenu.current?.addEventListener('mouseleave', setFalse);
10150
+ return () => {
10151
+ dropdownMenu.current?.removeEventListener('mouseleave', setFalse);
10152
+ };
10153
+ }, []);
10154
+ return (jsx("div", { className: style(isOpenDropdown ? 'rounded-md shadow-blue-gray' : '', className), ref: dropdownMenu, role: "navigation", children: jsx("button", { type: "button", className: "group/btn flex justify-between items-center h-6", "aria-label": ariaLabel, onClick: toggle, role: "button", "aria-labelledby": "labeldiv", children: Array(3)
10155
+ .fill(null)
10156
+ .map((_, i) => (jsx("div", { className: "w-[3px] h-[3px] rounded mr-2xs bg-primary-text group-hover/btn:bg-primary-hover group-data-transparent:bg-white" }, String(i)))) }) }));
10157
+ });
10158
+
10142
10159
  const HeaderItem = JSX(({ className = '', active, dataItemName, children, data, ...rest }) => {
10143
10160
  const link = useLink();
10144
10161
  const { href, target, text, onClick } = link(rest);
@@ -10146,7 +10163,8 @@
10146
10163
  });
10147
10164
  const getTextStyle$1 = (active = false) => style('font-sans text-l lg:font-light', active ? 'text-primary-main' : 'text-primary-text hover:text-primary-main', 'group-data-transparent:text-white group-data-transparent:hover:text-primary-hover');
10148
10165
 
10149
- const HeaderSubMenuItem = JSX(({ observerOptions, onVisibilityChange, children, className, ...rest }) => {
10166
+ const HeaderSubMenuItem = JSX(({ observerOptions, onVisibilityChange, children, className, items, activeItem, ...rest }) => {
10167
+ const [isOpenDropdown, { setFalse, setTrue }] = useBool(false);
10150
10168
  const observerCallback = useCallback((entries) => {
10151
10169
  if (!entries.length || !onVisibilityChange) {
10152
10170
  return;
@@ -10156,7 +10174,21 @@
10156
10174
  onVisibilityChange(entry.isIntersecting);
10157
10175
  }, [onVisibilityChange]);
10158
10176
  const ref = useIntersectionObserver(observerCallback, observerOptions);
10159
- return (jsx("span", { ref: ref, className: className, role: "menuitem", children: jsx(HeaderItem, { ...rest, children: children }) }));
10177
+ const dropdownMenu = useDropdownSubMenu({
10178
+ items,
10179
+ onClose: setFalse,
10180
+ isOpen: isOpenDropdown,
10181
+ activeItem,
10182
+ });
10183
+ useEffect(() => {
10184
+ dropdownMenu.current?.addEventListener('mouseenter', setTrue);
10185
+ dropdownMenu.current?.addEventListener('mouseleave', setFalse);
10186
+ return () => {
10187
+ dropdownMenu.current?.addEventListener('mouseenter', setTrue);
10188
+ dropdownMenu.current?.removeEventListener('mouseleave', setFalse);
10189
+ };
10190
+ }, []);
10191
+ return (jsx("div", { className: "inline-block", ref: dropdownMenu, children: jsx("span", { ref: ref, className: className, role: "menuitem", children: jsx(HeaderItem, { ...rest, children: children }) }) }));
10160
10192
  });
10161
10193
 
10162
10194
  const BUTTON_STYLE = {
@@ -10181,7 +10213,7 @@
10181
10213
  ? handleIntersectionActivation$1(index)
10182
10214
  : handleIntersectionDeactivation$1(index));
10183
10215
  }), [subItems]);
10184
- return (jsxs("nav", { className: "mt-s flex gap-s items-center justify-between", children: [jsx("div", { ref: subItemsListRef, className: "overflow-hidden whitespace-nowrap pb-s mt-xs space-x-lg", role: "menu", children: subItems.map((_, i) => (jsx(HeaderSubMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeSubItem, observerOptions: observerOptions, onVisibilityChange: subItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(DropdownMenu, { items: dropDownMenuItems, activeItem: activeSubItem, ariaLabel: dropdownMenuAriaLabel })) : null, projectSettings.CHAT_BOT ? (jsx(HeaderChatBotButton, { version: version, iconVersion: iconVersion, ariaLabel: chatBotAriaLabel })) : null, jsx(InternetBankButton, { version: version, ...internetBankButton })] }));
10216
+ return (jsxs("nav", { className: "mt-s flex gap-s items-center justify-between", children: [jsx("div", { ref: subItemsListRef, className: "overflow-hidden whitespace-nowrap pb-s mt-xs space-x-lg", role: "menu", children: subItems.map((_, i) => (jsx(HeaderSubMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeSubItem, activeItem: activeSubItem, observerOptions: observerOptions, onVisibilityChange: subItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(HeaderMoreMenuItem, { items: dropDownMenuItems, activeItem: activeSubItem, ariaLabel: dropdownMenuAriaLabel })) : null, projectSettings.CHAT_BOT ? (jsx(HeaderChatBotButton, { version: version, iconVersion: iconVersion, ariaLabel: chatBotAriaLabel })) : null, jsx(InternetBankButton, { version: version, ...internetBankButton })] }));
10185
10217
  });
10186
10218
  const handleIntersectionActivation$1 = (index) => (prev) => Math.max(prev, index + 1);
10187
10219
  const handleIntersectionDeactivation$1 = (index) => (prev) => Math.min(prev, index);
@@ -10306,7 +10338,7 @@
10306
10338
  }), [navigationItems]);
10307
10339
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
10308
10340
  const { dataFooter, dataHeader, ...logoProps } = logo ?? {};
10309
- return (jsxs("div", { className: "flex items-center justify-between", children: [jsx(Logo, { className: "mr-3xl", bgColor: bgColor, logo: logoProps, data: dataHeader, showTitle: false }), jsx("div", { ref: topItemsListRef, className: "overflow-hidden min-w-40 pb-xs mt-xs", role: "menu", children: navigationItems.map((_, i) => (jsx(HeaderTopMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeTopItem, observerOptions: observerOptions, onVisibilityChange: topItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(DropdownMenu, { className: "mx-xs", items: dropDownMenuItems, activeItem: activeTopItem, ariaLabel: dropdownMenuAriaLabel })) : null, jsx(HeaderSecondaryMenu, { version: version, className: "ml-auto", search: search, navigationItems: navigationItems, ...headerData })] }));
10341
+ return (jsxs("div", { className: "flex items-center justify-between", children: [jsx(Logo, { className: "mr-3xl", bgColor: bgColor, logo: logoProps, data: dataHeader, showTitle: false }), jsx("div", { ref: topItemsListRef, className: "overflow-hidden min-w-40 pb-xs mt-xs", role: "menu", children: navigationItems.map((_, i) => (jsx(HeaderTopMenuItem, { className: visibleItemsCount - 1 < i ? 'invisible' : '', active: _ === activeTopItem, observerOptions: observerOptions, onVisibilityChange: topItemsVisibilityHandlers[i], data: _.dataHeader, ..._ }, String(i)))) }), dropDownMenuItems.length ? (jsx(HeaderMoreMenuItem, { className: "mx-xs rounded-md shadow-blue-gray", items: dropDownMenuItems, activeItem: activeTopItem, ariaLabel: dropdownMenuAriaLabel })) : null, jsx(HeaderSecondaryMenu, { version: version, className: "ml-auto", search: search, navigationItems: navigationItems, ...headerData })] }));
10310
10342
  });
10311
10343
  const handleIntersectionActivation = (index) => (prev) => Math.max(prev, index + 1);
10312
10344
  const handleIntersectionDeactivation = (index) => (prev) => Math.min(prev, index);
@@ -11179,7 +11211,7 @@
11179
11211
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
11180
11212
  });
11181
11213
 
11182
- const packageVersion = "0.14.874";
11214
+ const packageVersion = "0.14.875";
11183
11215
 
11184
11216
  exports.Blocks = Blocks;
11185
11217
  exports.ContentPage = ContentPage;