Brick

Brick is a widget library on top of Bloc.

Widgets

Lists BrGlamorousComponents subclass: #BrGlamorousComponentsLists instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Editors BrGlamorousComponents subclass: #BrGlamorousComponentsEditors instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Buttons BrGlamorousComponents subclass: #BrGlamorousComponentsButtons instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Pager BrGlamorousComponents subclass: #BrGlamorousComponentsPagers instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Tabs BrGlamorousComponents subclass: #BrGlamorousComponentsTabs instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Accordions BrGlamorousComponents subclass: #BrGlamorousComponentsAccordions instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Breadcrumb BrGlamorousComponents subclass: #BrGlamorousComponentsBreadcrumbs instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Checkboxes BrGlamorousComponents subclass: #BrGlamorousComponentsCheckboxes instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Dropdowns BrGlamorousComponents subclass: #BrGlamorousComponentsDropdowns instanceVariableNames: '' classVariableNames: '' package: 'Brick-Examples-! Glamorous components'

Architecture

New Brick widgets are typically created by composing existing widgets.

There are several architectural features of Brick that facilitate flexibility and reuse:

Stencils (subclass of BrStencil BlStencil subclass: #BrStencil instanceVariableNames: '' classVariableNames: '' package: 'Bloc-Core-Stencil' ) are used to create widgets when lazy creation is required, or when the widget to be created depends on the data being displayed.

Looks (subclass of BrLook BrAptitude subclass: #BrLook instanceVariableNames: '' classVariableNames: '' package: 'Brick-Core-Core' ) provide the ability to modify the element to which they are attached. A typical example is the look of a BrButton BlElement subclass: #BrButton uses: TBrEnableable + TBrLayoutAlignable + TBrLayoutResizable + TBrSizeAdjustable instanceVariableNames: 'labelModel iconModel interactiveModel' classVariableNames: '' package: 'Brick-Button - UI' , whether it has a border or not, a label or not, an icon or not, etc. Looks should only be created when the underlying widget is used in many places, e.g. buttons, and should not affect the API of the widget.

View Models are used to maintain the state of a Brick widget, e.g. pressed, focused, hovered, and, like Looks, can be composed by adding multiple models together. Like Looks, models also receive events.

Related

Functionality that is related, but not directly part of Brick:

Brick is built on top of Bloc elements. If you feel you need to create an element, ask first, you probably don't.

Phlow views are built on top of Brick and are used to compose views of a particular object. Their reuse is typically at the application level where the application interface may be composed of multiple Phlow views.