cover into modal; add Dashboard js app
This commit is contained in:
		
							
								
								
									
										36
									
								
								assets/src/components/AModal.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								assets/src/components/AModal.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
<template>
 | 
			
		||||
    <section :class="['modal', active && 'is-active' || '']">
 | 
			
		||||
        <div class="modal-background" @click="close"></div>
 | 
			
		||||
        <div class="modal-card">
 | 
			
		||||
            <header class="modal-card-head">
 | 
			
		||||
                <div class="modal-card-title">
 | 
			
		||||
                    <slot name="title">{{ title }}</slot>
 | 
			
		||||
                </div>
 | 
			
		||||
            </header>
 | 
			
		||||
            <section class="modal-card-body">
 | 
			
		||||
                <slot name="default"></slot>
 | 
			
		||||
            </section>
 | 
			
		||||
            <div class="modal-card-foot align-right">
 | 
			
		||||
                <slot name="footer" :close="close"></slot>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </section>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
    props: {
 | 
			
		||||
        title: { type: String, default: ""},
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    data() {
 | 
			
		||||
        return {
 | 
			
		||||
            active: false,
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
        open() { this.active = true; },
 | 
			
		||||
        close() { this.active = false; },
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
@ -1,18 +1,20 @@
 | 
			
		||||
import AAutocomplete from './AAutocomplete.vue'
 | 
			
		||||
import ACarousel from './ACarousel.vue'
 | 
			
		||||
import ADropdown from "./ADropdown.vue"
 | 
			
		||||
import AEpisode from './AEpisode.vue'
 | 
			
		||||
import AList from './AList.vue'
 | 
			
		||||
import APage from './APage.vue'
 | 
			
		||||
import APlayer from './APlayer.vue'
 | 
			
		||||
import APlaylist from './APlaylist.vue'
 | 
			
		||||
import APlaylistEditor from './APlaylistEditor.vue'
 | 
			
		||||
import AProgress from './AProgress.vue'
 | 
			
		||||
import ASoundItem from './ASoundItem.vue'
 | 
			
		||||
import ASwitch from './ASwitch.vue'
 | 
			
		||||
import AStatistics from './AStatistics.vue'
 | 
			
		||||
import AStreamer from './AStreamer.vue'
 | 
			
		||||
import ASelectFile from "./ASelectFile.vue"
 | 
			
		||||
import AAutocomplete from './AAutocomplete'
 | 
			
		||||
import ACarousel from './ACarousel'
 | 
			
		||||
import ADropdown from "./ADropdown"
 | 
			
		||||
import AEpisode from './AEpisode'
 | 
			
		||||
import AList from './AList'
 | 
			
		||||
import APage from './APage'
 | 
			
		||||
import APlayer from './APlayer'
 | 
			
		||||
import APlaylist from './APlaylist'
 | 
			
		||||
import APlaylistEditor from './APlaylistEditor'
 | 
			
		||||
import AProgress from './AProgress'
 | 
			
		||||
import ASoundItem from './ASoundItem'
 | 
			
		||||
import ASwitch from './ASwitch'
 | 
			
		||||
import AStatistics from './AStatistics'
 | 
			
		||||
import AStreamer from './AStreamer'
 | 
			
		||||
 | 
			
		||||
import AModal from "./AModal"
 | 
			
		||||
import ASelectFile from "./ASelectFile"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Core components
 | 
			
		||||
@ -20,7 +22,7 @@ import ASelectFile from "./ASelectFile.vue"
 | 
			
		||||
export const base = {
 | 
			
		||||
    AAutocomplete, ACarousel, ADropdown, AEpisode, AList, APage, APlayer, APlaylist,
 | 
			
		||||
    AProgress, ASoundItem, ASwitch,
 | 
			
		||||
    ASelectFile,
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default base
 | 
			
		||||
@ -29,3 +31,8 @@ export const admin = {
 | 
			
		||||
    ...base,
 | 
			
		||||
    AStatistics, AStreamer, APlaylistEditor
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const dashboard = {
 | 
			
		||||
    ...base,
 | 
			
		||||
    ASelectFile, AModal, APlaylistEditor,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								assets/src/dashboard.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								assets/src/dashboard.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
import './styles/admin.scss'
 | 
			
		||||
import './index.js'
 | 
			
		||||
 | 
			
		||||
import App from './app';
 | 
			
		||||
import {dashboard as components} from './components'
 | 
			
		||||
 | 
			
		||||
const AdminApp = {
 | 
			
		||||
    ...App,
 | 
			
		||||
    components: {...App.components, ...components},
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
        ...App.methods,
 | 
			
		||||
 | 
			
		||||
        fileSelected(select, cover, input, modal) {
 | 
			
		||||
            console.log("file!")
 | 
			
		||||
            const item = this.$refs[select].item
 | 
			
		||||
            if(item) {
 | 
			
		||||
                this.$refs[cover].src = item.file
 | 
			
		||||
                this.$refs[input].value = item.id
 | 
			
		||||
                modal && this.$refs[modal].close()
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
export default AdminApp;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
window.App = AdminApp
 | 
			
		||||
@ -13,7 +13,6 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.admin {
 | 
			
		||||
 | 
			
		||||
    .navbar.has-shadow, .navbar.is-fixed-bottom.has-shadow {
 | 
			
		||||
        box-shadow: 0em 0em 1em rgba(0,0,0,0.1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -138,9 +138,12 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ---- panels
 | 
			
		||||
.panels {
 | 
			
		||||
    .panel:not(.active) { display: none; }
 | 
			
		||||
// ---- bulma overrides
 | 
			
		||||
.modal-card {
 | 
			
		||||
    max-width: v.$screen-wide;
 | 
			
		||||
}
 | 
			
		||||
.modal-card {
 | 
			
		||||
    max-height: calc(100% - 10rem);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ---- button
 | 
			
		||||
@ -718,8 +721,6 @@
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .a-select-file-list {
 | 
			
		||||
        max-height: 30rem;
 | 
			
		||||
        overflow-y: auto;
 | 
			
		||||
        display: grid;
 | 
			
		||||
        grid-template-columns: 1fr 1fr 1fr 1fr;
 | 
			
		||||
        gap: v.$mp-3;
 | 
			
		||||
 | 
			
		||||
@ -388,7 +388,7 @@ nav li {
 | 
			
		||||
.header-cover:not(:only-child) {
 | 
			
		||||
    float: right;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    z-index: 1000;
 | 
			
		||||
    z-index: 30;
 | 
			
		||||
    background-color: var(--body-bg);
 | 
			
		||||
    margin: 0 0 v.$mp-4 v.$mp-4;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@
 | 
			
		||||
// ---- bulma
 | 
			
		||||
$body-color: #000;
 | 
			
		||||
$title-color: #000;
 | 
			
		||||
$modal-content-width: 80%;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@import "~bulma/sass/utilities/_all.sass";
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ module.exports = defineConfig({
 | 
			
		||||
 | 
			
		||||
    pages: {
 | 
			
		||||
        public: { entry: 'src/public.js' },
 | 
			
		||||
        dashboard: { entry: 'src/dashboard.js' },
 | 
			
		||||
        admin: { entry: 'src/admin.js' },
 | 
			
		||||
    }
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user