Throw confetti from verify button location.
This commit is contained in:
parent
54a1033eeb
commit
ea9bbc81a6
@ -1,18 +1,35 @@
|
|||||||
import React, { Fragment } from 'react';
|
import React, { Component, Fragment } from 'react';
|
||||||
import { VerifyIcon } from '../../components/icons';
|
import { VerifyIcon } from '../../components/icons';
|
||||||
|
|
||||||
import './verification.css';
|
import './verification.css';
|
||||||
|
|
||||||
interface VerificationProps {
|
interface VerificationProps {
|
||||||
slug: string;
|
slug: string;
|
||||||
onVerify: (slug: string, verify: boolean) => void;
|
onVerify: (slug: string, verify: boolean, x: number, y: number) => void;
|
||||||
user_verified: boolean;
|
user_verified: boolean;
|
||||||
user_verified_as: string;
|
user_verified_as: string;
|
||||||
verified_count: number;
|
verified_count: number;
|
||||||
allow_verify: boolean;
|
allow_verify: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Verification: React.FunctionComponent<VerificationProps> = (props) => {
|
|
||||||
|
class Verification extends Component<VerificationProps, any> {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.handleClick = this.handleClick.bind(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
handleClick(verify) {
|
||||||
|
return (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const x = e.clientX / document.body.clientWidth;
|
||||||
|
const y = e.clientY / document.body.clientHeight;
|
||||||
|
this.props.onVerify(this.props.slug, verify, x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const props = this.props;
|
||||||
let user_verified_as = props.user_verified_as;
|
let user_verified_as = props.user_verified_as;
|
||||||
if (typeof user_verified_as === 'boolean') {
|
if (typeof user_verified_as === 'boolean') {
|
||||||
user_verified_as = user_verified_as? 'Yes': 'No';
|
user_verified_as = user_verified_as? 'Yes': 'No';
|
||||||
@ -35,10 +52,7 @@ const Verification: React.FunctionComponent<VerificationProps> = (props) => {
|
|||||||
className="btn btn-danger"
|
className="btn btn-danger"
|
||||||
title="Remove my verification"
|
title="Remove my verification"
|
||||||
disabled={!props.allow_verify}
|
disabled={!props.allow_verify}
|
||||||
onClick={(e) => {
|
onClick={this.handleClick(false)}>
|
||||||
e.preventDefault();
|
|
||||||
props.onVerify(props.slug, false)
|
|
||||||
}}>
|
|
||||||
Remove
|
Remove
|
||||||
</button>
|
</button>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
@ -48,10 +62,7 @@ const Verification: React.FunctionComponent<VerificationProps> = (props) => {
|
|||||||
className="btn btn-success"
|
className="btn btn-success"
|
||||||
title="Confirm that the current value is correct"
|
title="Confirm that the current value is correct"
|
||||||
disabled={!props.allow_verify}
|
disabled={!props.allow_verify}
|
||||||
onClick={(e) => {
|
onClick={this.handleClick(true)}>
|
||||||
e.preventDefault();
|
|
||||||
props.onVerify(props.slug, true)
|
|
||||||
}}>
|
|
||||||
Verify
|
Verify
|
||||||
</button>
|
</button>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
@ -59,5 +70,6 @@ const Verification: React.FunctionComponent<VerificationProps> = (props) => {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default Verification;
|
export default Verification;
|
@ -14,7 +14,7 @@ interface YearDataEntryProps {
|
|||||||
mode?: 'view' | 'edit' | 'multi-edit';
|
mode?: 'view' | 'edit' | 'multi-edit';
|
||||||
onChange?: (key: string, value: any) => void;
|
onChange?: (key: string, value: any) => void;
|
||||||
|
|
||||||
onVerify: (slug: string, verify: boolean) => void;
|
onVerify: (slug: string, verify: boolean, x: number, y: number) => void;
|
||||||
user_verified: boolean;
|
user_verified: boolean;
|
||||||
user_verified_as: string;
|
user_verified_as: string;
|
||||||
verified_count: number;
|
verified_count: number;
|
||||||
|
@ -202,7 +202,7 @@ const withCopyEdit = (WrappedComponent: React.ComponentType<CategoryViewProps>)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleVerify(slug: string, verify: boolean) {
|
async handleVerify(slug: string, verify: boolean, x: number, y: number) {
|
||||||
const verifyPatch = {};
|
const verifyPatch = {};
|
||||||
if (verify) {
|
if (verify) {
|
||||||
verifyPatch[slug] = this.props.building[slug];
|
verifyPatch[slug] = this.props.building[slug];
|
||||||
@ -220,7 +220,12 @@ const withCopyEdit = (WrappedComponent: React.ComponentType<CategoryViewProps>)
|
|||||||
this.setState({error: data.error});
|
this.setState({error: data.error});
|
||||||
} else {
|
} else {
|
||||||
if (verify) {
|
if (verify) {
|
||||||
Confetti({zIndex: 2000});
|
Confetti({
|
||||||
|
angle: 60,
|
||||||
|
disableForReducedMotion: true,
|
||||||
|
origin: {x, y},
|
||||||
|
zIndex: 2000
|
||||||
|
});
|
||||||
}
|
}
|
||||||
this.props.selectBuilding(this.props.building);
|
this.props.selectBuilding(this.props.building);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ interface CategoryViewProps {
|
|||||||
copy: CopyProps;
|
copy: CopyProps;
|
||||||
onChange: (key: string, value: any) => void;
|
onChange: (key: string, value: any) => void;
|
||||||
onLike: (like: boolean) => void;
|
onLike: (like: boolean) => void;
|
||||||
onVerify: (slug: string, verify: boolean) => void;
|
onVerify: (slug: string, verify: boolean, x: number, y: number) => void;
|
||||||
user_verified: any;
|
user_verified: any;
|
||||||
user?: any;
|
user?: any;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user