@redneckz/wildless-cms-uni-blocks 0.14.333 → 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 (158) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +108 -50
  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/icons/IconName.d.ts +4 -2
  11. package/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  12. package/bundle/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  13. package/cosmos-static/icons/MapMarkerClusterYellowIcon.svg +1 -0
  14. package/cosmos-static/icons/sprites.svg +1 -0
  15. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  16. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  17. package/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  18. package/dist/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  19. package/dist/components/OfficesAtmsMap/OfficesMap.js +12 -9
  20. package/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  21. package/dist/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  22. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  23. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.js +9 -0
  24. package/dist/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  25. package/dist/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  26. package/dist/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  27. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  28. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +35 -0
  29. package/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  30. package/dist/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  31. package/dist/components/OfficesAtmsMap/useOffices.js +4 -2
  32. package/dist/components/OfficesAtmsMap/useOffices.js.map +1 -1
  33. package/dist/icons/IconName.d.ts +4 -2
  34. package/dist/icons/IconName.js +3 -1
  35. package/dist/icons/IconName.js.map +1 -1
  36. package/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  37. package/dist/ui-kit/YandexMap/YandexMap.js +2 -2
  38. package/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  39. package/dist/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  40. package/dist/ui-kit/YandexMap/renderClusterer.js +33 -14
  41. package/dist/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  42. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  43. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  44. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  45. package/lib/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  46. package/lib/components/OfficesAtmsMap/OfficesMap.js +12 -9
  47. package/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  48. package/lib/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  49. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +2 -0
  50. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.js +6 -0
  51. package/lib/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  52. package/lib/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  53. package/lib/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  54. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +6 -0
  55. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +31 -0
  56. package/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  57. package/lib/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  58. package/lib/components/OfficesAtmsMap/useOffices.js +4 -2
  59. package/lib/components/OfficesAtmsMap/useOffices.js.map +1 -1
  60. package/lib/icons/IconName.d.ts +4 -2
  61. package/lib/icons/IconName.js +3 -1
  62. package/lib/icons/IconName.js.map +1 -1
  63. package/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  64. package/lib/ui-kit/YandexMap/YandexMap.js +2 -2
  65. package/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  66. package/lib/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  67. package/lib/ui-kit/YandexMap/renderClusterer.js +32 -13
  68. package/lib/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  69. package/mobile/bundle/bundle.umd.js +108 -50
  70. package/mobile/bundle/bundle.umd.min.js +1 -1
  71. package/mobile/bundle/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  72. package/mobile/bundle/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  73. package/mobile/bundle/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  74. package/mobile/bundle/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  75. package/mobile/bundle/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  76. package/mobile/bundle/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  77. package/mobile/bundle/icons/IconName.d.ts +4 -2
  78. package/mobile/bundle/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  79. package/mobile/bundle/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  80. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  81. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  82. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  83. package/mobile/dist/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  84. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js +12 -9
  85. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  86. package/mobile/dist/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  87. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  88. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.js +9 -0
  89. package/mobile/dist/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  90. package/mobile/dist/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  91. package/mobile/dist/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  92. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  93. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +35 -0
  94. package/mobile/dist/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  95. package/mobile/dist/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  96. package/mobile/dist/components/OfficesAtmsMap/useOffices.js +4 -2
  97. package/mobile/dist/components/OfficesAtmsMap/useOffices.js.map +1 -1
  98. package/mobile/dist/icons/IconName.d.ts +4 -2
  99. package/mobile/dist/icons/IconName.js +3 -1
  100. package/mobile/dist/icons/IconName.js.map +1 -1
  101. package/mobile/dist/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  102. package/mobile/dist/ui-kit/YandexMap/YandexMap.js +2 -2
  103. package/mobile/dist/ui-kit/YandexMap/YandexMap.js.map +1 -1
  104. package/mobile/dist/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  105. package/mobile/dist/ui-kit/YandexMap/renderClusterer.js +33 -14
  106. package/mobile/dist/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  107. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +5 -2
  108. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js +27 -18
  109. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.js.map +1 -1
  110. package/mobile/lib/components/OfficesAtmsMap/OfficesAtmsMapProps.d.ts +15 -0
  111. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js +12 -9
  112. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  113. package/mobile/lib/components/OfficesAtmsMap/YandexMapProps.d.ts +1 -0
  114. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.d.ts +3 -0
  115. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.js +6 -0
  116. package/mobile/lib/components/OfficesAtmsMap/renderDescriptionBlock.js.map +1 -0
  117. package/mobile/lib/components/OfficesAtmsMap/renderFiltrationForm.js +2 -1
  118. package/mobile/lib/components/OfficesAtmsMap/renderFiltrationForm.js.map +1 -1
  119. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.d.ts +7 -0
  120. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js +31 -0
  121. package/mobile/lib/components/OfficesAtmsMap/renderRemoteWorkplaceCard.js.map +1 -0
  122. package/mobile/lib/components/OfficesAtmsMap/useOffices.d.ts +5 -2
  123. package/mobile/lib/components/OfficesAtmsMap/useOffices.js +4 -2
  124. package/mobile/lib/components/OfficesAtmsMap/useOffices.js.map +1 -1
  125. package/mobile/lib/icons/IconName.d.ts +4 -2
  126. package/mobile/lib/icons/IconName.js +3 -1
  127. package/mobile/lib/icons/IconName.js.map +1 -1
  128. package/mobile/lib/ui-kit/YandexMap/YandexMap.d.ts +1 -1
  129. package/mobile/lib/ui-kit/YandexMap/YandexMap.js +2 -2
  130. package/mobile/lib/ui-kit/YandexMap/YandexMap.js.map +1 -1
  131. package/mobile/lib/ui-kit/YandexMap/renderClusterer.d.ts +5 -1
  132. package/mobile/lib/ui-kit/YandexMap/renderClusterer.js +32 -13
  133. package/mobile/lib/ui-kit/YandexMap/renderClusterer.js.map +1 -1
  134. package/mobile/src/components/OfficesAtmsMap/OfficesAtmsMapLayout.tsx +34 -45
  135. package/mobile/src/components/OfficesAtmsMap/OfficesAtmsMapProps.tsx +15 -0
  136. package/mobile/src/components/OfficesAtmsMap/OfficesMap.tsx +28 -12
  137. package/mobile/src/components/OfficesAtmsMap/YandexMapProps.ts +1 -0
  138. package/mobile/src/components/OfficesAtmsMap/renderDescriptionBlock.tsx +29 -0
  139. package/mobile/src/components/OfficesAtmsMap/renderFiltrationForm.tsx +2 -1
  140. package/mobile/src/components/OfficesAtmsMap/renderRemoteWorkplaceCard.tsx +86 -0
  141. package/mobile/src/components/OfficesAtmsMap/useOffices.ts +11 -4
  142. package/mobile/src/icons/IconName.ts +5 -5
  143. package/mobile/src/icons/MapMarkerClusterYellowIcon.svg +1 -0
  144. package/mobile/src/ui-kit/YandexMap/YandexMap.tsx +3 -3
  145. package/mobile/src/ui-kit/YandexMap/renderClusterer.ts +62 -16
  146. package/package.json +1 -1
  147. package/src/components/OfficesAtmsMap/OfficesAtmsMapLayout.tsx +34 -45
  148. package/src/components/OfficesAtmsMap/OfficesAtmsMapProps.tsx +15 -0
  149. package/src/components/OfficesAtmsMap/OfficesMap.tsx +28 -12
  150. package/src/components/OfficesAtmsMap/YandexMapProps.ts +1 -0
  151. package/src/components/OfficesAtmsMap/renderDescriptionBlock.tsx +29 -0
  152. package/src/components/OfficesAtmsMap/renderFiltrationForm.tsx +2 -1
  153. package/src/components/OfficesAtmsMap/renderRemoteWorkplaceCard.tsx +86 -0
  154. package/src/components/OfficesAtmsMap/useOffices.ts +11 -4
  155. package/src/icons/IconName.ts +5 -1
  156. package/src/icons/MapMarkerClusterYellowIcon.svg +1 -0
  157. package/src/ui-kit/YandexMap/YandexMap.tsx +3 -3
  158. package/src/ui-kit/YandexMap/renderClusterer.ts +62 -16
