@frame-kit/ui-ng-patterns 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { TemplateRef } from '@angular/core';
|
|
3
3
|
import { HeadlineLevel } from '@frame-kit/ui-ng/core/headline';
|
|
4
|
+
import * as i1 from '@angular/cdk/drag-drop';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Page-level dashboard header: title + optional description on the left, up to
|
|
@@ -378,5 +379,387 @@ declare class SidebarNavItemDirective {
|
|
|
378
379
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SidebarNavItemDirective, "ng-template[fkSidebarNavItem]", never, {}, {}, never, never, true, never>;
|
|
379
380
|
}
|
|
380
381
|
|
|
381
|
-
|
|
382
|
-
|
|
382
|
+
/**
|
|
383
|
+
* Colour accent for the dialog header's icon tile. Each value is a semantic
|
|
384
|
+
* tone that maps to a `--fk-color-*` token — never a literal colour name — so a
|
|
385
|
+
* theme can retint it. Pick by the action's meaning:
|
|
386
|
+
*
|
|
387
|
+
* - `brand` — a create / neutral primary action.
|
|
388
|
+
* - `warning` — a cautionary but reversible change (edit, rotate, deactivate).
|
|
389
|
+
* - `success` — a positive / recoverable outcome.
|
|
390
|
+
* - `danger` — a destructive, hard-to-reverse action.
|
|
391
|
+
* - `accent` — a secondary highlight tone with no danger connotation.
|
|
392
|
+
*/
|
|
393
|
+
type DialogHeaderTint = 'brand' | 'warning' | 'success' | 'danger' | 'accent';
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Colour of the shell's built-in confirm button:
|
|
397
|
+
*
|
|
398
|
+
* - `primary` — the default create / affirmative action.
|
|
399
|
+
* - `danger` — a destructive, hard-to-reverse action.
|
|
400
|
+
* - `warning` — a cautionary but reversible change; renders as a retinted
|
|
401
|
+
* `danger` button (fk-button has no warning variant, so the shell overrides
|
|
402
|
+
* its danger custom properties to the warning scale).
|
|
403
|
+
*/
|
|
404
|
+
type DialogConfirmVariant = 'primary' | 'danger' | 'warning';
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* The one dialog shell every dashboard dialog is built from. It owns the fixed
|
|
408
|
+
* chrome — the tinted icon-tile header (title / accent / subtitle + close) and
|
|
409
|
+
* the footer (muted note + the standard Cancel/confirm buttons) — so individual
|
|
410
|
+
* dialogs stop re-declaring any of it. Everything unique to a dialog lives in
|
|
411
|
+
* the projected **content region**.
|
|
412
|
+
*
|
|
413
|
+
* The shell carries no i18n dependency and no domain data: every label is a
|
|
414
|
+
* plain input (with English defaults for the built-in Cancel button), and the
|
|
415
|
+
* icons are inputs that degrade gracefully when empty. Render it inside the
|
|
416
|
+
* consuming app's own `fk-dialog` (opened bare — `header: null, closable:
|
|
417
|
+
* false` — with an `ariaLabel` for an accessible name).
|
|
418
|
+
*
|
|
419
|
+
* The common case needs zero footer markup — set the confirm label/variant and
|
|
420
|
+
* handle the outputs:
|
|
421
|
+
*
|
|
422
|
+
* ```html
|
|
423
|
+
* <fk-dialog-shell
|
|
424
|
+
* icon="user-ban"
|
|
425
|
+
* tint="warning"
|
|
426
|
+
* title="Deactivate identity"
|
|
427
|
+
* [subtitle]="subtitle"
|
|
428
|
+
* footerNote="Sign-in blocked"
|
|
429
|
+
* footerNoteIcon="power"
|
|
430
|
+
* confirmLabel="Deactivate"
|
|
431
|
+
* confirmIcon="user-ban"
|
|
432
|
+
* confirmVariant="warning"
|
|
433
|
+
* [confirmDisabled]="!ready()"
|
|
434
|
+
* (confirm)="onConfirm()"
|
|
435
|
+
* (dismiss)="onCancel()"
|
|
436
|
+
* >
|
|
437
|
+
* <!-- content region: lead, description, cards, callouts … -->
|
|
438
|
+
* </fk-dialog-shell>
|
|
439
|
+
* ```
|
|
440
|
+
*
|
|
441
|
+
* Escape hatches for the exceptions:
|
|
442
|
+
* - leave `confirmLabel` empty and project buttons into the `dialogFooter` slot
|
|
443
|
+
* to keep the footer chrome but use custom buttons (e.g. a form submit);
|
|
444
|
+
* - set `[customFooter]="true"` and project into the `footer` slot to replace
|
|
445
|
+
* the whole footer.
|
|
446
|
+
*/
|
|
447
|
+
declare class DialogShellComponent {
|
|
448
|
+
/** Icon glyph for the header tile. Empty renders no tile. */
|
|
449
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
450
|
+
/** Colour accent for the header tile. */
|
|
451
|
+
readonly tint: _angular_core.InputSignal<DialogHeaderTint>;
|
|
452
|
+
/** Header title. */
|
|
453
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
454
|
+
/** Optional trailing accent appended to the title in the tint colour. */
|
|
455
|
+
readonly titleAccent: _angular_core.InputSignal<string>;
|
|
456
|
+
/** Optional mono subtitle under the title. */
|
|
457
|
+
readonly subtitle: _angular_core.InputSignal<string>;
|
|
458
|
+
/** Optional muted footer note on the left (e.g. "Permanent"). */
|
|
459
|
+
readonly footerNote: _angular_core.InputSignal<string>;
|
|
460
|
+
/** Optional icon rendered before the footer note. */
|
|
461
|
+
readonly footerNoteIcon: _angular_core.InputSignal<string>;
|
|
462
|
+
/**
|
|
463
|
+
* Confirm-button label. When set, the shell renders the standard
|
|
464
|
+
* Cancel + confirm pair; leave empty to project custom buttons into the
|
|
465
|
+
* `dialogFooter` slot instead.
|
|
466
|
+
*/
|
|
467
|
+
readonly confirmLabel: _angular_core.InputSignal<string>;
|
|
468
|
+
/** Optional leading icon on the confirm button. */
|
|
469
|
+
readonly confirmIcon: _angular_core.InputSignal<string>;
|
|
470
|
+
/** Confirm-button colour — `primary` (default), `danger`, or `warning`. */
|
|
471
|
+
readonly confirmVariant: _angular_core.InputSignal<DialogConfirmVariant>;
|
|
472
|
+
/** Disables the confirm button (e.g. while a type-to-confirm is unmet). */
|
|
473
|
+
readonly confirmDisabled: _angular_core.InputSignal<boolean>;
|
|
474
|
+
/** Cancel-button label. Defaults to `Cancel`. */
|
|
475
|
+
readonly cancelLabel: _angular_core.InputSignal<string>;
|
|
476
|
+
/** Accessible label for the header's close button. */
|
|
477
|
+
readonly closeLabel: _angular_core.InputSignal<string>;
|
|
478
|
+
/**
|
|
479
|
+
* Escape hatch for the rare dialog that needs a bespoke footer. When true,
|
|
480
|
+
* the default `fk-dialog-footer` (note + buttons) is suppressed and whatever
|
|
481
|
+
* is projected into the `footer` slot is rendered raw instead.
|
|
482
|
+
*/
|
|
483
|
+
readonly customFooter: _angular_core.InputSignal<boolean>;
|
|
484
|
+
/** Fires when the header close button OR the Cancel button is clicked. */
|
|
485
|
+
readonly dismiss: _angular_core.OutputEmitterRef<void>;
|
|
486
|
+
/** Fires when the confirm button is clicked. */
|
|
487
|
+
readonly confirm: _angular_core.OutputEmitterRef<void>;
|
|
488
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
489
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
490
|
+
/** `warning` renders as a retinted `danger` fk-button; others map directly. */
|
|
491
|
+
protected readonly confirmButtonVariant: _angular_core.Signal<"danger" | "primary">;
|
|
492
|
+
readonly classes: _angular_core.Signal<string>;
|
|
493
|
+
get hostClass(): string;
|
|
494
|
+
get hostId(): string | null;
|
|
495
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogShellComponent, never>;
|
|
496
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogShellComponent, "fk-dialog-shell", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tint": { "alias": "tint"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "titleAccent": { "alias": "titleAccent"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "footerNote": { "alias": "footerNote"; "required": false; "isSignal": true; }; "footerNoteIcon": { "alias": "footerNoteIcon"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "confirmIcon": { "alias": "confirmIcon"; "required": false; "isSignal": true; }; "confirmVariant": { "alias": "confirmVariant"; "required": false; "isSignal": true; }; "confirmDisabled": { "alias": "confirmDisabled"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "customFooter": { "alias": "customFooter"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; "confirm": "confirm"; }, never, ["*", "[footer]", "[dialogFooter]"], true, never>;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* The fixed header chrome for {@link DialogShellComponent} — a tinted icon
|
|
501
|
+
* tile, a title with an optional trailing accent, an optional mono subtitle,
|
|
502
|
+
* and a close button. Every dialog wears the same chrome; only the icon, tint,
|
|
503
|
+
* and text differ, so this centralises it instead of each dialog hand-rolling
|
|
504
|
+
* the markup.
|
|
505
|
+
*
|
|
506
|
+
* Text is passed in as plain inputs (no i18n dependency), and the icon is
|
|
507
|
+
* optional — an empty `icon` simply renders no tile, so the header degrades
|
|
508
|
+
* gracefully rather than showing a broken glyph.
|
|
509
|
+
*
|
|
510
|
+
* ```html
|
|
511
|
+
* <fk-dialog-header
|
|
512
|
+
* icon="user-ban"
|
|
513
|
+
* tint="warning"
|
|
514
|
+
* title="Deactivate identity"
|
|
515
|
+
* subtitle="Acme Inc. · Members"
|
|
516
|
+
* (dismiss)="close()"
|
|
517
|
+
* />
|
|
518
|
+
* ```
|
|
519
|
+
*/
|
|
520
|
+
declare class DialogHeaderComponent {
|
|
521
|
+
/** Icon glyph name for the tile. Empty renders no tile. */
|
|
522
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
523
|
+
/** Colour accent for the icon tile + title accent. */
|
|
524
|
+
readonly tint: _angular_core.InputSignal<DialogHeaderTint>;
|
|
525
|
+
/** Dialog title. */
|
|
526
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
527
|
+
/** Optional trailing accent appended to the title, rendered in the tint colour. */
|
|
528
|
+
readonly titleAccent: _angular_core.InputSignal<string>;
|
|
529
|
+
/** Optional mono subtitle under the title. */
|
|
530
|
+
readonly subtitle: _angular_core.InputSignal<string>;
|
|
531
|
+
/** Accessible label for the close button. */
|
|
532
|
+
readonly closeLabel: _angular_core.InputSignal<string>;
|
|
533
|
+
/** Fires when the close button is clicked. */
|
|
534
|
+
readonly dismiss: _angular_core.OutputEmitterRef<void>;
|
|
535
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
536
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
537
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
538
|
+
/** The tint's `{ color, background }` CSS-variable pair. */
|
|
539
|
+
protected readonly tintVars: _angular_core.Signal<{
|
|
540
|
+
color: string;
|
|
541
|
+
background: string;
|
|
542
|
+
}>;
|
|
543
|
+
readonly classes: _angular_core.Signal<string>;
|
|
544
|
+
get hostClass(): string;
|
|
545
|
+
get hostId(): string | null;
|
|
546
|
+
get hostAriaLabel(): string | null;
|
|
547
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogHeaderComponent, never>;
|
|
548
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogHeaderComponent, "fk-dialog-header", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tint": { "alias": "tint"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "titleAccent": { "alias": "titleAccent"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* The fixed footer chrome for {@link DialogShellComponent} — an optional muted
|
|
553
|
+
* note on the left, then the projected action buttons pushed to the right,
|
|
554
|
+
* above a top divider. Paired with {@link DialogHeaderComponent} so every
|
|
555
|
+
* dialog shares the same chrome.
|
|
556
|
+
*
|
|
557
|
+
* The note icon is optional and degrades gracefully — an empty `noteIcon`
|
|
558
|
+
* simply renders no glyph.
|
|
559
|
+
*
|
|
560
|
+
* ```html
|
|
561
|
+
* <fk-dialog-footer note="Takes effect immediately" noteIcon="power">
|
|
562
|
+
* <fk-button variant="outline" (click)="cancel()">Cancel</fk-button>
|
|
563
|
+
* <fk-button variant="primary" type="submit">Save</fk-button>
|
|
564
|
+
* </fk-dialog-footer>
|
|
565
|
+
* ```
|
|
566
|
+
*/
|
|
567
|
+
declare class DialogFooterComponent {
|
|
568
|
+
/** Optional muted note shown on the left (e.g. "Takes effect immediately"). */
|
|
569
|
+
readonly note: _angular_core.InputSignal<string>;
|
|
570
|
+
/** Optional icon glyph rendered before the note. Empty renders no glyph. */
|
|
571
|
+
readonly noteIcon: _angular_core.InputSignal<string>;
|
|
572
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
573
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
574
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
575
|
+
readonly classes: _angular_core.Signal<string>;
|
|
576
|
+
get hostClass(): string;
|
|
577
|
+
get hostId(): string | null;
|
|
578
|
+
get hostAriaLabel(): string | null;
|
|
579
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogFooterComponent, never>;
|
|
580
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogFooterComponent, "fk-dialog-footer", never, { "note": { "alias": "note"; "required": false; "isSignal": true; }; "noteIcon": { "alias": "noteIcon"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* A single item inside a grouped step's sub-checklist. The consumer owns the
|
|
585
|
+
* `done` state — the widget only reflects it and emits toggles.
|
|
586
|
+
*/
|
|
587
|
+
interface OnboardingSubstep {
|
|
588
|
+
/** Stable identifier, unique within the parent step. */
|
|
589
|
+
id: string;
|
|
590
|
+
/** Human-readable label. */
|
|
591
|
+
label: string;
|
|
592
|
+
/** Whether this substep is complete. */
|
|
593
|
+
done: boolean;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* A step in the onboarding guide. A step is either:
|
|
597
|
+
*
|
|
598
|
+
* - a **leaf** step — has an optional `description` + a call-to-action, and its
|
|
599
|
+
* completion is driven by the `done` flag, or
|
|
600
|
+
* - a **group** step — carries `substeps`, and is considered complete once every
|
|
601
|
+
* substep is `done` (the top-level `done` flag is ignored for group steps).
|
|
602
|
+
*
|
|
603
|
+
* All state (`done`) is owned by the consumer; the widget is a controlled view
|
|
604
|
+
* of the `steps` model and emits events when the user acts.
|
|
605
|
+
*/
|
|
606
|
+
interface OnboardingStep {
|
|
607
|
+
/** Stable identifier, unique within the guide. */
|
|
608
|
+
id: string;
|
|
609
|
+
/** Human-readable label shown on the step row. */
|
|
610
|
+
label: string;
|
|
611
|
+
/** Whether a leaf step is complete. Ignored when `substeps` is set. */
|
|
612
|
+
done: boolean;
|
|
613
|
+
/** Optional supporting copy shown when the step is expanded. */
|
|
614
|
+
description?: string;
|
|
615
|
+
/** Optional call-to-action label (defaults to a generic "Start"). */
|
|
616
|
+
actionLabel?: string;
|
|
617
|
+
/** When set, the step renders a sub-checklist and auto-completes when all are done. */
|
|
618
|
+
substeps?: OnboardingSubstep[];
|
|
619
|
+
}
|
|
620
|
+
/** Payload emitted when a substep checkbox is toggled. */
|
|
621
|
+
interface OnboardingSubstepToggle {
|
|
622
|
+
stepId: string;
|
|
623
|
+
substepId: string;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
interface Point {
|
|
627
|
+
x: number;
|
|
628
|
+
y: number;
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* A floating, draggable onboarding-progress widget. It presents a checklist of
|
|
632
|
+
* steps with a progress bar, collapses to a compact pill with a progress ring,
|
|
633
|
+
* and can be dragged anywhere on screen (CDK drag). It renders over the app in
|
|
634
|
+
* a fixed layer — drop it once near the app root.
|
|
635
|
+
*
|
|
636
|
+
* **Controlled model, no domain data.** The `steps` model is a required,
|
|
637
|
+
* reactive input: the widget is a pure view of it and emits events when the
|
|
638
|
+
* user acts (`stepAction`, `stepMarkDone`, `substepToggle`, `goLive`). The
|
|
639
|
+
* consumer owns the step state — so if it is keyed by, say, the active account
|
|
640
|
+
* or environment, swapping the input re-renders the widget instantly. The
|
|
641
|
+
* widget never persists step state.
|
|
642
|
+
*
|
|
643
|
+
* **Presentation state is internal + persisted.** Collapsed and drag position
|
|
644
|
+
* live in the widget and persist to `localStorage` under `storageKey` — these
|
|
645
|
+
* are UI preferences, not part of the model.
|
|
646
|
+
*
|
|
647
|
+
* **Appearance-agnostic.** All colour flows through `--fk-*` tokens with neutral
|
|
648
|
+
* (near-black / grey) raw fallbacks, so with no theme it renders monochrome;
|
|
649
|
+
* point the tokens at a brand scale to colour it.
|
|
650
|
+
*
|
|
651
|
+
* ```html
|
|
652
|
+
* <fk-onboarding-guide
|
|
653
|
+
* [steps]="steps()"
|
|
654
|
+
* title="Setup guide"
|
|
655
|
+
* (stepAction)="onStart($event)"
|
|
656
|
+
* (substepToggle)="onToggle($event)"
|
|
657
|
+
* (goLive)="onGoLive()"
|
|
658
|
+
* (dismiss)="onDismiss()"
|
|
659
|
+
* />
|
|
660
|
+
* ```
|
|
661
|
+
*/
|
|
662
|
+
declare class OnboardingGuideComponent {
|
|
663
|
+
private readonly host;
|
|
664
|
+
private readonly drag;
|
|
665
|
+
private readonly destroyRef;
|
|
666
|
+
/** The step model. Controlled by the consumer; the widget is a view of it. */
|
|
667
|
+
readonly steps: _angular_core.InputSignal<OnboardingStep[]>;
|
|
668
|
+
/** Widget title. */
|
|
669
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
670
|
+
/** `localStorage` key for the collapsed + drag-position preferences. */
|
|
671
|
+
readonly storageKey: _angular_core.InputSignal<string>;
|
|
672
|
+
/** Initial collapsed state, used only when nothing is persisted yet. */
|
|
673
|
+
readonly startCollapsed: _angular_core.InputSignal<boolean>;
|
|
674
|
+
/** Default CTA label when a step doesn't supply its own `actionLabel`. */
|
|
675
|
+
readonly startLabel: _angular_core.InputSignal<string>;
|
|
676
|
+
/** Secondary "mark this step done" action label. */
|
|
677
|
+
readonly markDoneLabel: _angular_core.InputSignal<string>;
|
|
678
|
+
/** Footer / final go-live action label. */
|
|
679
|
+
readonly goLiveLabel: _angular_core.InputSignal<string>;
|
|
680
|
+
/** Footer noun for the "{done} of {total} {stepsWord} {doneWord}" summary. */
|
|
681
|
+
readonly stepsWord: _angular_core.InputSignal<string>;
|
|
682
|
+
/** Footer verb for the summary. */
|
|
683
|
+
readonly doneWord: _angular_core.InputSignal<string>;
|
|
684
|
+
/** Collapsed-pill suffix, e.g. "3 steps left". */
|
|
685
|
+
readonly stepsLeftWord: _angular_core.InputSignal<string>;
|
|
686
|
+
/** Collapsed-pill copy shown when everything is complete. */
|
|
687
|
+
readonly allDoneLabel: _angular_core.InputSignal<string>;
|
|
688
|
+
/** ARIA labels for the icon-only header controls. */
|
|
689
|
+
readonly renameLabel: _angular_core.InputSignal<string>;
|
|
690
|
+
readonly collapseLabel: _angular_core.InputSignal<string>;
|
|
691
|
+
readonly dismissLabel: _angular_core.InputSignal<string>;
|
|
692
|
+
readonly expandLabel: _angular_core.InputSignal<string>;
|
|
693
|
+
readonly checkIcon: _angular_core.InputSignal<string>;
|
|
694
|
+
readonly caretIcon: _angular_core.InputSignal<string>;
|
|
695
|
+
readonly editIcon: _angular_core.InputSignal<string>;
|
|
696
|
+
readonly collapseIcon: _angular_core.InputSignal<string>;
|
|
697
|
+
readonly dismissIcon: _angular_core.InputSignal<string>;
|
|
698
|
+
readonly expandIcon: _angular_core.InputSignal<string>;
|
|
699
|
+
readonly actionIcon: _angular_core.InputSignal<string>;
|
|
700
|
+
/** A step's primary CTA was clicked. Emits the step id. */
|
|
701
|
+
readonly stepAction: _angular_core.OutputEmitterRef<string>;
|
|
702
|
+
/** A step's "mark done" was clicked. Emits the step id. */
|
|
703
|
+
readonly stepMarkDone: _angular_core.OutputEmitterRef<string>;
|
|
704
|
+
/** A substep checkbox was toggled. */
|
|
705
|
+
readonly substepToggle: _angular_core.OutputEmitterRef<OnboardingSubstepToggle>;
|
|
706
|
+
/** The final go-live action was invoked (footer or the go-live step CTA). */
|
|
707
|
+
readonly goLive: _angular_core.OutputEmitterRef<void>;
|
|
708
|
+
/** The rename (edit) affordance was clicked; the consumer owns renaming. */
|
|
709
|
+
readonly renameClick: _angular_core.OutputEmitterRef<void>;
|
|
710
|
+
/** The dismiss control was clicked; the consumer decides whether to hide it. */
|
|
711
|
+
readonly dismiss: _angular_core.OutputEmitterRef<void>;
|
|
712
|
+
/** Fires when the collapsed state changes. */
|
|
713
|
+
readonly collapsedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
714
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
715
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
716
|
+
protected readonly collapsed: _angular_core.WritableSignal<boolean>;
|
|
717
|
+
protected readonly dragPosition: _angular_core.WritableSignal<Point>;
|
|
718
|
+
/** True immediately after a real drag, so the drag-handle's click (e.g. the
|
|
719
|
+
* pill's expand) is suppressed rather than firing at the drop point. */
|
|
720
|
+
private justDragged;
|
|
721
|
+
/**
|
|
722
|
+
* The expanded step. A `linkedSignal` over `steps` so that whenever the model
|
|
723
|
+
* changes (e.g. the consumer swaps in another account/environment's steps) it
|
|
724
|
+
* resets to the first incomplete step; user toggles override until the next
|
|
725
|
+
* model change.
|
|
726
|
+
*/
|
|
727
|
+
protected readonly openStepId: _angular_core.WritableSignal<string | null>;
|
|
728
|
+
protected readonly total: _angular_core.Signal<number>;
|
|
729
|
+
protected readonly doneCount: _angular_core.Signal<number>;
|
|
730
|
+
protected readonly percent: _angular_core.Signal<number>;
|
|
731
|
+
protected readonly stepsLeft: _angular_core.Signal<number>;
|
|
732
|
+
protected readonly complete: _angular_core.Signal<boolean>;
|
|
733
|
+
/** Circumference for the pill's progress ring (r = 16). */
|
|
734
|
+
protected readonly ringCircumference: number;
|
|
735
|
+
protected readonly ringOffset: _angular_core.Signal<number>;
|
|
736
|
+
readonly classes: _angular_core.Signal<string>;
|
|
737
|
+
get hostClass(): string;
|
|
738
|
+
get hostId(): string | null;
|
|
739
|
+
constructor();
|
|
740
|
+
isComplete(step: OnboardingStep): boolean;
|
|
741
|
+
protected isActive(step: OnboardingStep): boolean;
|
|
742
|
+
protected actionLabelFor(step: OnboardingStep): string;
|
|
743
|
+
protected toggleStep(stepId: string): void;
|
|
744
|
+
protected onAction(step: OnboardingStep): void;
|
|
745
|
+
protected onMarkDone(step: OnboardingStep): void;
|
|
746
|
+
protected onSubstep(step: OnboardingStep, substep: OnboardingSubstep): void;
|
|
747
|
+
protected onCollapse(): void;
|
|
748
|
+
protected onExpand(): void;
|
|
749
|
+
protected onRename(): void;
|
|
750
|
+
protected onDismiss(): void;
|
|
751
|
+
protected onGoLive(): void;
|
|
752
|
+
private setCollapsed;
|
|
753
|
+
private onDragEnded;
|
|
754
|
+
private clamp;
|
|
755
|
+
private hydrate;
|
|
756
|
+
private defaultBottomRight;
|
|
757
|
+
private read;
|
|
758
|
+
private persist;
|
|
759
|
+
private storage;
|
|
760
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingGuideComponent, never>;
|
|
761
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingGuideComponent, "fk-onboarding-guide", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "storageKey": { "alias": "storageKey"; "required": false; "isSignal": true; }; "startCollapsed": { "alias": "startCollapsed"; "required": false; "isSignal": true; }; "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "markDoneLabel": { "alias": "markDoneLabel"; "required": false; "isSignal": true; }; "goLiveLabel": { "alias": "goLiveLabel"; "required": false; "isSignal": true; }; "stepsWord": { "alias": "stepsWord"; "required": false; "isSignal": true; }; "doneWord": { "alias": "doneWord"; "required": false; "isSignal": true; }; "stepsLeftWord": { "alias": "stepsLeftWord"; "required": false; "isSignal": true; }; "allDoneLabel": { "alias": "allDoneLabel"; "required": false; "isSignal": true; }; "renameLabel": { "alias": "renameLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "checkIcon": { "alias": "checkIcon"; "required": false; "isSignal": true; }; "caretIcon": { "alias": "caretIcon"; "required": false; "isSignal": true; }; "editIcon": { "alias": "editIcon"; "required": false; "isSignal": true; }; "collapseIcon": { "alias": "collapseIcon"; "required": false; "isSignal": true; }; "dismissIcon": { "alias": "dismissIcon"; "required": false; "isSignal": true; }; "expandIcon": { "alias": "expandIcon"; "required": false; "isSignal": true; }; "actionIcon": { "alias": "actionIcon"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "stepAction": "stepAction"; "stepMarkDone": "stepMarkDone"; "substepToggle": "substepToggle"; "goLive": "goLive"; "renameClick": "renameClick"; "dismiss": "dismiss"; "collapsedChange": "collapsedChange"; }, never, never, true, [{ directive: typeof i1.CdkDrag; inputs: {}; outputs: {}; }]>;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
export { ColumnsComponent, ContentSplitLayoutComponent, DetailPanelComponent, DialogFooterComponent, DialogHeaderComponent, DialogShellComponent, OnboardingGuideComponent, PageHeaderComponent, SidebarNavComponent, SidebarNavItemDirective, TableEmptyStateComponent };
|
|
765
|
+
export type { DialogConfirmVariant, DialogHeaderTint, OnboardingStep, OnboardingSubstep, OnboardingSubstepToggle, SidebarNavChild, SidebarNavGroup, SidebarNavItem, SidebarNavLink, SidebarNavModel };
|