Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions apps/user_status/css/user-status-menu.css

This file was deleted.

1 change: 0 additions & 1 deletion apps/user_status/css/user-status-menu.css.map

This file was deleted.

2 changes: 0 additions & 2 deletions apps/user_status/css/user-status-menu.css.map.license

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,6 @@ public function handle(Event $event): void {
});

Util::addScript('user_status', 'menu');
Util::addStyle('user_status', 'user-status-menu');
Util::addStyle('user_status', 'menu');
}
}
72 changes: 38 additions & 34 deletions apps/user_status/src/UserStatus.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,44 @@
-->

<template>
<Fragment>
<NcListItem
v-if="!inline"
class="user-status-menu-item"
compact
:name="visibleMessage"
@click.stop="openModal">
<NcListItem
v-if="!inline"
:class="$style.userStatusMenuItem"
compact
:name="visibleMessage"
@click.stop="openModal">
<template #icon>
<NcUserStatusIcon
:class="$style.userStatusIcon"
:status="statusType"
aria-hidden="true" />
</template>
</NcListItem>

<div v-else>
<!-- Dashboard Status -->
<NcButton @click.stop="openModal">
<template #icon>
<NcUserStatusIcon
class="user-status-icon"
:class="$style.userStatusIcon"
:status="statusType"
aria-hidden="true" />
</template>
</NcListItem>

<div v-else>
<!-- Dashboard Status -->
<NcButton @click.stop="openModal">
<template #icon>
<NcUserStatusIcon
class="user-status-icon"
:status="statusType"
aria-hidden="true" />
</template>
{{ visibleMessage }}
</NcButton>
</div>
<!-- Status management modal -->
<SetStatusModal
v-if="isModalOpen"
:inline="inline"
@close="closeModal" />
</Fragment>
{{ visibleMessage }}
</NcButton>
</div>
<!-- Status management modal -->
<SetStatusModal
v-if="isModalOpen"
:inline="inline"
@close="closeModal" />
</template>