@@ -4817,13 +4817,37 @@
4817
4817
  childSchema: (content) => content?.filtrationSchema || {},
4818
4818
  });
4819
4819
 
4820
- function renderClusterer(yandexMaps, map, points) {
4820
+ const MapMarkerClusterIcon = '/icons/MapMarkerClusterIcon.svg';
4821
+ const MapMarkerClusterYellowIcon = '/icons/MapMarkerClusterYellowIcon.svg';
4822
+ function renderClusterer({ yandexMaps, map, points, }) {
4821
4823
  map.geoObjects.removeAll();
4822
4824
  const clusterIconContentLayout = yandexMaps.templateLayoutFactory.createClass('<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>');
4823
- 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({
4824
4848
  clusterIcons: [
4825
4849
  {
4826
- href: '/icons/MapMarkerClusterIcon.svg',
4850
+ href: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
4827
4851
  size: [78, 84],
4828
4852
  offset: [-35, -50],
4829
4853
  },
@@ -4832,25 +4856,20 @@
4832
4856
  clusterHideIconOnBalloonOpen: false,
4833
4857
  geoObjectHideIconOnBalloonOpen: false,
4834
4858
  });
4835
- 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, {
4836
4862
  balloonContentHeader: content?.header,
4837
4863
  balloonContentBody: content?.body,
4838
4864
  balloonContentFooter: content?.footer,
4839
4865
  hintContent: content?.hint,
4840
4866
  }, {
4841
4867
  iconLayout: 'default#image',
4842
- iconImageHref: '/icons/MapMarkerSingleIcon.svg',
4868
+ iconImageHref: type === 'offices' ? MapMarkerClusterIcon : MapMarkerClusterYellowIcon,
4843
4869
  iconImageSize: [78, 84],
4844
4870
  iconImageOffset: [-35, -50],
4845
4871
  }));
4846
- clusterer.add(geoObjects);
4847
- map.geoObjects.add(clusterer);
4848
- map.setBounds(yandexMaps.util.bounds.fromPoints(points.map((_) => _.coords))).then(() => {
4849
- if (map.getZoom() > 10) {
4850
- map.setZoom(10);
4851
- }
4852
- });
4853
- }
4872
+ };
4854
4873
 
