@evergis/uilib-gl 1.0.134 → 1.0.136

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.
@@ -19,6 +19,12 @@ export declare type IPreviewProps = ControlText & {
19
19
  isOpen?: boolean;
20
20
  onClose?: VoidFunction;
21
21
  root?: HTMLElement | null;
22
+ /**
23
+ * Обработчик скачивания текущего изображения. Если задан, кнопка «Скачать» вызывает его
24
+ * вместо перехода по `src` — это нужно, когда файл требуется получить в момент клика
25
+ * (например, `src` показывает иконку типа файла, а скачать надо сам документ).
26
+ */
27
+ onDownload?: (image: IPreviewImage, index: number) => void;
22
28
  };
23
29
  export declare type ImageSlideShowType = [{
24
30
  chosenImage: IPreviewImage;
@@ -35,6 +41,7 @@ export interface IPreviewButtonProps {
35
41
  }
36
42
  export declare type IPreviewControlsProps = ControlText & {
37
43
  chosenImage?: IPreviewImage;
44
+ onDownload?: VoidFunction;
38
45
  fullscreen?: boolean;
39
46
  toggleFullscreen?: VoidFunction;
40
47
  close?: VoidFunction;
@@ -25283,12 +25283,13 @@ const RangeNumberInputComponent = _ref => {
25283
25283
 
25284
25284
  }, [minNumber, maxNumber]);
25285
25285
  useEffect(() => {
25286
- if (Array.isArray(rangeDate)) {
25287
- !rangeDate[0] && !rangeDate[1] && setRangeDate([minDate, maxDate]);
25288
- } else {
25289
- !rangeDate && setRangeDate(minDate);
25290
- } // eslint-disable-next-line react-hooks/exhaustive-deps
25286
+ setRangeDate(prevRangeDate => {
25287
+ if (Array.isArray(prevRangeDate)) {
25288
+ return !prevRangeDate[0] && !prevRangeDate[1] ? [minDate, maxDate] : prevRangeDate;
25289
+ }
25291
25290
 
25291
+ return prevRangeDate || minDate;
25292
+ });
25292
25293
  }, [minDate, maxDate]);
25293
25294
  useEffect(() => {
25294
25295
  if (isDate) {
@@ -26426,11 +26427,16 @@ const PreviewControlsComponent = _ref => {
26426
26427
  fullScreenTitleText,
26427
26428
  closeTitleText,
26428
26429
  prevImgTitleText,
26429
- nextImgTitleText
26430
+ nextImgTitleText,
26431
+ onDownload
26430
26432
  } = _ref;
26431
26433
  return React.createElement(React.Fragment, null, React.createElement(ControlsContainer, null, React.createElement(ControlContainer$1, {
26432
26434
  withPadding: true
26433
- }, chosenImage && React.createElement("a", {
26435
+ }, chosenImage && (onDownload ? React.createElement(IconButton, {
26436
+ title: downloadTitleText || "Скачать",
26437
+ kind: "download",
26438
+ onClick: onDownload
26439
+ }) : React.createElement("a", {
26434
26440
  href: chosenImage.src,
26435
26441
  download: chosenImage.fileName,
26436
26442
  target: "_blank",
@@ -26438,7 +26444,7 @@ const PreviewControlsComponent = _ref => {
26438
26444
  }, React.createElement(IconButton, {
26439
26445
  title: downloadTitleText || "Скачать",
26440
26446
  kind: "download"
26441
- })), React.createElement(IconButton, {
26447
+ }))), React.createElement(IconButton, {
26442
26448
  title: fullScreenTitleText || "На весь экран",
26443
26449
  kind: fullscreen ? "minimize" : "maximize",
26444
26450
  onClick: toggleFullscreen
@@ -26662,7 +26668,8 @@ const PreviewComponent = _ref => {
26662
26668
  closeTitleText,
26663
26669
  prevImgTitleText,
26664
26670
  nextImgTitleText,
26665
- errorTitleText
26671
+ errorTitleText,
26672
+ onDownload
26666
26673
  } = _ref;
26667
26674
  const [{
26668
26675
  chosenImageIndex,
@@ -26685,6 +26692,7 @@ const PreviewComponent = _ref => {
26685
26692
  hasError: true
26686
26693
  } : image), [images, failedSrcs]);
26687
26694
  const decoratedChosenImage = useMemo(() => chosenImage ? decoratedImages[chosenImageIndex] ?? chosenImage : undefined, [chosenImage, chosenImageIndex, decoratedImages]);
26695
+ const handleDownload = useMemo(() => onDownload && decoratedChosenImage ? () => onDownload(decoratedChosenImage, chosenImageIndex) : undefined, [onDownload, decoratedChosenImage, chosenImageIndex]);
26688
26696
  const shouldOpenPreview = useMemo(() => images.length > 0 && isOpen, [images, isOpen]);
26689
26697
  return !shouldOpenPreview ? null : React.createElement(Portal, {
26690
26698
  root: root
@@ -26701,7 +26709,8 @@ const PreviewComponent = _ref => {
26701
26709
  fullScreenTitleText: fullScreenTitleText,
26702
26710
  closeTitleText: closeTitleText,
26703
26711
  prevImgTitleText: prevImgTitleText,
26704
- nextImgTitleText: nextImgTitleText
26712
+ nextImgTitleText: nextImgTitleText,
26713
+ onDownload: handleDownload
26705
26714
  }), React.createElement(PreviewSlideShow, {
26706
26715
  images: decoratedImages,
26707
26716
  chosenImageIndex: chosenImageIndex,