modal

    public function modal()
    {
        return _class('html')->modal([
            'inline' => 1,
            'show_close' => 1,
            'header' => 'Modal header',
            'body' => '<p>Some body</p>',
            'footer' => form_item()->save(),
        ]);
    }
    public function modal($extra = [])
    {
        if ($this->_is_bs5) {
            return $this->_bs5()->modal($extra);
        }
        $extra['id'] = ($extra['id'] ?? null) ?: __FUNCTION__ . '_' . ($this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1);
        $def_style = ($extra['inline'] ?? null) ? 'position: relative; top: auto; left: auto; right: auto; bottom: auto; margin: 0 auto 20px; z-index: 1; max-width: 100%; display: block; overflow-y: auto;' : '';
        $extra['style'] = ($extra['style'] ?? null) ?: $def_style;
        [$modal_add, $dialog_add, $modal_attrs] = $this->_modal_options_bs3($extra);
        return '
			<div class="modal' . $modal_add . '" style="' . ($extra['style'] ?? null) . '" id="' . ($extra['id'] ?? null) . '"' . $modal_attrs . '>
				<div class="modal-dialog' . $dialog_add . '">
					<div class="modal-content">
						<div class="modal-header">'
            . (($extra['show_close'] ?? null) ? '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>' : '')
            . (($extra['header'] ?? null) ? '<h3>' . ($extra['header'] ?? null) . '</h3>' : '')
            . '</div>
						<div class="modal-body">' . ($extra['body'] ?? null) . '</div>'
            . (($extra['footer'] ?? null) ? '<div class="modal-footer">' . ($extra['footer'] ?? null) . '</div>' : '') . '
					</div>
				</div>
			</div>';
    }