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.
Here is how it can be used in React component and how to control it:
export const PhotoBrowserPageDefaultState = [{
url: 'http://lorempixel.com/400/400/nature/1/',
caption: 'Ants on grass'
},
'http://placekitten.com/600/600',
'http://lorempixel.com/400/400/nature/2/',
{
url: 'http://lorempixel.com/400/400/nature/3/',
caption: 'Beautiful mountains in Zhangjiajie, China'
}, {
url: 'http://lorempixel.com/400/400/nature/4/',
caption: 'Trees in the Fall'
}
];
const photoStyle = {
height: "20vw",
width: "20%"
};
export class PhotoBrowserPage extends Component {
constructor() {
super();
this.state = {
photos: PhotoBrowserPageDefaultState
};
this.fw7 = getFramework7();
}
render() {
return (
<Page>
<Navbar backLink="Back" title="Photo Browser" sliding />
{
this.state.photos.map((photo, index) => {
return (
<Link key={index} onClick={() => {this.openPhotoBrowser(index)}}>
{
this.getImage(photo, index)
}
</Link>
);
})
}
</Page>
);
}
openPhotoBrowser(index:number) {
let photoBrowser = this.fw7.photoBrowser({
photos: this.state.photos,
theme: "dark",
onOpen: this.onOpen,
onClose: this.onClose
});
photoBrowser.open(index);
}
onOpen(index:number) {
console.log('Photo Browser opened');
}
onClose(index:number) {
console.log('Photo Browser closed');
}
getImage(photo: any, index: number ) {
let imageSrc = '';
if (typeof photo === 'string') {
return <img src={photo} style={photoStyle} />;
} else if (typeof photo === 'object') {
return <img src={photo.url} style={photoStyle} />;
}
}
}
You can pass all parameters in single params
property or use separate props for each parameter to specify them via component attributes:
Prop | Type | Default | Description |
---|---|---|---|
init | boolean | true | Initializes Photo Browser |
params | Object | Object with Photo Browser API parameters | |
params separate props |
|||
photos | array | [] | Array with URLs of photos or array of objects with "url" (or "html") and "caption" properties. |
initialSlide | number | 0 | Index number of initial photo slide. |
spaceBetween | number | 20 | Distance between photo slides in px. |
speed | number | 300 | Duration of transition between photo slides (in ms). |
zoom | boolean | true | Enable/disable ability to zoom and pan photos. |
zoomMax | number | 3 | Max zoom ratio. |
zoomMin | number | 1 | Minimal zoom ratio. |
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). |
loop | boolean | false | Set to "true" to enable continuous loop mode |
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 |
backLinkText | string | 'Close' | Text on back link in Photo Browser's Navbar |
ofText | string | 'of' | Text of "of" in photos counter: "3 of 5" |
lazyLoading | boolean | false | Set to "true" to enable images lazy loading |
lazyLoadingInPrevNext | boolean | false | Set to "true" to enable lazy loading for the closest photos (for previous and next photos) |
lazyLoadingOnTransitionStart | boolean | false | By default, Photo Browser will load lazy photos after transition to this photo, so you may enable this parameter if you need it to load new photo in the beginning of transition |
Event | Description |
---|---|
onOpen | Event will be triggered on photo browser open. |
onClose | Event will be triggered on photo browser close. |
onSwipetoclose | This event will be triggered when user close photo browser with swipe up/down. |
onSlidechangestart | Event will be triggered in the beginning of animation to other slide (next or previous). Receives Swiper instance as an argument. |
onSlidechangeend | Event will be triggered after animation to other slide (next or previous). Receives Swiper instance as an argument. |
onTransitionstart | Event will be triggered in the beginning of transition. Receives swiper instance as an argument.. |
onTransitionend | Event will be triggered right before navbar inner will be removed from DOM. This event could be very useful if you need to detach some events / destroy some plugins to free memory |
onClick | Event will be triggered when user click/tap on slider after 300ms delay. Receives Swiper instance and 'touchend' event as an arguments. |
onTap | Event will be triggered when user click/tap on slider. Receives Swiper instance and 'touchend' event as an arguments. |
onDoubletap | Event will be triggered when user double tap on slider's container. Receives Swiper instance and 'touchend' event as an arguments. |
onLazyimageload | Event will be triggered when Photo Browser begins to load lazy loading photo. |
onLazyimageready | Event will be triggered after lazy loading photo will be loaded. |