diff --git a/public/mix-manifest.json b/public/mix-manifest.json index b31f686a..f212c89f 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -68,5 +68,7 @@ "/js/chunks/shared-with-me.js": "/js/chunks/shared-with-me.js", "/js/chunks/invitation.js": "/js/chunks/invitation.js", "/css/tailwind.css": "/css/tailwind.css", - "/css/app.css": "/css/app.css" + "/css/app.css": "/css/app.css", + "/js/chunks/request-upload.js": "/js/chunks/request-upload.js", + "/js/chunks/request.js": "/js/chunks/request.js" } diff --git a/resources/css/tailwind.css b/resources/css/tailwind.css index e4e3f7b1..bceb341a 100644 --- a/resources/css/tailwind.css +++ b/resources/css/tailwind.css @@ -20,4 +20,12 @@ .is-inactive { @apply pointer-events-none opacity-40 +} + +.grid-view { + @apply grid grid-cols-3 content-start sm:grid-cols-4 lg:gap-2 xl:grid-cols-6 xl:gap-4; +} + +.grid-view-sidebar { + @apply grid grid-cols-3 content-start md:grid-cols-2 lg:grid-cols-3 lg:gap-2 xl:grid-cols-4 xl:gap-4 2xl:grid-cols-5; } \ No newline at end of file diff --git a/resources/js/App.vue b/resources/js/App.vue index 2463adf8..b3282af8 100644 --- a/resources/js/App.vue +++ b/resources/js/App.vue @@ -5,16 +5,16 @@ - + - + - + - + @@ -26,94 +26,93 @@ import Spinner from './components/FilesView/Spinner' import Vignette from './components/Others/Vignette' import Alert from './components/FilesView/Alert' import RestrictionWarningBar from './components/Subscription/RestrictionWarningBar' -import {mapGetters} from 'vuex' -import {events} from './bus' +import { mapGetters } from 'vuex' +import { events } from './bus' export default { - name: 'App', - components: { - RestrictionWarningBar, - CookieDisclaimer, - ToasterWrapper, - Vignette, - Spinner, - Alert, - }, - data() { - return { - isLoaded: false, - } - }, - computed: { - ...mapGetters(['config', 'user']), - }, - watch: { - 'config.defaultThemeMode': function () { - this.handleDarkMode() - }, - }, - methods: { - spotlightListener(e) { - if (e.key === 'k' && e.metaKey) { - events.$emit('spotlight:show') - } - }, - handleDarkMode() { - const app = document.getElementsByTagName('html')[0] - const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)') + name: 'App', + components: { + RestrictionWarningBar, + CookieDisclaimer, + ToasterWrapper, + Vignette, + Spinner, + Alert, + }, + data() { + return { + isLoaded: false, + } + }, + computed: { + ...mapGetters(['config', 'user']), + }, + watch: { + 'config.defaultThemeMode': function () { + this.handleDarkMode() + }, + }, + methods: { + spotlightListener(e) { + if (e.key === 'k' && e.metaKey) { + events.$emit('spotlight:show') + } + }, + handleDarkMode() { + const app = document.getElementsByTagName('html')[0] + const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)') - if (this.config.defaultThemeMode === 'dark') { - app.classList.add('dark') - this.$store.commit('UPDATE_DARK_MODE_STATUS', true) - } else if (this.config.defaultThemeMode === 'light') { - app.classList.remove('dark') - this.$store.commit('UPDATE_DARK_MODE_STATUS', false) - } else if (this.config.defaultThemeMode === 'system' && prefersDarkScheme.matches) { - app.classList.add('dark') - this.$store.commit('UPDATE_DARK_MODE_STATUS', true) - } else if (this.config.defaultThemeMode === 'system' && !prefersDarkScheme.matches) { - app.classList.remove('dark') - this.$store.commit('UPDATE_DARK_MODE_STATUS', false) - } - }, - }, - beforeMount() { - window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { - this.handleDarkMode() - }) + if (this.config.defaultThemeMode === 'dark') { + app.classList.add('dark') + this.$store.commit('UPDATE_DARK_MODE_STATUS', true) + } else if (this.config.defaultThemeMode === 'light') { + app.classList.remove('dark') + this.$store.commit('UPDATE_DARK_MODE_STATUS', false) + } else if (this.config.defaultThemeMode === 'system' && prefersDarkScheme.matches) { + app.classList.add('dark') + this.$store.commit('UPDATE_DARK_MODE_STATUS', true) + } else if (this.config.defaultThemeMode === 'system' && !prefersDarkScheme.matches) { + app.classList.remove('dark') + this.$store.commit('UPDATE_DARK_MODE_STATUS', false) + } + }, + }, + beforeMount() { + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { + this.handleDarkMode() + }) - // Commit config - this.$store.commit('INIT', { - config: this.$root.$data.config, - }) + // Commit config + this.$store.commit('INIT', { + config: this.$root.$data.config, + }) - // Get installation state - let installation = this.$root.$data.config.installation + // Get installation state + let installation = this.$root.$data.config.installation - // Redirect to setup wizard - if (installation === 'installation-needed') { - this.isLoaded = true + // Redirect to setup wizard + if (installation === 'installation-needed') { + this.isLoaded = true - if (window.location.pathname.split('/')[1] !== 'setup-wizard') { - this.$router.push({name: 'StatusCheck'}) - } - } else { - this.$store.dispatch('getLanguageTranslations', this.$root.$data.config.locale) - .then(() => { - this.isLoaded = true - }) - } - }, - created() { - if (this.$isWindows()) { - document.body.classList.add('windows') - } + if (window.location.pathname.split('/')[1] !== 'setup-wizard') { + this.$router.push({ name: 'StatusCheck' }) + } + } else { + this.$store.dispatch('getLanguageTranslations', this.$root.$data.config.locale).then(() => { + this.isLoaded = true + }) + } + }, + created() { + if (this.$isWindows()) { + document.body.classList.add('windows') + } - window.addEventListener('keydown', this.spotlightListener) - }, - destroyed() { - window.removeEventListener('keydown', this.spotlightListener) - }, + window.addEventListener('keydown', this.spotlightListener) + }, + destroyed() { + window.removeEventListener('keydown', this.spotlightListener) + }, } @@ -123,54 +122,54 @@ export default { @import '../sass/vuefilemanager/mixins'; input:-webkit-autofill { - transition-delay: 999999999999s; + transition-delay: 999999999999s; } [v-cloak], [v-cloak] > * { - display: none; + display: none; } * { - outline: 0; - margin: 0; - padding: 0; - font-family: 'Nunito', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - box-sizing: border-box; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - font-size: 16px; - text-decoration: none; - color: $text; + outline: 0; + margin: 0; + padding: 0; + font-family: 'Nunito', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-size: 16px; + text-decoration: none; + color: $text; } .vue-feather { - path, - circle, - line, - rect, - polyline, - ellipse, - polygon { - color: inherit; - } + path, + circle, + line, + rect, + polyline, + ellipse, + polygon { + color: inherit; + } } // Dark mode .dark { - * { - color: $dark_mode_text_primary; - } + * { + color: $dark_mode_text_primary; + } - body, - html { - background: $dark_mode_background; - color: $dark_mode_text_primary; + body, + html { + background: $dark_mode_background; + color: $dark_mode_text_primary; - img { - opacity: 0.95; - } - } + img { + opacity: 0.95; + } + } } diff --git a/resources/js/components/Admin/AppInputButton.vue b/resources/js/components/Admin/AppInputButton.vue index 7e41f083..674f108f 100644 --- a/resources/js/components/Admin/AppInputButton.vue +++ b/resources/js/components/Admin/AppInputButton.vue @@ -1,5 +1,8 @@