mirror of https://github.com/vector-im/riot-web
Add animated mx_BetaDot atop the legacy Communities button
parent
c5f653245a
commit
46d35411b4
|
@ -56,6 +56,12 @@ limitations under the License.
|
||||||
.mx_GroupFilterPanel .mx_TagTile {
|
.mx_GroupFilterPanel .mx_TagTile {
|
||||||
// opacity: 0.5;
|
// opacity: 0.5;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
.mx_BetaDot {
|
||||||
|
position: absolute;
|
||||||
|
right: -13px;
|
||||||
|
top: -11px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype {
|
.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype {
|
||||||
|
|
|
@ -68,3 +68,36 @@ limitations under the License.
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$pulse-color: $accent-color-alt;
|
||||||
|
$dot-size: 12px;
|
||||||
|
|
||||||
|
.mx_BetaDot {
|
||||||
|
background: black;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 10px;
|
||||||
|
height: $dot-size;
|
||||||
|
width: $dot-size;
|
||||||
|
transform: scale(1);
|
||||||
|
background: rgba($pulse-color, 1);
|
||||||
|
box-shadow: 0 0 0 0 rgba($pulse-color, 1);
|
||||||
|
animation: mx_Beta_bluePulse 2s infinite;
|
||||||
|
animation-iteration-count: 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes mx_Beta_bluePulse {
|
||||||
|
0% {
|
||||||
|
transform: scale(0.95);
|
||||||
|
box-shadow: 0 0 0 0 rgba($pulse-color, 0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
70% {
|
||||||
|
transform: scale(1);
|
||||||
|
box-shadow: 0 0 0 10px rgba($pulse-color, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: scale(0.95);
|
||||||
|
box-shadow: 0 0 0 0 rgba($pulse-color, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -123,12 +123,19 @@ class GroupFilterPanel extends React.Component {
|
||||||
mx_GroupFilterPanel_items_selected: itemsSelected,
|
mx_GroupFilterPanel_items_selected: itemsSelected,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let betaDot;
|
||||||
|
if (!SettingsStore.getValue("feature_spaces") && !localStorage.getItem("mx_seenSpacesBeta")) {
|
||||||
|
betaDot = <div className="mx_BetaDot" />;
|
||||||
|
}
|
||||||
|
|
||||||
let createButton = (
|
let createButton = (
|
||||||
<ActionButton
|
<ActionButton
|
||||||
tooltip
|
tooltip
|
||||||
label={_t("Communities")}
|
label={_t("Communities")}
|
||||||
action="toggle_my_groups"
|
action="toggle_my_groups"
|
||||||
className="mx_TagTile mx_TagTile_plus" />
|
className="mx_TagTile mx_TagTile_plus">
|
||||||
|
{ betaDot }
|
||||||
|
</ActionButton>
|
||||||
);
|
);
|
||||||
|
|
||||||
if (SettingsStore.getValue("feature_communities_v2_prototypes")) {
|
if (SettingsStore.getValue("feature_communities_v2_prototypes")) {
|
||||||
|
|
|
@ -740,6 +740,8 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
this.showScreenAfterLogin();
|
this.showScreenAfterLogin();
|
||||||
break;
|
break;
|
||||||
case 'toggle_my_groups':
|
case 'toggle_my_groups':
|
||||||
|
// persist that the user has interacted with this, use it to dismiss the beta dot
|
||||||
|
localStorage.setItem("mx_seenSpacesBeta", "1");
|
||||||
// We just dispatch the page change rather than have to worry about
|
// We just dispatch the page change rather than have to worry about
|
||||||
// what the logic is for each of these branches.
|
// what the logic is for each of these branches.
|
||||||
if (this.state.page_type === PageTypes.MyGroups) {
|
if (this.state.page_type === PageTypes.MyGroups) {
|
||||||
|
|
|
@ -32,6 +32,7 @@ export default class ActionButton extends React.Component {
|
||||||
label: PropTypes.string.isRequired,
|
label: PropTypes.string.isRequired,
|
||||||
iconPath: PropTypes.string,
|
iconPath: PropTypes.string,
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
|
children: PropTypes.node,
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
|
@ -79,7 +80,8 @@ export default class ActionButton extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AccessibleButton className={classNames.join(" ")}
|
<AccessibleButton
|
||||||
|
className={classNames.join(" ")}
|
||||||
onClick={this._onClick}
|
onClick={this._onClick}
|
||||||
onMouseEnter={this._onMouseEnter}
|
onMouseEnter={this._onMouseEnter}
|
||||||
onMouseLeave={this._onMouseLeave}
|
onMouseLeave={this._onMouseLeave}
|
||||||
|
@ -87,6 +89,7 @@ export default class ActionButton extends React.Component {
|
||||||
>
|
>
|
||||||
{ icon }
|
{ icon }
|
||||||
{ tooltip }
|
{ tooltip }
|
||||||
|
{ this.props.children }
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue