diff --git a/docs/src/components/SurveyLink.vue b/docs/src/components/SurveyLink.vue
new file mode 100644
index 00000000000..296c6330878
--- /dev/null
+++ b/docs/src/components/SurveyLink.vue
@@ -0,0 +1,32 @@
+
+ q-banner(inline-actions).survey-link
+ q-btn(
+ type="a"
+ href="https://bit.ly/3cTLXsO"
+ target="_blank"
+ :color="color"
+ :text-color="textColor"
+ :icon="mdiFileDocumentEditOutline"
+ label="Survey results are out!"
+ no-caps
+ )
+
+
+
diff --git a/docs/src/layouts/Layout.vue b/docs/src/layouts/Layout.vue
index c47c5a059e3..6225b9dcef9 100644
--- a/docs/src/layouts/Layout.vue
+++ b/docs/src/layouts/Layout.vue
@@ -31,11 +31,11 @@ q-layout.doc-layout(view="lHh LpR lff", @scroll="onScroll")
content-class="doc-left-drawer"
)
q-scroll-area(style="height: calc(100% - 50px); margin-top: 50px")
- //- survey-countdown.layout-countdown(
- //- color="primary"
- //- align-class="justify-start"
- //- padding-class="q-py-md"
- //- )
+ survey-link.layout-link(
+ color="primary"
+ align-class="justify-start"
+ padding-class="q-py-md"
+ )
q-separator.q-mb-lg
.row.justify-center.q-my-lg
@@ -123,7 +123,7 @@ import {
import AppMenu from 'components/AppMenu'
import HeaderMenu from 'components/HeaderMenu'
-// import SurveyCountdown from 'components/SurveyCountdown'
+import SurveyLink from 'components/SurveyLink'
const { setScrollPosition, getScrollPosition } = scroll
@@ -142,7 +142,7 @@ export default {
components: {
AppMenu,
- // SurveyCountdown,
+ SurveyLink,
HeaderMenu
},
@@ -495,7 +495,8 @@ export default {
.time
font-size: 38px
-.layout-countdown
+.layout-link
background: linear-gradient(45deg, #e6f1fc 25%, #c3e0ff 25%, #c3e0ff 50%, #e6f1fc 50%, #e6f1fc 75%, #c3e0ff 75%, #c3e0ff)
background-size: 40px 40px
+ text-align: center
diff --git a/docs/src/pages/contribution-guide/running-projects.md b/docs/src/pages/contribution-guide/running-projects.md
index e064777dcd8..2d34187c6e3 100644
--- a/docs/src/pages/contribution-guide/running-projects.md
+++ b/docs/src/pages/contribution-guide/running-projects.md
@@ -11,7 +11,7 @@ desc: Quasar's active projects, goals and maintainers.
| Media | Quasar is well known in JavaScript / Vue.js / backend / mobile and desktop dev community | Scott | [Facebook](https://www.facebook.com/QuasarFramework), [Medium](https://medium.com/quasar-framework), [Twitter](https://twitter.com/quasarframework) |
| BEX | Browser Extension CLI mode | Allan | [#76](https://github.com/quasarframework/quasar/issues/76)|
| UI App Ext | Create and maintain UI extensions | Jeff | |
-| Firebase | Docs and possibly an App Ext | Adam | [repo](https://github.com/quasarframework/app-extension-firebase) |
+| Firebase | Knowledge base articles - [dev.to/quasar](https://dev.to/quasar) : "To the Stars with Quasar & Firebase" | Adam | [repo](https://github.com/quasarframework/firebase-sample-apps) |
| Quasar ESLint plugin | Plugin for ESLint with Quasar upgrade support warnings | Jeff | [repo](https://github.com/quasarframework/eslint-plugin-quasar)|
| Typescript support | Full Typescript support for Quasar | Paolo, Kerry | [repo](https://github.com/quasarframework/app-extension-typescript) |
| Quasar Testing AE | Maintenance and enhancements | Paolo | [repo](https://github.com/quasarframework/quasar-testing) |
diff --git a/docs/src/pages/quasar-cli/installation.md b/docs/src/pages/quasar-cli/installation.md
index 9a82a539406..8a71324e2b4 100644
--- a/docs/src/pages/quasar-cli/installation.md
+++ b/docs/src/pages/quasar-cli/installation.md
@@ -6,11 +6,11 @@ desc: How to install the Quasar CLI on your development machine.
Make sure that you have Node >=10 and NPM >=5 installed on your machine.
::: warning
-**Do not use any Node version higher than 12+**. Webpack 4 does not support any Node version higher than this and we cannot move to Webpack 5 without making breaking changes. However, we will support Webpack 5 in a future release.
+**Do not use any Node version higher than 14+**. Webpack 4 does not support any Node version higher than this and we cannot move to Webpack 5 without making breaking changes. However, we will support Webpack 5 in a future release.
:::
::: warning
-**Do not use uneven versions of Node i.e. 11, 13, etc.** These versions are not tested with Quasar and often cause issues due to their experimental nature. We highly recommend always using the LTS version of Node.
+**Do not use uneven versions of Node i.e. 13, 15, etc.** These versions are not tested with Quasar and often cause issues due to their experimental nature. We highly recommend always using the LTS version of Node.
:::
```bash
diff --git a/ui/package.json b/ui/package.json
index c9d3f8a987b..1cde7e805f9 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "quasar",
- "version": "1.15.2",
+ "version": "1.15.3",
"description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
"module": "src/index.esm.js",
"typings": "dist/types/index.d.ts",
diff --git a/ui/src/components/popup-edit/QPopupEdit.js b/ui/src/components/popup-edit/QPopupEdit.js
index 6fc018216d5..4c432f9f1cd 100644
--- a/ui/src/components/popup-edit/QPopupEdit.js
+++ b/ui/src/components/popup-edit/QPopupEdit.js
@@ -81,10 +81,10 @@ export default Vue.extend({
methods: {
set () {
+ if (this.validate(this.value) !== true) {
+ return
+ }
if (this.__hasChanged() === true) {
- if (this.validate(this.value) === false) {
- return
- }
this.$emit('save', this.value, this.initialValue)
}
this.__close()
diff --git a/ui/src/components/uploader/QUploaderBase.js b/ui/src/components/uploader/QUploaderBase.js
index 17b934c41bc..d983e7d6cd7 100644
--- a/ui/src/components/uploader/QUploaderBase.js
+++ b/ui/src/components/uploader/QUploaderBase.js
@@ -253,10 +253,13 @@ export default Vue.extend({
const files = processedFiles
.filter(file => this.files.findIndex(f => file.name === f.name) === -1)
-
- this.__getFileInput().value = ''
-
+
if (files === void 0) { return }
+
+ const fileInput = this.__getFileInput()
+ if (fileInput !== void 0) {
+ fileInput.value = ''
+ }
files.forEach(file => {
this.__updateFile(file, 'idle')