<script>
import { getCurrentUser } from '@nextcloud/auth'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import debounce from 'debounce'
import { Fragment } from 'vue-frag'
import { defineAsyncComponent } from 'vue'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcListItem from '@nextcloud/vue/components/NcListItem'
import NcUserStatusIcon from '@nextcloud/vue/components/NcUserStatusIcon'
Expand All @@ -55,11 +53,10 @@ export default {
name: 'UserStatus',

components: {
Fragment,
NcButton,
NcListItem,
NcUserStatusIcon,
SetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal.vue'),
SetStatusModal: defineAsyncComponent(() => import('./components/SetStatusModal.vue')),
},

mixins: [OnlineStatusMixin],
Expand Down Expand Up @@ -126,7 +123,7 @@ export default {
/**
* Some housekeeping before destroying the component
*/
beforeDestroy() {
beforeUnmount() {
window.removeEventListener('mouseMove', this.mouseMoveListener)
clearInterval(this.heartbeatInterval)
unsubscribe('user_status:status.updated', this.handleUserStatusUpdated)
Expand Down Expand Up @@ -179,8 +176,15 @@ export default {
}
</script>

<style lang="scss" scoped>
.user-status-icon {
<style lang="scss" module>
// Note: As for v9.3.0 NcListItem does not support <style scoped>
.userStatusMenuItem,
.userStatusMenuItem * {
// TODO: Vue 3 migration - add box-sizing to core menu component
box-sizing: border-box;
}

.userStatusIcon {
width: 20px;
height: 20px;
margin: calc((var(--default-clickable-area) - 20px) / 2); // 20px icon size
Expand Down
13 changes: 9 additions & 4 deletions apps/user_status/src/components/ClearAtSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<template>
<div class="clear-at-select">
<label class="clear-at-select__label" for="clearStatus">
{{ $t('user_status', 'Clear status after') }}
{{ t('user_status', 'Clear status after') }}
</label>
<NcSelect
input-id="clearStatus"
Expand All @@ -21,9 +21,10 @@
</template>

<script>
import { t } from '@nextcloud/l10n'
import NcSelect from '@nextcloud/vue/components/NcSelect'
import { clearAtFilter } from '../filters/clearAtFilter.js'
import { getAllClearAtOptions } from '../services/clearAtOptionsService.js'
import { clearAtFormat } from '../services/clearAtService.js'

export default {
name: 'ClearAtSelect',
Expand All @@ -38,6 +39,8 @@ export default {
},
},

emits: ['selectClearAt'],

data() {
return {
options: getAllClearAtOptions(),
Expand All @@ -53,12 +56,14 @@ export default {
option() {
return {
clearAt: this.clearAt,
label: clearAtFilter(this.clearAt),
label: clearAtFormat(this.clearAt),
}
},
},

methods: {
t,

/**
* Triggered when the user selects a new option.
*
Expand All @@ -69,7 +74,7 @@ export default {
return
}

this.$emit('select-clear-at', option.clearAt)
this.$emit('selectClearAt', option.clearAt)
},
},
}
Expand Down
15 changes: 9 additions & 6 deletions apps/user_status/src/components/CustomMessageInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@
:model-value="message"
type="text"
:label="t('user_status', 'What is your status?')"
@input="onChange" />
@update:model-value="onChange" />
</div>
</div>
</template>

<script>
import { t } from '@nextcloud/l10n'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcEmojiPicker from '@nextcloud/vue/components/NcEmojiPicker'
import NcTextField from '@nextcloud/vue/components/NcTextField'
Expand Down Expand Up @@ -60,7 +61,7 @@ export default {

emits: [
'change',
'select-icon',
'selectIcon',
],

computed: {
Expand All @@ -75,21 +76,23 @@ export default {
},

methods: {
t,

focus() {
this.$refs.input.focus()
},

/**
* Notifies the parent component about a changed input
*
* @param {Event} event The Change Event
* @param {string} value The new input value
*/
onChange(event) {
this.$emit('change', event.target.value)
onChange(value) {
this.$emit('change', value)
},

setIcon(icon) {
this.$emit('select-icon', icon)
this.$emit('selectIcon', icon)
},
},
}
Expand Down
21 changes: 16 additions & 5 deletions apps/user_status/src/components/OnlineStatusSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
name="user-status-online"
@change="onChange">
<label :for="id" class="user-status-online-select__label">
<NcUserStatusIcon
:status="type"
class="user-status-online-select__icon"
aria-hidden="true" />
<span class="user-status-online-select__icon-wrapper">
<NcUserStatusIcon
:status="type"
class="user-status-online-select__icon"
aria-hidden="true" />
</span>
{{ label }}
<em class="user-status-online-select__subline">{{ subline }}</em>
</label>
Expand Down Expand Up @@ -54,6 +56,8 @@ export default {
},
},

emits: ['select'],

computed: {
id() {
return `user-status-online-status-${this.type}`
Expand Down Expand Up @@ -90,10 +94,17 @@ export default {
}
}

&__icon-wrapper {
height: var(--default-clickable-area);
width: var(--default-clickable-area);
display: flex;
align-items: center;
justify-content: center;
}

&__icon {
height: 20px;
width: 20px;
padding: calc((var(--default-clickable-area) - 20px) / 2);
}

&__input:checked + &__label {
Expand Down
13 changes: 8 additions & 5 deletions apps/user_status/src/components/PredefinedStatus.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,17 @@
{{ message }}
</span>
<span class="predefined-status__label--clear-at">
{{ clearAt | clearAtFilter }}
{{ formattedClearAt }}
</span>
</label>
</li>
</template>

<script>
import { clearAtFilter } from '../filters/clearAtFilter.js'
import { clearAtFormat } from '../services/clearAtService.js'

export default {
name: 'PredefinedStatus',
filters: {
clearAtFilter,
},

props: {
messageId: {
Expand Down Expand Up @@ -63,10 +60,16 @@ export default {
},
},

emits: ['select'],

computed: {
id() {
return `user-status-predefined-status-${this.messageId}`
},

formattedClearAt() {
return clearAtFormat(this.clearAt)
},
},

methods: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
</template>

<script>
import { t } from '@nextcloud/l10n'
import { mapGetters, mapState } from 'vuex'
import PredefinedStatus from './PredefinedStatus.vue'

Expand All @@ -35,6 +36,8 @@ export default {
PredefinedStatus,
},

emits: ['selectStatus'],

data() {
return {
lastSelected: null,
Expand Down Expand Up @@ -68,14 +71,16 @@ export default {
},

methods: {
t,

/**
* Emits an event when the user selects a status
*
* @param {object} status The selected status
*/
selectStatus(status) {
this.lastSelected = status.id
this.$emit('select-status', status)
this.$emit('selectStatus', status)
},
},
}
Expand Down
9 changes: 7 additions & 2 deletions apps/user_status/src/components/PreviousStatus.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,19 @@
{{ message }}
</span>
<span class="predefined-status__clear-at">
{{ $t('user_status', 'Previously set') }}
{{ t('user_status', 'Previously set') }}
</span>

<div class="backup-status__reset-button">
<NcButton @click="select">
{{ $t('user_status', 'Reset status') }}
{{ t('user_status', 'Reset status') }}
</NcButton>
</div>
</div>
</template>

<script>
import { t } from '@nextcloud/l10n'
import NcButton from '@nextcloud/vue/components/NcButton'

export default {
Expand All @@ -49,7 +50,11 @@ export default {
},
},

emits: ['select'],

methods: {
t,

/**
* Emits an event when the user clicks the row
*/
Expand Down
Loading
Loading