react-semaphor 0.1.457 → 0.1.460
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/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +32 -32
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +4 -4
- package/dist/chunks/{analyze-result-contract-BbRJ-C06.js → analyze-result-contract-DROq4vgY.js} +1 -1
- package/dist/chunks/{analyze-result-contract-LPDNldic.cjs → analyze-result-contract-DSGoFuXQ.cjs} +1 -1
- package/dist/chunks/canonical-result-keys-CEQefvdO.js +33 -0
- package/dist/chunks/canonical-result-keys-Cb96edol.cjs +1 -0
- package/dist/chunks/{common-types-H51FLKB7.js → common-types-BHVKgxRR.js} +1 -1
- package/dist/chunks/{common-types-C57kJ59w.cjs → common-types-BcV9PD9D.cjs} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-DujsUIww.js → dashboard-briefing-launcher-B07JnyCb.js} +60 -61
- package/dist/chunks/{dashboard-briefing-launcher-W5sKgsYF.cjs → dashboard-briefing-launcher-BCkOKkCv.cjs} +2 -2
- package/dist/chunks/{dashboard-controls-Cbw_M-lb.cjs → dashboard-controls-BpxouYOZ.cjs} +1 -1
- package/dist/chunks/{dashboard-controls-DZ5SgVcR.js → dashboard-controls-C8OxHQV6.js} +44 -45
- package/dist/chunks/dashboard-filter-value-compatibility-KXIyvbhc.js +677 -0
- package/dist/chunks/dashboard-filter-value-compatibility-UapptYnn.cjs +1 -0
- package/dist/chunks/dashboard-input-contract-BkRFQ7Tq.cjs +1 -0
- package/dist/chunks/{dashboard-date-comparison-definition-DC3ekV2S.js → dashboard-input-contract-D5dxTWJ5.js} +41 -25
- package/dist/chunks/dashboard-json-Bc-iIwxF.cjs +1 -0
- package/dist/chunks/{dashboard-json-CHfML8Ff.js → dashboard-json-CecgbGtq.js} +13 -14
- package/dist/chunks/{edit-dashboard-visual-CLqJGsMx.js → edit-dashboard-visual-CpJKJaER.js} +1493 -1501
- package/dist/chunks/{edit-dashboard-visual-BLmOGhEP.cjs → edit-dashboard-visual-xacUS2i5.cjs} +31 -31
- package/dist/chunks/{editor-action-buttons-C87bPAfR.cjs → editor-action-buttons-23Wf8EMx.cjs} +2 -2
- package/dist/chunks/{editor-action-buttons-BVN1okyo.js → editor-action-buttons-DEoieV2G.js} +28 -28
- package/dist/chunks/index-B9c22LmC.cjs +1392 -0
- package/dist/chunks/{index--A6SZu3V.js → index-DDoyXYWM.js} +43691 -41551
- package/dist/chunks/{index-BIFLI8ul.js → index-De_7nrwb.js} +10 -10
- package/dist/chunks/index-DjjKJPDy.cjs +4 -0
- package/dist/chunks/{matrix-result-contract-CofATICL.js → matrix-result-contract-BTpPuHOc.js} +88 -104
- package/dist/chunks/matrix-result-contract-ZRNfeIbI.cjs +1 -0
- package/dist/chunks/{pivot-header-presentation-B9nXXKlW.cjs → pivot-header-presentation-BijPbP33.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-D-0jvUwn.js → pivot-header-presentation-DW0gKG8g.js} +2 -2
- package/dist/chunks/{pivot-result-identity-Bb4EixVN.cjs → pivot-result-identity-DxHtiKVj.cjs} +1 -1
- package/dist/chunks/{pivot-result-identity-DU1v-5Xk.js → pivot-result-identity-Z9tN2tEV.js} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-DTLRuDEW.cjs → pivot-result-lifecycle-BXzIlQVu.cjs} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-CHWEGU2o.js → pivot-result-lifecycle-g2U-vzQb.js} +7 -7
- package/dist/chunks/{raw-temporal-contract-BtjH_G-d.cjs → raw-temporal-contract-DfAvqNMo.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-CxncLze5.js → raw-temporal-contract-UtAqoOZO.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-DQtQZ3fF.js → report-preferences-dialog-CZiNX1Ri.js} +6 -6
- package/dist/chunks/{report-preferences-dialog-DajdnPvA.cjs → report-preferences-dialog-D_N6NXnq.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-DqxS4wbi.cjs → report-runtime-context-C0NfLPfc.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-SM6YO61_.js → report-runtime-context-CNncA3VD.js} +11 -11
- package/dist/chunks/{saved-temporal-bucket-format-CFfWXRl9.cjs → saved-temporal-bucket-format-3QKveR3v.cjs} +1 -1
- package/dist/chunks/{saved-temporal-bucket-format-SGAV0ivR.js → saved-temporal-bucket-format-Dd2eixTH.js} +11 -11
- package/dist/chunks/switch-DNFbgZz4.cjs +138 -0
- package/dist/chunks/{switch-BOBLNHUj.js → switch-DSZobe8w.js} +6560 -5189
- package/dist/chunks/{temporal-bucket-5UYEotyQ.js → temporal-bucket-C85rmFmC.js} +4 -4
- package/dist/chunks/temporal-bucket-authoring-1fZuPAVb.js +653 -0
- package/dist/chunks/temporal-bucket-authoring-BK1UhYpD.cjs +1 -0
- package/dist/chunks/{temporal-bucket-contract-D5d-xEl3.js → temporal-bucket-contract-DXXNZssK.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-D2-93DGr.cjs → temporal-bucket-contract-xFkvboaw.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-DHY1y9lq.cjs → temporal-bucket-pMfghsLX.cjs} +1 -1
- package/dist/chunks/{token-types-GbxRUozo.js → token-types-BLxc7UwR.js} +1 -1
- package/dist/chunks/{token-types-D7CaaI80.cjs → token-types-BYYO109W.cjs} +1 -1
- package/dist/chunks/{update-policy-hednMF-0.js → update-policy-CB8XJIoY.js} +1 -1
- package/dist/chunks/{update-policy-BmiOd0PB.cjs → update-policy-DMjjGjQY.cjs} +1 -1
- package/dist/chunks/{validators-DEmd8Sin.js → validators-DVd8s3qY.js} +416 -350
- package/dist/chunks/validators-dJlwubP4.cjs +1 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +2 -2
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +328 -311
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +55 -55
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +61 -56
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +9 -9
- package/dist/format-utils/index.cjs +1 -1
- package/dist/format-utils/index.js +15 -15
- package/dist/index.cjs +1 -1
- package/dist/index.js +154 -155
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +3 -3
- package/dist/types/analytics-protocol.d.ts +16 -8
- package/dist/types/briefings.d.ts +82 -9
- package/dist/types/dashboard-assistant.d.ts +11 -6
- package/dist/types/dashboard-authoring.d.ts +244 -15
- package/dist/types/dashboard.d.ts +96 -10
- package/dist/types/data-app-builder.d.ts +11 -6
- package/dist/types/data-app-codegen-node.d.ts +16 -8
- package/dist/types/data-app-codegen.d.ts +16 -8
- package/dist/types/data-app-sdk-adapters.d.ts +17 -11
- package/dist/types/data-app-sdk-validation.d.ts +17 -11
- package/dist/types/data-app-sdk.d.ts +17 -11
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +212 -16
- package/dist/types/shared.d.ts +82 -9
- package/dist/types/surfboard.d.ts +96 -10
- package/dist/types/types.d.ts +96 -10
- package/package.json +1 -1
- package/dist/chunks/canonical-result-keys-BA0HCP4e.cjs +0 -1
- package/dist/chunks/canonical-result-keys-D6avdjpA.js +0 -467
- package/dist/chunks/dashboard-date-comparison-definition-Ces4alFm.cjs +0 -1
- package/dist/chunks/dashboard-json-D9V7Vsvn.cjs +0 -1
- package/dist/chunks/index-BFar58xY.cjs +0 -1392
- package/dist/chunks/index-k8tEp0ys.cjs +0 -4
- package/dist/chunks/matrix-result-contract-zamd9euI.cjs +0 -1
- package/dist/chunks/switch-BHOdIXq3.cjs +0 -138
- package/dist/chunks/temporal-bucket-authoring-K1kE6R_z.js +0 -222
- package/dist/chunks/temporal-bucket-authoring-o3Emn05L.cjs +0 -1
- package/dist/chunks/validators-BDYprKI9.cjs +0 -1
package/dist/types/main.d.ts
CHANGED
|
@@ -43,6 +43,15 @@ declare type Actions_2 = {
|
|
|
43
43
|
setDefaultControlValues: (controlValues: Record<string, unknown> | undefined) => void;
|
|
44
44
|
setDashboardInputs: (inputs: DashboardInput[]) => void;
|
|
45
45
|
upsertDashboardInput: (input: DashboardInput) => void;
|
|
46
|
+
updateFilterDashboardInputDefinition: (inputId: string, filter: TFilter, metadata?: {
|
|
47
|
+
variableName?: string;
|
|
48
|
+
label?: string;
|
|
49
|
+
}) => void;
|
|
50
|
+
acceptDashboardFilterOptionSource: (updatedFilter: TFilter, optionSource: DashboardFilterOptionSource, settings?: DashboardFilterAuthoringSettingsUpdate, inputMetadata?: {
|
|
51
|
+
variableName?: string;
|
|
52
|
+
}) => DashboardFilterOptionSourceAcceptanceResult;
|
|
53
|
+
acceptDashboardFilterMapping: (request: DashboardFilterMappingAuthoringRequest, updatedFilter?: TFilter, settings?: DashboardFilterAuthoringSettingsUpdate) => DashboardFilterMappingAcceptanceResult;
|
|
54
|
+
disableDashboardFilterMapping: (filterId: string, updatedFilter?: TFilter, settings?: DashboardFilterAuthoringSettingsUpdate) => DashboardFilterMappingDisableResult;
|
|
46
55
|
removeDashboardInput: (inputId: string) => void;
|
|
47
56
|
setDefaultDashboardInputValues: (values: DashboardInputValues | undefined) => void;
|
|
48
57
|
setDefaultDashboardInputComparisonSelection: (input: Pick<DashboardInput, 'id' | 'runtimeScope'>, target: DashboardInputRuntimeTarget, selection: GlobalDateComparisonSelection | undefined) => void;
|
|
@@ -2041,6 +2050,37 @@ declare interface DashboardExportDialogProps {
|
|
|
2041
2050
|
onOpenChange: (open: boolean) => void;
|
|
2042
2051
|
}
|
|
2043
2052
|
|
|
2053
|
+
export declare type DashboardFilterApplication = {
|
|
2054
|
+
kind: 'cardMappings';
|
|
2055
|
+
/**
|
|
2056
|
+
* Sparse grounded bindings and explicit exclusions. A missing config card
|
|
2057
|
+
* may reuse a proven Option Value target on an executable source; it is not
|
|
2058
|
+
* an implicit exclusion, and source identity alone is not field evidence.
|
|
2059
|
+
*/
|
|
2060
|
+
cards: DashboardFilterCardApplication[];
|
|
2061
|
+
};
|
|
2062
|
+
|
|
2063
|
+
declare type DashboardFilterAuthoringSettingsUpdate = {
|
|
2064
|
+
defaultValueChanged: boolean;
|
|
2065
|
+
defaultFilterValue?: TFilterValue;
|
|
2066
|
+
defaultComparisonChanged: boolean;
|
|
2067
|
+
defaultComparisonSelection?: GlobalDateComparisonSelection;
|
|
2068
|
+
target: DashboardInputRuntimeTarget;
|
|
2069
|
+
optionSourceChanged?: boolean;
|
|
2070
|
+
optionSource?: DashboardFilterOptionSource;
|
|
2071
|
+
/** Raw selection identity changed; the previous runtime value is invalid. */
|
|
2072
|
+
selectionIdentityChanged?: boolean;
|
|
2073
|
+
};
|
|
2074
|
+
|
|
2075
|
+
export declare type DashboardFilterBoundCardApplication = {
|
|
2076
|
+
kind: 'bound';
|
|
2077
|
+
cardId: string;
|
|
2078
|
+
bindingId: string;
|
|
2079
|
+
target: DashboardFilterTarget;
|
|
2080
|
+
};
|
|
2081
|
+
|
|
2082
|
+
export declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
|
|
2083
|
+
|
|
2044
2084
|
export declare function DashboardFilterControlsButton({ showFilters, onShowFiltersChange, pickerContent, settingsContent, size, className, primaryButtonClassName, secondaryButtonClassName, pickerContentClassName, settingsContentClassName, }: DashboardFilterControlsButtonProps): JSX.Element;
|
|
2045
2085
|
|
|
2046
2086
|
/**
|
|
@@ -2102,6 +2142,126 @@ declare type DashboardFilterControlsLauncherProps = {
|
|
|
2102
2142
|
settingsContentClassName?: string;
|
|
2103
2143
|
};
|
|
2104
2144
|
|
|
2145
|
+
export declare type DashboardFilterExcludedCardApplication = {
|
|
2146
|
+
kind: 'excluded';
|
|
2147
|
+
cardId: string;
|
|
2148
|
+
};
|
|
2149
|
+
|
|
2150
|
+
declare type DashboardFilterMappingAcceptanceResult = {
|
|
2151
|
+
ok: true;
|
|
2152
|
+
draft: DashboardFilterMappingDraft;
|
|
2153
|
+
input: ReferencedFilterDashboardInput;
|
|
2154
|
+
} | {
|
|
2155
|
+
ok: false;
|
|
2156
|
+
draft?: DashboardFilterMappingDraft;
|
|
2157
|
+
issues: DashboardFilterMappingAuthoringIssue[];
|
|
2158
|
+
};
|
|
2159
|
+
|
|
2160
|
+
declare type DashboardFilterMappingAuthoringIssue = {
|
|
2161
|
+
code: DashboardFilterMappingAuthoringIssueCode;
|
|
2162
|
+
message: string;
|
|
2163
|
+
filterId: string;
|
|
2164
|
+
cardId?: string;
|
|
2165
|
+
};
|
|
2166
|
+
|
|
2167
|
+
declare type DashboardFilterMappingAuthoringIssueCode = 'filterNotFound' | 'mappingNotFound' | 'globalDateUnsupported' | 'conflictingDashboardInput' | 'unsupportedOuterScope' | 'unsupportedRuntimeScope' | 'missingDecision' | 'invalidTarget' | 'metadataUnavailable';
|
|
2168
|
+
|
|
2169
|
+
declare type DashboardFilterMappingAuthoringRequest = {
|
|
2170
|
+
filterId: string;
|
|
2171
|
+
candidatesByCardId: Record<string, DashboardFilterMappingCandidateCatalog | undefined>;
|
|
2172
|
+
/** Grounded field that supplies the current filter value. */
|
|
2173
|
+
selectionField?: Pick<DashboardFilterTargetField, 'name' | 'sourceField'> & Partial<Pick<DashboardFilterTargetField, 'source'>>;
|
|
2174
|
+
/** Datatype of the raw selection value, which may differ from the label. */
|
|
2175
|
+
selectionDataType?: string;
|
|
2176
|
+
/**
|
|
2177
|
+
* Re-check saved targets against selectionField after the author changes
|
|
2178
|
+
* the raw Option Value identity. Explicit draft decisions still win.
|
|
2179
|
+
*/
|
|
2180
|
+
revalidatePersistedTargets?: boolean;
|
|
2181
|
+
decisionsByCardId?: Record<string, DashboardFilterMappingDraftDecision | undefined>;
|
|
2182
|
+
/** Staged outer sheet scope. Omit when the author did not edit Scope. */
|
|
2183
|
+
outerScope?: DashboardFilterMappingDraft['outerScope'];
|
|
2184
|
+
/** Test seam; production callers use opaque random UUIDs. */
|
|
2185
|
+
createId?: () => string;
|
|
2186
|
+
};
|
|
2187
|
+
|
|
2188
|
+
declare type DashboardFilterMappingCandidateCatalog = {
|
|
2189
|
+
status: 'ready';
|
|
2190
|
+
targets: DashboardFilterTarget[];
|
|
2191
|
+
} | {
|
|
2192
|
+
status: 'metadataUnavailable';
|
|
2193
|
+
message?: string;
|
|
2194
|
+
};
|
|
2195
|
+
|
|
2196
|
+
declare type DashboardFilterMappingDisableResult = {
|
|
2197
|
+
ok: true;
|
|
2198
|
+
inputId: string;
|
|
2199
|
+
} | {
|
|
2200
|
+
ok: false;
|
|
2201
|
+
issues: DashboardFilterMappingAuthoringIssue[];
|
|
2202
|
+
};
|
|
2203
|
+
|
|
2204
|
+
declare type DashboardFilterMappingDraft = {
|
|
2205
|
+
filterId: string;
|
|
2206
|
+
existingInputId?: string;
|
|
2207
|
+
outerScope: Extract<DashboardInputScope, {
|
|
2208
|
+
kind: 'allSheets' | 'sheets';
|
|
2209
|
+
}>;
|
|
2210
|
+
rows: DashboardFilterMappingDraftRow[];
|
|
2211
|
+
};
|
|
2212
|
+
|
|
2213
|
+
declare type DashboardFilterMappingDraftDecision = {
|
|
2214
|
+
kind: 'bound';
|
|
2215
|
+
target: DashboardFilterTarget;
|
|
2216
|
+
} | {
|
|
2217
|
+
kind: 'excluded';
|
|
2218
|
+
};
|
|
2219
|
+
|
|
2220
|
+
declare type DashboardFilterMappingDraftRow = {
|
|
2221
|
+
cardId: string;
|
|
2222
|
+
sheetId: string;
|
|
2223
|
+
executionKind: 'config' | 'sql' | 'unconfigured';
|
|
2224
|
+
status: DashboardFilterMappingDraftStatus;
|
|
2225
|
+
candidates: DashboardFilterTarget[];
|
|
2226
|
+
selectedTarget?: DashboardFilterTarget;
|
|
2227
|
+
persistedApplication?: DashboardFilterCardApplication;
|
|
2228
|
+
metadataMessage?: string;
|
|
2229
|
+
guidanceMessage?: string;
|
|
2230
|
+
automaticFieldName?: string;
|
|
2231
|
+
};
|
|
2232
|
+
|
|
2233
|
+
declare type DashboardFilterMappingDraftStatus = 'pendingSource' | 'suggested' | 'needsMapping' | 'mapped' | 'notApplicable' | 'excluded' | 'invalidMapping' | 'metadataUnavailable';
|
|
2234
|
+
|
|
2235
|
+
/** Persisted label/value option definition for a mapped dashboard filter. */
|
|
2236
|
+
export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
|
|
2237
|
+
|
|
2238
|
+
declare type DashboardFilterOptionSourceAcceptanceResult = {
|
|
2239
|
+
ok: true;
|
|
2240
|
+
input: ReferencedFilterDashboardInput;
|
|
2241
|
+
created: boolean;
|
|
2242
|
+
} | {
|
|
2243
|
+
ok: false;
|
|
2244
|
+
issues: DashboardFilterMappingAuthoringIssue[];
|
|
2245
|
+
};
|
|
2246
|
+
|
|
2247
|
+
export declare type DashboardFilterTarget = {
|
|
2248
|
+
kind: 'field';
|
|
2249
|
+
field: DashboardFilterTargetField;
|
|
2250
|
+
};
|
|
2251
|
+
|
|
2252
|
+
/** Persisted, source-qualified field that a mapped filter targets. */
|
|
2253
|
+
export declare type DashboardFilterTargetField = {
|
|
2254
|
+
name: string;
|
|
2255
|
+
source: DashboardFilterTargetSource;
|
|
2256
|
+
dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
|
|
2257
|
+
/** Catalog-grounded physical column used when it differs from the semantic name. */
|
|
2258
|
+
sourceField?: string;
|
|
2259
|
+
};
|
|
2260
|
+
|
|
2261
|
+
export declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
|
|
2262
|
+
kind: 'semantic' | 'physical';
|
|
2263
|
+
}>;
|
|
2264
|
+
|
|
2105
2265
|
export declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
|
|
2106
2266
|
|
|
2107
2267
|
export declare type DashboardInputBase = {
|
|
@@ -2177,14 +2337,14 @@ export declare type DashboardInputScope = {
|
|
|
2177
2337
|
sectionIds: string[];
|
|
2178
2338
|
};
|
|
2179
2339
|
|
|
2180
|
-
export declare type DashboardInputSlot =
|
|
2340
|
+
export declare type DashboardInputSlot = {
|
|
2181
2341
|
status: 'set';
|
|
2182
2342
|
value: DashboardInputValue;
|
|
2183
2343
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
2184
|
-
}
|
|
2344
|
+
} | {
|
|
2185
2345
|
status: 'cleared';
|
|
2186
2346
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
2187
|
-
}
|
|
2347
|
+
} | {
|
|
2188
2348
|
status?: never;
|
|
2189
2349
|
value?: never;
|
|
2190
2350
|
comparisonSelection: GlobalDateComparisonSelection;
|
|
@@ -3282,6 +3442,14 @@ export declare type EmailSettings = {
|
|
|
3282
3442
|
senderTitle: string;
|
|
3283
3443
|
};
|
|
3284
3444
|
|
|
3445
|
+
export declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
|
|
3446
|
+
kind: 'filter';
|
|
3447
|
+
filter: TFilter;
|
|
3448
|
+
filterReference?: never;
|
|
3449
|
+
optionSource?: DashboardFilterOptionSource;
|
|
3450
|
+
application?: DashboardFilterApplication;
|
|
3451
|
+
};
|
|
3452
|
+
|
|
3285
3453
|
export declare const emitDashboardLoad: () => void;
|
|
3286
3454
|
|
|
3287
3455
|
export declare const emitDashboardUnload: () => void;
|
|
@@ -3571,10 +3739,7 @@ export declare interface FilterCondition {
|
|
|
3571
3739
|
temporalBucket?: TemporalBucketMetadata;
|
|
3572
3740
|
}
|
|
3573
3741
|
|
|
3574
|
-
export declare type FilterDashboardInput =
|
|
3575
|
-
kind: 'filter';
|
|
3576
|
-
filter: TFilter;
|
|
3577
|
-
};
|
|
3742
|
+
export declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
|
|
3578
3743
|
|
|
3579
3744
|
/**
|
|
3580
3745
|
* Display mode for individual filters
|
|
@@ -4726,6 +4891,17 @@ declare type NoneOptions = {};
|
|
|
4726
4891
|
*/
|
|
4727
4892
|
export declare function normalizeDashboardForDirtyCheck(dashboard: TDashboard | null): TDashboard | null;
|
|
4728
4893
|
|
|
4894
|
+
export declare type NormalizedDashboardInput = NormalizedFilterDashboardInput | ControlDashboardInput;
|
|
4895
|
+
|
|
4896
|
+
/** Runtime form after dashboard-filter references are resolved once. */
|
|
4897
|
+
export declare type NormalizedFilterDashboardInput = DashboardInputBase & {
|
|
4898
|
+
kind: 'filter';
|
|
4899
|
+
filter: TFilter;
|
|
4900
|
+
optionSource?: DashboardFilterOptionSource;
|
|
4901
|
+
application?: DashboardFilterApplication;
|
|
4902
|
+
definitionOrigin: 'embedded' | 'dashboardFilter';
|
|
4903
|
+
};
|
|
4904
|
+
|
|
4729
4905
|
/**
|
|
4730
4906
|
* Notification bell icon with badge.
|
|
4731
4907
|
*
|
|
@@ -5052,6 +5228,17 @@ declare type RawTemporalValueMetadata = {
|
|
|
5052
5228
|
valueKind: RawTemporalValueKind;
|
|
5053
5229
|
};
|
|
5054
5230
|
|
|
5231
|
+
export declare type ReferencedFilterDashboardInput = DashboardInputBase & {
|
|
5232
|
+
kind: 'filter';
|
|
5233
|
+
filter?: never;
|
|
5234
|
+
filterReference: {
|
|
5235
|
+
kind: 'dashboardFilter';
|
|
5236
|
+
filterId: string;
|
|
5237
|
+
};
|
|
5238
|
+
optionSource?: DashboardFilterOptionSource;
|
|
5239
|
+
application?: DashboardFilterApplication;
|
|
5240
|
+
};
|
|
5241
|
+
|
|
5055
5242
|
declare type RelativeDateFilter = {
|
|
5056
5243
|
mode: 'last';
|
|
5057
5244
|
n: number;
|
|
@@ -5066,6 +5253,8 @@ declare type RelativeDateFilter = {
|
|
|
5066
5253
|
mode: 'this';
|
|
5067
5254
|
unit: DateUnit;
|
|
5068
5255
|
toDate?: boolean;
|
|
5256
|
+
/** Only used with unit=month for single-day month-boundary presets. */
|
|
5257
|
+
boundary?: 'first_day' | 'last_day';
|
|
5069
5258
|
} | {
|
|
5070
5259
|
mode: 'previous';
|
|
5071
5260
|
unit: DateUnit;
|
|
@@ -5138,6 +5327,8 @@ export declare type ResolvedDashboardInput = {
|
|
|
5138
5327
|
exports: Partial<Record<DashboardInputExportKey, string | number | boolean | null>>;
|
|
5139
5328
|
filter?: TFilter;
|
|
5140
5329
|
filterValue?: TFilterValue;
|
|
5330
|
+
/** Present when a set filter slot cannot be used with its current definition. */
|
|
5331
|
+
invalidFilterSelection?: boolean;
|
|
5141
5332
|
control?: ControlDefinition;
|
|
5142
5333
|
controlValue?: unknown;
|
|
5143
5334
|
missingRequiredValue?: boolean;
|
|
@@ -5145,7 +5336,7 @@ export declare type ResolvedDashboardInput = {
|
|
|
5145
5336
|
};
|
|
5146
5337
|
|
|
5147
5338
|
export declare type ResolvedDashboardInputContext = {
|
|
5148
|
-
inputs:
|
|
5339
|
+
inputs: NormalizedDashboardInput[];
|
|
5149
5340
|
resolvedInputs: ResolvedDashboardInput[];
|
|
5150
5341
|
activeFilters: TFilterValue[];
|
|
5151
5342
|
controlDefinitions: ControlDefinition[];
|
|
@@ -5544,17 +5735,12 @@ declare type SemaphorInputBinding = {
|
|
|
5544
5735
|
|
|
5545
5736
|
declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
5546
5737
|
|
|
5547
|
-
declare type SemaphorInputOptionsIntent = {
|
|
5738
|
+
declare type SemaphorInputOptionsIntent = SemaphorInputOptionSource & {
|
|
5548
5739
|
kind: 'inputOptions';
|
|
5549
5740
|
version?: SemaphorProtocolVersion;
|
|
5550
5741
|
id?: string;
|
|
5551
5742
|
label?: string;
|
|
5552
5743
|
inputId: string;
|
|
5553
|
-
source: SemaphorSourceRef;
|
|
5554
|
-
labelField: SemaphorFieldRef;
|
|
5555
|
-
valueField: SemaphorFieldRef;
|
|
5556
|
-
searchField?: SemaphorFieldRef;
|
|
5557
|
-
disambiguationFields?: SemaphorFieldRef[];
|
|
5558
5744
|
population?: SemaphorOptionPopulation;
|
|
5559
5745
|
dependencies?: SemaphorOptionDependencies;
|
|
5560
5746
|
search?: string;
|
|
@@ -5563,6 +5749,16 @@ declare type SemaphorInputOptionsIntent = {
|
|
|
5563
5749
|
derivedFields?: SemaphorDerivedFieldDefinition[];
|
|
5564
5750
|
};
|
|
5565
5751
|
|
|
5752
|
+
declare type SemaphorInputOptionSource = {
|
|
5753
|
+
source: Extract<SemaphorSourceRef, {
|
|
5754
|
+
kind: 'semantic' | 'physical';
|
|
5755
|
+
}>;
|
|
5756
|
+
labelField: SemaphorFieldRef;
|
|
5757
|
+
valueField: SemaphorFieldRef;
|
|
5758
|
+
searchField?: SemaphorFieldRef;
|
|
5759
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
5760
|
+
};
|
|
5761
|
+
|
|
5566
5762
|
declare type SemaphorMatrixAxisExpansionOptions = {
|
|
5567
5763
|
defaultDepth?: number;
|
|
5568
5764
|
lazy?: boolean;
|
|
@@ -6945,7 +7141,7 @@ export declare type TFilter = {
|
|
|
6945
7141
|
type?: 'single' | 'multiple';
|
|
6946
7142
|
uiType?: 'radio' | 'dropdown' | 'tabs';
|
|
6947
7143
|
dateSelectionMode?: DateSelectionMode;
|
|
6948
|
-
defaultValues?: (string | number)[];
|
|
7144
|
+
defaultValues?: (string | number | boolean)[];
|
|
6949
7145
|
defaultDateFilter?: DefaultDateFilter;
|
|
6950
7146
|
sheetId?: string;
|
|
6951
7147
|
location?: FilterLocation;
|
|
@@ -7117,7 +7313,7 @@ export declare type TInlineFilter = {
|
|
|
7117
7313
|
/** Date picker type: 'range' for full calendar, 'months' for month picker */
|
|
7118
7314
|
dateSelectionMode?: DateSelectionMode;
|
|
7119
7315
|
/** Default values applied when the dashboard first loads */
|
|
7120
|
-
defaultValues?: (string | number)[];
|
|
7316
|
+
defaultValues?: (string | number | boolean)[];
|
|
7121
7317
|
/** Default date filter applied on dashboard load (relative or fixed month/year) */
|
|
7122
7318
|
defaultDateFilter?: DefaultDateFilter;
|
|
7123
7319
|
/** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
|
package/dist/types/shared.d.ts
CHANGED
|
@@ -559,6 +559,51 @@ declare type DashboardAIContext = AIContext & {
|
|
|
559
559
|
|
|
560
560
|
declare type DashboardAIContextMode = 'auto' | 'fixed';
|
|
561
561
|
|
|
562
|
+
declare type DashboardFilterApplication = {
|
|
563
|
+
kind: 'cardMappings';
|
|
564
|
+
/**
|
|
565
|
+
* Sparse grounded bindings and explicit exclusions. A missing config card
|
|
566
|
+
* may reuse a proven Option Value target on an executable source; it is not
|
|
567
|
+
* an implicit exclusion, and source identity alone is not field evidence.
|
|
568
|
+
*/
|
|
569
|
+
cards: DashboardFilterCardApplication[];
|
|
570
|
+
};
|
|
571
|
+
|
|
572
|
+
declare type DashboardFilterBoundCardApplication = {
|
|
573
|
+
kind: 'bound';
|
|
574
|
+
cardId: string;
|
|
575
|
+
bindingId: string;
|
|
576
|
+
target: DashboardFilterTarget;
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
|
|
580
|
+
|
|
581
|
+
declare type DashboardFilterExcludedCardApplication = {
|
|
582
|
+
kind: 'excluded';
|
|
583
|
+
cardId: string;
|
|
584
|
+
};
|
|
585
|
+
|
|
586
|
+
/** Persisted label/value option definition for a mapped dashboard filter. */
|
|
587
|
+
declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
|
|
588
|
+
|
|
589
|
+
declare type DashboardFilterTarget = {
|
|
590
|
+
kind: 'field';
|
|
591
|
+
field: DashboardFilterTargetField;
|
|
592
|
+
};
|
|
593
|
+
|
|
594
|
+
/** Persisted, source-qualified field that a mapped filter targets. */
|
|
595
|
+
declare type DashboardFilterTargetField = {
|
|
596
|
+
name: string;
|
|
597
|
+
source: DashboardFilterTargetSource;
|
|
598
|
+
dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
|
|
599
|
+
/** Catalog-grounded physical column used when it differs from the semantic name. */
|
|
600
|
+
sourceField?: string;
|
|
601
|
+
};
|
|
602
|
+
|
|
603
|
+
declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
|
|
604
|
+
kind: 'semantic' | 'physical';
|
|
605
|
+
}>;
|
|
606
|
+
|
|
562
607
|
declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
|
|
563
608
|
|
|
564
609
|
declare type DashboardInputBase = {
|
|
@@ -619,14 +664,14 @@ declare type DashboardInputScope = {
|
|
|
619
664
|
sectionIds: string[];
|
|
620
665
|
};
|
|
621
666
|
|
|
622
|
-
declare type DashboardInputSlot =
|
|
667
|
+
declare type DashboardInputSlot = {
|
|
623
668
|
status: 'set';
|
|
624
669
|
value: DashboardInputValue;
|
|
625
670
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
626
|
-
}
|
|
671
|
+
} | {
|
|
627
672
|
status: 'cleared';
|
|
628
673
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
629
|
-
}
|
|
674
|
+
} | {
|
|
630
675
|
status?: never;
|
|
631
676
|
value?: never;
|
|
632
677
|
comparisonSelection: GlobalDateComparisonSelection;
|
|
@@ -1098,6 +1143,14 @@ declare type EmailSettings = {
|
|
|
1098
1143
|
senderTitle: string;
|
|
1099
1144
|
};
|
|
1100
1145
|
|
|
1146
|
+
declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
|
|
1147
|
+
kind: 'filter';
|
|
1148
|
+
filter: TFilter;
|
|
1149
|
+
filterReference?: never;
|
|
1150
|
+
optionSource?: DashboardFilterOptionSource;
|
|
1151
|
+
application?: DashboardFilterApplication;
|
|
1152
|
+
};
|
|
1153
|
+
|
|
1101
1154
|
declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
|
|
1102
1155
|
|
|
1103
1156
|
declare interface Field {
|
|
@@ -1201,10 +1254,7 @@ declare interface FilterCondition {
|
|
|
1201
1254
|
temporalBucket?: TemporalBucketMetadata;
|
|
1202
1255
|
}
|
|
1203
1256
|
|
|
1204
|
-
declare type FilterDashboardInput =
|
|
1205
|
-
kind: 'filter';
|
|
1206
|
-
filter: TFilter;
|
|
1207
|
-
};
|
|
1257
|
+
declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
|
|
1208
1258
|
|
|
1209
1259
|
/**
|
|
1210
1260
|
* Display mode for individual filters
|
|
@@ -1700,6 +1750,17 @@ declare type RangeValue = {
|
|
|
1700
1750
|
gt?: string | number;
|
|
1701
1751
|
};
|
|
1702
1752
|
|
|
1753
|
+
declare type ReferencedFilterDashboardInput = DashboardInputBase & {
|
|
1754
|
+
kind: 'filter';
|
|
1755
|
+
filter?: never;
|
|
1756
|
+
filterReference: {
|
|
1757
|
+
kind: 'dashboardFilter';
|
|
1758
|
+
filterId: string;
|
|
1759
|
+
};
|
|
1760
|
+
optionSource?: DashboardFilterOptionSource;
|
|
1761
|
+
application?: DashboardFilterApplication;
|
|
1762
|
+
};
|
|
1763
|
+
|
|
1703
1764
|
declare type RelativeDateFilter = {
|
|
1704
1765
|
mode: 'last';
|
|
1705
1766
|
n: number;
|
|
@@ -1714,6 +1775,8 @@ declare type RelativeDateFilter = {
|
|
|
1714
1775
|
mode: 'this';
|
|
1715
1776
|
unit: DateUnit;
|
|
1716
1777
|
toDate?: boolean;
|
|
1778
|
+
/** Only used with unit=month for single-day month-boundary presets. */
|
|
1779
|
+
boundary?: 'first_day' | 'last_day';
|
|
1717
1780
|
} | {
|
|
1718
1781
|
mode: 'previous';
|
|
1719
1782
|
unit: DateUnit;
|
|
@@ -1832,6 +1895,16 @@ declare type SemaphorInputBinding = {
|
|
|
1832
1895
|
|
|
1833
1896
|
declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
1834
1897
|
|
|
1898
|
+
declare type SemaphorInputOptionSource = {
|
|
1899
|
+
source: Extract<SemaphorSourceRef, {
|
|
1900
|
+
kind: 'semantic' | 'physical';
|
|
1901
|
+
}>;
|
|
1902
|
+
labelField: SemaphorFieldRef;
|
|
1903
|
+
valueField: SemaphorFieldRef;
|
|
1904
|
+
searchField?: SemaphorFieldRef;
|
|
1905
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
1906
|
+
};
|
|
1907
|
+
|
|
1835
1908
|
declare type SemaphorMatrixAxisExpansionOptions = {
|
|
1836
1909
|
defaultDepth?: number;
|
|
1837
1910
|
lazy?: boolean;
|
|
@@ -2764,7 +2837,7 @@ declare type TFilter = {
|
|
|
2764
2837
|
type?: 'single' | 'multiple';
|
|
2765
2838
|
uiType?: 'radio' | 'dropdown' | 'tabs';
|
|
2766
2839
|
dateSelectionMode?: DateSelectionMode;
|
|
2767
|
-
defaultValues?: (string | number)[];
|
|
2840
|
+
defaultValues?: (string | number | boolean)[];
|
|
2768
2841
|
defaultDateFilter?: DefaultDateFilter;
|
|
2769
2842
|
sheetId?: string;
|
|
2770
2843
|
location?: FilterLocation;
|
|
@@ -2928,7 +3001,7 @@ declare type TInlineFilter = {
|
|
|
2928
3001
|
/** Date picker type: 'range' for full calendar, 'months' for month picker */
|
|
2929
3002
|
dateSelectionMode?: DateSelectionMode;
|
|
2930
3003
|
/** Default values applied when the dashboard first loads */
|
|
2931
|
-
defaultValues?: (string | number)[];
|
|
3004
|
+
defaultValues?: (string | number | boolean)[];
|
|
2932
3005
|
/** Default date filter applied on dashboard load (relative or fixed month/year) */
|
|
2933
3006
|
defaultDateFilter?: DefaultDateFilter;
|
|
2934
3007
|
/** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
|
|
@@ -702,6 +702,51 @@ export declare type DashboardEventHandlers = {
|
|
|
702
702
|
onExportData?: (payload: ExportDataPayload) => void;
|
|
703
703
|
};
|
|
704
704
|
|
|
705
|
+
export declare type DashboardFilterApplication = {
|
|
706
|
+
kind: 'cardMappings';
|
|
707
|
+
/**
|
|
708
|
+
* Sparse grounded bindings and explicit exclusions. A missing config card
|
|
709
|
+
* may reuse a proven Option Value target on an executable source; it is not
|
|
710
|
+
* an implicit exclusion, and source identity alone is not field evidence.
|
|
711
|
+
*/
|
|
712
|
+
cards: DashboardFilterCardApplication[];
|
|
713
|
+
};
|
|
714
|
+
|
|
715
|
+
export declare type DashboardFilterBoundCardApplication = {
|
|
716
|
+
kind: 'bound';
|
|
717
|
+
cardId: string;
|
|
718
|
+
bindingId: string;
|
|
719
|
+
target: DashboardFilterTarget;
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
export declare type DashboardFilterCardApplication = DashboardFilterBoundCardApplication | DashboardFilterExcludedCardApplication;
|
|
723
|
+
|
|
724
|
+
export declare type DashboardFilterExcludedCardApplication = {
|
|
725
|
+
kind: 'excluded';
|
|
726
|
+
cardId: string;
|
|
727
|
+
};
|
|
728
|
+
|
|
729
|
+
/** Persisted label/value option definition for a mapped dashboard filter. */
|
|
730
|
+
export declare type DashboardFilterOptionSource = SemaphorInputOptionSource;
|
|
731
|
+
|
|
732
|
+
export declare type DashboardFilterTarget = {
|
|
733
|
+
kind: 'field';
|
|
734
|
+
field: DashboardFilterTargetField;
|
|
735
|
+
};
|
|
736
|
+
|
|
737
|
+
/** Persisted, source-qualified field that a mapped filter targets. */
|
|
738
|
+
export declare type DashboardFilterTargetField = {
|
|
739
|
+
name: string;
|
|
740
|
+
source: DashboardFilterTargetSource;
|
|
741
|
+
dataType: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
|
|
742
|
+
/** Catalog-grounded physical column used when it differs from the semantic name. */
|
|
743
|
+
sourceField?: string;
|
|
744
|
+
};
|
|
745
|
+
|
|
746
|
+
export declare type DashboardFilterTargetSource = Extract<SemaphorSourceRef, {
|
|
747
|
+
kind: 'semantic' | 'physical';
|
|
748
|
+
}>;
|
|
749
|
+
|
|
705
750
|
export declare type DashboardInput = FilterDashboardInput | ControlDashboardInput;
|
|
706
751
|
|
|
707
752
|
export declare type DashboardInputBase = {
|
|
@@ -771,14 +816,14 @@ export declare type DashboardInputScope = {
|
|
|
771
816
|
sectionIds: string[];
|
|
772
817
|
};
|
|
773
818
|
|
|
774
|
-
export declare type DashboardInputSlot =
|
|
819
|
+
export declare type DashboardInputSlot = {
|
|
775
820
|
status: 'set';
|
|
776
821
|
value: DashboardInputValue;
|
|
777
822
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
778
|
-
}
|
|
823
|
+
} | {
|
|
779
824
|
status: 'cleared';
|
|
780
825
|
comparisonSelection?: GlobalDateComparisonSelection;
|
|
781
|
-
}
|
|
826
|
+
} | {
|
|
782
827
|
status?: never;
|
|
783
828
|
value?: never;
|
|
784
829
|
comparisonSelection: GlobalDateComparisonSelection;
|
|
@@ -1457,6 +1502,14 @@ export declare type EmailSettings = {
|
|
|
1457
1502
|
senderTitle: string;
|
|
1458
1503
|
};
|
|
1459
1504
|
|
|
1505
|
+
export declare type EmbeddedFilterDashboardInput = DashboardInputBase & {
|
|
1506
|
+
kind: 'filter';
|
|
1507
|
+
filter: TFilter;
|
|
1508
|
+
filterReference?: never;
|
|
1509
|
+
optionSource?: DashboardFilterOptionSource;
|
|
1510
|
+
application?: DashboardFilterApplication;
|
|
1511
|
+
};
|
|
1512
|
+
|
|
1460
1513
|
export declare const EMPTY_SELECTION: SelectionState;
|
|
1461
1514
|
|
|
1462
1515
|
declare type EntityType = 'table' | 'view' | 'materialized view' | 'model' | 'file' | 'dataset' | 'url' | 'upload';
|
|
@@ -1573,10 +1626,7 @@ declare interface FilterCondition {
|
|
|
1573
1626
|
temporalBucket?: TemporalBucketMetadata;
|
|
1574
1627
|
}
|
|
1575
1628
|
|
|
1576
|
-
export declare type FilterDashboardInput =
|
|
1577
|
-
kind: 'filter';
|
|
1578
|
-
filter: TFilter;
|
|
1579
|
-
};
|
|
1629
|
+
export declare type FilterDashboardInput = EmbeddedFilterDashboardInput | ReferencedFilterDashboardInput;
|
|
1580
1630
|
|
|
1581
1631
|
/**
|
|
1582
1632
|
* Display mode for individual filters
|
|
@@ -2080,6 +2130,17 @@ declare type MonthAlignedFiscalCalendar = {
|
|
|
2080
2130
|
|
|
2081
2131
|
declare type NoneOptions = {};
|
|
2082
2132
|
|
|
2133
|
+
export declare type NormalizedDashboardInput = NormalizedFilterDashboardInput | ControlDashboardInput;
|
|
2134
|
+
|
|
2135
|
+
/** Runtime form after dashboard-filter references are resolved once. */
|
|
2136
|
+
export declare type NormalizedFilterDashboardInput = DashboardInputBase & {
|
|
2137
|
+
kind: 'filter';
|
|
2138
|
+
filter: TFilter;
|
|
2139
|
+
optionSource?: DashboardFilterOptionSource;
|
|
2140
|
+
application?: DashboardFilterApplication;
|
|
2141
|
+
definitionOrigin: 'embedded' | 'dashboardFilter';
|
|
2142
|
+
};
|
|
2143
|
+
|
|
2083
2144
|
export declare type NumberAxisFormat = {
|
|
2084
2145
|
decimalPlaces?: number;
|
|
2085
2146
|
minimumFractionDigits?: number;
|
|
@@ -2237,6 +2298,17 @@ declare type RawTemporalPresentationTarget = {
|
|
|
2237
2298
|
columnKey: string;
|
|
2238
2299
|
};
|
|
2239
2300
|
|
|
2301
|
+
export declare type ReferencedFilterDashboardInput = DashboardInputBase & {
|
|
2302
|
+
kind: 'filter';
|
|
2303
|
+
filter?: never;
|
|
2304
|
+
filterReference: {
|
|
2305
|
+
kind: 'dashboardFilter';
|
|
2306
|
+
filterId: string;
|
|
2307
|
+
};
|
|
2308
|
+
optionSource?: DashboardFilterOptionSource;
|
|
2309
|
+
application?: DashboardFilterApplication;
|
|
2310
|
+
};
|
|
2311
|
+
|
|
2240
2312
|
declare type RelativeDateFilter = {
|
|
2241
2313
|
mode: 'last';
|
|
2242
2314
|
n: number;
|
|
@@ -2251,6 +2323,8 @@ declare type RelativeDateFilter = {
|
|
|
2251
2323
|
mode: 'this';
|
|
2252
2324
|
unit: DateUnit;
|
|
2253
2325
|
toDate?: boolean;
|
|
2326
|
+
/** Only used with unit=month for single-day month-boundary presets. */
|
|
2327
|
+
boundary?: 'first_day' | 'last_day';
|
|
2254
2328
|
} | {
|
|
2255
2329
|
mode: 'previous';
|
|
2256
2330
|
unit: DateUnit;
|
|
@@ -2314,6 +2388,8 @@ export declare type ResolvedDashboardInput = {
|
|
|
2314
2388
|
exports: Partial<Record<DashboardInputExportKey, string | number | boolean | null>>;
|
|
2315
2389
|
filter?: TFilter;
|
|
2316
2390
|
filterValue?: TFilterValue;
|
|
2391
|
+
/** Present when a set filter slot cannot be used with its current definition. */
|
|
2392
|
+
invalidFilterSelection?: boolean;
|
|
2317
2393
|
control?: ControlDefinition;
|
|
2318
2394
|
controlValue?: unknown;
|
|
2319
2395
|
missingRequiredValue?: boolean;
|
|
@@ -2321,7 +2397,7 @@ export declare type ResolvedDashboardInput = {
|
|
|
2321
2397
|
};
|
|
2322
2398
|
|
|
2323
2399
|
export declare type ResolvedDashboardInputContext = {
|
|
2324
|
-
inputs:
|
|
2400
|
+
inputs: NormalizedDashboardInput[];
|
|
2325
2401
|
resolvedInputs: ResolvedDashboardInput[];
|
|
2326
2402
|
activeFilters: TFilterValue[];
|
|
2327
2403
|
controlDefinitions: ControlDefinition[];
|
|
@@ -2569,6 +2645,16 @@ declare type SemaphorInputBinding = {
|
|
|
2569
2645
|
|
|
2570
2646
|
declare type SemaphorInputOperator = '=' | '!=' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'between' | 'not_between' | '>' | '>=' | '<' | '<=';
|
|
2571
2647
|
|
|
2648
|
+
declare type SemaphorInputOptionSource = {
|
|
2649
|
+
source: Extract<SemaphorSourceRef, {
|
|
2650
|
+
kind: 'semantic' | 'physical';
|
|
2651
|
+
}>;
|
|
2652
|
+
labelField: SemaphorFieldRef;
|
|
2653
|
+
valueField: SemaphorFieldRef;
|
|
2654
|
+
searchField?: SemaphorFieldRef;
|
|
2655
|
+
disambiguationFields?: SemaphorFieldRef[];
|
|
2656
|
+
};
|
|
2657
|
+
|
|
2572
2658
|
declare type SemaphorMatrixAxisExpansionOptions = {
|
|
2573
2659
|
defaultDepth?: number;
|
|
2574
2660
|
lazy?: boolean;
|
|
@@ -3604,7 +3690,7 @@ declare type TFilter = {
|
|
|
3604
3690
|
type?: 'single' | 'multiple';
|
|
3605
3691
|
uiType?: 'radio' | 'dropdown' | 'tabs';
|
|
3606
3692
|
dateSelectionMode?: DateSelectionMode;
|
|
3607
|
-
defaultValues?: (string | number)[];
|
|
3693
|
+
defaultValues?: (string | number | boolean)[];
|
|
3608
3694
|
defaultDateFilter?: DefaultDateFilter;
|
|
3609
3695
|
sheetId?: string;
|
|
3610
3696
|
location?: FilterLocation;
|
|
@@ -3776,7 +3862,7 @@ export declare type TInlineFilter = {
|
|
|
3776
3862
|
/** Date picker type: 'range' for full calendar, 'months' for month picker */
|
|
3777
3863
|
dateSelectionMode?: DateSelectionMode;
|
|
3778
3864
|
/** Default values applied when the dashboard first loads */
|
|
3779
|
-
defaultValues?: (string | number)[];
|
|
3865
|
+
defaultValues?: (string | number | boolean)[];
|
|
3780
3866
|
/** Default date filter applied on dashboard load (relative or fixed month/year) */
|
|
3781
3867
|
defaultDateFilter?: DefaultDateFilter;
|
|
3782
3868
|
/** Search mode for numeric filters: 'text' treats as text, 'numeric' enables operators (>, <, =) */
|