Table Builder

Great idea! I’ll take add this to my list of features to add later on.

Thanks I’ll look into improving the UX in this area.

@Kuro22 @Jagster

Regarding mobile usage:
Although, yes, it currently works for me on a touch device by long pressing to trigger the context menu (tested on Android - OnePlus 7 Pro)

There definitely needs to be a some fixes done for it to work on more devices, especially for iOS. I recently discovered iOS has an ongoing issue with the way it handles context menus. However, I won’t be able to push out a quick fix immediately since we’re using a third-party library for the spreadsheet portion.

I’ll post an update once I’ve resolved these issues. Sorry for the inconvenience!


I don’t want to speak for others but I suppose we’re all aware that’s a new feature and that UX issues or bugs are expected. And honestly, it’s already amazing work.


I agree !
Order ascending and descending…

Season 7 Reaction GIF by The Office


I have a few fairly hefty price/product comparison tables on another site that I’ve been using during testing, and it really does make updating them an absolute breeze now. :slightly_smiling_face: My enthusiasm for maintaining them (and making new ones) has certainly been renewed with this little beauty. :slightly_smiling_face: :+1:


Hello everybody,

I got a problem with Firefox Browser Version 103.0.2 (64bit).
Every input into the cells will put out as “undefined”.

With Microsoft Edge Version 104.0.1293.54 (Official Build) (64-Bit), everything works beautiful.

I have recorded as gif.
Table Builder

Thanks a lot for help.


how to fix my table?

1 Like

That looks like you’ve got a gap between the first line and the second. If you remove the blank line it should come good. :+1:


oh thanks. It seem complicated a little bit. :joy:


This is a known bug: Table Builder - #11 by Canapin
Couldn’t find steps to reproduce though.


I’d love if this #theme-component could directly import data from Microsoft Excel, Google Sheets, and Numbers through a button in the user interface. That would come in handy!


While I can’t test this on my current discourse instance (I can’t install theme components or plugins), I’d love for this to land in core discourse. We have posts with reasonably complicated tables (10x10) and editing them in markdown is always very painful. Advanced users (eg developers) are ok, however it’s too much to ask from the rest of our user base (business people).


Nice TC!!! Love your work. Those tables have been driving me crazy for years.

At the mo I can’t see the :pen: Edit Table button. It is there and functions just fine, but is invisible:

Screenshot 2022-08-24 01.46.09

I can’t see any reason for this in the CSS or HTML. Is it just me?


I don’t suppose you have a touchscreen, do you?


Yup - but only my main screen. Why does that matter?


@keegan can probably add more detail, but I think there’s a slight quirk between the halfway house of ‘desktop’ and ‘mobile’ that a touchscreen interface lands between. I think there are few other bits in core that also get scooped up in the same ‘grey zone’ as well.


From my point of view as more or less end user there is not grey zone :wink: There is just white and black in the meaning Table Builder gives only minimal functionality for all mobiles.

(I was planning to take screenshot but I couldn’t because scrolling of cog is still broken on iPhone. But that is not issue of Table builder never mind; all that was needed was tapping Done)… But touch screens are.

1 Like

Generally the problem is that we can not detect if a user has a mouse or not. So we gate a bit of our feature detection on mobile/not-mobile and touch is a signal for mobile.

In this specific case though I think there may be merit to use a different param, just suppress the button once the screen gets narrow enough via a media query?


That is bummer because nowadays that is must. Tech is lagging behind?

1 Like

Bug Report

The latest update of this TC seems to have broken the localisations


Thanks @nathankershaw, this was actually an issue in core, which has been resolved as of this commit: