core icon indicating copy to clipboard operation
core copied to clipboard

bootgrid: allow usage of Javascript Modules

Open swhite2 opened this issue 3 months ago • 3 comments

This PR attempts to generically solve the usage of JS modules. In the specific case of bootgrid, this is necessary for https://github.com/opnsense/core/issues/9006. Specifically, we want to extend the ESM-aware library code of Tabulator, but cannot do so cleanly without import statements.

To use such modules, one can specify:

<script type="module">
import {Something} from "Module";
</script>

In the UIBootgrid case, the single import in default.volt will expose both UIBootgrid and $(<element>).UIBootgrid() for all sub-templates.

The ControllerBase and default volt template have been adjusted to allow for new inclusions as well.

I am aware of the discussion in https://github.com/opnsense/core/issues/7777 and the associated risk with using importmap, which is why I'm opening this as a PR.

Note that this PR switches the Tabulator UMD build to an ESM one.

swhite2 avatar Sep 25 '25 12:09 swhite2

Update: polyfilling using https://github.com/guybedford/es-module-shims does not seem to work for Pale Moon, so including it to combat incompatibility is not an option

swhite2 avatar Sep 30 '25 08:09 swhite2

I'm okay with using import maps, its a HTML standard now and there are enough browser choices that support it.

https://html.spec.whatwg.org/multipage/webappapis.html#import-maps

https://github.com/WICG/import-maps?tab=readme-ov-file#readme

https://caniuse.com/import-maps

Monviech avatar Sep 30 '25 13:09 Monviech

there are enough browser choices that support it

Yet!

fichtner avatar Sep 30 '25 13:09 fichtner