mirror of
https://github.com/nextcloud/server.git
synced 2026-06-11 09:42:09 -04:00
Merge pull request #28865 from nextcloud/backport/28835/stable22
This commit is contained in:
commit
f82529a74c
87 changed files with 912 additions and 720 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=708)}({708:function(e,n){function r(e,n,t,r,o,i,u){try{var c=e[i](u),a=c.value}catch(e){return void t(e)}c.done?n(a):Promise.resolve(a).then(r,o)}
|
||||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=707)}({707:function(e,n){function r(e,n,t,r,o,i,u){try{var c=e[i](u),a=c.value}catch(e){return void t(e)}c.done?n(a):Promise.resolve(a).then(r,o)}
|
||||
/**
|
||||
* @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
apps/files/js/dist/files-app-settings.js
vendored
4
apps/files/js/dist/files-app-settings.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/files-app-settings.js.map
vendored
2
apps/files/js/dist/files-app-settings.js.map
vendored
File diff suppressed because one or more lines are too long
32
apps/files/js/dist/personal-settings.js
vendored
32
apps/files/js/dist/personal-settings.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/personal-settings.js.map
vendored
2
apps/files/js/dist/personal-settings.js.map
vendored
File diff suppressed because one or more lines are too long
26
apps/files/js/dist/sidebar.js
vendored
26
apps/files/js/dist/sidebar.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/sidebar.js.map
vendored
2
apps/files/js/dist/sidebar.js.map
vendored
File diff suppressed because one or more lines are too long
22
apps/files/js/dist/templates.js
vendored
22
apps/files/js/dist/templates.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/templates.js.map
vendored
2
apps/files/js/dist/templates.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
apps/files_sharing/js/dist/files_sharing.js
vendored
4
apps/files_sharing/js/dist/files_sharing.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
152
apps/files_sharing/js/dist/files_sharing_tab.js
vendored
152
apps/files_sharing/js/dist/files_sharing_tab.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
apps/files_sharing/js/dist/main.js
vendored
2
apps/files_sharing/js/dist/main.js
vendored
|
|
@ -1,4 +1,4 @@
|
|||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=469)}({469:function(e,t){
|
||||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=468)}({468:function(e,t){
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
|
|
|
|||
2
apps/files_sharing/js/dist/main.js.map
vendored
2
apps/files_sharing/js/dist/main.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
63
apps/files_sharing/src/components/ExternalShareAction.vue
Normal file
63
apps/files_sharing/src/components/ExternalShareAction.vue
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<!--
|
||||
- @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
-
|
||||
- @author John Molakvoæ <skjnldsv@protonmail.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>
|
||||
<Component :is="data.is"
|
||||
v-bind="data"
|
||||
v-on="action.handlers">
|
||||
{{ data.text }}
|
||||
</Component>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Share from '../models/Share'
|
||||
|
||||
export default {
|
||||
name: 'ExternalShareAction',
|
||||
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
action: {
|
||||
type: Object,
|
||||
default: () => ({}),
|
||||
},
|
||||
fileInfo: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
required: true,
|
||||
},
|
||||
share: {
|
||||
type: Share,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
|
||||
computed: {
|
||||
data() {
|
||||
return this.action.data(this)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
@ -285,8 +285,16 @@
|
|||
@submit="onNoteSubmit" />
|
||||
</template>
|
||||
|
||||
<!-- external sharing via url (social...) -->
|
||||
<ActionLink v-for="({icon, url, name}, index) in externalActions"
|
||||
<!-- external actions -->
|
||||
<ExternalShareAction v-for="action in externalLinkActions"
|
||||
:id="action.id"
|
||||
:key="action.id"
|
||||
:action="action"
|
||||
:file-info="fileInfo"
|
||||
:share="share" />
|
||||
|
||||
<!-- external legacy sharing via url (social...) -->
|
||||
<ActionLink v-for="({icon, url, name}, index) in externalLegacyLinkActions"
|
||||
:key="index"
|
||||
:href="url(shareLink)"
|
||||
:icon="icon"
|
||||
|
|
@ -328,15 +336,16 @@ import Vue from 'vue'
|
|||
|
||||
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton'
|
||||
import ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'
|
||||
import ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'
|
||||
import ActionInput from '@nextcloud/vue/dist/Components/ActionInput'
|
||||
import ActionLink from '@nextcloud/vue/dist/Components/ActionLink'
|
||||
import ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'
|
||||
import ActionText from '@nextcloud/vue/dist/Components/ActionText'
|
||||
import ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'
|
||||
import ActionLink from '@nextcloud/vue/dist/Components/ActionLink'
|
||||
import Actions from '@nextcloud/vue/dist/Components/Actions'
|
||||
import Avatar from '@nextcloud/vue/dist/Components/Avatar'
|
||||
import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'
|
||||
|
||||
import ExternalShareAction from './ExternalShareAction'
|
||||
import GeneratePassword from '../utils/GeneratePassword'
|
||||
import Share from '../models/Share'
|
||||
import SharesMixin from '../mixins/SharesMixin'
|
||||
|
|
@ -354,6 +363,7 @@ export default {
|
|||
ActionText,
|
||||
ActionTextEditable,
|
||||
Avatar,
|
||||
ExternalShareAction,
|
||||
},
|
||||
|
||||
directives: {
|
||||
|
|
@ -381,7 +391,8 @@ export default {
|
|||
publicUploadRValue: OC.PERMISSION_READ,
|
||||
publicUploadWValue: OC.PERMISSION_CREATE,
|
||||
|
||||
ExternalLinkActions: OCA.Sharing.ExternalLinkActions.state,
|
||||
ExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,
|
||||
ExternalShareActions: OCA.Sharing.ExternalShareActions.state,
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -621,11 +632,23 @@ export default {
|
|||
},
|
||||
|
||||
/**
|
||||
* External aditionnal actions for the menu
|
||||
* External additionnai actions for the menu
|
||||
* @deprecated use OCA.Sharing.ExternalShareActions
|
||||
* @returns {Array}
|
||||
*/
|
||||
externalActions() {
|
||||
return this.ExternalLinkActions.actions
|
||||
externalLegacyLinkActions() {
|
||||
return this.ExternalLegacyLinkActions.actions
|
||||
},
|
||||
|
||||
/**
|
||||
* Additional actions for the menu
|
||||
* @returns {Array}
|
||||
*/
|
||||
externalLinkActions() {
|
||||
// filter only the registered actions for said link
|
||||
return this.ExternalShareActions.actions
|
||||
.filter(action => action.shareType.includes(OC.Share.SHARE_TYPE_LINK)
|
||||
|| action.shareType.includes(OC.Share.SHARE_TYPE_EMAIL))
|
||||
},
|
||||
|
||||
isPasswordPolicyEnabled() {
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import { translate as t, translatePlural as n } from '@nextcloud/l10n'
|
|||
import SharingTab from './views/SharingTab'
|
||||
import ShareSearch from './services/ShareSearch'
|
||||
import ExternalLinkActions from './services/ExternalLinkActions'
|
||||
import ExternalShareActions from './services/ExternalShareActions'
|
||||
import TabSections from './services/TabSections'
|
||||
|
||||
// Init Sharing Tab Service
|
||||
|
|
@ -36,6 +37,7 @@ if (!window.OCA.Sharing) {
|
|||
}
|
||||
Object.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })
|
||||
Object.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })
|
||||
Object.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })
|
||||
Object.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })
|
||||
|
||||
Vue.prototype.t = t
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@ export default class ExternalLinkActions {
|
|||
* @returns {boolean}
|
||||
*/
|
||||
registerAction(action) {
|
||||
console.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')
|
||||
|
||||
if (typeof action === 'object' && action.icon && action.name && action.url) {
|
||||
this._state.actions.push(action)
|
||||
return true
|
||||
|
|
|
|||
80
apps/files_sharing/src/services/ExternalShareActions.js
Normal file
80
apps/files_sharing/src/services/ExternalShareActions.js
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/**
|
||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
export default class ExternalShareActions {
|
||||
|
||||
_state;
|
||||
|
||||
constructor() {
|
||||
// init empty state
|
||||
this._state = {}
|
||||
|
||||
// init default values
|
||||
this._state.actions = []
|
||||
console.debug('OCA.Sharing.ExternalShareActions initialized')
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the state
|
||||
*
|
||||
* @readonly
|
||||
* @memberof ExternalLinkActions
|
||||
* @returns {Object} the data state
|
||||
*/
|
||||
get state() {
|
||||
return this._state
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new option/entry for the a given share type
|
||||
*
|
||||
* @param {Object} action new action component to register
|
||||
* @param {string} action.id unique action id
|
||||
* @param {Function} action.data data to bind the component to
|
||||
* @param {Array} action.shareType list of OC.Share.SHARE_XXX to be mounted on
|
||||
* @param {Object} action.handlers list of listeners
|
||||
* @returns {boolean}
|
||||
*/
|
||||
registerAction(action) {
|
||||
// Validate action
|
||||
if (typeof action !== 'object'
|
||||
|| typeof action.id !== 'string'
|
||||
|| typeof action.data !== 'function' // () => {disabled: true}
|
||||
|| !Array.isArray(action.shareType) // [OC.Share.SHARE_TYPE_LINK, ...]
|
||||
|| typeof action.handlers !== 'object' // {click: () => {}, ...}
|
||||
|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {
|
||||
console.error('Invalid action provided', action)
|
||||
return false
|
||||
}
|
||||
|
||||
// Check duplicates
|
||||
const hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1
|
||||
if (hasDuplicate) {
|
||||
console.error(`An action with the same id ${action.id} already exists`, action)
|
||||
return false
|
||||
}
|
||||
|
||||
this._state.actions.push(action)
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
core/js/dist/files_client.js
vendored
4
core/js/dist/files_client.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/files_client.js.map
vendored
2
core/js/dist/files_client.js.map
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/files_fileinfo.js
vendored
2
core/js/dist/files_fileinfo.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/files_fileinfo.js.map
vendored
2
core/js/dist/files_fileinfo.js.map
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/files_iedavclient.js
vendored
2
core/js/dist/files_iedavclient.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/files_iedavclient.js.map
vendored
2
core/js/dist/files_iedavclient.js.map
vendored
File diff suppressed because one or more lines are too long
20
core/js/dist/install.js
vendored
20
core/js/dist/install.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/install.js.map
vendored
2
core/js/dist/install.js.map
vendored
File diff suppressed because one or more lines are too long
32
core/js/dist/login.js
vendored
32
core/js/dist/login.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/login.js.map
vendored
2
core/js/dist/login.js.map
vendored
File diff suppressed because one or more lines are too long
36
core/js/dist/main.js
vendored
36
core/js/dist/main.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/main.js.map
vendored
2
core/js/dist/main.js.map
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/maintenance.js
vendored
2
core/js/dist/maintenance.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/maintenance.js.map
vendored
2
core/js/dist/maintenance.js.map
vendored
File diff suppressed because one or more lines are too long
6
core/js/dist/recommendedapps.js
vendored
6
core/js/dist/recommendedapps.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/recommendedapps.js.map
vendored
2
core/js/dist/recommendedapps.js.map
vendored
File diff suppressed because one or more lines are too long
26
core/js/dist/unified-search.js
vendored
26
core/js/dist/unified-search.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/unified-search.js.map
vendored
2
core/js/dist/unified-search.js.map
vendored
File diff suppressed because one or more lines are too long
26
package-lock.json
generated
26
package-lock.json
generated
|
|
@ -5165,9 +5165,9 @@
|
|||
}
|
||||
},
|
||||
"@nextcloud/vue": {
|
||||
"version": "3.10.1",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-3.10.1.tgz",
|
||||
"integrity": "sha512-DdnnEFxt5FuZOtAD1x7hSDFVQF9KVVgQtFKwzs2ySNbyIx8rfRfc6noC7JbMAPR1LyPegCst0bVwQIfqsASGog==",
|
||||
"version": "3.10.2",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-3.10.2.tgz",
|
||||
"integrity": "sha512-/8r2fE8V7nw9erjm06x3nCALC+6o9q2CzNSL0eDRfsKXCVySFoZ4bYX+zziQUStienisKDRXRhxh7RUAwkS2+w==",
|
||||
"requires": {
|
||||
"@nextcloud/auth": "^1.2.3",
|
||||
"@nextcloud/axios": "^1.3.2",
|
||||
|
|
@ -7661,9 +7661,9 @@
|
|||
}
|
||||
},
|
||||
"date-format-parse": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.6.tgz",
|
||||
"integrity": "sha512-sdxnYAWmLopeb+6Hmw+vo3or4OCJOnh4+YoJ9p+Id3o2EnNP0INpTqx7wr8UregfMpgaSZAH473R/ytiaB3gVg=="
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.7.tgz",
|
||||
"integrity": "sha512-/+lyMUKoRogMuTeOVii6lUwjbVlesN9YRYLzZT/g3TEZ3uD9QnpjResujeEqUW+OSNbT7T1+SYdyEkTcRv+KDQ=="
|
||||
},
|
||||
"davclient.js": {
|
||||
"version": "git+https://github.com/owncloud/davclient.js.git#1ab200d099a3c2cd2ef919c3a56353ce26865994",
|
||||
|
|
@ -15033,9 +15033,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"striptags": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz",
|
||||
"integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0="
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
|
||||
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
|
||||
},
|
||||
"style-loader": {
|
||||
"version": "2.0.0",
|
||||
|
|
@ -15897,11 +15897,11 @@
|
|||
"integrity": "sha512-yaX2its9XAJKGuQqf7LsiZHHSkxsIK8rmCOQOvEGEoF41blKRK8qr9my4qYoD6ikdLss4n8tKqYBecmaY0+WJg=="
|
||||
},
|
||||
"vue2-datepicker": {
|
||||
"version": "3.9.0",
|
||||
"resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.9.0.tgz",
|
||||
"integrity": "sha512-nRqIZx5Ks0TDHFyzyHYIlfmuszEsEvRhwJ6HGuGGHQpjOfrIgkJ9B0pnEEJaVS3LKX6IWCVQMUq0H7I2UKmHqA==",
|
||||
"version": "3.10.1",
|
||||
"resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.10.1.tgz",
|
||||
"integrity": "sha512-AKp4Tq5LRpy4v1lc6qIXLKFfklCDgZQthoVnDCR9QvMo7AaUQv3nD9k45PVBPIF1A1vzQVcSIvhCQJfMhXmMWQ==",
|
||||
"requires": {
|
||||
"date-format-parse": "^0.2.6"
|
||||
"date-format-parse": "^0.2.7"
|
||||
}
|
||||
},
|
||||
"vuedraggable": {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
"@nextcloud/password-confirmation": "^1.0.1",
|
||||
"@nextcloud/paths": "^1.1.2",
|
||||
"@nextcloud/router": "^1.1.0",
|
||||
"@nextcloud/vue": "^3.10.1",
|
||||
"@nextcloud/vue": "^3.10.2",
|
||||
"@nextcloud/vue-dashboard": "^2.0.1",
|
||||
"autosize": "^4.0.4",
|
||||
"backbone": "^1.4.0",
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class AppSettingsContext implements Context, ActorAwareInterface {
|
|||
* @return Locator
|
||||
*/
|
||||
public static function appSettingsContent() {
|
||||
return Locator::forThe()->id("app-settings-content")->
|
||||
return Locator::forThe()->xpath("//div[@id = 'app-settings-content' or @id = 'app-settings__content']")->
|
||||
descendantOf(self::appSettings())->
|
||||
describedAs("App settings");
|
||||
}
|
||||
|
|
@ -48,7 +48,7 @@ class AppSettingsContext implements Context, ActorAwareInterface {
|
|||
* @return Locator
|
||||
*/
|
||||
public static function appSettingsOpenButton() {
|
||||
return Locator::forThe()->xpath("//div[@id = 'app-settings-header']/button")->
|
||||
return Locator::forThe()->xpath("//div[@id = 'app-settings-header' or @id = 'app-settings__header']/button")->
|
||||
descendantOf(self::appSettings())->
|
||||
describedAs("The button to open the app settings");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
* @return Locator
|
||||
*/
|
||||
public static function closeDetailsViewButton() {
|
||||
return Locator::forThe()->css(".icon-close")->
|
||||
return Locator::forThe()->css(".app-sidebar__close")->
|
||||
descendantOf(self::detailsView())->
|
||||
describedAs("Close details view in Files app");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue