bootstrap_italia-8.x-0.x-dev/components/components-2/modal/modal.html.twig
components/components-2/modal/modal.html.twig
{# /** * @file * Template for Modal component. * Docs: https://italia.github.io/bootstrap-italia/docs/componenti/modale/ * Latest revision: v2.8.7 * * Parameters: * - modal_title (string) (default: '') * - Modal title * - modal_body (string) (default: '') * - Modal message * - modal_label (string) (default: '') * - Modal label assistive text * - modal_description (string) (default: '') * - Modal description assistive text * - id (string) (default: modal-random) * - scrollable (boolean) (default: false) * - Enable modal scrollbar for long content * - animation (string) (default: 'fade') * - popconfirm (boolean) (dafault: false) * - Enable popconfirm feature * - dismissible (boolean) (default: true) * - Enable dismissible feature * - footer_shadow (boolean) (default: false) * - Enable shadow footer. Note: 'scrollable' enables 'footer_shadow' automatically * - modal_icon (string) (default: '') * - options 'it-icon-name' * - modal_position (string) (default: '') * - options ["centered", "left", "right"] * - modal_size (string) (default: '') * - options ["sm", "lg", "xl", "fullscreen", "fullscreen-<col>-down"] * - modal_classes (array) (default: '') * - modal_attributes (obj attribute) (default: '') * - modal_dialog_classes (array) (default: '') * - modal_dialog_attributes (obj attribute) (default: '') * - button_label (string) (default: '') * - If set show laucher button * - button_tag (string) (default: 'button') * - options ["button", "a", "span"] * - button_variant (string) (default: 'primary') * - options ["primary", "secondary", "success", "danger", "warning", "white", "dark" ] * - button_outline (boolean) (default: false) * - Enable outline * - button_size (string) (default: '') * - options ["xs", "sm", "lg"] * * - modalTitle (block) (default: modal_title) * - block for custom title * - modalBody (block) (default: modal_body) * - block for custom body * - modalFooter (block) (default: empty) * - block for custom footer * - modalButton (block) (default: button) * - block for custom button * * Note: if not set modal_title, modal_label are mandatory. * * Examples: {% embed '@bi-bcl/modal/modal.html.twig' with { variables: value, } %} {% block modalTitle %} {% endblock %} {% block modalBody %} {% endblock %} {% block modalFooter %} {% endblock %} {% endembed %} * */ #} {% apply spaceless %} {# Set defaults #} {% set _modal_title = modal_title|default('') %} {% set _modal_body = modal_body|default('') %} {% set _modal_label = modal_label|default('') %} {% set _modal_description = modal_description|default('') %} {% set _id = id|default('modal-'~random()) %} {% set _scrollable = scrollable ?? false %} {% set _animation = animation|default('fade') %} {% set _popconfirm = popconfirm ?? false %} {% set _dismissible = dismissible ?? true %} {% set _modal_icon = modal_icon|default('') %} {% set _modal_position = modal_position|default('') %} {% set _modal_size = modal_size|default('') %} {% set _footer_shadow = footer_shadow ?? false %} {% set _modal_classes = modal_classes|default('') %} {% set _modal_attributes = modal_attributes|default('') %} {% set _modal_dialog_classes = modal_dialog_classes|default('') %} {% set _modal_dialog_attributes = modal_dialog_attributes|default('') %} {% set _button_label = button_label|default('') %} {% set _button_tag = button_tag|default('button') %} {% set _button_variant = button_variant|default('primary') %} {% set _button_outline = button_outline ?? false %} {% set _button_size = button_size|default('') %} {# Set modal options #} {% set _classes = [ 'modal ', _scrollable ? 'it-dialog-scrollable', _popconfirm ? 'popconfirm-modal', _animation, _modal_icon ? 'alert-modal', ] %} {% if _modal_classes is not empty %} {% set _classes = _classes|merge(modal_classes) %} {% endif %} {% if _modal_attributes is empty %} {% set modal_attributes = create_attribute() %} {% endif %} {% set modal_attributes = modal_attributes .addClass(_classes) .setAttribute('id', _id) .setAttribute('tabindex', '-1') .setAttribute('role', 'dialog') %} {# Settings for accesibility #} {% if _modal_title is empty and _modal_label is empty %} {% set _modal_label = 'This is a message in modal dialog'|t %} {% endif %} {% if _modal_title is empty %} {% set modal_attributes = modal_attributes.setAttribute('aria-label', _modal_label) %} {% else %} {% set modal_attributes = modal_attributes.setAttribute('aria-labelledby', _id~'-title') %} {% endif %} {% if _modal_description is not empty %} {% set modal_attributes = modal_attributes.setAttribute('aria-describedby', _id~'-description') %} {% endif %} {# Set modal dialog options #} {% set _dialog_classes = [ 'modal-dialog', _modal_position ? 'modal-dialog-'~_modal_position, _modal_size ? 'modal-'~_modal_size, _modal_size == 'fullscreen' ? 'm-0' ] %} {% if _modal_dialog_classes is not empty %} {% set _dialog_classes = _dialog_classes|merge(modal_dialog_classes) %} {% endif %} {% if _modal_dialog_attributes is empty %} {% set modal_dialog_attributes = create_attribute() %} {% endif %} {% set modal_dialog_attributes = modal_dialog_attributes .addClass(_dialog_classes) .setAttribute('role', 'document') %} {# Set dismiss=true if modal_size is fullscreen #} {% if _modal_size == 'fullscreen' %} {% set _dismissible = true %} {% endif %} {# Component #} <div{{ modal_attributes }}> <div{{ modal_dialog_attributes }}> <div class="modal-content{{ _modal_size == 'fullscreen' ? ' h-100' }}"> {% if _modal_icon or _modal_title or _dismissible %} <div class="modal-header"> {% block modalIcon %} {% if _modal_icon %} {% include '@bi-bcl/icon/icon.html.twig' with { name: _modal_icon, color: 'primary', } %} {% endif %} {% endblock %} {% if _modal_title %} <h2 class="modal-title h5" id="{{ _id~'-title' }}"> {% block modalTitle %} {{ _modal_title }} {% endblock %} </h2> {% endif %} {% block modalClose %} {% if _dismissible %} <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="{{ 'Close modal dialog'|t }}"> {% include '@bi-bcl/icon/icon.html.twig' with { name: 'it-close' } %} </button> {% endif %} {% endblock %} </div> {% endif %} <div class="modal-body"> {% block modalDescription %} {% if _modal_description %} <p id="{{ _id~'-description' }}">{{ _modal_description }}</p> {% endif %} {% endblock %} {% block modalBody %} <p>{{ _modal_body }}</p> {% endblock %} </div> <div class="modal-footer{{ _scrollable or _footer_shadow ? ' modal-footer-shadow' }}"> {% block modalFooter %}{% endblock %} </div> </div> </div> </div> {% block modalButton %} {% if _button_label %} {% set button_modal_attributes = create_attribute() %} {% set button_modal_attributes = button_modal_attributes .setAttribute('data-bs-toggle', 'modal') .setAttribute('data-bs-target', '#'~_id) %} {% include '@bi-bcl/button/button.html.twig' with { label: _button_label, tag: _button_tag, variant: _button_variant, outline: _button_outline, size: _button_size, button_attributes: button_modal_attributes } %} {% endif %} {% endblock %} {% endapply %}