Photo Browser React Component
Photo Browser is an photo browser component to display collection of photos / images. Photos can be zoomed and panned (optional).
Photo Browser React component represents Framework7's Photo Browser component.
Photo Browser React component doesn't render any output. It can be used to create JS Photo Browser instance and control it inside of your React component.
Photo Browser Component
There are following components included:
PhotoBrowser
Photo Browser Properties
You can pass all parameters in single params
property or use separate props for each parameter to specify them via component properties:
Prop | Type | Default | Description |
---|---|---|---|
<PhotoBrowser> properties | |||
init | boolean | true | Initializes Photo Browser |
params | Object | Object with Photo Browser parameters | |
photos | array | [] | Array with URLs of photos or array of objects with "url" (or "html") and "caption" properties. |
thumbs | array | [] | Array with URLs of thumbs images. Will not render thumbs if not specified, or empty array |
url | string | photos/ | Photo browser modal URL that will be set as a current route |
routableModals | boolean | false | Will add opened photo browser to router history which gives ability to close photo browser by going back in router history and set current route to the photo browser modal |
swiper | object | Object with Swiper parameters. By default equals to:
| |
virtualSlides | boolean | true | When enabled then Swiper will use Virtual Slides |
closeByBackdropClick | boolean | true | When enabled, Photo Browser popup will be closed on backdrop click |
exposition | boolean | true | Enable disable exposition mode when clicking on Photo Browser. |
expositionHideCaptions | boolean | false | Set to true if you also want to hide captions in exposition mode |
swipeToClose | boolean | true | You can close Photo Browser with swipe up/down when this parameter is enabled |
type | string | standalone | Define how Photo Browser should be opened. Could be standalone (will be opened as an overlay with custom transition effect), popup (will be opened as popup), page (will be injected to View and loaded as a new page). |
theme | string | light | Photo Browser color theme, could be light or dark |
captionsTheme | string | Captions color theme, could be also dark or light . By default, equal to "theme" parameter | |
navbar | boolean | true | Set to false to remove Photo Browser's Navbar |
toolbar | boolean | true | Set to false to remove Photo Browser's Toolbar |
pageBackLinkText | string | Back | Text on back link in Photo Browser's navbar |
popupCloseLinkText | string | Close | Text on close link in Photo Browser's navbar when opened in Popup or as Standalone |
navbarShowCount | boolean | undefined | Defines should it display "3 of 5" text in navbar title or not. If not specified (undefined) then it will show this text if there is more than 1 item |
navbarOfText | string | of | Text of "of" in photos counter: "3 of 5" |
iconsColor | string | One of the default colors |
Photo Browser Events
Event | Description |
---|---|
<PhotoBrowser> events | |
photoBrowserOpen | Event will be triggered on Photo Browser open. |
photoBrowserOpened | Event will be triggered after Photo Browser completes its opening animation |
photoBrowserClose | Event will be triggered on Photo Browser close. |
photoBrowserClosed | Event will be triggered after Photo Browser completes its closing animation |
photoBrowserSwipeToClose | This event will be triggered when user close Photo Browser with swipe up/down. |
Photo Browser Methods
The following Photo Browser components methods are available (e.g. by accesing it via ref):
<PhotoBrowser> methods | |
---|---|
.open(index) | Open Photo Browser on photo with index number equal to "index" parameter. If "index" parameter is not specified, it will be opened on last closed photo. |
.close() | Close Photo Browser |
.expositionToggle() | Toggle exposition mode |
.expositionEnable() | Enable exposition mode |
.expositionDisable() | Disable exposition mode |
Examples
photo-browser.jsx
import React, { useRef } from 'react';
import { Navbar, Page, PhotoBrowser, Block, Button } from 'framework7-react';
export default () => {
const standalone = useRef(null);
const popup = useRef(null);
const page = useRef(null);
const standaloneDark = useRef(null);
const popupDark = useRef(null);
const pageDark = useRef(null);
const photos = [
{
url: 'img/beach.jpg',
caption: 'Amazing beach in Goa, India',
},
'http://placekitten.com/1024/1024',
'img/lock.jpg',
{
url: 'img/monkey.jpg',
caption: 'I met this monkey in Chinese mountains',
},
{
url: 'img/mountains.jpg',
caption: 'Beautiful mountains in Zhangjiajie, China',
},
];
const thumbs = [
'img/beach.jpg',
'http://placekitten.com/1024/1024',
'img/lock.jpg',
'img/monkey.jpg',
'img/mountains.jpg',
];
return (
<Page>
<Navbar title="Photo Browser"></Navbar>
<Block strongIos outlineIos>
<p>
Photo Browser is a standalone and highly configurable component that allows to open window
with photo viewer and navigation elements with the following features:
</p>
<ul>
<li>Swiper between photos</li>
<li>Multi-gestures support for zooming</li>
<li>Toggle zoom by double tap on photo</li>
<li>Single click on photo to toggle Exposition mode</li>
</ul>
</Block>
<Block strongIos outlineIos>
<p>
Photo Browser could be opened in a three ways - as a Standalone component (Popup
modification), in Popup, and as separate Page:
</p>
<div className="grid grid-cols-3 grid-gap">
<div>
<PhotoBrowser photos={photos} thumbs={thumbs} ref={standalone} />
<Button fill onClick={() => standalone.current.open()}>
Standalone
</Button>
</div>
<div>
<PhotoBrowser photos={photos} thumbs={thumbs} type="popup" ref={popup} />
<Button fill onClick={() => popup.current.open()}>
Popup
</Button>
</div>
<div>
<PhotoBrowser
photos={photos}
thumbs={thumbs}
type="page"
pageBackLinkText="Back"
ref={page}
/>
<Button fill onClick={() => page.current.open()}>
Page
</Button>
</div>
</div>
</Block>
<Block strongIos outlineIos>
<p>
Photo Browser supports 2 default themes - default Light (like in previous examples) and
Dark theme. Here is a Dark theme examples:
</p>
<div className="grid grid-cols-3 grid-gap">
<div>
<PhotoBrowser photos={photos} thumbs={thumbs} theme="dark" ref={standaloneDark} />
<Button fill onClick={() => standaloneDark.current.open()}>
Standalone
</Button>
</div>
<div>
<PhotoBrowser
photos={photos}
thumbs={thumbs}
theme="dark"
type="popup"
ref={popupDark}
/>
<Button fill onClick={() => popupDark.current.open()}>
Popup
</Button>
</div>
<div>
<PhotoBrowser
photos={photos}
thumbs={thumbs}
theme="dark"
type="page"
pageBackLinkText="Back"
ref={pageDark}
/>
<Button fill onClick={() => pageDark.current.open()}>
Page
</Button>
</div>
</div>
</Block>
</Page>
);
};