Brick

Brick is a widget library on top of Bloc.

Lists BrGlamorousComponents << #BrGlamorousComponentsLists slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Editors BrGlamorousComponents << #BrGlamorousComponentsEditors slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Buttons BrGlamorousComponents << #BrGlamorousComponentsButtons slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Pager BrGlamorousComponents << #BrGlamorousComponentsPagers slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Tabs BrGlamorousComponents << #BrGlamorousComponentsTabs slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Accordions BrGlamorousComponents << #BrGlamorousComponentsAccordions slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Breadcrumb BrGlamorousComponents << #BrGlamorousComponentsBreadcrumbs slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Checkboxes BrGlamorousComponents << #BrGlamorousComponentsCheckboxes slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

Dropdowns BrGlamorousComponents << #BrGlamorousComponentsDropdowns slots: {}; tag: '! Glamorous components'; package: 'Brick-Examples'

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 << #BrStencil slots: {}; tag: 'Core-Stencil'; package: 'Bloc' ) 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 << #BrLook slots: {}; tag: 'Core'; package: 'Brick-Core' ) provide the ability to modify the element to which they are attached. A typical example is the look of a BrButton BlElement << #BrButton traits: {TBrEnableable + TBrLayoutAlignable + TBrLayoutResizable + TBrSizeAdjustable}; slots: { #labelModel . #iconModel . #interactiveModel }; tag: 'Button - UI'; package: 'Brick' , 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.

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.