summaryrefslogtreecommitdiffstats
path: root/core/src/components/Profile
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2021-10-14 08:28:54 +0000
committerChristopher Ng <chrng8@gmail.com>2021-10-19 04:59:36 +0000
commit3be9d3ca8fca4fb743a4d2f2ffe44a45fa9ffa6e (patch)
tree5519fb218db5daa3d0e16198f600d5646f7d0b1a /core/src/components/Profile
parent309354852f12ae88d5eef05d311d6ebcba8ee762 (diff)
downloadnextcloud-server-3be9d3ca8fca4fb743a4d2f2ffe44a45fa9ffa6e.tar.gz
nextcloud-server-3be9d3ca8fca4fb743a4d2f2ffe44a45fa9ffa6e.zip
Profile frontend
Signed-off-by: Christopher Ng <chrng8@gmail.com> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Diffstat (limited to 'core/src/components/Profile')
-rw-r--r--core/src/components/Profile/PrimaryActionButton.vue103
1 files changed, 103 insertions, 0 deletions
diff --git a/core/src/components/Profile/PrimaryActionButton.vue b/core/src/components/Profile/PrimaryActionButton.vue
new file mode 100644
index 00000000000..069463b060d
--- /dev/null
+++ b/core/src/components/Profile/PrimaryActionButton.vue
@@ -0,0 +1,103 @@
+<!--
+ - @copyright 2021, Christopher Ng <chrng8@gmail.com>
+ -
+ - @author Christopher Ng <chrng8@gmail.com>
+ -
+ - @license GNU AGPL version 3 or any later version
+ -
+ - This program is free software: you can redistribute it and/or modify
+ - it under the terms of the GNU Affero General Public License as
+ - published by the Free Software Foundation, either version 3 of the
+ - License, or (at your option) any later version.
+ -
+ - This program is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ - GNU Affero General Public License for more details.
+ -
+ - You should have received a copy of the GNU Affero General Public License
+ - along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -
+-->
+
+<template>
+ <a
+ class="profile__primary-action-button"
+ :class="{ 'disabled': disabled }"
+ :href="href"
+ :target="target"
+ rel="noopener noreferrer nofollow"
+ v-on="$listeners">
+ <img
+ class="icon"
+ :class="[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]"
+ :src="icon">
+ <slot />
+ </a>
+</template>
+
+<script>
+export default {
+ name: 'PrimaryActionButton',
+
+ props: {
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+ href: {
+ type: String,
+ required: true,
+ },
+ icon: {
+ type: String,
+ required: true,
+ },
+ target: {
+ type: String,
+ required: true,
+ validator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),
+ },
+ },
+
+ computed: {
+ colorPrimaryText() {
+ // For some reason the returned string has prepended whitespace
+ return getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim()
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+ .profile__primary-action-button {
+ font-size: var(--default-font-size);
+ font-weight: bold;
+ width: 188px;
+ height: 44px;
+ padding: 0 16px;
+ line-height: 44px;
+ text-align: center;
+ border-radius: var(--border-radius-pill);
+ color: var(--color-primary-text);
+ background-color: var(--color-primary-element);
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+
+ .icon {
+ display: inline-block;
+ vertical-align: middle;
+ margin-bottom: 2px;
+ margin-right: 4px;
+
+ &.icon-invert {
+ filter: invert(1);
+ }
+ }
+
+ &:hover {
+ background-color: var(--color-primary-element-light);
+ }
+ }
+</style>