[TikiWiki-commits] [Git][tikiwiki/tiki][master] [ENH][UX] Object selector: add a scrollable container for the search results...
"Adrien Mbuya Maloba \(@adrienmaloba\) via TikiWiki-cvs" <[email protected]> Fri, 24 Jul 2026 22:12:30 +0000
| Newsgroups | gmane.comp.cms.tiki.cvs |
|---|---|
| Message-ID | <6a63e34eb2d27_3819d2f065057@gitlab-sidekiq-low-urgency-cpu-bound-v2-7d8cd68bcd-5svkf.mail> |
Adrien Mbuya Maloba pushed to branch master at Tiki Wiki CMS Groupware / Tiki
Commits:
d0be4a02 by NasserNgandu at 2026-07-25T00:55:13+03:00
[ENH][UX] Object selector: add a scrollable container for the search results of the object selector widget
---
* [ENH] Setting a maximum height for the search results of the object selector widget.
See merge request tikiwiki/tiki!10643
- - - - -
4 changed files:
- templates/object_selector.tpl
- templates/object_selector_multi.tpl
- templates/object_selector_multi_extra.tpl
- themes/base_files/scss/_tiki-search.scss
Changes:
=====================================
templates/object_selector.tpl
=====================================
@@ -52,25 +52,27 @@
</div>
</div>
<div class="card-body">
- <div class="results">
- <p class="too-many">{tr}Search and select what you are looking for from the options that appear.{/tr}</p>
- <div class="form-check">
- <input name="{$object_selector.id|escape}_sel" class="form-check-input protected" type="radio" value="" {if ! $object_selector.current_selection} checked="checked" {/if} value="" id="{$object_selector.id|escape}_sel_empty">
- <label class="form-check-label" for="{$object_selector.id|escape}_sel_empty">—</label>
- </div>
- {if !empty($object_selector.current_selection)}
+ <div class="object-selector-result-scroll">
+ <div class="results">
+ <p class="too-many">{tr}Search and select what you are looking for from the options that appear.{/tr}</p>
<div class="form-check">
- <input type="radio" class="form-check-input" checked="checked" value="{$object_selector.current_selection|escape}" name="{$object_selector.id|escape}_sel" id="{$object_selector.id|escape}_sel_selected">
- <label class="form-check-label" for="{$object_selector.id|escape}_sel_selected">
- {$object_selector.current_selection.title|escape}
- {if !empty($object_selector.current_selection.metadata)}
- <a href="{bootstrap_modal controller=tracker action=update_item trackerId=$object_selector.current_selection.metadata.trackerId itemId=$object_selector.current_selection.metadata.itemId skipRefresh=1 size='modal-lg'}" title="edit metadata"|tra class="btn btn-link">{icon name="clipboard-list"}</a>
- {elseif $object_selector.relationshipTrackerId}
- <a href="{bootstrap_modal controller=tracker action=insert_item trackerId=$object_selector.relationshipTrackerId skipRefresh=1 refreshMeta=$object_selector.name refreshObject=$object_selector.current_selection|escape size='modal-lg'}" title="add metadata"|tra class="btn btn-link metadata-insert-item" data-object="{$object_selector.current_selection|escape}">{icon name="clipboard-list"}</a>
- {/if}
- </label>
+ <input name="{$object_selector.id|escape}_sel" class="form-check-input protected" type="radio" value="" {if ! $object_selector.current_selection} checked="checked" {/if} value="" id="{$object_selector.id|escape}_sel_empty">
+ <label class="form-check-label" for="{$object_selector.id|escape}_sel_empty">—</label>
</div>
- {/if}
+ {if !empty($object_selector.current_selection)}
+ <div class="form-check">
+ <input type="radio" class="form-check-input" checked="checked" value="{$object_selector.current_selection|escape}" name="{$object_selector.id|escape}_sel" id="{$object_selector.id|escape}_sel_selected">
+ <label class="form-check-label" for="{$object_selector.id|escape}_sel_selected">
+ {$object_selector.current_selection.title|escape}
+ {if !empty($object_selector.current_selection.metadata)}
+ <a href="{bootstrap_modal controller=tracker action=update_item trackerId=$object_selector.current_selection.metadata.trackerId itemId=$object_selector.current_selection.metadata.itemId skipRefresh=1 size='modal-lg'}" title="edit metadata"|tra class="btn btn-link">{icon name="clipboard-list"}</a>
+ {elseif $object_selector.relationshipTrackerId}
+ <a href="{bootstrap_modal controller=tracker action=insert_item trackerId=$object_selector.relationshipTrackerId skipRefresh=1 refreshMeta=$object_selector.name refreshObject=$object_selector.current_selection|escape size='modal-lg'}" title="add metadata"|tra class="btn btn-link metadata-insert-item" data-object="{$object_selector.current_selection|escape}">{icon name="clipboard-list"}</a>
+ {/if}
+ </label>
+ </div>
+ {/if}
+ </div>
</div>
<p class="no-results d-none">
{tr}No matching results.{/tr}
=====================================
templates/object_selector_multi.tpl
=====================================
@@ -51,23 +51,25 @@
<b class="text-warning">{tr}Please note:{/tr}</b>
{tr}Depending on your current Tiki configuration you might not see all the options available. Adjust the 'Object selector threshold' in the 'Pagination' settings to show them all.{/tr}
</p>
- <div class="results">
- {foreach from=$object_selector_multi.current_selection item=object name=ix}
- <div class="form-check">
- <input id="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}" class="form-check-input" type="checkbox" value="{$object|escape}" checked>
- <label class="form-check-label" for="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}">
- {if $object|substring:0:11 eq 'trackeritem'}
- {tracker_item_status_icon item=$object|substring:12}
- {/if}
- {$object->getTitle($object_selector_multi.format)|escape}
- {if isset($object.metadata) && $object.metadata}
- <a href="{bootstrap_modal controller=tracker action=update_item trackerId=$object.metadata.trackerId itemId=$object.metadata.itemId skipRefresh=1 size='modal-lg'}" title="edit metadata"|tra class="btn btn-link">{icon name="clipboard-list"}</a>
- {elseif $object_selector_multi.relationshipTrackerId}
- <a href="{bootstrap_modal controller=tracker action=insert_item trackerId=$object_selector_multi.relationshipTrackerId skipRefresh=1 refreshMeta=$object_selector_multi.name refreshObject=$object|escape size='modal-lg'}" title="add metadata"|tra class="btn btn-link metadata-insert-item" data-object="{$object|escape}">{icon name="clipboard-list"}</a>
- {/if}
- </label>
- </div>
- {/foreach}
+ <div class="object-selector-result-scroll">
+ <div class="results">
+ {foreach from=$object_selector_multi.current_selection item=object name=ix}
+ <div class="form-check">
+ <input id="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}" class="form-check-input" type="checkbox" value="{$object|escape}" checked>
+ <label class="form-check-label" for="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}">
+ {if $object|substring:0:11 eq 'trackeritem'}
+ {tracker_item_status_icon item=$object|substring:12}
+ {/if}
+ {$object->getTitle($object_selector_multi.format)|escape}
+ {if isset($object.metadata) && $object.metadata}
+ <a href="{bootstrap_modal controller=tracker action=update_item trackerId=$object.metadata.trackerId itemId=$object.metadata.itemId skipRefresh=1 size='modal-lg'}" title="edit metadata"|tra class="btn btn-link">{icon name="clipboard-list"}</a>
+ {elseif $object_selector_multi.relationshipTrackerId}
+ <a href="{bootstrap_modal controller=tracker action=insert_item trackerId=$object_selector_multi.relationshipTrackerId skipRefresh=1 refreshMeta=$object_selector_multi.name refreshObject=$object|escape size='modal-lg'}" title="add metadata"|tra class="btn btn-link metadata-insert-item" data-object="{$object|escape}">{icon name="clipboard-list"}</a>
+ {/if}
+ </label>
+ </div>
+ {/foreach}
+ </div>
</div>
<p class="no-results d-none">
{tr}No matching results.{/tr}
=====================================
templates/object_selector_multi_extra.tpl
=====================================
@@ -35,13 +35,15 @@
</div>
<div class="card-body">
<p class="too-many">{tr}Search and select what you are looking for from the options that appear.{/tr}</p>
- <div class="results">
- {foreach from=$object_selector_multi.current_selection item=object name=ix}
- <div class="form-check">
- <input id="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}" class="form-check-input" type="checkbox" value="{$object|escape}" checked>
- <label class="form-check-label" for="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}">{$object.title|escape}</label>
- </div>
- {/foreach}
+ <div class="object-selector-result-scroll">
+ <div class="results">
+ {foreach from=$object_selector_multi.current_selection item=object name=ix}
+ <div class="form-check">
+ <input id="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}" class="form-check-input" type="checkbox" value="{$object|escape}" checked>
+ <label class="form-check-label" for="{$object_selector_multi.id|escape}_selected_{$smarty.foreach.ix.index}">{$object.title|escape}</label>
+ </div>
+ {/foreach}
+ </div>
</div>
<p class="no-results d-none">
{tr}No matching results.{/tr}
=====================================
themes/base_files/scss/_tiki-search.scss
=====================================
@@ -7,6 +7,10 @@
.searchresults li {
margin: 10px 0 0;
}
+.object-selector-result-scroll {
+ max-height: 80vh;
+ overflow-y: auto;
+}
.search-with-facets {
&::after {
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/d0be4a02b5450238b49ec9ff5cfb79aaff462468
--
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/d0be4a02b5450238b49ec9ff5cfb79aaff462468
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help
_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs