mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2026-03-17 13:03:50 +00:00
Created common component to handle tags and modal to edit tags
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import copyIcon from '@fortawesome/fontawesome-free-regular/faCopy';
|
||||
import pictureIcon from '@fortawesome/fontawesome-free-regular/faImage';
|
||||
import tagsIcon from '@fortawesome/fontawesome-free-solid/faTags';
|
||||
import pieChartIcon from '@fortawesome/fontawesome-free-solid/faChartPie';
|
||||
import menuIcon from '@fortawesome/fontawesome-free-solid/faEllipsisV';
|
||||
import qrIcon from '@fortawesome/fontawesome-free-solid/faQrcode';
|
||||
@@ -11,16 +12,23 @@ import { ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reac
|
||||
import PreviewModal from './PreviewModal';
|
||||
import QrCodeModal from './QrCodeModal';
|
||||
import './ShortUrlsRowMenu.scss';
|
||||
import EditTagsModal from './EditTagsModal';
|
||||
|
||||
export class ShortUrlsRowMenu extends React.Component {
|
||||
state = { isOpen: false, isQrModalOpen: false, isPreviewOpen: false };
|
||||
state = {
|
||||
isOpen: false,
|
||||
isQrModalOpen: false,
|
||||
isPreviewOpen: false,
|
||||
isTagsModalOpen: false,
|
||||
};
|
||||
toggle = () => this.setState({ isOpen: !this.state.isOpen });
|
||||
|
||||
render() {
|
||||
const { shortUrl, onCopyToClipboard, selectedServer, shortCode } = this.props;
|
||||
const { completeShortUrl, onCopyToClipboard, selectedServer, shortUrl } = this.props;
|
||||
const serverId = selectedServer ? selectedServer.id : '';
|
||||
const toggleQrCode = () => this.setState({isQrModalOpen: !this.state.isQrModalOpen});
|
||||
const togglePreview = () => this.setState({isPreviewOpen: !this.state.isPreviewOpen});
|
||||
const toggleTags = () => this.setState({isTagsModalOpen: !this.state.isTagsModalOpen});
|
||||
|
||||
return (
|
||||
<ButtonDropdown toggle={this.toggle} isOpen={this.state.isOpen} direction="left">
|
||||
@@ -28,9 +36,18 @@ export class ShortUrlsRowMenu extends React.Component {
|
||||
<FontAwesomeIcon icon={menuIcon}/>
|
||||
</DropdownToggle>
|
||||
<DropdownMenu>
|
||||
<DropdownItem tag={Link} to={`/server/${serverId}/short-code/${shortCode}/visits`}>
|
||||
<DropdownItem tag={Link} to={`/server/${serverId}/short-code/${shortUrl.shortCode}/visits`}>
|
||||
<FontAwesomeIcon icon={pieChartIcon}/> Visit Stats
|
||||
</DropdownItem>
|
||||
<DropdownItem onClick={toggleTags}>
|
||||
<FontAwesomeIcon icon={tagsIcon}/> Edit tags
|
||||
</DropdownItem>
|
||||
<EditTagsModal
|
||||
url={completeShortUrl}
|
||||
shortUrl={shortUrl}
|
||||
isOpen={this.state.isTagsModalOpen}
|
||||
toggle={toggleTags}
|
||||
/>
|
||||
|
||||
<DropdownItem divider/>
|
||||
|
||||
@@ -38,7 +55,7 @@ export class ShortUrlsRowMenu extends React.Component {
|
||||
<FontAwesomeIcon icon={pictureIcon}/> Preview
|
||||
</DropdownItem>
|
||||
<PreviewModal
|
||||
url={shortUrl}
|
||||
url={completeShortUrl}
|
||||
isOpen={this.state.isPreviewOpen}
|
||||
toggle={togglePreview}
|
||||
/>
|
||||
@@ -47,14 +64,14 @@ export class ShortUrlsRowMenu extends React.Component {
|
||||
<FontAwesomeIcon icon={qrIcon}/> QR code
|
||||
</DropdownItem>
|
||||
<QrCodeModal
|
||||
url={shortUrl}
|
||||
url={completeShortUrl}
|
||||
isOpen={this.state.isQrModalOpen}
|
||||
toggle={toggleQrCode}
|
||||
/>
|
||||
|
||||
<DropdownItem divider/>
|
||||
|
||||
<CopyToClipboard text={shortUrl} onCopy={onCopyToClipboard}>
|
||||
<CopyToClipboard text={completeShortUrl} onCopy={onCopyToClipboard}>
|
||||
<DropdownItem>
|
||||
<FontAwesomeIcon icon={copyIcon}/> Copy to clipboard
|
||||
</DropdownItem>
|
||||
|
||||
Reference in New Issue
Block a user