pleroma-fe/src/components/react_button/react_button.vue

132 行
2.9 KiB
Vue
Raw 通常表示 履歴

<template>
2020-02-29 01:39:47 +09:00
<Popover
trigger="click"
class="ReactButton"
placement="top"
2020-02-29 01:39:47 +09:00
:offset="{ y: 5 }"
:bound-to="{ x: 'container' }"
remove-padding
2022-05-20 06:56:23 +09:00
popover-class="ReactButton popover-default"
@show="focusInput"
>
2022-07-31 18:35:48 +09:00
<template #content="{close}">
<div class="reaction-picker-filter">
2020-01-14 17:06:14 +09:00
<input
v-model="filterWord"
2020-11-01 23:44:57 +09:00
size="1"
2020-01-14 17:06:14 +09:00
:placeholder="$t('emoji.search_emoji')"
2022-07-31 18:35:48 +09:00
@input="$event.target.composing = false"
2020-01-14 17:06:14 +09:00
>
</div>
<div class="reaction-picker">
<span
v-for="emoji in commonEmojis"
2020-12-07 06:45:34 +09:00
:key="emoji.replacement"
2020-01-14 17:06:14 +09:00
class="emoji-button"
:title="emoji.displayText"
2020-12-07 06:45:34 +09:00
@click="addReaction($event, emoji.replacement, close)"
>
{{ emoji.replacement }}
</span>
<div class="reaction-picker-divider" />
<span
v-for="(emoji, key) in emojis"
:key="key"
2020-01-14 17:06:14 +09:00
class="emoji-button"
:title="emoji.displayText"
2020-02-29 01:39:47 +09:00
@click="addReaction($event, emoji.replacement, close)"
>
{{ emoji.replacement }}
</span>
<div class="reaction-bottom-fader" />
</div>
2021-04-08 04:42:34 +09:00
</template>
2022-07-31 18:35:48 +09:00
<template #trigger>
<span
2021-04-08 04:42:34 +09:00
class="button-unstyled popover-trigger"
:title="$t('tool_tip.add_reaction')"
>
<FAIcon
class="fa-scale-110 fa-old-padding"
:icon="['far', 'smile-beam']"
/>
</span>
2021-04-08 04:42:34 +09:00
</template>
2020-02-29 01:39:47 +09:00
</Popover>
</template>
2022-07-31 18:35:48 +09:00
<script src="./react_button.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.ReactButton {
.reaction-picker-filter {
padding: 0.5em;
display: flex;
input {
flex: 1;
}
}
.reaction-picker-divider {
height: 1px;
width: 100%;
margin: 0.5em;
background-color: var(--border, $fallback--border);
}
.reaction-picker {
width: 10em;
height: 9em;
font-size: 1.5em;
overflow-y: scroll;
display: flex;
flex-wrap: wrap;
padding: 0.5em;
text-align: center;
align-content: flex-start;
user-select: none;
mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,
linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,
linear-gradient(to top, white, white);
transition: mask-size 150ms;
mask-size: 100% 20px, 100% 20px, auto;
/* Autoprefixed seem to ignore this one, and also syntax is different */
-webkit-mask-composite: xor;
mask-composite: exclude;
2020-01-14 17:06:14 +09:00
.emoji-button {
cursor: pointer;
2020-01-14 17:06:14 +09:00
flex-basis: 20%;
line-height: 1.5;
align-content: center;
&:hover {
transform: scale(1.25);
}
2020-01-14 17:06:14 +09:00
}
}
/* override of popover internal stuff */
.popover-trigger-button {
width: auto;
}
.popover-trigger {
padding: 10px;
margin: -10px;
&:hover .svg-inline--fa {
color: $fallback--text;
color: var(--text, $fallback--text);
}
}
}
</style>