diff --git a/web/app/components/blocked-users/__action/blocked-users__action.scss b/web/app/components/blocked-users/__action/blocked-users__action.scss new file mode 100644 index 00000000..c34eee15 --- /dev/null +++ b/web/app/components/blocked-users/__action/blocked-users__action.scss @@ -0,0 +1,20 @@ +.blocked-users__action { + margin-left: 8px; + font-weight: 700; + color: #0aa; + cursor: pointer; + + @media (hover: hover) { + opacity: 0; + } + + &:hover { + color: #06c5c5; + } + + &::before { + content: '•'; + margin-right: 8px; + color: #777; + } +} diff --git a/web/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss b/web/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss new file mode 100644 index 00000000..d017c17b --- /dev/null +++ b/web/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss @@ -0,0 +1,6 @@ +.blocked-users__list-item_view_invisible { + .blocked-users__username { + opacity: .5; + text-decoration: line-through; + } +} diff --git a/web/app/components/blocked-users/__list-item/blocked-users__list-item.scss b/web/app/components/blocked-users/__list-item/blocked-users__list-item.scss new file mode 100644 index 00000000..4b5de484 --- /dev/null +++ b/web/app/components/blocked-users/__list-item/blocked-users__list-item.scss @@ -0,0 +1,11 @@ +.blocked-users__list-item { + cursor: default; + + @media (hover: hover) { + &:hover { + .blocked-users__action { + opacity: 1; + } + } + } +} diff --git a/web/app/components/blocked-users/__list/blocked-users__list.scss b/web/app/components/blocked-users/__list/blocked-users__list.scss new file mode 100644 index 00000000..3dd9cc70 --- /dev/null +++ b/web/app/components/blocked-users/__list/blocked-users__list.scss @@ -0,0 +1,3 @@ +.blocked-users__list { + padding: 0 0 0 20px; +} diff --git a/web/app/components/blocked-users/__username/blocked-users__username.scss b/web/app/components/blocked-users/__username/blocked-users__username.scss new file mode 100644 index 00000000..713a9e96 --- /dev/null +++ b/web/app/components/blocked-users/__username/blocked-users__username.scss @@ -0,0 +1,3 @@ +.blocked-users__username { + font-weight: 700; +} diff --git a/web/app/components/blocked-users/blocked-users.jsx b/web/app/components/blocked-users/blocked-users.jsx new file mode 100644 index 00000000..7d0d84a9 --- /dev/null +++ b/web/app/components/blocked-users/blocked-users.jsx @@ -0,0 +1,83 @@ +import { h, Component } from 'preact'; + +import api from 'common/api' + +export default class BlockedUsers extends Component { + constructor(props) { + super(props); + + this.state = { + unblockedUsers: [], + } + } + + componentWillReceiveProps() { + this.setState({ unblockedUsers: [] }); + } + + block(user) { + if (confirm('Do you want to block this user?')) { + api.blockUser({ id: user.id }).then(() => { + this.setState({ unblockedUsers: this.state.unblockedUsers.filter(x => x !== user.id) }); + }); + } + } + + unblock(user) { + if (confirm('Do you want to unblock this user?')) { + api.unblockUser({ id: user.id }).then(() => { + this.setState({ unblockedUsers: this.state.unblockedUsers.concat([user.id]) }); + }); + } + } + + render(props, { unblockedUsers }) { + const { users } = props; + + return ( +
There are no blocked users.
+ ) + } + + { + !!users.length && ( +List of blocked users:
+ ) + } + + { + !!users.length && ( +