@moatamed-sce/ui-components 0.1.2 → 0.1.3
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,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
2
|
+
import { InjectionToken, OnDestroy, ElementRef, AfterViewInit, OnChanges, SimpleChanges, OnInit, Signal, TemplateRef, DestroyRef, PipeTransform } from '@angular/core';
|
|
3
3
|
import * as _angular_forms from '@angular/forms';
|
|
4
4
|
import { ControlValueAccessor, ValidatorFn, FormGroup, FormControl, NonNullableFormBuilder, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
5
5
|
import * as _moatamed_sce_ui_components from '@moatamed-sce/ui-components';
|
|
@@ -10,6 +10,7 @@ import { Popover } from 'primeng/popover';
|
|
|
10
10
|
import { ImageTransform, ImageCroppedEvent } from 'ngx-image-cropper';
|
|
11
11
|
import { Map as Map$1 } from 'leaflet';
|
|
12
12
|
import { EChartsOption } from 'echarts';
|
|
13
|
+
import * as echarts from 'echarts/core';
|
|
13
14
|
import { ButtonSeverity } from 'primeng/button';
|
|
14
15
|
import { MenuItem } from 'primeng/api';
|
|
15
16
|
import { ToastPositionType } from 'primeng/toast';
|
|
@@ -83,6 +84,10 @@ interface SceFieldValidationMessages {
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
type SceTextFieldPrefixMode = 'absolute' | 'inline';
|
|
87
|
+
/** Layout when `prefixMode` is `inline`. `inset` = bordered shell + borderless fit-content inner input. */
|
|
88
|
+
type SceTextFieldInlineLayout = 'default' | 'inset';
|
|
89
|
+
/** Prefix+value cluster alignment inside an inline container (logical start/end). */
|
|
90
|
+
type SceTextFieldInlineAlign = 'start' | 'end';
|
|
86
91
|
/** @see SceFieldValidationMode — kept as the published name for this field. */
|
|
87
92
|
type SceTextFieldValidationMode = SceFieldValidationMode;
|
|
88
93
|
/** Single-line text form field built on PrimeNG InputText, with a shared validation engine and an optional inline or absolute prefix; validation is opt-in, since `validationMode` defaults to `'never'`. */
|
|
@@ -112,8 +117,10 @@ declare class SceTextFieldComponent {
|
|
|
112
117
|
/** Optional prefix shown inside the input (e.g. SA for IBAN fields). */
|
|
113
118
|
readonly prefix: _angular_core.InputSignal<string | undefined>;
|
|
114
119
|
readonly prefixMode: _angular_core.InputSignal<SceTextFieldPrefixMode>;
|
|
115
|
-
|
|
116
|
-
readonly
|
|
120
|
+
readonly inlineLayout: _angular_core.InputSignal<SceTextFieldInlineLayout>;
|
|
121
|
+
readonly inlineAlign: _angular_core.InputSignal<SceTextFieldInlineAlign>;
|
|
122
|
+
/** Text direction for the control (`auto` follows the value's first strong character). */
|
|
123
|
+
readonly dir: _angular_core.InputSignal<"rtl" | "ltr" | "auto" | undefined>;
|
|
117
124
|
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
118
125
|
readonly focused: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
119
126
|
readonly blurred: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
@@ -124,12 +131,15 @@ declare class SceTextFieldComponent {
|
|
|
124
131
|
protected readonly computedError: _angular_core.Signal<string | null | undefined>;
|
|
125
132
|
readonly inputClasses: _angular_core.Signal<string>;
|
|
126
133
|
protected readonly isInlinePrefix: _angular_core.Signal<boolean>;
|
|
134
|
+
protected readonly isLocked: _angular_core.Signal<boolean>;
|
|
127
135
|
protected readonly resolvedPlaceholder: _angular_core.Signal<string>;
|
|
136
|
+
protected readonly resolvedDir: _angular_core.Signal<"rtl" | "ltr">;
|
|
137
|
+
protected readonly controlClasses: _angular_core.Signal<string>;
|
|
128
138
|
onValueChange(next: string): void;
|
|
129
139
|
onFocus(event: FocusEvent): void;
|
|
130
140
|
onBlur(event: FocusEvent): void;
|
|
131
141
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceTextFieldComponent, never>;
|
|
132
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceTextFieldComponent, "sce-text-field", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "inputClassName": { "alias": "inputClassName"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; "validationMode": { "alias": "validationMode"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "validate": { "alias": "validate"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "prefixMode": { "alias": "prefixMode"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
|
|
142
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceTextFieldComponent, "sce-text-field", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "inputClassName": { "alias": "inputClassName"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; "validationMode": { "alias": "validationMode"; "required": false; "isSignal": true; }; "validationMessages": { "alias": "validationMessages"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "validate": { "alias": "validate"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "prefixMode": { "alias": "prefixMode"; "required": false; "isSignal": true; }; "inlineLayout": { "alias": "inlineLayout"; "required": false; "isSignal": true; }; "inlineAlign": { "alias": "inlineAlign"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
|
|
133
143
|
}
|
|
134
144
|
|
|
135
145
|
/** Multi-line textarea form field built on PrimeNG Textarea with the shared validation engine; validation is opt-in, since `validationMode` defaults to `'never'`. */
|
|
@@ -247,6 +257,8 @@ declare class SceSelectFieldComponent {
|
|
|
247
257
|
protected readonly validationError: _angular_core.Signal<string | null>;
|
|
248
258
|
protected readonly displayError: _angular_core.Signal<string | null>;
|
|
249
259
|
protected readonly resolvedPlaceholder: _angular_core.Signal<string>;
|
|
260
|
+
protected readonly selectedLabel: _angular_core.Signal<string>;
|
|
261
|
+
protected readonly resolvedDir: _angular_core.Signal<"rtl" | "ltr">;
|
|
250
262
|
onBlur(): void;
|
|
251
263
|
onValueChange(next: string | null): void;
|
|
252
264
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceSelectFieldComponent, never>;
|
|
@@ -495,7 +507,6 @@ declare class SceDateFieldComponent {
|
|
|
495
507
|
readonly draftRange: _angular_core.WritableSignal<DateRangeValue>;
|
|
496
508
|
readonly hoveredDay: _angular_core.WritableSignal<string>;
|
|
497
509
|
constructor();
|
|
498
|
-
onDocumentKeydown(event: KeyboardEvent): void;
|
|
499
510
|
readonly fieldValue: _angular_core.Signal<string>;
|
|
500
511
|
readonly calendarView: _angular_core.Signal<{
|
|
501
512
|
grid: _moatamed_sce_ui_components.CalendarGrid;
|
|
@@ -563,6 +574,7 @@ declare class SceDatePickerModalComponent {
|
|
|
563
574
|
readonly cancel: _angular_core.OutputEmitterRef<void>;
|
|
564
575
|
readonly confirm: _angular_core.OutputEmitterRef<void>;
|
|
565
576
|
readonly backdropClick: _angular_core.OutputEmitterRef<void>;
|
|
577
|
+
private userInitiatedHide;
|
|
566
578
|
readonly isRtl: _angular_core.Signal<boolean>;
|
|
567
579
|
readonly monthNames: _angular_core.Signal<string[]>;
|
|
568
580
|
readonly monthLabel: _angular_core.Signal<string>;
|
|
@@ -572,12 +584,14 @@ declare class SceDatePickerModalComponent {
|
|
|
572
584
|
onDayClick(value: string, disabled: boolean): void;
|
|
573
585
|
onBackdropClick(event: MouseEvent): void;
|
|
574
586
|
isDayDisabled(value: string): boolean;
|
|
575
|
-
/** Per-day view-model for the grid — precomputes disabled state and class string so the template never calls a method during change detection. */
|
|
576
587
|
readonly dayViews: _angular_core.Signal<{
|
|
577
588
|
day: CalendarDay;
|
|
578
589
|
disabled: boolean;
|
|
579
590
|
classes: string;
|
|
580
591
|
}[]>;
|
|
592
|
+
onDialogHide(): void;
|
|
593
|
+
onCancel(): void;
|
|
594
|
+
onConfirm(): void;
|
|
581
595
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDatePickerModalComponent, never>;
|
|
582
596
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDatePickerModalComponent, "sce-date-picker-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": true; "isSignal": true; }; "system": { "alias": "system"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "hijriOnly": { "alias": "hijriOnly"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "draftSingle": { "alias": "draftSingle"; "required": false; "isSignal": true; }; "draftRange": { "alias": "draftRange"; "required": false; "isSignal": true; }; "hoveredDay": { "alias": "hoveredDay"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "canShowToday": { "alias": "canShowToday"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": true; "isSignal": true; }; "currentMonthIndex": { "alias": "currentMonthIndex"; "required": false; "isSignal": true; }; "currentYearNumber": { "alias": "currentYearNumber"; "required": false; "isSignal": true; }; "yearRange": { "alias": "yearRange"; "required": false; "isSignal": true; }; "yearPageStart": { "alias": "yearPageStart"; "required": false; "isSignal": true; }; "showMonthPicker": { "alias": "showMonthPicker"; "required": false; "isSignal": true; }; "showYearPicker": { "alias": "showYearPicker"; "required": false; "isSignal": true; }; }, { "systemChange": "systemChange"; "showMonthPickerChange": "showMonthPickerChange"; "showYearPickerChange": "showYearPickerChange"; "movePrev": "movePrev"; "moveNext": "moveNext"; "selectDay": "selectDay"; "hoverDay": "hoverDay"; "clearHoverDay": "clearHoverDay"; "selectMonth": "selectMonth"; "selectYear": "selectYear"; "yearPagePrev": "yearPagePrev"; "yearPageNext": "yearPageNext"; "today": "today"; "cancel": "cancel"; "confirm": "confirm"; "backdropClick": "backdropClick"; }, never, never, true, never>;
|
|
583
597
|
}
|
|
@@ -594,6 +608,11 @@ declare class ScePaginatorComponent {
|
|
|
594
608
|
numberFormatter: _angular_core.InputSignal<(value: number) => string>;
|
|
595
609
|
readonly pageChange: _angular_core.OutputEmitterRef<number>;
|
|
596
610
|
readonly pageSizeChange: _angular_core.OutputEmitterRef<number>;
|
|
611
|
+
/**
|
|
612
|
+
* A custom formatter has to bypass the `digit` pipe entirely: `digit` parses its input back to a number, so
|
|
613
|
+
* piping a formatted string through it ("01") would silently undo the formatting ("1").
|
|
614
|
+
*/
|
|
615
|
+
protected readonly hasCustomNumberFormatter: _angular_core.Signal<boolean>;
|
|
597
616
|
protected effectiveDir: _angular_core.Signal<"rtl" | "ltr">;
|
|
598
617
|
protected isRtl: _angular_core.Signal<boolean>;
|
|
599
618
|
protected totalPages: _angular_core.Signal<number>;
|
|
@@ -672,15 +691,41 @@ declare class SceDialogShellComponent {
|
|
|
672
691
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDialogShellComponent, "sce-dialog-shell", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "centerHeader": { "alias": "centerHeader"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "locked": { "alias": "locked"; "required": false; "isSignal": true; }; "dismissableMask": { "alias": "dismissableMask"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "compactBody": { "alias": "compactBody"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "hasBody": { "alias": "hasBody"; "required": false; "isSignal": true; }; "hasFooter": { "alias": "hasFooter"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["*", "[dialogFooter]"], true, never>;
|
|
673
692
|
}
|
|
674
693
|
|
|
675
|
-
/**
|
|
676
|
-
|
|
694
|
+
/**
|
|
695
|
+
* Preset host for `sce-dialog-shell`: it owns the open/closed state and supplies the standard
|
|
696
|
+
* cancel/confirm footer, so a caller drives it with a single `[visible]` binding and is told through
|
|
697
|
+
* `visibleChange` when the dialog closes.
|
|
698
|
+
*
|
|
699
|
+
* All copy is an input, and this component holds no translation keys of its own: a library cannot
|
|
700
|
+
* resolve keys that live in an application's i18n bundle. Pass already-translated strings.
|
|
701
|
+
*/
|
|
702
|
+
declare class SceDialogShellDemoComponent {
|
|
703
|
+
/** Whether the dialog is open. Re-binding it to true after a close re-opens the dialog. */
|
|
677
704
|
readonly visible: _angular_core.InputSignal<boolean>;
|
|
705
|
+
/** Active locale; toggles dir and provides the shell's default labels. */
|
|
706
|
+
readonly locale: _angular_core.InputSignal<"ar" | "en">;
|
|
707
|
+
/** Dialog title — pass a translated string, never hardcode it. */
|
|
708
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
709
|
+
/** Secondary line under the title — pass a translated string, never hardcode it. */
|
|
710
|
+
readonly subtitle: _angular_core.InputSignal<string>;
|
|
711
|
+
/** Body copy — pass a translated string, never hardcode it. */
|
|
712
|
+
readonly content: _angular_core.InputSignal<string>;
|
|
713
|
+
/** Label of the footer's confirm button — pass a translated string, never hardcode it. */
|
|
714
|
+
readonly confirmLabel: _angular_core.InputSignal<string>;
|
|
715
|
+
/** Label of the footer's cancel button — pass a translated string, never hardcode it. */
|
|
716
|
+
readonly cancelLabel: _angular_core.InputSignal<string>;
|
|
717
|
+
/** Fires with `false` when the dialog closes itself, so the caller can sync its own state. */
|
|
678
718
|
readonly visibleChange: _angular_core.OutputEmitterRef<boolean>;
|
|
679
|
-
|
|
680
|
-
|
|
719
|
+
/**
|
|
720
|
+
* Mirrors `visible` but stays writable, so the dialog can close itself without a round-trip
|
|
721
|
+
* through the caller, and re-syncs on every change of the input — which is what makes `[visible]`
|
|
722
|
+
* genuinely reactive. (It used to be a plain field assigned once in `ngOnInit`: the input was
|
|
723
|
+
* never read again after the first render, so the dialog could never be re-opened.)
|
|
724
|
+
*/
|
|
725
|
+
protected readonly isVisible: _angular_core.WritableSignal<boolean>;
|
|
681
726
|
close(): void;
|
|
682
727
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDialogShellDemoComponent, never>;
|
|
683
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDialogShellDemoComponent, "sce-dialog-shell-demo", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
728
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDialogShellDemoComponent, "sce-dialog-shell-demo", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
684
729
|
}
|
|
685
730
|
|
|
686
731
|
/** Tone of a confirm dialog, selecting both its header icon and the severity of its confirm button. */
|
|
@@ -755,16 +800,36 @@ declare class SceConfirmDialogComponent {
|
|
|
755
800
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceConfirmDialogComponent, "sce-confirm-dialog", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "confirmDisabled": { "alias": "confirmDisabled"; "required": false; "isSignal": true; }; "cancelDisabled": { "alias": "cancelDisabled"; "required": false; "isSignal": true; }; "hideCancelButton": { "alias": "hideCancelButton"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "centerHeader": { "alias": "centerHeader"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "hasBodySlot": { "alias": "hasBodySlot"; "required": false; "isSignal": true; }; "onConfirmHandler": { "alias": "onConfirmHandler"; "required": false; "isSignal": true; }; }, { "close": "close"; "cancel": "cancel"; "confirm": "confirm"; }, never, ["[confirmIcon]", "[confirmBody]"], true, never>;
|
|
756
801
|
}
|
|
757
802
|
|
|
758
|
-
/**
|
|
759
|
-
|
|
803
|
+
/**
|
|
804
|
+
* Preset host for `sce-confirm-dialog`: it owns the open/closed state, so a caller drives it with a
|
|
805
|
+
* single `[visible]` binding and is told through `visibleChange` when the user dismisses or confirms,
|
|
806
|
+
* instead of wiring `close` and `confirm` separately.
|
|
807
|
+
*
|
|
808
|
+
* All copy is an input, and this component holds no translation keys of its own: a library cannot
|
|
809
|
+
* resolve keys that live in an application's i18n bundle. Pass already-translated strings.
|
|
810
|
+
*/
|
|
811
|
+
declare class SceConfirmDialogDemoComponent {
|
|
812
|
+
/** Whether the dialog is open. Re-binding it to true after a close re-opens the dialog. */
|
|
760
813
|
readonly visible: _angular_core.InputSignal<boolean>;
|
|
814
|
+
/** Active locale; toggles dir and provides the dialog's default button labels. */
|
|
815
|
+
readonly locale: _angular_core.InputSignal<"ar" | "en">;
|
|
816
|
+
/** Dialog title — pass a translated string, never hardcode it. */
|
|
817
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
818
|
+
/** Body copy under the title — pass a translated string, never hardcode it. */
|
|
819
|
+
readonly description: _angular_core.InputSignal<string>;
|
|
820
|
+
/** Fires with `false` when the dialog closes itself, so the caller can sync its own state. */
|
|
761
821
|
readonly visibleChange: _angular_core.OutputEmitterRef<boolean>;
|
|
762
|
-
|
|
763
|
-
|
|
822
|
+
/**
|
|
823
|
+
* Mirrors `visible` but stays writable, so the dialog can close itself without a round-trip
|
|
824
|
+
* through the caller, and re-syncs on every change of the input — which is what makes `[visible]`
|
|
825
|
+
* genuinely reactive. (It used to be a plain field assigned once in `ngOnInit`: the input was
|
|
826
|
+
* never read again after the first render, so the dialog could never be re-opened.)
|
|
827
|
+
*/
|
|
828
|
+
protected readonly isVisible: _angular_core.WritableSignal<boolean>;
|
|
764
829
|
close(): void;
|
|
765
830
|
confirm(): void;
|
|
766
831
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceConfirmDialogDemoComponent, never>;
|
|
767
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceConfirmDialogDemoComponent, "sce-confirm-dialog-demo", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
832
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceConfirmDialogDemoComponent, "sce-confirm-dialog-demo", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
768
833
|
}
|
|
769
834
|
|
|
770
835
|
/**
|
|
@@ -1373,7 +1438,7 @@ declare class SceInfoFieldCardComponent {
|
|
|
1373
1438
|
/** Layout wrapper that arranges projected info-field cards into a one- to four-column grid. */
|
|
1374
1439
|
declare class SceInfoFieldsGridComponent {
|
|
1375
1440
|
readonly columns: _angular_core.InputSignal<1 | 3 | 4 | 2>;
|
|
1376
|
-
readonly gap: _angular_core.InputSignal<"
|
|
1441
|
+
readonly gap: _angular_core.InputSignal<"default" | "sm">;
|
|
1377
1442
|
readonly dir: _angular_core.InputSignal<"rtl" | "ltr" | undefined>;
|
|
1378
1443
|
readonly gridClasses: _angular_core.Signal<string>;
|
|
1379
1444
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceInfoFieldsGridComponent, never>;
|
|
@@ -1413,7 +1478,7 @@ declare class SceDashboardAccountRoleIconComponent {
|
|
|
1413
1478
|
readonly photoUrl: _angular_core.InputSignal<string | null>;
|
|
1414
1479
|
readonly width: _angular_core.InputSignal<number>;
|
|
1415
1480
|
readonly height: _angular_core.InputSignal<number>;
|
|
1416
|
-
readonly defaultAvatar = "/assets/images/Avatar.
|
|
1481
|
+
readonly defaultAvatar = "/assets/images/Avatar.svg";
|
|
1417
1482
|
protected readonly showClientPhoto: _angular_core.Signal<boolean>;
|
|
1418
1483
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDashboardAccountRoleIconComponent, never>;
|
|
1419
1484
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDashboardAccountRoleIconComponent, "sce-dashboard-account-role-icon", never, { "role": { "alias": "role"; "required": false; "isSignal": true; }; "accountKind": { "alias": "accountKind"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "photoUrl": { "alias": "photoUrl"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -1520,16 +1585,19 @@ interface OfficeMetricCardItem {
|
|
|
1520
1585
|
declare class SceOfficeMetricCardComponent {
|
|
1521
1586
|
readonly item: _angular_core.InputSignal<OfficeMetricCardItem>;
|
|
1522
1587
|
readonly variant: _angular_core.InputSignal<"accent" | "soft">;
|
|
1588
|
+
/** `lg` enlarges the value (title) for dashboard profile stats. */
|
|
1589
|
+
readonly size: _angular_core.InputSignal<"md" | "lg">;
|
|
1523
1590
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOfficeMetricCardComponent, never>;
|
|
1524
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeMetricCardComponent, "sce-office-metric-card", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1591
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeMetricCardComponent, "sce-office-metric-card", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1525
1592
|
}
|
|
1526
1593
|
/** Row of office metric tiles laid out in two or three columns, sharing one variant across all items. */
|
|
1527
1594
|
declare class SceOfficeMetricCardsRowComponent {
|
|
1528
1595
|
readonly items: _angular_core.InputSignal<OfficeMetricCardItem[]>;
|
|
1529
1596
|
readonly variant: _angular_core.InputSignal<"accent" | "soft">;
|
|
1530
1597
|
readonly columns: _angular_core.InputSignal<3 | 2>;
|
|
1598
|
+
readonly size: _angular_core.InputSignal<"md" | "lg">;
|
|
1531
1599
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOfficeMetricCardsRowComponent, never>;
|
|
1532
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeMetricCardsRowComponent, "sce-office-metric-cards-row", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1600
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeMetricCardsRowComponent, "sce-office-metric-cards-row", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1533
1601
|
}
|
|
1534
1602
|
|
|
1535
1603
|
/** Loading placeholder matching `sce-info-fields-grid`: `count` info-field cards (default 6) with an optional section-title bar. */
|
|
@@ -1855,7 +1923,7 @@ interface ServicesTopFiltersChange {
|
|
|
1855
1923
|
/** Which of the three dropdowns a change came from. */
|
|
1856
1924
|
type SceServicesTopFilterField = 'category' | 'target' | 'extra';
|
|
1857
1925
|
/** Filter bar for the public services and offices listings, rendering a search box plus category, target, extra and sort dropdowns and emitting the resolved filter state via `filtersChange`. */
|
|
1858
|
-
declare class SceServicesTopFiltersComponent
|
|
1926
|
+
declare class SceServicesTopFiltersComponent {
|
|
1859
1927
|
private readonly language;
|
|
1860
1928
|
private readonly translate;
|
|
1861
1929
|
readonly q: _angular_core.InputSignal<string>;
|
|
@@ -1876,7 +1944,8 @@ declare class SceServicesTopFiltersComponent implements OnInit {
|
|
|
1876
1944
|
readonly extraOptions: _angular_core.InputSignal<readonly string[]>;
|
|
1877
1945
|
readonly extraParamName: _angular_core.InputSignal<string>;
|
|
1878
1946
|
readonly filtersChange: _angular_core.OutputEmitterRef<ServicesTopFiltersChange>;
|
|
1879
|
-
|
|
1947
|
+
/** Draft search text — follows the applied `q` input, diverges while the user types. */
|
|
1948
|
+
readonly localQ: _angular_core.WritableSignal<string>;
|
|
1880
1949
|
readonly locale: _angular_core.WritableSignal<_moatamed_sce_core.AppLocale>;
|
|
1881
1950
|
readonly badgeKey: _angular_core.Signal<string>;
|
|
1882
1951
|
readonly categoryLabelKey: _angular_core.Signal<string>;
|
|
@@ -1929,7 +1998,6 @@ declare class SceServicesTopFiltersComponent implements OnInit {
|
|
|
1929
1998
|
readonly categoryIcon: _angular_core.Signal<"/assets/icons/elements.svg" | "/assets/icons/briefcase.svg">;
|
|
1930
1999
|
readonly targetIcon: _angular_core.Signal<"/assets/icons/location.svg" | "/assets/icons/building-03.svg">;
|
|
1931
2000
|
readonly extraIcon: _angular_core.Signal<string>;
|
|
1932
|
-
ngOnInit(): void;
|
|
1933
2001
|
readonly isRtl: _angular_core.Signal<boolean>;
|
|
1934
2002
|
readonly dir: _angular_core.Signal<"rtl" | "ltr">;
|
|
1935
2003
|
readonly wrapClass: _angular_core.Signal<string>;
|
|
@@ -1947,6 +2015,12 @@ declare class SceServicesTopFiltersComponent implements OnInit {
|
|
|
1947
2015
|
value: string;
|
|
1948
2016
|
} | null): void;
|
|
1949
2017
|
submitSearch(): void;
|
|
2018
|
+
/**
|
|
2019
|
+
* Emptying the field (backspace, Esc, or the clear button) resets the
|
|
2020
|
+
* applied search immediately — no Enter or button press required.
|
|
2021
|
+
*/
|
|
2022
|
+
onSearchInput(value: string): void;
|
|
2023
|
+
clearSearch(): void;
|
|
1950
2024
|
private emitChange;
|
|
1951
2025
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceServicesTopFiltersComponent, never>;
|
|
1952
2026
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceServicesTopFiltersComponent, "sce-services-top-filters", never, { "q": { "alias": "q"; "required": false; "isSignal": true; }; "category": { "alias": "category"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "targets": { "alias": "targets"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "extra": { "alias": "extra"; "required": false; "isSignal": true; }; "extraOptions": { "alias": "extraOptions"; "required": false; "isSignal": true; }; "extraParamName": { "alias": "extraParamName"; "required": false; "isSignal": true; }; }, { "filtersChange": "filtersChange"; }, never, never, true, never>;
|
|
@@ -2396,7 +2470,7 @@ declare class SceIcon {
|
|
|
2396
2470
|
}
|
|
2397
2471
|
|
|
2398
2472
|
/** Visual style of `SceButton`, driving the `btn--*` modifier class. */
|
|
2399
|
-
type SceButtonVariant = 'primary' | 'black' | 'neutral' | 'secondary' | 'transparent' | 'outline' | 'danger' | 'text' | 'link';
|
|
2473
|
+
type SceButtonVariant = 'primary' | 'cta' | 'black' | 'neutral' | 'secondary' | 'transparent' | 'outline' | 'danger' | 'text' | 'link';
|
|
2400
2474
|
/** Size preset of `SceButton`; `small-icon-only` is the square icon-button form. */
|
|
2401
2475
|
type SceButtonSize = 'compact' | 'mini' | 'extra-small' | 'small-icon-only' | 'small' | 'medium' | 'large';
|
|
2402
2476
|
/** Design-system button that renders an `<a>` when `routerLink` or `href` is set and a `<button>` otherwise; note `fullWidth` defaults to true. */
|
|
@@ -2412,6 +2486,14 @@ declare class SceButton {
|
|
|
2412
2486
|
readonly iconSize: _angular_core.InputSignal<number>;
|
|
2413
2487
|
/** Bound to the native button; use for icon-only actions (e.g. delete). */
|
|
2414
2488
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
2489
|
+
/**
|
|
2490
|
+
* Toggle state for segmented/filter controls. Without this, a pressed `sce-button` conveys
|
|
2491
|
+
* selection by colour alone, so a screen-reader user cannot tell which option is active
|
|
2492
|
+
* (WCAG 4.1.2) — callers were reduced to faking it with `[disabled]`. Leave `null`
|
|
2493
|
+
* (the default) for ordinary action buttons, which must NOT carry `aria-pressed`.
|
|
2494
|
+
* Only applied in `<button>` mode; the attribute is invalid on the anchor variants.
|
|
2495
|
+
*/
|
|
2496
|
+
readonly ariaPressed: _angular_core.InputSignal<boolean | null>;
|
|
2415
2497
|
/**
|
|
2416
2498
|
* Renders an `<a>` instead of a `<button>`, keeping real link semantics
|
|
2417
2499
|
* (href, middle-click, open-in-new-tab). Set exactly one of these.
|
|
@@ -2424,7 +2506,7 @@ declare class SceButton {
|
|
|
2424
2506
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
2425
2507
|
readonly classes: _angular_core.Signal<string>;
|
|
2426
2508
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceButton, never>;
|
|
2427
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceButton, "sce-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2509
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceButton, "sce-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2428
2510
|
}
|
|
2429
2511
|
|
|
2430
2512
|
/** Labelled checkbox implementing `ControlValueAccessor`, so it works with `formControl`/`ngModel` as well as the `changed` output. */
|
|
@@ -2767,11 +2849,16 @@ declare class SceDashboardLayoutComponent {
|
|
|
2767
2849
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDashboardLayoutComponent, "sce-dashboard-layout", never, { "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; }, {}, never, ["[sidebar]", "[header]", "*"], true, never>;
|
|
2768
2850
|
}
|
|
2769
2851
|
|
|
2770
|
-
/** Page shell for a form: `title`/`subtitle` header, a projected form body, and an action footer; it owns the `<form>` element and re-emits its submit as `submitted`, and uses `ViewEncapsulation.None`. */
|
|
2852
|
+
/** Page shell for a form: `title`/`subtitle` header, a projected form body, and an action footer; it owns the `<form>` element and re-emits its native submit as `submitted`, and uses `ViewEncapsulation.None`. */
|
|
2771
2853
|
declare class SceFormPageLayoutComponent {
|
|
2772
2854
|
readonly title: _angular_core.InputSignal<string>;
|
|
2773
2855
|
readonly subtitle: _angular_core.InputSignal<string | undefined>;
|
|
2856
|
+
/**
|
|
2857
|
+
* Emitted when the projected form is submitted — by a footer `<button type="submit">`, or by
|
|
2858
|
+
* Enter in a field. The native navigation is suppressed, so the parent owns the submit.
|
|
2859
|
+
*/
|
|
2774
2860
|
readonly submitted: _angular_core.OutputEmitterRef<void>;
|
|
2861
|
+
protected onSubmit(event: Event): void;
|
|
2775
2862
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceFormPageLayoutComponent, never>;
|
|
2776
2863
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceFormPageLayoutComponent, "sce-form-page-layout", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["*", "[actions]"], true, never>;
|
|
2777
2864
|
}
|
|
@@ -3273,6 +3360,125 @@ interface ChartTooltipData {
|
|
|
3273
3360
|
color?: string;
|
|
3274
3361
|
}
|
|
3275
3362
|
|
|
3363
|
+
/**
|
|
3364
|
+
* Shared visual language for every chart in the library.
|
|
3365
|
+
*
|
|
3366
|
+
* Chart colours are painted onto a CANVAS, so they cannot be `var(--color-*)` — a CSS custom
|
|
3367
|
+
* property never resolves inside an ECharts series. Every value here is therefore a literal hex
|
|
3368
|
+
* lifted from the design tokens (`tokens-semantic.scss`) rather than invented: keep the two in
|
|
3369
|
+
* step by hand when a token ramp moves.
|
|
3370
|
+
*
|
|
3371
|
+
* The two categorical palettes are NOT light/dark variants of one another. Dark mode is chosen,
|
|
3372
|
+
* not flipped: each mode's steps were validated independently against that mode's surface for
|
|
3373
|
+
* OKLCH lightness band, chroma floor, colour-vision-deficiency separation between ADJACENT slots,
|
|
3374
|
+
* and contrast. Reordering the slots therefore breaks the CVD guarantee — hues are assigned in
|
|
3375
|
+
* fixed order and never cycled. A 9th series is not a new hue: fold it into "other".
|
|
3376
|
+
*/
|
|
3377
|
+
type ChartMode = 'light' | 'dark';
|
|
3378
|
+
/** Categorical hues, in assignment order. Validated for the light surface. */
|
|
3379
|
+
declare const CHART_PALETTE_LIGHT: readonly string[];
|
|
3380
|
+
/** Categorical hues, in assignment order. Validated for the dark surface. */
|
|
3381
|
+
declare const CHART_PALETTE_DARK: readonly string[];
|
|
3382
|
+
/** Single-hue ramp for magnitude (heatmaps, choropleths). Light → dark, one hue only. */
|
|
3383
|
+
declare const CHART_SEQUENTIAL: readonly string[];
|
|
3384
|
+
/** Two poles + a NEUTRAL grey midpoint, for polarity (correlation, variance vs target). */
|
|
3385
|
+
declare const CHART_DIVERGING: readonly string[];
|
|
3386
|
+
/** Reserved state colours. Never reuse these as "series 4". */
|
|
3387
|
+
declare const CHART_STATUS: {
|
|
3388
|
+
readonly good: "#0f805e";
|
|
3389
|
+
readonly warning: "#855f00";
|
|
3390
|
+
readonly critical: "#d92d20";
|
|
3391
|
+
readonly neutral: "#7b7b84";
|
|
3392
|
+
};
|
|
3393
|
+
/** Ink + surface per mode, so axes and labels never wear a series colour. */
|
|
3394
|
+
declare const CHART_INK: {
|
|
3395
|
+
readonly light: {
|
|
3396
|
+
readonly primary: "#1e1e24";
|
|
3397
|
+
readonly secondary: "#565660";
|
|
3398
|
+
readonly muted: "#7b7b84";
|
|
3399
|
+
readonly grid: "#e7ecf0";
|
|
3400
|
+
readonly surface: "#ffffff";
|
|
3401
|
+
};
|
|
3402
|
+
readonly dark: {
|
|
3403
|
+
readonly primary: "#f7f7f8";
|
|
3404
|
+
readonly secondary: "#d2d2d7";
|
|
3405
|
+
readonly muted: "#a9a9b0";
|
|
3406
|
+
readonly grid: "#3a3a42";
|
|
3407
|
+
readonly surface: "#1e1e24";
|
|
3408
|
+
};
|
|
3409
|
+
};
|
|
3410
|
+
declare const palette: (mode?: ChartMode) => readonly string[];
|
|
3411
|
+
/** Nth series colour, assigned in fixed order. Wraps only past slot 8, where identity is already lost. */
|
|
3412
|
+
declare const seriesColor: (index: number, mode?: ChartMode) => string;
|
|
3413
|
+
/**
|
|
3414
|
+
* Vertical fade of a series colour, for area fills. `topOpacity`/`bottomOpacity` are hex alpha
|
|
3415
|
+
* suffixes — ECharts accepts 8-digit hex, which keeps this allocation-free.
|
|
3416
|
+
*/
|
|
3417
|
+
declare const verticalFade: (color: string, topOpacity?: string, bottomOpacity?: string) => echarts.graphic.LinearGradient;
|
|
3418
|
+
/** Rounded data-end for a vertical bar: the corners away from the baseline only. */
|
|
3419
|
+
declare const BAR_RADIUS_VERTICAL: [number, number, number, number];
|
|
3420
|
+
/** Rounded data-end for a horizontal bar. Physical by necessity — this is canvas geometry, not CSS. */
|
|
3421
|
+
declare const BAR_RADIUS_HORIZONTAL: [number, number, number, number];
|
|
3422
|
+
/** A hairline of surface between adjacent/stacked marks, so they read as separate quantities. */
|
|
3423
|
+
declare const MARK_SEPARATOR: (mode?: ChartMode) => {
|
|
3424
|
+
borderColor: "#1e1e24" | "#ffffff";
|
|
3425
|
+
borderWidth: number;
|
|
3426
|
+
};
|
|
3427
|
+
/**
|
|
3428
|
+
* The tooltip every chart shares: a floating card, not ECharts' default black box.
|
|
3429
|
+
* `confine` keeps it inside the container — without it, a tooltip near the edge of a
|
|
3430
|
+
* dashboard card is clipped by the card's own overflow.
|
|
3431
|
+
*/
|
|
3432
|
+
declare const tooltipBase: (mode?: ChartMode) => EChartsOption["tooltip"];
|
|
3433
|
+
/** Axis styling: recessive by design — the data is the ink, the axis is the paper. */
|
|
3434
|
+
declare const axisBase: (mode?: ChartMode) => {
|
|
3435
|
+
axisLine: {
|
|
3436
|
+
show: boolean;
|
|
3437
|
+
};
|
|
3438
|
+
axisTick: {
|
|
3439
|
+
show: boolean;
|
|
3440
|
+
};
|
|
3441
|
+
axisLabel: {
|
|
3442
|
+
color: "#7b7b84" | "#a9a9b0";
|
|
3443
|
+
fontSize: number;
|
|
3444
|
+
fontFamily: string;
|
|
3445
|
+
};
|
|
3446
|
+
splitLine: {
|
|
3447
|
+
lineStyle: {
|
|
3448
|
+
color: "#e7ecf0" | "#3a3a42";
|
|
3449
|
+
type: "dashed";
|
|
3450
|
+
};
|
|
3451
|
+
};
|
|
3452
|
+
};
|
|
3453
|
+
declare const legendBase: (mode?: ChartMode) => EChartsOption["legend"];
|
|
3454
|
+
/** Entrance animation shared by every chart. Short enough to feel responsive, eased to feel intentional. */
|
|
3455
|
+
declare const ANIMATION: {
|
|
3456
|
+
animationDuration: number;
|
|
3457
|
+
animationEasing: "cubicOut";
|
|
3458
|
+
animationDelay: (idx: number) => number;
|
|
3459
|
+
};
|
|
3460
|
+
/**
|
|
3461
|
+
* The base every chart spreads first: text, tooltip, legend, animation.
|
|
3462
|
+
* Series-specific options are layered on top by each component.
|
|
3463
|
+
*/
|
|
3464
|
+
declare const chartBase: (mode?: ChartMode) => EChartsOption;
|
|
3465
|
+
|
|
3466
|
+
/**
|
|
3467
|
+
* A signal that tracks the app's active theme for chart painting.
|
|
3468
|
+
*
|
|
3469
|
+
* The rest of the design system gets dark mode for free: `[data-theme='dark']` on `<html>` reroutes
|
|
3470
|
+
* every CSS custom property. A chart cannot — it is painted onto a `<canvas>`, which inherits no CSS
|
|
3471
|
+
* at all. Its colours are resolved in TypeScript at option-build time, so the chart has to *observe*
|
|
3472
|
+
* the theme and rebuild its options when it flips. Without this, a chart keeps its light-mode axis
|
|
3473
|
+
* ink and tooltip card on a dark surface: legible-ish, but wrong, and the near-black label text all
|
|
3474
|
+
* but disappears.
|
|
3475
|
+
*
|
|
3476
|
+
* `ThemeExtendedService` owns the theme but keeps its signal private and writes the attribute, so the
|
|
3477
|
+
* attribute IS the contract — observing it also picks up a theme set by any other means (SSR markup,
|
|
3478
|
+
* a user preference restored on boot, another app in the monorepo).
|
|
3479
|
+
*/
|
|
3480
|
+
declare function injectChartMode(): Signal<ChartMode>;
|
|
3481
|
+
|
|
3276
3482
|
/** Standalone chart legend rendering colour markers and labels in a row or column — used instead of the built-in ECharts legend. */
|
|
3277
3483
|
declare class SceChartLegendComponent {
|
|
3278
3484
|
/** List of legend items to display */
|
|
@@ -3309,6 +3515,11 @@ interface OverlayLineSeries {
|
|
|
3309
3515
|
/** ECharts bar chart with optional stacking, overlay line series and a custom legend; axis side auto-detects RTL unless `isRtl` overrides it. */
|
|
3310
3516
|
declare class SceBarChartComponent {
|
|
3311
3517
|
private readonly el;
|
|
3518
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3519
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3520
|
+
private readonly appMode;
|
|
3521
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3522
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3312
3523
|
/** Manual direction override; null auto-detects from computed style (RTL-first default). */
|
|
3313
3524
|
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
3314
3525
|
private readonly detectedIsRtl;
|
|
@@ -3319,7 +3530,7 @@ declare class SceBarChartComponent {
|
|
|
3319
3530
|
/** Optional line series to overlay on top of bars */
|
|
3320
3531
|
readonly overlayLineSeries: _angular_core.InputSignal<OverlayLineSeries[]>;
|
|
3321
3532
|
/** X-axis category labels */
|
|
3322
|
-
readonly categories: _angular_core.InputSignal<string[]>;
|
|
3533
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
3323
3534
|
/** Chart height in pixels */
|
|
3324
3535
|
readonly height: _angular_core.InputSignal<number | null>;
|
|
3325
3536
|
/** Chart width in pixels */
|
|
@@ -3335,7 +3546,7 @@ declare class SceBarChartComponent {
|
|
|
3335
3546
|
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
3336
3547
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3337
3548
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceBarChartComponent, never>;
|
|
3338
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceBarChartComponent, "sce-bar-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "overlayLineSeries": { "alias": "overlayLineSeries"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "barWidth": { "alias": "barWidth"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3549
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceBarChartComponent, "sce-bar-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "overlayLineSeries": { "alias": "overlayLineSeries"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "barWidth": { "alias": "barWidth"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3339
3550
|
}
|
|
3340
3551
|
|
|
3341
3552
|
/** One horizontal bar; `maxValue` overrides the chart-wide maximum for this bar only, and `color` overrides the chart's default colour. */
|
|
@@ -3352,6 +3563,11 @@ interface ComputedBarItem extends HorizontalBarItem {
|
|
|
3352
3563
|
}
|
|
3353
3564
|
/** Pure-CSS horizontal bar chart (no ECharts) where each bar is split into `segments` that fill proportionally to its value. */
|
|
3354
3565
|
declare class SceHorizontalBarChartComponent {
|
|
3566
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3567
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3568
|
+
private readonly appMode;
|
|
3569
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3570
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3355
3571
|
/** Data items for horizontal bars */
|
|
3356
3572
|
readonly data: _angular_core.InputSignal<HorizontalBarItem[]>;
|
|
3357
3573
|
/** Maximum value for all bars (auto-calculated if not provided) */
|
|
@@ -3368,14 +3584,21 @@ declare class SceHorizontalBarChartComponent {
|
|
|
3368
3584
|
readonly gap: _angular_core.InputSignal<number>;
|
|
3369
3585
|
/** Number of segments per bar */
|
|
3370
3586
|
readonly segments: _angular_core.InputSignal<number>;
|
|
3587
|
+
/** Track background colour, mode-aware when `trackColor` is left at its default. */
|
|
3588
|
+
protected readonly resolvedTrackColor: _angular_core.Signal<string>;
|
|
3371
3589
|
readonly computedItems: _angular_core.Signal<ComputedBarItem[]>;
|
|
3372
3590
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceHorizontalBarChartComponent, never>;
|
|
3373
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceHorizontalBarChartComponent, "sce-horizontal-bar-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3591
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceHorizontalBarChartComponent, "sce-horizontal-bar-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3374
3592
|
}
|
|
3375
3593
|
|
|
3376
3594
|
/** ECharts multi-series line chart with optional area fill and a highlight bar/marker at `highlightIndex`; axis side auto-detects RTL unless `isRtl` overrides it. */
|
|
3377
3595
|
declare class SceLineChartComponent {
|
|
3378
3596
|
private readonly el;
|
|
3597
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3598
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3599
|
+
private readonly appMode;
|
|
3600
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3601
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3379
3602
|
/** Manual direction override; null auto-detects from computed style (RTL-first default). */
|
|
3380
3603
|
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
3381
3604
|
private readonly detectedIsRtl;
|
|
@@ -3384,7 +3607,7 @@ declare class SceLineChartComponent {
|
|
|
3384
3607
|
/** Array of series data to display */
|
|
3385
3608
|
readonly series: _angular_core.InputSignal<ChartLineSeriesData[]>;
|
|
3386
3609
|
/** X-axis category labels */
|
|
3387
|
-
readonly categories: _angular_core.InputSignal<string[]>;
|
|
3610
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
3388
3611
|
/** Chart height in pixels */
|
|
3389
3612
|
readonly height: _angular_core.InputSignal<number | null>;
|
|
3390
3613
|
/** Chart width in pixels */
|
|
@@ -3404,22 +3627,27 @@ declare class SceLineChartComponent {
|
|
|
3404
3627
|
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
3405
3628
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3406
3629
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceLineChartComponent, never>;
|
|
3407
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceLineChartComponent, "sce-line-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXAxisLabels": { "alias": "showXAxisLabels"; "required": false; "isSignal": true; }; "highlightIndex": { "alias": "highlightIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3630
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceLineChartComponent, "sce-line-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXAxisLabels": { "alias": "showXAxisLabels"; "required": false; "isSignal": true; }; "highlightIndex": { "alias": "highlightIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3408
3631
|
}
|
|
3409
3632
|
|
|
3410
3633
|
/** ECharts gradient area chart with hidden axes and an optional highlighted point marker at `highlightIndex`. */
|
|
3411
3634
|
declare class SceAreaChartComponent {
|
|
3635
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3636
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3637
|
+
private readonly appMode;
|
|
3638
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3639
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3412
3640
|
/** Data points for the chart */
|
|
3413
3641
|
readonly data: _angular_core.InputSignal<number[]>;
|
|
3414
3642
|
/** X-axis category labels */
|
|
3415
|
-
readonly categories: _angular_core.InputSignal<string[]>;
|
|
3643
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
3416
3644
|
/** Chart height in pixels */
|
|
3417
3645
|
readonly height: _angular_core.InputSignal<number>;
|
|
3418
3646
|
/** Chart width in pixels */
|
|
3419
3647
|
readonly width: _angular_core.InputSignal<number | null>;
|
|
3420
|
-
/** Start color of the gradient
|
|
3648
|
+
/** Start color of the gradient */
|
|
3421
3649
|
readonly startColor: _angular_core.InputSignal<string>;
|
|
3422
|
-
/** End color of the gradient
|
|
3650
|
+
/** End color of the gradient */
|
|
3423
3651
|
readonly endColor: _angular_core.InputSignal<string>;
|
|
3424
3652
|
/** Whether to show smooth curves */
|
|
3425
3653
|
readonly smooth: _angular_core.InputSignal<boolean>;
|
|
@@ -3429,11 +3657,16 @@ declare class SceAreaChartComponent {
|
|
|
3429
3657
|
readonly highlightIndex: _angular_core.InputSignal<number>;
|
|
3430
3658
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3431
3659
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceAreaChartComponent, never>;
|
|
3432
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceAreaChartComponent, "sce-area-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "startColor": { "alias": "startColor"; "required": false; "isSignal": true; }; "endColor": { "alias": "endColor"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "tooltipLabel": { "alias": "tooltipLabel"; "required": false; "isSignal": true; }; "highlightIndex": { "alias": "highlightIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3660
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceAreaChartComponent, "sce-area-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "startColor": { "alias": "startColor"; "required": false; "isSignal": true; }; "endColor": { "alias": "endColor"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "tooltipLabel": { "alias": "tooltipLabel"; "required": false; "isSignal": true; }; "highlightIndex": { "alias": "highlightIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3433
3661
|
}
|
|
3434
3662
|
|
|
3435
3663
|
/** ECharts pie chart with optional in-slice percentage labels, an optional centre hole and a custom legend. */
|
|
3436
3664
|
declare class ScePieChartComponent {
|
|
3665
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3666
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3667
|
+
private readonly appMode;
|
|
3668
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3669
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3437
3670
|
/** Data items for the pie segments */
|
|
3438
3671
|
readonly data: _angular_core.InputSignal<ChartSeriesItem[]>;
|
|
3439
3672
|
/** Chart height in pixels */
|
|
@@ -3457,11 +3690,16 @@ declare class ScePieChartComponent {
|
|
|
3457
3690
|
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
3458
3691
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3459
3692
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScePieChartComponent, never>;
|
|
3460
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePieChartComponent, "sce-pie-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "showCenterHole": { "alias": "showCenterHole"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "itemRadius": { "alias": "itemRadius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3693
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePieChartComponent, "sce-pie-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "showCenterHole": { "alias": "showCenterHole"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "itemRadius": { "alias": "itemRadius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3461
3694
|
}
|
|
3462
3695
|
|
|
3463
3696
|
/** Concentric ring ("donut") chart where each data item gets its own gauge ring sized against `maxRingValue`, with optional centred value and label. */
|
|
3464
3697
|
declare class SceDonutChartComponent {
|
|
3698
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3699
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3700
|
+
private readonly appMode;
|
|
3701
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3702
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3465
3703
|
/** Data items for the donut rings */
|
|
3466
3704
|
readonly data: _angular_core.InputSignal<ChartSeriesItem[]>;
|
|
3467
3705
|
/** Chart height in pixels */
|
|
@@ -3470,18 +3708,20 @@ declare class SceDonutChartComponent {
|
|
|
3470
3708
|
readonly centerValue: _angular_core.InputSignal<string | number | null>;
|
|
3471
3709
|
/** Center sub label */
|
|
3472
3710
|
readonly centerLabel: _angular_core.InputSignal<string | null>;
|
|
3473
|
-
/**
|
|
3711
|
+
/**
|
|
3712
|
+
* Radius of the innermost ring, as a percentage of the chart box. Rings are spread evenly
|
|
3713
|
+
* across the `innerRadius`…`outerRadius` band, so more items pack tighter rather than
|
|
3714
|
+
* overflowing inwards.
|
|
3715
|
+
*/
|
|
3474
3716
|
readonly innerRadius: _angular_core.InputSignal<string>;
|
|
3475
|
-
/**
|
|
3717
|
+
/** Radius of the outermost ring, as a percentage of the chart box. */
|
|
3476
3718
|
readonly outerRadius: _angular_core.InputSignal<string>;
|
|
3477
3719
|
/** Whether to show legend */
|
|
3478
3720
|
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
3479
|
-
/** Whether
|
|
3721
|
+
/** Whether each ring leaves a 20° wedge open at the start angle instead of closing the circle. */
|
|
3480
3722
|
readonly showGap: _angular_core.InputSignal<boolean>;
|
|
3481
3723
|
/** Start angle of the donut */
|
|
3482
3724
|
readonly startAngle: _angular_core.InputSignal<number>;
|
|
3483
|
-
/** Total value for computing arc proportions */
|
|
3484
|
-
readonly total: _angular_core.InputSignal<number>;
|
|
3485
3725
|
/**
|
|
3486
3726
|
* Maximum value per ring — each ring's arc = (value / maxRingValue) x 360.
|
|
3487
3727
|
* If 0, the max value from the data is used.
|
|
@@ -3490,7 +3730,7 @@ declare class SceDonutChartComponent {
|
|
|
3490
3730
|
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
3491
3731
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3492
3732
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDonutChartComponent, never>;
|
|
3493
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDonutChartComponent, "sce-donut-chart", never, { "
|
|
3733
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDonutChartComponent, "sce-donut-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGap": { "alias": "showGap"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "maxRingValue": { "alias": "maxRingValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3494
3734
|
}
|
|
3495
3735
|
|
|
3496
3736
|
/** Legend item that includes a displayable value */
|
|
@@ -3499,8 +3739,15 @@ interface RingChartLegendItem {
|
|
|
3499
3739
|
color: string;
|
|
3500
3740
|
value: string | number;
|
|
3501
3741
|
}
|
|
3502
|
-
/** ECharts donut ring with a centred label/value and a legend that also shows each item's value; the tooltip unit is
|
|
3742
|
+
/** ECharts donut ring with a centred label/value and a legend that also shows each item's value; the tooltip's value unit is translated from `unitKey`. */
|
|
3503
3743
|
declare class SceRingChartComponent {
|
|
3744
|
+
private readonly translate;
|
|
3745
|
+
private readonly language;
|
|
3746
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3747
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3748
|
+
private readonly appMode;
|
|
3749
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3750
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3504
3751
|
/** Data items for the ring segments */
|
|
3505
3752
|
readonly data: _angular_core.InputSignal<ChartSeriesItem[]>;
|
|
3506
3753
|
/** Label displayed above the center value */
|
|
@@ -3517,14 +3764,26 @@ declare class SceRingChartComponent {
|
|
|
3517
3764
|
readonly height: _angular_core.InputSignal<number>;
|
|
3518
3765
|
/** Start angle of the ring */
|
|
3519
3766
|
readonly startAngle: _angular_core.InputSignal<number>;
|
|
3767
|
+
/**
|
|
3768
|
+
* i18n key for the unit appended to each tooltip value (`44 requests`). Defaults to the shared
|
|
3769
|
+
* "requests" unit; pass `''` to render the bare number.
|
|
3770
|
+
*/
|
|
3771
|
+
readonly unitKey: _angular_core.InputSignal<string>;
|
|
3772
|
+
/** Translated tooltip unit. Reads the locale signal so it re-resolves on the in-place language toggle. */
|
|
3773
|
+
private readonly unitLabel;
|
|
3520
3774
|
readonly legendItems: _angular_core.Signal<RingChartLegendItem[]>;
|
|
3521
3775
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3522
3776
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRingChartComponent, never>;
|
|
3523
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRingChartComponent, "sce-ring-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3777
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRingChartComponent, "sce-ring-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "unitKey": { "alias": "unitKey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3524
3778
|
}
|
|
3525
3779
|
|
|
3526
3780
|
/** Semicircular tick-mark gauge for a 0-100 value; when `isRtl` is set the chart's own text is hidden so the caller can overlay it unmirrored. */
|
|
3527
3781
|
declare class SceGaugeChartComponent {
|
|
3782
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3783
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3784
|
+
private readonly appMode;
|
|
3785
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3786
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3528
3787
|
/** Current value (0-100) */
|
|
3529
3788
|
readonly value: _angular_core.InputSignal<number>;
|
|
3530
3789
|
/** Chart height in pixels */
|
|
@@ -3550,7 +3809,7 @@ declare class SceGaugeChartComponent {
|
|
|
3550
3809
|
readonly isRtl: _angular_core.InputSignal<boolean>;
|
|
3551
3810
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3552
3811
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceGaugeChartComponent, never>;
|
|
3553
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceGaugeChartComponent, "sce-gauge-chart", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "endAngle": { "alias": "endAngle"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3812
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceGaugeChartComponent, "sce-gauge-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "endAngle": { "alias": "endAngle"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3554
3813
|
}
|
|
3555
3814
|
|
|
3556
3815
|
/** One segmented bar; unlike `HorizontalBarItem`, its `maxValue` is required and always scopes the fill to this bar alone. */
|
|
@@ -3562,7 +3821,12 @@ interface MultiSegmentBarItem {
|
|
|
3562
3821
|
}
|
|
3563
3822
|
/** Pure-CSS horizontal bars (no ECharts), each split into `segmentCount` sub-segments that fill against the item's own `maxValue`. */
|
|
3564
3823
|
declare class SceMultiSegmentBarChartComponent {
|
|
3565
|
-
private readonly
|
|
3824
|
+
private readonly language;
|
|
3825
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3826
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3827
|
+
private readonly appMode;
|
|
3828
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3829
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3566
3830
|
/** Data items for the bar chart */
|
|
3567
3831
|
readonly data: _angular_core.InputSignal<MultiSegmentBarItem[]>;
|
|
3568
3832
|
/** Bar height in pixels */
|
|
@@ -3577,10 +3841,14 @@ declare class SceMultiSegmentBarChartComponent {
|
|
|
3577
3841
|
readonly defaultColor: _angular_core.InputSignal<string>;
|
|
3578
3842
|
/** Track background color */
|
|
3579
3843
|
readonly trackColor: _angular_core.InputSignal<string>;
|
|
3580
|
-
/**
|
|
3844
|
+
/** Track background colour, mode-aware when `trackColor` is left at its default. */
|
|
3845
|
+
protected readonly resolvedTrackColor: _angular_core.Signal<string>;
|
|
3846
|
+
/** Manual override for RTL. Falls back to the app locale when not provided. */
|
|
3581
3847
|
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
3582
|
-
|
|
3583
|
-
|
|
3848
|
+
/**
|
|
3849
|
+
* Final RTL status (prop override, else the app locale). Consumed by the template, which
|
|
3850
|
+
* mirrors the bar fill direction and the label/value row.
|
|
3851
|
+
*/
|
|
3584
3852
|
readonly computedIsRtl: _angular_core.Signal<boolean>;
|
|
3585
3853
|
readonly computedBars: _angular_core.Signal<{
|
|
3586
3854
|
color: string;
|
|
@@ -3592,11 +3860,16 @@ declare class SceMultiSegmentBarChartComponent {
|
|
|
3592
3860
|
maxValue: number;
|
|
3593
3861
|
}[]>;
|
|
3594
3862
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceMultiSegmentBarChartComponent, never>;
|
|
3595
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceMultiSegmentBarChartComponent, "sce-multi-segment-bar-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "segmentCount": { "alias": "segmentCount"; "required": false; "isSignal": true; }; "segmentGap": { "alias": "segmentGap"; "required": false; "isSignal": true; }; "rowGap": { "alias": "rowGap"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3863
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceMultiSegmentBarChartComponent, "sce-multi-segment-bar-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "segmentCount": { "alias": "segmentCount"; "required": false; "isSignal": true; }; "segmentGap": { "alias": "segmentGap"; "required": false; "isSignal": true; }; "rowGap": { "alias": "rowGap"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3596
3864
|
}
|
|
3597
3865
|
|
|
3598
3866
|
/** Half-circle ECharts gauge whose arc is coloured by proportional segment stops, with an optional centred label and value. */
|
|
3599
3867
|
declare class SceMultiSegmentGaugeComponent {
|
|
3868
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3869
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3870
|
+
private readonly appMode;
|
|
3871
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3872
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3600
3873
|
/** Segments to display on the gauge arc */
|
|
3601
3874
|
readonly segments: _angular_core.InputSignal<ChartSeriesItem[]>;
|
|
3602
3875
|
/** Label shown above the center value */
|
|
@@ -3612,7 +3885,7 @@ declare class SceMultiSegmentGaugeComponent {
|
|
|
3612
3885
|
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
3613
3886
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3614
3887
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceMultiSegmentGaugeComponent, never>;
|
|
3615
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceMultiSegmentGaugeComponent, "sce-multi-segment-gauge", never, { "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3888
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceMultiSegmentGaugeComponent, "sce-multi-segment-gauge", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3616
3889
|
}
|
|
3617
3890
|
|
|
3618
3891
|
/** One slice of the stacked bar; `barValue` lets the drawn width differ from the `value` shown in the legend, and `segments` splits the slice into that many sub-segments. */
|
|
@@ -3633,7 +3906,12 @@ interface ComputedStackedDistributionChartItem extends StackedDistributionChartI
|
|
|
3633
3906
|
}
|
|
3634
3907
|
/** Single stacked bar showing each item's share of the total plus a legend row per item, with an auto-generated aria summary and RTL auto-detection. */
|
|
3635
3908
|
declare class SceStackedDistributionChartComponent {
|
|
3636
|
-
private readonly
|
|
3909
|
+
private readonly language;
|
|
3910
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3911
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3912
|
+
private readonly appMode;
|
|
3913
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3914
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3637
3915
|
/** Segments rendered in the distribution bar and legend rows */
|
|
3638
3916
|
readonly data: _angular_core.InputSignal<StackedDistributionChartItem[]>;
|
|
3639
3917
|
/** Segment height in pixels */
|
|
@@ -3648,16 +3926,20 @@ declare class SceStackedDistributionChartComponent {
|
|
|
3648
3926
|
readonly defaultColor: _angular_core.InputSignal<string>;
|
|
3649
3927
|
/** Placeholder color used when there is no positive data */
|
|
3650
3928
|
readonly emptyColor: _angular_core.InputSignal<string>;
|
|
3651
|
-
/**
|
|
3929
|
+
/** Empty-state placeholder colour, mode-aware when `emptyColor` is left at its default. */
|
|
3930
|
+
protected readonly resolvedEmptyColor: _angular_core.Signal<string>;
|
|
3931
|
+
/** Manual override for RTL. Falls back to the app locale when not provided. */
|
|
3652
3932
|
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
3653
|
-
|
|
3654
|
-
|
|
3933
|
+
/**
|
|
3934
|
+
* Final RTL status (prop override, else the app locale). Consumed by the template, which
|
|
3935
|
+
* mirrors the stacking order of the bar and the legend rows.
|
|
3936
|
+
*/
|
|
3655
3937
|
readonly computedIsRtl: _angular_core.Signal<boolean>;
|
|
3656
3938
|
readonly total: _angular_core.Signal<number>;
|
|
3657
3939
|
readonly computedItems: _angular_core.Signal<ComputedStackedDistributionChartItem[]>;
|
|
3658
3940
|
readonly ariaLabel: _angular_core.Signal<string>;
|
|
3659
3941
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceStackedDistributionChartComponent, never>;
|
|
3660
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStackedDistributionChartComponent, "sce-stacked-distribution-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "segmentGap": { "alias": "segmentGap"; "required": false; "isSignal": true; }; "rowGap": { "alias": "rowGap"; "required": false; "isSignal": true; }; "markerSize": { "alias": "markerSize"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "emptyColor": { "alias": "emptyColor"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3942
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStackedDistributionChartComponent, "sce-stacked-distribution-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "segmentGap": { "alias": "segmentGap"; "required": false; "isSignal": true; }; "rowGap": { "alias": "rowGap"; "required": false; "isSignal": true; }; "markerSize": { "alias": "markerSize"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "emptyColor": { "alias": "emptyColor"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3661
3943
|
}
|
|
3662
3944
|
|
|
3663
3945
|
/** A single stat row displayed below the gauge */
|
|
@@ -3668,6 +3950,11 @@ interface StatGaugeRow {
|
|
|
3668
3950
|
}
|
|
3669
3951
|
/** Half-circle gauge of `value` out of `total`, rendered with a subtitle and a list of colour-coded stat rows below it. */
|
|
3670
3952
|
declare class SceStatGaugeComponent {
|
|
3953
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3954
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3955
|
+
private readonly appMode;
|
|
3956
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3957
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3671
3958
|
/** Current (numerator) value, e.g. 120 */
|
|
3672
3959
|
readonly value: _angular_core.InputSignal<number>;
|
|
3673
3960
|
/** Total (denominator) value, e.g. 300 */
|
|
@@ -3687,12 +3974,17 @@ declare class SceStatGaugeComponent {
|
|
|
3687
3974
|
readonly percentage: _angular_core.Signal<number>;
|
|
3688
3975
|
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
3689
3976
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceStatGaugeComponent, never>;
|
|
3690
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStatGaugeComponent, "sce-stat-gauge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "stats": { "alias": "stats"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "markerSize": { "alias": "markerSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3977
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStatGaugeComponent, "sce-stat-gauge", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "stats": { "alias": "stats"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "markerSize": { "alias": "markerSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3691
3978
|
}
|
|
3692
3979
|
|
|
3693
3980
|
/** SVG progress ring (no ECharts) with a centred label and value, an optional gradient stroke and RTL auto-detection; `progress` may exceed 100. */
|
|
3694
3981
|
declare class SceStatRingComponent {
|
|
3695
|
-
private readonly
|
|
3982
|
+
private readonly language;
|
|
3983
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
3984
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
3985
|
+
private readonly appMode;
|
|
3986
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
3987
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
3696
3988
|
/** Center label shown above the value */
|
|
3697
3989
|
readonly label: _angular_core.InputSignal<string>;
|
|
3698
3990
|
/** Center value shown inside the ring */
|
|
@@ -3713,6 +4005,14 @@ declare class SceStatRingComponent {
|
|
|
3713
4005
|
readonly gradientEndColor: _angular_core.InputSignal<string>;
|
|
3714
4006
|
/** Background ring color */
|
|
3715
4007
|
readonly trackColor: _angular_core.InputSignal<string>;
|
|
4008
|
+
/** Progress arc colour, mode-aware when `color` is left at its default. */
|
|
4009
|
+
protected readonly resolvedColor: _angular_core.Signal<string>;
|
|
4010
|
+
/** Gradient start colour, mode-aware when `gradientStartColor` is left at its default. */
|
|
4011
|
+
protected readonly resolvedGradientStartColor: _angular_core.Signal<string>;
|
|
4012
|
+
/** Gradient end colour, mode-aware when `gradientEndColor` is left at its default. */
|
|
4013
|
+
protected readonly resolvedGradientEndColor: _angular_core.Signal<string>;
|
|
4014
|
+
/** Track background colour, mode-aware when `trackColor` is left at its default. */
|
|
4015
|
+
protected readonly resolvedTrackColor: _angular_core.Signal<string>;
|
|
3716
4016
|
/**
|
|
3717
4017
|
* Rotation of the progress arc in degrees.
|
|
3718
4018
|
* Default is 0 (Right/3 o'clock).
|
|
@@ -3720,12 +4020,13 @@ declare class SceStatRingComponent {
|
|
|
3720
4020
|
readonly startAngle: _angular_core.InputSignal<number>;
|
|
3721
4021
|
/** Whether to use a linear gradient for the progress arc */
|
|
3722
4022
|
readonly useGradient: _angular_core.InputSignal<boolean>;
|
|
3723
|
-
/** Manual override for RTL.
|
|
4023
|
+
/** Manual override for RTL. Falls back to the app locale when not provided. */
|
|
3724
4024
|
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
3725
|
-
private readonly detectedIsRtl;
|
|
3726
4025
|
readonly gradientId: _angular_core.WritableSignal<string>;
|
|
3727
|
-
|
|
3728
|
-
|
|
4026
|
+
/**
|
|
4027
|
+
* Final RTL status (prop override, else the app locale). Consumed by the template, which flips
|
|
4028
|
+
* the arc's sweep direction so the ring fills mirror-image in Arabic.
|
|
4029
|
+
*/
|
|
3729
4030
|
readonly computedIsRtl: _angular_core.Signal<boolean>;
|
|
3730
4031
|
/** Normalized progress (can exceed 100) */
|
|
3731
4032
|
readonly normalizedProgress: _angular_core.Signal<number>;
|
|
@@ -3739,17 +4040,275 @@ declare class SceStatRingComponent {
|
|
|
3739
4040
|
readonly strokeDashOffset: _angular_core.Signal<number>;
|
|
3740
4041
|
readonly viewBox: _angular_core.Signal<string>;
|
|
3741
4042
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceStatRingComponent, never>;
|
|
3742
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStatRingComponent, "sce-stat-ring", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackStrokeWidth": { "alias": "trackStrokeWidth"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "gradientStartColor": { "alias": "gradientStartColor"; "required": false; "isSignal": true; }; "gradientEndColor": { "alias": "gradientEndColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "useGradient": { "alias": "useGradient"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4043
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStatRingComponent, "sce-stat-ring", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackStrokeWidth": { "alias": "trackStrokeWidth"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "gradientStartColor": { "alias": "gradientStartColor"; "required": false; "isSignal": true; }; "gradientEndColor": { "alias": "gradientEndColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "useGradient": { "alias": "useGradient"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4044
|
+
}
|
|
4045
|
+
|
|
4046
|
+
/**
|
|
4047
|
+
* Axis-less trend line for inline use inside cards, table cells and stat tiles.
|
|
4048
|
+
*
|
|
4049
|
+
* Unlike `sce-overview-stat-sparkline` — which renders one fixed, hardcoded SVG path — this chart
|
|
4050
|
+
* is driven by real data. Reach for that one only to reproduce the static overview-card artwork.
|
|
4051
|
+
*/
|
|
4052
|
+
declare class SceSparklineComponent {
|
|
4053
|
+
/** Data points for the sparkline */
|
|
4054
|
+
readonly data: _angular_core.InputSignal<readonly number[]>;
|
|
4055
|
+
/** Chart height in pixels */
|
|
4056
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4057
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4058
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4059
|
+
/** Line color */
|
|
4060
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
4061
|
+
/** Whether to show area fill */
|
|
4062
|
+
readonly showArea: _angular_core.InputSignal<boolean>;
|
|
4063
|
+
/** Line width */
|
|
4064
|
+
readonly lineWidth: _angular_core.InputSignal<number>;
|
|
4065
|
+
/** Whether to use smooth curves */
|
|
4066
|
+
readonly smooth: _angular_core.InputSignal<boolean>;
|
|
4067
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4068
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceSparklineComponent, never>;
|
|
4069
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceSparklineComponent, "sce-sparkline", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "lineWidth": { "alias": "lineWidth"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4070
|
+
}
|
|
4071
|
+
|
|
4072
|
+
/**
|
|
4073
|
+
* A GeoJSON FeatureCollection, as `echarts.registerMap` accepts it.
|
|
4074
|
+
*
|
|
4075
|
+
* Declared structurally here rather than as `Parameters<typeof echarts.registerMap>[1]`: that alias
|
|
4076
|
+
* resolves to ECharts' INTERNAL `GeoJSON`/`GeoJSONCompressed`/`SVGMapInput` union, which the package
|
|
4077
|
+
* never exports — so TypeScript cannot name it when emitting this library's .d.ts and declaration
|
|
4078
|
+
* build fails with TS4029. Owning the shape keeps the public API nameable, and it is also the honest
|
|
4079
|
+
* contract: this component only ever accepts a GeoJSON FeatureCollection.
|
|
4080
|
+
*/
|
|
4081
|
+
interface RegionMapGeoJson {
|
|
4082
|
+
readonly type: 'FeatureCollection';
|
|
4083
|
+
readonly features: readonly {
|
|
4084
|
+
readonly type: 'Feature';
|
|
4085
|
+
readonly id?: string | number;
|
|
4086
|
+
readonly properties?: Readonly<Record<string, unknown>>;
|
|
4087
|
+
readonly geometry: {
|
|
4088
|
+
readonly type: string;
|
|
4089
|
+
readonly coordinates: unknown;
|
|
4090
|
+
};
|
|
4091
|
+
}[];
|
|
4092
|
+
}
|
|
4093
|
+
/**
|
|
4094
|
+
* One shaded region. `name` must match the `nameProperty` field (default `"name"`) on a
|
|
4095
|
+
* feature's `properties` in the supplied `geoJson` — a region with no matching entry simply
|
|
4096
|
+
* renders unfilled, it is not an error.
|
|
4097
|
+
*/
|
|
4098
|
+
interface RegionMapDatum {
|
|
4099
|
+
readonly name: string;
|
|
4100
|
+
readonly value: number;
|
|
4101
|
+
}
|
|
4102
|
+
/**
|
|
4103
|
+
* ECharts choropleth: a `map` series shades each GeoJSON region by `value`, through a
|
|
4104
|
+
* `colorRange` gradient driven by a `visualMap` legend — the same magnitude-encoding idea as
|
|
4105
|
+
* `sce-heatmap-chart`, but over real geography instead of a category grid.
|
|
4106
|
+
*
|
|
4107
|
+
* GEOJSON IS NOT BUNDLED — READ THIS BEFORE USING. This chart renders NOTHING until the
|
|
4108
|
+
* `geoJson` input is supplied, and that is a deliberate design boundary, not a bug to work
|
|
4109
|
+
* around: region boundaries are large (a real country's admin-level GeoJSON is hundreds of KB
|
|
4110
|
+
* to megabytes), slow-changing, and encode a political/data decision — which administrative
|
|
4111
|
+
* level, which disputed-border convention, which simplification tolerance — that belongs to the
|
|
4112
|
+
* consuming application, not to a shared design system. Fetch it once in the app (static asset,
|
|
4113
|
+
* CDN, API) and pass it down; this component's only job is registering it with ECharts
|
|
4114
|
+
* (`echarts.registerMap`) and painting it.
|
|
4115
|
+
*
|
|
4116
|
+
* Reach for `sce-flow-map-chart` instead when the story is ROUTES between points (origin ->
|
|
4117
|
+
* destination), not a per-region MAGNITUDE — a choropleth has no notion of a line connecting
|
|
4118
|
+
* two places.
|
|
4119
|
+
*/
|
|
4120
|
+
declare class SceRegionMapChartComponent {
|
|
4121
|
+
/** GeoJSON `FeatureCollection` describing the region boundaries to shade. See the component
|
|
4122
|
+
* doc above — this is REQUIRED and the chart is intentionally blank without it. */
|
|
4123
|
+
readonly geoJson: _angular_core.InputSignal<RegionMapGeoJson | null>;
|
|
4124
|
+
/**
|
|
4125
|
+
* The name `echarts.registerMap` files this GeoJSON under. ECharts' map registry is GLOBAL
|
|
4126
|
+
* (keyed by this string across the whole app, not scoped to this component instance) — give
|
|
4127
|
+
* two chart instances a DIFFERENT name if they render different geometry, or the later
|
|
4128
|
+
* registration silently clobbers the earlier one.
|
|
4129
|
+
*/
|
|
4130
|
+
readonly mapName: _angular_core.InputSignal<string>;
|
|
4131
|
+
/** GeoJSON feature property read as each region's display name; must match `data[].name`. */
|
|
4132
|
+
readonly nameProperty: _angular_core.InputSignal<string>;
|
|
4133
|
+
/** One `{ name, value }` entry per shaded region. A region with no matching entry renders unfilled. */
|
|
4134
|
+
readonly data: _angular_core.InputSignal<readonly RegionMapDatum[]>;
|
|
4135
|
+
/** Chart height in pixels */
|
|
4136
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4137
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4138
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4139
|
+
/** Colour stops for the magnitude gradient, low to high. Painted to canvas, so literal hex/rgb only. */
|
|
4140
|
+
readonly colorRange: _angular_core.InputSignal<readonly string[]>;
|
|
4141
|
+
/** Value mapped to the start of `colorRange` */
|
|
4142
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
4143
|
+
/** Value mapped to the end of `colorRange` */
|
|
4144
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
4145
|
+
/** Shows the built-in visual map gradient legend, draggable to filter the visible range */
|
|
4146
|
+
readonly showVisualMap: _angular_core.InputSignal<boolean>;
|
|
4147
|
+
/** Enables mouse/touch pan and zoom over the map */
|
|
4148
|
+
readonly roam: _angular_core.InputSignal<boolean>;
|
|
4149
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4150
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4151
|
+
private readonly appMode;
|
|
4152
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4153
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4154
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4155
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRegionMapChartComponent, never>;
|
|
4156
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRegionMapChartComponent, "sce-region-map-chart", never, { "geoJson": { "alias": "geoJson"; "required": false; "isSignal": true; }; "mapName": { "alias": "mapName"; "required": false; "isSignal": true; }; "nameProperty": { "alias": "nameProperty"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colorRange": { "alias": "colorRange"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showVisualMap": { "alias": "showVisualMap"; "required": false; "isSignal": true; }; "roam": { "alias": "roam"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4157
|
+
}
|
|
4158
|
+
|
|
4159
|
+
/**
|
|
4160
|
+
* A GeoJSON FeatureCollection, as `echarts.registerMap` accepts it.
|
|
4161
|
+
*
|
|
4162
|
+
* Declared structurally here rather than as `Parameters<typeof echarts.registerMap>[1]`: that alias
|
|
4163
|
+
* resolves to ECharts' INTERNAL `GeoJSON`/`GeoJSONCompressed`/`SVGMapInput` union, which the package
|
|
4164
|
+
* never exports — so TypeScript cannot name it when emitting this library's .d.ts and declaration
|
|
4165
|
+
* build fails with TS4029. Owning the shape keeps the public API nameable, and it is also the honest
|
|
4166
|
+
* contract: this component only ever accepts a GeoJSON FeatureCollection.
|
|
4167
|
+
*/
|
|
4168
|
+
interface FlowMapGeoJson {
|
|
4169
|
+
readonly type: 'FeatureCollection';
|
|
4170
|
+
readonly features: readonly {
|
|
4171
|
+
readonly type: 'Feature';
|
|
4172
|
+
readonly id?: string | number;
|
|
4173
|
+
readonly properties?: Readonly<Record<string, unknown>>;
|
|
4174
|
+
readonly geometry: {
|
|
4175
|
+
readonly type: string;
|
|
4176
|
+
readonly coordinates: unknown;
|
|
4177
|
+
};
|
|
4178
|
+
}[];
|
|
4179
|
+
}
|
|
4180
|
+
/**
|
|
4181
|
+
* One origin -> destination route. `from`/`to` are `[longitude, latitude]` pairs in the same
|
|
4182
|
+
* projection as the supplied `geoJson`. `value` is optional and carried through to the tooltip
|
|
4183
|
+
* and data item only — it does not currently scale line weight.
|
|
4184
|
+
*/
|
|
4185
|
+
interface FlowMapRoute {
|
|
4186
|
+
readonly name?: string;
|
|
4187
|
+
readonly from: readonly [number, number];
|
|
4188
|
+
readonly to: readonly [number, number];
|
|
4189
|
+
readonly value?: number;
|
|
4190
|
+
}
|
|
4191
|
+
/**
|
|
4192
|
+
* ECharts `lines` series drawn over a `geo` coordinate system: one curved line per
|
|
4193
|
+
* origin -> destination route, with an optional travelling-dot trail effect. This is the
|
|
4194
|
+
* ROUTE chart — reach for `sce-region-map-chart` instead when the story is a per-region
|
|
4195
|
+
* MAGNITUDE (a choropleth), not a connection between two points; a `lines` series has no notion
|
|
4196
|
+
* of "shade this whole region," and a `map` series has no notion of "connect these two points."
|
|
4197
|
+
*
|
|
4198
|
+
* GEOJSON IS NOT BUNDLED — READ THIS BEFORE USING. Exactly like `sce-region-map-chart`, this
|
|
4199
|
+
* chart renders NOTHING until the `geoJson` input is supplied, and that is deliberate: the base
|
|
4200
|
+
* map is large, slow-changing, app-owned data (see that component's doc for the full rationale),
|
|
4201
|
+
* not something a design system should bundle or guess at.
|
|
4202
|
+
*
|
|
4203
|
+
* PERFORMANCE CAVEAT: with `showEffect` on (the default), each route runs a continuous
|
|
4204
|
+
* requestAnimationFrame-driven trail animation for as long as the chart is mounted — it never
|
|
4205
|
+
* settles the way the entrance animation on every other chart in this library does. On a
|
|
4206
|
+
* dashboard rendering several flow maps at once, or a page an operator leaves open all day, turn
|
|
4207
|
+
* `showEffect` off or keep the chart behind `@defer (on viewport)` so it stops animating once
|
|
4208
|
+
* scrolled out of view.
|
|
4209
|
+
*/
|
|
4210
|
+
declare class SceFlowMapChartComponent {
|
|
4211
|
+
/** GeoJSON `FeatureCollection` rendered as the base map underneath the routes. See the
|
|
4212
|
+
* component doc above — this is REQUIRED and the chart is intentionally blank without it. */
|
|
4213
|
+
readonly geoJson: _angular_core.InputSignal<FlowMapGeoJson | null>;
|
|
4214
|
+
/**
|
|
4215
|
+
* The name `echarts.registerMap` files this GeoJSON under. ECharts' map registry is GLOBAL —
|
|
4216
|
+
* see `sce-region-map-chart.mapName` for the same caveat: give differently-shaped geoJson a
|
|
4217
|
+
* different name, or a later registration silently clobbers an earlier one.
|
|
4218
|
+
*/
|
|
4219
|
+
readonly mapName: _angular_core.InputSignal<string>;
|
|
4220
|
+
/** One curved line per origin -> destination route. */
|
|
4221
|
+
readonly data: _angular_core.InputSignal<readonly FlowMapRoute[]>;
|
|
4222
|
+
/** Chart height in pixels */
|
|
4223
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4224
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4225
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4226
|
+
/** Route line colour. Painted to canvas, so a literal hex/rgb string. */
|
|
4227
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
4228
|
+
/** Route curve amount, 0 (straight) to 1 (near-semicircular) */
|
|
4229
|
+
readonly curveness: _angular_core.InputSignal<number>;
|
|
4230
|
+
/** Route line width in pixels */
|
|
4231
|
+
readonly lineWidth: _angular_core.InputSignal<number>;
|
|
4232
|
+
/** Animates a travelling dot along each route. See the PERFORMANCE CAVEAT in the component doc. */
|
|
4233
|
+
readonly showEffect: _angular_core.InputSignal<boolean>;
|
|
4234
|
+
/** Enables mouse/touch pan and zoom over the base map */
|
|
4235
|
+
readonly roam: _angular_core.InputSignal<boolean>;
|
|
4236
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4237
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4238
|
+
private readonly appMode;
|
|
4239
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4240
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4241
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4242
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceFlowMapChartComponent, never>;
|
|
4243
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceFlowMapChartComponent, "sce-flow-map-chart", never, { "geoJson": { "alias": "geoJson"; "required": false; "isSignal": true; }; "mapName": { "alias": "mapName"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "curveness": { "alias": "curveness"; "required": false; "isSignal": true; }; "lineWidth": { "alias": "lineWidth"; "required": false; "isSignal": true; }; "showEffect": { "alias": "showEffect"; "required": false; "isSignal": true; }; "roam": { "alias": "roam"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3743
4244
|
}
|
|
3744
4245
|
|
|
3745
|
-
/**
|
|
4246
|
+
/** One column header, given a stable id purely so the template can `@for (track column.id)`. */
|
|
4247
|
+
interface ChartTableColumn {
|
|
4248
|
+
readonly id: string;
|
|
4249
|
+
readonly label: string;
|
|
4250
|
+
}
|
|
4251
|
+
/** One non-header cell in a row: the raw value plus a numeric flag, so the template can isolate
|
|
4252
|
+
* bidi on numbers without re-running `typeof` in the markup. */
|
|
4253
|
+
interface ChartTableCell {
|
|
4254
|
+
readonly id: string;
|
|
4255
|
+
readonly value: string | number;
|
|
4256
|
+
readonly isNumeric: boolean;
|
|
4257
|
+
}
|
|
4258
|
+
/** One full row: its `<th scope="row">` label (+ optional series colour) and its data cells. */
|
|
4259
|
+
interface ChartTableRow {
|
|
4260
|
+
readonly id: string;
|
|
4261
|
+
readonly header: string | number;
|
|
4262
|
+
readonly headerIsNumeric: boolean;
|
|
4263
|
+
readonly color: string | null;
|
|
4264
|
+
readonly cells: readonly ChartTableCell[];
|
|
4265
|
+
}
|
|
4266
|
+
/**
|
|
4267
|
+
* Accessible, non-visual fallback for a canvas-painted chart.
|
|
4268
|
+
*
|
|
4269
|
+
* A chart drawn onto `<canvas>` is a blank box to a screen reader, and any encoding that relies
|
|
4270
|
+
* on colour alone is unreadable in forced-colors mode, print, or to a user with colour-vision
|
|
4271
|
+
* deficiency. This renders the SAME data the chart is showing as a real, semantic `<table>` —
|
|
4272
|
+
* `<caption>`, `<th scope="col">` headers, `<th scope="row">` per row — with an optional colour
|
|
4273
|
+
* swatch next to each row's label so colour reinforces the text label rather than carrying the
|
|
4274
|
+
* meaning on its own.
|
|
4275
|
+
*
|
|
4276
|
+
* Pair it with any chart: pass the chart's own category/series data (and, if it has one, the same
|
|
4277
|
+
* `seriesColor(i)` palette) and render this directly beneath the chart. It stays collapsed inside
|
|
4278
|
+
* a `<details>` disclosure by default so it does not compete with the chart for layout space, but
|
|
4279
|
+
* remains fully reachable by keyboard and screen reader at all times.
|
|
4280
|
+
*/
|
|
4281
|
+
declare class SceChartDataTableComponent {
|
|
4282
|
+
/** Table caption — describes what the chart shows. Read first by screen readers. */
|
|
4283
|
+
readonly caption: _angular_core.InputSignal<string>;
|
|
4284
|
+
/** Column header labels, including the row-header column (e.g. `['Month', 'Offers', ...]`). */
|
|
4285
|
+
readonly columnHeaders: _angular_core.InputSignal<readonly string[]>;
|
|
4286
|
+
/** Data rows; the first cell of each row becomes that row's `<th scope="row">`. */
|
|
4287
|
+
readonly rows: _angular_core.InputSignal<readonly (string | number)[][]>;
|
|
4288
|
+
/** Per-row colour, in row order — mirrors the chart's own series palette so the swatch and the
|
|
4289
|
+
* chart never disagree. Omit for a single, unstyled series. */
|
|
4290
|
+
readonly seriesColors: _angular_core.InputSignal<readonly string[] | null>;
|
|
4291
|
+
/** Renders the table inside a `<details>` disclosure, collapsed by default, so it sits under a
|
|
4292
|
+
* chart without dominating the layout while staying reachable by keyboard/screen reader. */
|
|
4293
|
+
readonly collapsed: _angular_core.InputSignal<boolean>;
|
|
4294
|
+
/** `<summary>` label for the disclosure — translated by the caller, never hardcoded here. */
|
|
4295
|
+
readonly summaryLabel: _angular_core.InputSignal<string>;
|
|
4296
|
+
readonly tableColumns: _angular_core.Signal<readonly ChartTableColumn[]>;
|
|
4297
|
+
readonly tableRows: _angular_core.Signal<readonly ChartTableRow[]>;
|
|
4298
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceChartDataTableComponent, never>;
|
|
4299
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceChartDataTableComponent, "sce-chart-data-table", never, { "caption": { "alias": "caption"; "required": true; "isSignal": true; }; "columnHeaders": { "alias": "columnHeaders"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "seriesColors": { "alias": "seriesColors"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "summaryLabel": { "alias": "summaryLabel"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4300
|
+
}
|
|
4301
|
+
|
|
4302
|
+
/** Captions for the scale's low, mid and high segments; supply already-translated text. */
|
|
3746
4303
|
interface ScaleIndicatorLabels {
|
|
3747
4304
|
low: string;
|
|
3748
4305
|
mid: string;
|
|
3749
4306
|
high: string;
|
|
3750
4307
|
}
|
|
3751
|
-
/** Three-segment scale track showing either a single thumb or a highlighted range when both `start` and `end` are given; the segment
|
|
4308
|
+
/** Three-segment scale track showing either a single thumb or a highlighted range when both `start` and `end` are given; the segment captions fall back to translated defaults. */
|
|
3752
4309
|
declare class SceScaleIndicatorComponent {
|
|
4310
|
+
private readonly translate;
|
|
4311
|
+
private readonly language;
|
|
3753
4312
|
/** Title displayed above the scale */
|
|
3754
4313
|
readonly title: _angular_core.InputSignal<string>;
|
|
3755
4314
|
/** Current value (used when start/end not provided, for backward compat) */
|
|
@@ -3762,8 +4321,13 @@ declare class SceScaleIndicatorComponent {
|
|
|
3762
4321
|
readonly start: _angular_core.InputSignal<number | undefined>;
|
|
3763
4322
|
/** Highlighted range end (when provided with start, shows range bar instead of thumb) */
|
|
3764
4323
|
readonly end: _angular_core.InputSignal<number | undefined>;
|
|
3765
|
-
/**
|
|
3766
|
-
|
|
4324
|
+
/**
|
|
4325
|
+
* Captions for the three segments (rendered high → mid → low). Leave `null` to use the
|
|
4326
|
+
* component's translated defaults (`charts.scaleIndicator.*`).
|
|
4327
|
+
*/
|
|
4328
|
+
readonly labels: _angular_core.InputSignal<ScaleIndicatorLabels | null>;
|
|
4329
|
+
/** Consumer captions, or the translated defaults. Reads the locale signal so it re-resolves on the in-place language toggle. */
|
|
4330
|
+
readonly resolvedLabels: _angular_core.Signal<ScaleIndicatorLabels>;
|
|
3767
4331
|
/** Active indicator color */
|
|
3768
4332
|
readonly activeColor: _angular_core.InputSignal<string>;
|
|
3769
4333
|
/** Track background color */
|
|
@@ -3789,77 +4353,2465 @@ declare class SceScaleIndicatorComponent {
|
|
|
3789
4353
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceScaleIndicatorComponent, "sce-scale-indicator", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "start": { "alias": "start"; "required": false; "isSignal": true; }; "end": { "alias": "end"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "activeColor": { "alias": "activeColor"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3790
4354
|
}
|
|
3791
4355
|
|
|
3792
|
-
/**
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
4356
|
+
/** A box's five-number summary, in ECharts' own order: `[min, Q1, median, Q3, max]`. */
|
|
4357
|
+
type BoxplotSummary = readonly [number, number, number, number, number];
|
|
4358
|
+
/**
|
|
4359
|
+
* ECharts box-and-whisker plot: one box per category, showing the five-number summary
|
|
4360
|
+
* (min, Q1, median, Q3, max) as a box with whiskers.
|
|
4361
|
+
*
|
|
4362
|
+
* Accepts either raw sample arrays via `samples` — reduced to a five-number summary per box by
|
|
4363
|
+
* the exported `computeFiveNumberSummary` helper — or already-computed summaries via
|
|
4364
|
+
* `summaries`, selected with `precomputed`. Reach for `sce-histogram-chart` instead when the
|
|
4365
|
+
* question is "what shape does the distribution have" (bin counts) rather than "where do its
|
|
4366
|
+
* quartiles and outer range fall" (this chart).
|
|
4367
|
+
*/
|
|
4368
|
+
declare class SceBoxplotChartComponent {
|
|
4369
|
+
/** X-axis category labels, one per box */
|
|
4370
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
4371
|
+
/** Raw sample arrays, one per box; used unless `precomputed` is true */
|
|
4372
|
+
readonly samples: _angular_core.InputSignal<readonly (readonly number[])[]>;
|
|
4373
|
+
/** Precomputed five-number summaries `[min, Q1, median, Q3, max]`, one per box; used when `precomputed` is true */
|
|
4374
|
+
readonly summaries: _angular_core.InputSignal<readonly BoxplotSummary[]>;
|
|
4375
|
+
/** When true, reads `summaries` verbatim instead of computing them from `samples` */
|
|
4376
|
+
readonly precomputed: _angular_core.InputSignal<boolean>;
|
|
4377
|
+
/** Chart height in pixels */
|
|
4378
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4379
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4380
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4381
|
+
/** Fill colour of each box */
|
|
4382
|
+
readonly boxColor: _angular_core.InputSignal<string>;
|
|
4383
|
+
/** Border colour of each box and its whiskers — ink, not a series colour, so the outline reads
|
|
4384
|
+
* as structure regardless of which fill hue is in play */
|
|
4385
|
+
readonly borderColor: _angular_core.InputSignal<string>;
|
|
4386
|
+
/** Whether to show horizontal grid lines on the value axis */
|
|
4387
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
4388
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4389
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4390
|
+
private readonly appMode;
|
|
4391
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4392
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4393
|
+
private readonly boxplotData;
|
|
4394
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4395
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceBoxplotChartComponent, never>;
|
|
4396
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceBoxplotChartComponent, "sce-boxplot-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "samples": { "alias": "samples"; "required": false; "isSignal": true; }; "summaries": { "alias": "summaries"; "required": false; "isSignal": true; }; "precomputed": { "alias": "precomputed"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "boxColor": { "alias": "boxColor"; "required": false; "isSignal": true; }; "borderColor": { "alias": "borderColor"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3801
4397
|
}
|
|
3802
4398
|
|
|
3803
|
-
/**
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
4399
|
+
/** One trading period's OHLC values, in ECharts' own order: `[open, close, low, high]`. */
|
|
4400
|
+
type OhlcDatum$1 = readonly [number, number, number, number];
|
|
4401
|
+
/**
|
|
4402
|
+
* ECharts candlestick chart: one candle per category (typically a date), coloured by whether the
|
|
4403
|
+
* period closed above (`risingColor`) or below (`fallingColor`) its open.
|
|
4404
|
+
*
|
|
4405
|
+
* Pass `[open, close, low, high]` tuples via `data`, aligned to `categories`. Reach for
|
|
4406
|
+
* `sce-ohlc-volume-chart` instead when trading volume needs its own axis under the candles.
|
|
4407
|
+
*/
|
|
4408
|
+
declare class SceCandlestickChartComponent {
|
|
4409
|
+
/** X-axis category labels, one per candle (typically dates) */
|
|
4410
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
4411
|
+
/** `[open, close, low, high]` tuples, aligned to `categories` */
|
|
4412
|
+
readonly data: _angular_core.InputSignal<readonly OhlcDatum$1[]>;
|
|
4413
|
+
/** Candle colour when the period closed at or above its open — rising/falling is a STATE, not a
|
|
4414
|
+
* series identity, so this defaults to the shared "good" status colour rather than an arbitrary green */
|
|
4415
|
+
readonly risingColor: _angular_core.InputSignal<string>;
|
|
4416
|
+
/** Candle colour when the period closed below its open — the shared "critical" status colour */
|
|
4417
|
+
readonly fallingColor: _angular_core.InputSignal<string>;
|
|
4418
|
+
/** Chart height in pixels */
|
|
4419
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4420
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4421
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4422
|
+
/** Whether to show horizontal grid lines on the price axis */
|
|
4423
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
4424
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4425
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4426
|
+
private readonly appMode;
|
|
4427
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4428
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4429
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4430
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceCandlestickChartComponent, never>;
|
|
4431
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceCandlestickChartComponent, "sce-candlestick-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "risingColor": { "alias": "risingColor"; "required": false; "isSignal": true; }; "fallingColor": { "alias": "fallingColor"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3813
4432
|
}
|
|
3814
4433
|
|
|
3815
|
-
/**
|
|
3816
|
-
interface
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
reviewCount: number;
|
|
3821
|
-
/** Locale-formatted `reviewCount`, prepared by the caller. */
|
|
3822
|
-
reviewCountLabel: string;
|
|
3823
|
-
rating: string;
|
|
3824
|
-
country: string;
|
|
3825
|
-
tabs: string[];
|
|
3826
|
-
href: string;
|
|
4434
|
+
/** One stage of a conversion funnel, widest (top) to narrowest (bottom). */
|
|
4435
|
+
interface FunnelStage {
|
|
4436
|
+
name: string;
|
|
4437
|
+
value: number;
|
|
4438
|
+
color?: string;
|
|
3827
4439
|
}
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
|
|
3832
|
-
|
|
4440
|
+
|
|
4441
|
+
/**
|
|
4442
|
+
* Conversion funnel: stages narrow top-to-bottom, each labelled with the percentage of the
|
|
4443
|
+
* previous stage that reached it. For a funnel widening the *other* way (a population/hierarchy
|
|
4444
|
+
* pyramid rather than a conversion path), use `sce-pyramid-chart` instead.
|
|
4445
|
+
*/
|
|
4446
|
+
declare class SceFunnelChartComponent {
|
|
4447
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4448
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4449
|
+
private readonly appMode;
|
|
4450
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4451
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4452
|
+
/** Ordered funnel stages, widest first (top) narrowing to the smallest (bottom) */
|
|
4453
|
+
readonly stages: _angular_core.InputSignal<readonly FunnelStage[]>;
|
|
4454
|
+
/** Chart height in pixels */
|
|
4455
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4456
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4457
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4458
|
+
/**
|
|
4459
|
+
* Fallback stage colour used when a stage has no `color` of its own — `null` (the default) uses
|
|
4460
|
+
* the theme's single-hue `CHART_SEQUENTIAL` progression, one tone per stage, since the stages
|
|
4461
|
+
* are ordered steps of one process rather than unrelated categories.
|
|
4462
|
+
*/
|
|
4463
|
+
readonly color: _angular_core.InputSignal<string | null>;
|
|
4464
|
+
/** Gap in pixels between adjacent funnel segments */
|
|
4465
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
4466
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4467
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceFunnelChartComponent, never>;
|
|
4468
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceFunnelChartComponent, "sce-funnel-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "stages": { "alias": "stages"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3833
4469
|
}
|
|
3834
4470
|
|
|
3835
|
-
/**
|
|
3836
|
-
interface
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
requestNumber: string;
|
|
3840
|
-
officeName: string;
|
|
3841
|
-
location: string;
|
|
3842
|
-
deadline: string;
|
|
3843
|
-
budget: string;
|
|
3844
|
-
tags: string[];
|
|
3845
|
-
offersCount?: number;
|
|
4471
|
+
/** Bin edges (`binCount + 1` values) and per-bin counts computed by `computeHistogramBins`. */
|
|
4472
|
+
interface HistogramBins {
|
|
4473
|
+
readonly edges: readonly number[];
|
|
4474
|
+
readonly counts: readonly number[];
|
|
3846
4475
|
}
|
|
3847
|
-
/**
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
4476
|
+
/**
|
|
4477
|
+
* ECharts bar chart with bins computed from a raw sample, for visualising a distribution's shape.
|
|
4478
|
+
*
|
|
4479
|
+
* `values` + `binCount` are reduced to bin edges and per-bin counts by the exported
|
|
4480
|
+
* `computeHistogramBins` helper. Reach for `sce-boxplot-chart` instead when the question is
|
|
4481
|
+
* "where do the quartiles and outliers fall" rather than "what does the distribution look like."
|
|
4482
|
+
*/
|
|
4483
|
+
declare class SceHistogramChartComponent {
|
|
4484
|
+
/** Raw sample to bucket into bins */
|
|
4485
|
+
readonly values: _angular_core.InputSignal<readonly number[]>;
|
|
4486
|
+
/** Number of equal-width bins to divide the sample's range into */
|
|
4487
|
+
readonly binCount: _angular_core.InputSignal<number>;
|
|
4488
|
+
/** Chart height in pixels */
|
|
4489
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4490
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4491
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4492
|
+
/** Bar fill colour */
|
|
4493
|
+
readonly barColor: _angular_core.InputSignal<string>;
|
|
4494
|
+
/** Bar corner radius in pixels, applied to the end away from the baseline only */
|
|
4495
|
+
readonly borderRadius: _angular_core.InputSignal<number>;
|
|
4496
|
+
/** Whether to show horizontal grid lines on the count axis */
|
|
4497
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
4498
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4499
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4500
|
+
private readonly appMode;
|
|
4501
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4502
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4503
|
+
private readonly bins;
|
|
4504
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4505
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceHistogramChartComponent, never>;
|
|
4506
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceHistogramChartComponent, "sce-histogram-chart", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "binCount": { "alias": "binCount"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "barColor": { "alias": "barColor"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3853
4507
|
}
|
|
3854
4508
|
|
|
3855
|
-
/** One
|
|
3856
|
-
interface
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
4509
|
+
/** One radiating bar: the category positions it around the circle, the value sets how far it reaches from the centre. */
|
|
4510
|
+
interface PolarBarSeriesItem {
|
|
4511
|
+
name: string;
|
|
4512
|
+
value: number;
|
|
4513
|
+
color?: string;
|
|
4514
|
+
}
|
|
4515
|
+
/**
|
|
4516
|
+
* ECharts bar chart drawn on a POLAR coordinate system instead of a cartesian one: each category
|
|
4517
|
+
* occupies a slice of the circle (`angleAxis`) and its bar radiates outward from the centre by
|
|
4518
|
+
* `radiusAxis` value — unlike `sce-bar-chart`, whose bars share a single straight baseline.
|
|
4519
|
+
*/
|
|
4520
|
+
declare class ScePolarBarChartComponent {
|
|
4521
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4522
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4523
|
+
private readonly appMode;
|
|
4524
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4525
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4526
|
+
/** Data items — one bar per item, positioned around the circle in array order */
|
|
4527
|
+
readonly data: _angular_core.InputSignal<readonly PolarBarSeriesItem[]>;
|
|
4528
|
+
/** Chart height in pixels */
|
|
4529
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4530
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4531
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4532
|
+
/** Inner radius of the polar coordinate system — the empty circle at the centre */
|
|
4533
|
+
readonly innerRadius: _angular_core.InputSignal<string>;
|
|
4534
|
+
/** Outer radius of the polar coordinate system — how far the longest bar can reach */
|
|
4535
|
+
readonly outerRadius: _angular_core.InputSignal<string>;
|
|
4536
|
+
/** Angle, in degrees, at which the first category starts */
|
|
4537
|
+
readonly startAngle: _angular_core.InputSignal<number>;
|
|
4538
|
+
/** Bar width in pixels — `null` lets ECharts size bars automatically from the category count */
|
|
4539
|
+
readonly barWidth: _angular_core.InputSignal<number | null>;
|
|
4540
|
+
/** Whether bars end in a rounded cap instead of a flat edge */
|
|
4541
|
+
readonly roundCap: _angular_core.InputSignal<boolean>;
|
|
4542
|
+
/** Fixed maximum for the radius (value) axis — `null` derives it from the data */
|
|
4543
|
+
readonly maxValue: _angular_core.InputSignal<number | null>;
|
|
4544
|
+
/** Whether to show the category labels around the circle */
|
|
4545
|
+
readonly showAngleLabels: _angular_core.InputSignal<boolean>;
|
|
4546
|
+
/** Whether to show the value ticks along the radius */
|
|
4547
|
+
readonly showRadiusLabels: _angular_core.InputSignal<boolean>;
|
|
4548
|
+
/** Whether to show the legend below the chart */
|
|
4549
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
4550
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
4551
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4552
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScePolarBarChartComponent, never>;
|
|
4553
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePolarBarChartComponent, "sce-polar-bar-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "barWidth": { "alias": "barWidth"; "required": false; "isSignal": true; }; "roundCap": { "alias": "roundCap"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "showAngleLabels": { "alias": "showAngleLabels"; "required": false; "isSignal": true; }; "showRadiusLabels": { "alias": "showRadiusLabels"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4554
|
+
}
|
|
4555
|
+
|
|
4556
|
+
/**
|
|
4557
|
+
* Nightingale ("rose") chart: a `pie` series with `roseType` set, so every slice keeps the SAME
|
|
4558
|
+
* angle and instead encodes its value in the slice's RADIUS.
|
|
4559
|
+
*
|
|
4560
|
+
* Unlike `sce-pie-chart` — where angle is proportional to value and every slice reads at a
|
|
4561
|
+
* glance as "this share of the whole" — a rose chart trades that readability for the ability to
|
|
4562
|
+
* compare many similarly-sized categories side by side without their labels crowding a tiny
|
|
4563
|
+
* sliver. Two `roseType` modes change what "twice the value" looks like:
|
|
4564
|
+
* - `'radius'` (default): radius is proportional to value. Because a slice's rendered AREA grows
|
|
4565
|
+
* with the SQUARE of its radius, a category with twice the value occupies roughly four times
|
|
4566
|
+
* the visual area — readers who judge magnitude by area (which most people do) will
|
|
4567
|
+
* systematically overestimate differences between categories. Use only when the shape/ranking
|
|
4568
|
+
* matters more than an accurate value comparison.
|
|
4569
|
+
* - `'area'`: slice AREA (not radius) is proportional to value, correcting that distortion — this
|
|
4570
|
+
* is the more honest choice whenever readers might compare magnitudes visually.
|
|
4571
|
+
*/
|
|
4572
|
+
declare class SceRoseChartComponent {
|
|
4573
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4574
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4575
|
+
private readonly appMode;
|
|
4576
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4577
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4578
|
+
/** Data items for the rose slices */
|
|
4579
|
+
readonly data: _angular_core.InputSignal<readonly ChartSeriesItem[]>;
|
|
4580
|
+
/**
|
|
4581
|
+
* Radius encoding: `'radius'` scales slice radius linearly with value (area grows with the
|
|
4582
|
+
* square of the value — a perceptual distortion); `'area'` scales slice AREA linearly with
|
|
4583
|
+
* value instead, which reads more honestly when readers compare magnitudes visually.
|
|
4584
|
+
*/
|
|
4585
|
+
readonly roseType: _angular_core.InputSignal<"area" | "radius">;
|
|
4586
|
+
/** Chart height in pixels */
|
|
4587
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4588
|
+
/** Chart width in pixels */
|
|
4589
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4590
|
+
/** Inner radius percentage — `'0%'` starts every slice at the centre point */
|
|
4591
|
+
readonly innerRadius: _angular_core.InputSignal<string>;
|
|
4592
|
+
/** Outer radius percentage reached by the largest-value slice */
|
|
4593
|
+
readonly outerRadius: _angular_core.InputSignal<string>;
|
|
4594
|
+
/** Start angle of the first slice, in degrees */
|
|
4595
|
+
readonly startAngle: _angular_core.InputSignal<number>;
|
|
4596
|
+
/** Whether to show value labels inside each slice */
|
|
4597
|
+
readonly showLabels: _angular_core.InputSignal<boolean>;
|
|
4598
|
+
/** Whether to show the legend below the chart */
|
|
4599
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
4600
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
4601
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4602
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRoseChartComponent, never>;
|
|
4603
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRoseChartComponent, "sce-rose-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "roseType": { "alias": "roseType"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4604
|
+
}
|
|
4605
|
+
|
|
4606
|
+
/** One branch of the nested hierarchy. `value` is optional on a branch with `children` — ECharts
|
|
4607
|
+
* sums the children's values to size it when it is omitted. */
|
|
4608
|
+
interface TreemapNode {
|
|
4609
|
+
readonly name: string;
|
|
4610
|
+
readonly value?: number;
|
|
4611
|
+
/** Explicit colour for this node; unset descendants inherit a tint of their top-level ancestor's colour. */
|
|
4612
|
+
readonly color?: string;
|
|
4613
|
+
readonly children?: readonly TreemapNode[];
|
|
4614
|
+
}
|
|
4615
|
+
/**
|
|
4616
|
+
* ECharts treemap: a nested rectangle hierarchy sized by `value`, coloured per top-level branch
|
|
4617
|
+
* (descendants get an automatic tinted shade of their branch's colour).
|
|
4618
|
+
*
|
|
4619
|
+
* Every level renders simultaneously and `nodeClick` is disabled — this is a static "whole tree
|
|
4620
|
+
* at a glance" view. Past 2-3 levels deep, nested labels get cramped fast; reach for
|
|
4621
|
+
* `sce-treemap-drilldown-chart` instead, which hides depth behind clicks so only one level is
|
|
4622
|
+
* ever on screen at a time.
|
|
4623
|
+
*/
|
|
4624
|
+
declare class SceTreemapChartComponent {
|
|
4625
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4626
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4627
|
+
private readonly appMode;
|
|
4628
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4629
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4630
|
+
/** Root-level branches of the hierarchy — each becomes its own coloured region. */
|
|
4631
|
+
readonly data: _angular_core.InputSignal<readonly TreemapNode[]>;
|
|
4632
|
+
/** Chart height in pixels */
|
|
4633
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4634
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4635
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4636
|
+
/** Palette cycled across top-level branches that don't set their own `color`. */
|
|
4637
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
4638
|
+
/** Whether node labels are drawn inside their rectangle. */
|
|
4639
|
+
readonly showLabels: _angular_core.InputSignal<boolean>;
|
|
4640
|
+
/** Whether mouse-wheel zoom + drag panning is enabled on the canvas. */
|
|
4641
|
+
readonly roam: _angular_core.InputSignal<boolean>;
|
|
4642
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4643
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceTreemapChartComponent, never>;
|
|
4644
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceTreemapChartComponent, "sce-treemap-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "roam": { "alias": "roam"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4645
|
+
}
|
|
4646
|
+
|
|
4647
|
+
/** One arc-diagram node, placed on the single horizontal baseline in array order. */
|
|
4648
|
+
interface ArcDiagramNode {
|
|
4649
|
+
id: string;
|
|
4650
|
+
name: string;
|
|
4651
|
+
color?: string;
|
|
4652
|
+
}
|
|
4653
|
+
/** One curved edge between two node ids. */
|
|
4654
|
+
interface ArcDiagramLink {
|
|
4655
|
+
source: string;
|
|
4656
|
+
target: string;
|
|
4657
|
+
value?: number;
|
|
4658
|
+
}
|
|
4659
|
+
/**
|
|
4660
|
+
* ECharts graph chart pinned to `layout: 'none'`, with this component computing every node's
|
|
4661
|
+
* `x`/`y` so all nodes sit on one horizontal baseline joined by edges arcing above it. Unlike
|
|
4662
|
+
* `sce-network-graph-chart`, whose circular/force layouts are free to place nodes anywhere,
|
|
4663
|
+
* reach for this when nodes already have a natural linear order (timeline, alphabet, rank) and
|
|
4664
|
+
* the story is which pairs are adjacent along that order, not the overall cluster shape.
|
|
4665
|
+
*
|
|
4666
|
+
* Because layout `'none'` positions nodes using literal pixel coordinates computed ahead of
|
|
4667
|
+
* render, `width` here — unlike every other `sce-*-chart` — must be a real pixel number, not
|
|
4668
|
+
* `null`: a stretch-to-container width cannot be resolved before the node x-positions are laid
|
|
4669
|
+
* out, so passing `null` would collapse every node onto the same point.
|
|
4670
|
+
*/
|
|
4671
|
+
declare class SceArcDiagramChartComponent {
|
|
4672
|
+
/** Nodes placed left-to-right on the baseline, in array order */
|
|
4673
|
+
readonly nodes: _angular_core.InputSignal<readonly ArcDiagramNode[]>;
|
|
4674
|
+
/** Curved edges between node ids */
|
|
4675
|
+
readonly links: _angular_core.InputSignal<readonly ArcDiagramLink[]>;
|
|
4676
|
+
/** Chart height in pixels — must leave headroom above the baseline for the tallest arcs */
|
|
4677
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4678
|
+
/** Chart width in pixels — a literal pixel value; layout `'none'` cannot resolve `null` */
|
|
4679
|
+
readonly width: _angular_core.InputSignal<number>;
|
|
4680
|
+
/** Node marker diameter in pixels */
|
|
4681
|
+
readonly nodeSize: _angular_core.InputSignal<number>;
|
|
4682
|
+
/** Edge curve amount, 0 (straight) to 1 (tall arc) */
|
|
4683
|
+
readonly curveness: _angular_core.InputSignal<number>;
|
|
4684
|
+
/** Edge line color */
|
|
4685
|
+
readonly linkColor: _angular_core.InputSignal<string>;
|
|
4686
|
+
/** Edge line width in pixels */
|
|
4687
|
+
readonly linkWidth: _angular_core.InputSignal<number>;
|
|
4688
|
+
/** Whether to show each node's name below the baseline */
|
|
4689
|
+
readonly showLabel: _angular_core.InputSignal<boolean>;
|
|
4690
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4691
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4692
|
+
private readonly appMode;
|
|
4693
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4694
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4695
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4696
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceArcDiagramChartComponent, never>;
|
|
4697
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceArcDiagramChartComponent, "sce-arc-diagram-chart", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "nodeSize": { "alias": "nodeSize"; "required": false; "isSignal": true; }; "curveness": { "alias": "curveness"; "required": false; "isSignal": true; }; "linkColor": { "alias": "linkColor"; "required": false; "isSignal": true; }; "linkWidth": { "alias": "linkWidth"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4698
|
+
}
|
|
4699
|
+
|
|
4700
|
+
/** One bubble series: `[x, y, size]` points, where `size` is the magnitude that drives the bubble's diameter. */
|
|
4701
|
+
interface BubbleSeriesData {
|
|
4702
|
+
name: string;
|
|
4703
|
+
data: readonly (readonly [number, number, number])[];
|
|
4704
|
+
color?: string;
|
|
4705
|
+
}
|
|
4706
|
+
/**
|
|
4707
|
+
* ECharts scatter plot where a third value per point drives its symbol size (a classic bubble
|
|
4708
|
+
* chart). Unlike `sce-scatter-chart` — where every point is the same size — reach for this chart
|
|
4709
|
+
* when the data has a third numeric magnitude (revenue, headcount, volume…) worth encoding
|
|
4710
|
+
* visually alongside the x/y position.
|
|
4711
|
+
*/
|
|
4712
|
+
declare class SceBubbleChartComponent {
|
|
4713
|
+
private readonly el;
|
|
4714
|
+
/** Manual direction override; null auto-detects from computed style (RTL-first default). */
|
|
4715
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
4716
|
+
private readonly detectedIsRtl;
|
|
4717
|
+
constructor();
|
|
4718
|
+
private readonly computedIsRtl;
|
|
4719
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4720
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4721
|
+
private readonly appMode;
|
|
4722
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4723
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4724
|
+
/** One or more `[x, y, size]` series to plot */
|
|
4725
|
+
readonly series: _angular_core.InputSignal<readonly BubbleSeriesData[]>;
|
|
4726
|
+
/** Chart height in pixels */
|
|
4727
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4728
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
4729
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4730
|
+
/** `[min, max]` bubble diameter in pixels; the third data value is scaled linearly into this range across ALL series */
|
|
4731
|
+
readonly sizeRange: _angular_core.InputSignal<readonly [number, number]>;
|
|
4732
|
+
/** Whether to show the custom legend below the chart */
|
|
4733
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
4734
|
+
/** Whether to show axis grid lines */
|
|
4735
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
4736
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
4737
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4738
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceBubbleChartComponent, never>;
|
|
4739
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceBubbleChartComponent, "sce-bubble-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "sizeRange": { "alias": "sizeRange"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4740
|
+
}
|
|
4741
|
+
|
|
4742
|
+
/** One bullet row: a single measure against a target, in front of three ascending qualitative
|
|
4743
|
+
* range thresholds (e.g. poor / satisfactory / good), Stephen Few's bullet-graph shape. */
|
|
4744
|
+
interface BulletItem {
|
|
4745
|
+
name: string;
|
|
4746
|
+
measure: number;
|
|
4747
|
+
target: number;
|
|
4748
|
+
/** Three ascending, CUMULATIVE thresholds — e.g. `[50, 75, 100]`, not deltas. */
|
|
4749
|
+
ranges: readonly [number, number, number];
|
|
4750
|
+
}
|
|
4751
|
+
/**
|
|
4752
|
+
* Stephen Few bullet graph: a thin horizontal measure bar drawn over three stacked qualitative
|
|
4753
|
+
* range bands, with a target marker tick. Unlike `sce-horizontal-bar-chart`, the bar length here
|
|
4754
|
+
* is not the whole story — the coloured bands behind it give the value context (is it in the
|
|
4755
|
+
* "good" zone?) and the tick marks a specific target, both absent from a plain bar.
|
|
4756
|
+
*/
|
|
4757
|
+
declare class SceBulletChartComponent {
|
|
4758
|
+
private readonly el;
|
|
4759
|
+
/** Manual direction override; null auto-detects from computed style (RTL-first default). */
|
|
4760
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
4761
|
+
private readonly detectedIsRtl;
|
|
4762
|
+
constructor();
|
|
4763
|
+
private readonly computedIsRtl;
|
|
4764
|
+
/** One row per bullet */
|
|
4765
|
+
readonly data: _angular_core.InputSignal<readonly BulletItem[]>;
|
|
4766
|
+
/** Chart height in pixels */
|
|
4767
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4768
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4769
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4770
|
+
/** Qualitative range band colours, from worst to best — a neutral background scale, deliberately
|
|
4771
|
+
* NOT drawn from the categorical series palette, so it never competes with the measure bar */
|
|
4772
|
+
readonly rangeColors: _angular_core.InputSignal<readonly [string, string, string]>;
|
|
4773
|
+
/** Thin measure bar colour — the chart's one data series */
|
|
4774
|
+
readonly measureColor: _angular_core.InputSignal<string>;
|
|
4775
|
+
/** Target marker tick colour — ink, not a series colour, so it reads as a reference line rather than data */
|
|
4776
|
+
readonly targetColor: _angular_core.InputSignal<string>;
|
|
4777
|
+
/** Range band thickness, in pixels */
|
|
4778
|
+
readonly bandWidth: _angular_core.InputSignal<number>;
|
|
4779
|
+
/** Measure bar thickness, in pixels — kept well under `bandWidth` so the bands remain visible */
|
|
4780
|
+
readonly measureWidth: _angular_core.InputSignal<number>;
|
|
4781
|
+
/** Whether to show the dashed value-axis grid lines */
|
|
4782
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
4783
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4784
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4785
|
+
private readonly appMode;
|
|
4786
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4787
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4788
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4789
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceBulletChartComponent, never>;
|
|
4790
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceBulletChartComponent, "sce-bullet-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "rangeColors": { "alias": "rangeColors"; "required": false; "isSignal": true; }; "measureColor": { "alias": "measureColor"; "required": false; "isSignal": true; }; "targetColor": { "alias": "targetColor"; "required": false; "isSignal": true; }; "bandWidth": { "alias": "bandWidth"; "required": false; "isSignal": true; }; "measureWidth": { "alias": "measureWidth"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4791
|
+
}
|
|
4792
|
+
|
|
4793
|
+
/** One entity's rank (1 = best) at every period — `ranks` must align 1:1 with the chart's `categories`. */
|
|
4794
|
+
interface BumpChartSeries {
|
|
4795
|
+
label: string;
|
|
4796
|
+
ranks: readonly number[];
|
|
4797
|
+
color?: string;
|
|
4798
|
+
}
|
|
4799
|
+
/**
|
|
4800
|
+
* ECharts bump chart: one line per entity tracking its RANK across many periods, e.g. weekly
|
|
4801
|
+
* leaderboard position or monthly market-share ranking. Unlike `sce-slope-chart` — which connects
|
|
4802
|
+
* exactly two points and plots a raw VALUE — this chart plots an ordinal RANK across three or more
|
|
4803
|
+
* periods, which is what makes overtakes ("line crosses another line") the whole point of the shape.
|
|
4804
|
+
*
|
|
4805
|
+
* INVERTED Y AXIS: rank 1 is the best placement, so it must render at the TOP of the plot area —
|
|
4806
|
+
* the opposite of ECharts' default value-axis direction, where small numbers sit at the bottom. The
|
|
4807
|
+
* y-axis therefore sets `inverse: true`: rank 1 draws highest, and larger (worse) ranks draw lower,
|
|
4808
|
+
* so the chart reads top-to-bottom exactly like a leaderboard. Forgetting this on a hand-rolled rank
|
|
4809
|
+
* chart is the single most common bump-chart bug — a `min: 1` axis without `inverse: true` puts rank
|
|
4810
|
+
* 1 at the BOTTOM instead.
|
|
4811
|
+
*/
|
|
4812
|
+
declare class SceBumpChartComponent {
|
|
4813
|
+
private readonly el;
|
|
4814
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4815
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4816
|
+
private readonly appMode;
|
|
4817
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4818
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4819
|
+
/** Manual direction override for the rank-axis side; null auto-detects from computed style (RTL-first default). */
|
|
4820
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
4821
|
+
private readonly detectedIsRtl;
|
|
4822
|
+
constructor();
|
|
4823
|
+
private readonly computedIsRtl;
|
|
4824
|
+
/** One series per entity — each `ranks` array must have one entry per `categories` period */
|
|
4825
|
+
readonly data: _angular_core.InputSignal<readonly BumpChartSeries[]>;
|
|
4826
|
+
/** X-axis period labels (e.g. week numbers, month names) */
|
|
4827
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
4828
|
+
/** Chart height in pixels */
|
|
4829
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4830
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4831
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4832
|
+
/** Fallback colour palette, cycled by index for entities without an explicit `color` */
|
|
4833
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
4834
|
+
/** Line width in pixels */
|
|
4835
|
+
readonly lineWidth: _angular_core.InputSignal<number>;
|
|
4836
|
+
/** Data point marker size in pixels */
|
|
4837
|
+
readonly pointSize: _angular_core.InputSignal<number>;
|
|
4838
|
+
/** Whether to render the entity/colour legend below the chart */
|
|
4839
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
4840
|
+
/** Whether to print the entity name next to its final data point */
|
|
4841
|
+
readonly showEndLabels: _angular_core.InputSignal<boolean>;
|
|
4842
|
+
/** Explicit worst-rank axis ceiling; `null` derives it from the highest rank present in `data` */
|
|
4843
|
+
readonly maxRank: _angular_core.InputSignal<number | null>;
|
|
4844
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
4845
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4846
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceBumpChartComponent, never>;
|
|
4847
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceBumpChartComponent, "sce-bump-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "lineWidth": { "alias": "lineWidth"; "required": false; "isSignal": true; }; "pointSize": { "alias": "pointSize"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showEndLabels": { "alias": "showEndLabels"; "required": false; "isSignal": true; }; "maxRank": { "alias": "maxRank"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4848
|
+
}
|
|
4849
|
+
|
|
4850
|
+
/** One entity tracked between exactly two time points (e.g. a product's rank in Q1 vs Q2). */
|
|
4851
|
+
interface SlopeChartItem {
|
|
4852
|
+
label: string;
|
|
4853
|
+
startValue: number;
|
|
4854
|
+
endValue: number;
|
|
4855
|
+
color?: string;
|
|
4856
|
+
}
|
|
4857
|
+
/**
|
|
4858
|
+
* ECharts slope chart: one two-point line series per entity, connecting its value at a START
|
|
4859
|
+
* period to its value at an END period, with the entity name (and, optionally, its value) printed
|
|
4860
|
+
* at both ends of the line. Built for exactly two time points — for three or more, reach for
|
|
4861
|
+
* `sce-bump-chart` instead, which tracks RANK across many periods on an inverted axis rather than
|
|
4862
|
+
* a raw value between two.
|
|
4863
|
+
*
|
|
4864
|
+
* A rising line reads as "this entity improved between the two periods", a falling one as decline;
|
|
4865
|
+
* crossing lines make rank-swaps between entities visually obvious in a way a table of two columns
|
|
4866
|
+
* of numbers never does.
|
|
4867
|
+
*
|
|
4868
|
+
* RTL CAVEAT: ECharts draws to a `<canvas>`, and canvas has no concept of text direction — it never
|
|
4869
|
+
* mirrors under `dir="rtl"`. The START period always renders at the physical LEFT of the plot area
|
|
4870
|
+
* and the END period always at the physical RIGHT, regardless of `dir`, because the two columns
|
|
4871
|
+
* represent chronological order (earlier → later), not a reading-direction concern. Only the
|
|
4872
|
+
* category axis LABELS ("Q1", "Q2"…) are text and therefore already direction-aware by virtue of
|
|
4873
|
+
* being laid out by the browser's font shaping — the plotted geometry is not.
|
|
4874
|
+
*/
|
|
4875
|
+
declare class SceSlopeChartComponent {
|
|
4876
|
+
/** Entities to plot — each carries its own start/end value */
|
|
4877
|
+
readonly data: _angular_core.InputSignal<readonly SlopeChartItem[]>;
|
|
4878
|
+
/** Category label for the start period (e.g. 'Q1 2025') */
|
|
4879
|
+
readonly startPeriodLabel: _angular_core.InputSignal<string>;
|
|
4880
|
+
/** Category label for the end period (e.g. 'Q2 2025') */
|
|
4881
|
+
readonly endPeriodLabel: _angular_core.InputSignal<string>;
|
|
4882
|
+
/** Chart height in pixels */
|
|
4883
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
4884
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4885
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4886
|
+
/** Fallback colour palette, cycled by index for entities without an explicit `color` */
|
|
4887
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
4888
|
+
/** Suffix appended to every displayed value (e.g. '%') */
|
|
4889
|
+
readonly valueSuffix: _angular_core.InputSignal<string>;
|
|
4890
|
+
/** Whether to print the numeric value alongside the entity name at each end */
|
|
4891
|
+
readonly showValues: _angular_core.InputSignal<boolean>;
|
|
4892
|
+
/** Line width in pixels */
|
|
4893
|
+
readonly lineWidth: _angular_core.InputSignal<number>;
|
|
4894
|
+
/** Endpoint marker size in pixels */
|
|
4895
|
+
readonly pointSize: _angular_core.InputSignal<number>;
|
|
4896
|
+
/** Whether to render the entity/colour legend below the chart */
|
|
4897
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
4898
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4899
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4900
|
+
private readonly appMode;
|
|
4901
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4902
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4903
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
4904
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4905
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceSlopeChartComponent, never>;
|
|
4906
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceSlopeChartComponent, "sce-slope-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "startPeriodLabel": { "alias": "startPeriodLabel"; "required": false; "isSignal": true; }; "endPeriodLabel": { "alias": "endPeriodLabel"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "valueSuffix": { "alias": "valueSuffix"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "lineWidth": { "alias": "lineWidth"; "required": false; "isSignal": true; }; "pointSize": { "alias": "pointSize"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4907
|
+
}
|
|
4908
|
+
|
|
4909
|
+
/** One day: `[dateString, value]`, where `dateString` is `YYYY-MM-DD`. */
|
|
4910
|
+
type CalendarHeatmapEntry = readonly [string, number];
|
|
4911
|
+
/**
|
|
4912
|
+
* GitHub-style contribution calendar: a full year of daily values plotted on ECharts' calendar
|
|
4913
|
+
* coordinate system, one cell per day, coloured by value through `colorRange`. Unlike
|
|
4914
|
+
* `sce-heatmap-chart` — which plots `[x, y, value]` cells against two arbitrary category axes —
|
|
4915
|
+
* this component lays out real dates within `year` and needs no category arrays at all. Pick
|
|
4916
|
+
* this one specifically for day-by-day activity over a year; reach for `sce-heatmap-chart` for
|
|
4917
|
+
* any other two-dimensional category grid.
|
|
4918
|
+
*/
|
|
4919
|
+
declare class SceCalendarHeatmapChartComponent {
|
|
4920
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4921
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4922
|
+
private readonly appMode;
|
|
4923
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4924
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4925
|
+
/** Calendar year to lay out — every week row spans Jan 1 through Dec 31 of this year */
|
|
4926
|
+
readonly year: _angular_core.InputSignal<number>;
|
|
4927
|
+
/** Daily values as `[dateString, value]` pairs, `dateString` in `YYYY-MM-DD` format */
|
|
4928
|
+
readonly data: _angular_core.InputSignal<readonly CalendarHeatmapEntry[]>;
|
|
4929
|
+
/** Chart height in pixels */
|
|
4930
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4931
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
4932
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4933
|
+
/** Colour stops for the value gradient, low to high. Painted to canvas, so literal hex/rgb only. */
|
|
4934
|
+
readonly colorRange: _angular_core.InputSignal<readonly string[]>;
|
|
4935
|
+
/** Value mapped to the start of `colorRange`. */
|
|
4936
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
4937
|
+
/** Value mapped to the end of `colorRange` — `null` auto-computes from the highest value in `data`. */
|
|
4938
|
+
readonly max: _angular_core.InputSignal<number | null>;
|
|
4939
|
+
/** Square day-cell size in pixels */
|
|
4940
|
+
readonly cellSize: _angular_core.InputSignal<number>;
|
|
4941
|
+
/** Shows the built-in visual map gradient legend */
|
|
4942
|
+
readonly showVisualMap: _angular_core.InputSignal<boolean>;
|
|
4943
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4944
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceCalendarHeatmapChartComponent, never>;
|
|
4945
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceCalendarHeatmapChartComponent, "sce-calendar-heatmap-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "year": { "alias": "year"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colorRange": { "alias": "colorRange"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "cellSize": { "alias": "cellSize"; "required": false; "isSignal": true; }; "showVisualMap": { "alias": "showVisualMap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4946
|
+
}
|
|
4947
|
+
|
|
4948
|
+
/** One chord node — a category arc on the ring, matched to links by `name`. */
|
|
4949
|
+
interface ChordNode {
|
|
4950
|
+
name: string;
|
|
4951
|
+
color?: string;
|
|
4952
|
+
}
|
|
4953
|
+
/** One weighted exchange between two chord node names. */
|
|
4954
|
+
interface ChordLink {
|
|
4955
|
+
source: string;
|
|
4956
|
+
target: string;
|
|
4957
|
+
value: number;
|
|
4958
|
+
}
|
|
4959
|
+
/**
|
|
4960
|
+
* Circular flow diagram built on ECharts 6's native `chord` series — confirmed available in the
|
|
4961
|
+
* pinned `echarts` 6.1 dependency, so this component uses it directly with no fallback series.
|
|
4962
|
+
* Unlike `sce-sankey-chart`, whose links are directional and read left-to-right, chord has no
|
|
4963
|
+
* "start" or "end": every node can exchange with every other node around a shared ring. Reach
|
|
4964
|
+
* for this over `sce-network-graph-chart` when the node count stays small (roughly under 20) and
|
|
4965
|
+
* every node's total exchange volume — the arc length around the ring — is itself meaningful.
|
|
4966
|
+
*/
|
|
4967
|
+
declare class SceChordChartComponent {
|
|
4968
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
4969
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
4970
|
+
private readonly appMode;
|
|
4971
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
4972
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
4973
|
+
/** Category arcs around the ring */
|
|
4974
|
+
readonly nodes: _angular_core.InputSignal<readonly ChordNode[]>;
|
|
4975
|
+
/** Weighted exchanges between node names */
|
|
4976
|
+
readonly links: _angular_core.InputSignal<readonly ChordLink[]>;
|
|
4977
|
+
/** Chart height in pixels */
|
|
4978
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
4979
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
4980
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
4981
|
+
/** Inner radius of the ring, as a CSS percentage string */
|
|
4982
|
+
readonly innerRadius: _angular_core.InputSignal<string>;
|
|
4983
|
+
/** Outer radius of the ring, as a CSS percentage string */
|
|
4984
|
+
readonly outerRadius: _angular_core.InputSignal<string>;
|
|
4985
|
+
/** Angular gap between adjacent arcs, in radians */
|
|
4986
|
+
readonly padAngle: _angular_core.InputSignal<number>;
|
|
4987
|
+
/** Whether to show each node's name label outside the ring */
|
|
4988
|
+
readonly showLabel: _angular_core.InputSignal<boolean>;
|
|
4989
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
4990
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceChordChartComponent, never>;
|
|
4991
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceChordChartComponent, "sce-chord-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "padAngle": { "alias": "padAngle"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4992
|
+
}
|
|
4993
|
+
|
|
4994
|
+
/** One bar series, plotted against the left (`yAxisIndex: 0`) value axis. */
|
|
4995
|
+
interface ComboBarSeriesData {
|
|
4996
|
+
name: string;
|
|
4997
|
+
data: readonly number[];
|
|
4998
|
+
color?: string;
|
|
4999
|
+
}
|
|
5000
|
+
/** One line series, plotted against the right (`yAxisIndex: 1`) value axis. */
|
|
5001
|
+
interface ComboLineSeriesData {
|
|
5002
|
+
name: string;
|
|
5003
|
+
data: readonly number[];
|
|
5004
|
+
color?: string;
|
|
5005
|
+
}
|
|
5006
|
+
/**
|
|
5007
|
+
* ECharts combo chart: bar series on a left value axis, line series on an independent right
|
|
5008
|
+
* value axis, sharing one category axis. Built for pairing two differently-scaled metrics —
|
|
5009
|
+
* a count and a rate, revenue and a margin percentage — that `sce-bar-chart`'s own
|
|
5010
|
+
* `overlayLineSeries` cannot express, because that overlay line shares the bars' single axis
|
|
5011
|
+
* and so must already live on the same numeric scale as the bars.
|
|
5012
|
+
*
|
|
5013
|
+
* Honesty caveat: two independently-scaled axes can be zoomed or offset so their lines happen
|
|
5014
|
+
* to cross or track each other, implying a correlation the data does not actually show. Choose
|
|
5015
|
+
* axis ranges deliberately (e.g. both starting at zero) and say in the surrounding copy what
|
|
5016
|
+
* each axis measures — never rely on the chart shape alone to argue the relationship.
|
|
5017
|
+
*
|
|
5018
|
+
* The left/right physical axis positions are fixed regardless of page direction — mirroring
|
|
5019
|
+
* them under RTL would swap which metric a reader's eye finds "first" without changing what
|
|
5020
|
+
* either axis measures, which is a bigger comprehension cost than an axis sitting on the
|
|
5021
|
+
* document's trailing side.
|
|
5022
|
+
*/
|
|
5023
|
+
declare class SceComboDualAxisChartComponent {
|
|
5024
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5025
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5026
|
+
private readonly appMode;
|
|
5027
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5028
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5029
|
+
/** Bar series, plotted against the left value axis */
|
|
5030
|
+
readonly barSeries: _angular_core.InputSignal<readonly ComboBarSeriesData[]>;
|
|
5031
|
+
/** Line series, plotted against the right value axis */
|
|
5032
|
+
readonly lineSeries: _angular_core.InputSignal<readonly ComboLineSeriesData[]>;
|
|
5033
|
+
/** X-axis category labels */
|
|
5034
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
5035
|
+
/** Chart height in pixels */
|
|
5036
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5037
|
+
/** Chart width in pixels */
|
|
5038
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5039
|
+
/** Bar width in pixels */
|
|
5040
|
+
readonly barWidth: _angular_core.InputSignal<string | number>;
|
|
5041
|
+
/** Bar border radius, applied to the top corners */
|
|
5042
|
+
readonly borderRadius: _angular_core.InputSignal<number>;
|
|
5043
|
+
/** Suffix appended to left-axis (bar) labels, e.g. '' for a raw count */
|
|
5044
|
+
readonly leftAxisUnit: _angular_core.InputSignal<string>;
|
|
5045
|
+
/** Suffix appended to right-axis (line) labels, e.g. '%' for a rate */
|
|
5046
|
+
readonly rightAxisUnit: _angular_core.InputSignal<string>;
|
|
5047
|
+
/** Whether to show the standalone legend */
|
|
5048
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5049
|
+
/** Whether to show left-axis grid split lines */
|
|
5050
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
5051
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5052
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5053
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceComboDualAxisChartComponent, never>;
|
|
5054
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceComboDualAxisChartComponent, "sce-combo-dual-axis-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "barSeries": { "alias": "barSeries"; "required": false; "isSignal": true; }; "lineSeries": { "alias": "lineSeries"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "barWidth": { "alias": "barWidth"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "leftAxisUnit": { "alias": "leftAxisUnit"; "required": false; "isSignal": true; }; "rightAxisUnit": { "alias": "rightAxisUnit"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5055
|
+
}
|
|
5056
|
+
|
|
5057
|
+
/**
|
|
5058
|
+
* Heatmap over a symmetric correlation matrix, using a DIVERGING colour scale fixed to
|
|
5059
|
+
* `[-1, +1]` (negative correlations pull toward `negativeColor`, positive toward `positiveColor`,
|
|
5060
|
+
* `0` sits at `neutralColor`) with the coefficient printed inside every cell.
|
|
5061
|
+
*
|
|
5062
|
+
* This is what makes it a correlation matrix rather than a plain `sce-heatmap`-style chart: the
|
|
5063
|
+
* scale is diverging around a meaningful zero and its bounds never adapt to the data — a plain
|
|
5064
|
+
* heatmap's `visualMap` would stretch `min`/`max` to whatever the data's actual range is, which
|
|
5065
|
+
* would make a matrix of weak correlations look just as saturated as one of strong correlations.
|
|
5066
|
+
*/
|
|
5067
|
+
declare class SceCorrelationMatrixChartComponent {
|
|
5068
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5069
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5070
|
+
private readonly appMode;
|
|
5071
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5072
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5073
|
+
/** Row/column labels for the symmetric matrix, in order */
|
|
5074
|
+
readonly labels: _angular_core.InputSignal<readonly string[]>;
|
|
5075
|
+
/** Symmetric correlation matrix; `matrix[i][j]` should equal `matrix[j][i]` and lie in `[-1, 1]` */
|
|
5076
|
+
readonly matrix: _angular_core.InputSignal<readonly (readonly number[])[]>;
|
|
5077
|
+
/** Chart height in pixels */
|
|
5078
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5079
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5080
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5081
|
+
/** Colour for the strongest negative correlation (-1). The warm pole of the diverging scale. */
|
|
5082
|
+
readonly negativeColor: _angular_core.InputSignal<string>;
|
|
5083
|
+
/**
|
|
5084
|
+
* Colour for zero correlation — the diverging scale's fixed midpoint. It is deliberately a NEUTRAL
|
|
5085
|
+
* grey: putting a hue here would make "no correlation" look like a value of its own.
|
|
5086
|
+
*/
|
|
5087
|
+
readonly neutralColor: _angular_core.InputSignal<string>;
|
|
5088
|
+
/** Colour for the strongest positive correlation (+1). The cool pole of the diverging scale. */
|
|
5089
|
+
readonly positiveColor: _angular_core.InputSignal<string>;
|
|
5090
|
+
/** Whether to show the visual-map legend below the grid */
|
|
5091
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5092
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5093
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceCorrelationMatrixChartComponent, never>;
|
|
5094
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceCorrelationMatrixChartComponent, "sce-correlation-matrix-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "matrix": { "alias": "matrix"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "negativeColor": { "alias": "negativeColor"; "required": false; "isSignal": true; }; "neutralColor": { "alias": "neutralColor"; "required": false; "isSignal": true; }; "positiveColor": { "alias": "positiveColor"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5095
|
+
}
|
|
5096
|
+
|
|
5097
|
+
/** One diverging bar: a signed value plotted from a shared zero baseline (e.g. net sentiment, budget variance). */
|
|
5098
|
+
interface DivergingBarItem {
|
|
5099
|
+
category: string;
|
|
5100
|
+
value: number;
|
|
5101
|
+
}
|
|
5102
|
+
/**
|
|
5103
|
+
* ECharts horizontal bar chart where every bar grows left or right from a shared zero centre line —
|
|
5104
|
+
* built for signed comparisons (positive vs negative sentiment, approval net score, variance from
|
|
5105
|
+
* plan) where the SIGN of the value is the point, not just its magnitude.
|
|
5106
|
+
*
|
|
5107
|
+
* RTL CAVEAT: ECharts draws to a `<canvas>`, and canvas has no concept of text direction — it never
|
|
5108
|
+
* mirrors under `dir="rtl"`. On an Arabic page every other element on screen flips, but a positive
|
|
5109
|
+
* value in this chart always extends toward the same physical pixel direction (positive x = visually
|
|
5110
|
+
* right) regardless of `dir`. The category axis labels DO relocate (`isRtl`/`position` below moves
|
|
5111
|
+
* them to the reading-start side), but the bars themselves do not swap direction. If "positive should
|
|
5112
|
+
* point toward reading-start" matters for the data, set `[inverseAxis]="true"` — it flips ECharts'
|
|
5113
|
+
* `xAxis.inverse`, so positive bars point left instead of right. There is no automatic mode: the
|
|
5114
|
+
* caller must decide, because either behaviour is legitimate depending on what the chart is used for
|
|
5115
|
+
* (e.g. a net-promoter-score chart usually wants "positive = right" universally, to match the sign
|
|
5116
|
+
* convention analysts already read; a physically-mirrored RTL layout wants `inverseAxis`).
|
|
5117
|
+
*/
|
|
5118
|
+
declare class SceDivergingBarChartComponent {
|
|
5119
|
+
private readonly el;
|
|
5120
|
+
/** Manual direction override for the category axis side; null auto-detects from computed style (RTL-first default). */
|
|
5121
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
5122
|
+
private readonly detectedIsRtl;
|
|
5123
|
+
constructor();
|
|
5124
|
+
private readonly computedIsRtl;
|
|
5125
|
+
/** Diverging bar items — one bar per category, signed value */
|
|
5126
|
+
readonly data: _angular_core.InputSignal<readonly DivergingBarItem[]>;
|
|
5127
|
+
/** Chart height in pixels */
|
|
5128
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5129
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5130
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5131
|
+
/** Bar colour for values >= 0 — the "positive" pole of the diverging ramp */
|
|
5132
|
+
readonly positiveColor: _angular_core.InputSignal<string>;
|
|
5133
|
+
/** Bar colour for values < 0 — the "negative" pole of the diverging ramp */
|
|
5134
|
+
readonly negativeColor: _angular_core.InputSignal<string>;
|
|
5135
|
+
/** Whether to print each bar's signed value at its outer end */
|
|
5136
|
+
readonly showValues: _angular_core.InputSignal<boolean>;
|
|
5137
|
+
/** Suffix appended to every displayed value (e.g. '%') */
|
|
5138
|
+
readonly valueSuffix: _angular_core.InputSignal<string>;
|
|
5139
|
+
/** Bar thickness in pixels */
|
|
5140
|
+
readonly barHeight: _angular_core.InputSignal<string | number>;
|
|
5141
|
+
/** Flips `xAxis.inverse` so positive bars point the opposite physical direction — see the class doc's RTL caveat. */
|
|
5142
|
+
readonly inverseAxis: _angular_core.InputSignal<boolean>;
|
|
5143
|
+
/** Whether to draw a solid reference line at the zero baseline */
|
|
5144
|
+
readonly showZeroLine: _angular_core.InputSignal<boolean>;
|
|
5145
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5146
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5147
|
+
private readonly appMode;
|
|
5148
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5149
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5150
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5151
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDivergingBarChartComponent, never>;
|
|
5152
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDivergingBarChartComponent, "sce-diverging-bar-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "positiveColor": { "alias": "positiveColor"; "required": false; "isSignal": true; }; "negativeColor": { "alias": "negativeColor"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "valueSuffix": { "alias": "valueSuffix"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "inverseAxis": { "alias": "inverseAxis"; "required": false; "isSignal": true; }; "showZeroLine": { "alias": "showZeroLine"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5153
|
+
}
|
|
5154
|
+
|
|
5155
|
+
/** One dumbbell row: a "before" and an "after" value for the same category. */
|
|
5156
|
+
interface DumbbellItem {
|
|
5157
|
+
name: string;
|
|
5158
|
+
before: number;
|
|
5159
|
+
after: number;
|
|
5160
|
+
}
|
|
5161
|
+
/**
|
|
5162
|
+
* Two dots per category — `before` and `after` — joined by a connecting line, so the reader's eye
|
|
5163
|
+
* lands on the GAP rather than on either absolute value. A grouped `sce-bar-chart` (two bars per
|
|
5164
|
+
* category) shows the same two numbers but forces a comparison of bar LENGTHS from a shared zero
|
|
5165
|
+
* baseline; the change itself has to be inferred. A dumbbell draws the change directly as the
|
|
5166
|
+
* length of the connector, which is what to reach for when the delta — not the absolute levels —
|
|
5167
|
+
* is the point (e.g. "how much did this move", not "which one is bigger").
|
|
5168
|
+
*/
|
|
5169
|
+
declare class SceDumbbellChartComponent {
|
|
5170
|
+
private readonly el;
|
|
5171
|
+
/** Manual direction override; null auto-detects from computed style (RTL-first default). */
|
|
5172
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
5173
|
+
private readonly detectedIsRtl;
|
|
5174
|
+
constructor();
|
|
5175
|
+
private readonly computedIsRtl;
|
|
5176
|
+
/** One row per category */
|
|
5177
|
+
readonly data: _angular_core.InputSignal<readonly DumbbellItem[]>;
|
|
5178
|
+
/** Chart height in pixels */
|
|
5179
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5180
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5181
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5182
|
+
/** "Before" dot colour */
|
|
5183
|
+
readonly beforeColor: _angular_core.InputSignal<string>;
|
|
5184
|
+
/** "After" dot colour */
|
|
5185
|
+
readonly afterColor: _angular_core.InputSignal<string>;
|
|
5186
|
+
/** Legend label for the "before" series — pass a translated string, the component does not translate its own legend */
|
|
5187
|
+
readonly beforeLabel: _angular_core.InputSignal<string>;
|
|
5188
|
+
/** Legend label for the "after" series */
|
|
5189
|
+
readonly afterLabel: _angular_core.InputSignal<string>;
|
|
5190
|
+
/** Connecting-line colour — recessive ink, not a series colour, so the dots (which carry the
|
|
5191
|
+
* data) stay the only thing the eye reads as coloured */
|
|
5192
|
+
readonly connectorColor: _angular_core.InputSignal<string>;
|
|
5193
|
+
/** Connecting-line thickness in pixels */
|
|
5194
|
+
readonly connectorWidth: _angular_core.InputSignal<number>;
|
|
5195
|
+
/** Dot diameter in pixels */
|
|
5196
|
+
readonly dotSize: _angular_core.InputSignal<number>;
|
|
5197
|
+
/** Whether to show the dashed value-axis grid lines */
|
|
5198
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
5199
|
+
/** Whether to render the custom legend below the chart */
|
|
5200
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5201
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5202
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5203
|
+
private readonly appMode;
|
|
5204
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5205
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5206
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5207
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5208
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDumbbellChartComponent, never>;
|
|
5209
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDumbbellChartComponent, "sce-dumbbell-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "beforeColor": { "alias": "beforeColor"; "required": false; "isSignal": true; }; "afterColor": { "alias": "afterColor"; "required": false; "isSignal": true; }; "beforeLabel": { "alias": "beforeLabel"; "required": false; "isSignal": true; }; "afterLabel": { "alias": "afterLabel"; "required": false; "isSignal": true; }; "connectorColor": { "alias": "connectorColor"; "required": false; "isSignal": true; }; "connectorWidth": { "alias": "connectorWidth"; "required": false; "isSignal": true; }; "dotSize": { "alias": "dotSize"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5210
|
+
}
|
|
5211
|
+
|
|
5212
|
+
/** One rippling "hot spot": an `[x, y]` position, an optional name, and an optional per-point color override. */
|
|
5213
|
+
interface EffectScatterPoint {
|
|
5214
|
+
name?: string;
|
|
5215
|
+
value: readonly [number, number];
|
|
5216
|
+
color?: string;
|
|
5217
|
+
}
|
|
5218
|
+
/**
|
|
5219
|
+
* ECharts `effectScatter` plot: a set of points that pulse with an animated ripple, used to draw
|
|
5220
|
+
* the eye to a handful of "hot spots" against an optional static `context` backdrop. Unlike
|
|
5221
|
+
* `sce-scatter-chart` — where every point is inert — reach for this chart specifically to call
|
|
5222
|
+
* out outliers or highlights, not to plot a full dense dataset (the ripple animation on 100+
|
|
5223
|
+
* points reads as noise, not emphasis).
|
|
5224
|
+
*/
|
|
5225
|
+
declare class SceEffectScatterChartComponent {
|
|
5226
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5227
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5228
|
+
private readonly appMode;
|
|
5229
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5230
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5231
|
+
/** The rippling hot-spot points */
|
|
5232
|
+
readonly points: _angular_core.InputSignal<readonly EffectScatterPoint[]>;
|
|
5233
|
+
/** Optional static, non-rippling points rendered underneath for spatial context */
|
|
5234
|
+
readonly context: _angular_core.InputSignal<readonly (readonly [number, number])[]>;
|
|
5235
|
+
/** Chart height in pixels */
|
|
5236
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5237
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
5238
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5239
|
+
/** Hot-spot point diameter in pixels */
|
|
5240
|
+
readonly symbolSize: _angular_core.InputSignal<number>;
|
|
5241
|
+
/** Ripple animation scale multiplier applied on top of `symbolSize` */
|
|
5242
|
+
readonly rippleScale: _angular_core.InputSignal<number>;
|
|
5243
|
+
/** Fallback hot-spot color for points that omit their own */
|
|
5244
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
5245
|
+
/** When the ripple animation plays: continuously on render, or only on hover/focus */
|
|
5246
|
+
readonly showEffectOn: _angular_core.InputSignal<"emphasis" | "render">;
|
|
5247
|
+
/** Whether to show axis grid lines */
|
|
5248
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
5249
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5250
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceEffectScatterChartComponent, never>;
|
|
5251
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceEffectScatterChartComponent, "sce-effect-scatter-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "points": { "alias": "points"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "symbolSize": { "alias": "symbolSize"; "required": false; "isSignal": true; }; "rippleScale": { "alias": "rippleScale"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showEffectOn": { "alias": "showEffectOn"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5252
|
+
}
|
|
5253
|
+
|
|
5254
|
+
/** One force-graph node, optionally grouped into a `category` (must match a `ForceGraphCategory.name`). */
|
|
5255
|
+
interface ForceGraphNode {
|
|
5256
|
+
id: string;
|
|
5257
|
+
name: string;
|
|
5258
|
+
category?: string;
|
|
5259
|
+
value?: number;
|
|
5260
|
+
color?: string;
|
|
5261
|
+
}
|
|
5262
|
+
/** One force-graph edge between two node ids. */
|
|
5263
|
+
interface ForceGraphLink {
|
|
5264
|
+
source: string;
|
|
5265
|
+
target: string;
|
|
5266
|
+
value?: number;
|
|
5267
|
+
}
|
|
5268
|
+
/** One legend/colour group referenced by `ForceGraphNode.category`. */
|
|
5269
|
+
interface ForceGraphCategory {
|
|
5270
|
+
name: string;
|
|
5271
|
+
color?: string;
|
|
5272
|
+
}
|
|
5273
|
+
/**
|
|
5274
|
+
* ECharts graph chart pinned to `layout: 'force'`: a physics simulation — repulsion between
|
|
5275
|
+
* every node pair, gravity toward the centre, spring-like edges — spreads nodes apart so
|
|
5276
|
+
* clusters and outliers surface visually. Unlike `sce-network-graph-chart`'s static ring, the
|
|
5277
|
+
* simulation keeps running (and repainting) for as long as the chart stays on screen, which is a
|
|
5278
|
+
* real performance cost, not a cosmetic one: `layoutAnimation` re-renders every simulation tick,
|
|
5279
|
+
* so past a few hundred nodes the chart can visibly drop frames. Reach for this only while the
|
|
5280
|
+
* node count stays small (roughly under 150), or set `layoutAnimation` to `false` to run the
|
|
5281
|
+
* simulation once and freeze the result.
|
|
5282
|
+
*/
|
|
5283
|
+
declare class SceForceGraphChartComponent {
|
|
5284
|
+
/** Graph nodes */
|
|
5285
|
+
readonly nodes: _angular_core.InputSignal<readonly ForceGraphNode[]>;
|
|
5286
|
+
/** Graph edges between node ids */
|
|
5287
|
+
readonly links: _angular_core.InputSignal<readonly ForceGraphLink[]>;
|
|
5288
|
+
/** Colour/legend groups referenced by node `category` */
|
|
5289
|
+
readonly categories: _angular_core.InputSignal<readonly ForceGraphCategory[]>;
|
|
5290
|
+
/** Chart height in pixels */
|
|
5291
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5292
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
5293
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5294
|
+
/** Node marker diameter in pixels */
|
|
5295
|
+
readonly nodeSize: _angular_core.InputSignal<number>;
|
|
5296
|
+
/** Repulsive force between every pair of nodes — higher spreads nodes further apart */
|
|
5297
|
+
readonly repulsion: _angular_core.InputSignal<number>;
|
|
5298
|
+
/** Gravitational pull toward the chart's centre — higher keeps the graph more compact */
|
|
5299
|
+
readonly gravity: _angular_core.InputSignal<number>;
|
|
5300
|
+
/** Target rest length of each edge, in pixels */
|
|
5301
|
+
readonly edgeLength: _angular_core.InputSignal<number>;
|
|
5302
|
+
/**
|
|
5303
|
+
* Whether the simulation keeps animating after its first layout pass. Costly for large graphs
|
|
5304
|
+
* — each tick re-renders every node and edge — set `false` to run the simulation once and
|
|
5305
|
+
* freeze the result in place.
|
|
5306
|
+
*/
|
|
5307
|
+
readonly layoutAnimation: _angular_core.InputSignal<boolean>;
|
|
5308
|
+
/** Whether nodes can be panned, zoomed and dragged */
|
|
5309
|
+
readonly roam: _angular_core.InputSignal<boolean>;
|
|
5310
|
+
/** Whether to show each node's name label */
|
|
5311
|
+
readonly showLabel: _angular_core.InputSignal<boolean>;
|
|
5312
|
+
/** Whether to show the category legend below the chart */
|
|
5313
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5314
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5315
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5316
|
+
private readonly appMode;
|
|
5317
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5318
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5319
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5320
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5321
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceForceGraphChartComponent, never>;
|
|
5322
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceForceGraphChartComponent, "sce-force-graph-chart", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "nodeSize": { "alias": "nodeSize"; "required": false; "isSignal": true; }; "repulsion": { "alias": "repulsion"; "required": false; "isSignal": true; }; "gravity": { "alias": "gravity"; "required": false; "isSignal": true; }; "edgeLength": { "alias": "edgeLength"; "required": false; "isSignal": true; }; "layoutAnimation": { "alias": "layoutAnimation"; "required": false; "isSignal": true; }; "roam": { "alias": "roam"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5323
|
+
}
|
|
5324
|
+
|
|
5325
|
+
/** One task bar spanning `start` to `end` (ISO-8601 date strings) on the shared time axis. */
|
|
5326
|
+
interface GanttTask {
|
|
5327
|
+
name: string;
|
|
5328
|
+
start: string;
|
|
5329
|
+
end: string;
|
|
5330
|
+
category?: string;
|
|
5331
|
+
}
|
|
5332
|
+
/**
|
|
5333
|
+
* Draws one horizontal bar per task from `start` to `end` on a shared time axis — a project
|
|
5334
|
+
* timeline / Gantt chart.
|
|
5335
|
+
*
|
|
5336
|
+
* Backed by ECharts' `custom` series with a `renderItem` callback (the standard way to build a
|
|
5337
|
+
* Gantt chart in ECharts; there is no built-in `gantt` series type). Each task is placed on its
|
|
5338
|
+
* own row of a `category` y-axis and its bar geometry is computed by hand via `api.coord` /
|
|
5339
|
+
* `api.size`, clipped to the plot area with `echarts.graphic.clipRectByRect`.
|
|
5340
|
+
*
|
|
5341
|
+
* RTL: the time (x) axis does NOT mirror on an Arabic page. ECharts' cartesian coordinate system
|
|
5342
|
+
* is not direction-aware — `renderItem` computes pixel coordinates directly from `api.coord`,
|
|
5343
|
+
* which always maps the axis `min` to the chart's physical left edge. Flipping this to a true
|
|
5344
|
+
* right-to-left timeline would require manually inverting the x-axis (`inverse: true`) *and*
|
|
5345
|
+
* mirroring every "start"/"end" pixel calculated inside `renderItem`; neither happens today.
|
|
5346
|
+
*/
|
|
5347
|
+
declare class SceGanttChartComponent {
|
|
5348
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5349
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5350
|
+
private readonly appMode;
|
|
5351
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5352
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5353
|
+
/** Tasks rendered as horizontal bars, one row per task, top-to-bottom in the given order */
|
|
5354
|
+
readonly tasks: _angular_core.InputSignal<readonly GanttTask[]>;
|
|
5355
|
+
/** Chart height in pixels */
|
|
5356
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5357
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5358
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5359
|
+
/** Bar colour per task `category` — falls back to `defaultColor` when unmatched */
|
|
5360
|
+
readonly categoryColors: _angular_core.InputSignal<Record<string, string>>;
|
|
5361
|
+
/** Fallback bar colour for tasks with no matching category colour */
|
|
5362
|
+
readonly defaultColor: _angular_core.InputSignal<string>;
|
|
5363
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5364
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceGanttChartComponent, never>;
|
|
5365
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceGanttChartComponent, "sce-gantt-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "tasks": { "alias": "tasks"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "categoryColors": { "alias": "categoryColors"; "required": false; "isSignal": true; }; "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5366
|
+
}
|
|
5367
|
+
|
|
5368
|
+
/** One cell: `[xIndex, yIndex, value]`, indexing into `xCategories`/`yCategories`. */
|
|
5369
|
+
type HeatmapCell = readonly [number, number, number];
|
|
5370
|
+
/**
|
|
5371
|
+
* ECharts heatmap on a cartesian grid: `xCategories` x `yCategories`, coloured by `data` cell
|
|
5372
|
+
* values through a `colorRange` gradient. For a calendar-shaped year of daily values, use
|
|
5373
|
+
* `sce-calendar-heatmap-chart` instead — it plots on ECharts' calendar coordinate system, not
|
|
5374
|
+
* this cartesian grid, and expects `[dateString, value]` pairs rather than category indices.
|
|
5375
|
+
*/
|
|
5376
|
+
declare class SceHeatmapChartComponent {
|
|
5377
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5378
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5379
|
+
private readonly appMode;
|
|
5380
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5381
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5382
|
+
/** Column labels, indexed by each cell's first coordinate */
|
|
5383
|
+
readonly xCategories: _angular_core.InputSignal<readonly string[]>;
|
|
5384
|
+
/** Row labels, indexed by each cell's second coordinate */
|
|
5385
|
+
readonly yCategories: _angular_core.InputSignal<readonly string[]>;
|
|
5386
|
+
/** Cell values as `[xIndex, yIndex, value]` triples */
|
|
5387
|
+
readonly data: _angular_core.InputSignal<readonly HeatmapCell[]>;
|
|
5388
|
+
/** Chart height in pixels */
|
|
5389
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5390
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5391
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5392
|
+
/** Colour stops for the value gradient, low to high. Painted to canvas, so literal hex/rgb only. */
|
|
5393
|
+
readonly colorRange: _angular_core.InputSignal<readonly string[]>;
|
|
5394
|
+
/** Value mapped to the start of `colorRange` */
|
|
5395
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
5396
|
+
/** Value mapped to the end of `colorRange` */
|
|
5397
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
5398
|
+
/** Shows the built-in visual map gradient legend, draggable to filter the visible range */
|
|
5399
|
+
readonly showVisualMap: _angular_core.InputSignal<boolean>;
|
|
5400
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5401
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceHeatmapChartComponent, never>;
|
|
5402
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceHeatmapChartComponent, "sce-heatmap-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "xCategories": { "alias": "xCategories"; "required": false; "isSignal": true; }; "yCategories": { "alias": "yCategories"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colorRange": { "alias": "colorRange"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showVisualMap": { "alias": "showVisualMap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5403
|
+
}
|
|
5404
|
+
|
|
5405
|
+
/**
|
|
5406
|
+
* ECharts has no built-in "icicle" series — unlike its sibling `sunburst` (a radial partition),
|
|
5407
|
+
* there is no rectangular partition series in the library. Two honest options exist: fake it
|
|
5408
|
+
* with `treemap` (which lays out nested squarified rectangles, NOT stacked depth bands — a
|
|
5409
|
+
* treemap showing every level is visually a treemap, not an icicle), or hand-build the real
|
|
5410
|
+
* partition layout on a `custom` series. This component takes the second path: `buildPartition`
|
|
5411
|
+
* recursively slices each depth's width in proportion to child `value`, one fixed-height row per
|
|
5412
|
+
* depth, and a `renderItem` callback on a `type: 'custom'` series paints each node as a `rect`
|
|
5413
|
+
* graphic from those precomputed fractions. It is a from-scratch rectangular partition (the
|
|
5414
|
+
* classic "icicle" / flame-graph shape), not a treemap in disguise and not a native ECharts series.
|
|
5415
|
+
*/
|
|
5416
|
+
interface IcicleNode {
|
|
5417
|
+
readonly name: string;
|
|
5418
|
+
readonly value?: number;
|
|
5419
|
+
/** Explicit colour for this node; unset descendants inherit their top-level ancestor's colour. */
|
|
5420
|
+
readonly color?: string;
|
|
5421
|
+
readonly children?: readonly IcicleNode[];
|
|
5422
|
+
}
|
|
5423
|
+
/**
|
|
5424
|
+
* Hand-built rectangular partition ("icicle") chart: each depth of the hierarchy is a fixed-height
|
|
5425
|
+
* row, and each node's width is proportional to its `value` within its parent's span. See the
|
|
5426
|
+
* class doc above for why this is a `custom` series rather than a native ECharts series.
|
|
5427
|
+
*/
|
|
5428
|
+
declare class SceIcicleChartComponent {
|
|
5429
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5430
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5431
|
+
private readonly appMode;
|
|
5432
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5433
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5434
|
+
/** Root-level branches of the hierarchy — each becomes its own coloured column. */
|
|
5435
|
+
readonly data: _angular_core.InputSignal<readonly IcicleNode[]>;
|
|
5436
|
+
/** Chart height in pixels */
|
|
5437
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5438
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5439
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5440
|
+
/** Palette cycled across top-level branches that don't set their own `color`. */
|
|
5441
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
5442
|
+
/** Gap in pixels drawn between adjacent rectangles. */
|
|
5443
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
5444
|
+
/** Minimum rectangle width in pixels before its label is hidden. */
|
|
5445
|
+
readonly labelMinWidth: _angular_core.InputSignal<number>;
|
|
5446
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5447
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceIcicleChartComponent, never>;
|
|
5448
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceIcicleChartComponent, "sce-icicle-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "labelMinWidth": { "alias": "labelMinWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5449
|
+
}
|
|
5450
|
+
|
|
5451
|
+
/** One lollipop: a value drawn as a thin stick topped with a circular head. */
|
|
5452
|
+
interface LollipopItem {
|
|
5453
|
+
name: string;
|
|
5454
|
+
value: number;
|
|
5455
|
+
color?: string;
|
|
5456
|
+
}
|
|
5457
|
+
/**
|
|
5458
|
+
* A bar chart's stick, without the bar's visual weight: a hairline (a `bar` series with a tiny
|
|
5459
|
+
* fixed `barWidth`) topped with a `scatter` marker. At low data density this reads cleaner than
|
|
5460
|
+
* `sce-bar-chart` — solid rectangles compete for attention with each other, while a thin stick and
|
|
5461
|
+
* a dot draw the eye straight to the value.
|
|
5462
|
+
*/
|
|
5463
|
+
declare class SceLollipopChartComponent {
|
|
5464
|
+
/** Data items — one stick-and-head per item */
|
|
5465
|
+
readonly data: _angular_core.InputSignal<readonly LollipopItem[]>;
|
|
5466
|
+
/** Chart height in pixels */
|
|
5467
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5468
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5469
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5470
|
+
/** Stick thickness in pixels */
|
|
5471
|
+
readonly stickWidth: _angular_core.InputSignal<number>;
|
|
5472
|
+
/** Head (circle marker) diameter in pixels */
|
|
5473
|
+
readonly headSize: _angular_core.InputSignal<number>;
|
|
5474
|
+
/** Default stick/head colour (used when an item has no `color`) */
|
|
5475
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
5476
|
+
/** Whether to show the dashed value-axis grid lines */
|
|
5477
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
5478
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5479
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5480
|
+
private readonly appMode;
|
|
5481
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5482
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5483
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5484
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceLollipopChartComponent, never>;
|
|
5485
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceLollipopChartComponent, "sce-lollipop-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "stickWidth": { "alias": "stickWidth"; "required": false; "isSignal": true; }; "headSize": { "alias": "headSize"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5486
|
+
}
|
|
5487
|
+
|
|
5488
|
+
/** One network-graph node, optionally grouped into a `category` (must match a `NetworkGraphCategory.name`). */
|
|
5489
|
+
interface NetworkGraphNode {
|
|
5490
|
+
id: string;
|
|
5491
|
+
name: string;
|
|
5492
|
+
category?: string;
|
|
5493
|
+
value?: number;
|
|
5494
|
+
color?: string;
|
|
5495
|
+
}
|
|
5496
|
+
/** One network-graph edge between two node ids. */
|
|
5497
|
+
interface NetworkGraphLink {
|
|
5498
|
+
source: string;
|
|
5499
|
+
target: string;
|
|
5500
|
+
value?: number;
|
|
5501
|
+
}
|
|
5502
|
+
/** One legend/colour group referenced by `NetworkGraphNode.category`. */
|
|
5503
|
+
interface NetworkGraphCategory {
|
|
5504
|
+
name: string;
|
|
5505
|
+
color?: string;
|
|
5506
|
+
}
|
|
5507
|
+
/**
|
|
5508
|
+
* ECharts graph chart pinned to `layout: 'circular'`: every node is placed on a fixed ring, so
|
|
5509
|
+
* the rendering is static and repeatable across renders. Unlike `sce-force-graph-chart`, whose
|
|
5510
|
+
* physics simulation settles into a different arrangement (and keeps animating) every time,
|
|
5511
|
+
* reach for this when the relationships matter more than avoiding edge crossings, or when a
|
|
5512
|
+
* stable, screenshot-safe snapshot is required.
|
|
5513
|
+
*/
|
|
5514
|
+
declare class SceNetworkGraphChartComponent {
|
|
5515
|
+
/** Graph nodes */
|
|
5516
|
+
readonly nodes: _angular_core.InputSignal<readonly NetworkGraphNode[]>;
|
|
5517
|
+
/** Graph edges between node ids */
|
|
5518
|
+
readonly links: _angular_core.InputSignal<readonly NetworkGraphLink[]>;
|
|
5519
|
+
/** Colour/legend groups referenced by node `category` */
|
|
5520
|
+
readonly categories: _angular_core.InputSignal<readonly NetworkGraphCategory[]>;
|
|
5521
|
+
/** Chart height in pixels */
|
|
5522
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5523
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
5524
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5525
|
+
/** Node marker diameter in pixels */
|
|
5526
|
+
readonly nodeSize: _angular_core.InputSignal<number>;
|
|
5527
|
+
/** Whether the chart can be panned and zoomed */
|
|
5528
|
+
readonly roam: _angular_core.InputSignal<boolean>;
|
|
5529
|
+
/** Whether to show each node's name label */
|
|
5530
|
+
readonly showLabel: _angular_core.InputSignal<boolean>;
|
|
5531
|
+
/** Whether to show the category legend below the chart */
|
|
5532
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5533
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5534
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5535
|
+
private readonly appMode;
|
|
5536
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5537
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5538
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5539
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5540
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceNetworkGraphChartComponent, never>;
|
|
5541
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceNetworkGraphChartComponent, "sce-network-graph-chart", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "nodeSize": { "alias": "nodeSize"; "required": false; "isSignal": true; }; "roam": { "alias": "roam"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5542
|
+
}
|
|
5543
|
+
|
|
5544
|
+
/** One trading period's OHLC values, in ECharts' own order: `[open, close, low, high]`. */
|
|
5545
|
+
type OhlcDatum = readonly [number, number, number, number];
|
|
5546
|
+
/**
|
|
5547
|
+
* ECharts candlestick chart with a volume bar series on a second grid below it.
|
|
5548
|
+
*
|
|
5549
|
+
* The two grids are two independent cartesian coordinate systems stacked vertically
|
|
5550
|
+
* (`grid[0]` for price, `grid[1]` for volume) but they render **the same category axis data**
|
|
5551
|
+
* on both `xAxis[0]` and `xAxis[1]`, and `axisPointer.link` synchronises the crosshair across
|
|
5552
|
+
* them — so hovering a candle also highlights that day's volume bar, and vice versa. Reach for
|
|
5553
|
+
* `sce-candlestick-chart` instead when there is no volume series to plot.
|
|
5554
|
+
*/
|
|
5555
|
+
declare class SceOhlcVolumeChartComponent {
|
|
5556
|
+
/** X-axis category labels, shared by both grids (typically dates) */
|
|
5557
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
5558
|
+
/** `[open, close, low, high]` tuples, aligned to `categories` */
|
|
5559
|
+
readonly data: _angular_core.InputSignal<readonly OhlcDatum[]>;
|
|
5560
|
+
/** Traded volume per period, aligned to `categories` */
|
|
5561
|
+
readonly volume: _angular_core.InputSignal<readonly number[]>;
|
|
5562
|
+
/** Candle and volume-bar colour when the period closed at or above its open — rising/falling is
|
|
5563
|
+
* a STATE, not a series identity, so this defaults to the shared "good" status colour */
|
|
5564
|
+
readonly risingColor: _angular_core.InputSignal<string>;
|
|
5565
|
+
/** Candle and volume-bar colour when the period closed below its open — the shared "critical" status colour */
|
|
5566
|
+
readonly fallingColor: _angular_core.InputSignal<string>;
|
|
5567
|
+
/** Combined chart height in pixels, split ~62% price / ~18% volume with a gap between */
|
|
5568
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5569
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5570
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5571
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5572
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5573
|
+
private readonly appMode;
|
|
5574
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5575
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5576
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5577
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOhlcVolumeChartComponent, never>;
|
|
5578
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOhlcVolumeChartComponent, "sce-ohlc-volume-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "volume": { "alias": "volume"; "required": false; "isSignal": true; }; "risingColor": { "alias": "risingColor"; "required": false; "isSignal": true; }; "fallingColor": { "alias": "fallingColor"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5579
|
+
}
|
|
5580
|
+
|
|
5581
|
+
/** One vertical axis in the parallel coordinate system — `dim` is assigned automatically from array order. */
|
|
5582
|
+
interface ParallelAxisDef {
|
|
5583
|
+
name: string;
|
|
5584
|
+
min?: number;
|
|
5585
|
+
max?: number;
|
|
5586
|
+
/** Axis kind — `'category'` requires `data`; defaults to `'value'` */
|
|
5587
|
+
type?: 'value' | 'category' | 'log';
|
|
5588
|
+
/** Category labels, in axis order — required when `type` is `'category'` */
|
|
5589
|
+
data?: readonly string[];
|
|
5590
|
+
}
|
|
5591
|
+
/** One polyline: `values[i]` is plotted against `axes[i]` — arrays must be the same length and in the same order. */
|
|
5592
|
+
interface ParallelRecord {
|
|
5593
|
+
name: string;
|
|
5594
|
+
color?: string;
|
|
5595
|
+
values: readonly number[];
|
|
5596
|
+
}
|
|
5597
|
+
/**
|
|
5598
|
+
* ECharts parallel-coordinates plot: one vertical axis per dimension in `axes`, and one polyline
|
|
5599
|
+
* per `records` entry connecting its value on each axis in turn — built for spotting correlation
|
|
5600
|
+
* and clusters across MANY numeric dimensions at once, which a scatter plot can only show two (or
|
|
5601
|
+
* three) of at a time.
|
|
5602
|
+
*
|
|
5603
|
+
* Dragging along any axis brushes a range on it (ECharts' built-in `parallelAxis` realtime
|
|
5604
|
+
* selection): only polylines passing through the selected range on every brushed axis stay fully
|
|
5605
|
+
* opaque, so readers can filter records by combining constraints across several axes at once —
|
|
5606
|
+
* no extra wiring is required, brushing is native to the `parallel` coordinate system.
|
|
5607
|
+
*/
|
|
5608
|
+
declare class SceParallelCoordinatesChartComponent {
|
|
5609
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5610
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5611
|
+
private readonly appMode;
|
|
5612
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5613
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5614
|
+
/** Dimensions — one vertical axis per entry, in display order left-to-right */
|
|
5615
|
+
readonly axes: _angular_core.InputSignal<readonly ParallelAxisDef[]>;
|
|
5616
|
+
/** Records — one polyline per entry; each `values` array must align with `axes` by index */
|
|
5617
|
+
readonly records: _angular_core.InputSignal<readonly ParallelRecord[]>;
|
|
5618
|
+
/** Chart height in pixels */
|
|
5619
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5620
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5621
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5622
|
+
/** Polyline stroke width in pixels */
|
|
5623
|
+
readonly lineWidth: _angular_core.InputSignal<number>;
|
|
5624
|
+
/** Whether to draw curved polylines instead of straight segments between axes */
|
|
5625
|
+
readonly smooth: _angular_core.InputSignal<boolean>;
|
|
5626
|
+
/** Whether to show the legend below the chart */
|
|
5627
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5628
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5629
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5630
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceParallelCoordinatesChartComponent, never>;
|
|
5631
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceParallelCoordinatesChartComponent, "sce-parallel-coordinates-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "axes": { "alias": "axes"; "required": false; "isSignal": true; }; "records": { "alias": "records"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "lineWidth": { "alias": "lineWidth"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5632
|
+
}
|
|
5633
|
+
|
|
5634
|
+
/** One bar's value and its running cumulative percentage after sorting, as produced by `computeParetoData`. */
|
|
5635
|
+
interface ParetoDatum {
|
|
5636
|
+
readonly category: string;
|
|
5637
|
+
readonly value: number;
|
|
5638
|
+
readonly cumulativePercent: number;
|
|
5639
|
+
}
|
|
5640
|
+
/**
|
|
5641
|
+
* ECharts Pareto chart: bars sorted descending by value, with a cumulative percentage line on a
|
|
5642
|
+
* second, independent 0–100% axis — the classic 80/20 chart, used to show which few categories
|
|
5643
|
+
* account for most of the total.
|
|
5644
|
+
*
|
|
5645
|
+
* Note the axis sides are the reverse of the usual Pareto convention: `yAxis[0]` (the bars) is
|
|
5646
|
+
* `position: 'right'` and `yAxis[1]` (the 0–100% line) is `position: 'left'`. The doc comment here
|
|
5647
|
+
* used to claim the conventional layout, which the code has never done. Swapping them is a visual
|
|
5648
|
+
* change to a shipped component, so this describes what it actually renders rather than what it
|
|
5649
|
+
* ought to; if the convention matters, swap the two `position` values, not this comment.
|
|
5650
|
+
*
|
|
5651
|
+
* `categories` + `values` are reordered and reduced to per-bar cumulative percentages by the
|
|
5652
|
+
* exported `computeParetoData` helper. A dashed `thresholdPercent` marker (80 by default) makes
|
|
5653
|
+
* the "vital few" cut-off visible on the percentage axis.
|
|
5654
|
+
*/
|
|
5655
|
+
declare class SceParetoChartComponent {
|
|
5656
|
+
/** Category labels, aligned to `values` */
|
|
5657
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
5658
|
+
/** One value per category, aligned to `categories` */
|
|
5659
|
+
readonly values: _angular_core.InputSignal<readonly number[]>;
|
|
5660
|
+
/** Bar fill colour */
|
|
5661
|
+
readonly barColor: _angular_core.InputSignal<string>;
|
|
5662
|
+
/** Cumulative-percentage line colour */
|
|
5663
|
+
readonly lineColor: _angular_core.InputSignal<string>;
|
|
5664
|
+
/** Cumulative-percentage threshold marked with a dashed line; `null` hides the marker */
|
|
5665
|
+
readonly thresholdPercent: _angular_core.InputSignal<number | null>;
|
|
5666
|
+
/** Legend/tooltip label for the bar series — pass a translated string, the component renders it as-is */
|
|
5667
|
+
readonly valueLabel: _angular_core.InputSignal<string>;
|
|
5668
|
+
/** Legend/tooltip label for the cumulative-percentage line series — pass a translated string */
|
|
5669
|
+
readonly cumulativeLabel: _angular_core.InputSignal<string>;
|
|
5670
|
+
/** Chart height in pixels */
|
|
5671
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5672
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5673
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5674
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5675
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5676
|
+
private readonly appMode;
|
|
5677
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5678
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5679
|
+
private readonly paretoData;
|
|
5680
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5681
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceParetoChartComponent, never>;
|
|
5682
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceParetoChartComponent, "sce-pareto-chart", never, { "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "barColor": { "alias": "barColor"; "required": false; "isSignal": true; }; "lineColor": { "alias": "lineColor"; "required": false; "isSignal": true; }; "thresholdPercent": { "alias": "thresholdPercent"; "required": false; "isSignal": true; }; "valueLabel": { "alias": "valueLabel"; "required": false; "isSignal": true; }; "cumulativeLabel": { "alias": "cumulativeLabel"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5683
|
+
}
|
|
5684
|
+
|
|
5685
|
+
/** One pictorial bar: a value drawn as a column of repeated symbols instead of a solid rectangle. */
|
|
5686
|
+
interface PictorialBarItem {
|
|
5687
|
+
name: string;
|
|
5688
|
+
value: number;
|
|
5689
|
+
color?: string;
|
|
5690
|
+
}
|
|
5691
|
+
/**
|
|
5692
|
+
* ECharts `pictorialBar` series: each value is drawn as a repeated symbol (a block, a person
|
|
5693
|
+
* silhouette via a custom SVG path, etc.) instead of a solid rectangle, so the reader can literally
|
|
5694
|
+
* count units. Reach for `sce-bar-chart` when the exact value matters more than the unit count —
|
|
5695
|
+
* pictographs are read approximately, by counting whole and partial icons.
|
|
5696
|
+
*/
|
|
5697
|
+
declare class ScePictorialBarChartComponent {
|
|
5698
|
+
/** Data items — one repeated-symbol column per item */
|
|
5699
|
+
readonly data: _angular_core.InputSignal<readonly PictorialBarItem[]>;
|
|
5700
|
+
/** Chart height in pixels */
|
|
5701
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5702
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5703
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5704
|
+
/** Symbol shape: an ECharts built-in name (`'circle'`, `'rect'`, `'roundRect'`, `'triangle'`,
|
|
5705
|
+
* `'diamond'`, `'pin'`, `'arrow'`) or a custom shape via `'path://…'` / `'image://…'`. */
|
|
5706
|
+
readonly symbol: _angular_core.InputSignal<string>;
|
|
5707
|
+
/** How the symbol repeats to fill the bar: `true` auto-repeats to fit, a number fixes the
|
|
5708
|
+
* repeat count, `false` stretches a single symbol like a normal bar. */
|
|
5709
|
+
readonly symbolRepeat: _angular_core.InputSignal<number | boolean>;
|
|
5710
|
+
/** Symbol size in pixels, as `[width, height]` */
|
|
5711
|
+
readonly symbolSize: _angular_core.InputSignal<[number, number]>;
|
|
5712
|
+
/** Gap between repeated symbols — a pixel number or an ECharts percentage string */
|
|
5713
|
+
readonly symbolMargin: _angular_core.InputSignal<string | number>;
|
|
5714
|
+
/** When true, the last (partial) symbol is clipped to represent a fractional unit instead of
|
|
5715
|
+
* being rounded up to a whole icon. */
|
|
5716
|
+
readonly symbolClip: _angular_core.InputSignal<boolean>;
|
|
5717
|
+
/** Default symbol colour (used when an item has no `color`) */
|
|
5718
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
5719
|
+
/** Whether to show the dashed value-axis grid lines */
|
|
5720
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
5721
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5722
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5723
|
+
private readonly appMode;
|
|
5724
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5725
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5726
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5727
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScePictorialBarChartComponent, never>;
|
|
5728
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePictorialBarChartComponent, "sce-pictorial-bar-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "symbol": { "alias": "symbol"; "required": false; "isSignal": true; }; "symbolRepeat": { "alias": "symbolRepeat"; "required": false; "isSignal": true; }; "symbolSize": { "alias": "symbolSize"; "required": false; "isSignal": true; }; "symbolMargin": { "alias": "symbolMargin"; "required": false; "isSignal": true; }; "symbolClip": { "alias": "symbolClip"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5729
|
+
}
|
|
5730
|
+
|
|
5731
|
+
/** One age band: left-series and right-series counts, both given as ordinary POSITIVE numbers. */
|
|
5732
|
+
interface PopulationPyramidBand {
|
|
5733
|
+
ageBand: string;
|
|
5734
|
+
left: number;
|
|
5735
|
+
right: number;
|
|
5736
|
+
}
|
|
5737
|
+
/**
|
|
5738
|
+
* ECharts back-to-back population pyramid: two horizontal bar series sharing one zero-centred value
|
|
5739
|
+
* axis and one category axis (age bands, or any other paired breakdown). The LEFT series is plotted
|
|
5740
|
+
* as negative numbers under the hood — that is what pushes it to the opposite side of the shared
|
|
5741
|
+
* axis from the right series — but `formatPyramidMagnitude` strips the sign back off everywhere a
|
|
5742
|
+
* human reads a number (axis ticks, tooltip), so nobody sees a population figure reported as "-45".
|
|
5743
|
+
*/
|
|
5744
|
+
declare class ScePopulationPyramidChartComponent {
|
|
5745
|
+
private readonly el;
|
|
5746
|
+
/** Manual direction override for the category axis side; null auto-detects from computed style (RTL-first default). */
|
|
5747
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
5748
|
+
private readonly detectedIsRtl;
|
|
5749
|
+
constructor();
|
|
5750
|
+
private readonly computedIsRtl;
|
|
5751
|
+
/** Age-band rows — `left`/`right` are given as ordinary positive counts */
|
|
5752
|
+
readonly data: _angular_core.InputSignal<readonly PopulationPyramidBand[]>;
|
|
5753
|
+
/** Chart height in pixels */
|
|
5754
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5755
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5756
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5757
|
+
/** Bar colour for the left series — the two sides are two categories, not a polarity */
|
|
5758
|
+
readonly leftColor: _angular_core.InputSignal<string>;
|
|
5759
|
+
/** Bar colour for the right series */
|
|
5760
|
+
readonly rightColor: _angular_core.InputSignal<string>;
|
|
5761
|
+
/** Legend / tooltip caption for the left series */
|
|
5762
|
+
readonly leftLabel: _angular_core.InputSignal<string>;
|
|
5763
|
+
/** Legend / tooltip caption for the right series */
|
|
5764
|
+
readonly rightLabel: _angular_core.InputSignal<string>;
|
|
5765
|
+
/** Suffix appended to every displayed value (e.g. ' people') */
|
|
5766
|
+
readonly valueSuffix: _angular_core.InputSignal<string>;
|
|
5767
|
+
/** Bar thickness in pixels */
|
|
5768
|
+
readonly barHeight: _angular_core.InputSignal<string | number>;
|
|
5769
|
+
/** Whether to render the left/right legend */
|
|
5770
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5771
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5772
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5773
|
+
private readonly appMode;
|
|
5774
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5775
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5776
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5777
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5778
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScePopulationPyramidChartComponent, never>;
|
|
5779
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePopulationPyramidChartComponent, "sce-population-pyramid-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "leftColor": { "alias": "leftColor"; "required": false; "isSignal": true; }; "rightColor": { "alias": "rightColor"; "required": false; "isSignal": true; }; "leftLabel": { "alias": "leftLabel"; "required": false; "isSignal": true; }; "rightLabel": { "alias": "rightLabel"; "required": false; "isSignal": true; }; "valueSuffix": { "alias": "valueSuffix"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5780
|
+
}
|
|
5781
|
+
|
|
5782
|
+
/** One cell: `[xIndex, yIndex, value]`, indexing into `xCategories`/`yCategories`. */
|
|
5783
|
+
type PunchCardCell = readonly [number, number, number];
|
|
5784
|
+
/**
|
|
5785
|
+
* Classic day-of-week x hour-of-day activity chart: a scatter series on a category x category
|
|
5786
|
+
* grid where each cell's VALUE drives its dot's `symbolSize`, not its colour. This is
|
|
5787
|
+
* deliberately not a heatmap — `sce-heatmap-chart` communicates value through colour intensity
|
|
5788
|
+
* on filled cells, which reads well for a handful of rows/columns but turns into visual noise
|
|
5789
|
+
* across 24 hourly columns; the punch card's varying dot sizes stay legible at that density.
|
|
5790
|
+
* Reach for `sce-heatmap-chart` when the grid is small enough that colour alone is clear, or
|
|
5791
|
+
* when the built-in visual-map legend/filtering is needed.
|
|
5792
|
+
*/
|
|
5793
|
+
declare class ScePunchCardChartComponent {
|
|
5794
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5795
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5796
|
+
private readonly appMode;
|
|
5797
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5798
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5799
|
+
/** Column labels, indexed by each cell's first coordinate — typically hours of day */
|
|
5800
|
+
readonly xCategories: _angular_core.InputSignal<readonly string[]>;
|
|
5801
|
+
/** Row labels, indexed by each cell's second coordinate — typically days of the week */
|
|
5802
|
+
readonly yCategories: _angular_core.InputSignal<readonly string[]>;
|
|
5803
|
+
/** Cell values as `[xIndex, yIndex, value]` triples; `value` drives dot size */
|
|
5804
|
+
readonly data: _angular_core.InputSignal<readonly PunchCardCell[]>;
|
|
5805
|
+
/** Chart height in pixels */
|
|
5806
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5807
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5808
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5809
|
+
/** Dot colour. Painted to canvas, so it must be a literal hex/rgb value. */
|
|
5810
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
5811
|
+
/** Dot diameter in pixels for the lowest value in `data` */
|
|
5812
|
+
readonly minSymbolSize: _angular_core.InputSignal<number>;
|
|
5813
|
+
/** Dot diameter in pixels for the highest value in `data` */
|
|
5814
|
+
readonly maxSymbolSize: _angular_core.InputSignal<number>;
|
|
5815
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5816
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScePunchCardChartComponent, never>;
|
|
5817
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePunchCardChartComponent, "sce-punch-card-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "xCategories": { "alias": "xCategories"; "required": false; "isSignal": true; }; "yCategories": { "alias": "yCategories"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "minSymbolSize": { "alias": "minSymbolSize"; "required": false; "isSignal": true; }; "maxSymbolSize": { "alias": "maxSymbolSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5818
|
+
}
|
|
5819
|
+
|
|
5820
|
+
/** One level of a hierarchy/population pyramid, top (smallest, e.g. leadership) to bottom (largest, e.g. entry level). */
|
|
5821
|
+
interface PyramidLevel {
|
|
5822
|
+
name: string;
|
|
5823
|
+
value: number;
|
|
5824
|
+
color?: string;
|
|
5825
|
+
}
|
|
5826
|
+
/**
|
|
5827
|
+
* Population/hierarchy pyramid: the same ECharts `funnel` series as `sce-funnel-chart`, but with
|
|
5828
|
+
* `sort: 'ascending'` so it WIDENS downward instead of narrowing. Where the funnel reads as a
|
|
5829
|
+
* conversion path (100% at the top, shrinking to whoever converted), the pyramid reads as a
|
|
5830
|
+
* structure (few at the top, many at the base) — there is no "conversion rate" between levels,
|
|
5831
|
+
* so labels show the raw value rather than a stage-to-stage percentage.
|
|
5832
|
+
* Pick this over `sce-funnel-chart` whenever the data is a headcount/hierarchy breakdown rather
|
|
5833
|
+
* than a sequential drop-off.
|
|
5834
|
+
*/
|
|
5835
|
+
declare class ScePyramidChartComponent {
|
|
5836
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5837
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5838
|
+
private readonly appMode;
|
|
5839
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5840
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5841
|
+
/** Ordered pyramid levels, smallest first (top) widening to the largest (bottom, the base) */
|
|
5842
|
+
readonly levels: _angular_core.InputSignal<readonly PyramidLevel[]>;
|
|
5843
|
+
/** Chart height in pixels */
|
|
5844
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5845
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5846
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5847
|
+
/**
|
|
5848
|
+
* Fallback level colour used when a level has no `color` of its own — `null` (the default) uses
|
|
5849
|
+
* the theme's single-hue `CHART_SEQUENTIAL` progression, one tone per level, since the levels
|
|
5850
|
+
* are ordered steps of one hierarchy rather than unrelated categories.
|
|
5851
|
+
*/
|
|
5852
|
+
readonly color: _angular_core.InputSignal<string | null>;
|
|
5853
|
+
/** Gap in pixels between adjacent pyramid segments */
|
|
5854
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
5855
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5856
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScePyramidChartComponent, never>;
|
|
5857
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScePyramidChartComponent, "sce-pyramid-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "levels": { "alias": "levels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5858
|
+
}
|
|
5859
|
+
|
|
5860
|
+
/** One quadrant-chart series: a name plus a list of `[x, y]` numeric points. */
|
|
5861
|
+
interface QuadrantSeriesData {
|
|
5862
|
+
name: string;
|
|
5863
|
+
data: readonly (readonly [number, number])[];
|
|
5864
|
+
color?: string;
|
|
5865
|
+
}
|
|
5866
|
+
/**
|
|
5867
|
+
* ECharts scatter plot split into four labelled quadrants by an `xThreshold`/`yThreshold`
|
|
5868
|
+
* crosshair (`markLine` + `markArea`) — e.g. an effort/impact or risk/value matrix. Unlike
|
|
5869
|
+
* `sce-scatter-chart` — which is a neutral x/y plot — reach for this chart when the four regions
|
|
5870
|
+
* of the plane themselves carry meaning that needs a caption, not just the raw points.
|
|
5871
|
+
*
|
|
5872
|
+
* ## RTL: the plot is NOT mirrored, and the caption names are not a trap
|
|
5873
|
+
*
|
|
5874
|
+
* `isRtl` here does exactly one thing: it moves the **y-axis gutter** (its line, ticks and labels)
|
|
5875
|
+
* to the right-hand side, so it does not sit in the middle of an Arabic reading flow. It does not
|
|
5876
|
+
* touch the data plane. Neither axis is ever `inverse`d, so **x always increases towards the
|
|
5877
|
+
* physical right and y towards the physical top, in Arabic exactly as in English**.
|
|
5878
|
+
*
|
|
5879
|
+
* That is why the four physically-named caption inputs need no RTL remap: for every one of them
|
|
5880
|
+
* the screen corner and the coordinate region are the *same* region in both directions.
|
|
5881
|
+
* `topRightLabel` is simultaneously "the top-right corner" and "x > xThreshold ∧ y > yThreshold".
|
|
5882
|
+
* Swapping them under RTL would be the bug — it would paint the high-x caption over the low-x half.
|
|
5883
|
+
*
|
|
5884
|
+
* ⚠️ The one way to break this is to make the plane direction-dependent. If anyone ever adds
|
|
5885
|
+
* `inverse: isRtl` to `xAxis` (as `sce-dumbbell-chart` and `sce-bullet-chart` legitimately do for
|
|
5886
|
+
* their category axes), the coordinates keep the captions correct but the *names* start lying —
|
|
5887
|
+
* `topRightLabel` would then print in the physically top-*left* corner. Do not invert an axis of
|
|
5888
|
+
* this chart without renaming these four inputs to logical names in the same change.
|
|
5889
|
+
*/
|
|
5890
|
+
declare class SceQuadrantChartComponent {
|
|
5891
|
+
private readonly el;
|
|
5892
|
+
/**
|
|
5893
|
+
* Manual direction override; null auto-detects from computed style (RTL-first default).
|
|
5894
|
+
* Moves the y-axis gutter to the right — it does NOT mirror the plot. See the class doc.
|
|
5895
|
+
*/
|
|
5896
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
5897
|
+
private readonly detectedIsRtl;
|
|
5898
|
+
constructor();
|
|
5899
|
+
private readonly computedIsRtl;
|
|
5900
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5901
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5902
|
+
private readonly appMode;
|
|
5903
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5904
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5905
|
+
/** One or more x/y series to plot */
|
|
5906
|
+
readonly series: _angular_core.InputSignal<readonly QuadrantSeriesData[]>;
|
|
5907
|
+
/** Chart height in pixels */
|
|
5908
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
5909
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
5910
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5911
|
+
/** Point diameter in pixels, applied to every series */
|
|
5912
|
+
readonly symbolSize: _angular_core.InputSignal<number>;
|
|
5913
|
+
/** X value the vertical divider line is drawn at */
|
|
5914
|
+
readonly xThreshold: _angular_core.InputSignal<number>;
|
|
5915
|
+
/** Y value the horizontal divider line is drawn at */
|
|
5916
|
+
readonly yThreshold: _angular_core.InputSignal<number>;
|
|
5917
|
+
/**
|
|
5918
|
+
* Label for the quadrant where x > xThreshold and y > yThreshold — pass a translated string,
|
|
5919
|
+
* never hardcode it. The plane is never mirrored, so this is the physically top-right corner
|
|
5920
|
+
* in Arabic too; do not remap the four captions under RTL.
|
|
5921
|
+
*/
|
|
5922
|
+
readonly topRightLabel: _angular_core.InputSignal<string>;
|
|
5923
|
+
/** Label for the quadrant where x < xThreshold and y > yThreshold — pass a translated string, never hardcode it */
|
|
5924
|
+
readonly topLeftLabel: _angular_core.InputSignal<string>;
|
|
5925
|
+
/** Label for the quadrant where x < xThreshold and y < yThreshold — pass a translated string, never hardcode it */
|
|
5926
|
+
readonly bottomLeftLabel: _angular_core.InputSignal<string>;
|
|
5927
|
+
/** Label for the quadrant where x > xThreshold and y < yThreshold — pass a translated string, never hardcode it */
|
|
5928
|
+
readonly bottomRightLabel: _angular_core.InputSignal<string>;
|
|
5929
|
+
/** Whether to show the custom legend below the chart */
|
|
5930
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5931
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5932
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5933
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceQuadrantChartComponent, never>;
|
|
5934
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceQuadrantChartComponent, "sce-quadrant-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "symbolSize": { "alias": "symbolSize"; "required": false; "isSignal": true; }; "xThreshold": { "alias": "xThreshold"; "required": false; "isSignal": true; }; "yThreshold": { "alias": "yThreshold"; "required": false; "isSignal": true; }; "topRightLabel": { "alias": "topRightLabel"; "required": false; "isSignal": true; }; "topLeftLabel": { "alias": "topLeftLabel"; "required": false; "isSignal": true; }; "bottomLeftLabel": { "alias": "bottomLeftLabel"; "required": false; "isSignal": true; }; "bottomRightLabel": { "alias": "bottomRightLabel"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5935
|
+
}
|
|
5936
|
+
|
|
5937
|
+
/** One spoke of the radar: its label and the value that maps to the outer edge. */
|
|
5938
|
+
interface RadarIndicator {
|
|
5939
|
+
name: string;
|
|
5940
|
+
max: number;
|
|
5941
|
+
min?: number;
|
|
5942
|
+
}
|
|
5943
|
+
/** One radar series: values aligned to `indicators`, in the same order. */
|
|
5944
|
+
interface RadarSeriesData {
|
|
5945
|
+
name: string;
|
|
5946
|
+
data: readonly number[];
|
|
5947
|
+
color?: string;
|
|
5948
|
+
}
|
|
5949
|
+
/**
|
|
5950
|
+
* ECharts radar chart: one axis per `RadarIndicator`, plotting one or more `RadarSeriesData`
|
|
5951
|
+
* series across them with an optional area fill. For a two-entity "this vs. benchmark"
|
|
5952
|
+
* comparison, prefer `sce-radar-comparison-chart` — it fixes the palette and legend for that
|
|
5953
|
+
* exact case instead of leaving them generic.
|
|
5954
|
+
*/
|
|
5955
|
+
declare class SceRadarChartComponent {
|
|
5956
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
5957
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
5958
|
+
private readonly appMode;
|
|
5959
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
5960
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
5961
|
+
/** Axis definitions — name and max value for each spoke, in the order series data is read. */
|
|
5962
|
+
readonly indicators: _angular_core.InputSignal<readonly RadarIndicator[]>;
|
|
5963
|
+
/** One or more series plotted across the indicator axes. */
|
|
5964
|
+
readonly series: _angular_core.InputSignal<readonly RadarSeriesData[]>;
|
|
5965
|
+
/** Chart height in pixels */
|
|
5966
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
5967
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
5968
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
5969
|
+
/** Fills the area under each series' polygon at low opacity */
|
|
5970
|
+
readonly showArea: _angular_core.InputSignal<boolean>;
|
|
5971
|
+
/** Radar outline: sharp-cornered polygon following the indicator count, or a smooth circle */
|
|
5972
|
+
readonly shape: _angular_core.InputSignal<"circle" | "polygon">;
|
|
5973
|
+
/** Number of split rings drawn between the centre and each indicator's max value */
|
|
5974
|
+
readonly splitNumber: _angular_core.InputSignal<number>;
|
|
5975
|
+
/** Shows the standalone legend below the chart when more than one series is plotted */
|
|
5976
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
5977
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
5978
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
5979
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRadarChartComponent, never>;
|
|
5980
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRadarChartComponent, "sce-radar-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "indicators": { "alias": "indicators"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "splitNumber": { "alias": "splitNumber"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5981
|
+
}
|
|
5982
|
+
|
|
5983
|
+
/** One side of a two-entity radar comparison — e.g. "this office" or "sector average". */
|
|
5984
|
+
interface RadarComparisonEntity {
|
|
5985
|
+
name: string;
|
|
5986
|
+
data: readonly number[];
|
|
5987
|
+
color?: string;
|
|
5988
|
+
}
|
|
5989
|
+
/**
|
|
5990
|
+
* Radar chart tuned for comparing exactly two entities across the same indicator set — a
|
|
5991
|
+
* subject against a benchmark (this office vs. sector average, this period vs. last period).
|
|
5992
|
+
* Unlike `sce-radar-chart`, which accepts an arbitrary number of series with a generic
|
|
5993
|
+
* palette, this component always plots two series in fixed subject/benchmark colours, always
|
|
5994
|
+
* shows the legend (a two-series radar is unreadable without it), and fills both areas at a
|
|
5995
|
+
* low opacity so the overlap stays legible. Reach for `sce-radar-chart` instead once a third
|
|
5996
|
+
* series is needed, or when the built-in legend and colour defaults don't fit the case.
|
|
5997
|
+
*/
|
|
5998
|
+
declare class SceRadarComparisonChartComponent {
|
|
5999
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6000
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6001
|
+
private readonly appMode;
|
|
6002
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6003
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6004
|
+
/** Axis definitions — name and max value for each spoke, in the order entity data is read. */
|
|
6005
|
+
readonly indicators: _angular_core.InputSignal<readonly RadarIndicator[]>;
|
|
6006
|
+
/** The two entities being compared. Only the first two entries are plotted. */
|
|
6007
|
+
readonly entities: _angular_core.InputSignal<readonly RadarComparisonEntity[]>;
|
|
6008
|
+
/** Colour for the first entity when it does not specify its own `color` */
|
|
6009
|
+
readonly primaryColor: _angular_core.InputSignal<string>;
|
|
6010
|
+
/** Colour for the second entity when it does not specify its own `color` */
|
|
6011
|
+
readonly secondaryColor: _angular_core.InputSignal<string>;
|
|
6012
|
+
/** Chart height in pixels */
|
|
6013
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
6014
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6015
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6016
|
+
/** Opacity of both filled areas — kept low by default so the overlap between them stays visible */
|
|
6017
|
+
readonly areaOpacity: _angular_core.InputSignal<number>;
|
|
6018
|
+
/** Radar outline: sharp-cornered polygon following the indicator count, or a smooth circle */
|
|
6019
|
+
readonly shape: _angular_core.InputSignal<"circle" | "polygon">;
|
|
6020
|
+
/** Number of split rings drawn between the centre and each indicator's max value */
|
|
6021
|
+
readonly splitNumber: _angular_core.InputSignal<number>;
|
|
6022
|
+
private readonly resolvedEntities;
|
|
6023
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6024
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6025
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRadarComparisonChartComponent, never>;
|
|
6026
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRadarComparisonChartComponent, "sce-radar-comparison-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "indicators": { "alias": "indicators"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "primaryColor": { "alias": "primaryColor"; "required": false; "isSignal": true; }; "secondaryColor": { "alias": "secondaryColor"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "areaOpacity": { "alias": "areaOpacity"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "splitNumber": { "alias": "splitNumber"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6027
|
+
}
|
|
6028
|
+
|
|
6029
|
+
/** One progress track: `value` against `max` (falling back to the chart's global `max`) sets how far its ring fills. */
|
|
6030
|
+
interface RadialBarSeriesItem {
|
|
6031
|
+
name: string;
|
|
6032
|
+
value: number;
|
|
6033
|
+
/** Overrides the chart-level `max` for this track only */
|
|
6034
|
+
max?: number;
|
|
6035
|
+
color?: string;
|
|
6036
|
+
}
|
|
6037
|
+
/**
|
|
6038
|
+
* Multi-track ring gauge: polar bars used as concentric PROGRESS rings, one ring per category,
|
|
6039
|
+
* each filling to its `value / max` percentage — a `radiusAxis` of `type: 'category'` slices the
|
|
6040
|
+
* `[innerRadius, outerRadius]` band into one ring per data item, and a value-type `angleAxis`
|
|
6041
|
+
* (0–100) turns each bar's length into a percentage sweep.
|
|
6042
|
+
*
|
|
6043
|
+
* Distinct from `sce-ring-chart`: that component draws ONE ring broken into slices whose angles
|
|
6044
|
+
* sum to a whole (parts of a total, like a donut). This component draws SEVERAL independent
|
|
6045
|
+
* rings, each measuring its own category's progress against its own target — reach for this one
|
|
6046
|
+
* when comparing several percentages side by side, and for `sce-ring-chart` when showing how one
|
|
6047
|
+
* total splits into parts.
|
|
6048
|
+
*/
|
|
6049
|
+
declare class SceRadialBarChartComponent {
|
|
6050
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6051
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6052
|
+
private readonly appMode;
|
|
6053
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6054
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6055
|
+
/** Data items — one progress ring per item, innermost-to-outermost in array order */
|
|
6056
|
+
readonly data: _angular_core.InputSignal<readonly RadialBarSeriesItem[]>;
|
|
6057
|
+
/** Default maximum value (100%) for items that do not set their own `max` */
|
|
6058
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
6059
|
+
/** Chart height in pixels */
|
|
6060
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6061
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6062
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6063
|
+
/** Inner radius of the innermost ring */
|
|
6064
|
+
readonly innerRadius: _angular_core.InputSignal<string>;
|
|
6065
|
+
/** Outer radius of the outermost ring */
|
|
6066
|
+
readonly outerRadius: _angular_core.InputSignal<string>;
|
|
6067
|
+
/** Whether rings end in a rounded cap instead of a flat edge */
|
|
6068
|
+
readonly roundCap: _angular_core.InputSignal<boolean>;
|
|
6069
|
+
/** Background colour of the unfilled portion of each ring */
|
|
6070
|
+
readonly trackColor: _angular_core.InputSignal<string>;
|
|
6071
|
+
/** Angle, in degrees, at which every ring starts filling from */
|
|
6072
|
+
readonly startAngle: _angular_core.InputSignal<number>;
|
|
6073
|
+
/** Whether to show the legend below the chart */
|
|
6074
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6075
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6076
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6077
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRadialBarChartComponent, never>;
|
|
6078
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRadialBarChartComponent, "sce-radial-bar-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; "outerRadius": { "alias": "outerRadius"; "required": false; "isSignal": true; }; "roundCap": { "alias": "roundCap"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "startAngle": { "alias": "startAngle"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6079
|
+
}
|
|
6080
|
+
|
|
6081
|
+
/**
|
|
6082
|
+
* ECharts confidence/min-max band with a central line drawn through it.
|
|
6083
|
+
*
|
|
6084
|
+
* ECharts has no native "band" series, so this is built with the classic trick: an invisible
|
|
6085
|
+
* line series plots the **lower** bound and is stacked with a second, visible line series that
|
|
6086
|
+
* plots only the **difference** (`upper - lower`). Because the second series is stacked on top
|
|
6087
|
+
* of the first, its visible area floats between the two bounds instead of starting from zero —
|
|
6088
|
+
* from the axis's point of view it never sees the real upper values, only the gap. A third,
|
|
6089
|
+
* unstacked line series draws `mid` (or the lower/upper midpoint when `mid` is omitted) through
|
|
6090
|
+
* the middle of the band. The tooltip is a custom formatter that reads the original `lower()` /
|
|
6091
|
+
* `upper()` / resolved `mid` arrays directly by category index, rather than the stacked series
|
|
6092
|
+
* values ECharts would otherwise report — those are an implementation detail, not real data.
|
|
6093
|
+
*
|
|
6094
|
+
* Distinct from `sce-area-chart` (a single trend line with a gradient fill and one highlighted
|
|
6095
|
+
* point) and `sce-stacked-area-chart` (parts of a whole that sum to a total): this chart plots
|
|
6096
|
+
* uncertainty around a single quantity — a forecast range, a confidence interval, a min/max
|
|
6097
|
+
* envelope — not a second data series or a composition.
|
|
6098
|
+
*/
|
|
6099
|
+
declare class SceRangeAreaChartComponent {
|
|
6100
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6101
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6102
|
+
private readonly appMode;
|
|
6103
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6104
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6105
|
+
/** X-axis category labels */
|
|
6106
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
6107
|
+
/** Lower bound of the band, one value per category */
|
|
6108
|
+
readonly lower: _angular_core.InputSignal<readonly number[]>;
|
|
6109
|
+
/** Upper bound of the band, one value per category */
|
|
6110
|
+
readonly upper: _angular_core.InputSignal<readonly number[]>;
|
|
6111
|
+
/** Central line values, one per category. Defaults to the lower/upper midpoint when omitted. */
|
|
6112
|
+
readonly mid: _angular_core.InputSignal<readonly number[] | null>;
|
|
6113
|
+
/** Chart height in pixels */
|
|
6114
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6115
|
+
/** Chart width in pixels */
|
|
6116
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6117
|
+
/** Fill colour of the band (literal hex — painted to canvas). The band is subordinate to the
|
|
6118
|
+
* central line, so it defaults to the SAME hue as `lineColor`, just carried at low opacity. */
|
|
6119
|
+
readonly bandColor: _angular_core.InputSignal<string>;
|
|
6120
|
+
/** Stroke colour of the central line (literal hex — painted to canvas) */
|
|
6121
|
+
readonly lineColor: _angular_core.InputSignal<string>;
|
|
6122
|
+
/** Tooltip label for the central line — falls back to a translated key at the call site */
|
|
6123
|
+
readonly midLabel: _angular_core.InputSignal<string>;
|
|
6124
|
+
/** Tooltip label for the band — falls back to a translated key at the call site */
|
|
6125
|
+
readonly rangeLabel: _angular_core.InputSignal<string>;
|
|
6126
|
+
/** Whether to show X-axis labels */
|
|
6127
|
+
readonly showXAxisLabels: _angular_core.InputSignal<boolean>;
|
|
6128
|
+
/** Whether to show grid split lines */
|
|
6129
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
6130
|
+
private readonly resolvedMid;
|
|
6131
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6132
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceRangeAreaChartComponent, never>;
|
|
6133
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRangeAreaChartComponent, "sce-range-area-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "lower": { "alias": "lower"; "required": false; "isSignal": true; }; "upper": { "alias": "upper"; "required": false; "isSignal": true; }; "mid": { "alias": "mid"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "bandColor": { "alias": "bandColor"; "required": false; "isSignal": true; }; "lineColor": { "alias": "lineColor"; "required": false; "isSignal": true; }; "midLabel": { "alias": "midLabel"; "required": false; "isSignal": true; }; "rangeLabel": { "alias": "rangeLabel"; "required": false; "isSignal": true; }; "showXAxisLabels": { "alias": "showXAxisLabels"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6134
|
+
}
|
|
6135
|
+
|
|
6136
|
+
/** One sankey stage — matched to links by `name`. */
|
|
6137
|
+
interface SankeyNode {
|
|
6138
|
+
name: string;
|
|
6139
|
+
color?: string;
|
|
6140
|
+
}
|
|
6141
|
+
/** One weighted flow from a `source` node name to a `target` node name. */
|
|
6142
|
+
interface SankeyLink {
|
|
6143
|
+
source: string;
|
|
6144
|
+
target: string;
|
|
6145
|
+
value: number;
|
|
6146
|
+
}
|
|
6147
|
+
/**
|
|
6148
|
+
* ECharts sankey diagram for weighted flow between named stages (funnels, budget breakdowns,
|
|
6149
|
+
* multi-step conversion paths) — link width is proportional to `value`. Unlike
|
|
6150
|
+
* `sce-network-graph-chart`, where edges express arbitrary peer relationships, a sankey's links
|
|
6151
|
+
* must be acyclic and read left-to-right (or top-to-bottom): reach for this chart when the data
|
|
6152
|
+
* has a directional "flow" between stages, not a symmetric network of connections.
|
|
6153
|
+
*/
|
|
6154
|
+
declare class SceSankeyChartComponent {
|
|
6155
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6156
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6157
|
+
private readonly appMode;
|
|
6158
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6159
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6160
|
+
/** Flow stages */
|
|
6161
|
+
readonly nodes: _angular_core.InputSignal<readonly SankeyNode[]>;
|
|
6162
|
+
/** Weighted flows between node names */
|
|
6163
|
+
readonly links: _angular_core.InputSignal<readonly SankeyLink[]>;
|
|
6164
|
+
/** Chart height in pixels */
|
|
6165
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
6166
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
6167
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6168
|
+
/** Node rectangle thickness in pixels */
|
|
6169
|
+
readonly nodeWidth: _angular_core.InputSignal<number>;
|
|
6170
|
+
/** Vertical gap between nodes in the same column, in pixels */
|
|
6171
|
+
readonly nodeGap: _angular_core.InputSignal<number>;
|
|
6172
|
+
/** Flow direction of the diagram */
|
|
6173
|
+
readonly orient: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
6174
|
+
/** Link curve amount, 0 (straight) to 1 (fully curved) */
|
|
6175
|
+
readonly curveness: _angular_core.InputSignal<number>;
|
|
6176
|
+
/** Link fill opacity */
|
|
6177
|
+
readonly linkOpacity: _angular_core.InputSignal<number>;
|
|
6178
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6179
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceSankeyChartComponent, never>;
|
|
6180
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceSankeyChartComponent, "sce-sankey-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "nodeWidth": { "alias": "nodeWidth"; "required": false; "isSignal": true; }; "nodeGap": { "alias": "nodeGap"; "required": false; "isSignal": true; }; "orient": { "alias": "orient"; "required": false; "isSignal": true; }; "curveness": { "alias": "curveness"; "required": false; "isSignal": true; }; "linkOpacity": { "alias": "linkOpacity"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6181
|
+
}
|
|
6182
|
+
|
|
6183
|
+
/** One scatter series: a name plus a list of `[x, y]` numeric points. */
|
|
6184
|
+
interface ScatterSeriesData {
|
|
6185
|
+
name: string;
|
|
6186
|
+
data: readonly (readonly [number, number])[];
|
|
6187
|
+
color?: string;
|
|
6188
|
+
}
|
|
6189
|
+
/**
|
|
6190
|
+
* ECharts scatter plot for one or more numeric x/y series, every point drawn at the same
|
|
6191
|
+
* `symbolSize`. Unlike `sce-bubble-chart` — where a third value drives per-point size — reach
|
|
6192
|
+
* for this chart when only the x/y position carries meaning, not a magnitude.
|
|
6193
|
+
*/
|
|
6194
|
+
declare class SceScatterChartComponent {
|
|
6195
|
+
private readonly el;
|
|
6196
|
+
/** Manual direction override; null auto-detects from computed style (RTL-first default). */
|
|
6197
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
6198
|
+
private readonly detectedIsRtl;
|
|
6199
|
+
constructor();
|
|
6200
|
+
private readonly computedIsRtl;
|
|
6201
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6202
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6203
|
+
private readonly appMode;
|
|
6204
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6205
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6206
|
+
/** One or more x/y series to plot */
|
|
6207
|
+
readonly series: _angular_core.InputSignal<readonly ScatterSeriesData[]>;
|
|
6208
|
+
/** Chart height in pixels */
|
|
6209
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6210
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
6211
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6212
|
+
/** Point diameter in pixels, applied to every series */
|
|
6213
|
+
readonly symbolSize: _angular_core.InputSignal<number>;
|
|
6214
|
+
/** Whether to show the custom legend below the chart */
|
|
6215
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6216
|
+
/** Whether to show axis grid lines */
|
|
6217
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
6218
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6219
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6220
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceScatterChartComponent, never>;
|
|
6221
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceScatterChartComponent, "sce-scatter-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "symbolSize": { "alias": "symbolSize"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6222
|
+
}
|
|
6223
|
+
|
|
6224
|
+
/** A single `[x, y]` data point. */
|
|
6225
|
+
type RegressionPoint = readonly [number, number];
|
|
6226
|
+
/** Result of an ordinary least-squares fit: `y = slope * x + intercept`. */
|
|
6227
|
+
interface LinearRegressionResult {
|
|
6228
|
+
slope: number;
|
|
6229
|
+
intercept: number;
|
|
6230
|
+
}
|
|
6231
|
+
/**
|
|
6232
|
+
* ECharts scatter plot of one point cloud plus a straight trend line fitted to it with ordinary
|
|
6233
|
+
* least squares (`computeLinearRegression`, a pure helper exported from this file). Unlike
|
|
6234
|
+
* `sce-scatter-chart` — which only plots raw points — reach for this chart when the story is the
|
|
6235
|
+
* correlation itself (is `y` trending up or down with `x`?), not the individual points.
|
|
6236
|
+
*/
|
|
6237
|
+
declare class SceScatterRegressionChartComponent {
|
|
6238
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6239
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6240
|
+
private readonly appMode;
|
|
6241
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6242
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6243
|
+
/** The point cloud to plot and fit a trend line to */
|
|
6244
|
+
readonly points: _angular_core.InputSignal<readonly RegressionPoint[]>;
|
|
6245
|
+
/** Chart height in pixels */
|
|
6246
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6247
|
+
/** Chart width in pixels — null stretches the chart to the container's inline size */
|
|
6248
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6249
|
+
/** Point diameter in pixels */
|
|
6250
|
+
readonly symbolSize: _angular_core.InputSignal<number>;
|
|
6251
|
+
/** Scatter point color */
|
|
6252
|
+
readonly pointColor: _angular_core.InputSignal<string>;
|
|
6253
|
+
/** Trend line color — an annotation, subordinate to the points it fits */
|
|
6254
|
+
readonly lineColor: _angular_core.InputSignal<string>;
|
|
6255
|
+
/** Legend label for the point series — pass a translated string, never hardcode it */
|
|
6256
|
+
readonly pointsLabel: _angular_core.InputSignal<string>;
|
|
6257
|
+
/** Legend label for the trend-line series — pass a translated string, never hardcode it */
|
|
6258
|
+
readonly trendLabel: _angular_core.InputSignal<string>;
|
|
6259
|
+
/** Whether to show the custom legend below the chart */
|
|
6260
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6261
|
+
/** Whether to show axis grid lines */
|
|
6262
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
6263
|
+
readonly regression: _angular_core.Signal<LinearRegressionResult>;
|
|
6264
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6265
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6266
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceScatterRegressionChartComponent, never>;
|
|
6267
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceScatterRegressionChartComponent, "sce-scatter-regression-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "points": { "alias": "points"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "symbolSize": { "alias": "symbolSize"; "required": false; "isSignal": true; }; "pointColor": { "alias": "pointColor"; "required": false; "isSignal": true; }; "lineColor": { "alias": "lineColor"; "required": false; "isSignal": true; }; "pointsLabel": { "alias": "pointsLabel"; "required": false; "isSignal": true; }; "trendLabel": { "alias": "trendLabel"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6268
|
+
}
|
|
6269
|
+
|
|
6270
|
+
/** `'absolute'` stacks raw values to a variable total; `'percent'` re-scales every category to a 0-100 total. */
|
|
6271
|
+
type StackedAreaMode = 'absolute' | 'percent';
|
|
6272
|
+
/**
|
|
6273
|
+
* ECharts area chart with every series stacked into a running total per category, unlike
|
|
6274
|
+
* `sce-line-chart`'s areas — which each start from zero and overlap independently, so they
|
|
6275
|
+
* cannot be read as parts of a whole.
|
|
6276
|
+
*
|
|
6277
|
+
* Reach for `sce-stacked-area-chart` when the series are parts of one total that should sum
|
|
6278
|
+
* visually at each category (revenue by channel, requests by status) and either the running
|
|
6279
|
+
* total itself matters (`mode="absolute"`) or only each part's *share* of the total does
|
|
6280
|
+
* (`mode="percent"`, which re-scales every category to 100%).
|
|
6281
|
+
*/
|
|
6282
|
+
declare class SceStackedAreaChartComponent {
|
|
6283
|
+
/**
|
|
6284
|
+
* Force a palette mode. Defaults to following the app theme (`data-theme` on <html>).
|
|
6285
|
+
* Named `themeMode` — not `mode` — because `mode` is already taken by `StackedAreaMode`
|
|
6286
|
+
* (`'absolute'` | `'percent'`).
|
|
6287
|
+
*/
|
|
6288
|
+
readonly themeMode: _angular_core.InputSignal<ChartMode | null>;
|
|
6289
|
+
private readonly appMode;
|
|
6290
|
+
/** The mode actually painted: an explicit `themeMode` input wins, otherwise the app theme. */
|
|
6291
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6292
|
+
/** Which side the value axis sits on; null defaults to the RTL side (this design system's Arabic-first default). */
|
|
6293
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
6294
|
+
private readonly computedIsRtl;
|
|
6295
|
+
/** Array of series to stack, in stacking order (first series sits closest to the axis). */
|
|
6296
|
+
readonly series: _angular_core.InputSignal<readonly ChartLineSeriesData[]>;
|
|
6297
|
+
/** X-axis category labels */
|
|
6298
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
6299
|
+
/** Chart height in pixels */
|
|
6300
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6301
|
+
/** Chart width in pixels */
|
|
6302
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6303
|
+
/** `'absolute'` stacks raw values; `'percent'` normalizes each category to a 100% total. */
|
|
6304
|
+
readonly mode: _angular_core.InputSignal<StackedAreaMode>;
|
|
6305
|
+
/** Whether to show smooth curves */
|
|
6306
|
+
readonly smooth: _angular_core.InputSignal<boolean>;
|
|
6307
|
+
/** Whether to show the standalone legend */
|
|
6308
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6309
|
+
/** Whether to show grid split lines */
|
|
6310
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
6311
|
+
/** Whether to show X-axis labels */
|
|
6312
|
+
readonly showXAxisLabels: _angular_core.InputSignal<boolean>;
|
|
6313
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6314
|
+
/**
|
|
6315
|
+
* Values as ECharts will actually draw them. In `'percent'` mode every category's values are
|
|
6316
|
+
* rescaled so they sum to 100 — the raw input in `series()` is left untouched.
|
|
6317
|
+
*/
|
|
6318
|
+
private readonly plottedValues;
|
|
6319
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6320
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceStackedAreaChartComponent, never>;
|
|
6321
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStackedAreaChartComponent, "sce-stacked-area-chart", never, { "themeMode": { "alias": "themeMode"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXAxisLabels": { "alias": "showXAxisLabels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6322
|
+
}
|
|
6323
|
+
|
|
6324
|
+
/** Where the step jump happens between two data points. */
|
|
6325
|
+
type StepLineEdge = 'start' | 'middle' | 'end';
|
|
6326
|
+
/**
|
|
6327
|
+
* ECharts multi-series line chart that holds each value constant and jumps at the step edge,
|
|
6328
|
+
* instead of interpolating a slope between points.
|
|
6329
|
+
*
|
|
6330
|
+
* `sce-line-chart` draws a straight (or smoothed) diagonal between consecutive points, which
|
|
6331
|
+
* implies the value changed gradually between them. Reach for `sce-step-line-chart` instead
|
|
6332
|
+
* whenever the underlying value is actually constant between samples and changes instantly —
|
|
6333
|
+
* tariff bands, plan tiers, on/off statuses, threshold changes — so the chart does not invent
|
|
6334
|
+
* a transition that never happened.
|
|
6335
|
+
*/
|
|
6336
|
+
declare class SceStepLineChartComponent {
|
|
6337
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6338
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6339
|
+
private readonly appMode;
|
|
6340
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6341
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6342
|
+
/** Which side the value axis sits on; null defaults to the RTL side (this design system's Arabic-first default). */
|
|
6343
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
6344
|
+
private readonly computedIsRtl;
|
|
6345
|
+
/** Array of series data to display */
|
|
6346
|
+
readonly series: _angular_core.InputSignal<readonly ChartLineSeriesData[]>;
|
|
6347
|
+
/** X-axis category labels */
|
|
6348
|
+
readonly categories: _angular_core.InputSignal<readonly string[]>;
|
|
6349
|
+
/** Chart height in pixels */
|
|
6350
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6351
|
+
/** Chart width in pixels */
|
|
6352
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6353
|
+
/** Where the value jumps relative to the two points it sits between. */
|
|
6354
|
+
readonly step: _angular_core.InputSignal<StepLineEdge>;
|
|
6355
|
+
/** Whether to show the area fill under the step line */
|
|
6356
|
+
readonly showArea: _angular_core.InputSignal<boolean>;
|
|
6357
|
+
/** Whether to show the standalone legend */
|
|
6358
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6359
|
+
/** Whether to show grid split lines */
|
|
6360
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
6361
|
+
/** Whether to show X-axis labels */
|
|
6362
|
+
readonly showXAxisLabels: _angular_core.InputSignal<boolean>;
|
|
6363
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6364
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6365
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceStepLineChartComponent, never>;
|
|
6366
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStepLineChartComponent, "sce-step-line-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showXAxisLabels": { "alias": "showXAxisLabels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6367
|
+
}
|
|
6368
|
+
|
|
6369
|
+
/** One dated value for a single named stream. */
|
|
6370
|
+
interface StreamGraphPoint {
|
|
6371
|
+
date: string;
|
|
6372
|
+
value: number;
|
|
6373
|
+
}
|
|
6374
|
+
/** One named stream (a river band), plotted as one colour across the whole timeline. */
|
|
6375
|
+
interface StreamGraphSeries {
|
|
6376
|
+
name: string;
|
|
6377
|
+
color?: string;
|
|
6378
|
+
points: readonly StreamGraphPoint[];
|
|
6379
|
+
}
|
|
6380
|
+
/**
|
|
6381
|
+
* ECharts `themeRiver` stream graph: a stacked area centred on a flowing, wiggling baseline
|
|
6382
|
+
* instead of a fixed zero line, so no single band's shape is distorted by sitting on top of
|
|
6383
|
+
* every other band (the effect `sce-stacked-area-chart` has, since its baseline is a hard
|
|
6384
|
+
* zero and every series above the first inherits the noise of everything under it).
|
|
6385
|
+
*
|
|
6386
|
+
* Reach for this only for many overlapping, evolving named categories over time where the
|
|
6387
|
+
* *shape* of ebb and flow per stream is the story (topic volume, tag usage, ticket categories
|
|
6388
|
+
* over months) — not when readers need to read an exact value off an axis, since `themeRiver`
|
|
6389
|
+
* deliberately has none.
|
|
6390
|
+
*/
|
|
6391
|
+
declare class SceStreamGraphChartComponent {
|
|
6392
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6393
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6394
|
+
private readonly appMode;
|
|
6395
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6396
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6397
|
+
/** Named streams to render, each with its own dated point series */
|
|
6398
|
+
readonly series: _angular_core.InputSignal<readonly StreamGraphSeries[]>;
|
|
6399
|
+
/** Chart height in pixels */
|
|
6400
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6401
|
+
/** Chart width in pixels */
|
|
6402
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6403
|
+
/** Whether to show date labels under the flowing axis */
|
|
6404
|
+
readonly showAxisLabels: _angular_core.InputSignal<boolean>;
|
|
6405
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6406
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceStreamGraphChartComponent, never>;
|
|
6407
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceStreamGraphChartComponent, "sce-stream-graph-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "showAxisLabels": { "alias": "showAxisLabels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6408
|
+
}
|
|
6409
|
+
|
|
6410
|
+
/** One node of the radial hierarchy. `value` is optional on a node with `children` — ECharts
|
|
6411
|
+
* sums the children's values to size its ring segment when it is omitted. */
|
|
6412
|
+
interface SunburstNode {
|
|
6413
|
+
readonly name: string;
|
|
6414
|
+
readonly value?: number;
|
|
6415
|
+
/** Explicit colour for this node; unset descendants inherit a tint of their top-level ancestor's colour. */
|
|
6416
|
+
readonly color?: string;
|
|
6417
|
+
readonly children?: readonly SunburstNode[];
|
|
6418
|
+
}
|
|
6419
|
+
/**
|
|
6420
|
+
* ECharts sunburst: the same nested `name`/`value`/`children` hierarchy as `sce-treemap-chart`,
|
|
6421
|
+
* drawn as concentric rings instead of nested rectangles — the root is the centre, each ring out
|
|
6422
|
+
* is one depth level, and arc angle encodes `value` within its parent's slice.
|
|
6423
|
+
*
|
|
6424
|
+
* Clicking a ring segment drills in (`nodeClick: 'rootToNode'`, native to ECharts — no Angular
|
|
6425
|
+
* event wiring needed): the clicked node becomes the new centre and its descendants expand to
|
|
6426
|
+
* fill the full circle. Clicking the centre zooms back out one level.
|
|
6427
|
+
*
|
|
6428
|
+
* Choose this over `sce-treemap-chart`/`sce-treemap-drilldown-chart` when the hierarchy's
|
|
6429
|
+
* *relative* proportions at every depth matter more than reading exact rectangle sizes — arcs
|
|
6430
|
+
* compare less precisely than areas, but the radial form reads as "parts of a whole" more
|
|
6431
|
+
* intuitively for shallow-to-medium hierarchies (3-4 levels). Beyond that, inner rings get too
|
|
6432
|
+
* thin to click or label; use the treemap drill-down instead.
|
|
6433
|
+
*/
|
|
6434
|
+
declare class SceSunburstChartComponent {
|
|
6435
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6436
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6437
|
+
private readonly appMode;
|
|
6438
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6439
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6440
|
+
/** Root-level branches of the hierarchy — each becomes its own coloured wedge. */
|
|
6441
|
+
readonly data: _angular_core.InputSignal<readonly SunburstNode[]>;
|
|
6442
|
+
/** Chart height in pixels */
|
|
6443
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
6444
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6445
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6446
|
+
/** Palette cycled across top-level branches that don't set their own `color`. */
|
|
6447
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
6448
|
+
/** Inner/outer radius as CSS percentage strings — `['0%', ...]` starts the innermost ring at the centre point. */
|
|
6449
|
+
readonly radius: _angular_core.InputSignal<readonly [string, string]>;
|
|
6450
|
+
/** Whether node labels are drawn inside their ring segment. */
|
|
6451
|
+
readonly showLabels: _angular_core.InputSignal<boolean>;
|
|
6452
|
+
/** Whether clicking a segment drills into it (`rootToNode`) or the chart is display-only. */
|
|
6453
|
+
readonly drillEnabled: _angular_core.InputSignal<boolean>;
|
|
6454
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6455
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceSunburstChartComponent, never>;
|
|
6456
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceSunburstChartComponent, "sce-sunburst-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "drillEnabled": { "alias": "drillEnabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6457
|
+
}
|
|
6458
|
+
|
|
6459
|
+
/** One (date, value) sample for a single named stream — the chart groups points that share `name` into one flowing band. */
|
|
6460
|
+
interface ThemeRiverDataPoint {
|
|
6461
|
+
/** ISO-8601 date (or any string ECharts' time axis can parse) */
|
|
6462
|
+
date: string;
|
|
6463
|
+
value: number;
|
|
6464
|
+
/** Stream this point belongs to — becomes one band in the river and one legend entry */
|
|
6465
|
+
name: string;
|
|
6466
|
+
}
|
|
6467
|
+
/**
|
|
6468
|
+
* ECharts ThemeRiver: several named series flow left-to-right as stacked, wave-shaped bands
|
|
6469
|
+
* along their own time `singleAxis`, each band's thickness at a point in time equal to its
|
|
6470
|
+
* value — built for showing how the RELATIVE proportions of several categories shift over time,
|
|
6471
|
+
* which a stacked `sce-area-chart` also shows but with hard horizontal baselines per band; the
|
|
6472
|
+
* river's organic, vertically-centred bands make simultaneous rises and falls across many
|
|
6473
|
+
* categories easier to scan than stacked-area's shared bottom-up baseline.
|
|
6474
|
+
*/
|
|
6475
|
+
declare class SceThemeRiverChartComponent {
|
|
6476
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6477
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6478
|
+
private readonly appMode;
|
|
6479
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6480
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6481
|
+
/** Flat list of (date, value, name) samples across every stream */
|
|
6482
|
+
readonly data: _angular_core.InputSignal<readonly ThemeRiverDataPoint[]>;
|
|
6483
|
+
/** Chart height in pixels */
|
|
6484
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6485
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6486
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6487
|
+
/** Colour palette, assigned to streams in the order each stream's name first appears in `data` */
|
|
6488
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
6489
|
+
/** Whether to show the legend below the chart */
|
|
6490
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6491
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6492
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6493
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceThemeRiverChartComponent, never>;
|
|
6494
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceThemeRiverChartComponent, "sce-theme-river-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6495
|
+
}
|
|
6496
|
+
|
|
6497
|
+
/** One sensitivity variable: its downside (`low`) and upside (`high`) impact from a shared baseline of zero. */
|
|
6498
|
+
interface TornadoItem {
|
|
6499
|
+
label: string;
|
|
6500
|
+
low: number;
|
|
6501
|
+
high: number;
|
|
6502
|
+
}
|
|
6503
|
+
/**
|
|
6504
|
+
* ECharts sensitivity ("tornado") diagram: paired horizontal bars — a downside and an upside —
|
|
6505
|
+
* around a shared zero centre, one row per variable, sorted so the widest swing sits at the top
|
|
6506
|
+
* and the chart narrows toward the bottom. Unlike `sce-diverging-bar-chart` (one signed value per
|
|
6507
|
+
* category), every row here carries TWO values that share a baseline, which is what a sensitivity
|
|
6508
|
+
* or "what changes the outcome most" analysis needs.
|
|
6509
|
+
*/
|
|
6510
|
+
declare class SceTornadoChartComponent {
|
|
6511
|
+
private readonly el;
|
|
6512
|
+
/** Manual direction override for the category axis side; null auto-detects from computed style (RTL-first default). */
|
|
6513
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
6514
|
+
private readonly detectedIsRtl;
|
|
6515
|
+
constructor();
|
|
6516
|
+
private readonly computedIsRtl;
|
|
6517
|
+
/** Sensitivity variables — sorted internally by swing magnitude, not by input order */
|
|
6518
|
+
readonly data: _angular_core.InputSignal<readonly TornadoItem[]>;
|
|
6519
|
+
/** Chart height in pixels */
|
|
6520
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6521
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6522
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6523
|
+
/** Bar colour for the downside (`low`) series — the two sides are two categories, not a polarity */
|
|
6524
|
+
readonly lowColor: _angular_core.InputSignal<string>;
|
|
6525
|
+
/** Bar colour for the upside (`high`) series */
|
|
6526
|
+
readonly highColor: _angular_core.InputSignal<string>;
|
|
6527
|
+
/** Legend caption for the downside series */
|
|
6528
|
+
readonly lowLabel: _angular_core.InputSignal<string>;
|
|
6529
|
+
/** Legend caption for the upside series */
|
|
6530
|
+
readonly highLabel: _angular_core.InputSignal<string>;
|
|
6531
|
+
/** Suffix appended to every displayed value (e.g. '%') */
|
|
6532
|
+
readonly valueSuffix: _angular_core.InputSignal<string>;
|
|
6533
|
+
/** Bar thickness in pixels */
|
|
6534
|
+
readonly barHeight: _angular_core.InputSignal<string | number>;
|
|
6535
|
+
/** Whether to render the low/high legend */
|
|
6536
|
+
readonly showLegend: _angular_core.InputSignal<boolean>;
|
|
6537
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6538
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6539
|
+
private readonly appMode;
|
|
6540
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6541
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6542
|
+
private readonly sortedData;
|
|
6543
|
+
readonly legendItems: _angular_core.Signal<ChartLegendItem[]>;
|
|
6544
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6545
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceTornadoChartComponent, never>;
|
|
6546
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceTornadoChartComponent, "sce-tornado-chart", never, { "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "lowColor": { "alias": "lowColor"; "required": false; "isSignal": true; }; "highColor": { "alias": "highColor"; "required": false; "isSignal": true; }; "lowLabel": { "alias": "lowLabel"; "required": false; "isSignal": true; }; "highLabel": { "alias": "highLabel"; "required": false; "isSignal": true; }; "valueSuffix": { "alias": "valueSuffix"; "required": false; "isSignal": true; }; "barHeight": { "alias": "barHeight"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6547
|
+
}
|
|
6548
|
+
|
|
6549
|
+
/** One node of the org-chart-style tree. `collapsed` starts a branch closed under `expandAndCollapse`. */
|
|
6550
|
+
interface TreeNode {
|
|
6551
|
+
readonly name: string;
|
|
6552
|
+
readonly value?: number | string;
|
|
6553
|
+
readonly children?: readonly TreeNode[];
|
|
6554
|
+
readonly collapsed?: boolean;
|
|
6555
|
+
}
|
|
6556
|
+
/**
|
|
6557
|
+
* ECharts tree: a single-root orthogonal hierarchy (org chart, category tree, file tree) with
|
|
6558
|
+
* expandable/collapsible branches — the only one of the five hierarchy charts in this family that
|
|
6559
|
+
* takes one root node instead of a forest of top-level branches.
|
|
6560
|
+
*
|
|
6561
|
+
* RTL is NOT automatic the way it is in `sce-bar-chart`. ECharts' `orient: 'LR'` unconditionally
|
|
6562
|
+
* lays the root on the left with children flowing right — on an Arabic page that reads backwards:
|
|
6563
|
+
* the trunk starts on the wrong side and every branch grows away from the reading direction. This
|
|
6564
|
+
* component auto-detects the host's computed `direction` (like `sce-bar-chart`) and, when RTL,
|
|
6565
|
+
* switches to `orient: 'RL'`, which mirrors the whole layout — root on the right, children flowing
|
|
6566
|
+
* left, matching Arabic reading order. Only position and edge direction mirror this way; label
|
|
6567
|
+
* *text* is not reshaped or reversed by ECharts, it is rendered as given and the browser's own
|
|
6568
|
+
* bidi algorithm handles Arabic glyph shaping within each label. Pass `isRtl` to override the
|
|
6569
|
+
* auto-detected direction explicitly.
|
|
6570
|
+
*/
|
|
6571
|
+
declare class SceTreeChartComponent {
|
|
6572
|
+
private readonly el;
|
|
6573
|
+
/** The single root node of the tree — `null` renders an empty canvas. */
|
|
6574
|
+
readonly root: _angular_core.InputSignal<TreeNode | null>;
|
|
6575
|
+
/** Chart height in pixels */
|
|
6576
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
6577
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6578
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6579
|
+
/** Manual direction override; `null` auto-detects from the host's computed style (RTL-first default). */
|
|
6580
|
+
readonly isRtl: _angular_core.InputSignal<boolean | null>;
|
|
6581
|
+
/** Node + edge colour. */
|
|
6582
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
6583
|
+
/** `'curve'` draws rounded connectors; `'polyline'` draws right-angled ones. */
|
|
6584
|
+
readonly edgeShape: _angular_core.InputSignal<"polyline" | "curve">;
|
|
6585
|
+
/** How many levels render expanded on first paint; `-1` expands the whole tree. */
|
|
6586
|
+
readonly initialTreeDepth: _angular_core.InputSignal<number>;
|
|
6587
|
+
/** Whether clicking a branch node toggles its children open/closed. */
|
|
6588
|
+
readonly expandAndCollapse: _angular_core.InputSignal<boolean>;
|
|
6589
|
+
/** Node marker diameter in pixels. */
|
|
6590
|
+
readonly symbolSize: _angular_core.InputSignal<number>;
|
|
6591
|
+
private readonly detectedIsRtl;
|
|
6592
|
+
constructor();
|
|
6593
|
+
private readonly computedIsRtl;
|
|
6594
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6595
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6596
|
+
private readonly appMode;
|
|
6597
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6598
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6599
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6600
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceTreeChartComponent, never>;
|
|
6601
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceTreeChartComponent, "sce-tree-chart", never, { "root": { "alias": "root"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "isRtl": { "alias": "isRtl"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "edgeShape": { "alias": "edgeShape"; "required": false; "isSignal": true; }; "initialTreeDepth": { "alias": "initialTreeDepth"; "required": false; "isSignal": true; }; "expandAndCollapse": { "alias": "expandAndCollapse"; "required": false; "isSignal": true; }; "symbolSize": { "alias": "symbolSize"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6602
|
+
}
|
|
6603
|
+
|
|
6604
|
+
/** One branch of the nested hierarchy. `value` is optional on a branch with `children` — ECharts
|
|
6605
|
+
* sums the children's values to size it when it is omitted. */
|
|
6606
|
+
interface TreemapDrilldownNode {
|
|
6607
|
+
readonly name: string;
|
|
6608
|
+
readonly value?: number;
|
|
6609
|
+
/** Explicit colour for this node; unset descendants inherit a tint of their top-level ancestor's colour. */
|
|
6610
|
+
readonly color?: string;
|
|
6611
|
+
readonly children?: readonly TreemapDrilldownNode[];
|
|
6612
|
+
}
|
|
6613
|
+
/**
|
|
6614
|
+
* ECharts treemap with drill-down enabled: only `leafDepth` levels render at once, and clicking a
|
|
6615
|
+
* rectangle zooms into it (`nodeClick: 'zoomToNode'`) while a breadcrumb trail tracks the path
|
|
6616
|
+
* back to the root. Clicking the breadcrumb (or the outermost rectangle) zooms back out.
|
|
6617
|
+
*
|
|
6618
|
+
* This is the opposite trade-off from `sce-treemap-chart`: that component renders every level
|
|
6619
|
+
* simultaneously and disables interaction, which only stays legible for 2-3 levels. This
|
|
6620
|
+
* component hides depth behind clicks, so it scales to hierarchies with 4+ levels or many
|
|
6621
|
+
* siblings per branch — the price is that a user must click to see anything below `leafDepth`.
|
|
6622
|
+
* Prefer the plain treemap when the whole shape needs to be visible at a glance (e.g. a summary
|
|
6623
|
+
* card); prefer this one for an exploratory drill-down view (e.g. a dedicated analytics page).
|
|
6624
|
+
*/
|
|
6625
|
+
declare class SceTreemapDrilldownChartComponent {
|
|
6626
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6627
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6628
|
+
private readonly appMode;
|
|
6629
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6630
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6631
|
+
/** Root-level branches of the hierarchy — each becomes its own coloured region. */
|
|
6632
|
+
readonly data: _angular_core.InputSignal<readonly TreemapDrilldownNode[]>;
|
|
6633
|
+
/** Chart height in pixels */
|
|
6634
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
6635
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6636
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6637
|
+
/** Palette cycled across top-level branches that don't set their own `color`. */
|
|
6638
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
6639
|
+
/**
|
|
6640
|
+
* How many levels below the current root render before collapsing into their parent
|
|
6641
|
+
* rectangle. `1` shows only direct children of the root (the most aggressive drill-down);
|
|
6642
|
+
* raise it to reveal more depth per click.
|
|
6643
|
+
*/
|
|
6644
|
+
readonly leafDepth: _angular_core.InputSignal<number>;
|
|
6645
|
+
/** Whether the breadcrumb trail (root path) renders above the chart. */
|
|
6646
|
+
readonly showBreadcrumb: _angular_core.InputSignal<boolean>;
|
|
6647
|
+
/** Whether mouse-wheel zoom + drag panning is enabled in addition to click-to-drill. */
|
|
6648
|
+
readonly roam: _angular_core.InputSignal<boolean>;
|
|
6649
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6650
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceTreemapDrilldownChartComponent, never>;
|
|
6651
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceTreemapDrilldownChartComponent, "sce-treemap-drilldown-chart", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "leafDepth": { "alias": "leafDepth"; "required": false; "isSignal": true; }; "showBreadcrumb": { "alias": "showBreadcrumb"; "required": false; "isSignal": true; }; "roam": { "alias": "roam"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6652
|
+
}
|
|
6653
|
+
|
|
6654
|
+
/** One waterfall step: a signed delta from the running total, or a checkpoint total when `isTotal` is set. */
|
|
6655
|
+
interface WaterfallItem {
|
|
6656
|
+
name: string;
|
|
6657
|
+
value: number;
|
|
6658
|
+
/** Draws a bar spanning from zero to the running total instead of a floating delta. The first
|
|
6659
|
+
* item's `value` seeds the baseline when it is marked total; every later total ignores its own
|
|
6660
|
+
* `value` and displays the accumulated sum of everything before it. */
|
|
6661
|
+
isTotal?: boolean;
|
|
6662
|
+
}
|
|
6663
|
+
/** One resolved waterfall segment: the invisible offset it stacks on, its own bar length, the
|
|
6664
|
+
* running total after this step, and which colour bucket it belongs to. */
|
|
6665
|
+
interface WaterfallSegment {
|
|
6666
|
+
name: string;
|
|
6667
|
+
placeholder: number;
|
|
6668
|
+
barValue: number;
|
|
6669
|
+
runningTotal: number;
|
|
6670
|
+
kind: 'increase' | 'decrease' | 'total';
|
|
6671
|
+
}
|
|
6672
|
+
/**
|
|
6673
|
+
* ECharts running-total waterfall: a stacked bar chart where the lower stack segment is a
|
|
6674
|
+
* transparent placeholder that pushes each visible bar up to (or down from) the previous running
|
|
6675
|
+
* total. Unlike `sce-bar-chart` in stacked mode, segments here are NOT independent quantities that
|
|
6676
|
+
* sum to a whole — each one is a signed step, and the placeholder trick is what makes the steps
|
|
6677
|
+
* float at the right height instead of all starting from zero.
|
|
6678
|
+
*/
|
|
6679
|
+
declare class SceWaterfallChartComponent {
|
|
6680
|
+
/** Ordered waterfall steps: signed deltas, optionally interspersed with checkpoint totals. */
|
|
6681
|
+
readonly data: _angular_core.InputSignal<readonly WaterfallItem[]>;
|
|
6682
|
+
/** Chart height in pixels */
|
|
6683
|
+
readonly height: _angular_core.InputSignal<number | null>;
|
|
6684
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6685
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6686
|
+
/** Bar colour for a positive step — increase/decrease is a STATE, so this defaults to the
|
|
6687
|
+
* shared "good" status colour rather than an arbitrary green */
|
|
6688
|
+
readonly increaseColor: _angular_core.InputSignal<string>;
|
|
6689
|
+
/** Bar colour for a negative step — the shared "critical" status colour */
|
|
6690
|
+
readonly decreaseColor: _angular_core.InputSignal<string>;
|
|
6691
|
+
/** Bar colour for a checkpoint total (`isTotal: true`) — a running total is the chart's own
|
|
6692
|
+
* series, not a state, so it takes the primary series colour */
|
|
6693
|
+
readonly totalColor: _angular_core.InputSignal<string>;
|
|
6694
|
+
/** Bar width in pixels */
|
|
6695
|
+
readonly barWidth: _angular_core.InputSignal<string | number>;
|
|
6696
|
+
/** Bar corner radius, in pixels, applied to the visible (non-placeholder) segment */
|
|
6697
|
+
readonly borderRadius: _angular_core.InputSignal<number>;
|
|
6698
|
+
/** Whether to show the dashed grid lines behind the bars */
|
|
6699
|
+
readonly showGrid: _angular_core.InputSignal<boolean>;
|
|
6700
|
+
/** Whether to draw the dashed connector between the top of one bar and the base of the next */
|
|
6701
|
+
readonly showConnectors: _angular_core.InputSignal<boolean>;
|
|
6702
|
+
/** Whether to print each bar's value above it */
|
|
6703
|
+
readonly showLabels: _angular_core.InputSignal<boolean>;
|
|
6704
|
+
/** Force a palette mode. Defaults to following the app theme (`data-theme` on <html>). */
|
|
6705
|
+
readonly mode: _angular_core.InputSignal<ChartMode | null>;
|
|
6706
|
+
private readonly appMode;
|
|
6707
|
+
/** The mode actually painted: an explicit `mode` input wins, otherwise the app theme. */
|
|
6708
|
+
protected readonly activeMode: _angular_core.Signal<ChartMode>;
|
|
6709
|
+
private readonly segments;
|
|
6710
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6711
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceWaterfallChartComponent, never>;
|
|
6712
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceWaterfallChartComponent, "sce-waterfall-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "increaseColor": { "alias": "increaseColor"; "required": false; "isSignal": true; }; "decreaseColor": { "alias": "decreaseColor"; "required": false; "isSignal": true; }; "totalColor": { "alias": "totalColor"; "required": false; "isSignal": true; }; "barWidth": { "alias": "barWidth"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showConnectors": { "alias": "showConnectors"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6713
|
+
}
|
|
6714
|
+
|
|
6715
|
+
/** A single outcome: `'win'` renders as a `+1` bar above the axis, `'loss'` as a `-1` bar below it — both the same height, so the chart reads as a streak pattern rather than a magnitude comparison. */
|
|
6716
|
+
type WinLossOutcome = 'win' | 'loss';
|
|
6717
|
+
/**
|
|
6718
|
+
* Compact axis-less bar sparkline of win/loss outcomes.
|
|
6719
|
+
*
|
|
6720
|
+
* Deliberately has no `mode` input: it paints only the reserved STATUS colours (win/loss), which are
|
|
6721
|
+
* fixed semantics rather than palette slots, and it draws no axis, grid, legend or tooltip ink — so
|
|
6722
|
+
* there is nothing in it that a dark surface would change. — every bar is the same height (a fixed
|
|
6723
|
+
* `+1` above or `-1` below a shared zero baseline), so the chart reads as a streak pattern rather
|
|
6724
|
+
* than a magnitude comparison. Meant to be embedded inline, e.g. inside a `p-table` cell.
|
|
6725
|
+
*/
|
|
6726
|
+
declare class SceWinLossChartComponent {
|
|
6727
|
+
/** Ordered outcomes, oldest first */
|
|
6728
|
+
readonly results: _angular_core.InputSignal<readonly WinLossOutcome[]>;
|
|
6729
|
+
/** Chart height in pixels */
|
|
6730
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
6731
|
+
/** Chart width in pixels — `null` stretches the chart to the container's inline size */
|
|
6732
|
+
readonly width: _angular_core.InputSignal<number | null>;
|
|
6733
|
+
/** Bar colour for a win */
|
|
6734
|
+
readonly winColor: _angular_core.InputSignal<string>;
|
|
6735
|
+
/** Bar colour for a loss */
|
|
6736
|
+
readonly lossColor: _angular_core.InputSignal<string>;
|
|
6737
|
+
/** Gap between bars as a percentage of bar width (ECharts `barCategoryGap` syntax) */
|
|
6738
|
+
readonly barGap: _angular_core.InputSignal<string>;
|
|
6739
|
+
readonly chartOptions: _angular_core.Signal<EChartsOption>;
|
|
6740
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceWinLossChartComponent, never>;
|
|
6741
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceWinLossChartComponent, "sce-win-loss-chart", never, { "results": { "alias": "results"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "winColor": { "alias": "winColor"; "required": false; "isSignal": true; }; "lossColor": { "alias": "lossColor"; "required": false; "isSignal": true; }; "barGap": { "alias": "barGap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6742
|
+
}
|
|
6743
|
+
|
|
6744
|
+
/** Dashboard overview tile showing a stat value, translated label, icon on a coloured background and an optional trend sparkline. */
|
|
6745
|
+
declare class SceOverviewStatCardComponent {
|
|
6746
|
+
readonly value: _angular_core.InputSignal<string | number>;
|
|
6747
|
+
readonly labelKey: _angular_core.InputSignal<string>;
|
|
6748
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
6749
|
+
readonly iconBg: _angular_core.InputSignal<string>;
|
|
6750
|
+
readonly trend: _angular_core.InputSignal<string | undefined>;
|
|
6751
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOverviewStatCardComponent, never>;
|
|
6752
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOverviewStatCardComponent, "sce-overview-stat-card", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "labelKey": { "alias": "labelKey"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "iconBg": { "alias": "iconBg"; "required": true; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6753
|
+
}
|
|
6754
|
+
|
|
6755
|
+
/** Small dashboard card linking to a service, showing its icon and a count with a role-aware translated suffix. */
|
|
6756
|
+
declare class SceServiceMiniCardComponent {
|
|
6757
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
6758
|
+
readonly count: _angular_core.InputSignal<number>;
|
|
6759
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
6760
|
+
readonly link: _angular_core.InputSignal<string | readonly (string | number)[]>;
|
|
6761
|
+
/** i18n key for the count suffix; role-aware (offices offering vs executed projects). */
|
|
6762
|
+
readonly countSuffix: _angular_core.InputSignal<string>;
|
|
6763
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceServiceMiniCardComponent, never>;
|
|
6764
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceServiceMiniCardComponent, "sce-service-mini-card", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "count": { "alias": "count"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "link": { "alias": "link"; "required": true; "isSignal": true; }; "countSuffix": { "alias": "countSuffix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6765
|
+
}
|
|
6766
|
+
|
|
6767
|
+
/** View model of a featured-office card, carrying both the raw `reviewCount` (zero triggers the fallback) and its locale-formatted label. */
|
|
6768
|
+
interface FeaturedOffice {
|
|
6769
|
+
id: string;
|
|
6770
|
+
title: string;
|
|
6771
|
+
/** Raw review count. Zero renders the "no reviews yet" fallback. */
|
|
6772
|
+
reviewCount: number;
|
|
6773
|
+
/** Locale-formatted `reviewCount`, prepared by the caller. */
|
|
6774
|
+
reviewCountLabel: string;
|
|
6775
|
+
rating: string;
|
|
6776
|
+
country: string;
|
|
6777
|
+
tabs: string[];
|
|
6778
|
+
href: string;
|
|
6779
|
+
}
|
|
6780
|
+
/** Dashboard card for a featured engineering office showing rating, review count, country and service tabs; a zero review count renders the "no reviews yet" fallback. */
|
|
6781
|
+
declare class SceFeaturedOfficeCardComponent {
|
|
6782
|
+
readonly office: _angular_core.InputSignal<FeaturedOffice>;
|
|
6783
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceFeaturedOfficeCardComponent, never>;
|
|
6784
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceFeaturedOfficeCardComponent, "sce-featured-office-card", never, { "office": { "alias": "office"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6785
|
+
}
|
|
6786
|
+
|
|
6787
|
+
/** View model of a contract-request card; `deadline` and `budget` are pre-formatted display strings and `tags` are raw status labels whose tone is resolved at render time. */
|
|
6788
|
+
interface ContractRequestCard {
|
|
6789
|
+
id: string;
|
|
6790
|
+
title: string;
|
|
6791
|
+
requestNumber: string;
|
|
6792
|
+
officeName: string;
|
|
6793
|
+
location: string;
|
|
6794
|
+
deadline: string;
|
|
6795
|
+
budget: string;
|
|
6796
|
+
tags: string[];
|
|
6797
|
+
offersCount?: number;
|
|
6798
|
+
}
|
|
6799
|
+
/** Dashboard card summarising a contract request (office, location, deadline, budget) with tone-resolved tags, linking to its detail route. */
|
|
6800
|
+
declare class SceContractRequestCardComponent {
|
|
6801
|
+
readonly request: _angular_core.InputSignal<ContractRequestCard>;
|
|
6802
|
+
readonly tagTones: _angular_core.Signal<_moatamed_sce_ui_components.BusinessStatusTone[]>;
|
|
6803
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceContractRequestCardComponent, never>;
|
|
6804
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceContractRequestCardComponent, "sce-contract-request-card", never, { "request": { "alias": "request"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6805
|
+
}
|
|
6806
|
+
|
|
6807
|
+
/** One row of the latest-contracts table; `status` is the display label and `statusVariant` the already-resolved `BusinessStatusTone`. */
|
|
6808
|
+
interface ContractRow {
|
|
6809
|
+
contractNumber: string;
|
|
6810
|
+
service: string;
|
|
6811
|
+
client: string;
|
|
6812
|
+
endDate: string;
|
|
6813
|
+
status: string;
|
|
6814
|
+
statusVariant: BusinessStatusTone;
|
|
3863
6815
|
}
|
|
3864
6816
|
/** Dashboard table of the latest contracts with status tags, showing five skeleton rows while `loading`; the party column header label is caller-supplied. */
|
|
3865
6817
|
declare class SceLatestContractsTableComponent {
|
|
@@ -4236,6 +7188,16 @@ declare class SceGridTableComponent<T extends GridRow = GridRow> {
|
|
|
4236
7188
|
readonly expandable: _angular_core.InputSignal<boolean>;
|
|
4237
7189
|
/** Tracks which row ids are currently expanded. */
|
|
4238
7190
|
readonly expandedRows: _angular_core.WritableSignal<Record<string, boolean>>;
|
|
7191
|
+
/**
|
|
7192
|
+
* Identity of a row for expansion state.
|
|
7193
|
+
*
|
|
7194
|
+
* This used to read `row['id']` only, while the rest of the component keys on `_id`
|
|
7195
|
+
* (`searchPipeKey` defaults to `'_id'`). A row set that uses `_id` therefore produced
|
|
7196
|
+
* `undefined` for every row, they all collapsed onto the single key `"undefined"`, and
|
|
7197
|
+
* expanding one row expanded them all. Falling back to `_id` keeps existing `id`-keyed
|
|
7198
|
+
* callers on exactly the same path.
|
|
7199
|
+
*/
|
|
7200
|
+
private rowKey;
|
|
4239
7201
|
toggleRow(rowId: string): void;
|
|
4240
7202
|
protected readonly ColumnsEnum: typeof ColumnsEnum;
|
|
4241
7203
|
/**
|
|
@@ -4561,7 +7523,9 @@ declare class FormInput implements ControlValueAccessor {
|
|
|
4561
7523
|
* `InputType` set with the standalone (non-CVA) field components, which the
|
|
4562
7524
|
* renderer bridges into the `FormGroup` manually.
|
|
4563
7525
|
*/
|
|
4564
|
-
type DynamicFieldType = InputType | 'currency' | 'unit' | 'switch' | 'rating' | 'otp'
|
|
7526
|
+
type DynamicFieldType = InputType | 'currency' | 'unit' | 'switch' | 'rating' | 'otp' | 'date-field'
|
|
7527
|
+
/** Read-only label/value pair — renders no control, value still flows through `initialValue`. */
|
|
7528
|
+
| 'display';
|
|
4565
7529
|
/**
|
|
4566
7530
|
* Condition that controls whether a field is shown. Evaluated against the live
|
|
4567
7531
|
* value of another field. The field is active when ANY provided clause matches.
|
|
@@ -4639,6 +7603,14 @@ interface DynamicFieldConfig {
|
|
|
4639
7603
|
minDate?: Date | null;
|
|
4640
7604
|
/** Latest selectable date (date / datetime fields). */
|
|
4641
7605
|
maxDate?: Date | null;
|
|
7606
|
+
/** Calendar system for `date-field` controls. */
|
|
7607
|
+
calendarSystem?: 'hijri' | 'gregorian';
|
|
7608
|
+
/** Locale for `date-field` controls. */
|
|
7609
|
+
locale?: 'ar' | 'en';
|
|
7610
|
+
/** Display format for `date-field` controls (default `iso`). */
|
|
7611
|
+
dateDisplayFormat?: 'iso' | 'localized';
|
|
7612
|
+
/** Show calendar icon on `date-field` controls (default true). */
|
|
7613
|
+
dateShowIcon?: boolean;
|
|
4642
7614
|
/** Suffix shown after the value for `unit` fields (e.g. `m²`). */
|
|
4643
7615
|
unit?: string;
|
|
4644
7616
|
/** Whether `unit` / numeric fields allow decimals (default true). */
|
|
@@ -4653,6 +7625,18 @@ interface DynamicFieldConfig {
|
|
|
4653
7625
|
length?: number;
|
|
4654
7626
|
/** Condition that controls whether this field is shown / included in validation. */
|
|
4655
7627
|
showWhen?: DynamicShowWhen;
|
|
7628
|
+
/**
|
|
7629
|
+
* Renders the field as a read-only label/value pair instead of an editable control.
|
|
7630
|
+
* Combined with `type: 'display'` for fields that are never editable, or used on an
|
|
7631
|
+
* otherwise-editable field (text/email/select/…) to conditionally lock it based on
|
|
7632
|
+
* another field's value. Read-only fields keep their value in the form but are disabled,
|
|
7633
|
+
* so they are excluded from validation.
|
|
7634
|
+
*/
|
|
7635
|
+
readonly?: boolean;
|
|
7636
|
+
/** Condition that forces the field into read-only mode when met (same shape as `showWhen`). */
|
|
7637
|
+
readonlyWhen?: DynamicShowWhen;
|
|
7638
|
+
/** Shows a loading skeleton in place of the control (e.g. async option lists). Disables the control. */
|
|
7639
|
+
loading?: boolean;
|
|
4656
7640
|
/** Number of grid columns the field spans (defaults to 1). */
|
|
4657
7641
|
colSpan?: number;
|
|
4658
7642
|
/** Declarative validators applied to the control. */
|
|
@@ -4694,6 +7678,10 @@ interface DynamicFormConfig {
|
|
|
4694
7678
|
interface RenderField extends DynamicFieldConfig {
|
|
4695
7679
|
gridColumn: string;
|
|
4696
7680
|
isMulti: boolean;
|
|
7681
|
+
/** True when the field must render as a read-only label/value (display type or readonly). */
|
|
7682
|
+
readonly: boolean;
|
|
7683
|
+
/** True when the field should show a loading skeleton in place of its control. */
|
|
7684
|
+
loading: boolean;
|
|
4697
7685
|
}
|
|
4698
7686
|
/** A section resolved for rendering: active fields only, with a concrete column count. */
|
|
4699
7687
|
interface RenderSection {
|
|
@@ -4719,6 +7707,9 @@ declare class SceDynamicFormComponent {
|
|
|
4719
7707
|
readonly initialValue: _angular_core.InputSignal<Record<string, unknown>>;
|
|
4720
7708
|
/** External submit flag that forces error display across all fields. */
|
|
4721
7709
|
readonly submitted: _angular_core.InputSignal<boolean>;
|
|
7710
|
+
/** Literal error messages keyed by field — used for parent-driven validation (e.g. API errors).
|
|
7711
|
+
* Only failing fields are keyed, so a lookup for any other field is `undefined`. */
|
|
7712
|
+
readonly fieldErrorOverrides: _angular_core.InputSignal<Record<string, string | undefined>>;
|
|
4722
7713
|
/** Emits the raw form value on every change. */
|
|
4723
7714
|
readonly valueChange: _angular_core.OutputEmitterRef<Record<string, unknown>>;
|
|
4724
7715
|
/** Emits the raw form value on a valid submit. */
|
|
@@ -4754,11 +7745,21 @@ declare class SceDynamicFormComponent {
|
|
|
4754
7745
|
readonly renderSections: _angular_core.Signal<RenderSection[]>;
|
|
4755
7746
|
/** Multi-value selections keyed by field key, kept reactive via `liveValues`. */
|
|
4756
7747
|
readonly multiValues: _angular_core.Signal<Record<string, string[]>>;
|
|
4757
|
-
/**
|
|
7748
|
+
/**
|
|
7749
|
+
* Error message per field. Parent-provided `fieldErrorOverrides` always win and are shown
|
|
7750
|
+
* immediately (used for API/store-driven errors). Otherwise native field errors are shown
|
|
7751
|
+
* only after a submit attempt, matching the existing inline-error behaviour.
|
|
7752
|
+
*/
|
|
4758
7753
|
readonly fieldErrors: _angular_core.Signal<Record<string, string>>;
|
|
4759
7754
|
constructor();
|
|
4760
7755
|
/** Evaluates a field's `showWhen` against the current values (active when no condition). */
|
|
4761
7756
|
private isActive;
|
|
7757
|
+
/** Evaluates a `showWhen`/`readonlyWhen` condition against the current live values. */
|
|
7758
|
+
private matchesWhen;
|
|
7759
|
+
/** True when a field must render read-only: display type, static `readonly`, or `readonlyWhen` met. */
|
|
7760
|
+
private isReadonly;
|
|
7761
|
+
/** Human-readable value for a read-only / display field, with a `—` fallback for empties. */
|
|
7762
|
+
displayValue(field: DynamicFieldConfig): string;
|
|
4762
7763
|
private valuesEqual;
|
|
4763
7764
|
/** Raw value limited to currently-active fields. */
|
|
4764
7765
|
private pickActiveValue;
|
|
@@ -4776,7 +7777,7 @@ declare class SceDynamicFormComponent {
|
|
|
4776
7777
|
private bindGroup;
|
|
4777
7778
|
private translateError;
|
|
4778
7779
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceDynamicFormComponent, never>;
|
|
4779
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDynamicFormComponent, "sce-dynamic-form", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; "submitted": { "alias": "submitted"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "formSubmit": "formSubmit"; "formInvalid": "formInvalid"; }, never, never, true, never>;
|
|
7780
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceDynamicFormComponent, "sce-dynamic-form", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; "submitted": { "alias": "submitted"; "required": false; "isSignal": true; }; "fieldErrorOverrides": { "alias": "fieldErrorOverrides"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "formSubmit": "formSubmit"; "formInvalid": "formInvalid"; }, never, never, true, never>;
|
|
4780
7781
|
}
|
|
4781
7782
|
|
|
4782
7783
|
/** Translates a declarative validator spec into Angular `ValidatorFn`s. */
|
|
@@ -4887,7 +7888,7 @@ declare class Tabs {
|
|
|
4887
7888
|
readonly activeId: _angular_core.InputSignal<string>;
|
|
4888
7889
|
readonly variant: _angular_core.InputSignal<"default" | "pills" | "underline">;
|
|
4889
7890
|
readonly size: _angular_core.InputSignal<"small" | "medium" | "large">;
|
|
4890
|
-
readonly justify: _angular_core.InputSignal<"
|
|
7891
|
+
readonly justify: _angular_core.InputSignal<"start" | "end" | "center" | "between">;
|
|
4891
7892
|
readonly tabChange: _angular_core.OutputEmitterRef<string>;
|
|
4892
7893
|
readonly underlineStyle: _angular_core.InputSignal<"text" | "full">;
|
|
4893
7894
|
protected readonly activeValue: _angular_core.WritableSignal<string | number | undefined>;
|
|
@@ -5632,6 +8633,13 @@ interface SceResourceListItem {
|
|
|
5632
8633
|
/** Titled list of downloadable/linked resources from `items`; `titleKey` defaults to the knowledge-centre resources heading. */
|
|
5633
8634
|
declare class SceResourcesListComponent {
|
|
5634
8635
|
readonly items: _angular_core.InputSignal<SceResourceListItem[]>;
|
|
8636
|
+
/**
|
|
8637
|
+
* Defaults to the knowledge-centre resources heading. This was `'knowledgeCenter.resources'`,
|
|
8638
|
+
* a namespace that exists in no i18n bundle — and the one product consumer
|
|
8639
|
+
* (`knowledge-center-topic.html`) does not override it, so the sidebar heading rendered the
|
|
8640
|
+
* literal text `knowledgeCenter.resources`. The real key is `knowledge.resources`, the same
|
|
8641
|
+
* namespace its sibling `titleKey="knowledge.relatedTopics"` already uses.
|
|
8642
|
+
*/
|
|
5635
8643
|
readonly titleKey: _angular_core.InputSignal<string>;
|
|
5636
8644
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceResourcesListComponent, never>;
|
|
5637
8645
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceResourcesListComponent, "sce-resources-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -5837,7 +8845,10 @@ declare class SceFormRichTextComponent implements ControlValueAccessor {
|
|
|
5837
8845
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceFormRichTextComponent, "sce-form-rich-text", never, { "labelTranslateKey": { "alias": "labelTranslateKey"; "required": false; "isSignal": true; }; "editorHeight": { "alias": "editorHeight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5838
8846
|
}
|
|
5839
8847
|
|
|
5840
|
-
/** Picks the `<key>Ar`/`<key>En` property of an object matching the active language (falling back to the other
|
|
8848
|
+
/** Picks the `<key>Ar`/`<key>En` property of an object matching the active language (falling back to the other
|
|
8849
|
+
* language, then to the bare `key`, then to ''). Impure: which field is picked depends on the active language, which a
|
|
8850
|
+
* pure pipe would not observe — the bound object keeps the same reference when the locale flips, so a pure pipe would
|
|
8851
|
+
* keep serving the previous language's field. */
|
|
5841
8852
|
declare class LocalizedValuePipe implements PipeTransform {
|
|
5842
8853
|
private readonly translate;
|
|
5843
8854
|
transform(obj: Record<string, unknown> | null | undefined, key: string, options?: {
|
|
@@ -6091,15 +9102,23 @@ declare class SceOfficeProfileHeroComponent {
|
|
|
6091
9102
|
readonly updateDataClick: _angular_core.OutputEmitterRef<void>;
|
|
6092
9103
|
readonly statusChange: _angular_core.OutputEmitterRef<boolean>;
|
|
6093
9104
|
readonly tabChange: _angular_core.OutputEmitterRef<OfficeProfileTabKey>;
|
|
9105
|
+
/** When a banner URL fails to load, fall back to the empty cover — never image-not-found. */
|
|
9106
|
+
readonly coverFailed: _angular_core.WritableSignal<boolean>;
|
|
9107
|
+
readonly showCoverImage: _angular_core.Signal<boolean>;
|
|
9108
|
+
constructor();
|
|
9109
|
+
onCoverError(): void;
|
|
6094
9110
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOfficeProfileHeroComponent, never>;
|
|
6095
9111
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeProfileHeroComponent, "sce-office-profile-hero", never, { "bannerUrl": { "alias": "bannerUrl"; "required": false; "isSignal": true; }; "logoUrl": { "alias": "logoUrl"; "required": false; "isSignal": true; }; "officeName": { "alias": "officeName"; "required": false; "isSignal": true; }; "cityName": { "alias": "cityName"; "required": false; "isSignal": true; }; "rating": { "alias": "rating"; "required": false; "isSignal": true; }; "ratingCount": { "alias": "ratingCount"; "required": false; "isSignal": true; }; "isAvailable": { "alias": "isAvailable"; "required": false; "isSignal": true; }; "verificationStatus": { "alias": "verificationStatus"; "required": false; "isSignal": true; }; "showOfficeStatusSwitch": { "alias": "showOfficeStatusSwitch"; "required": false; "isSignal": true; }; "officeIsActive": { "alias": "officeIsActive"; "required": false; "isSignal": true; }; "officeStatusSaving": { "alias": "officeStatusSaving"; "required": false; "isSignal": true; }; "updateDataChecking": { "alias": "updateDataChecking"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; "tabKeys": { "alias": "tabKeys"; "required": false; "isSignal": true; }; "tabLabels": { "alias": "tabLabels"; "required": false; "isSignal": true; }; }, { "updateDataClick": "updateDataClick"; "statusChange": "statusChange"; "tabChange": "tabChange"; }, never, never, true, never>;
|
|
6096
9112
|
}
|
|
6097
9113
|
|
|
6098
9114
|
/** Row of headline office statistics: years of experience, project count and service count. */
|
|
6099
9115
|
declare class SceOfficeProfileStatsRowComponent {
|
|
9116
|
+
private readonly translate;
|
|
9117
|
+
private readonly language;
|
|
6100
9118
|
readonly yearsOfExperience: _angular_core.InputSignal<string>;
|
|
6101
9119
|
readonly projectsCount: _angular_core.InputSignal<number>;
|
|
6102
9120
|
readonly servicesCount: _angular_core.InputSignal<number>;
|
|
9121
|
+
readonly metricItems: _angular_core.Signal<OfficeMetricCardItem[]>;
|
|
6103
9122
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOfficeProfileStatsRowComponent, never>;
|
|
6104
9123
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeProfileStatsRowComponent, "sce-office-profile-stats-row", never, { "yearsOfExperience": { "alias": "yearsOfExperience"; "required": false; "isSignal": true; }; "projectsCount": { "alias": "projectsCount"; "required": false; "isSignal": true; }; "servicesCount": { "alias": "servicesCount"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6105
9124
|
}
|
|
@@ -6156,11 +9175,12 @@ declare class SceOfficeProfileOfficialTabComponent {
|
|
|
6156
9175
|
readonly bankNameDisplay: _angular_core.InputSignal<string>;
|
|
6157
9176
|
readonly shortNationalAddress: _angular_core.InputSignal<string>;
|
|
6158
9177
|
readonly ibanNumber: _angular_core.InputSignal<string>;
|
|
9178
|
+
/** Preferred sizes as discrete labels — rendered with `sce-tag` when non-empty. */
|
|
6159
9179
|
readonly preferredProjectSizesDisplay: _angular_core.InputSignal<string[]>;
|
|
9180
|
+
/** Fallback plain text when `preferredProjectSizesDisplay` is empty. */
|
|
6160
9181
|
readonly preferredProjectSizesLabel: _angular_core.InputSignal<string>;
|
|
6161
|
-
readonly useTagChips: _angular_core.InputSignal<boolean>;
|
|
6162
9182
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceOfficeProfileOfficialTabComponent, never>;
|
|
6163
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeProfileOfficialTabComponent, "sce-office-profile-official-tab", never, { "vatNumber": { "alias": "vatNumber"; "required": false; "isSignal": true; }; "commercialRegistrationNumber": { "alias": "commercialRegistrationNumber"; "required": false; "isSignal": true; }; "cityName": { "alias": "cityName"; "required": false; "isSignal": true; }; "bankNameDisplay": { "alias": "bankNameDisplay"; "required": false; "isSignal": true; }; "shortNationalAddress": { "alias": "shortNationalAddress"; "required": false; "isSignal": true; }; "ibanNumber": { "alias": "ibanNumber"; "required": false; "isSignal": true; }; "preferredProjectSizesDisplay": { "alias": "preferredProjectSizesDisplay"; "required": false; "isSignal": true; }; "preferredProjectSizesLabel": { "alias": "preferredProjectSizesLabel"; "required": false; "isSignal": true; };
|
|
9183
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceOfficeProfileOfficialTabComponent, "sce-office-profile-official-tab", never, { "vatNumber": { "alias": "vatNumber"; "required": false; "isSignal": true; }; "commercialRegistrationNumber": { "alias": "commercialRegistrationNumber"; "required": false; "isSignal": true; }; "cityName": { "alias": "cityName"; "required": false; "isSignal": true; }; "bankNameDisplay": { "alias": "bankNameDisplay"; "required": false; "isSignal": true; }; "shortNationalAddress": { "alias": "shortNationalAddress"; "required": false; "isSignal": true; }; "ibanNumber": { "alias": "ibanNumber"; "required": false; "isSignal": true; }; "preferredProjectSizesDisplay": { "alias": "preferredProjectSizesDisplay"; "required": false; "isSignal": true; }; "preferredProjectSizesLabel": { "alias": "preferredProjectSizesLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6164
9184
|
}
|
|
6165
9185
|
|
|
6166
9186
|
/** Collapsible `<details>` panel (open by default) showing the reviewer's rejection note, or an em dash when the note is empty. */
|
|
@@ -6605,6 +9625,18 @@ declare class SceAccountUserVerifyDialogComponent {
|
|
|
6605
9625
|
readonly nationalIdChange: _angular_core.OutputEmitterRef<string>;
|
|
6606
9626
|
readonly birthDateChange: _angular_core.OutputEmitterRef<string>;
|
|
6607
9627
|
readonly submitVerify: _angular_core.OutputEmitterRef<void>;
|
|
9628
|
+
private readonly dynamicForm;
|
|
9629
|
+
readonly initialValue: _angular_core.Signal<{
|
|
9630
|
+
nationalId: string;
|
|
9631
|
+
birthDate: string;
|
|
9632
|
+
}>;
|
|
9633
|
+
readonly formConfig: _angular_core.Signal<DynamicFormConfig>;
|
|
9634
|
+
readonly fieldErrorOverrides: _angular_core.Signal<{
|
|
9635
|
+
birthDate: string;
|
|
9636
|
+
}>;
|
|
9637
|
+
readonly formSubmitted: _angular_core.Signal<boolean>;
|
|
9638
|
+
constructor();
|
|
9639
|
+
onFormValueChange(values: Record<string, unknown>): void;
|
|
6608
9640
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceAccountUserVerifyDialogComponent, never>;
|
|
6609
9641
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceAccountUserVerifyDialogComponent, "sce-account-user-verify-dialog", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; "locale": { "alias": "locale"; "required": true; "isSignal": true; }; "nationalId": { "alias": "nationalId"; "required": true; "isSignal": true; }; "nationalIdError": { "alias": "nationalIdError"; "required": false; "isSignal": true; }; "birthDate": { "alias": "birthDate"; "required": true; "isSignal": true; }; "birthDateError": { "alias": "birthDateError"; "required": false; "isSignal": true; }; "calendarSystem": { "alias": "calendarSystem"; "required": false; "isSignal": true; }; "submitting": { "alias": "submitting"; "required": false; "isSignal": true; }; "actionError": { "alias": "actionError"; "required": false; "isSignal": true; }; }, { "dialogClose": "dialogClose"; "nationalIdChange": "nationalIdChange"; "birthDateChange": "birthDateChange"; "submitVerify": "submitVerify"; }, never, never, true, never>;
|
|
6610
9642
|
}
|
|
@@ -6625,7 +9657,7 @@ interface AssignRoleOption {
|
|
|
6625
9657
|
value: number;
|
|
6626
9658
|
}
|
|
6627
9659
|
/** Dialog for assigning an account user roles and contact details; fully controlled — it mutates nothing, emitting every field change and `submitAssign` to the host — and uses `ViewEncapsulation.None`. */
|
|
6628
|
-
declare class SceAccountUserAssignDialogComponent {
|
|
9660
|
+
declare class SceAccountUserAssignDialogComponent implements OnInit, OnDestroy {
|
|
6629
9661
|
readonly visible: _angular_core.InputSignal<boolean>;
|
|
6630
9662
|
readonly locale: _angular_core.InputSignal<"ar" | "en">;
|
|
6631
9663
|
readonly description: _angular_core.InputSignal<string>;
|
|
@@ -6645,6 +9677,30 @@ declare class SceAccountUserAssignDialogComponent {
|
|
|
6645
9677
|
readonly roleIdsChange: _angular_core.OutputEmitterRef<number[]>;
|
|
6646
9678
|
readonly isActiveChange: _angular_core.OutputEmitterRef<boolean>;
|
|
6647
9679
|
readonly submitAssign: _angular_core.OutputEmitterRef<void>;
|
|
9680
|
+
private readonly dynamicForm;
|
|
9681
|
+
private readonly document;
|
|
9682
|
+
private mediaQuery?;
|
|
9683
|
+
private readonly onMediaChange;
|
|
9684
|
+
/** True when the viewport is ≤ 480 px — drives formConfig columns dynamically. */
|
|
9685
|
+
readonly isMobile: _angular_core.WritableSignal<boolean>;
|
|
9686
|
+
ngOnInit(): void;
|
|
9687
|
+
ngOnDestroy(): void;
|
|
9688
|
+
/** Seed values for every control, read once when the dialog opens. */
|
|
9689
|
+
readonly initialValue: _angular_core.Signal<{
|
|
9690
|
+
nationalId: string;
|
|
9691
|
+
userName: string;
|
|
9692
|
+
birthDate: string;
|
|
9693
|
+
email: string;
|
|
9694
|
+
mobile: string;
|
|
9695
|
+
roleIds: number[];
|
|
9696
|
+
isActive: boolean;
|
|
9697
|
+
}>;
|
|
9698
|
+
/** Surfaces store-driven errors once a submit has been attempted. */
|
|
9699
|
+
readonly submitted: _angular_core.Signal<boolean>;
|
|
9700
|
+
/** Config-driven fields: identity (display) + email/mobile (editable or read-only) + active switch. `roleIds` is rendered separately for design parity. */
|
|
9701
|
+
readonly formConfig: _angular_core.Signal<DynamicFormConfig>;
|
|
9702
|
+
constructor();
|
|
9703
|
+
onFormValueChange(values: Record<string, unknown>): void;
|
|
6648
9704
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SceAccountUserAssignDialogComponent, never>;
|
|
6649
9705
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceAccountUserAssignDialogComponent, "sce-account-user-assign-dialog", never, { "visible": { "alias": "visible"; "required": true; "isSignal": true; }; "locale": { "alias": "locale"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": true; "isSignal": true; }; "assignForm": { "alias": "assignForm"; "required": true; "isSignal": true; }; "requireEmail": { "alias": "requireEmail"; "required": false; "isSignal": true; }; "requireMobile": { "alias": "requireMobile"; "required": false; "isSignal": true; }; "emailError": { "alias": "emailError"; "required": false; "isSignal": true; }; "mobileError": { "alias": "mobileError"; "required": false; "isSignal": true; }; "rolesLoading": { "alias": "rolesLoading"; "required": false; "isSignal": true; }; "roleOptions": { "alias": "roleOptions"; "required": false; "isSignal": true; }; "rolesError": { "alias": "rolesError"; "required": false; "isSignal": true; }; "actionError": { "alias": "actionError"; "required": false; "isSignal": true; }; "submitting": { "alias": "submitting"; "required": false; "isSignal": true; }; }, { "dialogClose": "dialogClose"; "emailChange": "emailChange"; "mobileChange": "mobileChange"; "roleIdsChange": "roleIdsChange"; "isActiveChange": "isActiveChange"; "submitAssign": "submitAssign"; }, never, never, true, never>;
|
|
6650
9706
|
}
|
|
@@ -7081,13 +10137,26 @@ declare class SceRadioGroup implements ControlValueAccessor {
|
|
|
7081
10137
|
readonly name: _angular_core.InputSignal<string>;
|
|
7082
10138
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
7083
10139
|
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
10140
|
+
private readonly destroyRef;
|
|
7084
10141
|
private readonly options;
|
|
7085
10142
|
private readonly selectedValue;
|
|
7086
10143
|
private readonly subscribed;
|
|
10144
|
+
/**
|
|
10145
|
+
* Set by a reactive form through `setDisabledState`. Kept apart from the `disabled` input so a
|
|
10146
|
+
* template-disabled group and a form-disabled one do not overwrite each other.
|
|
10147
|
+
*/
|
|
10148
|
+
private readonly formDisabled;
|
|
10149
|
+
/** The group is disabled when either the input or the bound form control says so. */
|
|
10150
|
+
private readonly isGroupDisabled;
|
|
7087
10151
|
constructor();
|
|
7088
10152
|
writeValue(value: string): void;
|
|
7089
10153
|
registerOnChange(fn: (value: string) => void): void;
|
|
7090
10154
|
registerOnTouched(fn: () => void): void;
|
|
10155
|
+
/**
|
|
10156
|
+
* Required by `ControlValueAccessor`. Without it, `formControl.disable()` left the group fully
|
|
10157
|
+
* interactive — the control reported itself disabled while the user could still change it.
|
|
10158
|
+
*/
|
|
10159
|
+
setDisabledState(isDisabled: boolean): void;
|
|
7091
10160
|
private handleValueChange;
|
|
7092
10161
|
private onChange;
|
|
7093
10162
|
private onTouched;
|
|
@@ -8003,5 +11072,5 @@ declare class SceRegisterLayoutComponent {
|
|
|
8003
11072
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SceRegisterLayoutComponent, "sce-register-layout", never, { "asideTitleKey": { "alias": "asideTitleKey"; "required": false; "isSignal": true; }; "asideDescriptionKey": { "alias": "asideDescriptionKey"; "required": false; "isSignal": true; }; "asideImageSrc": { "alias": "asideImageSrc"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "stepperVariant": { "alias": "stepperVariant"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; }, { "stepChange": "stepChange"; }, never, ["*", "[registerFooter]"], true, never>;
|
|
8004
11073
|
}
|
|
8005
11074
|
|
|
8006
|
-
export { Alert, Breadcrumb, Card, ColumnsEnum, DYNAMIC_MULTI_TYPES, DYNAMIC_NATIVE_TYPES, DashboardPageHeaderComponent, FileType, FormInput, LocalizedValuePipe, OtpInput, Popup, PopupModalBase, RESULT_STATE_ACTION_META, RESULT_STATE_PRESETS, SCE_MIRROR_LABEL_AS_PLACEHOLDER, SceAccordionComponent, SceAccountSwitcherComponent, SceAccountUserAssignDialogComponent, SceAccountUserDetailHeaderComponent, SceAccountUserEditDialogComponent, SceAccountUserPermissionsSectionComponent, SceAccountUserPersonalSectionComponent, SceAccountUserVerifyDialogComponent, SceAccountUsersTabsBarComponent, SceActionDialogComponent, SceApiErrorStateComponent, SceAreaChartComponent, SceArticleDetailComponent, SceArticleLayoutComponent, SceArticlePageComponent, SceArticleSidebarComponent, SceArticleTagsListComponent, SceAsyncPageGateComponent, SceAttachmentsListComponent, SceAuthLayoutComponent, SceBarChartComponent, SceBasicCardComponent, SceBidiIsolate, SceBrandLoaderComponent, SceBulletListComponent, SceBusinessStatusTagComponent, SceButton, SceButtonWithSelectionCount, SceCaptchaInput, SceCardRadioGroupComponent, SceCardsListPageComponent, SceCardsStatisticsComponent, SceCategoryTile, SceChartLegendComponent, SceCheckItem, SceCheckbox, SceChoiceCard, SceCircularProgress, SceConfirmDialogComponent, SceConfirmDialogDemoComponent, SceContactFormPanelComponent, SceContactInfoPanelComponent, SceContentBlockComponent, SceContractQrCodeComponent, SceContractRequestCardComponent, SceCopyButtonComponent, SceCopyRight, SceCriteriaSectionComponent, SceCurrencyInputComponent, SceCustomColsDirective, SceDashboardAccountRoleIconComponent, SceDashboardFeatureComingSoonComponent, SceDashboardLayoutComponent, SceDashboardTableFiltersComponent, SceDataRequestComparisonTableComponent, SceDataRequestCurrentSummaryComponent, SceDataRequestHeaderCardComponent, SceDataRequestMediaComparisonComponent, SceDataRequestProjectChangesComponent, SceDataRequestRejectionPanelComponent, SceDateFieldComponent, SceDatePickerModalComponent, SceDetailHeaderComponent, SceDialogShellComponent, SceDialogShellDemoComponent, SceDivider, SceDonutChartComponent, SceDynamicFormComponent, SceEmptyStateComponent, SceEngineeringOfficeCardComponent, SceEngineeringOfficeCardSkeletonComponent, SceEngineeringOfficeVerificationBadgeComponent, SceEntityInfoCardComponent, SceEntityProfileEditFormComponent, SceEntitySummaryCardComponent, SceEntityTypeCard, SceExportPdfButton, SceExportPdfContainerComponent, SceFaqItemCard, SceFeaturedOfficeCardComponent, SceFeaturedOfficeCardSkeletonComponent, SceFeedbackSectionComponent, SceFieldComponent, SceFileUploadZoneComponent, SceFileUploadZoneDemoComponent, SceFileViewerComponent, SceFileViewerDirective, SceFileViewerService, SceFilterCalendarComponent, SceFilterCalendarRangeComponent, SceFilterDropdownComponent, SceFilterFieldIconComponent, SceFilterFormComponent, SceFormCheckboxRadio, SceFormDialogComponent, SceFormDialogSectionComponent, SceFormError, SceFormFieldsSkeletonComponent, SceFormHint, SceFormLabel, SceFormPageLayoutComponent, SceFormRichTextComponent, SceGaugeChartComponent, SceGearsLoaderComponent, SceGenericTableComponent, SceGenericTableDemoComponent, SceGeoLocationFieldComponent, SceGlobalLoadingBarComponent, SceGoogleMapsLocationPickerComponent, SceGridExpansionDirective, SceGridTableComponent, SceGuidedTourComponent, SceHorizontalBarChartComponent, SceHorizontalWizardStepperComponent, SceIcon, SceIconCard, SceImageGallerySwapperComponent, SceImagePickerComponent, SceInfoFieldCardComponent, SceInfoFieldsGridComponent, SceInfoFieldsSkeletonComponent, SceInfoRowComponent, SceInlineApiErrorComponent, SceInquiryRequestCardComponent, SceInternalUserFormFieldsComponent, SceInternalUserPermissionsSectionComponent, SceInternalUserVerifySectionComponent, SceKnowledgeCenterCategoryGridComponent, SceLandingHeroHeaderComponent, SceLandingMobileMenuComponent, SceLandingNavComponent, SceLangToggleComponent, SceLatestContractsTableComponent, SceLibraryAccessDeniedComponent, SceLineChartComponent, SceListPageLayoutComponent, SceLocationPickerDialogComponent, SceLoginAccountSelectStepComponent, SceLoginCompleteDataStepComponent, SceLoginCredentialsStepComponent, SceLoginErrorStepComponent, SceLoginOtpStepComponent, SceLoginUserTypeStepComponent, SceLogoutModalComponent, SceModalHostComponent, SceMultiSegmentBarChartComponent, SceMultiSegmentGaugeComponent, SceMultiSelectFieldComponent, SceNavCard, SceNavCardsListComponent, SceNewsletterSubscriptionDialogComponent, SceNotificationListComponent, SceNotificationListSkeletonComponent, SceNotificationTypeBadgeComponent, SceOfficeBrandLogoComponent, SceOfficeDetailHeroBodyComponent, SceOfficeDetailLoadingStateComponent, SceOfficeDetailNotFoundComponent, SceOfficeDetailOverviewPanelComponent, SceOfficeDetailProjectsPanelComponent, SceOfficeDetailReviewsPanelComponent, SceOfficeDetailTabsBarComponent, SceOfficeDetailsSkeletonComponent, SceOfficeLocationMapComponent, SceOfficeMetricCardComponent, SceOfficeMetricCardsRowComponent, SceOfficeProfileContactTabComponent, SceOfficeProfileEditBioSectionComponent, SceOfficeProfileEditContactSectionComponent, SceOfficeProfileEditMediaSectionComponent, SceOfficeProfileEditOfficialSectionComponent, SceOfficeProfileEditProjectsSectionComponent, SceOfficeProfileHeroComponent, SceOfficeProfileOfficialTabComponent, SceOfficeProfileOverviewTabComponent, SceOfficeProfileProjectDeleteDialogComponent, SceOfficeProfileProjectEditorDialogComponent, SceOfficeProfileProjectsTabComponent, SceOfficeProfileStatsRowComponent, SceOfficeProfileSubmitResultComponent, SceOfficeProjectGalleryComponent, SceOfficeProjectsSkeletonComponent, SceOfficesFiltersSidebarComponent, SceOfficesGridPanelComponent, SceOfficesMapPanelComponent, SceOfficesViewToggleComponent, SceOfflineBannerComponent, SceOptionGroup, SceOsmLeafletMapComponent, SceOsmLocationPickerComponent, SceOsmOfficesMapComponent, SceOverviewStatCardComponent, SceOverviewStatSparklineComponent, ScePackageFeatureCard, ScePageErrorComponent, ScePageHeaderComponent, ScePaginatorComponent, ScePaginatorDemoComponent, ScePasswordFieldComponent, ScePendingUpdateBannerComponent, ScePhoneNumberComponent, ScePieChartComponent, ScePlatformSettingsFieldsComponent, SceProfileHeroComponent, SceProfileHeroSkeletonComponent, SceProfileInfoSectionComponent, SceProfilePhotoEditDialogComponent, SceProfilePhotoSectionComponent, SceProgressBar, SceProgressCardComponent, ScePublicLegalProseComponent, SceQuickFilterBarComponent, SceRadioButtonComponent, SceRadioGroup, SceRadioGroupOption, SceRadioOptionCard, SceRangeBar, SceRegisterLayoutComponent, SceRelatedCardsListComponent, SceRequestCardSkeletonComponent, SceRequestDetailsCardComponent, SceRequestHeaderComponent, SceResourcesListComponent, SceResultStateComponent, SceReviewFieldTablePanelComponent, SceRingChartComponent, SceRingLoaderComponent, SceRowActionIconComponent, SceSaveFilterPopupComponent, SceScaleIndicatorComponent, SceScrollToTopButtonComponent, SceSearchableUsersListComponent, SceSelectFieldComponent, SceSelectableListWithSearchComponent, SceSelectionButton, SceServiceCardComponent, SceServiceCardStartButtonComponent, SceServiceDetailSkeletonComponent, SceServiceMiniCardComponent, SceServiceMiniCardSkeletonComponent, SceServicesTopFiltersComponent, SceSettingsLayoutComponent, SceSidebarComponent, SceSkeleton, SceSpinner, SceStackedDistributionChartComponent, SceStamp, SceStarRatingInputComponent, SceStatCardSkeletonComponent, SceStatGaugeComponent, SceStatRingComponent, SceStatsAnalyticsCardComponent, SceStatusPageComponent, SceStoreLocationsComponent, SceSummaryCardComponent, SceSupportContactCard, SceSupportThreadComponent, SceSwitchComponent, SceTabPanel, SceTableSkeletonComponent, SceTagComponent, SceTextFieldComponent, SceTextareaFieldComponent, SceThemeSwitcherComponent, SceThemeToggleButtonComponent, SceTimelineComponent, SceTooltip, SceUnitInputComponent, SceUnitInputFieldComponent, SceUserDropdownPickerComponent, SceUserVerifySectionPanelComponent, SceVerticalStepperComponent, SceVideoPlayerComponent, Stepper, Tabs, TabsInkbarRtlDirective, addHijriMonths, buildCalendarGrid, buildDynamicFormGroup, buildFieldValidators, detectFileType, getHijriYmdFromDate, isDataUri, mimeFromDataUri, parseValueToDate, resolveBusinessStatusPresentation, resolveBusinessStatusTone, scheduleLeafletResize, toBusinessStatusTableCell, toGregorianValue, toHijriValue };
|
|
8007
|
-
export type { AccordionItem, AccountSwitcherOption, AccountUserAssignForm, AccountUserEditReadOnlyField, AccountUserEditRoleOption, AccountUsersTab, ActionDialogField, ActionDialogVariant, AppDateLocale, AssignRoleOption, BarSeriesData, BasicCardLayout, BidiIsolateDir, BreadcrumbItem, BusinessStatusPresentation, BusinessStatusTone, CalendarGrid, CalendarSystem, CardRadioOption, ChartLegendItem, ChartLineSeriesData, ChartSeriesItem, ChartTooltipData, ConfirmDialogVariant, ConfirmPayload, ConfirmReasonField, ContractRequestCard, ContractRow, DashboardFilterField, DashboardFilterFieldOption, DashboardNotificationTypeVariant, DashboardRole, DataRequestComparisonRow, DataRequestMediaVariant, DateRangeValue, DetailBreadcrumbItem, DetailHeaderAction, DialogSize, DynamicFieldConfig, DynamicFieldType, DynamicFieldValidators, DynamicFieldValue, DynamicFormConfig, DynamicFormSection, DynamicShowWhen, EChartTooltipParam, EmptyStateTone, EntityInfoCardBadgeTone, FeaturedOffice, FieldSize, FileSource, FileSourceBase64, FileSourceBlob, FileSourceUrl, FileTypeInput, FileUploadExistingItem, FileUploadZoneStrings, FileViewerData, FilterDateRangeValue, FilterDropdownOption, FilterFieldConfig, FilterFieldOption, FilterFieldType, FilterFormConfig, FormDialogSecondaryAction, FormDialogVariant, GeoLocationValue, GoogleMapsLocationValue, GridAction, GridActionType, GridColumn, GridColumnAction, GridMenuAction, GridMenuItem, GridPageEvent, GridRow, GridSortEvent, GuestProjectStatus, GuidedTourStep, HorizontalBarItem, IconSize, ImageGallerySwapperItem, InputFilter, InternalUserFormFieldsMode, InternalUserRoleOption, KnowledgeCategoryItem, LandingBreadcrumbItem, LandingNavItem, LoaderSize, LoaderVariant, LocationPickerValue, LoginAccountOptionView, LoginUserTypeCard, BreadcrumbItem$1 as MoleculeBreadcrumbItem, MultiSegmentBarItem, NewsletterSubscriptionFormValues, TabItem as OfficeDetailTabItem, OfficeEditProjectItem, OfficeGridViewMode, OfficeMetricCardItem, OfficeProfileDisplayProject, OfficeProfileTabKey, OfficeProject, OfficeReview, OfficeSizeFilter, OfficeSizeOption, OfficeSortMode, OfficeSortOption, OfficeTabKey, OfficeViewMode, OsmMapMarker, OverlayLineSeries, ProfileBankOption, ProfileInfoViewData, ProfileViewField, ProfileViewSection, ProgressConfig, ProjectChangeDisplayItem, ProjectChangeDisplayMetric, ProjectChangeDisplayType, PsSettingField, PsSettingForceMajeureDurationsValue, QuickFilterTag as QuickFilterBarTag, QuickFilterTag$1 as QuickFilterTag, RatingDistributionLine, RequestHeaderMetaItem, RequestStatusPresentation, RestrictInput, ResultStateAction, ResultStatePreset, ResultStateStatus, ReviewFieldItem, RingChartLegendItem, SaveFilterMode, ScaleIndicatorLabels, SceArticleTagItem, SceArticleTagVariant, SceAttachmentListItem, SceButtonSize, SceButtonVariant, SceChoiceCardTone, SceCriteriaItem, SceCriteriaObservation, SceCriteriaSectionData, SceCriteriaStatus, SceEngineeringOfficeCardModel, SceEntitySummarySector, SceFaqItemCardForm, SceFieldOption, SceFormCheckboxRadioType, SceIconCardTone, SceImagePickerError, SceInquiryRequest, SceInquiryRequestStatus, SceNavBadgeVariant, SceNavCardItem, SceNavChildItem, SceNavItem, SceNavSection, SceNotificationAction, SceNotificationFilter, SceNotificationItem, SceNotificationTone, SceOptionItem, SceOsmOfficeMapPoint, SceRadioOption, SceRangeBarValue, SceRelatedCardItem, SceResourceListItem, SceSelectOption, SceSidebarBrand, SceSidebarRailAction, SceSupportResponderRole, SceSupportThreadAttachment, SceSupportThreadFeedback, SceSupportThreadReply, SceSupportThreadResponse, SceSupportThreadStatus, SceTableColumn, SceTablePagination, SceTableRow, SceTableRowActions, SceTableSkeletonLayout, SceTableSort, SceTableStatusCell, SceTableSwitchCell, SceTagSize, SceTagVariant, SceTextFieldValidationMode, SceUserDropdownItem, SearchableUserListItem, SelectOption, SelectableListItem, SelectionMode, ServicesTopFiltersChange, SkeletonAnimation, SkeletonVariant, StackedDistributionChartItem, StatGaugeRow, StatusConfig, StatusPageVariant, StatusVariant, StepItem$1 as StepItem, StepItem as StepperStepItem, TabItem$1 as TabItem, TimelineItem, TimelineSegment, TooltipPosition, UserDetailBadge, UserDetailField, UserDetailStatusTag, VerifiedUserData, VerifyPayload, VideoCaption, VideoPreload, VideoSource };
|
|
11075
|
+
export { ANIMATION, Alert, BAR_RADIUS_HORIZONTAL, BAR_RADIUS_VERTICAL, Breadcrumb, CHART_DIVERGING, CHART_INK, CHART_PALETTE_DARK, CHART_PALETTE_LIGHT, CHART_SEQUENTIAL, CHART_STATUS, Card, ColumnsEnum, DYNAMIC_MULTI_TYPES, DYNAMIC_NATIVE_TYPES, DashboardPageHeaderComponent, FileType, FormInput, LocalizedValuePipe, MARK_SEPARATOR, OtpInput, Popup, PopupModalBase, RESULT_STATE_ACTION_META, RESULT_STATE_PRESETS, SCE_MIRROR_LABEL_AS_PLACEHOLDER, SceAccordionComponent, SceAccountSwitcherComponent, SceAccountUserAssignDialogComponent, SceAccountUserDetailHeaderComponent, SceAccountUserEditDialogComponent, SceAccountUserPermissionsSectionComponent, SceAccountUserPersonalSectionComponent, SceAccountUserVerifyDialogComponent, SceAccountUsersTabsBarComponent, SceActionDialogComponent, SceApiErrorStateComponent, SceArcDiagramChartComponent, SceAreaChartComponent, SceArticleDetailComponent, SceArticleLayoutComponent, SceArticlePageComponent, SceArticleSidebarComponent, SceArticleTagsListComponent, SceAsyncPageGateComponent, SceAttachmentsListComponent, SceAuthLayoutComponent, SceBarChartComponent, SceBasicCardComponent, SceBidiIsolate, SceBoxplotChartComponent, SceBrandLoaderComponent, SceBubbleChartComponent, SceBulletChartComponent, SceBulletListComponent, SceBumpChartComponent, SceBusinessStatusTagComponent, SceButton, SceButtonWithSelectionCount, SceCalendarHeatmapChartComponent, SceCandlestickChartComponent, SceCaptchaInput, SceCardRadioGroupComponent, SceCardsListPageComponent, SceCardsStatisticsComponent, SceCategoryTile, SceChartDataTableComponent, SceChartLegendComponent, SceCheckItem, SceCheckbox, SceChoiceCard, SceChordChartComponent, SceCircularProgress, SceComboDualAxisChartComponent, SceConfirmDialogComponent, SceConfirmDialogDemoComponent, SceContactFormPanelComponent, SceContactInfoPanelComponent, SceContentBlockComponent, SceContractQrCodeComponent, SceContractRequestCardComponent, SceCopyButtonComponent, SceCopyRight, SceCorrelationMatrixChartComponent, SceCriteriaSectionComponent, SceCurrencyInputComponent, SceCustomColsDirective, SceDashboardAccountRoleIconComponent, SceDashboardFeatureComingSoonComponent, SceDashboardLayoutComponent, SceDashboardTableFiltersComponent, SceDataRequestComparisonTableComponent, SceDataRequestCurrentSummaryComponent, SceDataRequestHeaderCardComponent, SceDataRequestMediaComparisonComponent, SceDataRequestProjectChangesComponent, SceDataRequestRejectionPanelComponent, SceDateFieldComponent, SceDatePickerModalComponent, SceDetailHeaderComponent, SceDialogShellComponent, SceDialogShellDemoComponent, SceDivergingBarChartComponent, SceDivider, SceDonutChartComponent, SceDumbbellChartComponent, SceDynamicFormComponent, SceEffectScatterChartComponent, SceEmptyStateComponent, SceEngineeringOfficeCardComponent, SceEngineeringOfficeCardSkeletonComponent, SceEngineeringOfficeVerificationBadgeComponent, SceEntityInfoCardComponent, SceEntityProfileEditFormComponent, SceEntitySummaryCardComponent, SceEntityTypeCard, SceExportPdfButton, SceExportPdfContainerComponent, SceFaqItemCard, SceFeaturedOfficeCardComponent, SceFeaturedOfficeCardSkeletonComponent, SceFeedbackSectionComponent, SceFieldComponent, SceFileUploadZoneComponent, SceFileUploadZoneDemoComponent, SceFileViewerComponent, SceFileViewerDirective, SceFileViewerService, SceFilterCalendarComponent, SceFilterCalendarRangeComponent, SceFilterDropdownComponent, SceFilterFieldIconComponent, SceFilterFormComponent, SceFlowMapChartComponent, SceForceGraphChartComponent, SceFormCheckboxRadio, SceFormDialogComponent, SceFormDialogSectionComponent, SceFormError, SceFormFieldsSkeletonComponent, SceFormHint, SceFormLabel, SceFormPageLayoutComponent, SceFormRichTextComponent, SceFunnelChartComponent, SceGanttChartComponent, SceGaugeChartComponent, SceGearsLoaderComponent, SceGenericTableComponent, SceGenericTableDemoComponent, SceGeoLocationFieldComponent, SceGlobalLoadingBarComponent, SceGoogleMapsLocationPickerComponent, SceGridExpansionDirective, SceGridTableComponent, SceGuidedTourComponent, SceHeatmapChartComponent, SceHistogramChartComponent, SceHorizontalBarChartComponent, SceHorizontalWizardStepperComponent, SceIcicleChartComponent, SceIcon, SceIconCard, SceImageGallerySwapperComponent, SceImagePickerComponent, SceInfoFieldCardComponent, SceInfoFieldsGridComponent, SceInfoFieldsSkeletonComponent, SceInfoRowComponent, SceInlineApiErrorComponent, SceInquiryRequestCardComponent, SceInternalUserFormFieldsComponent, SceInternalUserPermissionsSectionComponent, SceInternalUserVerifySectionComponent, SceKnowledgeCenterCategoryGridComponent, SceLandingHeroHeaderComponent, SceLandingMobileMenuComponent, SceLandingNavComponent, SceLangToggleComponent, SceLatestContractsTableComponent, SceLibraryAccessDeniedComponent, SceLineChartComponent, SceListPageLayoutComponent, SceLocationPickerDialogComponent, SceLoginAccountSelectStepComponent, SceLoginCompleteDataStepComponent, SceLoginCredentialsStepComponent, SceLoginErrorStepComponent, SceLoginOtpStepComponent, SceLoginUserTypeStepComponent, SceLogoutModalComponent, SceLollipopChartComponent, SceModalHostComponent, SceMultiSegmentBarChartComponent, SceMultiSegmentGaugeComponent, SceMultiSelectFieldComponent, SceNavCard, SceNavCardsListComponent, SceNetworkGraphChartComponent, SceNewsletterSubscriptionDialogComponent, SceNotificationListComponent, SceNotificationListSkeletonComponent, SceNotificationTypeBadgeComponent, SceOfficeBrandLogoComponent, SceOfficeDetailHeroBodyComponent, SceOfficeDetailLoadingStateComponent, SceOfficeDetailNotFoundComponent, SceOfficeDetailOverviewPanelComponent, SceOfficeDetailProjectsPanelComponent, SceOfficeDetailReviewsPanelComponent, SceOfficeDetailTabsBarComponent, SceOfficeDetailsSkeletonComponent, SceOfficeLocationMapComponent, SceOfficeMetricCardComponent, SceOfficeMetricCardsRowComponent, SceOfficeProfileContactTabComponent, SceOfficeProfileEditBioSectionComponent, SceOfficeProfileEditContactSectionComponent, SceOfficeProfileEditMediaSectionComponent, SceOfficeProfileEditOfficialSectionComponent, SceOfficeProfileEditProjectsSectionComponent, SceOfficeProfileHeroComponent, SceOfficeProfileOfficialTabComponent, SceOfficeProfileOverviewTabComponent, SceOfficeProfileProjectDeleteDialogComponent, SceOfficeProfileProjectEditorDialogComponent, SceOfficeProfileProjectsTabComponent, SceOfficeProfileStatsRowComponent, SceOfficeProfileSubmitResultComponent, SceOfficeProjectGalleryComponent, SceOfficeProjectsSkeletonComponent, SceOfficesFiltersSidebarComponent, SceOfficesGridPanelComponent, SceOfficesMapPanelComponent, SceOfficesViewToggleComponent, SceOfflineBannerComponent, SceOhlcVolumeChartComponent, SceOptionGroup, SceOsmLeafletMapComponent, SceOsmLocationPickerComponent, SceOsmOfficesMapComponent, SceOverviewStatCardComponent, SceOverviewStatSparklineComponent, ScePackageFeatureCard, ScePageErrorComponent, ScePageHeaderComponent, ScePaginatorComponent, ScePaginatorDemoComponent, SceParallelCoordinatesChartComponent, SceParetoChartComponent, ScePasswordFieldComponent, ScePendingUpdateBannerComponent, ScePhoneNumberComponent, ScePictorialBarChartComponent, ScePieChartComponent, ScePlatformSettingsFieldsComponent, ScePolarBarChartComponent, ScePopulationPyramidChartComponent, SceProfileHeroComponent, SceProfileHeroSkeletonComponent, SceProfileInfoSectionComponent, SceProfilePhotoEditDialogComponent, SceProfilePhotoSectionComponent, SceProgressBar, SceProgressCardComponent, ScePublicLegalProseComponent, ScePunchCardChartComponent, ScePyramidChartComponent, SceQuadrantChartComponent, SceQuickFilterBarComponent, SceRadarChartComponent, SceRadarComparisonChartComponent, SceRadialBarChartComponent, SceRadioButtonComponent, SceRadioGroup, SceRadioGroupOption, SceRadioOptionCard, SceRangeAreaChartComponent, SceRangeBar, SceRegionMapChartComponent, SceRegisterLayoutComponent, SceRelatedCardsListComponent, SceRequestCardSkeletonComponent, SceRequestDetailsCardComponent, SceRequestHeaderComponent, SceResourcesListComponent, SceResultStateComponent, SceReviewFieldTablePanelComponent, SceRingChartComponent, SceRingLoaderComponent, SceRoseChartComponent, SceRowActionIconComponent, SceSankeyChartComponent, SceSaveFilterPopupComponent, SceScaleIndicatorComponent, SceScatterChartComponent, SceScatterRegressionChartComponent, SceScrollToTopButtonComponent, SceSearchableUsersListComponent, SceSelectFieldComponent, SceSelectableListWithSearchComponent, SceSelectionButton, SceServiceCardComponent, SceServiceCardStartButtonComponent, SceServiceDetailSkeletonComponent, SceServiceMiniCardComponent, SceServiceMiniCardSkeletonComponent, SceServicesTopFiltersComponent, SceSettingsLayoutComponent, SceSidebarComponent, SceSkeleton, SceSlopeChartComponent, SceSparklineComponent, SceSpinner, SceStackedAreaChartComponent, SceStackedDistributionChartComponent, SceStamp, SceStarRatingInputComponent, SceStatCardSkeletonComponent, SceStatGaugeComponent, SceStatRingComponent, SceStatsAnalyticsCardComponent, SceStatusPageComponent, SceStepLineChartComponent, SceStoreLocationsComponent, SceStreamGraphChartComponent, SceSummaryCardComponent, SceSunburstChartComponent, SceSupportContactCard, SceSupportThreadComponent, SceSwitchComponent, SceTabPanel, SceTableSkeletonComponent, SceTagComponent, SceTextFieldComponent, SceTextareaFieldComponent, SceThemeRiverChartComponent, SceThemeSwitcherComponent, SceThemeToggleButtonComponent, SceTimelineComponent, SceTooltip, SceTornadoChartComponent, SceTreeChartComponent, SceTreemapChartComponent, SceTreemapDrilldownChartComponent, SceUnitInputComponent, SceUnitInputFieldComponent, SceUserDropdownPickerComponent, SceUserVerifySectionPanelComponent, SceVerticalStepperComponent, SceVideoPlayerComponent, SceWaterfallChartComponent, SceWinLossChartComponent, Stepper, Tabs, TabsInkbarRtlDirective, addHijriMonths, axisBase, buildCalendarGrid, buildDynamicFormGroup, buildFieldValidators, chartBase, detectFileType, getHijriYmdFromDate, injectChartMode, isDataUri, legendBase, mimeFromDataUri, palette, parseValueToDate, resolveBusinessStatusPresentation, resolveBusinessStatusTone, scheduleLeafletResize, seriesColor, toBusinessStatusTableCell, toGregorianValue, toHijriValue, tooltipBase, verticalFade };
|
|
11076
|
+
export type { AccordionItem, AccountSwitcherOption, AccountUserAssignForm, AccountUserEditReadOnlyField, AccountUserEditRoleOption, AccountUsersTab, ActionDialogField, ActionDialogVariant, AppDateLocale, ArcDiagramLink, ArcDiagramNode, AssignRoleOption, AsyncPageGateSkeletonVariant, BarSeriesData, BasicCardLayout, BidiIsolateDir, BoxplotSummary, BreadcrumbItem, BubbleSeriesData, BulletItem, BumpChartSeries, BusinessStatusPresentation, BusinessStatusTone, CalendarGrid, CalendarHeatmapEntry, CalendarSystem, CardRadioOption, ChartLegendItem, ChartLineSeriesData, ChartMode, ChartSeriesItem, ChartTooltipData, ChordLink, ChordNode, ComboBarSeriesData, ComboLineSeriesData, ConfirmDialogVariant, ConfirmPayload, ConfirmReasonField, ContractRequestCard, ContractRow, DashboardFilterField, DashboardFilterFieldOption, DashboardNotificationTypeVariant, DashboardRole, DataRequestComparisonRow, DataRequestMediaVariant, DateRangeValue, DetailBreadcrumbItem, DetailHeaderAction, DialogSize, DivergingBarItem, DumbbellItem, DynamicFieldConfig, DynamicFieldType, DynamicFieldValidators, DynamicFieldValue, DynamicFormConfig, DynamicFormSection, DynamicShowWhen, EChartTooltipParam, EffectScatterPoint, EmptyStateTone, EntityInfoCardBadgeTone, FeaturedOffice, FieldSize, FileSource, FileSourceBase64, FileSourceBlob, FileSourceUrl, FileTypeInput, FileUploadExistingItem, FileUploadZoneStrings, FileViewerData, FilterDateRangeValue, FilterDropdownOption, FilterFieldConfig, FilterFieldOption, FilterFieldType, FilterFormConfig, FlowMapGeoJson, FlowMapRoute, ForceGraphCategory, ForceGraphLink, ForceGraphNode, FormDialogSecondaryAction, FormDialogVariant, FunnelStage, GanttTask, GeoLocationValue, GoogleMapsLocationValue, GridAction, GridActionType, GridColumn, GridColumnAction, GridMenuAction, GridMenuItem, GridPageEvent, GridRow, GridSortEvent, GuestProjectStatus, GuidedTourStep, HeatmapCell, HistogramBins, HorizontalBarItem, IcicleNode, IconSize, ImageGallerySwapperItem, InputFilter, InternalUserFormFieldsMode, InternalUserRoleOption, KnowledgeCategoryItem, LandingBreadcrumbItem, LandingNavItem, LinearRegressionResult, LoaderSize, LoaderVariant, LocationPickerValue, LoginAccountOptionView, LoginUserTypeCard, LollipopItem, BreadcrumbItem$1 as MoleculeBreadcrumbItem, MultiSegmentBarItem, NetworkGraphCategory, NetworkGraphLink, NetworkGraphNode, NewsletterSubscriptionFormValues, TabItem as OfficeDetailTabItem, OfficeEditProjectItem, OfficeGridViewMode, OfficeMetricCardItem, OfficeProfileDisplayProject, OfficeProfileTabKey, OfficeProject, OfficeReview, OfficeSizeFilter, OfficeSizeOption, OfficeSortMode, OfficeSortOption, OfficeTabKey, OfficeViewMode, OhlcDatum$1 as OhlcDatum, OsmMapMarker, OverlayLineSeries, ParallelAxisDef, ParallelRecord, ParetoDatum, PictorialBarItem, PolarBarSeriesItem, PopulationPyramidBand, ProfileBankOption, ProfileInfoViewData, ProfileViewField, ProfileViewSection, ProgressConfig, ProjectChangeDisplayItem, ProjectChangeDisplayMetric, ProjectChangeDisplayType, PsSettingField, PsSettingForceMajeureDurationsValue, PunchCardCell, PyramidLevel, QuadrantSeriesData, QuickFilterTag as QuickFilterBarTag, QuickFilterTag$1 as QuickFilterTag, RadarComparisonEntity, RadarIndicator, RadarSeriesData, RadialBarSeriesItem, RatingDistributionLine, RegionMapDatum, RegionMapGeoJson, RegressionPoint, RequestHeaderMetaItem, RequestStatusPresentation, RestrictInput, ResultStateAction, ResultStatePreset, ResultStateStatus, ReviewFieldItem, RingChartLegendItem, SankeyLink, SankeyNode, SaveFilterMode, ScaleIndicatorLabels, ScatterSeriesData, SceArticleTagItem, SceArticleTagVariant, SceAttachmentListItem, SceButtonSize, SceButtonVariant, SceChoiceCardTone, SceCriteriaItem, SceCriteriaObservation, SceCriteriaSectionData, SceCriteriaStatus, SceEngineeringOfficeCardModel, SceEntitySummarySector, SceFaqItemCardForm, SceFieldOption, SceFormCheckboxRadioType, SceIconCardTone, SceImagePickerError, SceInquiryRequest, SceInquiryRequestStatus, SceNavBadgeVariant, SceNavCardItem, SceNavChildItem, SceNavItem, SceNavSection, SceNotificationAction, SceNotificationFilter, SceNotificationItem, SceNotificationTone, SceOptionItem, SceOsmOfficeMapPoint, SceRadioOption, SceRangeBarValue, SceRelatedCardItem, SceResourceListItem, SceSelectOption, SceSidebarBrand, SceSidebarRailAction, SceSupportResponderRole, SceSupportThreadAttachment, SceSupportThreadFeedback, SceSupportThreadReply, SceSupportThreadResponse, SceSupportThreadStatus, SceTableColumn, SceTablePagination, SceTableRow, SceTableRowActions, SceTableSkeletonLayout, SceTableSort, SceTableStatusCell, SceTableSwitchCell, SceTagSize, SceTagVariant, SceTextFieldInlineAlign, SceTextFieldInlineLayout, SceTextFieldValidationMode, SceUserDropdownItem, SearchableUserListItem, SelectOption, SelectableListItem, SelectionMode, ServicesTopFiltersChange, SkeletonAnimation, SkeletonVariant, SlopeChartItem, StackedAreaMode, StackedDistributionChartItem, StatGaugeRow, StatusConfig, StatusPageVariant, StatusVariant, StepItem$1 as StepItem, StepLineEdge, StepItem as StepperStepItem, StreamGraphPoint, StreamGraphSeries, SunburstNode, TabItem$1 as TabItem, ThemeRiverDataPoint, TimelineItem, TimelineSegment, TooltipPosition, TornadoItem, TreeNode, TreemapDrilldownNode, TreemapNode, UserDetailBadge, UserDetailField, UserDetailStatusTag, VerifiedUserData, VerifyPayload, VideoCaption, VideoPreload, VideoSource, WaterfallItem, WaterfallSegment, WinLossOutcome };
|