@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
@@ -595,10 +595,12 @@
595
595
 
596
596
  const getHtmlText = (html) => html.replace(/<\/?[^>]+\/?>/g, '').trim();
597
597
 
598
+ const EMPTY_HTML = '<p><br></p>';
598
599
  const RichText = JSX((props) => {
599
- const { __html = '', richVersion = '' } = props;
600
+ const { __html, richVersion = '' } = props;
601
+ return __html && getHtmlText(__html) !== EMPTY_HTML ? (
600
602
  /* Attribute [data-component] need for correct render in wcms editor. Do not remove. */
601
- return getHtmlText(__html) ? (jsx("div", { "data-component": "rich-text-container", children: jsx("div", { className: style(richVersion, 'md-container'), dangerouslySetInnerHTML: { __html } }) })) : null;
603
+ jsx("div", { "data-component": "rich-text-container", children: jsx("div", { className: style(richVersion, 'md-container'), dangerouslySetInnerHTML: { __html } }) })) : null;
602
604
  });
603
605
 
604
606
  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;
@@ -4128,13 +4130,37 @@
4128
4130
  childSchema: (content) => content?.filtrationSchema || {},
4129
4131
  });
4130
4132
 
4131
- function renderClusterer(yandexMaps, map, points) {
4133
+ const MapMarkerClusterIcon = '/icons/MapMarkerClusterIcon.svg';
4134
+ const MapMarkerClusterYellowIcon = '/icons/MapMarkerClusterYellowIcon.svg';
4135
+ function renderClusterer({ yandexMaps, map, points, }) {
4132
4136
  map.geoObjects.removeAll();
4133
4137
  const clusterIconContentLayout = yandexMaps.templateLayoutFactory.createClass('<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>');
4134
- const clusterer = new yandexMaps.Clusterer({
4138
+ const officeClusterer = defineClusterer('offices', yandexMaps, clusterIconContentLayout);
4139
+ if (points.length && points.every((_) => 'type' in _)) {
4140
+ const remoteWorkplaceClusterer = defineClusterer('workplaces', yandexMaps, clusterIconContentLayout);
4141
+ const remoteWorkplaceGeoObjects = defineGeoObjects(points.filter((_) => _.type === 'workplaces'), 'workplaces', yandexMaps);
4142
+ const officesGeoObjects = defineGeoObjects(points.filter((_) => _.type === 'offices'), 'offices', yandexMaps);
4143
+ officeClusterer.add(officesGeoObjects);
4144
+ remoteWorkplaceClusterer.add(remoteWorkplaceGeoObjects);
4145
+ map.geoObjects.add(remoteWorkplaceClusterer);
4146
+ map.geoObjects.add(officeClusterer);
4147
+ }
4148
+ else {
4149
+ const geoObjects = defineGeoObjects(points, 'offices', yandexMaps);
4150
+ officeClusterer.add(geoObjects);
4151
+ map.geoObjects.add(officeClusterer);
4152
+ }
4153
+ map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
4154
+ if (map.getZoom() > 10) {
4155
+ map.setZoom(10);
4156
+ }
4157
+ });
4158
+ }
4159
+ const defineClusterer = (type, yandexMaps, clusterIconContentLayout) => {
4160
+ return new yandexMaps.Clusterer({
4135
4161
  clusterIcons: [
4136
4162
  {
4137
- href: '/icons/MapMarkerClusterIcon.svg',
4163
+ href: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
4138
4164
  size: [78, 84],
4139
4165
  offset: [-35, -50],
4140
4166
  },
@@ -4143,25 +4169,20 @@
4143
4169
  clusterHideIconOnBalloonOpen: false,
4144
4170
  geoObjectHideIconOnBalloonOpen: false,
4145
4171
  });
4146
- const geoObjects = points.map(({ coords, content }) => new yandexMaps.Placemark(coords, {
4172
+ };
4173
+ const defineGeoObjects = (pointArr, type, yandexMaps) => {
4174
+ return pointArr.map(({ coords, content }) => new yandexMaps.Placemark(coords, {
4147
4175
  balloonContentHeader: content?.header,
4148
4176
  balloonContentBody: content?.body,
4149
4177
  balloonContentFooter: content?.footer,
4150
4178
  hintContent: content?.hint,
4151
4179
  }, {
4152
4180
  iconLayout: 'default#image',
4153
- iconImageHref: '/icons/MapMarkerSingleIcon.svg',
4181
+ iconImageHref: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
4154
4182
  iconImageSize: [78, 84],
4155
4183
  iconImageOffset: [-35, -50],
4156
4184
  }));
4157
- clusterer.add(geoObjects);
4158
- map.geoObjects.add(clusterer);
4159
- map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
4160
- if (map.getZoom() > 10) {
4161
- map.setZoom(10);
4162
- }
4163
- });
4164
- }
4185
+ };
4165
4186
 
4166
4187
  const styles$1 = {
4167
4188
  focus: 'focus:border-primary-text focus:border',
@@ -4293,11 +4314,11 @@
4293
4314
  controls: [],
4294
4315
  suppressMapOpenBlock: true,
4295
4316
  });
4296
- renderClusterer(yandexMaps, map.current, points);
4317
+ renderClusterer({ yandexMaps, map: map.current, points });
4297
4318
  });
4298
4319
  }
4299
4320
  else if (yandexMaps) {
4300
- renderClusterer(yandexMaps, map.current, points);
4321
+ renderClusterer({ yandexMaps, map: map.current, points });
4301
4322
  if (!points?.length) {
4302
4323
  map.current.setCenter(DEFAULT_CENTER_COORDS);
4303
4324
  }
@@ -4316,6 +4337,8 @@
4316
4337
  const mapByIndex = (points, index) => points.map((_) => _.coords[index]);
4317
4338
  const getArraySumAndAverage = (arr) => arr.length && arr.reduce((a, b) => a + b) / arr.length;
4318
4339
 
4340
+ 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;
4341
+
4319
4342
  const FILTRATION_LABELS = {
4320
4343
  safeBoxCaseVolumes: 'Аренда индивидуальных сейфовых ячеек',
4321
4344
  workingSaturday: 'Открыты по субботам',
@@ -4330,14 +4353,14 @@
4330
4353
  bullionOperations: 'Операции со слитками',
4331
4354
  preciousMetalsOperations: 'Операции с драгоценными металлами',
4332
4355
  transferringDataToBiometricSystem: 'Передача фото и голоса в Единую биометрическую систему',
4356
+ remoteWorkplace: 'Удаленное рабочее место',
4333
4357
  };
4334
4358
  const COMMON_FILTERS_STYLES = 'flex flex-col sm:flex-row sm:flex-wrap gap-3xl pb-2xl';
4335
4359
  const renderFiltrationForm = (filters, { field, reset }, onlyOffice) => {
4336
- const visibleFiltersNum = onlyOffice ? 3 : 4;
4360
+ const visibleFiltersNum = 4;
4337
4361
  const filtersCheckbox = (filters || []).map((key) => (jsx(Checkbox, { text: FILTRATION_LABELS[key], ...field(key) }, key)));
4338
- const [visibleFilters, hiddenFilters] = visibleFiltersNum > 0
4339
- ? [filtersCheckbox.slice(0, visibleFiltersNum), filtersCheckbox.slice(visibleFiltersNum)]
4340
- : [filtersCheckbox, []];
4362
+ const [visibleFilters, hiddenFilters] = [filtersCheckbox.slice(0, visibleFiltersNum), filtersCheckbox.slice(visibleFiltersNum)]
4363
+ ;
4341
4364
  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$1(reset, onlyOffice) }) })) : null }));
4342
4365
  };
4343
4366
  const renderFoldButton$1 = (reset, onlyOffice) => ({ isUnfolded, onToggle }) => {
@@ -4349,37 +4372,47 @@
4349
4372
  const defaultEmptyFunction = () => void 0;
4350
4373
  const defaultFilterItems = () => [];
4351
4374
  const filtersVisibleStyles = (activeButton) => activeButton === 'all' ? 'block' : 'hidden';
4352
- const OfficesAtmsMapLayout = JSX(({ className, data = [], renderCard = defaultEmptyFunction, filterItems = defaultFilterItems, getBalloon = defaultEmptyFunction, initFilterState = {}, descriptionData, title, }) => {
4375
+ const OfficesAtmsMapLayout = JSX(({ className, data = [], remoteWorkplaces = [], renderCard = defaultEmptyFunction, renderRemoteWorkplaceCard = defaultEmptyFunction, filterItems = defaultFilterItems, getBalloon = defaultEmptyFunction, getBalloonRemoteWorkplaces = defaultEmptyFunction, initFilterState = {}, descriptionData, title, }) => {
4353
4376
  const onlyOffice = title?.includes('Офис');
4354
4377
  const [filtrationState, { field, reset }] = useForm(initFilterState);
4355
- const [filteredItems, points, lengthItems] = useMemo(() => {
4378
+ const [filteredItems, points, filteredRemoteWorkplaces, lengthItems] = useMemo(() => {
4356
4379
  const _filteredItems = filterItems(data, filtrationState);
4357
- const _points = _filteredItems
4358
- .map((_) => ({
4359
- coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
4360
- content: getBalloon(_),
4361
- }))
4362
- .filter((_) => _.coords && _.coords.length === 2);
4363
- return [_filteredItems, _points, _filteredItems.length];
4364
- }, [data, filtrationState]);
4380
+ const _filteredRemoteWorkplaces = filterItems(remoteWorkplaces, filtrationState);
4381
+ const _points = [
4382
+ ..._filteredItems.map((_) => ({
4383
+ type: 'offices',
4384
+ coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
4385
+ content: getBalloon(_),
4386
+ })),
4387
+ ..._filteredRemoteWorkplaces.map((_) => ({
4388
+ type: 'workplaces',
4389
+ coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
4390
+ content: getBalloonRemoteWorkplaces({
4391
+ address: _.address,
4392
+ workScheduleDescription: _.workScheduleDescription,
4393
+ }),
4394
+ })),
4395
+ ].filter((_) => _.coords && _.coords.length === 2);
4396
+ const itemsLength = _filteredItems.length + _filteredRemoteWorkplaces?.length;
4397
+ return [_filteredItems, _points, _filteredRemoteWorkplaces, itemsLength];
4398
+ }, [data, remoteWorkplaces, filtrationState]);
4365
4399
  const [activeButton, setActiveButton] = useState('all');
4366
- 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)] }));
4400
+ 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)] }));
4367
4401
  });
4368
- const renderButtonsGroup = (data, activeButton, setActiveButton) => {
4402
+ const renderButtonsGroup = (data, activeButton, onButtonClick) => {
4369
4403
  const allButtonVersion = activeButton === 'all' ? 'primary' : 'secondary';
4370
4404
  const businessButtonVersion = activeButton === 'business' ? 'primary' : 'secondary';
4371
- const handleOnClick = (e, key, branches) => {
4405
+ const handleClick = (e, key, branches) => {
4372
4406
  if (e.currentTarget === e.target && key === 'business') {
4373
4407
  branches.filter((branch) => branch.workSchedule &&
4374
4408
  branch.workSchedule.businessScheduleVisibleTag &&
4375
4409
  !branch.workSchedule.businessScheduleDescription);
4376
4410
  }
4377
- setActiveButton(key);
4411
+ onButtonClick(key);
4378
4412
  return branches;
4379
4413
  };
4380
- 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" })] }));
4414
+ 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" })] }));
4381
4415
  };
4382
- 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;
4383
4416
 
4384
4417
  const colorStyle = {
4385
4418
  yellow: { border: 'border-yellow-light', text: 'text-yellow' },
@@ -4603,7 +4636,7 @@
4603
4636
  return null;
4604
4637
  }
4605
4638
  const workScheduleWeek = getWorkScheduleWeek(workSchedule);
4606
- 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({
4639
+ 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({
4607
4640
  phone,
4608
4641
  fax,
4609
4642
  phoneBusiness,
@@ -4613,7 +4646,7 @@
4613
4646
  workSchedule,
4614
4647
  exchangeRate,
4615
4648
  }) }), jsx(Foldable, { className: "block sm:hidden", renderFoldableSection: ({ isUnfolded }) => {
4616
- return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent({
4649
+ return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent$1({
4617
4650
  phone,
4618
4651
  fax,
4619
4652
  phoneBusiness,
@@ -4627,7 +4660,7 @@
4627
4660
  //** TODO: remove styles with refactoring DefaultFoldButton*/
4628
4661
  renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton({ isUnfolded, onToggle }) })] }, String(index)));
4629
4662
  };
4630
- const renderCardContent = ({ phone, fax, phoneBusiness, phoneNatural, phoneCallCentre, phoneCurrencyControl, workSchedule, exchangeRate, }) => {
4663
+ const renderCardContent$1 = ({ phone, fax, phoneBusiness, phoneNatural, phoneCallCentre, phoneCurrencyControl, workSchedule, exchangeRate, }) => {
4631
4664
  const workScheduleWeek = getWorkScheduleWeek(workSchedule);
4632
4665
  const labelSchedule = workSchedule?.businessScheduleVisibleTag
4633
4666
  ? 'Для физических лиц'
@@ -4643,13 +4676,38 @@
4643
4676
  return { header, body };
4644
4677
  };
4645
4678
 
4679
+ const renderRemoteWorkplaceCard = ({ address, workScheduleDescription }, index) => {
4680
+ if (!workScheduleDescription) {
4681
+ return null;
4682
+ }
4683
+ 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({
4684
+ workScheduleDescription,
4685
+ }) }), jsx(Foldable, { className: "block sm:hidden", renderFoldableSection: ({ isUnfolded }) => {
4686
+ return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent({
4687
+ workScheduleDescription,
4688
+ }) }));
4689
+ },
4690
+ //** TODO: remove styles with refactoring DefaultFoldButton*/
4691
+ renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton({ isUnfolded, onToggle }) })] }, String(index)));
4692
+ };
4693
+ const renderCardContent = ({ workScheduleDescription }) => {
4694
+ 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 }) })] }));
4695
+ };
4696
+ const getRemoteWorkplacePoint = ({ address = '', workScheduleDescription, }) => {
4697
+ const header = 'Удаленное рабочее место';
4698
+ const body = `${address} ${workScheduleDescription}`;
4699
+ return { header, body };
4700
+ };
4701
+
4646
4702
  const EMPTY_VALUE$1 = [];
