@redneckz/wildless-cms-uni-blocks 0.14.332 → 0.14.334

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 (184) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +112 -52
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  5. package/bundle/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  6. package/bundle/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  7. package/bundle/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  8. package/bundle/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  9. package/bundle/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  10. package/bundle/components/ProductGallery/ProductGalleryContent.d.ts +3 -7
  11. package/bundle/icons/IconName.d.ts +4 -2
  12. package/bundle/ui-kit/RichText/RichTextProps.d.ts +0 -1
  13. package/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  14. package/bundle/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  15. package/cosmos-static/icons/MapMarkerClusterYellowIcon.svg +1 -0
  16. package/cosmos-static/icons/sprites.svg +1 -0
  17. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  18. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  19. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  20. package/dist/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  21. package/dist/components/OfficesAtmsMap/OfficesMap.js +12 -9
  22. package/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  23. package/dist/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  24. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  25. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.js +9 -0
  26. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  27. package/dist/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  28. package/dist/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  29. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  30. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +35 -0
  31. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  32. package/dist/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  33. package/dist/components/OfficesAtmsMap/useOffices.js +4 -2
  34. package/dist/components/OfficesAtmsMap/useOffices.js.map +1 -1
  35. package/dist/components/ProductGallery/ProductGalleryContent.d.ts +3 -7
  36. package/dist/icons/IconName.d.ts +4 -2
  37. package/dist/icons/IconName.js +3 -1
  38. package/dist/icons/IconName.js.map +1 -1
  39. package/dist/ui-kit/RichText/RichText.js +4 -2
  40. package/dist/ui-kit/RichText/RichText.js.map +1 -1
  41. package/dist/ui-kit/RichText/RichTextProps.d.ts +0 -1
  42. package/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  43. package/dist/ui-kit/YandexMap/YandexMap.js +2 -2
  44. package/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  45. package/dist/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  46. package/dist/ui-kit/YandexMap/renderClusterer.js +33 -14
  47. package/dist/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  48. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  49. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  50. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  51. package/lib/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  52. package/lib/components/OfficesAtmsMap/OfficesMap.js +12 -9
  53. package/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  54. package/lib/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  55. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +2 -0
  56. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.js +6 -0
  57. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  58. package/lib/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  59. package/lib/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  60. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +6 -0
  61. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +31 -0
  62. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  63. package/lib/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  64. package/lib/components/OfficesAtmsMap/useOffices.js +4 -2
  65. package/lib/components/OfficesAtmsMap/useOffices.js.map +1 -1
  66. package/lib/components/ProductGallery/ProductGalleryContent.d.ts +3 -7
  67. package/lib/icons/IconName.d.ts +4 -2
  68. package/lib/icons/IconName.js +3 -1
  69. package/lib/icons/IconName.js.map +1 -1
  70. package/lib/ui-kit/RichText/RichText.js +4 -2
  71. package/lib/ui-kit/RichText/RichText.js.map +1 -1
  72. package/lib/ui-kit/RichText/RichTextProps.d.ts +0 -1
  73. package/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  74. package/lib/ui-kit/YandexMap/YandexMap.js +2 -2
  75. package/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  76. package/lib/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  77. package/lib/ui-kit/YandexMap/renderClusterer.js +32 -13
  78. package/lib/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  79. package/mobile/bundle/bundle.umd.js +112 -52
  80. package/mobile/bundle/bundle.umd.min.js +1 -1
  81. package/mobile/bundle/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  82. package/mobile/bundle/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  83. package/mobile/bundle/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  84. package/mobile/bundle/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  85. package/mobile/bundle/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  86. package/mobile/bundle/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  87. package/mobile/bundle/components/ProductGallery/ProductGalleryContent.d.ts +3 -7
  88. package/mobile/bundle/icons/IconName.d.ts +4 -2
  89. package/mobile/bundle/ui-kit/RichText/RichTextProps.d.ts +0 -1
  90. package/mobile/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  91. package/mobile/bundle/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  92. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  93. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  94. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  95. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  96. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js +12 -9
  97. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  98. package/mobile/dist/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  99. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  100. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.js +9 -0
  101. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  102. package/mobile/dist/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  103. package/mobile/dist/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  104. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  105. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +35 -0
  106. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  107. package/mobile/dist/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  108. package/mobile/dist/components/OfficesAtmsMap/useOffices.js +4 -2
  109. package/mobile/dist/components/OfficesAtmsMap/useOffices.js.map +1 -1
  110. package/mobile/dist/components/ProductGallery/ProductGalleryContent.d.ts +3 -7
  111. package/mobile/dist/icons/IconName.d.ts +4 -2
  112. package/mobile/dist/icons/IconName.js +3 -1
  113. package/mobile/dist/icons/IconName.js.map +1 -1
  114. package/mobile/dist/ui-kit/RichText/RichText.js +4 -2
  115. package/mobile/dist/ui-kit/RichText/RichText.js.map +1 -1
  116. package/mobile/dist/ui-kit/RichText/RichTextProps.d.ts +0 -1
  117. package/mobile/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  118. package/mobile/dist/ui-kit/YandexMap/YandexMap.js +2 -2
  119. package/mobile/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  120. package/mobile/dist/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  121. package/mobile/dist/ui-kit/YandexMap/renderClusterer.js +33 -14
  122. package/mobile/dist/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  123. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  124. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  125. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  126. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  127. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js +12 -9
  128. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  129. package/mobile/lib/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  130. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  131. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.js +6 -0
  132. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  133. package/mobile/lib/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  134. package/mobile/lib/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  135. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  136. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +31 -0
  137. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  138. package/mobile/lib/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  139. package/mobile/lib/components/OfficesAtmsMap/useOffices.js +4 -2
  140. package/mobile/lib/components/OfficesAtmsMap/useOffices.js.map +1 -1
  141. package/mobile/lib/components/ProductGallery/ProductGalleryContent.d.ts +3 -7
  142. package/mobile/lib/icons/IconName.d.ts +4 -2
  143. package/mobile/lib/icons/IconName.js +3 -1
  144. package/mobile/lib/icons/IconName.js.map +1 -1
  145. package/mobile/lib/ui-kit/RichText/RichText.js +4 -2
  146. package/mobile/lib/ui-kit/RichText/RichText.js.map +1 -1
  147. package/mobile/lib/ui-kit/RichText/RichTextProps.d.ts +0 -1
  148. package/mobile/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  149. package/mobile/lib/ui-kit/YandexMap/YandexMap.js +2 -2
  150. package/mobile/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  151. package/mobile/lib/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  152. package/mobile/lib/ui-kit/YandexMap/renderClusterer.js +32 -13
  153. package/mobile/lib/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  154. package/mobile/src/components/OfficesAtmsMap/OfficesAtmsMapLayout.tsx +34 -45
  155. package/mobile/src/components/OfficesAtmsMap/OfficesAtmsMapProps.tsx +15 -0
  156. package/mobile/src/components/OfficesAtmsMap/OfficesMap.tsx +28 -12
  157. package/mobile/src/components/OfficesAtmsMap/YandexMapProps.ts +1 -0
  158. package/mobile/src/components/OfficesAtmsMap/renderDescriptionBlock.tsx +29 -0
  159. package/mobile/src/components/OfficesAtmsMap/renderFiltrationForm.tsx +2 -1
  160. package/mobile/src/components/OfficesAtmsMap/renderRemoteWorkplaceCard.tsx +86 -0
  161. package/mobile/src/components/OfficesAtmsMap/useOffices.ts +11 -4
  162. package/mobile/src/components/ProductGallery/ProductGalleryContent.ts +3 -7
  163. package/mobile/src/icons/IconName.ts +5 -5
  164. package/mobile/src/icons/MapMarkerClusterYellowIcon.svg +1 -0
  165. package/mobile/src/ui-kit/RichText/RichText.tsx +5 -3
  166. package/mobile/src/ui-kit/RichText/RichTextProps.ts +0 -1
  167. package/mobile/src/ui-kit/YandexMap/YandexMap.tsx +3 -3
  168. package/mobile/src/ui-kit/YandexMap/renderClusterer.ts +62 -16
  169. package/package.json +1 -1
  170. package/src/components/OfficesAtmsMap/OfficesAtmsMapLayout.tsx +34 -45
  171. package/src/components/OfficesAtmsMap/OfficesAtmsMapProps.tsx +15 -0
  172. package/src/components/OfficesAtmsMap/OfficesMap.tsx +28 -12
  173. package/src/components/OfficesAtmsMap/YandexMapProps.ts +1 -0
  174. package/src/components/OfficesAtmsMap/renderDescriptionBlock.tsx +29 -0
  175. package/src/components/OfficesAtmsMap/renderFiltrationForm.tsx +2 -1
  176. package/src/components/OfficesAtmsMap/renderRemoteWorkplaceCard.tsx +86 -0
  177. package/src/components/OfficesAtmsMap/useOffices.ts +11 -4
  178. package/src/components/ProductGallery/ProductGalleryContent.ts +3 -7
  179. package/src/icons/IconName.ts +5 -1
  180. package/src/icons/MapMarkerClusterYellowIcon.svg +1 -0
  181. package/src/ui-kit/RichText/RichText.tsx +5 -3
  182. package/src/ui-kit/RichText/RichTextProps.ts +0 -1
  183. package/src/ui-kit/YandexMap/YandexMap.tsx +3 -3
  184. package/src/ui-kit/YandexMap/renderClusterer.ts +62 -16
