@redneckz/wildless-cms-uni-blocks 0.14.249 → 0.14.251

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 (122) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +96 -46
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/Header/HeaderChatBotButton.d.ts +4 -1
  5. package/bundle/components/Header/HeaderSecondaryMenuButton.d.ts +4 -1
  6. package/bundle/components/Header/useChatBot.d.ts +4 -1
  7. package/bundle/hooks/useExternalNS.d.ts +2 -1
  8. package/bundle/hooks/useNavigateHandler.d.ts +1 -0
  9. package/bundle/model/LinkProps.d.ts +2 -0
  10. package/dist/components/Header/HeaderChatBotButton.d.ts +4 -1
  11. package/dist/components/Header/HeaderChatBotButton.js +3 -11
  12. package/dist/components/Header/HeaderChatBotButton.js.map +1 -1
  13. package/dist/components/Header/HeaderSecondaryMenuButton.d.ts +4 -1
  14. package/dist/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
  15. package/dist/components/Header/useChatBot.d.ts +4 -1
  16. package/dist/components/Header/useChatBot.js +24 -3
  17. package/dist/components/Header/useChatBot.js.map +1 -1
  18. package/dist/hooks/useExternalNS.d.ts +2 -1
  19. package/dist/hooks/useExternalNS.js +49 -23
  20. package/dist/hooks/useExternalNS.js.map +1 -1
  21. package/dist/hooks/useNavigateHandler.d.ts +1 -0
  22. package/dist/hooks/useNavigateHandler.js +19 -8
  23. package/dist/hooks/useNavigateHandler.js.map +1 -1
  24. package/dist/model/LinkProps.d.ts +2 -0
  25. package/dist/ui-kit/Select/Select.js +1 -1
  26. package/dist/ui-kit/Select/Select.js.map +1 -1
  27. package/dist/ui-kit/Select/SelectPopup.js +1 -1
  28. package/dist/ui-kit/Select/SelectPopup.js.map +1 -1
  29. package/dist/ui-kit/YandexMap/useYandexMaps.js +1 -1
  30. package/dist/ui-kit/YandexMap/useYandexMaps.js.map +1 -1
  31. package/lib/common.css +1 -1
  32. package/lib/components/Header/HeaderChatBotButton.d.ts +4 -1
  33. package/lib/components/Header/HeaderChatBotButton.js +3 -11
  34. package/lib/components/Header/HeaderChatBotButton.js.map +1 -1
  35. package/lib/components/Header/HeaderSecondaryMenuButton.d.ts +4 -1
  36. package/lib/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
  37. package/lib/components/Header/useChatBot.d.ts +4 -1
  38. package/lib/components/Header/useChatBot.js +25 -4
  39. package/lib/components/Header/useChatBot.js.map +1 -1
  40. package/lib/hooks/useExternalNS.d.ts +2 -1
  41. package/lib/hooks/useExternalNS.js +48 -23
  42. package/lib/hooks/useExternalNS.js.map +1 -1
  43. package/lib/hooks/useNavigateHandler.d.ts +1 -0
  44. package/lib/hooks/useNavigateHandler.js +19 -8
  45. package/lib/hooks/useNavigateHandler.js.map +1 -1
  46. package/lib/model/LinkProps.d.ts +2 -0
  47. package/lib/ui-kit/Select/Select.js +1 -1
  48. package/lib/ui-kit/Select/Select.js.map +1 -1
  49. package/lib/ui-kit/Select/SelectPopup.js +1 -1
  50. package/lib/ui-kit/Select/SelectPopup.js.map +1 -1
  51. package/lib/ui-kit/YandexMap/useYandexMaps.js +1 -1
  52. package/lib/ui-kit/YandexMap/useYandexMaps.js.map +1 -1
  53. package/mobile/bundle/bundle.umd.js +100 -34
  54. package/mobile/bundle/bundle.umd.min.js +1 -1
  55. package/mobile/bundle/components/Header/HeaderChatBotButton.d.ts +4 -1
  56. package/mobile/bundle/components/Header/HeaderSecondaryMenuButton.d.ts +4 -1
  57. package/mobile/bundle/components/Header/useChatBot.d.ts +4 -1
  58. package/mobile/bundle/hooks/useExternalNS.d.ts +2 -1
  59. package/mobile/bundle/hooks/useNavigateHandler.d.ts +1 -0
  60. package/mobile/bundle/model/LinkProps.d.ts +2 -0
  61. package/mobile/dist/components/Header/HeaderChatBotButton.d.ts +4 -1
  62. package/mobile/dist/components/Header/HeaderChatBotButton.js +3 -11
  63. package/mobile/dist/components/Header/HeaderChatBotButton.js.map +1 -1
  64. package/mobile/dist/components/Header/HeaderSecondaryMenuButton.d.ts +4 -1
  65. package/mobile/dist/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
  66. package/mobile/dist/components/Header/useChatBot.d.ts +4 -1
  67. package/mobile/dist/components/Header/useChatBot.js +24 -3
  68. package/mobile/dist/components/Header/useChatBot.js.map +1 -1
  69. package/mobile/dist/hooks/useExternalNS.d.ts +2 -1
  70. package/mobile/dist/hooks/useExternalNS.js +49 -23
  71. package/mobile/dist/hooks/useExternalNS.js.map +1 -1
  72. package/mobile/dist/hooks/useNavigateHandler.d.ts +1 -0
  73. package/mobile/dist/hooks/useNavigateHandler.js +19 -8
  74. package/mobile/dist/hooks/useNavigateHandler.js.map +1 -1
  75. package/mobile/dist/model/LinkProps.d.ts +2 -0
  76. package/mobile/dist/ui-kit/Select/Select.js +1 -1
  77. package/mobile/dist/ui-kit/Select/Select.js.map +1 -1
  78. package/mobile/dist/ui-kit/Select/SelectPopup.js +1 -1
  79. package/mobile/dist/ui-kit/Select/SelectPopup.js.map +1 -1
  80. package/mobile/dist/ui-kit/YandexMap/useYandexMaps.js +1 -1
  81. package/mobile/dist/ui-kit/YandexMap/useYandexMaps.js.map +1 -1
  82. package/mobile/lib/common.css +1 -1
  83. package/mobile/lib/components/Header/HeaderChatBotButton.d.ts +4 -1
  84. package/mobile/lib/components/Header/HeaderChatBotButton.js +3 -11
  85. package/mobile/lib/components/Header/HeaderChatBotButton.js.map +1 -1
  86. package/mobile/lib/components/Header/HeaderSecondaryMenuButton.d.ts +4 -1
  87. package/mobile/lib/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
  88. package/mobile/lib/components/Header/useChatBot.d.ts +4 -1
  89. package/mobile/lib/components/Header/useChatBot.js +25 -4
  90. package/mobile/lib/components/Header/useChatBot.js.map +1 -1
  91. package/mobile/lib/hooks/useExternalNS.d.ts +2 -1
  92. package/mobile/lib/hooks/useExternalNS.js +48 -23
  93. package/mobile/lib/hooks/useExternalNS.js.map +1 -1
  94. package/mobile/lib/hooks/useNavigateHandler.d.ts +1 -0
  95. package/mobile/lib/hooks/useNavigateHandler.js +19 -8
  96. package/mobile/lib/hooks/useNavigateHandler.js.map +1 -1
  97. package/mobile/lib/model/LinkProps.d.ts +2 -0
  98. package/mobile/lib/ui-kit/Select/Select.js +1 -1
  99. package/mobile/lib/ui-kit/Select/Select.js.map +1 -1
  100. package/mobile/lib/ui-kit/Select/SelectPopup.js +1 -1
  101. package/mobile/lib/ui-kit/Select/SelectPopup.js.map +1 -1
  102. package/mobile/lib/ui-kit/YandexMap/useYandexMaps.js +1 -1
  103. package/mobile/lib/ui-kit/YandexMap/useYandexMaps.js.map +1 -1
  104. package/mobile/src/components/Header/HeaderChatBotButton.tsx +15 -30
  105. package/mobile/src/components/Header/HeaderSecondaryMenuButton.tsx +2 -1
  106. package/mobile/src/components/Header/useChatBot.ts +29 -5
  107. package/mobile/src/hooks/useExternalNS.ts +55 -25
  108. package/mobile/src/hooks/useNavigateHandler.ts +34 -18
  109. package/mobile/src/model/LinkProps.ts +2 -0
  110. package/mobile/src/ui-kit/Select/Select.tsx +1 -1
  111. package/mobile/src/ui-kit/Select/SelectPopup.tsx +1 -1
  112. package/mobile/src/ui-kit/YandexMap/useYandexMaps.ts +1 -1
  113. package/package.json +1 -1
  114. package/src/components/Header/HeaderChatBotButton.tsx +15 -30
  115. package/src/components/Header/HeaderSecondaryMenuButton.tsx +2 -1
  116. package/src/components/Header/useChatBot.ts +29 -5
  117. package/src/hooks/useExternalNS.ts +55 -25
  118. package/src/hooks/useNavigateHandler.ts +34 -18
  119. package/src/model/LinkProps.ts +2 -0
  120. package/src/ui-kit/Select/Select.tsx +1 -1
  121. package/src/ui-kit/Select/SelectPopup.tsx +1 -1
  122. package/src/ui-kit/YandexMap/useYandexMaps.ts +1 -1
