mirror of
https://github.com/infeng/react-viewer.git
synced 2025-12-08 17:36:40 +00:00
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import * as React from 'react';
|
|
import { ImageDecorator } from './ViewerProps';
|
|
|
|
export interface ViewerNavProps {
|
|
prefixCls: string;
|
|
images: ImageDecorator[];
|
|
activeIndex: number;
|
|
onChangeImg: (index: number) => void;
|
|
}
|
|
|
|
export default class ViewerNav extends React.Component<ViewerNavProps, any> {
|
|
static defaultProps = {
|
|
activeIndex: 0,
|
|
};
|
|
|
|
handleChangeImg = (newIndex) => {
|
|
if (this.props.activeIndex === newIndex) {
|
|
return;
|
|
}
|
|
this.props.onChangeImg(newIndex);
|
|
}
|
|
|
|
render() {
|
|
let marginLeft = `calc(50% - ${this.props.activeIndex + 1} * 31px)`;
|
|
let listStyle = {
|
|
marginLeft: marginLeft,
|
|
};
|
|
|
|
return (
|
|
<div className={`${this.props.prefixCls}-navbar`}>
|
|
<ul className={`${this.props.prefixCls}-list ${this.props.prefixCls}-list-transition`} style={listStyle}>
|
|
{this.props.images.map((item, index) =>
|
|
<li
|
|
key={index}
|
|
className={index === this.props.activeIndex ? 'active' : ''}
|
|
onClick={() => { this.handleChangeImg(index); }}
|
|
>
|
|
<img src={item.src} alt={item.alt} />
|
|
</li>,
|
|
)
|
|
}
|
|
</ul>
|
|
</div>
|
|
);
|
|
}
|
|
}
|