@mj-biz-apps/common-ng 5.40.0 → 5.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/stat-tile/__tests__/stat-tile.test.d.ts +2 -0
- package/dist/lib/components/stat-tile/__tests__/stat-tile.test.d.ts.map +1 -0
- package/dist/lib/components/stat-tile/__tests__/stat-tile.test.js +110 -0
- package/dist/lib/components/stat-tile/__tests__/stat-tile.test.js.map +1 -0
- package/dist/lib/components/stat-tile/stat-row.component.d.ts +33 -0
- package/dist/lib/components/stat-tile/stat-row.component.d.ts.map +1 -0
- package/dist/lib/components/stat-tile/stat-row.component.js +67 -0
- package/dist/lib/components/stat-tile/stat-row.component.js.map +1 -0
- package/dist/lib/components/stat-tile/stat-tile.component.d.ts +117 -0
- package/dist/lib/components/stat-tile/stat-tile.component.d.ts.map +1 -0
- package/dist/lib/components/stat-tile/stat-tile.component.js +204 -0
- package/dist/lib/components/stat-tile/stat-tile.component.js.map +1 -0
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-tile.test.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/stat-tile/__tests__/stat-tile.test.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import '@angular/compiler';
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import { StatTileComponent } from '../stat-tile.component';
|
|
4
|
+
import { StatRowComponent } from '../stat-row.component';
|
|
5
|
+
/**
|
|
6
|
+
* These pin BEHAVIOUR, not markup: the em-dash rule and the "interactive only when observed" rule
|
|
7
|
+
* are the two things every consuming dashboard depends on, and both are silent when they regress —
|
|
8
|
+
* a zero looks like good news, and a dead tile looks like a tile.
|
|
9
|
+
*/
|
|
10
|
+
describe('StatTileComponent', () => {
|
|
11
|
+
describe('the em-dash rule', () => {
|
|
12
|
+
it('renders an em dash for null — an unreadable count is NOT zero', () => {
|
|
13
|
+
const tile = new StatTileComponent();
|
|
14
|
+
tile.Value = null;
|
|
15
|
+
expect(tile.DisplayValue).toBe('—');
|
|
16
|
+
});
|
|
17
|
+
it('renders an em dash for undefined, the shape a missing property arrives as', () => {
|
|
18
|
+
const tile = new StatTileComponent();
|
|
19
|
+
tile.Value = undefined;
|
|
20
|
+
expect(tile.DisplayValue).toBe('—');
|
|
21
|
+
});
|
|
22
|
+
it('renders a real zero as "0" — nothing to do is a legitimate answer', () => {
|
|
23
|
+
const tile = new StatTileComponent();
|
|
24
|
+
tile.Value = 0;
|
|
25
|
+
expect(tile.DisplayValue).toBe('0');
|
|
26
|
+
});
|
|
27
|
+
it('passes a pre-formatted string through untouched', () => {
|
|
28
|
+
const tile = new StatTileComponent();
|
|
29
|
+
tile.Value = '1,204';
|
|
30
|
+
expect(tile.DisplayValue).toBe('1,204');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('interactivity follows the subscription', () => {
|
|
34
|
+
it('is not clickable with no subscriber', () => {
|
|
35
|
+
const tile = new StatTileComponent();
|
|
36
|
+
expect(tile.IsClickable).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
it('becomes clickable once something subscribes', () => {
|
|
39
|
+
const tile = new StatTileComponent();
|
|
40
|
+
tile.Clicked.subscribe(() => undefined);
|
|
41
|
+
expect(tile.IsClickable).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
it('emits on activation when clickable', () => {
|
|
44
|
+
const tile = new StatTileComponent();
|
|
45
|
+
let fired = 0;
|
|
46
|
+
tile.Clicked.subscribe(() => (fired += 1));
|
|
47
|
+
tile.OnActivate();
|
|
48
|
+
expect(fired).toBe(1);
|
|
49
|
+
});
|
|
50
|
+
it('swallows activation when nothing is listening, rather than emitting into the void', () => {
|
|
51
|
+
const tile = new StatTileComponent();
|
|
52
|
+
expect(() => tile.OnActivate()).not.toThrow();
|
|
53
|
+
expect(tile.IsClickable).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
it('prevents the default on Space so the tile does not scroll the dashboard', () => {
|
|
56
|
+
const tile = new StatTileComponent();
|
|
57
|
+
tile.Clicked.subscribe(() => undefined);
|
|
58
|
+
let prevented = false;
|
|
59
|
+
tile.OnActivate({ preventDefault: () => (prevented = true) });
|
|
60
|
+
expect(prevented).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* ⚠ THE REGRESSION THIS FILE EXISTS FOR. A template binding subscribes at bind time whatever
|
|
64
|
+
* its handler expression later decides, so `(Clicked)="tile.Target ? Go() : null"` made every
|
|
65
|
+
* tile in a mixed row look and behave like a button. Contracts' dashboard shipped that; the
|
|
66
|
+
* inert "Clients with special terms" tile showed a pointer and did nothing.
|
|
67
|
+
*/
|
|
68
|
+
it('an explicit Clickable=false beats an observed subscription', () => {
|
|
69
|
+
const tile = new StatTileComponent();
|
|
70
|
+
tile.Clicked.subscribe(() => undefined);
|
|
71
|
+
tile.Clickable = false;
|
|
72
|
+
expect(tile.IsClickable).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
it('does not emit when explicitly not clickable, even with a subscriber', () => {
|
|
75
|
+
const tile = new StatTileComponent();
|
|
76
|
+
let fired = 0;
|
|
77
|
+
tile.Clicked.subscribe(() => (fired += 1));
|
|
78
|
+
tile.Clickable = false;
|
|
79
|
+
tile.OnActivate();
|
|
80
|
+
expect(fired).toBe(0);
|
|
81
|
+
});
|
|
82
|
+
it('an explicit Clickable=true beats having no subscriber', () => {
|
|
83
|
+
const tile = new StatTileComponent();
|
|
84
|
+
tile.Clickable = true;
|
|
85
|
+
expect(tile.IsClickable).toBe(true);
|
|
86
|
+
});
|
|
87
|
+
it('falls back to the subscription when Clickable is unset', () => {
|
|
88
|
+
const tile = new StatTileComponent();
|
|
89
|
+
expect(tile.Clickable).toBeNull();
|
|
90
|
+
expect(tile.IsClickable).toBe(false);
|
|
91
|
+
tile.Clicked.subscribe(() => undefined);
|
|
92
|
+
expect(tile.IsClickable).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
it('does not prevent the default when it is not going to act', () => {
|
|
95
|
+
const tile = new StatTileComponent();
|
|
96
|
+
let prevented = false;
|
|
97
|
+
tile.OnActivate({ preventDefault: () => (prevented = true) });
|
|
98
|
+
expect(prevented).toBe(false);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
it('defaults to the neutral tone', () => {
|
|
102
|
+
expect(new StatTileComponent().Tone).toBe('none');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('StatRowComponent', () => {
|
|
106
|
+
it('carries no error by default', () => {
|
|
107
|
+
expect(new StatRowComponent().Error).toBeNull();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=stat-tile.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-tile.test.js","sourceRoot":"","sources":["../../../../../src/lib/components/stat-tile/__tests__/stat-tile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* `bizapps-stat-row` — the row a set of {@link StatTileComponent}s sits in, plus the one place their
|
|
4
|
+
* failures are reported.
|
|
5
|
+
*
|
|
6
|
+
* WHY THE ERROR LINE LIVES HERE RATHER THAN ON EACH TILE. Dashboard tiles are counted concurrently
|
|
7
|
+
* and fail independently, so the honest report is per-row, not per-tile: each failed tile already
|
|
8
|
+
* says "—" in place of its number, and the row says once, underneath, how many numbers are unknown.
|
|
9
|
+
* Putting the sentence on every tile would repeat it four times and crowd out the numbers; putting
|
|
10
|
+
* it nowhere leaves an em dash the reader has to interpret alone.
|
|
11
|
+
*
|
|
12
|
+
* The caller composes the sentence, because only the caller knows what failed. Pass `null` when
|
|
13
|
+
* everything read.
|
|
14
|
+
*
|
|
15
|
+
* ```html
|
|
16
|
+
* <bizapps-stat-row [Error]="CountError">
|
|
17
|
+
* <bizapps-stat-tile ... />
|
|
18
|
+
* <bizapps-stat-tile ... />
|
|
19
|
+
* </bizapps-stat-row>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class StatRowComponent {
|
|
23
|
+
/**
|
|
24
|
+
* One sentence describing what could not be read, or `null`.
|
|
25
|
+
*
|
|
26
|
+
* Rendered muted rather than in error red on purpose: the tiles are still usable and the ones
|
|
27
|
+
* that read are still true. A red banner over a working dashboard reads as "this page is broken".
|
|
28
|
+
*/
|
|
29
|
+
Error: string | null;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StatRowComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StatRowComponent, "bizapps-stat-row", never, { "Error": { "alias": "Error"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=stat-row.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-row.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/stat-tile/stat-row.component.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBA4Ba,gBAAgB;IACzB;;;;;OAKG;IACM,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;yCAP5B,gBAAgB;2CAAhB,gBAAgB;CAQ5B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const _c0 = ["*"];
|
|
4
|
+
function StatRowComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵdomElementStart(0, "p", 1);
|
|
6
|
+
i0.ɵɵtext(1);
|
|
7
|
+
i0.ɵɵdomElementEnd();
|
|
8
|
+
} if (rf & 2) {
|
|
9
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
10
|
+
i0.ɵɵadvance();
|
|
11
|
+
i0.ɵɵtextInterpolate(ctx_r0.Error);
|
|
12
|
+
} }
|
|
13
|
+
/**
|
|
14
|
+
* `bizapps-stat-row` — the row a set of {@link StatTileComponent}s sits in, plus the one place their
|
|
15
|
+
* failures are reported.
|
|
16
|
+
*
|
|
17
|
+
* WHY THE ERROR LINE LIVES HERE RATHER THAN ON EACH TILE. Dashboard tiles are counted concurrently
|
|
18
|
+
* and fail independently, so the honest report is per-row, not per-tile: each failed tile already
|
|
19
|
+
* says "—" in place of its number, and the row says once, underneath, how many numbers are unknown.
|
|
20
|
+
* Putting the sentence on every tile would repeat it four times and crowd out the numbers; putting
|
|
21
|
+
* it nowhere leaves an em dash the reader has to interpret alone.
|
|
22
|
+
*
|
|
23
|
+
* The caller composes the sentence, because only the caller knows what failed. Pass `null` when
|
|
24
|
+
* everything read.
|
|
25
|
+
*
|
|
26
|
+
* ```html
|
|
27
|
+
* <bizapps-stat-row [Error]="CountError">
|
|
28
|
+
* <bizapps-stat-tile ... />
|
|
29
|
+
* <bizapps-stat-tile ... />
|
|
30
|
+
* </bizapps-stat-row>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export class StatRowComponent {
|
|
34
|
+
/**
|
|
35
|
+
* One sentence describing what could not be read, or `null`.
|
|
36
|
+
*
|
|
37
|
+
* Rendered muted rather than in error red on purpose: the tiles are still usable and the ones
|
|
38
|
+
* that read are still true. A red banner over a working dashboard reads as "this page is broken".
|
|
39
|
+
*/
|
|
40
|
+
Error = null;
|
|
41
|
+
static ɵfac = function StatRowComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || StatRowComponent)(); };
|
|
42
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StatRowComponent, selectors: [["bizapps-stat-row"]], inputs: { Error: "Error" }, ngContentSelectors: _c0, decls: 3, vars: 1, consts: [[1, "bizapps-stat-row"], ["role", "status", 1, "bizapps-stat-row__error"]], template: function StatRowComponent_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵprojectionDef();
|
|
44
|
+
i0.ɵɵdomElementStart(0, "div", 0);
|
|
45
|
+
i0.ɵɵprojection(1);
|
|
46
|
+
i0.ɵɵdomElementEnd();
|
|
47
|
+
i0.ɵɵconditionalCreate(2, StatRowComponent_Conditional_2_Template, 2, 1, "p", 1);
|
|
48
|
+
} if (rf & 2) {
|
|
49
|
+
i0.ɵɵadvance(2);
|
|
50
|
+
i0.ɵɵconditional(ctx.Error ? 2 : -1);
|
|
51
|
+
} }, styles: ["\n .bizapps-stat-row {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));\n gap: var(--mj-space-4);\n }\n .bizapps-stat-row__error {\n margin: var(--mj-space-2) 0 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n }\n "], encapsulation: 2, changeDetection: 0 });
|
|
52
|
+
}
|
|
53
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StatRowComponent, [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: 'bizapps-stat-row', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
56
|
+
<div class="bizapps-stat-row">
|
|
57
|
+
<ng-content />
|
|
58
|
+
</div>
|
|
59
|
+
@if (Error) {
|
|
60
|
+
<p class="bizapps-stat-row__error" role="status">{{ Error }}</p>
|
|
61
|
+
}
|
|
62
|
+
`, styles: ["\n .bizapps-stat-row {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));\n gap: var(--mj-space-4);\n }\n .bizapps-stat-row__error {\n margin: var(--mj-space-2) 0 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n }\n "] }]
|
|
63
|
+
}], null, { Error: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}] }); })();
|
|
66
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StatRowComponent, { className: "StatRowComponent", filePath: "lib/components/stat-tile/stat-row.component.ts", lineNumber: 51 }); })();
|
|
67
|
+
//# sourceMappingURL=stat-row.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-row.component.js","sourceRoot":"","sources":["../../../../src/lib/components/stat-tile/stat-row.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;;;;IAgCjF,+BAAiD;IAAA,YAAW;IAAA,oBAAI;;;IAAf,cAAW;IAAX,kCAAW;;AA9BxE;;;;;;;;;;;;;;;;;;;GAmBG;AA6BH,MAAM,OAAO,gBAAgB;IACzB;;;;;OAKG;IACM,KAAK,GAAkB,IAAI,CAAC;0GAP5B,gBAAgB;6DAAhB,gBAAgB;;YAtBrB,iCAA8B;YAC1B,kBAAc;YAClB,oBAAM;YACN,gFAAa;;YAAb,eAEC;YAFD,oCAEC;;;iFAiBI,gBAAgB;cA5B5B,SAAS;2BACI,kBAAkB,cAChB,IAAI,iBACD,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,YACrC;;;;;;;KAOT;;kBAuBA,KAAK;;kFAPG,gBAAgB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* How a tile's number should read. `none` is the ordinary case; `warn` and `error` colour the value
|
|
5
|
+
* only, never the whole tile — a wall of coloured boxes stops meaning anything.
|
|
6
|
+
*/
|
|
7
|
+
export type StatTileTone = 'none' | 'warn' | 'error';
|
|
8
|
+
/**
|
|
9
|
+
* `bizapps-stat-tile` — one headline count, and optionally where clicking it goes.
|
|
10
|
+
*
|
|
11
|
+
* THE SHARED BIZAPPS DASHBOARD TILE. Orders grew the first version of this
|
|
12
|
+
* (`Bizapps-Orders/.../panels/stat-tile.component.ts`); contracts, sales and accounting each grew
|
|
13
|
+
* their own near-copy. This is the one they collapse into.
|
|
14
|
+
*
|
|
15
|
+
* ## Two rules that are behaviour, not styling
|
|
16
|
+
*
|
|
17
|
+
* **A NULL VALUE RENDERS AN EM DASH, NEVER A ZERO.** A dashboard count comes from a query that can
|
|
18
|
+
* fail, and "0" is a specific, reassuring claim — "nothing to do here". Rendering an unknown as zero
|
|
19
|
+
* tells a finance user their queue is empty when it is actually unreadable, which is the one failure
|
|
20
|
+
* mode a work-queue dashboard must not have. Pass `null` for "we could not read this" and the tile
|
|
21
|
+
* says so.
|
|
22
|
+
*
|
|
23
|
+
* **A TILE THAT DOES NOTHING MUST NOT LOOK CLICKABLE.** One flag — {@link IsClickable} — drives the
|
|
24
|
+
* cursor, the `role`, the `tabindex` and the keyboard handlers together, so they cannot drift apart.
|
|
25
|
+
* It defaults to "is anything listening to `Clicked`", which is right for a row where every tile
|
|
26
|
+
* navigates; a row with a mix of live and inert tiles must pass {@link Clickable} explicitly, because
|
|
27
|
+
* a template binding counts as listening whatever its handler decides to do. See that input.
|
|
28
|
+
*
|
|
29
|
+
* ## Styles live here, deliberately
|
|
30
|
+
*
|
|
31
|
+
* Orders' version rendered `class="mj-stat"` and every one of those rules lived in `orders-kit.css`.
|
|
32
|
+
* Copied into another app it rendered as three unstyled spans — which is why this is a rewrite rather
|
|
33
|
+
* than a move. The styles below are the component's own, use design tokens only (no hex), and use a
|
|
34
|
+
* `bizapps-stat` class prefix: the app kits are global under `ViewEncapsulation.None`, and both
|
|
35
|
+
* `.mj-stat` (orders-kit) and `.mjc-stat` (contracts-kit) are already taken by unrelated things.
|
|
36
|
+
*
|
|
37
|
+
* ## Projected content
|
|
38
|
+
*
|
|
39
|
+
* Anything placed between the tags renders inside the box, under the detail line. It is for the
|
|
40
|
+
* rare tile that needs more than label/value/detail — a sparkline, a second smaller count — without
|
|
41
|
+
* growing the input list for every tile that does not. Most tiles project nothing.
|
|
42
|
+
*
|
|
43
|
+
* ## Example
|
|
44
|
+
*
|
|
45
|
+
* ```html
|
|
46
|
+
* <bizapps-stat-tile
|
|
47
|
+
* Label="Awaiting executed document"
|
|
48
|
+
* Icon="fa-solid fa-file-circle-question"
|
|
49
|
+
* [Value]="AwaitingCount"
|
|
50
|
+
* Detail="3 already in force"
|
|
51
|
+
* Tone="error"
|
|
52
|
+
* (Clicked)="GoToAwaiting()" />
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare class StatTileComponent {
|
|
56
|
+
/**
|
|
57
|
+
* What the number is. Part of the accessible name, which a clickable tile takes from its
|
|
58
|
+
* visible content — label, value and detail — rather than an `aria-label` that would hide
|
|
59
|
+
* the count from a screen reader.
|
|
60
|
+
*/
|
|
61
|
+
Label: string;
|
|
62
|
+
/** Font Awesome class for the small icon beside the label. Optional. */
|
|
63
|
+
Icon: string | null;
|
|
64
|
+
/**
|
|
65
|
+
* The number, or `null`/`undefined` for "could not be read".
|
|
66
|
+
*
|
|
67
|
+
* `undefined` is accepted because that is the shape a missing property arrives as, and this
|
|
68
|
+
* package sets `strictTemplates` — without it, `[Value]="counts.awaiting"` on an optional
|
|
69
|
+
* property does not compile.
|
|
70
|
+
*
|
|
71
|
+
* A string is accepted so a caller can pass an already-formatted value (`'1,204'`); the tile
|
|
72
|
+
* never formats, because formatting rules belong to the app that owns the number.
|
|
73
|
+
*/
|
|
74
|
+
Value: number | string | null | undefined;
|
|
75
|
+
/** One line under the number — the footnote that qualifies it. Optional. */
|
|
76
|
+
Detail: string | null;
|
|
77
|
+
/** Colours the value when the number is one somebody has to act on. */
|
|
78
|
+
Tone: StatTileTone;
|
|
79
|
+
/** Emitted on click, Enter or Space. */
|
|
80
|
+
Clicked: EventEmitter<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Force interactivity on or off. Leave unset to infer it from whether anything is listening.
|
|
83
|
+
*
|
|
84
|
+
* ⚠ THE INFERENCE ALONE IS NOT ENOUGH, and this input exists because of a bug it failed to
|
|
85
|
+
* prevent. `Clicked.observed` is true whenever a TEMPLATE binds `(Clicked)` — Angular subscribes
|
|
86
|
+
* to the output at binding time, and it has no idea what the handler expression decides to do.
|
|
87
|
+
* So a consumer writing `(Clicked)="tile.Target ? Go(tile) : null"` for a mixed row of tiles gets
|
|
88
|
+
* every tile focusable, announced as a button and showing a pointer, including the ones whose
|
|
89
|
+
* click resolves to nothing — which is precisely the "invites a click that does nothing" outcome
|
|
90
|
+
* the inference was meant to rule out.
|
|
91
|
+
*
|
|
92
|
+
* Pass `false` for a tile that is deliberately inert, and keep binding `(Clicked)` normally.
|
|
93
|
+
*/
|
|
94
|
+
Clickable: boolean | null;
|
|
95
|
+
/** `null` becomes an em dash. See the class comment — this is the rule, not a formatting choice. */
|
|
96
|
+
get DisplayValue(): string;
|
|
97
|
+
/**
|
|
98
|
+
* One flag drives cursor, role, tabindex and the keyboard handlers, so they cannot disagree.
|
|
99
|
+
*
|
|
100
|
+
* An explicit {@link Clickable} always wins; otherwise fall back to whether anything is
|
|
101
|
+
* listening, which is right for the common case of a row where every tile navigates.
|
|
102
|
+
*
|
|
103
|
+
* Safe under `OnPush` even though `Clicked.observed` is not an input: Angular subscribes to
|
|
104
|
+
* outputs when it creates the view, before the first check, and a template binding never
|
|
105
|
+
* comes or goes afterwards.
|
|
106
|
+
*/
|
|
107
|
+
get IsClickable(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* @param event present for the Space binding — Space scrolls the page by default, and a tile that
|
|
110
|
+
* scrolls the dashboard instead of opening the list is a keyboard-only bug nobody
|
|
111
|
+
* reports.
|
|
112
|
+
*/
|
|
113
|
+
OnActivate(event?: Event): void;
|
|
114
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StatTileComponent, never>;
|
|
115
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StatTileComponent, "bizapps-stat-tile", never, { "Label": { "alias": "Label"; "required": false; }; "Icon": { "alias": "Icon"; "required": false; }; "Value": { "alias": "Value"; "required": false; }; "Detail": { "alias": "Detail"; "required": false; }; "Tone": { "alias": "Tone"; "required": false; }; "Clickable": { "alias": "Clickable"; "required": false; }; }, { "Clicked": "Clicked"; }, never, ["*"], true, never>;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=stat-tile.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-tile.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/stat-tile/stat-tile.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,YAAY,EAAoC,MAAM,eAAe,CAAC;;AAEnH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBA2Fa,iBAAiB;IAC1B;;;;OAIG;IACM,KAAK,SAAM;IAEpB,wEAAwE;IAC/D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEpC;;;;;;;;;OASG;IACM,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAQ;IAE1D,4EAA4E;IACnE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,uEAAuE;IAC9D,IAAI,EAAE,YAAY,CAAU;IAErC,wCAAwC;IAC9B,OAAO,qBAA4B;IAE7C;;;;;;;;;;;;OAYG;IACM,SAAS,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE1C,oGAAoG;IACpG,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;;;;;;;;OASG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;OAIG;IACI,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;yCAvE7B,iBAAiB;2CAAjB,iBAAiB;CA4E7B"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const _c0 = ["*"];
|
|
4
|
+
function StatTileComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵdomElement(0, "i", 5);
|
|
6
|
+
} if (rf & 2) {
|
|
7
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
8
|
+
i0.ɵɵclassMap(ctx_r0.Icon);
|
|
9
|
+
} }
|
|
10
|
+
function StatTileComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
i0.ɵɵdomElementStart(0, "span", 4);
|
|
12
|
+
i0.ɵɵtext(1);
|
|
13
|
+
i0.ɵɵdomElementEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
16
|
+
i0.ɵɵadvance();
|
|
17
|
+
i0.ɵɵtextInterpolate(ctx_r0.Detail);
|
|
18
|
+
} }
|
|
19
|
+
/**
|
|
20
|
+
* `bizapps-stat-tile` — one headline count, and optionally where clicking it goes.
|
|
21
|
+
*
|
|
22
|
+
* THE SHARED BIZAPPS DASHBOARD TILE. Orders grew the first version of this
|
|
23
|
+
* (`Bizapps-Orders/.../panels/stat-tile.component.ts`); contracts, sales and accounting each grew
|
|
24
|
+
* their own near-copy. This is the one they collapse into.
|
|
25
|
+
*
|
|
26
|
+
* ## Two rules that are behaviour, not styling
|
|
27
|
+
*
|
|
28
|
+
* **A NULL VALUE RENDERS AN EM DASH, NEVER A ZERO.** A dashboard count comes from a query that can
|
|
29
|
+
* fail, and "0" is a specific, reassuring claim — "nothing to do here". Rendering an unknown as zero
|
|
30
|
+
* tells a finance user their queue is empty when it is actually unreadable, which is the one failure
|
|
31
|
+
* mode a work-queue dashboard must not have. Pass `null` for "we could not read this" and the tile
|
|
32
|
+
* says so.
|
|
33
|
+
*
|
|
34
|
+
* **A TILE THAT DOES NOTHING MUST NOT LOOK CLICKABLE.** One flag — {@link IsClickable} — drives the
|
|
35
|
+
* cursor, the `role`, the `tabindex` and the keyboard handlers together, so they cannot drift apart.
|
|
36
|
+
* It defaults to "is anything listening to `Clicked`", which is right for a row where every tile
|
|
37
|
+
* navigates; a row with a mix of live and inert tiles must pass {@link Clickable} explicitly, because
|
|
38
|
+
* a template binding counts as listening whatever its handler decides to do. See that input.
|
|
39
|
+
*
|
|
40
|
+
* ## Styles live here, deliberately
|
|
41
|
+
*
|
|
42
|
+
* Orders' version rendered `class="mj-stat"` and every one of those rules lived in `orders-kit.css`.
|
|
43
|
+
* Copied into another app it rendered as three unstyled spans — which is why this is a rewrite rather
|
|
44
|
+
* than a move. The styles below are the component's own, use design tokens only (no hex), and use a
|
|
45
|
+
* `bizapps-stat` class prefix: the app kits are global under `ViewEncapsulation.None`, and both
|
|
46
|
+
* `.mj-stat` (orders-kit) and `.mjc-stat` (contracts-kit) are already taken by unrelated things.
|
|
47
|
+
*
|
|
48
|
+
* ## Projected content
|
|
49
|
+
*
|
|
50
|
+
* Anything placed between the tags renders inside the box, under the detail line. It is for the
|
|
51
|
+
* rare tile that needs more than label/value/detail — a sparkline, a second smaller count — without
|
|
52
|
+
* growing the input list for every tile that does not. Most tiles project nothing.
|
|
53
|
+
*
|
|
54
|
+
* ## Example
|
|
55
|
+
*
|
|
56
|
+
* ```html
|
|
57
|
+
* <bizapps-stat-tile
|
|
58
|
+
* Label="Awaiting executed document"
|
|
59
|
+
* Icon="fa-solid fa-file-circle-question"
|
|
60
|
+
* [Value]="AwaitingCount"
|
|
61
|
+
* Detail="3 already in force"
|
|
62
|
+
* Tone="error"
|
|
63
|
+
* (Clicked)="GoToAwaiting()" />
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export class StatTileComponent {
|
|
67
|
+
/**
|
|
68
|
+
* What the number is. Part of the accessible name, which a clickable tile takes from its
|
|
69
|
+
* visible content — label, value and detail — rather than an `aria-label` that would hide
|
|
70
|
+
* the count from a screen reader.
|
|
71
|
+
*/
|
|
72
|
+
Label = '';
|
|
73
|
+
/** Font Awesome class for the small icon beside the label. Optional. */
|
|
74
|
+
Icon = null;
|
|
75
|
+
/**
|
|
76
|
+
* The number, or `null`/`undefined` for "could not be read".
|
|
77
|
+
*
|
|
78
|
+
* `undefined` is accepted because that is the shape a missing property arrives as, and this
|
|
79
|
+
* package sets `strictTemplates` — without it, `[Value]="counts.awaiting"` on an optional
|
|
80
|
+
* property does not compile.
|
|
81
|
+
*
|
|
82
|
+
* A string is accepted so a caller can pass an already-formatted value (`'1,204'`); the tile
|
|
83
|
+
* never formats, because formatting rules belong to the app that owns the number.
|
|
84
|
+
*/
|
|
85
|
+
Value = null;
|
|
86
|
+
/** One line under the number — the footnote that qualifies it. Optional. */
|
|
87
|
+
Detail = null;
|
|
88
|
+
/** Colours the value when the number is one somebody has to act on. */
|
|
89
|
+
Tone = 'none';
|
|
90
|
+
/** Emitted on click, Enter or Space. */
|
|
91
|
+
Clicked = new EventEmitter();
|
|
92
|
+
/**
|
|
93
|
+
* Force interactivity on or off. Leave unset to infer it from whether anything is listening.
|
|
94
|
+
*
|
|
95
|
+
* ⚠ THE INFERENCE ALONE IS NOT ENOUGH, and this input exists because of a bug it failed to
|
|
96
|
+
* prevent. `Clicked.observed` is true whenever a TEMPLATE binds `(Clicked)` — Angular subscribes
|
|
97
|
+
* to the output at binding time, and it has no idea what the handler expression decides to do.
|
|
98
|
+
* So a consumer writing `(Clicked)="tile.Target ? Go(tile) : null"` for a mixed row of tiles gets
|
|
99
|
+
* every tile focusable, announced as a button and showing a pointer, including the ones whose
|
|
100
|
+
* click resolves to nothing — which is precisely the "invites a click that does nothing" outcome
|
|
101
|
+
* the inference was meant to rule out.
|
|
102
|
+
*
|
|
103
|
+
* Pass `false` for a tile that is deliberately inert, and keep binding `(Clicked)` normally.
|
|
104
|
+
*/
|
|
105
|
+
Clickable = null;
|
|
106
|
+
/** `null` becomes an em dash. See the class comment — this is the rule, not a formatting choice. */
|
|
107
|
+
get DisplayValue() {
|
|
108
|
+
return this.Value === null || this.Value === undefined ? '—' : String(this.Value);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* One flag drives cursor, role, tabindex and the keyboard handlers, so they cannot disagree.
|
|
112
|
+
*
|
|
113
|
+
* An explicit {@link Clickable} always wins; otherwise fall back to whether anything is
|
|
114
|
+
* listening, which is right for the common case of a row where every tile navigates.
|
|
115
|
+
*
|
|
116
|
+
* Safe under `OnPush` even though `Clicked.observed` is not an input: Angular subscribes to
|
|
117
|
+
* outputs when it creates the view, before the first check, and a template binding never
|
|
118
|
+
* comes or goes afterwards.
|
|
119
|
+
*/
|
|
120
|
+
get IsClickable() {
|
|
121
|
+
return this.Clickable ?? this.Clicked.observed;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @param event present for the Space binding — Space scrolls the page by default, and a tile that
|
|
125
|
+
* scrolls the dashboard instead of opening the list is a keyboard-only bug nobody
|
|
126
|
+
* reports.
|
|
127
|
+
*/
|
|
128
|
+
OnActivate(event) {
|
|
129
|
+
if (!this.IsClickable)
|
|
130
|
+
return;
|
|
131
|
+
event?.preventDefault();
|
|
132
|
+
this.Clicked.emit();
|
|
133
|
+
}
|
|
134
|
+
static ɵfac = function StatTileComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || StatTileComponent)(); };
|
|
135
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StatTileComponent, selectors: [["bizapps-stat-tile"]], inputs: { Label: "Label", Icon: "Icon", Value: "Value", Detail: "Detail", Tone: "Tone", Clickable: "Clickable" }, outputs: { Clicked: "Clicked" }, ngContentSelectors: _c0, decls: 8, vars: 12, consts: [[1, "bizapps-stat", 3, "click", "keydown.enter", "keydown.space"], [1, "bizapps-stat__label"], ["aria-hidden", "true", 3, "class"], [1, "bizapps-stat__value"], [1, "bizapps-stat__detail"], ["aria-hidden", "true"]], template: function StatTileComponent_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
i0.ɵɵprojectionDef();
|
|
137
|
+
i0.ɵɵdomElementStart(0, "div", 0);
|
|
138
|
+
i0.ɵɵdomListener("click", function StatTileComponent_Template_div_click_0_listener() { return ctx.OnActivate(); })("keydown.enter", function StatTileComponent_Template_div_keydown_enter_0_listener() { return ctx.OnActivate(); })("keydown.space", function StatTileComponent_Template_div_keydown_space_0_listener($event) { return ctx.OnActivate($event); });
|
|
139
|
+
i0.ɵɵdomElementStart(1, "span", 1);
|
|
140
|
+
i0.ɵɵconditionalCreate(2, StatTileComponent_Conditional_2_Template, 1, 2, "i", 2);
|
|
141
|
+
i0.ɵɵtext(3);
|
|
142
|
+
i0.ɵɵdomElementEnd();
|
|
143
|
+
i0.ɵɵdomElementStart(4, "span", 3);
|
|
144
|
+
i0.ɵɵtext(5);
|
|
145
|
+
i0.ɵɵdomElementEnd();
|
|
146
|
+
i0.ɵɵconditionalCreate(6, StatTileComponent_Conditional_6_Template, 2, 1, "span", 4);
|
|
147
|
+
i0.ɵɵprojection(7);
|
|
148
|
+
i0.ɵɵdomElementEnd();
|
|
149
|
+
} if (rf & 2) {
|
|
150
|
+
i0.ɵɵclassProp("bizapps-stat--warn", ctx.Tone === "warn")("bizapps-stat--error", ctx.Tone === "error")("bizapps-stat--clickable", ctx.IsClickable);
|
|
151
|
+
i0.ɵɵattribute("role", ctx.IsClickable ? "button" : null)("tabindex", ctx.IsClickable ? 0 : null);
|
|
152
|
+
i0.ɵɵadvance(2);
|
|
153
|
+
i0.ɵɵconditional(ctx.Icon ? 2 : -1);
|
|
154
|
+
i0.ɵɵadvance();
|
|
155
|
+
i0.ɵɵtextInterpolate1(" ", ctx.Label, " ");
|
|
156
|
+
i0.ɵɵadvance(2);
|
|
157
|
+
i0.ɵɵtextInterpolate(ctx.DisplayValue);
|
|
158
|
+
i0.ɵɵadvance();
|
|
159
|
+
i0.ɵɵconditional(ctx.Detail ? 6 : -1);
|
|
160
|
+
} }, styles: ["\n /* The grid item in a bizapps-stat-row is this unstyled host, not the bordered box one\n level in: the host stretches to the row height, the box would stay content-height and\n fall short whenever a sibling has more content. The host passes the stretch through. */\n bizapps-stat-tile {\n display: flex;\n }\n .bizapps-stat {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n }\n .bizapps-stat__label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n }\n .bizapps-stat__value {\n font-size: var(--mj-text-2xl);\n font-weight: var(--mj-font-bold);\n font-variant-numeric: tabular-nums;\n letter-spacing: -0.02em;\n line-height: 1.15;\n }\n .bizapps-stat__detail {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n }\n\n /* Tone colours the NUMBER, not the tile. */\n .bizapps-stat--warn .bizapps-stat__value {\n color: var(--mj-status-warning-text);\n }\n .bizapps-stat--error .bizapps-stat__value {\n color: var(--mj-status-error-text);\n }\n\n .bizapps-stat--clickable {\n cursor: pointer;\n }\n .bizapps-stat--clickable:hover {\n border-color: var(--mj-brand-primary);\n }\n .bizapps-stat--clickable:focus-visible {\n outline: 2px solid var(--mj-border-focus, var(--mj-brand-primary));\n outline-offset: 2px;\n }\n "], encapsulation: 2, changeDetection: 0 });
|
|
161
|
+
}
|
|
162
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StatTileComponent, [{
|
|
163
|
+
type: Component,
|
|
164
|
+
args: [{ selector: 'bizapps-stat-tile', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
165
|
+
<div
|
|
166
|
+
class="bizapps-stat"
|
|
167
|
+
[class.bizapps-stat--warn]="Tone === 'warn'"
|
|
168
|
+
[class.bizapps-stat--error]="Tone === 'error'"
|
|
169
|
+
[class.bizapps-stat--clickable]="IsClickable"
|
|
170
|
+
[attr.role]="IsClickable ? 'button' : null"
|
|
171
|
+
[attr.tabindex]="IsClickable ? 0 : null"
|
|
172
|
+
(click)="OnActivate()"
|
|
173
|
+
(keydown.enter)="OnActivate()"
|
|
174
|
+
(keydown.space)="OnActivate($event)">
|
|
175
|
+
<span class="bizapps-stat__label">
|
|
176
|
+
@if (Icon) {
|
|
177
|
+
<i [class]="Icon" aria-hidden="true"></i>
|
|
178
|
+
}
|
|
179
|
+
{{ Label }}
|
|
180
|
+
</span>
|
|
181
|
+
<span class="bizapps-stat__value">{{ DisplayValue }}</span>
|
|
182
|
+
@if (Detail) {
|
|
183
|
+
<span class="bizapps-stat__detail">{{ Detail }}</span>
|
|
184
|
+
}
|
|
185
|
+
<ng-content />
|
|
186
|
+
</div>
|
|
187
|
+
`, styles: ["\n /* The grid item in a bizapps-stat-row is this unstyled host, not the bordered box one\n level in: the host stretches to the row height, the box would stay content-height and\n fall short whenever a sibling has more content. The host passes the stretch through. */\n bizapps-stat-tile {\n display: flex;\n }\n .bizapps-stat {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n }\n .bizapps-stat__label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n }\n .bizapps-stat__value {\n font-size: var(--mj-text-2xl);\n font-weight: var(--mj-font-bold);\n font-variant-numeric: tabular-nums;\n letter-spacing: -0.02em;\n line-height: 1.15;\n }\n .bizapps-stat__detail {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n }\n\n /* Tone colours the NUMBER, not the tile. */\n .bizapps-stat--warn .bizapps-stat__value {\n color: var(--mj-status-warning-text);\n }\n .bizapps-stat--error .bizapps-stat__value {\n color: var(--mj-status-error-text);\n }\n\n .bizapps-stat--clickable {\n cursor: pointer;\n }\n .bizapps-stat--clickable:hover {\n border-color: var(--mj-brand-primary);\n }\n .bizapps-stat--clickable:focus-visible {\n outline: 2px solid var(--mj-border-focus, var(--mj-brand-primary));\n outline-offset: 2px;\n }\n "] }]
|
|
188
|
+
}], null, { Label: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], Icon: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], Value: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], Detail: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], Tone: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], Clicked: [{
|
|
199
|
+
type: Output
|
|
200
|
+
}], Clickable: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}] }); })();
|
|
203
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StatTileComponent, { className: "StatTileComponent", filePath: "lib/components/stat-tile/stat-tile.component.ts", lineNumber: 147 }); })();
|
|
204
|
+
//# sourceMappingURL=stat-tile.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-tile.component.js","sourceRoot":"","sources":["../../../../src/lib/components/stat-tile/stat-tile.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;;;;IAyE/F,0BAAyC;;;IAAtC,0BAAc;;;IAMrB,kCAAmC;IAAA,YAAY;IAAA,oBAAO;;;IAAnB,cAAY;IAAZ,mCAAY;;AAvE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AA4FH,MAAM,OAAO,iBAAiB;IAC1B;;;;OAIG;IACM,KAAK,GAAG,EAAE,CAAC;IAEpB,wEAAwE;IAC/D,IAAI,GAAkB,IAAI,CAAC;IAEpC;;;;;;;;;OASG;IACM,KAAK,GAAuC,IAAI,CAAC;IAE1D,4EAA4E;IACnE,MAAM,GAAkB,IAAI,CAAC;IAEtC,uEAAuE;IAC9D,IAAI,GAAiB,MAAM,CAAC;IAErC,wCAAwC;IAC9B,OAAO,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE7C;;;;;;;;;;;;OAYG;IACM,SAAS,GAAmB,IAAI,CAAC;IAE1C,oGAAoG;IACpG,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;;;OASG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,KAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;2GA3EQ,iBAAiB;6DAAjB,iBAAiB;;YArFtB,iCASyC;YAArC,AADA,AADA,8FAAS,gBAAY,IAAC,8FACL,gBAAY,IAAC,oGACb,sBAAkB,IAAC;YACpC,kCAAkC;YAC9B,iFAAY;YAGZ,YACJ;YAAA,oBAAO;YACP,kCAAkC;YAAA,YAAkB;YAAA,oBAAO;YAC3D,oFAAc;YAGd,kBAAc;YAClB,oBAAM;;YAjBF,AADA,AADA,yDAA4C,6CACE,4CACD;;YAOzC,eAEC;YAFD,mCAEC;YACD,cACJ;YADI,0CACJ;YACkC,eAAkB;YAAlB,sCAAkB;YACpD,cAEC;YAFD,qCAEC;;;iFAkEA,iBAAiB;cA3F7B,SAAS;2BACI,mBAAmB,cACjB,IAAI,iBACD,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,YACrC;;;;;;;;;;;;;;;;;;;;;;;KAuBT;;kBAqEA,KAAK;;kBAGL,KAAK;;kBAYL,KAAK;;kBAGL,KAAK;;kBAGL,KAAK;;kBAGL,MAAM;;kBAeN,KAAK;;kFA7CG,iBAAiB"}
|
package/dist/public-api.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export { ContactMethodListComponent } from './lib/components/contact-method-list
|
|
|
16
16
|
export { RelationshipListComponent } from './lib/components/relationship-list/relationship-list.component';
|
|
17
17
|
export { OrgHierarchyTreeComponent, OrgTreeNode } from './lib/components/org-hierarchy-tree/org-hierarchy-tree.component';
|
|
18
18
|
export { CommonRelationshipGraphComponent } from './lib/components/relationship-graph/common-relationship-graph.component';
|
|
19
|
+
export { StatTileComponent, type StatTileTone } from './lib/components/stat-tile/stat-tile.component';
|
|
20
|
+
export { StatRowComponent } from './lib/components/stat-tile/stat-row.component';
|
|
19
21
|
export { PersonIdentityComponent } from './lib/components/identity-header/person-identity.component';
|
|
20
22
|
export { OrganizationIdentityComponent } from './lib/components/identity-header/organization-identity.component';
|
|
21
23
|
export { ActivityIdentityComponent } from './lib/components/identity-header/activity-identity.component';
|
package/dist/public-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,8BAA8B,CAAC;AAGtC,OAAO,wCAAwC,CAAC;AAGhD,OAAO,kCAAkC,CAAC;AAM1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gEAAgE,CAAC;AAC3G,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,kEAAkE,CAAC;AAC1H,OAAO,EAAE,gCAAgC,EAAE,MAAM,yEAAyE,CAAC;AAC3H,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAGlF,OAAO,0CAA0C,CAAC;AAElD,OAAO,EACH,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,8BAA8B,CAAC;AAGtC,OAAO,wCAAwC,CAAC;AAGhD,OAAO,kCAAkC,CAAC;AAM1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gEAAgE,CAAC;AAC3G,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,kEAAkE,CAAC;AAC1H,OAAO,EAAE,gCAAgC,EAAE,MAAM,yEAAyE,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAGlF,OAAO,0CAA0C,CAAC;AAElD,OAAO,EACH,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
package/dist/public-api.js
CHANGED
|
@@ -21,6 +21,8 @@ export { ContactMethodListComponent } from './lib/components/contact-method-list
|
|
|
21
21
|
export { RelationshipListComponent } from './lib/components/relationship-list/relationship-list.component';
|
|
22
22
|
export { OrgHierarchyTreeComponent } from './lib/components/org-hierarchy-tree/org-hierarchy-tree.component';
|
|
23
23
|
export { CommonRelationshipGraphComponent } from './lib/components/relationship-graph/common-relationship-graph.component';
|
|
24
|
+
export { StatTileComponent } from './lib/components/stat-tile/stat-tile.component';
|
|
25
|
+
export { StatRowComponent } from './lib/components/stat-tile/stat-row.component';
|
|
24
26
|
export { PersonIdentityComponent } from './lib/components/identity-header/person-identity.component';
|
|
25
27
|
export { OrganizationIdentityComponent } from './lib/components/identity-header/organization-identity.component';
|
|
26
28
|
export { ActivityIdentityComponent } from './lib/components/identity-header/activity-identity.component';
|
package/dist/public-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mFAAmF;AACnF,OAAO,8BAA8B,CAAC;AAEtC,iFAAiF;AACjF,OAAO,wCAAwC,CAAC;AAEhD,mEAAmE;AACnE,OAAO,kCAAkC,CAAC;AAK1C,0BAA0B;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,yBAAyB;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gEAAgE,CAAC;AAC3G,OAAO,EAAE,yBAAyB,EAAe,MAAM,kEAAkE,CAAC;AAC1H,OAAO,EAAE,gCAAgC,EAAE,MAAM,yEAAyE,CAAC;AAC3H,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,gGAAgG;AAChG,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EACH,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACnC,0BAA0B,EAAE,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mFAAmF;AACnF,OAAO,8BAA8B,CAAC;AAEtC,iFAAiF;AACjF,OAAO,wCAAwC,CAAC;AAEhD,mEAAmE;AACnE,OAAO,kCAAkC,CAAC;AAK1C,0BAA0B;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,yBAAyB;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gEAAgE,CAAC;AAC3G,OAAO,EAAE,yBAAyB,EAAe,MAAM,kEAAkE,CAAC;AAC1H,OAAO,EAAE,gCAAgC,EAAE,MAAM,yEAAyE,CAAC;AAC3H,OAAO,EAAE,iBAAiB,EAAqB,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,gGAAgG;AAChG,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EACH,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAEtF;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACnC,0BAA0B,EAAE,CAAC;AACjC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mj-biz-apps/common-ng",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.42.0",
|
|
5
5
|
"description": "BizApps Common Angular bootstrap - form components and module for the Common business entities Open App",
|
|
6
6
|
"main": "dist/public-api.js",
|
|
7
7
|
"types": "dist/public-api.d.ts",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@memberjunction/ng-graph-view": "^6.1.0-edge.5",
|
|
18
18
|
"@memberjunction/ng-hierarchy-tree": "^6.1.0-edge.5",
|
|
19
|
-
"@mj-biz-apps/common-entities": "5.
|
|
19
|
+
"@mj-biz-apps/common-entities": "5.42.0"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"@angular/animations": "^21.1.3",
|