@@ -1,5 +1,6 @@
1
1
  import { useEffect } from '@redneckz/uni-jsx/lib/hooks';
2
2
  import { useEventListener } from '@redneckz/uni-jsx/lib/hooks/useEventListener';
3
+ import { useChatBot } from '../components/Header/useChatBot';
3
4
  import { type Target } from '../model/LinkProps';
4
5
  import { projectSettings } from '../ProjectSettings';
5
6
  import { type PreventableEvent } from '../ui-kit/PreventableEvent';
@@ -10,35 +11,45 @@ import { isURL } from '../utils/url';
10
11
  import { handlerDecorator } from './handlerDecorator';
11
12
 
12
13
  export type NavigateElement = Element | null;
14
+ export type MethodsMap = Record<string, (params: any) => any>;
13
15
 
14
16
  export const useNavigateHandler = handlerDecorator(() => {
15
17
  useEffect(() => {
16
18
  getSessionQuery(); //? Call first time for save query in sessionStorage
17
19
  }, []);
18
20
 
19
- useEventListener(globalThis, 'click', navigationHandler);
20
- });
21
+ const loadBot = useChatBot(projectSettings.CHAT_BOT);
21
22
 
22
- const navigationHandler = (ev: PreventableEvent & { target: EventTarget | null }) => {
23
- const element = getAnchorElement(ev.target as NavigateElement);
23
+ const reachGoalYM = (targetName?: string) => {
24
+ const [ymID] = projectSettings.YANDEX_METRIKA_ID?.split(',').reverse() ?? [];
24
25
 
25
- const [ymID] = projectSettings._.YANDEX_METRIKA_ID?.split(',').reverse() ?? [];
26
- const targetName = element?.dataset?.ymtarget;
26
+ if ([ymID, targetName, globalThis.ym].every(Boolean)) {
27
+ globalThis.ym(ymID, 'reachGoal', targetName);
28
+ }
29
+ };
27
30
 
28
- if ([ymID, targetName, globalThis.ym].every(Boolean)) {
29
- globalThis.ym(ymID, 'reachGoal', targetName);
30
- }
31
+ useEventListener(globalThis, 'click', navigationHandler({ loadBot, reachGoalYM }));
32
+ });
31
33
 
