diff --git a/changelog/unreleased/bugfix-extension-img b/changelog/unreleased/bugfix-extension-img
new file mode 100644
index 00000000000..d2670b2cf6b
--- /dev/null
+++ b/changelog/unreleased/bugfix-extension-img
@@ -0,0 +1,6 @@
+Bugfix: Show extension image
+
+Allow extensions to set an image as its logo, instead of an icon.
+If `img` is set, it will take precedence over `icon`.
+
+https://github.com/owncloud/web/pull/5985
diff --git a/changelog/unreleased/bugfix-hide-files-by-default b/changelog/unreleased/bugfix-hide-files-by-default
new file mode 100644
index 00000000000..b0195803638
--- /dev/null
+++ b/changelog/unreleased/bugfix-hide-files-by-default
@@ -0,0 +1,5 @@
+Bugfix: Hidden files hidden by default
+
+Hide hidden files (files started with ".") by default, similar to oc10
+
+https://github.com/owncloud/web/pull/5985
diff --git a/changelog/unreleased/bugfix-order-extensions b/changelog/unreleased/bugfix-order-extensions
new file mode 100644
index 00000000000..e121d79c60b
--- /dev/null
+++ b/changelog/unreleased/bugfix-order-extensions
@@ -0,0 +1,6 @@
+Bugfix: Order extensions and default
+
+Ensure the default extensions are displayed first.
+Ensure that extensions can be set as default or not.
+
+https://github.com/owncloud/web/pull/5985
\ No newline at end of file
diff --git a/changelog/unreleased/enhancement-build-options b/changelog/unreleased/enhancement-build-options
new file mode 100644
index 00000000000..93f60c4fa02
--- /dev/null
+++ b/changelog/unreleased/enhancement-build-options
@@ -0,0 +1,6 @@
+Enhancement: Build options
+
+Configure the startup title (displayed before the configuration is loaded) via env variable TITLE.
+Make the source map generation optional with the env variable SOURCE_MAP.
+
+https://github.com/owncloud/web/pull/5985
\ No newline at end of file
diff --git a/changelog/unreleased/enhancement-feedback-on-startup b/changelog/unreleased/enhancement-feedback-on-startup
new file mode 100644
index 00000000000..0fa8747a6dd
--- /dev/null
+++ b/changelog/unreleased/enhancement-feedback-on-startup
@@ -0,0 +1,6 @@
+Enhancement: Show feedback on startup
+
+Instead of displaying an empty page while all components load, display a spiner.
+Also show an error message if there was an error.
+
+https://github.com/owncloud/web/pull/5985
\ No newline at end of file
diff --git a/packages/web-app-files/src/components/ActionMenuItem.vue b/packages/web-app-files/src/components/ActionMenuItem.vue
index 0eaf000bd90..d11b257a4e9 100644
--- a/packages/web-app-files/src/components/ActionMenuItem.vue
+++ b/packages/web-app-files/src/components/ActionMenuItem.vue
@@ -7,14 +7,19 @@
data-testid="action-handler"
v-on="getComponentListeners(action, items)"
>
-
+
{{
action.label(filterParams)
}}
diff --git a/packages/web-app-files/src/components/AppBar/AppBar.vue b/packages/web-app-files/src/components/AppBar/AppBar.vue
index 67cd1bc7aee..fdd785ca587 100644
--- a/packages/web-app-files/src/components/AppBar/AppBar.vue
+++ b/packages/web-app-files/src/components/AppBar/AppBar.vue
@@ -307,7 +307,7 @@ export default {
created() {
// Storage returns a string so we need to convert it into a boolean
- const areHiddenFilesShown = window.localStorage.getItem('oc_hiddenFilesShown') || 'true'
+ const areHiddenFilesShown = window.localStorage.getItem('oc_hiddenFilesShown') || 'false'
const areHiddenFilesShownBoolean = areHiddenFilesShown === 'true'
if (areHiddenFilesShownBoolean !== this.areHiddenFilesShown) {
diff --git a/packages/web-app-files/src/mixins/fileActions.js b/packages/web-app-files/src/mixins/fileActions.js
index 218d786be9b..70b4b57c7e6 100644
--- a/packages/web-app-files/src/mixins/fileActions.js
+++ b/packages/web-app-files/src/mixins/fileActions.js
@@ -62,41 +62,50 @@ export default {
},
$_fileActions_editorActions() {
- return this.apps.fileEditors.map((editor) => {
- return {
- label: () => {
- const translated = this.$gettext('Open in %{app}')
- return this.$gettextInterpolate(
- translated,
- { app: this.apps.meta[editor.app].name },
- true
- )
- },
- icon: this.apps.meta[editor.app].icon,
- handler: ({ resources }) =>
- this.$_fileActions_openEditor(
- editor,
- resources[0].path,
- resources[0].id,
- EDITOR_MODE_EDIT
- ),
- isEnabled: ({ resources }) => {
- if (resources.length !== 1) {
- return false
- }
- if (Array.isArray(editor.routes) && !checkRoute(editor.routes, this.$route.name)) {
- return false
- }
-
- return resources[0].extension.toLowerCase() === editor.extension.toLowerCase()
- },
- canBeDefault: true,
- componentType: 'oc-button',
- class: `oc-files-actions-${kebabCase(
- this.apps.meta[editor.app].name
- ).toLowerCase()}-trigger`
- }
- })
+ return this.apps.fileEditors
+ .map((editor) => {
+ return {
+ label: () => {
+ const translated = this.$gettext('Open in %{app}')
+ return this.$gettextInterpolate(
+ translated,
+ { app: this.apps.meta[editor.app].name },
+ true
+ )
+ },
+ icon: this.apps.meta[editor.app].icon,
+ img: this.apps.meta[editor.app].img,
+ handler: ({ resources }) =>
+ this.$_fileActions_openEditor(
+ editor,
+ resources[0].path,
+ resources[0].id,
+ EDITOR_MODE_EDIT
+ ),
+ isEnabled: ({ resources }) => {
+ if (resources.length !== 1) {
+ return false
+ }
+ if (Array.isArray(editor.routes) && !checkRoute(editor.routes, this.$route.name)) {
+ return false
+ }
+
+ return resources[0].extension.toLowerCase() === editor.extension.toLowerCase()
+ },
+ canBeDefault: editor.canBeDefault,
+ componentType: 'oc-button',
+ class: `oc-files-actions-${kebabCase(
+ this.apps.meta[editor.app].name
+ ).toLowerCase()}-trigger`
+ }
+ })
+ .sort((first, second) => {
+ // Ensure default are listed first
+ if (second.canBeDefault !== first.canBeDefault && second.canBeDefault) {
+ return 1
+ }
+ return 0
+ })
}
},
@@ -214,7 +223,8 @@ export default {
const label = this.$gettext('Open in %{ appName }')
return {
name: app.name,
- img: app.icon,
+ icon: app.icon,
+ img: app.img,
componentType: 'oc-button',
class: `oc-files-actions-${app.name}-trigger`,
isEnabled: () => true,
diff --git a/packages/web-app-files/tests/unit/components/ActionMenuItem.spec.js b/packages/web-app-files/tests/unit/components/ActionMenuItem.spec.js
index 8224e693664..095ebfac332 100644
--- a/packages/web-app-files/tests/unit/components/ActionMenuItem.spec.js
+++ b/packages/web-app-files/tests/unit/components/ActionMenuItem.spec.js
@@ -31,14 +31,10 @@ describe('ActionMenuItem component', () => {
})
it('renders an image if there is one defined in the action', () => {
const action = { ...fileActions.download, img: 'https://owncloud.tld/img.png' }
- const wrapper1 = getShallowWrapper(action)
- expect(wrapper1.find(selectors.icon).exists()).toBeTruthy()
- expect(wrapper1.find(selectors.icon).attributes().name).toBe(action.icon)
- delete action.icon
- const wrapper2 = getShallowWrapper(action)
- expect(wrapper2.find(selectors.icon).exists()).toBeFalsy()
- expect(wrapper2.find(selectors.img).exists()).toBeTruthy()
- expect(wrapper2.find(selectors.img).attributes().src).toBe(action.img)
+ const wrapper = getShallowWrapper(action)
+ expect(wrapper.find(selectors.icon).exists()).toBeFalsy()
+ expect(wrapper.find(selectors.img).exists()).toBeTruthy()
+ expect(wrapper.find(selectors.img).attributes().src).toBe(action.img)
})
it('renders the action label', () => {
const action = fileActions.download
diff --git a/packages/web-container/index.html.ejs b/packages/web-container/index.html.ejs
index 05bab1859ee..a47ee0c90d2 100644
--- a/packages/web-container/index.html.ejs
+++ b/packages/web-container/index.html.ejs
@@ -10,35 +10,77 @@
<% }); %>
-
+
+