@paroicms/public-menu-plugin
Version:
Public menu plugin for ParoiCMS
27 lines (26 loc) • 1.33 kB
JavaScript
import { escapeHtml, makeStylesheetLinkAsyncTag, } from "@paroicms/public-server-lib";
import { esmDirName, extractPackageNameAndVersionSync } from "@paroicms/script-lib";
import { dirname, join } from "node:path";
const projectDir = dirname(esmDirName(import.meta.url));
const packageDir = dirname(projectDir);
const { version } = extractPackageNameAndVersionSync(packageDir);
const plugin = {
version,
async siteInit(service) {
service.setPublicAssetsDirectory(join(packageDir, "frontend", "dist"));
service.registerHeadTags(({ html }) => {
const withMobileMenu = html.includes(`data-effect="paMobileMenu"`);
if (html.includes("data-activate-menu-items") || withMobileMenu) {
const tags = [
makeStylesheetLinkAsyncTag(`${service.pluginAssetsUrl}/public-menu-plugin.css`),
`<script type="module" src="${escapeHtml(`${service.pluginAssetsUrl}/public-menu-plugin.mjs`)}" async></script>`,
];
if (withMobileMenu) {
tags.push(`<style>@media(max-width:992px){[data-mobile-menu-action="move"]{display:none}}@media(min-width:992px){[data-mobile-menu]{display:none}}</style>`);
}
return tags;
}
});
},
};
export default plugin;