Ninox: multiple native icons in one table-view column
Zag1 Productions | 10 November 2026 | tested with Ninox 3.18.13 web client

Prerequisite for the complete compact display: permission to load your own
custom.js AND custom.css in the Ninox web client. Intended for On-Premises
and Private Cloud installations whose operator enables these custom files.
Do not assume any subscription or Private Cloud automatically includes this.
This is not a normal Public Cloud account-upload feature or an official
Ninox multi-icon formula API. Other versions/native apps are untested.

Schema (example German identifiers):
System record -> related Zugangswege records.
Zugangswege has boolean Aktiv and single-choice Verbindungsweg with icons.
System has dynamic multiple-choice field ZugangswegeDynamisch.

1. Use dynamic-options.ninox as the dynamic choices formula.
   It returns objects, not a formatJSON string. caption contains ONE space.
2. Run refresh-selection.ninox in a button on the system form.
   It writes the selected numeric IDs. Options alone do not select values.
3. Return ZugangswegeDynamisch directly in the table column formula.
4. Back up existing custom files. Add the JS helper and CSS block through
   your installation's configured custom-resource loading mechanism.
   Preserve all other custom code. File location/loading is deployment-specific.
5. Force-refresh the browser, then test icon-only and labelled entries,
   forms, editors and popups, scrolling, and records with no active routes.
   Updating these custom files needed no server restart in our installation.
   Open tabs still need to reload and caches may need refreshing.

The selectors cover legacy t-cell/multicombo-item and NxTable renderers.
They scope spacing to table multiple-choice cells; labels stay visible.
No external fonts are downloaded by this helper: Ninox renders its own icons.

Refresh is manual in this example. For automatic synchronization, design
and test handling for activation, deletion, choice changes and moving a route
between systems; update both old and new systems. Permission-filtered related
records also affect what a user can calculate. Do not present this button as
a complete trigger-based synchronization solution.

After Ninox upgrades, review DOM selectors and retest. Rollback: remove only
these helper blocks and force-refresh. The choice-field data is preserved.
Keep descriptive route names elsewhere or provide a visible legend.

These files contain only the published helper, not our installation's full
custom.js or custom.css. Adapt field names and test in your own environment.
