%PDF- %PDF-
| Direktori : /home/dopla/www/wp-content/plugins/ml-slider/admin/assets/js/app/slides/external/ |
| Current File : /home/dopla/www/wp-content/plugins/ml-slider/admin/assets/js/app/slides/external/MediaContainer.vue |
<template>
<div style="height:100%">
<div class="media-toolbar">
<div class="media-toolbar-secondary">
<label
for="media-attachment-filters"
class="screen-reader-text">{{ __('Filter by type', 'ml-slider') }}</label>
<select
v-if="$parent.filters.length"
class="attachment-filters"
style="min-width:150px">
<option value="all">{{ __('All media items', 'ml-slider') }}</option>
<option
v-for="(filter, value) in $parent.filters"
:key="value"
:value="value"
>{{ filter }}</option>
</select>
<span class="spinner"/>
</div>
<div class="media-toolbar-primary search-form">
<!-- TODO: make search optional -->
<label
for="media-search-input"
class="screen-reader-text">{{ __('Search Unsplash API', 'ml-slider') }}</label>
<input
id="search-unsplash"
v-model="$parent.searchTerm"
:placeholder="__('Search unsplash.com...', 'ml-slider')"
type="search"
class="search"
@focus="notifyInfo('metaslider/unsplash-search-focused', 'Unsplash search was focused')"
@keyup="searchByTerm"
@search="searchByTerm">
</div>
</div>
<div
v-if="loading && !$parent.errorMessage"
class="attachments ui-sortable ui-sortable-disabled">
<span class="ms-full-loading">
<svg class="w-6 ms-spin" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
</svg>
</span>
</div>
<div
v-if="$parent.errorMessage"
class="external-api-error">{{ $parent.errorMessage }}
</div>
<ul
v-if="!loading && !$parent.errorMessage"
tabindex="-1"
class="attachments ui-sortable ui-sortable-disabled">
<slot name="media-list"/>
<li
v-if="$parent.canLoadMore"
class="attachment ms-load-more-api">
<div class="attachment-preview">
<span
v-if="$parent.loadingMore"
class="ms-loading-more-images">
<svg class="w-6 ms-spin" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
</svg>
</span>
<button
v-else
class="ms-load-more-button"
@click="$parent.loadMore">
<svg class="w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6" />
</svg>
<span>{{ __('Load more', 'ml-slider') }}</span>
</button>
</div>
</li>
</ul>
<div class="media-sidebar">
<div class="ms-api-sidebar">
<div class="ms-api-photo-details">
<slot name="sidebar"/>
</div>
<div class="ms-api-copyright">
<slot name="copyright"/>
</div>
</div>
</div>
</div>
</template>
<script>
import { Helpers as _ } from '../../utils'
export default {
// name: 'MediaContainer',
props: {},
data() {
return {}
},
computed: {
loading() {
return this.$parent.loadingFresh
}
},
mounted() {
// Calculte the column width in case WP skips over it
let columns = document.querySelector('.media-frame-content').dataset.columns
if (!columns) {
let width = document.querySelector('.attachments-browser .attachments').offsetWidth / 150
document.querySelector('.media-frame-content').dataset.columns = Math.round(width)
}
// add an eve
},
methods: {
searchByTerm: _.debounce(function() {
this.$parent.searchByTerm()
}, 500)
}
}
</script>
<style lang="scss">
@import '../../assets/styles/globals.scss';
@import '../../assets/styles/mixins.scss';
.ms-load-more-api {
.ms-load-more-button {
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
flex-direction: column;
width: 100%;
height: 100%;
border: 0;
padding: 0;
font-size: 1.1em;
cursor: pointer;
&:hover {
background: transparent;
}
}
}
.ms-loading-more-images {
position: absolute;
top: 0;
left: 0;
background: white;
display: flex;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
}
.external-api-error {
padding: 1rem;
color: $red;
font-size: 1.2em;
}
.ms-api-sidebar {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
.details {
a {
box-shadow: none;
}
}
.ms-api-copyright p {
margin-bottom: 0;
color: #aaa;
a {
color: #aaa;
&:hover, &:active, &:focus {
color: $wp-links;
}
}
}
}
.ms-full-loading {
display: flex;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
}
</style>