Create Smarter Designs with the "Any Component" blocks

Here are three different layouts with lots of buttons:

Conventional wisdom would have you believe that creating something like the designs below would be a time consuming and challenging process. If you wanted 9, 16 or 25 buttons then you’ll spend a lot of time messing around with rows and columns and sizes and paddings…right?

Wrong! All 3 of the designs shown above are created from just 1 button, 1 row and 1 column. By using the Any Component blocks you can create a grid of any size you like and the incredible thing about this approach is that making small changes to your design is quick and painless.

Make a grid

This is best done with a function. The steps are always the same, but the number of repetitions will change depending on the size of the grid.

Depending on the button that is pressed the numberOfLoops will change too

Avoid Duplicates

This approach isn’t perfect, and you can create multiple grids at once so - depending on your use case - you might want to temporarily disable the buttons like this:


Delete Previous Grid

In order to have a fresh grid each time, we need some way of deleting the previous grid. To do this we start be creating a list of the rows and a list for the buttons.


Back in our original makeGrid function, each time we clone Button1 that clone gets added to the end of our listOfButtons and similarly, each time we clone Row1 that clone gets inserted into the end of the listOfRows like so:

This allows us to create two new functions; one to delete the duplicate rows and one to create the duplicate buttons. Note, that in this case the original Row1 and Button1 are not deleted or modified in anyway.

Custom Grid Appearance

Now you can customise Button1 inside the makeGrid function and you can modify the properties of your entire grid with just one or two blocks and without the need to change anything in the designer.

Update All Components

Finally, if we want to add some custom text or image to each of the buttons we have just created then we can simply loop through all the buttons in Column1 like so: