diff --git a/app/Uploads/Controllers/GalleryImageController.php b/app/Uploads/Controllers/GalleryImageController.php index fb74d6203..33d3dd74c 100644 --- a/app/Uploads/Controllers/GalleryImageController.php +++ b/app/Uploads/Controllers/GalleryImageController.php @@ -26,7 +26,7 @@ class GalleryImageController extends Controller $uploadedToFilter = $request->get('uploaded_to', null); $parentTypeFilter = $request->get('filter_type', null); - $imgData = $this->imageRepo->getEntityFiltered('gallery', $parentTypeFilter, $page, 24, $uploadedToFilter, $searchTerm); + $imgData = $this->imageRepo->getEntityFiltered('gallery', $parentTypeFilter, $page, 30, $uploadedToFilter, $searchTerm); return view('pages.parts.image-manager-list', [ 'images' => $imgData['images'], diff --git a/resources/js/components/image-manager.js b/resources/js/components/image-manager.js index b81782364..2c9c1d0cc 100644 --- a/resources/js/components/image-manager.js +++ b/resources/js/components/image-manager.js @@ -23,6 +23,7 @@ export class ImageManager extends Component { this.formContainer = this.$refs.formContainer; this.formContainerPlaceholder = this.$refs.formContainerPlaceholder; this.dropzoneContainer = this.$refs.dropzoneContainer; + this.loadMore = this.$refs.loadMore; // Instance data this.type = 'gallery'; @@ -59,12 +60,11 @@ export class ImageManager extends Component { this.loadGallery(); }); - onChildEvent(this.listContainer, '.load-more button', 'click', async event => { + onChildEvent(this.container, '.load-more button', 'click', async event => { const wrapper = event.target.closest('.load-more'); showLoading(wrapper); this.page += 1; await this.loadGallery(); - wrapper.remove(); }); this.listContainer.addEventListener('event-emit-select-image', this.onImageSelectEvent.bind(this)); @@ -145,6 +145,14 @@ export class ImageManager extends Component { addReturnedHtmlElementsToList(html) { const el = document.createElement('div'); el.innerHTML = html; + + const loadMore = el.querySelector('.load-more'); + if (loadMore) { + loadMore.remove(); + this.loadMore.innerHTML = loadMore.innerHTML; + } + this.loadMore.toggleAttribute('hidden', !loadMore); + window.$components.init(el); for (const child of [...el.children]) { this.listContainer.appendChild(child); diff --git a/resources/sass/_components.scss b/resources/sass/_components.scss index 459b41502..51d95236e 100644 --- a/resources/sass/_components.scss +++ b/resources/sass/_components.scss @@ -200,10 +200,6 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { flex: 1; } -.image-manager-body { - min-height: 70vh; -} - .dropzone-overlay { position: absolute; display: flex; @@ -347,13 +343,67 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { display: none; } +.image-manager-body { + min-height: 70vh; +} +.image-manager-filter-bar { + position: sticky; + top: 0; + z-index: 5; + background-color: rgba(255, 255, 255, 0.85); +} +.image-manager-filter-bar-bg { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .15; + z-index: -1; +} +.image-manager-filter-bar .contained-search-box { + box-shadow: $bs-med; + border-radius: 4px; + margin: $-s $-m; + overflow: hidden; + input, button { + border: 0; + } + input:focus, input:active { + border: 0; + outline: 1px dotted var(--color-primary); + } + button { + width: 48px; + color: #444; + border-left: 1px solid #DDD; + background-color: #FFF; + } +} +.image-manager-filters { + box-shadow: $bs-med; + border-radius: 4px; + margin: $-s $-m; + overflow: hidden; + border-bottom: 0 !important; + button { + line-height: 0; + background-color: #FFF; + } + svg { + margin: 0; + } +} + .image-manager-list { padding: 3px; - overflow-y: scroll; - flex: 1; display: grid; grid-template-columns: repeat( auto-fit, minmax(140px, 1fr) ); gap: 3px; + z-index: 3; + > div { + aspect-ratio: 1; + } } .image-manager-list .image { @@ -411,7 +461,6 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { } .image-manager .load-more { - display: block; text-align: center; padding: $-s $-m; clear: both; @@ -456,6 +505,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { display: flex; flex-direction: column; flex: 1; + overflow-y: scroll; .container { width: 100%; } @@ -464,18 +514,14 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { } } -.image-manager [role="tablist"] button[role="tab"] { +.tab-container.bordered [role="tablist"] button[role="tab"] { border-right: 1px solid #DDD; - @include lightDark(border-color, #DDD, #000); + @include lightDark(border-right-color, #DDD, #000); &:last-child { border-right: none; } } -.image-manager-header { - z-index: 4; -} - .tab-container [role="tablist"] { display: flex; align-items: end; @@ -486,8 +532,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { margin-bottom: $-m; } -.tab-container [role="tablist"] button[role="tab"], -.image-manager [role="tablist"] button[role="tab"] { +.tab-container [role="tablist"] button[role="tab"] { display: inline-block; padding: $-s; @include lightDark(color, rgba(0, 0, 0, .5), rgba(255, 255, 255, .5)); @@ -503,6 +548,10 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { @include lightDark(border-bottom-color, rgba(0, 0, 0, .2), rgba(255, 255, 255, .2)); } } +.tab-container.tab-primary [role="tablist"] button[role="tab"][aria-selected="true"] { + color: var(--color-primary) !important; + border-bottom-color: var(--color-primary) !important; +} .tab-container [role="tablist"].controls-card { margin-bottom: 0; border-bottom: 0; diff --git a/resources/views/pages/edit.blade.php b/resources/views/pages/edit.blade.php index 98adc849c..bdbbf8755 100644 --- a/resources/views/pages/edit.blade.php +++ b/resources/views/pages/edit.blade.php @@ -17,4 +17,9 @@ @include('pages.parts.image-manager', ['uploaded_to' => $page->id]) @include('pages.parts.code-editor') @include('entities.selector-popup') + @stop \ No newline at end of file diff --git a/resources/views/pages/parts/image-manager-list.blade.php b/resources/views/pages/parts/image-manager-list.blade.php index d666725c5..3a8a0b63b 100644 --- a/resources/views/pages/parts/image-manager-list.blade.php +++ b/resources/views/pages/parts/image-manager-list.blade.php @@ -18,6 +18,9 @@ @endforeach +@if(count($images) === 0) +

{{ trans('common.no_items') }}

+@endif @if($hasMore)
diff --git a/resources/views/pages/parts/image-manager.blade.php b/resources/views/pages/parts/image-manager.blade.php index da64d681c..53a361c27 100644 --- a/resources/views/pages/parts/image-manager.blade.php +++ b/resources/views/pages/parts/image-manager.blade.php @@ -25,39 +25,49 @@
-
-
- - - -
-
- +
+
+
+ +
+
+
+ + + +
+
+