@aquera/nile-elements 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/demo/nxtgen-classes.css +15 -12
- package/demo/nxtgen-dark.css +24 -24
- package/demo/nxtgen-properties.css +27 -24
- package/demo/nxtgen-utilities.css +39 -36
- package/demo/nxtgen.css +15 -12
- package/demo/utilities.css +3 -0
- package/demo/variables.css +3 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1363 -340
- package/dist/internal/glyph.cjs.js +1 -1
- package/dist/internal/glyph.cjs.js.map +1 -1
- package/dist/internal/glyph.esm.js +6 -5
- package/dist/nile-app-shell/index.cjs.js +2 -0
- package/dist/nile-app-shell/index.cjs.js.map +1 -0
- package/dist/nile-app-shell/index.esm.js +1 -0
- package/dist/nile-app-shell/nile-app-shell.cjs.js +2 -0
- package/dist/nile-app-shell/nile-app-shell.cjs.js.map +1 -0
- package/dist/nile-app-shell/nile-app-shell.css.cjs.js +2 -0
- package/dist/nile-app-shell/nile-app-shell.css.cjs.js.map +1 -0
- package/dist/nile-app-shell/nile-app-shell.css.esm.js +554 -0
- package/dist/nile-app-shell/nile-app-shell.esm.js +155 -0
- package/dist/nile-app-shell/shell-controller.cjs.js +2 -0
- package/dist/nile-app-shell/shell-controller.cjs.js.map +1 -0
- package/dist/nile-app-shell/shell-controller.esm.js +1 -0
- package/dist/nile-app-shell-main/index.cjs.js +2 -0
- package/dist/nile-app-shell-main/index.cjs.js.map +1 -0
- package/dist/nile-app-shell-main/index.esm.js +1 -0
- package/dist/nile-app-shell-main/nile-app-shell-main.cjs.js +2 -0
- package/dist/nile-app-shell-main/nile-app-shell-main.cjs.js.map +1 -0
- package/dist/nile-app-shell-main/nile-app-shell-main.css.cjs.js +2 -0
- package/dist/nile-app-shell-main/nile-app-shell-main.css.cjs.js.map +1 -0
- package/dist/nile-app-shell-main/nile-app-shell-main.css.esm.js +18 -0
- package/dist/nile-app-shell-main/nile-app-shell-main.esm.js +1 -0
- package/dist/nile-app-shell-nav-toggle/index.cjs.js +2 -0
- package/dist/nile-app-shell-nav-toggle/index.cjs.js.map +1 -0
- package/dist/nile-app-shell-nav-toggle/index.esm.js +1 -0
- package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.cjs.js +2 -0
- package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.cjs.js.map +1 -0
- package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.cjs.js +2 -0
- package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.cjs.js.map +1 -0
- package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.esm.js +29 -0
- package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.esm.js +16 -0
- package/dist/nile-app-shell-panel/index.cjs.js +2 -0
- package/dist/nile-app-shell-panel/index.cjs.js.map +1 -0
- package/dist/nile-app-shell-panel/index.esm.js +1 -0
- package/dist/nile-app-shell-panel/nile-app-shell-panel.cjs.js +2 -0
- package/dist/nile-app-shell-panel/nile-app-shell-panel.cjs.js.map +1 -0
- package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js +2 -0
- package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js.map +1 -0
- package/dist/nile-app-shell-panel/nile-app-shell-panel.css.esm.js +103 -0
- package/dist/nile-app-shell-panel/nile-app-shell-panel.esm.js +33 -0
- package/dist/nile-app-shell-side-nav/index.cjs.js +2 -0
- package/dist/nile-app-shell-side-nav/index.cjs.js.map +1 -0
- package/dist/nile-app-shell-side-nav/index.esm.js +1 -0
- package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.cjs.js +2 -0
- package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.cjs.js.map +1 -0
- package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.css.cjs.js +2 -0
- package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.css.cjs.js.map +1 -0
- package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.css.esm.js +55 -0
- package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.esm.js +5 -0
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js.map +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.css.esm.js +46 -8
- package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.css.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.css.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.css.esm.js +32 -17
- package/dist/nile-popover/nile-popover.esm.js +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.cjs.js +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.cjs.js.map +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js.map +1 -1
- package/dist/nile-side-bar-footer/nile-side-bar-footer.css.esm.js +5 -0
- package/dist/nile-side-bar-footer/nile-side-bar-footer.esm.js +2 -2
- package/dist/nile-side-bar-header/nile-side-bar-header.cjs.js +1 -1
- package/dist/nile-side-bar-header/nile-side-bar-header.cjs.js.map +1 -1
- package/dist/nile-side-bar-header/nile-side-bar-header.css.cjs.js +1 -1
- package/dist/nile-side-bar-header/nile-side-bar-header.css.cjs.js.map +1 -1
- package/dist/nile-side-bar-header/nile-side-bar-header.css.esm.js +5 -0
- package/dist/nile-side-bar-header/nile-side-bar-header.esm.js +2 -2
- package/dist/nile-wysiwyg-editor/index.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/index.esm.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.esm.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.esm.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +2 -2
- package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +4 -4
- package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -1
- package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +1 -1
- package/dist/src/index.d.ts +7 -2
- package/dist/src/index.js +6 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/glyph.d.ts +6 -1
- package/dist/src/internal/glyph.js +8 -1
- package/dist/src/internal/glyph.js.map +1 -1
- package/dist/src/nile-app-shell/index.d.ts +7 -0
- package/dist/src/nile-app-shell/index.js +8 -0
- package/dist/src/nile-app-shell/index.js.map +1 -0
- package/dist/src/nile-app-shell/nile-app-shell-regions.test.d.ts +4 -0
- package/dist/src/nile-app-shell/nile-app-shell-regions.test.js +177 -0
- package/dist/src/nile-app-shell/nile-app-shell-regions.test.js.map +1 -0
- package/dist/src/nile-app-shell/nile-app-shell.css.d.ts +18 -0
- package/dist/src/nile-app-shell/nile-app-shell.css.js +572 -0
- package/dist/src/nile-app-shell/nile-app-shell.css.js.map +1 -0
- package/dist/src/nile-app-shell/nile-app-shell.d.ts +292 -0
- package/dist/src/nile-app-shell/nile-app-shell.js +796 -0
- package/dist/src/nile-app-shell/nile-app-shell.js.map +1 -0
- package/dist/src/nile-app-shell/nile-app-shell.test.d.ts +3 -0
- package/dist/src/nile-app-shell/nile-app-shell.test.js +454 -0
- package/dist/src/nile-app-shell/nile-app-shell.test.js.map +1 -0
- package/dist/src/nile-app-shell/shell-controller.d.ts +34 -0
- package/dist/src/nile-app-shell/shell-controller.js +80 -0
- package/dist/src/nile-app-shell/shell-controller.js.map +1 -0
- package/dist/src/nile-app-shell-main/index.d.ts +7 -0
- package/dist/src/nile-app-shell-main/index.js +8 -0
- package/dist/src/nile-app-shell-main/index.js.map +1 -0
- package/dist/src/nile-app-shell-main/nile-app-shell-main.css.d.ts +9 -0
- package/dist/src/nile-app-shell-main/nile-app-shell-main.css.js +27 -0
- package/dist/src/nile-app-shell-main/nile-app-shell-main.css.js.map +1 -0
- package/dist/src/nile-app-shell-main/nile-app-shell-main.d.ts +38 -0
- package/dist/src/nile-app-shell-main/nile-app-shell-main.js +51 -0
- package/dist/src/nile-app-shell-main/nile-app-shell-main.js.map +1 -0
- package/dist/src/nile-app-shell-nav-toggle/index.d.ts +7 -0
- package/dist/src/nile-app-shell-nav-toggle/index.js +8 -0
- package/dist/src/nile-app-shell-nav-toggle/index.js.map +1 -0
- package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.d.ts +13 -0
- package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.js +42 -0
- package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.js.map +1 -0
- package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.d.ts +56 -0
- package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.js +126 -0
- package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.js.map +1 -0
- package/dist/src/nile-app-shell-panel/index.d.ts +7 -0
- package/dist/src/nile-app-shell-panel/index.js +8 -0
- package/dist/src/nile-app-shell-panel/index.js.map +1 -0
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.d.ts +9 -0
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js +112 -0
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js.map +1 -0
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.d.ts +73 -0
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.js +158 -0
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.js.map +1 -0
- package/dist/src/nile-app-shell-side-nav/index.d.ts +7 -0
- package/dist/src/nile-app-shell-side-nav/index.js +8 -0
- package/dist/src/nile-app-shell-side-nav/index.js.map +1 -0
- package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.d.ts +13 -0
- package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.js +68 -0
- package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.js.map +1 -0
- package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.d.ts +54 -0
- package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.js +83 -0
- package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.js.map +1 -0
- package/dist/src/nile-floating-panel/nile-floating-panel.css.js +46 -8
- package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -1
- package/dist/src/nile-floating-panel/nile-floating-panel.js +13 -1
- package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.css.js +30 -15
- package/dist/src/nile-popover/nile-popover.css.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.js +1 -1
- package/dist/src/nile-popover/nile-popover.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.test.js +1 -1
- package/dist/src/nile-popover/nile-popover.test.js.map +1 -1
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js +5 -0
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js.map +1 -1
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.d.ts +10 -0
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.js +17 -1
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.js.map +1 -1
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.test.d.ts +1 -0
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.test.js +42 -0
- package/dist/src/nile-side-bar-footer/nile-side-bar-footer.test.js.map +1 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-app-shell.test.d.ts +4 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-app-shell.test.js +68 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-app-shell.test.js.map +1 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-header.css.js +5 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-header.css.js.map +1 -1
- package/dist/src/nile-side-bar-header/nile-side-bar-header.d.ts +9 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-header.js +17 -1
- package/dist/src/nile-side-bar-header/nile-side-bar-header.js.map +1 -1
- package/dist/src/nile-side-bar-header/nile-side-bar-header.test.d.ts +1 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-header.test.js +42 -0
- package/dist/src/nile-side-bar-header/nile-side-bar-header.test.js.map +1 -0
- package/dist/src/version.d.ts +11 -1
- package/dist/src/version.js +51 -8
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/version.cjs.js +1 -1
- package/dist/version.cjs.js.map +1 -1
- package/dist/version.esm.js +1 -1
- package/package.json +7 -2
- package/src/index.ts +16 -4
- package/src/internal/glyph.ts +12 -1
- package/src/nile-app-shell/index.ts +8 -0
- package/src/nile-app-shell/nile-app-shell-regions.test.ts +215 -0
- package/src/nile-app-shell/nile-app-shell.css.ts +574 -0
- package/src/nile-app-shell/nile-app-shell.test.ts +536 -0
- package/src/nile-app-shell/nile-app-shell.ts +838 -0
- package/src/nile-app-shell/shell-controller.ts +100 -0
- package/src/nile-app-shell-main/index.ts +8 -0
- package/src/nile-app-shell-main/nile-app-shell-main.css.ts +29 -0
- package/src/nile-app-shell-main/nile-app-shell-main.ts +52 -0
- package/src/nile-app-shell-nav-toggle/index.ts +8 -0
- package/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.ts +44 -0
- package/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.ts +138 -0
- package/src/nile-app-shell-panel/index.ts +8 -0
- package/src/nile-app-shell-panel/nile-app-shell-panel.css.ts +114 -0
- package/src/nile-app-shell-panel/nile-app-shell-panel.ts +161 -0
- package/src/nile-app-shell-side-nav/index.ts +8 -0
- package/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.ts +70 -0
- package/src/nile-app-shell-side-nav/nile-app-shell-side-nav.ts +86 -0
- package/src/nile-floating-panel/nile-floating-panel.css.ts +46 -8
- package/src/nile-floating-panel/nile-floating-panel.ts +19 -1
- package/src/nile-popover/nile-popover.css.ts +30 -15
- package/src/nile-popover/nile-popover.test.ts +1 -1
- package/src/nile-popover/nile-popover.ts +1 -1
- package/src/nile-side-bar-footer/nile-side-bar-footer.css.ts +5 -0
- package/src/nile-side-bar-footer/nile-side-bar-footer.test.ts +55 -0
- package/src/nile-side-bar-footer/nile-side-bar-footer.ts +12 -1
- package/src/nile-side-bar-header/nile-side-bar-app-shell.test.ts +78 -0
- package/src/nile-side-bar-header/nile-side-bar-header.css.ts +5 -0
- package/src/nile-side-bar-header/nile-side-bar-header.test.ts +55 -0
- package/src/nile-side-bar-header/nile-side-bar-header.ts +10 -0
- package/src/version.ts +55 -7
- package/vscode-html-custom-data.json +246 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-app-shell.test.js","sourceRoot":"","sources":["../../../src/nile-app-shell/nile-app-shell.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture, html, oneEvent, waitUntil } from '@open-wc/testing';\nimport './nile-app-shell';\nimport '../nile-app-shell-nav-toggle/nile-app-shell-nav-toggle';\nimport '../nile-side-bar/nile-side-bar';\nimport type { NileAppShell } from './nile-app-shell';\nimport type { NileAppShellNavToggle } from '../nile-app-shell-nav-toggle/nile-app-shell-nav-toggle';\n\n/**\n * The shell derives its chrome from its own width, so most tests size the host\n * explicitly and wait for the ResizeObserver to land.\n */\nconst sized = async (width: number) => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: ${width}px; height: 600px;\">\n <nav slot=\"side-nav\">nav</nav>\n <span slot=\"top-bar\">Title</span>\n <p>page</p>\n <div slot=\"panel\">assistant</div>\n </nile-app-shell>\n `);\n await waitUntil(() => el.hasAttribute('has-panel'));\n return el;\n};\n\n/** The same shell with an overlay drawer opted into, which is not the default. */\nconst overlaying = async (width: number) => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell\n style=\"width: ${width}px; height: 600px;\"\n overlay-breakpoint=\"1280\"\n >\n <nav slot=\"side-nav\">nav</nav>\n <span slot=\"top-bar\">Title</span>\n <p>page</p>\n <div slot=\"panel\">assistant</div>\n </nile-app-shell>\n `);\n await waitUntil(() => el.hasAttribute('has-panel'));\n return el;\n};\n\n/**\n * The side-nav track animates, so a width read straight after a state change\n * catches the row mid-transition and sees room that is about to go away. Waits\n * for two consecutive frames to agree before geometry is asserted.\n */\nconst settled = async (el: NileAppShell) => {\n const section = el.shadowRoot!.querySelector('.content-section')!;\n let last = -1;\n await waitUntil(\n () => {\n const width = Math.round(section.getBoundingClientRect().width);\n const same = width === last;\n last = width;\n return same;\n },\n 'the shell never settled',\n { timeout: 3000, interval: 60 }\n );\n};\n\nconst part = (el: NileAppShell, name: string) =>\n el.shadowRoot!.querySelector(`[part~=\"${name}\"]`) as HTMLElement | null;\n\ndescribe('NileAppShell — regions', () => {\n it('1. defaults to an expanded nav, a closed docked panel and a fluid body', async () => {\n const el = await sized(1440);\n expect(el.navCollapsed).to.be.false;\n expect(el.panelOpen).to.be.false;\n expect(el.panelMode).to.equal('docked');\n expect(el.contentAlign).to.equal('fluid');\n expect(el.rail).to.be.false;\n });\n\n it('2. mounts only the regions that have slotted content', async () => {\n const el = await sized(1440);\n expect(el.hasAttribute('has-side-nav')).to.be.true;\n expect(el.hasAttribute('has-top-bar')).to.be.true;\n expect(el.hasAttribute('has-panel')).to.be.true;\n expect(el.hasAttribute('has-banner')).to.be.false;\n expect(el.hasAttribute('has-aside')).to.be.false;\n });\n\n it('3. reports no panel when the panel slot is empty', async () => {\n const el = await fixture<NileAppShell>(\n html`<nile-app-shell><p>page</p></nile-app-shell>`\n );\n expect(el.panelAvailable).to.be.false;\n expect(el.hasAttribute('has-panel')).to.be.false;\n });\n\n it('4. renders the top bar inside the container by default', async () => {\n const el = await sized(1440);\n expect(part(el, 'container')!.contains(part(el, 'top-bar'))).to.be.true;\n });\n\n it('5. spans the shell with the top bar when asked', async () => {\n const el = await sized(1440);\n el.topBarPlacement = 'shell';\n await el.updateComplete;\n const bar = part(el, 'top-bar')!;\n expect(bar.classList.contains('shell-top-bar')).to.be.true;\n expect(part(el, 'container')!.contains(bar)).to.be.false;\n });\n});\n\ndescribe('NileAppShell — nav', () => {\n it('6. collapseNav()/expandNav() drive the rail and reflect it', async () => {\n const el = await sized(1440);\n el.collapseNav();\n await el.updateComplete;\n expect(el.navCollapsed).to.be.true;\n expect(el.hasAttribute('rail')).to.be.true;\n\n el.expandNav();\n await el.updateComplete;\n expect(el.hasAttribute('rail')).to.be.false;\n });\n\n it('7. toggleNav() flips, and accepts a forced state', async () => {\n const el = await sized(1440);\n el.toggleNav();\n await el.updateComplete;\n expect(el.navCollapsed).to.be.true;\n el.toggleNav(true);\n await el.updateComplete;\n expect(el.navCollapsed).to.be.true;\n });\n\n it('8. emits nile-nav-toggle with the collapsed state', async () => {\n const el = await sized(1440);\n const toggled = oneEvent(el, 'nile-nav-toggle');\n el.collapseNav();\n const event = await toggled;\n expect(event.detail.collapsed).to.be.true;\n expect(event.detail.locked).to.be.false;\n });\n\n it('9. mirrors the effective rail onto a slotted nile-side-bar', async () => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: 1440px; height: 600px;\">\n <nile-side-bar slot=\"side-nav\"></nile-side-bar>\n <p>page</p>\n </nile-app-shell>\n `);\n const bar = el.querySelector('nile-side-bar')!;\n el.collapseNav();\n await el.updateComplete;\n expect(bar.hasAttribute('collapsed')).to.be.true;\n });\n\n it('10. the built-in toggle is disabled, not hidden, while the rail is forced', async () => {\n const el = await sized(1000);\n el.openPanel();\n await waitUntil(() => el.navLocked);\n const button = part(el, 'nav-toggle') as HTMLButtonElement;\n expect(button).to.exist;\n expect(button.disabled).to.be.true;\n expect(el.hasAttribute('rail')).to.be.true;\n });\n});\n\ndescribe('NileAppShell — Ask Aquera panel', () => {\n it('11. openPanel()/closePanel() drive panel-open', async () => {\n const el = await sized(1440);\n el.openPanel();\n await el.updateComplete;\n expect(el.panelOpen).to.be.true;\n expect(el.hasAttribute('panel-open')).to.be.true;\n\n el.closePanel();\n await el.updateComplete;\n expect(el.panelOpen).to.be.false;\n });\n\n it('12. openPanel() is a no-op when the route opts out', async () => {\n const el = await sized(1440);\n el.noPanel = true;\n await el.updateComplete;\n el.openPanel();\n await el.updateComplete;\n expect(el.panelOpen).to.be.false;\n expect(el.hasAttribute('has-panel')).to.be.false;\n });\n\n it('13. emits nile-panel-toggle with the open state and mode', async () => {\n const el = await sized(1440);\n const toggled = oneEvent(el, 'nile-panel-toggle');\n el.openPanel();\n const event = await toggled;\n expect(event.detail.open).to.be.true;\n expect(event.detail.mode).to.equal('docked');\n });\n\n it('14. pushes rather than overlays, however narrow the shell is', async () => {\n for (const width of [1000, 820]) {\n const el = await sized(width);\n el.openPanel();\n await el.updateComplete;\n await settled(el);\n expect(el.panelMode).to.equal('docked');\n expect(el.getAttribute('panel-mode')).to.equal('docked');\n const container = el.shadowRoot!.querySelector('.container')!;\n const panel = el.shadowRoot!.querySelector('.panel')!;\n // Beside the page, not over it.\n expect(container.getBoundingClientRect().right).to.be.at.most(\n Math.round(panel.getBoundingClientRect().left) + 1\n );\n }\n });\n\n it(\"14b. overlays below an author's breakpoint when one is set\", async () => {\n const el = await overlaying(1000);\n await waitUntil(() => el.panelMode === 'overlay');\n expect(el.getAttribute('panel-mode')).to.equal('overlay');\n });\n\n it('15. an open docked panel forces the rail below the docked breakpoint', async () => {\n const el = await sized(1360);\n await waitUntil(() => el.panelMode === 'docked');\n expect(el.navLocked).to.be.false;\n\n el.openPanel();\n await waitUntil(() => el.navLocked);\n expect(el.hasAttribute('rail')).to.be.true;\n\n el.closePanel();\n await waitUntil(() => !el.navLocked);\n expect(el.hasAttribute('rail')).to.be.false;\n });\n\n it('16. the panel close button closes it', async () => {\n const el = await sized(1440);\n el.openPanel();\n await el.updateComplete;\n (part(el, 'panel-close') as HTMLButtonElement).click();\n await el.updateComplete;\n expect(el.panelOpen).to.be.false;\n });\n\n it('17. labels the panel and its default heading from panel-label', async () => {\n const el = await sized(1440);\n el.panelLabel = 'Ask Aquera';\n await el.updateComplete;\n expect(part(el, 'panel')!.getAttribute('aria-label')).to.equal(\n 'Ask Aquera'\n );\n expect(part(el, 'panel-title')!.textContent!.trim()).to.equal('Ask Aquera');\n });\n\n it('18. Cmd/Ctrl+J toggles the panel', async () => {\n const el = await sized(1440);\n document.dispatchEvent(\n new KeyboardEvent('keydown', { key: 'j', ctrlKey: true })\n );\n await el.updateComplete;\n expect(el.panelOpen).to.be.true;\n });\n\n it('19. Escape closes an overlay panel but leaves a docked one alone', async () => {\n const docked = await sized(1440);\n docked.openPanel();\n await docked.updateComplete;\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\n await docked.updateComplete;\n expect(docked.panelOpen).to.be.true;\n\n const overlay = await overlaying(1000);\n await waitUntil(() => overlay.panelMode === 'overlay');\n overlay.openPanel();\n await overlay.updateComplete;\n document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));\n await overlay.updateComplete;\n expect(overlay.panelOpen).to.be.false;\n });\n\n it('20. no-panel-shortcut drops the keyboard handling', async () => {\n const el = await sized(1440);\n el.noPanelShortcut = true;\n await el.updateComplete;\n document.dispatchEvent(\n new KeyboardEvent('keydown', { key: 'j', metaKey: true })\n );\n await el.updateComplete;\n expect(el.panelOpen).to.be.false;\n });\n});\n\ndescribe('NileAppShell — content container', () => {\n it('23. content-container makes the slotted page root a size container', async () => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: 1440px; height: 600px;\" content-container>\n <div class=\"page\">page</div>\n </nile-app-shell>\n `);\n const page = el.querySelector('.page')!;\n expect(getComputedStyle(page).containerType).to.equal('inline-size');\n\n el.contentContainer = false;\n await el.updateComplete;\n expect(getComputedStyle(page).containerType).to.equal('normal');\n });\n});\n\ndescribe('NileAppShellNavToggle', () => {\n it('21. drives the nearest shell and mirrors its rail state', async () => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: 1440px; height: 600px;\" no-nav-toggle>\n <nav slot=\"side-nav\">nav</nav>\n <nile-app-shell-nav-toggle slot=\"top-bar\"></nile-app-shell-nav-toggle>\n <p>page</p>\n </nile-app-shell>\n `);\n const toggle = el.querySelector<NileAppShellNavToggle>(\n 'nile-app-shell-nav-toggle'\n )!;\n await waitUntil(() => toggle.appShell === el);\n\n // The control is a nile-button, so the raw <button> is a shadow root\n // deeper. The part is the contract either way.\n const button = () =>\n toggle.shadowRoot!.querySelector<HTMLElement & { disabled: boolean }>(\n '[part~=\"button\"]'\n )!;\n button().click();\n await el.updateComplete;\n expect(el.navCollapsed).to.be.true;\n\n await toggle.updateComplete;\n expect(button().getAttribute('aria-expanded')).to.equal('false');\n });\n\n it('22. disables itself while the shell holds the rail', async () => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell\n style=\"width: 1000px; height: 600px;\"\n no-nav-toggle\n panel-open\n >\n <nav slot=\"side-nav\">nav</nav>\n <nile-app-shell-nav-toggle slot=\"top-bar\"></nile-app-shell-nav-toggle>\n <div slot=\"panel\">assistant</div>\n <p>page</p>\n </nile-app-shell>\n `);\n const toggle = el.querySelector<NileAppShellNavToggle>(\n 'nile-app-shell-nav-toggle'\n )!;\n await waitUntil(() => el.navLocked);\n await toggle.updateComplete;\n expect(\n toggle.shadowRoot!.querySelector<HTMLElement & { disabled: boolean }>(\n '[part~=\"button\"]'\n )!.disabled\n ).to.be.true;\n });\n});\n\n/**\n * The row is nav + container + aside + panel. When the sum of what a route\n * mounts exceeds the shell, something has to give — and the one thing that may\n * not give is the row overflowing into :host's clip, which silently cuts the\n * panel off the right edge.\n */\ndescribe('NileAppShell — the content row never overflows', () => {\n const withAside = async (width: number) => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: ${width}px; height: 600px;\" panel-open>\n <nav slot=\"side-nav\">nav</nav>\n <span slot=\"top-bar\">Title</span>\n <p>page</p>\n <div slot=\"aside\">aside</div>\n <div slot=\"panel\">assistant</div>\n </nile-app-shell>\n `);\n await waitUntil(() => el.hasAttribute('has-aside'));\n return el;\n };\n\n /** Overflow of the flex row past the box that clips it. */\n const overflow = (el: NileAppShell) => {\n const section = el.shadowRoot!.querySelector('.content-section')!;\n return (\n section.scrollWidth - Math.round(section.getBoundingClientRect().width)\n );\n };\n\n it('23. tightens the side columns rather than covering the page', async () => {\n // 232px short of what the row prefers, so the panel and the aside give\n // some width back — and the page still sits beside the panel, not under.\n const el = await withAside(1500);\n await waitUntil(() => el.navLocked);\n await settled(el);\n expect(el.panelMode).to.equal('docked');\n const panel = el.shadowRoot!.querySelector('.panel')!;\n const width = panel.getBoundingClientRect().width;\n expect(width).to.be.below(480);\n expect(width).to.be.at.least(360);\n expect(overflow(el)).to.equal(0);\n });\n\n it('24. rails the nav rather than clip the row', async () => {\n // 1600 fits the docked panel over a rail, not over the expanded track.\n const el = await withAside(1600);\n await waitUntil(() => el.navLocked);\n await settled(el);\n expect(el.panelMode).to.equal('docked');\n expect(overflow(el)).to.equal(0);\n });\n\n it('25. holds the container floor while the row has room for it', async () => {\n const el = await withAside(1800);\n await waitUntil(() => el.panelMode === 'docked');\n await settled(el);\n const container = el.shadowRoot!.querySelector('.container')!;\n expect(container.getBoundingClientRect().width).to.be.at.least(640);\n expect(el.navLocked).to.be.false;\n expect(overflow(el)).to.equal(0);\n });\n\n it('26. asks the page for room last, and only after the floors are met', async () => {\n const el = await withAside(820);\n await waitUntil(() => el.navLocked);\n await settled(el);\n const px = (sel: string) =>\n el.shadowRoot!.querySelector(sel)!.getBoundingClientRect().width;\n // Both side columns sit on their floors before the page gives anything.\n expect(Math.round(px('.panel'))).to.equal(360);\n expect(Math.round(px('.aside'))).to.equal(240);\n expect(px('.container')).to.be.below(640);\n expect(overflow(el)).to.equal(0);\n });\n\n it('27. keeps the page above its floor at ordinary widths', async () => {\n const el = await sized(1300);\n el.openPanel();\n await el.updateComplete;\n await settled(el);\n expect(el.panelMode).to.equal('docked');\n const container = el.shadowRoot!.querySelector('.container')!;\n expect(container.getBoundingClientRect().width).to.be.at.least(640);\n expect(overflow(el)).to.equal(0);\n });\n});\n\n/**\n * An empty flex item is not a free one: it still takes the row's gap before\n * it, which is enough to pull the bar's content short of its padding edge.\n */\ndescribe('NileAppShell — the top bar reaches its padding edge', () => {\n it('28. an empty actions group reserves no gap', async () => {\n const el = await sized(1440);\n // The Ask button lives in that group, so drop it to leave it truly empty.\n el.noAsk = true;\n await settled(el);\n expect(el.hasAttribute('has-top-bar-actions')).to.be.false;\n expect(el.hasAttribute('has-ask')).to.be.false;\n const bar = el.shadowRoot!.querySelector('.top-bar') as HTMLElement;\n const content = el.shadowRoot!.querySelector('.top-bar-content')!;\n const padEnd = parseFloat(getComputedStyle(bar).paddingInlineEnd);\n const shortfall =\n bar.getBoundingClientRect().right - content.getBoundingClientRect().right;\n expect(Math.round(shortfall)).to.equal(Math.round(padEnd));\n });\n\n it('29. slotted actions mount the group', async () => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: 1440px; height: 600px;\">\n <nav slot=\"side-nav\">nav</nav>\n <span slot=\"top-bar\">Title</span>\n <button slot=\"top-bar-actions\">Save</button>\n <p>page</p>\n </nile-app-shell>\n `);\n await waitUntil(() => el.hasAttribute('has-top-bar-actions'));\n const actions = el.shadowRoot!.querySelector('.top-bar-actions')!;\n expect(getComputedStyle(actions).display).to.not.equal('none');\n expect(actions.getBoundingClientRect().width).to.be.greaterThan(0);\n });\n});\n\n/**\n * The Ask door moved onto the shell when nile-app-shell-header became a slot.\n * It is the one control in the bar that cannot be slotted markup: it turns on\n * whether a panel is mounted for this route, and it calls openPanel().\n */\ndescribe('NileAppShell — the built-in Ask button', () => {\n const ask = (el: NileAppShell) => part(el, 'ask') as HTMLButtonElement | null;\n\n it('30. opens the panel', async () => {\n const el = await sized(1440);\n expect(el.panelOpen).to.be.false;\n ask(el)!.click();\n await el.updateComplete;\n expect(el.panelOpen).to.be.true;\n });\n\n it('31. is absent when the route mounts no panel', async () => {\n const el = await fixture<NileAppShell>(html`\n <nile-app-shell style=\"width: 1440px; height: 600px;\">\n <nav slot=\"side-nav\">nav</nav>\n <span slot=\"top-bar\">Title</span>\n <p>page</p>\n </nile-app-shell>\n `);\n await el.updateComplete;\n expect(el.askVisible).to.be.false;\n expect(ask(el)).to.be.null;\n });\n\n it('32. no-ask drops it for a bar that renders its own', async () => {\n const el = await sized(1440);\n el.noAsk = true;\n await el.updateComplete;\n expect(el.askVisible).to.be.false;\n expect(ask(el)).to.be.null;\n });\n\n it('33. takes its label from ask-label', async () => {\n const el = await sized(1440);\n el.askLabel = 'Ask Aquera';\n await el.updateComplete;\n expect(ask(el)!.textContent!.trim()).to.equal('Ask Aquera');\n });\n\n it('34. keeps the actions group mounted on its own', async () => {\n const el = await sized(1440);\n await settled(el);\n // Nothing is slotted into top-bar-actions, but the Ask button lives there.\n expect(el.hasAttribute('has-top-bar-actions')).to.be.false;\n expect(el.hasAttribute('has-ask')).to.be.true;\n const actions = el.shadowRoot!.querySelector('.top-bar-actions')!;\n expect(getComputedStyle(actions).display).to.not.equal('none');\n expect(actions.getBoundingClientRect().width).to.be.greaterThan(0);\n });\n});\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
8
|
+
import type { NileAppShell } from './nile-app-shell';
|
|
9
|
+
/**
|
|
10
|
+
* A reactive controller that links a region component to its shell.
|
|
11
|
+
*
|
|
12
|
+
* Region components sit in the shell's light DOM, so the shell is just an
|
|
13
|
+
* ancestor — `closest()` finds it. The shell may upgrade after its children do,
|
|
14
|
+
* so the lookup is deferred to a microtask and retried on demand. While linked,
|
|
15
|
+
* the host re-renders whenever the shell's nav or panel state changes.
|
|
16
|
+
*/
|
|
17
|
+
export declare class AppShellController implements ReactiveController {
|
|
18
|
+
host: ReactiveControllerHost & HTMLElement;
|
|
19
|
+
/** Id of the shell to link to. Defaults to the nearest ancestor. */
|
|
20
|
+
shellId?: string;
|
|
21
|
+
private linked?;
|
|
22
|
+
private observer?;
|
|
23
|
+
constructor(host: ReactiveControllerHost & HTMLElement);
|
|
24
|
+
/** The linked shell, resolving it first if it has not been found yet. */
|
|
25
|
+
get shell(): NileAppShell | null;
|
|
26
|
+
hostConnected(): void;
|
|
27
|
+
hostDisconnected(): void;
|
|
28
|
+
/** Resolve the shell and subscribe to it. Returns true when newly linked. */
|
|
29
|
+
private link;
|
|
30
|
+
private unlink;
|
|
31
|
+
private find;
|
|
32
|
+
private handleShellChange;
|
|
33
|
+
}
|
|
34
|
+
export default AppShellController;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/** Events on the shell that change what a region component renders. */
|
|
8
|
+
const SHELL_EVENTS = [
|
|
9
|
+
'nile-nav-toggle',
|
|
10
|
+
'nile-panel-toggle',
|
|
11
|
+
'nile-panel-mode-change',
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* A reactive controller that links a region component to its shell.
|
|
15
|
+
*
|
|
16
|
+
* Region components sit in the shell's light DOM, so the shell is just an
|
|
17
|
+
* ancestor — `closest()` finds it. The shell may upgrade after its children do,
|
|
18
|
+
* so the lookup is deferred to a microtask and retried on demand. While linked,
|
|
19
|
+
* the host re-renders whenever the shell's nav or panel state changes.
|
|
20
|
+
*/
|
|
21
|
+
export class AppShellController {
|
|
22
|
+
constructor(host) {
|
|
23
|
+
this.handleShellChange = () => {
|
|
24
|
+
this.host.requestUpdate();
|
|
25
|
+
};
|
|
26
|
+
(this.host = host).addController(this);
|
|
27
|
+
}
|
|
28
|
+
/** The linked shell, resolving it first if it has not been found yet. */
|
|
29
|
+
get shell() {
|
|
30
|
+
if (!this.linked)
|
|
31
|
+
this.link();
|
|
32
|
+
return this.linked ?? null;
|
|
33
|
+
}
|
|
34
|
+
hostConnected() {
|
|
35
|
+
// The shell can upgrade after its children; give it a microtask.
|
|
36
|
+
Promise.resolve().then(() => {
|
|
37
|
+
if (this.link())
|
|
38
|
+
this.host.requestUpdate();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
hostDisconnected() {
|
|
42
|
+
this.unlink();
|
|
43
|
+
}
|
|
44
|
+
/** Resolve the shell and subscribe to it. Returns true when newly linked. */
|
|
45
|
+
link() {
|
|
46
|
+
const found = this.find();
|
|
47
|
+
if (!found || found === this.linked)
|
|
48
|
+
return false;
|
|
49
|
+
this.unlink();
|
|
50
|
+
this.linked = found;
|
|
51
|
+
SHELL_EVENTS.forEach(name => found.addEventListener(name, this.handleShellChange));
|
|
52
|
+
/*
|
|
53
|
+
* Not every state a region renders from has an event. Panel availability
|
|
54
|
+
* flips when the panel slot fills, which emits nothing — a header would
|
|
55
|
+
* render its Ask button hidden and never re-render. The shell reflects that
|
|
56
|
+
* state onto itself, so watching its attributes covers the whole surface.
|
|
57
|
+
*/
|
|
58
|
+
this.observer = new MutationObserver(this.handleShellChange);
|
|
59
|
+
this.observer.observe(found, { attributes: true });
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
unlink() {
|
|
63
|
+
const shell = this.linked;
|
|
64
|
+
if (!shell)
|
|
65
|
+
return;
|
|
66
|
+
SHELL_EVENTS.forEach(name => shell.removeEventListener(name, this.handleShellChange));
|
|
67
|
+
this.observer?.disconnect();
|
|
68
|
+
this.observer = undefined;
|
|
69
|
+
this.linked = undefined;
|
|
70
|
+
}
|
|
71
|
+
find() {
|
|
72
|
+
if (this.shellId) {
|
|
73
|
+
const root = this.host.getRootNode();
|
|
74
|
+
return root.querySelector(`nile-app-shell#${this.shellId}`);
|
|
75
|
+
}
|
|
76
|
+
return this.host.closest('nile-app-shell');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export default AppShellController;
|
|
80
|
+
//# sourceMappingURL=shell-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-controller.js","sourceRoot":"","sources":["../../../src/nile-app-shell/shell-controller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,uEAAuE;AACvE,MAAM,YAAY,GAAG;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,wBAAwB;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAS7B,YAAY,IAA0C;QA4D9C,sBAAiB,GAAG,GAAS,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5B,CAAC,CAAC;QA7DA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,yEAAyE;IACzE,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,iEAAiE;QACjE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1B,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,6EAA6E;IACrE,IAAI;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAC1B,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CACrD,CAAC;QACF;;;;;WAKG;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAC1B,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CACxD,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEO,IAAI;QACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAA2B,CAAC;YAC9D,OAAO,IAAI,CAAC,aAAa,CAAe,kBAAkB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;CAKF;AAED,eAAe,kBAAkB,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { NileAppShell } from './nile-app-shell';\n\n/** Events on the shell that change what a region component renders. */\nconst SHELL_EVENTS = [\n 'nile-nav-toggle',\n 'nile-panel-toggle',\n 'nile-panel-mode-change',\n];\n\n/**\n * A reactive controller that links a region component to its shell.\n *\n * Region components sit in the shell's light DOM, so the shell is just an\n * ancestor — `closest()` finds it. The shell may upgrade after its children do,\n * so the lookup is deferred to a microtask and retried on demand. While linked,\n * the host re-renders whenever the shell's nav or panel state changes.\n */\nexport class AppShellController implements ReactiveController {\n host: ReactiveControllerHost & HTMLElement;\n\n /** Id of the shell to link to. Defaults to the nearest ancestor. */\n shellId?: string;\n\n private linked?: NileAppShell;\n private observer?: MutationObserver;\n\n constructor(host: ReactiveControllerHost & HTMLElement) {\n (this.host = host).addController(this);\n }\n\n /** The linked shell, resolving it first if it has not been found yet. */\n get shell(): NileAppShell | null {\n if (!this.linked) this.link();\n return this.linked ?? null;\n }\n\n hostConnected(): void {\n // The shell can upgrade after its children; give it a microtask.\n Promise.resolve().then(() => {\n if (this.link()) this.host.requestUpdate();\n });\n }\n\n hostDisconnected(): void {\n this.unlink();\n }\n\n /** Resolve the shell and subscribe to it. Returns true when newly linked. */\n private link(): boolean {\n const found = this.find();\n if (!found || found === this.linked) return false;\n this.unlink();\n this.linked = found;\n SHELL_EVENTS.forEach(name =>\n found.addEventListener(name, this.handleShellChange)\n );\n /*\n * Not every state a region renders from has an event. Panel availability\n * flips when the panel slot fills, which emits nothing — a header would\n * render its Ask button hidden and never re-render. The shell reflects that\n * state onto itself, so watching its attributes covers the whole surface.\n */\n this.observer = new MutationObserver(this.handleShellChange);\n this.observer.observe(found, { attributes: true });\n return true;\n }\n\n private unlink(): void {\n const shell = this.linked;\n if (!shell) return;\n SHELL_EVENTS.forEach(name =>\n shell.removeEventListener(name, this.handleShellChange)\n );\n this.observer?.disconnect();\n this.observer = undefined;\n this.linked = undefined;\n }\n\n private find(): NileAppShell | null {\n if (this.shellId) {\n const root = this.host.getRootNode() as Document | ShadowRoot;\n return root.querySelector<NileAppShell>(`nile-app-shell#${this.shellId}`);\n }\n return this.host.closest('nile-app-shell');\n }\n\n private handleShellChange = (): void => {\n this.host.requestUpdate();\n };\n}\n\nexport default AppShellController;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nile-app-shell-main/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,uBAAuB,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport * from './nile-app-shell-main';\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
export declare const styles: import("lit").CSSResult;
|
|
8
|
+
declare const _default: import("lit").CSSResult[];
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { css } from 'lit';
|
|
8
|
+
export const styles = css `
|
|
9
|
+
:host {
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
display: block;
|
|
12
|
+
width: 100%;
|
|
13
|
+
min-width: 0;
|
|
14
|
+
container-type: inline-size;
|
|
15
|
+
container-name: nile-content;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:host([no-container]) {
|
|
19
|
+
container-type: normal;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:host([hidden]) {
|
|
23
|
+
display: none;
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
export default [styles];
|
|
27
|
+
//# sourceMappingURL=nile-app-shell-main.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-app-shell-main.css.js","sourceRoot":"","sources":["../../../src/nile-app-shell-main/nile-app-shell-main.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;CAiBxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\nexport const styles = css`\n :host {\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: 0;\n container-type: inline-size;\n container-name: nile-content;\n }\n\n :host([no-container]) {\n container-type: normal;\n }\n\n :host([hidden]) {\n display: none;\n }\n`;\n\nexport default [styles];\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { CSSResultArray, TemplateResult } from 'lit';
|
|
8
|
+
import NileElement from '../internal/nile-element';
|
|
9
|
+
/**
|
|
10
|
+
* @summary The shell's centre region — the page body. Goes in the shell's
|
|
11
|
+
* default slot and declares the size query container that page CSS sizes
|
|
12
|
+
* against, which the shell itself cannot do across its shadow boundary.
|
|
13
|
+
*
|
|
14
|
+
* @status stable
|
|
15
|
+
* @since 2.0
|
|
16
|
+
*
|
|
17
|
+
* @tag nile-app-shell-main
|
|
18
|
+
*
|
|
19
|
+
* @dependency nile-app-shell
|
|
20
|
+
*
|
|
21
|
+
* @slot - The page body.
|
|
22
|
+
*
|
|
23
|
+
* @attr no-container - Drops the query container. Size containment makes this a
|
|
24
|
+
* containing block for absolutely and fixed-positioned descendants; set this
|
|
25
|
+
* when page content needs to escape to the viewport instead.
|
|
26
|
+
*/
|
|
27
|
+
export declare class NileAppShellMain extends NileElement {
|
|
28
|
+
static get styles(): CSSResultArray;
|
|
29
|
+
/** Drops the size query container. */
|
|
30
|
+
noContainer: boolean;
|
|
31
|
+
render(): TemplateResult;
|
|
32
|
+
}
|
|
33
|
+
export default NileAppShellMain;
|
|
34
|
+
declare global {
|
|
35
|
+
interface HTMLElementTagNameMap {
|
|
36
|
+
'nile-app-shell-main': NileAppShellMain;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { __decorate } from "tslib";
|
|
8
|
+
import { html } from 'lit';
|
|
9
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
10
|
+
import { styles } from './nile-app-shell-main.css';
|
|
11
|
+
import NileElement from '../internal/nile-element';
|
|
12
|
+
/**
|
|
13
|
+
* @summary The shell's centre region — the page body. Goes in the shell's
|
|
14
|
+
* default slot and declares the size query container that page CSS sizes
|
|
15
|
+
* against, which the shell itself cannot do across its shadow boundary.
|
|
16
|
+
*
|
|
17
|
+
* @status stable
|
|
18
|
+
* @since 2.0
|
|
19
|
+
*
|
|
20
|
+
* @tag nile-app-shell-main
|
|
21
|
+
*
|
|
22
|
+
* @dependency nile-app-shell
|
|
23
|
+
*
|
|
24
|
+
* @slot - The page body.
|
|
25
|
+
*
|
|
26
|
+
* @attr no-container - Drops the query container. Size containment makes this a
|
|
27
|
+
* containing block for absolutely and fixed-positioned descendants; set this
|
|
28
|
+
* when page content needs to escape to the viewport instead.
|
|
29
|
+
*/
|
|
30
|
+
let NileAppShellMain = class NileAppShellMain extends NileElement {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
/** Drops the size query container. */
|
|
34
|
+
this.noContainer = false;
|
|
35
|
+
}
|
|
36
|
+
static get styles() {
|
|
37
|
+
return [styles];
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
return html `<slot></slot>`;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
__decorate([
|
|
44
|
+
property({ type: Boolean, reflect: true, attribute: 'no-container' })
|
|
45
|
+
], NileAppShellMain.prototype, "noContainer", void 0);
|
|
46
|
+
NileAppShellMain = __decorate([
|
|
47
|
+
customElement('nile-app-shell-main')
|
|
48
|
+
], NileAppShellMain);
|
|
49
|
+
export { NileAppShellMain };
|
|
50
|
+
export default NileAppShellMain;
|
|
51
|
+
//# sourceMappingURL=nile-app-shell-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-app-shell-main.js","sourceRoot":"","sources":["../../../src/nile-app-shell-main/nile-app-shell-main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AAEI,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,WAAW;IAA1C;;QAKL,sCAAsC;QAEtC,gBAAW,GAAY,KAAK,CAAC;IAK/B,CAAC;IAXQ,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAMM,MAAM;QACX,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;CACF,CAAA;AALC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;qDACzC;AAPlB,gBAAgB;IAD5B,aAAa,CAAC,qBAAqB,CAAC;GACxB,gBAAgB,CAY5B;;AAED,eAAe,gBAAgB,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-app-shell-main.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * @summary The shell's centre region — the page body. Goes in the shell's\n * default slot and declares the size query container that page CSS sizes\n * against, which the shell itself cannot do across its shadow boundary.\n *\n * @status stable\n * @since 2.0\n *\n * @tag nile-app-shell-main\n *\n * @dependency nile-app-shell\n *\n * @slot - The page body.\n *\n * @attr no-container - Drops the query container. Size containment makes this a\n * containing block for absolutely and fixed-positioned descendants; set this\n * when page content needs to escape to the viewport instead.\n */\n@customElement('nile-app-shell-main')\nexport class NileAppShellMain extends NileElement {\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n /** Drops the size query container. */\n @property({ type: Boolean, reflect: true, attribute: 'no-container' })\n noContainer: boolean = false;\n\n public render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n\nexport default NileAppShellMain;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-app-shell-main': NileAppShellMain;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nile-app-shell-nav-toggle/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,6BAA6B,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport * from './nile-app-shell-nav-toggle';\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* AppShellNavToggle CSS. The button itself is the shared utility recipe; this
|
|
9
|
+
* file only handles the host box and the rule.
|
|
10
|
+
*/
|
|
11
|
+
export declare const styles: import("lit").CSSResult;
|
|
12
|
+
declare const _default: import("lit").CSSResult[];
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { css } from 'lit';
|
|
8
|
+
/**
|
|
9
|
+
* AppShellNavToggle CSS. The button itself is the shared utility recipe; this
|
|
10
|
+
* file only handles the host box and the rule.
|
|
11
|
+
*/
|
|
12
|
+
export const styles = css `
|
|
13
|
+
:host {
|
|
14
|
+
display: inline-flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host([hidden]) {
|
|
20
|
+
display: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.toggle {
|
|
24
|
+
margin-inline-start: var(--nile-app-shell-nav-toggle-offset, -7px);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.rule {
|
|
28
|
+
flex: 0 0 auto;
|
|
29
|
+
width: var(--nile-border-width-1, var(--ng-border-width-1));
|
|
30
|
+
height: 24px;
|
|
31
|
+
background: var(
|
|
32
|
+
--nile-colors-neutral-400,
|
|
33
|
+
var(--ng-colors-border-secondary)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:host(:not([with-rule])) .rule {
|
|
38
|
+
display: none;
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
export default [styles];
|
|
42
|
+
//# sourceMappingURL=nile-app-shell-nav-toggle.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-app-shell-nav-toggle.css.js","sourceRoot":"","sources":["../../../src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * AppShellNavToggle CSS. The button itself is the shared utility recipe; this\n * file only handles the host box and the rule.\n */\nexport const styles = css`\n :host {\n display: inline-flex;\n align-items: center;\n gap: var(--nile-spacing-lg, var(--ng-spacing-lg));\n }\n\n :host([hidden]) {\n display: none;\n }\n\n .toggle {\n margin-inline-start: var(--nile-app-shell-nav-toggle-offset, -7px);\n }\n\n .rule {\n flex: 0 0 auto;\n width: var(--nile-border-width-1, var(--ng-border-width-1));\n height: 24px;\n background: var(\n --nile-colors-neutral-400,\n var(--ng-colors-border-secondary)\n );\n }\n\n :host(:not([with-rule])) .rule {\n display: none;\n }\n`;\n\nexport default [styles];\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { CSSResultArray, TemplateResult } from 'lit';
|
|
8
|
+
import '../nile-button/nile-button';
|
|
9
|
+
import NileElement from '../internal/nile-element';
|
|
10
|
+
import type { NileAppShell } from '../nile-app-shell/nile-app-shell';
|
|
11
|
+
/**
|
|
12
|
+
* @summary The side-nav toggle, as a standalone control. `nile-app-shell`
|
|
13
|
+
* renders one in its own top bar; mount this in a header you build yourself, or
|
|
14
|
+
* a route has no way to expand the rail.
|
|
15
|
+
*
|
|
16
|
+
* @status stable
|
|
17
|
+
* @since 2.0
|
|
18
|
+
*
|
|
19
|
+
* @tag nile-app-shell-nav-toggle
|
|
20
|
+
*
|
|
21
|
+
* @dependency nile-app-shell
|
|
22
|
+
* @dependency nile-glyph
|
|
23
|
+
*
|
|
24
|
+
* @csspart button - The toggle button.
|
|
25
|
+
* @csspart rule - The trailing vertical rule.
|
|
26
|
+
*
|
|
27
|
+
* @cssproperty [--nile-app-shell-nav-toggle-offset=-4px] - Optical start offset.
|
|
28
|
+
*/
|
|
29
|
+
export declare class NileAppShellNavToggle extends NileElement {
|
|
30
|
+
static get styles(): CSSResultArray;
|
|
31
|
+
/** Draws the vertical rule the shell's own bar puts after the toggle. */
|
|
32
|
+
withRule: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The shell to drive. Defaults to the nearest `nile-app-shell` ancestor, or
|
|
35
|
+
* the element with this id.
|
|
36
|
+
*/
|
|
37
|
+
shell?: string;
|
|
38
|
+
private _rail;
|
|
39
|
+
private _locked;
|
|
40
|
+
private _observed?;
|
|
41
|
+
connectedCallback(): void;
|
|
42
|
+
disconnectedCallback(): void;
|
|
43
|
+
/** The shell this toggle drives, if it found one. */
|
|
44
|
+
get appShell(): NileAppShell | null;
|
|
45
|
+
private _attach;
|
|
46
|
+
private _onShellToggle;
|
|
47
|
+
private _sync;
|
|
48
|
+
render(): TemplateResult;
|
|
49
|
+
private _onClick;
|
|
50
|
+
}
|
|
51
|
+
export default NileAppShellNavToggle;
|
|
52
|
+
declare global {
|
|
53
|
+
interface HTMLElementTagNameMap {
|
|
54
|
+
'nile-app-shell-nav-toggle': NileAppShellNavToggle;
|
|
55
|
+
}
|
|
56
|
+
}
|