32
- if (isURL(element?.href) && !element?.href?.startsWith(globalThis.location?.origin)) {
33
- ev.preventDefault();
34
- ev.stopPropagation();
34
+ const navigationHandler =
35
+ (methods: MethodsMap) => (ev: PreventableEvent & { target: EventTarget | null }) => {
36
+ const element = getAnchorElement(ev.target as NavigateElement);
35
37
 
36
- const url = adjustSessionQuery(element?.href) || element?.href;
37
- if (url) {
38
- goTransition(element?.target as Target)?.(url);
38
+ for (const key in element?.dataset) {
39
+ getScenario(key)?.(element as HTMLElement, methods);
39
40
  }
40
- }
41
- };
41
+
42
+ if (isURL(element?.href) && !element?.href?.startsWith(globalThis.location?.origin)) {
43
+ ev.preventDefault();
44
+ ev.stopPropagation();
45
+
46
+ const url = adjustSessionQuery(element?.href) || element?.href;
47
+ if (url) {
48
+ const transition = getTransition(element?.target as Target);
49
+ transition?.(url);
50
+ }
51
+ }
52
+ };
42
53
 
43
54
  const getAnchorElement = (target: NavigateElement) => {
44
55
  let _target = target;
@@ -49,7 +60,7 @@ const getAnchorElement = (target: NavigateElement) => {
49
60
  return _target as HTMLAnchorElement | null;
50
61
  };
51
62
 
52
- const goTransition = tableFunc<Target, (url: string) => void>([
63
+ const getTransition = tableFunc<Target, (url: string) => void>([
53
64
  [(_) => _ === '_blank', (url) => globalThis.open(url, '_blank')],
54
65
  [(_) => _ === '_parent', (url) => globalThis.parent && (globalThis.parent.location.href = url)],
55
66
  [
@@ -60,3 +71,8 @@ const goTransition = tableFunc<Target, (url: string) => void>([
60
71
  ],
61
72
  [() => true, (url) => globalThis.location && (globalThis.location.href = url)],
62
73
  ]);
74
+
75
+ const getScenario = tableFunc<string, (target: HTMLElement | null, methods: MethodsMap) => void>([
76
+ [(_) => _ === 'ymtarget', (target, methods) => methods?.reachGoalYM(target?.dataset?.ymtarget)],
77
+ [(_) => _ === 'chatbot', (target, methods) => methods?.loadBot({ target })],
78
+ ]);
@@ -14,6 +14,8 @@ export type Target = '' | '_self' | '_blank' | '_parent' | '_top';
14
14
  export type DataAttributes = {
15
15
  /** @title Имя цели для Яндекс Метрики */
16
16
  ymTarget?: string;
17
+ /** @title Открыть чат бот */
18
+ chatbot?: boolean;
17
19
  };
18
20
 
19
21
  export interface LinkCommonProps {
@@ -35,7 +35,7 @@ export const Select = JSX<SelectProps>(
35
35
  isBorder = true,
36
36
  placeholder = '',
37
37
  isSearch = false,
38
- iconVersion,
38
+ iconVersion = 'black',
39
39
  onChange,
40
40
  disabled,
41
41
  }) => {
@@ -19,7 +19,7 @@ export const SelectPopup = JSX<SelectPopupProps>(
19
19
  ({ popupRef, options, value, query, onChange, iconVersion }) =>
20
20
  options?.length ? (
21
21
  <div
22
- className="bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md"
22
+ className="bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md shadow-2xl"
23
23
  role="list"
24
24
  ref={popupRef}
25
25
  >
@@ -9,5 +9,5 @@ export const useYandexMaps = () => {
9
9
  projectSettings.YANDEX_MAP_API_KEY || ''
10
10
  }&lang=ru_RU`;
11
11
 
12
- return useExternalNS<typeof ymaps>(YMAPS_NAMESPACE, url);
12
+ return useExternalNS<typeof ymaps>(YMAPS_NAMESPACE, url, false);
13
13
  };