4pragma ComponentBehavior: Bound
38 Accessible.ignored: true
46 default property alias contentData: layout.data
54 property real referenceWidth: width
57 readonly property int breakpoint: MD.Breakpoints.fromWidth(referenceWidth)
60 readonly property int columns: MD.Breakpoints.columnCount(breakpoint)
68 property real margins: MD.Breakpoints.margin(breakpoint)
76 property real columnSpacing: MD.Breakpoints.gutter(breakpoint)
83 property real rowSpacing: MD.Tokens.measurement.space0
91 property alias flow: layout.flow
100 property alias layoutDirection: layout.layoutDirection
103 readonly property real contentWidth: Math.max(0, width - 2 * margins)
111 readonly property real columnWidth: Math.max(0, (contentWidth - (columns - 1) * columnSpacing) / columns)
113 implicitWidth: layout.implicitWidth + 2 * margins
114 implicitHeight: layout.implicitHeight
124 function columnLeft(index) {
125 if (!Number.isInteger(index) || index < 0 || index >= columns)
128 const physicalIndex = layoutDirection === Qt.RightToLeft ? columns - index - 1 : index;
129 return margins + physicalIndex * (columnWidth + columnSpacing);
138 function columnRight(index) {
139 const left = columnLeft(index);
140 return Number.isNaN(left) ? NaN : left + columnWidth;
150 function spanWidth(span) {
151 if (!Number.isInteger(span) || span < 1 || span > columns)
153 return span * columnWidth + (span - 1) * columnSpacing;
160 width: control.contentWidth
161 height: control.height
162 columns: control.columns
163 columnSpacing: control.columnSpacing
164 rowSpacing: control.rowSpacing
165 uniformCellWidths:
true