@redneckz/wildless-cms-uni-blocks 0.14.845 → 0.14.850

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 (167) hide show
  1. package/bundle/bundle.umd.js +27 -78
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/components/Header/HeaderChatBotButton.d.ts +0 -1
  4. package/bundle/hooks/useAspects/aspects/forwardQuery.d.ts +1 -1
  5. package/bundle/hooks/useAspects/handleAspects.d.ts +1 -1
  6. package/bundle/hooks/useAspects/useAspects.d.ts +1 -1
  7. package/bundle/retail/validator/validators.d.ts +1 -0
  8. package/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  9. package/dist/components/Header/HeaderChatBotButton.d.ts +0 -1
  10. package/dist/components/Header/HeaderChatBotButton.js +15 -4
  11. package/dist/components/Header/HeaderChatBotButton.js.map +1 -1
  12. package/dist/components/Header/HeaderSubMenu.js +1 -1
  13. package/dist/components/Header/HeaderSubMenu.js.map +1 -1
  14. package/dist/components/Header/HeaderTop.js +1 -1
  15. package/dist/components/Header/HeaderTop.js.map +1 -1
  16. package/dist/hooks/useAspects/aspects/forwardQuery.d.ts +1 -1
  17. package/dist/hooks/useAspects/aspects/forwardQuery.js +1 -1
  18. package/dist/hooks/useAspects/aspects/forwardQuery.js.map +1 -1
  19. package/dist/hooks/useAspects/handleAspects.d.ts +1 -1
  20. package/dist/hooks/useAspects/handleAspects.js +5 -2
  21. package/dist/hooks/useAspects/handleAspects.js.map +1 -1
  22. package/dist/hooks/useAspects/useAspects.d.ts +1 -1
  23. package/dist/retail/components/Fields/BeginDateField.js +1 -1
  24. package/dist/retail/components/Fields/BeginDateField.js.map +1 -1
  25. package/dist/retail/components/Fields/ParticipantDateRegistrationField.js +1 -1
  26. package/dist/retail/components/Fields/ParticipantDateRegistrationField.js.map +1 -1
  27. package/dist/retail/utils/renderStep.js +3 -1
  28. package/dist/retail/utils/renderStep.js.map +1 -1
  29. package/dist/retail/validator/validatorObj.js +2 -2
  30. package/dist/retail/validator/validatorObj.js.map +1 -1
  31. package/dist/retail/validator/validators.d.ts +1 -0
  32. package/dist/retail/validator/validators.js +3 -1
  33. package/dist/retail/validator/validators.js.map +1 -1
  34. package/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  35. package/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  36. package/lib/common.css +1 -1
  37. package/lib/components/Header/HeaderChatBotButton.d.ts +0 -1
  38. package/lib/components/Header/HeaderChatBotButton.js +15 -4
  39. package/lib/components/Header/HeaderChatBotButton.js.map +1 -1
  40. package/lib/components/Header/HeaderSubMenu.js +1 -1
  41. package/lib/components/Header/HeaderSubMenu.js.map +1 -1
  42. package/lib/components/Header/HeaderTop.js +1 -1
  43. package/lib/components/Header/HeaderTop.js.map +1 -1
  44. package/lib/hooks/useAspects/aspects/forwardQuery.d.ts +1 -1
  45. package/lib/hooks/useAspects/aspects/forwardQuery.js +1 -1
  46. package/lib/hooks/useAspects/aspects/forwardQuery.js.map +1 -1
  47. package/lib/hooks/useAspects/handleAspects.d.ts +1 -1
  48. package/lib/hooks/useAspects/handleAspects.js +5 -2
  49. package/lib/hooks/useAspects/handleAspects.js.map +1 -1
  50. package/lib/hooks/useAspects/useAspects.d.ts +1 -1
  51. package/lib/retail/components/Fields/BeginDateField.js +1 -1
  52. package/lib/retail/components/Fields/BeginDateField.js.map +1 -1
  53. package/lib/retail/components/Fields/ParticipantDateRegistrationField.js +1 -1
  54. package/lib/retail/components/Fields/ParticipantDateRegistrationField.js.map +1 -1
  55. package/lib/retail/utils/renderStep.js +3 -1
  56. package/lib/retail/utils/renderStep.js.map +1 -1
  57. package/lib/retail/validator/validatorObj.js +3 -3
  58. package/lib/retail/validator/validatorObj.js.map +1 -1
  59. package/lib/retail/validator/validators.d.ts +1 -0
  60. package/lib/retail/validator/validators.js +1 -0
  61. package/lib/retail/validator/validators.js.map +1 -1
  62. package/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  63. package/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  64. package/mobile/bundle/bundle.umd.js +27 -78
  65. package/mobile/bundle/bundle.umd.min.js +1 -1
  66. package/mobile/bundle/components/Header/HeaderChatBotButton.d.ts +0 -1
  67. package/mobile/bundle/hooks/useAspects/aspects/forwardQuery.d.ts +1 -1
  68. package/mobile/bundle/hooks/useAspects/handleAspects.d.ts +1 -1
  69. package/mobile/bundle/hooks/useAspects/useAspects.d.ts +1 -1
  70. package/mobile/bundle/retail/validator/validators.d.ts +1 -0
  71. package/mobile/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  72. package/mobile/dist/components/Header/HeaderChatBotButton.d.ts +0 -1
  73. package/mobile/dist/components/Header/HeaderChatBotButton.js +15 -4
  74. package/mobile/dist/components/Header/HeaderChatBotButton.js.map +1 -1
  75. package/mobile/dist/components/Header/HeaderSubMenu.js +1 -1
  76. package/mobile/dist/components/Header/HeaderSubMenu.js.map +1 -1
  77. package/mobile/dist/components/Header/HeaderTop.js +1 -1
  78. package/mobile/dist/components/Header/HeaderTop.js.map +1 -1
  79. package/mobile/dist/hooks/useAspects/aspects/forwardQuery.d.ts +1 -1
  80. package/mobile/dist/hooks/useAspects/aspects/forwardQuery.js +1 -1
  81. package/mobile/dist/hooks/useAspects/aspects/forwardQuery.js.map +1 -1
  82. package/mobile/dist/hooks/useAspects/handleAspects.d.ts +1 -1
  83. package/mobile/dist/hooks/useAspects/handleAspects.js +5 -2
  84. package/mobile/dist/hooks/useAspects/handleAspects.js.map +1 -1
  85. package/mobile/dist/hooks/useAspects/useAspects.d.ts +1 -1
  86. package/mobile/dist/retail/components/Fields/BeginDateField.js +1 -1
  87. package/mobile/dist/retail/components/Fields/BeginDateField.js.map +1 -1
  88. package/mobile/dist/retail/components/Fields/ParticipantDateRegistrationField.js +1 -1
  89. package/mobile/dist/retail/components/Fields/ParticipantDateRegistrationField.js.map +1 -1
  90. package/mobile/dist/retail/utils/renderStep.js +3 -1
  91. package/mobile/dist/retail/utils/renderStep.js.map +1 -1
  92. package/mobile/dist/retail/validator/validatorObj.js +2 -2
  93. package/mobile/dist/retail/validator/validatorObj.js.map +1 -1
  94. package/mobile/dist/retail/validator/validators.d.ts +1 -0
  95. package/mobile/dist/retail/validator/validators.js +3 -1
  96. package/mobile/dist/retail/validator/validators.js.map +1 -1
  97. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  98. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  99. package/mobile/lib/common.css +1 -1
  100. package/mobile/lib/components/Header/HeaderChatBotButton.d.ts +0 -1
  101. package/mobile/lib/components/Header/HeaderChatBotButton.js +15 -4
  102. package/mobile/lib/components/Header/HeaderChatBotButton.js.map +1 -1
  103. package/mobile/lib/components/Header/HeaderSubMenu.js +1 -1
  104. package/mobile/lib/components/Header/HeaderSubMenu.js.map +1 -1
  105. package/mobile/lib/components/Header/HeaderTop.js +1 -1
  106. package/mobile/lib/components/Header/HeaderTop.js.map +1 -1
  107. package/mobile/lib/hooks/useAspects/aspects/forwardQuery.d.ts +1 -1
  108. package/mobile/lib/hooks/useAspects/aspects/forwardQuery.js +1 -1
  109. package/mobile/lib/hooks/useAspects/aspects/forwardQuery.js.map +1 -1
  110. package/mobile/lib/hooks/useAspects/handleAspects.d.ts +1 -1
  111. package/mobile/lib/hooks/useAspects/handleAspects.js +5 -2
  112. package/mobile/lib/hooks/useAspects/handleAspects.js.map +1 -1
  113. package/mobile/lib/hooks/useAspects/useAspects.d.ts +1 -1
  114. package/mobile/lib/retail/components/Fields/BeginDateField.js +1 -1
  115. package/mobile/lib/retail/components/Fields/BeginDateField.js.map +1 -1
  116. package/mobile/lib/retail/components/Fields/ParticipantDateRegistrationField.js +1 -1
  117. package/mobile/lib/retail/components/Fields/ParticipantDateRegistrationField.js.map +1 -1
  118. package/mobile/lib/retail/utils/renderStep.js +3 -1
  119. package/mobile/lib/retail/utils/renderStep.js.map +1 -1
  120. package/mobile/lib/retail/validator/validatorObj.js +3 -3
  121. package/mobile/lib/retail/validator/validatorObj.js.map +1 -1
  122. package/mobile/lib/retail/validator/validators.d.ts +1 -0
  123. package/mobile/lib/retail/validator/validators.js +1 -0
  124. package/mobile/lib/retail/validator/validators.js.map +1 -1
  125. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  126. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  127. package/mobile/src/components/Header/HeaderChatBotButton.tsx +18 -12
  128. package/mobile/src/components/Header/HeaderSubMenu.tsx +0 -1
  129. package/mobile/src/components/Header/HeaderTop.tsx +1 -6
  130. package/mobile/src/hooks/useAspects/aspects/forwardQuery.ts +1 -1
  131. package/mobile/src/hooks/useAspects/handleAspects.ts +6 -2
  132. package/mobile/src/hooks/useAspects/useAspects.ts +1 -1
  133. package/mobile/src/retail/components/Fields/BeginDateField.tsx +1 -0
  134. package/mobile/src/retail/components/Fields/ParticipantDateRegistrationField.tsx +5 -1
  135. package/mobile/src/retail/utils/renderStep.tsx +3 -1
  136. package/mobile/src/retail/validator/validatorObj.ts +3 -2
  137. package/mobile/src/retail/validator/validators.ts +3 -0
  138. package/mobile/src/ui-kit/DatePicker/DatePickerControl.tsx +1 -0
  139. package/package.json +1 -1
  140. package/src/components/Header/HeaderChatBotButton.tsx +18 -12
  141. package/src/components/Header/HeaderSubMenu.tsx +0 -1
  142. package/src/components/Header/HeaderTop.tsx +1 -6
  143. package/src/hooks/useAspects/aspects/forwardQuery.ts +1 -1
  144. package/src/hooks/useAspects/handleAspects.ts +6 -2
  145. package/src/hooks/useAspects/useAspects.ts +1 -1
  146. package/src/retail/components/Fields/BeginDateField.tsx +1 -0
  147. package/src/retail/components/Fields/ParticipantDateRegistrationField.tsx +5 -1
  148. package/src/retail/utils/renderStep.tsx +3 -1
  149. package/src/retail/validator/validatorObj.ts +3 -2
  150. package/src/retail/validator/validators.ts +3 -0
  151. package/src/ui-kit/DatePicker/DatePickerControl.tsx +1 -0
  152. package/bundle/components/Header/useChatBot.d.ts +0 -5
  153. package/dist/components/Header/useChatBot.d.ts +0 -5
  154. package/dist/components/Header/useChatBot.js +0 -61
  155. package/dist/components/Header/useChatBot.js.map +0 -1
  156. package/lib/components/Header/useChatBot.d.ts +0 -5
  157. package/lib/components/Header/useChatBot.js +0 -58
  158. package/lib/components/Header/useChatBot.js.map +0 -1
  159. package/mobile/bundle/components/Header/useChatBot.d.ts +0 -5
  160. package/mobile/dist/components/Header/useChatBot.d.ts +0 -5
  161. package/mobile/dist/components/Header/useChatBot.js +0 -61
  162. package/mobile/dist/components/Header/useChatBot.js.map +0 -1
  163. package/mobile/lib/components/Header/useChatBot.d.ts +0 -5
  164. package/mobile/lib/components/Header/useChatBot.js +0 -58
  165. package/mobile/lib/components/Header/useChatBot.js.map +0 -1
  166. package/mobile/src/components/Header/useChatBot.ts +0 -86
  167. package/src/components/Header/useChatBot.ts +0 -86
@@ -51,12 +51,7 @@ export const HeaderTop = JSX<HeaderTopProps>(
51
51
  )}
52
52
  <div className="flex gap-lg items-center">
53
53
  {projectSettings.CHAT_BOT ? (
54
- <HeaderChatBotButton
55
- version={version}
56
- iconVersion={iconVersion}
57
- chat={projectSettings.CHAT_BOT}
58
- buttonSize="medium"
59
- />
54
+ <HeaderChatBotButton version={version} iconVersion={iconVersion} buttonSize="medium" />
60
55
  ) : null}
61
56
  <InternetBankButton version={version} {...internetBankButton} />
62
57
  </div>
@@ -4,7 +4,7 @@ import { type PreventableEventWithTarget } from '../../../ui-kit/PreventableEven
4
4
  import { adjustSessionQuery } from '../../../utils/adjustSessionQuery';
5
5
  import { isURL } from '../../../utils/url';
6
6
 
7
- export const forwardQuery = (ev: PreventableEventWithTarget) => {
7
+ export const forwardQuery = async (ev: PreventableEventWithTarget) => {
8
8
  const anchor = (ev.target as Element | null)?.closest('a');
9
9
  const navigator = locationNavigator();
10
10
 
@@ -7,8 +7,12 @@ export type HandleAspectsProps = {
7
7
  ev: PreventableEventWithTarget;
8
8
  };
9
9
 
10
- export const handleAspects = ({ aspectsAttributes, aspects, ev }: HandleAspectsProps) => {
10
+ export const handleAspects = async ({ aspectsAttributes, aspects, ev }: HandleAspectsProps) => {
11
11
  for (const { aspectName, params } of aspectsAttributes ?? []) {
12
- aspects[aspectName ?? '']?.(ev, params);
12
+ const aspectFn = aspects[aspectName ?? ''];
13
+
14
+ if (aspectFn) {
15
+ await aspectFn(ev, params);
16
+ }
13
17
  }
14
18
  };
@@ -14,7 +14,7 @@ export interface AspectsAttribute {
14
14
  }
15
15
 
16
16
  export interface Aspects {
17
- [key: string]: (ev: PreventableEventWithTarget, data?: AspectData) => void;
17
+ [key: string]: (ev: PreventableEventWithTarget, data?: AspectData) => Promise<void>;
18
18
  }
19
19
 
20
20
  export function useAspects(): Aspects {
@@ -9,5 +9,6 @@ export const BeginDateField = JSX<CustomFieldProps>(({ field, input }) => (
9
9
  {...field(input?.name ?? '')}
10
10
  {...input}
11
11
  disabled={isEsiaAuthorize(field, input)}
12
+ maxDate={new Date()}
12
13
  />
13
14
  ));
@@ -3,5 +3,9 @@ import { DatePickerControl } from '../../../ui-kit/DatePicker/DatePickerControl'
3
3
  import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
4
4
 
5
5
  export const ParticipantDateRegistrationField = JSX<CustomFieldProps>(({ field, input }) => (
6
- <DatePickerControl label="Дата регистрации по месту жительства" {...field(input?.name ?? '')} />
6
+ <DatePickerControl
7
+ label="Дата регистрации по месту жительства"
8
+ {...field(input?.name ?? '')}
9
+ maxDate={new Date()}
10
+ />
7
11
  ));
@@ -25,7 +25,9 @@ export const renderStep = <SectionsProps extends SectionsRetailProps>({
25
25
  const cleanElements = [
26
26
  !checkCondition({ condition }, getValue(field)) ? renderTitle(title) : null,
27
27
  ...renderInputs({ field, inputs, params }),
28
- ].filter(Boolean);
28
+ ]
29
+ .filter(Boolean)
30
+ .map((_, j) => ({ ..._, key: _.key ?? `elem-${j}` }));
29
31
 
30
32
  return cleanElements.length ? (
31
33
  <div key={`section-${i}`} className={style(inputColumnStyles(columns), 'grid gap-x-m')}>
@@ -13,6 +13,7 @@ import {
13
13
  jobNumberValidator,
14
14
  lengthStringValidator,
15
15
  nameRetailValidator,
16
+ notLaterDateValidator,
16
17
  numberValidator,
17
18
  serieValidator,
18
19
  snilsValidator,
@@ -48,7 +49,7 @@ const validatorRetailObj: Record<string, Validator> = {
48
49
  lastJobExperience: jobNumberValidator('Укажите стаж на последнем месте работы'),
49
50
  experience5Years: jobNumberValidator('Укажите общий стаж за последние 5 лет'),
50
51
  jobsNumber: jobNumberValidator('Укажите количество мест работы за последние 5 лет'),
51
- beginDate: defaultValidator('Укажите дату заключения трудового договора'),
52
+ beginDate: notLaterDateValidator('Укажите дату заключения трудового договора'),
52
53
  addressFact: addressDaDataValidator(),
53
54
  addressRegistration: addressDaDataValidator(),
54
55
  addressRetail: defaultSelectValidator('Выберите адрес банка'),
@@ -75,7 +76,7 @@ const validatorRetailObj: Record<string, Validator> = {
75
76
  dulNumber: numberValidator('Укажите номер паспорта'),
76
77
  dulSubdivisionCode: numberValidator('Укажите код подразделения'),
77
78
  dulIssuedBy: defaultValidator('Укажите организацию, выдавшую паспорт'),
78
- participantDateRegistration: defaultValidator('Укажите дату регистрации'),
79
+ participantDateRegistration: notLaterDateValidator('Укажите дату регистрации'),
79
80
  retirementIncome: defaultValidator(),
80
81
  otherIncome: defaultValidator(),
81
82
  wages: defaultValidator(),
@@ -85,6 +85,9 @@ export const passportValidator = (birthDate?: Date) =>
85
85
  export const deliveryDateValidator = (errorMsg: string) =>
86
86
  validator((_) => _?.getTime() >= new Date().getTime())(errorMsg);
87
87
 
88
+ export const notLaterDateValidator = (errorMsg: string) =>
89
+ validator((_) => _?.getTime() <= new Date().getTime())(errorMsg);
90
+
88
91
  export const numberValidator = (errorMsg: string) =>
89
92
  validator((_) => typeof _ === 'string' && _.length === 6)(errorMsg);
90
93
 
@@ -8,6 +8,7 @@ import { DatePicker } from './DatePicker';
8
8
 
9
9
  export interface DatePickerControlProps extends DefaultControlType, ControlProps<Date> {
10
10
  minDate?: Date;
11
+ maxDate?: Date;
11
12
  }
12
13
 
13
14
  export const DatePickerControl = JSX<DatePickerControlProps>(
@@ -1,5 +0,0 @@
1
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
2
- export declare const useChatBot: (chat?: string) => {
3
- load: (ev: PreventableEventWithTarget) => void;
4
- isLoading: boolean;
5
- };
@@ -1,5 +0,0 @@
1
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
2
- export declare const useChatBot: (chat?: string) => {
3
- load: (ev: PreventableEventWithTarget) => void;
4
- isLoading: boolean;
5
- };
@@ -1,61 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.useChatBot = void 0;
3
- const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
4
- const useExternalNS_1 = require("../../hooks/useExternalNS");
5
- const CHAT_NAMESPACE = 'chatbot';
6
- const CHAT_BUTTON_EXTERNAL_NAME = 'text-page__btn-chat';
7
- const CHAT_FRAME_ID = 'webchat-js-container:webchat_rshb';
8
- const CHAT_STORAGE_NAME = 'webchat-keep-open';
9
- const BUSINESS_CHAT_PREFIX = '/webchat-api';
10
- const BUSINESS_CHAT_CLASSNAME = '@container fixed right-0 bottom-0 top-0 h-full w-full z-[100] @3xl:w-auto h-fit';
11
- const CHATBOT_URL = {
12
- personal: '//chat.mes.rshb.ru/assets/js/webchat_rshb',
13
- business: '/webchat',
14
- };
15
- const useChatBot = (chat) => {
16
- const [isLoading, setIsLoading] = (0, hooks_1.useState)(false);
17
- (0, hooks_1.useEffect)(() => globalThis.localStorage?.setItem(CHAT_STORAGE_NAME, String(Date.now())), []);
18
- const chatUrl = CHATBOT_URL[chat ?? ''];
19
- const load = (0, hooks_1.useCallback)((ev) => {
20
- if (!chatUrl) {
21
- return;
22
- }
23
- setIsLoading(true);
24
- if (chat === 'business') {
25
- renderBusinessChatBot(chatUrl).finally(() => setIsLoading(false));
26
- }
27
- else {
28
- renderPersonalChatBot(ev, chatUrl).finally(() => setIsLoading(false));
29
- }
30
- }, [chatUrl, chat]);
31
- return { load, isLoading };
32
- };
33
- exports.useChatBot = useChatBot;
34
- const renderPersonalChatBot = async (ev, chatUrl) => {
35
- const target = ev.target;
36
- if (!target?.classList.contains(CHAT_BUTTON_EXTERNAL_NAME)) {
37
- target?.classList.add(CHAT_BUTTON_EXTERNAL_NAME);
38
- }
39
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
40
- if (!chatFrame) {
41
- await (0, useExternalNS_1.initializeExternalNS)(CHAT_NAMESPACE, chatUrl);
42
- }
43
- };
44
- const renderBusinessChatBot = async (chatUrl) => {
45
- const businessChat = (await (0, useExternalNS_1.initializeExternalNS)(CHAT_NAMESPACE, `${chatUrl}/bundle.js`, true));
46
- (0, useExternalNS_1.initializeExternalStylesheet)(`${chatUrl}/bundle.css`);
47
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
48
- if (chatFrame) {
49
- businessChat?.chatOpen?.();
50
- }
51
- else {
52
- createChatFrame();
53
- businessChat?.render?.(CHAT_FRAME_ID, true, BUSINESS_CHAT_PREFIX, BUSINESS_CHAT_CLASSNAME);
54
- }
55
- };
56
- const createChatFrame = () => {
57
- const chatFrame = globalThis.document.createElement('div');
58
- chatFrame.id = CHAT_FRAME_ID;
59
- globalThis.document.body.appendChild(chatFrame);
60
- };
61
- //# sourceMappingURL=useChatBot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useChatBot.js","sourceRoot":"","sources":["../../../src/components/Header/useChatBot.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
2
- export declare const useChatBot: (chat?: string) => {
3
- load: (ev: PreventableEventWithTarget) => void;
4
- isLoading: boolean;
5
- };
@@ -1,58 +0,0 @@
1
- import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
- import { initializeExternalNS, initializeExternalStylesheet } from '../../hooks/useExternalNS.js';
3
- const CHAT_NAMESPACE = 'chatbot';
4
- const CHAT_BUTTON_EXTERNAL_NAME = 'text-page__btn-chat';
5
- const CHAT_FRAME_ID = 'webchat-js-container:webchat_rshb';
6
- const CHAT_STORAGE_NAME = 'webchat-keep-open';
7
- const BUSINESS_CHAT_PREFIX = '/webchat-api';
8
- const BUSINESS_CHAT_CLASSNAME = '@container fixed right-0 bottom-0 top-0 h-full w-full z-[100] @3xl:w-auto h-fit';
9
- const CHATBOT_URL = {
10
- personal: '//chat.mes.rshb.ru/assets/js/webchat_rshb',
11
- business: '/webchat',
12
- };
13
- export const useChatBot = (chat) => {
14
- const [isLoading, setIsLoading] = useState(false);
15
- useEffect(() => globalThis.localStorage?.setItem(CHAT_STORAGE_NAME, String(Date.now())), []);
16
- const chatUrl = CHATBOT_URL[chat ?? ''];
17
- const load = useCallback((ev) => {
18
- if (!chatUrl) {
19
- return;
20
- }
21
- setIsLoading(true);
22
- if (chat === 'business') {
23
- renderBusinessChatBot(chatUrl).finally(() => setIsLoading(false));
24
- }
25
- else {
26
- renderPersonalChatBot(ev, chatUrl).finally(() => setIsLoading(false));
27
- }
28
- }, [chatUrl, chat]);
29
- return { load, isLoading };
30
- };
31
- const renderPersonalChatBot = async (ev, chatUrl) => {
32
- const target = ev.target;
33
- if (!target?.classList.contains(CHAT_BUTTON_EXTERNAL_NAME)) {
34
- target?.classList.add(CHAT_BUTTON_EXTERNAL_NAME);
35
- }
36
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
37
- if (!chatFrame) {
38
- await initializeExternalNS(CHAT_NAMESPACE, chatUrl);
39
- }
40
- };
41
- const renderBusinessChatBot = async (chatUrl) => {
42
- const businessChat = (await initializeExternalNS(CHAT_NAMESPACE, `${chatUrl}/bundle.js`, true));
43
- initializeExternalStylesheet(`${chatUrl}/bundle.css`);
44
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
45
- if (chatFrame) {
46
- businessChat?.chatOpen?.();
47
- }
48
- else {
49
- createChatFrame();
50
- businessChat?.render?.(CHAT_FRAME_ID, true, BUSINESS_CHAT_PREFIX, BUSINESS_CHAT_CLASSNAME);
51
- }
52
- };
53
- const createChatFrame = () => {
54
- const chatFrame = globalThis.document.createElement('div');
55
- chatFrame.id = CHAT_FRAME_ID;
56
- globalThis.document.body.appendChild(chatFrame);
57
- };
58
- //# sourceMappingURL=useChatBot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useChatBot.js","sourceRoot":"","sources":["../../../src/components/Header/useChatBot.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
2
- export declare const useChatBot: (chat?: string) => {
3
- load: (ev: PreventableEventWithTarget) => void;
4
- isLoading: boolean;
5
- };
@@ -1,5 +0,0 @@
1
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
2
- export declare const useChatBot: (chat?: string) => {
3
- load: (ev: PreventableEventWithTarget) => void;
4
- isLoading: boolean;
5
- };
@@ -1,61 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.useChatBot = void 0;
3
- const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
4
- const useExternalNS_1 = require("../../hooks/useExternalNS");
5
- const CHAT_NAMESPACE = 'chatbot';
6
- const CHAT_BUTTON_EXTERNAL_NAME = 'text-page__btn-chat';
7
- const CHAT_FRAME_ID = 'webchat-js-container:webchat_rshb';
8
- const CHAT_STORAGE_NAME = 'webchat-keep-open';
9
- const BUSINESS_CHAT_PREFIX = '/webchat-api';
10
- const BUSINESS_CHAT_CLASSNAME = '@container fixed right-0 bottom-0 top-0 h-full w-full z-[100] @3xl:w-auto h-fit';
11
- const CHATBOT_URL = {
12
- personal: '//chat.mes.rshb.ru/assets/js/webchat_rshb',
13
- business: '/webchat',
14
- };
15
- const useChatBot = (chat) => {
16
- const [isLoading, setIsLoading] = (0, hooks_1.useState)(false);
17
- (0, hooks_1.useEffect)(() => globalThis.localStorage?.setItem(CHAT_STORAGE_NAME, String(Date.now())), []);
18
- const chatUrl = CHATBOT_URL[chat ?? ''];
19
- const load = (0, hooks_1.useCallback)((ev) => {
20
- if (!chatUrl) {
21
- return;
22
- }
23
- setIsLoading(true);
24
- if (chat === 'business') {
25
- renderBusinessChatBot(chatUrl).finally(() => setIsLoading(false));
26
- }
27
- else {
28
- renderPersonalChatBot(ev, chatUrl).finally(() => setIsLoading(false));
29
- }
30
- }, [chatUrl, chat]);
31
- return { load, isLoading };
32
- };
33
- exports.useChatBot = useChatBot;
34
- const renderPersonalChatBot = async (ev, chatUrl) => {
35
- const target = ev.target;
36
- if (!target?.classList.contains(CHAT_BUTTON_EXTERNAL_NAME)) {
37
- target?.classList.add(CHAT_BUTTON_EXTERNAL_NAME);
38
- }
39
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
40
- if (!chatFrame) {
41
- await (0, useExternalNS_1.initializeExternalNS)(CHAT_NAMESPACE, chatUrl);
42
- }
43
- };
44
- const renderBusinessChatBot = async (chatUrl) => {
45
- const businessChat = (await (0, useExternalNS_1.initializeExternalNS)(CHAT_NAMESPACE, `${chatUrl}/bundle.js`, true));
46
- (0, useExternalNS_1.initializeExternalStylesheet)(`${chatUrl}/bundle.css`);
47
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
48
- if (chatFrame) {
49
- businessChat?.chatOpen?.();
50
- }
51
- else {
52
- createChatFrame();
53
- businessChat?.render?.(CHAT_FRAME_ID, true, BUSINESS_CHAT_PREFIX, BUSINESS_CHAT_CLASSNAME);
54
- }
55
- };
56
- const createChatFrame = () => {
57
- const chatFrame = globalThis.document.createElement('div');
58
- chatFrame.id = CHAT_FRAME_ID;
59
- globalThis.document.body.appendChild(chatFrame);
60
- };
61
- //# sourceMappingURL=useChatBot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useChatBot.js","sourceRoot":"","sources":["../../../src/components/Header/useChatBot.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
2
- export declare const useChatBot: (chat?: string) => {
3
- load: (ev: PreventableEventWithTarget) => void;
4
- isLoading: boolean;
5
- };
@@ -1,58 +0,0 @@
1
- import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
- import { initializeExternalNS, initializeExternalStylesheet } from '../../hooks/useExternalNS.js';
3
- const CHAT_NAMESPACE = 'chatbot';
4
- const CHAT_BUTTON_EXTERNAL_NAME = 'text-page__btn-chat';
5
- const CHAT_FRAME_ID = 'webchat-js-container:webchat_rshb';
6
- const CHAT_STORAGE_NAME = 'webchat-keep-open';
7
- const BUSINESS_CHAT_PREFIX = '/webchat-api';
8
- const BUSINESS_CHAT_CLASSNAME = '@container fixed right-0 bottom-0 top-0 h-full w-full z-[100] @3xl:w-auto h-fit';
9
- const CHATBOT_URL = {
10
- personal: '//chat.mes.rshb.ru/assets/js/webchat_rshb',
11
- business: '/webchat',
12
- };
13
- export const useChatBot = (chat) => {
14
- const [isLoading, setIsLoading] = useState(false);
15
- useEffect(() => globalThis.localStorage?.setItem(CHAT_STORAGE_NAME, String(Date.now())), []);
16
- const chatUrl = CHATBOT_URL[chat ?? ''];
17
- const load = useCallback((ev) => {
18
- if (!chatUrl) {
19
- return;
20
- }
21
- setIsLoading(true);
22
- if (chat === 'business') {
23
- renderBusinessChatBot(chatUrl).finally(() => setIsLoading(false));
24
- }
25
- else {
26
- renderPersonalChatBot(ev, chatUrl).finally(() => setIsLoading(false));
27
- }
28
- }, [chatUrl, chat]);
29
- return { load, isLoading };
30
- };
31
- const renderPersonalChatBot = async (ev, chatUrl) => {
32
- const target = ev.target;
33
- if (!target?.classList.contains(CHAT_BUTTON_EXTERNAL_NAME)) {
34
- target?.classList.add(CHAT_BUTTON_EXTERNAL_NAME);
35
- }
36
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
37
- if (!chatFrame) {
38
- await initializeExternalNS(CHAT_NAMESPACE, chatUrl);
39
- }
40
- };
41
- const renderBusinessChatBot = async (chatUrl) => {
42
- const businessChat = (await initializeExternalNS(CHAT_NAMESPACE, `${chatUrl}/bundle.js`, true));
43
- initializeExternalStylesheet(`${chatUrl}/bundle.css`);
44
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
45
- if (chatFrame) {
46
- businessChat?.chatOpen?.();
47
- }
48
- else {
49
- createChatFrame();
50
- businessChat?.render?.(CHAT_FRAME_ID, true, BUSINESS_CHAT_PREFIX, BUSINESS_CHAT_CLASSNAME);
51
- }
52
- };
53
- const createChatFrame = () => {
54
- const chatFrame = globalThis.document.createElement('div');
55
- chatFrame.id = CHAT_FRAME_ID;
56
- globalThis.document.body.appendChild(chatFrame);
57
- };
58
- //# sourceMappingURL=useChatBot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useChatBot.js","sourceRoot":"","sources":["../../../src/components/Header/useChatBot.ts"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
- import { initializeExternalNS, initializeExternalStylesheet } from '../../hooks/useExternalNS';
3
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
4
-
5
- const CHAT_NAMESPACE = 'chatbot';
6
- const CHAT_BUTTON_EXTERNAL_NAME = 'text-page__btn-chat';
7
- const CHAT_FRAME_ID = 'webchat-js-container:webchat_rshb';
8
- const CHAT_STORAGE_NAME = 'webchat-keep-open';
9
- const BUSINESS_CHAT_PREFIX = '/webchat-api';
10
- const BUSINESS_CHAT_CLASSNAME =
11
- '@container fixed right-0 bottom-0 top-0 h-full w-full z-[100] @3xl:w-auto h-fit';
12
-
13
- const CHATBOT_URL: Record<string, string> = {
14
- personal: '//chat.mes.rshb.ru/assets/js/webchat_rshb',
15
- business: '/webchat',
16
- };
17
-
18
- interface WebChat {
19
- render?: (id?: string, isOpen?: boolean, prefix?: string, className?: string) => void;
20
- chatOpen?: () => void;
21
- chatClose?: () => void;
22
- }
23
-
24
- export const useChatBot = (chat?: string) => {
25
- const [isLoading, setIsLoading] = useState<boolean>(false);
26
-
27
- useEffect(() => globalThis.localStorage?.setItem(CHAT_STORAGE_NAME, String(Date.now())), []);
28
- const chatUrl = CHATBOT_URL[chat ?? ''];
29
-
30
- const load = useCallback(
31
- (ev: PreventableEventWithTarget) => {
32
- if (!chatUrl) {
33
- return;
34
- }
35
-
36
- setIsLoading(true);
37
- if (chat === 'business') {
38
- renderBusinessChatBot(chatUrl).finally(() => setIsLoading(false));
39
- } else {
40
- renderPersonalChatBot(ev, chatUrl).finally(() => setIsLoading(false));
41
- }
42
- },
43
- [chatUrl, chat],
44
- );
45
-
46
- return { load, isLoading };
47
- };
48
-
49
- const renderPersonalChatBot = async (ev: PreventableEventWithTarget, chatUrl: string) => {
50
- const target = ev.target as HTMLElement;
51
-
52
- if (!target?.classList.contains(CHAT_BUTTON_EXTERNAL_NAME)) {
53
- target?.classList.add(CHAT_BUTTON_EXTERNAL_NAME);
54
- }
55
-
56
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
57
- if (!chatFrame) {
58
- await initializeExternalNS(CHAT_NAMESPACE, chatUrl);
59
- }
60
- };
61
-
62
- const renderBusinessChatBot = async (chatUrl: string) => {
63
- const businessChat = (await initializeExternalNS(
64
- CHAT_NAMESPACE,
65
- `${chatUrl}/bundle.js`,
66
- true,
67
- )) as WebChat;
68
-
69
- initializeExternalStylesheet(`${chatUrl}/bundle.css`);
70
-
71
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
72
- if (chatFrame) {
73
- businessChat?.chatOpen?.();
74
- } else {
75
- createChatFrame();
76
-
77
- businessChat?.render?.(CHAT_FRAME_ID, true, BUSINESS_CHAT_PREFIX, BUSINESS_CHAT_CLASSNAME);
78
- }
79
- };
80
-
81
- const createChatFrame = () => {
82
- const chatFrame = globalThis.document.createElement('div');
83
- chatFrame.id = CHAT_FRAME_ID;
84
-
85
- globalThis.document.body.appendChild(chatFrame);
86
- };
@@ -1,86 +0,0 @@
1
- import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
- import { initializeExternalNS, initializeExternalStylesheet } from '../../hooks/useExternalNS';
3
- import { type PreventableEventWithTarget } from '../../ui-kit/PreventableEvent';
4
-
5
- const CHAT_NAMESPACE = 'chatbot';
6
- const CHAT_BUTTON_EXTERNAL_NAME = 'text-page__btn-chat';
7
- const CHAT_FRAME_ID = 'webchat-js-container:webchat_rshb';
8
- const CHAT_STORAGE_NAME = 'webchat-keep-open';
9
- const BUSINESS_CHAT_PREFIX = '/webchat-api';
10
- const BUSINESS_CHAT_CLASSNAME =
11
- '@container fixed right-0 bottom-0 top-0 h-full w-full z-[100] @3xl:w-auto h-fit';
12
-
13
- const CHATBOT_URL: Record<string, string> = {
14
- personal: '//chat.mes.rshb.ru/assets/js/webchat_rshb',
15
- business: '/webchat',
16
- };
17
-
18
- interface WebChat {
19
- render?: (id?: string, isOpen?: boolean, prefix?: string, className?: string) => void;
20
- chatOpen?: () => void;
21
- chatClose?: () => void;
22
- }
23
-
24
- export const useChatBot = (chat?: string) => {
25
- const [isLoading, setIsLoading] = useState<boolean>(false);
26
-
27
- useEffect(() => globalThis.localStorage?.setItem(CHAT_STORAGE_NAME, String(Date.now())), []);
28
- const chatUrl = CHATBOT_URL[chat ?? ''];
29
-
30
- const load = useCallback(
31
- (ev: PreventableEventWithTarget) => {
32
- if (!chatUrl) {
33
- return;
34
- }
35
-
36
- setIsLoading(true);
37
- if (chat === 'business') {
38
- renderBusinessChatBot(chatUrl).finally(() => setIsLoading(false));
39
- } else {
40
- renderPersonalChatBot(ev, chatUrl).finally(() => setIsLoading(false));
41
- }
42
- },
43
- [chatUrl, chat],
44
- );
45
-
46
- return { load, isLoading };
47
- };
48
-
49
- const renderPersonalChatBot = async (ev: PreventableEventWithTarget, chatUrl: string) => {
50
- const target = ev.target as HTMLElement;
51
-
52
- if (!target?.classList.contains(CHAT_BUTTON_EXTERNAL_NAME)) {
53
- target?.classList.add(CHAT_BUTTON_EXTERNAL_NAME);
54
- }
55
-
56
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
57
- if (!chatFrame) {
58
- await initializeExternalNS(CHAT_NAMESPACE, chatUrl);
59
- }
60
- };
61
-
62
- const renderBusinessChatBot = async (chatUrl: string) => {
63
- const businessChat = (await initializeExternalNS(
64
- CHAT_NAMESPACE,
65
- `${chatUrl}/bundle.js`,
66
- true,
67
- )) as WebChat;
68
-
69
- initializeExternalStylesheet(`${chatUrl}/bundle.css`);
70
-
71
- const chatFrame = globalThis.document.getElementById(CHAT_FRAME_ID);
72
- if (chatFrame) {
73
- businessChat?.chatOpen?.();
74
- } else {
75
- createChatFrame();
76
-
77
- businessChat?.render?.(CHAT_FRAME_ID, true, BUSINESS_CHAT_PREFIX, BUSINESS_CHAT_CLASSNAME);
78
- }
79
- };
80
-
81
- const createChatFrame = () => {
82
- const chatFrame = globalThis.document.createElement('div');
83
- chatFrame.id = CHAT_FRAME_ID;
84
-
85
- globalThis.document.body.appendChild(chatFrame);
86
- };