brick-0.18: A declarative terminal user interface library

Safe Haskell | None
Language | Haskell2010

Brick.Widgets.List

Contents

- Constructing a list
- Rendering a list
- Handling events
- Lenses
- Manipulating a list
- Attributes

Description

This module provides a scrollable list type and functions for manipulating and rendering it.

Synopsis

- data List n e
- list :: n -> Vector e -> Int -> List n e
- renderList :: (Ord n, Show n) => (Bool -> e -> Widget n) -> Bool -> List n e -> Widget n
- handleListEvent :: Ord n => Event -> List n e -> EventM n (List n e)
- listElementsL :: forall n e e. Lens (List n e) (List n e) (Vector e) (Vector e)
- listSelectedL :: forall n e. Lens' (List n e) (Maybe Int)
- listNameL :: forall n e n. Lens (List n e) (List n e) n n
- listItemHeightL :: forall n e. Lens' (List n e) Int
- listMoveBy :: Int -> List n e -> List n e
- listMoveTo :: Int -> List n e -> List n e
- listMoveUp :: List n e -> List n e
- listMoveDown :: List n e -> List n e
- listInsert :: Int -> e -> List n e -> List n e
- listRemove :: Int -> List n e -> List n e
- listReplace :: Vector e -> Maybe Int -> List n e -> List n e
- listSelectedElement :: List n e -> Maybe (Int, e)
- listClear :: List n e -> List n e
- listReverse :: List n e -> List n e
- listModify :: (e -> e) -> List n e -> List n e
- listAttr :: AttrName
- listSelectedAttr :: AttrName
- listSelectedFocusedAttr :: AttrName

# Documentation

data List n e Source #

List state. Lists have an element type `e` that is the data stored by the list. Lists handle the following events by default:

- Up/down arrow keys: move cursor of selected item
- Page up / page down keys: move cursor of selected item by one page at a time (based on the number of items shown)
- Home/end keys: move cursor of selected item to beginning or end of list

Instances

Functor (List n) Source # |
Methods fmap :: (a -> b) -> List n a -> List n b # (<$) :: a -> List n b -> List n a #
Foldable (List n) Source # |

Methods

fold :: Monoid m => List n m -> m #

foldMap :: Monoid m => (a -> m) -> List n a -> m #

foldr :: (a -> b -> b) -> b -> List n a -> b #

foldr' :: (a -> b -> b) -> b -> List n a -> b #

foldl :: (b -> a -> b) -> b -> List n a -> b #

foldl' :: (b -> a -> b) -> b -> List n a -> b #

foldr1 :: (a -> a -> a) -> List n a -> a #

foldl1 :: (a -> a -> a) -> List n a -> a #

toList :: List n a -> [a] #

null :: List n a -> Bool #

length :: List n a -> Int #

elem :: Eq a => a -> List n a -> Bool #

maximum :: Ord a => List n a -> a #

minimum :: Ord a => List n a -> a #

sum :: Num a => List n a -> a #

product :: Num a => List n a -> a #

Traversable (List n) Source # |
Methods traverse :: Applicative f => (a -> f b) -> List n a -> f (List n b) # sequenceA :: Applicative f => List n (f a) -> f (List n a) # mapM :: Monad m => (a -> m b) -> List n a -> m (List n b) # sequence :: Monad m => List n (m a) -> m (List n a) #
(Show n, Show e) => Show (List n e) Source # |
Methods showsPrec :: Int -> List n e -> ShowS # show :: List n e -> String # showList :: [List n e] -> ShowS #
Named (List n e) n Source # |
Methods getName :: List n e -> n Source #

# Constructing a list

list Source #

Arguments

:: n | The list name (must be unique)
-> Vector e | The initial list contents
-> Int | The list item height in rows (all list item widgets must be this high)
-> List n e |

Construct a list in terms of an element type `e`.

# Rendering a list

renderList Source #

Arguments

:: (Ord n, Show n) |
=> (Bool -> e -> Widget n) | Rendering function, True for the selected element
-> Bool | Whether the list has focus
-> List n e | The List to be rendered
-> Widget n | rendered widget

Turn a list state value into a widget given an item drawing function.

# Handling events

handleListEvent :: Ord n => Event -> List n e -> EventM n (List n e) Source #

# Lenses

listElementsL :: forall n e e. Lens (List n e) (List n e) (Vector e) (Vector e) Source #

listSelectedL :: forall n e. Lens' (List n e) (Maybe Int) Source #

listNameL :: forall n e n. Lens (List n e) (List n e) n n Source #

listItemHeightL :: forall n e. Lens' (List n e) Int Source #

# Manipulating a list

listMoveBy :: Int -> List n e -> List n e Source #

Move the list selected index by the specified amount, subject to validation.

listMoveTo :: Int -> List n e -> List n e Source #

Set the selected index for a list to the specified index, subject to validation.

listMoveUp :: List n e -> List n e Source #

Move the list selected index up by one. (Moves the cursor up, subtracts one from the index.)

listMoveDown :: List n e -> List n e Source #

Move the list selected index down by one. (Moves the cursor down, adds one to the index.)

listInsert Source #

Arguments

:: Int | The position at which to insert (0 <= i <= size)
-> e | The element to insert
-> List n e |
-> List n e |

Insert an item into a list at the specified position.

listRemove Source #

Arguments

:: Int | The position at which to remove an element (0 <= i < size)
-> List n e |
-> List n e |

Remove an element from a list at the specified position.

listReplace :: Vector e -> Maybe Int -> List n e -> List n e Source #

Replace the contents of a list with a new set of elements and update the new selected index. If the list is empty, empty selection is used instead. Otherwise, if the specified selected index (via `Just`) is not in the list bounds, zero is used instead.

listSelectedElement :: List n e -> Maybe (Int, e) Source #

Return a list's selected element, if any.

listClear :: List n e -> List n e Source #

Remove all elements from the list and clear the selection.

listReverse :: List n e -> List n e Source #

Reverse the list. The element selected before the reversal will again be the selected one.

listModify :: (e -> e) -> List n e -> List n e Source #

Apply a function to the selected element. If no element is selected the list is not modified.

# Attributes

listAttr :: AttrName Source #

The top-level attribute used for the entire list.

listSelectedAttr :: AttrName Source #

The attribute used only for the currently-selected list item when the list does not have focus. Extends `listAttr`.

listSelectedFocusedAttr :: AttrName Source #

The attribute used only for the currently-selected list item when the list has focus. Extends `listSelectedAttr`.