@mj-biz-apps/sales-ng 6.12.3 → 6.13.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/activities/deal-activity-timeline.component.js +3 -3
- package/dist/lib/activities/deal-activity-timeline.component.js.map +1 -1
- package/dist/lib/board/deal-board.component.d.ts +13 -0
- package/dist/lib/board/deal-board.component.d.ts.map +1 -1
- package/dist/lib/board/deal-board.component.js +21 -4
- package/dist/lib/board/deal-board.component.js.map +1 -1
- package/dist/lib/form-panels/deal-close-day.d.ts +27 -0
- package/dist/lib/form-panels/deal-close-day.d.ts.map +1 -0
- package/dist/lib/form-panels/deal-close-day.js +37 -0
- package/dist/lib/form-panels/deal-close-day.js.map +1 -0
- package/dist/lib/form-panels/deal-form.panels.d.ts +7 -1
- package/dist/lib/form-panels/deal-form.panels.d.ts.map +1 -1
- package/dist/lib/form-panels/deal-form.panels.js +36 -22
- package/dist/lib/form-panels/deal-form.panels.js.map +1 -1
- package/dist/lib/form-panels/deal-hero.panel.d.ts +7 -1
- package/dist/lib/form-panels/deal-hero.panel.d.ts.map +1 -1
- package/dist/lib/form-panels/deal-hero.panel.js +22 -8
- package/dist/lib/form-panels/deal-hero.panel.js.map +1 -1
- package/dist/lib/sections/sales-section.component.d.ts +3 -2
- package/dist/lib/sections/sales-section.component.d.ts.map +1 -1
- package/dist/lib/sections/sales-section.component.js +4 -3
- package/dist/lib/sections/sales-section.component.js.map +1 -1
- package/package.json +22 -7
|
@@ -181,7 +181,7 @@ function DealActivityTimelineComponent_Conditional_7_For_2_Template(rf, ctx) { i
|
|
|
181
181
|
} if (rf & 2) {
|
|
182
182
|
const row_r5 = ctx.$implicit;
|
|
183
183
|
i0.ɵɵadvance(2);
|
|
184
|
-
i0.ɵɵtextInterpolate(i0.ɵɵ
|
|
184
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(3, 5, row_r5.StartedAt, "medium"));
|
|
185
185
|
i0.ɵɵadvance(5);
|
|
186
186
|
i0.ɵɵtextInterpolate(row_r5.TypeName);
|
|
187
187
|
i0.ɵɵadvance();
|
|
@@ -193,7 +193,7 @@ function DealActivityTimelineComponent_Conditional_7_For_2_Template(rf, ctx) { i
|
|
|
193
193
|
} }
|
|
194
194
|
function DealActivityTimelineComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
195
195
|
i0.ɵɵelementStart(0, "ol", 6);
|
|
196
|
-
i0.ɵɵrepeaterCreate(1, DealActivityTimelineComponent_Conditional_7_For_2_Template, 13,
|
|
196
|
+
i0.ɵɵrepeaterCreate(1, DealActivityTimelineComponent_Conditional_7_For_2_Template, 13, 8, "li", 22, _forTrack0);
|
|
197
197
|
i0.ɵɵelementEnd();
|
|
198
198
|
} if (rf & 2) {
|
|
199
199
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -541,7 +541,7 @@ export class DealActivityTimelineComponent {
|
|
|
541
541
|
<ol class="dat__list">
|
|
542
542
|
@for (row of Rows; track row.ID) {
|
|
543
543
|
<li class="dat__item">
|
|
544
|
-
<div class="dat__when">{{ row.StartedAt | date: 'medium'
|
|
544
|
+
<div class="dat__when">{{ row.StartedAt | date: 'medium' }}</div>
|
|
545
545
|
<div class="dat__body">
|
|
546
546
|
<div class="dat__row">
|
|
547
547
|
<span class="dat__type">{{ row.TypeName }}</span>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal-activity-timeline.component.js","sourceRoot":"","sources":["../../../src/lib/activities/deal-activity-timeline.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAA0B,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAA4B,MAAM,sCAAsC,CAAC;AAOrG,wEAAwE;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;;;;;;;IAkCpD,6BAAuB;IACnB,uBAAgE;IAChE,0BACJ;IAAA,iBAAK;;;;IAGL,iCAAiF;IAA1C,iMAAS,iBAAU,KAAC;IACvD,uBAAmD;IAAC,8BACxD;IAAA,iBAAS;;;IAFmD,yCAAoB;;;IAgBpE,kCAAuB;IAAA,YAAU;IAAA,iBAAS;;;IAAlC,+BAAc;IAAC,cAAU;IAAV,6BAAU;;;IAiBzC,6BAAsB;IAAA,YAAW;IAAA,iBAAI;;;IAAf,cAAW;IAAX,kCAAW;;;;IAtBzC,gCAA4C;IAApB,qMAAY,aAAM,KAAC;IAEnC,AADJ,iCAA0B,WAChB;IAAA,oBAAI;IAAA,iBAAO;IACjB,kCAAgD;IAAxC,gUAA2B;IAC/B,oIAEC;IAET,AADI,iBAAS,EACL;IAEJ,AADJ,iCAA2C,WACjC;IAAA,uBAAO;IAAA,iBAAO;IACpB,kCAA2E;IAAxD,0TAAwB;IAC/C,AADI,iBAA2E,EACvE;IAEJ,AADJ,kCAA2C,YACjC;IAAA,sBAAK;IAAA,iBAAO;IAClB,qCAAyD;IAA/C,6TAAwB;IACtC,AAD6D,iBAAW,EAChE;IAEJ,AADJ,kCAA0B,YAChB;IAAA,qBAAI;IAAA,iBAAO;IACjB,kCAAmE;IAAtC,wTAAuB;IACxD,AADI,iBAAmE,EAC/D;IACR,8GAAa;IAIT,AADJ,gCAA0B,kBAC4D;IAC9E,aACJ;IAAA,iBAAS;IACT,mCAAoF;IAA1C,kMAAS,kBAAW,KAAC;IAC3D,yBACJ;IAER,AADI,AADI,iBAAS,EACP,EACH;;;IA7BS,eAA2B;IAA3B,oDAA2B;IAC/B,cAEC;IAFD,2BAEC;IAKc,eAAwB;IAAxB,iDAAwB;IAIjC,eAAwB;IAAxB,iDAAwB;IAIL,eAAuB;IAAvB,gDAAuB;IAExD,cAEC;IAFD,wCAEC;IAE2C,eAAyC;IAAzC,qEAAyC;IAC7E,cACJ;IADI,0EACJ;IACgE,cAAmB;IAAnB,wCAAmB;;;IAQ3F,6BAAyB;;;IAEzB,4BAAsB;IAAA,gDAAgC;IAAA,iBAAI;;;IAelC,gCACkE;IAC9D,wBAAoD;IAAC,YACzD;IAAA,iBAAO;;;IAFD,4EAA2D;IACR,eACzD;IADyD,oDACzD;;;IAEA,gCAAoD;IAChD,wBAAkD;IAAC,wBACvD;IAAA,iBAAO;;;IAKX,6BAAsB;IAAA,YAAqB;IAAA,iBAAI;;;IAAzB,cAAqB;IAArB,wCAAqB;;;IAtBnD,AADJ,8BAAsB,cACK;IAAA,
|
|
1
|
+
{"version":3,"file":"deal-activity-timeline.component.js","sourceRoot":"","sources":["../../../src/lib/activities/deal-activity-timeline.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,17 @@ import { EventEmitter } from '@angular/core';
|
|
|
44
44
|
import { type DealRosterRow } from '../workspace/deal-workspace.service';
|
|
45
45
|
import type { DealStatusLookup, PipelineLookup, StageLookup } from '../workspace/deal-workspace.types';
|
|
46
46
|
import * as i0 from "@angular/core";
|
|
47
|
+
/**
|
|
48
|
+
* A `DATE` column's day, as a value the `date` pipe can format with `'UTC'` (bc-aidp-next-golive#168).
|
|
49
|
+
*
|
|
50
|
+
* `ExpectedCloseDate` is a calendar day handed back as UTC midnight, so formatting it in the viewer's
|
|
51
|
+
* zone shows the PREVIOUS day to anyone west of Greenwich — 30 September read as "Sep 29" in Chicago.
|
|
52
|
+
* The card now passes `'UTC'`, and this normalises the value first because the roster can deliver a
|
|
53
|
+
* `Date` OR a string: Angular parses a bare `YYYY-MM-DD` string as LOCAL midnight, which `'UTC'` would
|
|
54
|
+
* then move back a day for anyone EAST of Greenwich. Through `ToCalendarDay` both shapes become the
|
|
55
|
+
* same UTC midnight, so one pipe argument is right everywhere.
|
|
56
|
+
*/
|
|
57
|
+
export declare function DisplayDay(value: string | Date | null | undefined): Date | null;
|
|
47
58
|
/**
|
|
48
59
|
* The one currency a set of cards shares, or NULL when they do not share one.
|
|
49
60
|
*
|
|
@@ -176,6 +187,8 @@ export declare class DealBoardComponent {
|
|
|
176
187
|
* agreeing with each other.
|
|
177
188
|
*/
|
|
178
189
|
NameOf(pipelineID: string | null): string;
|
|
190
|
+
/** Exposed for the card's close date. See {@link DisplayDay}. */
|
|
191
|
+
readonly DisplayDay: typeof DisplayDay;
|
|
179
192
|
/** Track by ID so a re-render does not tear down every card. */
|
|
180
193
|
TrackCard: (_: number, deal: DealRosterRow) => string;
|
|
181
194
|
/** Exposed for the template's per-card fallback. See DEFAULT_DISPLAY_CURRENCY. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal-board.component.d.ts","sourceRoot":"","sources":["../../../src/lib/board/deal-board.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAW,WAAW,EAAe,MAAM,wBAAwB,CAAC;AAE3E,OAAO,EAGH,YAAY,EAIf,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"deal-board.component.d.ts","sourceRoot":"","sources":["../../../src/lib/board/deal-board.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
import { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
|
|
43
43
|
import { CommonModule } from '@angular/common';
|
|
44
44
|
import { ChangeDetectorRef, Component, EventEmitter, Input, Output, inject, } from '@angular/core';
|
|
45
|
+
import { FromCalendarDay, ToCalendarDay } from '@mj-biz-apps/common-entities';
|
|
45
46
|
import { DealWorkspaceService } from '../workspace/deal-workspace.service';
|
|
46
47
|
import * as i0 from "@angular/core";
|
|
47
48
|
import * as i1 from "@angular/common";
|
|
@@ -209,7 +210,7 @@ function DealBoardComponent_Conditional_10_For_2_For_13_Template(rf, ctx) { if (
|
|
|
209
210
|
i0.ɵɵadvance(3);
|
|
210
211
|
i0.ɵɵtextInterpolate(deal_r7.OwnerEmployee ?? "Unassigned");
|
|
211
212
|
i0.ɵɵadvance(2);
|
|
212
|
-
i0.ɵɵtextInterpolate(deal_r7.ExpectedCloseDate ? i0.ɵɵ
|
|
213
|
+
i0.ɵɵtextInterpolate(ctx_r2.DisplayDay(deal_r7.ExpectedCloseDate) ? i0.ɵɵpipeBind3(17, 10, ctx_r2.DisplayDay(deal_r7.ExpectedCloseDate), "MMM d, y", "UTC") : "No date");
|
|
213
214
|
} }
|
|
214
215
|
function DealBoardComponent_Conditional_10_For_2_Conditional_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
215
216
|
i0.ɵɵtext(0, " Close deals from the deal form. ");
|
|
@@ -241,7 +242,7 @@ function DealBoardComponent_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1)
|
|
|
241
242
|
i0.ɵɵelementEnd();
|
|
242
243
|
i0.ɵɵelementStart(11, "div", 23);
|
|
243
244
|
i0.ɵɵlistener("cdkDropListDropped", function DealBoardComponent_Conditional_10_For_2_Template_div_cdkDropListDropped_11_listener($event) { const column_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnDrop($event, column_r5)); });
|
|
244
|
-
i0.ɵɵrepeaterCreate(12, DealBoardComponent_Conditional_10_For_2_For_13_Template, 19,
|
|
245
|
+
i0.ɵɵrepeaterCreate(12, DealBoardComponent_Conditional_10_For_2_For_13_Template, 19, 14, "article", 24, i0.ɵɵcomponentInstance().TrackCard, true);
|
|
245
246
|
i0.ɵɵconditionalCreate(14, DealBoardComponent_Conditional_10_For_2_Conditional_14_Template, 3, 1, "p", 25);
|
|
246
247
|
i0.ɵɵelementEnd()();
|
|
247
248
|
} if (rf & 2) {
|
|
@@ -304,6 +305,20 @@ function DealBoardComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
304
305
|
i0.ɵɵadvance(2);
|
|
305
306
|
i0.ɵɵconditional(ctx_r2.Unstaged.length > 0 ? 3 : -1);
|
|
306
307
|
} }
|
|
308
|
+
/**
|
|
309
|
+
* A `DATE` column's day, as a value the `date` pipe can format with `'UTC'` (bc-aidp-next-golive#168).
|
|
310
|
+
*
|
|
311
|
+
* `ExpectedCloseDate` is a calendar day handed back as UTC midnight, so formatting it in the viewer's
|
|
312
|
+
* zone shows the PREVIOUS day to anyone west of Greenwich — 30 September read as "Sep 29" in Chicago.
|
|
313
|
+
* The card now passes `'UTC'`, and this normalises the value first because the roster can deliver a
|
|
314
|
+
* `Date` OR a string: Angular parses a bare `YYYY-MM-DD` string as LOCAL midnight, which `'UTC'` would
|
|
315
|
+
* then move back a day for anyone EAST of Greenwich. Through `ToCalendarDay` both shapes become the
|
|
316
|
+
* same UTC midnight, so one pipe argument is right everywhere.
|
|
317
|
+
*/
|
|
318
|
+
export function DisplayDay(value) {
|
|
319
|
+
const day = ToCalendarDay(value);
|
|
320
|
+
return day ? FromCalendarDay(day) : null;
|
|
321
|
+
}
|
|
307
322
|
/**
|
|
308
323
|
* The one currency a set of cards shares, or NULL when they do not share one.
|
|
309
324
|
*
|
|
@@ -564,6 +579,8 @@ export class DealBoardComponent {
|
|
|
564
579
|
NameOf(pipelineID) {
|
|
565
580
|
return this.Pipelines.find((p) => p.ID === pipelineID)?.Name ?? '—';
|
|
566
581
|
}
|
|
582
|
+
/** Exposed for the card's close date. See {@link DisplayDay}. */
|
|
583
|
+
DisplayDay = DisplayDay;
|
|
567
584
|
/** Track by ID so a re-render does not tear down every card. */
|
|
568
585
|
TrackCard = (_, deal) => deal.ID;
|
|
569
586
|
/** Exposed for the template's per-card fallback. See DEFAULT_DISPLAY_CURRENCY. */
|
|
@@ -608,7 +625,7 @@ export class DealBoardComponent {
|
|
|
608
625
|
}
|
|
609
626
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DealBoardComponent, [{
|
|
610
627
|
type: Component,
|
|
611
|
-
args: [{ selector: 'mjs-deal-board', standalone: true, imports: [CommonModule, CdkDropList, CdkDrag], template: "<!--\n The pipeline board. Columns are stages in DisplayOrder; cards are deals.\n\n A closing column renders disabled with a hint rather than being hidden: hiding it would make the board\n lie about the pipeline's shape, and a rep looking for \"where do won deals go\" needs to see that the\n answer is \"not by dragging\".\n-->\n<div class=\"db\">\n\n <!-- Pipeline switcher. A pipeline defines the stages, so this is the board's one real control. -->\n <div class=\"db-bar\">\n <span class=\"db-bar__label\">Pipeline</span>\n <div class=\"db-bar__pipes\" role=\"tablist\" aria-label=\"Pipeline\">\n @for (pipeline of Pipelines; track pipeline.ID) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"db-pipe\"\n [class.db-pipe--on]=\"pipeline.ID === ActivePipelineID\"\n [attr.aria-selected]=\"pipeline.ID === ActivePipelineID\"\n (click)=\"SelectPipeline(pipeline.ID)\">\n {{ pipeline.Name }}\n </button>\n }\n </div>\n @if (Moving) {\n <span class=\"db-bar__busy\"><i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i> Moving\u2026</span>\n }\n </div>\n\n @if (Message) {\n <p class=\"db-msg\" role=\"status\">\n <i class=\"fa-solid fa-circle-info\" aria-hidden=\"true\"></i> {{ Message }}\n </p>\n }\n\n @if (Columns.length === 0) {\n <p class=\"db-empty\">This pipeline has no stages yet.</p>\n } @else {\n <div class=\"db-cols\">\n @for (column of Columns; track TrackColumn($index, column)) {\n <section\n class=\"db-col\"\n [class.db-col--closing]=\"column.IsClosing\"\n [attr.aria-label]=\"column.Label\">\n\n <header class=\"db-col__head\">\n <span class=\"db-col__name\">\n {{ column.Label }}\n @if (column.IsClosing) {\n <!--\n THIS SAID THE OPPOSITE OF WHAT HAPPENS. \"Arriving here closes and locks the\n deal\" describes a behaviour the server deliberately refuses: a stage whose\n status locks contributes NO status to a save, so a deal moved into this\n column keeps the status it had (`planStageDefaults` gates on `LocksDeal`).\n A rep reading the old text would think a drag closes the deal.\n\n And the drag cannot happen either: `CanDropInto` returns false for a closing\n column, with a second guard behind it. So the tooltip says what the lock icon\n actually means -- this column is not a destination -- and where closing lives,\n which is the same place the empty state below points.\n -->\n <i class=\"fa-solid fa-lock db-col__lock\"\n aria-hidden=\"true\"\n title=\"Deals cannot be moved here. Close a deal from the deal form.\"></i>\n }\n </span>\n <span class=\"db-col__meta\">\n <span class=\"db-col__count\">{{ column.Cards.length }}</span>\n <!--\n A SUM of stored Deal.Amount values. This app prices nothing; the marker says whether the\n ORDERS engine did, and the currency question is separate from the provenance question.\n\n NO TOTAL WHEN THE COLUMN MIXES CURRENCIES. Adding EUR to USD produces a number that is\n wrong in a way nobody can see; an absent figure prompts a question instead.\n\n UNIONED, and the board branch's half needed one correction to survive: it carried\n `currency:'USD'`, which is the hardcoding the currency work removed. The `--stated` class\n is its contribution and is kept; the literal is not.\n -->\n @if (column.MixedCurrency) {\n <span class=\"db-col__total db-col__total--mixed\"\n title=\"This stage holds deals in more than one currency, so a single total would be meaningless.\">\n mixed currencies\n </span>\n } @else {\n <span class=\"db-col__total\" [class.db-col__total--stated]=\"column.Unpriced > 0\">\n <!-- `?? DefaultCurrency` because Currency is null in two different situations and only\n one of them is \"mixed\": an EMPTY column has no currency to disagree about, and its\n total is 0. The mixed case never reaches here \u2014 it is the @if above. -->\n {{ column.Total | currency:(column.Currency ?? DefaultCurrency):'symbol':'1.0-0' }}\n </span>\n }\n </span>\n @if (column.Unpriced > 0) {\n <!--\n SAYS WHICH OF THE TWO IT IS. A total nobody priced and a total that is only partly\n priced are different claims, and collapsing them is how a stated figure passes for an\n authoritative one. The wording lives in PricingNote() -- a template expression cannot\n hold a sentence without becoming unreadable.\n -->\n <span class=\"db-col__partial\" [title]=\"PricingNote(column)\">\n <i class=\"fa-solid fa-pen-nib\" aria-hidden=\"true\"></i>\n @if (column.NonePriced) {\n stated, not priced\n } @else {\n {{ column.Unpriced }} of {{ column.Cards.length }} stated\n }\n </span>\n }\n </header>\n\n <div\n class=\"db-col__drop\"\n cdkDropList\n [id]=\"'col-' + column.StageID\"\n [cdkDropListData]=\"column\"\n [cdkDropListConnectedTo]=\"ColumnIDs\"\n [cdkDropListEnterPredicate]=\"CanDropInto(column)\"\n (cdkDropListDropped)=\"OnDrop($event, column)\">\n\n @for (deal of column.Cards; track TrackCard($index, deal)) {\n <article\n class=\"db-card\"\n cdkDrag\n [cdkDragData]=\"deal\"\n [cdkDragDisabled]=\"Moving\"\n (click)=\"OpenCard(deal)\"\n (keydown.enter)=\"OpenCard(deal)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"'Open ' + deal.Name\">\n\n <div class=\"db-card__name\">{{ deal.Name }}</div>\n <div class=\"db-card__customer\">\n <i class=\"fa-solid fa-building\" aria-hidden=\"true\"></i> {{ deal.CustomerName }}\n </div>\n\n <div class=\"db-card__figures\">\n <span class=\"db-card__amount\">\n @if (deal.Amount === null) {\n <span class=\"db-card__noamount\" title=\"No amount recorded yet\">\u2014</span>\n } @else {\n {{ deal.Amount | currency:(deal.CurrencyID ?? DefaultCurrency):'symbol':'1.0-0' }}\n }\n <!--\n BOTH CASES ARE MARKED, and marking only one was the defect. A calculator on the\n priced figure and nothing on the stated one means the reader has to notice an\n ABSENCE to learn anything -- and on data where nothing is priced, no card carries\n a marker at all, so the whole board reads as authoritative. A positive mark on\n each says which it is without anyone having to know the convention.\n -->\n @if (deal.Amount !== null) {\n @if (deal.AmountIsComputed) {\n <i class=\"fa-solid fa-calculator db-card__computed\"\n aria-hidden=\"true\"\n title=\"Priced by Orders\"></i>\n } @else {\n <i class=\"fa-solid fa-pen-nib db-card__stated\"\n aria-hidden=\"true\"\n title=\"Entered manually rather than priced by Orders\"></i>\n }\n }\n </span>\n @if (deal.Probability !== null) {\n <span class=\"db-card__prob\">{{ deal.Probability }}%</span>\n }\n </div>\n\n <div class=\"db-card__foot\">\n <span class=\"db-card__owner\">{{ deal.OwnerEmployee ?? 'Unassigned' }}</span>\n <span class=\"db-card__close\">{{ deal.ExpectedCloseDate ? (deal.ExpectedCloseDate | date:'MMM d, y') : 'No date' }}</span>\n </div>\n\n <div class=\"db-card__ghost\" *cdkDragPreview>{{ deal.Name }}</div>\n </article>\n }\n\n @if (column.Cards.length === 0) {\n <p class=\"db-col__empty\">\n @if (column.IsClosing) { Close deals from the deal form. } @else { Nothing here. }\n </p>\n }\n </div>\n </section>\n }\n </div>\n\n @if (Unstaged.length > 0) {\n <!-- Deals with no stage would otherwise be invisible on a board built from stage columns, and\n \"missing from the board\" is indistinguishable from \"does not exist\". -->\n <section class=\"db-unstaged\">\n <h4 class=\"db-unstaged__head\">\n <i class=\"fa-solid fa-circle-question\" aria-hidden=\"true\"></i>\n No stage set ({{ Unstaged.length }})\n </h4>\n <div class=\"db-unstaged__list\">\n @for (deal of Unstaged; track TrackCard($index, deal)) {\n <button type=\"button\" class=\"db-chip\" (click)=\"OpenCard(deal)\">\n {{ deal.Name }}\n </button>\n }\n </div>\n </section>\n }\n }\n</div>\n", styles: ["/*\n Board styles.\n\n SEMANTIC TOKENS ONLY \u2014 the same `--mj-*` set the workspace uses, so the board inherits dark mode rather\n than needing its own. No hardcoded colour appears in this file.\n*/\n\n.db {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-height: 0;\n}\n\n/* \u2500\u2500 Pipeline switcher \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.db-bar {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n flex-wrap: wrap;\n}\n\n.db-bar__label {\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n}\n\n.db-bar__pipes {\n display: flex;\n gap: 0.25rem;\n}\n\n.db-bar__busy {\n font-size: 0.8125rem;\n color: var(--mj-text-secondary);\n}\n\n.db-pipe {\n padding: 0.3rem 0.75rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n cursor: pointer;\n}\n\n.db-pipe:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.db-pipe--on {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.db-msg {\n margin: 0;\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--mj-status-warning-border);\n border-radius: 4px;\n color: var(--mj-status-warning);\n font-size: 0.8125rem;\n}\n\n.db-empty {\n color: var(--mj-text-muted);\n font-size: 0.875rem;\n}\n\n/* \u2500\u2500 Columns \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/*\n Horizontal scroll lives HERE rather than on the page: a board with eight stages must not make the whole\n shell scroll sideways, which would drag the rail and the header out of view.\n*/\n.db-cols {\n display: flex;\n gap: 0.75rem;\n overflow-x: auto;\n padding-bottom: 0.5rem;\n align-items: flex-start;\n}\n\n.db-col {\n flex: 0 0 15rem;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n min-height: 8rem;\n}\n\n/* A closing column is visibly inert \u2014 it accepts no drops, and should not invite one. */\n.db-col--closing {\n border-style: dashed;\n opacity: 0.75;\n}\n\n.db-col__head {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n padding: 0.5rem 0.625rem;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.db-col__name {\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n}\n\n.db-col__lock {\n color: var(--mj-text-muted);\n font-size: 0.6875rem;\n}\n\n.db-col__meta {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: 0.5rem;\n}\n\n.db-col__count {\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.db-col__total {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n font-variant-numeric: tabular-nums;\n}\n\n/* A total that nobody priced still reads as a figure -- this keeps it from reading as a FINAL one. */\n.db-col__total--stated {\n font-style: italic;\n}\n\n.db-col__partial {\n font-size: 0.6875rem;\n color: var(--mj-status-warning);\n}\n\n.db-col__drop {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n padding: 0.5rem;\n min-height: 4rem;\n}\n\n.db-col__empty {\n margin: 0;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n text-align: center;\n padding: 0.75rem 0.25rem;\n}\n\n/* \u2500\u2500 Cards \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.db-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 0.5rem 0.625rem;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.db-card:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.db-card:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 1px;\n}\n\n.db-card__name {\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.25;\n}\n\n.db-card__customer {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.3rem;\n}\n\n.db-card__figures {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: 0.5rem;\n}\n\n.db-card__amount {\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n display: flex;\n align-items: center;\n gap: 0.3rem;\n}\n\n/*\n * The two provenance markers are deliberately the SAME weight as each other.\n *\n * Making the stated one louder would read as an error, which it is not -- a stated amount is a\n * legitimate answer, just a different kind of fact from a priced one. Making it quieter would put us\n * back where we started, with the reader learning nothing unless they notice an absence.\n */\n.db-card__stated,\n.db-card__noamount,\n.db-card__computed {\n color: var(--mj-text-muted);\n font-size: 0.6875rem;\n}\n\n.db-card__prob {\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.db-card__foot {\n display: flex;\n justify-content: space-between;\n gap: 0.5rem;\n font-size: 0.6875rem;\n color: var(--mj-text-muted);\n}\n\n.db-card__owner,\n.db-card__close {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.db-card__ghost {\n padding: 0.375rem 0.625rem;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n}\n\n/* \u2500\u2500 Unstaged \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.db-unstaged {\n border-top: 1px solid var(--mj-border-default);\n padding-top: 0.625rem;\n}\n\n.db-unstaged__head {\n margin: 0 0 0.375rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n}\n\n.db-unstaged__list {\n display: flex;\n flex-wrap: wrap;\n gap: 0.375rem;\n}\n\n.db-chip {\n padding: 0.25rem 0.625rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.75rem;\n cursor: pointer;\n}\n\n.db-chip:hover {\n background: var(--mj-bg-surface-hover);\n}\n"] }]
|
|
628
|
+
args: [{ selector: 'mjs-deal-board', standalone: true, imports: [CommonModule, CdkDropList, CdkDrag], template: "<!--\n The pipeline board. Columns are stages in DisplayOrder; cards are deals.\n\n A closing column renders disabled with a hint rather than being hidden: hiding it would make the board\n lie about the pipeline's shape, and a rep looking for \"where do won deals go\" needs to see that the\n answer is \"not by dragging\".\n-->\n<div class=\"db\">\n\n <!-- Pipeline switcher. A pipeline defines the stages, so this is the board's one real control. -->\n <div class=\"db-bar\">\n <span class=\"db-bar__label\">Pipeline</span>\n <div class=\"db-bar__pipes\" role=\"tablist\" aria-label=\"Pipeline\">\n @for (pipeline of Pipelines; track pipeline.ID) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"db-pipe\"\n [class.db-pipe--on]=\"pipeline.ID === ActivePipelineID\"\n [attr.aria-selected]=\"pipeline.ID === ActivePipelineID\"\n (click)=\"SelectPipeline(pipeline.ID)\">\n {{ pipeline.Name }}\n </button>\n }\n </div>\n @if (Moving) {\n <span class=\"db-bar__busy\"><i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i> Moving\u2026</span>\n }\n </div>\n\n @if (Message) {\n <p class=\"db-msg\" role=\"status\">\n <i class=\"fa-solid fa-circle-info\" aria-hidden=\"true\"></i> {{ Message }}\n </p>\n }\n\n @if (Columns.length === 0) {\n <p class=\"db-empty\">This pipeline has no stages yet.</p>\n } @else {\n <div class=\"db-cols\">\n @for (column of Columns; track TrackColumn($index, column)) {\n <section\n class=\"db-col\"\n [class.db-col--closing]=\"column.IsClosing\"\n [attr.aria-label]=\"column.Label\">\n\n <header class=\"db-col__head\">\n <span class=\"db-col__name\">\n {{ column.Label }}\n @if (column.IsClosing) {\n <!--\n THIS SAID THE OPPOSITE OF WHAT HAPPENS. \"Arriving here closes and locks the\n deal\" describes a behaviour the server deliberately refuses: a stage whose\n status locks contributes NO status to a save, so a deal moved into this\n column keeps the status it had (`planStageDefaults` gates on `LocksDeal`).\n A rep reading the old text would think a drag closes the deal.\n\n And the drag cannot happen either: `CanDropInto` returns false for a closing\n column, with a second guard behind it. So the tooltip says what the lock icon\n actually means -- this column is not a destination -- and where closing lives,\n which is the same place the empty state below points.\n -->\n <i class=\"fa-solid fa-lock db-col__lock\"\n aria-hidden=\"true\"\n title=\"Deals cannot be moved here. Close a deal from the deal form.\"></i>\n }\n </span>\n <span class=\"db-col__meta\">\n <span class=\"db-col__count\">{{ column.Cards.length }}</span>\n <!--\n A SUM of stored Deal.Amount values. This app prices nothing; the marker says whether the\n ORDERS engine did, and the currency question is separate from the provenance question.\n\n NO TOTAL WHEN THE COLUMN MIXES CURRENCIES. Adding EUR to USD produces a number that is\n wrong in a way nobody can see; an absent figure prompts a question instead.\n\n UNIONED, and the board branch's half needed one correction to survive: it carried\n `currency:'USD'`, which is the hardcoding the currency work removed. The `--stated` class\n is its contribution and is kept; the literal is not.\n -->\n @if (column.MixedCurrency) {\n <span class=\"db-col__total db-col__total--mixed\"\n title=\"This stage holds deals in more than one currency, so a single total would be meaningless.\">\n mixed currencies\n </span>\n } @else {\n <span class=\"db-col__total\" [class.db-col__total--stated]=\"column.Unpriced > 0\">\n <!-- `?? DefaultCurrency` because Currency is null in two different situations and only\n one of them is \"mixed\": an EMPTY column has no currency to disagree about, and its\n total is 0. The mixed case never reaches here \u2014 it is the @if above. -->\n {{ column.Total | currency:(column.Currency ?? DefaultCurrency):'symbol':'1.0-0' }}\n </span>\n }\n </span>\n @if (column.Unpriced > 0) {\n <!--\n SAYS WHICH OF THE TWO IT IS. A total nobody priced and a total that is only partly\n priced are different claims, and collapsing them is how a stated figure passes for an\n authoritative one. The wording lives in PricingNote() -- a template expression cannot\n hold a sentence without becoming unreadable.\n -->\n <span class=\"db-col__partial\" [title]=\"PricingNote(column)\">\n <i class=\"fa-solid fa-pen-nib\" aria-hidden=\"true\"></i>\n @if (column.NonePriced) {\n stated, not priced\n } @else {\n {{ column.Unpriced }} of {{ column.Cards.length }} stated\n }\n </span>\n }\n </header>\n\n <div\n class=\"db-col__drop\"\n cdkDropList\n [id]=\"'col-' + column.StageID\"\n [cdkDropListData]=\"column\"\n [cdkDropListConnectedTo]=\"ColumnIDs\"\n [cdkDropListEnterPredicate]=\"CanDropInto(column)\"\n (cdkDropListDropped)=\"OnDrop($event, column)\">\n\n @for (deal of column.Cards; track TrackCard($index, deal)) {\n <article\n class=\"db-card\"\n cdkDrag\n [cdkDragData]=\"deal\"\n [cdkDragDisabled]=\"Moving\"\n (click)=\"OpenCard(deal)\"\n (keydown.enter)=\"OpenCard(deal)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"'Open ' + deal.Name\">\n\n <div class=\"db-card__name\">{{ deal.Name }}</div>\n <div class=\"db-card__customer\">\n <i class=\"fa-solid fa-building\" aria-hidden=\"true\"></i> {{ deal.CustomerName }}\n </div>\n\n <div class=\"db-card__figures\">\n <span class=\"db-card__amount\">\n @if (deal.Amount === null) {\n <span class=\"db-card__noamount\" title=\"No amount recorded yet\">\u2014</span>\n } @else {\n {{ deal.Amount | currency:(deal.CurrencyID ?? DefaultCurrency):'symbol':'1.0-0' }}\n }\n <!--\n BOTH CASES ARE MARKED, and marking only one was the defect. A calculator on the\n priced figure and nothing on the stated one means the reader has to notice an\n ABSENCE to learn anything -- and on data where nothing is priced, no card carries\n a marker at all, so the whole board reads as authoritative. A positive mark on\n each says which it is without anyone having to know the convention.\n -->\n @if (deal.Amount !== null) {\n @if (deal.AmountIsComputed) {\n <i class=\"fa-solid fa-calculator db-card__computed\"\n aria-hidden=\"true\"\n title=\"Priced by Orders\"></i>\n } @else {\n <i class=\"fa-solid fa-pen-nib db-card__stated\"\n aria-hidden=\"true\"\n title=\"Entered manually rather than priced by Orders\"></i>\n }\n }\n </span>\n @if (deal.Probability !== null) {\n <span class=\"db-card__prob\">{{ deal.Probability }}%</span>\n }\n </div>\n\n <div class=\"db-card__foot\">\n <span class=\"db-card__owner\">{{ deal.OwnerEmployee ?? 'Unassigned' }}</span>\n <span class=\"db-card__close\">{{ DisplayDay(deal.ExpectedCloseDate) ? (DisplayDay(deal.ExpectedCloseDate) | date:'MMM d, y':'UTC') : 'No date' }}</span>\n </div>\n\n <div class=\"db-card__ghost\" *cdkDragPreview>{{ deal.Name }}</div>\n </article>\n }\n\n @if (column.Cards.length === 0) {\n <p class=\"db-col__empty\">\n @if (column.IsClosing) { Close deals from the deal form. } @else { Nothing here. }\n </p>\n }\n </div>\n </section>\n }\n </div>\n\n @if (Unstaged.length > 0) {\n <!-- Deals with no stage would otherwise be invisible on a board built from stage columns, and\n \"missing from the board\" is indistinguishable from \"does not exist\". -->\n <section class=\"db-unstaged\">\n <h4 class=\"db-unstaged__head\">\n <i class=\"fa-solid fa-circle-question\" aria-hidden=\"true\"></i>\n No stage set ({{ Unstaged.length }})\n </h4>\n <div class=\"db-unstaged__list\">\n @for (deal of Unstaged; track TrackCard($index, deal)) {\n <button type=\"button\" class=\"db-chip\" (click)=\"OpenCard(deal)\">\n {{ deal.Name }}\n </button>\n }\n </div>\n </section>\n }\n }\n</div>\n", styles: ["/*\n Board styles.\n\n SEMANTIC TOKENS ONLY \u2014 the same `--mj-*` set the workspace uses, so the board inherits dark mode rather\n than needing its own. No hardcoded colour appears in this file.\n*/\n\n.db {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-height: 0;\n}\n\n/* \u2500\u2500 Pipeline switcher \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.db-bar {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n flex-wrap: wrap;\n}\n\n.db-bar__label {\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n}\n\n.db-bar__pipes {\n display: flex;\n gap: 0.25rem;\n}\n\n.db-bar__busy {\n font-size: 0.8125rem;\n color: var(--mj-text-secondary);\n}\n\n.db-pipe {\n padding: 0.3rem 0.75rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n cursor: pointer;\n}\n\n.db-pipe:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.db-pipe--on {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.db-msg {\n margin: 0;\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--mj-status-warning-border);\n border-radius: 4px;\n color: var(--mj-status-warning);\n font-size: 0.8125rem;\n}\n\n.db-empty {\n color: var(--mj-text-muted);\n font-size: 0.875rem;\n}\n\n/* \u2500\u2500 Columns \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/*\n Horizontal scroll lives HERE rather than on the page: a board with eight stages must not make the whole\n shell scroll sideways, which would drag the rail and the header out of view.\n*/\n.db-cols {\n display: flex;\n gap: 0.75rem;\n overflow-x: auto;\n padding-bottom: 0.5rem;\n align-items: flex-start;\n}\n\n.db-col {\n flex: 0 0 15rem;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n min-height: 8rem;\n}\n\n/* A closing column is visibly inert \u2014 it accepts no drops, and should not invite one. */\n.db-col--closing {\n border-style: dashed;\n opacity: 0.75;\n}\n\n.db-col__head {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n padding: 0.5rem 0.625rem;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.db-col__name {\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n}\n\n.db-col__lock {\n color: var(--mj-text-muted);\n font-size: 0.6875rem;\n}\n\n.db-col__meta {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: 0.5rem;\n}\n\n.db-col__count {\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.db-col__total {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n font-variant-numeric: tabular-nums;\n}\n\n/* A total that nobody priced still reads as a figure -- this keeps it from reading as a FINAL one. */\n.db-col__total--stated {\n font-style: italic;\n}\n\n.db-col__partial {\n font-size: 0.6875rem;\n color: var(--mj-status-warning);\n}\n\n.db-col__drop {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n padding: 0.5rem;\n min-height: 4rem;\n}\n\n.db-col__empty {\n margin: 0;\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n text-align: center;\n padding: 0.75rem 0.25rem;\n}\n\n/* \u2500\u2500 Cards \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.db-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 0.5rem 0.625rem;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.db-card:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.db-card:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 1px;\n}\n\n.db-card__name {\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.25;\n}\n\n.db-card__customer {\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.3rem;\n}\n\n.db-card__figures {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n gap: 0.5rem;\n}\n\n.db-card__amount {\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n display: flex;\n align-items: center;\n gap: 0.3rem;\n}\n\n/*\n * The two provenance markers are deliberately the SAME weight as each other.\n *\n * Making the stated one louder would read as an error, which it is not -- a stated amount is a\n * legitimate answer, just a different kind of fact from a priced one. Making it quieter would put us\n * back where we started, with the reader learning nothing unless they notice an absence.\n */\n.db-card__stated,\n.db-card__noamount,\n.db-card__computed {\n color: var(--mj-text-muted);\n font-size: 0.6875rem;\n}\n\n.db-card__prob {\n font-size: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.db-card__foot {\n display: flex;\n justify-content: space-between;\n gap: 0.5rem;\n font-size: 0.6875rem;\n color: var(--mj-text-muted);\n}\n\n.db-card__owner,\n.db-card__close {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.db-card__ghost {\n padding: 0.375rem 0.625rem;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 0.8125rem;\n color: var(--mj-text-primary);\n}\n\n/* \u2500\u2500 Unstaged \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.db-unstaged {\n border-top: 1px solid var(--mj-border-default);\n padding-top: 0.625rem;\n}\n\n.db-unstaged__head {\n margin: 0 0 0.375rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n}\n\n.db-unstaged__list {\n display: flex;\n flex-wrap: wrap;\n gap: 0.375rem;\n}\n\n.db-chip {\n padding: 0.25rem 0.625rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 0.75rem;\n cursor: pointer;\n}\n\n.db-chip:hover {\n background: var(--mj-bg-surface-hover);\n}\n"] }]
|
|
612
629
|
}], null, { Deals: [{
|
|
613
630
|
type: Input
|
|
614
631
|
}], Pipelines: [{
|
|
@@ -622,5 +639,5 @@ export class DealBoardComponent {
|
|
|
622
639
|
}], StageMoved: [{
|
|
623
640
|
type: Output
|
|
624
641
|
}] }); })();
|
|
625
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DealBoardComponent, { className: "DealBoardComponent", filePath: "lib/board/deal-board.component.ts", lineNumber:
|
|
642
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DealBoardComponent, { className: "DealBoardComponent", filePath: "lib/board/deal-board.component.ts", lineNumber: 146 }); })();
|
|
626
643
|
//# sourceMappingURL=deal-board.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal-board.component.js","sourceRoot":"","sources":["../../../src/lib/board/deal-board.component.ts","../../../src/lib/board/deal-board.component.html"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,OAAO,EAAe,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACH,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,KAAK,EACL,MAAM,EACN,MAAM,GACT,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAsB,MAAM,qCAAqC,CAAC;;;;;;
|
|
1
|
+
{"version":3,"file":"deal-board.component.js","sourceRoot":"","sources":["../../../src/lib/board/deal-board.component.ts","../../../src/lib/board/deal-board.component.html"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,OAAO,EAAe,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACH,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,KAAK,EACL,MAAM,EACN,MAAM,GACT,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAsB,MAAM,qCAAqC,CAAC;;;;;;ICxCvF,iCAMwC;IAAtC,4MAAS,qCAA2B,KAAC;IACrC,YACF;IAAA,iBAAS;;;;IAJP,yEAAsD;;IAGtD,cACF;IADE,iDACF;;;IAIF,+BAA2B;IAAA,uBAA8D;IAAC,6BAAO;IAAA,iBAAO;;;IAK1G,4BAAgC;IAC9B,wBAA0D;IAAC,YAC7D;IAAA,iBAAI;;;IADyD,eAC7D;IAD6D,+CAC7D;;;IAIA,4BAAoB;IAAA,gDAAgC;IAAA,iBAAI;;;IAyB5C,wBAE4E;;;IAiB5E,gCACwG;IACtG,kCACF;IAAA,iBAAO;;;IAEP,gCAAgF;IAI9E,YACF;;IAAA,iBAAO;;;;IALqB,+DAAmD;IAI7E,cACF;IADE,uIACF;;;IAaE,oCACF;;;IACE,YACF;;;IADE,0FACF;;;IANF,gCAA4D;IAC1D,wBAAsD;IAGpD,AAFF,8GAAyB,wFAEhB;IAGX,iBAAO;;;;IAPuB,qDAA6B;IAEzD,eAIC;IAJD,8CAIC;;;IAkCK,gCAA+D;IAAA,sBAAC;IAAA,iBAAO;;;IAEvE,YACF;;;;;IADE,sIACF;;;IAUI,wBAEgC;;;IAEhC,wBAE6D;;;IAH7D,AAJF,8HAA6B,wGAIpB;;;IAJT,kDAQC;;;IAIH,gCAA4B;IAAA,YAAuB;IAAA,iBAAO;;;IAA9B,cAAuB;IAAvB,mDAAuB;;;IASvD,+BAA4C;IAAA,YAAe;IAAA,iBAAM;;;IAArB,cAAe;IAAf,kCAAe;;;;IApD7D,mCAS0C;IAHxC,AADA,gOAAS,wBAAc,KAAC,mOACP,wBAAc,KAAC;IAKhC,+BAA2B;IAAA,YAAe;IAAA,iBAAM;IAChD,+BAA+B;IAC7B,wBAAuD;IAAC,YAC1D;IAAA,iBAAM;IAGJ,AADF,+BAA8B,eACE;IAG1B,AAFF,kHAA4B,gFAEnB;IAUT,wGAA4B;IAW9B,iBAAO;IACP,oHAAiC;IAGnC,iBAAM;IAGJ,AADF,gCAA2B,gBACI;IAAA,aAAwC;IAAA,iBAAO;IAC5E,iCAA6B;IAAA,aAAmH;;IAClJ,AADkJ,iBAAO,EACnJ;IAEN,kGAA4C;IAC9C,iBAAU;;;;IAjDR,AADA,qCAAoB,kCACM;;IAOC,eAAe;IAAf,kCAAe;IAEgB,eAC1D;IAD0D,qDAC1D;IAII,eAIC;IAJD,iDAIC;IAQD,eAUC;IAVD,mDAUC;IAEH,cAEC;IAFD,wDAEC;IAI4B,eAAwC;IAAxC,2DAAwC;IACxC,eAAmH;IAAnH,wKAAmH;;;IASzH,iDAAgC;;;IAAU,+BAAc;;;IADnF,6BAAyB;IACoC,AAA3D,8GAAwB,wFAA0C;IACpE,iBAAI;;;IADF,cAAkF;IAAlF,6CAAkF;;;;IArItF,AADF,AALF,mCAGmC,iBAEJ,eACA;IACzB,YACA;IAAA,wGAAwB;IAiB1B,iBAAO;IAEL,AADF,gCAA2B,eACG;IAAA,YAAyB;IAAA,iBAAO;IAiB1D,AALF,2GAA4B,qFAKnB;IAQX,iBAAO;IACP,6GAA2B;IAgB7B,iBAAS;IAET,gCAOgD;IAA9C,wPAAsB,gCAAsB,KAAC;IAE7C,iJAuDC;IAED,0GAAiC;IAMrC,AADE,iBAAM,EACE;;;;IA7IR,sDAA0C;;IAKtC,eACA;IADA,gDACA;IAAA,cAgBC;IAhBD,8CAgBC;IAG2B,eAAyB;IAAzB,4CAAyB;IAYrD,cAYC;IAZD,iDAYC;IAEH,eAeC;IAfD,kDAeC;IAMD,cAA8B;IAG9B,AADA,AADA,AADA,+CAA8B,8BACJ,4CACU,4DACa;IAGjD,cAuDC;IAvDD,8BAuDC;IAED,eAIC;IAJD,wDAIC;;;;IAgBD,kCAA+D;IAAzB,sOAAS,wBAAc,KAAC;IAC5D,YACF;IAAA,iBAAS;;;IADP,cACF;IADE,6CACF;;;IARJ,AADF,mCAA6B,aACG;IAC5B,wBAA8D;IAC9D,YACF;IAAA,iBAAK;IACL,+BAA+B;IAC7B,oJAIC;IAEL,AADE,iBAAM,EACE;;;IATN,eACF;IADE,sEACF;IAEE,eAIC;IAJD,8BAIC;;;IAlKP,+BAAqB;IACnB,2IAiJC;IACH,iBAAM;IAEN,wGAA2B;;;IApJzB,cAiJC;IAjJD,6BAiJC;IAGH,eAgBC;IAhBD,qDAgBC;;ADnJL;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,KAAuC;IAC9D,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA+B;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AA8C9C,MAAM,OAAO,kBAAkB;IACV,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACvC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEjD,oGAAoG;IACpF,KAAK,GAAoB,EAAE,CAAC;IAC5B,SAAS,GAAqB,EAAE,CAAC;IACjC,MAAM,GAAkB,EAAE,CAAC;IAC3B,eAAe,GAAuB,EAAE,CAAC;IAEzD,2EAA2E;IACjD,UAAU,GAAG,IAAI,YAAY,EAAiB,CAAC;IACzE,0FAA0F;IAChE,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEzD,kBAAkB,GAAkB,IAAI,CAAC;IAChD,gGAAgG;IACzF,OAAO,GAAkB,IAAI,CAAC;IAC9B,MAAM,GAAG,KAAK,CAAC;IAEtB,wFAAwF;IACxF,IAAW,gBAAgB;QACvB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,OAAO,UAAU,EAAE,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,IAAW,OAAO;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,CACnB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACnE,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC;aACxD,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;aAC/C,GAAG,CAAc,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YACvE,OAAO;gBACH,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAC1E,KAAK,EAAE,KAAK;gBACZ,qFAAqF;gBACrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAmDG;gBACH,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAI,+OAA+O;gBAC5S,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC;gBACjC,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;uBAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBAC7D;;;;mBAIG;gBACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM;gBACzD,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;aAC1E,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;IAED,kGAAkG;IAClG,IAAW,QAAQ;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACvF,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,SAAS;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEO,aAAa,GAAG,GAAG,CAAC,CAAG,6DAA6D;IACpF,UAAU,GAAa,EAAE,CAAC;IAE3B,cAAc,CAAC,UAAkB;QACpC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEM,QAAQ,CAAC,IAAmB;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,+FAA+F;IACxF,WAAW,GAAG,CAAC,MAAmB,EAAE,EAAE,CAAC,GAAY,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAE/F;;;;;;;;OAQG;IACI,KAAK,CAAC,MAAM,CAAC,KAA+B,EAAE,MAAmB;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAqB,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1C,OAAO;QACX,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,uFAAuF;YACvF,IAAI,CAAC,OAAO;gBACR,IAAI,MAAM,CAAC,KAAK,0EAA0E;oBAC1F,8CAA8C,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,2CAA2C,CAAC;gBACxE,OAAO;YACX,CAAC;YAED,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;YAEvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO;oBACR,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;wBACtC,OAAO,CAAC,YAAY;wBACpB,IAAI,IAAI,CAAC,IAAI,uBAAuB,CAAC;gBACzC,OAAO;YACX,CAAC;YAED,4FAA4F;YAC5F,+BAA+B;YAC/B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,yBAAyB,GAAG,EAAE,CAAC;QAC/D,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;OAcG;IAEI,MAAM,CAAC,UAAyB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,IAAI,IAAI,GAAG,CAAC;IACxE,CAAC;IAED,iEAAiE;IACjD,UAAU,GAAG,UAAU,CAAC;IACxC,gEAAgE;IACzD,SAAS,GAAG,CAAC,CAAS,EAAE,IAAmB,EAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IACvE,kFAAkF;IAClE,eAAe,GAAG,wBAAwB,CAAC;IAC3D;;;;;OAKG;IACI,WAAW,CAAC,MAAmB;QAClC,OAAO,MAAM,CAAC,UAAU;YACpB,CAAC,CAAC,yFAAyF;kBACrF,wBAAwB;YAC9B,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,8CAA8C;kBACtF,6DAA6D,CAAC;IAC5E,CAAC;IAEM,WAAW,GAAG,CAAC,CAAS,EAAE,MAAmB,EAAU,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;4GApRvE,kBAAkB;6DAAlB,kBAAkB;YCtI3B,AADF,AAHF,8BAAgB,aAGM,cACU;YAAA,wBAAQ;YAAA,iBAAO;YAC3C,8BAAgE;YAC9D,wFAUC;YACH,iBAAM;YACN,qFAAc;YAGhB,iBAAM;YAEN,kFAAe;YAQb,AAFF,kFAA4B,sDAEnB;YAwKX,iBAAM;;YAjMA,eAUC;YAVD,4BAUC;YAEH,eAEC;YAFD,qCAEC;YAGH,cAIC;YAJD,sCAIC;YAED,cAyKC;YAzKD,mDAyKC;4BDhEW,YAAY,EAAE,WAAW,EAAE,OAAO;;iFAInC,kBAAkB;cAP9B,SAAS;2BACI,gBAAgB,cACd,IAAI,WACP,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC;;kBAS5C,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAGL,MAAM;;kBAEN,MAAM;;kFAbE,kBAAkB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The BUSINESS day an instant fell on, for `companyID` (bc-aidp-next-golive#168).
|
|
3
|
+
*
|
|
4
|
+
* `__mj_CreatedAt` and `ClosedAt` are instants. `ActualCloseDate` is a calendar day stamped in the
|
|
5
|
+
* business zone, so subtracting the UTC day of an instant from it mixes two zones: a deal created at
|
|
6
|
+
* 8 PM Central on the 30th has a UTC day of the 1st, and a cycle ending on the 30th read as "—" or a day
|
|
7
|
+
* short. Taking the instant's day in the same zone keeps both ends of a day count comparable.
|
|
8
|
+
*
|
|
9
|
+
* A bare `YYYY-MM-DD` is already a day and is returned as it is. Synchronous, so it relies on the caller
|
|
10
|
+
* having configured the engine (`BusinessTimeZoneEngine.Instance.Config`); unconfigured, the zone is UTC.
|
|
11
|
+
*/
|
|
12
|
+
export declare function BusinessDayOf(value: Date | string | null | undefined, companyID: string | null | undefined): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* The business day a deal closed on: `ActualCloseDate`, or — on a legacy row carrying only the instant —
|
|
15
|
+
* `ClosedAt`'s day in the business zone, so the fallback is the same kind of day (golive#168).
|
|
16
|
+
*
|
|
17
|
+
* ONE answer for every close figure on the form. The overview's sales cycle and close variance and the
|
|
18
|
+
* close-date labels on the overview and the hero all read this, so a legacy row cannot show "Closed
|
|
19
|
+
* Oct 1" beside an "on time" counted from 30 September. The result is a `DATE`-shaped value (UTC
|
|
20
|
+
* midnight) or a `YYYY-MM-DD` string; both format to the right day with `timeZone: 'UTC'`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function DealCloseDay(deal: {
|
|
23
|
+
ActualCloseDate?: Date | string | null;
|
|
24
|
+
ClosedAt?: Date | string | null;
|
|
25
|
+
CompanyID?: string | null;
|
|
26
|
+
} | null | undefined): Date | string | null;
|
|
27
|
+
//# sourceMappingURL=deal-close-day.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deal-close-day.d.ts","sourceRoot":"","sources":["../../../src/lib/form-panels/deal-close-day.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,MAAM,GAAG,IAAI,CAMf;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CACxB,IAAI,EAAE;IAAE,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAChI,IAAI,GAAG,MAAM,GAAG,IAAI,CAGtB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BusinessTimeZoneEngine, CalendarDayIn, IsCalendarDay } from '@mj-biz-apps/common-entities';
|
|
2
|
+
/**
|
|
3
|
+
* The BUSINESS day an instant fell on, for `companyID` (bc-aidp-next-golive#168).
|
|
4
|
+
*
|
|
5
|
+
* `__mj_CreatedAt` and `ClosedAt` are instants. `ActualCloseDate` is a calendar day stamped in the
|
|
6
|
+
* business zone, so subtracting the UTC day of an instant from it mixes two zones: a deal created at
|
|
7
|
+
* 8 PM Central on the 30th has a UTC day of the 1st, and a cycle ending on the 30th read as "—" or a day
|
|
8
|
+
* short. Taking the instant's day in the same zone keeps both ends of a day count comparable.
|
|
9
|
+
*
|
|
10
|
+
* A bare `YYYY-MM-DD` is already a day and is returned as it is. Synchronous, so it relies on the caller
|
|
11
|
+
* having configured the engine (`BusinessTimeZoneEngine.Instance.Config`); unconfigured, the zone is UTC.
|
|
12
|
+
*/
|
|
13
|
+
export function BusinessDayOf(value, companyID) {
|
|
14
|
+
if (!value)
|
|
15
|
+
return null;
|
|
16
|
+
if (IsCalendarDay(value))
|
|
17
|
+
return value;
|
|
18
|
+
const instant = value instanceof Date ? value : new Date(value);
|
|
19
|
+
if (!Number.isFinite(instant.getTime()))
|
|
20
|
+
return null;
|
|
21
|
+
return CalendarDayIn(instant, BusinessTimeZoneEngine.Instance.Resolve(companyID ?? undefined));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The business day a deal closed on: `ActualCloseDate`, or — on a legacy row carrying only the instant —
|
|
25
|
+
* `ClosedAt`'s day in the business zone, so the fallback is the same kind of day (golive#168).
|
|
26
|
+
*
|
|
27
|
+
* ONE answer for every close figure on the form. The overview's sales cycle and close variance and the
|
|
28
|
+
* close-date labels on the overview and the hero all read this, so a legacy row cannot show "Closed
|
|
29
|
+
* Oct 1" beside an "on time" counted from 30 September. The result is a `DATE`-shaped value (UTC
|
|
30
|
+
* midnight) or a `YYYY-MM-DD` string; both format to the right day with `timeZone: 'UTC'`.
|
|
31
|
+
*/
|
|
32
|
+
export function DealCloseDay(deal) {
|
|
33
|
+
if (!deal)
|
|
34
|
+
return null;
|
|
35
|
+
return deal.ActualCloseDate ?? BusinessDayOf(deal.ClosedAt, deal.CompanyID);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=deal-close-day.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deal-close-day.js","sourceRoot":"","sources":["../../../src/lib/form-panels/deal-close-day.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEpG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,KAAuC,EACvC,SAAoC;IAEpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC;AACnG,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CACxB,IAA+H;IAE/H,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -307,8 +307,14 @@ export declare class MJSDealOverviewPanel extends BaseFormPanel<DealEntity> {
|
|
|
307
307
|
get CloseVariance(): string;
|
|
308
308
|
/** "Closed won" / "Closed lost" — the Timing row that reports what happened. */
|
|
309
309
|
get ClosedRowLabel(): string;
|
|
310
|
-
/** The day it closed. */
|
|
310
|
+
/** The day it closed — the business day, as {@link closeDay} defines it. */
|
|
311
311
|
get ClosedDateLabel(): string;
|
|
312
|
+
/**
|
|
313
|
+
* The business day the deal closed on. See {@link DealCloseDay}: every close figure on this panel and
|
|
314
|
+
* on the hero reads it, so a legacy `ClosedAt`-only row cannot show one day in its label and count
|
|
315
|
+
* from another in its variance (golive#168).
|
|
316
|
+
*/
|
|
317
|
+
private get closeDay();
|
|
312
318
|
/**
|
|
313
319
|
* Creation to close, in days — the question worth asking about a finished deal, and one nothing
|
|
314
320
|
* reported anywhere. Measured from `__mj_CreatedAt`, which is the only creation stamp there is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal-form.panels.d.ts","sourceRoot":"","sources":["../../../src/lib/form-panels/deal-form.panels.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAmC,KAAK,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAG3G,OAAO,EAAE,aAAa,EAAoD,MAAM,+BAA+B,CAAC;AAChH,OAAO,EAEH,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,UAAU,EAGV,KAAK,gBAAgB,EAKxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;;
|
|
1
|
+
{"version":3,"file":"deal-form.panels.d.ts","sourceRoot":"","sources":["../../../src/lib/form-panels/deal-form.panels.ts"],"names":[],"mappings":"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"}
|