diff --git a/packages/page-council/src/Motions/Close.tsx b/packages/page-council/src/Motions/Close.tsx new file mode 100644 index 0000000000..1619a95e8b --- /dev/null +++ b/packages/page-council/src/Motions/Close.tsx @@ -0,0 +1,91 @@ +// Copyright 2017-2020 @polkadot/app-council authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { Hash, Proposal, ProposalIndex } from '@polkadot/types/interfaces'; + +import React, { useState } from 'react'; +import { Button, InputAddress, Modal, ProposedAction, TxButton } from '@polkadot/react-components'; +import { useApi, useToggle, useWeight } from '@polkadot/react-hooks'; + +import { useTranslation } from '../translate'; + +interface Props { + hasFailed: boolean; + hash: Hash; + idNumber: ProposalIndex; + members: string[]; + proposal: Proposal; +} + +function Close ({ hasFailed, hash, idNumber, members, proposal }: Props): React.ReactElement | null { + const { t } = useTranslation(); + const { api } = useApi(); + const [isOpen, toggleOpen] = useToggle(); + const [accountId, setAccountId] = useState(null); + const [proposalWeight, proposalLength] = useWeight(proposal); + + // protect against older versions + if (!api.tx.council.close) { + return null; + } + + return ( + <> + {isOpen && ( + ('Close proposal')} + size='large' + > + + + + + + +

{t('The proposal that will be affected. Once closed for the current voting round, it would need to be re-submitted to council for a subsequent voting round.')}

+
+
+ + + ('Select the account you wish close the proposal with.')} + label={t('sending account')} + onChange={setAccountId} + type='account' + /> + + +

{t('The council account that will apply the close for the current round.')}

+
+
+
+ + + +
+ )} +