render()

in src/panel/widgets.tsx [85:104]


    render() {
        const {allowClear, className, items, renderItem, selection, children} = this.props;
        return !items?.length
            ? <div className={css('svList', 'svListZero', className)}>{children}</div>
            : <div tabIndex={0} className={css('svList', selection.get() && 'svSelected' ,className)}
                onClick={() => allowClear && selection.set(undefined)} onKeyDown={this.onKeyDown}>
                {(items || []).map((item, i) => {
                    const isSelected = item === selection.get();
                    return <div key={i}
                        ref={ele => {
                            if (!isSelected || !ele) return;
                            requestAnimationFrame(() => ele.scrollIntoView({ behavior: 'smooth', block: 'nearest' }));
                        }}
                        className={css('svListItem', isSelected && 'svItemSelected')}
                        onClick={e => { e.stopPropagation(); selection.set(item); }}>
                        {renderItem(item, i)}
                    </div>;
                })}
            </div>;
    }