@glowhop/angular-tour 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glowhop-angular-tour.mjs","sources":["../../src/lib/components/tour-components.ts","../../src/lib/components/default-tour.ts","../../src/lib/glow-tour.ts","../../src/glowhop-angular-tour.ts"],"sourcesContent":["import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n effect,\n Injectable,\n InjectionToken,\n Injector,\n Input,\n inject,\n type OnChanges,\n type OnDestroy,\n type OnInit,\n type Signal,\n signal,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport type { GlowTour as CoreGlowTour, TourState } from \"@glowhop/core-tour\";\nimport {\n type AdapterRootBinding,\n connectGlowTourRoot,\n OVERLAY_IDLE_ATTRIBUTES,\n OVERLAY_IDLE_STYLE,\n OVERLAY_PATH_IDLE_ATTRIBUTES,\n POINTER_IDLE_ATTRIBUTES,\n POINTER_IDLE_STYLE,\n POPOVER_IDLE_ATTRIBUTES,\n POPOVER_IDLE_STYLE,\n styleRecordToCssText,\n} from \"@glowhop/core-tour/adapter\";\nimport type { AngularTourContent } from \"../glow-tour\";\n\nconst OVERLAY_IDLE_STYLE_TEXT = styleRecordToCssText(OVERLAY_IDLE_STYLE);\nconst POINTER_IDLE_STYLE_TEXT = styleRecordToCssText(POINTER_IDLE_STYLE);\nconst POPOVER_IDLE_STYLE_TEXT = styleRecordToCssText(POPOVER_IDLE_STYLE);\n\ntype Tour = CoreGlowTour<AngularTourContent>;\n\n/** Pointer direction content value type: string or TemplateRef. */\nexport type PointerDirectionValue = string | TemplateRef<unknown>;\n\n/** Pointer direction content configuration for custom pointer content. */\nexport interface PointerDirectionContent {\n readonly top?: PointerDirectionValue;\n readonly bottom?: PointerDirectionValue;\n readonly left?: PointerDirectionValue;\n readonly right?: PointerDirectionValue;\n}\n\nconst DEFAULT_POINTER_DIRECTION_CONTENT: Required<PointerDirectionContent> = {\n bottom: \"👇\",\n left: \"👈\",\n right: \"👉\",\n top: \"👆\",\n};\n\nconst POINTER_DIRECTIONS = [\"top\", \"bottom\", \"left\", \"right\"] as const;\n\ninterface ActiveRootBinding {\n readonly binding: AdapterRootBinding;\n readonly idPrefix: string | undefined;\n readonly root: HTMLElement;\n readonly tour: Tour;\n}\n\n@Injectable()\nclass GlowTourScope {\n readonly binding = signal<AdapterRootBinding | null>(null);\n readonly tour = signal<Tour | null>(null);\n private readonly snapshot = signal<TourState<AngularTourContent> | null>(null);\n readonly state = this.snapshot.asReadonly();\n\n constructor() {\n effect(\n (onCleanup) => {\n const tour = this.tour();\n if (!tour) {\n this.snapshot.set(null);\n return;\n }\n this.snapshot.set(tour.state.get());\n onCleanup(tour.state.subscribe((state) => this.snapshot.set(state)));\n },\n { allowSignalWrites: true },\n );\n }\n}\n\nconst GLOW_TOUR_SCOPE = new InjectionToken<GlowTourScope>(\"GlowTourScope\");\n\nfunction useTourScope() {\n const scope = inject(GLOW_TOUR_SCOPE, { optional: true });\n if (!scope) {\n throw new Error('GlowTour components must be rendered inside <glow-tour-root [tour]=\"...\">.');\n }\n return scope;\n}\n\n/**\n * Injects the tour state signal into a component.\n * Must be called within a GlowTourRoot component context.\n * @returns A signal containing the current tour state or null.\n */\nexport function injectGlowTour(): Signal<TourState<AngularTourContent> | null> {\n return useTourScope().state;\n}\n\n@Directive()\nabstract class GlowTourReactiveComponent {\n protected readonly scope = useTourScope();\n protected readonly snapshot = this.scope.state;\n protected readonly step = computed(() => this.snapshot()?.currentStep?.currentProps ?? null);\n}\n\n@Component({\n selector: \"glow-tour-root\",\n standalone: true,\n host: { \"data-glow-tour-root\": \"\" },\n providers: [GlowTourScope, { provide: GLOW_TOUR_SCOPE, useExisting: GlowTourScope }],\n template: \"<ng-content />\",\n})\n/** Root container component for GlowTour.js. Provides tour context and manages the root binding. */\nexport class GlowTourRoot implements OnChanges, OnDestroy, OnInit {\n /** The tour controller instance to display. */\n @Input({ required: true }) tour!: Tour;\n /** Optional prefix for generated HTML IDs. */\n @Input() idPrefix?: string;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly scope = inject(GlowTourScope);\n private active: ActiveRootBinding | null = null;\n private initialized = false;\n\n ngOnChanges() {\n if (this.initialized) this.reconcile();\n }\n\n ngOnInit() {\n if (!this.tour) {\n throw new Error(\"GlowTourRoot requires a tour input.\");\n }\n\n this.initialized = true;\n this.reconcile();\n }\n\n ngOnDestroy() {\n this.release();\n }\n\n private reconcile() {\n const root = this.element.nativeElement;\n const tour = this.tour;\n const idPrefix = this.idPrefix;\n this.scope.tour.set(tour);\n const current = this.active;\n if (\n current !== null &&\n current.root === root &&\n current.tour === tour &&\n current.idPrefix === idPrefix\n ) {\n return;\n }\n this.release();\n const binding = connectGlowTourRoot(tour, {\n idPrefix,\n root,\n });\n const active = { binding, idPrefix, root, tour };\n this.active = active;\n this.scope.binding.set(binding);\n }\n\n private release() {\n const active = this.active;\n if (!active) return;\n this.active = null;\n active.binding.release();\n if (this.scope.binding() === active.binding) this.scope.binding.set(null);\n }\n}\n\n@Component({\n selector: \"glow-tour-header\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <header data-glow-tour-header [id]=\"scope.binding()?.ids?.title\">\n @if (titleTemplate()) {\n <ng-container [ngTemplateOutlet]=\"titleTemplate()\" />\n } @else {\n {{ titleText() }}\n }\n </header>\n `,\n})\n/** Header component displaying the current step's title. */\nexport class GlowTourHeader extends GlowTourReactiveComponent {\n readonly titleTemplate = computed(() => {\n const title = this.step()?.title;\n return title instanceof TemplateRef ? title : null;\n });\n readonly titleText = computed(() => {\n const title = this.step()?.title;\n return typeof title === \"string\" ? title : \"\";\n });\n}\n\n@Component({\n selector: \"glow-tour-content\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div aria-live=\"polite\" data-glow-tour-content [id]=\"scope.binding()?.ids?.description\">\n @if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n } @else {\n {{ contentText() }}\n }\n </div>\n `,\n})\n/** Content component displaying the current step's content with live region. */\nexport class GlowTourContent extends GlowTourReactiveComponent {\n readonly contentTemplate = computed(() => {\n const content = this.step()?.content;\n return content instanceof TemplateRef ? content : null;\n });\n readonly contentText = computed(() => {\n const content = this.step()?.content;\n return typeof content === \"string\" ? content : \"\";\n });\n}\n\n@Component({\n selector: \"glow-tour-footer\",\n standalone: true,\n template: `@if (!step()?.popover?.hideFooter) { <footer data-glow-tour-footer><ng-content /></footer> }`,\n})\n/** Footer component containing action buttons. Conditionally rendered based on tour step configuration. */\nexport class GlowTourFooter extends GlowTourReactiveComponent {}\n\n@Directive()\nabstract class GlowTourBoundElement<T extends Element> {\n protected readonly scope = useTourScope();\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n protected bind(element: T, bindElement: (binding: AdapterRootBinding, element: T) => () => void) {\n const cleanup = effect(\n (onCleanup) => {\n const binding = this.scope.binding();\n if (binding) onCleanup(bindElement(binding, element));\n },\n { injector: this.injector },\n );\n this.destroyRef.onDestroy(() => cleanup.destroy());\n }\n}\n\n@Component({\n selector: \"glow-tour-popover\",\n standalone: true,\n // The idle attributes/style come from imported `@glowhop/core-tour/adapter`\n // constants, so ngc's AOT template analyzer (NG1010) cannot inline them as\n // string-interpolated literals in the template. Bound via component fields\n // instead; the values are still static, so server and client render\n // byte-identical output.\n template: `\n <section #tourElement\n [attr.aria-hidden]=\"idleAriaHidden\"\n data-glow-tour-popover\n [attr.aria-describedby]=\"scope.binding()?.ids?.description\"\n [attr.aria-labelledby]=\"scope.binding()?.ids?.title\"\n [id]=\"scope.binding()?.ids?.popover\"\n [attr.inert]=\"idleInert\"\n role=\"dialog\"\n [style]=\"idleStyle\"\n tabindex=\"-1\"\n ><ng-content /></section>\n `,\n})\n/** Popover component containing the tour content with accessibility attributes. */\nexport class GlowTourPopover extends GlowTourBoundElement<HTMLElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<HTMLElement>;\n protected readonly idleAriaHidden = POPOVER_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleInert = POPOVER_IDLE_ATTRIBUTES.inert;\n protected readonly idleStyle = POPOVER_IDLE_STYLE_TEXT;\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindPopover(element));\n }\n}\n\n@Component({\n selector: \"glow-tour-pointer\",\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div #tourElement data-glow-tour-pointer [attr.aria-hidden]=\"idleAriaHidden\" [style]=\"idleStyle\">\n @for (direction of directions; track direction) {\n <div [attr.data-glow-tour-pointer-direction]=\"direction\">\n @if (asTemplate(content()[direction]); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" />\n } @else {\n {{ content()[direction] }}\n }\n </div>\n }\n </div>\n `,\n})\n/** Pointer component displaying directional indicators pointing to the target element. */\nexport class GlowTourPointer extends GlowTourBoundElement<HTMLElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<HTMLElement>;\n private readonly directionContentValue = signal<PointerDirectionContent | undefined>(undefined);\n protected readonly idleAriaHidden = POINTER_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleStyle = POINTER_IDLE_STYLE_TEXT;\n\n protected readonly directions = POINTER_DIRECTIONS;\n readonly content = computed(() => ({\n ...DEFAULT_POINTER_DIRECTION_CONTENT,\n ...this.directionContentValue(),\n }));\n\n /** Optional custom content for each pointer direction. */\n @Input() set directionContent(value: PointerDirectionContent | undefined) {\n this.directionContentValue.set(value);\n }\n\n protected asTemplate(value: PointerDirectionValue): TemplateRef<unknown> | null {\n return value instanceof TemplateRef ? value : null;\n }\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindPointer(element));\n }\n}\n\n@Component({\n selector: \"glow-tour-overlay\",\n standalone: true,\n template: `\n <svg #tourElement\n [attr.aria-hidden]=\"idleAriaHidden\"\n [attr.data-glow-tour-allow-interaction]=\"idleAllowInteraction\"\n data-glow-tour-overlay\n focusable=\"false\"\n [attr.inert]=\"idleInert\"\n role=\"presentation\"\n [style]=\"idleStyle\"\n viewBox=\"0 0 0 0\"\n >\n <path\n [attr.cursor]=\"idlePathCursor\"\n data-glow-tour-overlay-path\n fill-rule=\"evenodd\"\n [attr.opacity]=\"idlePathOpacity\"\n [attr.pointer-events]=\"idlePathPointerEvents\"\n /><ng-content />\n </svg>\n `,\n})\n/** Overlay component rendering a clipped SVG mask highlighting the target element. */\nexport class GlowTourOverlay extends GlowTourBoundElement<SVGSVGElement> implements OnInit {\n @ViewChild(\"tourElement\", { static: true }) private readonly element!: ElementRef<SVGSVGElement>;\n protected readonly idleAriaHidden = OVERLAY_IDLE_ATTRIBUTES[\"aria-hidden\"];\n protected readonly idleAllowInteraction =\n OVERLAY_IDLE_ATTRIBUTES[\"data-glow-tour-allow-interaction\"];\n protected readonly idleInert = OVERLAY_IDLE_ATTRIBUTES.inert;\n protected readonly idleStyle = OVERLAY_IDLE_STYLE_TEXT;\n protected readonly idlePathCursor = OVERLAY_PATH_IDLE_ATTRIBUTES.cursor;\n protected readonly idlePathOpacity = OVERLAY_PATH_IDLE_ATTRIBUTES.opacity;\n protected readonly idlePathPointerEvents = OVERLAY_PATH_IDLE_ATTRIBUTES[\"pointer-events\"];\n\n ngOnInit() {\n this.bind(this.element.nativeElement, (binding, element) => binding.bindOverlay(element));\n }\n}\n\n@Directive()\nabstract class GlowTourTrigger extends GlowTourReactiveComponent {\n private readonly ariaLabelValue = signal<string | undefined>(undefined);\n private readonly disabledValue = signal(false);\n\n protected readonly ariaLabelText = computed(() => this.ariaLabelValue());\n protected readonly consumerDisabled = computed(() => this.disabledValue());\n protected readonly ariaControls = computed(() => this.scope.binding()?.ids.popover);\n\n protected setAriaLabel(value: string | undefined) {\n this.ariaLabelValue.set(value);\n }\n\n protected setDisabled(value: boolean) {\n this.disabledValue.set(value);\n }\n}\n\n@Component({\n selector: \"glow-tour-back-trigger\",\n standalone: true,\n template: `\n @if (!step()?.popover?.hidePreviousButton) {\n <button\n data-glow-tour-previous-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for navigating to the previous step in the tour. */\nexport class GlowTourBackTrigger extends GlowTourTrigger {\n private readonly backLabelValue = signal<string | undefined>(undefined);\n\n /** Optional aria-label for the back button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Optional label text for the back button. */\n @Input() set backLabel(value: string | undefined) {\n this.backLabelValue.set(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n\n readonly isDisabled = computed(\n () =>\n this.consumerDisabled() ||\n !this.snapshot()?.canPrevious ||\n this.step()?.popover?.disablePreviousButton === true,\n );\n readonly label = computed(() => this.backLabelValue() ?? \"Back step\");\n}\n\n@Component({\n selector: \"glow-tour-advance-trigger\",\n standalone: true,\n template: `\n @if (!step()?.popover?.hideAdvanceButton) {\n <button\n data-glow-tour-advance-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for advancing to the next step or finishing the tour. */\nexport class GlowTourAdvanceTrigger extends GlowTourTrigger {\n private readonly finishLabelValue = signal<string | undefined>(undefined);\n private readonly advanceLabelValue = signal<string | undefined>(undefined);\n\n /** Optional aria-label for the advance button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n /** Optional label text for the finish step. */\n @Input() set finishLabel(value: string | undefined) {\n this.finishLabelValue.set(value);\n }\n /** Optional label text for advancing to the next step. */\n @Input() set advanceLabel(value: string | undefined) {\n this.advanceLabelValue.set(value);\n }\n\n readonly isDisabled = computed(\n () =>\n this.consumerDisabled() ||\n !this.snapshot()?.canAdvance ||\n this.step()?.popover?.disableAdvanceButton === true,\n );\n readonly label = computed(() => {\n return this.snapshot()?.isLastStep\n ? (this.finishLabelValue() ?? \"Finish tour\")\n : (this.advanceLabelValue() ?? \"Advance step\");\n });\n}\n\n@Component({\n selector: \"glow-tour-cancel-trigger\",\n standalone: true,\n template: `\n @if (snapshot()?.canCancel) {\n <button\n data-glow-tour-cancel-trigger\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabelText() ?? label()\"\n [attr.data-glow-tour-consumer-disabled]=\"consumerDisabled() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n type=\"button\"\n ><ng-content>{{ label() }}</ng-content></button>\n }\n `,\n})\n/** Button component for canceling/skipping the tour. */\nexport class GlowTourCancelTrigger extends GlowTourTrigger {\n /** Optional aria-label for the cancel button. */\n @Input() set ariaLabel(value: string | undefined) {\n this.setAriaLabel(value);\n }\n /** Whether the button is disabled. */\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n this.setDisabled(value);\n }\n\n readonly isDisabled = computed(() => this.consumerDisabled() || !this.snapshot()?.canCancel);\n readonly label = computed(() => \"Skip\");\n}\n","import { Component, Input } from \"@angular/core\";\nimport type { GlowTour } from \"@glowhop/core-tour\";\nimport type { AngularTourContent } from \"../glow-tour\";\nimport {\n GlowTourAdvanceTrigger,\n GlowTourBackTrigger,\n GlowTourCancelTrigger,\n GlowTourContent,\n GlowTourFooter,\n GlowTourHeader,\n GlowTourOverlay,\n GlowTourPointer,\n GlowTourPopover,\n GlowTourRoot,\n} from \"./tour-components\";\n\n@Component({\n selector: \"glow-tour-default\",\n standalone: true,\n imports: [\n GlowTourRoot,\n GlowTourOverlay,\n GlowTourPointer,\n GlowTourPopover,\n GlowTourHeader,\n GlowTourContent,\n GlowTourFooter,\n GlowTourCancelTrigger,\n GlowTourBackTrigger,\n GlowTourAdvanceTrigger,\n ],\n template: `\n <glow-tour-root [tour]=\"tour\" [idPrefix]=\"idPrefix\">\n <glow-tour-overlay />\n <glow-tour-pointer />\n <glow-tour-popover>\n <glow-tour-header />\n <glow-tour-content />\n <glow-tour-footer>\n <glow-tour-cancel-trigger />\n <glow-tour-back-trigger />\n <glow-tour-advance-trigger />\n </glow-tour-footer>\n </glow-tour-popover>\n </glow-tour-root>\n `,\n})\n/** Default GlowTour.js component that renders all tour UI elements in a standard layout. */\nexport class GlowTourDefault {\n /** The tour controller instance to display. */\n @Input({ required: true }) tour!: GlowTour<AngularTourContent>;\n /** Optional prefix for generated HTML IDs. */\n @Input() idPrefix?: string;\n}\n","import type { TemplateRef } from \"@angular/core\";\nimport type {\n GlowTour as CoreGlowTour,\n StartOptions as CoreStartOptions,\n StepPropsStore as CoreStepPropsStore,\n TourState as CoreTourState,\n WorkflowDefinition as CoreWorkflowDefinition,\n GlowTourOptions,\n} from \"@glowhop/core-tour\";\nimport { createGlowTour as createCoreGlowTour } from \"@glowhop/core-tour\";\n\n/** Angular content type: string or TemplateRef. */\nexport type AngularTourContent = string | TemplateRef<unknown>;\n/** Angular tour controller instance. */\nexport type Tour = CoreGlowTour<AngularTourContent>;\n/** Angular tour state snapshot. */\nexport type TourState = CoreTourState<AngularTourContent>;\n/** Angular step properties store. */\nexport type StepPropsStore = CoreStepPropsStore<AngularTourContent>;\n/** Angular workflow definition. */\nexport type WorkflowDefinition = CoreWorkflowDefinition<AngularTourContent>;\n/** Angular tour start options. */\nexport type StartOptions = CoreStartOptions<AngularTourContent>;\n\n/**\n * Creates a new GlowTour.js instance for Angular.\n * @param options Tour options for error handling.\n * @returns A tour controller ready to run Angular workflows.\n */\nexport function createGlowTour(options: GlowTourOptions = {}): Tour {\n return createCoreGlowTour<AngularTourContent>(options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createCoreGlowTour"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@glowhop/angular-tour" />
5
+ export * from './public-api';
@@ -0,0 +1,11 @@
1
+ import type { GlowTour } from "@glowhop/core-tour";
2
+ import type { AngularTourContent } from "../glow-tour";
3
+ import * as i0 from "@angular/core";
4
+ export declare class GlowTourDefault {
5
+ /** The tour controller instance to display. */
6
+ tour: GlowTour<AngularTourContent>;
7
+ /** Optional prefix for generated HTML IDs. */
8
+ idPrefix?: string;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourDefault, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourDefault, "glow-tour-default", never, { "tour": { "alias": "tour"; "required": true; }; "idPrefix": { "alias": "idPrefix"; "required": false; }; }, {}, never, never, true, never>;
11
+ }
@@ -0,0 +1,173 @@
1
+ import { type OnChanges, type OnDestroy, type OnInit, type Signal, TemplateRef } from "@angular/core";
2
+ import type { GlowTour as CoreGlowTour, TourState } from "@glowhop/core-tour";
3
+ import { type AdapterRootBinding } from "@glowhop/core-tour/adapter";
4
+ import type { AngularTourContent } from "../glow-tour";
5
+ import * as i0 from "@angular/core";
6
+ type Tour = CoreGlowTour<AngularTourContent>;
7
+ /** Pointer direction content value type: string or TemplateRef. */
8
+ export type PointerDirectionValue = string | TemplateRef<unknown>;
9
+ /** Pointer direction content configuration for custom pointer content. */
10
+ export interface PointerDirectionContent {
11
+ readonly top?: PointerDirectionValue;
12
+ readonly bottom?: PointerDirectionValue;
13
+ readonly left?: PointerDirectionValue;
14
+ readonly right?: PointerDirectionValue;
15
+ }
16
+ declare class GlowTourScope {
17
+ readonly binding: import("@angular/core").WritableSignal<AdapterRootBinding | null>;
18
+ readonly tour: import("@angular/core").WritableSignal<Tour | null>;
19
+ private readonly snapshot;
20
+ readonly state: Signal<TourState<AngularTourContent> | null>;
21
+ constructor();
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourScope, never>;
23
+ static ɵprov: i0.ɵɵInjectableDeclaration<GlowTourScope>;
24
+ }
25
+ /**
26
+ * Injects the tour state signal into a component.
27
+ * Must be called within a GlowTourRoot component context.
28
+ * @returns A signal containing the current tour state or null.
29
+ */
30
+ export declare function injectGlowTour(): Signal<TourState<AngularTourContent> | null>;
31
+ declare abstract class GlowTourReactiveComponent {
32
+ protected readonly scope: GlowTourScope;
33
+ protected readonly snapshot: Signal<TourState<AngularTourContent> | null>;
34
+ protected readonly step: Signal<import("@glowhop/core-tour").ReadonlyStepProps<AngularTourContent> | null>;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourReactiveComponent, never>;
36
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GlowTourReactiveComponent, never, never, {}, {}, never, never, false, never>;
37
+ }
38
+ export declare class GlowTourRoot implements OnChanges, OnDestroy, OnInit {
39
+ /** The tour controller instance to display. */
40
+ tour: Tour;
41
+ /** Optional prefix for generated HTML IDs. */
42
+ idPrefix?: string;
43
+ private readonly element;
44
+ private readonly scope;
45
+ private active;
46
+ private initialized;
47
+ ngOnChanges(): void;
48
+ ngOnInit(): void;
49
+ ngOnDestroy(): void;
50
+ private reconcile;
51
+ private release;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourRoot, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourRoot, "glow-tour-root", never, { "tour": { "alias": "tour"; "required": true; }; "idPrefix": { "alias": "idPrefix"; "required": false; }; }, {}, never, ["*"], true, never>;
54
+ }
55
+ export declare class GlowTourHeader extends GlowTourReactiveComponent {
56
+ readonly titleTemplate: Signal<TemplateRef<unknown> | null>;
57
+ readonly titleText: Signal<string>;
58
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourHeader, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourHeader, "glow-tour-header", never, {}, {}, never, never, true, never>;
60
+ }
61
+ export declare class GlowTourContent extends GlowTourReactiveComponent {
62
+ readonly contentTemplate: Signal<TemplateRef<unknown> | null>;
63
+ readonly contentText: Signal<string>;
64
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourContent, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourContent, "glow-tour-content", never, {}, {}, never, never, true, never>;
66
+ }
67
+ export declare class GlowTourFooter extends GlowTourReactiveComponent {
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourFooter, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourFooter, "glow-tour-footer", never, {}, {}, never, ["*"], true, never>;
70
+ }
71
+ declare abstract class GlowTourBoundElement<T extends Element> {
72
+ protected readonly scope: GlowTourScope;
73
+ private readonly destroyRef;
74
+ private readonly injector;
75
+ protected bind(element: T, bindElement: (binding: AdapterRootBinding, element: T) => () => void): void;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourBoundElement<any>, never>;
77
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GlowTourBoundElement<any>, never, never, {}, {}, never, never, false, never>;
78
+ }
79
+ export declare class GlowTourPopover extends GlowTourBoundElement<HTMLElement> implements OnInit {
80
+ private readonly element;
81
+ protected readonly idleAriaHidden: "true";
82
+ protected readonly idleInert: "true";
83
+ protected readonly idleStyle: string;
84
+ ngOnInit(): void;
85
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourPopover, never>;
86
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourPopover, "glow-tour-popover", never, {}, {}, never, ["*"], true, never>;
87
+ }
88
+ export declare class GlowTourPointer extends GlowTourBoundElement<HTMLElement> implements OnInit {
89
+ private readonly element;
90
+ private readonly directionContentValue;
91
+ protected readonly idleAriaHidden: "true";
92
+ protected readonly idleStyle: string;
93
+ protected readonly directions: readonly ["top", "bottom", "left", "right"];
94
+ readonly content: Signal<{
95
+ top: PointerDirectionValue;
96
+ bottom: PointerDirectionValue;
97
+ left: PointerDirectionValue;
98
+ right: PointerDirectionValue;
99
+ }>;
100
+ /** Optional custom content for each pointer direction. */
101
+ set directionContent(value: PointerDirectionContent | undefined);
102
+ protected asTemplate(value: PointerDirectionValue): TemplateRef<unknown> | null;
103
+ ngOnInit(): void;
104
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourPointer, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourPointer, "glow-tour-pointer", never, { "directionContent": { "alias": "directionContent"; "required": false; }; }, {}, never, never, true, never>;
106
+ }
107
+ export declare class GlowTourOverlay extends GlowTourBoundElement<SVGSVGElement> implements OnInit {
108
+ private readonly element;
109
+ protected readonly idleAriaHidden: "true";
110
+ protected readonly idleAllowInteraction: "false";
111
+ protected readonly idleInert: "true";
112
+ protected readonly idleStyle: string;
113
+ protected readonly idlePathCursor: "auto";
114
+ protected readonly idlePathOpacity: "0";
115
+ protected readonly idlePathPointerEvents: "auto";
116
+ ngOnInit(): void;
117
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourOverlay, never>;
118
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourOverlay, "glow-tour-overlay", never, {}, {}, never, ["*"], true, never>;
119
+ }
120
+ declare abstract class GlowTourTrigger extends GlowTourReactiveComponent {
121
+ private readonly ariaLabelValue;
122
+ private readonly disabledValue;
123
+ protected readonly ariaLabelText: Signal<string | undefined>;
124
+ protected readonly consumerDisabled: Signal<boolean>;
125
+ protected readonly ariaControls: Signal<string | undefined>;
126
+ protected setAriaLabel(value: string | undefined): void;
127
+ protected setDisabled(value: boolean): void;
128
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourTrigger, never>;
129
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GlowTourTrigger, never, never, {}, {}, never, never, false, never>;
130
+ }
131
+ export declare class GlowTourBackTrigger extends GlowTourTrigger {
132
+ private readonly backLabelValue;
133
+ /** Optional aria-label for the back button. */
134
+ set ariaLabel(value: string | undefined);
135
+ /** Optional label text for the back button. */
136
+ set backLabel(value: string | undefined);
137
+ /** Whether the button is disabled. */
138
+ set disabled(value: boolean);
139
+ readonly isDisabled: Signal<boolean>;
140
+ readonly label: Signal<string>;
141
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourBackTrigger, never>;
142
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourBackTrigger, "glow-tour-back-trigger", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["*"], true, never>;
143
+ static ngAcceptInputType_disabled: unknown;
144
+ }
145
+ export declare class GlowTourAdvanceTrigger extends GlowTourTrigger {
146
+ private readonly finishLabelValue;
147
+ private readonly advanceLabelValue;
148
+ /** Optional aria-label for the advance button. */
149
+ set ariaLabel(value: string | undefined);
150
+ /** Whether the button is disabled. */
151
+ set disabled(value: boolean);
152
+ /** Optional label text for the finish step. */
153
+ set finishLabel(value: string | undefined);
154
+ /** Optional label text for advancing to the next step. */
155
+ set advanceLabel(value: string | undefined);
156
+ readonly isDisabled: Signal<boolean>;
157
+ readonly label: Signal<string>;
158
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourAdvanceTrigger, never>;
159
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourAdvanceTrigger, "glow-tour-advance-trigger", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "finishLabel": { "alias": "finishLabel"; "required": false; }; "advanceLabel": { "alias": "advanceLabel"; "required": false; }; }, {}, never, ["*"], true, never>;
160
+ static ngAcceptInputType_disabled: unknown;
161
+ }
162
+ export declare class GlowTourCancelTrigger extends GlowTourTrigger {
163
+ /** Optional aria-label for the cancel button. */
164
+ set ariaLabel(value: string | undefined);
165
+ /** Whether the button is disabled. */
166
+ set disabled(value: boolean);
167
+ readonly isDisabled: Signal<boolean>;
168
+ readonly label: Signal<string>;
169
+ static ɵfac: i0.ɵɵFactoryDeclaration<GlowTourCancelTrigger, never>;
170
+ static ɵcmp: i0.ɵɵComponentDeclaration<GlowTourCancelTrigger, "glow-tour-cancel-trigger", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["*"], true, never>;
171
+ static ngAcceptInputType_disabled: unknown;
172
+ }
173
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { TemplateRef } from "@angular/core";
2
+ import type { GlowTour as CoreGlowTour, StartOptions as CoreStartOptions, StepPropsStore as CoreStepPropsStore, TourState as CoreTourState, WorkflowDefinition as CoreWorkflowDefinition, GlowTourOptions } from "@glowhop/core-tour";
3
+ /** Angular content type: string or TemplateRef. */
4
+ export type AngularTourContent = string | TemplateRef<unknown>;
5
+ /** Angular tour controller instance. */
6
+ export type Tour = CoreGlowTour<AngularTourContent>;
7
+ /** Angular tour state snapshot. */
8
+ export type TourState = CoreTourState<AngularTourContent>;
9
+ /** Angular step properties store. */
10
+ export type StepPropsStore = CoreStepPropsStore<AngularTourContent>;
11
+ /** Angular workflow definition. */
12
+ export type WorkflowDefinition = CoreWorkflowDefinition<AngularTourContent>;
13
+ /** Angular tour start options. */
14
+ export type StartOptions = CoreStartOptions<AngularTourContent>;
15
+ /**
16
+ * Creates a new GlowTour.js instance for Angular.
17
+ * @param options Tour options for error handling.
18
+ * @returns A tour controller ready to run Angular workflows.
19
+ */
20
+ export declare function createGlowTour(options?: GlowTourOptions): Tour;
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@glowhop/angular-tour",
3
+ "version": "1.0.0",
4
+ "description": "Angular 18 adapter for GlowTour.js.",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/Glowhop/GlowTour.js#readme",
7
+ "bugs": {
8
+ "url": "https://github.com/Glowhop/GlowTour.js/issues"
9
+ },
10
+ "keywords": [
11
+ "tour",
12
+ "guided-tour",
13
+ "angular",
14
+ "onboarding"
15
+ ],
16
+ "engines": {
17
+ "node": ">=18.19.1"
18
+ },
19
+ "files": [
20
+ "**/*"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/Glowhop/GlowTour.js.git",
28
+ "directory": "packages/angular"
29
+ },
30
+ "type": "module",
31
+ "types": "./index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "types": "./index.d.ts",
35
+ "import": "./fesm2022/glowhop-angular-tour.mjs"
36
+ },
37
+ "./config": {
38
+ "types": "./config/index.d.ts",
39
+ "import": "./fesm2022/glowhop-angular-tour-config.mjs"
40
+ }
41
+ },
42
+ "dependencies": {
43
+ "@glowhop/core-tour": "1.0.0",
44
+ "tslib": "^2.3.0"
45
+ },
46
+ "peerDependencies": {
47
+ "@angular/common": "^18.0.0",
48
+ "@angular/core": "^18.0.0"
49
+ },
50
+ "sideEffects": false
51
+ }
@@ -0,0 +1,6 @@
1
+ export type { GlowTourOptions } from "@glowhop/core-tour";
2
+ export { GlowTourDefault } from "./lib/components/default-tour";
3
+ export type { PointerDirectionContent, PointerDirectionValue, } from "./lib/components/tour-components";
4
+ export { GlowTourAdvanceTrigger, GlowTourBackTrigger, GlowTourCancelTrigger, GlowTourContent, GlowTourFooter, GlowTourHeader, GlowTourOverlay, GlowTourPointer, GlowTourPopover, GlowTourRoot, injectGlowTour, } from "./lib/components/tour-components";
5
+ export type { AngularTourContent, StartOptions, StepPropsStore, Tour, TourState, WorkflowDefinition, } from "./lib/glow-tour";
6
+ export { createGlowTour } from "./lib/glow-tour";