|
| 1 | +{% import '@RoadizRozier/macros/element_attributes.html.twig' as el_attrs %} |
| 2 | +{% import '@RoadizRozier/macros/element_attributes.html.twig' as el_attrs %} |
| 3 | +{% import '@RoadizRozier/macros/rz_button.html.twig' as rz_button %} |
| 4 | + |
| 5 | +{% set items = items|default([]) %} |
| 6 | +{% set visible_count = visibleCount|default(0) %} |
| 7 | +{% if visible_count is not null %} |
| 8 | + {% set visible_count = visible_count %} |
| 9 | +{% else %} |
| 10 | + {% set visible_count = 0 %} |
| 11 | +{% endif %} |
| 12 | + |
| 13 | +{% set popover = popover|default({}) %} |
| 14 | +{% set popover_id = popover.id|default('rz-overflow-' ~ random()) %} |
| 15 | +{% set placement = popover.placement|default('bottom-start') %} |
| 16 | +{% set offset = popover.offset|default('8') %} |
| 17 | +{% set shift = popover.shift|default(null) %} |
| 18 | +{% set popover_tag_list = popover.tagList|default('div') %} |
| 19 | +{% set popover_attributes = popover.attributes|default({}) %} |
| 20 | +{% set popover_class = html_classes( |
| 21 | + 'rz-overflow-list__popover', |
| 22 | + popover.class|default(''), |
| 23 | + popover_attributes.class|default('') |
| 24 | +) %} |
| 25 | +{% set popover_attributes = popover_attributes|merge({ |
| 26 | + class: popover_class, |
| 27 | +}) %} |
| 28 | + |
| 29 | +{% set button = button|default({}) %} |
| 30 | +{% set button_attributes = button.attributes|default({})|merge({ |
| 31 | + type: 'button', |
| 32 | + popovertarget: popover_id, |
| 33 | + 'aria-label': button.ariaLabel|default('more')|trans, |
| 34 | +}) %} |
| 35 | + |
| 36 | +{% set wrapper_attributes = wrapperAttributes|default({}) %} |
| 37 | +{% set wrapper_class = html_classes( |
| 38 | + 'rz-overflow-list', |
| 39 | + wrapperClass|default(''), |
| 40 | + wrapper_attributes.class|default('') |
| 41 | +) %} |
| 42 | +{% set wrapper_attributes = wrapper_attributes|merge({ |
| 43 | + class: wrapper_class, |
| 44 | +}) %} |
| 45 | + |
| 46 | +{% set overflow_button_class = html_classes( |
| 47 | + 'rz-overflow-list__button', |
| 48 | + button.class|default('') |
| 49 | +) %} |
| 50 | + |
| 51 | +{% set visible_items = items|slice(0, visible_count) %} |
| 52 | +{% set overflow_items = items|slice(visible_count) %} |
| 53 | +{% set item_template = itemTemplate|default(null) %} |
| 54 | +{% set item_template_context = itemTemplateContext|default({}) %} |
| 55 | +{% set wrapperTag = wrapperTag|default('div') %} |
| 56 | + |
| 57 | +{% block item %}{% endblock %} |
| 58 | + |
| 59 | +<{{ wrapperTag }} |
| 60 | + {{ el_attrs.print(wrapper_attributes) }} |
| 61 | +> |
| 62 | + {% for loop_item in visible_items %} |
| 63 | + {% if item_template %} |
| 64 | + {{ include(item_template, item_template_context|merge({ item: loop_item })) }} |
| 65 | + {% else %} |
| 66 | + {% with { item: loop_item } %} |
| 67 | + {{ block('item') }} |
| 68 | + {% endwith %} |
| 69 | + {% endif %} |
| 70 | + {% endfor %} |
| 71 | + |
| 72 | + {% if overflow_items|length > 0 %} |
| 73 | + <rz-popover |
| 74 | + {% if shift is not null %}popover-shift="{{ shift }}"{% endif %} |
| 75 | + popover-placement="{{ placement }}" |
| 76 | + popover-offset="{{ offset }}" |
| 77 | + > |
| 78 | + {{ rz_button.root(button|merge({ |
| 79 | + icon: button.icon|default('rz-icon-ri--more-line'), |
| 80 | + size: button.size|default('sm'), |
| 81 | + emphasis: button.emphasis|default('tertiary'), |
| 82 | + class: overflow_button_class, |
| 83 | + attributes: button_attributes, |
| 84 | + })) }} |
| 85 | + |
| 86 | + <div |
| 87 | + id="{{ popover_id }}" |
| 88 | + popover |
| 89 | + {{ el_attrs.print(popover_attributes) }} |
| 90 | + > |
| 91 | + <{{ popover_tag_list }} class="rz-overflow-list__list"> |
| 92 | + {% for loop_item in overflow_items %} |
| 93 | + {% if item_template %} |
| 94 | + {{ include(item_template, item_template_context|merge({ item: loop_item })) }} |
| 95 | + {% else %} |
| 96 | + {% with { item: loop_item } %} |
| 97 | + {{ block('item') }} |
| 98 | + {% endwith %} |
| 99 | + {% endif %} |
| 100 | + {% endfor %} |
| 101 | + </{{ popover_tag_list }}> |
| 102 | + </div> |
| 103 | + </rz-popover> |
| 104 | + {% endif %} |
| 105 | +</{{ wrapperTag }}> |
0 commit comments