4647
4703
  function useOffices(regionCode) {
4648
- const { data = EMPTY_VALUE$1 } = useAsyncData(`/api/v1/branches?regionCode=${regionCode}`, fetchMap);
4704
+ const { data = EMPTY_VALUE$1 } = useAsyncData(`/api/v1/branchesAndRemoteWorkplaces?regionCode=${regionCode}`, fetchMap);
4649
4705
  return data;
4650
4706
  }
4651
4707
  const fetchMap = async (url) => {
4652
- const result = await fetchJSON(url, { method: 'GET' });
4708
+ const result = await fetchJSON(url, {
4709
+ method: 'GET',
4710
+ });
4653
4711
  return Array.isArray(result) ? result : EMPTY_VALUE$1;
4654
4712
  };
4655
4713
 
@@ -4657,6 +4715,7 @@
4657
4715
  workingSaturday: false,
4658
4716
  premiumService: false,
4659
4717
  privateBanking: false,
4718
+ remoteWorkplace: false,
4660
4719
  sellingCoins: false,
4661
4720
  buyingCoins: false,
4662
4721
  bullionOperations: false,
@@ -4664,20 +4723,21 @@
4664
4723
  transferringDataToBiometricSystem: false,
4665
4724
  };
4666
4725
  const FILTRATION_PREDICATES = {
4667
- workingSaturday: (item) => Boolean(item.workSchedule?.workingSaturday),
4668
- premiumService: (item) => Boolean(item.premiumService),
4669
- privateBanking: (item) => Boolean(item.privateBanking),
4670
- sellingCoins: (item) => Boolean(item.sellingCoins),
4671
- buyingCoins: (item) => Boolean(item.buyingCoins),
4672
- bullionOperations: (item) => Boolean(item.bullionOperations),
4673
- preciousMetalsOperations: (item) => Boolean(item.preciousMetalsOperations),
4674
- transferringDataToBiometricSystem: (item) => Boolean(item.transferringDataToBiometricSystem),
4726
+ workingSaturday: (item) => Boolean('workSchedule' in item && item.workSchedule?.workingSaturday),
4727
+ premiumService: (item) => Boolean('premiumService' in item && item.premiumService),
4728
+ privateBanking: (item) => Boolean('privateBanking' in item && item.privateBanking),
4729
+ remoteWorkplace: (item) => Boolean('workScheduleDescription' in item),
4730
+ sellingCoins: (item) => Boolean('sellingCoins' in item && item.sellingCoins),
4731
+ buyingCoins: (item) => Boolean('buyingCoins' in item && item.buyingCoins),
4732
+ bullionOperations: (item) => Boolean('bullionOperations' in item && item.bullionOperations),
4733
+ preciousMetalsOperations: (item) => Boolean('preciousMetalsOperations' in item && item.preciousMetalsOperations),
4734
+ transferringDataToBiometricSystem: (item) => Boolean('transferringDataToBiometricSystem' in item && item.transferringDataToBiometricSystem),
4675
4735
  };
4676
4736
  const OfficesMap = JSX(({ className }) => {
4677
4737
  const [currentLocation] = useLocation();
4678
4738
  const regionCode = currentLocation?.code ?? '000';
4679
4739
  const officesData = useOffices(regionCode);
4680
- return (jsx(OfficesAtmsMapLayout, { className: className, filterItems: filterItems, data: officesData, initFilterState: INITIAL_FILTRATION_STATE, renderCard: renderOfficeCard, getBalloon: getOfficePoint, title: `Офисы филиала ${currentLocation?.name}` }));
4740
+ 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}` }));
4681
4741
  });
4682
4742
  const filterItems = (data, filtrationState) => {
4683
4743
  const truthyFilters = Object.keys(filtrationState).filter((key) => filtrationState[key]);
@@ -5730,7 +5790,7 @@
5730
5790
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
5731
5791
  });
5732
5792
 
5733
- const packageVersion = "0.14.331";
5793
+ const packageVersion = "0.14.333";
5734
5794
 
5735
5795
  exports.Blocks = Blocks;
5736
5796
  exports.ContentPage = ContentPage;