@ngstarter-ui/components 21.0.13 → 21.0.15
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/ai/component-registry.json +12 -9
- package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +8 -6
- package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-drawer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs +97 -9
- package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-sidebar.mjs +15 -6
- package/fesm2022/ngstarter-ui-components-sidebar.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngstarter-ui-components-scrollbar-area.d.ts +25 -5
- package/types/ngstarter-ui-components-sidebar.d.ts +2 -0
|
@@ -4461,8 +4461,8 @@
|
|
|
4461
4461
|
{
|
|
4462
4462
|
"name": "close-on-backdrop-click-example",
|
|
4463
4463
|
"title": "Close on backdrop click",
|
|
4464
|
-
"file": "projects/docs/src/app/components/guided-tour/_examples/close-on-backdrop-click-example/close-on-backdrop-click-example.
|
|
4465
|
-
"source": "
|
|
4464
|
+
"file": "projects/docs/src/app/components/guided-tour/_examples/close-on-backdrop-click-example/close-on-backdrop-click-example.html",
|
|
4465
|
+
"source": "<div class=\"flex flex-col gap-4\">\n <div class=\"flex gap-4\">\n <button ngsButton=\"filled\" (click)=\"startTour()\">Start Tour (Close on Backdrop Click)</button>\n </div>\n <div class=\"flex gap-10 mt-10\">\n <div id=\"close-step1\" class=\"p-4 border rounded\">Step 1</div>\n <div id=\"close-step2\" class=\"p-4 border rounded\">Step 2</div>\n </div>\n</div>"
|
|
4466
4466
|
}
|
|
4467
4467
|
],
|
|
4468
4468
|
"previewAsset": "projects/components/guided-tour/preview.svg",
|
|
@@ -4568,9 +4568,8 @@
|
|
|
4568
4568
|
"Symbols Icons (Default)",
|
|
4569
4569
|
"Phosphor Icons",
|
|
4570
4570
|
"Circle Flags Icons",
|
|
4571
|
-
"
|
|
4572
|
-
"Circle flags"
|
|
4573
|
-
"Material symbols icons"
|
|
4571
|
+
"Material symbols icons",
|
|
4572
|
+
"Circle flags"
|
|
4574
4573
|
],
|
|
4575
4574
|
"minimalExample": "<div class=\"flex gap-4\">\n <ngs-icon name=\"circle-flags:us\"/>\n <ngs-icon name=\"circle-flags:ge\"/>\n <ngs-icon name=\"circle-flags:de\"/>\n</div>\n<div class=\"mt-8 flex gap-4 items-center\">\n <ngs-icon name=\"circle-flags:us\" class=\"size-4\"/>\n <ngs-icon name=\"circle-flags:ge\" class=\"size-10\"/>\n <ngs-icon name=\"circle-flags:de\" class=\"size-16\"/>\n</div>",
|
|
4576
4575
|
"exampleFiles": [
|
|
@@ -7365,14 +7364,19 @@
|
|
|
7365
7364
|
"exampleFiles": [],
|
|
7366
7365
|
"previewAsset": "projects/components/scrollbar-area/preview.svg",
|
|
7367
7366
|
"selectors": [
|
|
7367
|
+
"[ngsScrollContainerFixed]",
|
|
7368
7368
|
"ngs-scrollbar-area"
|
|
7369
7369
|
],
|
|
7370
7370
|
"exportedSymbols": [
|
|
7371
|
-
"ScrollbarArea"
|
|
7371
|
+
"ScrollbarArea",
|
|
7372
|
+
"ScrollContainerFixed"
|
|
7372
7373
|
],
|
|
7373
7374
|
"inputs": [
|
|
7374
7375
|
"absolute",
|
|
7375
7376
|
"autoHide",
|
|
7377
|
+
"ngsScrollContainerFixed",
|
|
7378
|
+
"ngsScrollContainerFixedBottomOffset",
|
|
7379
|
+
"ngsScrollContainerFixedMinHeight",
|
|
7376
7380
|
"scrollbarWidth"
|
|
7377
7381
|
],
|
|
7378
7382
|
"outputs": [
|
|
@@ -7868,7 +7872,6 @@
|
|
|
7868
7872
|
"--ngs-sidebar-nav-item-icon-width",
|
|
7869
7873
|
"--ngs-sidebar-nav-item-padding",
|
|
7870
7874
|
"--ngs-sidebar-nav-item-radius",
|
|
7871
|
-
"--ngs-sidebar-nav-item-space-y",
|
|
7872
7875
|
"--ngs-sidebar-nav-item-width",
|
|
7873
7876
|
"--ngs-sidebar-nav-items-gap",
|
|
7874
7877
|
"--ngs-sidebar-nav-nested-item-active-bg",
|
|
@@ -8258,8 +8261,8 @@
|
|
|
8258
8261
|
"Basic Snackbar",
|
|
8259
8262
|
"Snackbar With Custom Component",
|
|
8260
8263
|
"Configurable Snackbar",
|
|
8261
|
-
"Snackbar",
|
|
8262
|
-
"Snackbar
|
|
8264
|
+
"Snackbar with custom",
|
|
8265
|
+
"Snackbar"
|
|
8263
8266
|
],
|
|
8264
8267
|
"minimalExample": "<div class=\"flex items-center gap-5\">\n <ngs-form-field subscriptHiddenIfEmpty>\n <ngs-label>Message</ngs-label>\n <input ngsInput value=\"Disco party!\" #message>\n </ngs-form-field>\n <ngs-form-field subscriptHiddenIfEmpty>\n <ngs-label>Action</ngs-label>\n <input ngsInput value=\"Dance\" #action>\n </ngs-form-field>\n <button ngsButton=\"outlined\"\n (click)=\"openSnackBar(message.value, action.value)\">Show snack-bar</button>\n</div>",
|
|
8265
8268
|
"exampleFiles": [
|
|
@@ -284,13 +284,15 @@ class CodeHighlighter {
|
|
|
284
284
|
};
|
|
285
285
|
}
|
|
286
286
|
async ngOnChanges(changes) {
|
|
287
|
-
|
|
288
|
-
|
|
287
|
+
const code = this.code() ?? '';
|
|
288
|
+
if (code.length === 0) {
|
|
289
|
+
this.isLoading.set(false);
|
|
290
|
+
this.content.set(this.sanitizer.bypassSecurityTrustHtml('<pre class="shiki"><code></code></pre>'));
|
|
289
291
|
return;
|
|
290
292
|
}
|
|
291
293
|
this.isLoading.set(true);
|
|
292
294
|
try {
|
|
293
|
-
const highlighted = await codeToHtml(
|
|
295
|
+
const highlighted = await codeToHtml(code, {
|
|
294
296
|
lang: this.language(),
|
|
295
297
|
theme: this.theme(),
|
|
296
298
|
transformers: [diffTransformer, this.getHighlightTransformer()],
|
|
@@ -300,7 +302,7 @@ class CodeHighlighter {
|
|
|
300
302
|
}
|
|
301
303
|
catch (e) {
|
|
302
304
|
// Fallback: raw code escaped inside pre
|
|
303
|
-
const escaped =
|
|
305
|
+
const escaped = code
|
|
304
306
|
.replace(/&/g, '&')
|
|
305
307
|
.replace(/</g, '<')
|
|
306
308
|
.replace(/>/g, '>');
|
|
@@ -328,7 +330,7 @@ class CodeHighlighter {
|
|
|
328
330
|
}
|
|
329
331
|
}
|
|
330
332
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CodeHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
331
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CodeHighlighter, isStandalone: true, selector: "ngs-code-highlighter", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, diff: { classPropertyName: "diff", publicName: "diff", isSignal: true, isRequired: false, transformFunction: null }, highlightLines: { classPropertyName: "highlightLines", publicName: "highlightLines", isSignal: true, isRequired: false, transformFunction: null }, showLanguage: { classPropertyName: "showLanguage", publicName: "showLanguage", isSignal: true, isRequired: false, transformFunction: null }, showCopyButton: { classPropertyName: "showCopyButton", publicName: "showCopyButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.appearance-bordered": "appearance() === \"bordered\"", "class.appearance-none": "appearance() === \"none\"" }, classAttribute: "ngs-code-highlighter not-prose" }, exportAs: ["ngsCodeHighlighter"], usesOnChanges: true, ngImport: i0, template: "<figure>\n @if (title()) {\n <figcaption>\n @if (title()) {\n <span class=\"title\">{{ title() }}</span>\n }\n </figcaption>\n }\n\n <div class=\"content relative\">\n @if (showLanguage()) {\n <div class=\"languageName\">{{ displayedLanguage() }}</div>\n }\n\n @if (showCopyButton()) {\n <span class=\"absolute top-2 right-2\">\n <button\n ngsIconButton\n (click)=\"copyCode()\"\n >\n <ngs-icon\n [name]=\"copied() ? 'fluent:checkmark-24-regular' : 'fluent:copy-24-regular'\"\n [class.text-green-500]=\"copied()\"\n />\n </button>\n </span>\n }\n\n <div>\n @if (content()) {\n <div [innerHTML]=\"content()\"></div>\n } @else {\n <div class=\"loading\">Loading\u2026</div>\n }\n </div>\n </div>\n</figure>\n", styles: [":host{--ngs-code-highlighter-bg: var(--ngs-color-background);--ngs-code-highlighter-radius: var(--ngs-radius-xl);--ngs-code-highlighter-padding: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-margin: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-border: 1px solid var(--ngs-color-border);--ngs-code-highlighter-title-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 3) calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 3);--ngs-code-highlighter-title-color: var(--ngs-color-neutral-500);display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}:host figcaption{font-size:var(--ngs-font-size-xs);font-weight:500;padding:var(--ngs-code-highlighter-title-padding);background:var(--ngs-code-highlighter-bg);color:var(--ngs-code-highlighter-title-color);position:relative;z-index:1}:host figcaption:after{content:\"\";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ngs-code-highlighter-bg)}:host .languageName{font-size:var(--ngs-font-size-sm);font-weight:600;padding:0 calc(var(--spacing, .25rem) * 6);width:max-content;margin-bottom:calc(var(--spacing, .25rem) * 4);margin-top:calc(calc(var(--spacing, .25rem) * 1) * -1);position:relative}:host ::ng-deep pre{padding:var(--ngs-code-highlighter-padding) 0;line-height:1.75;font-size:var(--ngs-font-size-sm);position:relative}:host ::ng-deep pre code{display:grid}:host ::ng-deep pre .line{padding-left:calc(var(--spacing, .25rem) * 6);padding-right:var(--ngs-code-highlighter-padding);min-height:1.75em}:host ::ng-deep pre .line.diff.remove{background-color:var(--ngs-color-danger);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.remove{background-color:color-mix(in srgb,var(--ngs-color-danger),transparent 85%)}}:host ::ng-deep pre .line.diff.remove:before{content:\"-\";color:var(--ngs-color-danger);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.diff.add{background-color:var(--ngs-color-success);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.add{background-color:color-mix(in srgb,var(--ngs-color-success),transparent 85%)}}:host ::ng-deep pre .line.diff.add:before{content:\"+\";color:var(--ngs-color-success);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.highlighted{background-color:var(--ngs-color-primary);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.highlighted{background-color:color-mix(in srgb,var(--ngs-color-primary),transparent 92%)}}:host ::ng-deep code{white-space:pre}:host .content{overflow:auto;background:var(--ngs-code-highlighter-bg)}:host .content button{color:inherit}:host .content button ngs-icon.text-green-500{color:var(--ngs-color-success)!important}:host.appearance-bordered figcaption{border:var(--ngs-code-highlighter-border);border-bottom:none;border-top-left-radius:var(--ngs-radius-xl);border-top-right-radius:var(--ngs-radius-xl);width:max-content}:host.appearance-bordered .content{border:var(--ngs-code-highlighter-border);border-radius:var(--ngs-code-highlighter-radius);z-index:0}:host.appearance-bordered:has(figcaption) .content{border-top-left-radius:0}:host.appearance-none .content{border:none;background-color:transparent!important;border-radius:0}:host.appearance-none ::ng-deep pre{padding-left:0;padding-right:0}:host.loading{opacity:.6}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CodeHighlighter, isStandalone: true, selector: "ngs-code-highlighter", inputs: { code: { classPropertyName: "code", publicName: "code", isSignal: true, isRequired: true, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, diff: { classPropertyName: "diff", publicName: "diff", isSignal: true, isRequired: false, transformFunction: null }, highlightLines: { classPropertyName: "highlightLines", publicName: "highlightLines", isSignal: true, isRequired: false, transformFunction: null }, showLanguage: { classPropertyName: "showLanguage", publicName: "showLanguage", isSignal: true, isRequired: false, transformFunction: null }, showCopyButton: { classPropertyName: "showCopyButton", publicName: "showCopyButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.appearance-bordered": "appearance() === \"bordered\"", "class.appearance-none": "appearance() === \"none\"" }, classAttribute: "ngs-code-highlighter not-prose" }, exportAs: ["ngsCodeHighlighter"], usesOnChanges: true, ngImport: i0, template: "<figure class=\"h-full\">\n @if (title()) {\n <figcaption>\n @if (title()) {\n <span class=\"title\">{{ title() }}</span>\n }\n </figcaption>\n }\n\n <div class=\"content relative h-full\">\n @if (showLanguage()) {\n <div class=\"languageName\">{{ displayedLanguage() }}</div>\n }\n\n @if (showCopyButton()) {\n <span class=\"absolute top-2 right-2\">\n <button\n ngsIconButton\n (click)=\"copyCode()\"\n >\n <ngs-icon\n [name]=\"copied() ? 'fluent:checkmark-24-regular' : 'fluent:copy-24-regular'\"\n [class.text-green-500]=\"copied()\"\n />\n </button>\n </span>\n }\n\n <div>\n @if (content()) {\n <div [innerHTML]=\"content()\"></div>\n } @else if (isLoading()) {\n <div class=\"loading\">Loading\u2026</div>\n }\n </div>\n </div>\n</figure>\n", styles: [":host{--ngs-code-highlighter-bg: var(--ngs-color-background);--ngs-code-highlighter-radius: var(--ngs-radius-xl);--ngs-code-highlighter-padding: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-margin: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-border: 1px solid var(--ngs-color-border);--ngs-code-highlighter-title-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 3) calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 3);--ngs-code-highlighter-title-color: var(--ngs-color-neutral-500);display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}:host figcaption{font-size:var(--ngs-font-size-xs);font-weight:500;padding:var(--ngs-code-highlighter-title-padding);background:var(--ngs-code-highlighter-bg);color:var(--ngs-code-highlighter-title-color);position:relative;z-index:1}:host figcaption:after{content:\"\";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ngs-code-highlighter-bg)}:host .languageName{font-size:var(--ngs-font-size-sm);font-weight:600;padding:0 calc(var(--spacing, .25rem) * 6);width:max-content;margin-bottom:calc(var(--spacing, .25rem) * 4);margin-top:calc(calc(var(--spacing, .25rem) * 1) * -1);position:relative}:host ::ng-deep pre{padding:var(--ngs-code-highlighter-padding) 0;line-height:1.75;font-size:var(--ngs-font-size-sm);position:relative}:host ::ng-deep pre code{display:grid}:host ::ng-deep pre .line{padding-left:calc(var(--spacing, .25rem) * 6);padding-right:var(--ngs-code-highlighter-padding);min-height:1.75em}:host ::ng-deep pre .line.diff.remove{background-color:var(--ngs-color-danger);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.remove{background-color:color-mix(in srgb,var(--ngs-color-danger),transparent 85%)}}:host ::ng-deep pre .line.diff.remove:before{content:\"-\";color:var(--ngs-color-danger);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.diff.add{background-color:var(--ngs-color-success);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.add{background-color:color-mix(in srgb,var(--ngs-color-success),transparent 85%)}}:host ::ng-deep pre .line.diff.add:before{content:\"+\";color:var(--ngs-color-success);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.highlighted{background-color:var(--ngs-color-primary);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.highlighted{background-color:color-mix(in srgb,var(--ngs-color-primary),transparent 92%)}}:host ::ng-deep code{white-space:pre}:host .content{overflow:auto;background:var(--ngs-code-highlighter-bg)}:host .content button{color:inherit}:host .content button ngs-icon.text-green-500{color:var(--ngs-color-success)!important}:host.appearance-bordered figcaption{border:var(--ngs-code-highlighter-border);border-bottom:none;border-top-left-radius:var(--ngs-radius-xl);border-top-right-radius:var(--ngs-radius-xl);width:max-content}:host.appearance-bordered .content{border:var(--ngs-code-highlighter-border);border-radius:var(--ngs-code-highlighter-radius);z-index:0}:host.appearance-bordered:has(figcaption) .content{border-top-left-radius:0}:host.appearance-none .content{border:none;background-color:transparent!important;border-radius:0}:host.appearance-none ::ng-deep pre{padding-left:0;padding-right:0}:host.loading{opacity:.6}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
332
334
|
}
|
|
333
335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CodeHighlighter, decorators: [{
|
|
334
336
|
type: Component,
|
|
@@ -336,7 +338,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
336
338
|
'class': 'ngs-code-highlighter not-prose',
|
|
337
339
|
'[class.appearance-bordered]': 'appearance() === "bordered"',
|
|
338
340
|
'[class.appearance-none]': 'appearance() === "none"',
|
|
339
|
-
}, template: "<figure>\n @if (title()) {\n <figcaption>\n @if (title()) {\n <span class=\"title\">{{ title() }}</span>\n }\n </figcaption>\n }\n\n <div class=\"content relative\">\n @if (showLanguage()) {\n <div class=\"languageName\">{{ displayedLanguage() }}</div>\n }\n\n @if (showCopyButton()) {\n <span class=\"absolute top-2 right-2\">\n <button\n ngsIconButton\n (click)=\"copyCode()\"\n >\n <ngs-icon\n [name]=\"copied() ? 'fluent:checkmark-24-regular' : 'fluent:copy-24-regular'\"\n [class.text-green-500]=\"copied()\"\n />\n </button>\n </span>\n }\n\n <div>\n @if (content()) {\n <div [innerHTML]=\"content()\"></div>\n } @else {\n <div class=\"loading\">Loading\u2026</div>\n }\n </div>\n </div>\n</figure>\n", styles: [":host{--ngs-code-highlighter-bg: var(--ngs-color-background);--ngs-code-highlighter-radius: var(--ngs-radius-xl);--ngs-code-highlighter-padding: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-margin: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-border: 1px solid var(--ngs-color-border);--ngs-code-highlighter-title-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 3) calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 3);--ngs-code-highlighter-title-color: var(--ngs-color-neutral-500);display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}:host figcaption{font-size:var(--ngs-font-size-xs);font-weight:500;padding:var(--ngs-code-highlighter-title-padding);background:var(--ngs-code-highlighter-bg);color:var(--ngs-code-highlighter-title-color);position:relative;z-index:1}:host figcaption:after{content:\"\";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ngs-code-highlighter-bg)}:host .languageName{font-size:var(--ngs-font-size-sm);font-weight:600;padding:0 calc(var(--spacing, .25rem) * 6);width:max-content;margin-bottom:calc(var(--spacing, .25rem) * 4);margin-top:calc(calc(var(--spacing, .25rem) * 1) * -1);position:relative}:host ::ng-deep pre{padding:var(--ngs-code-highlighter-padding) 0;line-height:1.75;font-size:var(--ngs-font-size-sm);position:relative}:host ::ng-deep pre code{display:grid}:host ::ng-deep pre .line{padding-left:calc(var(--spacing, .25rem) * 6);padding-right:var(--ngs-code-highlighter-padding);min-height:1.75em}:host ::ng-deep pre .line.diff.remove{background-color:var(--ngs-color-danger);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.remove{background-color:color-mix(in srgb,var(--ngs-color-danger),transparent 85%)}}:host ::ng-deep pre .line.diff.remove:before{content:\"-\";color:var(--ngs-color-danger);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.diff.add{background-color:var(--ngs-color-success);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.add{background-color:color-mix(in srgb,var(--ngs-color-success),transparent 85%)}}:host ::ng-deep pre .line.diff.add:before{content:\"+\";color:var(--ngs-color-success);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.highlighted{background-color:var(--ngs-color-primary);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.highlighted{background-color:color-mix(in srgb,var(--ngs-color-primary),transparent 92%)}}:host ::ng-deep code{white-space:pre}:host .content{overflow:auto;background:var(--ngs-code-highlighter-bg)}:host .content button{color:inherit}:host .content button ngs-icon.text-green-500{color:var(--ngs-color-success)!important}:host.appearance-bordered figcaption{border:var(--ngs-code-highlighter-border);border-bottom:none;border-top-left-radius:var(--ngs-radius-xl);border-top-right-radius:var(--ngs-radius-xl);width:max-content}:host.appearance-bordered .content{border:var(--ngs-code-highlighter-border);border-radius:var(--ngs-code-highlighter-radius);z-index:0}:host.appearance-bordered:has(figcaption) .content{border-top-left-radius:0}:host.appearance-none .content{border:none;background-color:transparent!important;border-radius:0}:host.appearance-none ::ng-deep pre{padding-left:0;padding-right:0}:host.loading{opacity:.6}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
341
|
+
}, template: "<figure class=\"h-full\">\n @if (title()) {\n <figcaption>\n @if (title()) {\n <span class=\"title\">{{ title() }}</span>\n }\n </figcaption>\n }\n\n <div class=\"content relative h-full\">\n @if (showLanguage()) {\n <div class=\"languageName\">{{ displayedLanguage() }}</div>\n }\n\n @if (showCopyButton()) {\n <span class=\"absolute top-2 right-2\">\n <button\n ngsIconButton\n (click)=\"copyCode()\"\n >\n <ngs-icon\n [name]=\"copied() ? 'fluent:checkmark-24-regular' : 'fluent:copy-24-regular'\"\n [class.text-green-500]=\"copied()\"\n />\n </button>\n </span>\n }\n\n <div>\n @if (content()) {\n <div [innerHTML]=\"content()\"></div>\n } @else if (isLoading()) {\n <div class=\"loading\">Loading\u2026</div>\n }\n </div>\n </div>\n</figure>\n", styles: [":host{--ngs-code-highlighter-bg: var(--ngs-color-background);--ngs-code-highlighter-radius: var(--ngs-radius-xl);--ngs-code-highlighter-padding: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-margin: calc(var(--spacing, .25rem) * 5);--ngs-code-highlighter-border: 1px solid var(--ngs-color-border);--ngs-code-highlighter-title-padding: calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 3) calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 3);--ngs-code-highlighter-title-color: var(--ngs-color-neutral-500);display:block;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}:host figcaption{font-size:var(--ngs-font-size-xs);font-weight:500;padding:var(--ngs-code-highlighter-title-padding);background:var(--ngs-code-highlighter-bg);color:var(--ngs-code-highlighter-title-color);position:relative;z-index:1}:host figcaption:after{content:\"\";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--ngs-code-highlighter-bg)}:host .languageName{font-size:var(--ngs-font-size-sm);font-weight:600;padding:0 calc(var(--spacing, .25rem) * 6);width:max-content;margin-bottom:calc(var(--spacing, .25rem) * 4);margin-top:calc(calc(var(--spacing, .25rem) * 1) * -1);position:relative}:host ::ng-deep pre{padding:var(--ngs-code-highlighter-padding) 0;line-height:1.75;font-size:var(--ngs-font-size-sm);position:relative}:host ::ng-deep pre code{display:grid}:host ::ng-deep pre .line{padding-left:calc(var(--spacing, .25rem) * 6);padding-right:var(--ngs-code-highlighter-padding);min-height:1.75em}:host ::ng-deep pre .line.diff.remove{background-color:var(--ngs-color-danger);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.remove{background-color:color-mix(in srgb,var(--ngs-color-danger),transparent 85%)}}:host ::ng-deep pre .line.diff.remove:before{content:\"-\";color:var(--ngs-color-danger);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.diff.add{background-color:var(--ngs-color-success);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.diff.add{background-color:color-mix(in srgb,var(--ngs-color-success),transparent 85%)}}:host ::ng-deep pre .line.diff.add:before{content:\"+\";color:var(--ngs-color-success);position:absolute;left:calc(var(--spacing, .25rem) * 2)}:host ::ng-deep pre .line.highlighted{background-color:var(--ngs-color-primary);display:inline-block;width:100%}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep pre .line.highlighted{background-color:color-mix(in srgb,var(--ngs-color-primary),transparent 92%)}}:host ::ng-deep code{white-space:pre}:host .content{overflow:auto;background:var(--ngs-code-highlighter-bg)}:host .content button{color:inherit}:host .content button ngs-icon.text-green-500{color:var(--ngs-color-success)!important}:host.appearance-bordered figcaption{border:var(--ngs-code-highlighter-border);border-bottom:none;border-top-left-radius:var(--ngs-radius-xl);border-top-right-radius:var(--ngs-radius-xl);width:max-content}:host.appearance-bordered .content{border:var(--ngs-code-highlighter-border);border-radius:var(--ngs-code-highlighter-radius);z-index:0}:host.appearance-bordered:has(figcaption) .content{border-top-left-radius:0}:host.appearance-none .content{border:none;background-color:transparent!important;border-radius:0}:host.appearance-none ::ng-deep pre{padding-left:0;padding-right:0}:host.loading{opacity:.6}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
340
342
|
}], propDecorators: { code: [{ type: i0.Input, args: [{ isSignal: true, alias: "code", required: true }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], diff: [{ type: i0.Input, args: [{ isSignal: true, alias: "diff", required: false }] }], highlightLines: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightLines", required: false }] }], showLanguage: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLanguage", required: false }] }], showCopyButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCopyButton", required: false }] }] } });
|
|
341
343
|
|
|
342
344
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-code-highlighter.mjs","sources":["../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.ts","../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.html","../../../projects/components/code-highlighter/ngstarter-ui-components-code-highlighter.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input, OnChanges, SimpleChanges, signal, computed, inject, booleanAttribute } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { codeToHtml, ShikiTransformer } from 'shiki';\nimport { Button } from '@ngstarter-ui/components/button';\nimport { Icon } from '@ngstarter-ui/components/icon';\n\nconst removeDiffPrefix = (node: any) => {\n if (!node.children || node.children.length === 0) return;\n\n const firstChild = node.children[0];\n if (firstChild.type === 'element' && firstChild.children && firstChild.children.length > 0) {\n const textNode = firstChild.children[0];\n if (textNode.type === 'text' && (textNode.value.startsWith('+') || textNode.value.startsWith('-'))) {\n textNode.value = textNode.value.slice(1);\n if (textNode.value === '' && firstChild.children.length === 1) {\n node.children.shift();\n }\n }\n } else if (firstChild.type === 'text' && (firstChild.value.startsWith('+') || firstChild.value.startsWith('-'))) {\n firstChild.value = firstChild.value.slice(1);\n if (firstChild.value === '') {\n node.children.shift();\n }\n }\n};\n\nconst diffTransformer: ShikiTransformer = {\n line(node, line) {\n if (this.options.lang === 'diff' || (this.options as any).diff) {\n const lineTokens = this.tokens[line - 1];\n const text = lineTokens.map(token => token.content).join('');\n if (text.startsWith('+')) {\n this.addClassToHast(node, 'diff add');\n removeDiffPrefix(node);\n } else if (text.startsWith('-')) {\n this.addClassToHast(node, 'diff remove');\n removeDiffPrefix(node);\n }\n }\n }\n};\n\n@Component({\n selector: 'ngs-code-highlighter',\n standalone: true,\n imports: [Button, Icon],\n exportAs: 'ngsCodeHighlighter',\n templateUrl: './code-highlighter.html',\n styleUrl: './code-highlighter.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-code-highlighter not-prose',\n '[class.appearance-bordered]': 'appearance() === \"bordered\"',\n '[class.appearance-none]': 'appearance() === \"none\"',\n }\n})\nexport class CodeHighlighter implements OnChanges {\n private sanitizer = inject(DomSanitizer);\n\n code = input.required<string>();\n language = input<string>('none');\n theme = input<string>('github-light');\n title = input<string | null>(null);\n appearance = input<'none' | 'bordered'>('bordered');\n diff = input<boolean>(false);\n highlightLines = input<number[] | number[][]>([]);\n showLanguage = input(false, { transform: booleanAttribute });\n showCopyButton = input(false, { transform: booleanAttribute });\n\n readonly content = signal<SafeHtml | null>(null);\n readonly isLoading = signal<boolean>(false);\n\n readonly displayedLanguage = computed(() => {\n const lang = this.language();\n if (!lang || lang === 'none') return '';\n\n const langMap: Record<string, string> = {\n '1c': '1C',\n 'abap': 'ABAP',\n 'actionscript-3': 'ActionScript 3',\n 'ada': 'Ada',\n 'apache': 'Apache',\n 'apex': 'Apex',\n 'apl': 'APL',\n 'applescript': 'AppleScript',\n 'ara': 'Ara',\n 'asm': 'Assembly',\n 'astro': 'Astro',\n 'awk': 'AWK',\n 'ballerina': 'Ballerina',\n 'bash': 'Bash',\n 'sh': 'Bash',\n 'batch': 'Batch',\n 'berry': 'Berry',\n 'bibtex': 'BibTeX',\n 'bicep': 'Bicep',\n 'blade': 'Blade',\n 'c': 'C',\n 'cadence': 'Cadence',\n 'clarity': 'Clarity',\n 'clojure': 'Clojure',\n 'clj': 'Clojure',\n 'cmake': 'CMake',\n 'cobol': 'COBOL',\n 'codeql': 'CodeQL',\n 'coffee': 'CoffeeScript',\n 'cpp': 'C++',\n 'csharp': 'C#',\n 'cs': 'C#',\n 'css': 'CSS',\n 'cue': 'CUE',\n 'cypher': 'Cypher',\n 'd': 'D',\n 'dart': 'Dart',\n 'dax': 'DAX',\n 'diff': 'Diff',\n 'docker': 'Docker',\n 'dockerfile': 'Dockerfile',\n 'dream-maker': 'Dream Maker',\n 'elixir': 'Elixir',\n 'elm': 'Elm',\n 'erb': 'ERB',\n 'erlang': 'Erlang',\n 'fish': 'Fish',\n 'fsharp': 'F#',\n 'fs': 'F#',\n 'gdresource': 'GDResource',\n 'gdscript': 'GDScript',\n 'gdshader': 'GDShader',\n 'gherkin': 'Gherkin',\n 'git-commit': 'Git Commit',\n 'git-rebase': 'Git Rebase',\n 'glimmer-js': 'Glimmer JS',\n 'gljs': 'Glimmer JS',\n 'glsl': 'GLSL',\n 'gnuplot': 'Gnuplot',\n 'go': 'Go',\n 'graphql': 'GraphQL',\n 'groovy': 'Groovy',\n 'hack': 'Hack',\n 'haml': 'Haml',\n 'handlebars': 'Handlebars',\n 'hbs': 'Handlebars',\n 'haskell': 'Haskell',\n 'hs': 'Haskell',\n 'hcl': 'HCL',\n 'hjson': 'Hjson',\n 'hlsl': 'HLSL',\n 'html': 'HTML',\n 'http': 'HTTP',\n 'imba': 'Imba',\n 'ini': 'INI',\n 'java': 'Java',\n 'javascript': 'JavaScript',\n 'js': 'JavaScript',\n 'jinja-html': 'Jinja HTML',\n 'jjson': 'JJSON',\n 'json': 'JSON',\n 'json5': 'JSON5',\n 'jsonc': 'JSONC',\n 'jsonnet': 'Jsonnet',\n 'jssm': 'JSSM',\n 'jsx': 'JSX',\n 'julia': 'Julia',\n 'kotlin': 'Kotlin',\n 'kt': 'Kotlin',\n 'kts': 'Kotlin',\n 'kusto': 'Kusto',\n 'latex': 'LaTeX',\n 'lat': 'LaTeX',\n 'tex': 'LaTeX',\n 'lean': 'Lean',\n 'less': 'Less',\n 'liquid': 'Liquid',\n 'lisp': 'Lisp',\n 'logo': 'Logo',\n 'lua': 'Lua',\n 'make': 'Make',\n 'makefile': 'Makefile',\n 'markdown': 'Markdown',\n 'md': 'Markdown',\n 'marko': 'Marko',\n 'matlab': 'MATLAB',\n 'mdx': 'MDX',\n 'mermaid': 'Mermaid',\n 'mipsasm': 'MIPS Assembly',\n 'mips': 'MIPS Assembly',\n 'mojolicious': 'Mojolicious',\n 'move': 'Move',\n 'narrat': 'Narrat',\n 'nextflow': 'Nextflow',\n 'nginx': 'Nginx',\n 'nim': 'Nim',\n 'nix': 'Nix',\n 'objective-c': 'Objective-C',\n 'objc': 'Objective-C',\n 'objective-cpp': 'Objective-C++',\n 'ocaml': 'OCaml',\n 'pascal': 'Pascal',\n 'perl': 'Perl',\n 'pl': 'Perl',\n 'php': 'PHP',\n 'plsql': 'PL/SQL',\n 'postcss': 'PostCSS',\n 'powerquery': 'PowerQuery',\n 'powershell': 'PowerShell',\n 'ps1': 'PowerShell',\n 'prisma': 'Prisma',\n 'prolog': 'Prolog',\n 'proto': 'Protocol Buffers',\n 'pug': 'Pug',\n 'jade': 'Pug',\n 'puppet': 'Puppet',\n 'purescript': 'PureScript',\n 'python': 'Python',\n 'py': 'Python',\n 'r': 'R',\n 'raku': 'Raku',\n 'razor': 'Razor',\n 'reg': 'Registry',\n 'rel': 'Rel',\n 'riscv': 'RISC-V',\n 'rst': 'reStructuredText',\n 'ruby': 'Ruby',\n 'rb': 'Ruby',\n 'rust': 'Rust',\n 'rs': 'Rust',\n 'sas': 'SAS',\n 'sass': 'Sass',\n 'scala': 'Scala',\n 'scheme': 'Scheme',\n 'scss': 'SCSS',\n 'shaderlab': 'ShaderLab',\n 'shader': 'ShaderLab',\n 'shell': 'Shell',\n 'shellscript': 'Shell',\n 'smalltalk': 'Smalltalk',\n 'solidity': 'Solidity',\n 'sparql': 'SPARQL',\n 'sql': 'SQL',\n 'ssh-config': 'SSH Config',\n 'stata': 'Stata',\n 'stylus': 'Stylus',\n 'styl': 'Stylus',\n 'svelte': 'Svelte',\n 'swift': 'Swift',\n 'system-verilog': 'SystemVerilog',\n 'tasl': 'Tasl',\n 'tcl': 'Tcl',\n 'terraform': 'Terraform',\n 'tf': 'Terraform',\n 'toml': 'TOML',\n 'tsx': 'TSX',\n 'turtle': 'Turtle',\n 'twig': 'Twig',\n 'typescript': 'TypeScript',\n 'ts': 'TypeScript',\n 'v': 'V',\n 'vb': 'Visual Basic',\n 'verilog': 'Verilog',\n 'vhdl': 'VHDL',\n 'viml': 'VimL',\n 'vim': 'VimL',\n 'vue': 'Vue',\n 'vyper': 'Vyper',\n 'wasm': 'WebAssembly',\n 'wenyan': 'Wenyan',\n 'wgsl': 'WGSL',\n 'wolfram': 'Wolfram',\n 'xml': 'XML',\n 'xsl': 'XSL',\n 'yaml': 'YAML',\n 'yml': 'YAML',\n 'zenscript': 'ZenScript',\n 'zig': 'Zig',\n 'zsh': 'Zsh',\n };\n\n return langMap[lang.toLowerCase()] || lang;\n });\n\n private getHighlightTransformer(): ShikiTransformer {\n const highlights = this.highlightLines();\n if (!highlights || (Array.isArray(highlights) && highlights.length === 0)) {\n return {};\n }\n\n const isHighlighted = (line: number): boolean => {\n if (Array.isArray(highlights[0])) {\n return (highlights as number[][]).some(([start, end]) => line >= start && line <= end);\n } else {\n const [start, end] = highlights as number[];\n return line >= start && line <= end;\n }\n };\n\n return {\n line(node, line) {\n if (isHighlighted(line)) {\n this.addClassToHast(node, 'highlighted');\n }\n }\n };\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (!this.code()) {\n this.content.set(null);\n return;\n }\n this.isLoading.set(true);\n try {\n const highlighted = await codeToHtml(\n this.code(),\n {\n lang: this.language(),\n theme: this.theme(),\n transformers: [diffTransformer, this.getHighlightTransformer()],\n diff: this.diff()\n } as any\n );\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(highlighted));\n } catch (e) {\n // Fallback: raw code escaped inside pre\n const escaped = this.code()\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n const fallback = `<pre class=\"shiki\"><code>${escaped}</code></pre>`;\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(fallback));\n console.error('CodeHighlighter error:', e);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n copied = signal(false);\n private copyTimeout?: any;\n\n copyCode() {\n if (this.code()) {\n navigator.clipboard.writeText(this.code());\n this.copied.set(true);\n\n if (this.copyTimeout) {\n clearTimeout(this.copyTimeout);\n }\n\n this.copyTimeout = setTimeout(() => {\n this.copied.set(false);\n this.copyTimeout = undefined;\n }, 2000);\n }\n }\n}\n","<figure>\n @if (title()) {\n <figcaption>\n @if (title()) {\n <span class=\"title\">{{ title() }}</span>\n }\n </figcaption>\n }\n\n <div class=\"content relative\">\n @if (showLanguage()) {\n <div class=\"languageName\">{{ displayedLanguage() }}</div>\n }\n\n @if (showCopyButton()) {\n <span class=\"absolute top-2 right-2\">\n <button\n ngsIconButton\n (click)=\"copyCode()\"\n >\n <ngs-icon\n [name]=\"copied() ? 'fluent:checkmark-24-regular' : 'fluent:copy-24-regular'\"\n [class.text-green-500]=\"copied()\"\n />\n </button>\n </span>\n }\n\n <div>\n @if (content()) {\n <div [innerHTML]=\"content()\"></div>\n } @else {\n <div class=\"loading\">Loading…</div>\n }\n </div>\n </div>\n</figure>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-code-highlighter.mjs","sources":["../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.ts","../../../projects/components/code-highlighter/src/code-highlighter/code-highlighter.html","../../../projects/components/code-highlighter/ngstarter-ui-components-code-highlighter.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input, OnChanges, SimpleChanges, signal, computed, inject, booleanAttribute } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { codeToHtml, ShikiTransformer } from 'shiki';\nimport { Button } from '@ngstarter-ui/components/button';\nimport { Icon } from '@ngstarter-ui/components/icon';\n\nconst removeDiffPrefix = (node: any) => {\n if (!node.children || node.children.length === 0) return;\n\n const firstChild = node.children[0];\n if (firstChild.type === 'element' && firstChild.children && firstChild.children.length > 0) {\n const textNode = firstChild.children[0];\n if (textNode.type === 'text' && (textNode.value.startsWith('+') || textNode.value.startsWith('-'))) {\n textNode.value = textNode.value.slice(1);\n if (textNode.value === '' && firstChild.children.length === 1) {\n node.children.shift();\n }\n }\n } else if (firstChild.type === 'text' && (firstChild.value.startsWith('+') || firstChild.value.startsWith('-'))) {\n firstChild.value = firstChild.value.slice(1);\n if (firstChild.value === '') {\n node.children.shift();\n }\n }\n};\n\nconst diffTransformer: ShikiTransformer = {\n line(node, line) {\n if (this.options.lang === 'diff' || (this.options as any).diff) {\n const lineTokens = this.tokens[line - 1];\n const text = lineTokens.map(token => token.content).join('');\n if (text.startsWith('+')) {\n this.addClassToHast(node, 'diff add');\n removeDiffPrefix(node);\n } else if (text.startsWith('-')) {\n this.addClassToHast(node, 'diff remove');\n removeDiffPrefix(node);\n }\n }\n }\n};\n\n@Component({\n selector: 'ngs-code-highlighter',\n standalone: true,\n imports: [Button, Icon],\n exportAs: 'ngsCodeHighlighter',\n templateUrl: './code-highlighter.html',\n styleUrl: './code-highlighter.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-code-highlighter not-prose',\n '[class.appearance-bordered]': 'appearance() === \"bordered\"',\n '[class.appearance-none]': 'appearance() === \"none\"',\n }\n})\nexport class CodeHighlighter implements OnChanges {\n private sanitizer = inject(DomSanitizer);\n\n code = input.required<string>();\n language = input<string>('none');\n theme = input<string>('github-light');\n title = input<string | null>(null);\n appearance = input<'none' | 'bordered'>('bordered');\n diff = input<boolean>(false);\n highlightLines = input<number[] | number[][]>([]);\n showLanguage = input(false, { transform: booleanAttribute });\n showCopyButton = input(false, { transform: booleanAttribute });\n\n readonly content = signal<SafeHtml | null>(null);\n readonly isLoading = signal<boolean>(false);\n\n readonly displayedLanguage = computed(() => {\n const lang = this.language();\n if (!lang || lang === 'none') return '';\n\n const langMap: Record<string, string> = {\n '1c': '1C',\n 'abap': 'ABAP',\n 'actionscript-3': 'ActionScript 3',\n 'ada': 'Ada',\n 'apache': 'Apache',\n 'apex': 'Apex',\n 'apl': 'APL',\n 'applescript': 'AppleScript',\n 'ara': 'Ara',\n 'asm': 'Assembly',\n 'astro': 'Astro',\n 'awk': 'AWK',\n 'ballerina': 'Ballerina',\n 'bash': 'Bash',\n 'sh': 'Bash',\n 'batch': 'Batch',\n 'berry': 'Berry',\n 'bibtex': 'BibTeX',\n 'bicep': 'Bicep',\n 'blade': 'Blade',\n 'c': 'C',\n 'cadence': 'Cadence',\n 'clarity': 'Clarity',\n 'clojure': 'Clojure',\n 'clj': 'Clojure',\n 'cmake': 'CMake',\n 'cobol': 'COBOL',\n 'codeql': 'CodeQL',\n 'coffee': 'CoffeeScript',\n 'cpp': 'C++',\n 'csharp': 'C#',\n 'cs': 'C#',\n 'css': 'CSS',\n 'cue': 'CUE',\n 'cypher': 'Cypher',\n 'd': 'D',\n 'dart': 'Dart',\n 'dax': 'DAX',\n 'diff': 'Diff',\n 'docker': 'Docker',\n 'dockerfile': 'Dockerfile',\n 'dream-maker': 'Dream Maker',\n 'elixir': 'Elixir',\n 'elm': 'Elm',\n 'erb': 'ERB',\n 'erlang': 'Erlang',\n 'fish': 'Fish',\n 'fsharp': 'F#',\n 'fs': 'F#',\n 'gdresource': 'GDResource',\n 'gdscript': 'GDScript',\n 'gdshader': 'GDShader',\n 'gherkin': 'Gherkin',\n 'git-commit': 'Git Commit',\n 'git-rebase': 'Git Rebase',\n 'glimmer-js': 'Glimmer JS',\n 'gljs': 'Glimmer JS',\n 'glsl': 'GLSL',\n 'gnuplot': 'Gnuplot',\n 'go': 'Go',\n 'graphql': 'GraphQL',\n 'groovy': 'Groovy',\n 'hack': 'Hack',\n 'haml': 'Haml',\n 'handlebars': 'Handlebars',\n 'hbs': 'Handlebars',\n 'haskell': 'Haskell',\n 'hs': 'Haskell',\n 'hcl': 'HCL',\n 'hjson': 'Hjson',\n 'hlsl': 'HLSL',\n 'html': 'HTML',\n 'http': 'HTTP',\n 'imba': 'Imba',\n 'ini': 'INI',\n 'java': 'Java',\n 'javascript': 'JavaScript',\n 'js': 'JavaScript',\n 'jinja-html': 'Jinja HTML',\n 'jjson': 'JJSON',\n 'json': 'JSON',\n 'json5': 'JSON5',\n 'jsonc': 'JSONC',\n 'jsonnet': 'Jsonnet',\n 'jssm': 'JSSM',\n 'jsx': 'JSX',\n 'julia': 'Julia',\n 'kotlin': 'Kotlin',\n 'kt': 'Kotlin',\n 'kts': 'Kotlin',\n 'kusto': 'Kusto',\n 'latex': 'LaTeX',\n 'lat': 'LaTeX',\n 'tex': 'LaTeX',\n 'lean': 'Lean',\n 'less': 'Less',\n 'liquid': 'Liquid',\n 'lisp': 'Lisp',\n 'logo': 'Logo',\n 'lua': 'Lua',\n 'make': 'Make',\n 'makefile': 'Makefile',\n 'markdown': 'Markdown',\n 'md': 'Markdown',\n 'marko': 'Marko',\n 'matlab': 'MATLAB',\n 'mdx': 'MDX',\n 'mermaid': 'Mermaid',\n 'mipsasm': 'MIPS Assembly',\n 'mips': 'MIPS Assembly',\n 'mojolicious': 'Mojolicious',\n 'move': 'Move',\n 'narrat': 'Narrat',\n 'nextflow': 'Nextflow',\n 'nginx': 'Nginx',\n 'nim': 'Nim',\n 'nix': 'Nix',\n 'objective-c': 'Objective-C',\n 'objc': 'Objective-C',\n 'objective-cpp': 'Objective-C++',\n 'ocaml': 'OCaml',\n 'pascal': 'Pascal',\n 'perl': 'Perl',\n 'pl': 'Perl',\n 'php': 'PHP',\n 'plsql': 'PL/SQL',\n 'postcss': 'PostCSS',\n 'powerquery': 'PowerQuery',\n 'powershell': 'PowerShell',\n 'ps1': 'PowerShell',\n 'prisma': 'Prisma',\n 'prolog': 'Prolog',\n 'proto': 'Protocol Buffers',\n 'pug': 'Pug',\n 'jade': 'Pug',\n 'puppet': 'Puppet',\n 'purescript': 'PureScript',\n 'python': 'Python',\n 'py': 'Python',\n 'r': 'R',\n 'raku': 'Raku',\n 'razor': 'Razor',\n 'reg': 'Registry',\n 'rel': 'Rel',\n 'riscv': 'RISC-V',\n 'rst': 'reStructuredText',\n 'ruby': 'Ruby',\n 'rb': 'Ruby',\n 'rust': 'Rust',\n 'rs': 'Rust',\n 'sas': 'SAS',\n 'sass': 'Sass',\n 'scala': 'Scala',\n 'scheme': 'Scheme',\n 'scss': 'SCSS',\n 'shaderlab': 'ShaderLab',\n 'shader': 'ShaderLab',\n 'shell': 'Shell',\n 'shellscript': 'Shell',\n 'smalltalk': 'Smalltalk',\n 'solidity': 'Solidity',\n 'sparql': 'SPARQL',\n 'sql': 'SQL',\n 'ssh-config': 'SSH Config',\n 'stata': 'Stata',\n 'stylus': 'Stylus',\n 'styl': 'Stylus',\n 'svelte': 'Svelte',\n 'swift': 'Swift',\n 'system-verilog': 'SystemVerilog',\n 'tasl': 'Tasl',\n 'tcl': 'Tcl',\n 'terraform': 'Terraform',\n 'tf': 'Terraform',\n 'toml': 'TOML',\n 'tsx': 'TSX',\n 'turtle': 'Turtle',\n 'twig': 'Twig',\n 'typescript': 'TypeScript',\n 'ts': 'TypeScript',\n 'v': 'V',\n 'vb': 'Visual Basic',\n 'verilog': 'Verilog',\n 'vhdl': 'VHDL',\n 'viml': 'VimL',\n 'vim': 'VimL',\n 'vue': 'Vue',\n 'vyper': 'Vyper',\n 'wasm': 'WebAssembly',\n 'wenyan': 'Wenyan',\n 'wgsl': 'WGSL',\n 'wolfram': 'Wolfram',\n 'xml': 'XML',\n 'xsl': 'XSL',\n 'yaml': 'YAML',\n 'yml': 'YAML',\n 'zenscript': 'ZenScript',\n 'zig': 'Zig',\n 'zsh': 'Zsh',\n };\n\n return langMap[lang.toLowerCase()] || lang;\n });\n\n private getHighlightTransformer(): ShikiTransformer {\n const highlights = this.highlightLines();\n if (!highlights || (Array.isArray(highlights) && highlights.length === 0)) {\n return {};\n }\n\n const isHighlighted = (line: number): boolean => {\n if (Array.isArray(highlights[0])) {\n return (highlights as number[][]).some(([start, end]) => line >= start && line <= end);\n } else {\n const [start, end] = highlights as number[];\n return line >= start && line <= end;\n }\n };\n\n return {\n line(node, line) {\n if (isHighlighted(line)) {\n this.addClassToHast(node, 'highlighted');\n }\n }\n };\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n const code = this.code() ?? '';\n\n if (code.length === 0) {\n this.isLoading.set(false);\n this.content.set(this.sanitizer.bypassSecurityTrustHtml('<pre class=\"shiki\"><code></code></pre>'));\n return;\n }\n\n this.isLoading.set(true);\n try {\n const highlighted = await codeToHtml(\n code,\n {\n lang: this.language(),\n theme: this.theme(),\n transformers: [diffTransformer, this.getHighlightTransformer()],\n diff: this.diff()\n } as any\n );\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(highlighted));\n } catch (e) {\n // Fallback: raw code escaped inside pre\n const escaped = code\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n const fallback = `<pre class=\"shiki\"><code>${escaped}</code></pre>`;\n this.content.set(this.sanitizer.bypassSecurityTrustHtml(fallback));\n console.error('CodeHighlighter error:', e);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n copied = signal(false);\n private copyTimeout?: any;\n\n copyCode() {\n if (this.code()) {\n navigator.clipboard.writeText(this.code());\n this.copied.set(true);\n\n if (this.copyTimeout) {\n clearTimeout(this.copyTimeout);\n }\n\n this.copyTimeout = setTimeout(() => {\n this.copied.set(false);\n this.copyTimeout = undefined;\n }, 2000);\n }\n }\n}\n","<figure class=\"h-full\">\n @if (title()) {\n <figcaption>\n @if (title()) {\n <span class=\"title\">{{ title() }}</span>\n }\n </figcaption>\n }\n\n <div class=\"content relative h-full\">\n @if (showLanguage()) {\n <div class=\"languageName\">{{ displayedLanguage() }}</div>\n }\n\n @if (showCopyButton()) {\n <span class=\"absolute top-2 right-2\">\n <button\n ngsIconButton\n (click)=\"copyCode()\"\n >\n <ngs-icon\n [name]=\"copied() ? 'fluent:checkmark-24-regular' : 'fluent:copy-24-regular'\"\n [class.text-green-500]=\"copied()\"\n />\n </button>\n </span>\n }\n\n <div>\n @if (content()) {\n <div [innerHTML]=\"content()\"></div>\n } @else if (isLoading()) {\n <div class=\"loading\">Loading…</div>\n }\n </div>\n </div>\n</figure>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,gBAAgB,GAAG,CAAC,IAAS,KAAI;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE;IAElD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnC,IAAA,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1F,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;YAClG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,YAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACvB;QACF;IACF;SAAO,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,KAAK,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QAC/G,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAI,UAAU,CAAC,KAAK,KAAK,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACvB;IACF;AACF,CAAC;AAED,MAAM,eAAe,GAAqB;IACxC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAK,IAAI,CAAC,OAAe,CAAC,IAAI,EAAE;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;AACxC,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC;gBACrC,gBAAgB,CAAC,IAAI,CAAC;YACxB;AAAO,iBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;gBACxC,gBAAgB,CAAC,IAAI,CAAC;YACxB;QACF;IACF;CACD;MAgBY,eAAe,CAAA;AAClB,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAExC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAS,MAAM,+EAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAS,cAAc,4EAAC;AACrC,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,4EAAC;AAClC,IAAA,UAAU,GAAG,KAAK,CAAsB,UAAU,iFAAC;AACnD,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;AAC5B,IAAA,cAAc,GAAG,KAAK,CAAwB,EAAE,qFAAC;IACjD,YAAY,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC5D,cAAc,GAAG,KAAK,CAAC,KAAK,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAErD,IAAA,OAAO,GAAG,MAAM,CAAkB,IAAI,8EAAC;AACvC,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,gFAAC;AAElC,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,EAAE;AAEvC,QAAA,MAAM,OAAO,GAA2B;AACtC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,gBAAgB,EAAE,gBAAgB;AAClC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,kBAAkB;AACzB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,aAAa,EAAE,OAAO;AACtB,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,gBAAgB,EAAE,eAAe;AACjC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;SACb;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI;AAC5C,IAAA,CAAC,wFAAC;IAEM,uBAAuB,GAAA;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACzE,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,IAAY,KAAa;YAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChC,OAAQ,UAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC;YACxF;iBAAO;AACL,gBAAA,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,UAAsB;AAC3C,gBAAA,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG;YACrC;AACF,QAAA,CAAC;QAED,OAAO;YACL,IAAI,CAAC,IAAI,EAAE,IAAI,EAAA;AACb,gBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;gBAC1C;YACF;SACD;IACH;IAEA,MAAM,WAAW,CAAC,OAAsB,EAAA;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AAE9B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,wCAAwC,CAAC,CAAC;YAClG;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI;AACF,YAAA,MAAM,WAAW,GAAG,MAAM,UAAU,CAClC,IAAI,EACJ;AACE,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBACnB,YAAY,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC/D,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI;AACT,aAAA,CACT;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACvE;QAAE,OAAO,CAAC,EAAE;;YAEV,MAAM,OAAO,GAAG;AACb,iBAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,iBAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,iBAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACxB,YAAA,MAAM,QAAQ,GAAG,CAAA,yBAAA,EAA4B,OAAO,eAAe;AACnE,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAClE,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAC5C;gBAAU;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;IACF;AAEA,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AACd,IAAA,WAAW;IAEnB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACf,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAErB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC;AAEA,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;YAC9B,CAAC,EAAE,IAAI,CAAC;QACV;IACF;uGA7SW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxD5B,q5BAqCA,EAAA,MAAA,EAAA,CAAA,2gHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQY,MAAM,0SAAE,IAAI,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAWX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAd3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,MAAM,EAAE,IAAI,CAAC,EAAA,QAAA,EACb,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,gCAAgC;AACzC,wBAAA,6BAA6B,EAAE,6BAA6B;AAC5D,wBAAA,yBAAyB,EAAE,yBAAyB;AACrD,qBAAA,EAAA,QAAA,EAAA,q5BAAA,EAAA,MAAA,EAAA,CAAA,2gHAAA,CAAA,EAAA;;;AEtDH;;AAEG;;;;"}
|
|
@@ -98,7 +98,7 @@ class Drawer {
|
|
|
98
98
|
provide: DRAWER,
|
|
99
99
|
useExisting: forwardRef(() => Drawer),
|
|
100
100
|
}
|
|
101
|
-
], viewQueries: [{ propertyName: "portal", first: true, predicate: ["portal"], descendants: true, isSignal: true }], exportAs: ["ngsDrawer"], ngImport: i0, template: "<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n", styles: [".ngs-drawer-container{--ngs-drawer-transition-duration: .15s;--ngs-drawer-transition: cubic-bezier(.4,0,.2,1);position:fixed;z-index:1040;top:0;right:0;max-width:90vw;bottom:0;transform:translate(100%);visibility:hidden;display:flex;flex-direction:column;pointer-events:auto}.ngs-drawer-container.open{transform:translate(0);visibility:visible;transition:transform .3s var(--ngs-drawer-transition),visibility 0s linear 0s}.ngs-drawer-container:not(.open){transition:transform .2s var(--ngs-drawer-transition),visibility 0s linear .2s}.ngs-drawer-content{background:var(--ngs-color-surface-container-lowest);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;outline:var(--ngs-dropdown-border);margin:1.75rem;flex
|
|
101
|
+
], viewQueries: [{ propertyName: "portal", first: true, predicate: ["portal"], descendants: true, isSignal: true }], exportAs: ["ngsDrawer"], ngImport: i0, template: "<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n", styles: [".ngs-drawer-container{--ngs-drawer-transition-duration: .15s;--ngs-drawer-transition: cubic-bezier(.4,0,.2,1);position:fixed;z-index:1040;top:0;right:0;max-width:90vw;bottom:0;transform:translate(100%);visibility:hidden;display:flex;flex-direction:column;min-height:0;pointer-events:auto}.ngs-drawer-container.open{transform:translate(0);visibility:visible;transition:transform .3s var(--ngs-drawer-transition),visibility 0s linear 0s}.ngs-drawer-container:not(.open){transition:transform .2s var(--ngs-drawer-transition),visibility 0s linear .2s}.ngs-drawer-content{background:var(--ngs-color-surface-container-lowest);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;outline:var(--ngs-dropdown-border);margin:1.75rem;display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden;border-radius:1rem;border:1px solid transparent}.drawer-backdrop{background:var(--ngs-overlay-backdrop-bg);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}.drawer-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-overlay-pane.pointer-events-none{pointer-events:none!important}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
102
102
|
}
|
|
103
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Drawer, decorators: [{
|
|
104
104
|
type: Component,
|
|
@@ -107,7 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
107
107
|
provide: DRAWER,
|
|
108
108
|
useExisting: forwardRef(() => Drawer),
|
|
109
109
|
}
|
|
110
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n", styles: [".ngs-drawer-container{--ngs-drawer-transition-duration: .15s;--ngs-drawer-transition: cubic-bezier(.4,0,.2,1);position:fixed;z-index:1040;top:0;right:0;max-width:90vw;bottom:0;transform:translate(100%);visibility:hidden;display:flex;flex-direction:column;pointer-events:auto}.ngs-drawer-container.open{transform:translate(0);visibility:visible;transition:transform .3s var(--ngs-drawer-transition),visibility 0s linear 0s}.ngs-drawer-container:not(.open){transition:transform .2s var(--ngs-drawer-transition),visibility 0s linear .2s}.ngs-drawer-content{background:var(--ngs-color-surface-container-lowest);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;outline:var(--ngs-dropdown-border);margin:1.75rem;flex
|
|
110
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n", styles: [".ngs-drawer-container{--ngs-drawer-transition-duration: .15s;--ngs-drawer-transition: cubic-bezier(.4,0,.2,1);position:fixed;z-index:1040;top:0;right:0;max-width:90vw;bottom:0;transform:translate(100%);visibility:hidden;display:flex;flex-direction:column;min-height:0;pointer-events:auto}.ngs-drawer-container.open{transform:translate(0);visibility:visible;transition:transform .3s var(--ngs-drawer-transition),visibility 0s linear 0s}.ngs-drawer-container:not(.open){transition:transform .2s var(--ngs-drawer-transition),visibility 0s linear .2s}.ngs-drawer-content{background:var(--ngs-color-surface-container-lowest);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;outline:var(--ngs-dropdown-border);margin:1.75rem;display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden;border-radius:1rem;border:1px solid transparent}.drawer-backdrop{background:var(--ngs-overlay-backdrop-bg);opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}.drawer-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-overlay-pane.pointer-events-none{pointer-events:none!important}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
111
111
|
}], ctorParameters: () => [], propDecorators: { initialIsOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], showBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBackdrop", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], opened: [{ type: i0.Output, args: ["opened"] }], portal: [{ type: i0.ViewChild, args: ['portal', { isSignal: true }] }] } });
|
|
112
112
|
|
|
113
113
|
class DrawerIgnoreOutsideClickDirective {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-drawer.mjs","sources":["../../../projects/components/drawer/src/types.ts","../../../projects/components/drawer/src/drawer/drawer.ts","../../../projects/components/drawer/src/drawer/drawer.html","../../../projects/components/drawer/src/drawer-ignore-outside-click.directive.ts","../../../projects/components/drawer/ngstarter-ui-components-drawer.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DRAWER = new InjectionToken('DRAWER');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DRAWER } from '../types';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'ngs-drawer',\n exportAs: 'ngsDrawer',\n templateUrl: './drawer.html',\n styleUrl: './drawer.scss',\n standalone: true,\n providers: [\n {\n provide: DRAWER,\n useExisting: forwardRef(() => Drawer),\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Drawer implements OnDestroy {\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n\n readonly initialIsOpen = input<boolean | undefined>(undefined, { alias: 'isOpen' });\n readonly showBackdrop = input(true);\n\n readonly closed = output<void>();\n readonly opened = output<void>();\n\n private internalIsOpen: WritableSignal<boolean> = signal(false);\n private overlayRef: OverlayRef | null = null;\n protected portal = viewChild.required<TemplateRef<any>>('portal');\n\n protected _isOpen: Signal<boolean> = computed(() => this.internalIsOpen());\n\n constructor() {\n effect(() => {\n const externalIsOpen = this.initialIsOpen();\n if (externalIsOpen !== undefined) {\n if (externalIsOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.close();\n }\n\n open(): void {\n if (this.internalIsOpen()) {\n return;\n }\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: this.showBackdrop(),\n backdropClass: 'drawer-backdrop',\n positionStrategy: this.overlay.position().global().right('0').top('0').bottom('0'),\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n\n this.overlayRef.backdropClick().subscribe(() => {\n this.close();\n });\n\n this.overlayRef.outsidePointerEvents().subscribe((event: MouseEvent) => {\n const target = event.target as HTMLElement;\n\n if (target.closest('.ngs-drawer-ignore-outside-click')) {\n return;\n }\n\n this.close();\n });\n\n this.overlayRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n }\n\n const portal = new TemplatePortal(this.portal(), this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n if (!this.showBackdrop()) {\n this.overlayRef.hostElement.classList.add('pointer-events-none');\n }\n\n // Delay setting internalIsOpen to true to ensure the entry animation triggers\n setTimeout(() => {\n this.internalIsOpen.set(true);\n });\n\n this.opened.emit();\n }\n\n close(): void {\n if (!this.internalIsOpen()) {\n return;\n }\n\n this.internalIsOpen.set(false);\n\n timer(150)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n this.closed.emit();\n });\n }\n\n get isOpened(): boolean {\n return this._isOpen();\n }\n}\n","<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsDrawerIgnoreOutsideClick]',\n host: {\n 'class': 'ngs-drawer-ignore-outside-click'\n }\n})\nexport class DrawerIgnoreOutsideClickDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAEa,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ;;MCsCpC,MAAM,CAAA;AACT,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAE9B,aAAa,GAAG,KAAK,CAAsB,SAAS,qFAAI,KAAK,EAAE,QAAQ,EAAA,CAAG;AAC1E,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,mFAAC;IAE1B,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;AAExB,IAAA,cAAc,GAA4B,MAAM,CAAC,KAAK,qFAAC;IACvD,UAAU,GAAsB,IAAI;AAClC,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAmB,QAAQ,CAAC;IAEvD,OAAO,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE1E,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;AAC3C,YAAA,IAAI,cAAc,KAAK,SAAS,EAAE;gBAChC,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,IAAI,EAAE;gBACb;qBAAO;oBACL,IAAI,CAAC,KAAK,EAAE;gBACd;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACpC,gBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE;AAChC,gBAAA,aAAa,EAAE,iBAAiB;gBAChC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBAClF,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK;AACpD,aAAA,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAK;gBAC7C,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,KAAiB,KAAI;AACrE,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAE1C,gBAAA,IAAI,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,EAAE;oBACtD;gBACF;gBAEA,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,KAAK,IAAG;AAChD,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;oBAC1B,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACvE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAClE;;QAGA,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAE9B,KAAK,CAAC,GAAG;AACN,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACxB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;uGAxGW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EATN;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC;AACtC;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCH,yMASA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-drawer.mjs","sources":["../../../projects/components/drawer/src/types.ts","../../../projects/components/drawer/src/drawer/drawer.ts","../../../projects/components/drawer/src/drawer/drawer.html","../../../projects/components/drawer/src/drawer-ignore-outside-click.directive.ts","../../../projects/components/drawer/ngstarter-ui-components-drawer.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DRAWER = new InjectionToken('DRAWER');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DRAWER } from '../types';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { timer } from 'rxjs';\n\n@Component({\n selector: 'ngs-drawer',\n exportAs: 'ngsDrawer',\n templateUrl: './drawer.html',\n styleUrl: './drawer.scss',\n standalone: true,\n providers: [\n {\n provide: DRAWER,\n useExisting: forwardRef(() => Drawer),\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Drawer implements OnDestroy {\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n\n readonly initialIsOpen = input<boolean | undefined>(undefined, { alias: 'isOpen' });\n readonly showBackdrop = input(true);\n\n readonly closed = output<void>();\n readonly opened = output<void>();\n\n private internalIsOpen: WritableSignal<boolean> = signal(false);\n private overlayRef: OverlayRef | null = null;\n protected portal = viewChild.required<TemplateRef<any>>('portal');\n\n protected _isOpen: Signal<boolean> = computed(() => this.internalIsOpen());\n\n constructor() {\n effect(() => {\n const externalIsOpen = this.initialIsOpen();\n if (externalIsOpen !== undefined) {\n if (externalIsOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.close();\n }\n\n open(): void {\n if (this.internalIsOpen()) {\n return;\n }\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: this.showBackdrop(),\n backdropClass: 'drawer-backdrop',\n positionStrategy: this.overlay.position().global().right('0').top('0').bottom('0'),\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n\n this.overlayRef.backdropClick().subscribe(() => {\n this.close();\n });\n\n this.overlayRef.outsidePointerEvents().subscribe((event: MouseEvent) => {\n const target = event.target as HTMLElement;\n\n if (target.closest('.ngs-drawer-ignore-outside-click')) {\n return;\n }\n\n this.close();\n });\n\n this.overlayRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n this.close();\n }\n });\n }\n\n const portal = new TemplatePortal(this.portal(), this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n if (!this.showBackdrop()) {\n this.overlayRef.hostElement.classList.add('pointer-events-none');\n }\n\n // Delay setting internalIsOpen to true to ensure the entry animation triggers\n setTimeout(() => {\n this.internalIsOpen.set(true);\n });\n\n this.opened.emit();\n }\n\n close(): void {\n if (!this.internalIsOpen()) {\n return;\n }\n\n this.internalIsOpen.set(false);\n\n timer(150)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n this.closed.emit();\n });\n }\n\n get isOpened(): boolean {\n return this._isOpen();\n }\n}\n","<ng-template #portal>\n <div\n class=\"ngs-drawer-container\"\n [class.open]=\"_isOpen()\">\n <div class=\"ngs-drawer-content\">\n <ng-content/>\n </div>\n </div>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsDrawerIgnoreOutsideClick]',\n host: {\n 'class': 'ngs-drawer-ignore-outside-click'\n }\n})\nexport class DrawerIgnoreOutsideClickDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, PLATFORM_ID, ElementRef, NgZone, Renderer2, DestroyRef, viewChild, input,
|
|
2
|
+
import { inject, PLATFORM_ID, ElementRef, NgZone, Renderer2, DestroyRef, viewChild, input, booleanAttribute, output, signal, computed, effect, untracked, ChangeDetectionStrategy, Component, numberAttribute, Directive } from '@angular/core';
|
|
3
3
|
import { isPlatformBrowser } from '@angular/common';
|
|
4
|
-
import { Observable, debounceTime, tap, merge, fromEvent, filter, switchMap, map, distinctUntilChanged, takeUntil, finalize } from 'rxjs';
|
|
4
|
+
import { Observable, debounceTime, tap, merge, fromEvent, filter, switchMap, map, distinctUntilChanged, takeUntil, finalize, Subject, startWith, auditTime } from 'rxjs';
|
|
5
5
|
import { Router, NavigationEnd } from '@angular/router';
|
|
6
6
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
7
|
|
|
@@ -18,9 +18,9 @@ class ScrollbarArea {
|
|
|
18
18
|
scrollTrackXRef = viewChild.required('scrollTrackX');
|
|
19
19
|
scrollThumbXRef = viewChild.required('scrollThumbX');
|
|
20
20
|
scrollbarWidth = input('8px', ...(ngDevMode ? [{ debugName: "scrollbarWidth" }] : /* istanbul ignore next */ []));
|
|
21
|
-
autoHide = input(true, ...(ngDevMode ?
|
|
22
|
-
absolute = input(true, ...(ngDevMode ?
|
|
23
|
-
scrolled =
|
|
21
|
+
autoHide = input(true, { ...(ngDevMode ? { debugName: "autoHide" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
22
|
+
absolute = input(true, { ...(ngDevMode ? { debugName: "absolute" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
23
|
+
scrolled = output();
|
|
24
24
|
isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : /* istanbul ignore next */ []));
|
|
25
25
|
isHovering = signal(false, ...(ngDevMode ? [{ debugName: "isHovering" }] : /* istanbul ignore next */ []));
|
|
26
26
|
scrollTop = signal(0, ...(ngDevMode ? [{ debugName: "scrollTop" }] : /* istanbul ignore next */ []));
|
|
@@ -447,13 +447,101 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
447
447
|
'[class.scrollbar-interactive]': 'isInteractive()',
|
|
448
448
|
'[class.is-absolute]': 'absolute()',
|
|
449
449
|
}, template: "<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n", styles: [":host{--ngs-scrollbar-area-thumb-bg: var(--ngs-color-neutral-200);--ngs-scrollbar-area-thumb-hover-bg: var(--ngs-color-neutral-300);--ngs-scrollbar-area-thumb-active-bg: var(--ngs-color-neutral-300);--ngs-scrollbar-area-width: 10px;--ngs-scrollbar-area-scroll-track-bg: transparent;display:block;overflow:hidden;position:absolute;inset:0}:host .scrollable-content{height:100%;overflow-y:scroll;overflow-x:scroll;width:100%;padding-right:0;box-sizing:border-box}:host .scrollable-content::-webkit-scrollbar{width:0;height:0;background:transparent}:host .scrollable-content{scrollbar-width:none;-ms-overflow-style:none}:host .scroll-track{position:absolute;top:0;right:0;bottom:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:var(--ngs-radius-sm);opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb{position:absolute;top:0;left:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:var(--ngs-radius-sm);transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-track-x{position:absolute;left:0;right:0;bottom:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:var(--ngs-radius-sm);opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb-x{position:absolute;bottom:0;left:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:var(--ngs-radius-sm);transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-thumb:hover,:host .scroll-thumb-x:hover{background:var(--ngs-scrollbar-area-thumb-hover-bg)}:host .scroll-thumb:active,:host .scroll-thumb-x:active{background:var(--ngs-scrollbar-area-thumb-active-bg)}:host.scrollbar-visible .scroll-track,:host.scrollbar-visible .scroll-track-x{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
450
|
-
}], ctorParameters: () => [], propDecorators: { scrollableContentRef: [{ type: i0.ViewChild, args: ['scrollableContent', { isSignal: true }] }], scrollTrackRef: [{ type: i0.ViewChild, args: ['scrollTrack', { isSignal: true }] }], scrollThumbRef: [{ type: i0.ViewChild, args: ['scrollThumb', { isSignal: true }] }], scrollTrackXRef: [{ type: i0.ViewChild, args: ['scrollTrackX', { isSignal: true }] }], scrollThumbXRef: [{ type: i0.ViewChild, args: ['scrollThumbX', { isSignal: true }] }], scrollbarWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollbarWidth", required: false }] }], autoHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHide", required: false }] }], absolute: [{ type: i0.Input, args: [{ isSignal: true, alias: "absolute", required: false }] }], scrolled: [{
|
|
451
|
-
|
|
452
|
-
|
|
450
|
+
}], ctorParameters: () => [], propDecorators: { scrollableContentRef: [{ type: i0.ViewChild, args: ['scrollableContent', { isSignal: true }] }], scrollTrackRef: [{ type: i0.ViewChild, args: ['scrollTrack', { isSignal: true }] }], scrollThumbRef: [{ type: i0.ViewChild, args: ['scrollThumb', { isSignal: true }] }], scrollTrackXRef: [{ type: i0.ViewChild, args: ['scrollTrackX', { isSignal: true }] }], scrollThumbXRef: [{ type: i0.ViewChild, args: ['scrollThumbX', { isSignal: true }] }], scrollbarWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollbarWidth", required: false }] }], autoHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHide", required: false }] }], absolute: [{ type: i0.Input, args: [{ isSignal: true, alias: "absolute", required: false }] }], scrolled: [{ type: i0.Output, args: ["scrolled"] }] } });
|
|
451
|
+
|
|
452
|
+
class ScrollContainerFixed {
|
|
453
|
+
elementRef = inject(ElementRef);
|
|
454
|
+
ngZone = inject(NgZone);
|
|
455
|
+
platformId = inject(PLATFORM_ID);
|
|
456
|
+
destroyRef = inject(DestroyRef);
|
|
457
|
+
refreshChanges = new Subject();
|
|
458
|
+
enabled = input(true, { ...(ngDevMode ? { debugName: "enabled" } : /* istanbul ignore next */ {}), alias: 'ngsScrollContainerFixed',
|
|
459
|
+
transform: booleanAttribute });
|
|
460
|
+
bottomOffset = input(0, { ...(ngDevMode ? { debugName: "bottomOffset" } : /* istanbul ignore next */ {}), alias: 'ngsScrollContainerFixedBottomOffset',
|
|
461
|
+
transform: numberAttribute });
|
|
462
|
+
minHeight = input(0, { ...(ngDevMode ? { debugName: "minHeight" } : /* istanbul ignore next */ {}), alias: 'ngsScrollContainerFixedMinHeight',
|
|
463
|
+
transform: numberAttribute });
|
|
464
|
+
height = signal(null, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
465
|
+
constructor() {
|
|
466
|
+
effect(() => {
|
|
467
|
+
this.enabled();
|
|
468
|
+
this.bottomOffset();
|
|
469
|
+
this.minHeight();
|
|
470
|
+
this.refresh();
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
ngAfterViewInit() {
|
|
474
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
this.ngZone.runOutsideAngular(() => {
|
|
478
|
+
merge(...this.getResizeStreams())
|
|
479
|
+
.pipe(startWith(null), auditTime(0), takeUntilDestroyed(this.destroyRef))
|
|
480
|
+
.subscribe(() => this.updateHeight());
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
refresh() {
|
|
484
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
this.refreshChanges.next();
|
|
488
|
+
}
|
|
489
|
+
updateHeight() {
|
|
490
|
+
if (!this.enabled()) {
|
|
491
|
+
this.height.set(null);
|
|
492
|
+
return;
|
|
493
|
+
}
|
|
494
|
+
const elementTop = this.elementRef.nativeElement.getBoundingClientRect().top;
|
|
495
|
+
const viewportHeight = window.visualViewport?.height ?? window.innerHeight;
|
|
496
|
+
const nextHeight = Math.max(this.minHeight(), Math.floor(viewportHeight - elementTop - this.bottomOffset()));
|
|
497
|
+
this.height.set(nextHeight);
|
|
498
|
+
}
|
|
499
|
+
getResizeStreams() {
|
|
500
|
+
const streams = [
|
|
501
|
+
this.refreshChanges.asObservable(),
|
|
502
|
+
fromEvent(window, 'resize'),
|
|
503
|
+
fromEvent(window, 'orientationchange'),
|
|
504
|
+
this.observeElement(this.elementRef.nativeElement),
|
|
505
|
+
];
|
|
506
|
+
if (this.elementRef.nativeElement.parentElement) {
|
|
507
|
+
streams.push(this.observeElement(this.elementRef.nativeElement.parentElement));
|
|
508
|
+
}
|
|
509
|
+
if (window.visualViewport) {
|
|
510
|
+
streams.push(fromEvent(window.visualViewport, 'resize'), fromEvent(window.visualViewport, 'scroll'));
|
|
511
|
+
}
|
|
512
|
+
return streams;
|
|
513
|
+
}
|
|
514
|
+
observeElement(element) {
|
|
515
|
+
return new Observable(observer => {
|
|
516
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
517
|
+
observer.complete();
|
|
518
|
+
return undefined;
|
|
519
|
+
}
|
|
520
|
+
const resizeObserver = new ResizeObserver(entries => observer.next(entries));
|
|
521
|
+
resizeObserver.observe(element);
|
|
522
|
+
return () => resizeObserver.disconnect();
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollContainerFixed, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
526
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.4", type: ScrollContainerFixed, isStandalone: true, selector: "[ngsScrollContainerFixed]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngsScrollContainerFixed", isSignal: true, isRequired: false, transformFunction: null }, bottomOffset: { classPropertyName: "bottomOffset", publicName: "ngsScrollContainerFixedBottomOffset", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "ngsScrollContainerFixedMinHeight", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.box-sizing": "\"border-box\"", "style.height.px": "height()", "style.min-height.px": "enabled() ? minHeight() : null" } }, exportAs: ["ngsScrollContainerFixed"], ngImport: i0 });
|
|
527
|
+
}
|
|
528
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollContainerFixed, decorators: [{
|
|
529
|
+
type: Directive,
|
|
530
|
+
args: [{
|
|
531
|
+
selector: '[ngsScrollContainerFixed]',
|
|
532
|
+
exportAs: 'ngsScrollContainerFixed',
|
|
533
|
+
standalone: true,
|
|
534
|
+
host: {
|
|
535
|
+
'[style.box-sizing]': '"border-box"',
|
|
536
|
+
'[style.height.px]': 'height()',
|
|
537
|
+
'[style.min-height.px]': 'enabled() ? minHeight() : null',
|
|
538
|
+
},
|
|
539
|
+
}]
|
|
540
|
+
}], ctorParameters: () => [], propDecorators: { enabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngsScrollContainerFixed", required: false }] }], bottomOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngsScrollContainerFixedBottomOffset", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngsScrollContainerFixedMinHeight", required: false }] }] } });
|
|
453
541
|
|
|
454
542
|
/**
|
|
455
543
|
* Generated bundle index. Do not edit.
|
|
456
544
|
*/
|
|
457
545
|
|
|
458
|
-
export { ScrollbarArea };
|
|
546
|
+
export { ScrollContainerFixed, ScrollbarArea };
|
|
459
547
|
//# sourceMappingURL=ngstarter-ui-components-scrollbar-area.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-scrollbar-area.mjs","sources":["../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.ts","../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.html","../../../projects/components/scrollbar-area/ngstarter-ui-components-scrollbar-area.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n NgZone,\n Renderer2,\n inject,\n PLATFORM_ID,\n signal,\n computed,\n effect,\n input,\n DestroyRef,\n untracked,\n viewChild,\n ChangeDetectionStrategy,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n fromEvent,\n map,\n takeUntil,\n switchMap,\n tap,\n merge,\n debounceTime,\n distinctUntilChanged,\n Observable,\n finalize,\n filter,\n Subscription\n} from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-scrollbar-area',\n exportAs: 'ngsScrollbarArea',\n templateUrl: './scrollbar-area.html',\n styleUrl: './scrollbar-area.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-scrollbar-area',\n '[class.scrollbar-visible]': 'isVisible()',\n '[class.scrollbar-interactive]': 'isInteractive()',\n '[class.is-absolute]': 'absolute()',\n }\n})\nexport class ScrollbarArea {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly zone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly router = inject(Router);\n\n readonly scrollableContentRef = viewChild.required<ElementRef<HTMLElement>>('scrollableContent');\n readonly scrollTrackRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrack');\n readonly scrollThumbRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumb');\n readonly scrollTrackXRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrackX');\n readonly scrollThumbXRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumbX');\n\n readonly scrollbarWidth = input<string>('8px');\n readonly autoHide = input<boolean>(true);\n readonly absolute = input<boolean>(true);\n @Output() readonly scrolled = new EventEmitter<Event>();\n\n readonly isDragging = signal(false);\n readonly isHovering = signal(false);\n private readonly scrollTop = signal(0);\n private readonly scrollLeft = signal(0);\n private readonly contentScrollHeight = signal(0);\n private readonly contentScrollWidth = signal(0);\n private readonly contentClientHeight = signal(0);\n private readonly contentClientWidth = signal(0);\n private readonly trackClientHeight = signal(0);\n private readonly trackClientWidth = signal(0);\n private readonly showDueToActivity = signal(false);\n\n // Vertical axis\n readonly hasScrollY = computed(() => this.contentScrollHeight() > this.contentClientHeight() + 1);\n readonly scrollRatioY = computed(() => this.hasScrollY() ? this.contentClientHeight() / this.contentScrollHeight() : 1);\n\n readonly minThumbHeight = 20;\n readonly thumbHeight = computed(() => {\n if (!this.hasScrollY()) return 0;\n const trackHeight = this.trackClientHeight();\n const ratio = this.scrollRatioY();\n const calculated = trackHeight * ratio;\n return Math.max(calculated, this.minThumbHeight);\n });\n readonly maxScrollTop = computed(() => Math.max(0, this.contentScrollHeight() - this.contentClientHeight()));\n readonly maxThumbTop = computed(() => Math.max(0, this.trackClientHeight() - this.thumbHeight()));\n readonly thumbTop = computed(() => {\n if (!this.hasScrollY()) return 0;\n const maxScroll = this.maxScrollTop();\n const currentScroll = this.scrollTop();\n const maxThumb = this.maxThumbTop();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n // Horizontal axis\n readonly hasScrollX = computed(() => this.contentScrollWidth() > this.contentClientWidth() + 1);\n readonly scrollRatioX = computed(() => this.hasScrollX() ? this.contentClientWidth() / this.contentScrollWidth() : 1);\n\n readonly minThumbWidth = 20;\n readonly thumbWidth = computed(() => {\n if (!this.hasScrollX()) return 0;\n const trackWidth = this.trackClientWidth();\n const ratio = this.scrollRatioX();\n const calculated = trackWidth * ratio;\n return Math.max(calculated, this.minThumbWidth);\n });\n readonly maxScrollLeft = computed(() => Math.max(0, this.contentScrollWidth() - this.contentClientWidth()));\n readonly maxThumbLeft = computed(() => Math.max(0, this.trackClientWidth() - this.thumbWidth()));\n readonly thumbLeft = computed(() => {\n if (!this.hasScrollX()) return 0;\n const maxScroll = this.maxScrollLeft();\n const currentScroll = this.scrollLeft();\n const maxThumb = this.maxThumbLeft();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n readonly hasAnyScroll = computed(() => this.hasScrollX() || this.hasScrollY());\n readonly isVisible = computed(() => {\n if (!this.hasAnyScroll()) return false;\n if (!this.autoHide()) return true;\n return this.isHovering() || this.isDragging() || this.showDueToActivity();\n });\n readonly isInteractive = computed(() => this.isHovering() || this.isDragging());\n\n private isInitialized = signal(false);\n private eventsSubscription: Subscription | null = null;\n private observersSubscription: Subscription | null = null;\n private hideTimeout: any = null;\n\n constructor() {\n effect(() => {\n this.scrollableContentRef();\n this.scrollTrackRef();\n this.scrollThumbRef();\n this.scrollTrackXRef();\n this.scrollThumbXRef();\n\n if (isPlatformBrowser(this.platformId) && !this.isInitialized()) {\n this.initializeComponentLogic();\n this.isInitialized.set(true);\n }\n });\n this.setupStyleEffects();\n this.destroyRef.onDestroy(() => this.cleanup());\n }\n\n private initializeComponentLogic(): void {\n this.updateDimensions();\n this.setupObservers();\n this.setupEventStreams();\n this.setupRouteChanges();\n }\n\n private raf(cb: () => void): void {\n // Use requestAnimationFrame in the browser, fallback to setTimeout on SSR\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => cb());\n } else {\n setTimeout(() => cb(), 0);\n }\n }\n\n private setupStyleEffects(): void {\n // Vertical thickness (width) and horizontal thickness (height)\n effect(() => {\n const thickness = this.scrollbarWidth();\n const trackY = this.scrollTrackRef().nativeElement;\n const thumbY = this.scrollThumbRef().nativeElement;\n const trackX = this.scrollTrackXRef().nativeElement;\n const thumbX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n // Vertical scrollbar: width is thickness\n this.renderer.setStyle(trackY, 'width', thickness);\n this.renderer.setStyle(thumbY, 'width', thickness);\n // Horizontal scrollbar: height is thickness\n this.renderer.setStyle(trackX, 'height', thickness);\n this.renderer.setStyle(thumbX, 'height', thickness);\n });\n });\n\n // Vertical thumb height\n effect(() => {\n const height = this.thumbHeight();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'height', `${height}px`);\n });\n });\n\n // Vertical thumb position\n effect(() => {\n const top = this.thumbTop();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'transform', `translateY(${top}px)`);\n });\n });\n\n // Horizontal thumb width\n effect(() => {\n const width = this.thumbWidth();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'width', `${width}px`);\n });\n });\n\n // Horizontal thumb position\n effect(() => {\n const left = this.thumbLeft();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n\n // Toggle track visibility per axis based on content\n effect(() => {\n const hasY = this.hasScrollY();\n const trackY = this.scrollTrackRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackY, 'display', hasY ? 'block' : 'none');\n });\n });\n effect(() => {\n const hasX = this.hasScrollX();\n const trackX = this.scrollTrackXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackX, 'display', hasX ? 'block' : 'none');\n });\n });\n\n // When scrollability toggles, recompute dimensions after tracks are laid out\n effect(() => {\n // depend on both so we run when either axis scrollability changes\n const _hasY = this.hasScrollY();\n const _hasX = this.hasScrollX();\n untracked(() => {\n // Wait for style changes (display:block/none) to apply, then measure\n this.raf(() => {\n this.zone.run(() => this.updateDimensions());\n });\n });\n });\n }\n\n private setupObservers(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n\n // Helper to observe all element nodes within a subtree with ResizeObserver\n const observeSubtree = (ro: ResizeObserver, root: Element) => {\n ro.observe(root);\n // Observe all current descendants as well to catch size changes that don't bubble to the container\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n let node = walker.currentNode as Element | null;\n while (node) {\n ro.observe(node);\n node = walker.nextNode() as Element | null;\n }\n };\n\n const resize$ = new Observable<ResizeObserverEntry[]>(observer => {\n const resizeObserver = new ResizeObserver(entries => this.zone.run(() => observer.next(entries)));\n // Observe host (tracks may affect layout) and the entire subtree of scrollable content\n observeSubtree(resizeObserver, scrollableElement);\n resizeObserver.observe(hostElement);\n return () => resizeObserver.disconnect();\n }).pipe(debounceTime(50));\n\n const mutation$ = new Observable<MutationRecord[]>(observer => {\n const mutationObserver = new MutationObserver(mutations => this.zone.run(() => observer.next(mutations)));\n // Watch for any DOM changes that can affect layout including attribute/class/style changes\n mutationObserver.observe(scrollableElement, { childList: true, subtree: true, characterData: true, attributes: true });\n return () => mutationObserver.disconnect();\n }).pipe(\n tap(mutations => {\n // If nodes were added to the subtree, start observing them for size changes as well\n // We run outside Angular to avoid triggering change detection per node\n this.zone.runOutsideAngular(() => {\n // Create a temporary RO reference by reusing the one from resize$ is not trivial here,\n // but we can trigger a dimension update directly which is enough for many cases.\n // The resize observer above already observes the whole subtree at setup time.\n // For dynamically added nodes, re-run a subtree observation by creating a one-shot RO.\n const newlyAdded: Element[] = [];\n for (const m of mutations) {\n if (m.type === 'childList') {\n m.addedNodes.forEach(n => { if (n.nodeType === Node.ELEMENT_NODE) newlyAdded.push(n as Element); });\n }\n }\n if (newlyAdded.length) {\n try {\n const ro = new ResizeObserver(() => { /* no-op: purpose is to register */ });\n newlyAdded.forEach(el => observeSubtree(ro, el));\n // Disconnect immediately; observing once is enough for triggering initial measure via update below\n ro.disconnect();\n } catch {}\n }\n });\n }),\n debounceTime(50)\n );\n\n this.observersSubscription = merge(resize$, mutation$)\n .subscribe(() => {\n // Use rAF to ensure layout is settled before measuring\n this.raf(() => this.zone.run(() => this.updateDimensions()));\n });\n }\n\n private setupEventStreams(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n const thumbElementY = this.scrollThumbRef().nativeElement;\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n\n const scroll$ = fromEvent(scrollableElement, 'scroll', { passive: true }).pipe(\n tap((event) => {\n this.zone.run(() => {\n this.scrollTop.set(scrollableElement.scrollTop);\n this.scrollLeft.set(scrollableElement.scrollLeft);\n this.scrolled.emit(event);\n });\n // Imperative sync to ensure thumbs move with content during scroll\n this.zone.runOutsideAngular(() => {\n this.raf(() => {\n const top = untracked(this.thumbTop);\n const left = untracked(this.thumbLeft);\n this.renderer.setStyle(thumbElementY, 'transform', `translateY(${top}px)`);\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n }),\n filter(() => this.autoHide()),\n tap(() => this.zone.run(() => this.showDueToActivity.set(true))),\n debounceTime(1500),\n tap(() => {\n untracked(() => {\n if (!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n })\n })\n );\n\n const hostEnter$ = fromEvent<MouseEvent>(hostElement, 'mouseenter').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(true);\n if (untracked(this.autoHide)) this.showDueToActivity.set(true);\n }))\n );\n const hostLeave$ = fromEvent<MouseEvent>(hostElement, 'mouseleave').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(false);\n if(untracked(this.autoHide) && !untracked(this.isDragging)){\n this.scheduleHide();\n }\n }))\n );\n\n const thumbMouseDownY$ = fromEvent<MouseEvent>(thumbElementY, 'mousedown');\n const thumbMouseDownX$ = fromEvent<MouseEvent>(thumbElementX, 'mousedown');\n const mouseMove$ = fromEvent<MouseEvent>(document, 'mousemove');\n const mouseUp$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n const thumbDragY$ = thumbMouseDownY$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startY = startEvent.clientY;\n const startScrollTop = scrollableElement.scrollTop;\n const initialTrackHeight = untracked(() => this.trackClientHeight());\n const initialContentHeight = untracked(() => this.contentScrollHeight());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaY = moveEvent.clientY - startY;\n const scrollDelta = initialTrackHeight > 0\n ? (deltaY / initialTrackHeight) * initialContentHeight\n : 0;\n return startScrollTop + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollTop => {\n this.renderer.setProperty(scrollableElement, 'scrollTop', newScrollTop);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n const thumbDragX$ = thumbMouseDownX$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startX = startEvent.clientX;\n const startScrollLeft = scrollableElement.scrollLeft;\n const initialTrackWidth = untracked(() => this.trackClientWidth());\n const initialContentWidth = untracked(() => this.contentScrollWidth());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaX = moveEvent.clientX - startX;\n const scrollDelta = initialTrackWidth > 0\n ? (deltaX / initialTrackWidth) * initialContentWidth\n : 0;\n return startScrollLeft + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollLeft => {\n this.renderer.setProperty(scrollableElement, 'scrollLeft', newScrollLeft);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n this.zone.runOutsideAngular(() => {\n this.eventsSubscription = merge(\n scroll$,\n hostEnter$,\n hostLeave$,\n thumbDragY$,\n thumbDragX$\n ).subscribe();\n });\n }\n\n private scheduleHide(): void {\n this.clearHideTimeout();\n this.zone.runOutsideAngular(() => {\n this.hideTimeout = setTimeout(() => {\n untracked(() => {\n if(!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n });\n this.hideTimeout = null;\n }, 100);\n });\n }\n\n private clearHideTimeout(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n private updateDimensions(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const trackElementY = this.scrollTrackRef().nativeElement;\n const trackElementX = this.scrollTrackXRef().nativeElement;\n\n if (scrollableElement && trackElementY && trackElementX) {\n // Vertical metrics\n const newScrollHeight = scrollableElement.scrollHeight;\n const newClientHeight = scrollableElement.clientHeight;\n const newTrackHeight = trackElementY.clientHeight;\n const newScrollTop = scrollableElement.scrollTop;\n\n this.contentScrollHeight.set(newScrollHeight);\n this.contentClientHeight.set(newClientHeight);\n this.trackClientHeight.set(newTrackHeight);\n\n if (this.scrollTop() !== newScrollTop) {\n this.scrollTop.set(newScrollTop);\n }\n\n // Horizontal metrics\n const newScrollWidth = scrollableElement.scrollWidth;\n const newClientWidth = scrollableElement.clientWidth;\n const newTrackWidth = trackElementX.clientWidth;\n const newScrollLeft = scrollableElement.scrollLeft;\n\n this.contentScrollWidth.set(newScrollWidth);\n this.contentClientWidth.set(newClientWidth);\n this.trackClientWidth.set(newTrackWidth);\n\n if (this.scrollLeft() !== newScrollLeft) {\n this.scrollLeft.set(newScrollLeft);\n }\n } else {\n this.contentScrollHeight.set(0);\n this.contentClientHeight.set(0);\n this.trackClientHeight.set(0);\n this.scrollTop.set(0);\n\n this.contentScrollWidth.set(0);\n this.contentClientWidth.set(0);\n this.trackClientWidth.set(0);\n this.scrollLeft.set(0);\n }\n }\n\n private cleanup(): void {\n this.clearHideTimeout();\n if (this.eventsSubscription) {\n this.eventsSubscription.unsubscribe();\n this.eventsSubscription = null;\n }\n if (this.observersSubscription) {\n this.observersSubscription.unsubscribe();\n this.observersSubscription = null;\n }\n }\n\n private setupRouteChanges() {\n this.router.events\n .pipe(\n filter(event=> event instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.raf(() => {\n this.updateDimensions();\n });\n })\n ;\n }\n}\n","<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-scrollbar-area.mjs","sources":["../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.ts","../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.html","../../../projects/components/scrollbar-area/src/scroll-container-fixed.directive.ts","../../../projects/components/scrollbar-area/ngstarter-ui-components-scrollbar-area.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n NgZone,\n Renderer2,\n inject,\n PLATFORM_ID,\n signal,\n computed,\n effect,\n input,\n DestroyRef,\n untracked,\n viewChild,\n ChangeDetectionStrategy,\n booleanAttribute,\n output\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n fromEvent,\n map,\n takeUntil,\n switchMap,\n tap,\n merge,\n debounceTime,\n distinctUntilChanged,\n Observable,\n finalize,\n filter,\n Subscription\n} from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-scrollbar-area',\n exportAs: 'ngsScrollbarArea',\n templateUrl: './scrollbar-area.html',\n styleUrl: './scrollbar-area.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-scrollbar-area',\n '[class.scrollbar-visible]': 'isVisible()',\n '[class.scrollbar-interactive]': 'isInteractive()',\n '[class.is-absolute]': 'absolute()',\n }\n})\nexport class ScrollbarArea {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly zone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly router = inject(Router);\n\n readonly scrollableContentRef = viewChild.required<ElementRef<HTMLElement>>('scrollableContent');\n readonly scrollTrackRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrack');\n readonly scrollThumbRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumb');\n readonly scrollTrackXRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrackX');\n readonly scrollThumbXRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumbX');\n\n readonly scrollbarWidth = input<string>('8px');\n readonly autoHide = input(true, { transform: booleanAttribute });\n readonly absolute = input(true, { transform: booleanAttribute });\n\n readonly scrolled = output<Event>();\n\n readonly isDragging = signal(false);\n readonly isHovering = signal(false);\n private readonly scrollTop = signal(0);\n private readonly scrollLeft = signal(0);\n private readonly contentScrollHeight = signal(0);\n private readonly contentScrollWidth = signal(0);\n private readonly contentClientHeight = signal(0);\n private readonly contentClientWidth = signal(0);\n private readonly trackClientHeight = signal(0);\n private readonly trackClientWidth = signal(0);\n private readonly showDueToActivity = signal(false);\n\n // Vertical axis\n readonly hasScrollY = computed(() => this.contentScrollHeight() > this.contentClientHeight() + 1);\n readonly scrollRatioY = computed(() => this.hasScrollY() ? this.contentClientHeight() / this.contentScrollHeight() : 1);\n\n readonly minThumbHeight = 20;\n readonly thumbHeight = computed(() => {\n if (!this.hasScrollY()) return 0;\n const trackHeight = this.trackClientHeight();\n const ratio = this.scrollRatioY();\n const calculated = trackHeight * ratio;\n return Math.max(calculated, this.minThumbHeight);\n });\n readonly maxScrollTop = computed(() => Math.max(0, this.contentScrollHeight() - this.contentClientHeight()));\n readonly maxThumbTop = computed(() => Math.max(0, this.trackClientHeight() - this.thumbHeight()));\n readonly thumbTop = computed(() => {\n if (!this.hasScrollY()) return 0;\n const maxScroll = this.maxScrollTop();\n const currentScroll = this.scrollTop();\n const maxThumb = this.maxThumbTop();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n // Horizontal axis\n readonly hasScrollX = computed(() => this.contentScrollWidth() > this.contentClientWidth() + 1);\n readonly scrollRatioX = computed(() => this.hasScrollX() ? this.contentClientWidth() / this.contentScrollWidth() : 1);\n\n readonly minThumbWidth = 20;\n readonly thumbWidth = computed(() => {\n if (!this.hasScrollX()) return 0;\n const trackWidth = this.trackClientWidth();\n const ratio = this.scrollRatioX();\n const calculated = trackWidth * ratio;\n return Math.max(calculated, this.minThumbWidth);\n });\n readonly maxScrollLeft = computed(() => Math.max(0, this.contentScrollWidth() - this.contentClientWidth()));\n readonly maxThumbLeft = computed(() => Math.max(0, this.trackClientWidth() - this.thumbWidth()));\n readonly thumbLeft = computed(() => {\n if (!this.hasScrollX()) return 0;\n const maxScroll = this.maxScrollLeft();\n const currentScroll = this.scrollLeft();\n const maxThumb = this.maxThumbLeft();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n readonly hasAnyScroll = computed(() => this.hasScrollX() || this.hasScrollY());\n readonly isVisible = computed(() => {\n if (!this.hasAnyScroll()) return false;\n if (!this.autoHide()) return true;\n return this.isHovering() || this.isDragging() || this.showDueToActivity();\n });\n readonly isInteractive = computed(() => this.isHovering() || this.isDragging());\n\n private isInitialized = signal(false);\n private eventsSubscription: Subscription | null = null;\n private observersSubscription: Subscription | null = null;\n private hideTimeout: any = null;\n\n constructor() {\n effect(() => {\n this.scrollableContentRef();\n this.scrollTrackRef();\n this.scrollThumbRef();\n this.scrollTrackXRef();\n this.scrollThumbXRef();\n\n if (isPlatformBrowser(this.platformId) && !this.isInitialized()) {\n this.initializeComponentLogic();\n this.isInitialized.set(true);\n }\n });\n this.setupStyleEffects();\n this.destroyRef.onDestroy(() => this.cleanup());\n }\n\n private initializeComponentLogic(): void {\n this.updateDimensions();\n this.setupObservers();\n this.setupEventStreams();\n this.setupRouteChanges();\n }\n\n private raf(cb: () => void): void {\n // Use requestAnimationFrame in the browser, fallback to setTimeout on SSR\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => cb());\n } else {\n setTimeout(() => cb(), 0);\n }\n }\n\n private setupStyleEffects(): void {\n // Vertical thickness (width) and horizontal thickness (height)\n effect(() => {\n const thickness = this.scrollbarWidth();\n const trackY = this.scrollTrackRef().nativeElement;\n const thumbY = this.scrollThumbRef().nativeElement;\n const trackX = this.scrollTrackXRef().nativeElement;\n const thumbX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n // Vertical scrollbar: width is thickness\n this.renderer.setStyle(trackY, 'width', thickness);\n this.renderer.setStyle(thumbY, 'width', thickness);\n // Horizontal scrollbar: height is thickness\n this.renderer.setStyle(trackX, 'height', thickness);\n this.renderer.setStyle(thumbX, 'height', thickness);\n });\n });\n\n // Vertical thumb height\n effect(() => {\n const height = this.thumbHeight();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'height', `${height}px`);\n });\n });\n\n // Vertical thumb position\n effect(() => {\n const top = this.thumbTop();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'transform', `translateY(${top}px)`);\n });\n });\n\n // Horizontal thumb width\n effect(() => {\n const width = this.thumbWidth();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'width', `${width}px`);\n });\n });\n\n // Horizontal thumb position\n effect(() => {\n const left = this.thumbLeft();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n\n // Toggle track visibility per axis based on content\n effect(() => {\n const hasY = this.hasScrollY();\n const trackY = this.scrollTrackRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackY, 'display', hasY ? 'block' : 'none');\n });\n });\n effect(() => {\n const hasX = this.hasScrollX();\n const trackX = this.scrollTrackXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackX, 'display', hasX ? 'block' : 'none');\n });\n });\n\n // When scrollability toggles, recompute dimensions after tracks are laid out\n effect(() => {\n // depend on both so we run when either axis scrollability changes\n const _hasY = this.hasScrollY();\n const _hasX = this.hasScrollX();\n untracked(() => {\n // Wait for style changes (display:block/none) to apply, then measure\n this.raf(() => {\n this.zone.run(() => this.updateDimensions());\n });\n });\n });\n }\n\n private setupObservers(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n\n // Helper to observe all element nodes within a subtree with ResizeObserver\n const observeSubtree = (ro: ResizeObserver, root: Element) => {\n ro.observe(root);\n // Observe all current descendants as well to catch size changes that don't bubble to the container\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n let node = walker.currentNode as Element | null;\n while (node) {\n ro.observe(node);\n node = walker.nextNode() as Element | null;\n }\n };\n\n const resize$ = new Observable<ResizeObserverEntry[]>(observer => {\n const resizeObserver = new ResizeObserver(entries => this.zone.run(() => observer.next(entries)));\n // Observe host (tracks may affect layout) and the entire subtree of scrollable content\n observeSubtree(resizeObserver, scrollableElement);\n resizeObserver.observe(hostElement);\n return () => resizeObserver.disconnect();\n }).pipe(debounceTime(50));\n\n const mutation$ = new Observable<MutationRecord[]>(observer => {\n const mutationObserver = new MutationObserver(mutations => this.zone.run(() => observer.next(mutations)));\n // Watch for any DOM changes that can affect layout including attribute/class/style changes\n mutationObserver.observe(scrollableElement, { childList: true, subtree: true, characterData: true, attributes: true });\n return () => mutationObserver.disconnect();\n }).pipe(\n tap(mutations => {\n // If nodes were added to the subtree, start observing them for size changes as well\n // We run outside Angular to avoid triggering change detection per node\n this.zone.runOutsideAngular(() => {\n // Create a temporary RO reference by reusing the one from resize$ is not trivial here,\n // but we can trigger a dimension update directly which is enough for many cases.\n // The resize observer above already observes the whole subtree at setup time.\n // For dynamically added nodes, re-run a subtree observation by creating a one-shot RO.\n const newlyAdded: Element[] = [];\n for (const m of mutations) {\n if (m.type === 'childList') {\n m.addedNodes.forEach(n => { if (n.nodeType === Node.ELEMENT_NODE) newlyAdded.push(n as Element); });\n }\n }\n if (newlyAdded.length) {\n try {\n const ro = new ResizeObserver(() => { /* no-op: purpose is to register */ });\n newlyAdded.forEach(el => observeSubtree(ro, el));\n // Disconnect immediately; observing once is enough for triggering initial measure via update below\n ro.disconnect();\n } catch {}\n }\n });\n }),\n debounceTime(50)\n );\n\n this.observersSubscription = merge(resize$, mutation$)\n .subscribe(() => {\n // Use rAF to ensure layout is settled before measuring\n this.raf(() => this.zone.run(() => this.updateDimensions()));\n });\n }\n\n private setupEventStreams(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n const thumbElementY = this.scrollThumbRef().nativeElement;\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n\n const scroll$ = fromEvent(scrollableElement, 'scroll', { passive: true }).pipe(\n tap((event) => {\n this.zone.run(() => {\n this.scrollTop.set(scrollableElement.scrollTop);\n this.scrollLeft.set(scrollableElement.scrollLeft);\n this.scrolled.emit(event);\n });\n // Imperative sync to ensure thumbs move with content during scroll\n this.zone.runOutsideAngular(() => {\n this.raf(() => {\n const top = untracked(this.thumbTop);\n const left = untracked(this.thumbLeft);\n this.renderer.setStyle(thumbElementY, 'transform', `translateY(${top}px)`);\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n }),\n filter(() => this.autoHide()),\n tap(() => this.zone.run(() => this.showDueToActivity.set(true))),\n debounceTime(1500),\n tap(() => {\n untracked(() => {\n if (!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n })\n })\n );\n\n const hostEnter$ = fromEvent<MouseEvent>(hostElement, 'mouseenter').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(true);\n if (untracked(this.autoHide)) this.showDueToActivity.set(true);\n }))\n );\n const hostLeave$ = fromEvent<MouseEvent>(hostElement, 'mouseleave').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(false);\n if(untracked(this.autoHide) && !untracked(this.isDragging)){\n this.scheduleHide();\n }\n }))\n );\n\n const thumbMouseDownY$ = fromEvent<MouseEvent>(thumbElementY, 'mousedown');\n const thumbMouseDownX$ = fromEvent<MouseEvent>(thumbElementX, 'mousedown');\n const mouseMove$ = fromEvent<MouseEvent>(document, 'mousemove');\n const mouseUp$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n const thumbDragY$ = thumbMouseDownY$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startY = startEvent.clientY;\n const startScrollTop = scrollableElement.scrollTop;\n const initialTrackHeight = untracked(() => this.trackClientHeight());\n const initialContentHeight = untracked(() => this.contentScrollHeight());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaY = moveEvent.clientY - startY;\n const scrollDelta = initialTrackHeight > 0\n ? (deltaY / initialTrackHeight) * initialContentHeight\n : 0;\n return startScrollTop + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollTop => {\n this.renderer.setProperty(scrollableElement, 'scrollTop', newScrollTop);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n const thumbDragX$ = thumbMouseDownX$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startX = startEvent.clientX;\n const startScrollLeft = scrollableElement.scrollLeft;\n const initialTrackWidth = untracked(() => this.trackClientWidth());\n const initialContentWidth = untracked(() => this.contentScrollWidth());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaX = moveEvent.clientX - startX;\n const scrollDelta = initialTrackWidth > 0\n ? (deltaX / initialTrackWidth) * initialContentWidth\n : 0;\n return startScrollLeft + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollLeft => {\n this.renderer.setProperty(scrollableElement, 'scrollLeft', newScrollLeft);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n this.zone.runOutsideAngular(() => {\n this.eventsSubscription = merge(\n scroll$,\n hostEnter$,\n hostLeave$,\n thumbDragY$,\n thumbDragX$\n ).subscribe();\n });\n }\n\n private scheduleHide(): void {\n this.clearHideTimeout();\n this.zone.runOutsideAngular(() => {\n this.hideTimeout = setTimeout(() => {\n untracked(() => {\n if(!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n });\n this.hideTimeout = null;\n }, 100);\n });\n }\n\n private clearHideTimeout(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n private updateDimensions(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const trackElementY = this.scrollTrackRef().nativeElement;\n const trackElementX = this.scrollTrackXRef().nativeElement;\n\n if (scrollableElement && trackElementY && trackElementX) {\n // Vertical metrics\n const newScrollHeight = scrollableElement.scrollHeight;\n const newClientHeight = scrollableElement.clientHeight;\n const newTrackHeight = trackElementY.clientHeight;\n const newScrollTop = scrollableElement.scrollTop;\n\n this.contentScrollHeight.set(newScrollHeight);\n this.contentClientHeight.set(newClientHeight);\n this.trackClientHeight.set(newTrackHeight);\n\n if (this.scrollTop() !== newScrollTop) {\n this.scrollTop.set(newScrollTop);\n }\n\n // Horizontal metrics\n const newScrollWidth = scrollableElement.scrollWidth;\n const newClientWidth = scrollableElement.clientWidth;\n const newTrackWidth = trackElementX.clientWidth;\n const newScrollLeft = scrollableElement.scrollLeft;\n\n this.contentScrollWidth.set(newScrollWidth);\n this.contentClientWidth.set(newClientWidth);\n this.trackClientWidth.set(newTrackWidth);\n\n if (this.scrollLeft() !== newScrollLeft) {\n this.scrollLeft.set(newScrollLeft);\n }\n } else {\n this.contentScrollHeight.set(0);\n this.contentClientHeight.set(0);\n this.trackClientHeight.set(0);\n this.scrollTop.set(0);\n\n this.contentScrollWidth.set(0);\n this.contentClientWidth.set(0);\n this.trackClientWidth.set(0);\n this.scrollLeft.set(0);\n }\n }\n\n private cleanup(): void {\n this.clearHideTimeout();\n if (this.eventsSubscription) {\n this.eventsSubscription.unsubscribe();\n this.eventsSubscription = null;\n }\n if (this.observersSubscription) {\n this.observersSubscription.unsubscribe();\n this.observersSubscription = null;\n }\n }\n\n private setupRouteChanges() {\n this.router.events\n .pipe(\n filter(event=> event instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.raf(() => {\n this.updateDimensions();\n });\n })\n ;\n }\n}\n","<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n","import {\n AfterViewInit,\n booleanAttribute,\n DestroyRef,\n Directive,\n ElementRef,\n effect,\n inject,\n input,\n NgZone,\n numberAttribute,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { auditTime, fromEvent, merge, Observable, startWith, Subject } from 'rxjs';\n\n@Directive({\n selector: '[ngsScrollContainerFixed]',\n exportAs: 'ngsScrollContainerFixed',\n standalone: true,\n host: {\n '[style.box-sizing]': '\"border-box\"',\n '[style.height.px]': 'height()',\n '[style.min-height.px]': 'enabled() ? minHeight() : null',\n },\n})\nexport class ScrollContainerFixed implements AfterViewInit {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly refreshChanges = new Subject<void>();\n\n readonly enabled = input(true, {\n alias: 'ngsScrollContainerFixed',\n transform: booleanAttribute,\n });\n readonly bottomOffset = input(0, {\n alias: 'ngsScrollContainerFixedBottomOffset',\n transform: numberAttribute,\n });\n readonly minHeight = input(0, {\n alias: 'ngsScrollContainerFixedMinHeight',\n transform: numberAttribute,\n });\n\n readonly height = signal<number | null>(null);\n\n constructor() {\n effect(() => {\n this.enabled();\n this.bottomOffset();\n this.minHeight();\n this.refresh();\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n merge(...this.getResizeStreams())\n .pipe(\n startWith(null),\n auditTime(0),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.updateHeight());\n });\n }\n\n refresh(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this.refreshChanges.next();\n }\n\n private updateHeight(): void {\n if (!this.enabled()) {\n this.height.set(null);\n return;\n }\n\n const elementTop = this.elementRef.nativeElement.getBoundingClientRect().top;\n const viewportHeight = window.visualViewport?.height ?? window.innerHeight;\n const nextHeight = Math.max(\n this.minHeight(),\n Math.floor(viewportHeight - elementTop - this.bottomOffset()),\n );\n\n this.height.set(nextHeight);\n }\n\n private getResizeStreams(): Observable<unknown>[] {\n const streams: Observable<unknown>[] = [\n this.refreshChanges.asObservable(),\n fromEvent(window, 'resize'),\n fromEvent(window, 'orientationchange'),\n this.observeElement(this.elementRef.nativeElement),\n ];\n\n if (this.elementRef.nativeElement.parentElement) {\n streams.push(this.observeElement(this.elementRef.nativeElement.parentElement));\n }\n\n if (window.visualViewport) {\n streams.push(\n fromEvent(window.visualViewport, 'resize'),\n fromEvent(window.visualViewport, 'scroll'),\n );\n }\n\n return streams;\n }\n\n private observeElement(element: Element): Observable<ResizeObserverEntry[]> {\n return new Observable<ResizeObserverEntry[]>(observer => {\n if (typeof ResizeObserver === 'undefined') {\n observer.complete();\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -219,7 +219,7 @@ class SidebarNavGroupMenu {
|
|
|
219
219
|
return false;
|
|
220
220
|
}
|
|
221
221
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SidebarNavGroupMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
222
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SidebarNavGroupMenu, isStandalone: true, selector: "ngs-sidebar-nav-group-menu", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, itemTypeProperty: { classPropertyName: "itemTypeProperty", publicName: "itemTypeProperty", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-active": "active" }, classAttribute: "ngs-sidebar-nav-group-menu" }, queries: [{ propertyName: "_items", predicate: SidebarNavItem, descendants: true, isSignal: true }, { propertyName: "_defs", predicate: SidebarNavItemDefDirective, isSignal: true }], exportAs: ["ngsSidebarNavGroupMenu"], ngImport: i0, template: "@if (dataSource(); as data) {\n <div class=\"inner\">\n @for (item of data; track item) {\n
|
|
222
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SidebarNavGroupMenu, isStandalone: true, selector: "ngs-sidebar-nav-group-menu", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, itemTypeProperty: { classPropertyName: "itemTypeProperty", publicName: "itemTypeProperty", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-active": "active", "attr.aria-hidden": "active ? null : \"true\"", "attr.inert": "active ? null : \"\"" }, classAttribute: "ngs-sidebar-nav-group-menu" }, queries: [{ propertyName: "_items", predicate: SidebarNavItem, descendants: true, isSignal: true }, { propertyName: "_defs", predicate: SidebarNavItemDefDirective, isSignal: true }], exportAs: ["ngsSidebarNavGroupMenu"], ngImport: i0, template: "@if (dataSource(); as data) {\n <div class=\"inner\">\n <div class=\"content\">\n @for (item of data; track item) {\n <ng-container *ngTemplateOutlet=\"getTemplate(item); context: { $implicit: item }\" />\n }\n </div>\n </div>\n} @else {\n <div class=\"inner\">\n <div class=\"content\">\n <ng-content/>\n </div>\n </div>\n}\n", styles: [":host{position:relative;padding-inline-start:var(--ngs-sidebar-nav-group-menu-padding-start);display:grid;grid-template-rows:0fr;overflow:hidden;pointer-events:none;transition:grid-template-rows .18s cubic-bezier(.2,0,0,1)}:host .inner{min-height:0;overflow:hidden}:host .content{display:flex;flex-direction:column;gap:var(--ngs-sidebar-nav-items-gap);padding:calc(var(--ngs-sidebar-nav-items-gap) * 2) 0 var(--ngs-sidebar-nav-items-gap) 0;opacity:0;transform:translateY(calc(var(--ngs-sidebar-nav-items-gap) * -1));transition:opacity .12s ease,transform .18s cubic-bezier(.2,0,0,1)}:host.is-active{grid-template-rows:1fr;pointer-events:auto}:host.is-active .content{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){:host{transition-duration:1ms}:host .content{transform:none;transition-duration:1ms}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
223
223
|
}
|
|
224
224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SidebarNavGroupMenu, decorators: [{
|
|
225
225
|
type: Component,
|
|
@@ -227,12 +227,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
227
227
|
NgTemplateOutlet
|
|
228
228
|
], host: {
|
|
229
229
|
'class': 'ngs-sidebar-nav-group-menu',
|
|
230
|
-
'[class.is-active]': 'active'
|
|
231
|
-
|
|
230
|
+
'[class.is-active]': 'active',
|
|
231
|
+
'[attr.aria-hidden]': 'active ? null : "true"',
|
|
232
|
+
'[attr.inert]': 'active ? null : ""',
|
|
233
|
+
}, template: "@if (dataSource(); as data) {\n <div class=\"inner\">\n <div class=\"content\">\n @for (item of data; track item) {\n <ng-container *ngTemplateOutlet=\"getTemplate(item); context: { $implicit: item }\" />\n }\n </div>\n </div>\n} @else {\n <div class=\"inner\">\n <div class=\"content\">\n <ng-content/>\n </div>\n </div>\n}\n", styles: [":host{position:relative;padding-inline-start:var(--ngs-sidebar-nav-group-menu-padding-start);display:grid;grid-template-rows:0fr;overflow:hidden;pointer-events:none;transition:grid-template-rows .18s cubic-bezier(.2,0,0,1)}:host .inner{min-height:0;overflow:hidden}:host .content{display:flex;flex-direction:column;gap:var(--ngs-sidebar-nav-items-gap);padding:calc(var(--ngs-sidebar-nav-items-gap) * 2) 0 var(--ngs-sidebar-nav-items-gap) 0;opacity:0;transform:translateY(calc(var(--ngs-sidebar-nav-items-gap) * -1));transition:opacity .12s ease,transform .18s cubic-bezier(.2,0,0,1)}:host.is-active{grid-template-rows:1fr;pointer-events:auto}:host.is-active .content{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){:host{transition-duration:1ms}:host .content{transform:none;transition-duration:1ms}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
232
234
|
}], propDecorators: { _items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SidebarNavItem), { ...{ descendants: true }, isSignal: true }] }], _defs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SidebarNavItemDefDirective), { isSignal: true }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: false }] }], itemTypeProperty: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemTypeProperty", required: false }] }] } });
|
|
233
235
|
|
|
234
236
|
let nextId = 0;
|
|
235
237
|
class SidebarNavGroup {
|
|
238
|
+
_navStore = inject(SidebarNavStore);
|
|
236
239
|
_toggle = contentChild.required(SidebarNavGroupToggle, {
|
|
237
240
|
descendants: false,
|
|
238
241
|
});
|
|
@@ -246,13 +249,16 @@ class SidebarNavGroup {
|
|
|
246
249
|
hasActiveItem() {
|
|
247
250
|
return this._menu().hasActiveItem();
|
|
248
251
|
}
|
|
252
|
+
get active() {
|
|
253
|
+
return this._navStore.isGroupActive(this._groupId);
|
|
254
|
+
}
|
|
249
255
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SidebarNavGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
250
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: SidebarNavGroup, isStandalone: true, selector: "ngs-sidebar-nav-group", providers: [
|
|
256
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: SidebarNavGroup, isStandalone: true, selector: "ngs-sidebar-nav-group", host: { properties: { "class.is-active": "active" }, classAttribute: "ngs-sidebar-nav-group" }, providers: [
|
|
251
257
|
{
|
|
252
258
|
provide: SIDEBAR_NAVIGATION_GROUP,
|
|
253
259
|
useExisting: forwardRef(() => SidebarNavGroup),
|
|
254
260
|
}
|
|
255
|
-
], queries: [{ propertyName: "_toggle", first: true, predicate: SidebarNavGroupToggle, isSignal: true }, { propertyName: "_menu", first: true, predicate: SidebarNavGroupMenu, isSignal: true }], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:block;border-radius:var(--ngs-sidebar-nav-group-border-radius)}:host
|
|
261
|
+
], queries: [{ propertyName: "_toggle", first: true, predicate: SidebarNavGroupToggle, isSignal: true }, { propertyName: "_menu", first: true, predicate: SidebarNavGroupMenu, isSignal: true }], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:block;border-radius:var(--ngs-sidebar-nav-group-border-radius)}:host.is-active{background:var(--ngs-sidebar-nav-group-active-bg)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
256
262
|
}
|
|
257
263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SidebarNavGroup, decorators: [{
|
|
258
264
|
type: Component,
|
|
@@ -261,7 +267,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
261
267
|
provide: SIDEBAR_NAVIGATION_GROUP,
|
|
262
268
|
useExisting: forwardRef(() => SidebarNavGroup),
|
|
263
269
|
}
|
|
264
|
-
],
|
|
270
|
+
], host: {
|
|
271
|
+
'class': 'ngs-sidebar-nav-group',
|
|
272
|
+
'[class.is-active]': 'active',
|
|
273
|
+
}, template: "<ng-content/>\n", styles: [":host{display:block;border-radius:var(--ngs-sidebar-nav-group-border-radius)}:host.is-active{background:var(--ngs-sidebar-nav-group-active-bg)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
265
274
|
}], propDecorators: { _toggle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SidebarNavGroupToggle), { ...{
|
|
266
275
|
descendants: false,
|
|
267
276
|
}, isSignal: true }] }], _menu: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SidebarNavGroupMenu), { ...{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar/sidebar.ts","../../../projects/components/sidebar/src/sidebar/sidebar.html","../../../projects/components/sidebar/src/sidebar-header/sidebar-header.ts","../../../projects/components/sidebar/src/sidebar-header/sidebar-header.html","../../../projects/components/sidebar/src/sidebar-body/sidebar-body.ts","../../../projects/components/sidebar/src/sidebar-body/sidebar-body.html","../../../projects/components/sidebar/src/types.ts","../../../projects/components/sidebar/src/sidebar.store.ts","../../../projects/components/sidebar/src/sidebar-nav-item/sidebar-nav-item.ts","../../../projects/components/sidebar/src/sidebar-nav-item/sidebar-nav-item.html","../../../projects/components/sidebar/src/sidebar-nav-group-toggle/sidebar-nav-group-toggle.ts","../../../projects/components/sidebar/src/sidebar-nav-group-toggle/sidebar-nav-group-toggle.html","../../../projects/components/sidebar/src/sidebar-nav-item-def.directive.ts","../../../projects/components/sidebar/src/sidebar-nav-group-menu/sidebar-nav-group-menu.ts","../../../projects/components/sidebar/src/sidebar-nav-group-menu/sidebar-nav-group-menu.html","../../../projects/components/sidebar/src/sidebar-nav-group/sidebar-nav-group.ts","../../../projects/components/sidebar/src/sidebar-nav-group/sidebar-nav-group.html","../../../projects/components/sidebar/src/sidebar-nav/sidebar-nav.ts","../../../projects/components/sidebar/src/sidebar-nav/sidebar-nav.html","../../../projects/components/sidebar/src/sidebar-footer/sidebar-footer.ts","../../../projects/components/sidebar/src/sidebar-footer/sidebar-footer.html","../../../projects/components/sidebar/src/sidebar-nav-heading/sidebar-nav-heading.ts","../../../projects/components/sidebar/src/sidebar-nav-heading/sidebar-nav-heading.html","../../../projects/components/sidebar/src/sidebar-divider/sidebar-divider.ts","../../../projects/components/sidebar/src/sidebar-divider/sidebar-divider.html","../../../projects/components/sidebar/src/sidebar-nav-item-icon.directive.ts","../../../projects/components/sidebar/src/sidebar-nav-item-badge.directive.ts","../../../projects/components/sidebar/src/sidebar-nav-group-toggle-icon.directive.ts","../../../projects/components/sidebar/ngstarter-ui-components-sidebar.ts"],"sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar',\n exportAs: 'ngsSidebar',\n templateUrl: './sidebar.html',\n styleUrl: './sidebar.scss',\n host: {\n 'class': 'ngs-sidebar',\n '[class.only-compact]': 'onlyCompact()'\n }\n})\nexport class Sidebar {\n onlyCompact = input(false, {\n transform: booleanAttribute\n });\n}\n","<ng-content select=\"ngs-sidebar-header\"/>\n<ng-content select=\"ngs-sidebar-body\"/>\n<ng-content select=\"ngs-sidebar-footer\"/>\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-header',\n exportAs: 'ngsSidebarHeader',\n templateUrl: './sidebar-header.html',\n styleUrl: './sidebar-header.scss',\n host: {\n 'class': 'ngs-sidebar-header',\n '[class.as-block]': 'block()'\n }\n})\nexport class SidebarHeader {\n block = input(false, {\n transform: booleanAttribute\n });\n}\n","<ng-content/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-body,ngs-sidebar-content',\n exportAs: 'ngsSidebarBody',\n templateUrl: './sidebar-body.html',\n styleUrl: './sidebar-body.scss',\n imports: [\n ],\n host: {\n 'class': 'ngs-sidebar-body ngs-sidebar-content'\n }\n})\nexport class SidebarBody {\n\n}\n","<ng-content/>\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDEBAR_NAVIGATION = new InjectionToken('Sidebar navigation');\nexport const SIDEBAR_NAVIGATION_GROUP = new InjectionToken('SIDEBAR_NAVIGATION_GROUP');\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\n\nexport interface SidebarNavState {\n activeItemKey: any;\n activeGroupKey: any;\n}\n\nconst initialState: SidebarNavState = {\n activeItemKey: null,\n activeGroupKey: null,\n};\n\nexport const SidebarNavStore = signalStore(\n withState(initialState),\n withMethods((store) => ({\n setItemActiveKey(activeItemKey: any): void {\n patchState(store, { activeItemKey });\n },\n isItemActive(activeItemKey: any): boolean {\n return store.activeItemKey() === activeItemKey;\n },\n setGroupActiveKey(activeGroupKey: any): void {\n patchState(store, { activeGroupKey });\n },\n isGroupActive(activeGroupKey: any): boolean {\n return store.activeGroupKey() === activeGroupKey;\n }\n }))\n);\n","import { booleanAttribute, Component, ElementRef, inject, input } from '@angular/core';\nimport { Ripple } from '@ngstarter-ui/components/core';\nimport { SIDEBAR_NAVIGATION } from '../types';\nimport { SidebarNav } from '../sidebar-nav/sidebar-nav';\nimport { SidebarNavStore } from '../sidebar.store';\n\nexport class SidebarNavItemInterface {\n active: boolean;\n}\n\n@Component({\n selector: 'ngs-sidebar-nav-item,[ngs-sidebar-nav-item]',\n exportAs: 'ngs-sidebar-nav-item',\n imports: [\n Ripple\n ],\n templateUrl: './sidebar-nav-item.html',\n styleUrl: './sidebar-nav-item.scss',\n host: {\n 'class': 'ngs-sidebar-nav-item',\n '[class.is-active]': 'forceActive() || active',\n '(click)': 'click($event)'\n }\n})\nexport class SidebarNavItem implements SidebarNavItemInterface {\n private _navigation = inject<SidebarNav>(SIDEBAR_NAVIGATION);\n private _elementRef = inject(ElementRef);\n private _navStore = inject(SidebarNavStore);\n\n get api() {\n return {\n isActive: () => this.active\n }\n }\n\n key = input<any>(Math.random());\n forceActive = input(false, {\n transform: booleanAttribute\n });\n\n click(event: MouseEvent) {\n if (!this.key()) {\n return;\n }\n\n this._navStore.setItemActiveKey(this.key());\n this._navigation.itemClicked.emit(this.key());\n }\n\n get active(): boolean {\n return this._navStore.isItemActive(this.key());\n }\n\n get _hostElement(): ElementRef {\n return this._elementRef;\n }\n}\n","<div class=\"inner\" ngsRipple>\n <div class=\"icon\">\n <ng-content select=\"[ngsSidebarNavItemIcon]\"/>\n </div>\n <span class=\"text grow\"><ng-content/></span>\n <div class=\"badge\">\n <ng-content select=\"[ngsSidebarNavItemBadge]\"/>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { Ripple } from '@ngstarter-ui/components/core';\nimport { SidebarNavStore } from '../sidebar.store';\n\n@Component({\n selector: 'ngs-sidebar-nav-group-toggle',\n exportAs: 'ngsSidebarNavGroupToggle',\n templateUrl: './sidebar-nav-group-toggle.html',\n styleUrl: './sidebar-nav-group-toggle.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n Ripple\n ],\n host: {\n 'class': 'ngs-sidebar-nav-group-toggle',\n '[class.is-active]': 'active',\n '(click)': 'toggle($event)'\n }\n})\nexport class SidebarNavGroupToggle {\n private _navStore = inject(SidebarNavStore);\n\n readonly for = signal<any>(null);\n\n get active(): boolean {\n if (!this.for()) {\n return false;\n }\n\n return this._navStore.isGroupActive(this.for());\n }\n\n toggle(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this._navStore.isGroupActive(this.for())) {\n this._navStore.setGroupActiveKey(null);\n } else {\n this._navStore.setGroupActiveKey(this.for());\n }\n }\n}\n","<div class=\"icon\"><ng-content select=\"[ngsSidebarNavItemIcon]\"/></div>\n<span class=\"text grow\"><ng-content/></span>\n<div class=\"flex items-center gap-0.5\">\n <div class=\"badge\">\n <ng-content select=\"[ngsSidebarNavItemBadge]\"/>\n </div>\n <div class=\"arrow\">\n <ng-content select=\"[ngsSidebarNavGroupToggleIcon]\"/>\n </div>\n</div>\n","import { Directive, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavItemDef]',\n standalone: true\n})\nexport class SidebarNavItemDefDirective {\n when = input<string | ((item: any) => boolean) | undefined>(undefined, { alias: 'ngsSidebarNavItemDef' });\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { SIDEBAR_NAVIGATION, SIDEBAR_NAVIGATION_GROUP } from '../types';\nimport { SidebarNav } from '../sidebar-nav/sidebar-nav';\nimport { SidebarNavGroup } from '../sidebar-nav-group/sidebar-nav-group';\nimport { SidebarNavItem } from '../sidebar-nav-item/sidebar-nav-item';\nimport { SidebarNavStore } from '../sidebar.store';\nimport { SidebarNavItemDefDirective } from '../sidebar-nav-item-def.directive';\n\n@Component({\n selector: 'ngs-sidebar-nav-group-menu',\n exportAs: 'ngsSidebarNavGroupMenu',\n templateUrl: './sidebar-nav-group-menu.html',\n styleUrl: './sidebar-nav-group-menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet\n ],\n host: {\n 'class': 'ngs-sidebar-nav-group-menu',\n '[class.is-active]': 'active'\n }\n})\nexport class SidebarNavGroupMenu implements AfterContentInit, OnInit {\n readonly navigation = inject<SidebarNav>(SIDEBAR_NAVIGATION);\n private _group = inject<SidebarNavGroup>(SIDEBAR_NAVIGATION_GROUP);\n private _navStore = inject(SidebarNavStore);\n\n readonly _items = contentChildren(SidebarNavItem, { descendants: true });\n readonly _defs = contentChildren(SidebarNavItemDefDirective);\n\n key = signal<any>(this._group._groupId);\n dataSource = input<any[]>();\n itemTypeProperty = input<string>('type');\n\n get active(): boolean {\n return this._navStore.isGroupActive(this.key());\n }\n\n ngOnInit() {\n this.navigation\n .itemClicked\n .subscribe(() => {\n if (!this.hasActiveItem() && this._group._groupId === this._navStore.activeGroupKey()) {\n this._navStore.setGroupActiveKey(null);\n }\n });\n }\n\n ngAfterContentInit() {\n this._checkIfActive();\n }\n\n hasActiveItem(): boolean {\n const fromItems = this._items().some(item => item.active);\n if (fromItems) {\n return true;\n }\n\n const data = this.dataSource();\n if (data) {\n const activeKey = this._navStore.activeItemKey();\n return data.some(item => this._isActive(item, activeKey));\n }\n\n return false;\n }\n\n getTemplate(item: any): TemplateRef<any> | null {\n const def = this._defs().find(d => {\n const whenValue = d.when();\n if (whenValue) {\n if (typeof whenValue === 'function') {\n return whenValue(item);\n }\n return item[this.itemTypeProperty()] === whenValue;\n }\n\n return false;\n }) || this._defs().find(d => !d.when());\n\n return def?.template || null;\n }\n\n private _checkIfActive() {\n if (this.hasActiveItem()) {\n this._navStore.setGroupActiveKey(this.key());\n }\n }\n\n private _isActive(item: any, activeKey: any): boolean {\n if (item.key === activeKey) {\n return true;\n }\n\n if (item.children && Array.isArray(item.children)) {\n return item.children.some((child: any) => this._isActive(child, activeKey));\n }\n\n return false;\n }\n}\n","@if (dataSource(); as data) {\n <div class=\"inner\">\n @for (item of data; track item) {\n <ng-container *ngTemplateOutlet=\"getTemplate(item); context: { $implicit: item }\" />\n }\n </div>\n} @else {\n <div class=\"inner\">\n <ng-content/>\n </div>\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n forwardRef,\n} from '@angular/core';\nimport { SidebarNavGroupToggle } from '../sidebar-nav-group-toggle/sidebar-nav-group-toggle';\nimport { SIDEBAR_NAVIGATION_GROUP } from '../types';\nimport { SidebarNavGroupMenu } from '../sidebar-nav-group-menu/sidebar-nav-group-menu';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-sidebar-nav-group',\n templateUrl: './sidebar-nav-group.html',\n styleUrl: './sidebar-nav-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SIDEBAR_NAVIGATION_GROUP,\n useExisting: forwardRef(() => SidebarNavGroup),\n }\n ]\n})\nexport class SidebarNavGroup implements AfterContentInit {\n private _toggle = contentChild.required(SidebarNavGroupToggle, {\n descendants: false,\n });\n private _menu = contentChild.required(SidebarNavGroupMenu, {\n descendants: false,\n });\n readonly _groupId = `sidebar-nav-group-${nextId++}`;\n\n ngAfterContentInit() {\n this._toggle().for.set(this._groupId);\n }\n\n hasActiveItem(): boolean {\n return this._menu().hasActiveItem();\n }\n}\n","<ng-content/>\n","import {\n AfterContentInit,\n afterNextRender, booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n ElementRef, forwardRef,\n inject,\n input,\n output,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n SidebarNavItem\n} from '../sidebar-nav-item/sidebar-nav-item';\nimport { SIDEBAR_NAVIGATION } from '../types';\nimport { SidebarNavStore } from '../sidebar.store';\nimport { SidebarNavGroup } from '../sidebar-nav-group/sidebar-nav-group';\nimport { SidebarNavItemDefDirective } from '../sidebar-nav-item-def.directive';\n\n@Component({\n selector: 'ngs-sidebar-nav',\n exportAs: 'ngsSidebarNav',\n templateUrl: './sidebar-nav.html',\n styleUrl: './sidebar-nav.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet\n ],\n providers: [\n {\n provide: SIDEBAR_NAVIGATION,\n useExisting: forwardRef(() => SidebarNav),\n },\n SidebarNavStore\n ],\n host: {\n 'class': 'ngs-sidebar-nav',\n },\n})\nexport class SidebarNav implements AfterContentInit {\n private _elementRef = inject(ElementRef);\n private _navStore = inject(SidebarNavStore);\n\n readonly _items = contentChildren(SidebarNavItem, { descendants: true });\n readonly _groups = contentChildren(SidebarNavGroup, { descendants: true });\n readonly _defs = contentChildren(SidebarNavItemDefDirective);\n\n activeKey = input();\n dataSource = input<any[]>();\n itemTypeProperty = input<string>('type');\n autoScrollToActiveItem = input(false, {\n transform: booleanAttribute\n });\n\n readonly itemClicked = output<any>();\n\n constructor() {\n // scroll to the active item if it is not visible in the viewport\n afterNextRender(() => {\n if (this.autoScrollToActiveItem()) {\n this._scrollToActiveItem();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['activeKey']) {\n this._navStore.setItemActiveKey(changes['activeKey'].currentValue);\n this._groups().forEach((group: SidebarNavGroup) => {\n if (group.hasActiveItem()) {\n this._navStore.setGroupActiveKey(group._groupId);\n requestAnimationFrame(() => {\n this._scrollToActiveItem();\n });\n }\n });\n }\n }\n\n ngAfterContentInit() {\n }\n\n private _hasScroll(element: HTMLElement): boolean {\n if (!element.getBoundingClientRect) {\n return false;\n }\n\n return Math.ceil(element.scrollHeight) > Math.ceil(element.getBoundingClientRect().height);\n }\n\n private _isScrolledIntoView(element: HTMLElement, parent: HTMLElement) {\n const elementRect = element.getBoundingClientRect();\n const parentRect = parent.getBoundingClientRect();\n return (elementRect.top >= 0) && (elementRect.bottom <= parentRect.height);\n }\n\n getTemplate(item: any): TemplateRef<any> | null {\n const def = this._defs().find(d => {\n const whenValue = d.when();\n if (whenValue) {\n if (typeof whenValue === 'function') {\n return whenValue(item);\n }\n return item[this.itemTypeProperty()] === whenValue;\n }\n\n return false;\n }) || this._defs().find(d => !d.when());\n\n return def?.template || null;\n }\n\n private _scrollToActiveItem(): void {\n this._items().forEach((item: SidebarNavItem) => {\n if (item.active) {\n let scrollContainer = this._elementRef.nativeElement.closest('.scrollable-content');\n const itemElement = item._hostElement.nativeElement as HTMLElement;\n\n if (this._hasScroll(scrollContainer)) {\n if (!this._isScrolledIntoView(itemElement, scrollContainer)) {\n const parentRect = scrollContainer.getBoundingClientRect();\n const elementRect = itemElement.getBoundingClientRect();\n scrollContainer.scrollTop = elementRect.top - parentRect.height / 2;\n }\n }\n }\n });\n }\n}\n","@if (dataSource(); as data) {\n @for (item of data; track item) {\n <ng-container *ngTemplateOutlet=\"getTemplate(item); context: { $implicit: item }\" />\n }\n} @else {\n <ng-content/>\n}\n","import {booleanAttribute, Component, input} from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-footer',\n exportAs: 'ngsSidebarFooter',\n templateUrl: './sidebar-footer.html',\n styleUrl: './sidebar-footer.scss',\n host: {\n 'class': 'ngs-sidebar-footer',\n '[class.as-block]': 'block()'\n }\n})\nexport class SidebarFooter {\n block = input(false, {\n transform: booleanAttribute\n });\n}\n","<ng-content/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-nav-heading',\n exportAs: 'ngsSidebarNavHeading',\n imports: [\n ],\n templateUrl: './sidebar-nav-heading.html',\n styleUrl: './sidebar-nav-heading.scss',\n host: {\n class: 'ngs-sidebar-nav-heading',\n }\n})\nexport class SidebarNavHeading {\n\n}\n","<div class=\"line\"></div>\n<div class=\"content\">\n <ng-content/>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-divider',\n imports: [],\n templateUrl: './sidebar-divider.html',\n styleUrl: './sidebar-divider.scss',\n})\nexport class SidebarDivider {\n\n}\n","<p>sidebar-divider works!</p>\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavItemIcon]'\n})\nexport class SidebarNavItemIconDirective {\n // readonly templateRef = inject(TemplateRef);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavItemBadge]'\n})\nexport class SidebarNavItemBadgeDirective {\n\n constructor() { }\n\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavGroupToggleIcon]'\n})\nexport class SidebarNavGroupToggleIconDirective {\n\n constructor() { }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar/sidebar.ts","../../../projects/components/sidebar/src/sidebar/sidebar.html","../../../projects/components/sidebar/src/sidebar-header/sidebar-header.ts","../../../projects/components/sidebar/src/sidebar-header/sidebar-header.html","../../../projects/components/sidebar/src/sidebar-body/sidebar-body.ts","../../../projects/components/sidebar/src/sidebar-body/sidebar-body.html","../../../projects/components/sidebar/src/types.ts","../../../projects/components/sidebar/src/sidebar.store.ts","../../../projects/components/sidebar/src/sidebar-nav-item/sidebar-nav-item.ts","../../../projects/components/sidebar/src/sidebar-nav-item/sidebar-nav-item.html","../../../projects/components/sidebar/src/sidebar-nav-group-toggle/sidebar-nav-group-toggle.ts","../../../projects/components/sidebar/src/sidebar-nav-group-toggle/sidebar-nav-group-toggle.html","../../../projects/components/sidebar/src/sidebar-nav-item-def.directive.ts","../../../projects/components/sidebar/src/sidebar-nav-group-menu/sidebar-nav-group-menu.ts","../../../projects/components/sidebar/src/sidebar-nav-group-menu/sidebar-nav-group-menu.html","../../../projects/components/sidebar/src/sidebar-nav-group/sidebar-nav-group.ts","../../../projects/components/sidebar/src/sidebar-nav-group/sidebar-nav-group.html","../../../projects/components/sidebar/src/sidebar-nav/sidebar-nav.ts","../../../projects/components/sidebar/src/sidebar-nav/sidebar-nav.html","../../../projects/components/sidebar/src/sidebar-footer/sidebar-footer.ts","../../../projects/components/sidebar/src/sidebar-footer/sidebar-footer.html","../../../projects/components/sidebar/src/sidebar-nav-heading/sidebar-nav-heading.ts","../../../projects/components/sidebar/src/sidebar-nav-heading/sidebar-nav-heading.html","../../../projects/components/sidebar/src/sidebar-divider/sidebar-divider.ts","../../../projects/components/sidebar/src/sidebar-divider/sidebar-divider.html","../../../projects/components/sidebar/src/sidebar-nav-item-icon.directive.ts","../../../projects/components/sidebar/src/sidebar-nav-item-badge.directive.ts","../../../projects/components/sidebar/src/sidebar-nav-group-toggle-icon.directive.ts","../../../projects/components/sidebar/ngstarter-ui-components-sidebar.ts"],"sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar',\n exportAs: 'ngsSidebar',\n templateUrl: './sidebar.html',\n styleUrl: './sidebar.scss',\n host: {\n 'class': 'ngs-sidebar',\n '[class.only-compact]': 'onlyCompact()'\n }\n})\nexport class Sidebar {\n onlyCompact = input(false, {\n transform: booleanAttribute\n });\n}\n","<ng-content select=\"ngs-sidebar-header\"/>\n<ng-content select=\"ngs-sidebar-body\"/>\n<ng-content select=\"ngs-sidebar-footer\"/>\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-header',\n exportAs: 'ngsSidebarHeader',\n templateUrl: './sidebar-header.html',\n styleUrl: './sidebar-header.scss',\n host: {\n 'class': 'ngs-sidebar-header',\n '[class.as-block]': 'block()'\n }\n})\nexport class SidebarHeader {\n block = input(false, {\n transform: booleanAttribute\n });\n}\n","<ng-content/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-body,ngs-sidebar-content',\n exportAs: 'ngsSidebarBody',\n templateUrl: './sidebar-body.html',\n styleUrl: './sidebar-body.scss',\n imports: [\n ],\n host: {\n 'class': 'ngs-sidebar-body ngs-sidebar-content'\n }\n})\nexport class SidebarBody {\n\n}\n","<ng-content/>\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDEBAR_NAVIGATION = new InjectionToken('Sidebar navigation');\nexport const SIDEBAR_NAVIGATION_GROUP = new InjectionToken('SIDEBAR_NAVIGATION_GROUP');\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\n\nexport interface SidebarNavState {\n activeItemKey: any;\n activeGroupKey: any;\n}\n\nconst initialState: SidebarNavState = {\n activeItemKey: null,\n activeGroupKey: null,\n};\n\nexport const SidebarNavStore = signalStore(\n withState(initialState),\n withMethods((store) => ({\n setItemActiveKey(activeItemKey: any): void {\n patchState(store, { activeItemKey });\n },\n isItemActive(activeItemKey: any): boolean {\n return store.activeItemKey() === activeItemKey;\n },\n setGroupActiveKey(activeGroupKey: any): void {\n patchState(store, { activeGroupKey });\n },\n isGroupActive(activeGroupKey: any): boolean {\n return store.activeGroupKey() === activeGroupKey;\n }\n }))\n);\n","import { booleanAttribute, Component, ElementRef, inject, input } from '@angular/core';\nimport { Ripple } from '@ngstarter-ui/components/core';\nimport { SIDEBAR_NAVIGATION } from '../types';\nimport { SidebarNav } from '../sidebar-nav/sidebar-nav';\nimport { SidebarNavStore } from '../sidebar.store';\n\nexport class SidebarNavItemInterface {\n active: boolean;\n}\n\n@Component({\n selector: 'ngs-sidebar-nav-item,[ngs-sidebar-nav-item]',\n exportAs: 'ngs-sidebar-nav-item',\n imports: [\n Ripple\n ],\n templateUrl: './sidebar-nav-item.html',\n styleUrl: './sidebar-nav-item.scss',\n host: {\n 'class': 'ngs-sidebar-nav-item',\n '[class.is-active]': 'forceActive() || active',\n '(click)': 'click($event)'\n }\n})\nexport class SidebarNavItem implements SidebarNavItemInterface {\n private _navigation = inject<SidebarNav>(SIDEBAR_NAVIGATION);\n private _elementRef = inject(ElementRef);\n private _navStore = inject(SidebarNavStore);\n\n get api() {\n return {\n isActive: () => this.active\n }\n }\n\n key = input<any>(Math.random());\n forceActive = input(false, {\n transform: booleanAttribute\n });\n\n click(event: MouseEvent) {\n if (!this.key()) {\n return;\n }\n\n this._navStore.setItemActiveKey(this.key());\n this._navigation.itemClicked.emit(this.key());\n }\n\n get active(): boolean {\n return this._navStore.isItemActive(this.key());\n }\n\n get _hostElement(): ElementRef {\n return this._elementRef;\n }\n}\n","<div class=\"inner\" ngsRipple>\n <div class=\"icon\">\n <ng-content select=\"[ngsSidebarNavItemIcon]\"/>\n </div>\n <span class=\"text grow\"><ng-content/></span>\n <div class=\"badge\">\n <ng-content select=\"[ngsSidebarNavItemBadge]\"/>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { Ripple } from '@ngstarter-ui/components/core';\nimport { SidebarNavStore } from '../sidebar.store';\n\n@Component({\n selector: 'ngs-sidebar-nav-group-toggle',\n exportAs: 'ngsSidebarNavGroupToggle',\n templateUrl: './sidebar-nav-group-toggle.html',\n styleUrl: './sidebar-nav-group-toggle.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n Ripple\n ],\n host: {\n 'class': 'ngs-sidebar-nav-group-toggle',\n '[class.is-active]': 'active',\n '(click)': 'toggle($event)'\n }\n})\nexport class SidebarNavGroupToggle {\n private _navStore = inject(SidebarNavStore);\n\n readonly for = signal<any>(null);\n\n get active(): boolean {\n if (!this.for()) {\n return false;\n }\n\n return this._navStore.isGroupActive(this.for());\n }\n\n toggle(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this._navStore.isGroupActive(this.for())) {\n this._navStore.setGroupActiveKey(null);\n } else {\n this._navStore.setGroupActiveKey(this.for());\n }\n }\n}\n","<div class=\"icon\"><ng-content select=\"[ngsSidebarNavItemIcon]\"/></div>\n<span class=\"text grow\"><ng-content/></span>\n<div class=\"flex items-center gap-0.5\">\n <div class=\"badge\">\n <ng-content select=\"[ngsSidebarNavItemBadge]\"/>\n </div>\n <div class=\"arrow\">\n <ng-content select=\"[ngsSidebarNavGroupToggleIcon]\"/>\n </div>\n</div>\n","import { Directive, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavItemDef]',\n standalone: true\n})\nexport class SidebarNavItemDefDirective {\n when = input<string | ((item: any) => boolean) | undefined>(undefined, { alias: 'ngsSidebarNavItemDef' });\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { SIDEBAR_NAVIGATION, SIDEBAR_NAVIGATION_GROUP } from '../types';\nimport { SidebarNav } from '../sidebar-nav/sidebar-nav';\nimport { SidebarNavGroup } from '../sidebar-nav-group/sidebar-nav-group';\nimport { SidebarNavItem } from '../sidebar-nav-item/sidebar-nav-item';\nimport { SidebarNavStore } from '../sidebar.store';\nimport { SidebarNavItemDefDirective } from '../sidebar-nav-item-def.directive';\n\n@Component({\n selector: 'ngs-sidebar-nav-group-menu',\n exportAs: 'ngsSidebarNavGroupMenu',\n templateUrl: './sidebar-nav-group-menu.html',\n styleUrl: './sidebar-nav-group-menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet\n ],\n host: {\n 'class': 'ngs-sidebar-nav-group-menu',\n '[class.is-active]': 'active',\n '[attr.aria-hidden]': 'active ? null : \"true\"',\n '[attr.inert]': 'active ? null : \"\"',\n }\n})\nexport class SidebarNavGroupMenu implements AfterContentInit, OnInit {\n readonly navigation = inject<SidebarNav>(SIDEBAR_NAVIGATION);\n private _group = inject<SidebarNavGroup>(SIDEBAR_NAVIGATION_GROUP);\n private _navStore = inject(SidebarNavStore);\n\n readonly _items = contentChildren(SidebarNavItem, { descendants: true });\n readonly _defs = contentChildren(SidebarNavItemDefDirective);\n\n key = signal<any>(this._group._groupId);\n dataSource = input<any[]>();\n itemTypeProperty = input<string>('type');\n\n get active(): boolean {\n return this._navStore.isGroupActive(this.key());\n }\n\n ngOnInit() {\n this.navigation\n .itemClicked\n .subscribe(() => {\n if (!this.hasActiveItem() && this._group._groupId === this._navStore.activeGroupKey()) {\n this._navStore.setGroupActiveKey(null);\n }\n });\n }\n\n ngAfterContentInit() {\n this._checkIfActive();\n }\n\n hasActiveItem(): boolean {\n const fromItems = this._items().some(item => item.active);\n if (fromItems) {\n return true;\n }\n\n const data = this.dataSource();\n if (data) {\n const activeKey = this._navStore.activeItemKey();\n return data.some(item => this._isActive(item, activeKey));\n }\n\n return false;\n }\n\n getTemplate(item: any): TemplateRef<any> | null {\n const def = this._defs().find(d => {\n const whenValue = d.when();\n if (whenValue) {\n if (typeof whenValue === 'function') {\n return whenValue(item);\n }\n return item[this.itemTypeProperty()] === whenValue;\n }\n\n return false;\n }) || this._defs().find(d => !d.when());\n\n return def?.template || null;\n }\n\n private _checkIfActive() {\n if (this.hasActiveItem()) {\n this._navStore.setGroupActiveKey(this.key());\n }\n }\n\n private _isActive(item: any, activeKey: any): boolean {\n if (item.key === activeKey) {\n return true;\n }\n\n if (item.children && Array.isArray(item.children)) {\n return item.children.some((child: any) => this._isActive(child, activeKey));\n }\n\n return false;\n }\n}\n","@if (dataSource(); as data) {\n <div class=\"inner\">\n <div class=\"content\">\n @for (item of data; track item) {\n <ng-container *ngTemplateOutlet=\"getTemplate(item); context: { $implicit: item }\" />\n }\n </div>\n </div>\n} @else {\n <div class=\"inner\">\n <div class=\"content\">\n <ng-content/>\n </div>\n </div>\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { SidebarNavGroupToggle } from '../sidebar-nav-group-toggle/sidebar-nav-group-toggle';\nimport { SIDEBAR_NAVIGATION_GROUP } from '../types';\nimport { SidebarNavGroupMenu } from '../sidebar-nav-group-menu/sidebar-nav-group-menu';\nimport { SidebarNavStore } from '../sidebar.store';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ngs-sidebar-nav-group',\n templateUrl: './sidebar-nav-group.html',\n styleUrl: './sidebar-nav-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SIDEBAR_NAVIGATION_GROUP,\n useExisting: forwardRef(() => SidebarNavGroup),\n }\n ],\n host: {\n 'class': 'ngs-sidebar-nav-group',\n '[class.is-active]': 'active',\n }\n})\nexport class SidebarNavGroup implements AfterContentInit {\n private _navStore = inject(SidebarNavStore);\n private _toggle = contentChild.required(SidebarNavGroupToggle, {\n descendants: false,\n });\n private _menu = contentChild.required(SidebarNavGroupMenu, {\n descendants: false,\n });\n readonly _groupId = `sidebar-nav-group-${nextId++}`;\n\n ngAfterContentInit() {\n this._toggle().for.set(this._groupId);\n }\n\n hasActiveItem(): boolean {\n return this._menu().hasActiveItem();\n }\n\n get active(): boolean {\n return this._navStore.isGroupActive(this._groupId);\n }\n}\n","<ng-content/>\n","import {\n AfterContentInit,\n afterNextRender, booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n ElementRef, forwardRef,\n inject,\n input,\n output,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n SidebarNavItem\n} from '../sidebar-nav-item/sidebar-nav-item';\nimport { SIDEBAR_NAVIGATION } from '../types';\nimport { SidebarNavStore } from '../sidebar.store';\nimport { SidebarNavGroup } from '../sidebar-nav-group/sidebar-nav-group';\nimport { SidebarNavItemDefDirective } from '../sidebar-nav-item-def.directive';\n\n@Component({\n selector: 'ngs-sidebar-nav',\n exportAs: 'ngsSidebarNav',\n templateUrl: './sidebar-nav.html',\n styleUrl: './sidebar-nav.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet\n ],\n providers: [\n {\n provide: SIDEBAR_NAVIGATION,\n useExisting: forwardRef(() => SidebarNav),\n },\n SidebarNavStore\n ],\n host: {\n 'class': 'ngs-sidebar-nav',\n },\n})\nexport class SidebarNav implements AfterContentInit {\n private _elementRef = inject(ElementRef);\n private _navStore = inject(SidebarNavStore);\n\n readonly _items = contentChildren(SidebarNavItem, { descendants: true });\n readonly _groups = contentChildren(SidebarNavGroup, { descendants: true });\n readonly _defs = contentChildren(SidebarNavItemDefDirective);\n\n activeKey = input();\n dataSource = input<any[]>();\n itemTypeProperty = input<string>('type');\n autoScrollToActiveItem = input(false, {\n transform: booleanAttribute\n });\n\n readonly itemClicked = output<any>();\n\n constructor() {\n // scroll to the active item if it is not visible in the viewport\n afterNextRender(() => {\n if (this.autoScrollToActiveItem()) {\n this._scrollToActiveItem();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['activeKey']) {\n this._navStore.setItemActiveKey(changes['activeKey'].currentValue);\n this._groups().forEach((group: SidebarNavGroup) => {\n if (group.hasActiveItem()) {\n this._navStore.setGroupActiveKey(group._groupId);\n requestAnimationFrame(() => {\n this._scrollToActiveItem();\n });\n }\n });\n }\n }\n\n ngAfterContentInit() {\n }\n\n private _hasScroll(element: HTMLElement): boolean {\n if (!element.getBoundingClientRect) {\n return false;\n }\n\n return Math.ceil(element.scrollHeight) > Math.ceil(element.getBoundingClientRect().height);\n }\n\n private _isScrolledIntoView(element: HTMLElement, parent: HTMLElement) {\n const elementRect = element.getBoundingClientRect();\n const parentRect = parent.getBoundingClientRect();\n return (elementRect.top >= 0) && (elementRect.bottom <= parentRect.height);\n }\n\n getTemplate(item: any): TemplateRef<any> | null {\n const def = this._defs().find(d => {\n const whenValue = d.when();\n if (whenValue) {\n if (typeof whenValue === 'function') {\n return whenValue(item);\n }\n return item[this.itemTypeProperty()] === whenValue;\n }\n\n return false;\n }) || this._defs().find(d => !d.when());\n\n return def?.template || null;\n }\n\n private _scrollToActiveItem(): void {\n this._items().forEach((item: SidebarNavItem) => {\n if (item.active) {\n let scrollContainer = this._elementRef.nativeElement.closest('.scrollable-content');\n const itemElement = item._hostElement.nativeElement as HTMLElement;\n\n if (this._hasScroll(scrollContainer)) {\n if (!this._isScrolledIntoView(itemElement, scrollContainer)) {\n const parentRect = scrollContainer.getBoundingClientRect();\n const elementRect = itemElement.getBoundingClientRect();\n scrollContainer.scrollTop = elementRect.top - parentRect.height / 2;\n }\n }\n }\n });\n }\n}\n","@if (dataSource(); as data) {\n @for (item of data; track item) {\n <ng-container *ngTemplateOutlet=\"getTemplate(item); context: { $implicit: item }\" />\n }\n} @else {\n <ng-content/>\n}\n","import {booleanAttribute, Component, input} from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-footer',\n exportAs: 'ngsSidebarFooter',\n templateUrl: './sidebar-footer.html',\n styleUrl: './sidebar-footer.scss',\n host: {\n 'class': 'ngs-sidebar-footer',\n '[class.as-block]': 'block()'\n }\n})\nexport class SidebarFooter {\n block = input(false, {\n transform: booleanAttribute\n });\n}\n","<ng-content/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-nav-heading',\n exportAs: 'ngsSidebarNavHeading',\n imports: [\n ],\n templateUrl: './sidebar-nav-heading.html',\n styleUrl: './sidebar-nav-heading.scss',\n host: {\n class: 'ngs-sidebar-nav-heading',\n }\n})\nexport class SidebarNavHeading {\n\n}\n","<div class=\"line\"></div>\n<div class=\"content\">\n <ng-content/>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-sidebar-divider',\n imports: [],\n templateUrl: './sidebar-divider.html',\n styleUrl: './sidebar-divider.scss',\n})\nexport class SidebarDivider {\n\n}\n","<p>sidebar-divider works!</p>\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavItemIcon]'\n})\nexport class SidebarNavItemIconDirective {\n // readonly templateRef = inject(TemplateRef);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavItemBadge]'\n})\nexport class SidebarNavItemBadgeDirective {\n\n constructor() { }\n\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsSidebarNavGroupToggleIcon]'\n})\nexport class SidebarNavGroupToggleIconDirective {\n\n constructor() { }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngstarter-ui/components",
|
|
3
3
|
"description": "NgStarter - AI-friendly Enterprise Angular UI Components and Admin Panel",
|
|
4
|
-
"version": "21.0.
|
|
4
|
+
"version": "21.0.15",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/elementarlabsdev/ngstarter.git"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ElementRef,
|
|
2
|
+
import { ElementRef, AfterViewInit } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
declare class ScrollbarArea {
|
|
5
5
|
private readonly platformId;
|
|
@@ -14,9 +14,9 @@ declare class ScrollbarArea {
|
|
|
14
14
|
readonly scrollTrackXRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
15
15
|
readonly scrollThumbXRef: _angular_core.Signal<ElementRef<HTMLElement>>;
|
|
16
16
|
readonly scrollbarWidth: _angular_core.InputSignal<string>;
|
|
17
|
-
readonly autoHide: _angular_core.
|
|
18
|
-
readonly absolute: _angular_core.
|
|
19
|
-
readonly scrolled:
|
|
17
|
+
readonly autoHide: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
18
|
+
readonly absolute: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
19
|
+
readonly scrolled: _angular_core.OutputEmitterRef<Event>;
|
|
20
20
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
21
21
|
readonly isHovering: _angular_core.WritableSignal<boolean>;
|
|
22
22
|
private readonly scrollTop;
|
|
@@ -64,4 +64,24 @@ declare class ScrollbarArea {
|
|
|
64
64
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollbarArea, "ngs-scrollbar-area", ["ngsScrollbarArea"], { "scrollbarWidth": { "alias": "scrollbarWidth"; "required": false; "isSignal": true; }; "autoHide": { "alias": "autoHide"; "required": false; "isSignal": true; }; "absolute": { "alias": "absolute"; "required": false; "isSignal": true; }; }, { "scrolled": "scrolled"; }, never, ["*"], true, never>;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
declare class ScrollContainerFixed implements AfterViewInit {
|
|
68
|
+
private readonly elementRef;
|
|
69
|
+
private readonly ngZone;
|
|
70
|
+
private readonly platformId;
|
|
71
|
+
private readonly destroyRef;
|
|
72
|
+
private readonly refreshChanges;
|
|
73
|
+
readonly enabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
74
|
+
readonly bottomOffset: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
75
|
+
readonly minHeight: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
76
|
+
readonly height: _angular_core.WritableSignal<number | null>;
|
|
77
|
+
constructor();
|
|
78
|
+
ngAfterViewInit(): void;
|
|
79
|
+
refresh(): void;
|
|
80
|
+
private updateHeight;
|
|
81
|
+
private getResizeStreams;
|
|
82
|
+
private observeElement;
|
|
83
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollContainerFixed, never>;
|
|
84
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ScrollContainerFixed, "[ngsScrollContainerFixed]", ["ngsScrollContainerFixed"], { "enabled": { "alias": "ngsScrollContainerFixed"; "required": false; "isSignal": true; }; "bottomOffset": { "alias": "ngsScrollContainerFixedBottomOffset"; "required": false; "isSignal": true; }; "minHeight": { "alias": "ngsScrollContainerFixedMinHeight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { ScrollContainerFixed, ScrollbarArea };
|
|
@@ -39,11 +39,13 @@ declare class SidebarNavItem implements SidebarNavItemInterface {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
declare class SidebarNavGroup implements AfterContentInit {
|
|
42
|
+
private _navStore;
|
|
42
43
|
private _toggle;
|
|
43
44
|
private _menu;
|
|
44
45
|
readonly _groupId: string;
|
|
45
46
|
ngAfterContentInit(): void;
|
|
46
47
|
hasActiveItem(): boolean;
|
|
48
|
+
get active(): boolean;
|
|
47
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<SidebarNavGroup, never>;
|
|
48
50
|
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarNavGroup, "ngs-sidebar-nav-group", never, {}, {}, ["_toggle", "_menu"], ["*"], true, never>;
|
|
49
51
|
}
|