Nhảy tới nội dung
Phiên bản: 1.9.0

Bắt đầu hỗ trợ ở phiên bản:

  • zmp-ui: 1.7.0

ImageViewer component: Component giúp tạo một gallery để xem hình ảnh với kích thước của màn hình, người dùng có thể tương tác thu phóng, chuyển hình,...

Properties

ImageViewer

NameTypeDefaultDescription
activeIndexnumber

Index của ảnh đang được hiển thị.

imagesImageType[]

Mảng chứa thông tin của các ảnh cần hiển thị. Mỗi thiết lập bao gồm đường dẫn và mô tả của ảnh. Chi tiết xem .

maskClassNamestring

CSS class cho mask của image viewer.

maskStyleCSSProperties

Inline style cho mask của image viewer.

visiblebooleanfalse

Trạng thái hiển thị của image viewer. Cần được sử dụng cùng với onClose để đóng image viewer.

onClose() => void

Callback được gọi khi image viewer được đóng. Cần phải update lại state của visible nếu được truyền vào.

ImageType

NameTypeDefaultDescription
altstring

Mô tả của ảnh. Sẽ được hiển thị khi không thể load ảnh.

srcstring

Đường dẫn của ảnh.

Example

import React, { useState } from "react";
import { Page, ImageViewer, Box, Text } from "zmp-ui";

const images = [
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/e2e10aa1a6087a5623192.jpg",
    alt: "img 1",
    key: "1",
  },
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/fee40cbea0177c4925061.jpg",
    alt: "img 2",
    key: "2",
  },
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/82ca759bd932056c5c233.jpg",
    alt: "img 3",
    key: "3",
  },
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/77f5b8cd1464c83a91754.jpg",
    alt: "img 4",
    key: "4",
  },
];

export default function HomePage() {
  const [visible, setVisible] = useState(false);
  const [activeIndex, setActiveIndex] = useState(0);
  return (
    <Page className="section-container">
      <Text.Title size="small">ImageViewer</Text.Title>
      <Box mt={6}>
        <Box>
          <Text.Title size="small">Usage</Text.Title>
        </Box>
        <Box mt={2}>
          <Text size="xSmall" className="input-desc">
            Khi cần xem và tương tác với hình ảnh trên kích thước lớn hơn
          </Text>
        </Box>
        <Box mt={6}>
          <Text.Title size="small">Example</Text.Title>
        </Box>
        <Box mt={2}>
          <Box flex flexDirection="row" flexWrap="nowrap">
            {images.map((img, index) => (
              <Box
                mr={1}
                key={img.key}
                style={{
                  width: "68px",
                  height: "69px",
                  borderRadius: "8px",
                  overflow: "hidden",
                }}
              >
                <img
                  style={{ width: "100%", height: "100%", objectFit: "cover" }}
                  role="presentation"
                  onClick={() => {
                    setActiveIndex(index);
                    setVisible(true);
                  }}
                  src={img.src}
                  alt={img.alt}
                />
              </Box>
            ))}
          </Box>
          <ImageViewer
            onClose={() => setVisible(false)}
            activeIndex={activeIndex}
            images={images}
            visible={visible}
          />
        </Box>
      </Box>
    </Page>
  );
}