Skip to main content

cranpose_ui/modifier/
alignment.rs

1use super::{Alignment, HorizontalAlignment, Modifier, VerticalAlignment, inspector_metadata};
2use crate::modifier_nodes::AlignmentElement;
3
4impl Modifier {
5    /// Aligns this child's first text baseline with siblings that also request
6    /// baseline alignment in a Row. A child without a baseline is placed at the top.
7    pub fn align_by_baseline(self) -> Self {
8        self.then(
9            Self::with_element(AlignmentElement::row_baseline())
10                .with_inspector_metadata(inspector_metadata("alignByBaseline", |_| {})),
11        )
12    }
13
14    pub fn align(self, alignment: Alignment) -> Self {
15        self.then(
16            Self::with_element(AlignmentElement::box_alignment(alignment)).with_inspector_metadata(
17                inspector_metadata("align", move |info| {
18                    info.add_alignment("boxAlignment", alignment);
19                }),
20            ),
21        )
22    }
23
24    #[expect(non_snake_case)]
25    pub fn alignInBox(self, alignment: Alignment) -> Self {
26        self.align(alignment)
27    }
28
29    #[expect(non_snake_case)]
30    pub fn alignInColumn(self, alignment: HorizontalAlignment) -> Self {
31        let modifier = Self::with_element(AlignmentElement::column_alignment(alignment))
32            .with_inspector_metadata(inspector_metadata("alignInColumn", move |info| {
33                info.add_alignment("columnAlignment", alignment);
34            }));
35        self.then(modifier)
36    }
37
38    #[expect(non_snake_case)]
39    pub fn alignInRow(self, alignment: VerticalAlignment) -> Self {
40        let modifier = Self::with_element(AlignmentElement::row_alignment(alignment))
41            .with_inspector_metadata(inspector_metadata("alignInRow", move |info| {
42                info.add_alignment("rowAlignment", alignment);
43            }));
44        self.then(modifier)
45    }
46}