4855
4874
  const styles$1 = {
4856
4875
  focus: 'focus:border-primary-text focus:border',
@@ -4923,11 +4942,11 @@
4923
4942
  controls: [],
4924
4943
  suppressMapOpenBlock: true,
4925
4944
  });
4926
- renderClusterer(yandexMaps, map.current, points);
4945
+ renderClusterer({ yandexMaps, map: map.current, points });
4927
4946
  });
4928
4947
  }
4929
4948
  else if (yandexMaps) {
4930
- renderClusterer(yandexMaps, map.current, points);
4949
+ renderClusterer({ yandexMaps, map: map.current, points });
4931
4950
  if (!points?.length) {
4932
4951
  map.current.setCenter(DEFAULT_CENTER_COORDS);
4933
4952
  }
@@ -4946,6 +4965,8 @@
4946
4965
  const mapByIndex = (points, index) => points.map((_) => _.coords[index]);
4947
4966
  const getArraySumAndAverage = (arr) => arr.length && arr.reduce((a, b) => a + b) / arr.length;
4948
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
+
4949
4970
  const FILTRATION_LABELS = {
4950
4971
  safeBoxCaseVolumes: 'Аренда индивидуальных сейфовых ячеек',
4951
4972
  workingSaturday: 'Открыты по субботам',
@@ -4960,14 +4981,14 @@
4960
4981
  bullionOperations: 'Операции со слитками',
4961
4982
  preciousMetalsOperations: 'Операции с драгоценными металлами',
4962
4983
  transferringDataToBiometricSystem: 'Передача фото и голоса в Единую биометрическую систему',
4984
+ remoteWorkplace: 'Удаленное рабочее место',
4963
4985
  };
4964
4986
  const COMMON_FILTERS_STYLES = 'flex flex-col sm:flex-row sm:flex-wrap gap-3xl pb-2xl';
4965
4987
  const renderFiltrationForm = (filters, { field, reset }, onlyOffice) => {
4966
- const visibleFiltersNum = onlyOffice ? 3 : 4;
4988
+ const visibleFiltersNum = 4;
4967
4989
  const filtersCheckbox = (filters || []).map((key) => (jsx(Checkbox, { text: FILTRATION_LABELS[key], ...field(key) }, key)));
4968
- const [visibleFilters, hiddenFilters] = visibleFiltersNum > 0
4969
- ? [filtersCheckbox.slice(0, visibleFiltersNum), filtersCheckbox.slice(visibleFiltersNum)]
4970
- : [filtersCheckbox, []];
4990
+ const [visibleFilters, hiddenFilters] = [filtersCheckbox.slice(0, visibleFiltersNum), filtersCheckbox.slice(visibleFiltersNum)]
4991
+ ;
4971
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 }));
4972
4993
  };
