1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use crate::prelude::*;

widget!(
    /// The `Grid` defines a flexible grid area that consists of columns and rows.
    ///
    /// **CSS element:** `grid`
    Grid {
        /// Sets or shares the background property.
        background: Brush,

        /// Sets or shares the columns property.
        columns: Columns,

        /// Sets or shares the rows property.
        rows: Rows,

        /// Sets or shares the border radius property.
        border_radius: f64,

        /// Sets or shares the css selector property.
        selector: Selector

        attached_properties: {
            /// Attach a colum position to a widget.
            column: usize,

            /// Attach a colum span to a widget.
            column_span: usize,

            /// Attach a row position to a widget.
            row: usize,

            /// Attach a row span to a widget.
            row_span: usize
        }
    }
);

impl Template for Grid {
    fn template(self, _: Entity, _: &mut BuildContext) -> Self {
        self.name("Grid")
            .selector("grid")
            .border_radius(0.0)
            .background("transparent")
            .rows(Rows::default())
            .columns(Columns::default())
    }

    fn render_object(&self) -> Box<dyn RenderObject> {
        Box::new(RectangleRenderObject)
    }

    fn layout(&self) -> Box<dyn Layout> {
        Box::new(GridLayout::new())
    }
}