@@ -587,10 +587,12 @@
587
587
 
588
588
  const getHtmlText = (html) => html.replace(/<\/?[^>]+\/?>/g, '').trim();
589
589
 
590
+ const EMPTY_HTML = '<p><br></p>';
590
591
  const RichText = JSX((props) => {
591
- const { __html = '', richVersion = '' } = props;
592
+ const { __html, richVersion = '' } = props;
593
+ return __html && getHtmlText(__html) !== EMPTY_HTML ? (
592
594
  /* Attribute [data-component] need for correct render in wcms editor. Do not remove. */
593
- return getHtmlText(__html) ? (jsx("div", { "data-component": "rich-text-container", children: jsx("div", { className: style(richVersion, 'md-container'), dangerouslySetInnerHTML: { __html } }) })) : null;
595
+ jsx("div", { "data-component": "rich-text-container", children: jsx("div", { className: style(richVersion, 'md-container'), dangerouslySetInnerHTML: { __html } }) })) : null;
594
596
  });
595
597
 
596
598
  const renderBenefitDescription = (description, i) => description ? (jsx(Paragraph, { font: "font-light", size: "text-m", color: "text-secondary-text group-data-secondary:text-white", children: description }, `description-${i}`)) : null;
@@ -4815,13 +4817,37 @@
4815
4817
  childSchema: (content) => content?.filtrationSchema || {},