4973
4994
  const renderFoldButton$2 = (reset, onlyOffice) => ({ isUnfolded, onToggle }) => {
@@ -4979,37 +5000,47 @@
4979
5000
  const defaultEmptyFunction = () => void 0;
4980
5001
  const defaultFilterItems = () => [];
4981
5002
  const filtersVisibleStyles = (activeButton) => activeButton === 'all' ? 'block' : 'hidden';
4982
- 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, }) => {
4983
5004
  const onlyOffice = title?.includes('Офис');
4984
5005
  const [filtrationState, { field, reset }] = useForm(initFilterState);
4985
- const [filteredItems, points, lengthItems] = useMemo(() => {
5006
+ const [filteredItems, points, filteredRemoteWorkplaces, lengthItems] = useMemo(() => {
4986
5007
  const _filteredItems = filterItems(data, filtrationState);
4987
- const _points = _filteredItems
4988
- .map((_) => ({
4989
- coords: [Number(_.gpsLatitude), Number(_.gpsLongitude)]?.filter(Boolean),
4990
- content: getBalloon(_),
4991
- }))
4992
- .filter((_) => _.coords && _.coords.length === 2);
4993
- return [_filteredItems, _points, _filteredItems.length];
4994
- }, [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]);
4995
5027
  const [activeButton, setActiveButton] = useState('all');
4996
- 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)] }));
4997
5029
  });
