@praxisui/dynamic-fields 1.0.0-beta.42 → 1.0.0-beta.43
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.
|
@@ -5124,6 +5124,14 @@ class MaterialDateRangeComponent extends SimpleBaseInputComponent {
|
|
|
5124
5124
|
return items;
|
|
5125
5125
|
}, ...(ngDevMode ? [{ debugName: "shortcutItems" }] : []));
|
|
5126
5126
|
activePresetId = () => this.control().value?.preset ?? null;
|
|
5127
|
+
writeValue(value) {
|
|
5128
|
+
const normalized = this.normalizeDateRangeValue(value);
|
|
5129
|
+
super.writeValue(normalized);
|
|
5130
|
+
this.rangeGroup.patchValue({
|
|
5131
|
+
start: normalized?.startDate ?? null,
|
|
5132
|
+
end: normalized?.endDate ?? null,
|
|
5133
|
+
}, { emitEvent: false });
|
|
5134
|
+
}
|
|
5127
5135
|
ngOnInit() {
|
|
5128
5136
|
// Contextual validator: start <= end
|
|
5129
5137
|
this.rangeGroup.addValidators((group) => {
|
|
@@ -5154,7 +5162,11 @@ class MaterialDateRangeComponent extends SimpleBaseInputComponent {
|
|
|
5154
5162
|
this.control()
|
|
5155
5163
|
.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
|
|
5156
5164
|
.subscribe((val) => {
|
|
5157
|
-
this.
|
|
5165
|
+
const normalized = this.normalizeDateRangeValue(val);
|
|
5166
|
+
this.rangeGroup.patchValue({
|
|
5167
|
+
start: normalized?.startDate ?? null,
|
|
5168
|
+
end: normalized?.endDate ?? null,
|
|
5169
|
+
}, { emitEvent: false });
|
|
5158
5170
|
});
|
|
5159
5171
|
// Sync overlay with picker lifecycle
|
|
5160
5172
|
const p = this.picker;
|
|
@@ -5243,6 +5255,84 @@ class MaterialDateRangeComponent extends SimpleBaseInputComponent {
|
|
|
5243
5255
|
this.picker?.close?.();
|
|
5244
5256
|
}
|
|
5245
5257
|
}
|
|
5258
|
+
normalizeDateRangeValue(value) {
|
|
5259
|
+
if (value === null || value === undefined) {
|
|
5260
|
+
return null;
|
|
5261
|
+
}
|
|
5262
|
+
if (typeof value !== 'object' || Array.isArray(value)) {
|
|
5263
|
+
return null;
|
|
5264
|
+
}
|
|
5265
|
+
const record = value;
|
|
5266
|
+
const startDate = this.coerceDateLike(record['startDate'] ??
|
|
5267
|
+
record['start'] ??
|
|
5268
|
+
record['from'] ??
|
|
5269
|
+
record['initialDate'] ??
|
|
5270
|
+
record['begin']);
|
|
5271
|
+
const endDate = this.coerceDateLike(record['endDate'] ??
|
|
5272
|
+
record['end'] ??
|
|
5273
|
+
record['to'] ??
|
|
5274
|
+
record['finalDate'] ??
|
|
5275
|
+
record['finish']);
|
|
5276
|
+
const hasRange = startDate !== null || endDate !== null;
|
|
5277
|
+
const preset = typeof record['preset'] === 'string' ? record['preset'] : undefined;
|
|
5278
|
+
const timezone = typeof record['timezone'] === 'string' ? record['timezone'] : undefined;
|
|
5279
|
+
const label = typeof record['label'] === 'string' ? record['label'] : undefined;
|
|
5280
|
+
const isComparison = typeof record['isComparison'] === 'boolean'
|
|
5281
|
+
? record['isComparison']
|
|
5282
|
+
: undefined;
|
|
5283
|
+
if (!hasRange && !preset && !timezone && !label && isComparison === undefined) {
|
|
5284
|
+
return null;
|
|
5285
|
+
}
|
|
5286
|
+
return {
|
|
5287
|
+
startDate,
|
|
5288
|
+
endDate,
|
|
5289
|
+
...(preset ? { preset } : {}),
|
|
5290
|
+
...(timezone ? { timezone } : {}),
|
|
5291
|
+
...(label ? { label } : {}),
|
|
5292
|
+
...(isComparison !== undefined ? { isComparison } : {}),
|
|
5293
|
+
};
|
|
5294
|
+
}
|
|
5295
|
+
coerceDateLike(value) {
|
|
5296
|
+
if (value === null || value === undefined) {
|
|
5297
|
+
return null;
|
|
5298
|
+
}
|
|
5299
|
+
if (value instanceof Date) {
|
|
5300
|
+
return Number.isNaN(value.getTime()) ? null : value;
|
|
5301
|
+
}
|
|
5302
|
+
if (typeof value === 'number') {
|
|
5303
|
+
const numericDate = new Date(value);
|
|
5304
|
+
return Number.isNaN(numericDate.getTime()) ? null : numericDate;
|
|
5305
|
+
}
|
|
5306
|
+
if (typeof value === 'string') {
|
|
5307
|
+
const raw = value.trim();
|
|
5308
|
+
if (!raw) {
|
|
5309
|
+
return null;
|
|
5310
|
+
}
|
|
5311
|
+
const localIsoDate = raw.match(/^(\d{4})-(\d{2})-(\d{2})(?:[Tt].*)?$/);
|
|
5312
|
+
if (localIsoDate) {
|
|
5313
|
+
const year = Number(localIsoDate[1]);
|
|
5314
|
+
const month = Number(localIsoDate[2]);
|
|
5315
|
+
const day = Number(localIsoDate[3]);
|
|
5316
|
+
const localDate = new Date(year, month - 1, day, 12, 0, 0, 0);
|
|
5317
|
+
return Number.isNaN(localDate.getTime()) ? null : localDate;
|
|
5318
|
+
}
|
|
5319
|
+
const parsedDate = new Date(raw);
|
|
5320
|
+
return Number.isNaN(parsedDate.getTime()) ? null : parsedDate;
|
|
5321
|
+
}
|
|
5322
|
+
if (typeof value === 'object') {
|
|
5323
|
+
const nested = value;
|
|
5324
|
+
const candidate = nested['date'] ??
|
|
5325
|
+
nested['value'] ??
|
|
5326
|
+
nested['startDate'] ??
|
|
5327
|
+
nested['endDate'] ??
|
|
5328
|
+
nested['start'] ??
|
|
5329
|
+
nested['end'];
|
|
5330
|
+
if (candidate !== undefined && candidate !== value) {
|
|
5331
|
+
return this.coerceDateLike(candidate);
|
|
5332
|
+
}
|
|
5333
|
+
}
|
|
5334
|
+
return null;
|
|
5335
|
+
}
|
|
5246
5336
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: MaterialDateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
5247
5337
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: MaterialDateRangeComponent, isStandalone: true, selector: "pdx-material-date-range", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode", metadataInput: ["metadata", "metadataInput"] }, outputs: { validationChange: "validationChange" }, host: { properties: { "class": "componentCssClasses()", "class.praxis-disabled": "disabledMode", "style.display": "visible ? \"block\" : \"none\"", "style.width": "\"100%\"", "attr.data-field-type": "\"dateRange\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
|
|
5248
5338
|
{
|
|
@@ -21142,14 +21232,17 @@ class FilterInlineDateRangeComponent extends MaterialDateRangeComponent {
|
|
|
21142
21232
|
};
|
|
21143
21233
|
}
|
|
21144
21234
|
cloneDateRangeValue(value) {
|
|
21145
|
-
|
|
21235
|
+
const normalized = this.normalizeDateRangeValue(value);
|
|
21236
|
+
if (!normalized) {
|
|
21146
21237
|
return null;
|
|
21147
21238
|
}
|
|
21148
21239
|
return {
|
|
21149
|
-
startDate: this.coerceDate(
|
|
21150
|
-
endDate: this.coerceDate(
|
|
21151
|
-
preset:
|
|
21152
|
-
label:
|
|
21240
|
+
startDate: this.coerceDate(normalized.startDate),
|
|
21241
|
+
endDate: this.coerceDate(normalized.endDate),
|
|
21242
|
+
preset: normalized.preset,
|
|
21243
|
+
label: normalized.label,
|
|
21244
|
+
timezone: normalized.timezone,
|
|
21245
|
+
isComparison: normalized.isComparison,
|
|
21153
21246
|
};
|
|
21154
21247
|
}
|
|
21155
21248
|
restoreBaselineSelection() {
|
|
@@ -21163,7 +21256,7 @@ class FilterInlineDateRangeComponent extends MaterialDateRangeComponent {
|
|
|
21163
21256
|
if (this.inlineQuickPresetsApplyMode() === 'confirm' && this.overlayOpen) {
|
|
21164
21257
|
return this.currentRangeGroupValue();
|
|
21165
21258
|
}
|
|
21166
|
-
return this.control().value;
|
|
21259
|
+
return this.normalizeDateRangeValue(this.control().value);
|
|
21167
21260
|
}
|
|
21168
21261
|
rangeDisplayText() {
|
|
21169
21262
|
const value = this.displayRangeValue();
|
|
@@ -26051,6 +26144,110 @@ const PDX_FILTER_INLINE_TREE_SELECT_COMPONENT_METADATA = {
|
|
|
26051
26144
|
lib: '@praxisui/dynamic-fields',
|
|
26052
26145
|
};
|
|
26053
26146
|
|
|
26147
|
+
const HEX_PATTERN = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i;
|
|
26148
|
+
function clamp01(value) {
|
|
26149
|
+
return Math.max(0, Math.min(1, value));
|
|
26150
|
+
}
|
|
26151
|
+
function clamp255(value) {
|
|
26152
|
+
return Math.max(0, Math.min(255, Math.round(value)));
|
|
26153
|
+
}
|
|
26154
|
+
function parseHexColor(raw) {
|
|
26155
|
+
const normalized = raw.trim();
|
|
26156
|
+
if (!HEX_PATTERN.test(normalized)) {
|
|
26157
|
+
return null;
|
|
26158
|
+
}
|
|
26159
|
+
const hex = normalized.slice(1);
|
|
26160
|
+
if (hex.length === 3 || hex.length === 4) {
|
|
26161
|
+
return {
|
|
26162
|
+
r: Number.parseInt(hex[0] + hex[0], 16),
|
|
26163
|
+
g: Number.parseInt(hex[1] + hex[1], 16),
|
|
26164
|
+
b: Number.parseInt(hex[2] + hex[2], 16),
|
|
26165
|
+
};
|
|
26166
|
+
}
|
|
26167
|
+
return {
|
|
26168
|
+
r: Number.parseInt(hex.slice(0, 2), 16),
|
|
26169
|
+
g: Number.parseInt(hex.slice(2, 4), 16),
|
|
26170
|
+
b: Number.parseInt(hex.slice(4, 6), 16),
|
|
26171
|
+
};
|
|
26172
|
+
}
|
|
26173
|
+
function parseRgbChannel(token) {
|
|
26174
|
+
const part = token.trim();
|
|
26175
|
+
if (!part)
|
|
26176
|
+
return null;
|
|
26177
|
+
if (part.endsWith('%')) {
|
|
26178
|
+
const pct = Number.parseFloat(part.slice(0, -1));
|
|
26179
|
+
if (!Number.isFinite(pct))
|
|
26180
|
+
return null;
|
|
26181
|
+
return clamp255((pct / 100) * 255);
|
|
26182
|
+
}
|
|
26183
|
+
const value = Number.parseFloat(part);
|
|
26184
|
+
if (!Number.isFinite(value))
|
|
26185
|
+
return null;
|
|
26186
|
+
return clamp255(value);
|
|
26187
|
+
}
|
|
26188
|
+
function parseRgbColor(raw) {
|
|
26189
|
+
const normalized = raw.trim().toLowerCase();
|
|
26190
|
+
if (!normalized.startsWith('rgb')) {
|
|
26191
|
+
return null;
|
|
26192
|
+
}
|
|
26193
|
+
const parts = normalized.match(/[\d.]+%?/g) ?? [];
|
|
26194
|
+
if (parts.length < 3) {
|
|
26195
|
+
return null;
|
|
26196
|
+
}
|
|
26197
|
+
const [rRaw, gRaw, bRaw] = parts;
|
|
26198
|
+
if (rRaw === undefined || gRaw === undefined || bRaw === undefined) {
|
|
26199
|
+
return null;
|
|
26200
|
+
}
|
|
26201
|
+
const r = parseRgbChannel(rRaw);
|
|
26202
|
+
const g = parseRgbChannel(gRaw);
|
|
26203
|
+
const b = parseRgbChannel(bRaw);
|
|
26204
|
+
if (r === null || g === null || b === null) {
|
|
26205
|
+
return null;
|
|
26206
|
+
}
|
|
26207
|
+
return { r, g, b };
|
|
26208
|
+
}
|
|
26209
|
+
function parseCssColor(raw) {
|
|
26210
|
+
return parseHexColor(raw) ?? parseRgbColor(raw);
|
|
26211
|
+
}
|
|
26212
|
+
function toRgbString(color) {
|
|
26213
|
+
return `rgb(${color.r}, ${color.g}, ${color.b})`;
|
|
26214
|
+
}
|
|
26215
|
+
function mixRgb(start, end, ratio) {
|
|
26216
|
+
const amount = clamp01(ratio);
|
|
26217
|
+
return {
|
|
26218
|
+
r: clamp255(start.r + (end.r - start.r) * amount),
|
|
26219
|
+
g: clamp255(start.g + (end.g - start.g) * amount),
|
|
26220
|
+
b: clamp255(start.b + (end.b - start.b) * amount),
|
|
26221
|
+
};
|
|
26222
|
+
}
|
|
26223
|
+
function mixCssColors(start, end, ratio) {
|
|
26224
|
+
const startColor = parseCssColor(start);
|
|
26225
|
+
const endColor = parseCssColor(end);
|
|
26226
|
+
if (!startColor || !endColor) {
|
|
26227
|
+
return clamp01(ratio) >= 0.5 ? end : start;
|
|
26228
|
+
}
|
|
26229
|
+
return toRgbString(mixRgb(startColor, endColor, ratio));
|
|
26230
|
+
}
|
|
26231
|
+
function interpolateThreeStopGradientColor(low, mid, high, ratio) {
|
|
26232
|
+
const normalized = clamp01(ratio);
|
|
26233
|
+
if (normalized <= 0)
|
|
26234
|
+
return low;
|
|
26235
|
+
if (normalized >= 1)
|
|
26236
|
+
return high;
|
|
26237
|
+
if (normalized <= 0.5) {
|
|
26238
|
+
return mixCssColors(low, mid, normalized / 0.5);
|
|
26239
|
+
}
|
|
26240
|
+
return mixCssColors(mid, high, (normalized - 0.5) / 0.5);
|
|
26241
|
+
}
|
|
26242
|
+
function applyAlphaToColor(color, alpha) {
|
|
26243
|
+
const parsed = parseCssColor(color);
|
|
26244
|
+
if (!parsed) {
|
|
26245
|
+
return color;
|
|
26246
|
+
}
|
|
26247
|
+
const safeAlpha = clamp01(alpha);
|
|
26248
|
+
return `rgba(${parsed.r}, ${parsed.g}, ${parsed.b}, ${safeAlpha.toFixed(3)})`;
|
|
26249
|
+
}
|
|
26250
|
+
|
|
26054
26251
|
class FilterInlineRatingComponent extends FilterInlineRangeSliderComponent {
|
|
26055
26252
|
overlayPositions = [
|
|
26056
26253
|
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },
|
|
@@ -26166,6 +26363,11 @@ class FilterInlineRatingComponent extends FilterInlineRangeSliderComponent {
|
|
|
26166
26363
|
return 'mid';
|
|
26167
26364
|
return 'high';
|
|
26168
26365
|
}
|
|
26366
|
+
slotColor(slot) {
|
|
26367
|
+
const slots = this.ratingScaleSlots();
|
|
26368
|
+
const index = Math.max(0, slots.indexOf(slot));
|
|
26369
|
+
return this.ratingGradientColorByIndex(index, slots.length);
|
|
26370
|
+
}
|
|
26169
26371
|
isSlotInSelectedRange(slot) {
|
|
26170
26372
|
const range = this.readSelectedRange();
|
|
26171
26373
|
if (!range) {
|
|
@@ -26201,10 +26403,36 @@ class FilterInlineRatingComponent extends FilterInlineRangeSliderComponent {
|
|
|
26201
26403
|
const palette = this.parseColorPalette(md.ratingToneColors ?? md.ratingColors ?? md.starColors);
|
|
26202
26404
|
return this.resolveColorToken(md.ratingToneHighColor, md.ratingHighColor, palette?.high, palette?.max);
|
|
26203
26405
|
}
|
|
26406
|
+
ratingGradientLowColor() {
|
|
26407
|
+
const md = this.metadata() || {};
|
|
26408
|
+
return this.resolveColorToken(md.ratingGradientLowColor, this.toneLowColor()) || '#ef4444';
|
|
26409
|
+
}
|
|
26410
|
+
ratingGradientMidColor() {
|
|
26411
|
+
const md = this.metadata() || {};
|
|
26412
|
+
return this.resolveColorToken(md.ratingGradientMidColor, this.toneMidColor()) || '#f59e0b';
|
|
26413
|
+
}
|
|
26414
|
+
ratingGradientHighColor() {
|
|
26415
|
+
const md = this.metadata() || {};
|
|
26416
|
+
return this.resolveColorToken(md.ratingGradientHighColor, this.toneHighColor()) || '#22a45d';
|
|
26417
|
+
}
|
|
26418
|
+
ratingGradient() {
|
|
26419
|
+
const low = this.ratingGradientLowColor();
|
|
26420
|
+
const mid = this.ratingGradientMidColor();
|
|
26421
|
+
const high = this.ratingGradientHighColor();
|
|
26422
|
+
return `linear-gradient(90deg, ${low} 0%, ${mid} 50%, ${high} 100%)`;
|
|
26423
|
+
}
|
|
26204
26424
|
badgeStarColor() {
|
|
26205
26425
|
const md = this.metadata() || {};
|
|
26206
26426
|
const palette = this.parseColorPalette(md.ratingToneColors ?? md.ratingColors ?? md.starColors);
|
|
26207
|
-
return this.resolveColorToken(md.ratingBadgeColor, md.ratingIndicatorColor, md.ratingToneMidColor, md.ratingMidColor, palette?.badge, palette?.indicator, palette?.mid, palette?.middle);
|
|
26427
|
+
return this.resolveColorToken(md.ratingBadgeColor, md.ratingIndicatorColor, md.ratingToneMidColor, md.ratingMidColor, palette?.badge, palette?.indicator, palette?.mid, palette?.middle, this.ratingGradientMidColor());
|
|
26428
|
+
}
|
|
26429
|
+
ratingGradientColorByIndex(index, total) {
|
|
26430
|
+
const safeTotal = Math.max(2, total);
|
|
26431
|
+
const ratio = safeTotal <= 1 ? 0 : index / (safeTotal - 1);
|
|
26432
|
+
return this.ratingGradientColorByRatio(ratio);
|
|
26433
|
+
}
|
|
26434
|
+
ratingGradientColorByRatio(ratio) {
|
|
26435
|
+
return interpolateThreeStopGradientColor(this.ratingGradientLowColor(), this.ratingGradientMidColor(), this.ratingGradientHighColor(), ratio);
|
|
26208
26436
|
}
|
|
26209
26437
|
readSelectedRange() {
|
|
26210
26438
|
const min = this.minValue();
|
|
@@ -26430,6 +26658,7 @@ class FilterInlineRatingComponent extends FilterInlineRangeSliderComponent {
|
|
|
26430
26658
|
[class.tone-mid]="slotTone(slot) === 'mid'"
|
|
26431
26659
|
[class.tone-high]="slotTone(slot) === 'high'"
|
|
26432
26660
|
[class.is-active]="isSlotInSelectedRange(slot)"
|
|
26661
|
+
[style.color]="slotColor(slot)"
|
|
26433
26662
|
>
|
|
26434
26663
|
{{ isSlotInSelectedRange(slot) ? ratingActiveStarIconName() : ratingInactiveStarIconName() }}
|
|
26435
26664
|
</mat-icon>
|
|
@@ -26631,6 +26860,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
26631
26860
|
[class.tone-mid]="slotTone(slot) === 'mid'"
|
|
26632
26861
|
[class.tone-high]="slotTone(slot) === 'high'"
|
|
26633
26862
|
[class.is-active]="isSlotInSelectedRange(slot)"
|
|
26863
|
+
[style.color]="slotColor(slot)"
|
|
26634
26864
|
>
|
|
26635
26865
|
{{ isSlotInSelectedRange(slot) ? ratingActiveStarIconName() : ratingInactiveStarIconName() }}
|
|
26636
26866
|
</mat-icon>
|
|
@@ -26974,6 +27204,50 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
26974
27204
|
const ratio = this.normalizedDistanceRatio();
|
|
26975
27205
|
return Number((0.12 + ratio * 0.4).toFixed(3));
|
|
26976
27206
|
}
|
|
27207
|
+
radialFillBackground() {
|
|
27208
|
+
const low = this.distanceGradientLowColor();
|
|
27209
|
+
const mid = this.distanceGradientMidColor();
|
|
27210
|
+
const high = this.distanceGradientHighColor();
|
|
27211
|
+
return `radial-gradient(circle, ${applyAlphaToColor(low, 0.48)} 0%, ${applyAlphaToColor(mid, 0.4)} 58%, ${applyAlphaToColor(high, 0.34)} 100%)`;
|
|
27212
|
+
}
|
|
27213
|
+
distanceRadialValueColor() {
|
|
27214
|
+
return this.gradientColorForRatio(this.normalizedDistanceRatio());
|
|
27215
|
+
}
|
|
27216
|
+
showRadialRangeBand() {
|
|
27217
|
+
const ratios = this.currentNormalizedRangeRatios();
|
|
27218
|
+
if (!ratios) {
|
|
27219
|
+
return false;
|
|
27220
|
+
}
|
|
27221
|
+
return ratios.end - ratios.start > 0.0005;
|
|
27222
|
+
}
|
|
27223
|
+
radialRangeBandGradient() {
|
|
27224
|
+
const ratios = this.currentNormalizedRangeRatios();
|
|
27225
|
+
if (!ratios) {
|
|
27226
|
+
return null;
|
|
27227
|
+
}
|
|
27228
|
+
const innerScale = this.radialScaleForRatio(ratios.start);
|
|
27229
|
+
const outerScale = this.radialScaleForRatio(ratios.end);
|
|
27230
|
+
const innerPct = Math.max(0, Math.min(100, innerScale * 50));
|
|
27231
|
+
const outerPct = Math.max(innerPct, Math.min(100, outerScale * 50));
|
|
27232
|
+
const edgeSoftness = 1.2;
|
|
27233
|
+
const innerStop = Math.max(0, innerPct - edgeSoftness);
|
|
27234
|
+
const outerStop = Math.min(100, outerPct + edgeSoftness);
|
|
27235
|
+
const startColor = this.gradientColorForRatio(ratios.start);
|
|
27236
|
+
const endColor = this.gradientColorForRatio(ratios.end);
|
|
27237
|
+
return `radial-gradient(circle, transparent 0 ${innerStop.toFixed(2)}%, ${startColor} ${innerPct.toFixed(2)}%, ${endColor} ${outerPct.toFixed(2)}%, transparent ${outerStop.toFixed(2)}% 100%)`;
|
|
27238
|
+
}
|
|
27239
|
+
radialRangeBandOpacity() {
|
|
27240
|
+
const override = this.distanceRangeBandOpacityOverride();
|
|
27241
|
+
if (override !== null) {
|
|
27242
|
+
return override;
|
|
27243
|
+
}
|
|
27244
|
+
const ratios = this.currentNormalizedRangeRatios();
|
|
27245
|
+
if (!ratios) {
|
|
27246
|
+
return 0;
|
|
27247
|
+
}
|
|
27248
|
+
const width = Math.max(0, ratios.end - ratios.start);
|
|
27249
|
+
return Number((0.2 + Math.min(0.22, width * 0.45)).toFixed(3));
|
|
27250
|
+
}
|
|
26977
27251
|
distancePresets() {
|
|
26978
27252
|
const md = this.metadata() || {};
|
|
26979
27253
|
const source = md.distancePresets ?? md.quickPresets ?? null;
|
|
@@ -27052,6 +27326,18 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
27052
27326
|
const md = this.metadata() || {};
|
|
27053
27327
|
return this.resolveColorToken(md.distanceGlowColor, md.distanceAccentColor);
|
|
27054
27328
|
}
|
|
27329
|
+
distanceGradientLowColor() {
|
|
27330
|
+
const md = this.metadata() || {};
|
|
27331
|
+
return (this.resolveColorToken(md.distanceGradientLowColor, md.distanceToneLowColor, md.ratingToneLowColor, md.distanceAccentColor) || '#22c55e');
|
|
27332
|
+
}
|
|
27333
|
+
distanceGradientMidColor() {
|
|
27334
|
+
const md = this.metadata() || {};
|
|
27335
|
+
return (this.resolveColorToken(md.distanceGradientMidColor, md.distanceToneMidColor, md.ratingToneMidColor, md.distanceGlowColor) || '#f59e0b');
|
|
27336
|
+
}
|
|
27337
|
+
distanceGradientHighColor() {
|
|
27338
|
+
const md = this.metadata() || {};
|
|
27339
|
+
return (this.resolveColorToken(md.distanceGradientHighColor, md.distanceToneHighColor, md.ratingToneHighColor, md.distanceAccentColor) || '#ef4444');
|
|
27340
|
+
}
|
|
27055
27341
|
syncUnitFromMetadata() {
|
|
27056
27342
|
const md = this.metadata() || {};
|
|
27057
27343
|
const units = this.availableUnits();
|
|
@@ -27071,13 +27357,30 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
27071
27357
|
const min = this.minValue();
|
|
27072
27358
|
const max = this.maxValue();
|
|
27073
27359
|
const current = this.currentRadialBaseValue() ?? min;
|
|
27360
|
+
return this.normalizedRatioForValue(current, min, max);
|
|
27361
|
+
}
|
|
27362
|
+
normalizedRatioForValue(value, min, max) {
|
|
27074
27363
|
if (max <= min)
|
|
27075
27364
|
return 1;
|
|
27076
|
-
const ratio = (
|
|
27365
|
+
const ratio = (value - min) / (max - min);
|
|
27077
27366
|
return Math.max(0, Math.min(1, ratio));
|
|
27078
27367
|
}
|
|
27079
27368
|
radialFillScale() {
|
|
27080
|
-
return
|
|
27369
|
+
return this.radialScaleForRatio(this.normalizedDistanceRatio());
|
|
27370
|
+
}
|
|
27371
|
+
radialScaleForRatio(ratio) {
|
|
27372
|
+
return 0.2 + ratio * 0.8;
|
|
27373
|
+
}
|
|
27374
|
+
gradientColorForRatio(ratio) {
|
|
27375
|
+
return interpolateThreeStopGradientColor(this.distanceGradientLowColor(), this.distanceGradientMidColor(), this.distanceGradientHighColor(), ratio);
|
|
27376
|
+
}
|
|
27377
|
+
distanceRangeBandOpacityOverride() {
|
|
27378
|
+
const md = this.metadata() || {};
|
|
27379
|
+
const candidate = Number(md.distanceRangeBandOpacity ?? md.distanceRadialRangeOpacity ?? md.distanceRangeOpacity);
|
|
27380
|
+
if (!Number.isFinite(candidate)) {
|
|
27381
|
+
return null;
|
|
27382
|
+
}
|
|
27383
|
+
return Math.max(0, Math.min(1, Number(candidate.toFixed(3))));
|
|
27081
27384
|
}
|
|
27082
27385
|
currentBaseValue() {
|
|
27083
27386
|
const raw = this.control().value;
|
|
@@ -27109,6 +27412,23 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
27109
27412
|
}
|
|
27110
27413
|
return this.currentBaseValue();
|
|
27111
27414
|
}
|
|
27415
|
+
currentNormalizedRangeRatios() {
|
|
27416
|
+
if (!this.isRangeMode()) {
|
|
27417
|
+
return null;
|
|
27418
|
+
}
|
|
27419
|
+
const range = this.currentRangeBaseValue();
|
|
27420
|
+
if (!range) {
|
|
27421
|
+
return null;
|
|
27422
|
+
}
|
|
27423
|
+
const min = this.minValue();
|
|
27424
|
+
const max = this.maxValue();
|
|
27425
|
+
let start = this.normalizedRatioForValue(range.start ?? min, min, max);
|
|
27426
|
+
let end = this.normalizedRatioForValue(range.end ?? max, min, max);
|
|
27427
|
+
if (start > end) {
|
|
27428
|
+
[start, end] = [end, start];
|
|
27429
|
+
}
|
|
27430
|
+
return { start, end };
|
|
27431
|
+
}
|
|
27112
27432
|
clampBaseValue(value) {
|
|
27113
27433
|
const min = this.minValue();
|
|
27114
27434
|
const max = this.maxValue();
|
|
@@ -27471,6 +27791,10 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
27471
27791
|
[style.--pdx-inline-distance-ring]="distanceRingColor()"
|
|
27472
27792
|
[style.--pdx-inline-distance-track]="distanceTrackColor()"
|
|
27473
27793
|
[style.--pdx-inline-distance-glow]="distanceGlowColor()"
|
|
27794
|
+
[style.--pdx-inline-distance-gradient-low]="distanceGradientLowColor()"
|
|
27795
|
+
[style.--pdx-inline-distance-gradient-mid]="distanceGradientMidColor()"
|
|
27796
|
+
[style.--pdx-inline-distance-gradient-high]="distanceGradientHighColor()"
|
|
27797
|
+
[style.--pdx-inline-distance-value-color]="distanceRadialValueColor()"
|
|
27474
27798
|
[matTooltip]="inlineTooltipText()"
|
|
27475
27799
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
27476
27800
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -27570,7 +27894,15 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
27570
27894
|
class="pdx-inline-distance-fill"
|
|
27571
27895
|
[style.transform]="radialFillTransform()"
|
|
27572
27896
|
[style.opacity]="radialFillOpacity()"
|
|
27897
|
+
[style.background]="radialFillBackground()"
|
|
27573
27898
|
></span>
|
|
27899
|
+
@if (showRadialRangeBand()) {
|
|
27900
|
+
<span
|
|
27901
|
+
class="pdx-inline-distance-range-band"
|
|
27902
|
+
[style.background]="radialRangeBandGradient()"
|
|
27903
|
+
[style.opacity]="radialRangeBandOpacity()"
|
|
27904
|
+
></span>
|
|
27905
|
+
}
|
|
27574
27906
|
<span class="pdx-inline-distance-dot"></span>
|
|
27575
27907
|
</div>
|
|
27576
27908
|
</div>
|
|
@@ -27663,7 +27995,7 @@ class FilterInlineDistanceRadiusComponent extends FilterInlineRangeSliderCompone
|
|
|
27663
27995
|
</div>
|
|
27664
27996
|
</ng-template>
|
|
27665
27997
|
</div>
|
|
27666
|
-
`, isInline: true, styles: [":host{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-root{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-chip{display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;min-height:42px;min-inline-size:var(--pdx-inline-distance-min-w, 188px);max-width:min(var(--pdx-inline-distance-max-w, 340px),calc(100vw - 48px));padding:0 8px 0 0;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease}.pdx-inline-distance-chip.is-active{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-inline-distance-chip.is-open{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-distance-trigger{flex:1 1 auto;display:inline-flex;align-items:center;gap:10px;min-width:0;width:100%;min-height:40px;border:0;background:transparent;color:inherit;cursor:pointer;padding:0 12px;text-align:left}.pdx-inline-distance-trigger:focus-visible{outline:2px solid color-mix(in srgb,currentColor 42%,transparent);outline-offset:-2px;border-radius:999px}.pdx-inline-distance-trigger[disabled]{cursor:default;opacity:var(--md-sys-state-disabled-content-opacity, .38)}.pdx-inline-distance-icon{width:18px;height:18px;font-size:18px;line-height:1}.pdx-inline-distance-text{display:inline-block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.15;font-weight:500}.pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-primary);width:22px;height:22px;min-width:22px;margin-right:10px;display:grid;place-items:center;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;background:color-mix(in srgb,var(--md-sys-color-on-surface) 10%,transparent);color:inherit;cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}.pdx-inline-distance-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}.pdx-inline-distance-chip.is-active .pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-on-primary);background:color-mix(in srgb,var(--md-sys-color-on-primary) 22%,transparent)}.pdx-inline-distance-clear:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}.pdx-inline-distance-clear mat-icon{width:15px;height:15px;font-size:15px}.pdx-inline-distance-panel{width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));min-width:min(var(--pdx-inline-distance-panel-min-w, 320px),calc(100vw - 24px));max-width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));padding:14px 16px;border-radius:16px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);box-shadow:0 14px 30px color-mix(in srgb,var(--md-sys-color-shadow) 20%,transparent);box-sizing:border-box;display:grid;gap:12px}.pdx-inline-distance-header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}.pdx-inline-distance-header-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-surface-container-high));color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-header-icon mat-icon{width:20px;height:20px;font-size:20px}.pdx-inline-distance-title{font-size:1rem;font-weight:600}.pdx-inline-distance-subtitle{color:var(--md-sys-color-on-surface-variant);font-size:.82rem;line-height:1.25}.pdx-inline-distance-radial-wrap{display:grid;place-items:center;padding-top:2px}.pdx-inline-distance-radial{width:min(196px,52vw);aspect-ratio:1;position:relative;display:grid;place-items:center}.pdx-inline-distance-ring{position:absolute;inset:0;border-radius:50%;border:1px dashed var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant));transform-origin:center}.pdx-inline-distance-ring.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 65%,var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant)))}.pdx-inline-distance-fill{position:absolute;width:100%;height:100%;border-radius:50%;transform-origin:center;background:radial-gradient(circle,color-mix(in srgb,var(--pdx-inline-distance-glow, var(--md-sys-color-primary)) 26%,transparent) 0%,color-mix(in srgb,var(--pdx-inline-distance-glow, var(--md-sys-color-primary)) 10%,transparent) 58%,transparent 100%)}.pdx-inline-distance-dot{width:22px;height:22px;border-radius:50%;border:3px solid color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 75%,white);background:var(--pdx-inline-distance-accent, var(--md-sys-color-primary));box-shadow:0 0 0 6px color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 16%,transparent)}.pdx-inline-distance-value{display:inline-flex;align-items:baseline;justify-content:center;gap:2px}.pdx-inline-distance-value-number{font-size:2rem;font-weight:700;line-height:1;color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-value-unit{font-size:.95rem;color:var(--md-sys-color-on-surface-variant)}.pdx-inline-distance-units{display:inline-grid;grid-auto-flow:column;gap:0;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);overflow:hidden;justify-self:center}.pdx-inline-distance-unit-btn{min-width:56px;min-height:32px;border:0;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font:inherit;font-size:.85rem;font-weight:600;letter-spacing:.02em;padding:0 12px;cursor:pointer}.pdx-inline-distance-unit-btn.is-active{background:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 18%,var(--md-sys-color-surface-container-high));color:var(--md-sys-color-on-surface)}.pdx-inline-distance-unit-btn:focus-visible{outline:2px solid color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 38%,transparent);outline-offset:-2px}.pdx-inline-distance-unit-btn[disabled]{opacity:.56;cursor:default}.pdx-inline-distance-slider-wrap{padding-top:2px}.pdx-inline-distance-slider{width:100%}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__track--inactive{background:var(--pdx-inline-distance-track, var(--md-sys-color-outline-variant))}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__track--active_fill{border-color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__thumb-knob{border-color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-edges{display:flex;justify-content:space-between;color:var(--md-sys-color-on-surface-variant);font-size:.82rem}.pdx-inline-distance-presets{display:flex;flex-wrap:wrap;gap:8px}.pdx-inline-distance-preset{border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);border-radius:999px;min-height:31px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.pdx-inline-distance-preset.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 80%,var(--md-sys-color-primary));background:var(--pdx-inline-distance-accent, var(--md-sys-color-primary));color:var(--md-sys-color-on-primary);box-shadow:0 8px 16px color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 28%,transparent)}.pdx-inline-distance-preset[disabled]{opacity:.56;cursor:default}@media(max-width:768px){.pdx-inline-distance-panel{min-width:min(300px,calc(100vw - 24px));padding:12px}.pdx-inline-distance-radial{width:min(176px,56vw)}.pdx-inline-distance-value-number{font-size:1.8rem}.pdx-inline-distance-preset{min-height:29px;padding:0 10px;font-size:.82rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i3$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i3$1.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
27998
|
+
`, isInline: true, styles: [":host{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-root{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-chip{display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;min-height:42px;min-inline-size:var(--pdx-inline-distance-min-w, 188px);max-width:min(var(--pdx-inline-distance-max-w, 340px),calc(100vw - 48px));padding:0 8px 0 0;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease}.pdx-inline-distance-chip.is-active{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-inline-distance-chip.is-open{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-distance-trigger{flex:1 1 auto;display:inline-flex;align-items:center;gap:10px;min-width:0;width:100%;min-height:40px;border:0;background:transparent;color:inherit;cursor:pointer;padding:0 12px;text-align:left}.pdx-inline-distance-trigger:focus-visible{outline:2px solid color-mix(in srgb,currentColor 42%,transparent);outline-offset:-2px;border-radius:999px}.pdx-inline-distance-trigger[disabled]{cursor:default;opacity:var(--md-sys-state-disabled-content-opacity, .38)}.pdx-inline-distance-icon{width:18px;height:18px;font-size:18px;line-height:1}.pdx-inline-distance-text{display:inline-block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.15;font-weight:500}.pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-primary);width:22px;height:22px;min-width:22px;margin-right:10px;display:grid;place-items:center;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;background:color-mix(in srgb,var(--md-sys-color-on-surface) 10%,transparent);color:inherit;cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}.pdx-inline-distance-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}.pdx-inline-distance-chip.is-active .pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-on-primary);background:color-mix(in srgb,var(--md-sys-color-on-primary) 22%,transparent)}.pdx-inline-distance-clear:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}.pdx-inline-distance-clear mat-icon{width:15px;height:15px;font-size:15px}.pdx-inline-distance-panel{width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));min-width:min(var(--pdx-inline-distance-panel-min-w, 320px),calc(100vw - 24px));max-width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));padding:14px 16px;border-radius:16px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);box-shadow:0 14px 30px color-mix(in srgb,var(--md-sys-color-shadow) 20%,transparent);box-sizing:border-box;display:grid;gap:12px}.pdx-inline-distance-header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}.pdx-inline-distance-header-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-surface-container-high));color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-header-icon mat-icon{width:20px;height:20px;font-size:20px}.pdx-inline-distance-title{font-size:1rem;font-weight:600}.pdx-inline-distance-subtitle{color:var(--md-sys-color-on-surface-variant);font-size:.82rem;line-height:1.25}.pdx-inline-distance-radial-wrap{display:grid;place-items:center;padding-top:2px}.pdx-inline-distance-radial{width:min(196px,52vw);aspect-ratio:1;position:relative;display:grid;place-items:center}.pdx-inline-distance-ring{position:absolute;inset:0;border-radius:50%;border:1px dashed var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant));transform-origin:center}.pdx-inline-distance-ring.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary))) 65%,var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant)))}.pdx-inline-distance-fill{position:absolute;width:100%;height:100%;border-radius:50%;transform-origin:center;background:radial-gradient(circle,color-mix(in srgb,var(--pdx-inline-distance-gradient-low, #22c55e) 48%,transparent),color-mix(in srgb,var(--pdx-inline-distance-gradient-mid, #f59e0b) 40%,transparent) 58%,color-mix(in srgb,var(--pdx-inline-distance-gradient-high, #ef4444) 34%,transparent))}.pdx-inline-distance-range-band{position:absolute;inset:0;border-radius:50%;pointer-events:none}.pdx-inline-distance-dot{width:22px;height:22px;border-radius:50%;border:3px solid color-mix(in srgb,var(--pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary))) 75%,white);background:var( --pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) );box-shadow:0 0 0 6px color-mix(in srgb,var(--pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary))) 16%,transparent)}.pdx-inline-distance-value{display:inline-flex;align-items:baseline;justify-content:center;gap:2px}.pdx-inline-distance-value-number{font-size:2rem;font-weight:700;line-height:1;color:var( --pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) )}.pdx-inline-distance-value-unit{font-size:.95rem;color:var(--md-sys-color-on-surface-variant)}.pdx-inline-distance-units{display:inline-grid;grid-auto-flow:column;gap:0;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);overflow:hidden;justify-self:center}.pdx-inline-distance-unit-btn{min-width:56px;min-height:32px;border:0;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font:inherit;font-size:.85rem;font-weight:600;letter-spacing:.02em;padding:0 12px;cursor:pointer}.pdx-inline-distance-unit-btn.is-active{background:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 18%,var(--md-sys-color-surface-container-high));color:var(--md-sys-color-on-surface)}.pdx-inline-distance-unit-btn:focus-visible{outline:2px solid color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 38%,transparent);outline-offset:-2px}.pdx-inline-distance-unit-btn[disabled]{opacity:.56;cursor:default}.pdx-inline-distance-slider-wrap{padding-top:2px}.pdx-inline-distance-slider{width:100%}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__track--inactive{background:var(--pdx-inline-distance-track, var(--md-sys-color-outline-variant))}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__track--active_fill{border-color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__thumb-knob{border-color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-edges{display:flex;justify-content:space-between;color:var(--md-sys-color-on-surface-variant);font-size:.82rem}.pdx-inline-distance-presets{display:flex;flex-wrap:wrap;gap:8px}.pdx-inline-distance-preset{border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);border-radius:999px;min-height:31px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.pdx-inline-distance-preset.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 80%,var(--md-sys-color-primary));background:var(--pdx-inline-distance-accent, var(--md-sys-color-primary));color:var(--md-sys-color-on-primary);box-shadow:0 8px 16px color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 28%,transparent)}.pdx-inline-distance-preset[disabled]{opacity:.56;cursor:default}@media(max-width:768px){.pdx-inline-distance-panel{min-width:min(300px,calc(100vw - 24px));padding:12px}.pdx-inline-distance-radial{width:min(176px,56vw)}.pdx-inline-distance-value-number{font-size:1.8rem}.pdx-inline-distance-preset{min-height:29px;padding:0 10px;font-size:.82rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i3$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i3$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "directive", type: i3$1.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
27667
27999
|
}
|
|
27668
28000
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FilterInlineDistanceRadiusComponent, decorators: [{
|
|
27669
28001
|
type: Component,
|
|
@@ -27686,6 +28018,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
27686
28018
|
[style.--pdx-inline-distance-ring]="distanceRingColor()"
|
|
27687
28019
|
[style.--pdx-inline-distance-track]="distanceTrackColor()"
|
|
27688
28020
|
[style.--pdx-inline-distance-glow]="distanceGlowColor()"
|
|
28021
|
+
[style.--pdx-inline-distance-gradient-low]="distanceGradientLowColor()"
|
|
28022
|
+
[style.--pdx-inline-distance-gradient-mid]="distanceGradientMidColor()"
|
|
28023
|
+
[style.--pdx-inline-distance-gradient-high]="distanceGradientHighColor()"
|
|
28024
|
+
[style.--pdx-inline-distance-value-color]="distanceRadialValueColor()"
|
|
27689
28025
|
[matTooltip]="inlineTooltipText()"
|
|
27690
28026
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
27691
28027
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -27785,7 +28121,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
27785
28121
|
class="pdx-inline-distance-fill"
|
|
27786
28122
|
[style.transform]="radialFillTransform()"
|
|
27787
28123
|
[style.opacity]="radialFillOpacity()"
|
|
28124
|
+
[style.background]="radialFillBackground()"
|
|
27788
28125
|
></span>
|
|
28126
|
+
@if (showRadialRangeBand()) {
|
|
28127
|
+
<span
|
|
28128
|
+
class="pdx-inline-distance-range-band"
|
|
28129
|
+
[style.background]="radialRangeBandGradient()"
|
|
28130
|
+
[style.opacity]="radialRangeBandOpacity()"
|
|
28131
|
+
></span>
|
|
28132
|
+
}
|
|
27789
28133
|
<span class="pdx-inline-distance-dot"></span>
|
|
27790
28134
|
</div>
|
|
27791
28135
|
</div>
|
|
@@ -27895,7 +28239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
27895
28239
|
'[attr.data-component-id]': 'componentId()',
|
|
27896
28240
|
'(window:resize)': 'onViewportResize()',
|
|
27897
28241
|
'(document:keydown.escape)': 'onDocumentEscape()',
|
|
27898
|
-
}, styles: [":host{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-root{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-chip{display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;min-height:42px;min-inline-size:var(--pdx-inline-distance-min-w, 188px);max-width:min(var(--pdx-inline-distance-max-w, 340px),calc(100vw - 48px));padding:0 8px 0 0;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease}.pdx-inline-distance-chip.is-active{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-inline-distance-chip.is-open{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-distance-trigger{flex:1 1 auto;display:inline-flex;align-items:center;gap:10px;min-width:0;width:100%;min-height:40px;border:0;background:transparent;color:inherit;cursor:pointer;padding:0 12px;text-align:left}.pdx-inline-distance-trigger:focus-visible{outline:2px solid color-mix(in srgb,currentColor 42%,transparent);outline-offset:-2px;border-radius:999px}.pdx-inline-distance-trigger[disabled]{cursor:default;opacity:var(--md-sys-state-disabled-content-opacity, .38)}.pdx-inline-distance-icon{width:18px;height:18px;font-size:18px;line-height:1}.pdx-inline-distance-text{display:inline-block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.15;font-weight:500}.pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-primary);width:22px;height:22px;min-width:22px;margin-right:10px;display:grid;place-items:center;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;background:color-mix(in srgb,var(--md-sys-color-on-surface) 10%,transparent);color:inherit;cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}.pdx-inline-distance-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}.pdx-inline-distance-chip.is-active .pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-on-primary);background:color-mix(in srgb,var(--md-sys-color-on-primary) 22%,transparent)}.pdx-inline-distance-clear:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}.pdx-inline-distance-clear mat-icon{width:15px;height:15px;font-size:15px}.pdx-inline-distance-panel{width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));min-width:min(var(--pdx-inline-distance-panel-min-w, 320px),calc(100vw - 24px));max-width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));padding:14px 16px;border-radius:16px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);box-shadow:0 14px 30px color-mix(in srgb,var(--md-sys-color-shadow) 20%,transparent);box-sizing:border-box;display:grid;gap:12px}.pdx-inline-distance-header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}.pdx-inline-distance-header-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-surface-container-high));color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-header-icon mat-icon{width:20px;height:20px;font-size:20px}.pdx-inline-distance-title{font-size:1rem;font-weight:600}.pdx-inline-distance-subtitle{color:var(--md-sys-color-on-surface-variant);font-size:.82rem;line-height:1.25}.pdx-inline-distance-radial-wrap{display:grid;place-items:center;padding-top:2px}.pdx-inline-distance-radial{width:min(196px,52vw);aspect-ratio:1;position:relative;display:grid;place-items:center}.pdx-inline-distance-ring{position:absolute;inset:0;border-radius:50%;border:1px dashed var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant));transform-origin:center}.pdx-inline-distance-ring.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 65%,var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant)))}.pdx-inline-distance-fill{position:absolute;width:100%;height:100%;border-radius:50%;transform-origin:center;background:radial-gradient(circle,color-mix(in srgb,var(--pdx-inline-distance-
|
|
28242
|
+
}, styles: [":host{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-root{display:inline-block;width:auto;min-width:0;max-width:100%}.pdx-inline-distance-chip{display:inline-flex;align-items:center;gap:6px;width:auto;min-width:0;min-height:42px;min-inline-size:var(--pdx-inline-distance-min-w, 188px);max-width:min(var(--pdx-inline-distance-max-w, 340px),calc(100vw - 48px));padding:0 8px 0 0;border-radius:999px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);box-sizing:border-box;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,color .12s ease}.pdx-inline-distance-chip.is-active{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}.pdx-inline-distance-chip.is-open{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.pdx-inline-distance-trigger{flex:1 1 auto;display:inline-flex;align-items:center;gap:10px;min-width:0;width:100%;min-height:40px;border:0;background:transparent;color:inherit;cursor:pointer;padding:0 12px;text-align:left}.pdx-inline-distance-trigger:focus-visible{outline:2px solid color-mix(in srgb,currentColor 42%,transparent);outline-offset:-2px;border-radius:999px}.pdx-inline-distance-trigger[disabled]{cursor:default;opacity:var(--md-sys-state-disabled-content-opacity, .38)}.pdx-inline-distance-icon{width:18px;height:18px;font-size:18px;line-height:1}.pdx-inline-distance-text{display:inline-block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.15;font-weight:500}.pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-primary);width:22px;height:22px;min-width:22px;margin-right:10px;display:grid;place-items:center;border:0;border-radius:50%;appearance:none;-webkit-appearance:none;outline:none;padding:0;background:color-mix(in srgb,var(--md-sys-color-on-surface) 10%,transparent);color:inherit;cursor:pointer;line-height:0;font-size:0;transition:background-color .12s ease,box-shadow .12s ease,color .12s ease}.pdx-inline-distance-clear:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 18%,transparent)}.pdx-inline-distance-chip.is-active .pdx-inline-distance-clear{--clear-ring-color: var(--md-sys-color-on-primary);background:color-mix(in srgb,var(--md-sys-color-on-primary) 22%,transparent)}.pdx-inline-distance-clear:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--clear-ring-color) 34%,transparent)}.pdx-inline-distance-clear mat-icon{width:15px;height:15px;font-size:15px}.pdx-inline-distance-panel{width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));min-width:min(var(--pdx-inline-distance-panel-min-w, 320px),calc(100vw - 24px));max-width:min(var(--pdx-inline-distance-panel-max-w, 560px),calc(100vw - 24px));padding:14px 16px;border-radius:16px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);box-shadow:0 14px 30px color-mix(in srgb,var(--md-sys-color-shadow) 20%,transparent);box-sizing:border-box;display:grid;gap:12px}.pdx-inline-distance-header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center}.pdx-inline-distance-header-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--md-sys-color-primary) 14%,var(--md-sys-color-surface-container-high));color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-header-icon mat-icon{width:20px;height:20px;font-size:20px}.pdx-inline-distance-title{font-size:1rem;font-weight:600}.pdx-inline-distance-subtitle{color:var(--md-sys-color-on-surface-variant);font-size:.82rem;line-height:1.25}.pdx-inline-distance-radial-wrap{display:grid;place-items:center;padding-top:2px}.pdx-inline-distance-radial{width:min(196px,52vw);aspect-ratio:1;position:relative;display:grid;place-items:center}.pdx-inline-distance-ring{position:absolute;inset:0;border-radius:50%;border:1px dashed var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant));transform-origin:center}.pdx-inline-distance-ring.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary))) 65%,var(--pdx-inline-distance-ring, var(--md-sys-color-outline-variant)))}.pdx-inline-distance-fill{position:absolute;width:100%;height:100%;border-radius:50%;transform-origin:center;background:radial-gradient(circle,color-mix(in srgb,var(--pdx-inline-distance-gradient-low, #22c55e) 48%,transparent),color-mix(in srgb,var(--pdx-inline-distance-gradient-mid, #f59e0b) 40%,transparent) 58%,color-mix(in srgb,var(--pdx-inline-distance-gradient-high, #ef4444) 34%,transparent))}.pdx-inline-distance-range-band{position:absolute;inset:0;border-radius:50%;pointer-events:none}.pdx-inline-distance-dot{width:22px;height:22px;border-radius:50%;border:3px solid color-mix(in srgb,var(--pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary))) 75%,white);background:var( --pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) );box-shadow:0 0 0 6px color-mix(in srgb,var(--pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary))) 16%,transparent)}.pdx-inline-distance-value{display:inline-flex;align-items:baseline;justify-content:center;gap:2px}.pdx-inline-distance-value-number{font-size:2rem;font-weight:700;line-height:1;color:var( --pdx-inline-distance-value-color, var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) )}.pdx-inline-distance-value-unit{font-size:.95rem;color:var(--md-sys-color-on-surface-variant)}.pdx-inline-distance-units{display:inline-grid;grid-auto-flow:column;gap:0;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);overflow:hidden;justify-self:center}.pdx-inline-distance-unit-btn{min-width:56px;min-height:32px;border:0;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font:inherit;font-size:.85rem;font-weight:600;letter-spacing:.02em;padding:0 12px;cursor:pointer}.pdx-inline-distance-unit-btn.is-active{background:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 18%,var(--md-sys-color-surface-container-high));color:var(--md-sys-color-on-surface)}.pdx-inline-distance-unit-btn:focus-visible{outline:2px solid color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 38%,transparent);outline-offset:-2px}.pdx-inline-distance-unit-btn[disabled]{opacity:.56;cursor:default}.pdx-inline-distance-slider-wrap{padding-top:2px}.pdx-inline-distance-slider{width:100%}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__track--inactive{background:var(--pdx-inline-distance-track, var(--md-sys-color-outline-variant))}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__track--active_fill{border-color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}:host ::ng-deep .pdx-inline-distance-slider .mdc-slider__thumb-knob{border-color:var(--pdx-inline-distance-accent, var(--md-sys-color-primary))}.pdx-inline-distance-edges{display:flex;justify-content:space-between;color:var(--md-sys-color-on-surface-variant);font-size:.82rem}.pdx-inline-distance-presets{display:flex;flex-wrap:wrap;gap:8px}.pdx-inline-distance-preset{border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);border-radius:999px;min-height:31px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.pdx-inline-distance-preset.is-active{border-color:color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 80%,var(--md-sys-color-primary));background:var(--pdx-inline-distance-accent, var(--md-sys-color-primary));color:var(--md-sys-color-on-primary);box-shadow:0 8px 16px color-mix(in srgb,var(--pdx-inline-distance-accent, var(--md-sys-color-primary)) 28%,transparent)}.pdx-inline-distance-preset[disabled]{opacity:.56;cursor:default}@media(max-width:768px){.pdx-inline-distance-panel{min-width:min(300px,calc(100vw - 24px));padding:12px}.pdx-inline-distance-radial{width:min(176px,56vw)}.pdx-inline-distance-value-number{font-size:1.8rem}.pdx-inline-distance-preset{min-height:29px;padding:0 10px;font-size:.82rem}}\n"] }]
|
|
27899
28243
|
}] });
|
|
27900
28244
|
|
|
27901
28245
|
const PDX_FILTER_INLINE_DISTANCE_RADIUS_COMPONENT_METADATA = {
|
|
@@ -28147,7 +28491,9 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28147
28491
|
this.onClearClick();
|
|
28148
28492
|
}
|
|
28149
28493
|
pipelineOptions() {
|
|
28150
|
-
|
|
28494
|
+
const filtered = this.filteredOptions();
|
|
28495
|
+
const optionPool = this.options();
|
|
28496
|
+
return filtered.map((option) => this.toVisualOption(option, this.resolveOptionOrderIndex(option, optionPool), optionPool.length));
|
|
28151
28497
|
}
|
|
28152
28498
|
selectedVisualOptions() {
|
|
28153
28499
|
const selectedValues = this.selectedValues();
|
|
@@ -28158,7 +28504,7 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28158
28504
|
selectedValues.forEach((selectedValue, index) => {
|
|
28159
28505
|
const option = optionPool.find((entry) => this.equalsOptionValue(entry, selectedValue));
|
|
28160
28506
|
if (option) {
|
|
28161
|
-
out.push(this.toVisualOption(option,
|
|
28507
|
+
out.push(this.toVisualOption(option, this.resolveOptionOrderIndex(option, optionPool), optionPool.length));
|
|
28162
28508
|
}
|
|
28163
28509
|
else {
|
|
28164
28510
|
out.push({
|
|
@@ -28166,7 +28512,7 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28166
28512
|
label: String(selectedValue ?? ''),
|
|
28167
28513
|
subtitle: '',
|
|
28168
28514
|
value: selectedValue,
|
|
28169
|
-
color: this.resolveFallbackColor(index),
|
|
28515
|
+
color: this.resolveFallbackColor(index, selectedValues.length),
|
|
28170
28516
|
weight: 1,
|
|
28171
28517
|
disabled: false,
|
|
28172
28518
|
selected: true,
|
|
@@ -28176,7 +28522,8 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28176
28522
|
return out;
|
|
28177
28523
|
}
|
|
28178
28524
|
pipelineSegments() {
|
|
28179
|
-
const
|
|
28525
|
+
const optionPool = this.options();
|
|
28526
|
+
const options = optionPool.map((option, index) => this.toVisualOption(option, index, optionPool.length));
|
|
28180
28527
|
if (!options.length)
|
|
28181
28528
|
return [];
|
|
28182
28529
|
const totalWeight = options.reduce((sum, item) => sum + item.weight, 0);
|
|
@@ -28198,6 +28545,24 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28198
28545
|
selected: option.selected,
|
|
28199
28546
|
}));
|
|
28200
28547
|
}
|
|
28548
|
+
pipelineGradientLowColor() {
|
|
28549
|
+
const md = this.metadata() || {};
|
|
28550
|
+
return this.resolveColorToken(md.pipelineGradientLowColor, md.pipelineToneLowColor) || '#64748b';
|
|
28551
|
+
}
|
|
28552
|
+
pipelineGradientMidColor() {
|
|
28553
|
+
const md = this.metadata() || {};
|
|
28554
|
+
return this.resolveColorToken(md.pipelineGradientMidColor, md.pipelineToneMidColor) || '#0ea5e9';
|
|
28555
|
+
}
|
|
28556
|
+
pipelineGradientHighColor() {
|
|
28557
|
+
const md = this.metadata() || {};
|
|
28558
|
+
return this.resolveColorToken(md.pipelineGradientHighColor, md.pipelineToneHighColor) || '#22c55e';
|
|
28559
|
+
}
|
|
28560
|
+
pipelineGradient() {
|
|
28561
|
+
const low = this.pipelineGradientLowColor();
|
|
28562
|
+
const mid = this.pipelineGradientMidColor();
|
|
28563
|
+
const high = this.pipelineGradientHighColor();
|
|
28564
|
+
return `linear-gradient(90deg, ${low} 0%, ${mid} 52%, ${high} 100%)`;
|
|
28565
|
+
}
|
|
28201
28566
|
pipelineBarAriaLabel() {
|
|
28202
28567
|
const label = this.placeholderText();
|
|
28203
28568
|
const selected = this.selectedVisualOptions();
|
|
@@ -28305,7 +28670,7 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28305
28670
|
isInteractionBlocked() {
|
|
28306
28671
|
return this.disabledMode || this.isReadonlyEffective() || this.presentationMode;
|
|
28307
28672
|
}
|
|
28308
|
-
toVisualOption(option, index) {
|
|
28673
|
+
toVisualOption(option, index, totalOptions = 0) {
|
|
28309
28674
|
const raw = option;
|
|
28310
28675
|
const subtitle = this.resolveOptionSubtitle(raw);
|
|
28311
28676
|
const weight = this.resolveOptionWeight(raw, subtitle);
|
|
@@ -28314,12 +28679,20 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28314
28679
|
label: String(option.label ?? raw.text ?? raw.name ?? raw.title ?? option.value ?? '').trim() || `Item ${index + 1}`,
|
|
28315
28680
|
subtitle,
|
|
28316
28681
|
value: option.value,
|
|
28317
|
-
color: this.resolveOptionColor(raw, index),
|
|
28682
|
+
color: this.resolveOptionColor(raw, index, totalOptions),
|
|
28318
28683
|
weight,
|
|
28319
28684
|
disabled: !!option.disabled,
|
|
28320
28685
|
selected: this.selectedValues().some((entry) => this.equalsOptionValue({ value: entry, label: '' }, option.value)),
|
|
28321
28686
|
};
|
|
28322
28687
|
}
|
|
28688
|
+
resolveOptionOrderIndex(option, optionPool) {
|
|
28689
|
+
const matchedIndex = optionPool.findIndex((entry) => this.equalsOptionValue(entry, option.value));
|
|
28690
|
+
if (matchedIndex >= 0) {
|
|
28691
|
+
return matchedIndex;
|
|
28692
|
+
}
|
|
28693
|
+
const fallback = optionPool.indexOf(option);
|
|
28694
|
+
return fallback >= 0 ? fallback : 0;
|
|
28695
|
+
}
|
|
28323
28696
|
resolveOptionSubtitle(raw) {
|
|
28324
28697
|
const md = this.metadata() || {};
|
|
28325
28698
|
const customKey = this.resolveMetadataKey(md.pipelineOptionSubtitleKey, md.optionSubtitleKey);
|
|
@@ -28358,7 +28731,7 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28358
28731
|
}
|
|
28359
28732
|
return 1;
|
|
28360
28733
|
}
|
|
28361
|
-
resolveOptionColor(raw, index) {
|
|
28734
|
+
resolveOptionColor(raw, index, totalOptions) {
|
|
28362
28735
|
const md = this.metadata() || {};
|
|
28363
28736
|
const customKey = this.resolveMetadataKey(md.pipelineOptionColorKey, md.optionColorKey);
|
|
28364
28737
|
if (customKey) {
|
|
@@ -28379,11 +28752,19 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28379
28752
|
if (palette.length) {
|
|
28380
28753
|
return palette[index % palette.length];
|
|
28381
28754
|
}
|
|
28382
|
-
return this.resolveFallbackColor(index);
|
|
28755
|
+
return this.resolveFallbackColor(index, totalOptions);
|
|
28383
28756
|
}
|
|
28384
|
-
resolveFallbackColor(index) {
|
|
28385
|
-
const
|
|
28386
|
-
return
|
|
28757
|
+
resolveFallbackColor(index, totalOptions = 0) {
|
|
28758
|
+
const normalizedTotal = Math.max(2, totalOptions);
|
|
28759
|
+
return this.pipelineGradientColorByIndex(index, normalizedTotal);
|
|
28760
|
+
}
|
|
28761
|
+
pipelineGradientColorByIndex(index, total) {
|
|
28762
|
+
const safeTotal = Math.max(2, total);
|
|
28763
|
+
const ratio = Math.max(0, Math.min(1, index / (safeTotal - 1)));
|
|
28764
|
+
return this.pipelineGradientColorByRatio(ratio);
|
|
28765
|
+
}
|
|
28766
|
+
pipelineGradientColorByRatio(ratio) {
|
|
28767
|
+
return interpolateThreeStopGradientColor(this.pipelineGradientLowColor(), this.pipelineGradientMidColor(), this.pipelineGradientHighColor(), ratio);
|
|
28387
28768
|
}
|
|
28388
28769
|
parseColorPalette(source) {
|
|
28389
28770
|
if (Array.isArray(source)) {
|
|
@@ -28464,6 +28845,15 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28464
28845
|
const text = String(value ?? '').trim();
|
|
28465
28846
|
return text.length ? text : null;
|
|
28466
28847
|
}
|
|
28848
|
+
resolveColorToken(...values) {
|
|
28849
|
+
for (const value of values) {
|
|
28850
|
+
const text = this.nonEmptyText(value);
|
|
28851
|
+
if (text) {
|
|
28852
|
+
return text;
|
|
28853
|
+
}
|
|
28854
|
+
}
|
|
28855
|
+
return null;
|
|
28856
|
+
}
|
|
28467
28857
|
mapRawOption(option, index) {
|
|
28468
28858
|
if (option && typeof option === 'object') {
|
|
28469
28859
|
const label = String(option.label ?? option.text ?? option.name ?? option.title ?? '').trim();
|
|
@@ -28604,6 +28994,9 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28604
28994
|
[style.--pdx-inline-pipeline-max-w.px]="inlineMaxWidthPx || null"
|
|
28605
28995
|
[style.--pdx-inline-pipeline-panel-min-w.px]="panelMinWidthPx || null"
|
|
28606
28996
|
[style.--pdx-inline-pipeline-panel-max-w.px]="panelMaxWidthPx || null"
|
|
28997
|
+
[style.--pdx-inline-pipeline-gradient-low]="pipelineGradientLowColor()"
|
|
28998
|
+
[style.--pdx-inline-pipeline-gradient-mid]="pipelineGradientMidColor()"
|
|
28999
|
+
[style.--pdx-inline-pipeline-gradient-high]="pipelineGradientHighColor()"
|
|
28607
29000
|
[matTooltip]="inlineTooltipText()"
|
|
28608
29001
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
28609
29002
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -28689,7 +29082,12 @@ class FilterInlinePipelineStatusComponent extends SimpleBaseSelectComponent {
|
|
|
28689
29082
|
</div>
|
|
28690
29083
|
|
|
28691
29084
|
@if (showPipelineBar() && pipelineSegments().length) {
|
|
28692
|
-
<div
|
|
29085
|
+
<div
|
|
29086
|
+
class="pdx-inline-pipeline-bar"
|
|
29087
|
+
role="img"
|
|
29088
|
+
[style.background]="pipelineGradient()"
|
|
29089
|
+
[attr.aria-label]="pipelineBarAriaLabel()"
|
|
29090
|
+
>
|
|
28693
29091
|
@for (segment of pipelineSegments(); track segment.id) {
|
|
28694
29092
|
<span
|
|
28695
29093
|
class="pdx-inline-pipeline-segment"
|
|
@@ -28809,6 +29207,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
28809
29207
|
[style.--pdx-inline-pipeline-max-w.px]="inlineMaxWidthPx || null"
|
|
28810
29208
|
[style.--pdx-inline-pipeline-panel-min-w.px]="panelMinWidthPx || null"
|
|
28811
29209
|
[style.--pdx-inline-pipeline-panel-max-w.px]="panelMaxWidthPx || null"
|
|
29210
|
+
[style.--pdx-inline-pipeline-gradient-low]="pipelineGradientLowColor()"
|
|
29211
|
+
[style.--pdx-inline-pipeline-gradient-mid]="pipelineGradientMidColor()"
|
|
29212
|
+
[style.--pdx-inline-pipeline-gradient-high]="pipelineGradientHighColor()"
|
|
28812
29213
|
[matTooltip]="inlineTooltipText()"
|
|
28813
29214
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
28814
29215
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -28894,7 +29295,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
28894
29295
|
</div>
|
|
28895
29296
|
|
|
28896
29297
|
@if (showPipelineBar() && pipelineSegments().length) {
|
|
28897
|
-
<div
|
|
29298
|
+
<div
|
|
29299
|
+
class="pdx-inline-pipeline-bar"
|
|
29300
|
+
role="img"
|
|
29301
|
+
[style.background]="pipelineGradient()"
|
|
29302
|
+
[attr.aria-label]="pipelineBarAriaLabel()"
|
|
29303
|
+
>
|
|
28898
29304
|
@for (segment of pipelineSegments(); track segment.id) {
|
|
28899
29305
|
<span
|
|
28900
29306
|
class="pdx-inline-pipeline-segment"
|
|
@@ -29161,15 +29567,15 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29161
29567
|
const visual = [];
|
|
29162
29568
|
if (hasExplicitRanges) {
|
|
29163
29569
|
rawBands
|
|
29164
|
-
.map((band
|
|
29570
|
+
.map((band) => {
|
|
29165
29571
|
const start = this.scoreClampValue(this.scoreToFiniteNumber(band.start ?? band.from ?? band.min ?? band.valueStart) ?? min);
|
|
29166
29572
|
const end = this.scoreClampValue(this.scoreToFiniteNumber(band.end ?? band.to ?? band.max ?? band.valueEnd) ?? max);
|
|
29167
|
-
return { band,
|
|
29573
|
+
return { band, start: Math.min(start, end), end: Math.max(start, end) };
|
|
29168
29574
|
})
|
|
29169
29575
|
.sort((a, b) => a.start - b.start)
|
|
29170
|
-
.forEach(({ band,
|
|
29576
|
+
.forEach(({ band, start, end }, sortedIndex) => {
|
|
29171
29577
|
const safeEnd = end === start ? this.scoreClampValue(start + this.stepValue()) : end;
|
|
29172
|
-
visual.push(this.scoreBuildBandVisual(band,
|
|
29578
|
+
visual.push(this.scoreBuildBandVisual(band, sortedIndex, start, Math.max(start, safeEnd), min, max, rawBands.length));
|
|
29173
29579
|
});
|
|
29174
29580
|
}
|
|
29175
29581
|
else {
|
|
@@ -29179,7 +29585,7 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29179
29585
|
const end = index === rawBands.length - 1
|
|
29180
29586
|
? max
|
|
29181
29587
|
: min + (span * (index + 1)) / rawBands.length;
|
|
29182
|
-
visual.push(this.scoreBuildBandVisual(band, index, start, end, min, max));
|
|
29588
|
+
visual.push(this.scoreBuildBandVisual(band, index, start, end, min, max, rawBands.length));
|
|
29183
29589
|
});
|
|
29184
29590
|
}
|
|
29185
29591
|
return visual;
|
|
@@ -29189,7 +29595,10 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29189
29595
|
if (!bands.length) {
|
|
29190
29596
|
const md = this.metadata() || {};
|
|
29191
29597
|
const fallback = String(md.scoreEmptyGradient ?? md.priorityEmptyGradient ?? '').trim();
|
|
29192
|
-
|
|
29598
|
+
if (fallback.length) {
|
|
29599
|
+
return fallback;
|
|
29600
|
+
}
|
|
29601
|
+
return `linear-gradient(90deg, ${this.scoreGradientLowColor()} 0%, ${this.scoreGradientMidColor()} 50%, ${this.scoreGradientHighColor()} 100%)`;
|
|
29193
29602
|
}
|
|
29194
29603
|
return `linear-gradient(90deg, ${bands
|
|
29195
29604
|
.map((band) => `${band.color} ${band.startPct.toFixed(2)}%, ${band.color} ${band.endPct.toFixed(2)}%`)
|
|
@@ -29376,7 +29785,7 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29376
29785
|
}
|
|
29377
29786
|
return { start, end };
|
|
29378
29787
|
}
|
|
29379
|
-
scoreBuildBandVisual(rawBand, index, start, end, min, max) {
|
|
29788
|
+
scoreBuildBandVisual(rawBand, index, start, end, min, max, totalBands) {
|
|
29380
29789
|
const safeStart = this.scoreClampValue(start);
|
|
29381
29790
|
const safeEnd = this.scoreClampValue(end);
|
|
29382
29791
|
const label = String(rawBand.label ?? rawBand.name ?? rawBand.title ?? '').trim() ||
|
|
@@ -29384,7 +29793,7 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29384
29793
|
const id = String(rawBand.id ?? rawBand.key ?? label.toLowerCase().replace(/\s+/g, '-')).trim() ||
|
|
29385
29794
|
`score-band-${index}`;
|
|
29386
29795
|
const color = String(rawBand.color ?? rawBand.toneColor ?? rawBand.backgroundColor ?? '').trim() ||
|
|
29387
|
-
this.scoreFallbackColor(index);
|
|
29796
|
+
this.scoreFallbackColor(index, totalBands);
|
|
29388
29797
|
const startPct = this.scoreRangeToPct(safeStart, min, max);
|
|
29389
29798
|
const endPct = this.scoreRangeToPct(safeEnd, min, max);
|
|
29390
29799
|
return {
|
|
@@ -29398,13 +29807,13 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29398
29807
|
centerPct: (startPct + endPct) / 2,
|
|
29399
29808
|
};
|
|
29400
29809
|
}
|
|
29401
|
-
scoreFallbackColor(index) {
|
|
29810
|
+
scoreFallbackColor(index, totalBands = 0) {
|
|
29402
29811
|
const md = this.metadata() || {};
|
|
29403
29812
|
const configured = this.parseColorList(md.scorePalette ?? md.priorityPalette ?? md.palette);
|
|
29404
|
-
|
|
29405
|
-
|
|
29406
|
-
|
|
29407
|
-
return
|
|
29813
|
+
if (configured.length) {
|
|
29814
|
+
return configured[index % configured.length];
|
|
29815
|
+
}
|
|
29816
|
+
return this.scoreGradientColorByIndex(index, Math.max(2, totalBands));
|
|
29408
29817
|
}
|
|
29409
29818
|
scoreParseBandsSource(source) {
|
|
29410
29819
|
if (Array.isArray(source)) {
|
|
@@ -29514,7 +29923,27 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29514
29923
|
scoreSelectedFallbackColor() {
|
|
29515
29924
|
const md = this.metadata() || {};
|
|
29516
29925
|
const configured = String(md.scoreValueFallbackColor ?? md.priorityValueFallbackColor ?? '').trim();
|
|
29517
|
-
return configured ||
|
|
29926
|
+
return configured || this.scoreGradientMidColor();
|
|
29927
|
+
}
|
|
29928
|
+
scoreGradientLowColor() {
|
|
29929
|
+
const md = this.metadata() || {};
|
|
29930
|
+
return this.resolveColorToken(md.scoreGradientLowColor, md.priorityGradientLowColor, md.scoreToneLowColor, md.priorityToneLowColor) || '#16a34a';
|
|
29931
|
+
}
|
|
29932
|
+
scoreGradientMidColor() {
|
|
29933
|
+
const md = this.metadata() || {};
|
|
29934
|
+
return this.resolveColorToken(md.scoreGradientMidColor, md.priorityGradientMidColor, md.scoreToneMidColor, md.priorityToneMidColor) || '#f59e0b';
|
|
29935
|
+
}
|
|
29936
|
+
scoreGradientHighColor() {
|
|
29937
|
+
const md = this.metadata() || {};
|
|
29938
|
+
return this.resolveColorToken(md.scoreGradientHighColor, md.priorityGradientHighColor, md.scoreToneHighColor, md.priorityToneHighColor) || '#ef4444';
|
|
29939
|
+
}
|
|
29940
|
+
scoreGradientColorByIndex(index, total) {
|
|
29941
|
+
const safeTotal = Math.max(2, total);
|
|
29942
|
+
const ratio = safeTotal <= 1 ? 0 : index / (safeTotal - 1);
|
|
29943
|
+
return this.scoreGradientColorByRatio(ratio);
|
|
29944
|
+
}
|
|
29945
|
+
scoreGradientColorByRatio(ratio) {
|
|
29946
|
+
return interpolateThreeStopGradientColor(this.scoreGradientLowColor(), this.scoreGradientMidColor(), this.scoreGradientHighColor(), ratio);
|
|
29518
29947
|
}
|
|
29519
29948
|
resolveScoreText(configKey, fallback, ...legacyKeys) {
|
|
29520
29949
|
const md = this.metadata() || {};
|
|
@@ -29591,6 +30020,15 @@ class FilterInlineScorePriorityComponent extends FilterInlineRangeSliderComponen
|
|
|
29591
30020
|
const text = String(value ?? '').trim();
|
|
29592
30021
|
return text.length ? text : null;
|
|
29593
30022
|
}
|
|
30023
|
+
resolveColorToken(...values) {
|
|
30024
|
+
for (const value of values) {
|
|
30025
|
+
const text = String(value ?? '').trim();
|
|
30026
|
+
if (text.length) {
|
|
30027
|
+
return text;
|
|
30028
|
+
}
|
|
30029
|
+
}
|
|
30030
|
+
return null;
|
|
30031
|
+
}
|
|
29594
30032
|
scoreRecalculateInlineSizeBounds() {
|
|
29595
30033
|
const viewportWidth = typeof window !== 'undefined' ? window.innerWidth : 1280;
|
|
29596
30034
|
const isMobile = viewportWidth <= 768;
|
|
@@ -30309,6 +30747,24 @@ class FilterInlineRelativePeriodComponent extends SimpleBaseSelectComponent {
|
|
|
30309
30747
|
const percent = Math.round(this.progressPercent());
|
|
30310
30748
|
return `${this.placeholderText()}: ${percent}%`;
|
|
30311
30749
|
}
|
|
30750
|
+
progressGradientLowColor() {
|
|
30751
|
+
const md = this.metadata() || {};
|
|
30752
|
+
return this.resolveColorToken(md.relativePeriodProgressGradientLowColor, md.relativePeriodProgressLowColor) || '#64748b';
|
|
30753
|
+
}
|
|
30754
|
+
progressGradientMidColor() {
|
|
30755
|
+
const md = this.metadata() || {};
|
|
30756
|
+
return this.resolveColorToken(md.relativePeriodProgressGradientMidColor, md.relativePeriodProgressMidColor) || '#0ea5e9';
|
|
30757
|
+
}
|
|
30758
|
+
progressGradientHighColor() {
|
|
30759
|
+
const md = this.metadata() || {};
|
|
30760
|
+
return this.resolveColorToken(md.relativePeriodProgressGradientHighColor, md.relativePeriodProgressHighColor) || '#22c55e';
|
|
30761
|
+
}
|
|
30762
|
+
progressGradient() {
|
|
30763
|
+
const low = this.progressGradientLowColor();
|
|
30764
|
+
const mid = this.progressGradientMidColor();
|
|
30765
|
+
const high = this.progressGradientHighColor();
|
|
30766
|
+
return `linear-gradient(90deg, ${low} 0%, ${mid} 50%, ${high} 100%)`;
|
|
30767
|
+
}
|
|
30312
30768
|
cardColumns() {
|
|
30313
30769
|
const md = this.metadata() || {};
|
|
30314
30770
|
const configured = Number(md.relativePeriodColumns ?? md.columns);
|
|
@@ -30549,6 +31005,15 @@ class FilterInlineRelativePeriodComponent extends SimpleBaseSelectComponent {
|
|
|
30549
31005
|
const text = String(value ?? '').trim();
|
|
30550
31006
|
return text.length ? text : null;
|
|
30551
31007
|
}
|
|
31008
|
+
resolveColorToken(...values) {
|
|
31009
|
+
for (const value of values) {
|
|
31010
|
+
const text = String(value ?? '').trim();
|
|
31011
|
+
if (text.length) {
|
|
31012
|
+
return text;
|
|
31013
|
+
}
|
|
31014
|
+
}
|
|
31015
|
+
return null;
|
|
31016
|
+
}
|
|
30552
31017
|
mapRawOption(option, index) {
|
|
30553
31018
|
if (option && typeof option === 'object') {
|
|
30554
31019
|
const label = String(option.label ?? option.text ?? option.name ?? option.title ?? '').trim();
|
|
@@ -30682,6 +31147,9 @@ class FilterInlineRelativePeriodComponent extends SimpleBaseSelectComponent {
|
|
|
30682
31147
|
[style.--pdx-inline-relative-max-w.px]="inlineMaxWidthPx || null"
|
|
30683
31148
|
[style.--pdx-inline-relative-panel-min-w.px]="panelMinWidthPx || null"
|
|
30684
31149
|
[style.--pdx-inline-relative-panel-max-w.px]="panelMaxWidthPx || null"
|
|
31150
|
+
[style.--pdx-inline-relative-progress-gradient-low]="progressGradientLowColor()"
|
|
31151
|
+
[style.--pdx-inline-relative-progress-gradient-mid]="progressGradientMidColor()"
|
|
31152
|
+
[style.--pdx-inline-relative-progress-gradient-high]="progressGradientHighColor()"
|
|
30685
31153
|
[matTooltip]="inlineTooltipText()"
|
|
30686
31154
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
30687
31155
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -30769,7 +31237,11 @@ class FilterInlineRelativePeriodComponent extends SimpleBaseSelectComponent {
|
|
|
30769
31237
|
@if (showProgressBar()) {
|
|
30770
31238
|
<div class="pdx-inline-relative-progress" role="img" [attr.aria-label]="progressAriaLabel()">
|
|
30771
31239
|
<span class="pdx-inline-relative-progress-track">
|
|
30772
|
-
<span
|
|
31240
|
+
<span
|
|
31241
|
+
class="pdx-inline-relative-progress-fill"
|
|
31242
|
+
[style.width.%]="progressPercent()"
|
|
31243
|
+
[style.background]="progressGradient()"
|
|
31244
|
+
></span>
|
|
30773
31245
|
</span>
|
|
30774
31246
|
<div class="pdx-inline-relative-progress-labels" aria-hidden="true">
|
|
30775
31247
|
<span>{{ progressStartLabel() }}</span>
|
|
@@ -30841,6 +31313,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
30841
31313
|
[style.--pdx-inline-relative-max-w.px]="inlineMaxWidthPx || null"
|
|
30842
31314
|
[style.--pdx-inline-relative-panel-min-w.px]="panelMinWidthPx || null"
|
|
30843
31315
|
[style.--pdx-inline-relative-panel-max-w.px]="panelMaxWidthPx || null"
|
|
31316
|
+
[style.--pdx-inline-relative-progress-gradient-low]="progressGradientLowColor()"
|
|
31317
|
+
[style.--pdx-inline-relative-progress-gradient-mid]="progressGradientMidColor()"
|
|
31318
|
+
[style.--pdx-inline-relative-progress-gradient-high]="progressGradientHighColor()"
|
|
30844
31319
|
[matTooltip]="inlineTooltipText()"
|
|
30845
31320
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
30846
31321
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -30928,7 +31403,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
30928
31403
|
@if (showProgressBar()) {
|
|
30929
31404
|
<div class="pdx-inline-relative-progress" role="img" [attr.aria-label]="progressAriaLabel()">
|
|
30930
31405
|
<span class="pdx-inline-relative-progress-track">
|
|
30931
|
-
<span
|
|
31406
|
+
<span
|
|
31407
|
+
class="pdx-inline-relative-progress-fill"
|
|
31408
|
+
[style.width.%]="progressPercent()"
|
|
31409
|
+
[style.background]="progressGradient()"
|
|
31410
|
+
></span>
|
|
30932
31411
|
</span>
|
|
30933
31412
|
<div class="pdx-inline-relative-progress-labels" aria-hidden="true">
|
|
30934
31413
|
<span>{{ progressStartLabel() }}</span>
|
|
@@ -31203,7 +31682,8 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31203
31682
|
return `${option.label}. ${option.subtitle}`;
|
|
31204
31683
|
}
|
|
31205
31684
|
sentimentOptions() {
|
|
31206
|
-
|
|
31685
|
+
const optionPool = this.options();
|
|
31686
|
+
return optionPool.map((option, index) => this.toVisualOption(option, index, optionPool.length));
|
|
31207
31687
|
}
|
|
31208
31688
|
selectedOptions() {
|
|
31209
31689
|
return this.sentimentOptions().filter((option) => option.selected);
|
|
@@ -31298,7 +31778,7 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31298
31778
|
return null;
|
|
31299
31779
|
}
|
|
31300
31780
|
}
|
|
31301
|
-
toVisualOption(option, index) {
|
|
31781
|
+
toVisualOption(option, index, totalOptions = 0) {
|
|
31302
31782
|
const raw = option;
|
|
31303
31783
|
return {
|
|
31304
31784
|
id: String(raw.id ?? raw.key ?? `sentiment-option-${index}`),
|
|
@@ -31306,7 +31786,7 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31306
31786
|
`Opcao ${index + 1}`,
|
|
31307
31787
|
subtitle: String(raw.subtitle ?? raw.description ?? '').trim(),
|
|
31308
31788
|
emoji: this.resolveOptionEmoji(raw),
|
|
31309
|
-
color: this.resolveOptionColor(raw, index),
|
|
31789
|
+
color: this.resolveOptionColor(raw, index, totalOptions),
|
|
31310
31790
|
value: option.value,
|
|
31311
31791
|
disabled: !!option.disabled,
|
|
31312
31792
|
selected: this.selectedValues().some((entry) => this.equalsOptionValue(entry, option.value)),
|
|
@@ -31324,7 +31804,7 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31324
31804
|
const fallback = String(raw.emoji ?? raw.iconText ?? '').trim();
|
|
31325
31805
|
return fallback || '🙂';
|
|
31326
31806
|
}
|
|
31327
|
-
resolveOptionColor(raw, index) {
|
|
31807
|
+
resolveOptionColor(raw, index, totalOptions = 0) {
|
|
31328
31808
|
const md = this.metadata() || {};
|
|
31329
31809
|
const customKey = this.resolveMetadataKey(md.sentimentColorKey, md.optionColorKey);
|
|
31330
31810
|
if (customKey) {
|
|
@@ -31341,8 +31821,15 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31341
31821
|
if (palette.length) {
|
|
31342
31822
|
return palette[index % palette.length];
|
|
31343
31823
|
}
|
|
31344
|
-
|
|
31345
|
-
|
|
31824
|
+
return this.sentimentGradientColorByIndex(index, Math.max(2, totalOptions));
|
|
31825
|
+
}
|
|
31826
|
+
sentimentGradientColorByIndex(index, totalOptions) {
|
|
31827
|
+
const safeTotal = Math.max(2, totalOptions);
|
|
31828
|
+
const ratio = safeTotal <= 1 ? 0 : index / (safeTotal - 1);
|
|
31829
|
+
return this.sentimentGradientColorByRatio(ratio);
|
|
31830
|
+
}
|
|
31831
|
+
sentimentGradientColorByRatio(ratio) {
|
|
31832
|
+
return interpolateThreeStopGradientColor(this.sentimentGradientLowColor(), this.sentimentGradientMidColor(), this.sentimentGradientHighColor(), ratio);
|
|
31346
31833
|
}
|
|
31347
31834
|
parseColorList(source) {
|
|
31348
31835
|
if (Array.isArray(source)) {
|
|
@@ -31451,6 +31938,15 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31451
31938
|
const text = String(value ?? '').trim();
|
|
31452
31939
|
return text.length ? text : null;
|
|
31453
31940
|
}
|
|
31941
|
+
resolveColorToken(...values) {
|
|
31942
|
+
for (const value of values) {
|
|
31943
|
+
const text = String(value ?? '').trim();
|
|
31944
|
+
if (text.length) {
|
|
31945
|
+
return text;
|
|
31946
|
+
}
|
|
31947
|
+
}
|
|
31948
|
+
return null;
|
|
31949
|
+
}
|
|
31454
31950
|
mapRawOption(option, index) {
|
|
31455
31951
|
if (option && typeof option === 'object') {
|
|
31456
31952
|
const label = String(option.label ?? option.text ?? option.name ?? option.title ?? '').trim();
|
|
@@ -31570,6 +32066,24 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31570
32066
|
multipleMode() {
|
|
31571
32067
|
return this.multiple();
|
|
31572
32068
|
}
|
|
32069
|
+
sentimentGradientLowColor() {
|
|
32070
|
+
const md = this.metadata() || {};
|
|
32071
|
+
return this.resolveColorToken(md.sentimentGradientLowColor, md.sentimentToneLowColor) || '#ef4444';
|
|
32072
|
+
}
|
|
32073
|
+
sentimentGradientMidColor() {
|
|
32074
|
+
const md = this.metadata() || {};
|
|
32075
|
+
return this.resolveColorToken(md.sentimentGradientMidColor, md.sentimentToneMidColor) || '#f59e0b';
|
|
32076
|
+
}
|
|
32077
|
+
sentimentGradientHighColor() {
|
|
32078
|
+
const md = this.metadata() || {};
|
|
32079
|
+
return this.resolveColorToken(md.sentimentGradientHighColor, md.sentimentToneHighColor) || '#22c55e';
|
|
32080
|
+
}
|
|
32081
|
+
sentimentGradient() {
|
|
32082
|
+
const low = this.sentimentGradientLowColor();
|
|
32083
|
+
const mid = this.sentimentGradientMidColor();
|
|
32084
|
+
const high = this.sentimentGradientHighColor();
|
|
32085
|
+
return `linear-gradient(90deg, ${low} 0%, ${mid} 50%, ${high} 100%)`;
|
|
32086
|
+
}
|
|
31573
32087
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FilterInlineSentimentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
31574
32088
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: FilterInlineSentimentComponent, isStandalone: true, selector: "pdx-filter-inline-sentiment", inputs: { readonlyMode: "readonlyMode", disabledMode: "disabledMode", visible: "visible", presentationMode: "presentationMode" }, host: { listeners: { "window:resize": "onViewportResize()", "document:keydown.escape": "onDocumentEscape()" }, properties: { "class": "componentCssClasses()", "class.praxis-disabled": "disabledMode", "style.display": "visible ? \"inline-block\" : \"none\"", "style.width": "\"auto\"", "style.maxWidth": "\"100%\"", "attr.data-field-type": "\"filter-sentiment-inline\"", "attr.data-field-name": "metadata()?.name", "attr.data-component-id": "componentId()" } }, providers: [
|
|
31575
32089
|
{
|
|
@@ -31584,6 +32098,9 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31584
32098
|
[style.--pdx-inline-sentiment-max-w.px]="inlineMaxWidthPx || null"
|
|
31585
32099
|
[style.--pdx-inline-sentiment-panel-min-w.px]="panelMinWidthPx || null"
|
|
31586
32100
|
[style.--pdx-inline-sentiment-panel-max-w.px]="panelMaxWidthPx || null"
|
|
32101
|
+
[style.--pdx-inline-sentiment-gradient-low]="sentimentGradientLowColor()"
|
|
32102
|
+
[style.--pdx-inline-sentiment-gradient-mid]="sentimentGradientMidColor()"
|
|
32103
|
+
[style.--pdx-inline-sentiment-gradient-high]="sentimentGradientHighColor()"
|
|
31587
32104
|
[matTooltip]="inlineTooltipText()"
|
|
31588
32105
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
31589
32106
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -31669,7 +32186,12 @@ class FilterInlineSentimentComponent extends SimpleBaseSelectComponent {
|
|
|
31669
32186
|
</div>
|
|
31670
32187
|
|
|
31671
32188
|
@if (showSentimentBar() && sentimentOptions().length) {
|
|
31672
|
-
<div
|
|
32189
|
+
<div
|
|
32190
|
+
class="pdx-inline-sentiment-bar"
|
|
32191
|
+
role="img"
|
|
32192
|
+
[style.background]="sentimentGradient()"
|
|
32193
|
+
[attr.aria-label]="sentimentBarAriaLabel()"
|
|
32194
|
+
>
|
|
31673
32195
|
@for (option of sentimentOptions(); track option.id) {
|
|
31674
32196
|
<span
|
|
31675
32197
|
class="pdx-inline-sentiment-segment"
|
|
@@ -31738,6 +32260,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
31738
32260
|
[style.--pdx-inline-sentiment-max-w.px]="inlineMaxWidthPx || null"
|
|
31739
32261
|
[style.--pdx-inline-sentiment-panel-min-w.px]="panelMinWidthPx || null"
|
|
31740
32262
|
[style.--pdx-inline-sentiment-panel-max-w.px]="panelMaxWidthPx || null"
|
|
32263
|
+
[style.--pdx-inline-sentiment-gradient-low]="sentimentGradientLowColor()"
|
|
32264
|
+
[style.--pdx-inline-sentiment-gradient-mid]="sentimentGradientMidColor()"
|
|
32265
|
+
[style.--pdx-inline-sentiment-gradient-high]="sentimentGradientHighColor()"
|
|
31741
32266
|
[matTooltip]="inlineTooltipText()"
|
|
31742
32267
|
[matTooltipDisabled]="inlineTooltipDisabled()"
|
|
31743
32268
|
[matTooltipPosition]="tooltipPosition()"
|
|
@@ -31823,7 +32348,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
31823
32348
|
</div>
|
|
31824
32349
|
|
|
31825
32350
|
@if (showSentimentBar() && sentimentOptions().length) {
|
|
31826
|
-
<div
|
|
32351
|
+
<div
|
|
32352
|
+
class="pdx-inline-sentiment-bar"
|
|
32353
|
+
role="img"
|
|
32354
|
+
[style.background]="sentimentGradient()"
|
|
32355
|
+
[attr.aria-label]="sentimentBarAriaLabel()"
|
|
32356
|
+
>
|
|
31827
32357
|
@for (option of sentimentOptions(); track option.id) {
|
|
31828
32358
|
<span
|
|
31829
32359
|
class="pdx-inline-sentiment-segment"
|