neft
Version:
Universal Platform
115 lines (87 loc) • 3.17 kB
text/coffeescript
# Grid
```javascript
Grid {
spacing.column: 15
spacing.row: 5
columns: 2
Rectangle { color: 'blue'; width: 60; height: 50; }
Rectangle { color: 'green'; width: 20; height: 70; }
Rectangle { color: 'red'; width: 50; height: 30; }
Rectangle { color: 'yellow'; width: 20; height: 20; }
}
```
'use strict'
assert = require 'src/assert'
utils = require 'src/utils'
module.exports = (Renderer, Impl, itemUtils) -> class Grid extends Renderer.Item
= 'Grid'
= 'Renderer.Grid'
## *Grid* Grid.New([*Component* component, *Object* options])
= (component, opts) ->
item = new Grid
itemUtils.Object.initialize item, component, opts
item.effectItem = item
item
## *Grid* Grid::constructor() : *Item*
constructor: ->
super()
= null
= 2
= Infinity
= null
= null
= false
= null
utils.defineProperty @::, 'effectItem', null, ->
, (val) ->
if val?
assert.instanceOf val, Renderer.Item
oldVal =
= val
Impl.setGridEffectItem.call @, val, oldVal
## *Item.Margin* Grid::padding
## *Signal* Grid::onPaddingChange(*Item.Margin* padding)
Renderer.Item.createMargin @,
propertyName: 'padding'
## *Integer* Grid::columns = `2`
## *Signal* Grid::onColumnsChange(*Integer* oldValue)
itemUtils.defineProperty
constructor: @
name: 'columns'
defaultValue: 2
implementation: Impl.setGridColumns
developmentSetter: (val) ->
assert.operator val, '>=', 0
setter: (_super) -> (val) ->
if val <= 0
val = 1
_super.call @, val
## *Number* Grid::rows = `Infinity`
## *Signal* Grid::onRowsChange(*Number* oldValue)
itemUtils.defineProperty
constructor: @
name: 'rows'
defaultValue: Infinity
implementation: Impl.setGridRows
developmentSetter: (val) ->
assert.operator val, '>=', 0
setter: (_super) -> (val) ->
if val <= 0
val = 1
_super.call @, val
## *Item.Spacing* Grid::spacing
## *Signal* Grid::onSpacingChange(*Item.Spacing* oldValue)
Renderer.Item.createSpacing @
## *Item.Alignment* Grid::alignment
## *Signal* Grid::onAlignmentChange(*Item.Alignment* oldValue)
Renderer.Item.createAlignment @
## *Boolean* Grid::includeBorderMargins = `false`
## *Signal* Grid::onIncludeBorderMarginsChange(*Boolean* oldValue)
itemUtils.defineProperty
constructor: @
name: 'includeBorderMargins'
defaultValue: false
implementation: Impl.setGridIncludeBorderMargins
developmentSetter: (val) ->
assert.isBoolean val