summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/css/detailsView.scss42
-rw-r--r--apps/files/src/views/Sidebar.vue2
-rw-r--r--apps/settings/src/views/Apps.vue4
-rw-r--r--apps/settings/src/views/Users.vue110
-rw-r--r--tests/acceptance/features/bootstrap/AppNavigationContext.php2
-rw-r--r--tests/acceptance/features/bootstrap/AppsManagementContext.php10
-rw-r--r--tests/acceptance/features/bootstrap/FilesAppContext.php2
-rw-r--r--tests/acceptance/features/bootstrap/SettingsMenuContext.php4
-rw-r--r--tests/acceptance/features/bootstrap/ToastContext.php2
9 files changed, 90 insertions, 88 deletions
diff --git a/apps/files/css/detailsView.scss b/apps/files/css/detailsView.scss
index e13cf0d7a4e..d035b24de92 100644
--- a/apps/files/css/detailsView.scss
+++ b/apps/files/css/detailsView.scss
@@ -1,19 +1,19 @@
-#app-sidebar .detailFileInfoContainer {
+.app-sidebar .detailFileInfoContainer {
min-height: 50px;
padding: 15px;
}
-#app-sidebar .detailFileInfoContainer > div {
+.app-sidebar .detailFileInfoContainer > div {
clear: both;
}
-#app-sidebar .mainFileInfoView .icon {
+.app-sidebar .mainFileInfoView .icon {
display: inline-block;
background-size: 16px 16px;
}
-#app-sidebar .mainFileInfoView .permalink {
+.app-sidebar .mainFileInfoView .permalink {
padding: 6px 10px;
vertical-align: top;
opacity: .6;
@@ -23,22 +23,22 @@
opacity: 1;
}
}
-#app-sidebar .mainFileInfoView .permalink-field>input {
+.app-sidebar .mainFileInfoView .permalink-field>input {
clear: both;
width: 90%;
}
-#app-sidebar .thumbnailContainer.large {
+.app-sidebar .thumbnailContainer.large {
margin-left: -15px;
margin-right: -35px; /* 15 + 20 for the close button */
margin-top: -15px;
}
-#app-sidebar .thumbnailContainer.large.portrait {
+.app-sidebar .thumbnailContainer.large.portrait {
margin: 0; /* if we don't fit the image anyway we give it back the margin */
}
-#app-sidebar .large .thumbnail {
+.app-sidebar .large .thumbnail {
width:100%;
display:block;
background-repeat: no-repeat;
@@ -49,21 +49,21 @@
height: auto;
}
-#app-sidebar .large .thumbnail .stretcher {
+.app-sidebar .large .thumbnail .stretcher {
content: '';
display: block;
padding-bottom: 56.25%; /* sets height of .thumbnail to 9/16 of the width */
}
-#app-sidebar .large.portrait .thumbnail {
+.app-sidebar .large.portrait .thumbnail {
background-position: 50% top;
}
-#app-sidebar .large.portrait .thumbnail {
+.app-sidebar .large.portrait .thumbnail {
background-size: contain;
}
-#app-sidebar .large.text {
+.app-sidebar .large.text {
overflow-y: scroll;
overflow-x: hidden;
padding-top: 14px;
@@ -71,7 +71,7 @@
margin-left: 0;
}
-#app-sidebar .thumbnail {
+.app-sidebar .thumbnail {
width: 100%;
min-height: 75px;
display: inline-block;
@@ -81,44 +81,44 @@
background-repeat: no-repeat;
}
-#app-sidebar .ellipsis {
+.app-sidebar .ellipsis {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
-#app-sidebar .fileName {
+.app-sidebar .fileName {
font-size: 16px;
padding-top: 13px;
padding-bottom: 3px;
}
-#app-sidebar .fileName h3 {
+.app-sidebar .fileName h3 {
width: calc(100% - 42px); /* 36px is the with of the copy link icon, but this breaks so we add some more to be sure */
display: inline-block;
padding: 5px 0;
margin: -5px 0;
}
-#app-sidebar .file-details {
+.app-sidebar .file-details {
color: var(--color-text-maxcontrast);
}
-#app-sidebar .action-favorite {
+.app-sidebar .action-favorite {
vertical-align: sub;
padding: 10px;
margin: -10px;
}
-#app-sidebar .action-favorite > span{
+.app-sidebar .action-favorite > span{
opacity: .7 !important;
}
-#app-sidebar .detailList {
+.app-sidebar .detailList {
float: left;
}
-#app-sidebar .close {
+.app-sidebar .close {
position: absolute;
top: 0;
right: 0;
diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue
index 16abb3ca76f..1fc89c6a7ee 100644
--- a/apps/files/src/views/Sidebar.vue
+++ b/apps/files/src/views/Sidebar.vue
@@ -454,7 +454,7 @@ export default {
}
</script>
<style lang="scss" scoped>
-#app-sidebar {
+.app-sidebar {
&.has-preview::v-deep {
.app-sidebar-header__figure {
background-size: cover;
diff --git a/apps/settings/src/views/Apps.vue b/apps/settings/src/views/Apps.vue
index 6afdb2536aa..ccdb2d1b8de 100644
--- a/apps/settings/src/views/Apps.vue
+++ b/apps/settings/src/views/Apps.vue
@@ -26,7 +26,7 @@
:content-class="{ 'icon-loading': loadingList }"
:navigation-class="{ 'icon-loading': loading }">
<AppNavigation>
- <ul id="appscategories">
+ <template #list>
<AppNavigationItem
id="app-category-your-apps"
:to="{ name: 'apps' }"
@@ -84,7 +84,7 @@
id="app-developer-docs"
href="settings.developerDocumentation"
:title="t('settings', 'Developer documentation') + ' ↗'" />
- </ul>
+ </template>
</AppNavigation>
<AppContent class="app-settings-content" :class="{ 'icon-loading': loadingList }">
<AppList :category="category" :app="currentApp" :search="searchQuery" />
diff --git a/apps/settings/src/views/Users.vue b/apps/settings/src/views/Users.vue
index d174768fc80..0e837979b85 100644
--- a/apps/settings/src/views/Users.vue
+++ b/apps/settings/src/views/Users.vue
@@ -27,7 +27,7 @@
:text="t('settings','New user')"
button-class="icon-add"
@click="toggleNewUserMenu" />
- <ul id="usergrouplist">
+ <template #list>
<AppNavigationItem
id="addgroup"
ref="addGroup"
@@ -92,58 +92,60 @@
</ActionButton>
</template>
</AppNavigationItem>
- </ul>
- <AppNavigationSettings>
- <div>
- <p>{{ t('settings', 'Default quota:') }}</p>
- <Multiselect :value="defaultQuota"
- :options="quotaOptions"
- tag-placeholder="create"
- :placeholder="t('settings', 'Select default quota')"
- label="label"
- track-by="id"
- :allow-empty="false"
- :taggable="true"
- @tag="validateQuota"
- @input="setDefaultQuota" />
- </div>
- <div>
- <input id="showLanguages"
- v-model="showLanguages"
- type="checkbox"
- class="checkbox">
- <label for="showLanguages">{{ t('settings', 'Show Languages') }}</label>
- </div>
- <div>
- <input id="showLastLogin"
- v-model="showLastLogin"
- type="checkbox"
- class="checkbox">
- <label for="showLastLogin">{{ t('settings', 'Show last login') }}</label>
- </div>
- <div>
- <input id="showUserBackend"
- v-model="showUserBackend"
- type="checkbox"
- class="checkbox">
- <label for="showUserBackend">{{ t('settings', 'Show user backend') }}</label>
- </div>
- <div>
- <input id="showStoragePath"
- v-model="showStoragePath"
- type="checkbox"
- class="checkbox">
- <label for="showStoragePath">{{ t('settings', 'Show storage path') }}</label>
- </div>
- <div>
- <input id="sendWelcomeMail"
- v-model="sendWelcomeMail"
- :disabled="loadingSendMail"
- type="checkbox"
- class="checkbox">
- <label for="sendWelcomeMail">{{ t('settings', 'Send email to new user') }}</label>
- </div>
- </AppNavigationSettings>
+ </template>
+ <template #footer>
+ <AppNavigationSettings>
+ <div>
+ <p>{{ t('settings', 'Default quota:') }}</p>
+ <Multiselect :value="defaultQuota"
+ :options="quotaOptions"
+ tag-placeholder="create"
+ :placeholder="t('settings', 'Select default quota')"
+ label="label"
+ track-by="id"
+ :allow-empty="false"
+ :taggable="true"
+ @tag="validateQuota"
+ @input="setDefaultQuota" />
+ </div>
+ <div>
+ <input id="showLanguages"
+ v-model="showLanguages"
+ type="checkbox"
+ class="checkbox">
+ <label for="showLanguages">{{ t('settings', 'Show Languages') }}</label>
+ </div>
+ <div>
+ <input id="showLastLogin"
+ v-model="showLastLogin"
+ type="checkbox"
+ class="checkbox">
+ <label for="showLastLogin">{{ t('settings', 'Show last login') }}</label>
+ </div>
+ <div>
+ <input id="showUserBackend"
+ v-model="showUserBackend"
+ type="checkbox"
+ class="checkbox">
+ <label for="showUserBackend">{{ t('settings', 'Show user backend') }}</label>
+ </div>
+ <div>
+ <input id="showStoragePath"
+ v-model="showStoragePath"
+ type="checkbox"
+ class="checkbox">
+ <label for="showStoragePath">{{ t('settings', 'Show storage path') }}</label>
+ </div>
+ <div>
+ <input id="sendWelcomeMail"
+ v-model="sendWelcomeMail"
+ :disabled="loadingSendMail"
+ type="checkbox"
+ class="checkbox">
+ <label for="sendWelcomeMail">{{ t('settings', 'Send email to new user') }}</label>
+ </div>
+ </AppNavigationSettings>
+ </template>
</AppNavigation>
<AppContent>
<UserList #content
@@ -514,7 +516,7 @@ export default {
<style lang="scss" scoped>
// force hiding the editing action for the add group entry
-#usergrouplist #addgroup::v-deep .app-navigation-entry__utils {
+.app-navigation__list #addgroup::v-deep .app-navigation-entry__utils {
display: none;
}
</style>
diff --git a/tests/acceptance/features/bootstrap/AppNavigationContext.php b/tests/acceptance/features/bootstrap/AppNavigationContext.php
index 427af0e40c9..df6ed228960 100644
--- a/tests/acceptance/features/bootstrap/AppNavigationContext.php
+++ b/tests/acceptance/features/bootstrap/AppNavigationContext.php
@@ -31,7 +31,7 @@ class AppNavigationContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function appNavigation() {
- return Locator::forThe()->id("app-navigation")->
+ return Locator::forThe()->xpath("//*[@id=\"app-navigation\" or contains(@class, 'app-navigation')]")->
describedAs("App navigation");
}
diff --git a/tests/acceptance/features/bootstrap/AppsManagementContext.php b/tests/acceptance/features/bootstrap/AppsManagementContext.php
index 1e36ac72ef6..1f3b2dbe28a 100644
--- a/tests/acceptance/features/bootstrap/AppsManagementContext.php
+++ b/tests/acceptance/features/bootstrap/AppsManagementContext.php
@@ -59,7 +59,7 @@ class AppsManagementContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function bundleButton($bundle) {
- return Locator::forThe()->xpath("//main[@id='app-content']//div[@class='apps-header']/h2[normalize-space() = '$bundle']/input")->
+ return Locator::forThe()->xpath("//main[@id='app-content' or contains(@class, 'app-content')]//div[@class='apps-header']/h2[normalize-space() = '$bundle']/input")->
describedAs("Button to enable / disable bundles");
}
@@ -67,7 +67,7 @@ class AppsManagementContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function rowForApp($app) {
- return Locator::forThe()->xpath("//main[@id='app-content']//div[@class='app-name'][normalize-space() = '$app']/..")->
+ return Locator::forThe()->xpath("//main[@id='app-content' or contains(@class, 'app-content')]//div[@class='app-name'][normalize-space() = '$app']/..")->
describedAs("Row for app $app in Apps Management");
}
@@ -75,7 +75,7 @@ class AppsManagementContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function emptyAppList() {
- return Locator::forThe()->xpath("//main[@id='app-content']//div[@id='apps-list-empty']")->
+ return Locator::forThe()->xpath("//main[@id='app-content' or contains(@class, 'app-content')]//div[@id='apps-list-empty']")->
describedAs("Empty apps list view");
}
@@ -83,7 +83,7 @@ class AppsManagementContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function appEntries() {
- return Locator::forThe()->xpath("//main[@id='app-content']//div[@class='section']")->
+ return Locator::forThe()->xpath("//main[@id='app-content' or contains(@class, 'app-content')]//div[@class='section']")->
describedAs("Entries in apps list");
}
@@ -109,7 +109,7 @@ class AppsManagementContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function sidebar() {
- return Locator::forThe()->id("app-sidebar")->
+ return Locator::forThe()->xpath("//*[@id=\"app-sidebar\" or contains(@class, 'app-sidebar')]")->
describedAs("Sidebar in apps management");
}
diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php
index a5dcfb700ba..906a57b9e61 100644
--- a/tests/acceptance/features/bootstrap/FilesAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesAppContext.php
@@ -80,7 +80,7 @@ class FilesAppContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function detailsView() {
- return Locator::forThe()->id("app-sidebar")->
+ return Locator::forThe()->xpath("//*[@id=\"app-sidebar\" or contains(@class, 'app-sidebar')]")->
describedAs("Details view in Files app");
}
diff --git a/tests/acceptance/features/bootstrap/SettingsMenuContext.php b/tests/acceptance/features/bootstrap/SettingsMenuContext.php
index 485f945f04c..678d7c5eabb 100644
--- a/tests/acceptance/features/bootstrap/SettingsMenuContext.php
+++ b/tests/acceptance/features/bootstrap/SettingsMenuContext.php
@@ -88,7 +88,7 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
* @return Locator
*/
private static function settingsPanelFor($itemText) {
- return Locator::forThe()->xpath("//div[@id = 'app-navigation']//ul//li[@class = 'app-navigation-caption' and normalize-space() = '$itemText']")->
+ return Locator::forThe()->xpath("//div[@id = 'app-navigation' or contains(@class, 'app-navigation')]//ul//li[@class = 'app-navigation-caption' and normalize-space() = '$itemText']")->
describedAs($itemText . " item in Settings panel");
}
@@ -97,7 +97,7 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
* @return Locator
*/
private static function settingsPanelEntryFor($itemText) {
- return Locator::forThe()->xpath("//div[@id = 'app-navigation']//ul//li[normalize-space() = '$itemText']")->
+ return Locator::forThe()->xpath("//div[@id = 'app-navigation' or contains(@class, 'app-navigation')]//ul//li[normalize-space() = '$itemText']")->
describedAs($itemText . " entry in Settings panel");
}
diff --git a/tests/acceptance/features/bootstrap/ToastContext.php b/tests/acceptance/features/bootstrap/ToastContext.php
index 62b15c74c71..5a67d7f2581 100644
--- a/tests/acceptance/features/bootstrap/ToastContext.php
+++ b/tests/acceptance/features/bootstrap/ToastContext.php
@@ -39,7 +39,7 @@ class ToastContext implements Context, ActorAwareInterface {
* @return Locator
*/
private static function toastContainer() {
- return Locator::forThe()->id("content")->
+ return Locator::forThe()->xpath("//*[@id=\"content\" or contains(@class, 'content')]")->
describedAs("Toast container");
}