4816
4818
  });
4817
4819
 
4818
- function renderClusterer(yandexMaps, map, points) {
4820
+ const MapMarkerClusterIcon = '/icons/MapMarkerClusterIcon.svg';
4821
+ const MapMarkerClusterYellowIcon = '/icons/MapMarkerClusterYellowIcon.svg';
4822
+ function renderClusterer({ yandexMaps, map, points, }) {
4819
4823
  map.geoObjects.removeAll();
4820
4824
  const clusterIconContentLayout = yandexMaps.templateLayoutFactory.createClass('<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>');
4821
- const clusterer = new yandexMaps.Clusterer({
4825
+ const officeClusterer = defineClusterer('offices', yandexMaps, clusterIconContentLayout);
4826
+ if (points.length && points.every((_) => 'type' in _)) {
4827
+ const remoteWorkplaceClusterer = defineClusterer('workplaces', yandexMaps, clusterIconContentLayout);
4828
+ const remoteWorkplaceGeoObjects = defineGeoObjects(points.filter((_) => _.type === 'workplaces'), 'workplaces', yandexMaps);
4829
+ const officesGeoObjects = defineGeoObjects(points.filter((_) => _.type === 'offices'), 'offices', yandexMaps);
4830
+ officeClusterer.add(officesGeoObjects);
4831
+ remoteWorkplaceClusterer.add(remoteWorkplaceGeoObjects);
4832
+ map.geoObjects.add(remoteWorkplaceClusterer);
4833
+ map.geoObjects.add(officeClusterer);
4834
+ }
4835
+ else {
4836
+ const geoObjects = defineGeoObjects(points, 'offices', yandexMaps);
4837
+ officeClusterer.add(geoObjects);
4838
+ map.geoObjects.add(officeClusterer);
4839
+ }
4840
+ map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
4841
+ if (map.getZoom() > 10) {
4842
+ map.setZoom(10);
4843
+ }
4844
+ });
4845
+ }
4846
+ const defineClusterer = (type, yandexMaps, clusterIconContentLayout) => {
4847
+ return new yandexMaps.Clusterer({
4822
4848
  clusterIcons: [
4823
4849
  {
4824
- href: '/icons/MapMarkerClusterIcon.svg',
4850
+ href: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
4825
4851
  size: [78, 84],
4826
4852
  offset: [-35, -50],
4827
4853
  },
@@ -4830,25 +4856,20 @@
4830
4856
  clusterHideIconOnBalloonOpen: false,
4831
4857
  geoObjectHideIconOnBalloonOpen: false,
4832
4858
  });
4833
- const geoObjects = points.map(({ coords, content }) => new yandexMaps.Placemark(coords, {
4859
+ };
4860
+ const defineGeoObjects = (pointArr, type, yandexMaps) => {
4861
+ return pointArr.map(({ coords, content }) => new yandexMaps.Placemark(coords, {
4834
4862
  balloonContentHeader: content?.header,
4835
4863
  balloonContentBody: content?.body,
4836
4864
  balloonContentFooter: content?.footer,
4837
4865
  hintContent: content?.hint,
4838
4866
  }, {
4839
4867
  iconLayout: 'default#image',
4840
- iconImageHref: '/icons/MapMarkerSingleIcon.svg',
4868
+ iconImageHref: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
4841
4869
  iconImageSize: [78, 84],
4842
4870
  iconImageOffset: [-35, -50],
4843
4871
  }));
4844
- clusterer.add(geoObjects);
4845
- map.geoObjects.add(clusterer);
4846
- map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
4847
- if (map.getZoom() > 10) {
4848
- map.setZoom(10);
4849
- }
4850
- });
4851
- }
4872
+ };
4852
4873
 
4853
4874
  const styles$1 = {
4854
4875
  focus: 'focus:border-primary-text focus:border',
@@ -4921,11 +4942,11 @@
4921
4942
  controls: [],
4922
4943
  suppressMapOpenBlock: true,
4923
4944
  });
4924
- renderClusterer(yandexMaps, map.current, points);
4945
+ renderClusterer({ yandexMaps, map: map.current, points });
4925
4946
  });
4926
4947
  }
4927
4948
  else if (yandexMaps) {
4928
- renderClusterer(yandexMaps, map.current, points);
4949
+ renderClusterer({ yandexMaps, map: map.current, points });
4929
4950
  if (!points?.length) {
4930
4951
  map.current.setCenter(DEFAULT_CENTER_COORDS);
4931
4952
  }
@@ -4944,6 +4965,8 @@
4944
4965
  const mapByIndex = (points, index) => points.map((_) => _.coords[index]);
4945
4966
  const getArraySumAndAverage = (arr) => arr.length && arr.reduce((a, b) => a + b) / arr.length;
4946
4967
 
4968
+ const renderDescriptionBlock$1 = ({ __html, list }) => __html || list?.length ? (jsxs("div", { className: "mb-2xl border-b sm:border border-main-divider sm:rounded-md", children: [__html ? (jsx("div", { className: "mb-2xl", children: jsx(RichText, { __html: __html }) })) : null, list?.length ? (jsx("div", { className: "flex flex-col sm:flex-row gap-2xl sm:flex-wrap pb-2xl sm:pb-xl", children: list.map((item, i) => (jsxs("div", { className: "flex gap-xs items-center", children: [item?.image ? jsx(Img, { image: item.image }) : null, item?.text ? (jsx(Text, { size: "text-m", font: "font-light", children: item.text })) : null] }, String(i)))) })) : null] })) : null;
4969
+
4947
4970
  const FILTRATION_LABELS = {
4948
4971
  safeBoxCaseVolumes: 'Аренда индивидуальных сейфовых ячеек',
4949
4972
  workingSaturday: 'Открыты по субботам',
@@ -4958,14 +4981,14 @@
4958
4981
  bullionOperations: 'Операции со слитками',
4959
4982
  preciousMetalsOperations: 'Операции с драгоценными металлами',
4960
4983
  transferringDataToBiometricSystem: 'Передача фото и голоса в Единую биометрическую систему',
4984
+ remoteWorkplace: 'Удаленное рабочее место',
4961
4985
  };
4962
4986
  const COMMON_FILTERS_STYLES = 'flex flex-col sm:flex-row sm:flex-wrap gap-3xl pb-2xl';
4963
4987
  const renderFiltrationForm = (filters, { field, reset }, onlyOffice) => {
4964
- const visibleFiltersNum = onlyOffice ? 3 : 4;
4988
+ const visibleFiltersNum = 4;
4965
4989
  const filtersCheckbox = (filters || []).map((key) => (jsx(Checkbox, { text: FILTRATION_LABELS[key], ...field(key) }, key)));
4966
- const [visibleFilters, hiddenFilters] = visibleFiltersNum > 0
4967
- ? [filtersCheckbox.slice(0, visibleFiltersNum), filtersCheckbox.slice(visibleFiltersNum)]
4968
- : [filtersCheckbox, []];
4990
+ const [visibleFilters, hiddenFilters] = [filtersCheckbox.slice(0, visibleFiltersNum), filtersCheckbox.slice(visibleFiltersNum)]
4991
+ ;
4969
4992
  return (jsx("div", { children: filters?.length ? (jsx("div", { children: jsx(Foldable, { renderFoldableSection: ({ isUnfolded }) => (jsxs("div", { children: [jsx("div", { className: COMMON_FILTERS_STYLES, children: visibleFilters }), jsx(FoldableSection, { className: COMMON_FILTERS_STYLES, isUnfolded: isUnfolded, children: hiddenFilters })] })), renderFoldButton: renderFoldButton$2(reset, onlyOffice) }) })) : null }));
4970
4993
  };
4971
4994
  const renderFoldButton$2 = (reset, onlyOffice) => ({ isUnfolded, onToggle }) => {
@@ -4977,37 +5000,47 @@
4977
5000
  const defaultEmptyFunction = () => void 0;
4978
5001
  const defaultFilterItems = () => [];
4979
5002
  const filtersVisibleStyles = (activeButton) => activeButton === 'all' ? 'block' : 'hidden';
4980
- const OfficesAtmsMapLayout = JSX(({ className, data = [], renderCard = defaultEmptyFunction, filterItems = defaultFilterItems, getBalloon = defaultEmptyFunction, initFilterState = {}, descriptionData, title, }) => {
5003
+ const OfficesAtmsMapLayout = JSX(({ className, data = [], remoteWorkplaces = [], renderCard = defaultEmptyFunction, renderRemoteWorkplaceCard = defaultEmptyFunction, filterItems = defaultFilterItems, getBalloon = defaultEmptyFunction, getBalloonRemoteWorkplaces = defaultEmptyFunction, initFilterState = {}, descriptionData, title, }) => {
4981
5004
  const onlyOffice = title?.includes('Офис');
4982
5005
  const [filtrationState, { field, reset }] = useForm(initFilterState);
4983
- const [filteredItems, points, lengthItems] = useMemo(() => {
5006
+ const [filteredItems, points, filteredRemoteWorkplaces, lengthItems] = useMemo(() => {
4984
5007
  const _filteredItems = filterItems(data, filtrationState);
4985
- const _points = _filteredItems
4986
- .map((_) => ({
4987
- coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
4988
- content: getBalloon(_),
4989
- }))
4990
- .filter((_) => _.coords && _.coords.length === 2);
4991
- return [_filteredItems, _points, _filteredItems.length];
4992
- }, [data, filtrationState]);
5008
+ const _filteredRemoteWorkplaces = filterItems(remoteWorkplaces, filtrationState);
5009
+ const _points = [
5010
+ ..._filteredItems.map((_) => ({
5011
+ type: 'offices',
5012
+ coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
5013
+ content: getBalloon(_),
5014
+ })),
5015
+ ..._filteredRemoteWorkplaces.map((_) => ({
5016
+ type: 'workplaces',
5017
+ coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
5018
+ content: getBalloonRemoteWorkplaces({
5019
+ address: _.address,
5020
+ workScheduleDescription: _.workScheduleDescription,
5021
+ }),
5022
+ })),
5023
+ ].filter((_) => _.coords && _.coords.length === 2);
5024
+ const itemsLength = _filteredItems.length + _filteredRemoteWorkplaces?.length;
5025
+ return [_filteredItems, _points, _filteredRemoteWorkplaces, itemsLength];
5026
+ }, [data, remoteWorkplaces, filtrationState]);
4993
5027
  const [activeButton, setActiveButton] = useState('all');
4994
- return (jsxs("div", { className: style('space-y-1', className), children: [jsxs("div", { className: "bg-white", children: [jsxs("div", { className: "p-6xl pb-0", children: [jsx("div", { className: "flex flex-col sm:flex-row gap-xs mb-2xl", children: jsxs(Heading, { headingType: "h2", children: [title, lengthItems ? (jsx(Text, { size: "text-h2", color: "text-secondary-text", children: ` (${lengthItems})` })) : null] }) }), descriptionData ? renderDescriptionBlock$1(descriptionData) : null, onlyOffice && renderButtonsGroup(data, activeButton, setActiveButton), jsx("div", { className: style('pb-2xl', filtersVisibleStyles(activeButton)), children: renderFiltrationForm(Object.keys(initFilterState), { field, reset }, onlyOffice) })] }), jsx("div", { className: "h-[600px]", children: jsx(ClientOnly, { children: jsx(YandexMap, { points: points, className: "h-full" }) }) })] }), filteredItems.map(renderCard)] }));
5028
+ return (jsxs("div", { className: style('space-y-1', className), children: [jsxs("div", { className: "bg-white", children: [jsxs("div", { className: "p-6xl pb-0", children: [jsx("div", { className: "flex flex-col sm:flex-row gap-xs mb-2xl", children: jsxs(Heading, { headingType: "h2", children: [title, lengthItems ? (jsx(Text, { size: "text-h2", color: "text-secondary-text", children: ` (${lengthItems})` })) : null] }) }), descriptionData ? renderDescriptionBlock$1(descriptionData) : null, onlyOffice && renderButtonsGroup(data, activeButton, setActiveButton), jsx("div", { className: style('pb-2xl', filtersVisibleStyles(activeButton)), children: renderFiltrationForm(Object.keys(initFilterState), { field, reset }, onlyOffice) })] }), jsx("div", { className: "h-[600px]", children: jsx(ClientOnly, { children: jsx(YandexMap, { points: points, className: "h-full" }) }) })] }), filteredItems.map(renderCard), filteredRemoteWorkplaces.map(renderRemoteWorkplaceCard)] }));
4995
5029
  });
4996
- const renderButtonsGroup = (data, activeButton, setActiveButton) => {
5030
+ const renderButtonsGroup = (data, activeButton, onButtonClick) => {
4997
5031
  const allButtonVersion = activeButton === 'all' ? 'primary' : 'secondary';
4998
5032
  const businessButtonVersion = activeButton === 'business' ? 'primary' : 'secondary';
4999
- const handleOnClick = (e, key, branches) => {
5033
+ const handleClick = (e, key, branches) => {
5000
5034
  if (e.currentTarget === e.target && key === 'business') {
5001
5035
  branches.filter((branch) => branch.workSchedule &&
5002
5036
  branch.workSchedule.businessScheduleVisibleTag &&
5003
5037
  !branch.workSchedule.businessScheduleDescription);
5004
5038
  }
5005
- setActiveButton(key);
5039
+ onButtonClick(key);
5006
5040
  return branches;
5007
5041
  };
5008
- return (jsxs("div", { className: "flex gap-lg flex-col sm:flex-row pb-lg", children: [jsx(Button, { "data-id": "all", onClick: (e) => handleOnClick(e, 'all', data), version: allButtonVersion, children: "\u0414\u043B\u044F \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446" }), jsx(Button, { "data-id": "business", onClick: (e) => handleOnClick(e, 'business', data), version: businessButtonVersion, children: "\u0414\u043B\u044F \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446" })] }));
5042
+ return (jsxs("div", { className: "flex gap-lg flex-col sm:flex-row pb-lg", children: [jsx(Button, { "data-id": "all", onClick: (e) => handleClick(e, 'all', data), version: allButtonVersion, children: "\u0414\u043B\u044F \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446" }), jsx(Button, { "data-id": "business", onClick: (e) => handleClick(e, 'business', data), version: businessButtonVersion, children: "\u0414\u043B\u044F \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446" })] }));
5009
5043
  };
5010
- const renderDescriptionBlock$1 = ({ __html, list }) => __html || list?.length ? (jsxs("div", { className: "mb-2xl border-b sm:border border-main-divider sm:rounded-md", children: [__html ? (jsx("div", { className: "mb-2xl", children: jsx(RichText, { __html: __html }) })) : null, list?.length ? (jsx("div", { className: "flex flex-col sm:flex-row gap-2xl sm:flex-wrap pb-2xl sm:pb-xl", children: list.map((item, i) => (jsxs("div", { className: "flex gap-xs items-center", children: [item?.image ? jsx(Img, { image: item.image }) : null, item?.text ? (jsx(Text, { size: "text-m", font: "font-light", children: item.text })) : null] }, String(i)))) })) : null] })) : null;
5011
5044
 
5012
5045
  const colorStyle = {
5013
5046
  yellow: { border: 'border-yellow-light', text: 'text-yellow' },
@@ -5231,7 +5264,7 @@
5231
5264
  return null;
5232
5265
  }
5233
5266
  const workScheduleWeek = getWorkScheduleWeek(workSchedule);
5234
- return (jsxs("div", { className: "bg-white col-span-12 p-3xl sm:border-green sm:border", children: [jsxs("div", { className: "sm:flex sm:justify-between", children: [jsxs("div", { children: [jsx(Text, { size: "text-h4", children: name }), address ? (jsxs("div", { className: "flex pb-xl pt-xs gap-2xs", children: [jsx(Icon, { name: "GeolocationIcon", width: "24", height: "24" }), jsx(Text, { size: "text-l", children: address })] })) : null] }), renderCurrentDaySchedule(workScheduleWeek)] }), jsx("div", { className: "hidden sm:block", children: renderCardContent({
5267
+ return (jsxs("div", { className: "bg-white col-span-12 p-3xl sm:border-green sm:border", children: [jsxs("div", { className: "sm:flex sm:justify-between", children: [jsxs("div", { children: [jsx(Text, { size: "text-h4", children: name }), address ? (jsxs("div", { className: "flex pb-xl pt-xs gap-2xs", children: [jsx(Icon, { name: "GeolocationIcon", width: "24", height: "24" }), jsx(Text, { size: "text-l", children: address })] })) : null] }), renderCurrentDaySchedule(workScheduleWeek)] }), jsx("div", { className: "hidden sm:block", children: renderCardContent$1({
5235
5268
  phone,
5236
5269
  fax,
5237
5270
  phoneBusiness,
@@ -5241,7 +5274,7 @@
5241
5274
  workSchedule,
5242
5275
  exchangeRate,
5243
5276
  }) }), jsx(Foldable, { className: "block sm:hidden", renderFoldableSection: ({ isUnfolded }) => {
5244
- return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent({
5277
+ return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent$1({
5245
5278
  phone,
5246
5279
  fax,
5247
5280
  phoneBusiness,
@@ -5255,7 +5288,7 @@
5255
5288
  //** TODO: remove styles with refactoring DefaultFoldButton*/
5256
5289
  renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton$1({ isUnfolded, onToggle }) })] }, String(index)));
5257
5290
  };
5258
- const renderCardContent = ({ phone, fax, phoneBusiness, phoneNatural, phoneCallCentre, phoneCurrencyControl, workSchedule, exchangeRate, }) => {
5291
+ const renderCardContent$1 = ({ phone, fax, phoneBusiness, phoneNatural, phoneCallCentre, phoneCurrencyControl, workSchedule, exchangeRate, }) => {
5259
5292
  const workScheduleWeek = getWorkScheduleWeek(workSchedule);
5260
5293
  const labelSchedule = workSchedule?.businessScheduleVisibleTag
5261
5294
  ? 'Для физических лиц'
@@ -5271,13 +5304,38 @@
5271
5304
  return { header, body };
5272
5305
  };
5273
5306
 
5307
+ const renderRemoteWorkplaceCard = ({ address, workScheduleDescription }, index) => {
5308
+ if (!workScheduleDescription) {
5309
+ return null;
5310
+ }
5311
+ return (jsxs("div", { className: "bg-white col-span-12 p-3xl sm:border-green sm:border", children: [jsx("div", { className: "sm:flex sm:justify-between", children: jsxs("div", { children: [jsx(Text, { size: "text-h4", children: "\u0423\u0434\u0430\u043B\u0435\u043D\u043D\u043E\u0435 \u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u043C\u0435\u0441\u0442\u043E" }), address ? (jsxs("div", { className: "flex pb-xl pt-xs gap-2xs", children: [jsx(Icon, { name: "GeolocationIcon", width: "24", height: "24" }), jsx(Text, { size: "text-l", children: address })] })) : null] }) }), jsx("div", { className: "hidden sm:block", children: renderCardContent({
5312
+ workScheduleDescription,
5313
+ }) }), jsx(Foldable, { className: "block sm:hidden", renderFoldableSection: ({ isUnfolded }) => {
5314
+ return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent({
5315
+ workScheduleDescription,
5316
+ }) }));
5317
+ },
5318
+ //** TODO: remove styles with refactoring DefaultFoldButton*/
5319
+ renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton$1({ isUnfolded, onToggle }) })] }, String(index)));
5320
+ };
5321
+ const renderCardContent = ({ workScheduleDescription }) => {
5322
+ return (jsxs("div", { children: [jsxs(CardRow, { className: "flex", children: [jsx(CardCell, { label: "\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446", children: jsx(Text, { children: "\u041E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u0435 \u0438 \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u043D\u0438\u0435 \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432, \u0441\u0447\u0435\u0442\u043E\u0432, \u0432\u043A\u043B\u0430\u0434\u043E\u0432" }) }), jsx(CardCell, { label: "\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446", children: jsx(Text, { children: "\u041E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u0435 \u0438 \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u043D\u0438\u0435 \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0445 \u043A\u0430\u0440\u0442" }) }), jsx(CardCell, { label: "\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446", children: jsx(Text, { children: "\u0418\u043D\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043E\u043D\u043D\u043E\u0435 \u0438 \u043D\u0430\u043A\u043E\u043F\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0441\u0442\u0440\u0430\u0445\u043E\u0432\u0430\u043D\u0438\u0435" }) }), jsx(CardCell, { label: "\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043B\u044F \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043B\u0438\u0446", children: jsx(Text, { children: "\u0411\u0435\u0437\u043D\u0430\u043B\u0438\u0447\u043D\u044B\u0435 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0440\u0443\u0431\u043B\u044F\u0445, \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u044B \u0431\u0435\u0437 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F \u0441\u0447\u0451\u0442\u0430" }) })] }), jsx(CardCell, { label: "\u0420\u0435\u0436\u0438\u043C \u0440\u0430\u0431\u043E\u0442\u044B", className: "max-w-none", children: jsx(Text, { children: workScheduleDescription }) })] }));
5323
+ };
5324
+ const getRemoteWorkplacePoint = ({ address = '', workScheduleDescription, }) => {
5325
+ const header = 'Удаленное рабочее место';
5326
+ const body = `${address} ${workScheduleDescription}`;
5327
+ return { header, body };
5328
+ };
5329
+
5274
5330
  const EMPTY_VALUE$1 = [];
5275
5331
  function useOffices(regionCode) {
5276
- const { data = EMPTY_VALUE$1 } = useAsyncData(`/api/v1/branches?regionCode=${regionCode}`, fetchMap);
5332
+ const { data = EMPTY_VALUE$1 } = useAsyncData(`/api/v1/branchesAndRemoteWorkplaces?regionCode=${regionCode}`, fetchMap);
5277
5333
  return data;
5278
5334
  }
5279
5335
  const fetchMap = async (url) => {
5280
- const result = await fetchJSON(url, { method: 'GET' });
5336
+ const result = await fetchJSON(url, {
5337
+ method: 'GET',
5338
+ });
5281
5339
  return Array.isArray(result) ? result : EMPTY_VALUE$1;
5282
5340
  };
5283
5341
 
@@ -5285,6 +5343,7 @@
5285
5343
  workingSaturday: false,
5286
5344
  premiumService: false,
5287
5345
  privateBanking: false,
5346
+ remoteWorkplace: false,
5288
5347
  sellingCoins: false,
5289
5348
  buyingCoins: false,
5290
5349
  bullionOperations: false,
@@ -5292,20 +5351,21 @@
5292
5351
  transferringDataToBiometricSystem: false,
5293
5352
  };
5294
5353
  const FILTRATION_PREDICATES = {
5295
- workingSaturday: (item) => Boolean(item.workSchedule?.workingSaturday),
5296
- premiumService: (item) => Boolean(item.premiumService),
5297
- privateBanking: (item) => Boolean(item.privateBanking),
5298
- sellingCoins: (item) => Boolean(item.sellingCoins),
5299
- buyingCoins: (item) => Boolean(item.buyingCoins),
5300
- bullionOperations: (item) => Boolean(item.bullionOperations),
5301
- preciousMetalsOperations: (item) => Boolean(item.preciousMetalsOperations),
5302
- transferringDataToBiometricSystem: (item) => Boolean(item.transferringDataToBiometricSystem),
5354
+ workingSaturday: (item) => Boolean('workSchedule' in item && item.workSchedule?.workingSaturday),
5355
+ premiumService: (item) => Boolean('premiumService' in item && item.premiumService),
5356
+ privateBanking: (item) => Boolean('privateBanking' in item && item.privateBanking),
5357
+ remoteWorkplace: (item) => Boolean('workScheduleDescription' in item),
5358
+ sellingCoins: (item) => Boolean('sellingCoins' in item && item.sellingCoins),
5359
+ buyingCoins: (item) => Boolean('buyingCoins' in item && item.buyingCoins),
5360
+ bullionOperations: (item) => Boolean('bullionOperations' in item && item.bullionOperations),
5361
+ preciousMetalsOperations: (item) => Boolean('preciousMetalsOperations' in item && item.preciousMetalsOperations),
5362
+ transferringDataToBiometricSystem: (item) => Boolean('transferringDataToBiometricSystem' in item && item.transferringDataToBiometricSystem),
5303
5363
  };
5304
5364
  const OfficesMap = JSX(({ className }) => {
5305
5365
  const [currentLocation] = useLocation();
5306
5366
  const regionCode = currentLocation?.code ?? '000';
5307
5367
  const officesData = useOffices(regionCode);
5308
- return (jsx(OfficesAtmsMapLayout, { className: className, filterItems: filterItems, data: officesData, initFilterState: INITIAL_FILTRATION_STATE, renderCard: renderOfficeCard, getBalloon: getOfficePoint, title: `Офисы филиала ${currentLocation?.name}` }));
5368
+ return (jsx(OfficesAtmsMapLayout, { className: className, filterItems: filterItems, data: officesData[0]?.branches, remoteWorkplaces: officesData[0]?.remoteWorkplaces, initFilterState: INITIAL_FILTRATION_STATE, renderCard: renderOfficeCard, renderRemoteWorkplaceCard: renderRemoteWorkplaceCard, getBalloon: getOfficePoint, getBalloonRemoteWorkplaces: getRemoteWorkplacePoint, title: `Офисы филиала ${currentLocation?.name}` }));
5309
5369
  });
5310
5370
  const filterItems = (data, filtrationState) => {
5311
5371
  const truthyFilters = Object.keys(filtrationState).filter((key) => filtrationState[key]);
@@ -6178,7 +6238,7 @@
6178
6238
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
6179
6239
  });
6180
6240
 
6181
- const packageVersion = "0.14.331";
6241
+ const packageVersion = "0.14.333";
6182
6242
 
6183
6243
  exports.Blocks = Blocks;
6184
6244
  exports.ContentPage = ContentPage;