4998
- const renderButtonsGroup = (data, activeButton, setActiveButton) => {
5030
+ const renderButtonsGroup = (data, activeButton, onButtonClick) => {
4999
5031
  const allButtonVersion = activeButton === 'all' ? 'primary' : 'secondary';
5000
5032
  const businessButtonVersion = activeButton === 'business' ? 'primary' : 'secondary';
5001
- const handleOnClick = (e, key, branches) => {
5033
+ const handleClick = (e, key, branches) => {
5002
5034
  if (e.currentTarget === e.target && key === 'business') {
5003
5035
  branches.filter((branch) => branch.workSchedule &&
5004
5036
  branch.workSchedule.businessScheduleVisibleTag &&
5005
5037
  !branch.workSchedule.businessScheduleDescription);
5006
5038
  }
5007
- setActiveButton(key);
5039
+ onButtonClick(key);
5008
5040
  return branches;
5009
5041
  };
5010
- 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" })] }));
5011
5043
  };
5012
- 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;
5013
5044
 
5014
5045
  const colorStyle = {
5015
5046
  yellow: { border: 'border-yellow-light', text: 'text-yellow' },
@@ -5233,7 +5264,7 @@
5233
5264
  return null;
5234
5265
  }
5235
5266
  const workScheduleWeek = getWorkScheduleWeek(workSchedule);
5236
- 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({
5237
5268
  phone,
5238
5269
  fax,
5239
5270
  phoneBusiness,
@@ -5243,7 +5274,7 @@
5243
5274
  workSchedule,
5244
5275
  exchangeRate,
5245
5276
  }) }), jsx(Foldable, { className: "block sm:hidden", renderFoldableSection: ({ isUnfolded }) => {
5246
- return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent({
5277
+ return (jsx(FoldableSection, { isUnfolded: isUnfolded, children: renderCardContent$1({
5247
5278
  phone,
5248
5279
  fax,
5249
5280
  phoneBusiness,
@@ -5257,7 +5288,7 @@
5257
5288
  //** TODO: remove styles with refactoring DefaultFoldButton*/
5258
5289
  renderFoldButton: ({ isUnfolded, onToggle }) => renderFoldButton$1({ isUnfolded, onToggle }) })] }, String(index)));
5259
5290
  };
5260
- const renderCardContent = ({ phone, fax, phoneBusiness, phoneNatural, phoneCallCentre, phoneCurrencyControl, workSchedule, exchangeRate, }) => {
5291
+ const renderCardContent$1 = ({ phone, fax, phoneBusiness, phoneNatural, phoneCallCentre, phoneCurrencyControl, workSchedule, exchangeRate, }) => {
5261
5292
  const workScheduleWeek = getWorkScheduleWeek(workSchedule);
5262
5293
  const labelSchedule = workSchedule?.businessScheduleVisibleTag
5263
5294
  ? 'Для физических лиц'
@@ -5273,13 +5304,38 @@
5273
5304
  return { header, body };
5274
5305
  };
5275
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
+
5276
5330
  const EMPTY_VALUE$1 = [];
5277
5331
  function useOffices(regionCode) {
5278
- 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);
5279
5333
  return data;
5280
5334
  }
5281
5335
  const fetchMap = async (url) => {
5282
- const result = await fetchJSON(url, { method: 'GET' });
5336
+ const result = await fetchJSON(url, {
5337
+ method: 'GET',
5338
+ });
5283
5339
  return Array.isArray(result) ? result : EMPTY_VALUE$1;
5284
5340
  };
5285
5341
 
@@ -5287,6 +5343,7 @@
5287
5343
  workingSaturday: false,
5288
5344
  premiumService: false,
5289
5345
  privateBanking: false,
5346
+ remoteWorkplace: false,
5290
5347
  sellingCoins: false,
5291
5348
  buyingCoins: false,
5292
5349
  bullionOperations: false,
@@ -5294,20 +5351,21 @@
5294
5351
  transferringDataToBiometricSystem: false,
5295
5352
  };
5296
5353
  const FILTRATION_PREDICATES = {
5297
- workingSaturday: (item) => Boolean(item.workSchedule?.workingSaturday),
5298
- premiumService: (item) => Boolean(item.premiumService),
5299
- privateBanking: (item) => Boolean(item.privateBanking),
5300
- sellingCoins: (item) => Boolean(item.sellingCoins),
5301
- buyingCoins: (item) => Boolean(item.buyingCoins),
5302
- bullionOperations: (item) => Boolean(item.bullionOperations),
5303
- preciousMetalsOperations: (item) => Boolean(item.preciousMetalsOperations),
5304
- 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),
5305
5363
  };
5306
5364
  const OfficesMap = JSX(({ className }) => {
5307
5365
  const [currentLocation] = useLocation();
5308
5366
  const regionCode = currentLocation?.code ?? '000';
5309
5367
  const officesData = useOffices(regionCode);
5310
- 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}` }));
5311
5369
  });
5312
5370
  const filterItems = (data, filtrationState) => {
5313
5371
  const truthyFilters = Object.keys(filtrationState).filter((key) => filtrationState[key]);
@@ -6180,7 +6238,7 @@
6180
6238
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
6181
6239
  });
6182
6240
 
6183
- const packageVersion = "0.14.332";
6241
+ const packageVersion = "0.14.333";
6184
6242
 
6185
6243
  exports.Blocks = Blocks;
6186
6244
  exports.ContentPage = ContentPage;