list_group

    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 . '>';
    }
  • First line
  • 14 Cras justo odio
  • 2 Dapibus ac facilisis in
  • 1 Morbi leo risus