From 1a259da6a748b41bf23624196d15853124d15168 Mon Sep 17 00:00:00 2001 From: igoradamenko Date: Sun, 18 Mar 2018 23:12:53 +0200 Subject: [PATCH] add blocked-users block --- .../__action/blocked-users__action.scss | 20 +++++ ...ocked-users__list-item_view_invisible.scss | 6 ++ .../__list-item/blocked-users__list-item.scss | 11 +++ .../__list/blocked-users__list.scss | 3 + .../__username/blocked-users__username.scss | 3 + .../blocked-users/blocked-users.jsx | 83 +++++++++++++++++++ .../blocked-users/blocked-users.scss | 3 + web/app/components/blocked-users/index.js | 11 +++ 8 files changed, 140 insertions(+) create mode 100644 web/app/components/blocked-users/__action/blocked-users__action.scss create mode 100644 web/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss create mode 100644 web/app/components/blocked-users/__list-item/blocked-users__list-item.scss create mode 100644 web/app/components/blocked-users/__list/blocked-users__list.scss create mode 100644 web/app/components/blocked-users/__username/blocked-users__username.scss create mode 100644 web/app/components/blocked-users/blocked-users.jsx create mode 100644 web/app/components/blocked-users/blocked-users.scss create mode 100644 web/app/components/blocked-users/index.js 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 ( +
+ { + !users.length && ( +

There are no blocked users.

+ ) + } + + { + !!users.length && ( +

List of blocked users:

+ ) + } + + { + !!users.length && ( + + ) + } +
+ ); + } +} diff --git a/web/app/components/blocked-users/blocked-users.scss b/web/app/components/blocked-users/blocked-users.scss new file mode 100644 index 00000000..48be048c --- /dev/null +++ b/web/app/components/blocked-users/blocked-users.scss @@ -0,0 +1,3 @@ +.blocked-users { + padding: 10px 0; +} diff --git a/web/app/components/blocked-users/index.js b/web/app/components/blocked-users/index.js new file mode 100644 index 00000000..41235f7b --- /dev/null +++ b/web/app/components/blocked-users/index.js @@ -0,0 +1,11 @@ +export { default } from './blocked-users'; + +require('./blocked-users.scss'); + +require('./__action/blocked-users__action.scss'); +require('./__list/blocked-users__list.scss'); + +require('./__list-item/blocked-users__list-item.scss'); +require('./__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss'); + +require('./__username/blocked-users__username.scss');