Browse Source

Add users and apps inner search and add HeaderMenu cancel

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
tags/v20.0.0RC1
John Molakvoæ (skjnldsv) 3 years ago
parent
commit
58b19efd74
No account linked to committer's email address
48 changed files with 105 additions and 78 deletions
  1. 2
    2
      apps/settings/js/vue-settings-admin-security.js
  2. 1
    1
      apps/settings/js/vue-settings-admin-security.js.map
  3. 0
    2
      apps/settings/js/vue-settings-apps-61204aaf4b4d6b6e7940.js
  4. 0
    1
      apps/settings/js/vue-settings-apps-61204aaf4b4d6b6e7940.js.map
  5. 2
    0
      apps/settings/js/vue-settings-apps-7d82ca79b672ef6a7e07.js
  6. 1
    0
      apps/settings/js/vue-settings-apps-7d82ca79b672ef6a7e07.js.map
  7. 2
    0
      apps/settings/js/vue-settings-apps-cf832dbe06a0340d4891.js
  8. 1
    0
      apps/settings/js/vue-settings-apps-cf832dbe06a0340d4891.js.map
  9. 2
    2
      apps/settings/js/vue-settings-apps-users-management.js
  10. 1
    1
      apps/settings/js/vue-settings-apps-users-management.js.map
  11. 2
    2
      apps/settings/js/vue-settings-personal-security.js
  12. 1
    1
      apps/settings/js/vue-settings-personal-security.js.map
  13. 2
    2
      apps/settings/js/vue-settings-personal-webauthn.js
  14. 1
    1
      apps/settings/js/vue-settings-personal-webauthn.js.map
  15. 0
    2
      apps/settings/js/vue-settings-users-06b858deaf48603ce7c5.js
  16. 0
    1
      apps/settings/js/vue-settings-users-06b858deaf48603ce7c5.js.map
  17. 2
    0
      apps/settings/js/vue-settings-users-c5e2ef8b045ac76fa60c.js
  18. 1
    0
      apps/settings/js/vue-settings-users-c5e2ef8b045ac76fa60c.js.map
  19. 2
    2
      apps/settings/js/vue-vendors-settings-apps-9ed6b5656537c98aa712.js
  20. 1
    1
      apps/settings/js/vue-vendors-settings-apps-9ed6b5656537c98aa712.js.map
  21. 0
    2
      apps/settings/js/vue-vendors-settings-apps-c6e9416bc06c5686fddf.js
  22. 0
    1
      apps/settings/js/vue-vendors-settings-apps-c6e9416bc06c5686fddf.js.map
  23. 0
    2
      apps/settings/js/vue-vendors-settings-apps-settings-users-7b6984d3f3d3a3aa83a6.js
  24. 0
    1
      apps/settings/js/vue-vendors-settings-apps-settings-users-7b6984d3f3d3a3aa83a6.js.map
  25. 2
    2
      apps/settings/js/vue-vendors-settings-apps-settings-users-a46abafb0fd92a4adad8.js
  26. 1
    1
      apps/settings/js/vue-vendors-settings-apps-settings-users-a46abafb0fd92a4adad8.js.map
  27. 0
    2
      apps/settings/js/vue-vendors-settings-users-8b96ce996f010432adcb.js
  28. 0
    1
      apps/settings/js/vue-vendors-settings-users-8b96ce996f010432adcb.js.map
  29. 0
    2
      apps/settings/js/vue-vendors-settings-users-99510a9fcf468ba3f0fd.js
  30. 0
    1
      apps/settings/js/vue-vendors-settings-users-99510a9fcf468ba3f0fd.js.map
  31. 2
    0
      apps/settings/js/vue-vendors-settings-users-a951808f89e9abc984a1.js
  32. 1
    0
      apps/settings/js/vue-vendors-settings-users-a951808f89e9abc984a1.js.map
  33. 17
    5
      apps/settings/src/components/UserList.vue
  34. 16
    10
      apps/settings/src/views/Apps.vue
  35. 1
    1
      core/js/dist/install.js
  36. 1
    1
      core/js/dist/install.js.map
  37. 1
    1
      core/js/dist/login.js
  38. 1
    1
      core/js/dist/login.js.map
  39. 1
    1
      core/js/dist/main.js
  40. 1
    1
      core/js/dist/main.js.map
  41. 1
    1
      core/js/dist/maintenance.js
  42. 1
    1
      core/js/dist/maintenance.js.map
  43. 1
    1
      core/js/dist/recommendedapps.js
  44. 1
    1
      core/js/dist/recommendedapps.js.map
  45. 1
    1
      core/js/dist/unified-search.js
  46. 1
    1
      core/js/dist/unified-search.js.map
  47. 8
    12
      core/src/components/HeaderMenu.vue
  48. 22
    3
      core/src/views/UnifiedSearch.vue

+ 2
- 2
apps/settings/js/vue-settings-admin-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-admin-security.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
apps/settings/js/vue-settings-apps-61204aaf4b4d6b6e7940.js
File diff suppressed because it is too large
View File


+ 0
- 1
apps/settings/js/vue-settings-apps-61204aaf4b4d6b6e7940.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/js/vue-settings-apps-7d82ca79b672ef6a7e07.js
File diff suppressed because it is too large
View File


+ 1
- 0
apps/settings/js/vue-settings-apps-7d82ca79b672ef6a7e07.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/js/vue-settings-apps-cf832dbe06a0340d4891.js
File diff suppressed because it is too large
View File


+ 1
- 0
apps/settings/js/vue-settings-apps-cf832dbe06a0340d4891.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-apps-users-management.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-apps-users-management.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-personal-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-personal-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-personal-webauthn.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-personal-webauthn.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
apps/settings/js/vue-settings-users-06b858deaf48603ce7c5.js
File diff suppressed because it is too large
View File


+ 0
- 1
apps/settings/js/vue-settings-users-06b858deaf48603ce7c5.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/js/vue-settings-users-c5e2ef8b045ac76fa60c.js
File diff suppressed because it is too large
View File


+ 1
- 0
apps/settings/js/vue-settings-users-c5e2ef8b045ac76fa60c.js.map
File diff suppressed because it is too large
View File


apps/settings/js/vue-vendors-settings-apps-9ed6b5656537c98aa712.js
File diff suppressed because it is too large
View File


apps/settings/js/vue-vendors-settings-apps-9ed6b5656537c98aa712.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
apps/settings/js/vue-vendors-settings-apps-c6e9416bc06c5686fddf.js
File diff suppressed because it is too large
View File


+ 0
- 1
apps/settings/js/vue-vendors-settings-apps-c6e9416bc06c5686fddf.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
apps/settings/js/vue-vendors-settings-apps-settings-users-7b6984d3f3d3a3aa83a6.js
File diff suppressed because it is too large
View File


+ 0
- 1
apps/settings/js/vue-vendors-settings-apps-settings-users-7b6984d3f3d3a3aa83a6.js.map
File diff suppressed because it is too large
View File


apps/settings/js/vue-vendors-settings-apps-settings-users-a46abafb0fd92a4adad8.js
File diff suppressed because it is too large
View File


apps/settings/js/vue-vendors-settings-apps-settings-users-a46abafb0fd92a4adad8.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
apps/settings/js/vue-vendors-settings-users-8b96ce996f010432adcb.js
File diff suppressed because it is too large
View File


+ 0
- 1
apps/settings/js/vue-vendors-settings-users-8b96ce996f010432adcb.js.map
File diff suppressed because it is too large
View File


+ 0
- 2
apps/settings/js/vue-vendors-settings-users-99510a9fcf468ba3f0fd.js
File diff suppressed because it is too large
View File


+ 0
- 1
apps/settings/js/vue-vendors-settings-users-99510a9fcf468ba3f0fd.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/js/vue-vendors-settings-users-a951808f89e9abc984a1.js
File diff suppressed because it is too large
View File


+ 1
- 0
apps/settings/js/vue-vendors-settings-users-a951808f89e9abc984a1.js.map
File diff suppressed because it is too large
View File


+ 17
- 5
apps/settings/src/components/UserList.vue View File

@@ -241,11 +241,16 @@
</template>

<script>
import userRow from './UserList/UserRow'
import { Multiselect, Actions, ActionButton } from '@nextcloud/vue'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import InfiniteLoading from 'vue-infinite-loading'
import Vue from 'vue'

import Multiselect from '@nextcloud/vue/dist/Components/Multiselect'
import Actions from '@nextcloud/vue/dist/Components/Actions'
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton'

import userRow from './UserList/UserRow'

const unlimitedQuota = {
id: 'none',
label: t('settings', 'Unlimited'),
@@ -407,6 +412,7 @@ export default {
}
},
},

mounted() {
if (!this.settings.canChangePassword) {
OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))
@@ -420,13 +426,19 @@ export default {
/**
* Register search
*/
this.userSearch = new OCA.Search(this.search, this.resetSearch)
subscribe('nextcloud:unified-search:search', this.search)
subscribe('nextcloud:unified-search:reset', this.resetSearch)

/**
* If disabled group but empty, redirect
*/
this.redirectIfDisabled()
},
beforeDestroy() {
unsubscribe('nextcloud:unified-search:search', this.search)
unsubscribe('nextcloud:unified-search:reset', this.resetSearch)
},

