If a parent is set to auto-layout, and it’s children are set to layoutGrow = 1 and layoutAlign = “STRETCH”, the children should fill the parent container both horizontally and vertically, right?
I’m doing the same but for some reason layoutAlign is not working
Here’s the code (Please check out the ‘//Creating a frame for column’ code block… that is where the problem is):
figma.showUI(__html__, { themeColors: true })
figma.ui.resize(300, 250)
let bounds = figma.viewport.bounds
let key = "93fecd27ee35164ce296179f418dd122071b4ecc"
figma.ui.onmessage = async (pluginMessage) => {
//Importing a component set and saving components as variables
let componentSet = await figma.importComponentSetByKeyAsync(key);
let regularCell = componentSet.findChild(e => e.name === "Property 1=Regular Cell") as ComponentNode
let colHeader = componentSet.findChild(e => e.name === "Property 1=Column Headers") as ComponentNode
let rowHeader = componentSet.findChild(e => e.name === "Property 1=Row Headers") as ComponentNode
//Number of rows and columns got from user's input
let rows = pluginMessage.rows
let cols = pluginMessage.cols
//Creating a frame for table
let table = figma.createFrame()
table.name = "Table"
table.layoutMode = "HORIZONTAL"
table.primaryAxisSizingMode = "FIXED"
table.counterAxisSizingMode = "FIXED"
//Resizing the table and placing in the center of the viewport
table.resizeWithoutConstraints(regularCell.width * cols, regularCell.height * rows)
table.x = bounds.x + bounds.width / 2 - table.width / 2
table.y = bounds.y + bounds.height / 2 - table.height / 2
//Looping through columns
for (let i = 0; i < cols; i++) {
//Creating a frame for column
let columnFrame = figma.createFrame()
columnFrame.name = `Column ${i + 1}`
table.appendChild(columnFrame)
columnFrame.layoutMode = "VERTICAL"
columnFrame.layoutAlign = "STRETCH"
columnFrame.layoutGrow = 1
columnFrame.x = i * regularCell.width
//Looping through rows
for (let j = 0; j < rows; j++) {
//Creating a cell instance
let temp = j === 0 ? colHeader.createInstance() : i === 0 ? rowHeader.createInstance() : regularCell.createInstance()
temp.name = `Cell ${j + 1}`
columnFrame.appendChild(temp)
temp.layoutAlign = "STRETCH"
temp.layoutGrow = 1
temp.x = i * 0
temp.y = j * temp.height
}
}
figma.currentPage.selection = [table]
figma.closePlugin();
}