diff --git a/resources/js/components/page-picker.js b/resources/js/components/page-picker.js index 130972fdd..9bb0bee04 100644 --- a/resources/js/components/page-picker.js +++ b/resources/js/components/page-picker.js @@ -1,7 +1,7 @@ import {Component} from './component'; function toggleElem(elem, show) { - elem.style.display = show ? null : 'none'; + elem.toggleAttribute('hidden', !show); } export class PagePicker extends Component { @@ -21,6 +21,7 @@ export class PagePicker extends Component { setupListeners() { this.selectButton.addEventListener('click', this.showPopup.bind(this)); this.display.parentElement.addEventListener('click', this.showPopup.bind(this)); + this.display.addEventListener('click', e => e.stopPropagation()); this.resetButton.addEventListener('click', () => { this.setValue('', ''); diff --git a/resources/sass/_layout.scss b/resources/sass/_layout.scss index 94a36ecba..6c78419d8 100644 --- a/resources/sass/_layout.scss +++ b/resources/sass/_layout.scss @@ -270,10 +270,14 @@ body.flexbox { overflow: hidden; } -.fill-height { +.height-fill { height: 100%; } +.height-auto { + height: auto !important; +} + .float { float: left; &.right { diff --git a/resources/views/books/parts/form.blade.php b/resources/views/books/parts/form.blade.php index b4ca2fba5..973bae987 100644 --- a/resources/views/books/parts/form.blade.php +++ b/resources/views/books/parts/form.blade.php @@ -40,17 +40,18 @@ <label for="template-manager">{{ trans('entities.books_default_template') }}</label> </button> <div refs="collapsible@content" class="collapse-content"> - <div class="flex-container-row items-center gap-m justify-space-between pt-s pb-xs"> - <p class="text-muted small my-none"> + <div class="flex-container-row gap-l justify-space-between pb-xs wrap"> + <p class="text-muted small my-none min-width-xs flex"> {{ trans('entities.books_default_template_explain') }} </p> - - @include('form.page-picker', [ - 'name' => 'default_template_id', - 'placeholder' => trans('entities.books_default_template_select'), - 'value' => $book?->default_template_id ?? null, - ]) + <div class="min-width-m"> + @include('form.page-picker', [ + 'name' => 'default_template_id', + 'placeholder' => trans('entities.books_default_template_select'), + 'value' => $book?->default_template_id ?? null, + ]) + </div> </div> </div> diff --git a/resources/views/form/page-picker.blade.php b/resources/views/form/page-picker.blade.php index 90ce75676..d9810d575 100644 --- a/resources/views/form/page-picker.blade.php +++ b/resources/views/form/page-picker.blade.php @@ -1,13 +1,13 @@ {{--Depends on entity selector popup--}} <div component="page-picker"> - <div class="input-base overflow-hidden"> - <span @if($value) style="display: none" @endif refs="page-picker@default-display" class="text-muted italic">{{ $placeholder }}</span> - <a @if(!$value) style="display: none" @endif href="{{ url('/link/' . $value) }}" target="_blank" rel="noopener" class="text-page" refs="page-picker@display">#{{$value}}, {{$value ? \BookStack\Entities\Models\Page::query()->visible()->find($value)->name ?? '' : '' }}</a> + <div class="input-base overflow-hidden height-auto"> + <span @if($value) hidden @endif refs="page-picker@default-display" class="text-muted italic">{{ $placeholder }}</span> + <a @if(!$value) hidden @endif href="{{ url('/link/' . $value) }}" target="_blank" rel="noopener" class="text-page" refs="page-picker@display">#{{$value}}, {{$value ? \BookStack\Entities\Models\Page::query()->visible()->find($value)->name ?? '' : '' }}</a> </div> <br> <input refs="page-picker@input" type="hidden" value="{{$value}}" name="{{$name}}" id="{{$name}}"> - <button @if(!$value) style="display: none" @endif type="button" refs="page-picker@reset-button" class="text-button">{{ trans('common.reset') }}</button> - <span refs="page-picker@button-seperator" @if(!$value) style="display: none" @endif class="sep">|</span> + <button @if(!$value) hidden @endif type="button" refs="page-picker@reset-button" class="text-button">{{ trans('common.reset') }}</button> + <span refs="page-picker@button-seperator" @if(!$value) hidden @endif class="sep">|</span> <button type="button" refs="page-picker@select-button" class="text-button">{{ trans('common.select') }}</button> </div> \ No newline at end of file diff --git a/resources/views/pages/edit.blade.php b/resources/views/pages/edit.blade.php index 841b27503..58fb5f355 100644 --- a/resources/views/pages/edit.blade.php +++ b/resources/views/pages/edit.blade.php @@ -4,7 +4,7 @@ @section('content') - <div id="main-content" class="flex-fill flex fill-height"> + <div id="main-content" class="flex-fill flex height-fill"> <form action="{{ $page->getUrl() }}" autocomplete="off" data-page-id="{{ $page->id }}" method="POST" class="flex flex-fill"> {{ csrf_field() }} diff --git a/tests/Entity/EntitySearchTest.php b/tests/Entity/EntitySearchTest.php index fbb47226e..7841a255e 100644 --- a/tests/Entity/EntitySearchTest.php +++ b/tests/Entity/EntitySearchTest.php @@ -252,6 +252,31 @@ class EntitySearchTest extends TestCase $this->withHtml($resp)->assertElementContains($baseSelector, "You don't have the required permissions to select this item"); } + public function test_entity_template_selector_search() + { + $templatePage = $this->entities->newPage(['name' => 'Template search test', 'html' => 'template test']); + $templatePage->template = true; + $templatePage->save(); + + $nonTemplatePage = $this->entities->newPage(['name' => 'Nontemplate page', 'html' => 'nontemplate', 'template' => false]); + + // Visit both to make popular + $this->asEditor()->get($templatePage->getUrl()); + $this->asEditor()->get($nonTemplatePage->getUrl()); + + $normalSearch = $this->get('/search/entity-selector-templates?term=test'); + $normalSearch->assertSee($templatePage->name); + $normalSearch->assertDontSee($nonTemplatePage->name); + + $normalSearch = $this->get('/search/entity-selector-templates?term=beans'); + $normalSearch->assertDontSee($templatePage->name); + $normalSearch->assertDontSee($nonTemplatePage->name); + + $defaultListTest = $this->get('/search/entity-selector-templates'); + $defaultListTest->assertSee($templatePage->name); + $defaultListTest->assertDontSee($nonTemplatePage->name); + } + public function test_sibling_search_for_pages() { $chapter = $this->entities->chapterHasPages();