methods: {
onScroll(event) {
this.scrolled = event.target.scrollTo > 0
@@ -465,13 +477,13 @@ export default {
},

/* SEARCH */
search(query) {
search({ query }) {
this.searchQuery = query
this.$store.commit('resetUsers')
this.$refs.infiniteLoading.stateChanger.reset()
},
resetSearch() {
this.search('')
this.search({ query: '' })
},

resetForm() {

+ 16
- 10
apps/settings/src/views/Apps.vue View File

@@ -141,6 +141,10 @@
</template>

<script>
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import Vue from 'vue'
import VueLocalStorage from 'vue-localstorage'

import AppContent from '@nextcloud/vue/dist/Components/AppContent'
import AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation'
import AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter'
@@ -149,8 +153,6 @@ import AppNavigationSpacer from '@nextcloud/vue/dist/Components/AppNavigationSpa
import AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar'
import AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab'
import Content from '@nextcloud/vue/dist/Components/Content'
import Vue from 'vue'
import VueLocalStorage from 'vue-localstorage'

import AppList from '../components/AppList'
import AppDetails from '../components/AppDetails'
@@ -254,8 +256,8 @@ export default {
},

watch: {
category(val, old) {
this.setSearch('')
category() {
this.searchQuery = ''
},

app() {
@@ -276,20 +278,24 @@ export default {
this.$store.dispatch('getGroups', { offset: 0, limit: 5 })
this.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)
},

mounted() {
/**
* Register search
*/
this.appSearch = new OCA.Search(this.setSearch, this.resetSearch)
subscribe('nextcloud:unified-search:search', this.setSearch)
subscribe('nextcloud:unified-search:reset', this.resetSearch)
},
beforeDestroy() {
unsubscribe('nextcloud:unified-search:search', this.setSearch)
unsubscribe('nextcloud:unified-search:reset', this.resetSearch)
},

methods: {
setSearch(query) {
setSearch({ query }) {
this.searchQuery = query
},
resetSearch() {
this.setSearch('')
this.searchQuery = ''
},

hideAppDetails() {
this.$router.push({
name: 'apps-category',

+ 1
- 1
core/js/dist/install.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/install.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/login.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/login.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/main.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/main.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/maintenance.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/maintenance.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/recommendedapps.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/recommendedapps.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/unified-search.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/unified-search.js.map
File diff suppressed because it is too large
View File


+ 8
- 12
core/src/components/HeaderMenu.vue View File

@@ -43,7 +43,6 @@

<script>
import { directive as ClickOutside } from 'v-click-outside'
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
import excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'

export default {
@@ -94,15 +93,8 @@ export default {
mounted() {
document.addEventListener('keydown', this.onKeyDown)
},

beforeMount() {
subscribe(`header-menu-${this.id}-close`, this.closeMenu)
subscribe(`header-menu-${this.id}-open`, this.openMenu)
},

beforeDestroy() {
unsubscribe(`header-menu-${this.id}-close`, this.closeMenu)
unsubscribe(`header-menu-${this.id}-open`, this.openMenu)
document.removeEventListener('keydown', this.onKeyDown)
},

methods: {
@@ -129,7 +121,6 @@ export default {
this.opened = false
this.$emit('close')
this.$emit('update:open', false)
emit(`header-menu-${this.id}-close`)
},

/**
@@ -143,14 +134,19 @@ export default {
this.opened = true
this.$emit('open')
this.$emit('update:open', true)
emit(`header-menu-${this.id}-open`)
},

onKeyDown(event) {
// If opened and escape pressed, close
if (event.key === 'Escape' && this.opened) {
event.preventDefault()
this.closeMenu()

/** user cancelled the menu by pressing escape */
this.$emit('cancel')

/** we do NOT fire a close event to differentiate cancel and close */
this.opened = false
this.$emit('update:open', false)
}
},
},

+ 22
- 3
core/src/views/UnifiedSearch.vue View File

@@ -39,7 +39,8 @@
type="search"
:placeholder="t('core', 'Search {types} …', { types: typesNames.join(', ').toLowerCase() })"
@input="onInputDebounced"
@keypress.enter.prevent.stop="onInputEnter">
@keypress.enter.prevent.stop="onInputEnter"
@search="onSearch">
<!-- Search filters -->
<Actions v-if="availableFilters.length > 1" class="unified-search__filters" placement="bottom">
<ActionButton v-for="type in availableFilters"
@@ -288,11 +289,17 @@ export default {
this.types = await getTypes()
},
onClose() {
this.resetState()
this.query = ''
emit('nextcloud:unified-search:close')
},

/**
* Reset the search state
*/
resetSearch() {
emit('nextcloud:unified-search:reset')
this.query = ''
this.resetState()
},
resetState() {
this.cursors = {}
this.limits = {}
@@ -312,6 +319,18 @@ export default {
})
},

/**
* Watch the search event on the input
* Used to detect the reset button press
* @param {Event} event the search event
*/
onSearch(event) {
// If value is empty, the reset button has been pressed
if (event.target.value === '') {
this.resetSearch()
}
},

/**
* If we have results already, open first one
* If not, trigger the search again

Loading…
Cancel
Save