Skip to content

Commit

Permalink
IBX-9628: ellipsized details content
Browse files Browse the repository at this point in the history
  • Loading branch information
tischsoic committed Feb 24, 2025
1 parent 734e5b3 commit 6db1bce
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/bundle/Resources/encore/ibexa.js.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const layout = [
path.resolve(__dirname, '../public/js/scripts/button.prevent.default.js'),
path.resolve(__dirname, '../public/js/scripts/toggle.button.state.toggle.js'),
path.resolve(__dirname, '../public/js/scripts/split.btns.js'),
path.resolve(__dirname, '../public/js/scripts/details.js'),
path.resolve(__dirname, '../public/js/scripts/udw/browse.js'),
path.resolve(__dirname, '../public/js/scripts/admin.multilevel.popup.menu.js'),
path.resolve(__dirname, '../public/js/scripts/admin.user.menu.js'),
Expand Down
3 changes: 3 additions & 0 deletions src/bundle/Resources/public/img/ibexa-icons.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions src/bundle/Resources/public/img/icons/arrow-down.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions src/bundle/Resources/public/js/scripts/details.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
(function (global, doc) {
const showMoreBtns = doc.querySelectorAll('.ibexa-details__show-more-btn');
const toggleShowMore = (ellipsizedContent, showMoreBtn) => {
const showMoreIcon = showMoreBtn.querySelector('.ibexa-details__show-more-btn-icon');
const showMoreLabel = showMoreBtn.querySelector('.ibexa-details__show-more-label');
const showLessLabel = showMoreBtn.querySelector('.ibexa-details__show-less-label');

ellipsizedContent.classList.toggle('ibexa-details__item-content--ellipsized');

showMoreLabel.classList.toggle('ibexa-details__show-more-label--hidden');
showLessLabel.classList.toggle('ibexa-details__show-less-label--hidden');
showMoreIcon.classList.toggle('ibexa-details__show-more-btn-icon--opened')
showMoreBtn.classList.toggle('ibexa-details__show-more-btn--opened');

};

showMoreBtns.forEach((showMoreBtn) => {
const contentWrapper = showMoreBtn.closest('.ibexa-details__item-content-wrapper');
const ellipsizedContent = contentWrapper.querySelector('.ibexa-details__item-content');
const isEllipsized = ellipsizedContent.offsetWidth < ellipsizedContent.scrollWidth;

showMoreBtn.classList.toggle('ibexa-details__show-more-btn--hidden', !isEllipsized);

showMoreBtn.addEventListener('click', () => toggleShowMore(ellipsizedContent, showMoreBtn), false);
});
})(window, document);
38 changes: 38 additions & 0 deletions src/bundle/Resources/public/scss/_details.scss
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,44 @@
.ibexa-dropdown {
margin-left: 0;
}

&--ellipsized {
white-space: nowrap;
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
}
}

&__item-content-wrapper {
display: flex;
flex-direction: column;
overflow: hidden;
}

&__show-more-btn {
display: flex;
align-items: center;
padding-left: 0;
}

&__show-more-label,
&__show-less-label {
&--hidden {
display: none;
}
}

&__show-more-btn-icon {
&--opened {
transform: rotate(-180deg);
}

&.ibexa-icon {
margin-left: calculateRem(12px);
margin-right: 0;
transition: all $ibexa-admin-transition-duration $ibexa-admin-transition;
}
}

&__header {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,46 @@
(is_field_empty ? ' ibexa-details__item--hidden') }}"
>
<div class="ibexa-details__item-label {{ item_inline|default(false) ? '' : 'ibexa-label' }}">{{ item.label }}</div>
<div class="ibexa-details__item-content">
{% if item.content_raw is defined %}
{{ item.content_raw|raw }}
{% elseif item.content == 'undefined' %}
-
{% else %}
{{ item.content }}
<div class="ibexa-details__item-content-wrapper">
<div class="
ibexa-details__item-content
{{ item.is_ellipsized|default(false) ? 'ibexa-details__item-content--ellipsized' }}"
>
{% if item.content_raw is defined %}
{{ item.content_raw|raw }}
{% elseif item.content == 'undefined' %}
-
{% else %}
{{ item.content }}
{% endif %}
</div>
{% if item.is_ellipsized|default(false) %}
<div class="ibexa-details__item-content-actions">
<button
type="button"
class="
btn ibexa-btn ibexa-btn--small ibexa-btn--ghost
ibexa-details__show-more-btn ibexa-details__show-more-btn--hidden"
>
<span class="ibexa-btn__label ibexa-details__show-more-label">
{{ 'details.show_more.label'|trans()|desc('Show more') }}
</span>
<span
class="
ibexa-btn__label
ibexa-details__show-less-label ibexa-details__show-less-label--hidden"
>
{{ 'details.show_less.label'|trans()|desc('Show less') }}
</span>
<svg
class="
ibexa-icon ibexa-icon--tiny-small
ibexa-details__show-more-btn-icon"
>
<use xlink:href="{{ ibexa_icon_path('arrow-down') }}"></use>
</svg>
</button>
</div>
{% endif %}
</div>
</div>
Expand Down

0 comments on commit 6db1bce

Please sign in to comment.