Simple checklist macro

Thanks for this compact checklist solution @fastfreddy !

I do want to point out that since this elegant solution relies on double-brackets to separate list items within a field, it is not (in current form) ideal for checklists that would contain links (for linking to contact info, etc.).

So check on [[enterprise]] rental can’t work as a to-do, nor Xfer balance from [[citibank]] to [[credit union]]. Surprisingly, despite the pre-struck-through appearance, Call [[Samantha’s Towing]] did render with a working link, though. If the link ends the to-do item, the link works, but the status of the to-do item is visually unclear.

(This solution does have a “linkify list” option — so that you can add notes about each item on a grocery list, etc…, but that option applies across a whole list, and to each line-item as a whole.)

Right @Springer, this is a limitation resulting (largely) from the design decision to store all list items in a single “list” field.

However, it seems that this solution stores items in a field and still allows links within items somehow: @benwebber 's checklist (in fact this solution seems to do most of what I was working towards, including item re-ordering!). I’ll investigate this approach… My early look points to a CSS styling problem more than anything else, and specifically, this dynamic test falls apart.

containsStr=`[contains:$(searchField)$[$(searchValue)$]]`

I didn’t see a styling issue in Ben’s solution, but the demo doesn’t apply a style dependent upon checked/unchecked status.

There are a few alternatives that also work:

More heavyweight solutions such as @telmiger’s ToDoNow that store each item as a tiddler have a similar limitations, because tiddlers’ titles also shouldn’t contain square brackets.

However, interestingly, @Maurycy’s EvidentlyCube’s TaskList Demo stores each task “title” in the body of a specifically tagged tiddler (and not its title), which can accommodate wikitext. In the “Simple task list” demonstrated at the link above doesn’t parse wikitext when rendering the task list, but the “Task List Showcase - Advanced Work Todo” does show it is possible.

1 Like

My solution stores each list item as a separate tiddler. Since rendering of an item is customizable per task list you can adjust it to parse wiki text - I don’t believe any of the example lists do it but I have it in my own TW instance I use for work.
Disclaimer: I haven’t read the topic entirely, just got pinged so I am clearing things up and hopefully not missing context :slight_smile:

Fantastic; corrected my post above.

@Springer released v.0.0.8 which supports wiki links in list items (see first item in the readme’s example 1 below)

Under the hood, problematic ] characters are replaced with a configurable unicode character before saving the list item, and reverted just before wikitext rendering.

I have also introduced optional drag handles and “on hover” styles, inspired by @benwebber checklist plugin.

3 Likes

@fastfreddy There some issue with alignment of checklist items in firefox based browsers in windows

Very good.

I was very impressed that you review the other options too … Sensible, given the longevity of GTD’s in TW.

FYI I have used Grosinger’s Checklist for years, and do still.

Why? It is not a macro.

Basically it is a parser.

Upside: That means you use normal WikiText and the parser finds it and adds an input widget.
No need to assert a macro.
Normal text invokes it.
Very flexy and degrades very well (all your checklists still exist after plugin removal).

Downsides: (1) In complex transclusions it can fail (rare) as the Grosinger parser is not perfect. (2) It is not maintained.

Anyway I wanted to mention it because of the conceptual elegance in the Grosinger approach.

And acknowledge YOU understand there is a very complex history to checklists in TW.

Best wishes
TT

3 Likes

oh, right, that is annoying.
I’ll see if I can address…

With some of the styles merged in from Ben’s, I think some of the CSS complexities exceeded my depth of expertise… I’ll study some more…

I have an Editor toolbar button that prefixes each selected line with a [ ] to tun them into items if you are interested.

version 0.0.9 should address the styling inconsistencies between browsers (Firefox screen capture below). It also offers a new mode for list markers: bulleted lists (example 2 below), numbered lists (example 3 below) and newly available: lists without markers (example 1 below)

1 Like

I looked at the parser logic in Grosinger’s Checklist some more; I like it. I also have been using for quite some time, have a button to insert [ ] in front of list items (just as @TW_Tones does as per message above), and have modified the editor autolist to have those inserted automatically when adding to a list (just like autolist would for * or #-based lists).

The only drawback is the list is not re-orderable.

I may try to figure out a way to generate a draggable list items instead of regular checklist items. What I have tried so far doesn’t work. I can generate the right template DOM structure with the right classes (matching e.g. list-links-draggable macro’s output), but the correct event handling still escapes me. Happy to share what I have so far if folks have advice on how to approach this.

If I figure this out, I’ll also have to implement logic that will edit the underlying text field in response to drag events reflecting the correct ordering (though there is already in Grosinger’s Checklist existing logic to insert or clear the x upon checkbox click event, so that part I am less worried about).

Glad. It is a very to the point approach.

Right.

That said an additional approach, could add that after?
Clue: one could embed data such that a column sort would be easy.

TT

What orders?

  • Date added?
  • Priority?
  • A-Z?
  • Open / Done?

D&D at will is likely easier and more relevant? (look at how Tools Reorder works)

Just suggesting
TT

@TiddlyTitch
User-defined order, based on drag and drop.

If you follow the thread, you’ll see that there is no information carried in either list fields or tiddler body (text field) to consider sorting on date added, priority, etc. For that, the common approaches (extensively available already in other plugins) require the use of a more robust data structure, such as a tiddler for each entry or a data tiddler.

The solution I packaged above (based on fields), and the exploration of parser-based alternatives (based on the tiddler’s texst field) was solely for the purpose of adding re-orderable functionality using drag and drop.

1 Like

Right.

Seems sensible. The user knows their order.
And D&D enables it (and changes of mind).

FWIW a Grossinger Wikitext approach + D&D would be my Bee’s Knees.

I second this!
I Currently use a slightly modified version of Tony Grosinger’s plugin, and I love the fact I can create checklists only with simple inline wikitext.
My notes are not structured enough for a single block of checklists per tiddler, as Kara imposes (don’t know if this limit is still true, though).
D&D ordering would be a great improvement over TW5-Checklist.

In case it would be useful, here’s the forked plugin I use:
$__plugins_tw-FRed_tw5-checklist.json (29.2 KB)

Fred

1 Like

I won’t comment here 'cause it’s @fastfreddy’s time. But thanks!

1 Like

Hi @fastfreddy this is great.
A missing thing (or Link ;- )

One tiny flaw: On my FF on MacOS the unicode for cancel is undefinedScreenshot 2025-08-18 at 10-18-58 Field-Based Checklist — A list and checklist generator plugin

Hi @JanJo!
Wow, this is highly annoying. Thanks for reporting.
I’ll use an SVG rendering of this rather simple icon instead in the next version. Probably later today…

2 Likes

v.0.1.0 released. A bit of a complex release overall, but should address @JanJo’s observation with the non-supported Unicode character on MacOS.

Please circle back if I have inadvertently caused other issues…

2 Likes