public function list_group()
{
return _class('html')->list_group([
'First line',
[
'body' => 'Cras justo odio',
'badge' => '14',
],
[
'body' => 'Dapibus ac facilisis in',
'badge' => '2',
'class_item' => 'active',
],
[
'body' => 'Morbi leo risus',
'badge' => '1',
'class_item' => 'list-group-item-warning',
],
]);
}
public function list_group($data = [], $extra = [])
{
if ($this->_is_bs5) {
return $this->_bs5()->list_group($data, $extra);
}
$extra['id'] = ($extra['id'] ?? null) ?: __FUNCTION__ . '_' . ($this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1);
$has_links = $this->_list_group_has_links($data);
$bs4 = $this->_is_bs4();
$items = [];
foreach ((array) $data as $v) {
if ( ! is_array($v)) {
$body = $v;
$v = [];
} else {
$body = ($v['body'] ?? null);
}
$type = ($v['type'] ?? null) ?: ($extra['type'] ?? null);
$class_item = ($v['class_item'] ?? null) ?: ($extra['class_item'] ?? null);
$state = $this->_list_group_item_state($v, $extra, $bs4 ? 'bs4' : 'bs3');
if ( ! $has_links && $state === null) {
$items[] = '<li class="list-group-item' . ($class_item ? ' ' . $class_item : '') . '"><span class="badge">' . ($v['badge'] ?? null) . '</span> ' . $body . '</li>';
continue;
}
$state ??= ['link' => null, 'class' => '', 'attrs' => []];
$tag = $has_links ? ($state['link'] !== null ? 'a' : 'div') : 'li';
$a = ['href' => $state['link'] ?? '', 'class' => trim('list-group-item' . $state['class'] . ' ' . $class_item)] + $state['attrs'];
$items[] = '<' . $tag . $this->_b4_attrs($a) . '><span class="badge">' . ($v['badge'] ?? null) . '</span> ' . $body . '</' . $tag . '>';
}
$tag = $has_links ? 'div' : ( ! empty($extra['numbered']) ? 'ol' : 'ul');
$class = ($bs4 && ! empty($extra['flush']) ? ' list-group-flush' : '') . (($extra['class'] ?? null) ? ' ' . ($extra['class'] ?? null) : '');
return '<' . $tag . ' class="list-group' . $class . '" id="' . ($extra['id'] ?? null) . '">' . implode(PHP_EOL, (array) $items) . '</' . $tag . '>';
}